Merge remote-tracking branch 'origin/master' into init_auto
authorJean Privat <jean@pryen.org>
Thu, 31 Mar 2016 17:43:26 +0000 (13:43 -0400)
committerJean Privat <jean@pryen.org>
Thu, 31 Mar 2016 17:43:26 +0000 (13:43 -0400)
134 files changed:
benchmarks/bench_common.sh
benchmarks/languages/Makefile [new file with mode: 0644]
benchmarks/languages/bench_base.nit [deleted file]
benchmarks/languages/bench_languages.sh [moved from benchmarks/bench_languages.sh with 56% similarity]
benchmarks/languages/bench_typetest_covar.nit [deleted file]
benchmarks/languages/benches/bench_attr.nit [new file with mode: 0644]
benchmarks/languages/benches/bench_base.nit [new file with mode: 0644]
benchmarks/languages/benches/bench_meth.nit [new file with mode: 0644]
benchmarks/languages/benches/bench_null.nit [new file with mode: 0644]
benchmarks/languages/benches/bench_typetest_covar.nit [new file with mode: 0644]
benchmarks/languages/benches/bench_typetest_depth.nit [moved from benchmarks/languages/bench_typetest_depth.nit with 62% similarity]
benchmarks/languages/benches/bench_typetest_depth_not.nit [moved from benchmarks/languages/bench_typetest_depth_not.nit with 55% similarity]
benchmarks/languages/benches/bench_typetest_fts_nesting.nit [moved from benchmarks/languages/bench_typetest_fts_nesting.nit with 51% similarity]
benchmarks/markdown/engines/nitmd/nitmd.nit
contrib/benitlux/Makefile
contrib/benitlux/src/benitlux_controller.nit
contrib/benitlux/src/benitlux_daily.nit
contrib/benitlux/src/benitlux_db.nit
contrib/benitlux/src/benitlux_model.nit
contrib/benitlux/src/benitlux_web.nit
contrib/benitlux/src/correct.nit
contrib/jwrapper/examples/android_api/Makefile
contrib/nitcc/src/nitcc.sablecc
contrib/nitcc/src/nitcc_parser_gen.nit
contrib/nitcc/src/re2nfa.nit
contrib/nitcc/tests/lexer-any.input
contrib/nitcc/tests/lexer-any.sablecc
contrib/nitcc/tests/sav/lexer-any.input.res
contrib/opportunity/art/opportunity.svg [new file with mode: 0644]
contrib/opportunity/src/opportunity_web.nit
contrib/opportunity/src/templates/boilerplate.nit
contrib/opportunity/src/templates/languages/fr/LC_MESSAGES/boilerplate.po
contrib/opportunity/src/templates/meetup.nit
contrib/opportunity/src/templates/welcome.nit
contrib/pep8analysis/www/index.html
contrib/tnitter/art/icon-wide.svg [new file with mode: 0644]
contrib/tnitter/src/action.nit
contrib/tnitter/src/tnitter.nit
contrib/tnitter/src/tnitter_app.nit
examples/calculator/Makefile
examples/rosettacode/empty_string.nit [new file with mode: 0644]
examples/rosettacode/tape.nit [new file with mode: 0644]
lib/android/assets_and_resources.nit
lib/android/dalvik.nit
lib/android/http_request.nit
lib/android/intent/intent_api10.nit
lib/android/notification/native_notification.nit
lib/android/notification/notification.nit
lib/android/service/NitBroadcastReceiver.java [new file with mode: 0644]
lib/android/service/NitService.java [new file with mode: 0644]
lib/android/service/at_boot.nit [new file with mode: 0644]
lib/android/service/service.nit [new file with mode: 0644]
lib/android/shared_preferences/shared_preferences_api10.nit
lib/android/toast.nit
lib/android/ui/native_ui.nit
lib/android/ui/ui.nit
lib/android/vibration.nit
lib/android/wifi.nit [new file with mode: 0644]
lib/app/http_request.nit
lib/app/ui.nit
lib/core/collection/list.nit
lib/core/file.nit
lib/core/math.nit
lib/core/text/abstract_text.nit
lib/core/text/flat.nit
lib/core/time.nit
lib/geometry/polygon.nit
lib/gtk/v3_4/gtk_core.nit
lib/gtk/v3_4/gtk_widgets_ext.nit
lib/ios/ui/ui.nit
lib/ios/ui/uikit.nit
lib/json/serialization.nit
lib/libevent.nit
lib/linux/ui.nit
lib/markdown/markdown.nit
lib/markdown/test_markdown.nit
lib/nitcorn/examples/src/xymus_net.nit
lib/nitcorn/http_response.nit
lib/nitcorn/log.nit
lib/nitcorn/reactor.nit
lib/nitcorn/sessions.nit
lib/performance_analysis.nit
lib/pthreads/concurrent_collections.nit
lib/sdl.nit
lib/serialization/README.md
lib/serialization/serialization.nit
misc/vim/plugin/nit.vim
src/compiler/abstract_compiler.nit
src/compiler/compiler_ffi/compiler_ffi.nit
src/compiler/global_compiler.nit
src/compiler/separate_compiler.nit
src/doc/doc_phases/doc_console.nit
src/frontend/check_annotation.nit
src/frontend/serialization_phase.nit
src/interpreter/dynamic_loading_ffi/on_demand_compiler.nit
src/interpreter/naive_interpreter.nit
src/literal.nit
src/modelize/modelize_property.nit
src/nitni/nitni_utilities.nit
src/semantize/typing.nit
src/transform.nit
tests/base_attr_optional.nit [new file with mode: 0644]
tests/base_covar_adapt.nit [new file with mode: 0644]
tests/base_gen_nest.nit [new file with mode: 0644]
tests/base_vararg_transform.nit [new file with mode: 0644]
tests/base_with2.nit [new file with mode: 0644]
tests/error_arg.nit [new file with mode: 0644]
tests/niti.skip
tests/nitvm.skip
tests/sav/base_attr_optional.res [new file with mode: 0644]
tests/sav/base_covar_adapt.res [new file with mode: 0644]
tests/sav/base_covar_adapt_alt1.res [new file with mode: 0644]
tests/sav/base_covar_adapt_alt2.res [new file with mode: 0644]
tests/sav/base_gen_nest.res [new file with mode: 0644]
tests/sav/base_meth_call_alt1.res
tests/sav/base_vararg_transform.res [new file with mode: 0644]
tests/sav/base_with2.res [new file with mode: 0644]
tests/sav/empty_string.res [new file with mode: 0644]
tests/sav/error_arg.res [new file with mode: 0644]
tests/sav/error_arg_alt1.res [new file with mode: 0644]
tests/sav/nitc-common/fixme/base_with2.res [new file with mode: 0644]
tests/sav/nitce/base_covar_adapt_alt1.res [new file with mode: 0644]
tests/sav/nitce/base_covar_adapt_alt2.res [new file with mode: 0644]
tests/sav/nitce/test_json_deserialization_alt1.res
tests/sav/nitcg/fixme/base_covar_adapt_alt2.res [moved from tests/sav/niti/fixme/nitiwiki_args2.res with 100% similarity]
tests/sav/nitcg/test_text_stat.res [deleted file]
tests/sav/test_json_deserialization.res
tests/sav/test_json_deserialization_alt1.res
tests/sav/test_json_deserialization_alt2.res
tests/sav/test_prefixed_chars.res [new file with mode: 0644]
tests/sav/test_prefixed_chars_alt1.res [new file with mode: 0644]
tests/sav/test_text_stat.res
tests/test_deserialization.nit
tests/test_prefixed_chars.nit [new file with mode: 0644]

index 207edd0..dfdbc6b 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+# Global variables
+
+# Number of times a command must be run with bench_command
+count=1
+
+# User time limit (in second) before a command is aborted
+usertimelimit=120
+
 # Common functions for all the bench scripts
 
 # Run a single command multiple time and store the execution times
@@ -41,21 +49,27 @@ function bench_command()
 
        # Execute the commands $count times
        for i in `seq 1 "$count"`; do
-               /usr/bin/time -f "%U" -o "$timeout" -a "$@" > $outputopts 2>&1 || { failed=true; die "$1: failed"; }
+               (
+                       ulimit -t "$usertimelimit" 2> /dev/null
+                       /usr/bin/time -f "%U" -o "$timeout" -a "$@" > $outputopts 2>&1
+               ) || { err=$?; failed=true; die "$1: failed with $err"; }
                echo -n "$i. "
                tail -n 1 "$timeout"
+               test -n "$failed" && break
        done
 
        line=`compute_stats "$timeout"`
        echo "$line ($res)"
        echo $line >> "$res"
 
-       test -z "$xml" && return
-       echo >>"$xml" "<testcase classname='bench.`basename $res .dat`' name='$title' time='`echo $line | cut -f 1 -d " "`' timestamp='`date -Iseconds`'>"
-       if test -n "$failed"; then
-               echo >>"$xml" "<error message='Command failed'/>"
+       if test -n "$xml"; then
+               echo >>"$xml" "<testcase classname='bench.`basename $res .dat`' name='$title' time='`echo $line | cut -f 1 -d " "`' timestamp='`date -Iseconds`'>"
+               if test -n "$failed"; then
+                       echo >>"$xml" "<error message='Command failed'/>"
+               fi
+               echo >>"$xml" "</testcase>"
        fi
-       echo >>"$xml" "</testcase>"
+       test -z "$failed"
 }
 
 # Run a simble command witout storing the execution time
@@ -86,7 +100,7 @@ function skip_test()
                return 0
        fi
        if test -n "$html"; then
-               echo >>"$html" "<h2>$1</h2>"
+               echo >>"$html" "<h2 id="$1">$1</h2>"
        fi
        echo "*"
        echo "* $1 *****"
@@ -99,4 +113,5 @@ function die()
 {
        echo >&2 "error: $*"
        died=1
+       return 1
 }
diff --git a/benchmarks/languages/Makefile b/benchmarks/languages/Makefile
new file mode 100644 (file)
index 0000000..ca35e94
--- /dev/null
@@ -0,0 +1,5 @@
+all:
+       ./bench_languages.sh all
+
+check:
+       ./bench_languages.sh --fast bench_meth
diff --git a/benchmarks/languages/bench_base.nit b/benchmarks/languages/bench_base.nit
deleted file mode 100644 (file)
index 9f79133..0000000
+++ /dev/null
@@ -1,483 +0,0 @@
-#!/usr/bin/env nit
-
-# Microbenchmak generation for multiple language
-# Just a quick an dirty Nit script file :)
-
-# This benchmark focuses on effects of the hierarchy dept
-# on the typetest performances
-
-# class Root
-# class Klass[E] super Root
-# class C1...CX super Root
-# Klass[CX] isa Klass[C1]
-
-class Klass
-       var id: Int
-       var supers = new Array[Klass]
-       var all_supers = new HashSet[Klass]
-       redef fun to_s
-       do
-               return "C{id}"
-       end
-end
-
-class Generator
-
-       var classes = new Array[Klass]
-
-       var dept writable = 5
-       var loops writable = 50000
-       var middle writable = 0
-       var dry writable = false
-       var check writable = false
-
-       fun genhier
-       do
-               var s: nullable Klass = null
-               for d in [1..dept] do
-                       var c = new Klass(d)
-
-                       classes.add(c)
-                       c.all_supers.add(c)
-                       if s != null then
-                               c.supers.add(s)
-                               c.all_supers.add_all(s.all_supers)
-                       end
-                       s = c
-               end
-               middle = (dept + 1) / 2
-       end
-
-       var file: nullable FileWriter = null
-       fun write(str: String)
-       do
-               file.write(str)
-               file.write("\n")
-       end
-
-       fun initnit(res: Array[String]) is abstract
-       fun testnit: String do return "true"
-
-       fun writenit(dir: String, name: String)
-       do
-               dir = "{dir}/nit"
-               dir.mkdir
-               file = new FileWriter.open("{dir}/{name}.nit")
-
-               write "class Root\n\tfun id: Int do return 0\nend"
-               for c in classes do
-                       write "class {c}[E]"
-                       if c.supers.is_empty then
-                               write "\tsuper Root"
-                       else for s in c.supers do
-                               write "\tsuper {s}[E]"
-                       end
-                       write "\tredef fun id do return {c.id}"
-                       write "end"
-               end
-
-               write "fun test(a,b: Root, loops, start: Int)"
-               write "do"
-               write "var x = start"
-               write "var i = 0"
-               write "while i < loops do"
-               write "\tvar j = 0"
-               write "\twhile j < loops do"
-               var test = "true"
-               if not dry then test = testnit
-               write "\t\tif {test} and x >= 0 then"
-               if check then write "\t\tx += 1"
-               write "\telse"
-               write "\t\t\tx = x - 1 + i - j"
-               write "\t\t\ta = b"
-               write "\t\tend"
-               write "\t\tj += 1"
-               write "\tend"
-               write "\ti += 1"
-               write "end"
-               write "print x"
-               write "end"
-
-               var ia = new Array[String]
-               initnit(ia)
-               write "var a: Root = {ia.first}"
-               write "var b: Root = a"
-               for i in ia do
-                       write "\t\t\tif a.id > 0 then a = {i}"
-               end
-               write "test(b, b, 10, -100)"
-               write "test(a, a, {loops}, 0)"
-
-               file.close
-       end
-
-       fun initjava(res: Array[String], interfaces: Bool) is abstract
-       fun testjava(interfaces: Bool): String do return "true"
-       fun writejava(dir: String, name: String, interfaces: Bool)
-       do
-               dir = "{dir}/java"
-               dir.mkdir
-               file = new FileWriter.open("{dir}/{name}.java")
-
-               var cl = ""
-               if interfaces then cl = "X"
-               write "class {name} \{"
-               if interfaces then
-                       write "static interface Root\n\t\{ int id(); \}"
-               else
-                       write "static class Root\n\t\{ int id() \{ return 0;\} \}"
-               end
-               for c in classes do
-                       if interfaces then
-                               write "static interface {c}<E> "
-                       else
-                               write "static class {c}<E> "
-                       end
-                       if c.supers.is_empty then
-                               write "\textends Root"
-                       else for s in [c.supers.first] do
-                               write "\textends {s}<E>"
-                       end
-                       if interfaces then
-                               write "\{\}"
-                               write "static class X{c}<E> implements {c}<E>"
-                       end
-                       write "\{"
-                       write "\tpublic int id() \{ return {c.id}; \}"
-                       write "\}"
-               end
-
-               write "static public void main(String args[]) \{"
-               var ia = new Array[String]
-               initjava(ia, interfaces)
-               write "Root a = {ia.first};"
-               write "Root b = a;"
-               for i in ia do
-                       write "\t\t\tif (a.id() > 0) a = {i};"
-               end
-               write "\ttest(b, b, 10, -100);"
-               write "\ttest(a, a, {loops}, 0);"
-               write "\}"
-
-               write "static public void test(Root a, Root b, int loops, int start) \{"
-               write "\tint x = start;"
-               write "\tfor(int i = 0; i < loops; i++) \{"
-               write "\t\tfor(int j = 0; j < loops; j++) \{"
-               var test = "true"
-               if not dry then test = testjava(interfaces)
-               write "\t\t\tif({test} && x>=0) \{"
-               if check then write "\t\t\t\tx = x + 1;"
-               write "\t\t\t\} else \{ x = x - 1 + i - j; a = b;\}"
-               #write "\t\t\t\} else \{ x = x - 1; a = b;\}"
-               write "\t\t}"
-               write "\t\}"
-               write "\tSystem.out.println(x);"
-               write "\}"
-               write "\}"
-               file.close
-       end
-
-       fun initcsharp(res: Array[String], interfaces: Bool) is abstract
-       fun testcsharp(interfaces: Bool): String do return "true"
-       fun writecsharp(dir: String, name: String, interfaces: Bool)
-       do
-               dir = "{dir}/cs"
-               dir.mkdir
-               file = new FileWriter.open("{dir}/{name}.cs")
-
-               var cl = ""
-               if interfaces then cl = "X"
-               write "class {name} \{"
-               if interfaces then
-                       write "interface Root\n\t\{ int Id(); \}"
-               else
-                       write "class Root\n\t\{ public int Id() \{ return 0;\} \}"
-               end
-               for c in classes do
-                       if interfaces then
-                               write "interface {c}<out E> "
-                       else
-                               write "class {c}<E> "
-                       end
-                       if c.supers.is_empty then
-                               write "\t: Root"
-                       else for s in [c.supers.first] do
-                               write "\t: {s}<E>"
-                       end
-                       if interfaces then
-                               write "\{\}"
-                               write "class X{c}<E> : {c}<E>"
-                       end
-                       write "\{"
-                       write "\tpublic int Id() \{ return {c.id}; \}"
-                       write "\}"
-               end
-
-               write "static void Main(string[] args) \{"
-               var ia = new Array[String]
-               initcsharp(ia, interfaces)
-               write "Root a = {ia.first};"
-               write "Root b = a;"
-               for i in ia do
-                       write "\t\t\tif (a.Id() > 0) a = {i};"
-               end
-               write "\tTest(b, b, 10, -100);"
-               write "\tTest(a, a, {loops}, 0);"
-               write "\}"
-
-               write "static void Test(Root a, Root b, int loops, int start) \{"
-               write "\tint x = start;"
-               write "\tfor(int i = 0; i < loops; i++) \{"
-               write "\t\tfor(int j = 0; j < loops; j++) \{"
-               var test = "true"
-               if not dry then test = testcsharp(interfaces)
-               write "\t\t\tif({test} && x>=0) \{"
-               if check then write "\t\t\t\tx++;"
-               write "\} else \{ x = x - 1 + i - j; a = b; \};"
-               write "\t\t}"
-               write "\t\}"
-               write "\tSystem.Console.WriteLine(x);"
-               write "\}"
-               write "\}"
-               file.close
-       end
-
-       fun initscala(res: Array[String], interfaces: Bool) is abstract
-       fun testscala(interfaces: Bool): String do return "true"
-       fun writescala(dir: String, name: String, interfaces: Bool)
-       do
-               dir = "{dir}/scala"
-               dir.mkdir
-               file = new FileWriter.open("{dir}/{name}.scala")
-
-               var cl = ""
-               write "object {name} \{"
-               write "class Root\n\t\{ def id: Int = 0 \}"
-               for c in classes do
-                       if interfaces then
-                               write "trait {c}[+E] "
-                       else
-                               write "class {c}[+E] "
-                       end
-                       if c.supers.is_empty then
-                               write "\textends Root"
-                       else for s in [c.supers.first] do
-                               write "\textends {s}[E]"
-                       end
-                       if interfaces then
-                               write "\{\}"
-                               write "class X{c}[E] extends {c}[E]"
-                       end
-                       write "\{"
-                       write "\toverride def id: Int = {c.id}"
-                       write "\}"
-               end
-
-               write "def main(args: Array[String]) = \{"
-               var ia = new Array[String]
-               initscala(ia, interfaces)
-               write "var a: Root = {ia.first};"
-               write "var b: Root = a;"
-               for i in ia do
-                       write "\t\t\tif (a.id > 0) a = {i};"
-               end
-               write "\ttest(b, b, 10, -100)"
-               write "\ttest(a, a, {loops}, 0)"
-               write "\}"
-
-               write "def test(aa:Root, b:Root, l: Int, start: Int) = \{"
-               write "\tvar a = aa"
-               write "\tvar x = start"
-               write "\tvar loops = l"
-               write "\tvar i = 0"
-               write "\twhile (i < loops) \{"
-               write "\t\tvar j = 0"
-               write "\t\twhile (j < loops) \{"
-               var test = "true"
-               if not dry then test = testscala(interfaces)
-               write "\t\tif ({test} && x>=0) \{"
-               if check then write "\t\t\tx += 1;"
-               #write "\} else \{ x = x - 1 + i - j; a = b; \}"
-               write "\} else \{ x = x - 1; a = b; \}"
-               write "\t\tj += 1"
-               write "\t\t\}"
-               write "\ti += 1"
-               write "\t\}"
-               write "\t\t\tprintln(x)"
-               write "\}"
-               write "\}"
-
-               file.close
-       end
-
-       fun initcpp(res: Array[String]) is abstract
-       fun testcpp: String do return "true"
-       fun writecpp(dir: String, name: String)
-       do
-               dir = "{dir}/cpp"
-               dir.mkdir
-               file = new FileWriter.open("{dir}/{name}.cpp")
-
-               write "#include <iostream>"
-               write "#include <stdlib.h>"
-               write "class Root\n\t\{ public: virtual int id() \{ return 0;\} \};"
-               for c in classes do
-                       write "template<class E>"
-                       write "class {c} "
-                       if c.supers.is_empty then
-                               write "\t: public virtual Root"
-                       else for s in [c.supers.first] do
-                               write "\t: public virtual {s}<E>"
-                       end
-                       write "\{"
-                       write "\tpublic: virtual int id() \{ return {c.id}; \}"
-                       write "\};"
-               end
-
-               write "void test(Root *a, Root *b, int loops, int start) \{"
-               write "\tint x = start;"
-               write "\tfor(int i = 0; i < loops; i++) \{"
-               write "\t\tfor(int j = 0; j < loops; j++) \{"
-               var test = "true"
-               if not dry then test = testcpp
-               write "\t\tif({test} && x>=0) \{"
-               if check then write "\t\t\tx += 1;"
-               write "\} else \{ x = x - 1 + i - j; a = b;\}"
-               write "\t\t}"
-               write "\t\}"
-               write "\tstd::cout << x << std::endl;"
-               write "\}"
-
-               write "int main(int argc, char **argv) \{"
-               var ia = new Array[String]
-               initcpp(ia)
-               write "Root *a = {ia.first};"
-               write "Root *b = a;"
-               for i in ia do
-                       write "\t\t\tif (a->id() > 0) a = {i};"
-               end
-               write "\ttest(b, b, 10, -100);"
-               write "\ttest(a, a, {loops}, 0);"
-               write "\}"
-
-               file.close
-       end
-
-       fun inite(res: Array[String], se: Bool) is abstract
-       fun teste(se: Bool): String do return "true"
-       fun locale(se: Bool) do end
-       fun writee(dir: String, name: String, se: Bool)
-       do
-               if se then
-                       dir = "{dir}/se/{name}"
-               else
-                       dir = "{dir}/es/{name}"
-               end
-               dir.mkdir
-               file = new FileWriter.open("{dir}/root.e")
-
-               var istk = ""
-               if se then istk = " is"
-               write "class ROOT"
-               write "feature id: INTEGER {istk} do Result := 0 end"
-               write "end"
-               file.close
-
-               for c in classes do
-                       file = new FileWriter.open("{dir}/{c}.e")
-                       write "class {c}[E] "
-                       if c.supers.is_empty then
-                               write "\tinherit ROOT"
-                       else for s in [c.supers.first] do
-                               write "\tinherit {s}[E]"
-                       end
-                       write "\t\tredefine id end"
-                       write "feature"
-                       write "\tid: INTEGER {istk} do Result := {c.id} end"
-                       write "end"
-                       file.close
-               end
-
-               file = new FileWriter.open("{dir}/app{name}.e")
-               write "class APP{name.to_upper}"
-               if se then
-                       write "insert ARGUMENTS"
-               end
-               write "create make"
-               write "feature"
-
-               if se then
-                       write "\tmake{istk}"
-               else
-                       write "\tmake(args: ARRAY[STRING]){istk}"
-               end
-               write "\t\tlocal"
-               write "\t\t\ta: ROOT"
-               write "\t\t\tb: ROOT"
-               write "\t\tdo"
-               var ia = new Array[String]
-               inite(ia,se)
-               write "{ia.first}"
-               write "b := a"
-               for i in ia do
-                       write "\t\t\tif a.id > 0 then {i} end"
-               end
-               write "\t\t\ttest(b, b, 10, -100)"
-               write "\t\t\ttest(a, a, {loops}, 0)"
-               write "\t\tend"
-
-               write "\ttest(aa: ROOT; b: ROOT; l: INTEGER; start: INTEGER){istk}"
-               write "\t\tlocal"
-               write "\t\t\ta: ROOT"
-               write "\t\t\ti: INTEGER"
-               write "\t\t\tj: INTEGER"
-               write "\t\t\tx: INTEGER"
-               locale(se)
-               write "\t\t\tloops: INTEGER"
-               write "\t\tdo"
-               write "\t\t\ta := aa"
-               write "\t\t\tx := start"
-               write "\t\t\tloops := l"
-               write "\t\t\tfrom i := 0 until i>=loops loop"
-               write "\t\t\t\tfrom j := 0 until j>=loops loop"
-               var test = "True"
-               if not dry then test = teste(se)
-               write "\t\t\t\t\tif {test} and then x >= 0 then" 
-               if check then write "\t\t\t\t\tx := x + 1"
-               write "\t\t\t\t\telse x := x - 1 + i - j; a := b end"
-               write "\t\t\t\t\tj := j + 1"
-               write "\t\t\t\tend"
-               write "\t\t\t\ti := i + 1"
-               write "\t\t\tend"
-               write "\t\t\tprint(x.out)"
-               write "\t\t\tprint(\"%N\")"
-               write "\t\tend"
-               write "end"
-               file.close
-       end
-
-       var count = false
-
-       fun genall
-       do
-               var g = self
-               var outdir = args.first
-               var name = args[1]
-               var use_interfaces = true
-               if args.length > 2 then g.dept = args[2].to_i
-               if args.length > 3 then use_interfaces = false
-
-               g.genhier
-
-               g.writenit(outdir, name)
-               g.writejava(outdir, name, use_interfaces)
-               g.writecsharp(outdir, name, use_interfaces)
-               g.writescala(outdir, name, use_interfaces)
-               g.writecpp(outdir, name)
-               g.writee(outdir, "{name}_se", true)
-               g.writee(outdir, name, false)
-       end
-end
-
-var g = new Generator
-g.genall
similarity index 56%
rename from benchmarks/bench_languages.sh
rename to benchmarks/languages/bench_languages.sh
index 2a33170..e204133 100755 (executable)
@@ -17,8 +17,8 @@
 
 # TODO: cleanup and libify the helper-parts
 
-source ./bench_common.sh
-source ./bench_plot.sh
+source ../bench_common.sh
+source ../bench_plot.sh
 
 ## CONFIGURATION OPTIONS ##
 
@@ -26,6 +26,13 @@ source ./bench_plot.sh
 # Can be overrided with 'the option -n'
 count=2
 
+xml=bench_languages.xml
+html=bench_languages.html
+verbose=true
+
+echo "" > $xml
+echo "<html><body>" > $html
+
 ## HANDLE OPTIONS ##
 
 function usage()
@@ -38,10 +45,31 @@ function usage()
        echo "  -h: this help"
 }
 
+function system_info()
+{
+       ( # use a subshell to protect the set -x
+       export LANG=C
+       set -x
+       uname -a
+       lscpu
+       git describe --always HEAD
+       ./nitc --version
+       gcc --version
+       clang --version
+       javac -version
+       java -version
+       gcj --version
+       scalac -version
+       scala -version
+       ec -version
+       pypy --version
+       )
+}
+
 stop=false
 while [ "$stop" = false ]; do
        case "$1" in
-               -v) verbose=true; shift;;
+               -v) verbose=true; system_info; shift;;
                -h) usage; exit;;
                -n) count="$2"; shift; shift;;
                --dry) dry_run=true; shift;;
@@ -59,10 +87,12 @@ if test -z "$NOTSKIPED"; then
 fi
 
 ## COMPILE ENGINES
-cd ../src
-test -f ./nitc_3 || ./ncall.sh -O
-cd ../benchmarks
-test -f ./nitc || ../src/nitc_3 ../src/nitc.nit -O -v
+test -f ./nitc || ../../bin/nitc ../../src/nitc.nit --semi-global -v
+
+today=`date +%Y-%m-%d_%H-%M-%S`
+bdir="languages.${today}.out"
+rm -r "$bdir" "./languages.out" 2> /dev/null
+ln -sf "$bdir" "./languages.out"
 
 ## EFFECTIVE BENCHS ##
 
@@ -71,107 +101,124 @@ function bench_language()
        name="$1"
        skip_test "$name" && return
        rootdir=`pwd`
-       basedir="./${name}.out"
-
-       mkdir $basedir
+       basedir="${bdir}/${name}"
+       mkdir -p "$basedir"
 
        t=t
-       s=20
-       seq="2 4 8"
+       s=50000
+       seq="3 4 8 16"
+
+       if [ "$fast" = "true" ]; then
+               s=10000
+               seq=3
+       fi
+
        for b in $seq; do
-               run_command ./nitc languages/$name.nit -o $basedir/$name.bin
-               run_command $basedir/$name.bin $basedir "${t}_$b" "$b"
+               run_command ./nitc benches/$name.nit -o $basedir/$name.bin &&
+               run_command $basedir/$name.bin $basedir "${t}_$b" "$b" "$s"
        done
 
        prepare_res $basedir/$name-g++.dat "g++" "g++"
        cppdir="${basedir}/cpp"
-       for b in $seq; do
-               run_command g++ "${cppdir}/${t}_$b.cpp" -O2 -o "${cppdir}/${t}_$b.g++.bin"
+       test -d $cppdir && for b in $seq; do
+               run_command g++ "${cppdir}/${t}_$b.cpp" -O2 -o "${cppdir}/${t}_$b.g++.bin" &&
                bench_command "$b" "" "${cppdir}/${t}_$b.g++.bin" $s
        done
 
        prepare_res $basedir/$name-clang++.dat "clang++" "clang++"
-       for b in $seq; do
-               run_command clang++ "${cppdir}/${t}_$b.cpp" -O2 -o "${cppdir}/${t}_$b.clang++.bin"
+       test -d $cppdir && for b in $seq; do
+               run_command clang++ "${cppdir}/${t}_$b.cpp" -O2 -o "${cppdir}/${t}_$b.clang++.bin" &&
                bench_command "$b" "" "${cppdir}/${t}_$b.clang++.bin" $s
        done
 
        prepare_res $basedir/$name-java.dat "java" "java"
        javadir="${basedir}/java"
-       for b in $seq; do
-               run_command javac "${javadir}/${t}_$b.java"
+       test -d $javadir && for b in $seq; do
+               run_command javac "${javadir}/${t}_$b.java" &&
                bench_command "$b" "" java -cp "${javadir}/" "${t}_$b" $s
        done
 
        prepare_res $basedir/$name-gcj.dat "gcj" "gcj"
-       for b in $seq; do
-               run_command gcj --main=${t}_$b -O2 "${javadir}/${t}_$b.java" -o "${javadir}/${t}_$b.gcj.bin"
+       test -d $javadir && for b in $seq; do
+               run_command gcj --main=${t}_$b -O2 "${javadir}/${t}_$b.java" -o "${javadir}/${t}_$b.gcj.bin" &&
                bench_command "$b" "" "${javadir}/${t}_$b.gcj.bin" $s
        done
 
        prepare_res $basedir/$name-scala.dat "scala" "scala"
        scaladir="${basedir}/scala"
-       for b in $seq; do
-               run_command scalac "${scaladir}/${t}_$b.scala" -d "${scaladir}"
+       test -d $scaladir && for b in $seq; do
+               run_command scalac "${scaladir}/${t}_$b.scala" -d "${scaladir}" &&
                bench_command "$b" "" scala -cp "${scaladir}/" "${t}_$b" $s
        done
 
        prepare_res $basedir/$name-cs.dat "c#" "c#"
        csdir="${basedir}/cs"
-       for b in $seq; do
-               run_command gmcs "$csdir/${t}_$b.cs"
+       test -d $csdir && for b in $seq; do
+               run_command mcs "$csdir/${t}_$b.cs" &&
                bench_command "$b" "" mono "$csdir/${t}_$b.exe" $s
        done
 
        prepare_res $basedir/$name-es.dat "es" "es"
        esdir="${basedir}/es"
-       for b in $seq; do
-               cd $esdir
-               run_command ec -clean -finalize ${t}_$b/app${t}_$b.e
-               chmod +x app${t}_$b
-               mv app${t}_$b ${t}_$b.es.bin
-               cd $rootdir
+       test -d $esdir && for b in $seq; do
+               run_command ec -clean -finalize "$esdir/${t}_$b/app${t}_$b.e" &&
+               chmod +x "app${t}_$b" &&
+               mv "app${t}_$b" "$esdir/${t}_$b.es.bin" &&
                bench_command "$b" "" "$esdir/${t}_$b.es.bin" $s
        done
 
+<<XXX
+       # SmartEiffel is so old...
        prepare_res $basedir/$name-se.dat "se" "se"
        sedir="${basedir}/se"
-       for b in $seq; do
+       test -d $sedir && for b in $seq; do
                cd $sedir
                run_command se compile -no_check app${t}_${b}_se.e -loadpath ${t}_${b}_se -o ${t}_$b.se.bin
                cd $rootdir
                bench_command "$b" "" "$sedir/${t}_$b.se.bin" $s
        done
+XXX
+
+       prepare_res $basedir/$name-python.dat "python" "python"
+       pythondir="${basedir}/python"
+       test -d $pythondir && for b in $seq; do
+               bench_command "$b" "" "pypy" "$pythondir/${t}_$b.py" $s
+       done
 
        nitdir="${basedir}/nit"
-       prepare_res $nitdir/$name-nitc.dat "nitc" "nitc"
-       for b in $seq; do
-               run_command ./nitc $nitdir/${t}_$b.nit --global -o "$nitdir/${t}_$b.nitc.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
-               bench_command "$b" "" "$nitdir/${t}_$b.nitc.bin" $s
+       prepare_res $basedir/$name-nitc-g.dat "nitc-g" "nitc-g"
+       test -d $nitdir && for b in $seq; do
+               run_command ./nitc $nitdir/${t}_$b.nit --global -o "$nitdir/${t}_$b.nitc-g.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\"" &&
+               bench_command "$b" "" "$nitdir/${t}_$b.nitc-g.bin" $s
        done
 
-       prepare_res $nitdir/$name-nitc-s.dat "nitc-s" "nitc-s"
-       for b in $seq; do
-               run_command ./nitc $nitdir/${t}_$b.nit --separate -o "$nitdir/${t}_$b.nitc-s.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
-               bench_command "$b" "" "$nitdir/${t}_$b.nitc-s.bin" $s
+       prepare_res $basedir/$name-nitc-sg.dat "nitc-sg" "nitc-sg"
+       test -d $nitdir && for b in $seq; do
+               run_command ./nitc $nitdir/${t}_$b.nit --semi-global -o "$nitdir/${t}_$b.nitc-sg.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\"" &&
+               bench_command "$b" "" "$nitdir/${t}_$b.nitc-sg.bin" $s
        done
 
+       prepare_res $basedir/$name-nitc-s.dat "nitc-s" "nitc-s"
+       test -d $nitdir && for b in $seq; do
+               run_command ./nitc $nitdir/${t}_$b.nit --separate -o "$nitdir/${t}_$b.nitc-s.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\"" &&
+               bench_command "$b" "" "$nitdir/${t}_$b.nitc-s.bin" $s
+       done
 <<XXX
-       prepare_res $nitdir/$name-nitc-su.dat "nitc-su" "nitc-su"
-       for b in $seq; do
-               run_command ./nitc $nitdir/${t}_$b.nit --separate --no-check-covariance -o "$nitdir/${t}_$b.nitc-su.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+       prepare_res $basedir/$name-nitc-su.dat "nitc-su" "nitc-su"
+       test -d $nitdir && for b in $seq; do
+               run_command ./nitc $nitdir/${t}_$b.nit --separate --no-check-covariance -o "$nitdir/${t}_$b.nitc-su.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\"" &&
                bench_command "$b" "" "$nitdir/${t}_$b.nitc-su.bin" $s
        done
 
-       prepare_res $nitdir/$name-nitc-e.dat "nitc-e" "nitc-e"
-       for b in $seq; do
-               run_command ./nitc $nitdir/${t}_$b.nit --erasure -o "$nitdir/${t}_$b.nitc-e.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+       prepare_res $basedir/$name-nitc-e.dat "nitc-e" "nitc-e"
+       test -d $nitdir && for b in $seq; do
+               run_command ./nitc $nitdir/${t}_$b.nit --erasure -o "$nitdir/${t}_$b.nitc-e.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\"" &&
                bench_command "$b" "" "$nitdir/${t}_$b.nitc-e.bin" $s
        done
 
-       prepare_res $nitdir/$name-nitc-eu.dat "nitc-eu" "nitc-eu"
-       for b in $seq; do
-               run_command ./nitc $nitdir/${t}_$b.nit --erasure --no-check-covariance --no-check-erasure-cast -o "$nitdir/${t}_$b.nitc-eu.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\""
+       prepare_res $basedir/$name-nitc-eu.dat "nitc-eu" "nitc-eu"
+       test -d $nitdir && for b in $seq; do
+               run_command ./nitc $nitdir/${t}_$b.nit --erasure --no-check-covariance --no-check-erasure-cast -o "$nitdir/${t}_$b.nitc-eu.bin" --make-flags "CFLAGS=\"-g -O2 -DNOBOEHM\"" &&
                bench_command "$b" "" "$nitdir/${t}_$b.nitc-eu.bin" $s
        done
 XXX
@@ -179,11 +226,14 @@ XXX
        plot $basedir/$name.gnu
 }
 
-for name in languages/*.nit; do
+for name in benches/*.nit; do
        n=`basename $name .nit`
-       bench_language $n
+       bench_language $n < /dev/null
 done
 
+echo "<h2>System Info</h2>" >> "$html"
+system_info 2>&1 | sed -e 's/$/<br>/;s|+\( .*\)|<h3>\1</h3>|' >> "$html"
+
 if test -n "$died"; then
        echo "Some commands failed"
        exit 1
diff --git a/benchmarks/languages/bench_typetest_covar.nit b/benchmarks/languages/bench_typetest_covar.nit
deleted file mode 100644 (file)
index d0bb2b8..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-#!/usr/bin/env nit
-
-import bench_base
-
-class TypeTestCovarGenerator
-       super Generator
-
-       redef fun initnit(res)
-       do
-               for c in classes do
-                       res.add "new {classes.first}[{c}[Root]]"
-               end
-
-       end
-
-       redef fun testnit
-       do
-               return "a isa {classes.first}[{classes[middle]}[Root]]"
-       end
-
-       redef fun initjava(res, interfaces)
-       do
-
-               var tagc = ""
-               if interfaces then tagc = "X"
-               for c in classes do
-                       res.add "new {tagc}{classes.first}<{c}<Root>>()"
-               end
-       end
-
-       redef fun testjava(interfaces)
-       do
-               return "a instanceof {classes.first}"
-       end
-
-       redef fun initcsharp(res, interfaces)
-       do
-               var tagc = ""
-               if interfaces then tagc = "X"
-               for c in classes do
-                       res.add "new {tagc}{classes.first}<{c}<Root>>()"
-               end
-       end
-
-       redef fun testcsharp(interfaces)
-       do
-               return "a is {classes.first}<{classes[middle]}<Root>>"
-       end
-
-       redef fun initscala(res, interfaces)
-       do
-               var tagc = ""
-               if interfaces then tagc = "X"
-               for c in classes do
-                       res.add "new {tagc}{classes.first}[{c}[Root]]()"
-               end
-       end
-
-       redef fun testscala(interfaces)
-       do
-               return "a.isInstanceOf[{classes.first}[{classes[middle]}[Root]]]"
-       end
-
-       redef fun initcpp(res)
-       do
-               for c in classes do
-                       res.add "new {classes.first}<{c}<Root>*>()"
-               end
-       end
-
-       redef fun testcpp
-       do
-               write "\t\t\t{classes.first}<{classes[middle]}<Root>*> *to = dynamic_cast<{classes.first}<{classes[middle]}<Root>*>*>(a);"
-               return "to != 0"
-       end
-
-       redef fun inite(res, se)
-       do
-               for c in classes do
-                       res.add "create \{{classes.first}[{c}[ROOT]]\} a"
-               end
-       end
-
-       redef fun teste(se)
-       do
-               write "\t\t\t\t\tto ?= a"
-               return "to /= Void"
-       end
-
-       redef fun locale(se)
-       do
-               write "\t\t\tto: {classes.first}[{classes[middle]}[ROOT]]"
-       end
-end
-
-var g = new TypeTestCovarGenerator
-g.genall
diff --git a/benchmarks/languages/benches/bench_attr.nit b/benchmarks/languages/benches/bench_attr.nit
new file mode 100644 (file)
index 0000000..22cf626
--- /dev/null
@@ -0,0 +1,115 @@
+#!/usr/bin/env nit
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
+
+import bench_base
+
+class TypeTestDepthGenerator
+       super Generator
+
+       redef fun initnit(res)
+       do
+               for c in classes do
+                       res.add "new {c}[Root]"
+               end
+       end
+
+       redef fun testnit
+       do
+               return "a._aid >= {middle}"
+       end
+
+       redef fun initjava(res, interfaces)
+       do
+
+               var tagc = ""
+               if interfaces then tagc = "X"
+               for c in classes do
+                       res.add "new {tagc}{c}<Root>()"
+               end
+       end
+
+       redef fun testjava(interfaces)
+       do
+               return "a.aid >= {middle}"
+       end
+
+       redef fun initcsharp(res, interfaces)
+       do
+               var tagc = ""
+               if interfaces then tagc = "X"
+               for c in classes do
+                       res.add "new {tagc}{c}<Root>()"
+               end
+       end
+
+       redef fun testcsharp(interfaces)
+       do
+               return "a.aid >= {middle}"
+       end
+
+       redef fun initscala(res, interfaces)
+       do
+               var tagc = ""
+               if interfaces then tagc = "X"
+               for c in classes do
+                       res.add "new {tagc}{c}[Root]()"
+               end
+       end
+
+       redef fun testscala(interfaces)
+       do
+               return "a.aid >= {middle}"
+       end
+
+       redef fun initcpp(res)
+       do
+               for c in classes do
+                       res.add "new {c}<Root>()"
+               end
+       end
+
+       redef fun testcpp
+       do
+               return "a->aid >= {middle}"
+       end
+
+       redef fun inite(res, se)
+       do
+               for c in classes do
+                       res.add "create \{{c}[ROOT]\}"
+               end
+       end
+
+       redef fun teste(se)
+       do
+               return "a.aid >= {middle}"
+       end
+
+       redef fun initpython(res)
+       do
+               for c in classes do
+                       res.add "{c}()"
+               end
+       end
+
+       redef fun testpython
+       do
+               return "a.aid >= {middle}"
+       end
+end
+
+var g = new TypeTestDepthGenerator
+g.use_interfaces = false
+g.genall
diff --git a/benchmarks/languages/benches/bench_base.nit b/benchmarks/languages/benches/bench_base.nit
new file mode 100644 (file)
index 0000000..f97bd65
--- /dev/null
@@ -0,0 +1,797 @@
+#!/usr/bin/env nit
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
+
+# Microbenchmak generation for multiple language
+# Just a quick an dirty Nit script file :)
+
+# This benchmark focuses on effects of the hierarchy dept
+# on the typetest performances
+
+# class Root
+# class Klass[E] super Root
+# class C1...CX super Root
+# Klass[CX] isa Klass[C1]
+
+class Klass
+       var id: Int
+       var supers = new Array[Klass]
+       var all_supers = new HashSet[Klass]
+       redef fun to_s
+       do
+               return "C{id}"
+       end
+end
+
+class Generator
+
+       var classes = new Array[Klass]
+
+       var dept = 5 is writable
+       var loops = 50000 is writable
+       var middle = 0 is writable
+       var dry = false is writable
+       var check = false is writable
+
+       # Polymorphism level
+       # This is the number of distinct dynamic types for the receiver
+       var poly = 2 is writable
+
+       # Use only interfaces (or traits) in the hierarchy
+       #
+       # If `false` then java&cs&scala will use classes, thus will break if MH is used
+       var use_interfaces = true is writable
+
+       # Add Root0, the superclass to Root that introduce common services.
+       #
+       # This add another level of un-optimization since the services are not introduced
+       # by the static type of the receiver.
+       var use_root0 = true is writable
+
+       fun genhier
+       do
+               var s: nullable Klass = null
+               for d in [1..dept] do
+                       var c = new Klass(d)
+
+                       classes.add(c)
+                       c.all_supers.add(c)
+                       if s != null then
+                               c.supers.add(s)
+                               c.all_supers.add_all(s.all_supers)
+                       end
+                       s = c
+               end
+               middle = (dept) / 2
+       end
+
+       var file: nullable FileWriter = null
+       fun write(str: String)
+       do
+               file.write(str)
+               file.write("\n")
+       end
+
+       fun initnit(res: Array[String]) do return
+       fun testnit: String do return "true"
+
+       fun writenit(dir: String, name: String)
+       do
+               var ia = new Array[String]
+               initnit(ia)
+               if ia.is_empty then
+                       print "Nit disabled"
+                       return
+               end
+
+               dir = "{dir}/nit"
+               dir.mkdir
+               file = new FileWriter.open("{dir}/{name}.nit")
+
+               if use_root0 then
+                       write "class Root0"
+               else
+                       write "class Root"
+               end
+               write "\tfun id: Int do return 0"
+               write "\tvar aid: Int = id"
+               write "\tvar next: Root is noautoinit"
+               write "\tfun set_next(next: Root): Root do\n\t\tself.next = next\n\t\treturn next\n\tend"
+               write "end"
+               if use_root0 then
+                       write "class Root\n\tsuper Root0\nend"
+               end
+               for c in classes do
+                       write "class {c}[E]"
+                       if c.supers.is_empty then
+                               write "\tsuper Root"
+                       else for s in c.supers do
+                               write "\tsuper {s}[E]"
+                       end
+                       write "\tredef fun id do return {c.id}"
+                       write "\tfun f{c.id}: Int do return {c.id}"
+                       write "\tvar a{c.id}: Int = {c.id}"
+                       write "end"
+               end
+
+               write "fun test(a,b: Root, loops, start: Int)"
+               write "do"
+               write "var x = start"
+               write "var i = loops"
+               write "while i > 0 do"
+               write "\tvar j = loops"
+               write "\twhile j > 0 do"
+               var test = "x >= 0"
+               if not dry then test = testnit
+               write "\t\tif {test} then"
+               write "\t\t\tvar tmp = a; a = b; b = tmp"
+               if check then write "\t\tx += 1"
+               write "\t\telse"
+               write "\t\t\tx += 1"
+               write "\t\t\ta = a.next"
+               write "\t\t\tb = b.next"
+               write "\t\tend"
+               write "\t\tj -= 1"
+               write "\tend"
+               write "\tx += 1"
+               write "\ta = a.next"
+               write "\tb = b.next"
+               write "\ti -= 1"
+               write "end"
+               write "print x"
+               write "end"
+
+               write "var b: Root = {ia.first}"
+               write "var tmp = b"
+               for i in ia do
+                       write "b = b.set_next({i})"
+               end
+               write "b.next = tmp"
+               write "var a: Root = {ia.last}"
+               write "tmp = a"
+               for i in [1..poly[ do
+                       write "a = a.set_next({ia[ia.length - 1 - i]})"
+               end
+               write "a.next = tmp"
+               write "test(b, b.next, 10, -100)"
+               write "test(a, a.next, {loops}, 0)"
+
+               file.close
+       end
+
+       fun initjava(res: Array[String], interfaces: Bool) do return
+       fun testjava(interfaces: Bool): String do return "true"
+       fun writejava(dir: String, name: String, interfaces: Bool)
+       do
+               var ia = new Array[String]
+               initjava(ia, interfaces)
+               if ia.is_empty then
+                       print "Java disabled"
+                       return
+               end
+
+               dir = "{dir}/java"
+               dir.mkdir
+               file = new FileWriter.open("{dir}/{name}.java")
+
+               write "class {name} \{"
+               var root0 = "Root"
+               if use_root0 then root0 = "Root0"
+               if interfaces then
+                       write "static interface {root0} \{ long id(); Root getNext(); Root setNext(Root next); \}"
+                       write "static class XRoot implements {root0} \{"
+               else
+                       write "static class {root0} \{"
+               end
+               write "\tpublic long id() \{ return 0;\}"
+               write "\tpublic long aid = id();"
+               write "\tpublic Root next;"
+               write "\tpublic Root getNext() \{ return next;\}"
+               write "\tpublic Root setNext(Root next) \{ this.next = next; return next; \}"
+               write "\}"
+
+               if use_root0 then
+                       if interfaces then
+                               write "static interface Root extends Root0 \{\}"
+                       else
+                               write "static class Root extends Root0 \{\}"
+                       end
+               end
+
+               for c in classes do
+                       if interfaces then
+                               write "static interface {c}<E> "
+                       else
+                               write "static class {c}<E> "
+                       end
+                       if c.supers.is_empty then
+                               write "\textends Root"
+                       else for s in [c.supers.first] do
+                               write "\textends {s}<E>"
+                       end
+                       if interfaces then
+                               write "\{\}"
+                               if c.supers.is_empty then
+                                       write "static class X{c}<E> extends XRoot implements {c}<E>"
+                               else
+                                       write "static class X{c}<E> extends X{c.supers.first}<E> implements {c}<E>"
+                               end
+                       end
+                       write "\{"
+                       write "\tpublic long id() \{ return {c.id}; \}"
+                       write "\tpublic long f{c.id}() \{ return {c.id}; \}"
+                       write "\tpublic long a{c.id} = {c.id};"
+                       write "\}"
+               end
+
+               write "static public void main(String args[]) \{"
+               write "\tRoot b = {ia.first};"
+               write "\tRoot tmp = b;"
+               for i in ia do
+                       write "\tb = b.setNext({i});"
+               end
+               write "\tb.setNext(tmp);"
+               write "\tRoot a = {ia.last};"
+               write "\ttmp = a;"
+               for i in [1..poly[ do
+                       write "\ta = a.setNext({ia[ia.length - 1 - i]});"
+               end
+               write "\ta.setNext(tmp);"
+               write "\ttest(b, b.getNext(), 10, -100);"
+               write "\ttest(a, a.getNext(), {loops}, 0);"
+               write "\}"
+
+               write "static public void test(Root a, Root b, long loops, long start) \{"
+               write "\tlong x = start;"
+               write "\tfor(long i = loops; i > 0; i--) \{"
+               write "\t\tfor(long j = loops; j > 0; j--) \{"
+               var test = "x>=0"
+               if not dry then test = testjava(interfaces)
+               write "\t\t\tif({test}) \{"
+               write "\t\t\t\tRoot tmp = a; a = b; b = tmp;"
+               if check then write "\t\t\t\tx = x + 1;"
+               write "\t\t\t\} else \{ x++; a = a.getNext(); b = b.getNext(); \}"
+               write "\t\t\}"
+               write "\t\tx++; a = a.getNext(); b = b.getNext();"
+               write "\t\}"
+               write "\tSystem.out.println(x);"
+               write "\}"
+               write "\}"
+               file.close
+       end
+
+       fun initcsharp(res: Array[String], interfaces: Bool) do return
+       fun testcsharp(interfaces: Bool): String do return "true"
+       fun writecsharp(dir: String, name: String, interfaces: Bool)
+       do
+               var ia = new Array[String]
+               initcsharp(ia, interfaces)
+               if ia.is_empty then
+                       print "C# disabled"
+                       return
+               end
+
+               dir = "{dir}/cs"
+               dir.mkdir
+               file = new FileWriter.open("{dir}/{name}.cs")
+
+               write "class {name} \{"
+               var root0 = "Root"
+               if use_root0 then root0 = "Root0"
+               if interfaces then
+                       write "interface {root0} \{ long Id(); Root GetNext(); Root SetNext(Root next); \}"
+                       write "class XRoot: {root0} \{ "
+               else
+                       write "class {root0}\n\t\{ "
+               end
+               write "\tvirtual public long Id() \{ return 0; \}"
+               write "\tpublic long aid;"
+               write "\tpublic Root next;"
+               write "\tvirtual public Root GetNext() \{ return next; \}"
+               write "\tvirtual public Root SetNext(Root next) \{ this.next = next; return next; \}"
+               write "\}"
+
+               if use_root0 then
+                       if interfaces then
+                               write "interface Root: Root0 \{\}"
+                       else
+                               write "class Root: Root0 \{\}"
+                       end
+               end
+
+               for c in classes do
+                       var cname
+                       if interfaces then
+                               write "interface {c}<out E> "
+                               cname = "X"+c.to_s
+                       else
+                               write "class {c}<E> "
+                               cname = c.to_s
+                       end
+                       if c.supers.is_empty then
+                               write "\t: Root"
+                       else for s in [c.supers.first] do
+                               write "\t: {s}<E>"
+                       end
+                       if interfaces then
+                               write "\{\}"
+                               if c.supers.is_empty then
+                                       write "class X{c}<E>: XRoot, {c}<E>"
+                               else
+                                       write "class X{c}<E>: X{c.supers.first}<E>, {c}<E>"
+                               end
+                       end
+                       write "\{"
+                       write "\toverride public long Id() \{ return {c.id}; \}"
+                       write "\tvirtual public long F{c.id}() \{ return {c.id}; \}"
+                       write "\tpublic long A{c.id} = {c.id};"
+                       write "\tpublic {cname}() \{ aid = {c.id}; \}"
+                       write "\}"
+               end
+
+               write "static void Main(string[] args) \{"
+               write "\tRoot b = {ia.first};"
+               write "\tRoot tmp = b;"
+               for i in ia do
+                       write "\tb = b.SetNext({i});"
+               end
+               write "\tb.SetNext(tmp);"
+               write "\tRoot a = {ia.last};"
+               write "\ttmp = a;"
+               for i in [1..poly[ do
+                       write "\ta = a.SetNext({ia[ia.length - 1 - i]});"
+               end
+               write "\ta.SetNext(tmp);"
+               write "\tTest(b, b.GetNext(), 10, -100);"
+               write "\tTest(a, a.GetNext(), {loops}, 0);"
+               write "\}"
+
+               write "static void Test(Root a, Root b, long loops, long start) \{"
+               write "\tlong x = start;"
+               write "\tfor(long i = loops; i > 0; i--) \{"
+               write "\t\tfor(long j = loops; j >0; j--) \{"
+               var test = "x>=0"
+               if not dry then test = testcsharp(interfaces)
+               write "\t\t\tif({test}) \{"
+               write "\t\t\t\tRoot tmp = a; a = b; b = tmp;"
+               if check then write "\t\t\t\tx++;"
+               write "\t\t\t\} else \{ x += 1; a = a.GetNext(); b = b.GetNext();\};"
+               write "\t\t\}"
+               write "\t\tx += 1; a = a.GetNext(); b = b.GetNext();"
+               write "\t\}"
+               write "\tSystem.Console.WriteLine(x);"
+               write "\}"
+               write "\}"
+               file.close
+       end
+
+       fun initscala(res: Array[String], interfaces: Bool) do return
+       fun testscala(interfaces: Bool): String do return "true"
+       fun writescala(dir: String, name: String, interfaces: Bool)
+       do
+               var ia = new Array[String]
+               initscala(ia, interfaces)
+               if ia.is_empty then
+                       print "Scala disabled"
+                       return
+               end
+
+               dir = "{dir}/scala"
+               dir.mkdir
+               file = new FileWriter.open("{dir}/{name}.scala")
+
+               write "object {name} \{"
+               if use_root0 then
+                       write "class Root0 \{"
+               else
+                       write "class Root \{"
+               end
+               write "\tdef id: Long = 0; var aid: Long = id; var next: Root = null; def getNext: Root = next; def setNext(next: Root): Root = \{ this.next = next; return next; \} \}"
+
+               if use_root0 then
+                       write "class Root extends Root0 \{\}"
+               end
+
+               for c in classes do
+                       if interfaces then
+                               write "trait {c}[+E] "
+                       else
+                               write "class {c}[+E] "
+                       end
+                       if c.supers.is_empty then
+                               write "\textends Root"
+                       else for s in [c.supers.first] do
+                               write "\textends {s}[E]"
+                       end
+                       if interfaces then
+                               write "\{\}"
+                               if c.supers.is_empty then
+                                       write "class X{c}[E] extends {c}[E]"
+                               else
+                                       write "class X{c}[E] extends X{c.supers.first}[E] with {c}[E]"
+                               end
+                       end
+                       write "\{"
+                       write "\toverride def id: Long = {c.id}"
+                       write "\tdef f{c.id}: Long = {c.id}"
+                       if interfaces then
+                               write "\tvar a{c.id}: Long = {c.id}"
+                       end
+                       write "\}"
+               end
+
+               write "def main(args: Array[String]) = \{"
+               write "\tvar b: Root = {ia.first};"
+               write "\tvar tmp = b;"
+               for i in ia do
+                       write "\tb = b.setNext({i});"
+               end
+               write "\tb.setNext(tmp);"
+               write "\tvar a: Root = {ia.last};"
+               write "\ttmp = a;"
+               for i in [1..poly[ do
+                       write "\ta = a.setNext({ia[ia.length - 1 - i]});"
+               end
+               write "\ta.setNext(tmp);"
+               write "\ttest(b, b.getNext, 10, -100);"
+               write "\ttest(a, a.getNext, {loops}, 0);"
+               write "\}"
+
+               write "def test(aa:Root, bb:Root, l: Long, start: Long) = \{"
+               write "\tvar a = aa"
+               write "\tvar b = bb"
+               write "\tvar x = start"
+               write "\tvar loops = l"
+               write "\tvar i = loops"
+               write "\twhile (i > 0) \{"
+               write "\t\tvar j = loops"
+               write "\t\twhile (j > 0) \{"
+               var test = "x>=0"
+               if not dry then test = testscala(interfaces)
+               write "\t\t\tif ({test}) \{"
+               write "\t\t\t\tval tmp = a; a = b; b = tmp;"
+               if check then write "\t\t\t\tx += 1;"
+               write "\t\t\t\} else \{ x += 1; a = a.getNext; b = b.getNext;\}"
+               write "\t\t\tj -= 1"
+               write "\t\t\}"
+               write "\t\tx += 1; a = a.getNext; b = b.getNext;"
+               write "\t\ti -= 1"
+               write "\t\t\}"
+               write "\tprintln(x)"
+               write "\}"
+               write "\}"
+
+               file.close
+       end
+
+       fun initcpp(res: Array[String]) do return
+       fun testcpp: String do return "true"
+       fun writecpp(dir: String, name: String)
+       do
+               var ia = new Array[String]
+               initcpp(ia)
+               if ia.is_empty then
+                       print "C++ diabled"
+                       return
+               end
+
+               dir = "{dir}/cpp"
+               dir.mkdir
+               file = new FileWriter.open("{dir}/{name}.cpp")
+
+               write "#include <iostream>"
+               write "#include <stdlib.h>"
+               if use_root0 then
+                       write "class Root;"
+                       write "class Root0"
+               else
+                       write "class Root"
+               end
+               write "\t\{ public: virtual long id() \{ return 0;\} long aid; Root *next; virtual Root *setNext(Root *n) \{this->next = n; return n;\} \};"
+
+               if use_root0 then
+                       write "class Root: public virtual Root0 \{\};"
+               end
+
+               for c in classes do
+                       write "template<class E>"
+                       write "class {c} "
+                       if c.supers.is_empty then
+                               write "\t: public virtual Root"
+                       else for s in [c.supers.first] do
+                               write "\t: public virtual {s}<E>"
+                       end
+                       write "\{"
+                       write "\tpublic: virtual long id() \{ return {c.id}; \}"
+                       write "\tvirtual long f{c.id}() \{ return {c.id}; \}"
+                       write "\tlong a{c.id};"
+                       write "\t{c}(): a{c.id}({c.id}) \{ this->aid = {c.id}; \}"
+                       write "\};"
+               end
+
+               write "void test(Root *a, Root *b, long loops, long start) \{"
+               write "\tlong x = start;"
+               write "\tfor(long i = loops; i > 0; i--) \{"
+               write "\t\tfor(int j = loops; j > 0; j--) \{"
+               var test = "x>=0"
+               if not dry then test = testcpp
+               write "\t\t\tif({test}) \{"
+               write "\t\t\t\tRoot *tmp = a; a = b; b = tmp;"
+               if check then write "\t\t\t\tx += 1;"
+               write "\t\t\t\} else \{ x++; a = a->next; b = b->next;\}"
+               write "\t\t\}"
+               write "\t\tx++; a = a->next; b = b->next;"
+               write "\t\}"
+               write "\tstd::cout << x << std::endl;"
+               write "\}"
+
+               write "int main(int argc, char **argv) \{"
+               write "\tRoot *b = {ia.first};"
+               write "\tRoot *tmp = b;"
+               for i in ia do
+                       write "\tb = b->setNext({i});"
+               end
+               write "\tb->setNext(tmp);"
+               write "\tRoot *a = {ia.last};"
+               write "\ttmp = a;"
+               for i in [1..poly[ do
+                       write "\ta = a->setNext({ia[ia.length - 1 - i]});"
+               end
+               write "\ta->setNext(tmp);"
+               write "\ttest(b, b->next, 10, -100);"
+               write "\ttest(a, a->next, {loops}, 0);"
+               write "\}"
+
+               file.close
+       end
+
+       fun inite(res: Array[String], se: Bool) do return
+       fun teste(se: Bool): String do return "true"
+       fun locale(se: Bool) do end
+       fun writee(dir: String, name: String, se: Bool)
+       do
+               var ia = new Array[String]
+               inite(ia,se)
+               if ia.is_empty then
+                       print "Eiffel disabled"
+                       return
+               end
+
+               if se then
+                       dir = "{dir}/se/{name}"
+               else
+                       dir = "{dir}/es/{name}"
+               end
+               dir.mkdir
+
+               var root0
+               if use_root0 then
+                       root0 = "ROOT0"
+                       file = new FileWriter.open("{dir}/root0.e")
+               else
+                       root0 = "ROOT"
+                       file = new FileWriter.open("{dir}/root.e")
+               end
+
+               var istk = ""
+               if se then istk = " is"
+               write "class {root0}"
+               write "feature id: INTEGER_64 {istk} do Result := 0 end"
+               write "aid: INTEGER_64"
+               write "xnext: detachable ROOT"
+               write "next: ROOT do check attached xnext as n then Result := n end end"
+               write "set_next(n: ROOT): ROOT do xnext := n Result := n end"
+               write "make do aid := id end"
+               write "end"
+               file.close
+
+               if use_root0 then
+                       file = new FileWriter.open("{dir}/root.e")
+                       write "class ROOT inherit ROOT0 end "
+                       file.close
+               end
+
+               for c in classes do
+                       file = new FileWriter.open("{dir}/{c}.e")
+                       write "class {c}[E] "
+                       if c.supers.is_empty then
+                               write "\tinherit ROOT"
+                       else for s in [c.supers.first] do
+                               write "\tinherit {s}[E]"
+                       end
+                       write "\t\tredefine id, make end"
+                       write "create make"
+                       write "feature"
+                       write "\tid: INTEGER_64 {istk} do Result := {c.id} end"
+                       write "\tf{c.id}: INTEGER_64 {istk} do Result := {c.id} end"
+                       write "\ta{c.id}: INTEGER_64 {istk} attribute Result := {c.id} end"
+                       write "make do aid := {c.id} end"
+                       write "end"
+                       file.close
+               end
+
+               file = new FileWriter.open("{dir}/app{name}.e")
+               write "class APP{name.to_upper}"
+               if se then
+                       write "insert ARGUMENTS"
+               end
+               write "create make"
+               write "feature"
+
+               if se then
+                       write "\tmake{istk}"
+               else
+                       write "\tmake(args: ARRAY[STRING]){istk}"
+               end
+               write "\t\tlocal"
+               write "\t\t\ta: ROOT"
+               write "\t\t\tb: ROOT"
+               write "\t\t\ttmp: ROOT"
+               write "\t\tdo"
+               write "\t\t\tb := {ia.first} .make"
+               write "\t\t\ttmp := b"
+               for i in ia do
+                       write "\t\t\tb := b.set_next({i} .make)"
+               end
+               write "\t\t\ttmp := b.set_next(tmp)"
+
+               write "\t\t\ta := {ia.last} .make"
+               write "\t\t\ttmp := a"
+               for i in [1..poly[ do
+                       write "\t\t\ta := a.set_next({ia[ia.length - 1 - i]} .make)"
+               end
+               write "\t\t\ttmp := a.set_next(tmp);"
+               write "\t\t\ttest(b, b.next, 10, -100)"
+               write "\t\t\ttest(a, a.next, {loops}, 0)"
+               write "\t\tend"
+
+               write "\ttest(aa: ROOT; bb: ROOT; l: INTEGER_64; start: INTEGER_64){istk}"
+               write "\t\tlocal"
+               write "\t\t\ta: ROOT"
+               write "\t\t\tb: ROOT"
+               write "\t\t\ttmp: ROOT"
+               write "\t\t\ti: INTEGER_64"
+               write "\t\t\tj: INTEGER_64"
+               write "\t\t\tx: INTEGER_64"
+               locale(se)
+               write "\t\t\tloops: INTEGER_64"
+               write "\t\tdo"
+               write "\t\t\ta := aa"
+               write "\t\t\tb := bb"
+               write "\t\t\tx := start"
+               write "\t\t\tloops := l"
+               write "\t\t\tfrom i := loops until i<=0 loop"
+               write "\t\t\t\tfrom j := loops until j<=0 loop"
+               var test = "x >= 0"
+               if not dry then test = teste(se)
+               write "\t\t\t\t\tif {test} then"
+               write "\t\t\t\t\t\ttmp := a; a := b; b := tmp"
+               if check then write "\t\t\t\t\tx := x + 1"
+               write "\t\t\t\t\telse x := x + 1; a := a.next; b := b.next end"
+               write "\t\t\t\t\tj := j - 1"
+               write "\t\t\t\tend"
+               write "\t\t\t\tx := x + 1; a := a.next; b := b.next"
+               write "\t\t\t\ti := i - 1"
+               write "\t\t\tend"
+               write "\t\t\tprint(x.out)"
+               write "\t\t\tprint(\"%N\")"
+               write "\t\tend"
+               write "end"
+               file.close
+       end
+
+       fun initpython(res: Array[String]) do return
+       fun testpython: String do return "true"
+       fun writepython(dir: String, name: String)
+       do
+               var ia = new Array[String]
+               initpython(ia)
+               if ia.is_empty then
+                       print "Python disabled"
+                       return
+               end
+
+               dir = "{dir}/python"
+               dir.mkdir
+               file = new FileWriter.open("{dir}/{name}.py")
+
+               if use_root0 then
+                       write "class Root0(object):"
+               else
+                       write "class Root(object):"
+               end
+               write "\tdef id(self): return 0"
+               write "\tdef set_next(self, n):\n\t\tself.next = n\n\t\treturn n"
+               write "\tdef __init__(self): self.aid = self.id()"
+
+               if use_root0 then
+                       write "class Root(Root0): pass"
+               end
+
+               for c in classes do
+                       if c.supers.is_empty then
+                               write "class {c}(Root):"
+                       else
+                               write "class {c}({c.supers.join(",")}):"
+                       end
+                       write "\tdef id(self): return {c.id}"
+                       write "\tdef f{c.id}(self): return {c.id}"
+                       write "\tdef __init__(self):"
+                       write "\t\tsuper({c}, self).__init__()"
+                       write "\t\ta{c.id} = {c.id}"
+               end
+
+               write "def test(a, b, loops, start):"
+               write "\tx = start"
+               write "\ti = loops"
+               write "\twhile i > 0:"
+               write "\t\tj = loops"
+               write "\t\twhile j > 0:"
+               var test = "x >= 0"
+               if not dry then test = testpython
+               write "\t\t\tif {test}:"
+               write "\t\t\t\ttmp = a; a = b; b = tmp"
+               if check then write "\t\t\t\tx += 1"
+               write "\t\t\telse:"
+               write "\t\t\t\tx = x + 1; a = a.next; b = b.next"
+               write "\t\t\tj -= 1"
+               write "\t\tx = x + 1; a = a.next; b = b.next"
+               write "\t\ti -= 1"
+               write "\tprint(x)"
+
+               write "b = {ia.first}"
+               write "tmp = b"
+               for i in ia do
+                       write "b = b.set_next({i})"
+               end
+               write "b.next = tmp"
+               write "a = {ia.last}"
+               write "tmp = a"
+               for i in [1..poly[ do
+                       write "a = a.set_next({ia[ia.length - 1 - i]})"
+               end
+               write "a.next = tmp"
+               write "test(b, b.next, 10, -100)"
+               write "test(a, a.next, {loops}, 0)"
+
+               file.close
+       end
+
+       var count = false
+
+       fun genall
+       do
+               var g = self
+               var outdir = args.first
+               var name = args[1]
+               var use_interfaces = self.use_interfaces
+               if args.length > 2 then g.dept = args[2].to_i
+               if args.length > 3 then loops = args[3].to_i
+               if args.length > 4 then use_interfaces = false
+
+               g.genhier
+
+               g.writenit(outdir, name)
+               g.writejava(outdir, name, use_interfaces)
+               g.writecsharp(outdir, name, use_interfaces)
+               g.writescala(outdir, name, use_interfaces)
+               g.writecpp(outdir, name)
+               g.writee(outdir, "{name}_se", true)
+               g.writee(outdir, name, false)
+               g.writepython(outdir, name)
+       end
+end
+
+var g = new Generator
+g.genall
diff --git a/benchmarks/languages/benches/bench_meth.nit b/benchmarks/languages/benches/bench_meth.nit
new file mode 100644 (file)
index 0000000..3eaaa28
--- /dev/null
@@ -0,0 +1,114 @@
+#!/usr/bin/env nit
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
+
+import bench_base
+
+class TypeTestDepthGenerator
+       super Generator
+
+       redef fun initnit(res)
+       do
+               for c in classes do
+                       res.add "new {c}[Root]"
+               end
+       end
+
+       redef fun testnit
+       do
+               return "a.id >= {middle}"
+       end
+
+       redef fun initjava(res, interfaces)
+       do
+
+               var tagc = ""
+               if interfaces then tagc = "X"
+               for c in classes do
+                       res.add "new {tagc}{c}<Root>()"
+               end
+       end
+
+       redef fun testjava(interfaces)
+       do
+               return "a.id() >= {middle}"
+       end
+
+       redef fun initcsharp(res, interfaces)
+       do
+               var tagc = ""
+               if interfaces then tagc = "X"
+               for c in classes do
+                       res.add "new {tagc}{c}<Root>()"
+               end
+       end
+
+       redef fun testcsharp(interfaces)
+       do
+               return "a.Id() >= {middle}"
+       end
+
+       redef fun initscala(res, interfaces)
+       do
+               var tagc = ""
+               if interfaces then tagc = "X"
+               for c in classes do
+                       res.add "new {tagc}{c}[Root]()"
+               end
+       end
+
+       redef fun testscala(interfaces)
+       do
+               return "a.id >= {middle}"
+       end
+
+       redef fun initcpp(res)
+       do
+               for c in classes do
+                       res.add "new {c}<Root>()"
+               end
+       end
+
+       redef fun testcpp
+       do
+               return "a->id() >= {middle}"
+       end
+
+       redef fun inite(res, se)
+       do
+               for c in classes do
+                       res.add "create \{{c}[ROOT]\}"
+               end
+       end
+
+       redef fun teste(se)
+       do
+               return "a.id >= {middle}"
+       end
+
+       redef fun initpython(res)
+       do
+               for c in classes do
+                       res.add "{c}()"
+               end
+       end
+
+       redef fun testpython
+       do
+               return "a.id() >= {middle}"
+       end
+end
+
+var g = new TypeTestDepthGenerator
+g.genall
diff --git a/benchmarks/languages/benches/bench_null.nit b/benchmarks/languages/benches/bench_null.nit
new file mode 100644 (file)
index 0000000..a67c27b
--- /dev/null
@@ -0,0 +1,80 @@
+#!/usr/bin/env nit
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
+
+import bench_base
+
+class TypeTestDepthGenerator
+       super Generator
+
+       redef fun initnit(res)
+       do
+               for c in classes do
+                       res.add "new {c}[Root]"
+               end
+       end
+
+       redef fun initjava(res, interfaces)
+       do
+
+               var tagc = ""
+               if interfaces then tagc = "X"
+               for c in classes do
+                       res.add "new {tagc}{c}<Root>()"
+               end
+       end
+
+       redef fun initcsharp(res, interfaces)
+       do
+               var tagc = ""
+               if interfaces then tagc = "X"
+               for c in classes do
+                       res.add "new {tagc}{c}<Root>()"
+               end
+       end
+
+       redef fun initscala(res, interfaces)
+       do
+               var tagc = ""
+               if interfaces then tagc = "X"
+               for c in classes do
+                       res.add "new {tagc}{c}[Root]()"
+               end
+       end
+
+       redef fun initcpp(res)
+       do
+               for c in classes do
+                       res.add "new {c}<Root>()"
+               end
+       end
+
+       redef fun inite(res, se)
+       do
+               for c in classes do
+                       res.add "create \{{c}[ROOT]\}"
+               end
+       end
+
+       redef fun initpython(res)
+       do
+               for c in classes do
+                       res.add "{c}()"
+               end
+       end
+end
+
+var g = new TypeTestDepthGenerator
+g.dry = true
+g.genall
diff --git a/benchmarks/languages/benches/bench_typetest_covar.nit b/benchmarks/languages/benches/bench_typetest_covar.nit
new file mode 100644 (file)
index 0000000..4ccbcf3
--- /dev/null
@@ -0,0 +1,68 @@
+#!/usr/bin/env nit
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
+
+import bench_base
+
+class TypeTestCovarGenerator
+       super Generator
+
+       redef fun initnit(res)
+       do
+               for c in classes do
+                       res.add "new {classes.first}[{c}[Root]]"
+               end
+
+       end
+
+       redef fun testnit
+       do
+               return "a isa {classes.first}[{classes[middle]}[Root]]"
+       end
+
+       redef fun initcsharp(res, interfaces)
+       do
+               var tagc = ""
+               if interfaces then tagc = "X"
+               for c in classes do
+                       res.add "new {tagc}{classes.first}<{c}<Root>>()"
+               end
+       end
+
+       redef fun testcsharp(interfaces)
+       do
+               return "a is {classes.first}<{classes[middle]}<Root>>"
+       end
+
+       redef fun inite(res, se)
+       do
+               for c in classes do
+                       res.add "create \{{classes.first}[{c}[ROOT]]\}"
+               end
+       end
+
+       redef fun teste(se)
+       do
+               write "\t\t\t\t\tto ?= a"
+               return "to /= Void"
+       end
+
+       redef fun locale(se)
+       do
+               write "\t\t\tto: detachable {classes.first}[{classes[middle]}[ROOT]]"
+       end
+end
+
+var g = new TypeTestCovarGenerator
+g.genall
@@ -1,4 +1,17 @@
 #!/usr/bin/env nit
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
 
 import bench_base
 
@@ -77,7 +90,7 @@ class TypeTestDepthGenerator
        redef fun inite(res, se)
        do
                for c in classes do
-                       res.add "create \{{c}[ROOT]\} a"
+                       res.add "create \{{c}[ROOT]\}"
                end
        end
 
@@ -89,7 +102,18 @@ class TypeTestDepthGenerator
 
        redef fun locale(se)
        do
-               write "\t\t\tto: {classes[middle]}[ROOT]"
+               write "\t\t\tto: detachable {classes[middle]}[ROOT]"
+       end
+
+       redef fun initpython(res)
+       do
+               for c in classes do
+                       res.add "{c}()"
+               end
+       end
+       redef fun testpython
+       do
+               return "isinstance(a, {classes[middle]})"
        end
 end
 
@@ -1,4 +1,17 @@
 #!/usr/bin/env nit
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
 
 import bench_base
 import pipeline
@@ -9,7 +22,7 @@ class TypeTestDepthNotGenerator
        redef fun initnit(res)
        do
                res.add "new {classes.last}[Root]"
-               for c in classes.skip_tail(1) do
+               for c in classes.iterator.skip_tail(1) do
                        res.add "new {c}[Root]"
                end
        end
@@ -25,7 +38,7 @@ class TypeTestDepthNotGenerator
                var tagc = ""
                if interfaces then tagc = "X"
                res.add "new {tagc}{classes.last}<Root>()"
-               for c in classes.skip_tail(1) do
+               for c in classes.iterator.skip_tail(1) do
                        res.add "new {tagc}{c}<Root>()"
                end
        end
@@ -40,7 +53,7 @@ class TypeTestDepthNotGenerator
                var tagc = ""
                if interfaces then tagc = "X"
                res.add "new {tagc}{classes.last}<Root>()"
-               for c in classes.skip_tail(1) do
+               for c in classes.iterator.skip_tail(1) do
                        res.add "new {tagc}{c}<Root>()"
                end
        end
@@ -55,7 +68,7 @@ class TypeTestDepthNotGenerator
                var tagc = ""
                if interfaces then tagc = "X"
                res.add "new {tagc}{classes.last}[Root]()"
-               for c in classes.skip_tail(1) do
+               for c in classes.iterator.skip_tail(1) do
                        res.add "new {tagc}{c}[Root]()"
                end
        end
@@ -68,7 +81,7 @@ class TypeTestDepthNotGenerator
        redef fun initcpp(res)
        do
                res.add "new {classes.last}<Root>()"
-               for c in classes.skip_tail(1) do
+               for c in classes.iterator.skip_tail(1) do
                        res.add "new {c}<Root>()"
                end
        end
@@ -81,9 +94,9 @@ class TypeTestDepthNotGenerator
 
        redef fun inite(res, se)
        do
-               res.add "create \{{classes.last}[ROOT]\} a"
-               for c in classes.skip_tail(1) do
-                       res.add "create \{{c}[ROOT]\} a"
+               res.add "create \{{classes.last}[ROOT]\}"
+               for c in classes.iterator.skip_tail(1) do
+                       res.add "create \{{c}[ROOT]\}"
                end
        end
 
@@ -95,7 +108,19 @@ class TypeTestDepthNotGenerator
 
        redef fun locale(se)
        do
-               write "\t\t\tto: {classes.last}[ROOT]"
+               write "\t\t\tto: detachable {classes.last}[ROOT]"
+       end
+
+       redef fun initpython(res)
+       do
+               res.add "{classes.last}()"
+               for c in classes.iterator.skip_tail(1) do
+                       res.add "{c}()"
+               end
+       end
+       redef fun testpython
+       do
+               return "not isinstance(a, {classes.last})"
        end
 end
 
@@ -1,4 +1,17 @@
 #!/usr/bin/env nit
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
 
 import bench_base
 
@@ -8,15 +21,16 @@ class TypeTestFtsNestingGenerator
        fun clanit(i: Int): String
        do
                var s = new FlatBuffer
-               s.append("{classes.first}[" * i)
+               s.append("{classes[i]}[")
+               s.append("{classes.first}[" * (dept-1))
                s.append("Root")
-               s.append("]" * i)
+               s.append("]" * dept)
                return s.to_s
        end
 
        redef fun initnit(res)
        do
-               for i in [1..dept] do
+               for i in [0..dept[ do
                        res.add "new {clanit(i)}"
                end
 
@@ -30,32 +44,18 @@ class TypeTestFtsNestingGenerator
        fun clajava(i: Int): String
        do
                var s = new FlatBuffer
-               s.append("{classes.first}<" * i)
+               s.append("{classes[i]}<")
+               s.append("{classes.first}<" * (dept-1))
                s.append("Root")
-               s.append(">" * i)
+               s.append(">" * dept)
                return s.to_s
        end
 
-       redef fun initjava(res, interfaces)
-       do
-
-               var tagc = ""
-               if interfaces then tagc = "X"
-               for i in [1..dept] do
-                       res.add "new {tagc}{clajava(i)}()"
-               end
-       end
-
-       redef fun testjava(interfaces)
-       do
-               return "a instanceof {classes.first}<?>"
-       end
-
        redef fun initcsharp(res, interfaces)
        do
                var tagc = ""
                if interfaces then tagc = "X"
-               for i in [1..dept] do
+               for i in [0..dept[ do
                        res.add "new {tagc}{clajava(i)}()"
                end
        end
@@ -65,32 +65,19 @@ class TypeTestFtsNestingGenerator
                return "a is {clajava(middle)}"
        end
 
-       redef fun initscala(res, interfaces)
-       do
-               var tagc = ""
-               if interfaces then tagc = "X"
-               for i in [1..dept] do
-                       res.add "new {tagc}{clanit(i)}()"
-               end
-       end
-
-       redef fun testscala(interfaces)
-       do
-               return "a.isInstanceOf[{clanit(middle)}]"
-       end
-
        fun clacpp(i: Int): String
        do
                var s = new FlatBuffer
-               s.append("{classes.first}<" * i)
+               s.append("{classes[i]}<")
+               s.append("{classes.first}<" * (dept-1))
                s.append("Root")
-               s.append("*>" * i)
+               s.append("*>" * dept)
                return s.to_s
        end
 
        redef fun initcpp(res)
        do
-               for i in [1..dept] do
+               for i in [0..dept[ do
                        res.add "new {clacpp(i)}()"
                end
        end
@@ -104,16 +91,17 @@ class TypeTestFtsNestingGenerator
        fun clae(i: Int): String
        do
                var s = new FlatBuffer
-               s.append("{classes.first}[" * i)
+               s.append("{classes[i]}[")
+               s.append("{classes.first}[" * (dept-1))
                s.append("ROOT")
-               s.append("]" * i)
+               s.append("]" * dept)
                return s.to_s
        end
 
        redef fun inite(res, se)
        do
-               for i in [1..dept] do
-                       res.add "create \{{clae(i)}\} a"
+               for i in [0..dept[ do
+                       res.add "create \{{clae(i)}\}"
                end
        end
 
@@ -125,7 +113,7 @@ class TypeTestFtsNestingGenerator
 
        redef fun locale(se)
        do
-               write "\t\t\tto: {clae(middle)}"
+               write "\t\t\tto: detachable {clae(middle)}"
        end
 end
 
index 2db91b2..09c7d07 100644 (file)
@@ -19,6 +19,7 @@ var n = args[1].to_i
 
 var str = file.to_path.read_all
 var parser = new MarkdownProcessor
+parser.no_location = true
 for i in [1..n] do
        print parser.process(str)
 end
index 7041b04..be1543b 100644 (file)
@@ -2,13 +2,22 @@ all: server
 
 pre-build: src/benitlux_serial.nit
 
-server:
+bin/benitlux_daily: $(shell ../../bin/nitls -M src/benitlux_daily.nit)
        mkdir -p bin/
-       ../../bin/nitc --dir bin/ src/benitlux_daily.nit src/benitlux_web.nit
+       ../../bin/nitc -o $@ src/benitlux_daily.nit
+
+bin/benitlux_web: $(shell ../../bin/nitls -M src/benitlux_web.nit)
+       mkdir -p bin/
+       ../../bin/nitc -o $@ src/benitlux_web.nit
+
+server: bin/benitlux_daily bin/benitlux_web
 
 src/benitlux_serial.nit:
        ../../bin/nitserial -o $@ src/benitlux_web.nit
 
+# ---
+# Report
+
 bin/report: $(shell ../../bin/nitls -M src/report.nit)
        ../../bin/nitc -o bin/report src/report.nit
 
index f124315..806b42e 100644 (file)
@@ -96,7 +96,7 @@ class BenitluxRESTAction
                if not words.is_empty and words.first.is_empty then words.shift
 
                if words.length >= 2 and words[0] == "since" then
-                       var since = words[1]
+                       var since = words[1].std_date
 
                        var db = new DB.open(db_path)
                        var events = db.beer_events_since(since.to_sql_string)
@@ -123,3 +123,21 @@ class BenitluxRESTAction
                return response
        end
 end
+
+redef class Text
+       # Rewrite the date represented by `self` in the format expected by SQLite
+       private fun std_date: String
+       do
+               var parts = self.split("-")
+               if parts.length != 3 then return "1970-01-01"
+
+               var y = parts[0].to_s
+               var m = parts[1].to_s
+               var d = parts[2].to_s
+
+               m = "0"*(2 - m.length) + m
+               d = "0"*(2 - d.length) + d
+
+               return "{y}-{m}-{d}"
+       end
+end
index f9e8400..27b8169 100644 (file)
@@ -175,7 +175,8 @@ class Benitlux
                for line in lines do
                        var parts = line.split("- ")
                        if parts.length >= 2 then
-                               beers.add new Beer(parts[0].trim, parts[1].trim)
+                               # Let the DB set the id, use 0 temporary
+                               beers.add new Beer(0, parts[0].trim, parts[1].trim)
                        end
                end
                return beers
index 36906c8..14cf229 100644 (file)
@@ -95,23 +95,23 @@ class DB
                var events = new BeerEvents
 
                # New
-               var stmt = select("name, desc FROM beers WHERE " +
-                                 "ROWID IN (SELECT beer FROM daily WHERE date(day) = date('now')) AND " +
+               var stmt = select("ROWID, name, desc FROM beers WHERE " +
+                                 "ROWID IN (SELECT beer FROM daily WHERE day=(SELECT MAX(day) FROM daily)) AND " +
                                  "NOT ROWID IN (SELECT beer FROM daily WHERE date(day) = date({prev_day}))")
                if stmt == null then return null
                for row in stmt do events.new_beers.add row.to_beer
 
                # Gone
-               stmt = select("name, desc FROM beers WHERE " +
-                                 "NOT ROWID IN (SELECT beer FROM daily WHERE date(day) = date('now')) AND " +
-                                 "ROWID IN (SELECT beer FROM daily WHERE date(day) = date({prev_day}))")
+               stmt = select("ROWID, name, desc FROM beers WHERE " +
+                             "NOT ROWID IN (SELECT beer FROM daily WHERE day=(SELECT MAX(day) FROM daily)) AND " +
+                             "ROWID IN (SELECT beer FROM daily WHERE date(day) = date({prev_day}))")
                if stmt == null then return null
                for row in stmt do events.gone_beers.add row.to_beer
 
                # Fix
-               stmt = select("name, desc FROM beers WHERE " +
-                                 "ROWID IN (SELECT beer FROM daily WHERE date(day) = date('now')) AND " +
-                                 "ROWID IN (SELECT beer FROM daily WHERE date(day) = date({prev_day}))")
+               stmt = select("ROWID, name, desc FROM beers WHERE " +
+                             "ROWID IN (SELECT beer FROM daily WHERE day=(SELECT MAX(day) FROM daily)) AND " +
+                             "ROWID IN (SELECT beer FROM daily WHERE date(day) = date({prev_day}))")
                if stmt == null then return null
                for row in stmt do events.fix_beers.add row.to_beer
 
@@ -123,11 +123,20 @@ class DB
        # Return `null` on error.
        fun beers: nullable Array[Beer]
        do
-               var stmt = select("name, desc FROM beers")
+               var stmt = select("rowid, name, desc FROM beers")
                if stmt == null then return null
                return [for row in stmt do row.to_beer]
        end
 
+       # Load beer information from its database id
+       fun beer_from_id(id: Int): nullable Beer
+       do
+               var stmt = select("ROWID, name, desc FROM beers WHERE ROWID = {id}")
+               if stmt == null then return null
+               for row in stmt do return row.to_beer
+               return null
+       end
+
        # Days where `beer` was available, all known days if `beer == null`
        #
        # Return `null` on error.
@@ -172,5 +181,5 @@ end
 
 redef class StatementRow
        # Convert this BD row to a `Beer`
-       fun to_beer: Beer do return new Beer(self[0].to_s, self[1].to_s)
+       fun to_beer: Beer do return new Beer(self[0].to_i, self[1].to_s, self[2].to_s)
 end
index 4649a5c..a186212 100644 (file)
@@ -23,6 +23,9 @@ import serialization
 class Beer
        auto_serializable
 
+       # Database id
+       var id: Int
+
        # Name of the beer
        var name: String
 
index 90e7d24..9739241 100644 (file)
@@ -21,10 +21,8 @@ import benitlux_model
 import benitlux_view
 import benitlux_controller
 
-# Avoid executing when running tests
-if "NIT_TESTING".environ == "true" then exit 0
-
-var iface = "localhost:8080"
+# Listening interface
+fun iface: String do return "localhost:8080"
 
 var vh = new VirtualHost(iface)
 vh.routes.add new Route("/rest/", new BenitluxRESTAction)
index 3c2384c..b840e3d 100644 (file)
@@ -68,7 +68,7 @@ redef class DB
                # Merge days of `corrections` to `beer`
                for from, to in corrections do
                        if to == beer.name then
-                               var missing_days = super(new Beer(from, ""))
+                               var missing_days = super(new Beer(0, from, ""))
                                if missing_days != null then days.add_all missing_days
                        end
                end
index f7ce401..0dc6526 100644 (file)
@@ -19,6 +19,11 @@ bitmap.nit: ../../bin/jwrapper
        ../../bin/jwrapper -vv -u comment -o $@ -r "^(android.graphics.Bitmap|java.nio.Buffer|java.nio.ByteBuffer).class$$" \
        -i ../../../../lib/android/assets_and_resources.nit $(ANDROID_JAR) -i ../../../../lib/java/collections.nit
 
+# Base wrappers to implement the lib/android/wifi.nit module
+wifi.nit: ../../bin/jwrapper
+       ../../bin/jwrapper -vv -u comment -o $@ -r "^(android.net.wifi)" \
+       -i ../../../../lib/android/assets_and_resources.nit $(ANDROID_JAR) -i ../../../../lib/java/collections.nit
+
 check: android_api.nit
        ../../../../bin/nitpick android_api.nit
 
index c3208ae..18d52cc 100644 (file)
@@ -7,7 +7,7 @@ Lexer
 id = ('a'..'z')('a'..'z'|'0'..'9'|'_')*;
 
 // A printable character (inside strings)
-ch = ' ' .. '~';
+ch = ' ' ...;
 
 // Literal strings
 str = '\'' (ch-'\\'-'\''|'\\'ch)* '\'';
@@ -21,7 +21,7 @@ ch_hex = '#' ('x'|'X') ('0'..'9'|'a'..'z'|'A'..'Z')+ ;
 // A single-line comment
 comment = '//' ch* '\n'?;
 
-any = '\t'..'~';
+any = '\t' ...;
 not_star = any - '*';
 not_star_not_slash = not_star - '/';
 
@@ -67,6 +67,7 @@ re3 {-> re} =
        {id:} id |
        {par:} '(' re ')' |
        {class:} text '.' '.' text |
+       {openclass:} text '.' '.' '.' |
        {any:} 'Any' |
        {end:} 'End' |
        {text:} text ;
index c15238b..bf3d57b 100644 (file)
@@ -141,6 +141,7 @@ p_re3.new_alt("re_shortest", t_shortest, t_opar, p_re, t_cpar)
 p_re3.new_alt("re_longest", t_longest, t_opar, p_re, t_cpar)
 p_re3.new_alt("re_par", t_opar, p_re, t_cpar)
 p_re3.new_alt("re_class", p_text, t_dot, t_dot, p_text)
+p_re3.new_alt("re_openclass", p_text, t_dot, t_dot, t_dot)
 p_re3.new_alt("re_any", t_any)
 p_re3.new_alt("re_end", t_end)
 p_re3.new_alt("re_id", t_id)
index 886eaea..d523e51 100644 (file)
@@ -223,7 +223,7 @@ redef class Nre_class
                var c1 = children[0].children[0].value
                var c2 = children[3].children[0].value
                if c1.length != 1 or c2.length != 1 then
-                       print "Classes only works on single char"
+                       print "Classes expect a single char"
                        exit(1)
                        abort
                end
@@ -232,6 +232,20 @@ redef class Nre_class
        end
 end
 
+redef class Nre_openclass
+       redef fun make_rfa: Automaton
+       do
+               var c1 = children[0].children[0].value
+               if c1.length != 1 then
+                       print "Classes expect a single char"
+                       exit(1)
+                       abort
+               end
+               var a = new Automaton.cla(c1.chars.first.code_point, null)
+               return a
+       end
+end
+
 redef class Nre_any
        redef fun make_rfa: Automaton
        do
index 5b248a6..4abc863 100644 (file)
@@ -6,10 +6,11 @@ a = 'a' Any;
 b = 'b' (Any - 'b');
 c = 'c' (#0..'c');
 d = 'd' (Any-(#0..'c'));
+e = 'e' 'e'...;
 
 blank = #10 | #13 | #32;
 Parser
 Ignored blank;
 
 p = t+;
-t = a | b | c | d;
+t = a | b | c | d | e;
index 6cc0cff..1250e0c 100644 (file)
@@ -9,4 +9,6 @@ Start
         c@(3:1-3:3)='cc'
       t_3
         d@(4:1-4:3)='dd'
-  Eof@(5:1-5:1)=''
+      t_4
+        e@(5:1-5:3)='ee'
+  Eof@(6:1-6:1)=''
diff --git a/contrib/opportunity/art/opportunity.svg b/contrib/opportunity/art/opportunity.svg
new file mode 100644 (file)
index 0000000..2614e5f
--- /dev/null
@@ -0,0 +1,394 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="551.25458"
+   height="144.40077"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="branding.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2447" />
+    <inkscape:perspective
+       id="perspective10"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <mask
+       maskUnits="userSpaceOnUse"
+       id="mask5218">
+      <rect
+         y="-223.63782"
+         x="322.85712"
+         height="130.71428"
+         width="551.42859"
+         id="rect5220"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+    </mask>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath3046">
+      <rect
+         y="-243.63782"
+         x="322.85712"
+         height="130.71428"
+         width="551.42859"
+         id="rect3048"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+    </clipPath>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.979899"
+     inkscape:cx="421.66165"
+     inkscape:cy="113.92844"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="2560"
+     inkscape:window-height="1334"
+     inkscape:window-x="0"
+     inkscape:window-y="50"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <sodipodi:guide
+       orientation="1,0"
+       position="551.9794,-161.80389"
+       id="guide5283" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(296.41081,186.21327)">
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g4456"
+       id="use4854"
+       transform="translate(-620,-7)"
+       width="744.09448"
+       height="1052.3622" />
+    <g
+       id="g5073"
+       style="fill:#ffffff"
+       transform="translate(-12,0)">
+      <path
+         style="font-size:92.23697662px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold"
+         d="m -240.53125,-151.625 c -31.17393,-0.16094 -54.6882,39.09106 -38.75,66.3125 13.31091,26.189187 53.33293,33.260451 73.86956,11.665788 2.42321,-0.04728 0.40188,9.703147 1.08332,13.584153 0.0483,6.066694 0.27245,12.132352 0.64087,18.187559 6.25024,-4.414806 14.13822,-3.09962 21.21875,-2.96875 6.18185,-0.992039 11.05789,-6.523553 11.375,-12.65625 3.60915,-5.573943 11.07882,-1.655426 15.8125,-5.125 3.71618,-1.451691 7.69969,-2.034662 11.65625,-2.4375 0.26415,7.750433 0.33833,15.507846 0.8125,23.25 6.36653,-4.546591 14.51737,-2.876458 21.6875,-3.15625 6.37741,-1.130291 10.4126,-7.110394 11.40625,-12.96875 4.46093,-5.168438 12.220205,-1.49681 17.40625,-5.46875 5.813582,-2.501521 10.712897,-6.607721 15.125,-11.09375 14.105093,16.788986 40.999245,17.108676 57.557509,4.027239 3.831049,-2.503113 -2.312237,5.926512 -2.807509,8.504011 -0.865461,2.090782 -1.580337,5.291487 1.125,2.46875 7.70317,-4.219977 17.1299323,-2.356745 25.46875,-2.59375 2.7737217,0.520566 3.0512994,6.101454 5.78125,2.84375 6.406112,-4.505716 14.445047,-2.208244 21.53125,-3.21875 5.029602,-0.87062 9.29914,-7.294157 14.5625,-3.625 7.857929,6.922579 19.175847,4.824183 28.770789,4.460903 5.81508,-0.505238 11.664099,-0.563569 17.479211,-0.0234 -2.769439,3.167198 -2.869978,2.934423 0.5,1.78125 2.535498,-1.113378 5.850243,1.839236 7.46875,0.71875 3.70599,-5.560834 11.10822,-1.212765 16,-4.46875 3.2998,-0.667826 16.04175,-8.921384 10.08381,-2.172038 -1.6425,2.321428 -4.00924,4.777765 -3.74006,7.859538 8.48947,-7.820444 20.49549,-2.245159 30.40625,-3.6875 5.31608,-1.15959 12.1717,-1.301855 15.5,3.71875 8.0906,-7.465362 20.00937,-1.958314 29.3125,-5.6875 4.91141,1.484914 1.15816,7.424186 -0.34375,10.25 -1.3918,2.665311 -2.85851,6.017053 -3.875,8.375 11.70165,-0.103996 23.48042,-0.02059 35.21875,-0.03125 12.73438,-29.30705 25.47035,-58.614833 38.03125,-88.000003 -12.65219,0.36805 -25.92166,-1.84932 -38.1875,1.28125 -5.63844,3.11395 -10.55282,-4.21803 -16.40625,-1.5625 -3.14042,-0.64067 -11.52918,3.20995 -11.09274,-0.97006 2.59643,-10.59051 -9.75995,-20.46522 -19.62601,-15.99869 -9.39239,2.68588 -18.92536,-1.86422 -28.21875,0.0312 -5.44491,0.73841 -9.43565,5.47339 -9.0625,10.96875 -0.5283,3.00346 -1.52826,5.88478 -2.75,8.6875 -13.88385,-7.9258 -29.93893,-0.26086 -44.875,-2.78125 1.30742,-0.43749 5.02333,-5.33893 1.90625,-2.9375 -3.148419,2.38886 -7.594215,0.0186 -9.65625,-2.0625 -1.109095,5.88301 -8.458424,4.98027 -12.875,5.5 -3.613587,2.29409 -8.101139,-0.2098 -10.4375,-3.21875 -6.445354,4.04739 -15.102332,4.2173 -21.96875,1.25 -4.84591,-2.83233 -2.447826,-10.00433 -7.5625,-12.875 -5.979733,-5.19712 -14.900936,-3.75157 -21.8125,-1.53125 -4.7141411,1.71558 -7.6286358,6.62832 -7,11.4375 -3.1331657,7.18006 -11.7892059,3.92097 -17.75,4.40625 -5.212552,0.13734 -10.673387,2.05407 -13.75,6.46875 -15.819769,-11.90923 -41.494263,-9.82692 -52.625,7.28125 -8.536052,-13.61903 -26.92664,-17.99121 -41.65625,-12.90625 -6.74282,-0.33213 -14.32471,-2.10654 -20.6875,-0.34375 -1.07137,4.54952 -7.12225,6.78574 -10.21875,2.71875 -9.35853,-6.72321 -21.46744,-3.60803 -31.875,-2.8125 -6.45286,-0.40392 -13.71609,0.38867 -19.28125,-2.96875 -5.68489,1.41581 -7.62271,-6.21986 -12.40625,-7.875 -8.07221,-5.38345 -17.79652,-8.18618 -27.5,-7.8125 z"
+         id="path4996"
+         inkscape:connector-curvature="0" />
+    </g>
+    <path
+       style="fill:#000000"
+       d="m 951.29332,8.5943966 c -1.3243,0.0377 -2.2515,0.5952 -3.4375,1.7812504 -0.6386,0.63852 -1.509,1.2113 -2.125,1.40625 -0.9037,0.28593 -1.1373,0.50815 -1.7188,1.65625 -0.3715,0.73344 -0.6875,1.65145 -0.6875,2.03125 0,0.52067 -0.193,0.83161 -0.8437,1.25 -0.6486,0.41702 -0.9756,0.87095 -1.25,1.78125 -0.2008,0.66619 -0.3438,1.43082 -0.3438,1.71875 0,0.28793 -0.3447,0.83048 -0.75,1.21875 -0.6513,0.62401 -0.7187,0.87751 -0.7187,2.125 0,1.38833 -0.04,1.4215 -1.1875,2.34375 -1.6569,1.33144 -1.7798,1.56253 -1.625,2.5625 0.1182,0.7642 0.048,0.90647 -0.5,1.15625 -0.7365,0.33557 -0.7817,0.54534 -0.25,1.9375 0.2334,0.6111 0.3288,1.24269 0.2187,1.5 -0.3013,0.70425 -0.3328,2.33872 -0.062,2.84375 0.1846,0.34485 0.1399,0.67329 -0.1875,1.28125 -0.3907,0.72561 -0.4133,0.85845 -0.094,1.25 0.3065,0.37558 0.3575,2.19419 0.3438,12 -0.017,12.12864 -0.2235,16.57086 -1.0313,20.625 -0.2691,1.35089 -0.7376,4.38595 -1.0312,6.75 -0.2937,2.36405 -0.8023,5.74385 -1.125,7.5 -0.7802,4.24525 -1.1864,7.42073 -1,7.90625 0.083,0.21749 -0.1797,1.26981 -0.5938,2.34375 -0.7017,1.8195 -0.7492,2.08417 -0.5937,4 l 0.1875,2.062503 0.9687,0.65625 c 1.2049,0.79727 2.3153,1.13061 2.5313,0.78125 0.086,-0.13892 0.5436,-0.4031 1,-0.59375 0.4563,-0.19067 0.8125,-0.49143 0.8125,-0.6875 0,-0.19608 0.2298,-0.48041 0.5,-0.625 0.6463,-0.34602 0.6501,-1.236243 0,-1.406253 -0.6665,-0.17429 -1.2313,-1.2849 -1.2188,-2.4375 0.011,-0.99158 0.9316,-3.15625 1.3438,-3.15625 0.135,0 0.3196,0.5433 0.4062,1.21875 0.087,0.67544 0.3168,2.39407 0.5313,3.8125 0.2143,1.418433 0.914,6.574313 1.5312,11.437503 1.4292,11.26188 1.6033,15.4022 1.5625,37.03125 -0.017,9.16331 0.07,16.75997 0.1875,16.875 0.1173,0.11502 1.4104,0.47589 2.875,0.8125 1.4646,0.33662 2.7167,0.6854 2.7813,0.75 0.065,0.0646 -0.069,1.11483 -0.2813,2.34375 -0.5668,3.28425 -0.5205,3.77775 0.375,4.53125 0.6861,0.57736 0.9408,0.65625 2.875,0.65625 1.6903,-7.3e-4 2.3041,-0.11384 2.9375,-0.5 0.439,-0.26769 0.8005,-0.64165 0.8125,-0.8125 0.012,-0.17085 0.061,-1.85876 0.094,-3.75 0.046,-2.65879 0.1532,-3.67663 0.5,-4.53125 0.3879,-0.95586 0.4653,-2.08176 0.5625,-8.25 0.071,-4.50815 0.023,-8.06344 -0.1562,-9.6875 -0.3429,-3.11596 -0.995,-21.76631 -1,-28.65625 0,-3.44155 0.096,-5.75964 0.375,-7.5 0.4771,-2.98057 0.5484,-8.20654 0.125,-10.687503 -0.2054,-1.20335 -0.2303,-1.88782 -0.062,-2.1875 0.2857,-0.51054 0.2053,-0.76098 1.0312,3.468753 0.29,1.48526 0.8501,3.60608 1.25,4.6875 1.4603,3.94889 2.4263,7.08753 2.7813,9.15625 0.7076,4.12433 2.6587,20.49972 3.2187,27.0625 0.349,4.08968 1.1456,9.83294 2.375,17.03125 1.2139,7.10797 1.3372,7.59843 1.875,7.84375 0.4229,0.19288 1.4369,0.15878 3.9063,-0.15625 3.7695,-0.48091 3.805,-0.45571 4.125,1.25 0.1788,0.95308 0.4184,1.15185 1.0937,0.9375 0.3632,-0.11526 0.5,-0.37387 0.5,-1 0,-0.4637 0.083,-0.84375 0.2188,-0.84375 0.3047,0 2.2804,2.63378 3.25,4.34375 0.9404,1.65862 1.0904,1.77492 3.0625,2.1875 3.061,0.64047 5.2709,0.35442 6.1875,-0.75 0.51,-0.61458 -0.1989,-1.60508 -3.7188,-5.125 -3.5304,-3.53043 -3.5877,-3.6508 -3.5937,-6.40625 0,-1.83767 -1.3921,-6.74876 -2.2188,-7.90625 -0.7358,-1.03026 -1.0017,-2.36936 -1.8437,-8.75 -0.8278,-6.27258 -1.8511,-11.28416 -2.9375,-14.4375 -0.3491,-1.01317 -0.9756,-3.71693 -1.375,-6 -0.3994,-2.28308 -0.9242,-4.94634 -1.1875,-5.90625 -0.4489,-1.63605 -0.6002,-3.34709 -1.125,-13.15625 -0.069,-1.28334 -0.1962,-3.40164 -0.2813,-4.718753 -0.1476,-2.2828 -0.037,-2.72458 0.5313,-2.15625 0.2786,0.27868 3.2624,-0.39255 3.75,-0.84375 0.1778,-0.16461 0.5288,-1.25121 0.7812,-2.40625 0.4225,-1.93334 0.438,-2.19715 0.094,-3.40625 -0.3053,-1.0723 -0.3856,-3.37592 -0.4375,-12.5 -0.068,-11.96753 0.013,-10.57551 -1.875,-27.5 -0.2638,-2.36405 -0.6088,-5.85876 -0.75,-7.75 -0.3588,-4.80707 -0.6147,-6.69151 -1.0625,-7.375 -0.2125,-0.32433 -0.4062,-0.79652 -0.4062,-1.03125 0,-0.23473 -0.3323,-0.75649 -0.75,-1.1875 -0.639,-0.65928 -0.7258,-0.85947 -0.5,-1.28125 0.3748,-0.70043 0.3906,-0.70636 -0.5938,-1.03125 -0.8327,-0.27484 -0.8657,-0.34156 -0.7187,-1.125 0.1949,-1.0391 -0.158,-1.67489 -1.0938,-2.0625 -0.9342,-0.38695 -1.0944,-0.84224 -0.625,-1.75 0.3168,-0.61269 0.3307,-0.84663 0.062,-1.40625 -0.1754,-0.36592 -0.5433,-0.70004 -0.8125,-0.75 -0.8137,-0.15106 -1.1142,-0.5259 -0.8437,-1.03125 0.3519,-0.65763 0.2814,-1.53131 -0.1563,-2.15625 -0.2189,-0.31266 -0.3066,-0.75428 -0.2187,-1.03125 0.106,-0.33408 -0.025,-0.64894 -0.4375,-1.03125 -0.536,-0.49669 -1.0189,-1.8425 -1.5,-4.15625 -0.082,-0.39306 -0.6177,-1.04097 -1.3125,-1.59375 -0.6413,-0.51017 -1.8549,-1.56185 -2.6875,-2.34375 -0.9854,-0.9253 -1.7059,-1.4375004 -2.0938,-1.4375004 -0.3278,0 -1.4749,-0.19858 -2.5312,-0.46875 -1.2228,-0.31272 -2.1742,-0.49139 -2.9688,-0.46875 z m 15.1562,53.7812504 c 0.1236,0.0421 0.2477,1.44124 0.3125,4.15625 0.062,2.61857 0.2184,3.81355 0.7188,5.65625 0.3484,1.28334 0.701,2.91326 0.7812,3.65625 0.08,0.74299 0.2611,1.98644 0.4063,2.75 0.2785,1.4642 0.1843,2.45396 -0.1563,1.5625 -0.1032,-0.27018 -0.3483,-0.85638 -0.5312,-1.3125 -0.183,-0.45613 -0.6575,-2.42741 -1.0625,-4.375 -0.6733,-3.23742 -0.7382,-3.92442 -0.7188,-8.125 0.012,-2.6887 0.1264,-4.0109 0.25,-3.96875 z m 4.125,28.71875 c 0.023,-0.0133 0.036,-0.004 0.062,0 0.071,0.01 0.1437,0.0812 0.25,0.1875 0.2868,0.28678 0.3341,2.81062 0.062,3.25 -0.08,0.12892 -0.3172,0.25 -0.5312,0.25 -0.3344,0 -0.3598,-0.26395 -0.2188,-1.78125 0.118,-1.26936 0.2138,-1.8129 0.375,-1.90625 z"
+       id="path4337"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#000000"
+       d="m 999.84432,8.9068966 c 2.08938,0.10305 3.90998,1.6513204 5.31248,4.5937504 1.0586,2.22076 1.8462,4.89781 2.8438,9.625 0.7843,3.7168 2.2137,8.4394 2.875,9.46875 0.3405,0.53001 0.4706,0.55838 1.7812,0.40625 1.274,-0.14786 1.5788,-0.10212 2.875,0.5625 2.0434,1.04768 6.244,4.52321 8.625,7.125 1.1125,1.21564 3.1209,3.09498 4.4688,4.1875 l 2.4687,2 0.2813,-1.03125 c 0.151,-0.57383 0.5209,-2.008 0.8437,-3.15625 0.3227,-1.14825 0.6987,-2.84984 0.8437,-3.78125 0.145,-0.93142 0.398,-1.87598 0.5313,-2.125 0.2649,-0.49518 0.1957,-0.49016 3.9063,-1.21875 1.4184,-0.27853 4.2811,-0.93799 6.375,-1.46875 3.806,-0.96472 3.8141,-0.95328 4.875,-2.125 1.6282,-1.79846 1.8757,-2.51486 1.5,-4.46875 -0.1763,-0.91583 -0.5699,-1.90734 -0.875,-2.28125 -0.8842,-1.08407 -1.4216,-5.23034 -0.7188,-5.5 0.2456,-0.0943 0.3941,-0.77653 0.5,-2.28125 0.3035,-4.30265 0.3642,-4.70217 1.0938,-5.53125 0.3798,-0.43162 1.6703,-1.25262 2.8437,-1.84375 1.8518,-0.9330404 2.1904,-1.0532504 2.7187,-0.8125004 0.3499,0.1594 1.0251,0.2159 1.5938,0.125 0.8275,-0.13233 1.2778,-0.009 2.625,0.6875004 1.3358,0.69065 1.8523,1.15187 3.0938,2.78125 1.4883,1.9537 1.5116,1.99466 1.4687,3.53125 -0.024,0.84999 -0.1877,2.1545 -0.3437,2.90625 -0.205,0.98882 -0.1944,1.43077 0,1.625 0.3993,0.39933 0.3105,1.1969 -0.2813,3 -0.3168,0.96492 -0.8035,1.88929 -1.2187,2.28125 -0.3832,0.36166 -0.6876,0.77073 -0.6876,0.90625 0,0.13553 -0.2953,0.82353 -0.625,1.53125 -0.3294,0.70772 -0.6162,1.87091 -0.6562,2.5625 -0.088,1.48959 -0.6446,2.10339 -3.6875,4 l -1.9063,1.1875 -1.1874,-1 c -1.5429,-1.29182 -3.179,-3.07036 -3.5313,-3.84375 -0.6099,-1.33861 -1.143,-0.27334 -1.3437,2.6875 -0.1785,2.63296 0.4792,5.24809 2.125,8.28125 1.8149,3.34513 1.7629,3.3467 2.5312,0.3125 l 0.6562,-2.59375 -0.5624,-1 -0.5313,-0.96875 0.8125,-0.75 c 0.9972,-0.90225 1.3686,-0.82337 2.3125,0.34375 l 0.7187,0.90625 -0.5,0.84375 c -0.5114,0.82746 -0.5242,0.87397 -0.125,1.90625 0.5881,1.52076 0.7065,1.57443 1.3126,0.59375 0.5684,-0.9196 0.874,-1.07666 1.0624,-0.5625 0.5173,1.41081 2.125,-4.6998 2.125,-8.0625 0,-0.26666 0.2011,-0.13005 0.5626,0.40625 0.7324,1.08677 4.2297,2.91811 9.1874,4.8125 2.8712,1.09707 3.8005,1.56613 4,2 0.1428,0.31031 0.25,1.43417 0.25,2.5 0,1.06583 0.2644,4.39201 0.5938,7.40625 0.3294,3.01425 0.7875,7.58956 1,10.15625 0.2126,2.56669 0.51,5.94648 0.6562,7.5 0.3901,4.1477 -0.01,24.55063 -0.5,25.65625 -0.595,1.3361 -1,3.19838 -1,4.59375 0,1.838023 -1.0354,5.257583 -1.7812,5.906253 -0.2729,0.23746 -1.262,0.65639 -2.1875,0.9375 -1.5608,0.47404 -1.6716,0.59233 -1.7813,1.3125 -1.5868,10.41959 -1.925,14.55583 -2.125,27.53125 -0.201,13.0535 -0.5228,17.03623 -1.8124,22 -0.3334,1.28334 -0.7259,3.54528 -0.875,5.03125 -0.3147,3.13315 -1.1559,7.90522 -1.5,8.53125 -0.1768,0.32156 -0.081,0.65423 0.375,1.34375 0.3363,0.5082 0.6952,1.29089 0.7812,1.71875 0.1469,0.73405 0.113,0.78733 -0.6875,0.9375 -1.2432,0.23326 -7.5871,0.25164 -8.375,0.0312 -0.5436,-0.15201 -0.6563,-0.31707 -0.6563,-0.90625 0,-0.61971 -0.099,-0.75 -0.625,-0.75 -0.3421,0 -1.0003,-0.14803 -1.4687,-0.34375 l -0.875,-0.34375 0,-3.90625 c 0,-4.64494 0.4773,-7.20536 1.9063,-10.5 l 0.9687,-2.21875 0.1563,-4.59375 c 0.091,-2.52508 0.3143,-5.33608 0.5,-6.25 0.1856,-0.91391 0.41,-3.00394 0.5,-4.625 0.09,-1.62107 0.2997,-3.75403 0.4374,-4.75 0.187,-1.35312 0.1674,-2.12152 -0.062,-3.0625 -0.1703,-0.69504 -0.3338,-2.87814 -0.3438,-4.84375 -0.01,-1.95879 -0.1389,-4.5342 -0.3125,-5.75 -0.6225,-4.36108 -0.8518,-6.18299 -1.0625,-8.84375 -0.2718,-3.43408 -0.7274,-6.85972 -0.9688,-7.25 -0.2905,-0.47013 -0.6609,-0.0906 -0.8124,0.84375 -0.076,0.46758 -0.6777,1.98182 -1.3438,3.375 -0.666,1.39318 -1.3574,3.13201 -1.5312,3.875 -0.174,0.74299 -0.5635,2.20191 -0.875,3.25 -0.5314,1.78739 -0.5681,2.21371 -0.4376,6.53125 0.1231,4.06686 0.089,4.91228 -0.375,7.28125 -0.3934,2.00734 -0.4613,2.87064 -0.2812,3.4375 1.1604,3.65371 1.2222,7.73013 0.1562,11.5625 -0.7262,2.61075 -0.7765,3.16817 -0.25,5.5 0.3614,1.59982 0.3739,1.89052 0.031,3.09375 l -0.375,1.34375 1.2187,4.34375 c 1.149,4.11937 1.2028,4.4818 1.0313,6.21875 -0.1,1.01316 -0.1305,2.8524 -0.094,4.09375 l 0.062,2.28125 -1.0624,0.28125 c -0.5854,0.16238 -1.5508,0.2753 -2.125,0.25 -0.9539,-0.042 -1.0313,0.0187 -1.0313,0.5625 0,0.68745 -0.3505,1.03903 -1.2187,1.21875 -0.3378,0.0699 -2.303,0.0912 -4.3438,0.0625 -3.0326,-0.0427 -3.8173,-0.1238 -4.3438,-0.46875 l -0.6556,-0.4062 0.5625,-1.0625 c 0.298,-0.57287 0.8279,-1.29036 1.1875,-1.59375 l 0.6562,-0.53125 -0.8124,-3.28125 c -0.9293,-3.75308 -0.9436,-4.4389 -1.3438,-29.53125 -0.1562,-9.80501 -0.3299,-14.5115 -0.5938,-16.4375 -0.5443,-3.97389 -0.9711,-14.32691 -0.7812,-19.46875 l 0.1875,-4.468753 -1,-0.15625 c -1.1698,-0.18706 -2.4688,-0.95978 -2.4687,-1.4375 0,-0.18763 0.1418,-0.80286 0.3437,-1.375 0.4976,-1.41025 0.253,-2.86611 -0.625,-3.6875 -0.4846,-0.45338 -0.7264,-0.9733 -0.8437,-1.84375 -0.2776,-2.06021 -1.1193,-5.09842 -1.6563,-6 -0.6039,-1.01381 -0.8853,-4.65599 -0.9063,-11.40625 l 0,-4.1875 -0.9374,0.90625 c -0.5122,0.50023 -1.1217,0.90625 -1.3438,0.90625 -0.2221,0 -1.4868,0.86302 -2.8125,1.90625 -3.194,2.51349 -4.0794,2.94784 -6.4687,3.15625 -1.1887,0.1037 -2.0762,0.32182 -2.25,0.53125 -0.2174,0.26197 -0.1674,1.93482 0.1874,7.03125 0.2675,3.84318 0.4798,9.06549 0.4688,12.3125 -0.017,4.85468 -0.1401,6.26319 -0.7188,10.062503 -0.4002,2.62762 -0.7294,6.03934 -0.8124,8.375 -0.1432,4.0405 -0.1906,4.27405 -1.1876,4.28125 -0.4611,0.003 -0.5451,0.18014 -0.6874,1.53125 -0.2767,2.62521 0.6065,7.11699 1.625,8.21875 0.5005,0.54143 0.4964,0.59832 0.1874,10.9375 -0.1706,5.71234 -0.3724,11.43541 -0.4374,12.71875 -0.1662,3.26161 -0.07,7.12534 0.1874,8 0.2951,1.0005 0.7465,6.88786 0.8126,10.75 0.053,3.09252 0.034,3.16511 -0.5626,3.65625 -0.8185,0.6736 -2.9686,1.67642 -4,1.84375 -1.0264,0.16658 -2.6026,-0.51633 -2.875,-1.25 -0.3495,-0.94116 -0.5241,-12.62917 -0.25,-16.40625 0.2594,-3.57356 0.252,-3.64477 -0.375,-5.53125 -0.3785,-1.13882 -0.7585,-3.1893 -0.9687,-5.09375 -0.1939,-1.75616 -0.5222,-4.47773 -0.7187,-6.03125 -0.1966,-1.55352 -0.4424,-3.87291 -0.5313,-5.15625 -0.089,-1.28334 -0.3688,-2.9492 -0.625,-3.6875 -0.2562,-0.73832 -0.4687,-1.9973 -0.4687,-2.8125 0,-0.81523 -0.1073,-1.98585 -0.25,-2.59375 -0.5479,-2.33456 -1.2188,-6.54762 -1.2188,-7.78125 0,-1.2539 -0.01,-1.3125 -0.68748,-1.3125 -0.6957,0 -0.7174,0.009 -0.875,1.875 -0.3207,3.79393 -0.1856,7.30983 0.3125,8.46875 0.2887,0.67141 0.5248,2.00497 0.625,3.53125 0.088,1.3442 0.311,3.54868 0.49998,4.90625 0.5748,4.12829 0.8506,6.94912 1.125,11.0625 0.5792,8.68281 0.6941,9.62542 1.0625,10.625 0.5061,1.37395 1.5443,6.5112 1.875,9.28125 0.145,1.2158 0.3445,2.76205 0.4687,3.4375 0.3688,2.00499 0.3185,2.50172 -0.4062,3.3125 -0.4741,0.53063 -0.9855,0.81205 -1.6875,0.90625 -1.4855,0.1992 -3.70128,-0.35556 -4.56248,-1.125 -0.8174,-0.73042 -0.6331,0.44595 -1.9062,-12.8125 -0.3938,-4.09981 -0.6568,-5.60805 -1.375,-8.09375 -0.4863,-1.68264 -1.9986,-7.3369 -3.3438,-12.5625 -1.3451,-5.2256 -2.6064,-9.97929 -2.8125,-10.5625 -0.3588,-1.01533 -0.3411,-1.09636 0.1563,-1.5 0.4891,-0.39694 0.5149,-0.56832 0.375,-3.0625 -0.2808,-4.99996 -0.6396,-7.42774 -1.125,-7.6875 -0.2613,-0.13988 -0.5211,-0.66026 -0.625,-1.28125 -0.097,-0.5759 -0.5922,-2.5513 -1.125,-4.375 -0.533,-1.8237 -1.3133,-5.066 -1.7188,-7.21875 -0.4053,-2.15275 -1.0546,-5.245273 -1.4375,-6.875003 -0.9541,-4.0616 -1.3379,-7.53337 -1.125,-10.28125 0.2441,-3.15391 1.2021,-8.22125 2.125,-11.375 0.4296,-1.46846 0.9483,-3.25666 1.1563,-3.96875 0.2083,-0.71209 0.2937,-1.36283 0.2187,-1.4375 -0.075,-0.0747 -0.6849,0.0674 -1.375,0.3125 -1.2457,0.44246 -1.2485,0.45328 -2.2813,-0.0937 -0.5719,-0.30299 -1.2588,-0.56299 -1.5,-0.5625 -0.5531,8.6e-4 -7.2987,-4.11863 -8.75,-5.34375 -1.0218,-0.86265 -3.0704,-3.60912 -2.9062,-3.03125 -1.5377,-4.23873 -2.1912,-2.3294 3.0938,-7.59375 1.4356,-1.33777 3.4013,-2.99907 4.3437,-3.71875 0.9423,-0.71968 2.3077,-2.08893 3.0313,-3.03125 1.8403,-2.39679 3.3024,-3.88309 5.3124,-5.40625 0.952,-0.72134 1.9597,-1.52751 2.25,-1.78125 1.2933,-1.12991 2.605,-9.30125 2.9063,-18 0.1358,-3.92523 0.2398,-4.79322 0.7813,-6.4375 0.9645,-2.93003 2.6879,-4.59375 4.7187,-4.59375 0.4023,0 1.2536,-0.26335 1.875,-0.5937504 1.0507,-0.55868 2.0502,-0.82809 3,-0.78125 z m 17.56248,38.2187504 c -0.5125,-8.4e-4 -0.8728,0.12548 -0.9688,0.375 -0.083,0.21579 0.1553,1.3372 0.5313,2.46875 1.0726,3.2283 0.8043,5.00393 -1.4375,8.9375 -0.3463,0.6079 -1.192,2.63118 -1.875,4.5 -0.683,1.86882 -1.3079,3.54277 -1.375,3.71875 -0.082,0.21411 0.3778,0.49642 1.4062,0.84375 2.9204,0.98624 3.6448,0.7065 7.1563,-2.75 2.6087,-2.56793 7.5625,-8.8441 7.5625,-9.59375 0,-0.15249 -1.3604,-1.31678 -3.0312,-2.5625 -1.6707,-1.24572 -3.9615,-3.08158 -5.0938,-4.09375 -1.6734,-1.49582 -2.2199,-1.84275 -2.875,-1.84375 z m -30.03118,3.53125 c -0.1159,0.003 -0.2438,0.0323 -0.3438,0.0937 -0.8967,0.55162 -8.9719,7.00606 -9.6562,7.71875 l -0.8126,0.84375 0.8126,1.1875 c 0.5207,0.7699 1.7109,1.86646 3.375,3.09375 1.8731,1.38146 2.7772,1.90775 3.3124,1.90625 0.4053,-0.001 1.6132,-0.43825 2.6876,-0.96875 1.0743,-0.5305 2.1487,-0.96875 2.375,-0.96875 1.2893,0 1.3661,-2.50835 0.1562,-5.0625 -0.7306,-1.54282 -0.7975,-1.87199 -0.8125,-4.25 -0.01,-1.41843 -0.085,-2.77404 -0.1875,-3 -0.1727,-0.38101 -0.5588,-0.60379 -0.9062,-0.59375 z"
+       id="path4326"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path2998"
+       d="m 694.50793,167.61611 c 0.9594,-0.38275 1.4788,-0.9747 1.4788,-1.68512 0,-0.9961 -0.7291,-2.92833 -1.647,-4.36489 -1.0678,-1.67107 -2.1857,-4.48036 -2.6373,-6.62728 -0.3119,-1.48237 -0.3132,-2.0264 -0.01,-4.18537 0.1915,-1.36484 0.6231,-3.56611 0.9592,-4.89175 0.6404,-2.52645 2.3883,-10.67982 2.9651,-13.83139 0.7408,-4.04704 1.1371,-8.06598 1.4773,-14.98257 0.2943,-5.98262 1.0388,-13.10174 1.3991,-13.37816 0.1951,-0.14973 3.0788,-0.62195 3.798,-0.62195 l 0.8187,0 0,-2.91823 0,-2.918243 0.8073,-0.61581 c 0.6077,-0.4635 1.0385,-1.19961 1.7417,-2.97654 0.514,-1.29841 1.0132,-2.36075 1.1095,-2.36075 0.491,0 2.5228,1.54937 2.7232,2.0766 0.127,0.33384 0.661,0.87852 1.1867,1.21039 0.8682,0.54804 0.9701,0.72469 1.1112,1.92502 0.2117,1.80151 1.1694,5.976033 2.476,10.792313 1.1585,4.27099 1.4782,6.31822 1.8731,11.9959 0.3778,5.43049 0.6636,7.38282 1.7262,11.78957 1.1055,4.58459 2.256,8.50882 4.557,15.5437 1.3331,4.07564 1.5776,5.08419 1.516,6.25312 -0.066,1.25613 -0.134,1.40837 -0.6874,1.54198 -0.4761,0.11492 -0.5979,0.28275 -0.5422,0.74692 0.2468,2.05801 -0.4769,4.96284 -1.8123,7.27404 -0.4498,0.77845 -0.5929,1.38772 -0.5929,2.52362 0,1.40205 0.043,1.51526 0.6754,1.77706 1.0696,0.44272 5.1959,0.3697 6.1553,-0.10896 0.7906,-0.39438 0.8098,-0.39082 1.0314,0.19203 0.3084,0.81121 1.2085,0.98219 3.3873,0.64343 1.9101,-0.29695 3.8059,-1.15515 4.7339,-2.14299 0.5324,-0.56669 0.5333,-0.58643 0.2166,-4.59641 -0.2467,-3.12367 -0.2536,-4.34811 -0.031,-5.45724 0.5028,-2.50381 0.394,-3.38714 -0.5648,-4.58334 -1.8802,-2.34567 -1.8561,-2.15161 -1.4159,-11.37883 0.2855,-5.98716 0.023,-11.77852 -0.6536,-14.40378 -0.4857,-1.88552 -1.6125,-4.3853 -2.5454,-5.64713 -0.4453,-0.60225 -0.4824,-0.89659 -0.3354,-2.65957 0.1686,-2.02105 1.2044,-5.55692 2.2333,-7.62309 0.3027,-0.60789 1.1019,-2.54212 1.7759,-4.29827 0.674,-1.75616 1.7041,-4.44182 2.289,-5.968153 0.5849,-1.52635 1.1823,-2.85177 1.3276,-2.9454 0.6479,-0.41747 2.0741,-0.7815 3.0888,-0.78833 1.4153,-0.01 1.8359,-0.27217 1.6317,-1.01867 -0.087,-0.31777 -0.4888,-4.13775 -0.893,-8.48884 -0.5327,-5.73366 -0.9046,-8.56343 -1.3509,-10.28135 -0.7908,-3.0438 -0.7903,-3.49147 0,-3.69102 0.4438,-0.11139 0.8983,0.028 1.5953,0.48924 1.0217,0.67613 1.285,0.74196 2.7135,0.67855 0.6419,-0.0285 1.2999,-0.36736 2.4561,-1.2648 0.8687,-0.67423 1.7582,-1.22687 1.9767,-1.22808 0.813,-0.005 7.5413,-7.76702 10.3271,-11.91456 0.939,-1.398 0.9849,-1.55245 0.8932,-3.00687 -0.082,-1.30926 -0.3568,-2.0551 -1.8782,-5.10704 -0.9798,-1.96563 -2.6126,-4.7925 -3.6285,-6.28195 -1.0158,-1.48945 -2.4468,-3.98475 -3.18,-5.54512 -0.7331,-1.56037 -1.8176,-3.5161 -2.4098,-4.34607 -1.5712,-2.20176 -3.8928,-4.51904 -4.9786,-4.96939 -1.4745,-0.61151 -3.9726,-2.49489 -4.7709,-3.59689 -0.9331,-1.28816 -1.3647,-2.77894 -1.687,-5.82694 -0.143,-1.35321 -0.3792,-3.58535 -0.5248,-4.96032 -0.3309,-3.12562 -1.2541,-6.8177604 -2.0379,-8.1506004 -0.8344,-1.41883 -2.214,-2.73065 -3.557,-3.38216 -1.6093,-0.78076 -4.5725,-0.78598 -6.2848,-0.0111 -3.1011,1.4034 -3.6407,2.3776 -5.4192,9.7839704 -1.1805,4.91665 -1.3473,5.92309 -1.348,8.13615 0,1.69081 0.121,2.81685 0.3676,3.40721 0.5427,1.29887 0.4594,1.8599 -0.4542,3.0584 -0.4525,0.59355 -0.9965,1.41627 -1.209,1.82827 -0.3175,0.61572 -0.7401,0.87225 -2.3735,1.44087 -2.3174,0.80671 -3.0464,1.31802 -3.6969,2.59311 -1.1093,2.17439 -1.2412,5.68164 -0.3717,9.87878 0.7581,3.65936 0.8614,8.32173 0.2146,9.68492 -0.2541,0.53535 -0.3488,1.15452 -0.2602,1.70049 0.093,0.57279 0,1.10153 -0.276,1.58843 -0.3404,0.59827 -0.5758,0.73012 -1.3062,0.73139 -0.4901,7.3e-4 -1.0236,-0.15817 -1.1856,-0.35338 -0.5767,-0.69488 -2.6178,-1.82729 -4.4234,-2.45407 -1.0082,-0.35002 -1.9235,-0.72673 -2.0339,-0.83714 -0.3585,-0.35851 -0.8731,-5.66994 -1.1578,-11.95046 -0.4498,-9.92114 -0.5976,-10.39782 -3.94,-12.70737 -1.7481,-1.20786 -2.143,-1.60622 -2.4275,-2.44824 -0.2011,-0.59523 -0.8244,-1.46801 -1.5275,-2.13856 l -1.1878,-1.1329 -0.6318,-4.17253 c -0.9219,-6.08746 -1.9802,-9.1475404 -4.4196,-12.7795204 -1.5722,-2.34082 -2.2943,-2.76978 -5.0152,-2.9796 -3.2408,-0.24991 -4.7069,0.80527 -6.7143,4.83215 l -0.7958,1.5965 0.013,3.9298604 c 0.01,2.16142 0.1434,4.64828 0.3027,5.52636 0.3044,1.67794 0.7773,5.18917 0.9717,7.21523 0.1385,1.4425 0.039,1.52381 -2.1215,1.73869 -3.5933,0.35733 -5.0388,1.17601 -5.7786,3.27294 -0.6045,1.71343 -1.0772,5.84536 -1.0879,9.51014 -0.013,4.33629 -0.5297,9.02518 -1.652,14.98257 -0.7747,4.11208 -0.9053,5.38186 -1.0986,10.68429 -0.1207,3.30967 -0.2321,8.77794 -0.2475,12.15171 -0.018,3.99298 -0.1461,6.80591 -0.3664,8.0587 -0.298,1.69493 -0.2902,2.21821 0.066,4.38531 0.3901,2.37621 0.4425,2.50063 1.5262,3.62187 0.6173,0.63862 1.3932,1.33059 1.7244,1.53772 l 0.602,0.37661 -0.9152,3.31908 c -0.5034,1.825493 -0.8496,3.490253 -0.7693,3.699463 0.08,0.20919 0.3767,0.44071 0.6587,0.51444 0.4951,0.12949 0.5073,0.2343 0.3551,3.06441 -0.1926,3.58191 -0.76,5.37523 -3.4328,10.85003 -2.1971,4.50034 -3.0188,7.14042 -4.3461,13.96336 -1.3664,7.024 -2.6184,12.68886 -3.3293,15.06399 -0.3304,1.10375 -0.6007,2.43655 -0.6007,2.9618 0,1.76615 -1.8879,7.38518 -3.815,11.3544 -2.1094,4.34485 -2.2867,5.28735 -1.1095,5.89611 0.3985,0.20612 0.9278,0.37473 1.1761,0.37473 0.837,0 5.5868,-1.94151 6.0045,-2.45438 0.4029,-0.49467 0.7438,-1.85988 1.0583,-4.23865 0.085,-0.64167 0.2581,-1.16667 0.3849,-1.16667 0.1268,0 0.2306,-0.45834 0.2306,-1.01857 0,-0.79044 0.1839,-1.24427 0.8214,-2.02633 1.4066,-1.72555 1.4433,-1.87282 0.9993,-4.00779 -0.5387,-2.58975 -0.3603,-5.10671 0.5097,-7.19302 0.3662,-0.87808 2.1045,-4.58074 3.8631,-8.22813 1.7585,-3.6474 3.9664,-8.40007 4.9064,-10.56149 0.94,-2.16142 2.1878,-4.81407 2.7727,-5.89478 1.7144,-3.16717 3.7156,-8.1092 4.6746,-11.54395 0.4903,-1.75615 0.9917,-3.44169 1.1143,-3.74564 0.2194,-0.54428 0.2893,-0.55263 4.6315,-0.55263 l 4.4087,0 0.1916,1.41229 c 0.1054,0.77676 0.1587,4.811 0.1185,8.96498 -0.096,9.90981 -0.1,15.17636 -0.015,21.30718 0.098,7.14815 -0.3841,10.02505 -2.6365,15.7194 -1.2521,3.16557 -1.2965,2.71637 0.5227,5.28556 0.945,1.33441 0.9742,1.43835 1.1267,3.9984 0.1762,2.95906 0.5103,3.84667 1.8253,4.84969 0.9309,0.71007 3.4737,1.59495 4.5121,1.5702 0.3595,-0.009 0.9276,-0.1249 1.2626,-0.25854 z m 8.356,-75.410533 c 0,-1.46709 0.079,-1.94499 0.3071,-1.86946 0.319,0.10542 0.575,3.13667 0.3208,3.79915 -0.3198,0.83327 -0.6279,-0.11363 -0.6279,-1.92969 z m -36.193,0.75237 c -0.6482,-0.91591 -0.6946,-1.13003 -0.6097,-2.81145 0.1387,-2.74707 0.9368,-3.18478 1.2773,-0.70057 0.081,0.59346 0.3161,1.33579 0.5217,1.64961 0.4253,0.64897 0.259,2.86814 -0.2141,2.85908 -0.1505,-0.003 -0.5894,-0.4514 -0.9752,-0.99667 z m 38.6696,-7.11553 c -0.1463,-0.68209 -0.266,-2.31136 -0.266,-3.6206 0,-3.26592 -0.4229,-10.84924 -0.8907,-15.9706 -0.2136,-2.33877 -0.3353,-4.30537 -0.2705,-4.37023 0.065,-0.0649 0.7119,0.10782 1.4378,0.38373 0.7259,0.27591 1.5108,0.50171 1.744,0.50178 0.2334,7e-5 0.604,0.27449 0.8237,0.60984 0.9627,1.46928 2.7856,1.93256 5.1332,1.30465 1.614,-0.43166 1.8268,-0.11208 1.1303,1.69759 -0.3013,0.78274 -0.8138,2.41791 -1.139,3.63371 -0.5658,2.11539 -6.9333,17.05652 -7.273,17.06583 -0.09,0.002 -0.2836,-0.5536 -0.4298,-1.2357 z m -36.6172,-1.80035 c 0,-0.32139 -0.292,-1.22218 -0.6489,-2.00174 -0.6051,-1.3217 -0.6386,-1.57656 -0.497,-3.77532 0.1344,-2.08707 1.3061,-8.32421 2.8654,-15.25277 0.2888,-1.28334 0.6878,-3.65968 0.8865,-5.28074 0.3858,-3.14638 1.1635,-6.44122 1.6905,-7.16199 0.9391,-1.28428 1.3335,5.51623 0.5222,9.00411 -0.8916,3.83305 -1.1175,5.62684 -1.1259,8.93888 -0.01,3.39558 -0.017,3.44406 -1.6422,9.76323 -1.4881,5.78482 -2.0506,7.36657 -2.0506,5.76634 z m 72.901,-18.08244 c -0.8083,-0.67545 -1.558,-1.22808 -1.6659,-1.22808 -0.3843,0 -0.5148,-2.18399 -0.2553,-4.27191 0.1449,-1.16641 0.6366,-3.31092 1.0927,-4.76558 0.4561,-1.45467 0.9045,-3.19397 0.9964,-3.86513 0.3447,-2.51689 0.9159,-4.08142 1.8477,-5.06093 1.2679,-1.33278 2.1299,-1.30743 3.2301,0.095 0.4503,0.57413 1.4376,1.62056 2.194,2.32541 1.4332,1.33567 3.6665,4.89871 3.6522,5.82676 0,0.27818 -0.1701,0.72034 -0.3685,0.98256 -0.1983,0.26223 -0.3606,0.63864 -0.3606,0.83648 0,0.19783 -0.2606,0.70171 -0.5792,1.11973 -0.3185,0.41801 -0.8843,1.36793 -1.2573,2.11092 -0.3729,0.74298 -1.3353,2.06931 -2.1385,2.94739 -0.8032,0.87807 -1.9782,2.17152 -2.6111,2.87432 -0.7502,0.833 -1.352,1.28188 -1.7289,1.28949 -0.3457,0.007 -1.1686,-0.48181 -2.0478,-1.21642 z m -46.0872,-7.06146 c -1.3887,-2.30884 -1.5471,-2.84166 -1.5127,-5.08745 0.017,-1.0857 0.029,-2.51752 0.029,-3.18183 0,-0.6643 0.1575,-1.43496 0.352,-1.71256 0.1944,-0.2776 0.3552,-0.78408 0.3573,-1.12552 0,-0.49099 0.053,-0.54376 0.2418,-0.25237 0.131,0.20263 0.2398,0.88126 0.2419,1.50806 0,0.6268 0.2127,2.17418 0.4682,3.43862 0.2554,1.26444 0.5343,3.07268 0.6198,4.0183 0.086,0.94562 0.2185,2.24431 0.2955,2.88598 0.077,0.64168 0.087,1.16668 0.022,1.16668 -0.065,0 -0.5664,-0.74606 -1.1149,-1.65791 z M -220.03758,167.56568 c 0.9296,-0.42508 1.2433,-0.82303 1.4311,-1.81527 0.118,-0.62312 0.018,-0.94562 -0.4781,-1.53468 -0.7785,-0.92511 -1.3278,-3.39459 -1.283,-5.7679 0.018,-0.95321 -0.051,-2.3013 -0.1543,-2.99572 -0.1332,-0.89883 -0.079,-1.6065 0.1879,-2.45616 0.2062,-0.65646 0.4397,-1.74621 0.5188,-2.42165 0.1611,-1.37454 1.5975,-5.77197 1.8853,-5.77197 0.3181,0 1.2337,3.09565 1.5806,5.34376 0.1823,1.18114 0.4536,2.64489 0.603,3.25279 0.3353,1.36477 0.711,4.45577 0.9552,7.85971 0.1018,1.41843 0.3161,2.81881 0.4762,3.11193 0.4331,0.79309 1.8661,1.1779 4.4028,1.18236 2.1343,0.004 2.3041,-0.0343 2.9269,-0.65657 0.9213,-0.92045 0.8485,-1.76881 -0.3718,-4.33677 -0.6541,-1.37628 -1.2088,-3.04748 -1.5122,-4.55588 -0.2636,-1.31026 -0.6008,-2.60945 -0.7494,-2.88706 -0.1486,-0.27763 -0.3706,-1.2145 -0.4935,-2.08194 -0.1322,-0.93405 -0.5656,-2.25681 -1.0627,-3.24397 -1.4791,-2.93712 -1.9004,-5.24463 -2.2495,-12.32176 -0.1602,-3.248 -0.1478,-3.36629 0.6069,-5.78497 1.0814,-3.4662 1.6514,-6.65791 2.1031,-11.77657 0.4956,-5.61762 0.8757,-7.6682 2.078,-11.20956 0.5329,-1.56993 1.0426,-3.24687 1.1326,-3.72651 0.09,-0.47966 0.3075,-0.92735 0.4834,-0.99484 0.5584,-0.21428 2.6489,-10.032613 3.1149,-14.629783 0.3202,-3.15877 0.5904,-3.74199 2.1137,-4.56239 0.785,-0.42282 1.143,-0.95301 2.5705,-3.80704 l 1.6584,-3.31582 0.025,-2.70177 c 0.014,-1.48598 0.1893,-4.08336 0.3901,-5.77197 0.4319,-3.63079 0.4715,-8.30224 0.09,-10.63204 -0.15,-0.91688 -0.5878,-2.46426 -0.9727,-3.43862 -0.3876,-0.9813 -1.2671,-4.54008 -1.9717,-7.97784 -1.5208,-7.42115 -1.9066,-8.93642 -2.9943,-11.75866 -0.563,-1.4609 -1.1156,-2.43541 -1.7153,-3.02503 -0.4865,-0.47842 -1.0829,-1.25669 -1.3252,-1.7295 -0.2424,-0.47281 -0.9058,-1.46756 -1.4743,-2.21055 -1.8136,-2.37004 -1.8728,-2.57799 -2.2413,-7.87211 -0.5226,-7.50997 -1.1718,-10.3015804 -2.9314,-12.6060604 -1.0861,-1.42245 -2.4738,-2.23475 -4.9244,-2.88251 -3.5327,-0.93385 -6.3464,-0.17719 -8.5952,2.3115 -1.5448,1.70951 -1.8775,2.53934 -3.1868,7.9500404 -0.6156,2.54397 -1.5072,5.78535 -1.9812,7.20306 -1.1629,3.47788 -1.7497,6.08314 -1.9521,8.66704 -0.1941,2.47909 -0.1457,2.42068 -3.2931,3.9682 -1.939,0.95338 -3.0246,1.81988 -3.558,2.8399 -0.5612,1.07346 -1.2213,5.65108 -1.2041,8.3509 0.01,1.41843 0.076,5.45267 0.1498,8.96498 0.101,4.83054 0.051,6.86462 -0.2057,8.35094 -0.6995,4.05113 -0.4079,7.67177 1.0166,12.62292 0.3415,1.18724 0.7239,3.06125 0.8497,4.16447 0.2463,2.15881 0.4955,2.64843 2.9731,5.841 0.6426,0.82799 1.4652,2.09906 1.8279,2.82458 0.3628,0.72555 0.9177,1.59548 1.2331,1.9332 0.4545,0.48674 0.8077,1.6835 1.7035,5.77198 0.6214,2.83687 1.2274,5.393533 1.3465,5.681473 0.1319,0.31878 0.632,0.65498 1.279,0.85965 l 1.0624,0.33613 0.9273,2.69389 c 1.5034,4.36771 1.929,6.93047 2.1425,12.90271 0.1546,4.32311 0.3093,5.83689 0.8528,8.34751 0.3651,1.68671 0.7,3.12519 0.7441,3.19659 0.044,0.0714 -0.011,2.22823 -0.1233,4.79295 -0.2182,4.9971 -1.1826,12.4103 -1.9216,14.7707 -0.4673,1.49262 -2.6368,4.75217 -3.163,4.75217 -0.1656,0 -0.422,0.22572 -0.5697,0.50159 -0.2239,0.41841 -0.036,0.96431 1.1304,3.29199 1.5647,3.12107 1.8436,4.5099 1.3331,6.63772 -0.2109,0.87893 -0.2394,1.60245 -0.089,2.2482 0.2032,0.87048 0.3325,0.98892 1.5068,1.38041 1.8081,0.60281 4.4113,0.77482 5.3346,0.3525 z m -15.4112,-92.098113 c 0.035,-0.97407 0.1658,-3.76053 0.2917,-6.19213 0.1357,-2.61975 0.1395,-4.87142 0.01,-5.52635 -0.4833,-2.43321 -0.2101,-5.45162 0.9783,-10.8071 0.2548,-1.14826 0.6506,-3.10755 0.8795,-4.35398 0.6038,-3.288 1.2451,-3.55517 1.8187,-0.7577 0.3442,1.67837 1.0293,2.75737 2.3839,3.75454 0.8274,0.60911 1.0402,0.93634 1.1803,1.81479 0.3766,2.36156 -0.1797,4.52058 -2.9512,11.45472 -1.9396,4.85275 -3.3027,9.2873 -3.6871,11.99528 -0.1557,1.09675 -0.1994,1.15744 -0.5675,0.78859 -0.3077,-0.30849 -0.3844,-0.80344 -0.336,-2.17066 z m 31.2579,-8.03324 c -0.1419,-0.74244 -0.6588,-2.17929 -1.1487,-3.19301 -0.8462,-1.75125 -0.89,-1.96555 -0.8774,-4.29928 0.015,-2.75277 0.506,-8.33144 0.7999,-9.08635 0.1622,-0.41665 0.2873,-0.28043 0.8102,0.8828 0.8623,1.91807 1.0835,2.92562 1.2619,5.74739 0.085,1.35089 0.382,4.27986 0.6592,6.50882 0.5866,4.7157 0.5175,6.75187 -0.2875,8.4777 l -0.5711,1.22413 -0.1942,-2.45616 c -0.1069,-1.35089 -0.3104,-3.06361 -0.4523,-3.80604 z M 839.63063,166.29273 c 4.1075,-2.05619 5.9877,-3.78919 5.7283,-5.27976 -0.035,-0.20263 -0.5087,-1.53839 -1.052,-2.96834 -0.6388,-1.68126 -0.9596,-2.89628 -0.9078,-3.43862 0.074,-0.77428 0.1366,-0.68775 0.8181,1.12622 l 0.7381,1.96493 1.5952,0.059 1.5952,0.059 0.8059,-1.10269 c 1.2066,-1.65101 1.2061,-1.71696 -0.024,-2.96434 -1.3517,-1.3711 -2.6716,-3.81535 -3.316,-6.14096 -0.9343,-3.37129 -2.0441,-4.74586 -4.8472,-6.00353 -0.8394,-0.37663 -1.6193,-0.8334 -1.7331,-1.01504 -0.1137,-0.18161 -0.4581,-1.54603 -0.7653,-3.032 -2.2847,-11.05024 -5.0315,-17.19461 -10.0393,-22.45696 -1.9327,-2.03095 -2.0639,-2.23596 -2.0639,-3.22631 0,-2.22579 0.8194,-4.44066 4.3553,-11.77315 0.9447,-1.958793 2.0881,-4.515533 2.5411,-5.681663 l 0.8236,-2.12027 1.3238,-0.13661 c 0.7281,-0.0752 1.3663,-0.17915 1.4183,-0.2311 0.2261,-0.22619 0.5825,-4.98571 0.5864,-7.83278 l 0,-3.10758 0.7735,-0.26964 c 0.4254,-0.1483 1.0543,-0.26964 1.3975,-0.26964 0.3432,0 1.2385,-0.12638 1.9897,-0.28084 1.1555,-0.23763 1.8355,-0.20113 4.4198,0.23728 4.0867,0.69329 4.212,0.63608 4.6006,-2.09929 0.6508,-4.58139 1.1165,-10.60054 1.2411,-16.04063 0.1276,-5.57447 0.1086,-5.9007 -0.536,-9.17981 -1.0612,-5.39864 -4.736,-16.31024 -6.9324,-20.5847 -1.9829,-3.85873 -3.0338,-4.88567 -5.6027,-5.47461 l -1.2278,-0.28149 -2.7163,-9.06928 c -1.494,-4.9881 -2.9662,-9.5495404 -3.2716,-10.1365204 -1.5271,-2.93511 -5.5204,-5.19595 -9.1775,-5.19595 -2.7194,0 -3.6546,1.062 -5.3349,6.05881 -1.6732,4.9757304 -3.1635,8.8353404 -4.4887,11.6255304 -0.6736,1.41843 -1.3782,3.00734 -1.5656,3.5309 -0.3879,1.08345 -0.4638,4.96065 -0.1016,5.18456 0.1317,0.0814 -0.6522,1.22078 -1.7418,2.53206 -2.7554,3.31594 -3.4907,4.88986 -4.0397,8.64736 -0.1619,1.10806 -2.0977,6.63955 -2.962,8.4638 -0.3025,0.63853 -0.6712,1.02179 -1.0735,1.11603 -0.7533,0.17646 -0.9221,0.86248 -0.364,1.47919 0.3938,0.43512 0.3888,0.49709 -0.089,1.10412 -0.3598,0.45743 -0.451,0.79775 -0.3156,1.17864 0.1047,0.29454 0.1138,1.36447 0.02,2.37764 -0.094,1.01316 -0.067,2.6527 0.059,3.64342 0.1525,1.20091 0.1415,2.20782 -0.033,3.02089 -0.4635,2.16109 -0.3353,4.42219 0.3207,5.65584 0.5015,0.94322 0.5537,1.26319 0.3766,2.30853 -0.5722,3.37744 -0.582,3.16983 0.1737,3.66498 0.3825,0.25063 1.226,0.50667 1.8743,0.56897 0.6484,0.0623 1.2284,0.19338 1.2889,0.29129 0.2144,0.34683 -0.8938,7.77368 -1.4849,9.95155 -0.8426,3.1048 -0.8136,3.45294 0.3189,3.82669 0.5056,0.16686 1.5179,0.36885 2.2497,0.4489 l 1.3305,0.1455 0.824,2.38289 c 1.5824,4.57625 3.9816,14.264773 4.3669,17.634813 0.085,0.74299 0.3252,2.35318 0.5338,3.57821 0.2449,1.43786 0.3297,2.91779 0.2392,4.17547 -0.077,1.07147 -0.1563,2.22447 -0.1761,2.56219 -0.1375,2.34688 1.5697,11.73816 3.6314,19.97552 1.7974,7.18169 1.8553,7.50551 1.8737,10.48084 0.016,2.67783 -0.071,3.3841 -0.6843,5.52636 -0.6593,2.30321 -0.6993,2.7001 -0.6423,6.37363 0.033,2.15462 0.1647,4.11163 0.2918,4.34895 0.127,0.23729 0.644,0.5462 1.149,0.68645 1.3716,0.38092 5.0806,0.32107 6.084,-0.0982 l 0.8518,-0.3559 0,-2.89851 c 0,-1.5942 -0.1722,-3.89328 -0.3775,-5.10908 -0.3114,-1.84468 -0.3248,-2.60382 -0.081,-4.58683 0.2911,-2.36867 0.2901,-2.37864 -0.3194,-3.10294 l -0.6114,-0.7266 0.097,-10.77438 c 0.054,-5.9259 0.1184,-10.92266 0.1442,-11.10388 0.026,-0.18124 1.1611,1.36614 2.5229,3.43863 4.4781,6.81557 6.5152,10.59835 7.8491,14.57521 0.6323,1.88542 0.6543,2.12397 0.5421,5.89478 -0.1251,4.20447 -0.2504,4.7619 -1.8697,8.3235 -0.4231,0.93054 -0.7692,1.91622 -0.7692,2.1904 0,0.27418 0.5802,1.52992 1.2894,2.79054 l 1.2895,2.29204 1.1467,7e-5 c 0.8992,5e-5 1.7293,-0.29167 3.8471,-1.35182 z m -2.3969,-94.103023 c -0.5795,-0.73662 -0.6909,-2.9195 -0.2688,-5.26391 0.1321,-0.73403 0.3532,-2.75993 0.4912,-4.502 0.138,-1.74207 0.5784,-4.79022 0.9785,-6.77366 0.7038,-3.48817 1.483,-9.70849 1.483,-11.83808 0,-0.59772 0.09,-0.93952 0.2115,-0.80523 0.1164,0.12833 0.947,2.35844 1.846,4.95579 1.3399,3.87155 1.6068,4.89459 1.4816,5.67784 -0.086,0.53647 -0.035,1.17603 0.1165,1.4586 0.2176,0.40653 0.1511,0.70777 -0.3461,1.56783 -0.5818,1.00632 -0.6134,1.24918 -0.5775,4.43554 0.032,2.80077 -0.031,3.46547 -0.3715,3.92985 -1.2813,1.74872 -1.9297,2.90913 -2.2615,4.04681 -0.2457,0.84265 -0.5351,1.32897 -0.8504,1.42906 -0.3117,0.0989 -0.5735,0.53063 -0.7521,1.24022 -0.1508,0.59867 -0.3635,1.0885 -0.4728,1.0885 -0.1092,0 -0.4277,-0.29122 -0.7076,-0.64716 z m -29.0947,-12.80031 c -0.077,-1.31711 -0.2096,-3.36819 -0.2944,-4.55794 -0.2372,-3.32679 -0.07,-3.91931 2.162,-7.64756 1.9653,-3.2831 2.4073,-3.71735 3.0897,-3.03496 0.3496,0.34962 0.3833,5.13225 0.063,8.99518 -0.2587,3.12331 -1.0264,4.85753 -3.1313,7.0734 -0.7847,0.82607 -1.4993,1.51649 -1.5879,1.53429 -0.089,0.0178 -0.2243,-1.04529 -0.3014,-2.36241 z M 646.24043,167.38756 c 2.5945,-0.40671 3.03,-1.60114 0.9635,-2.64236 -0.6178,-0.31132 -2.0432,-1.3022 -3.1675,-2.20194 l -2.0441,-1.6359 -0.2885,-1.97353 c -0.3652,-2.49742 -0.7071,-3.30599 -1.7774,-4.20243 l -0.8578,-0.71848 -0.1697,-5.64916 c -0.093,-3.10704 -0.3342,-6.86496 -0.5354,-8.35094 -0.5783,-4.2714 -2.0181,-12.92745 -2.4574,-14.77325 -0.2203,-0.92565 -0.5401,-2.73302 -0.7107,-4.01636 -0.2682,-2.0171 -0.2595,-2.46085 0.064,-3.27421 0.306,-0.76851 0.3441,-1.60082 0.208,-4.54389 -0.2712,-5.86649 -0.841,-12.89977 -1.4012,-17.293473 -0.6496,-5.09548 -0.5346,-6.70316 0.6136,-8.58159 2.2961,-3.75617 2.2039,-3.64047 2.9027,-3.64047 0.6071,0 0.7072,-0.13325 1.0605,-1.41229 0.2146,-0.77676 0.7653,-2.57282 1.2237,-3.99125 0.4585,-1.41844 1.2801,-4.12635 1.826,-6.01759 l 0.9924,-3.43862 0.016,-4.95031 c 0.015,-4.64565 -0.021,-5.06133 -0.5933,-6.75443 -0.3352,-0.99228 -0.6847,-2.41203 -0.7767,-3.15502 -0.092,-0.74299 -0.7639,-3.15805 -1.4932,-5.36681 -0.7293,-2.20875 -1.3271,-4.2535 -1.3283,-4.54389 -0.01,-1.15646 -1.7797,-7.28258 -2.6789,-9.24734 -0.5255,-1.14825 -1.1411,-2.61274 -1.368,-3.25441 -0.2269,-0.64167 -0.448,-1.16668 -0.4914,-1.16668 -0.043,0 -1.7704,-0.50462 -3.8377,-1.12139 -2.0673,-0.61677 -4.8235,-1.37919 -6.1247,-1.69427 -2.3678,-0.57334 -3.9053,-1.21796 -5.2158,-2.18684 l -0.6985,-0.51648 0.1592,-2.45984 c 0.088,-1.35292 0.3335,-3.10717 0.5465,-3.89834 0.3155,-1.17166 0.3351,-1.65005 0.1055,-2.57897 -0.1964,-0.79452 -0.2216,-2.22079 -0.083,-4.7019 0.3101,-5.5558004 -0.1667,-6.7447904 -3.3016,-8.2324404 l -1.8793,-0.89177 -1.4586,0.5455 -1.4586,0.54549 -0.9382,-0.52728 c -1.2182,-0.68466 -1.5587,-0.6665 -3.3446,0.17839 -2.6746,1.26532 -4.0279,2.89835 -5.2713,6.36082 -0.4585,1.2767604 -0.5305,1.8648304 -0.4211,3.4386304 0.073,1.04416 0.3498,2.50637 0.6161,3.24936 0.2663,0.74299 0.8987,2.51142 1.4053,3.92985 1.1584,3.24301 2.1924,5.30873 2.8274,5.64856 0.2708,0.14493 0.4923,0.47535 0.4923,0.73428 0,0.67545 -1.5495,2.0851 -2.6566,2.41679 -2.3815,0.7135 -9.5405,4.58155 -10.3246,5.57842 -0.6569,0.83507 -1.0992,3.09884 -0.8102,4.14585 0.1526,0.55253 0.1548,1.50843 0.01,2.65251 -0.1278,0.98377 -0.2106,3.115 -0.1838,4.73607 0.027,1.62106 -0.1351,4.38356 -0.3596,6.13889 -0.2244,1.75532 -0.4081,3.75488 -0.4081,4.44345 0,0.68857 -0.1646,1.79452 -0.3658,2.45766 -0.4374,1.44191 -0.4679,2.40796 -0.098,3.09943 0.2027,0.37865 0.1972,0.74094 -0.021,1.40241 -0.2371,0.71841 -0.2148,1.53553 0.1148,4.20142 0.2249,1.82025 0.3973,3.69707 0.3831,4.17071 -0.014,0.47363 0.4176,2.58442 0.9597,4.69063 0.9724,3.77785 0.9835,3.87137 0.8282,6.93715 -0.1805,3.56164 -0.069,3.72269 1.6376,2.37082 0.5117,-0.40526 1.0557,-0.73685 1.2088,-0.73685 0.1532,0 0.7038,0.91185 1.2235,2.02633 0.903,1.93654 0.9522,2.17331 1.1105,5.34215 0.091,1.82371 0.268,4.25531 0.3931,5.40356 0.1252,1.14826 0.5694,6.491313 0.9871,11.873443 0.7468,9.62448 0.7727,9.82071 1.5693,11.91237 0.7961,2.09044 0.8128,2.21663 0.9783,7.40741 0.093,2.90441 0.2074,10.53078 0.255,16.94749 0.084,11.31615 0.071,11.72574 -0.4423,13.62937 l -0.5289,1.96262 -1.8421,1.41835 c -1.0132,0.7801 -2.2275,1.61028 -2.6985,1.84483 -0.9742,0.48514 -1.1891,1.04693 -0.6185,1.61745 0.7035,0.70357 2.3097,0.96512 4.9135,0.80016 3.362,-0.21302 4.5105,-0.51761 5.4787,-1.45303 0.7745,-0.7483 0.9049,-0.78533 2.8246,-0.80199 1.2605,-0.011 2.3473,-0.16294 2.9084,-0.40676 l 0.8959,-0.38931 0.1454,-2.66343 c 0.08,-1.46488 0.2571,-3.89156 0.3937,-5.39262 0.3574,-3.93051 0.3097,-6.90608 -0.2418,-15.07795 -0.5927,-8.78392 -0.9369,-12.61106 -1.2381,-13.76673 -0.1426,-0.54757 -0.1359,-1.41548 0.018,-2.33335 0.1349,-0.8038 0.3485,-2.67726 0.4747,-4.16324 0.1261,-1.48597 0.3914,-3.58599 0.5896,-4.6667 0.1981,-1.08071 0.489,-3.6781 0.6465,-5.77197 0.1575,-2.09388 0.3875,-4.34713 0.5112,-5.00725 0.1236,-0.66009 0.2248,-1.95156 0.2248,-2.86992 0,-1.70443 0.5933,-5.095153 0.9547,-5.456633 0.4501,-0.45011 1.0975,1.33176 2.1059,5.796293 0.5854,2.59211 1.3473,5.45945 1.693,6.37187 0.7065,1.86429 0.9837,3.2239 1.4899,7.30604 0.1926,1.55352 0.6834,3.87459 1.0907,5.15793 0.7465,2.35202 1.0938,4.04775 1.3834,6.75444 0.378,3.53242 2.6691,19.1757 3.202,21.86287 0.3218,1.62276 1.2087,4.99384 1.9708,7.49128 0.7621,2.49746 1.4578,5.02712 1.5459,5.62146 0.1464,0.98711 0.2453,1.11124 1.1427,1.43438 0.5404,0.19455 1.9773,0.41216 3.1931,0.48356 1.9025,0.11171 2.3,0.21328 2.8526,0.72877 0.3531,0.32942 1.1821,0.76154 1.8421,0.96026 1.538,0.46306 4.9581,0.63111 6.84,0.3361 z M 613.84653,41.904537 c -0.099,-1.00477 -0.504,-2.71488 -0.9001,-3.80024 l -0.7202,-1.9734 0.7396,-1.18979 c 0.4068,-0.65439 0.7396,-1.23934 0.7396,-1.2999 0,-0.2398 -1.6261,-1.08348 -2.0877,-1.0832 -0.2702,1.6e-4 -0.8196,0.263 -1.2209,0.58408 -0.5705,0.45652 -0.669,0.65703 -0.4518,0.91984 0.5407,0.65402 0.615,2.02149 0.1787,3.28747 -0.2321,0.67323 -0.5477,2.21881 -0.7014,3.4346 l -0.2794,2.21054 -2.0673,-3.92985 c -2.0566,-3.90967 -2.0672,-3.93931 -2.0707,-5.77197 0,-1.139 0.2074,-2.63899 0.5492,-3.92986 0.7889,-2.97941 0.7405,-2.91197 1.292,-1.79713 0.5321,1.0754 4.2404,4.84204 4.6325,4.70537 0.3443,-0.12001 3.8511,-4.3118 4.6356,-5.54117 0.6945,-1.08835 1.4013,-1.51495 1.8185,-1.09769 0.4068,0.40679 0.9227,3.00546 0.9268,4.66858 0.01,2.50346 -1.8319,8.87732 -3.8022,13.18496 -0.6195,1.35447 -0.6885,1.42402 -0.8524,0.85965 -0.098,-0.33772 -0.2594,-1.43612 -0.3584,-2.44089 z M 107.28433,167.41092 c 0.62924,-0.11568 1.64841,-0.50589 2.26478,-0.86712 0.73115,-0.42848 1.74215,-0.73768 2.90858,-0.88955 2.63627,-0.34325 2.80579,-0.4526 2.94481,-1.89952 0.094,-0.9778 0.42632,-1.70469 1.62652,-3.55745 0.82964,-1.28069 1.61421,-2.60675 1.7435,-2.94678 0.16044,-0.42194 0.0748,-2.32085 -0.26959,-5.98057 l -0.50466,-5.36233 0.8782,-5.15793 c 0.483,-2.83686 1.11006,-7.14742 1.39343,-9.57902 0.28336,-2.4316 0.60743,-4.80793 0.72012,-5.28074 0.75212,-3.1554 1.63042,-5.90198 2.34045,-7.31903 0.4536,-0.90527 1.72955,-4.18807 2.83543,-7.29511 1.10589,-3.10705 2.11301,-5.84259 2.23808,-6.079 0.18478,-0.34921 0.55968,-0.42911 1.99949,-0.42607 0.97463,0.002 1.90055,0.0855 2.05757,0.18542 0.29538,0.18792 0.36678,0.92202 0.79393,8.16176 0.23181,3.92917 0.45129,6.70141 0.90504,11.43136 0.11832,1.23326 0.0514,2.23297 -0.23316,3.48411 -0.21948,0.96502 -0.5111,3.39203 -0.64803,5.39336 -0.13693,2.0013 -0.37255,4.73871 -0.5236,6.08314 -0.25893,2.30447 -0.18714,5.44648 0.14358,6.28453 0.0938,0.23778 -0.33352,0.98371 -1.15226,2.01112 -0.71577,0.89824 -1.72415,2.4549 -2.24083,3.45925 -0.93464,1.81685 -0.93788,1.83335 -0.6423,3.25716 0.34499,1.66184 0.59483,2.27976 1.52675,3.77598 0.56943,0.91428 0.6801,1.36387 0.6801,2.76318 0,2.24637 0.27846,2.50609 3.10203,2.89342 1.19829,0.16437 2.73135,0.55185 3.40679,0.86108 1.75898,0.80525 3.48289,1.10972 6.2832,1.10972 2.88161,0 4.05382,-0.36913 4.30113,-1.35445 0.18097,-0.72103 -0.12347,-1.22354 -2.19254,-3.61927 -0.67088,-0.77676 -1.36509,-1.41229 -1.54272,-1.41229 -0.17762,0 -0.45291,-0.24869 -0.61175,-0.55264 -0.15887,-0.30395 -0.61767,-0.8321 -1.0196,-1.17367 -0.77462,-0.65828 -0.8685,-1.64534 -0.14501,-1.52486 0.21346,0.0356 0.50034,-0.075 0.63745,-0.24562 0.25219,-0.31387 1.0877,-8.24266 1.53384,-14.55597 0.13364,-1.89124 0.24768,-5.70443 0.25343,-8.47375 0.0125,-6.04144 0.26602,-9.12163 1.0898,-13.24022 0.47991,-2.39959 1.85145,-13.14561 1.85145,-14.50634 0,-0.15653 0.88773,-0.25365 2.31888,-0.25365 1.35177,0 2.3852,-0.10733 2.47795,-0.2574 0.0875,-0.14158 -0.0277,-1.91721 -0.25603,-3.94587 -0.22833,-2.028673 -0.37629,-3.720373 -0.32881,-3.759323 0.0475,-0.039 0.69421,-0.45653 1.4372,-0.92789 1.14781,-0.7282 1.50781,-1.15334 2.39475,-2.82828 0.88166,-1.66493 1.04387,-2.19266 1.04387,-3.39642 0,-1.01287 0.12436,-1.5625 0.42983,-1.89965 0.30058,-0.33178 0.5181,-1.2607 0.72339,-3.08954 l 0.29356,-2.61511 -0.13396,4.24458 -0.13394,4.24462 1.3686,2.05676 c 0.75273,1.13125 1.6636,2.28883 2.02417,2.57247 l 0.65557,0.51565 0.12283,11.495463 0.12286,11.49546 0.82497,0.5408 c 0.74547,0.48865 0.82461,0.65299 0.82115,1.70518 -0.003,0.64045 -0.16397,1.82758 -0.35968,2.63811 -0.70856,2.93445 -0.30127,7.92758 1.61492,19.79886 0.27494,1.70332 0.517,4.07965 0.53792,5.28074 0.0393,2.25585 -0.16001,3.1887 -2.04086,9.55224 -1.48704,5.03119 -1.45661,7.54711 0.10284,8.49804 1.36459,0.83212 2.52043,0.49724 4.46252,-1.29293 1.32234,-1.21889 1.49967,-1.76826 1.82674,-5.65901 0.26511,-3.15376 0.3989,-3.7468 1.59566,-7.07246 0.83647,-2.32446 0.74376,-3.37162 -0.47627,-5.37999 l -0.91133,-1.50022 0.27516,-1.77922 c 0.40853,-2.64164 1.40117,-7.92808 1.85182,-9.86221 0.46967,-2.01572 0.51521,-5.38353 0.11551,-8.54301 -0.23532,-1.86015 -0.22736,-2.46962 0.0428,-3.2689 l 0.33198,-0.98247 2.17996,-0.0714 2.17994,-0.0714 -0.15842,1.42231 c -0.0871,0.78229 -0.25824,4.84866 -0.38022,9.03641 -0.12199,4.18775 -0.32735,7.94567 -0.45637,8.35094 -0.12905,0.40527 -0.64887,1.34475 -1.15519,2.08773 l -0.92059,1.35089 0.14101,2.88311 c 0.0978,2.00018 0.0287,3.57977 -0.22582,5.15793 -0.73078,4.53201 -0.72294,5.30756 0.0688,6.8097 1.30461,2.47524 3.231,2.84084 5.04136,0.9568 1.37395,-1.4299 1.49179,-2.20185 1.14897,-7.52621 -0.5144,-7.98875 -0.39849,-9.23793 1.26968,-13.68488 2.71172,-7.22884 4.65056,-13.87513 4.65586,-15.96009 0.003,-0.81324 0.085,-1.6039 0.18421,-1.75699 0.0993,-0.15309 0.84362,-0.40905 1.65415,-0.56877 3.06347,-0.60368 3.52791,-0.9426 3.8879,-2.83711 0.077,-0.40527 0.27122,-4.43951 0.43155,-8.96498 0.16034,-4.52548 0.39149,-8.355443 0.51366,-8.511063 0.12219,-0.1556 0.478,-0.34713 0.79064,-0.4256 1.14749,-0.28799 2.26047,-1.66776 3.09377,-3.83537 0.69272,-1.80184 0.84645,-2.62586 1.12259,-6.0176 0.18168,-2.23162 0.26048,-5.30966 0.1823,-7.12286 -0.0941,-2.18166 0,-4.59333 0.29567,-7.61409 0.50931,-5.19583 0.3965,-11.94665 -0.2339,-14.0001 -0.48175,-1.56919 -0.47748,-2.87111 0.0189,-5.77198 0.59036,-3.45013 0.59552,-11.54046 0.01,-15.22818 -0.29875,-1.88047 -0.64288,-3.15941 -1.02955,-3.82633 -0.65223,-1.12493 -2.20607,-2.25968 -3.67945,-2.68707 -0.79651,-0.23105 -1.13111,-0.53007 -1.7661,-1.57823 -1.39242,-2.2985 -1.54124,-4.26017 -0.56958,-7.5091 0.66341,-2.21824 0.78423,-4.23013 0.53067,-8.83805 -0.29672,-5.3926304 -0.83126,-7.0073804 -3.12393,-9.4369104 -1.61291,-1.70922 -4.87351,-3.70353 -6.05507,-3.70353 -0.80739,0 -2.12384,0.45808 -2.93142,1.02003 -0.35857,0.24952 -1.03166,0.45366 -1.49573,0.45366 -0.7153,0 -1.12362,0.27176 -2.68111,1.78444 -2.74769,2.6686 -3.95965,5.0527604 -4.89876,9.6367004 -0.63143,3.08216 -0.6882,9.22587 -0.11456,12.4036 0.20727,1.14825 0.37888,2.60885 0.38139,3.24577 0.005,1.38967 -0.17618,1.52141 -2.7855,2.02066 -1.95859,0.37474 -3.36143,0.98497 -4.2985,1.86982 -1.2173,1.14947 -1.30972,1.77931 -1.52997,10.42528 -0.2227,8.74274 -0.469,11.63318 -1.20339,14.12291 -0.88601,3.00364 -0.99064,3.8147 -1.22992,9.53356 -0.30302,7.24217 -0.62045,10.59838 -1.10027,11.63317 -0.37353,0.80553 -0.37669,0.79405 -0.25015,-0.90342 0.32686,-4.38419 0.42226,-18.77367 0.14167,-21.36858 -0.36039,-3.33286 -1.84627,-13.016 -2.36614,-15.41944 -1.42327,-6.58024 -2.2063,-9.40785 -2.74326,-9.9065 -1.17485,-1.09103 -2.63814,-1.93468 -5.05532,-2.9146 -3.507,-1.42176 -3.78015,-1.59195 -5.58744,-3.48122 -2.40409,-2.51314 -2.61247,-2.95763 -2.81532,-6.00557 l -0.17336,-2.60427 0.96252,-0.95716 c 1.1488,-1.1424 1.69738,-2.76389 1.36769,-4.04258 -0.15343,-0.59512 -0.37663,-0.86761 -0.75586,-0.92292 -0.48757,-0.0711 -0.53812,-0.2218 -0.53812,-1.60439 0,-3.4040904 -1.04541,-5.3249604 -3.57611,-6.5708204 -2.2344,-1.09999 -4.25351,-1.23159 -6.07828,-0.39616 -1.5328,0.70172 -3.44958,2.35298 -4.03867,3.47918 -0.49946,0.95481 -0.49818,3.24899 0.003,5.1092704 0.36578,1.35819 0.36243,1.41229 -0.0876,1.41229 -1.11551,0 -0.2211,3.49017 1.19316,4.65591 0.86427,0.71241 0.87694,0.74968 0.87694,2.57737 0,1.01998 -0.0461,1.89526 -0.10232,1.94507 -0.0563,0.0498 -1.57747,1.16539 -3.38041,2.47908 -2.94182,2.14351 -3.49477,2.44814 -5.39046,2.9697 -2.56563,0.70588 -4.91558,1.83123 -6.04163,2.89322 -0.99721,0.94047 -1.23886,1.68566 -4.71317,14.53252 l -2.39127,8.84217 0.0127,4.18473 c 0.016,5.19472 0.65071,8.66391 3.53347,19.31131 l 1.241,4.58363 -0.88937,3.89012 c -3.54787,15.518383 -3.77613,16.650643 -3.45778,17.153393 0.36695,0.57953 1.80223,1.05993 3.24579,1.08641 0.56614,0.0104 1.0951,0.12524 1.17547,0.25527 0.0803,0.13 0.0375,0.93132 -0.0953,1.78071 -0.13278,0.84937 -0.36793,3.14696 -0.52252,5.10574 -0.16302,2.06539 -0.4706,4.1289 -0.73218,4.91232 -0.2481,0.74299 -0.51459,2.23511 -0.59221,3.31581 -0.0776,1.08071 -0.43081,4.72811 -0.78487,8.10533 -0.60824,5.8014 -0.76356,6.63536 -2.81347,15.10538 -2.33409,9.64419 -3.17309,13.68408 -3.17309,15.27887 0,1.05199 -0.61234,2.09237 -2.01596,3.42506 -0.3772,0.35816 -0.68582,0.81609 -0.68582,1.01759 0,0.20152 -0.1513,0.42447 -0.33619,0.49543 -0.50442,0.19357 -1.628729,2.34553 -1.628729,3.11741 0,0.37171 0.16036,0.80893 0.35636,0.9716 0.44307,0.36772 6.408239,0.56639 8.033379,0.26755 z M 151.8529,93.179097 c -0.0859,-0.42939 -0.0847,-1.31933 0.003,-1.97763 0.13777,-1.03858 0.22747,-1.18711 0.67807,-1.12278 0.69336,0.099 0.79396,1.08668 0.27104,2.66108 -0.46957,1.4137 -0.73259,1.53513 -0.95173,0.43933 z m 9.62731,-1.57499 c 0.0323,-0.8598 0.18566,-1.28796 0.38046,-1.06241 0.0486,0.0563 0.15641,0.70357 0.23955,1.4384 0.14007,1.23805 0.12162,1.3065 -0.25147,0.93341 -0.2448,-0.2448 -0.38925,-0.75804 -0.36854,-1.3094 z m 0.79621,-9.31103 c -0.005,-1.68324 0.34649,-3.11939 2.30076,-9.39698 2.07892,-6.67804 2.78858,-8.11665 1.25465,-2.54349 -0.69236,2.51564 -1.80925,8.14287 -2.73481,13.77879 l -0.14053,0.85585 -0.3378,-0.61024 c -0.18579,-0.33563 -0.33981,-1.2734 -0.34227,-2.08393 z m 29.85305,-12.47305 c -0.35179,-1.05137 -1.04057,-2.70776 -1.53063,-3.68087 -0.88618,-1.75973 -0.8903,-1.78259 -0.76516,-4.22882 0.0797,-1.55918 0.28354,-2.81918 0.55671,-3.442 0.237,-0.54035 0.62163,-1.64562 0.85477,-2.45615 l 0.42386,-1.4737 0.13786,5.03513 c 0.0758,2.76931 0.24984,5.47723 0.38672,6.01758 0.13689,0.54036 0.37295,2.12296 0.52457,3.5169 0.15161,1.39394 0.33291,2.72027 0.40285,2.94739 0.40699,1.32161 -0.44117,-0.59057 -0.99155,-2.23546 z M 78.447061,167.48193 c 0.16887,-0.0681 0.30702,-0.29084 0.30702,-0.49487 0,-0.31014 0.21156,-0.33701 1.28949,-0.16375 0.70921,0.11399 3.16154,0.178 5.4496,0.14226 4.81186,-0.0752 5.20539,-0.2185 4.95198,-1.80328 l -0.14272,-0.8925 0.91887,0.43852 c 0.85104,0.40618 1.11709,0.4135 3.60478,0.0992 2.28308,-0.28842 2.762,-0.4268 3.19301,-0.9225 0.2789,-0.32073 0.81102,-0.76912 1.18251,-0.99642 0.3715,-0.22727 0.67545,-0.55875 0.67545,-0.73657 0,-0.17786 0.288059,-0.45459 0.640129,-0.615 0.55317,-0.25205 0.62005,-0.39923 0.49231,-1.08329 -0.69121,-3.70175 -0.73997,-5.45741 -0.75179,-27.07253 -0.0118,-21.39251 -0.0364,-22.60384 -0.576699,-28.24583 -0.31046,-3.24213 -0.72494,-6.915963 -0.92106,-8.164083 -0.46114,-2.93466 -0.4607,-2.94063 0.23832,-3.3106 0.32721,-0.17319 1.154269,-0.84564 1.837919,-1.49437 l 1.24299,-1.17944 -0.14288,-1.89075 c -0.1092,-1.44499 -0.42339,-2.61463 -1.33273,-4.96131 -0.912339,-2.3544 -1.342439,-3.95842 -1.844089,-6.87724 -0.35982,-2.09367 -0.74303,-4.31111 -0.85157,-4.92765 -0.10854,-0.61653 -0.43339,-3.13603 -0.72189,-5.59889 -0.2885,-2.46285 -0.77971,-5.32949 -1.09162,-6.3703 -0.31188,-1.04082 -0.85943,-2.87187 -1.21678,-4.06901 -0.81593,-2.73344 -0.85081,-4.87274 -0.11723,-7.19232 0.80589,-2.54815 0.73058,-3.86802 -0.34349,-6.02193 -0.88565,-1.77604 -0.901,-1.85761 -1.0563,-5.60929 -0.18902,-4.56689 -0.35486,-5.31387 -1.39991,-6.30573 -1.08693,-1.03163 -2.05129,-1.48411 -4.41888,-2.07337 -3.86201,-0.9612 -4.82625,-1.82062 -5.37535,-4.79097 -0.22174,-1.19947 -0.19784,-1.42798 0.19367,-1.85214 0.24564,-0.26612 0.77821,-1.16148 1.18347,-1.98967 0.40527,-0.82821 0.86175,-1.54416 1.0144,-1.59102 0.32994,-0.10127 0.67112,1.8423 0.44478,2.53382 -0.12497,0.38186 -0.10504,0.40222 0.1039,0.10616 0.14219,-0.20147 0.33321,-0.97515 0.42448,-1.71931 0.197,-1.60601 0.48509,-2.45827 0.83094,-2.45827 0.13845,0 0.25947,0.46974 0.26897,1.04386 0.01,0.57413 0.11291,1.26493 0.22982,1.5351 0.13401,0.30968 0.20205,-0.55269 0.18409,-2.33335 -0.0192,-1.89195 0.0763,-3.01874 0.28899,-3.41262 0.64509,-1.19487 -0.44446,-4.5439804 -2.44736,-7.5227904 -1.66812,-2.48091 -2.82498,-3.44632 -4.56182,-3.80689 -1.83942,-0.38186 -5.5005,-0.11662 -6.90817,0.5005 -1.11259,0.48774 -2.26762,2.00367 -2.78607,3.65656 -0.1524,0.48588 -0.61647,1.63517 -1.03129,2.55399 -0.74063,1.6405404 -0.74928,1.7045504 -0.48021,3.5614304 0.15071,1.03997 0.26198,2.60928 0.24732,3.48736 -0.0202,1.20843 0.10254,1.83443 0.50503,2.57533 0.29248,0.53835 0.53176,1.21932 0.53176,1.51326 0,0.74163 1.31448,1.77493 2.49882,1.96431 0.95031,0.15196 0.98146,0.18621 0.83507,0.91823 -0.23737,1.18679 -1.64872,3.34826 -2.59705,3.97732 -0.47281,0.31363 -1.74387,0.80864 -2.82458,1.10002 -2.44896,0.66029 -3.74593,1.36661 -4.23065,2.30398 -0.55871,1.08039 -1.74199,5.37432 -2.13654,7.75298 -0.34129,2.05769 -0.63271,10.46743 -0.65536,18.91242 -0.0113,4.2213 0.005,4.35326 0.87423,7.36847 0.85849,2.97564 1.77226,5.68567 3.7268,11.05272 0.83914,2.30426 0.93464,2.80134 0.89645,4.6667 -0.0236,1.14825 0.0739,3.57985 0.2166,5.40355 0.24549,3.13902 0.2258,3.48607 -0.36943,6.50882 -0.87803,4.45885 -0.85874,4.27314 -3.83637,36.965203 -1.47031,16.1431 -2.78985,29.65408 -2.93231,30.02439 -0.56693,1.47384 0.0859,1.85715 3.52098,2.06733 2.48772,0.15221 2.59225,0.18116 2.59225,0.71823 0,0.39338 0.1642,0.58297 0.55264,0.63813 0.48872,0.0694 0.55263,0.22012 0.55263,1.30329 0,1.18325 0.0333,1.24144 0.98247,1.71626 0.7842,0.3923 1.47735,0.49209 3.43491,0.49453 2.08054,0.003 2.46431,0.0644 2.53073,0.40765 0.043,0.22255 0.32102,0.46971 0.61775,0.54926 0.64378,0.17265 3.35808,0.16457 3.79387,-0.0113 z m 20.45129,-78.771493 c -0.003,-0.59946 0.0516,-0.65956 0.36466,-0.39977 0.37795,0.31367 0.49998,1.26028 0.20099,1.55927 -0.25583,0.25583 -0.56145,-0.37066 -0.56565,-1.1595 z m -2.18606,-1.75066 c -0.0172,-0.40468 0.0212,-0.42632 0.21737,-0.12281 0.13096,0.20263 0.22876,0.70001 0.21737,1.10527 -0.0204,0.7221 -0.0247,0.72455 -0.21737,0.12281 -0.10817,-0.33772 -0.20597,-0.83509 -0.21737,-1.10527 z m -1.25092,-6.78883 c -0.25124,-1.39889 -0.41197,-2.5883 -0.35715,-2.64312 0.0548,-0.0548 0.28742,0.33177 0.5169,0.85909 0.39994,0.91908 0.80011,4.81114 0.46117,4.48524 -0.0902,-0.0868 -0.36966,-1.30232 -0.62092,-2.70121 z m -26.98874,-12.98324 c -0.41258,-1.55352 -0.97595,-3.47742 -1.25192,-4.27533 -0.65192,-1.88474 -0.66285,-4.95815 -0.0286,-8.04053 0.26025,-1.26483 0.64908,-3.57044 0.86407,-5.12357 0.49435,-3.57114 0.80434,-4.59956 1.24748,-4.13861 0.47581,0.49493 2.2604,6.30627 2.68898,8.75638 0.59454,3.39877 0.50504,5.19841 -0.35612,7.16045 -0.94908,2.16243 -1.47863,4.22795 -1.48035,5.77421 -0.003,1.46211 -0.44346,3.22955 -0.73129,2.92524 -0.11115,-0.11751 -0.53965,-1.48472 -0.95223,-3.03824 z M -65.668078,167.47903 c 0.8682,-0.17972 1.2281,-0.53925 1.2281,-1.2267 0,-0.5438 0.09,-0.5913 1.0438,-0.54932 0.5742,0.0253 1.5228,-0.0869 2.1082,-0.24928 l 1.0643,-0.2952 -0.068,-2.25699 c -0.037,-1.24135 0.014,-3.08595 0.1138,-4.09911 0.1716,-1.73695 0.1124,-2.09152 -1.0366,-6.21089 l -1.2186,-4.36879 0.3775,-1.32693 c 0.3423,-1.20323 0.3403,-1.49141 -0.021,-3.09123 -0.5266,-2.33183 -0.5037,-2.90033 0.2225,-5.51108 1.066,-3.83237 1.0146,-7.91062 -0.1458,-11.56433 -0.1801,-0.56686 -0.1085,-1.43128 0.285,-3.43862 0.4642,-2.36897 0.5092,-3.21772 0.3862,-7.28458 -0.1306,-4.31753 -0.1041,-4.72142 0.4272,-6.50882 0.3115,-1.04809 0.7085,-2.51353 0.8824,-3.25652 0.1738,-0.74299 0.8609,-2.49074 1.5269,-3.88392 0.6661,-1.39319 1.2731,-2.915613 1.349,-3.383193 0.1516,-0.93437 0.514,-1.31483 0.8045,-0.8447 0.2413,0.39029 0.701,3.818083 0.9728,7.252153 0.2106,2.66076 0.4265,4.48109 1.049,8.84218 0.1736,1.21579 0.3228,3.81318 0.3315,5.77197 0.01,1.96561 0.1541,4.12573 0.3243,4.82077 0.2304,0.94098 0.245,1.71708 0.058,3.0702 -0.1378,0.99598 -0.3241,3.13718 -0.4139,4.75825 -0.09,1.62106 -0.3154,3.69514 -0.501,4.60905 -0.1857,0.91392 -0.4123,3.72764 -0.5035,6.25272 l -0.1658,4.59105 -0.9621,2.21815 c -1.429,3.29464 -1.8959,5.88105 -1.9006,10.52599 l 0,3.88098 0.8518,0.3559 c 0.4685,0.19572 1.1316,0.35587 1.4737,0.35587 0.5264,0 0.622,0.11247 0.622,0.73218 0,0.58918 0.1319,0.76905 0.6754,0.92106 0.7879,0.22034 7.1127,0.18026 8.3558,-0.053 0.8005,-0.15017 0.8395,-0.20305 0.6927,-0.9371 -0.086,-0.42786 -0.4307,-1.19374 -0.7671,-1.70194 -0.4563,-0.68952 -0.5513,-1.03333 -0.3745,-1.35489 0.3441,-0.62603 1.1813,-5.40311 1.496,-8.53626 0.1492,-1.48597 0.5441,-3.75178 0.8775,-5.03512 1.2896,-4.96377 1.6177,-8.92912 1.8187,-21.98262 0.1999,-12.97542 0.5171,-17.129 2.1039,-27.548593 0.1096,-0.72017 0.2402,-0.81353 1.8009,-1.28757 0.9255,-0.28111 1.9061,-0.70538 2.1791,-0.94285 0.7458,-0.64867 1.7733,-4.07476 1.7733,-5.91279 0,-1.39537 0.4046,-3.25312 0.9996,-4.58922 0.4923,-1.10562 0.8896,-21.51914 0.4996,-25.66685 -0.1462,-1.55352 -0.4396,-4.9246 -0.6521,-7.49128 -0.2125,-2.56669 -0.6558,-7.1329 -0.9851,-10.14715 -0.3294,-3.01424 -0.5989,-6.35249 -0.5989,-7.41832 0,-1.06583 -0.1167,-2.19176 -0.2594,-2.50207 -0.1996,-0.43387 -1.122,-0.89374 -3.9931,-1.99081 -4.9578,-1.89439 -8.4535,-3.72584 -9.1859,-4.81261 -0.3614,-0.5363 -0.5616,-0.68571 -0.5616,-0.41905 0,3.36271 -1.6217,9.48138 -2.139,8.07057 -0.1885,-0.51416 -0.4968,-0.34899 -1.0652,0.57061 -0.6061,0.98068 -0.7214,0.92852 -1.3095,-0.59224 -0.3992,-1.03227 -0.3956,-1.09213 0.1158,-1.91958 l 0.5279,-0.85408 -0.732,-0.90501 c -0.9439,-1.16712 -1.3197,-1.21839 -2.3169,-0.31614 l -0.818,0.74006 0.5505,0.97719 0.5507,0.97719 -0.6587,2.60118 c -0.7684,3.0342 -0.7001,3.04242 -2.515,-0.30271 -1.6457,-3.03316 -2.3243,-5.65374 -2.1458,-8.2867 0.2007,-2.96084 0.7388,-4.03767 1.3487,-2.69906 0.3524,0.77339 1.9871,2.55454 3.53,3.84636 l 1.1851,0.99226 1.9004,-1.18445 c 3.043,-1.89661 3.6089,-2.50866 3.6965,-3.99825 0.04,-0.69158 0.3436,-1.83647 0.673,-2.54419 0.3296,-0.70772 0.6002,-1.39764 0.6015,-1.53317 0,-0.13553 0.3159,-0.54231 0.6991,-0.90397 0.4153,-0.39196 0.9113,-1.31139 1.2281,-2.27631 0.5919,-1.8031 0.6622,-2.60742 0.2629,-3.00675 -0.1943,-0.19423 -0.19,-0.64648 0.015,-1.6353 0.1561,-0.75175 0.303,-2.06226 0.3265,-2.9122504 0.043,-1.53659 0.034,-1.55664 -1.4544,-3.51034 -1.2414,-1.62938 -1.7721,-2.10716 -3.1079,-2.79781 -1.3473,-0.69656 -1.7729,-0.80699 -2.6004,-0.67466 -0.5687,0.0909 -1.2482,0.0403 -1.5981,-0.1191 -0.5283,-0.24075 -0.89,-0.13557 -2.7419,0.79747 -1.1734,0.59113 -2.4441,1.42792 -2.824,1.85954 -0.7295,0.82908 -0.8079,1.2188 -1.1113,5.5214504 -0.106,1.50472 -0.2524,2.16995 -0.498,2.26423 -0.7028,0.26967 -0.1462,4.42102 0.738,5.5051 0.3051,0.37391 0.675,1.36561 0.8512,2.28144 0.3758,1.95388 0.1382,2.66591 -1.49,4.46437 -1.0609,1.17173 -1.0623,1.17236 -4.8683,2.13708 -2.0938,0.53076 -4.9676,1.19289 -6.386,1.47142 -3.7105,0.72859 -3.6473,0.70916 -3.9123,1.20434 -0.1333,0.24902 -0.361,1.21483 -0.5059,2.14624 -0.145,0.93141 -0.5276,2.63296 -0.8503,3.78121 -0.3228,1.14825 -0.7105,2.55723 -0.8615,3.13105 l -0.2746,1.04332 -2.4506,-1.9864 c -1.3478,-1.09251 -3.3607,-2.981 -4.4731,-4.19665 -2.381,-2.60178 -6.5827,-6.06769 -8.626,-7.11537 -1.2963,-0.66462 -1.5921,-0.7241 -2.8661,-0.57624 -1.3107,0.15213 -1.4491,0.12045 -1.7897,-0.40956 -0.661302,-1.02935 -2.098702,-5.74824 -2.883002,-9.46504 -0.9975,-4.72719 -1.786,-7.3915704 -2.8445,-9.6123304 -2.0401,-4.27989 -4.9509,-5.62258 -8.3133,-3.83479 -0.6213,0.3304 -1.4591,0.60072 -1.8615,0.60072 -2.0308,0 -3.7504,1.68209 -4.7149,4.61212 -0.5414,1.64428 -0.6453,2.4992904 -0.7812,6.4245204 -0.3012,8.69875 -1.6268,16.87017 -2.92,18.00008 -0.2904,0.25374 -1.3068,1.05155 -2.2588,1.77289 -2.01,1.52316 -3.4763,3.01594 -5.3166,5.41273 -0.7235,0.94232 -2.0865,2.30214 -3.0288,3.02182 -0.9424,0.71968 -2.888,2.40305 -4.3236,3.74083 -2.4754,2.3066 -2.9161,2.5769 -2.9161,1.7883 0,-0.18599 -1.0347,-2.84785 -2.2994,-5.91525 -1.2647,-3.0674 -2.5,-6.12941 -2.7453,-6.80445 -0.6947,-1.91225 -3.3944,-4.54462 -4.6608,-4.54462 -0.218,0 -0.6837,-0.34135 -1.0348,-0.75856 l -0.6383,-0.75858 -2.7578,0.17231 -2.7577,0.17232 -0.9809,-1.01068 -0.9808,-1.01069 0.1268,-1.65746 c 0.07,-0.91161 0.2412,-1.87823 0.3812,-2.14805 0.2422,-0.46675 0.2652,-0.45857 0.4741,0.16826 0.1526,0.45787 0.1026,1.0035 -0.1639,1.78865 -0.211,0.62139 -0.3759,1.37462 -0.3665,1.67385 0.01,0.29923 0.1845,-0.009 0.3892,-0.68403 0.4951,-1.63432 0.7058,-1.79647 1.1693,-0.90007 0.4835,0.93505 0.4875,1.43383 0.019,2.37377 l -0.3673,0.73685 0.4916,-0.57985 c 0.585,-0.69 0.6359,-1.91523 0.1298,-3.1264 -0.231,-0.55297 -0.3101,-1.24328 -0.2186,-1.91022 0.1059,-0.77284 0,-1.37141 -0.3981,-2.30244 -0.5131,-1.19283 -0.5258,-1.37662 -0.2445,-3.5417 0.4897,-3.767 0.1972,-5.26875 -1.7141,-8.8027004 -0.2557,-0.47281 -0.7601,-1.60142 -1.1209,-2.50802 -1.12,-2.81487 -3.254,-4.30953 -5.8033,-4.06458 -1.7828,0.17131 -2.8528,1.35642 -3.658,4.05158 -0.171,0.57223 -0.565,1.20695 -0.8756,1.41047 -0.3107,0.20353 -0.8739,0.89588 -1.2517,1.53856 -0.6596,1.1221004 -0.6863,1.2952404 -0.6726,4.3615004 0.01,1.75615 0.1061,4.96144 0.2185,7.12286 0.1447,2.7819 0.117,4.54442 -0.094,6.03375 -0.3266,2.29858 -0.4123,2.51839 -1.079,2.76478 -0.2472,0.0914 -0.6162,0.59059 -0.82,1.10935 -0.3328,0.84718 -0.5629,1.02187 -2.2605,1.71595 -1.0395,0.42501 -2.3419,1.10509 -2.8942,1.51127 -2.0202,1.48565 -4.1815,6.97152 -4.8471,12.30287 -0.478,3.82847 -1.1704,6.24922 -3.0647,10.71426 -2.839,6.69184 -4.2371,12.07665 -5.536,21.32188 -0.7222,5.14123 -1.2282,11.09948 -1.0653,12.54498 0.075,0.66505 -0.03,1.28582 -0.3097,1.82613 -0.4202,0.81243 -0.4354,0.81815 -2.0315,0.76029 -2.9528,-0.10704 -4.9763,1.25038 -6.5698,4.40723 -1.896,3.755763 -2.6557,7.036793 -1.9393,8.375303 0.1933,0.36116 0.1559,1.82142 -0.138,5.38682 -0.2217,2.69026 -0.3291,5.41662 -0.2386,6.05861 0.214,1.51894 1.1228,3.08101 2.1684,3.72722 0.4582,0.28322 3.7565,1.71779 7.3295,3.18792 l 6.4964,2.67299 3.7867,-0.12357 c 2.6703,-0.0871 3.951,-0.22668 4.3438,-0.47335 0.443,-0.27816 0.5756,-0.28516 0.648,-0.0342 0.1467,0.50909 1.1147,5.5301 1.5288,7.92966 0.7775,4.50585 1.5905,7.64939 2.4139,9.33341 0.623,1.27428 0.9397,2.39485 1.2235,4.3291 l 0.3829,2.60976 -0.7357,3.89905 c -1.1264,5.96915 -1.0153,6.97815 0.9664,8.76842 0.781,0.70558 1.2,0.9014 1.9194,0.8972 1.1237,-0.007 2.8795,-0.76914 3.2152,-1.39632 0.4884,-0.91264 0.7983,-4.30626 0.5231,-5.72723 -0.2053,-1.05943 -0.1704,-1.97764 0.1641,-4.32708 l 0.4247,-2.98227 -0.6417,-1.43881 c -0.8844,-1.98335 -1.4494,-5.10682 -1.5042,-8.31606 -0.025,-1.48598 -0.1643,-2.92283 -0.3089,-3.19301 -0.1806,-0.33765 -0.192,-1.25907 -0.037,-2.94739 0.1244,-1.35088 0.1446,-4.50091 0.045,-7.00005 -0.1,-2.49914 -0.1633,-5.25149 -0.1418,-6.11633 0.022,-0.86486 -0.065,-1.6976 -0.1915,-1.85052 -0.1441,-0.17355 -0.1433,-0.64427 0,-1.25215 0.5603,-2.34457 0.5553,-7.22341 -0.012,-11.65835 -0.5566,-4.35114 -0.6111,-9.329773 -0.1073,-9.806513 0.1248,-0.11816 1.0857,-0.25345 2.1353,-0.30068 l 1.9118,-0.0859 0.8071,1.8526 c 0.444,1.01894 1.8688,3.704553 3.1662,5.968053 1.2975,2.26348 2.8051,5.18773 3.3502,6.49831 3.4199,8.22236 3.6935,8.97301 3.441,9.44472 -0.1377,0.25733 -0.1785,0.65265 -0.091,0.87852 0.088,0.22584 0.2621,2.06852 0.3871,4.09485 0.1476,2.39324 0.4508,4.63099 0.8652,6.38602 0.3509,1.48598 0.7318,3.86459 0.8465,5.28582 0.1663,2.06156 0.3568,2.90581 0.9424,4.17547 0.4589,0.99497 0.89,2.55802 1.1503,4.17039 0.2289,1.41843 0.5122,2.76438 0.6294,2.99099 0.1495,0.28884 -0.037,0.91305 -0.6241,2.08772 -1.2632,2.52788 -1.3006,2.9973 -0.3883,4.87012 0.9023,1.85207 1.4523,4.59877 1.4645,7.31339 0.01,1.52051 0.089,1.94208 0.4018,2.06211 0.6298,0.24171 0.8271,-0.3918 0.831,-2.66938 0,-1.17404 0.1052,-2.19727 0.2291,-2.27383 0.3357,-0.2075 0.9517,1.88321 1.3611,4.61907 0.1992,1.33164 0.4797,2.56279 0.6234,2.7359 0.342,0.41214 1.9692,0.81181 4.118,1.01152 2.4213,0.22503 2.8547,0.0694 3.3391,-1.19895 0.2219,-0.58088 0.4034,-1.23732 0.4034,-1.45872 0,-0.2214 -0.5539,-1.21243 -1.2308,-2.20231 -1.2966,-1.89596 -1.9983,-3.80818 -2.4519,-6.68174 -0.1466,-0.92891 -0.4282,-2.07584 -0.6258,-2.54873 -0.1976,-0.47288 -0.485,-2.44419 -0.6387,-4.38069 -0.2501,-3.15032 -0.2371,-3.5856 0.1233,-4.13566 0.5037,-0.76875 0.5138,-1.5923 0.028,-2.28577 -0.312,-0.44543 -0.3274,-0.72307 -0.092,-1.65853 0.2155,-0.85604 0.2115,-1.76956 -0.017,-3.83698 -0.1648,-1.49241 -0.2289,-3.45095 -0.1422,-4.35234 0.087,-0.90138 0.037,-3.62836 -0.1112,-6.05996 -0.6044,-9.95169 -0.772,-11.24518 -1.5708,-12.13043 -0.4904,-0.5434 -1.6912,-5.49622 -2.4622,-10.15525 -0.3518,-2.12549 -0.972,-5.264123 -1.3784,-6.974733 -0.4064,-1.71062 -0.7091,-3.13615 -0.6727,-3.16786 0.036,-0.0317 0.757,-0.40386 1.6013,-0.82711 0.8444,-0.42323 1.5352,-0.86924 1.5352,-0.99117 0,-0.12192 -1.1824,-2.01066 -2.6275,-4.19716 -2.563,-3.87786 -2.6186,-3.99146 -2.2643,-4.62571 0.2634,-0.47155 0.5972,-0.67261 1.2148,-0.73174 1.5208,-0.14556 6.2585,-3.7116 8.3406,-6.27789 0.6795,-0.83745 1.7456,-1.9491 2.3691,-2.47032 2.0309,-1.69762 3.4366,-5.73014 3.686,-10.57392 0.1316,-2.55725 -0.054,-4.11793 -0.8036,-6.75443 -0.1643,-0.57787 -0.1106,-0.56004 0.9113,0.30261 1.4513,1.22512 8.1999,5.34673 8.753,5.34587 0.2411,-4.9e-4 0.9063,0.24722 1.4783,0.55022 1.0328,0.54703 1.049,0.54777 2.2947,0.10531 0.6901,-0.24508 1.3157,-0.3845 1.3904,-0.30983 0.075,0.0747 -0.034,0.71838 -0.2423,1.43047 -0.2079,0.71209 -0.7297,2.49618 -1.1594,3.96464 -0.9228,3.15375 -1.8598,8.21749 -2.104,11.3714 -0.2128,2.74788 0.1661,6.22881 1.1202,10.29041 0.3829,1.62974 1.0278,4.72451 1.4332,6.87725 0.4054,2.15275 1.1732,5.406213 1.7062,7.229903 0.5329,1.8237 1.0478,3.78701 1.1443,4.3629 0.104,0.62099 0.3547,1.14302 0.616,1.2829 0.4854,0.25977 0.8389,2.68719 1.1197,7.68714 0.14,2.49418 0.1184,2.67326 -0.3708,3.0702 -0.4974,0.40365 -0.5036,0.46662 -0.1449,1.48195 0.2061,0.58321 1.4752,5.33588 2.8204,10.56148 1.3451,5.2256 2.8435,10.87779 3.3297,12.56043 0.7183,2.4857 0.975,4.0055 1.3687,8.10531 1.2732,13.25845 1.0987,12.09039 1.9161,12.82081 0.8611,0.76944 3.0783,1.3082 4.5638,1.109 0.7021,-0.0942 1.2015,-0.35938 1.6756,-0.89001 0.7246,-0.81078 0.7891,-1.32212 0.4203,-3.32711 -0.1243,-0.67545 -0.3447,-2.22283 -0.4898,-3.43863 -0.3307,-2.77005 -1.3674,-7.90298 -1.8736,-9.27693 -0.3683,-0.99958 -0.4599,-1.93513 -1.039,-10.61794 -0.2744,-4.11338 -0.5652,-6.93661 -1.1399,-11.0649 -0.189,-1.35757 -0.4158,-3.56811 -0.504,-4.91232 -0.1002,-1.52628 -0.3339,-2.84764 -0.6225,-3.51906 -0.4981,-1.15891 -0.6238,-4.67294 -0.3032,-8.46687 0.1577,-1.86565 0.164,-1.87918 0.8597,-1.87918 0.6815,0 0.7008,0.0356 0.7025,1.28948 0,1.23363 0.6528,5.46375 1.2006,7.79831 0.1427,0.60789 0.2621,1.77226 0.2654,2.58749 0,0.81519 0.2156,2.08626 0.4717,2.82458 0.2562,0.73829 0.5387,2.39237 0.6278,3.67571 0.089,1.28335 0.3228,3.60442 0.5193,5.15794 0.1965,1.55352 0.5159,4.26143 0.7098,6.01759 0.2103,1.90445 0.6088,3.96355 0.9873,5.10237 0.627,1.88648 0.6315,1.95279 0.3721,5.52635 -0.2741,3.77708 -0.088,15.47161 0.2615,16.41277 0.2723,0.73367 1.8255,1.41182 2.852,1.24524 1.0313,-0.16733 3.188302,-1.14803 4.006802,-1.82163 0.5967,-0.49114 0.6081,-0.5661 0.5556,-3.65862 -0.066,-3.86214 -0.5038,-9.77082 -0.7988,-10.77132 -0.2579,-0.87466 -0.3431,-4.72089 -0.1769,-7.9825 0.065,-1.28334 0.2586,-7.00705 0.4293,-12.71939 0.309,-10.33918 0.3081,-10.38847 -0.1924,-10.92991 -1.0185,-1.10176 -1.9126,-5.59415 -1.6359,-8.21936 0.1424,-1.35111 0.2246,-1.53554 0.6858,-1.53886 0.9969,-0.007 1.0664,-0.25402 1.2096,-4.29452 0.083,-2.33566 0.4125,-5.723323 0.8127,-8.350943 0.5787,-3.79932 0.6762,-5.21559 0.6929,-10.07027 0.011,-3.247 -0.1785,-8.49237 -0.446,-12.33555 -0.3548,-5.09643 -0.3976,-6.76813 -0.1802,-7.03009 0.1738,-0.20944 1.0474,-0.41018 2.2361,-0.51388 2.3893,-0.20841 3.275,-0.64021 6.469,-3.1537 1.3257,-1.04323 2.5921,-1.89678 2.8143,-1.89678 0.2221,0 0.823,-0.40928 1.3352,-0.9095 l 0.9315,-0.90951 0.013,4.16392 c 0.021,6.75025 0.3145,10.39577 0.9184,11.40958 0.537,0.90158 1.3729,3.94054 1.6505,6.00075 0.1174,0.87045 0.353,1.38874 0.8376,1.84212 0.8781,0.82139 1.1293,2.2948 0.6317,3.70505 -0.2018,0.57213 -0.367,1.19376 -0.367,1.3814 0,0.47772 1.3229,1.2295 2.4926,1.41656 l 0.9827,0.15712 -0.1654,4.47668 c -0.1899,5.14185 0.2123,15.485323 0.7567,19.459213 0.2638,1.926 0.433,6.65126 0.5893,16.45627 0.4001,25.09235 0.4319,25.78325 1.3611,29.53633 l 0.8059,3.25544 -0.6538,0.5516 c -0.3596,0.30339 -0.8977,1.02032 -1.1958,1.59319 l -0.542,1.04156 0.6442,0.42206 c 0.5264,0.34495 1.3219,0.4316 4.3545,0.47429 2.0407,0.0287 3.9868,-0.005 4.3245,-0.0749 z M -193.95398,94.218627 c -0.1085,-0.10262 0.033,-0.57749 0.3154,-1.0553 0.522,-0.88483 1.4107,-1.27563 2.0151,-0.88613 0.1776,0.11443 0.6163,0.14653 0.975,0.0713 0.3908,-0.082 0.7278,-0.0141 0.8412,0.16928 0.2488,0.40258 0.8168,2.85713 0.6904,2.98353 -0.1334,0.13336 -4.5893,-1.04827 -4.8371,-1.28271 z m 36.6734,-17.02208 c 0,-0.30395 0.07,-1.11552 0.1524,-1.80349 0.1387,-1.15442 0.2163,-1.27471 1.006,-1.56028 0.7892,-0.28538 0.8435,-0.36948 0.6994,-1.08249 -1.3812,-6.83241 -1.3854,-10.32695 -0.018,-14.89501 0.3147,-1.05148 0.648,-2.55949 0.7406,-3.35113 0.1934,-1.65304 1.7615,-6.88905 2.1317,-7.11781 0.3963,-0.24497 1.0219,0.58315 2.6196,3.46791 1.2481,2.25353 1.5388,3.0074 1.7522,4.5439 0.1408,1.01316 0.4235,2.42448 0.6283,3.13625 0.2744,0.95335 0.3107,1.53546 0.1381,2.21055 -0.1289,0.50402 -0.3071,1.63483 -0.3961,2.5129 -0.2333,2.30151 -0.5632,3.39413 -1.114,3.68888 -0.6332,0.33892 -1.6274,2.3259 -2.0537,4.10472 -0.6145,2.56386 -0.944,3.07585 -2.6043,4.04639 -0.6079,0.35535 -1.5422,1.09727 -2.0762,1.64872 -1.0887,1.12428 -1.6091,1.2701 -1.6059,0.44999 z m 60.697002,-15.93144 c -1.0285,-0.34733 -1.4964,-0.6249 -1.4142,-0.83902 0.067,-0.17598 0.6816,-1.849 1.3646,-3.71782 0.683,-1.86882 1.5253,-3.89523 1.8717,-4.50313 2.2417,-3.93357 2.533,-5.71921 1.4603,-8.94752 -0.376,-1.13155 -0.6159,-2.23391 -0.533,-2.4497 0.096,-0.24952 0.4439,-0.39186 0.9564,-0.39102 0.6551,0.001 1.1914,0.34582 2.8648,1.84164 1.1323,1.01217 3.4258,2.85954 5.0965,4.10525 1.6708,1.24572 3.0378,2.38971 3.0378,2.54219 0,0.74965 -4.9522,7.04744 -7.561,9.61537 -3.5114,3.45651 -4.2235,3.73 -7.1439,2.74376 z m -32.944602,-4.36194 c -1.6641,-1.22729 -2.8652,-2.32524 -3.3859,-3.09515 l -0.807,-1.19316 0.807,-0.84028 c 0.6844,-0.71269 8.7785,-7.18494 9.6752,-7.73656 0.3998,-0.24596 0.9971,0.003 1.2274,0.51062 0.1024,0.22596 0.1938,1.57137 0.2031,2.9898 0.015,2.37801 0.079,2.70934 0.8096,4.25216 1.2098,2.55415 1.1309,5.08124 -0.1585,5.08124 -0.2262,0 -1.2903,0.43404 -2.3647,0.96454 -1.0744,0.5305 -2.2851,0.96549 -2.6904,0.96666 -0.5352,0.002 -1.4426,-0.51841 -3.3158,-1.89987 z m -42.0003,-28.65586 c 0,-0.71974 0.119,-1.61977 0.2645,-2.00006 l 0.2644,-0.69143 0.5952,0.68914 c 0.7207,0.83443 0.7563,1.74537 0.1098,2.80576 -0.7187,1.17875 -1.2339,0.84331 -1.2339,-0.80341 z m -2.4562,1.10577 c 0,-0.14047 0.2215,-0.68962 0.4923,-1.22035 0.2707,-0.53072 0.6504,-1.64282 0.8437,-2.47135 0.1933,-0.82853 0.4139,-1.56885 0.4902,-1.64517 0.1629,-0.16287 0.1475,-0.37718 0.2111,2.95204 l 0.05,2.6405 -1.0438,-1.3e-4 c -0.5742,-8e-5 -1.0439,-0.11507 -1.0439,-0.25554 z m 14.4047,-7.59953 c 0.2374,-0.23738 0.8236,0.82356 0.8036,1.45446 -0.018,0.56025 -0.069,0.52229 -0.4751,-0.34957 -0.2504,-0.53794 -0.3982,-1.03514 -0.3285,-1.10489 z M 906.49382,167.16609 c 1.6188,-0.4912 1.6388,-0.52888 1.7955,-3.38392 0.08,-1.45552 0.2156,-3.45353 0.3015,-4.44007 0.1312,-1.50759 0.047,-2.20443 -0.5264,-4.36885 -0.6092,-2.29827 -0.6523,-2.70639 -0.4008,-3.79577 0.2295,-0.99445 0.2095,-1.52753 -0.108,-2.87682 -0.4358,-1.85182 -0.3638,-7.11517 0.1621,-11.84927 0.4128,-3.71695 0.4261,-11.9272 0.024,-14.73695 -0.1838,-1.28334 -0.7626,-4.07423 -1.2862,-6.20197 -0.7829,-3.18178 -1.8609,-9.71615 -1.6322,-9.89461 0.033,-0.0257 0.3915,-0.15673 0.7968,-0.29108 0.5068,-0.16803 0.7216,-0.38935 0.688,-0.70907 -0.027,-0.25564 -0.2205,-1.79113 -0.4304,-3.41219 -0.2583,-1.994803 -0.406,-5.566993 -0.4571,-11.052733 l -0.075,-8.10532 -0.9973,-2.82459 c -0.5485,-1.55352 -1.4577,-4.01619 -2.0205,-5.47261 -1.7904,-4.63328 -1.7572,-5.9717 0.1287,-5.18374 1.7666,0.73816 2.5543,0.16131 5.4974,-4.02608 3.9775,-5.65924 5.4035,-8.53406 5.4035,-10.89362 0,-1.5098 -0.7553,-3.28937 -2.7488,-6.47681 -1.0139,-1.62107 -2.5406,-4.21846 -3.3927,-5.77198 -4.0377,-7.36164 -6.256,-9.29493 -11.8054,-10.28882 -2.4248,-0.43428 -5.141,-1.4692 -5.141,-1.9588 0,-0.1123 0.434,-0.3999 0.9645,-0.6391 0.5305,-0.23921 1.2696,-0.75336 1.6425,-1.14257 0.3728,-0.38922 0.7678,-0.70766 0.8776,-0.70766 0.3553,0 0.2115,1.05347 -0.2068,1.51576 -0.3819,0.42194 -0.3745,0.44917 0.1228,0.44917 0.2911,0 0.7601,-0.23084 1.0422,-0.51298 0.6278,-0.62777 1.4393,-2.36413 1.4466,-3.09536 0,-0.29598 0.1159,-0.60645 0.251,-0.68994 0.1351,-0.0835 0.2456,0.0758 0.2456,0.35393 0,0.79018 0.424,0.59397 0.7318,-0.33863 0.3532,-1.07015 0.1546,-2.14057 -0.9111,-4.90951 -0.464,-1.20585 -1.1689,-3.47165 -1.5663,-5.03513 -1.5018,-5.9086704 -3.5572,-8.7988104 -7.71219,-10.8443304 -2.0833,-1.0256 -3.7773,-1.16893 -5.9643,-0.50464 -4.1743,1.26788 -6.6454,4.19353 -8.4978,10.0608004 -1.3188,4.17697 -1.6898,8.06582 -1.0117,10.60347 0.4518,1.69062 0.3013,2.30819 -0.5128,2.10387 -1.3668,-0.34306 -0.1323,1.25099 1.5956,2.06033 0.6887,0.32256 1.2522,0.67527 1.2522,0.78379 0,0.48383 -1.7043,0.98806 -4.4065,1.30371 -1.7793,0.20785 -3.3928,0.54674 -4.1119,0.86368 -1.5323,0.67535 -3.2767,2.39426 -4.619,4.55137 -1.1437,1.83803 -6.9605,15.14363 -7.6357,17.46599 -0.5017,1.72583 -0.3776,3.556 0.3405,5.02119 1.0331,2.10792 7.427,9.99443 11.4743,14.15286 l 2.463,2.53053 1.8353,-0.0374 c 1.0095,-0.0206 2.1232,0.0822 2.4749,0.22847 0.601,0.24985 0.6565,0.41896 0.9193,2.80318 0.3168,2.87421 0.1529,3.90543 -1.1256,7.08119 -2.0823,5.17237 -3.6657,11.17219 -4.2598,16.140923 -0.2411,2.01582 -0.2388,2.58307 0.012,2.88486 0.3319,0.39999 0.2167,3.09668 -0.268,6.26932 -0.3314,2.16945 -2.2311,7.91723 -3.6541,11.05606 -2.0596,4.54303 -2.6568,6.44611 -5.4094,17.23889 -1.0517,4.12355 -2.0088,7.30113 -2.5806,8.56745 -0.729,1.61465 -1.0221,2.7475 -1.4816,5.72621 -0.315,2.04232 -0.8474,4.44213 -1.1831,5.33291 -0.8163,2.16576 -0.9774,4.04878 -0.5859,6.84862 l 0.3256,2.32783 1.0979,0.20499 c 1.5434,0.28821 5.2574,0.0133 6.1657,-0.4565 0.6553,-0.33883 0.7408,-0.49757 0.6566,-1.21875 -0.086,-0.73583 -0.026,-0.83737 0.528,-0.90202 0.4621,-0.0539 0.6091,-0.20072 0.5646,-0.56405 -0.033,-0.27018 -0.1679,-1.26493 -0.2995,-2.21055 -0.4042,-2.9048 -0.3093,-5.74997 0.2314,-6.94135 1.1119,-2.44943 1.1008,-4.12124 -0.035,-5.25665 -0.4118,-0.41187 -0.4759,-0.68948 -0.3461,-1.50077 0.1755,-1.09756 3.9986,-8.79251 6.1902,-12.45931 2.0499,-3.42981 3.165,-5.94106 3.9974,-9.00254 1.0978,-4.03736 1.7832,-5.67657 3.4931,-8.35401 1.1588,-1.81446 2.0117,-3.63789 3.4275,-7.32785 l 1.8849,-4.91232 1.9334,0.08 c 1.0635,0.044 3.682,-0.1494 5.819,-0.42982 6.03519,-0.79197 6.07439,-0.78214 6.54929,1.63919 0.1523,0.77681 0.3946,2.02026 0.5383,2.76325 0.1437,0.74299 0.9013,2.95353 1.6835,4.91232 1.5676,3.92526 1.8285,5.05816 2.2057,9.57902 0.1602,1.91941 0.8161,5.74004 1.75,10.19305 0.8216,3.91758 1.5492,7.78603 1.6168,8.59656 0.068,0.81053 -0.056,2.67102 -0.2742,4.13443 -0.2185,1.46337 -0.3353,2.76091 -0.2596,2.8834 0.076,0.12246 -0.1405,1.46728 -0.4804,2.98843 -1.1318,5.06396 -1.3765,7.16071 -1.206,10.33176 l 0.1575,2.93059 0.8125,0.33946 c 0.8736,0.36501 4.4309,0.43381 5.5093,0.10657 z M 867.39813,67.126297 c -2.4762,-2.78181 -3.2597,-3.83504 -4.5221,-6.07899 -0.6459,-1.14825 -1.6548,-2.80498 -2.2418,-3.68161 -0.587,-0.87664 -1.0673,-1.87424 -1.0673,-2.2169 0,-0.34266 0.4789,-1.39385 1.0644,-2.33597 0.5854,-0.94213 1.6324,-2.81823 2.3267,-4.16912 1.1507,-2.23903 3.2224,-5.03513 3.7306,-5.03513 0.2255,0 0.9242,2.96675 1.7275,7.33482 0.2823,1.53501 1.0033,4.36911 1.6022,6.29801 0.5989,1.9289 1.2774,4.67903 1.5078,6.1114 0.3726,2.31635 0.378,2.63838 0.049,2.91258 -0.2035,0.16955 -0.7504,0.82986 -1.2154,1.46736 -0.465,0.63749 -0.9649,1.1625 -1.111,1.16667 -0.1461,0.004 -0.9789,-0.79372 -1.8507,-1.77312 z m 34.26859,-4.1418 c -0.6006,-0.6661 -3.2332,-2.67404 -3.506,-2.67404 -0.1143,0 -0.6105,-0.65219 -1.1025,-1.44931 l -0.8946,-1.44931 0,-4.38407 c 0,-4.03281 0.058,-4.58954 0.6939,-6.94869 0.3804,-1.41055 0.8234,-2.60855 0.9844,-2.66221 0.8546,-0.28487 5.7695,5.35525 8.367,9.60156 l 0.5727,0.9361 -0.7612,2.01129 c -0.4187,1.10621 -0.8346,2.34287 -0.9242,2.74814 -0.3237,1.46448 -2.246,4.78951 -2.7688,4.78951 -0.1073,0 -0.4056,-0.23354 -0.6629,-0.51897 z M 787.65643,167.14037 c 1.5886,-0.24106 2.5452,-0.66979 3.2614,-1.46168 0.4576,-0.50599 0.4909,-0.89222 0.4943,-5.73572 0,-4.76929 0.048,-5.31279 0.5527,-6.65838 0.7186,-1.91808 0.6937,-2.21778 -0.317,-3.80417 -0.5442,-0.85414 -0.8534,-1.64213 -0.8534,-2.1747 0,-0.45937 0.4618,-4.38819 1.0261,-8.73076 0.898,-6.91015 1.0275,-8.5086 1.0377,-12.80786 0.01,-3.38228 -0.1154,-5.75382 -0.3961,-7.61409 -0.7085,-4.69537 -0.7841,-11.46641 -0.1986,-17.80715 0.2806,-3.039503 0.698,-6.907953 0.9276,-8.596573 0.2798,-2.0584 0.4191,-4.77001 0.4227,-8.22813 l 0.01,-5.15793 -1.6639,-6.38601 c -0.915,-3.51231 -1.9874,-7.43602 -2.3828,-8.71937 -0.7632,-2.47663 -1.4663,-5.25618 -1.6601,-6.56321 -0.066,-0.44291 0.1191,-1.57826 0.4198,-2.57896 0.6511,-2.16696 3.0947,-7.31409 3.4723,-7.31409 0.1583,0 0.2143,0.23034 0.1344,0.55264 -0.075,0.30395 -0.1568,3.94005 -0.1809,8.08022 l -0.044,7.52758 2.3992,6.33993 c 2.2447,5.93171 2.3791,6.38799 2.0861,7.08655 -0.6683,1.59362 -0.5953,2.3842 0.3468,3.75377 0.484,0.70362 0.88,1.43551 0.88,1.62644 0,0.19092 0.2101,0.6065 0.4668,0.9235 0.4592,0.5672 0.4588,0.58735 -0.025,1.26753 -0.2707,0.38015 -0.4369,0.90265 -0.3693,1.16113 0.068,0.25847 -0.032,0.59808 -0.2202,0.75468 -0.1887,0.15659 -0.3431,0.58788 -0.3431,0.95841 0,0.64988 0.04,0.67039 1.1225,0.5802 2.1251,-0.17704 3.9023,-1.49841 4.2958,-3.19383 0.5176,-2.23063 0.1254,-3.87518 -1.4027,-5.8825 -0.7246,-0.95178 -0.9883,-2.48001 -1.1824,-6.85186 -0.2188,-4.93017 -0.5511,-7.55135 -1.2766,-10.07024 -0.5897,-2.0474 -0.645,-2.66373 -0.7495,-8.35094 -0.1195,-6.50871 -0.071,-6.97447 1.1906,-11.42114 0.4075,-1.43613 0.5291,-2.58216 0.552,-5.19993 0.033,-3.74716 -0.1141,-4.17061 -1.8354,-5.29366 -1.9403,-1.26594 -2.7829,-1.96788 -3.5338,-2.9439 -0.7091,-0.92163 -0.814,-1.26835 -0.9662,-3.19301 -0.3305,-4.18117 -1.5841,-8.89393 -3.7319,-14.02988 -1.7706,-4.2339904 -3.7209,-6.7258504 -6.3364,-8.0959904 -1.0489,-0.54944 -1.5692,-0.65625 -3.2163,-0.66023 -1.7151,-0.004 -2.1138,0.0828 -3.1362,0.68375 -2.2868,1.34422 -4.4413,4.93241 -5.7152,9.5182704 -1.8725,6.74061 -3.6403,12.70624 -3.9263,13.24955 -0.3701,0.70297 -1.9929,2.27554 -3.4329,3.32657 -1.338,0.9766 -1.9716,1.69131 -2.8311,3.19364 -0.7993,1.39706 -0.9139,1.79756 -0.3896,1.3625 0.2863,-0.23759 0.3249,-0.0167 0.2421,1.38221 l -0.099,1.66498 0.329,-0.98246 c 0.4726,-1.41066 0.8501,-2.04046 1.3994,-2.33446 0.4647,-0.24867 0.48,-0.17565 0.4242,2.02069 -0.032,1.25329 0.038,3.99187 0.1554,6.08574 0.174,3.10631 0.14,4.25914 -0.1852,6.26321 -0.2191,1.35088 -0.4961,3.67195 -0.6154,5.15793 -0.1734,2.15975 -0.3896,3.1487 -1.0777,4.92953 -1.4725,3.81114 -1.8059,5.88273 -2.1317,13.24604 -0.2838,6.41189 -0.8638,12.50373 -1.4967,15.71941 -0.6717,3.41301 -0.638,3.87325 0.3812,5.208 0.4728,0.61922 0.8596,1.20833 0.8596,1.30911 0,0.10081 -0.2086,1.21782 -0.4635,2.48225 -0.5512,2.73422 -0.683,3.67395 -0.9994,7.128853 -0.132,1.44061 -0.5862,3.98274 -1.0095,5.64917 -0.4232,1.6664 -0.8535,3.58248 -0.9562,4.25792 -0.3368,2.21465 -0.109,16.14752 0.3474,21.24578 0.5775,6.45262 0.4635,17.61713 -0.1927,18.85285 -0.2337,0.44002 -0.6977,2.13985 -1.0312,3.77737 -0.3379,1.65907 -0.8383,3.35249 -1.13,3.82466 -0.2881,0.46603 -1.3877,1.56212 -2.4437,2.43572 -1.9672,1.62755 -2.3418,2.17866 -2.0678,3.04215 0.366,1.15302 1.9561,1.43563 5.4463,0.96793 3.4985,-0.46881 3.9379,-0.7383 4.29,-2.63107 0.2766,-1.48747 1.2118,-3.76035 1.4792,-3.5951 0.1126,0.0696 0.2048,0.88196 0.2048,1.80515 0,1.30403 0.087,1.7118 0.3885,1.8276 0.6771,0.25984 2.2433,0.16108 2.5043,-0.15793 0.1382,-0.16885 0.7223,-2.59254 1.2982,-5.38598 1.202,-5.83026 1.2388,-5.44359 -0.8726,-9.14863 -0.9377,-1.6455 -1.1079,-2.14837 -1.1079,-3.2742 0,-1.82738 1.3946,-13.45415 1.8407,-15.34632 0.445,-1.88749 0.4771,-6.14016 0.077,-10.20149 -0.2307,-2.34145 -0.2314,-3.24601 0,-4.05266 0.1615,-0.57113 0.8403,-3.08319 1.5085,-5.58233 0.6682,-2.49914 1.3614,-4.986 1.5405,-5.52636 l 0.3255,-0.98246 2.3293,0.0226 c 1.3478,0.0131 3.5195,0.25934 5.1539,0.58446 1.5535,0.30904 3.8193,0.63045 5.0351,0.71428 l 2.2105,0.15236 0.28,3.92985 c 0.1708,2.3989 0.4391,4.36044 0.6885,5.03512 0.7072,1.91276 1.1163,5.5719 1.1178,9.99709 0,3.33155 0.1551,5.33141 0.7277,9.45621 1.2432,8.95542 1.435,13.11556 0.6714,14.5645 -0.1424,0.27017 -0.2345,1.23161 -0.2048,2.13653 0.048,1.45341 -0.9961,7.63485 -1.9206,11.37234 -0.1336,0.54035 -0.2456,1.54347 -0.2488,2.22913 -0.01,2.07491 1.2383,2.75493 4.2245,2.30176 z m -25.7207,-87.889203 c 0.4973,-2.04091 1.3973,-5.12037 1.9998,-6.84324 l 1.0956,-3.13249 -0.1188,2.43736 c -0.1089,2.23318 -0.2571,2.82575 -1.7692,7.07386 -2.0081,5.64132 -2.5166,5.83697 -1.2074,0.46451 z M 565.36764,167.18304 c 1.15985,-0.24746 1.67078,-0.67689 1.67078,-1.40431 0,-0.39343 0.23501,-0.6992 0.73685,-0.95871 0.60935,-0.3151 0.73685,-0.5323 0.73685,-1.25535 0,-0.69049 0.18072,-1.03431 0.85965,-1.63538 1.01977,-0.90284 1.06976,-1.42691 0.34165,-3.58287 -0.46829,-1.3867 -0.48165,-1.57405 -0.13921,-1.95243 0.32598,-0.36019 0.35093,-0.94915 0.17905,-4.22439 l -0.19973,-3.80584 -1.39237,-3.43862 -1.39238,-3.43862 -0.0784,-5.28074 c -0.0491,-3.31152 -0.21516,-6.01347 -0.4452,-7.24567 -0.48686,-2.60778 -0.34647,-14.30779 0.19497,-16.2496 0.63951,-2.29349 1.35147,-7.03513 1.48779,-9.90849 0.0737,-1.55352 0.18735,-2.990373 0.25257,-3.193013 0.20747,-0.64469 2.23778,3.408633 3.26025,6.508823 1.36464,4.13765 1.89942,6.04542 2.46456,8.79202 0.27028,1.31355 0.65948,2.71332 0.86491,3.11055 0.20541,0.39724 0.37737,1.14224 0.38211,1.65553 0.005,0.51328 0.16665,1.65166 0.3598,2.52974 0.48049,2.18434 0.45369,3.74746 -0.14401,8.40797 -0.28184,2.1976 -0.61578,6.04039 -0.7421,8.53953 -0.12632,2.49914 -0.36545,6.2018 -0.53144,8.22813 -0.27634,3.37372 -0.36353,3.78746 -1.03465,4.90911 -1.27362,2.12861 -1.58636,3.40476 -1.56578,6.38921 0.0102,1.48598 0.0895,3.36494 0.17618,4.17547 l 0.15756,1.4737 1.96493,0.33104 c 1.49312,0.25156 2.3134,0.26814 3.4162,0.0691 1.4334,-0.25876 1.465,-0.25191 2.5789,0.55894 0.6203,0.4515 1.3758,0.89739 1.6789,0.99089 1.056,0.32567 6.2927,0.17979 8.291,-0.23093 2.4847,-0.51068 2.7797,-0.76308 2.1337,-1.82531 -0.6456,-1.06168 -1.0979,-1.34379 -3.1188,-1.94565 -2.024,-0.60279 -3.7608,-1.64157 -4.5147,-2.70025 -0.4991,-0.70096 -0.5111,-0.80152 -0.1603,-1.33703 0.8711,-1.32935 1.5004,-8.57819 1.7424,-20.06885 l 0.1525,-7.24567 1.1043,-5.03513 c 0.6074,-2.76932 1.2624,-5.64302 1.4555,-6.38601 0.3051,-1.17343 0.3044,-1.68964 0,-3.92985 -0.4889,-3.54279 -1.1104,-9.38052 -1.3593,-12.76672 l -0.2072,-2.819283 1.4263,-1.89294 c 1.4198,-1.88417 1.4272,-1.90288 1.6065,-4.05514 0.1504,-1.80563 0.095,-2.48682 -0.3345,-4.12999 -0.5678,-2.1713 -0.4648,-3.36509 0.3907,-4.52485 1.1861,-1.60814 0.7039,-19.09138 -0.7221,-26.17993 -0.3794,-1.88594 -0.458,-2.94085 -0.3385,-4.5439 0.086,-1.14825 0.039,-2.86142 -0.1032,-3.80704 -0.3339,-2.21779 -1.4075,-10.41594 -1.7337,-13.23877 -0.1704,-1.47482 -0.4495,-2.55361 -0.8578,-3.31581 -0.3329,-0.62137 -0.7664,-1.54424 -0.9633,-2.05082 -0.2309,-0.59381 -0.5164,-0.92106 -0.8034,-0.92106 -0.2448,0 -1.6044,-0.50334 -3.0213,-1.11853 -1.4169,-0.61519 -3.5394,-1.38946 -4.7166,-1.72059 -3.47978,-0.97883 -4.45785,-1.5228 -5.61831,-3.12479 -0.93597,-1.29205 -0.92946,-2.1361 0.0218,-2.83943 0.44655,-0.33015 0.73684,-0.76692 0.73684,-1.10864 0,-0.31014 0.2731,-0.82045 0.60692,-1.13404 0.85008,-0.79862 1.20114,-2.03758 1.01825,-3.59366 -0.12959,-1.10274 -0.0162,-1.72238 0.71563,-3.9097 0.96699,-2.8902104 0.9636,-3.5694104 -0.0277,-5.5481204 -0.78312,-1.56313 -2.85464,-3.76436 -4.11824,-4.37605 -0.79545,-0.38507 -1.53067,-0.50912 -3.01731,-0.50912 -4.64981,0 -7.85342,2.14939 -9.43114,6.32764 -0.4366,1.15623 -0.50307,1.6959004 -0.37016,3.0057604 0.18897,1.86282 0.18895,1.88199 -0.003,3.80704 -0.13775,1.38348 -0.0922,1.56336 0.74458,2.9382 0.57997,0.95297 0.84539,1.6474 0.75986,1.98813 -0.0893,0.35587 0.0637,0.70696 0.47772,1.09588 0.75179,0.70627 0.79189,1.72942 0.11095,2.8312 l -0.49816,0.80606 0.49816,-0.13027 c 0.3992,-0.10439 0.49818,-0.0121 0.49818,0.46439 0,0.45672 0.31744,0.791 1.36828,1.44095 0.75254,0.46544 1.88092,1.16242 2.50749,1.54885 1.07857,0.66518 1.11362,0.72033 0.65808,1.03549 -1.17048,0.80978 -1.17151,0.82599 -0.12477,1.96157 1.1708,1.27018 1.22604,1.77172 0.47868,4.34737 -0.44339,1.5281 -0.53102,2.62225 -0.62451,7.7952 -0.0598,3.30967 -0.0211,9.38415 0.0859,13.49884 l 0.1947,7.48126 2.06973,1.59644 2.06973,1.59644 1.79872,-1.95052 c 1.61438,-1.75064 1.79871,-2.05196 1.79871,-2.94046 0,-1.28123 -0.8836,-12.23363 -1.35636,-16.81227 -0.4498,-4.35623 -1.92133,-11.13287 -2.63516,-12.13537 -0.71182,-0.99966 -0.65415,-1.98542 0.16623,-2.84173 l 0.67768,-0.70733 -0.93936,-0.63832 c -0.51665,-0.35107 -1.073,-0.63832 -1.23628,-0.63832 -0.7413,0 -0.4037,-0.54621 1.521,-2.46091 l 2.06759,-2.05688 0.37611,0.90012 c 0.22776,0.54513 0.38316,1.70238 0.39402,2.93434 0.01,1.11882 0.12264,2.64212 0.2506,3.38511 0.12797,0.74299 0.33377,6.87724 0.45734,13.63168 0.24127,13.18785 0.43955,16.37469 1.37501,22.09692 0.81217,4.96816 0.83735,4.73246 -0.527,4.93705 -2.82369,0.42344 -13.03228,-0.46285 -13.76443,-1.195 -0.0814,-0.0814 0.26583,-2.00475 0.7716,-4.27412 1.36405,-6.12032 1.49624,-8.09454 1.15226,-17.20931 -0.26836,-7.11111 -1.15464,-17.59961 -1.7676,-20.91832 -0.13558,-0.73402 -0.2465,-1.8092 -0.2465,-2.38927 l 0,-1.05467 -0.98725,1.07105 c -0.59977,0.65066 -1.6361,1.37307 -2.64037,1.84054 -0.90923,0.42322 -3.4963,1.67958 -5.74909,2.79191 -3.92337,1.93721 -4.10736,2.0608 -4.36636,2.93311 -0.14872,0.50089 -0.37456,0.97507 -0.50187,1.05376 -0.22292,0.13777 -0.91695,2.2656 -1.62634,4.98619 -0.19868,0.76195 -0.34384,2.59469 -0.35015,4.42108 -0.006,1.71579 -0.12325,3.94857 -0.26072,4.96174 -0.13745,1.01316 -0.3528,3.3895 -0.47856,5.28074 -0.12575,1.89124 -0.33834,4.65442 -0.47239,6.1404 -0.5168,5.72814 -0.53203,7.40491 -0.11269,12.4036 0.23233,2.76932 0.46694,6.69303 0.52137,8.71936 0.0888,3.30433 0.16117,3.80952 0.70199,4.89915 0.33166,0.66819 0.60301,1.41661 0.60301,1.66316 0,0.24656 0.26227,0.56777 0.58283,0.71382 0.46679,0.2127 0.61303,0.51721 0.73471,1.52984 0.0835,0.69536 0.15284,1.65425 0.15402,2.13086 0.003,1.18432 1.54544,4.35088 2.26505,4.64979 0.30891,0.12831 1.4384,0.40586 2.50995,0.61672 1.07157,0.21086 1.97676,0.41187 2.01156,0.44668 0.0348,0.0348 0.24663,1.16596 0.47073,2.513733 0.42359,2.54748 1.43592,6.49867 1.87537,7.31984 0.13941,0.26048 0.46957,2.31093 0.73371,4.55654 0.41742,3.54908 0.47738,5.63701 0.45859,15.96781 -0.0297,16.31003 0.41012,24.14708 1.5039,26.79963 0.73709,1.78762 2.11505,4.13946 2.86423,4.88864 0.38954,0.38957 0.52579,0.70433 0.38559,0.891 -0.11922,0.15874 -0.53765,0.77457 -0.9298,1.36854 -0.39218,0.59398 -0.92431,1.38906 -1.1825,1.76684 -1.07791,1.57715 0.18284,2.33942 4.13303,2.49883 1.47114,0.0594 3.08349,0.0206 3.58299,-0.0858 z m 20.38669,-72.535473 c -0.3665,-0.36653 -0.4055,-3.88074 -0.043,-3.88074 0.416,0 0.7308,1.17056 0.7308,2.71778 0,1.46549 -0.1432,1.70754 -0.6877,1.16296 z m -35.53428,-2.14922 c -0.52925,-1.02343 -0.46508,-1.74115 0.23169,-2.59117 l 0.60399,-0.73685 0.009,2.02633 c 0.009,2.14969 -0.22177,2.50595 -0.8445,1.30169 z m -1.11181,-21.74921 c 0.35966,-5.9213 0.65958,-9.1301 0.96419,-10.31587 0.13883,-0.54035 0.25672,-1.5351 0.26203,-2.21054 0.009,-1.19419 0.31704,-2.10027 0.61278,-1.80454 0.0804,0.0804 0.16928,1.67984 0.19755,3.55432 0.0426,2.82381 -0.0613,3.99772 -0.60608,6.84677 -0.36162,1.89125 -0.7761,3.82474 -0.92106,4.29666 -0.14496,0.47192 -0.26357,2.6394 -0.26357,4.81663 0,2.17723 -0.0829,4.49903 -0.18421,5.15956 -0.31581,2.05893 -0.36042,-5.42436 -0.0616,-10.34299 z m -19.45808,96.267503 c 1.12895,-0.79074 0.61984,-2.23076 -2.36255,-6.68238 -1.08837,-1.62452 -2.2496,-3.60088 -2.58049,-4.39188 -1.51857,-3.63013 -2.6555,-6.12848 -3.2524,-7.14702 -1.64093,-2.80002 -2.4872,-8.23629 -2.15282,-13.8294 0.0852,-1.42492 0.0204,-5.84601 -0.14403,-9.82464 -0.25549,-6.18353 -0.248,-7.37658 0.0516,-8.21639 l 0.35049,-0.98246 2.24235,-0.0705 c 1.64911,-0.0519 2.43553,0.0293 2.97249,0.30702 0.40158,0.20766 0.99231,0.37756 1.31277,0.37756 0.58039,0 0.58471,-0.0217 1.11708,-5.58776 0.29396,-3.07327 0.75928,-8.12989 1.03407,-11.236933 0.2748,-3.10704 0.8208,-8.24656 1.21334,-11.42115 0.39257,-3.17458 0.83792,-7.31935 0.98966,-9.21059 0.25729,-3.20669 0.85821,-7.94056 1.02967,-8.11139 0.0415,-0.0414 0.0755,1.65621 0.0755,3.77245 0,3.76978 0.0146,3.87656 0.7214,5.27246 0.87714,1.73232 1.73088,2.62791 2.50511,2.62791 0.78909,0 0.7532,0.57334 -0.15611,2.4955 -0.57109,1.20717 -0.7367,1.89861 -0.73685,3.07626 -10e-5,0.83552 -0.10721,1.80062 -0.23803,2.14465 -0.13081,0.34406 -0.26897,1.20384 -0.30702,1.91067 -0.0562,1.04442 0.009,1.30114 0.34644,1.37065 0.50325,0.10357 1.1008,-0.9543 1.32264,-2.34152 0.22017,-1.37699 0.47404,-1.7225 1.01791,-1.38544 1.03019,0.6384 0.53851,2.42312 -0.93648,3.39923 -0.52803,0.34942 -0.96004,0.7355 -0.96004,0.85794 0,0.12244 -0.33158,0.29543 -0.73685,0.38444 -0.59518,0.13071 -0.73685,0.2884 -0.73685,0.82008 0,1.22939 0.67707,1.31884 2.84551,0.37597 1.06919,-0.46493 2.06379,-0.97947 2.21018,-1.14349 0.14638,-0.164 0.63061,-1.15376 1.07606,-2.19948 0.64558,-1.51557 0.78229,-2.11352 0.67385,-2.94739 -0.0748,-0.57535 -0.25478,-1.93032 -0.39996,-3.01103 -0.14516,-1.08071 -0.23164,-2.79388 -0.19217,-3.80704 0.0711,-1.82519 0.0801,-1.84758 0.9818,-2.43591 1.12379,-0.73324 1.13342,-1.01947 0.12922,-3.84263 -0.74535,-2.09546 -0.79039,-2.43518 -0.99165,-7.47595 -0.11596,-2.90441 -0.20593,-5.92252 -0.19996,-6.70692 0.006,-0.7844 -0.22336,-2.33178 -0.50965,-3.43863 -0.49713,-1.92189 -0.5139,-2.38941 -0.37282,-10.39136 0.13465,-7.63614 0.0198,-10.702 -0.49536,-13.21989 -0.0812,-0.39682 -0.71454,-1.32444 -1.40745,-2.06141 -1.31211,-1.39549 -2.76409,-2.23763 -3.87395,-2.24685 -0.73417,-0.006 -1.1023,-0.62801 -0.67589,-1.1418 0.21821,-0.26292 0.19013,-0.3373 -0.1273,-0.3373 -0.38451,0 -1.37223,-1.8377 -1.37223,-2.55313 0,-0.16603 0.33158,-0.54702 0.73685,-0.84665 0.40526,-0.29963 0.73684,-0.75738 0.73684,-1.01723 0,-0.45364 -0.0289,-0.45586 -0.72619,-0.0557 -0.47548,0.27289 -0.80439,0.33254 -0.95271,0.17279 -0.12461,-0.1342 -0.52179,-1.84664 -0.88265,-3.80542 -1.1445,-6.21259 -3.25073,-13.2031604 -4.64214,-15.4072804 -1.68419,-2.66796 -4.56027,-3.9945 -7.53326,-3.47458 -1.73888,0.30411 -2.49354,0.60215 -4.30154,1.69885 -0.8123,0.49274 -1.91757,1.03518 -2.45616,1.20542 -1.4142,0.44704 -2.68645,1.33196 -3.26063,2.26797 -0.27489,0.44813 -0.74598,1.97047 -1.04683,3.3829704 -0.45225,2.12322 -0.52142,3.0169 -0.39925,5.15794 0.1762,3.08739 0.35602,3.77042 1.87817,7.13364 0.64197,1.41843 1.24105,2.88743 1.33127,3.26445 0.0902,0.37702 0.25753,0.62771 0.37178,0.5571 0.11427,-0.0706 0.27505,0.28408 0.3573,0.78821 0.111,0.6803 0.34052,1.02446 0.89034,1.33499 1.00221,0.56607 1.03888,1.5886 0.0653,1.8217 -1.55983,0.37349 -3.64646,1.51252 -4.25419,2.32225 -1.33212,1.77489 -2.43447,5.8604 -2.43713,9.03261 0,1.12805 -0.22679,3.44912 -0.50186,5.15793 -2.28715,14.20738 -2.80258,16.71689 -4.49737,21.89653 -0.46412,1.41844 -1.09417,3.51845 -1.40011,4.66671 -0.30596,1.14825 -1.14693,3.29775 -1.86884,4.77667 -0.7219,1.47891 -1.31255,2.79919 -1.31255,2.93395 0,0.13475 0.26428,0.52738 0.58732,0.87249 l 0.58729,0.62748 -0.68549,4.17546 -0.68549,4.17548 0.86533,2.16394 c 0.79827,1.99629 0.85248,2.29395 0.69986,3.8428 l -0.16543,1.67894 3.38955,1.133713 c 3.13244,1.0477 3.41286,1.10198 3.69659,0.71553 0.16887,-0.23002 0.31523,-0.59049 0.32525,-0.80108 0.0101,-0.21059 0.22287,-0.825003 0.47301,-1.365353 l 0.4548,-0.98247 -1.7e-4,2.947393 c -7e-5,1.62107 -0.0842,4.55004 -0.18679,6.50883 -0.14803,2.82472 -0.11883,3.64164 0.14118,3.9492 0.18031,0.21327 0.32782,0.72747 0.32782,1.14263 0,0.61795 0.13369,0.8015 0.73685,1.01177 1.32561,0.4621 1.09127,1.27533 -1.81417,6.29513 -1.64412,2.84065 -2.57486,5.24118 -3.09938,7.99389 -0.54172,2.84291 -2.4777,9.453 -3.48342,11.89356 -1.03463,2.51066 -2.25173,4.56506 -3.28133,5.53866 -0.5,0.47281 -1.23021,1.29523 -1.62268,1.82758 l -0.71361,0.9679 0.16603,4.08991 c 0.13617,3.35457 0.0889,4.518 -0.26271,6.47107 -0.23582,1.30965 -0.36589,2.6316 -0.28907,2.93769 0.21227,0.84573 1.84662,2.34474 2.90075,2.66059 1.23108,0.36884 2.64799,-0.0436 3.78689,-1.10246 1.00378,-0.93314 1.08225,-1.69924 0.61168,-5.97158 -0.62375,-5.66297 0.43191,-9.47502 4.60402,-16.62578 3.01555,-5.16849 6.28066,-11.12097 7.03176,-12.81935 0.34624,-0.78293 0.67642,-1.37661 0.73373,-1.31931 0.0573,0.0573 0.33676,1.48352 0.62101,3.16936 0.56924,3.37594 1.59849,6.97996 3.43558,12.03014 2.05182,5.64052 2.31606,6.82442 2.32966,10.43867 l 0.012,3.193 1.01896,2.08774 c 1.37275,2.81262 2.78808,6.28841 2.78808,6.84701 0,0.89176 0.916,1.66596 2.50776,2.11957 4.03734,1.15051 6.32505,1.37775 7.26223,0.72132 z M 505.62707,72.100017 c 0.51272,-2.09387 1.21238,-4.80179 1.55487,-6.01758 0.34246,-1.2158 0.85518,-3.31582 1.13936,-4.6667 0.28418,-1.35089 0.84286,-3.72723 1.24149,-5.28075 0.39864,-1.55352 0.79899,-3.6259 0.88967,-4.60529 0.0907,-0.9794 0.25483,-1.78072 0.36481,-1.78072 0.27414,0 1.18714,3.1389 1.60744,5.52636 0.57911,3.28977 0.61743,3.89788 0.28137,4.4677 -0.17446,0.29582 -1.3793,2.4511 -2.67748,4.78951 -2.56459,4.61973 -3.8152,7.26182 -4.65958,9.84422 -0.29904,0.91449 -0.57302,1.63292 -0.6089,1.59651 -0.0359,-0.0364 0.35425,-1.77938 0.86695,-3.87326 z m -65.26502,95.129663 c 0.30992,-0.081 0.42982,-0.36137 0.42982,-1.00501 0,-0.69946 -0.19855,-1.09604 -0.91725,-1.83205 -0.88618,-0.90755 -0.89866,-0.94422 -0.36842,-1.08287 0.68094,-0.17807 0.6844,-0.33885 0.0252,-1.17687 -0.3838,-0.48791 -0.66972,-0.629 -1.07081,-0.52834 -0.3573,0.0897 -0.69264,-0.0233 -0.9663,-0.32579 -0.42102,-0.46519 -1.39205,-3.08282 -1.73865,-4.68686 -0.10215,-0.47281 -0.8469,-2.62809 -1.65496,-4.78951 -2.05013,-5.48366 -2.8237,-8.71764 -3.25651,-13.61404 -0.1979,-2.23867 -0.57907,-6.05978 -0.84706,-8.49138 -0.59909,-5.43575 -0.65341,-9.64421 -0.17439,-13.50888 0.20091,-1.62106 0.50002,-4.27371 0.66468,-5.89478 0.26404,-2.59942 0.40962,-3.16766 1.23307,-4.81323 l 0.93366,-1.86587 1.67412,-0.35669 1.67409,-0.35668 0.12281,-4.900313 0.12281,-4.90034 0.66223,0.0114 c 0.3642,0.006 0.89416,0.22129 1.17765,0.47786 0.46001,0.41632 0.63344,0.43488 1.61326,0.17284 0.60379,-0.1615 1.32075,-0.29364 1.59321,-0.29364 0.27248,0 0.54539,-0.13816 0.60645,-0.30703 0.0611,-0.16886 0.39168,-2.35177 0.73466,-4.85092 0.343,-2.49913 0.68386,-4.84179 0.75748,-5.20589 0.11711,-0.57914 0.0103,-0.72507 -0.85391,-1.16591 -0.77445,-0.39511 -1.01638,-0.67645 -1.12035,-1.30293 -0.54854,-3.30538 -1.14558,-7.45372 -1.47596,-10.25522 -0.52608,-4.46109 -0.77919,-5.82513 -1.62469,-8.75601 -1.01339,-3.51283 -0.96759,-4.76414 0.29151,-7.95975 1.82581,-4.63393 2.14632,-6.90242 1.21268,-8.58267 -0.26273,-0.47281 -0.65434,-1.2465 -0.87029,-1.71931 -0.21592,-0.47281 -0.51456,-1.10407 -0.66363,-1.40279 -0.18315,-0.36707 -0.2157,-1.53905 -0.10033,-3.61539 0.20686,-3.72288 0.009,-4.60831 -1.32058,-5.90649 -0.92346,-0.90176 -0.98782,-1.05518 -0.98782,-2.35531 0,-0.98307 -0.13408,-1.56243 -0.45743,-1.97649 -0.25161,-0.32217 -0.53537,-0.83444 -0.6306,-1.13839 -0.15562,-0.49667 -0.0906,-0.5528 0.64165,-0.55426 0.86094,-0.002 1.93555,-0.58315 2.53014,-1.36897 0.51024,-0.67436 0.4536,-2.05774 -0.14869,-3.63167 l -0.52113,-1.36174 0.52113,-1.93125 c 0.61182,-2.26752 0.64864,-3.39408 0.17072,-5.22342 -0.32998,-1.26312 -1.65228,-3.8468704 -3.0561,-5.9716704 -1.18485,-1.79337 -4.63533,-4.04762 -7.00275,-4.57501 -1.10628,-0.24644 -1.31441,-0.21208 -2.70178,0.44601 -2.00336,0.95029 -4.37926,3.14942 -5.15987,4.77597 -0.33836,0.70501 -1.10832,2.9397504 -1.71101,4.9660804 -1.34806,4.5322 -1.74672,5.6144 -2.38766,6.48132 -0.42162,0.57026 -0.45625,0.7774 -0.21756,1.30128 0.3319,0.72841 0.0493,1.40651 -1.34983,3.23953 -0.47866,0.62706 -0.87027,1.23614 -0.87027,1.35352 0,0.11738 -0.15626,0.3431 -0.34725,0.50161 -0.19099,0.15851 -0.58155,0.75231 -0.86791,1.31956 -0.28636,0.56725 -0.75298,1.3988 -1.03692,1.84789 -0.46797,0.74016 -0.48641,0.90695 -0.19713,1.78347 0.2942,0.89147 0.2776,1.01112 -0.2126,1.53294 -0.70129,0.74646 -1.85575,4.1641 -2.79383,8.27066 -0.73968,3.23802 -0.76178,3.5175 -0.94209,11.91237 -0.10773,5.01692 -0.31191,9.26135 -0.49032,10.19306 -0.4246,2.21745 -0.36793,9.40413 0.13462,17.0703 0.23026,3.51231 0.50626,7.93339 0.61333,9.82464 0.28889,5.10231 0.6625,5.93973 3.37692,7.56895 l 1.28949,0.77396 0.003,1.35492 c 0.003,1.729263 0.43847,4.436243 0.78126,4.849273 0.14523,0.175 1.02335,0.54882 1.95136,0.83069 0.92804,0.28187 1.73842,0.5952 1.80088,0.69628 0.0625,0.10104 -0.10693,1.60998 -0.37645,3.35317 -0.26951,1.74318 -0.58424,4.38522 -0.69937,5.8712 -0.18035,2.32758 -0.3458,3.02783 -1.1946,5.05585 -1.40863,3.36568 -1.87893,5.69417 -1.67787,8.30749 0.27508,3.57539 -0.5099,18.23487 -1.01855,19.02131 -0.10041,0.15525 -0.45888,0.28226 -0.79661,0.28226 -0.51731,0 -0.74347,0.26905 -1.43584,1.70794 -1.25515,2.60851 -1.26114,3.02994 -0.0763,5.37319 0.82552,1.63263 1.09341,2.52171 1.43725,4.76983 0.33892,2.21607 0.50177,2.76318 0.82249,2.76318 0.35135,0 0.38599,-0.31309 0.28521,-2.57897 -0.0631,-1.41843 -0.0387,-2.57897 0.0541,-2.57897 0.0929,0 0.39141,0.50317 0.66343,1.11817 0.36968,0.83569 0.50578,1.71983 0.53883,3.50003 l 0.0442,2.38185 1.65445,0.8308 c 2.04455,1.02673 4.6891,1.33706 5.7075,0.66977 0.77831,-0.50997 0.83932,-1.77027 0.12934,-2.67284 -0.58786,-0.74736 -0.61041,-0.91546 -0.12281,-0.91546 0.50263,0 0.46257,-0.30528 -0.14064,-1.07213 -0.3053,-0.38815 -0.75271,-0.64718 -1.11779,-0.64718 -0.87516,0 -1.23612,-1.06251 -1.54783,-4.55598 -0.38483,-4.31336 -0.0721,-7.01937 1.70202,-14.72486 0.83976,-3.64739 1.61266,-6.78892 1.71755,-6.98116 0.12494,-0.22906 0.41693,0.3922 0.84698,1.80211 0.36095,1.18342 1.63747,4.50732 2.83669,7.38645 2.50216,6.00735 2.74731,6.8781 2.003,7.11433 -0.34372,0.1091 -0.61982,0.57018 -0.88253,1.47392 -0.58054,1.99698 -0.49513,3.0532 0.35531,4.39421 1.09439,1.72567 1.416,2.64032 1.71808,4.88592 0.38768,2.88176 0.45751,3.13491 0.86479,3.13491 0.27725,0 0.36744,-0.33573 0.37931,-1.41229 0.0179,-1.62668 0.3067,-1.20806 0.58979,0.85504 0.1919,1.39844 0.79032,2.34512 1.81108,2.86491 1.80633,0.91989 7.02537,1.64431 8.69767,1.20728 z M 412.01309,69.463407 c 0.0179,-1.18409 0.26485,-3.70028 0.54868,-5.59152 0.6306,-4.20173 1.95717,-11.75376 2.08789,-11.88612 0.26993,-0.27328 1.07,3.15052 1.33248,5.70228 0.26117,2.53858 0.18448,3.60285 -0.41892,5.81542 -0.42882,1.57235 -3.30591,8.38969 -3.47099,8.22461 -0.0615,-0.0615 -0.0971,-1.08057 -0.0791,-2.26467 z m 23.7567,-44.21461 c 0.19379,-0.37149 0.35472,-0.8965 0.35764,-1.16668 0.003,-0.27017 0.11409,-0.65702 0.24712,-0.85965 0.21499,-0.32749 0.26873,-0.32749 0.48371,0 0.39515,0.60194 0.28723,1.14542 -0.3865,1.94608 -0.78941,0.93817 -1.17232,0.98195 -0.70197,0.0802 z M 386.39648,167.16987 c 1.40085,-0.58068 1.36563,-1.41771 -0.15599,-3.70855 -1.17578,-1.77018 -1.45534,-2.60761 -1.43181,-4.28884 l 0.0172,-1.22971 0.45677,1.35089 c 0.53969,1.59616 1.45361,2.47758 3.75645,3.62284 2.71126,1.3484 5.34274,0.98433 5.32593,-0.73685 -0.01,-0.98657 -0.97,-2.71278 -2.42135,-4.35212 -1.97539,-2.2313 -2.13135,-2.5198 -2.84018,-5.2538 -1.0096,-3.89415 -0.92455,-4.59094 1.05529,-8.64495 0.9257,-1.89552 2.7718,-5.32051 4.1024,-7.61105 1.3306,-2.29054 3.19927,-5.712 4.1526,-7.60324 l 1.73331,-3.43862 2.57664,-0.27973 c 2.28835,-0.24847 5.64393,-1.20752 6.17341,-1.76443 0.27528,-0.28953 -1.93728,-12.28598 -2.99784,-16.25422 -0.55962,-2.09388 -1.11257,-4.30442 -1.22882,-4.91232 -0.62323,-3.259473 -1.45788,-8.046453 -1.45788,-8.361453 0,-0.19883 0.47792,-0.65016 1.06205,-1.00298 0.97366,-0.58813 1.0991,-0.78212 1.50746,-2.33156 0.73206,-2.77755 0.72106,-3.20677 -0.15658,-6.11117 l -0.81643,-2.70178 -0.0184,-10.80709 c -0.0194,-11.44437 -0.10839,-12.60658 -1.21299,-15.84864 -0.34402,-1.00964 -0.68149,-2.66466 -0.74997,-3.67782 -0.19646,-2.9064 -0.84369,-10.0233 -1.08334,-11.91237 -0.11998,-0.94562 -0.34516,-2.6588 -0.50041,-3.80705 -0.15528,-1.14825 -0.33407,-2.54938 -0.39731,-3.1136 -0.0632,-0.56424 -0.35811,-1.3864 -0.65528,-1.82704 -0.71607,-1.06182 -2.95282,-2.37899 -4.33969,-2.55553 -3.22191,-0.41014 -3.57224,-0.71803 -2.83222,-2.48916 0.20263,-0.48497 0.36842,-1.34516 0.36842,-1.91154 0,-0.9325 0.0802,-1.06801 0.84856,-1.43443 1.24549,-0.59394 1.66839,-1.62175 1.79105,-4.35304 0.0986,-2.19571 0.0531,-2.4745 -0.77108,-4.72621 -1.30202,-3.5571004 -2.43698,-5.6667904 -4.31832,-8.0269504 -1.07342,-1.34658 -3.83355,-2.72191 -5.45523,-2.71824 -1.20912,0.003 -3.07106,0.8028 -4.44565,1.91027 -2.15213,1.73392 -5.14594,6.4647204 -5.84305,9.2331904 -0.29977,1.19047 -0.81852,1.49 -1.09142,0.63018 -0.24525,-0.77275 -0.72339,-0.42544 -0.80893,0.58761 -0.0519,0.61414 0.0858,1.13233 0.42887,1.61408 l 0.50525,0.70956 -0.84379,2.29678 c -0.46406,1.26322 -1.12681,3.04786 -1.47274,3.96586 -0.78607,2.08601 -0.78879,3.13517 -0.0125,4.80272 0.3364,0.72263 0.61164,1.40002 0.61164,1.5053 0,0.20511 -0.96267,0.61606 -1.96493,0.83879 -0.85475,0.18995 -3.34684,2.20654 -3.79295,3.06922 -0.88351,1.70848 -1.37687,6.68241 -1.52545,15.37825 -0.12263,7.17881 -0.21098,8.62673 -0.62929,10.31586 -0.94366,3.81024 -0.83499,11.74463 0.28754,21.00016 0.12289,1.01316 0.16668,4.4395 0.0973,7.61408 -0.11691,5.34992 -0.17707,5.96058 -0.82277,8.35096 -0.38313,1.41843 -1.09819,4.292143 -1.58898,6.386013 -0.49082,2.09388 -1.6582,6.40444 -2.5942,9.57902 -0.97544,3.30828 -1.73022,6.34861 -1.76834,7.12286 l -0.0665,1.35089 1.71931,0.91779 c 2.83298,1.51226 4.50049,1.94096 8.37835,2.15398 1.90632,0.1047 3.70238,0.31687 3.99125,0.47148 0.42318,0.22646 0.52523,0.50735 0.52523,1.44555 0,2.79083 1.58258,11.71831 3.31729,18.71313 0.45227,1.8237 0.89805,4.31422 0.99057,5.53448 0.15061,1.98617 0.10102,2.43152 -0.4733,4.24957 -0.77075,2.4398 -0.7871,2.95931 -0.15032,4.77107 0.30098,0.85631 0.49123,2.02726 0.49123,3.02328 0,1.39232 0.0672,1.6432 0.46815,1.74805 0.29751,0.0778 0.52505,0.42577 0.62428,0.95478 0.20953,1.11687 1.41914,2.01133 3.10844,2.29852 2.14808,0.36524 4.72626,0.50187 5.26387,0.27902 z m -4.61477,-25.49914 c -0.0638,-1.04694 0.0446,-3.78248 0.24087,-6.07899 0.20313,-2.37638 0.29472,-5.19532 0.21258,-6.54245 -0.0794,-1.30184 -0.0755,-2.71106 0.009,-3.1316 l 0.15292,-0.76463 2.39476,0 c 1.31711,0 2.7278,0.0666 3.13484,0.14803 l 0.74012,0.14801 -0.56286,1.38709 c -0.30955,0.76289 -0.69475,2.1055 -0.85597,2.98357 -0.27953,1.52243 -2.62524,9.0496 -3.26937,10.49114 -0.71261,1.59481 -1.6666,3.26335 -1.86582,3.26335 -0.11806,0 -0.26686,-0.85658 -0.3307,-1.90352 z m 20.84095,-50.474073 c -0.28851,-1.90276 -0.38154,-3.62284 -0.19596,-3.62284 0.62998,0 1.06588,0.7255 1.19655,1.99151 0.20378,1.97436 -0.7202,3.48074 -1.00059,1.63133 z m -2.73368,-13.46226 c -0.85666,-4.46553 -2.47397,-14.68917 -2.65919,-16.8099 l -0.15017,-1.71931 0.36995,0.97324 c 0.20346,0.53528 0.70852,2.90965 1.12234,5.27638 0.41384,2.36673 0.79744,4.37599 0.85246,4.46502 0.31515,0.50993 1.33212,7.63659 1.33212,9.33515 0,1.10809 -0.0527,1.962 -0.11714,1.89757 -0.0644,-0.0644 -0.40209,-1.60258 -0.75037,-3.41815 z m -30.95777,-2.0889 c 1.25834,-5.23138 2.21192,-11.82866 2.60701,-18.03681 0.30815,-4.84196 0.77303,-9.22031 1.0031,-9.44772 0.21452,-0.21201 0.85865,1.49071 1.06531,2.81609 0.0948,0.6079 0.49489,2.20222 0.88908,3.54294 1.02444,3.4842 0.98728,5.22054 -0.16781,7.83841 -0.48646,1.10259 -1.38173,3.44157 -1.98946,5.19772 -3.81913,11.03642 -3.73044,10.79335 -3.88279,10.641 -0.0613,-0.0613 0.15272,-1.20951 0.47556,-2.55163 z M -8.9307791,167.22936 c 1.4203,-0.15036 1.8965,-0.52684 2.2023,-1.74134 0.1543,-0.61286 0.4404,-1.34241 0.6356,-1.62124 0.7473,-1.06683 0.4355,-2.19146 -1.1316,-4.08189 -1.7685,-2.13327 -1.9519,-2.75762 -1.9519,-6.64533 0,-2.84406 -0.077,-3.60139 -0.423,-4.18787 -0.3976,-0.67318 -0.3988,-0.88083 -0.019,-3.47652 0.222,-1.51832 1.1773,-5.91059 2.123,-9.76062 1.9922,-8.11009 2.3939,-10.11027 2.6389,-13.13785 0.121,-1.49489 0.3638,-2.60542 0.7518,-3.43862 0.3686,-0.7916 0.5739,-1.6891 0.5755,-2.5156 0,-0.70671 0.133,-2.04667 0.2927,-2.97768 l 0.2902,-1.69273 2.22730003,-0.12657 c 2.70139997,-0.15351 3.01309997,-0.26836 3.21429997,-1.18428 0.1416,-0.6446 0.255,-0.71634 1.132,-0.71634 0.7385,0 1.1207,-0.15747 1.577,-0.6499 0.525,-0.56654 0.6023,-0.88004 0.6023,-2.44408 0,-0.98678 -0.1106,-2.3246 -0.2457,-2.97293 -0.6495,-3.11483 -1.0397,-7.332203 -1.1587,-12.522223 -0.1238,-5.39837 -0.1054,-5.72624 0.3525,-6.30839 0.4757,-0.60472 0.4764,-0.66005 0.045,-3.63246 -0.2413,-1.66012 -0.3965,-3.06045 -0.3451,-3.11185 0.051,-0.0514 0.5543,0.82315 1.1176,1.94344 1.1042,2.19625 1.0778,1.92597 0.578,5.91532 -0.092,0.73497 0,1.64245 0.2573,2.52648 0.4956,1.70487 0.3077,2.99899 -0.5455,3.75645 -0.3424,0.30395 -0.698,0.55263 -0.7903,0.55263 -0.092,0 -0.1541,0.41449 -0.1372,0.92107 0.027,0.80054 0.1146,0.93091 0.6722,0.99637 0.3879,0.0455 0.6909,0.2635 0.7661,0.55119 0.1032,0.39458 0.2648,0.44891 0.9461,0.31804 1.8247,-0.35044 2.9008001,-1.58473 3.6071001,-4.13755 l 0.5436,-1.96493 -0.974,-4.78951 c -0.5358001,-2.63423 -1.1508001,-5.5632 -1.3669001,-6.50882 -0.216,-0.94562 -0.4418,-2.99037 -0.5015,-4.5439 -0.16,-4.15732 -0.6204,-8.56534 -1.026,-9.82463 -0.2441,-0.75786 -0.4202,-3.07394 -0.5601,-7.36847 -0.1427,-4.3829 -0.3954,-7.66423 -0.8417,-10.92991 -0.3509,-2.56668 -0.6387,-5.2746 -0.6397,-6.01759 -0.01,-2.21364 -0.4659,-4.46665 -1.0839,-5.2767 -0.3108,-0.40749 -0.9824,-0.89162 -1.4924,-1.07586 -1.7533,-0.63342 -2.55509997,-1.25546 -2.81039997,-2.18039 -0.1332,-0.48244 -0.1888,-0.96348 -0.1236,-1.06899 0.065,-0.1055 0.2337,-1.11017 0.3744,-2.2326 0.1407,-1.12243 0.4715,-2.52819 0.73499997,-3.12391 0.2635,-0.59571 0.4636,-1.48037 0.4446,-1.96591 -0.019,-0.48553 0.051,-2.375 0.1548,-4.19882 0.185,-3.23948 0.1751,-3.34438 -0.4295,-4.54389 -0.34049997,-0.67533 -0.70239997,-1.61334 -0.80439997,-2.08449 -0.6996,-3.2321604 -3.73430003,-7.6401404 -6.13830003,-8.9158704 -0.7705,-0.4089 -1.4593,-0.5289 -3.193,-0.55631 -1.2157999,-0.0192 -2.4054989,-0.11947 -2.6436989,-0.22278 -0.7318,-0.3173 -3.0371,1.03362 -4.1543,2.43442 -1.5065,1.88884 -2.185,3.44116 -2.85,6.5206604 -0.073,0.33773 -0.4609,1.02359 -0.8623,1.52415 -0.7707,0.96108 -0.779,1.08567 -0.2752,4.14083 0.1302,0.79023 0.058,0.94092 -0.7369,1.5476 -0.9115,0.69527 -1.1434,1.51473 -0.5863,2.07186 0.2295,0.22946 0.2288,0.47768 0,1.11852 -0.1638,0.45299 -0.3981,1.88364 -0.5207,3.17922 -0.1226,1.29559 -0.3271,2.54185 -0.4545,2.76948 -0.2399,0.42881 -3.0448,1.4243 -4.8141,1.70858 -1.4286,0.22956 -2.0105,0.67572 -2.4595,1.88585 -0.2151,0.57974 -0.8023,3.87251 -1.3049,7.31727 -0.851,5.83264 -0.9171,6.70222 -0.9608,12.64922 -0.026,3.51231 -0.1237,9.99351 -0.2178,14.40267 l -0.1709,8.01667 0.8426,0.27811 c 0.8384,0.27667 0.8449,0.29045 1.257,2.66762 0.2277,1.31424 0.4124,2.65301 0.4102,2.97506 0,0.32205 0.1214,1.0036 0.2744,1.51455 0.1996,0.66614 0.2074,1.40683 0.028,2.61762 -0.1814,1.22235 -0.1656,2.47165 0.057,4.52442 0.3349,3.08241 0.683,4.10066 1.5492,4.53243 0.309,0.15402 0.8064,0.50543 1.1053,0.78092 0.2989,0.27548 0.7645,0.54104 1.0347,0.59016 0.8105,0.1473 1.154,1.65491 0.8795,3.8591 -0.1282,1.02994 -0.3663,3.950243 -0.5291,6.489563 -0.3486,5.43867 -0.2958,5.67402 1.372,6.12008 0.8238,0.22035 1.1562,0.44585 1.2586,0.85376 0.099,0.39228 0.3832,0.60012 0.9738,0.71091 0.6974,0.13084 0.8352,0.26313 0.838,0.80469 0.01,0.99946 0.261,1.72835 0.5735,1.63411 1.3024,-0.39279 1.6337,-0.37238 1.6337,0.10068 0,0.69831 0.9353,1.24667 2.1264,1.24667 0.569,0 1.3301,0.11234 1.6912,0.24964 0.598,0.22737 0.642,0.33146 0.4928,1.16668 -0.1732,0.96881 -0.3108,1.26762 -2.2882,4.96969 -2.1508,4.02673 -2.4584,5.93361 -2.7342,16.9475 -0.2068,8.25812 -0.2377,8.40249 -2.2327,10.43867 -1.9822,2.02306 -2.1655,3.19978 -0.9415,6.04521 0.7298,1.6963 0.7872,2.04247 0.8828,5.31452 0.056,1.92501 0.1887,3.50002 0.2945,3.50002 0.4516,0 0.7056,-0.73024 0.8693,-2.49803 0.096,-1.03618 0.2573,-2.25198 0.3586,-2.70177 l 0.1843,-0.81778 0.6374,1.35088 c 0.3506,0.74299 0.9139,2.3855 1.252,3.65003 0.7494,2.8038 1.1025,3.37486 2.291,3.70489 0.8674,0.2409 4.538699,0.29187 6.4496989,0.0896 z M -24.425678,59.389777 c 0.028,-2.4396 0.1918,-4.36803 0.4966,-5.84288 0.5165,-2.49949 0.6526,-2.38064 0.854,0.74598 0.117,1.81401 0.023,2.81454 -0.5217,5.57765 -0.3654,1.85191 -0.7107,3.32067 -0.7675,3.26391 -0.057,-0.0568 -0.084,-1.74185 -0.061,-3.74466 z M -262.29908,166.84315 c 0.6574,-1.00333 0.9496,-3.12199 0.7984,-5.79022 -0.131,-2.31439 -0.1071,-2.52497 0.2705,-2.38007 0.2279,0.0874 1.1076,0.22371 1.955,0.30283 1.296,0.12104 1.6227,0.07 2.0575,-0.32171 1.3083,-1.17849 1.0451,-2.26303 -1.3565,-5.58968 -1.8282,-2.53232 -2.2399,-3.37687 -3.1709,-6.50392 -1.3301,-4.46763 -1.0949,-6.97186 1.6764,-17.84589 0.9122,-3.57933 1.4339,-6.2479 1.7046,-8.71936 0.2145,-1.95879 0.4829,-4.34865 0.5964,-5.31083 0.2667,-2.26087 5.4261,-15.292983 6.4478,-16.286203 0.5363,-0.52144 0.7894,-1.26121 1.4556,-4.25404 0.5313,-2.38698 0.9149,-3.62284 1.1245,-3.62284 0.175,0 0.2712,0.13815 0.2139,0.30702 -0.057,0.16886 -0.6703,2.95968 -1.362,6.20181 -0.6918,3.242123 -1.5322,7.000053 -1.8674,8.350933 -0.3353,1.35089 -0.6989,2.89827 -0.8079,3.43863 -0.2831,1.40367 -0.4577,1.74728 -1.7638,3.473 -1.3303,1.75753 -2.5309,4.13402 -2.902,5.74442 -0.3242,1.40721 -0.3359,5.74606 -0.018,6.88867 0.3909,1.4073 1.2811,2.06948 2.782,2.06948 1.2343,0 1.3674,-0.0739 4.779,-2.65395 2.6244,-1.9847 3.6309,-2.61539 3.9913,-2.50101 0.3837,0.12178 0.4825,0.0369 0.4852,-0.41625 0.01,-0.65238 3.0114,-3.28732 3.4458,-3.01884 0.4675,0.28895 0.9905,-0.37252 0.7096,-0.89743 -0.1487,-0.27794 -0.1848,-1.06494 -0.088,-1.92042 0.2006,-1.77288 -0.3945,-3.94383 -2.002,-7.30417 l -1.0791,-2.25581 0.3995,-6.709173 c 0.2708,-4.54755 0.5,-6.82789 0.7115,-7.0776 0.1715,-0.20264 0.3911,-0.92106 0.4879,-1.59651 0.097,-0.67544 0.2768,-1.42238 0.4,-1.65984 0.1231,-0.23749 0.3273,-1.60907 0.4537,-3.04792 0.1788,-2.03461 0.336,-2.73025 0.7072,-3.12964 0.4141,-0.44553 0.4666,-0.80626 0.3961,-2.72408 -0.081,-2.19368 -0.3981,-3.56143 -0.8266,-3.56143 -0.1227,0 -0.3021,-0.74606 -0.3987,-1.65791 -0.096,-0.91185 -0.2625,-1.76843 -0.3688,-1.90352 -0.1064,-0.13509 -0.3711,-1.64702 -0.5885,-3.35985 -0.2172,-1.71283 -0.6646,-3.97863 -0.9941,-5.03512 -0.3295,-1.05649 -0.7681,-2.91564 -0.9746,-4.13144 -0.2066,-1.2158 -0.5993,-2.85904 -0.8728,-3.65165 -0.2735,-0.79261 -0.434,-1.54351 -0.3566,-1.66867 0.077,-0.12515 0.02,-0.37263 -0.127,-0.54995 -0.5032,-0.60635 -1.2177,-4.93404 -1.4738,-8.9266 -0.4094,-6.38314 -1.7067,-11.60462 -3.2987,-13.27711 -0.4403,-0.46246 -1.9695,-1.38655 -3.5607,-2.15156 -3.2153,-1.54586 -4.8541,-2.64808 -5.343,-3.59347 -0.1893,-0.36609 -0.3442,-1.31714 -0.3442,-2.11345 0,-1.13589 0.1058,-1.5436 0.4912,-1.89238 0.2702,-0.24451 0.4937,-0.34453 0.4967,-0.22228 0.01,0.12226 0.2233,-0.054 0.4894,-0.39176 0.3865,-0.49028 0.5285,-0.54562 0.7046,-0.27457 0.175,0.2694 0.2537,0.23509 0.3811,-0.16619 0.088,-0.27812 0.7529,-1.22845 1.477,-2.11185 1.8785,-2.29167 2.2232,-3.34321 2.2232,-6.78079 0,-2.65558 -0.046,-2.9217304 -0.7693,-4.4482004 -1.0019,-2.11465 -2.9766,-4.09124 -5.1619,-5.16709 -1.4788,-0.72799 -1.9023,-0.82338 -3.6554,-0.82338 -1.7959,0 -2.1584,0.0868 -3.8446,0.92012 -2.3768,1.17471 -4.5639,3.41896 -5.3704,5.51083 -0.7541,1.9560704 -0.8977,4.9677904 -0.3708,7.7773104 0.6076,3.23948 1.2013,4.61328 2.5184,5.82727 l 1.1349,1.04615 -0.6177,0.5313 c -0.3397,0.29221 -1.8216,0.94494 -3.2932,1.45051 -3.0113,1.03461 -7.6981,3.30429 -9.873,4.78125 -1.9773,1.34274 -3.4709,3.07409 -4.7149,5.46522 -0.5758,1.10679 -2.4595,4.06822 -4.186,6.58095 -2.8242,4.11048 -5.6385,9.11474 -5.6385,10.02612 0,0.1904 0.4793,1.02916 1.0652,1.8639 0.5859,0.83474 1.4901,2.29139 2.0094,3.23702 0.5291,0.96372 1.7747,2.588 2.8342,3.69598 1.0397,1.08717 2.1168,2.42089 2.3938,2.96382 0.637,1.24863 1.0884,1.62463 2.3519,1.95914 0.5567,0.1474 0.9859,0.39225 0.9537,0.54411 -0.1247,0.58779 0.4257,1.52123 0.8969,1.52123 0.3716,0 0.4716,0.15221 0.436,0.6634 -0.038,0.54263 0.1687,0.8056 1.1344,1.44453 0.6494,0.42962 2.0862,1.12866 3.193,1.55342 1.1068,0.42476 2.1774,0.86395 2.3791,0.97599 0.2633,0.14617 0.4529,1.02881 0.6715,3.12533 0.6691,6.41657 2.309,13.17791 4.7295,19.50071 0.543,1.41843 1.0548,2.93854 1.1373,3.37803 0.082,0.4395 0.4598,1.18895 0.8385,1.665443 0.5405,0.68026 0.9068,1.77495 1.7048,5.09572 0.5589,2.32613 1.1327,5.11748 1.2749,6.20298 0.2563,1.9569 0.2505,1.99646 -0.6885,4.6667 -0.9288,2.64116 -0.9468,2.75932 -0.9372,6.13168 0.01,2.24866 0.1531,4.11861 0.4238,5.40355 0.4809,2.28248 0.9173,6.37474 0.9173,8.60255 0,1.51258 -0.021,1.56369 -0.8762,2.09196 -0.4819,0.29783 -1.1552,0.96318 -1.4963,1.47853 -0.5543,0.83755 -0.6041,1.10161 -0.47,2.48733 0.082,0.85266 0.2128,3.35924 0.2897,5.5702 0.132,3.7939 0.1683,4.02733 0.6462,4.1523 0.4947,0.12937 0.503,0.23456 0.3613,4.54461 -0.1342,4.08051 -0.1065,4.51545 0.3688,5.78584 0.6172,1.64973 2.2829,3.37619 4.1594,4.31132 1.5834,0.789 2.2986,0.8113 2.7735,0.0865 z m 12.7974,-65.78083 c 0.5799,-2.848093 1.1189,-5.242843 1.1977,-5.321683 0.19,-0.18996 0.1722,0.77302 -0.1005,5.464883 -0.226,3.88665 -0.2361,3.93592 -0.9134,4.48128 -0.3767,0.30326 -0.8093,0.55195 -0.9615,0.55264 -0.1804,7.2e-4 0.09,-1.80049 0.7777,-5.17712 z m 2.3416,1.98531 c 0.021,-1.32588 1.9938,-9.973633 2.255,-9.886043 0.2533,0.085 0.2515,-0.0775 0.055,4.90908 -0.1529,3.872043 -0.2394,4.551363 -0.6382,5.011303 -0.2538,0.29263 -0.4615,0.66926 -0.4615,0.83691 0,0.17088 -0.2698,0.28931 -0.6139,0.26944 -0.5614,-0.0324 -0.6123,-0.12983 -0.5961,-1.14069 z m 0.5786,-10.503233 c 0.3039,-0.3039 0.4222,0.19389 0.23,0.96806 l -0.2026,0.81581 -0.084,-0.82185 c -0.046,-0.45205 -0.021,-0.88494 0.056,-0.96202 z m -1.2064,-9.57587 c 0.1011,-0.77676 0.2538,-2.90441 0.3395,-4.72811 l 0.1556,-3.31581 0.4128,1.35088 c 0.5956,1.94938 0.435,5.28209 -0.3324,6.89836 -0.3151,0.66383 -0.6149,1.20697 -0.6661,1.20697 -0.051,0 -0.01,-0.63553 0.091,-1.41229 z m -30.8999,-17.54142 c -1.1342,-0.57235 -2.1398,-1.42086 -2.1398,-1.8057 0,-0.15659 -0.2794,-0.41202 -0.6209,-0.56762 -0.3415,-0.15561 -0.6882,-0.45813 -0.7703,-0.67228 -0.082,-0.21415 -0.4076,-0.4875 -0.723,-0.60745 -0.3155,-0.11994 -0.7276,-0.58122 -0.9157,-1.02505 -0.1881,-0.44383 -0.7163,-1.16014 -1.1736,-1.59178 -1.0437,-0.985 -1.2554,-1.24841 -1.7385,-2.16258 -0.2141,-0.40527 -0.8299,-1.5658 -1.3684,-2.57897 -1.2675,-2.38497 -1.4713,-3.27968 -0.848,-3.72172 0.2567,-0.18202 0.5118,-0.45935 0.5669,-0.61631 0.1466,-0.41732 7.0957,-8.18838 7.3224,-8.18838 0.2638,0 3.2614,6.33441 4.066,8.59254 0.838,2.35133 2.2504,7.75139 2.5817,9.86994 0.2754,1.76136 0.2866,1.72976 -1.8877,5.31307 -0.3786,0.62404 -0.7096,0.59058 -2.3511,-0.23771 z M 482.71201,166.91023 c 3.1179,-0.65719 4.17287,-2.37159 3.43777,-5.58653 -0.30645,-1.3403 -0.31938,-1.70909 -0.0668,-1.90723 0.47217,-0.37032 0.74905,-0.98696 1.70944,-3.80705 0.80727,-2.37041 0.9008,-2.94641 1.1566,-7.12285 0.18412,-3.00624 0.22459,-8.61655 0.11959,-16.57907 -0.0873,-6.61935 -0.17102,-18.34377 -0.18605,-26.05432 -0.0274,-14.018173 -0.0273,-14.019173 0.50528,-14.739613 0.52093,-0.70455 0.52699,-0.80444 0.27563,-4.52487 -0.41094,-6.08198 -1.22069,-13.9885 -1.60488,-15.67059 -0.19477,-0.85269 -0.35413,-1.69916 -0.35413,-1.88105 0,-0.18189 1.13291,-0.96007 2.51756,-1.72929 5.05132,-2.80615 8.33964,-4.88547 8.89693,-5.62578 0.69445,-0.92256 1.35761,-2.82686 1.35734,-3.89767 -2.5e-4,-0.97193 -0.69305,-4.36493 -0.96207,-4.71179 -0.1081,-0.13934 -0.60434,-1.67846 -1.10277,-3.42025 -0.49843,-1.7418 -1.06667,-3.47711 -1.26271,-3.85626 -0.19608,-0.37914 -0.35649,-1.28799 -0.35649,-2.01968 0,-0.73168 -0.2061,-1.87007 -0.458,-2.52976 -0.25188,-0.65968 -0.66591,-1.86209 -0.92003,-2.67202 -0.25413,-0.80993 -0.80388,-1.9204 -1.22164,-2.46771 -0.55716,-0.7299 -0.80405,-1.37328 -0.92637,-2.41403 -0.28498,-2.42473 -1.37179,-3.99214 -3.23539,-4.66615 -2.41827,-0.8746 -11.73561,-5.33177 -12.63549,-6.04448 -0.54986,-0.4355 -1.33313,-1.27636 -1.74058,-1.86859 -0.40746,-0.59223 -0.96709,-1.19785 -1.24361,-1.34584 -0.27651,-0.14799 -0.64835,-0.61939 -0.82632,-1.04755 -0.35644,-0.85759 -0.57757,-3.81809 -0.31631,-4.2347 0.0908,-0.14476 0.19836,-1.27249 0.23906,-2.50607 0.0608,-1.84467 0.003,-2.2994204 -0.32849,-2.5613804 -0.22134,-0.17518 -0.47875,-0.75271 -0.57198,-1.28342 -0.63613,-3.62072 -3.66928,-6.14211 -7.37649,-6.1319 -1.36314,0.004 -1.97372,0.1364 -2.94739,0.64028 -1.49533,0.77386 -3.41514,2.62793 -4.08921,3.94922 -0.73901,1.44859 -0.68598,3.9228804 0.12192,5.6875604 0.34709,0.75811 0.51877,1.41667 0.3901,1.4962 -0.43875,0.27117 -0.22521,1.17944 0.64181,2.72983 0.5789,1.03514 1.0237,1.5587 1.32424,1.5587 0.28872,0 0.59604,0.33343 0.84895,0.92106 0.21801,0.50659 0.61686,1.30619 0.8863,1.77689 0.26947,0.4707 0.48993,1.11172 0.48993,1.42449 0,1.20396 1.27376,2.77884 2.92003,3.61034 1.03181,0.52115 1.34458,0.39645 3.91652,-1.56139 1.79594,-1.36713 3.26797,-2.82867 3.88515,-3.85749 0.2608,-0.43471 0.31535,-0.44066 0.69428,-0.0757 0.22619,0.21783 0.46967,0.83153 0.54107,1.36379 0.1374,1.0244 -0.724,3.42842 -2.47932,6.9193 -0.82156,1.63389 -2.30113,5.6439 -3.36796,9.12803 l -0.56406,1.84212 -0.18458,-3.67246 c -0.10151,-2.01984 -0.28417,-4.13946 -0.40593,-4.71024 -0.2519,-1.18109 0.17412,-2.38317 1.00155,-2.82599 0.45876,-0.24552 0.44309,-0.29761 -0.32957,-1.09478 -1.0588,-1.0924 -2.39436,-1.17028 -3.30058,-0.19245 -0.59373,0.64065 -0.59452,0.64845 -0.13217,1.29777 0.89078,1.25099 0.86108,2.12915 -0.19853,5.86824 -0.5434,1.91749 -1.18114,4.45379 -1.41723,5.63621 -0.39534,1.98 -0.44341,2.08193 -0.60829,1.2902 -0.20683,-0.99314 -0.8094,-9.72865 -0.82173,-11.91237 -0.005,-0.81053 0.0761,-2.37315 0.17935,-3.47248 l 0.18767,-1.9988 -1.04733,0.35725 c -2.28825,0.78052 -10.90915,4.82501 -11.48598,5.38864 -0.59645,0.58281 -0.61337,0.69297 -0.591,3.84693 0.0192,2.69814 0.11696,3.51678 0.5787,4.84344 0.43979,1.26367 0.54806,2.07484 0.51933,3.89096 -0.0254,1.60351 0.11615,2.90301 0.46996,4.31528 0.46856,1.87039 0.47848,2.09955 0.13305,3.07856 -0.43725,1.23932 -0.48814,2.46969 -0.10213,2.46969 0.14909,0 1.20723,-0.29188 2.3514,-0.64862 1.76768,-0.55113 2.1277,-0.59727 2.39532,-0.30702 0.17323,0.18788 2.59692,3.74369 5.38599,7.9018 4.19095,6.2481 4.99637,7.58535 4.64071,7.70509 -1.86211,0.62695 -4.483,2.4656 -4.483,3.14496 0,0.17557 0.16169,0.45341 0.35934,0.61743 0.31436,0.26091 0.31033,0.37299 -0.0324,0.89602 -0.3624,0.55307 -0.35847,0.63453 0.0524,1.08855 0.26634,0.29431 0.35302,0.57448 0.21658,0.69996 -0.12514,0.11507 -1.4553,0.61375 -2.95589,1.10817 l -2.72835,0.89895 -0.27617,3.24571 c -0.35771,4.20404 -0.38245,14.15361 -0.0395,15.89494 0.15422,0.78314 0.30667,5.68647 0.36272,11.666753 0.10898,11.62492 0.24545,15.28703 0.7735,20.75454 0.20224,2.09388 0.46126,7.62024 0.5756,12.2808 0.14521,5.91777 0.33529,9.27065 0.6302,11.11568 l 0.42228,2.64192 -0.88242,2.02478 c -0.48533,1.11362 -0.99403,2.46891 -1.13047,3.01174 -0.28651,1.13995 -1.39124,2.28239 -4.26797,4.41367 -2.17267,1.60964 -2.74198,2.31259 -2.49732,3.08351 0.38301,1.20671 2.9242,1.53483 5.89149,0.76069 2.39976,-0.62607 3.60704,-1.30625 5.08363,-2.86414 0.70148,-0.74007 1.4877,-1.34559 1.74714,-1.34559 0.25947,0 0.98399,0.17655 1.61001,0.39233 1.11203,0.3833 1.1835,0.37623 3.10316,-0.30702 l 1.96493,-0.69934 0.0423,-1.71932 c 0.0233,-0.94562 0.16039,-3.87459 0.30466,-6.50882 0.14425,-2.63423 0.24997,-10.7027 0.23493,-17.92995 l -0.0274,-13.14045 0.86542,-3.68424 c 0.47599,-2.02633 1.2131,-5.50793 1.63802,-7.7369 0.96502,-5.06224 1.11601,-5.47544 1.34619,-3.68424 0.0955,0.74299 0.33566,2.23511 0.53375,3.31582 0.56917,3.10503 0.85831,9.18495 0.91959,19.33731 0.0525,8.69915 0.23038,13.18334 0.92617,23.35092 0.21157,3.09181 0.20113,4.0365 -0.0514,4.64609 -0.31007,0.74852 -0.29101,0.7887 0.87343,1.84293 l 1.19038,1.07771 -0.23542,1.85684 c -0.34269,2.70285 -0.14474,3.75659 0.81033,4.31387 0.92797,0.54146 2.77065,0.73402 4.18041,0.43687 z m 4.86332,-111.432483 c 0.18832,-1.25583 0.4891,-1.18887 0.90571,0.20163 0.28153,0.93969 0.26414,1.0238 -0.30024,1.45249 -0.58889,0.44729 -0.60053,0.4462 -0.68264,-0.0638 -0.0459,-0.28533 -0.0113,-1.001 0.0772,-1.59036 z M 303.13642,166.55515 c 0.28258,-0.43128 0.40411,-1.27559 0.43548,-3.02521 l 0.0435,-2.42698 -1.13007,-1.7029 c -0.62156,-0.93658 -1.86138,-3.0896 -2.75517,-4.78445 -1.28649,-2.43953 -1.65656,-3.38623 -1.77625,-4.54389 -0.0831,-0.80429 -0.36307,-1.9802 -0.62205,-2.61315 -0.38207,-0.93373 -0.47155,-1.7676 -0.47445,-4.42108 -0.005,-4.58435 -0.40173,-11.08067 -0.99907,-16.35962 -0.40045,-3.53901 -0.71717,-5.18146 -1.49192,-7.7369 -0.91991,-3.03426 -0.99951,-3.54286 -1.23061,-7.86266 -0.1359,-2.54018 -0.19234,-4.76118 -0.12543,-4.93552 0.0669,-0.17437 0.62907,-0.45908 1.24927,-0.63273 1.32227,-0.37022 1.30923,-0.29759 0.63816,-3.55913 -0.77332,-3.758413 -0.93648,-5.031043 -1.46532,-11.429713 -0.27354,-3.30969 -0.62305,-6.87918 -0.77673,-7.93223 -0.25572,-1.75249 -0.24174,-1.94216 0.1652,-2.23972 0.49675,-0.36324 0.64619,0.0749 -2.90976,-8.53282 -1.33073,-3.22129 -1.53481,-3.89862 -1.25797,-4.17547 0.2768,-0.27686 0.11032,-0.72318 -1.02639,-2.75144 -0.74623,-1.33154 -1.29302,-2.48473 -1.21511,-2.56266 0.0779,-0.0779 0.9964,0.31232 2.04105,0.8672 3.11637,1.65529 5.97038,2.54638 8.6538,2.70192 1.48132,0.0859 2.54444,0.2731 2.91141,0.51277 0.54925,0.3587 2.39095,0.61363 3.72022,0.51496 1.01059,-0.075 1.53213,-0.0485 2.88975,0.14705 1.03954,0.1497 1.38075,0.10706 1.73925,-0.21737 0.2453,-0.22199 0.51476,-0.33484 0.59884,-0.25078 0.25465,0.25467 1.44564,-0.14902 1.34352,-0.4554 -0.0523,-0.15702 -1.13352,-0.90073 -2.40264,-1.65268 -1.51344,-0.89672 -2.58543,-1.73162 -3.11527,-2.4263 -1.29958,-1.70384 -1.03839,-2.11217 1.10212,-1.72312 1.57517,0.28629 2.87956,-0.005 2.87956,-0.64241 0,-0.59644 -1.31542,-1.067 -3.0702,-1.09827 -0.77276,-0.0138 -1.80908,-0.232 -2.42158,-0.50992 -0.85051,-0.38593 -1.6049,-0.48584 -3.66856,-0.48584 -3.79251,0 -5.90539,-0.62846 -7.56777,-2.25096 l -1.25431,-1.22422 -0.13966,-2.15581 c -0.0884,-1.36503 -0.38046,-2.86743 -0.79604,-4.09579 -0.48124,-1.42236 -0.77541,-3.11958 -1.10252,-6.36106 -0.43555,-4.31633 -1.35634,-8.7844 -2.11107,-10.24388 -0.40794,-0.78886 -0.81083,-0.99143 -2.8628,-1.43942 -0.77848,-0.16996 -1.54345,-0.4633 -1.69993,-0.65187 -0.15651,-0.18857 -0.37162,-1.54766 -0.47805,-3.02019 -0.2112,-2.92281 -0.52053,-3.77458 -2.1806,-6.0047 l -0.92052,-1.2366 -0.16363,-4.54389 -0.16365,-4.5439004 -1.00628,-2.13641 c -1.17862,-2.50227 -1.653,-3.00598 -4.19564,-4.45495 -1.54053,-0.87791 -2.21143,-1.1109 -3.55686,-1.23519 -0.912,-0.0842 -2.06261,-0.0572 -2.55689,0.0601 -1.62259,0.38514 -4.29518,3.0689 -5.54126,5.56439 -0.77706,1.55625 -1.97291,6.8499304 -2.30071,10.1845404 -0.20743,2.11021 -0.52535,3.72299 -1.01678,5.15793 -0.4271,1.24714 -0.77273,2.86847 -0.85843,4.02679 l -0.14346,1.93904 -3.99619,1.93202 c -3.50521,1.69465 -4.01332,2.01468 -4.13561,2.60484 -0.85715,4.13647 -1.16231,7.49716 -1.28769,14.18171 -0.0769,4.09825 -0.27693,8.05015 -0.47114,9.3066 -0.34998,2.26444 -0.59579,2.97233 -0.59579,1.71576 0,-1.20247 -1.16704,-7.35807 -2.08567,-11.00095 -0.6695,-2.65493 -0.86634,-3.94249 -0.88245,-5.77197 -0.0113,-1.29512 -0.11276,-2.96267 -0.22528,-3.70566 -0.11249,-0.74298 -0.3374,-2.2351 -0.49978,-3.31581 -0.36322,-2.41723 -0.94788,-3.63509 -1.94304,-4.0473 -0.41239,-0.17081 -0.74979,-0.44369 -0.74979,-0.60638 0,-0.1627 -0.27632,-0.5554 -0.61404,-0.87268 -0.33773,-0.31727 -0.61404,-0.65098 -0.61404,-0.74158 0,-0.0906 0.4421,-0.84875 0.98246,-1.68478 1.11563,-1.7261 1.13509,-1.80701 0.57015,-2.37196 -0.33856,-0.33854 -0.36408,-0.54015 -0.14266,-1.12677 0.24903,-0.65975 0.2148,-0.74282 -0.44734,-1.08522 -0.71845,-0.37152 -0.96219,-1.1601 -0.45539,-1.47332 0.17127,-0.10584 0.11571,-0.32293 -0.16085,-0.62853 -0.38732,-0.42797 -0.38865,-0.46686 -0.016,-0.46686 0.60402,0 0.49207,-0.37339 -0.20755,-0.69215 -0.7587,-0.34569 -0.84815,-1.27277 -0.1228,-1.27277 0.57552,0 0.65508,-0.3758 0.1228,-0.58005 -0.23124,-0.0887 -0.36842,-0.46433 -0.36842,-1.00874 0,-0.85811 -0.20145,-1.01104 -1.16668,-0.8857 -0.50584,0.0657 -0.34636,-0.40532 0.18422,-0.54406 0.51167,-0.13381 0.69064,-0.66569 0.22402,-0.66569 -0.17303,0 -0.21197,-0.32701 -0.11043,-0.92801 0.13337,-0.78929 0.0632,-1.01597 -0.46964,-1.51651 -0.34452,-0.32367 -0.62642,-0.77315 -0.62642,-0.99885 0,-0.478 -0.64267,-1.0993704 -1.36331,-1.3180904 -0.27796,-0.0844 -0.64035,-0.5309 -0.80869,-0.99646 -0.16778,-0.46397 -0.6921,-1.15431 -1.16513,-1.53409 -0.47303,-0.37977 -1.62448,-1.3813 -2.55878,-2.2256 -1.1819,-1.06804 -1.8964,-1.5351 -2.34845,-1.5351 -0.35733,0 -0.989,-0.2855 -1.4037,-0.63444 -0.56892,-0.47871 -0.90919,-0.59407 -1.38633,-0.46999 -0.34779,0.0905 -1.36144,0.23778 -2.25256,0.32742 -0.89115,0.0896 -1.79543,0.3084 -2.00956,0.48614 -0.21413,0.17774 -1.12168,0.42688 -2.01675,0.55364 -0.8951,0.12676 -1.92502,0.38592 -2.28875,0.57591 -1.04952,0.54824 -2.84317,2.39867 -3.34008,3.44586 -0.2504,0.52768 -0.78703,1.26242 -1.19249,1.63276 -0.40546,0.37034 -0.97136,1.0584504 -1.25755,1.5291404 -0.2862,0.47069 -1.00449,1.55754 -1.59626,2.41525 -0.84379,1.22301 -1.1123,1.86436 -1.24451,2.97278 -0.12566,1.0532 -0.33654,1.58859 -0.82763,2.10117 -0.36243,0.37831 -0.65899,0.91506 -0.65899,1.19277 0,0.2777 -0.28162,0.91992 -0.62582,1.42714 -0.93725,1.38111 -0.99976,2.11111 -0.2875,3.35731 0.60267,1.05448 0.68527,1.94071 0.31716,3.40311 -0.14689,0.58368 -0.14245,0.58672 0.0901,0.0614 0.28386,-0.64128 0.7031,-0.7194 0.91384,-0.17027 0.0853,0.22241 -0.18114,0.8389 -0.63703,1.47369 l -0.78374,1.09134 0.75213,0 c 0.99761,0 0.9534,0.40318 -0.0993,0.90517 -0.89115,0.42496 -1.60419,1.56658 -1.60557,2.57057 0,0.3173 -0.16385,1.5164 -0.36314,2.66465 -0.97426,5.61309 -2.51511,20.04359 -2.95044,27.63179 -0.0852,1.48597 -0.30313,4.19389 -0.48418,6.01758 -0.18151,1.82831 -0.33861,6.452 -0.3502,10.30669 l -0.0211,6.99088 -0.77239,2.3184 c -0.74783,2.24473 -0.76293,2.3738 -0.47549,4.06186 0.43376,2.54713 0.44943,2.57847 1.68154,3.35985 1.19826,0.75991 2.50801,0.95795 2.50801,0.37921 0,-0.18574 0.30395,-0.4023 0.67544,-0.48122 0.37149,-0.0789 1.00703,-0.41526 1.41229,-0.7474 l 0.73685,-0.60392 -0.65982,-0.69559 c -1.11065,-1.17087 -1.17667,-1.65563 -0.66454,-4.88094 0.25652,-1.61564 0.57838,-3.13235 0.7152,-3.37047 0.13684,-0.23813 0.4134,-1.23287 0.61456,-2.21055 0.20119,-0.97767 0.85627,-3.98812 1.45577,-6.6899 2.43152,-10.95825 2.83711,-12.94039 2.83711,-13.86496 0,-0.53119 0.11052,-1.03411 0.24561,-1.1176 0.50481,-0.31199 0.22093,2.56432 -0.71513,7.24566 -2.08612,10.43279 -2.95385,15.76062 -3.14032,19.28085 l -0.11709,2.21054 1.67468,0.85966 1.67471,0.85965 0.28956,2.33336 c 0.38937,3.13753 1.54094,8.782343 3.15675,15.473803 0.73395,3.0395 1.67495,7.2948 2.0911,9.45621 0.41612,2.16142 1.20912,5.75356 1.76219,7.98252 0.93622,3.7732 0.98396,4.12888 0.69227,5.15794 -0.85639,3.02102 -1.01707,3.80188 -1.46412,7.11416 -0.26501,1.96358 -0.60016,5.06224 -0.74473,6.88594 -0.14459,1.8237 -0.44483,4.35004 -0.66719,5.61411 -0.2675,1.52078 -0.32455,2.42467 -0.16866,2.67181 0.12959,0.20543 0.72945,0.55698 1.33301,0.78123 l 1.09741,0.4077 -0.0896,1.83281 c -0.0493,1.00803 -0.29654,2.49595 -0.54947,3.30647 -0.46191,1.48023 -0.5978,3.17832 -0.31363,3.91886 0.28244,0.73601 1.46087,1.1163 3.45805,1.1159 2.18137,0 3.40628,-0.46465 3.9863,-1.51073 0.35943,-0.64825 0.29231,-1.85318 -0.39105,-7.01978 -0.12531,-0.94731 -0.0817,-1.06079 0.49141,-1.2787 0.44758,-0.17016 0.70602,-0.52547 0.89637,-1.23235 0.22056,-0.81913 0.37344,-0.99325 0.87201,-0.99325 0.7171,0 0.72823,0.1291 0.20914,2.42769 -0.66603,2.94934 -0.0374,4.24407 2.22556,4.58342 1.46873,0.22024 3.7575,-0.2956 4.46914,-1.00725 0.46874,-0.46873 0.57799,-0.83693 0.57799,-1.9479 0,-0.75348 -0.15675,-1.74508 -0.34831,-2.20357 -0.38281,-0.91622 -0.53532,-4.56529 -0.25861,-6.18793 0.13136,-0.77024 0.0331,-1.43117 -0.40145,-2.70176 -0.43647,-1.27595 -0.61027,-2.45294 -0.71993,-4.87506 -0.0969,-2.13939 -0.3222,-3.83544 -0.68289,-5.13998 -0.88515,-3.20128 -0.99172,-4.89387 -0.49034,-7.7871 0.24274,-1.4007 0.78034,-4.92305 1.19467,-7.82746 0.41433,-2.90441 1.02613,-6.60707 1.35953,-8.22813 0.33341,-1.62107 1.04964,-5.32373 1.59167,-8.22813 0.95284,-5.10587 2.45363,-11.388553 2.93555,-12.289053 0.13084,-0.24447 0.90335,-0.63836 1.74648,-0.89051 0.83153,-0.24867 1.59967,-0.61792 1.70693,-0.82056 0.10728,-0.20263 0.30225,-1.08685 0.43327,-1.96492 0.19735,-1.3228 0.22446,-0.92273 0.15807,2.33335 -0.044,2.16143 -0.15103,4.11024 -0.23768,4.33071 -0.0974,0.24785 0.067,0.64312 0.43088,1.03573 l 0.58843,0.63494 1.40224,-0.87709 c 1.29039,-0.80714 1.50081,-1.07356 2.63841,-3.3405 l 1.23621,-2.46341 -0.27325,-2.11635 c -0.1503,-1.16401 -0.33595,-2.47108 -0.41259,-2.90465 -0.13567,-0.76744 -0.10853,-0.79607 1.02474,-1.08143 l 1.16407,-0.29312 -0.16078,-2.11158 c -0.0884,-1.16137 -0.31596,-3.05107 -0.50558,-4.19932 -0.18961,-1.14825 -0.41383,-2.97195 -0.49828,-4.05266 -0.0844,-1.08071 -0.41811,-4.12021 -0.74147,-6.75444 -0.32337,-2.63423 -0.65407,-5.5632 -0.73487,-6.50882 -0.14524,-1.69943 -0.14224,-1.71079 0.2588,-0.98246 1.06005,1.92519 1.9088,3.06343 2.39572,3.21283 0.2936,0.0901 1.28945,0.77051 2.21299,1.51205 l 1.67918,1.34825 -0.7789,0.80362 c -0.4788,0.49399 -0.74724,0.99647 -0.69671,1.30415 0.0814,0.49561 0.0955,0.49478 1.43307,-0.0847 0.74299,-0.32187 1.54386,-0.58965 1.77971,-0.59507 0.4,-0.009 0.39588,0.0768 -0.0613,1.27961 -0.26957,0.70922 -0.49016,1.30423 -0.49023,1.32225 -7e-5,0.018 0.23633,0.0946 0.52532,0.17016 0.46554,0.12174 0.50872,0.25807 0.37862,1.19532 -0.0808,0.58186 -0.45247,3.52297 -0.82603,6.5358 -0.57531,4.63983 -0.62659,5.51041 -0.33519,5.6905 0.57155,0.35323 0.93564,4.204 1.35929,14.37568 0.30797,7.394263 0.47627,9.657443 0.7379,9.922883 0.24191,0.24544 1.30803,0.38603 3.72521,0.49123 l 3.3863,0.14737 0.44059,2.45616 c 0.24229,1.35089 0.53952,4.6667 0.66043,7.36847 0.12094,2.70178 0.33834,5.49792 0.48311,6.21364 0.55926,2.765 2.07535,7.99716 3.72888,12.86868 1.63426,4.81476 1.73084,5.22359 1.8352,7.76861 0.094,2.2942 0.003,3.21965 -0.62578,6.33892 -0.40475,2.00889 -0.86393,4.10132 -1.02039,4.64983 -0.36349,1.27428 -0.20509,1.84649 1.03272,3.7308 0.73761,1.12286 1.15555,1.5351 1.55627,1.5351 0.67603,0 3.20757,-1.49 4.20273,-2.47364 l 0.73638,-0.72786 0.22305,-5.46071 c 0.33578,-8.22122 0.37319,-7.69796 -0.67041,-9.38045 -0.49931,-0.80498 -1.01656,-1.85499 -1.14946,-2.33335 -0.3178,-1.14396 -0.31291,-9.85153 0.007,-12.97184 0.17318,-1.6877 0.17176,-3.13167 -0.005,-4.63131 -0.73702,-6.26801 -0.77772,-7.39067 -0.38458,-10.60785 0.21071,-1.7242 0.38311,-3.5981 0.38311,-4.16422 0,-1.21096 0.0882,-1.24989 3.04829,-1.34477 l 1.94302,-0.0623 0.45227,3.193 c 0.42344,2.98935 0.54525,3.38103 1.9093,6.1404 1.30776,2.64548 1.52468,3.31223 2.11775,6.50882 0.74994,4.04218 1.47738,6.54783 3.28012,11.29834 1.25036,3.29488 3.9544,12.1807 3.94754,12.97222 -0.003,0.22762 -0.17551,0.90772 -0.38569,1.51134 -0.44059,1.26546 -0.3333,2.12967 0.49533,3.98994 1.81948,4.08473 3.34612,7.87717 3.5661,8.85879 0.37704,1.6824 0.76836,2.38466 1.55566,2.79177 0.76894,0.39765 5.2984,2.0516 5.61841,2.0516 0.10733,0 0.37154,-0.26919 0.58715,-0.59822 z M 243.36239,93.231927 c -0.0903,-1.23771 0.23213,-1.71992 0.82234,-1.23007 0.58749,0.48757 0.18038,2.59229 -0.46067,2.3817 -0.15648,-0.0514 -0.31925,-0.56963 -0.36167,-1.15163 z m -1.15395,-6.37713 c 0.17765,-1.05152 0.47086,-1.43552 0.75057,-0.98296 0.17011,0.27524 -0.61089,2.28895 -0.81038,2.08946 -0.0598,-0.0598 -0.0329,-0.55774 0.0598,-1.1065 z m -4.11599,-24.4566 c -0.70013,-2.61225 -1.65724,-7.1041 -1.65508,-7.7676 0.004,-1.07854 0.294,-2.18023 0.53552,-2.03098 0.12539,0.0775 0.21145,0.82176 0.19128,1.65392 -0.0385,1.58491 0.36022,3.50162 1.22017,5.86658 0.49482,1.36082 0.73481,4.47397 0.30719,3.98511 -0.11224,-0.12834 -0.38183,-0.8965 -0.59908,-1.70703 z m 17.49043,-5.09653 c -0.008,-0.16886 -0.10529,-0.85966 -0.21609,-1.5351 -0.21725,-1.32447 0.0454,-2.43606 0.53692,-2.27222 0.40015,0.13338 0.87937,1.76281 0.903,3.07047 0.0172,0.95475 -0.0335,1.04387 -0.59515,1.04387 -0.33772,0 -0.62062,-0.13816 -0.62868,-0.30702 z m -47.51203,-27.93881 c 0.0835,-0.13508 0.25581,-0.24561 0.38292,-0.24561 0.12713,0 0.23112,0.11053 0.23112,0.24561 0,0.1351 -0.17232,0.24562 -0.38291,0.24562 -0.21062,0 -0.31461,-0.11052 -0.23113,-0.24562 z m 29.88494,-2.78875 c -0.10337,-0.90375 0.77499,-1.87795 1.69323,-1.87795 0.90409,0 1.05809,0.56466 0.33839,1.24079 -0.32567,0.30592 -0.65875,0.76624 -0.74022,1.02292 -0.2393,0.75398 -1.19362,0.4689 -1.2914,-0.38576 z m -30.99021,-0.63537 c 0,-0.33336 0.43339,-0.5524 0.59039,-0.29838 0.1468,0.23752 -0.0659,0.5295 -0.38572,0.5295 -0.11256,0 -0.20467,-0.104 -0.20467,-0.23112 z m 31.93006,-2.34785 c 0,-0.38207 0.13919,-0.61404 0.36842,-0.61404 0.3684,0 0.51366,0.75536 0.20468,1.06434 -0.33394,0.33394 -0.5731,0.14603 -0.5731,-0.4503 z m -32.42129,-0.14327 c 0,-0.59858 0.57396,-0.51397 0.69345,0.10222 0.047,0.24237 -0.0783,0.40947 -0.30702,0.40947 -0.22784,0 -0.38643,-0.21 -0.38643,-0.51169 z m -0.57703,-0.84706 c 0.14359,-0.37423 0.82264,-0.50966 0.82264,-0.16406 0,0.31349 -0.55091,0.77808 -0.76543,0.64549 -0.10756,-0.0665 -0.13332,-0.28312 -0.0572,-0.48143 z m 31.62287,-6.4027 c 0.11888,-0.30983 0.23717,-0.35233 0.43366,-0.15583 0.1486,0.1486 0.19662,0.46188 0.1067,0.69618 -0.11888,0.30982 -0.23717,0.35232 -0.43366,0.15583 -0.1486,-0.1486 -0.19662,-0.46188 -0.1067,-0.69618 z M 15.290821,166.80106 c 0.4901,-0.21332 0.8637,-0.61549 1.0391,-1.11859 0.2621,-0.7518 0.324,-0.78243 1.4453,-0.71398 1.9311,0.11792 2.6506,-0.18369 3.9702,-1.66431 1.3028,-1.46169 1.6728,-2.54019 1.2516,-3.64801 -0.1944,-0.51138 -0.1689,-0.96167 0.1025,-1.81103 0.8559,-2.67805 2.595,-9.9787 3.0776,-12.92 0.2882,-1.75615 1.0702,-6.28776 1.7378,-10.07025 0.6676,-3.78248 1.44,-8.97726 1.7166,-11.54395 1.4139,-13.12318 3.1212,-23.316263 4.6893,-27.996013 l 0.5747,-1.71508 0.4389,1.83789 c 0.2437,1.02049 0.3776,2.22027 0.3009,2.69758 -0.2273,1.416 -0.6201,19.833233 -0.7307,34.263413 -0.062,8.07047 -0.2075,14.00327 -0.3617,14.73695 -0.142,0.67545 -0.5834,2.72019 -0.9811,4.54389 -0.4096,1.87869 -0.7093,3.95454 -0.6913,4.78951 0.018,0.81053 -0.1157,2.00133 -0.2958,2.64619 -0.288,1.03127 -0.2779,1.27637 0.084,2.03461 0.2261,0.47414 0.798,1.09034 1.2708,1.36931 0.4728,0.27899 0.8597,0.65768 0.8597,0.84155 0,0.33242 0.948,0.6835 2.824,1.04581 0.8363,0.16149 1.0006,0.29702 1.1073,0.91325 0.2075,1.19789 1.0684,1.4365 5.23754,1.45178 4.17741,0.0152 4.34001,-0.0614 4.34001,-2.04737 0,-1.0144 -0.10525,-1.20605 -1.25519,-2.28566 l -1.2552,-1.17844 0.51835,-1.92101 c 0.91398,-3.38724 0.59213,-4.95776 -1.01602,-4.95776 -1.2969,0 -1.37571,-0.12971 -1.01493,-1.67065 0.18021,-0.76976 0.44545,-2.28376 0.58945,-3.36447 0.14398,-1.0807 0.53046,-2.79387 0.85885,-3.80704 0.9106,-2.80935 1.28548,-5.4819 1.833,-13.06733 0.27593,-3.82269 0.55814,-7.39247 0.62719,-7.93283 0.069,-0.54035 0.22925,-2.36405 0.35609,-4.05266 0.5056,-6.73157 1.10863,-12.76087 1.74417,-17.43873 0.77224,-5.684193 0.61354,-5.163013 1.52389,-5.004273 0.43374,0.0756 1.12021,0.23184 1.52547,0.34715 0.40527,0.11529 1.24479,0.28084 1.86558,0.36784 1.12782,0.1581 1.12956,0.15719 2.21975,-1.15347 0.60009,-0.72142 1.2527,-1.52208 1.45027,-1.77924 0.2576,-0.33534 0.39644,-1.42494 0.49091,-3.85306 0.12917,-3.31984 0.14508,-3.39785 0.82097,-4.02427 0.42936,-0.3979 0.85411,-0.58646 1.12642,-0.50003 0.4132,0.13114 0.41733,0.0543 0.0754,-1.40296 -0.30763,-1.31113 -0.32278,-2.57021 -0.10131,-8.41894 0.21788,-5.75463 0.20047,-7.39846 -0.10667,-10.07025 -0.20188,-1.75615 -0.47642,-4.18775 -0.61009,-5.40355 -0.13364,-1.2158 -0.31181,-2.37633 -0.39591,-2.57896 -0.16599,-0.39997 -0.37883,-2.57702 -0.79022,-8.08235 -0.14543,-1.94615 -0.3249,-3.72906 -0.39885,-3.96202 -0.20519,-0.64652 -0.64904,-5.84628 -0.61947,-7.25731 0.0194,-0.91975 -0.20276,-1.79171 -0.84239,-3.30836 -0.57528,-1.36401 -0.86857,-2.44577 -0.86857,-3.2035 0,-0.62923 -0.13816,-1.25621 -0.30702,-1.39329 -0.16886,-0.13708 -1.21919,-0.53576 -2.33404,-0.88595 -2.37154,-0.74492 -3.78993,-1.42998 -6.81515,-3.29158 -2.92708,-1.80122 -3.54377,-2.2707 -3.94319,-3.00187 l -0.33541,-0.61404 -0.01,0.69594 c -0.005,0.38276 -0.33512,1.50833 -0.73274,2.50126 -0.39758,0.99293 -1.07598,3.27715 -1.50761,5.07604 -0.43158,1.79889 -0.86543,3.42441 -0.96413,3.61227 -0.1021,0.19444 -0.2546,-0.36105 -0.354,-1.28971 -0.1052,-0.98196 -0.4194,-2.09145 -0.7894,-2.78737 -0.4998,-0.93995 -0.5847,-1.35624 -0.4542,-2.2267 0.1194,-0.79643 0.055,-1.23159 -0.2513,-1.69916 -0.4798,-0.73231 -0.5414,-0.66947 1.8786,-1.91425 2.40747,-1.23832 2.81071,-1.83136 2.99199,-4.40015 0.18048,-2.55729 0.8295,-4.82923 1.32522,-4.639 1.22904,0.47162 2.61476,-3.88755 1.47316,-4.63423 -0.16339,-0.10687 -0.15064,-0.63768 0.0378,-1.57607 0.66829,-3.3277304 0.25236,-5.0680304 -1.67118,-6.9922904 -1.704,-1.70462 -2.87849,-2.2723 -4.96439,-2.39944 -1.3642,-0.0832 -1.8585,0.003 -2.9474,0.50967 -2.1792,1.01529 -3.2768,1.97583 -4.0448,3.53992 -0.6144,1.25126 -0.7008,1.69902 -0.691,3.5793 0.01,1.6223804 -0.068,2.1491404 -0.3131,2.1491404 -0.5052,0 -0.861,1.23948 -0.7004,2.44021 0.1619,1.2107 0.7176,2.22649 1.2179,2.22649 0.2245,0 0.4255,0.68594 0.6405,2.18552 0.2812,1.96203 0.2488,2.91394 -0.1567,4.60671 -0.1689,0.70473 1.1938,2.20551 3.125,3.44168 1.5292,0.9789 1.5316,0.9853 0.94,2.45617 -0.2543,0.63257 -0.2528,0.95915 0.01,1.74996 0.295,0.89385 0.2676,1.10539 -0.3397,2.62346 -0.4081,1.02013 -0.7488,2.50351 -0.8913,3.88123 -0.1269,1.22651 -0.275,2.27431 -0.3292,2.32845 -0.1107,0.11073 -0.2569,-0.58251 -1.5153,-7.18534 -0.4892,-2.56668 -1.0435,-5.03941 -1.2319,-5.49494 -0.1883,-0.45554 -0.3424,-1.32827 -0.3424,-1.93939 l 0,-1.11115 -0.5526,0.58889 c -2.1463,2.28702 -6.9586,4.77779 -12.0966,6.26091 -0.8105,0.23397 -1.5974,0.51939 -1.7487,0.63426 -0.1513,0.11487 -0.5701,1.45069 -0.9307,2.96849 -0.3606,1.5178 -0.7583,3.14648 -0.8836,3.61929 -0.1254,0.47281 -0.2806,1.57808 -0.3448,2.45616 -0.064,0.87808 -0.2849,2.37019 -0.4902,3.31581 -0.2367,1.0898 -0.3767,3.05352 -0.3825,5.36324 -0.01,2.2792 -0.1417,4.21095 -0.3632,5.15793 -0.604,2.58093 -1.415,8.73295 -1.8705,14.18791 -0.3186,3.81419 -0.096,16.43527 0.3181,18.02808 0.3575,1.3754 0.3455,2.41018 -0.053,4.60235 -0.2889,1.58879 -0.2939,2.27373 -0.031,4.17548 0.3896,2.81427 0.6653,3.28541 2.0424,3.49116 1.6284,0.24333 3.3867,0.66086 3.3867,0.80422 0,0.0711 -0.169,1.911433 -0.3756,4.089563 -0.2066,2.17812 -0.5244,5.89443 -0.7062,8.25848 -0.1857,2.4147 -0.7648,6.77385 -1.3214,9.94745 -0.545,3.10704 -1.2283,7.25181 -1.5185,9.2106 -0.723,4.88058 -1.5427,8.84396 -2.9969,14.49133 -1.5991001,6.20985 -2.0268001,7.74507 -2.5314001,9.08778 -0.357,0.94994 -0.3769,1.3641 -0.1418,2.94687 0.1504,1.01287 0.4912,2.29121 0.7572,2.84073 0.266,0.54951 0.4837,1.12263 0.4837,1.27356 0,0.15093 -0.4966,0.68129 -1.1034,1.17854 -1.2333,1.01061 -1.7711,2.32689 -1.3756,3.36703 0.1833,0.48229 0.4591,0.63344 1.3882,0.76076 2.058,0.28209 6.5610001,0.16415 7.3824001,-0.19339 z m 1.2054,-70.624333 c -0.2992,-0.33055 -0.478,-1.03267 -0.562,-2.20573 -0.1041,-1.45541 -0.06,-1.74519 0.2886,-1.8788 0.5738,-0.2202 0.6574,-0.0764 0.897,1.54459 0.1162,0.78558 0.2833,1.78754 0.3714,2.22658 0.1896,0.94437 -0.2879,1.09473 -0.995,0.31336 z m 35.71583,-4.18541 c 0.54832,-1.9786 0.65012,-2.16183 1.00442,-1.80753 0.28848,0.2885 -0.24038,2.24154 -0.86525,3.19523 -0.63583,0.97037 -0.67749,0.55491 -0.13917,-1.3877 z m -0.47949,-19.38561 c -0.003,-0.88602 -0.23331,-2.49517 -0.51388,-3.57588 -0.84071,-3.23839 -1.6945,-7.97046 -1.83909,-10.19306 -0.10144,-1.55939 -0.0152,-2.64716 0.34089,-4.29828 l 0.47666,-2.21054 0.4345,0.98246 c 0.23898,0.54036 0.52151,1.81142 0.62789,2.82458 0.10638,1.01317 0.32542,2.39476 0.48679,3.0702 0.31816,1.33195 0.33518,1.626 0.5893,10.19306 0.15619,5.26515 0.1374,5.73011 -0.21403,5.2952 -0.26119,-0.32324 -0.38645,-0.99554 -0.38903,-2.08774 z m -29.57104,-16.2251 c 0.1796,-2.89115 0.2027,-2.99142 0.3947,-1.71931 0.2021,1.33866 0.089,3.9928 -0.2409,5.64916 l -0.1712,0.85966 -0.087,-0.85966 c -0.048,-0.47281 0,-2.24124 0.1041,-3.92985 z M 347.1934,166.27188 c 0.89549,-0.7535 0.93685,-1.26146 0.37009,-4.54571 -0.21209,-1.22892 -0.33276,-2.28725 -0.26816,-2.35185 0.0646,-0.0646 1.31576,-0.39286 2.78034,-0.72948 1.46461,-0.33661 2.75889,-0.70614 2.87616,-0.82116 0.11729,-0.11503 0.1991,-7.7064 0.18181,-16.86971 -0.0408,-21.62905 0.13459,-25.7848 1.56379,-37.04668 0.61718,-4.863193 1.29754,-10.002713 1.51193,-11.421153 0.21443,-1.41843 0.46068,-3.1316 0.54726,-3.80704 0.0866,-0.67545 0.26797,-1.22809 0.40306,-1.22809 0.41212,0 1.33001,2.15224 1.34076,3.14382 0.0125,1.1526 -0.54163,2.27686 -1.20813,2.45114 -0.65015,0.17002 -0.65639,1.05909 -0.01,1.40511 0.27018,0.14459 0.49123,0.42332 0.49123,0.61939 0,0.19608 0.37336,0.51248 0.82967,0.70315 0.45633,0.19065 0.89991,0.46031 0.98577,0.59923 0.21593,0.34937 1.33137,-0.002 2.53631,-0.79977 l 0.986,-0.65251 0.16682,-2.05596 c 0.15545,-1.91583 0.11549,-2.18907 -0.58619,-4.00857 -0.41413,-1.07394 -0.6847,-2.13055 -0.60126,-2.34804 0.18632,-0.48553 -0.21141,-3.6539 -0.9916,-7.89916 -0.32274,-1.75615 -0.82707,-5.12723 -1.1207,-7.49128 -0.29366,-2.36405 -0.75414,-5.40355 -1.02328,-6.75443 -0.80776,-4.05414 -1.03454,-8.5031 -1.05163,-20.63174 -0.0137,-9.80581 0.0381,-11.61051 0.34455,-11.98609 0.31954,-0.39156 0.31033,-0.53591 -0.0804,-1.26151 -0.3274,-0.60796 -0.37709,-0.93928 -0.19254,-1.28413 0.27031,-0.50503 0.22804,-2.1506 -0.0733,-2.85485 -0.11008,-0.25731 -0.0231,-0.87081 0.21037,-1.48191 0.53169,-1.39216 0.50686,-1.60148 -0.22962,-1.93705 -0.54819,-0.24978 -0.61073,-0.39721 -0.49246,-1.16141 0.15471,-0.99997 0.014,-1.21823 -1.64283,-2.54967 -1.14769,-0.92225 -1.16668,-0.96047 -1.16668,-2.3488 0,-1.24749 -0.0855,-1.49324 -0.73684,-2.11725 -0.40527,-0.38827 -0.73685,-0.94152 -0.73685,-1.22945 0,-0.28793 -0.16429,-1.06857 -0.36508,-1.73476 -0.27441,-0.9103 -0.57953,-1.34913 -1.22808,-1.76615 -0.65071,-0.4183904 -0.863,-0.7247704 -0.863,-1.2454404 0,-0.3798 -0.30395,-1.29063 -0.67544,-2.02408 -0.58152,-1.14809 -0.82139,-1.3797 -1.72501,-1.66563 -0.61608,-0.19495 -1.49885,-0.78138 -2.13738,-1.4199 -1.89767,-1.89768 -3.13145,-2.15211 -6.39208,-1.31818 -1.05639,0.27017 -2.1889,0.49123 -2.5167,0.49123 -0.38792,0 -1.12455,0.49634 -2.10986,1.42164 -0.83259,0.7819 -2.03851,1.83905 -2.67982,2.34922 -0.69484,0.55278 -1.2214,1.19409 -1.30314,1.58715 -0.48116,2.3137504 -0.97023,3.6651304 -1.50616,4.1618204 -0.41252,0.38231 -0.55176,0.70778 -0.44572,1.04186 0.0879,0.27697 -0.011,0.72166 -0.22995,1.03432 -0.43774,0.62494 -0.49568,1.4912 -0.1437,2.14883 0.27044,0.50535 -0.0389,0.87903 -0.85264,1.03008 -0.26914,0.05 -0.63285,0.39024 -0.80825,0.75616 -0.26821,0.55962 -0.25902,0.78104 0.0578,1.39373 0.46942,0.90776 0.30483,1.36623 -0.62936,1.75319 -0.93578,0.38761 -1.26126,1.01445 -1.06635,2.05354 0.14698,0.78344 0.1064,0.84604 -0.72635,1.12088 -0.98444,0.32489 -0.98856,0.33185 -0.6137,1.03228 0.22572,0.42178 0.14776,0.62575 -0.49123,1.28503 -0.41777,0.43101 -0.75957,0.97571 -0.75957,1.21043 0,0.23473 -0.17387,0.69214 -0.38638,1.01647 -0.44783,0.68349 -0.72476,2.56847 -1.08358,7.37554 -0.14118,1.89125 -0.47249,5.37285 -0.73626,7.7369 -1.88834,16.92449 -1.79469,15.54144 -1.86282,27.50898 -0.0519,9.12408 -0.13227,11.41661 -0.43754,12.48891 -0.34421,1.20911 -0.33746,1.48015 0.085,3.41348 0.25242,1.15504 0.60446,2.23477 0.78233,2.39938 0.48755,0.4512 3.47082,1.12293 3.7495,0.84426 0.56831,-0.56833 0.67793,-0.12166 0.53036,2.16115 -0.0851,1.31712 -0.21096,3.44477 -0.27961,4.72811 -0.52481,9.809163 -0.67097,11.527293 -1.11981,13.163343 -0.26335,0.95992 -0.8056,3.61326 -1.20499,5.89633 -0.3994,2.28307 -1.01177,4.97998 -1.36086,5.99315 -1.08643,3.15334 -2.10913,8.18928 -2.93691,14.46186 -0.84204,6.38064 -1.12541,7.71158 -1.86125,8.74184 -0.82672,1.15749 -2.19158,6.07724 -2.19578,7.91491 -0.006,2.75545 -0.0621,2.85455 -3.5925,6.38498 -3.51992,3.51992 -4.25524,4.53002 -3.7452,5.1446 0.91659,1.10442 3.12647,1.36216 6.18753,0.72169 1.97203,-0.41258 2.136,-0.52918 3.07642,-2.1878 0.96954,-1.70997 2.92918,-4.33971 3.23387,-4.33971 0.13538,0 0.24613,0.3794 0.24613,0.8431 0,0.62613 0.12585,0.88307 0.48905,0.99833 0.67535,0.21435 0.90394,0.0167 1.08275,-0.93638 0.31999,-1.70571 0.35194,-1.71528 4.12148,-1.23437 2.46935,0.31503 3.50295,0.3587 3.9258,0.16582 0.53783,-0.24532 0.65555,-0.73948 1.86948,-7.84745 1.22936,-7.19831 2.0339,-12.95218 2.38287,-17.04186 0.56,-6.56278 2.50039,-22.92222 3.20799,-27.04656 0.35491,-2.06872 1.30977,-5.23417 2.77005,-9.183063 0.39992,-1.08142 0.96441,-3.18143 1.25444,-4.6667 0.82593,-4.22973 0.7549,-3.9921 1.04062,-3.48156 0.16771,0.29967 0.15007,1.00373 -0.0553,2.20708 -0.42346,2.48097 -0.37235,7.688373 0.10476,10.668943 0.27855,1.74037 0.40148,4.04974 0.39876,7.49129 -0.005,6.88994 -0.65513,25.55181 -0.99797,28.66777 -0.1787,1.62406 -0.24136,5.19367 -0.17035,9.70182 0.0972,6.16824 0.17301,7.28177 0.56093,8.23763 0.34684,0.85462 0.46203,1.88511 0.50791,4.5439 0.0326,1.89124 0.0693,3.5784 0.0814,3.74925 0.012,0.17085 0.38127,0.52965 0.82031,0.79734 0.63338,0.38616 1.23828,0.48689 2.92855,0.48762 1.93418,0 2.19986,-0.0576 2.88599,-0.63496 z M 323.026,87.830657 c -0.27155,-0.43938 -0.21853,-2.96806 0.0683,-3.25484 0.42529,-0.4253 0.51108,-0.21136 0.69085,1.7229 0.14103,1.5173 0.1093,1.76633 -0.22503,1.76633 -0.21406,0 -0.45439,-0.10547 -0.53407,-0.23439 z m 2.28794,-15.93885 c 0.1452,-0.76356 0.32964,-1.99619 0.4098,-2.73918 0.0802,-0.74298 0.43089,-2.40089 0.77937,-3.68423 0.50039,-1.8427 0.65027,-3.03059 0.71278,-5.64917 0.12958,-5.43002 0.54686,-5.57233 0.57157,-0.19492 0.0194,4.20058 -0.042,4.89824 -0.71528,8.13565 -0.40502,1.9476 -0.88606,3.91428 -1.069,4.3704 -0.18294,0.45613 -0.41708,1.05037 -0.52029,1.32055 -0.34057,0.89146 -0.44746,-0.0949 -0.16895,-1.5591 z m 124.66276,-3.53743 c -0.0977,-0.16886 -0.3805,-0.6004 -0.62855,-0.95897 -0.46792,-0.67648 -0.5999,-1.43578 -0.24955,-1.43578 0.11078,0 0.66341,-0.39546 1.22808,-0.8788 0.66759,-0.57142 1.02667,-1.08179 1.02667,-1.4592 0,-0.31922 0.11054,-0.64871 0.24562,-0.7322 0.44685,-0.27617 0.2748,-1.30853 -0.24562,-1.47369 -0.27017,-0.0858 -0.49123,-0.34742 -0.49123,-0.58147 0,-0.57143 -0.47769,-1.01505 -1.09298,-1.015 -0.27694,10e-6 -1.38774,0.27438 -2.46845,0.60969 -2.11271,0.65552 -2.09451,0.6593 -2.80905,-0.58281 -0.10862,-0.18879 -0.32829,-0.26002 -0.49129,-0.15928 -0.39148,0.24194 -0.087,3.30054 0.38181,3.83594 0.18677,0.21327 0.33957,0.50314 0.33957,0.64416 0,0.14102 0.46974,0.68954 1.04386,1.21894 0.57413,0.52939 1.24331,1.26717 1.48704,1.63951 0.24374,0.37233 0.79638,0.89234 1.22808,1.15556 0.89812,0.54761 1.77093,0.64878 1.49599,0.1734 z"
+       style="fill:#000000"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g3005"
+       transform="translate(-1984.6672,449.26613)">
+      <title
+         id="title3007">Layer 1</title>
+      <g
+         id="layer1-7" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:53.65770721px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol"
+       x="426.31839"
+       y="-254.96274"
+       id="text3023"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3025"
+         x="426.31839"
+         y="-254.96274"
+         style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;fill:#000000;fill-opacity:1;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold">Opportunité</tspan></text>
+    <g
+       id="g5198"
+       transform="translate(-11.111678,-5.555839)">
+      <g
+         id="g4981"
+         style="fill:#15741e;fill-opacity:1">
+        <path
+           style="font-size:92.23697662px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#15741e;fill-opacity:1;stroke:none;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold"
+           d="m -239.03125,-147.4375 c -24.6301,-0.69671 -45.77449,24.7748 -40.40625,48.8125 3.97005,24.24737 32.11097,40.44567 55.1875,31.59375 21.72726,-7.28407 33.89975,-34.43133 24.03125,-55.4375 -6.53582,-14.95744 -22.16107,-25.73616 -38.8125,-24.96875 z m 0.0312,24.09375 c 15.0696,-1.39421 23.51819,20.591 12.09375,30.15625 -9.20237,8.40912 -26.79566,3.14705 -28.15625,-9.8125 -1.71354,-9.74695 5.72807,-20.51568 16.0625,-20.34375 z"
+           id="path4882"
+           inkscape:connector-curvature="0" />
+        <path
+           style="font-size:92.23697662px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#15741e;fill-opacity:1;stroke:none;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold"
+           d="m -169.46875,-130.28125 c -4.4216,-0.25822 -8.71082,4.42132 -12.59375,1.21875 -4.96736,-1.58786 -10.35879,1.7226 -15.125,-0.90625 -6.21756,9.49558 -1.77214,21.25878 -3.125,31.8125 0,16.82292 0,33.64583 0,50.46875 7.32337,-4.39135 17.89502,3.02558 23.625,-4.96875 1.58797,-4.3994 0.24443,-9.3583 0.59375,-13.71875 18.02616,6.61269 39.70474,-7.32102 41.09375,-26.46875 2.96524,-17.54188 -10.36425,-37.06556 -28.8125,-37.4375 -1.88472,-0.0796 -3.77537,-0.10379 -5.65625,0 z m 1.125,23.125 c 10.27674,-0.84373 12.61846,16.60529 2.875,18.8125 -7.91198,2.12474 -14.6615,-7.67047 -10.03125,-14.34375 1.48238,-2.48945 4.17341,-4.44485 7.15625,-4.46875 z"
+           id="path4884"
+           inkscape:connector-curvature="0" />
+        <path
+           style="font-size:92.23697662px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#15741e;fill-opacity:1;stroke:none;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold"
+           d="m -106.8125,-130.3125 c -4.25776,-0.58513 -8.46487,2.57672 -12.25,2.28125 -5.27152,-3.66649 -11.78584,1.05003 -17.25,-1.9375 -6.21756,9.49558 -1.77214,21.25878 -3.125,31.8125 0,16.82292 0,33.64583 0,50.46875 7.32337,-4.39135 17.89502,3.02558 23.625,-4.96875 1.63218,-4.36274 0.15128,-9.53668 0.65625,-13.6875 18.328021,6.6831 40.222985,-7.88844 41.1875,-27.34375 2.52294,-17.78295 -11.53056,-36.99044 -30.09375,-36.65625 -0.917,-0.0103 -1.83344,0.003 -2.75,0.0312 z m -0.6875,23.1875 c 10.191075,-0.91525 12.811214,16.41228 3.0625,18.71875 -7.43293,2.15857 -14.41647,-6.53995 -10.6875,-13.25 1.20292,-2.93842 4.28188,-5.47712 7.625,-5.46875 z"
+           id="path4886"
+           inkscape:connector-curvature="0" />
+        <path
+           style="font-size:92.23697662px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#15741e;fill-opacity:1;stroke:none;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold"
+           d="m -51.09375,-130.28125 c -21.194275,1.44216 -36.653507,26.94584 -26.8125,46.21875 8.345532,19.49094 36.887027,25.76828 52.4375,11.03125 14.396604,-12.21099 14.887814,-37.52835 -0.375,-49.34375 -6.90971,-5.97841 -16.170779,-8.69515 -25.25,-7.90625 z m 3.1875,23.1875 c 9.927679,-0.62647 12.604008,16.03865 3.03125,18.625 -7.686643,2.4887 -14.903496,-7.36412 -10.21875,-13.96875 1.39831,-2.60934 4.17257,-4.62699 7.1875,-4.65625 z"
+           id="path4888"
+           inkscape:connector-curvature="0" />
+        <path
+           style="font-size:92.23697662px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#15741e;fill-opacity:1;stroke:none;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold"
+           d="m 7.28125,-130.34375 c -3.8502136,-0.32753 -7.37438669,3.35838 -10.96875,1.0625 -5.3675054,-0.66599 -10.904672,0.0339 -15.75,2.5 0,20.67708 0,41.35417 0,62.03125 7.245838,-4.3554 17.6556422,2.92955 23.4375,-4.78125 3.0653683,-11.69772 -2.0033616,-24.89844 2.46875,-36.21875 3.5258393,-1.79019 7.675124,-0.28307 11.4375,-0.0937 -5.967151,-6.87177 2.54995,-17.75389 -5.375,-23.5625 -1.59795,-0.90286 -3.4247524,-1.05213 -5.25,-0.9375 z"
+           id="path4890"
+           inkscape:connector-curvature="0" />
+        <path
+           style="font-size:92.23697662px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#15741e;fill-opacity:1;stroke:none;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold"
+           d="m 27.46875,-146.78125 c -4.811365,1.98799 -12.151084,-2.1508 -15.0625,3.875 -2.174517,4.32338 0.663994,9.6004 -0.4375,13.71875 -6.9224187,1.04498 -7.1668319,9.59535 -5.84375,14.875 0.3539335,3.68393 -0.7996314,7.08433 -1.96875,10.5625 2.2258225,-0.44787 6.149366,-3.44065 8.0625,-2.34375 -0.804543,13.75517 0.04319,27.56733 -0.3125,41.34375 7.38099,-4.39347 18.10659,3.08805 23.78125,-5.125 1.441378,-11.68172 -0.266696,-24.42181 0.875,-35.53125 7.023368,-0.95088 8.026524,-9.26295 7.28125,-14.96875 0.829102,-4.93949 -3.022905,-9.49644 -8.09375,-8.90625 1.441179,-6.06192 1.729801,-16.42954 -6.34375,-17.5 -0.635914,-0.0621 -1.297404,-0.0475 -1.9375,0 z"
+           id="path4892"
+           inkscape:connector-curvature="0" />
+        <path
+           style="font-size:92.23697662px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#15741e;fill-opacity:1;stroke:none;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold"
+           d="m 92.625,-129.46875 c -6.685602,1.95935 -15.754051,-3.07491 -20.75,3.78125 -3.180926,11.89773 2.198525,25.36542 -2.75,36.75 -2.752099,2.32797 -8.126036,-0.16681 -6.6875,-4.0625 -0.941645,-12.33621 0.155357,-24.71254 -0.40625,-37.0625 -7.336092,3.55045 -17.135927,-3.01623 -23,3.875 -2.19059,5.3197 -0.141959,11.90759 -1.203134,17.71506 -0.185058,12.2056 -1.560909,26.88213 7.390634,36.50369 7.713789,7.68568 20.353945,8.88787 30.03125,4.875 6.245471,3.5726 13.78514,-1.43833 20.0625,2.25 0,-21.875 0,-43.75 0,-65.625 -0.895833,0.33333 -1.791667,0.66667 -2.6875,1 z"
+           id="path4894"
+           inkscape:connector-curvature="0" />
+        <path
+           style="font-size:92.23697662px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#15741e;fill-opacity:1;stroke:none;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold"
+           d="m 93.15625,-127.59375 c 0,20.94792 0,41.89583 0,62.84375 7.24584,-4.3554 17.65564,2.92955 23.4375,-4.78125 3.16015,-11.88774 -2.16568,-25.41729 2.75,-36.71875 2.75509,-2.19133 7.79962,-0.10974 6.55296,3.80895 1.0988,12.51979 -0.27014,25.09622 0.54079,37.62855 7.34619,-4.25034 18.00846,3.10529 23.59375,-5.09375 0.16237,-14.4192 2.08578,-29.25305 -0.96875,-43.4375 -3.51993,-14.46654 -21.46733,-20.82297 -34.34375,-15 -3.3287,0.009 -6.99062,-2.10537 -10.6875,-0.96875 -3.65855,0.69914 -7.480884,0.63854 -10.875,-1.09375 0,0.9375 0,1.875 0,2.8125 z"
+           id="path4896"
+           inkscape:connector-curvature="0" />
+        <path
+           style="font-size:92.23697662px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#15741e;fill-opacity:1;stroke:none;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold"
+           d="m 162.03125,-146.625 c -4.43578,1.35632 -11.69579,-1.81009 -13.46875,4.25 0.17876,5.50391 -1.03886,11.67519 0.625,17.09375 -2.35685,7.13164 0.3524,14.78345 -0.71875,22.125 0,12.80208 0,25.60417 0,38.40625 7.24584,-4.3554 17.65564,2.92955 23.4375,-4.78125 2.04443,-20.95937 -0.10793,-42.5421 1.22562,-63.6872 1.42068,-5.97148 -1.62424,-13.05348 -8.38187,-13.3128 -0.89878,-0.12964 -1.81263,-0.1537 -2.71875,-0.0937 z"
+           id="path4898"
+           inkscape:connector-curvature="0" />
+        <path
+           style="font-size:92.23697662px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#15741e;fill-opacity:1;stroke:none;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold"
+           d="m 187.96875,-146.78125 c -4.79776,1.98142 -12.11932,-2.14336 -15.03125,3.875 -2.08402,4.35653 0.54336,9.57074 -0.40625,13.71875 -6.94488,0.99194 -7.22833,9.71546 -5.875,14.96875 0.31845,3.41892 -0.76278,6.71116 -1.625,9.96875 2.4427,0.0606 9.21062,-4.99157 7.5,0.65625 -0.33953,12.94577 0.14848,25.89654 -0.0937,38.84375 7.25969,-4.35512 17.67693,2.93116 23.46875,-4.78125 2.04823,-11.58526 -0.15233,-24.69253 1.15625,-35.875 7.02337,-0.95088 8.02652,-9.26295 7.28125,-14.96875 0.8291,-4.93949 -3.02291,-9.49644 -8.09375,-8.90625 1.44118,-6.06192 1.7298,-16.42954 -6.34375,-17.5 -0.63591,-0.0621 -1.2974,-0.0475 -1.9375,0 z"
+           id="path4900"
+           inkscape:connector-curvature="0" />
+        <path
+           style="font-size:92.23697662px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#15741e;fill-opacity:1;stroke:none;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold"
+           d="m 192.15625,-126.40625 c 6.71869,16.42883 13.29939,32.91355 19.9375,49.375 -4.07757,9.33981 -8.1926,18.65806 -12.1875,28.03125 8.76042,0 17.52083,0 26.28125,0 11.58478,-26.70908 23.16915,-53.41847 34.6875,-80.15625 -9.11458,0 -18.22917,0 -27.34375,0 -2.71404,7.05303 -5.34108,14.13477 -7.96875,21.21875 -2.42812,-7.07614 -4.86271,-14.15009 -7.3125,-21.21875 -9.07292,0 -18.14583,0 -27.21875,0 0.375,0.91667 0.75,1.83333 1.125,2.75 z"
+           id="path4902"
+           inkscape:connector-curvature="0" />
+      </g>
+      <text
+         xml:space="preserve"
+         style="font-size:92.23697662px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol"
+         x="-276.75922"
+         y="-72.052383"
+         id="text4850"
+         sodipodi:linespacing="125%"><tspan
+           sodipodi:role="line"
+           id="tspan4852"
+           x="-276.75922"
+           y="-72.052383"
+           style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;fill:#ffffff;fill-opacity:1;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold">Opportunity</tspan></text>
+    </g>
+    <g
+       id="g3064"
+       inkscape:export-filename="opportunity-large-fr.png"
+       inkscape:export-xdpi="84.495728"
+       inkscape:export-ydpi="84.495728">
+      <g
+         inkscape:export-ydpi="15.306176"
+         inkscape:export-xdpi="15.306176"
+         inkscape:export-filename="/var/www/opportunity-fr.png"
+         clip-path="url(#clipPath3046)"
+         transform="translate(0,7)"
+         mask="none"
+         id="g4456">
+        <g
+           style="fill:#15741e;fill-opacity:1"
+           inkscape:export-ydpi="15.306176"
+           inkscape:export-xdpi="15.306176"
+           inkscape:export-filename="/var/www/opportunity-fr.png"
+           id="g4369"
+           transform="matrix(0.89521731,0,0,0.89521731,62.685747,-20.151368)">
+          <path
+             style="fill:#15741e;fill-opacity:1"
+             d="m 532.59375,-185.34375 c -8.77929,0.34138 -12.87412,10.23265 -12.28125,17.84375 -4.6771,4.29249 -13.34944,4.17595 -15.59375,11.125 -2.88306,-2.42651 1.5554,-5.05677 1.15625,-8.03125 2.04975,-8.01388 -1.91629,-17.33268 -10.28125,-19.5 -7.05983,-3.3212 -16.16826,0.51516 -18.0625,8.25 -1.62621,4.59003 -1.89771,9.77687 -4.75,13.59375 0.84164,2.91761 -2.56707,5.22662 -4.28125,2.46875 -1.80348,-1.63601 -6.46994,-1.28709 -6.78125,-3.5 5.04724,-9.59943 -2.65993,-23.84772 -14.125,-21.96875 -8.6057,0.54727 -13.97565,11.08419 -10.125,18.5 0.31892,2.27196 1.41043,4.57022 -1.90625,4.5625 -2.55535,0.16772 -4.8277,3.50357 -6.90625,3.09375 -1.52624,-1.21359 -5.58836,-1.35982 -3.375,-3.96875 3.92568,-8.37727 -0.0931,-21.59637 -10.59375,-21.96875 -7.15582,-1.64816 -15.3064,3.20068 -15.0625,11 -0.78415,3.1427 1.42931,8.0627 -0.46875,10.1875 -6.57123,0.69523 -13.38987,4.84742 -13.84375,12.125 -4.26975,12.07334 -8.07158,25.748 -2.75,38.09375 1.06439,4.64035 6.25118,7.63766 4.46875,12.84375 -1.93555,10.420909 0.0656,20.9833 -2.875,31.21875 -2.05734,6.425811 0.6705,14.980541 -4.65625,19.96875 -7.34972,2.33103 -4.05637,14.359705 3.28125,13.625 6.08377,0.13068 12.69959,-1.472903 17.5625,-4.875 2.28714,-2.789754 2.80704,-6.507138 3.375,-9.96875 -0.09,4.764178 0.1196,12.222469 6.5625,12.375 5.64067,1.694015 12.13105,3.595283 17.59375,0.9375 5.9017,2.342413 12.17319,-1.593185 17.9375,-0.6875 5.65444,4.727545 17.88113,1.814354 17.0625,-6.65625 -2.51385,-2.58658 0.84063,-4.633909 0.82632,-7.566329 3.38988,-13.594728 -1.77325,-28.614378 3.51743,-41.652421 2.34356,-1.203892 3.51081,-3.736892 6.15625,-1.6875 4.30996,0.12722 1.33339,6.023556 2.53125,8.875 0.2522,3.840451 3.09871,8.525639 6.84375,8.4375 0.19051,9.859387 0.0955,20.683083 -6.9375,28.40625 -3.3759,4.393618 -2.98634,12.460291 3.46875,13.59375 7.40124,1.941475 15.36249,-3.477443 16.34375,-11.03125 1.76147,-4.146495 1.56395,-8.921012 2.75,-13.21875 3.19866,4.988465 2.29568,11.026766 2.6875,16.4375 1.77126,4.547809 7.26991,6.153102 11.65625,5.28125 4.63196,4.60727 13.04852,2.629005 16.25,-2.21875 3.8317,0.1801 7.0235,1.83825 10.21875,3.625 3.40364,1.516106 7.68544,0.20994 10.46875,-0.875 4.61654,4.356586 12.32929,2.306509 16.8125,-1.21875 7.73441,5.64273 18.52245,-1.868788 18.96875,-10.5625 2.38924,-4.288652 0.50328,-9.473456 -1.78125,-13.15625 0.27288,-2.414424 -1.49174,-6.963851 -0.1875,-8.40625 1.96316,4.595234 5.66819,8.897688 7.4375,13.8125 0.80512,4.579412 -5.53184,6.741111 -4.375,11.71875 -0.0939,4.377963 3.77907,6.803724 7.53125,7.5 6.66123,6.596349 18.60368,0.65909 19.25,-8.15625 -0.13675,-6.869067 -0.71677,-13.889166 1.71875,-20.40625 0.44299,-2.924036 0.27078,-6.134284 3.96875,-5.6875 5.642,-0.759645 11.45196,-6.10966 8.76773,-12.16015 -3.04734,-11.572372 -6.88765,-23.51936 -4.29898,-35.5586 -0.0376,-11.24765 -0.69804,-22.64728 -2.03125,-33.75 -1.68333,-3.15638 -4.68512,-5.45699 -4.71875,-9.3125 -1.7439,-2.34813 -0.62401,-5.38848 -1.09375,-7.4375 -4.22513,-6.14396 -8.88777,-15.62137 -17.90625,-13.6875 -9.05572,1.94403 -13.68324,12.824 -12.5,21.15625 1.80061,2.0134 -1.19711,2.01271 -2,3.375 -3.63545,-5.68368 -4.3909,-12.41699 -7.5,-18.21875 -3.45541,-6.45728 -12.43353,-8.96578 -18.1875,-4.03125 -6.9863,4.60749 -8.15041,13.49065 -7.84375,21.125 -1.34332,-2.13198 -5.31145,-2.22402 -6.21875,-3.4375 6.03079,-8.21775 -0.22039,-21.7051 -10.875,-20.59375 z m 15.375,67.1875 c -0.21793,5.36679 -1.29611,-1.00081 0,0 z m -0.5,16.6875 c 0.99947,3.068511 5.25805,3.180079 4.34375,6.84375 0.0341,3.154813 3.50319,4.519123 4.53125,6.53125 1.69188,12.459017 0.50495,25.930847 -5.1875,37.0625 -1.45006,3.228308 -4.34543,-0.998925 -5.75,-2.71875 0.76789,-15.662004 1.41091,-32.403783 2.0625,-47.71875 z M 507.8125,-84.625 c -0.89458,-2.344042 0.68876,-4.668206 0,-0.25 l 0,0.25 z m -81.59375,9.53125 c 0.99057,7.689763 1.57496,16.151348 1.5,23.625 -2.46949,2.715938 -2.65473,0.09685 -2.5,-2.21875 0.31146,-7.522753 -0.0706,-15.081421 0.78125,-22.5625 l 0.18589,0.98257 0.0329,0.17368 z"
+             id="path4348"
+             inkscape:connector-curvature="0" />
+          <path
+             sodipodi:nodetypes="ccccccccccccccccsccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+             style="fill:#15741e;fill-opacity:1"
+             d="m 833.15625,-185.46875 c -10.61894,0.40275 -14.89569,15.07614 -8.96875,22.5625 -3.24215,1.28524 -6.92188,4.95178 -9.78125,1.46875 -2.41831,-1.11304 0.93428,-4.55793 0.1875,-6.78125 1.23862,-8.6378 -5.69956,-18.35375 -14.96875,-16.6875 -9.65098,1.54101 -14.26503,12.624 -11.75,21.3125 0.22039,4.20964 -5.31158,5.18158 -5.25,9.5625 -0.58979,2.91585 -0.17165,8.08543 -1.71875,9.65625 -1.68982,-7.56301 -3.94554,-17.6944 -12.9375,-19.28125 -2.5296,-0.26742 -3.09796,-1.43454 -1.9375,-3.46875 1.94453,-7.13696 -1.2388,-17.12267 -9.75,-17.5 -6.84541,-1.05453 -13.40518,4.16091 -13.96875,10.96875 -1.67042,3.31738 0.10001,7.15847 0.5625,10.09375 -2.81521,2.71248 -7.29818,3.04541 -9.6875,6.34375 -2.97787,-0.56465 -5.4068,-2.62289 -4.55124,-5.33645 2.86452,-10.67287 -2.33601,-22.34 -14.28449,-21.11698 -4.11878,0.67761 -9.43905,5.80348 -9.90096,12.24152 -0.46191,6.43804 3.5356,12.69221 -3.98936,13.63167 -1.36299,-11.68141 -9.46077,-27.25537 -19.77395,-27.32601 -11.33673,-0.70988 -19.13253,11.04989 -20.28125,21.1875 -0.60236,1.86195 0.51187,5.82734 -2.3125,2.78125 -2.51385,-7.6527 -1.69607,-18.78773 -10.25,-23.125 -9.42765,-4.31113 -20.35282,4.71883 -19.41578,14.68667 -0.0223,4.86549 -2.44515,8.85589 -6.05297,11.87583 -3.12087,5.55741 -1.47113,12.61847 -3.96875,18.46875 -5.59886,0.31103 -14.16856,0.57713 -15.125,7.71875 0.82211,3.01153 -2.89213,6.44808 0.0937,9.25 3.65154,3.95631 9.63191,3.32373 14.40625,2.28125 -2.22738,8.09428 -1.18932,16.7043 -3.0625,24.90625 -0.32345,3.635201 2.88767,6.237428 1.03125,10.03125 -2.10421,8.031181 -2.27542,16.285112 -2.625,24.4375 -0.56876,6.788229 -8.07444,12.193792 -4.90625,19.40625 2.56811,7.61351 13.33216,5.484169 16.65625,-0.34375 1.93361,-3.879155 4.07356,-7.773207 4.75,-12.125 -0.75133,7.078916 5.95438,15.597458 13.4375,12.4375 5.85887,-2.907229 6.38159,-10.612447 4.125,-15.96875 -0.29678,-9.474809 6.14667,-18.298182 5.15625,-27.59375 5.60409,0.519658 7.42295,-6.553482 7.09375,-10.5 1.88104,2.104928 6.18731,0.449158 5.53125,4.3125 2.79181,10.929887 3.94412,22.338056 1.6875,33.375 -1.03579,5.478115 -2.43531,14.069828 4.3125,16.5 2.32963,0.339604 4.40698,0.07138 5.03125,2.65625 5.64661,5.721517 18.51708,0.245373 15.59375,-8.28125 -0.85766,-1.772151 2.64551,-3.326408 1.15625,-5.625 0.11806,-9.899465 -4.33761,-19.931722 -0.0312,-29.5 1.38897,-3.888736 1.07148,-9.658634 3.40625,-12.4375 2.02077,-0.169637 4.37291,-1.154266 3.6875,1.96875 -0.17808,5.672303 -0.67464,13.216056 5.21875,16.25 1.81839,5.920523 4.90703,11.779156 5.15625,18.0625 -1.74757,6.142937 -0.31578,15.269741 7.21875,16.28125 3.44683,-0.23683 4.16971,4.662246 7.8125,5.0625 5.73576,2.496401 12.71026,-2.6192 11.21875,-8.96875 -0.90926,-6.747706 -4.04607,-13.398765 -1.1875,-20.09375 1.05599,-6.180856 0.13483,-12.589253 1.875,-18.5625 0.15232,-1.170623 -0.33317,-6.191482 0.78125,-2.53125 1.73618,11.44115 1.43117,23.289343 2.65625,34.78125 -5.09982,3.776218 -4.73467,14.03616 2.625,14.6875 6.598,0.51367 14.76432,-0.409347 18.96875,-5.84375 0.30979,-3.006652 0.98684,-2.209415 1.875,-0.03125 2.95642,6.381185 11.18803,7.410609 17.59375,7.5 2.44417,0.233694 4.2279,-1.504395 6.09375,-2.09375 5.16354,3.094145 11.24046,1.085349 16.90625,1.9375 4.44267,-0.04883 8.44656,-1.87574 11.53125,-5.0625 1.96998,0.08617 4.01045,-3.140374 4.25,0.03125 4.39233,7.76227 15.81734,4.940145 21.15625,-0.3125 1.75273,-2.494218 3.5559,2.524215 5.9375,2.84375 5.64937,2.825579 15.4035,4.61774 18.65625,-2.5 3.33745,6.80815 12.80008,6.259908 18.1875,2.46875 6.73433,-1.266976 4.59326,-9.541461 6.65625,-14.25 0.76482,-5.064531 -4.84837,-8.744641 -3.21875,-13.8125 -0.0473,-4.961968 -0.54835,-9.951769 -2.15625,-14.625 5.10014,-3.112838 8.99189,-8.854383 6.86489,-15.02208 -1.47966,-4.10586 4.08563,-5.80673 3.54136,-10.00917 0.19405,-4.55648 -0.40614,-9.51624 2.15625,-13.4375 0.81273,-8.93789 -0.64178,-17.96039 -0.40625,-26.9375 -0.25603,-6.10652 -1.83158,-14.39498 -8.3125,-16.25 -0.88706,-8.12947 -3.12762,-20.15069 -12.78125,-22.375 -9.21749,-1.67593 -16.49045,6.84222 -17.9375,15.1875 -1.31605,4.06103 0.85707,8.50712 0.25,12.375 -1.94216,3.0417 -2.66986,-2.80991 -5.34375,-3.25 -2.33896,-1.72381 -7.7667,-0.91909 -8.25,-4.28125 3.06172,-4.87659 0.63971,-11.48983 -2.09375,-15.9375 -2.48931,-2.89422 -6.31504,-4.69482 -10.15625,-4.40625 z m -50.84375,47.71875 0,-0.125 z m 0.9375,2.25 -0.71875,-0.0625 z m -0.0625,0.75 -0.625,-0.0937 z m -0.1875,1.125 -0.375,-0.0937 z m -0.0937,0.40625 -0.28125,-0.0937 z m -4.8125,23.40625 c 1.84097,-0.21407 1.2601,-0.14652 0,0 z m -0.4375,0.15625 -0.0625,0.0312 z m -0.0312,0.0937 c 0.21679,-0.24074 0.94864,-0.42562 0,0 z m 40.625,16.34375 c 1.5133,1.822095 0.13519,6.527325 1.07857,9.238178 0.38295,9.539639 2.19695,19.481004 2.73393,28.699322 -1.17272,1.248389 -0.66055,-6.399583 -1.25575,-7.995037 -0.8439,-9.886692 -2.27801,-20.457494 -2.55675,-29.942463 z m 40.875,8.53125 c 2.91407,1.322047 4.94373,2.727283 4.65625,6.28125 1.46209,8.899393 6.4935,18.869516 2.78125,27.59375 -0.859,0.760572 -1.55409,3.918078 -1.375,1.21875 0.87815,-7.831174 -3.84608,-15.062087 -4.42825,-22.803951 -0.67176,-3.942175 -1.76816,-9.118313 -1.63425,-12.289799 z"
+             id="path4350"
+             inkscape:connector-curvature="0" />
+          <path
+             style="fill:#15741e;fill-opacity:1;stroke:none"
+             d="m 329.09375,-184.96875 c -9.64386,0.71361 -12.61776,11.89957 -12.75,19.96875 -1.64342,4.59633 -9.02726,5.85876 -9.78125,11.5625 -3.62546,6.98327 -11.7035,15.08223 -7.15625,23.59375 3.38662,5.97315 8.3141,11.4778 14.40625,14.46875 -0.31646,5.89541 -3.72559,14.26041 2.21875,18.375 3.49019,-0.03633 2.37935,3.880043 4.15625,6.03125 2.19229,3.439677 3.42578,7.955259 0.59375,11.34375 -2.5438,8.106369 1.08562,17.170089 -2.65625,25 0.30284,5.930746 -1.79194,14.596612 5.0625,17.4375 5.20459,1.787213 11.57589,2.055025 16.6875,-0.09375 4.75482,-2.750739 4.67432,-9.109768 1.875,-13.1875 -2.37758,-8.65942 4.57444,-16.206197 4.5625,-24.9375 0.94258,-4.532513 0.72743,-11.261752 2.34375,-14.53125 3.75504,0.942812 1.06979,6.200069 2.28295,9.120434 0.49208,9.53632 3.89276,18.999284 4.2483,28.379566 -2.50556,4.646548 -5.77647,12.003259 0.3125,15.5 7.09577,4.531951 16.84939,-2.641527 16.4375,-10.5625 4.35737,-6.570282 -3.17985,-13.181719 -1.28125,-20.09375 0.0203,-4.427986 -0.14459,-8.85407 -0.1875,-13.28125 3.24495,8.436644 9.24122,16.322932 10.53125,25.21875 0.0676,5.547198 2.16295,11.142234 4.90625,15.875 4.28817,5.599482 15.83785,5.149304 16.625,-2.9375 0.0719,-6.258044 -5.2094,-11.158335 -5.3125,-17.59375 -2.05143,-10.624733 -4.49672,-21.492745 -8.84375,-31.34375 0.97638,-3.647016 -0.75827,-7.58887 1.90625,-10.65625 1.86131,-6.71746 -0.40378,-13.7978 0.28125,-20.6875 -0.95258,-10.87732 -2.23667,-21.81715 -3.3125,-32.625 -0.5109,-3.5002 -3.66324,-6.27967 -6.03125,-7.90625 2.26196,-8.12467 -0.67681,-20.16655 -10.4375,-21.15625 -10.09318,-0.67007 -14.68417,10.8038 -15.1875,19.125 -1.56832,3.01193 -4.80277,6.10104 -6.71875,7.96875 -1.85902,-2.3362 -6.11301,-2.68259 -4.65625,-6.65625 0.10387,-9.02928 -3.81106,-21.85766 -15.125,-20.71875 z"
+             id="path4352"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           inkscape:export-ydpi="15.306176"
+           inkscape:export-xdpi="15.306176"
+           inkscape:export-filename="/var/www/opportunity-fr.png"
+           id="g4341"
+           style="fill:#ffffff"
+           transform="matrix(0.89521731,0,0,0.89521731,62.685747,-20.151368)">
+          <path
+             sodipodi:nodetypes="cccscccscscccsscscsccscscscssccsccccscsccscccscccsscscscccccsscccccccsscscssccccccccccsssscscccccscccsssccsccccsccccsscccscccscscccsssccsccsccccccccccsssscccscssccccsssccsscssscsccccccssscccsssssscsccccssssscccccscssccccccssscscssccccscccscccccscscsscccccccsssccssssscccccsssssscccsccssscccsccccssccscccccccccccccccsscsccscccccsccccscccccccccccssscscsccccccsssscccccccccccsscssccssscssscscccccssscccccsccccccsssccsscsccscccscsccsssscscccccccccscccsccsssccccccsscccccccccccscssscccccsssscccsssssccccccscsscscccccscsccsccccccsccccccccccscccscsscssscccccsccccssccccccsccccsccccccccsscccccccscccccscccccsssccccccsssscscccsscscssscsssscccscccccsscssscccccsscccccccccccccscccccccccscccccccccccsccccssccsscscccccscsccsccssccccscscscccccscsccsssccscssccccsccscccccccsccccccccssccccsc"
+             inkscape:connector-curvature="0"
+             id="path2453"
+             d="m 533.46386,-179.37372 c -3.08144,-0.009 -5.60136,2.08155 -6.13011,5.09109 -0.0774,0.44113 -0.30954,0.91937 -0.49352,1.06498 -0.27554,0.21774 -0.31029,0.59666 -0.25975,2.12994 0.0338,1.02535 0.10629,1.95767 0.18183,2.078 0.21715,0.34629 0.0365,2.81977 -0.25976,3.53261 -0.14793,0.35588 -0.44551,0.73416 -0.67535,0.85717 -0.22983,0.12301 -0.70031,0.62466 -1.03899,1.11693 -0.33868,0.49226 -0.99757,1.1965 -1.4546,1.55849 -0.74798,0.59241 -8.48384,4.28621 -10.4939,5.01318 -1.54903,0.56024 -2.43855,1.88081 -2.67542,3.89624 -0.10158,0.86509 -0.31615,1.39339 -0.77926,2.00007 -0.34724,0.45494 -0.80179,1.37882 -1.01302,2.05203 -0.21122,0.67322 -0.56989,1.65956 -0.77926,2.20788 -0.20938,0.54834 -0.36365,1.49579 -0.36365,2.10398 0,0.60817 -0.14871,1.37323 -0.31169,1.68836 -0.16296,0.31515 -0.6247,1.74715 -1.039,3.19492 -0.4143,1.4478 -0.81927,2.74144 -0.90913,2.85726 -0.22361,0.28832 -0.80502,3.11437 -0.80522,3.92222 -2.2e-4,0.89006 0.5397,2.45407 1.11692,3.2209 0.46322,0.61535 3.20422,2.34304 7.40288,4.6755 1.15091,0.63938 2.10398,1.30343 2.10398,1.4546 0,0.15119 -0.14982,0.84975 -0.31171,1.55851 -0.31934,1.39815 -0.98315,7.95812 -1.32472,13.01346 -0.20894,3.09243 -0.19922,3.18075 0.23377,3.76638 0.44269,0.59883 0.43838,0.60831 0.4156,12.260199 -0.0125,6.409003 -0.0832,16.161146 -0.15585,21.663145 -0.0873,6.618444 -0.0492,11.267961 0.10383,13.766747 0.21261,3.471456 0.29007,3.952014 0.96107,5.922298 0.79827,2.344058 1.01019,2.861139 1.40265,3.16895 0.20994,0.164693 0.20277,0.470417 -0.052,1.584475 -0.61102,2.672257 0.26565,4.103267 2.85724,4.649524 1.17179,0.24699 2.70933,0.0864 3.48066,-0.363651 0.79385,-0.46321 0.96018,-1.337941 0.67534,-3.584549 l -0.2078,-1.5585 1.01303,-0.88315 c 0.96789,-0.876275 0.98503,-0.910354 0.7273,-1.532523 -0.20989,-0.506693 -0.2278,-1.300363 -0.052,-3.870275 0.57833,-8.451291 0.73561,-12.172589 0.77924,-19.40332 0.051,-8.438639 0.28018,-13.497624 0.75329,-16.078521 0.16464,-0.898286 0.36218,-2.135778 0.44157,-2.753349 0.19132,-1.488848 0.3148,-1.142685 1.11692,3.065049 0.3532,1.852714 0.98103,4.731537 1.37668,6.415823 l 0.70133,3.06505 -0.026,10.935472 c -0.0125,6.007289 0.0879,12.720074 0.20781,14.909646 0.11991,2.189572 0.24038,4.616799 0.25974,5.402799 l 0.0259,1.428624 1.63642,0.571449 c 1.59563,0.567918 1.64721,0.57835 2.57152,0.259751 0.52035,-0.179357 1.13504,-0.3117 1.3507,-0.3117 0.21566,0 0.87153,0.501779 1.4546,1.116925 1.22736,1.294917 2.21328,1.843335 4.20796,2.363725 2.46641,0.643464 4.59092,0.379616 4.90927,-0.623401 0.20337,-0.640788 -0.27207,-1.233591 -2.078,-2.571525 -2.39113,-1.771518 -3.32043,-2.714947 -3.55857,-3.662473 -0.11342,-0.4512 -0.5317,-1.567959 -0.93511,-2.4936 l -0.7273,-1.688374 0.33768,-2.207875 c 0.24514,-1.533588 0.42478,-4.302273 0.54547,-9.221122 0.095,-3.873857 0.29946,-8.467744 0.46755,-10.208172 0.43893,-4.544593 0.5588,-7.610736 0.64939,-17.273372 0.0466,-4.970804 0.15753,-9.037719 0.28572,-9.688679 0.28505,-1.44737 0.27135,-9.72688 -0.026,-13.22127 l -0.23376,-2.67542 -2.25983,-0.75328 c -1.24729,-0.41096 -2.3636,-0.83945 -2.46762,-0.9351 -0.11341,-0.10425 -0.0395,-0.32681 0.18182,-0.57145 0.34152,-0.37737 0.35317,-0.44941 0.052,-0.90913 -0.28487,-0.43474 -0.28726,-0.53639 -0.0259,-0.75327 0.16428,-0.13632 0.28573,-0.34759 0.28573,-0.49353 0,-0.56468 -2.16664,-2.10233 -3.71442,-2.62347 -0.29563,-0.0995 0.36078,-1.19642 3.84429,-6.38984 2.31827,-3.45622 4.3497,-6.41552 4.49368,-6.57168 0.22245,-0.24126 0.50481,-0.22432 1.9741,0.23378 0.95102,0.29652 1.85018,0.54548 1.97411,0.54548 0.32085,0 0.25953,-1.0219 -0.10383,-2.05203 -0.28711,-0.81376 -0.25958,-0.99087 0.12988,-2.54556 0.29409,-1.17386 0.41075,-2.2517 0.38963,-3.58455 -0.0238,-1.50956 0.05,-2.1965 0.41559,-3.24686 0.3838,-1.10272 0.47756,-1.78343 0.49353,-4.02614 0.0186,-2.62156 0.002,-2.71048 -0.49353,-3.19492 -0.47946,-0.46849 -7.65679,-3.81892 -9.55879,-4.46769 l -0.85718,-0.31171 0.15585,1.66241 c 0.0858,0.91378 0.16,2.20951 0.15586,2.88322 -0.01,1.81511 -0.52942,9.07099 -0.70133,9.89648 -0.13705,0.65809 -0.16492,0.58079 -0.49352,-1.06498 -0.19624,-0.98282 -0.71721,-3.08168 -1.16888,-4.67551 -0.88075,-3.10792 -0.92224,-3.84347 -0.18183,-4.88329 0.3843,-0.53971 0.38961,-0.55844 -0.10383,-1.09095 -0.75325,-0.81276 -1.87327,-0.72618 -2.75335,0.18182 -0.64224,0.66262 -0.64108,0.70506 -0.25975,0.90913 0.68775,0.36808 1.04058,1.35603 0.8312,2.33775 -0.10114,0.47445 -0.2533,2.24334 -0.33768,3.92221 l -0.15584,3.03908 -0.46755,-1.53252 c -0.88675,-2.89599 -2.12242,-6.2266 -2.80531,-7.58469 -1.45902,-2.90163 -2.16623,-4.88899 -2.05202,-5.74048 0.0594,-0.44241 0.25356,-0.96184 0.44158,-1.1429 0.31495,-0.30332 0.35467,-0.2834 0.57144,0.0779 0.513,0.85514 1.7541,2.05857 3.24688,3.19492 2.1378,1.62736 2.38924,1.73192 3.24688,1.29874 1.36838,-0.69113 2.41566,-1.98639 2.41566,-2.98712 0,-0.25996 0.19162,-0.80359 0.41561,-1.19485 0.22395,-0.39124 0.54609,-1.0595 0.7273,-1.48057 0.21022,-0.48844 0.48732,-0.75329 0.7273,-0.75329 0.24982,0 0.60976,-0.43832 1.09095,-1.29874 0.72066,-1.28868 0.88419,-2.0604 0.51951,-2.28579 -0.10705,-0.0661 0.0492,-0.61667 0.33766,-1.2468 0.67153,-1.46682 0.71817,-3.52339 0.10383,-4.72746 -0.56029,-1.09825 -2.15981,-2.62961 -3.40273,-3.27284 -0.8093,-0.41883 -1.30861,-0.51618 -2.44164,-0.51951 z m 31.58559,0.18182 c -0.16354,0.0176 -0.36755,0.0526 -0.59744,0.10382 -1.96779,0.43836 -4.83354,2.30171 -5.81839,3.79235 -1.16686,1.76614 -2.24529,3.91133 -2.51958,4.96122 -0.39724,1.52056 -0.37866,2.45306 0.12988,4.33782 l 0.44158,1.61046 -0.44158,1.14289 c -0.50062,1.30827 -0.55399,2.45259 -0.12988,3.0131 0.49423,0.65319 1.38836,1.14157 2.10398,1.14291 0.60864,8.3e-4 0.67483,0.0547 0.54548,0.46754 -0.0791,0.25265 -0.31037,0.66731 -0.5195,0.93511 -0.26878,0.34416 -0.38963,0.8193 -0.38963,1.63642 0,1.08067 -0.0636,1.22456 -0.83119,1.97409 -1.10515,1.07906 -1.26291,1.81483 -1.09095,4.90929 0.0959,1.72585 0.0743,2.68201 -0.0779,2.98711 -0.12391,0.24831 -0.36601,0.77589 -0.54547,1.16887 -0.1795,0.39302 -0.50892,1.03564 -0.7273,1.42863 -0.77605,1.39663 -0.50458,3.29142 1.01302,7.14313 1.04657,2.65619 1.0761,3.70377 0.23378,6.62362 -0.70278,2.43615 -0.91343,3.56495 -1.35071,7.27299 -0.27461,2.32862 -0.76488,5.77237 -1.22081,8.5198 -0.0863,0.52073 -0.29138,0.76255 -0.93511,1.09095 -0.71833,0.36644 -0.79867,0.4797 -0.70133,0.96108 0.0612,0.30265 0.33831,2.23457 0.62341,4.31185 0.28508,2.07729 0.54663,3.91175 0.59742,4.0521 0.0508,0.14037 0.29301,0.25976 0.51951,0.25976 0.22646,0 0.82285,0.0995 1.32471,0.23377 0.81443,0.21782 0.94238,0.19019 1.32474,-0.15585 0.23563,-0.21327 0.68432,-0.38438 0.98704,-0.38963 l 0.54548,0 0.10383,4.078076 0.10382,4.052107 1.40265,0.311694 1.37667,0.285721 0.77925,1.558505 c 0.68444,1.367804 0.79355,1.839506 1.01303,4.000149 0.13685,1.347428 0.40445,3.561844 0.57145,4.909275 0.39816,3.212309 0.3421,6.703003 -0.15586,11.221195 -0.22275,2.021146 -0.53684,5.204417 -0.70132,7.0652 -0.35975,4.069886 -0.99734,6.741104 -2.7014,11.299121 -0.67166,1.796572 -1.29177,3.581175 -1.37669,3.974175 -0.28808,1.333276 -1.10464,3.509583 -1.45459,3.896249 -0.22747,0.251428 -0.50824,0.360283 -0.80523,0.285724 -0.33338,-0.08367 -0.56413,0.03602 -0.88314,0.441575 -0.54792,0.696562 -0.54003,0.813063 0.0259,0.961075 0.44073,0.115246 0.42489,0.154769 -0.31171,0.909124 -0.59737,0.611772 -0.75326,0.951134 -0.75326,1.532525 0,0.534993 0.08,0.763873 0.33767,0.8312 1.39001,0.363259 5.7456,-0.248413 7.24702,-1.013025 0.84845,-0.432049 1.34704,-1.201341 1.50655,-2.363725 0.2353,-1.714848 0.47864,-2.079396 0.49352,-0.727299 0.01,0.894837 0.0814,1.168874 0.31171,1.168874 0.33852,0 0.37908,-0.20218 0.70131,-2.597498 0.2511,-1.866543 0.51897,-2.617723 1.42863,-4.052099 0.70689,-1.114647 0.79425,-2.002587 0.3117,-3.662476 -0.21836,-0.751187 -0.44159,-1.13014 -0.7273,-1.220823 -0.61867,-0.196355 -0.41739,-0.928991 1.6624,-5.9223 0.99679,-2.393132 2.03773,-5.146439 2.33776,-6.130097 0.35745,-1.171918 0.62345,-1.696944 0.7273,-1.50655 0.0872,0.159791 0.70463,2.786688 1.40264,5.818399 1.47465,6.404801 1.74849,8.648957 1.42863,12.23422 -0.25909,2.903773 -0.57131,3.792351 -1.29875,3.792351 -0.30346,0 -0.65536,0.196869 -0.90913,0.519499 -0.50138,0.637405 -0.54765,0.909124 -0.12988,0.909124 0.4053,0 0.38474,0.13207 -0.10382,0.753276 -0.59015,0.750216 -0.54304,1.783988 0.10382,2.207874 0.8465,0.554652 3.054,0.307944 4.75343,-0.545474 l 1.37668,-0.701325 0.0259,-1.9741 c 0.0275,-1.479702 0.16028,-2.214574 0.46755,-2.909199 0.22611,-0.511188 0.46827,-0.935099 0.54548,-0.935099 0.0771,0 0.10447,0.976925 0.052,2.155924 -0.0838,1.883398 -0.0583,2.155924 0.23379,2.155924 0.26658,0 0.39363,-0.469778 0.67534,-2.311775 0.28581,-1.868637 0.50868,-2.617132 1.19484,-3.974173 0.98485,-1.947709 0.99134,-2.273532 -0.052,-4.441724 -0.5755,-1.196006 -0.76487,-1.428626 -1.19486,-1.428626 -0.28072,0 -0.59189,-0.104739 -0.67535,-0.233774 -0.4228,-0.653689 -1.05984,-12.846916 -0.8312,-15.81877 0.16713,-2.172198 -0.23179,-4.111802 -1.40265,-6.909349 -0.70552,-1.685694 -0.83715,-2.247292 -0.98705,-4.181974 -0.0957,-1.235144 -0.37341,-3.434364 -0.59743,-4.883299 -0.22402,-1.448934 -0.36364,-2.721309 -0.31169,-2.805298 0.052,-0.08401 0.73517,-0.337162 1.50655,-0.57145 0.77136,-0.23429 1.48973,-0.555865 1.61045,-0.701326 0.28493,-0.343304 0.64687,-2.588768 0.64937,-4.026136 l 0,-1.116912 1.09095,-0.64938 c 2.25622,-1.3542 2.56518,-2.04491 2.8053,-6.28595 0.089,-1.572 0.30213,-5.23671 0.49353,-8.15616 0.41771,-6.3721 0.48279,-12.36515 0.12987,-14.20831 -0.14829,-0.77444 -0.32605,-4.29778 -0.4156,-8.46785 -0.14987,-6.97781 -0.16442,-7.20501 -0.77925,-9.89647 -0.77973,-3.41336 -1.75484,-6.26291 -2.33774,-6.88337 -0.40746,-0.43373 -0.4004,-0.53179 -0.15587,-1.27278 0.24046,-0.72856 0.20716,-0.86535 -0.18182,-1.48056 -0.23601,-0.37329 -0.61916,-1.06104 -0.85717,-1.53254 -0.23802,-0.47149 -0.56855,-0.95919 -0.7273,-1.09095 -0.15875,-0.13173 -0.28572,-0.31803 -0.28572,-0.41559 0,-0.0976 -0.32944,-0.62169 -0.7273,-1.1429 -1.16296,-1.52361 -1.3928,-2.06996 -1.11693,-2.67543 0.1984,-0.43545 0.16863,-0.61693 -0.18183,-1.09095 -0.53274,-0.72058 -0.85359,-1.60966 -1.9741,-5.37682 -0.50095,-1.68429 -1.14738,-3.54403 -1.42862,-4.13002 -0.64884,-1.352 -2.62068,-3.1843 -4.28588,-3.97418 -0.86488,-0.41024 -1.17175,-0.52029 -1.66239,-0.46756 z m -75.27554,0.0259 c -2.13218,-0.0482 -4.12594,1.04672 -5.35085,2.98712 -1.15654,1.83207 -2.91897,7.64178 -3.87027,12.80568 -0.29994,1.62815 -0.62373,3.05741 -0.7273,3.16896 -0.12328,0.13278 -0.38403,0.0709 -0.77925,-0.15585 -0.57959,-0.33264 -0.59742,-0.32513 -0.59742,0.052 0,0.21599 0.26057,0.58216 0.59742,0.83121 0.33686,0.24905 0.6234,0.56332 0.6234,0.70132 0,0.59467 -0.82329,2.12995 -1.14289,2.12995 -0.26385,0 -0.28528,0.0671 -0.10383,0.28572 0.35443,0.42706 0.0388,0.93003 -0.57144,0.93511 -0.92252,0.008 -2.13029,0.71027 -3.22091,1.87018 -0.57595,0.61258 -1.10139,1.38453 -1.16888,1.71436 -0.42819,2.09287 -0.52752,4.64027 -0.4156,10.98742 0.11728,6.65123 0.10157,7.0522 -0.3117,8.64968 -0.23796,0.92002 -0.42059,2.20526 -0.41559,2.85724 0.004,0.65199 -0.0594,3.1705 -0.15586,5.58463 -0.16728,4.18989 -0.21166,4.46628 -0.83119,6.20802 -0.83469,2.34662 -0.8302,2.58545 0.10382,3.19493 0.7495,0.48901 0.74613,0.50895 0.80523,2.02605 0.0329,0.84214 -0.0352,2.27065 -0.15584,3.16894 -0.12069,0.8983 -0.2755,2.01537 -0.33768,2.4936 -0.0901,0.69312 0.0349,1.18191 0.57144,2.44165 0.37027,0.86919 0.76149,1.70792 0.88315,1.84423 0.12169,0.13634 0.95551,0.54866 1.84423,0.9351 1.80241,0.78371 2.36373,0.71016 2.36373,-0.31169 0,-0.44194 -0.10275,-0.56671 -0.59743,-0.67537 -0.33686,-0.074 -0.62339,-0.20992 -0.62339,-0.31169 0,-0.10179 -0.36634,-0.43686 -0.80523,-0.7273 -1.22601,-0.81133 -1.63554,-2.30063 -0.77925,-2.83128 0.45206,-0.28016 0.67417,0.0243 0.85718,1.16888 0.18438,1.15306 0.67265,2.03422 1.09095,1.94813 0.28047,-0.0578 0.33243,-0.27479 0.28572,-1.14291 -0.0316,-0.58752 -0.12504,-1.29849 -0.23379,-1.58447 -0.10878,-0.28595 -0.2077,-1.09779 -0.20778,-1.79227 -1.4e-4,-0.97887 -0.14872,-1.54216 -0.62341,-2.54556 -0.75581,-1.59769 -0.78576,-2.07799 -0.12987,-2.07799 0.64353,0 1.34892,-0.742 2.078,-2.1819 0.58749,-1.16028 0.6234,-1.25633 0.6234,-4.38978 0,-1.75901 0.0175,-3.17738 0.052,-3.14296 0.14253,0.14198 0.64332,4.0881 0.85719,6.75349 0.12611,1.572 0.50489,4.99793 0.83119,7.63664 0.32629,2.63873 0.75864,6.92428 0.98705,9.506854 0.22841,2.582572 0.63882,6.796501 0.88315,9.351001 0.44251,4.626476 0.4267,4.623549 0.90913,4.623549 0.26637,0 0.75716,-0.139086 1.09095,-0.311699 0.44632,-0.230801 1.09688,-0.302865 2.46762,-0.259751 l 1.87021,0.07793 0.28572,0.805225 c 0.24902,0.698049 0.26432,1.691677 0.052,6.831422 -0.13667,3.30704 -0.20068,6.971755 -0.12986,8.156148 0.27793,4.648992 -0.40236,9.179546 -1.7663,11.506922 -0.49615,0.846611 -1.46515,2.93091 -2.72738,5.948275 -0.27503,0.657479 -1.22529,2.286197 -2.12995,3.636498 -2.47896,3.700185 -2.91248,4.901385 -1.9741,5.558648 0.77899,0.545624 2.69633,0.358879 6.05218,-0.597424 1.32306,-0.377041 2.07799,-1.025069 2.07799,-1.7663 0,-0.464308 1.17075,-3.350675 2.31177,-5.688523 l 0.85719,-1.740325 0,-2.64945 c 0.0113,-3.004164 0.24265,-3.987248 1.94812,-8.675648 1.52699,-4.197708 2.3841,-7.194291 2.85725,-10.000371 0.23626,-1.401266 0.44589,-2.575847 0.49352,-2.623475 0.0477,-0.04763 0.33561,0.440182 0.6234,1.09095 0.62431,1.411696 3.33784,6.353699 5.84438,10.649747 3.46785,5.943711 4.33678,9.111637 3.81832,13.818697 -0.39114,3.551168 -0.31484,4.185598 0.51949,4.961224 0.94666,0.880123 2.11971,1.215704 3.14299,0.909124 0.87619,-0.262535 2.23923,-1.504903 2.41567,-2.207875 0.0639,-0.254422 -0.0378,-1.353068 -0.23378,-2.441649 -0.29225,-1.623391 -0.34695,-2.588505 -0.23376,-5.376823 l 0.15584,-3.402725 -0.59742,-0.805224 c -0.32623,-0.442489 -0.93511,-1.113551 -1.3507,-1.50655 -0.85581,-0.809256 -1.86739,-2.510713 -2.72738,-4.597574 -0.83596,-2.028593 -2.45892,-7.533446 -2.9092,-9.896473 -0.43598,-2.288056 -1.20493,-4.288452 -2.57152,-6.649598 -2.41501,-4.172454 -2.6084,-4.836875 -1.50655,-5.220973 0.50135,-0.174777 0.6234,-0.343539 0.6234,-0.857175 0,-0.345086 0.10991,-0.75783 0.25974,-0.9351 0.21612,-0.255644 0.25292,-0.924934 0.12989,-3.272849 -0.0852,-1.628143 -0.15579,-4.081348 -0.15586,-5.428773 l 0,-2.441649 0.36365,0.805229 c 0.20792,0.449149 0.38124,0.967851 0.38962,1.142896 0.008,0.175045 0.14537,0.484162 0.28574,0.675344 0.23582,0.321228 0.46135,0.273427 3.06503,-0.597415 l 2.83128,-0.935104 -0.15585,-1.402644 c -0.12685,-1.287414 -0.0661,-1.535604 0.59742,-3.194934 l 0.70133,-1.79227 -0.57145,-3.48064 -0.57145,-3.48066 0.49353,-0.5195 c 0.26851,-0.28686 0.49353,-0.61528 0.49353,-0.7273 0,-0.11204 -0.49091,-1.21237 -1.09095,-2.44164 -0.60006,-1.22928 -1.30419,-2.99377 -1.55851,-3.94821 -0.2543,-0.95443 -0.7831,-2.71723 -1.16888,-3.89625 -1.4087,-4.30532 -1.81333,-6.37331 -3.71442,-18.18249 -0.22863,-1.42035 -0.44156,-3.34823 -0.44156,-4.28588 -0.002,-2.63674 -0.9188,-6.05746 -2.02606,-7.53275 -0.50514,-0.67304 -2.23607,-1.61169 -3.5326,-1.92215 -0.80923,-0.19375 -0.78109,-1.03603 0.052,-1.50654 0.45701,-0.25812 0.661,-0.55147 0.75327,-1.11693 0.0683,-0.41903 0.19074,-0.70806 0.28572,-0.64938 0.095,0.0587 0.23673,-0.15416 0.3117,-0.46754 0.0749,-0.31338 0.58333,-1.5224 1.11693,-2.7014 1.2652,-2.79551 1.41205,-3.38202 1.55849,-5.94828 0.10147,-1.77962 0.0382,-2.52105 -0.33766,-4.28587 -0.25008,-1.17408 -0.6287,-2.4328 -0.85718,-2.8053 -0.47726,-0.778 -1.5519,-1.52459 -2.72738,-1.89618 -0.44767,-0.14149 -1.35086,-0.57748 -2.02604,-0.98704 -1.50281,-0.91159 -2.13919,-1.14988 -3.58455,-1.40265 -0.3089,-0.054 -0.60452,-0.0971 -0.90913,-0.10383 z m -79.6653,0.0259 -1.58448,0.75327 c -2.60574,1.23655 -2.98515,2.21345 -2.72737,6.83143 0.11518,2.0623 0.0852,3.26182 -0.0778,3.92222 -0.19083,0.77213 -0.1843,1.15608 0.0778,2.12995 0.17709,0.65762 0.39474,2.12235 0.46754,3.24688 l 0.12989,2.05202 -0.57145,0.41561 c -1.08927,0.80533 -2.36973,1.34169 -4.33783,1.81825 -1.08159,0.2619 -3.37272,0.91597 -5.09109,1.42862 -1.71836,0.51265 -3.15886,0.90912 -3.19493,0.90912 -0.0361,0 -0.22702,0.45369 -0.4156,0.98705 -0.1886,0.53336 -0.70609,1.74697 -1.1429,2.7014 -0.74741,1.63311 -2.20372,6.72734 -2.20787,7.6886 -8.3e-4,0.24137 -0.51074,1.93046 -1.11694,3.76637 -0.60619,1.83593 -1.17033,3.85014 -1.24679,4.4677 -0.0766,0.61757 -0.34472,1.7987 -0.6234,2.62348 -0.47559,1.40731 -0.50616,1.74913 -0.49353,5.6106 l 0,4.10404 0.8312,2.88323 c 0.45371,1.57201 1.1255,3.80819 1.50655,4.9872 0.38103,1.179 0.83465,2.67915 1.01303,3.32479 0.29373,1.06314 0.3785,1.16888 0.88315,1.16888 0.58085,0 0.50716,-0.10902 2.41567,3.0131 0.95444,1.56135 1.05946,2.90777 0.5195,7.14312 -0.46559,3.652051 -0.94344,9.487957 -1.16888,14.364179 -0.11307,2.446277 -0.0726,3.153565 0.18184,3.792348 0.26915,0.676062 0.27482,1.050766 0.052,2.727375 -0.14181,1.066715 -0.41433,2.555398 -0.59743,3.3248 -0.36516,1.534231 -1.57138,8.735784 -2.05203,12.28617 -0.16723,1.235147 -0.36402,4.352753 -0.44157,6.935324 l -0.12987,4.701474 -0.7273,0.597425 c -0.88959,0.745121 -1.1511,1.404794 -1.4546,3.480649 l -0.25975,1.6624 -1.68838,1.350699 c -0.93451,0.747864 -2.1099,1.55948 -2.62347,1.81825 -1.71768,0.865461 -1.3773,1.869817 0.77925,2.207874 1.56429,0.245213 4.41018,0.09917 5.68851,-0.285724 0.54862,-0.165177 1.239,-0.531412 1.53253,-0.805225 0.45932,-0.428476 0.80833,-0.504572 2.3897,-0.597426 1.01058,-0.05934 2.2003,-0.227915 2.64945,-0.389625 0.74595,-0.268593 0.81343,-0.374364 0.9351,-1.19485 0.0733,-0.494014 0.6653,-2.59961 1.29876,-4.675498 0.63347,-2.075872 1.36892,-4.88516 1.63642,-6.233998 0.44298,-2.233576 2.33527,-15.220374 2.64945,-18.15652 0.24073,-2.249799 0.5484,-3.681578 1.16887,-5.636574 0.33857,-1.066714 0.72305,-2.994589 0.88314,-4.285874 0.42069,-3.393071 0.65959,-4.502568 1.24681,-6.052174 0.28739,-0.758397 0.91603,-3.14434 1.40265,-5.298894 0.83815,-3.710919 1.39217,-5.205485 1.76629,-4.831355 0.30046,0.30045 0.77926,3.128902 0.77926,4.545623 0,0.763344 0.0791,1.841033 0.18183,2.389702 0.10275,0.54869 0.31064,2.415571 0.44158,4.155999 0.1309,1.740428 0.35482,3.907089 0.51949,4.805373 0.16469,0.898287 0.38868,2.635132 0.49353,3.870275 0.1049,1.235143 0.30347,2.786553 0.41559,3.454675 0.12808,0.762928 0.11861,1.492979 0,1.948123 -0.25033,0.960596 -0.54631,4.127805 -1.039,11.428997 -0.45835,6.792457 -0.47891,9.278883 -0.18182,12.545922 0.11347,1.247681 0.2452,3.250091 0.3117,4.467699 l 0.12988,2.233851 0.75327,0.311699 c 0.46639,0.202663 1.3679,0.328532 2.41567,0.337674 1.59562,0.01385 1.69399,0.05336 2.33776,0.675351 0.80479,0.77752 1.75109,1.017786 4.54562,1.19485 2.16424,0.137114 3.51926,-0.06457 4.10404,-0.649376 0.47424,-0.474215 0.2903,-0.947451 -0.5195,-1.3507 -0.39149,-0.194957 -1.39169,-0.884105 -2.23384,-1.532524 l -1.53253,-1.19485 -0.44157,-1.61045 c -0.4264,-1.582297 -0.45945,-1.919114 -0.38962,-11.325096 0.0395,-5.333569 0.1568,-11.690276 0.23377,-14.104422 0.13756,-4.314568 0.14347,-4.418502 0.80522,-6.156073 0.66212,-1.738591 0.67794,-1.896605 1.29875,-9.896472 0.34717,-4.473628 0.72714,-8.916074 0.8312,-9.870504 0.10404,-0.954416 0.23607,-2.977816 0.31171,-4.493666 0.13151,-2.63394 0.18448,-2.83209 0.93509,-4.44173 0.43198,-0.92634 0.8857,-1.68838 1.01302,-1.68838 0.12732,0 0.58771,0.28655 1.01303,0.62341 1.4188,1.12366 1.50073,0.98632 1.3507,-1.97411 -0.12915,-2.54826 -0.10684,-2.62629 0.70132,-5.76644 0.45061,-1.75068 0.79113,-3.50257 0.77926,-3.89625 -0.0119,-0.39369 0.15066,-1.96766 0.33767,-3.48066 0.2739,-2.21587 0.27502,-2.88348 0.0778,-3.48064 -0.18147,-0.54982 -0.16845,-0.85414 0,-1.16887 0.30761,-0.57476 0.25967,-1.37301 -0.10383,-2.57153 -0.16721,-0.55121 -0.28572,-1.47967 -0.28572,-2.05202 0,-0.57234 -0.1511,-2.22943 -0.33767,-3.68846 -0.1866,-1.45902 -0.3339,-3.74365 -0.31171,-5.09109 0.0222,-1.34743 -0.0495,-3.1305 -0.15585,-3.9482 -0.1236,-0.95095 -0.12679,-1.74861 0,-2.20788 0.2403,-0.87027 -0.10339,-2.73458 -0.64937,-3.42869 -0.65177,-0.82861 -6.61828,-4.05647 -8.59773,-4.64953 -0.92022,-0.2757 -2.20786,-1.43863 -2.20786,-2.00008 0,-0.21521 0.1905,-0.50293 0.41559,-0.62339 0.52781,-0.28246 1.37492,-2.00589 2.33775,-4.70148 0.42114,-1.179 0.94754,-2.62929 1.16888,-3.24687 0.22134,-0.61758 0.45915,-1.8335 0.5195,-2.7014 0.0908,-1.30815 0.0434,-1.79601 -0.33767,-2.85726 -1.03348,-2.878 -2.16665,-4.24715 -4.38978,-5.29889 -1.48448,-0.70227 -1.76674,-0.72494 -2.77932,-0.15585 l -0.77926,0.44158 -1.22082,-0.44158 z m 37.81958,0.052 c -0.72417,0.044 -1.19248,0.17556 -1.68837,0.4156 -1.0503,0.50844 -2.75179,2.33722 -3.40272,3.6365 -0.82397,1.64471 -0.82974,2.19523 -0.0259,4.59758 0.60829,1.8181 0.70514,2.35625 0.59743,3.27285 -0.15202,1.29342 0.12461,2.32331 0.83119,2.98712 0.27747,0.26066 0.51951,0.67732 0.51951,0.93509 0,0.28404 0.22625,0.63472 0.59742,0.90914 0.79068,0.5846 0.80395,1.28977 0.0259,2.36372 -0.96457,1.33157 -1.78308,1.78391 -4.6755,2.5975 -0.9785,0.27523 -2.74451,0.91728 -3.92222,1.42862 -1.17773,0.51136 -2.29009,0.9351 -2.4936,0.9351 -0.23856,0 -0.48343,0.28568 -0.67535,0.77925 -0.16374,0.42108 -0.52855,1.1719 -0.80523,1.68838 -0.33936,0.63353 -0.55965,1.52748 -0.70133,2.75335 -0.27115,2.34633 -1.1771,9.16998 -1.4546,11.01339 -0.11828,0.78601 -0.14907,2.21452 -0.0778,3.16895 0.0993,1.33246 0.0296,2.19878 -0.28572,3.76638 -1.18532,5.892 -1.58336,20.43036 -0.59744,21.76704 0.71103,0.964 0.78369,1.96159 0.31171,3.76638 -0.35717,1.3658 -0.38478,1.92786 -0.25975,3.4287 0.14901,1.78896 0.14459,1.81063 1.32472,3.376737 l 1.19486,1.558513 -0.18183,2.337748 c -0.20686,2.814615 -0.71055,7.679009 -1.11693,10.623774 -0.25721,1.862064 -0.27952,2.297494 -0.0259,3.272849 0.16054,0.61757 0.71596,2.99704 1.22083,5.298897 l 0.90912,4.181975 0.12988,6.026198 c 0.20113,9.551035 0.73059,15.57099 1.45461,16.675945 0.29164,0.445117 0.28497,0.534287 -0.12989,1.116926 -0.62662,0.879975 -2.084,1.73281 -3.76637,2.233849 -1.6798,0.500266 -2.03486,0.753956 -2.57153,1.636424 -0.53693,0.882926 -0.29893,1.082073 1.76631,1.506551 1.66104,0.34139 6.00563,0.452522 6.88337,0.181823 0.25198,-0.07771 0.8871,-0.429936 1.40264,-0.805223 0.92587,-0.673979 0.93849,-0.682632 2.12995,-0.467551 0.91662,0.165443 1.61618,0.157146 2.85725,-0.05196 l 1.63643,-0.285725 0.12988,-1.220825 c 0.072,-0.673711 0.12139,-2.245503 0.12987,-3.480648 0.0172,-2.480675 -0.24012,-3.529599 -1.29875,-5.2989 -0.55784,-0.932315 -0.62748,-1.273837 -0.85717,-4.078074 -0.13797,-1.684284 -0.33658,-4.780113 -0.44158,-6.857397 -0.10501,-2.077285 -0.38913,-5.264538 -0.62339,-7.091173 -0.49682,-3.873817 -0.50328,-5.171654 -0.10383,-6.987274 0.16055,-0.729857 0.28157,-1.677329 0.28572,-2.103975 0.004,-0.426644 0.14097,-1.046493 0.3117,-1.376674 0.17076,-0.330181 0.50265,-1.479698 0.7273,-2.571525 0.46975,-2.282973 0.91775,-3.885738 2.05203,-7.324948 0.84988,-2.576871 2.52895,-5.938656 2.70139,-5.402796 0.0542,0.168431 0.14654,1.358161 0.2078,2.649453 0.11331,2.388331 0.71525,6.327721 1.2468,8.234068 0.45005,1.614033 0.56054,11.339412 0.15585,13.506996 -0.1912,1.024208 -0.32283,3.273664 -0.36365,6.026199 l -0.0778,4.389773 -1.1429,2.85725 -1.16888,2.857248 -0.15585,3.16895 c -0.14286,2.722379 -0.11511,3.207234 0.15585,3.506624 0.28464,0.314509 0.25937,0.4838 -0.12987,1.636424 -0.6052,1.792033 -0.56191,2.210708 0.28572,2.96115 0.56432,0.499609 0.7273,0.802739 0.7273,1.376675 0,0.600998 0.0909,0.777088 0.59742,1.038998 0.41714,0.215706 0.6234,0.452231 0.6234,0.779251 0,0.604631 0.41261,0.963186 1.37669,1.168874 0.41518,0.08844 1.7643,0.127299 2.98711,0.07793 3.2834,-0.132502 4.32466,-0.767073 3.42871,-2.078 -0.21462,-0.31401 -0.66107,-0.960883 -0.98706,-1.4546 -0.32596,-0.493707 -0.65418,-1.010954 -0.75327,-1.1429 -0.11653,-0.155159 -0.0121,-0.429463 0.31171,-0.753275 0.62271,-0.622717 1.77702,-2.566229 2.38969,-4.052098 0.90915,-2.204799 1.27149,-8.729652 1.2468,-22.286545 -0.0157,-8.586958 0.0166,-10.323229 0.36365,-13.273221 0.21956,-1.866555 0.50752,-3.549868 0.62341,-3.766373 0.36527,-0.682555 1.2064,-3.986661 1.55849,-6.104124 0.18627,-1.120273 0.36069,-2.049084 0.38963,-2.07801 0.0289,-0.02888 0.77171,-0.188369 1.66239,-0.36365 0.89068,-0.175259 1.84721,-0.412847 2.10399,-0.519497 0.59813,-0.248451 1.86769,-2.885881 1.87019,-3.870281 8.3e-4,-0.39615 0.0603,-1.1883 0.12987,-1.7663 0.10114,-0.84169 0.2354,-1.09596 0.62341,-1.27278 0.26643,-0.12138 0.46754,-0.39248 0.46754,-0.59742 0,-0.20492 0.24383,-0.82126 0.5195,-1.37668 0.44954,-0.90569 0.49764,-1.33151 0.57145,-4.07807 0.0453,-1.68428 0.24847,-4.94516 0.44159,-7.24702 0.34854,-4.15491 0.32565,-5.55084 -0.10383,-10.31207 -0.11136,-1.23514 -0.2851,-3.5191 -0.38961,-5.0911 -0.10458,-1.57199 -0.27539,-3.54763 -0.38964,-4.38978 -0.11426,-0.84213 -0.22879,-2.70385 -0.23377,-4.13002 -0.004,-1.51809 -0.12058,-3.05511 -0.28572,-3.68845 -0.58966,-2.26135 -1.16541,-4.0155 -1.3507,-4.13003 -0.10576,-0.0654 -0.29199,-0.4668 -0.4156,-0.88314 -0.21528,-0.72506 -0.37539,-0.83144 -3.6365,-2.44164 -1.87252,-0.92457 -4.02365,-1.96 -4.7794,-2.31178 -0.83475,-0.38857 -1.68337,-0.9917 -2.18191,-1.53254 l -0.83119,-0.88315 0,0.85718 c 0,0.48217 -0.0951,1.38996 -0.2078,2.00008 -0.50949,2.75851 -1.23154,11.46653 -1.4546,17.37728 -0.28592,7.57619 -0.17273,9.22501 0.96107,14.31221 0.4204,1.8863 0.69107,3.49093 0.6234,3.55857 -0.60856,0.60857 -9.08194,1.33902 -11.429,0.98706 -1.13405,-0.17007 -1.11664,0.0255 -0.44157,-4.10406 0.77755,-4.75631 0.94237,-7.40257 1.1429,-18.36431 0.10275,-5.61428 0.28325,-10.70753 0.38962,-11.32511 0.1063,-0.61755 0.19949,-1.90129 0.20781,-2.83127 0.009,-1.024 0.12238,-1.96256 0.31169,-2.41567 l 0.31171,-0.75327 1.71434,1.71435 c 1.59982,1.59149 1.88895,2.02604 1.27278,2.02604 -0.13571,0 -0.58358,0.25367 -1.01303,0.54548 l -0.77924,0.5195 0.54548,0.59742 c 0.68189,0.71177 0.7475,1.53281 0.15584,2.36373 -0.59333,0.83329 -1.834,6.4574 -2.20788,10.0783 -0.39295,3.80577 -1.11691,12.90959 -1.11691,13.97454 0,0.73853 0.1387,0.98652 1.48056,2.44166 l 1.50656,1.63642 1.71435,-1.3507 1.71436,-1.32473 0.18181,-6.20802 c 0.089,-3.42012 0.10158,-8.4702 0.052,-11.22119 -0.0777,-4.29976 -0.15095,-5.19763 -0.5195,-6.46778 -0.6212,-2.14089 -0.55757,-2.58072 0.4156,-3.63651 0.87005,-0.94388 0.86901,-0.93735 -0.10383,-1.61044 -0.37865,-0.26196 -0.35103,-0.30428 0.54547,-0.85718 0.52081,-0.32118 1.45249,-0.91186 2.078,-1.29875 0.87345,-0.54022 1.1429,-0.81522 1.1429,-1.19484 0,-0.39609 0.0838,-0.47639 0.4156,-0.38964 l 0.4156,0.10383 -0.4156,-0.67537 c -0.56599,-0.91577 -0.54697,-1.75069 0.0779,-2.33774 0.34413,-0.32327 0.48982,-0.61332 0.41559,-0.90911 -0.0711,-0.28322 0.14133,-0.87031 0.6234,-1.66241 0.69553,-1.14276 0.7379,-1.2917 0.6234,-2.44165 -0.15954,-1.6001 -0.15707,-1.62058 0,-3.16896 0.11047,-1.08874 0.0512,-1.53254 -0.31169,-2.49359 -1.3114,-3.47296 -3.97954,-5.24695 -7.84446,-5.24695 -0.30891,0 -0.5898,-0.0146 -0.83119,0 z m 151.82385,0 c -1.34795,-0.003 -3.6534,1.14055 -4.54563,2.25983 -1.56377,1.96177 -2.50232,3.71891 -3.58455,6.67557 -0.68505,1.87163 -0.73132,2.09716 -0.64937,3.92223 0.102,2.27024 0.4713,3.11684 1.50655,3.61052 0.63865,0.30458 0.70132,0.41976 0.70132,1.19485 0,0.47077 0.11729,1.18136 0.28573,1.58447 0.61509,1.47217 0.34029,1.7371 -2.33775,2.07801 -1.15278,0.14673 -3.01534,1.24736 -3.61053,2.12995 -0.247,0.36625 -0.49295,1.03755 -0.54547,1.50654 -0.0525,0.46899 -0.2086,1.64308 -0.33768,2.59751 -0.12905,0.95442 -0.31587,2.35697 -0.41559,3.14296 -0.19921,1.5702 -0.71985,7.50665 -0.88315,9.92245 -0.0569,0.84215 -0.33746,2.19987 -0.62341,3.03907 -0.91814,2.69481 -0.99691,3.68275 -1.01302,13.1953 l -0.0259,8.96138 -0.67535,2.25982 c -0.72949,2.41415 -0.73836,2.75643 -0.12988,5.06513 0.33944,1.28789 0.4375,1.45928 1.24681,1.94812 0.48553,0.29327 0.88315,0.66594 0.88315,0.8312 0,0.26184 -0.67683,4.252034 -1.19485,6.961302 -0.0966,0.505292 -0.57384,2.337647 -1.03901,4.078076 -0.88152,3.298403 -2.72241,13.266337 -2.49358,13.506996 0.44008,0.462902 3.24096,1.248076 5.14304,1.454599 l 2.12995,0.233775 1.45459,2.85725 c 0.79241,1.572002 2.34869,4.434002 3.45468,6.337898 1.10599,1.903897 2.63327,4.736368 3.40273,6.311924 1.64564,3.369693 1.72232,3.958257 0.88314,7.195072 -0.58918,2.272502 -0.72177,2.509144 -2.36373,4.3638 -1.20636,1.362619 -2.01773,2.790488 -2.02604,3.610524 -0.0141,1.430644 2.18813,1.744189 4.44173,0.6234 1.91412,-0.95194 2.66839,-1.686372 3.11699,-3.013099 l 0.38963,-1.116926 0,1.013026 c 0.0195,1.397437 -0.21755,2.087201 -1.19485,3.558574 -1.26478,1.904146 -1.29427,2.608363 -0.12988,3.091024 0.44687,0.185233 2.60429,0.06981 4.38977,-0.233775 1.40415,-0.238712 2.39736,-0.993808 2.57153,-1.922149 0.0825,-0.439714 0.27221,-0.714583 0.51949,-0.77925 0.33328,-0.08715 0.38963,-0.297304 0.38963,-1.4546 0,-0.827891 0.16543,-1.80781 0.4156,-2.519575 0.52929,-1.505934 0.51077,-1.920237 -0.12987,-3.948198 -0.47738,-1.511163 -0.51481,-1.881694 -0.38962,-3.5326 0.0769,-1.01428 0.45528,-3.107689 0.8312,-4.623548 1.44189,-5.814093 2.75335,-13.213306 2.75335,-15.533047 0,-0.779834 0.0899,-1.032593 0.44157,-1.220824 0.24011,-0.128516 1.71429,-0.302594 3.29882,-0.389624 3.22328,-0.177065 4.6325,-0.535288 6.98728,-1.792276 l 1.42861,-0.753274 -0.0778,-1.116925 c -0.0317,-0.64356 -0.64382,-3.172461 -1.4546,-5.922299 -0.77801,-2.638713 -1.74796,-6.233894 -2.15593,-7.974327 -0.40794,-1.740418 -1.00627,-4.1199 -1.32471,-5.298894 -0.53671,-1.98688 -0.57818,-2.48848 -0.67535,-6.93534 -0.0577,-2.6387 -0.0242,-5.49574 0.0778,-6.33788 0.93306,-7.6932 1.01815,-14.28813 0.23378,-17.4552 -0.34769,-1.40401 -0.41757,-2.60471 -0.5195,-8.57176 -0.1235,-7.22796 -0.5384,-11.35959 -1.27278,-12.77969 -0.3708,-0.71705 -2.4325,-2.38766 -3.14297,-2.54555 -0.83307,-0.18512 -1.63643,-0.53083 -1.63643,-0.70132 0,-0.0875 0.21392,-0.64615 0.49353,-1.2468 0.64525,-1.38607 0.65339,-2.26625 0,-4.00014 -0.28754,-0.76305 -0.8351,-2.24884 -1.22083,-3.29884 l -0.70131,-1.89617 0.41558,-0.59742 c 0.28517,-0.40043 0.4068,-0.84023 0.36365,-1.3507 -0.0711,-0.84206 -0.47148,-1.13583 -0.67534,-0.49352 -0.22684,0.71468 -0.65995,0.47003 -0.90912,-0.5195 -0.57944,-2.30115 -3.06847,-6.22141 -4.85734,-7.66263 -1.14255,-0.92053 -2.68342,-1.58198 -3.68843,-1.58448 z m -42.52106,17.1435 c 0.0559,0 0.11844,0.0717 0.20779,0.2078 0.11059,0.16843 0.20531,0.47675 0.20779,0.70132 0.002,0.22457 0.12466,0.6523 0.28574,0.96109 0.39095,0.74949 0.0847,0.72785 -0.57146,-0.052 -0.56001,-0.66551 -0.64015,-1.11011 -0.31169,-1.61045 0.0893,-0.13611 0.12599,-0.2078 0.18183,-0.2078 z m -150.39522,2.07801 c 0.33859,-0.004 0.76186,0.36051 1.19486,1.03899 0.65208,1.02185 3.58405,4.49782 3.87027,4.59757 0.32593,0.11361 3.40206,-3.00238 3.84429,-3.89624 0.45847,-0.92666 0.40923,-0.99592 1.06498,1.48056 0.2841,1.07297 0.46921,2.32612 0.46755,3.27285 -0.003,1.52332 -0.004,1.55566 -1.71435,4.80538 l -1.71435,3.24687 -0.23378,-1.81825 c -0.12774,-1.01056 -0.40456,-2.29764 -0.59743,-2.85724 -0.36265,-1.05228 -0.29355,-2.18375 0.15587,-2.72738 0.18057,-0.21844 0.0846,-0.39978 -0.38964,-0.77925 -0.33355,-0.26687 -0.78845,-0.49339 -1.01303,-0.49351 -0.3837,-2.4e-4 -1.71435,0.7098 -1.71435,0.90911 0,0.0505 0.25931,0.54702 0.59744,1.09095 l 0.62339,0.98706 -0.59742,1.63643 c -0.32925,0.90214 -0.67099,2.3078 -0.75327,3.14296 -0.0822,0.83517 -0.20419,1.77131 -0.28573,2.05202 -0.13628,0.46911 -0.21234,0.39855 -0.72729,-0.7273 -1.63774,-3.5805 -3.14797,-8.88055 -3.14299,-10.96144 0.003,-1.38238 0.41515,-3.53215 0.75328,-3.87028 0.0868,-0.0867 0.19884,-0.12848 0.3117,-0.12986 z m 203.592,18.85784 c 0.032,-0.0239 0.0556,-0.0221 0.0778,0 0.19124,0.18902 0.57506,3.81981 0.83119,7.84444 0.32841,5.16022 1.11,10.63925 2.15593,14.98757 0.26835,1.11558 0.46655,2.07902 0.41561,2.12995 -0.12665,0.12664 -0.0724,0.316 -3.24688,-8.85748 -0.50515,-1.45971 -1.23209,-3.39536 -1.63643,-4.31184 -0.9601,-2.17596 -1.00737,-3.62364 -0.15585,-6.51972 0.32765,-1.1144 0.67447,-2.42989 0.75327,-2.93518 0.15032,-0.96395 0.58096,-2.16984 0.80524,-2.33774 z m -114.86142,1.32471 c 0.0914,0 0.23631,0.64054 0.3117,1.4546 0.0754,0.81409 0.39594,2.55303 0.7273,3.8443 0.33134,1.29129 0.80278,3.26693 1.03899,4.38978 0.23622,1.12286 0.65046,2.85971 0.93511,3.87028 0.28467,1.01057 0.87257,3.27274 1.29875,5.01317 0.42615,1.74042 0.75713,3.19063 0.7273,3.2209 -0.0298,0.0303 -0.27093,-0.56459 -0.5195,-1.32473 -0.70186,-2.14649 -1.73859,-4.3422 -3.87028,-8.18212 -1.07905,-1.94369 -2.08884,-3.75426 -2.23385,-4.00014 -0.27933,-0.47364 -0.24758,-0.97997 0.23378,-3.71444 0.34936,-1.98445 1.12282,-4.5716 1.3507,-4.5716 z m 79.8731,1.84424 c 0.0173,-0.009 0.0379,-0.0142 0.052,0 0.10868,0.11002 1.21617,6.37801 1.74033,9.87049 0.23592,1.57201 0.45267,3.66532 0.46755,4.64952 0.015,0.98423 -0.0267,1.84508 -0.0779,1.89618 -0.1372,0.13722 -2.52678,-5.52449 -2.88321,-6.83142 -0.50156,-1.8391 -0.55476,-2.72128 -0.33769,-4.83136 0.20456,-1.98845 0.78027,-4.62016 1.03901,-4.75341 z m 21.30516,20.95136 -0.12988,1.42862 c -0.15396,1.76275 -1.49582,10.26281 -2.20788,13.97455 -0.28949,1.509102 -7.19915,-12.17341 -7.25267,-12.11987 -0.0536,0.0536 -0.10383,-0.63745 -0.10383,-1.5585 0,-1.41184 7.48427,7.60848 7.74622,7.18462 0.0457,-0.074 0.35733,-1.74719 0.70132,-3.71443 0.34397,-1.96721 0.76598,-3.94483 0.9351,-4.38976 l 0.3117,-0.80523 z m -45.74762,-14.58749 c -0.11275,-0.0113 -0.244,0.0642 -0.31171,0.18182 -0.59393,1.03244 -0.58166,1.01242 -2.33775,0.46755 -0.89828,-0.27871 -1.82183,-0.49351 -2.05202,-0.49352 -0.51143,-4e-5 -0.90913,0.35623 -0.90913,0.8312 0,0.19455 -0.16506,0.42225 -0.38962,0.49352 -0.43257,0.1373 -0.57923,0.99128 -0.2078,1.22083 0.11227,0.0694 0.2078,0.33208 0.2078,0.59742 0,0.31371 0.30228,0.74587 0.85717,1.22083 0.46936,0.40175 0.92094,0.7273 1.01304,0.7273 0.29119,0 0.18113,0.63257 -0.20781,1.19485 -0.20618,0.29805 -0.43829,0.66485 -0.51949,0.80522 -0.22854,0.39514 0.50027,0.29932 1.24679,-0.15585 0.35882,-0.21878 0.81043,-0.65159 1.01302,-0.96107 0.20259,-0.30949 0.76959,-0.91067 1.2468,-1.3507 0.47721,-0.44002 0.85718,-0.89581 0.85718,-1.01302 0,-0.11722 0.13048,-0.36821 0.28573,-0.54548 0.38967,-0.44503 0.63709,-2.96785 0.31169,-3.16895 -0.0339,-0.0209 -0.0663,-0.0482 -0.10382,-0.052 z m 34.65063,23.22164 c 0.15426,0 0.084,1.43153 -0.15584,3.0131 -0.23306,1.53724 -1.00058,0.29038 -0.83122,-1.35071 0.10858,-1.0523 0.46342,-1.66239 0.98706,-1.66239 z m -123.53707,1.32473 0.5195,0.6234 c 0.57916,0.70654 0.62175,1.27927 0.18183,2.12995 -0.51762,1.00098 -0.7088,0.72183 -0.70133,-1.06498 z m -28.80626,1.32472 c 0.30131,0 0.27869,2.91624 -0.0259,3.2209 -0.45266,0.45265 -0.57145,0.25705 -0.57145,-0.96108 0,-1.28603 0.25163,-2.25982 0.59742,-2.25982 z m 167.01921,28.572499 1.97409,0 0.12988,0.649375 c 0.0702,0.349555 0.092,1.515412 0.0259,2.597499 -0.0682,1.119734 -0.013,3.453527 0.15586,5.428774 0.16314,1.908858 0.26083,4.194907 0.20779,5.065124 -0.053,0.870216 -0.18758,1.584474 -0.28571,1.584474 -0.1656,0 -0.94021,-1.401769 -1.53254,-2.727374 -0.53539,-1.198208 -2.49502,-7.436188 -2.72736,-8.701624 -0.13402,-0.729856 -0.44403,-1.859491 -0.70133,-2.493599 l -0.46755,-1.142899 0.59743,-0.129875 c 0.33833,-0.06768 1.52868,-0.129875 2.62347,-0.129875 z"
+             style="fill:#ffffff" />
+          <path
+             sodipodi:nodetypes="ccsccccscsccccscccsccsccccccccccccccccccscssccscccscccsccccscccccccscccccscccccccccccccscccccccccccccccscsccscccccscsccccccsssccssccsccscscscccscsscscscsssscccccsscccscccccccscsccccscssscscccscccscscsccsscccsscccsccccscssccssscccsscccscccsscccsscccccssscccccccccccccccccccccscccsssccscccscssssccsccsccccccscscsccccccccccccssscccscscsscccccscscscssssccccccccsccsccccscsccssscccccccccccccccccssscccssccccccccccccssccccsscccccccsscscsssscccssccscccssccccccscsccsscscssssccccccccccccccscscscccsscccccsscssccscscccccccccccccccccccccccccccccscccccccccccsccccscccccsscccccccccsccsccccssccsccscscscccscccccccccccccscccccccsccccscccccsssssssccscssccccssscssccccccccsccccsscsscsscccccsccsccsccccccccccccccccccsccsscscssccscccscsscccscsssccscccccscccccccccccccccccsccccccccccccscccccccccccccccccccccccccccccccscccsccccccsccccsccccc"
+             inkscape:connector-curvature="0"
+             id="path4290"
+             d="m 834.38106,-179.50361 c -0.21213,-0.003 -0.44385,0.009 -0.7273,0.0259 -1.7338,0.10565 -2.71371,0.58319 -4.13007,2.00007 -1.59882,1.59944 -1.95814,3.05239 -1.40264,5.81839 0.15667,0.78 0.16183,1.20994 0.0258,1.29875 -0.94889,0.62064 0.22517,4.26229 1.2468,3.87028 0.41202,-0.15812 0.94092,1.71868 1.09096,3.8443 0.15069,2.13518 0.49248,2.63318 2.49359,3.66248 2.01153,1.03466 1.95734,0.97578 1.5585,1.58446 -0.25459,0.38866 -0.30704,0.74067 -0.2078,1.40266 0.10846,0.72352 0.0258,1.08891 -0.38967,1.8702 -0.30745,0.57844 -0.56188,1.49557 -0.64934,2.31178 -0.0822,0.7719 -0.2009,1.22659 -0.28575,1.06497 -0.0824,-0.15615 -0.44644,-1.49189 -0.8052,-2.98713 -0.35882,-1.49523 -0.9163,-3.40859 -1.24679,-4.23392 -0.33049,-0.82532 -0.61925,-1.75984 -0.62339,-2.078 l 0,-0.57145 -0.28578,0.5195 c -0.33198,0.60775 -0.83984,0.99643 -3.27284,2.4936 -2.51455,1.54737 -3.69129,2.10819 -5.66256,2.72737 -0.92661,0.29108 -1.80777,0.61336 -1.94807,0.7273 -0.1404,0.11394 -0.25975,0.64585 -0.25975,1.16887 0,0.62982 -0.22319,1.5157 -0.70137,2.64945 -0.53163,1.26064 -0.71742,1.98886 -0.70129,2.75336 0.025,1.17285 -0.34894,5.48881 -0.5195,6.02619 -0.0615,0.19365 -0.21677,1.68118 -0.3377,3.29883 -0.34197,4.57604 -0.51136,6.39508 -0.64934,6.72753 -0.0698,0.16843 -0.22659,1.11938 -0.33772,2.12994 -0.11104,1.01057 -0.35168,3.03397 -0.5195,4.49367 -0.25526,2.2208 -0.25908,3.60667 -0.0781,8.38992 0.18402,4.86148 0.17772,5.89747 -0.0781,6.98728 -0.28419,1.2113 -0.29151,1.27789 0.0515,1.16887 0.22635,-0.0718 0.57827,0.0848 0.93509,0.4156 0.56183,0.52069 0.59399,0.59133 0.70138,3.35078 0.079,2.01825 0.17547,2.91619 0.38957,3.19492 0.16426,0.21375 0.72207,0.88094 1.22088,1.480576 0.90617,1.089426 0.90675,1.092496 1.84418,0.961087 0.51601,-0.07226 1.19568,-0.215878 1.53257,-0.311716 0.33679,-0.09577 0.91224,-0.222856 1.27272,-0.285721 0.75674,-0.131936 0.63089,-0.568696 1.27282,4.156009 0.52823,3.888226 1.03436,8.898764 1.45461,14.494044 0.10543,1.403571 0.22833,2.927605 0.28567,3.376748 0.0573,0.449144 0.29018,3.420231 0.51951,6.597648 0.45509,6.305008 0.77567,8.522417 1.53256,10.857548 0.27297,0.842147 0.58159,2.270672 0.70129,3.16895 0.11969,0.898285 0.34378,2.139499 0.49357,2.779324 0.29989,1.280829 0.24678,1.402649 -0.83121,1.402649 -1.33673,0 -1.61693,1.288576 -0.8572,4.104049 l 0.4416,1.610449 -1.039,0.98705 c -0.95588,0.897372 -1.03899,1.053006 -1.03899,1.896176 0,1.650737 0.11229,1.701008 3.58454,1.688374 3.46536,-0.01271 4.19133,-0.199164 4.36379,-1.19485 0.0888,-0.512211 0.21388,-0.619045 0.90909,-0.753274 1.55936,-0.301153 2.3638,-0.606843 2.3638,-0.883151 0,-0.152833 0.30829,-0.469428 0.70128,-0.701324 0.393,-0.231881 0.87708,-0.748795 1.06501,-1.1429 0.30082,-0.630249 0.31735,-0.831184 0.0781,-1.688374 -0.14969,-0.536008 -0.2748,-1.508188 -0.25975,-2.1819 0.015,-0.694026 -0.23098,-2.438583 -0.57145,-4.000149 -0.33049,-1.515859 -0.68715,-3.20494 -0.80518,-3.766375 -0.12818,-0.609833 -0.26016,-5.552023 -0.31169,-12.260196 -0.092,-11.994358 -0.40855,-27.291621 -0.59747,-28.468585 -0.064,-0.396753 0.0316,-1.385626 0.23382,-2.233866 l 0.36365,-1.53252 0.49348,1.42863 c 1.30339,3.889805 2.72092,12.339632 3.89625,23.247618 0.2299,2.133429 0.87374,6.46675 1.42866,9.610748 0.55491,3.144005 1.18912,6.904235 1.42859,8.363948 0.4012,2.444807 1.86013,8.527652 2.57155,10.753647 0.2256,0.705988 0.23939,1.08149 0.0781,1.506549 -0.35019,0.920819 -0.044,1.798143 1.03899,3.0131 1.09677,1.230691 1.69374,1.500664 3.29886,1.402648 0.93195,-0.05694 1.00293,-0.05345 1.22079,0.57145 0.14579,0.418177 0.44976,0.757789 0.85722,0.935101 0.68275,0.297187 4.41948,0.390323 6.1301,0.15585 0.77218,-0.105834 0.99053,-0.22252 1.1429,-0.6234 0.32865,-0.864565 -0.11778,-1.965281 -1.1429,-2.805301 -0.50446,-0.413312 -0.90917,-0.835621 -0.90917,-0.961073 -8e-5,-0.125453 0.19442,-0.608222 0.4156,-1.064975 0.22109,-0.456761 0.49839,-1.521827 0.6234,-2.363725 0.19533,-1.315597 0.16682,-1.652058 -0.12983,-2.441649 -0.41942,-1.116061 -0.77485,-2.397097 -2.10402,-7.558723 -1.20872,-4.694093 -1.89265,-7.99566 -2.49359,-12.052397 -0.24123,-1.628146 -0.79372,-5.080052 -1.24681,-7.662623 -0.46256,-2.637897 -0.96261,-6.25295 -1.11688,-8.260048 -0.15111,-1.964999 -0.39973,-5.046944 -0.57154,-6.857395 -0.17163,-1.810456 -0.3117,-3.343597 -0.3117,-3.402726 0,-0.119169 1.45178,-0.473092 2.8053,-0.675355 1.14474,-0.171018 1.3906,-0.569982 1.71444,-2.909199 0.21843,-1.58073 0.21395,-2.13407 -0.0258,-3.45467 -0.33124,-1.82213 -0.34952,-2.6751 -0.0515,-3.81833 0.34412,-1.32395 0.52466,-11.81721 0.25975,-14.98757 -0.37861,-4.53416 -1.05637,-9.64738 -1.5585,-11.79265 -0.18402,-0.78713 -0.27737,-2.3914 -0.28568,-4.28588 -0.008,-1.91984 -0.14097,-3.56185 -0.33771,-4.46768 -0.17057,-0.786 -0.33647,-2.0235 -0.38959,-2.75336 -0.0533,-0.72985 -0.18162,-1.65902 -0.28576,-2.05204 -0.10415,-0.39298 -0.4535,-1.75148 -0.75323,-3.01309 -0.29974,-1.26158 -0.62757,-2.37214 -0.75332,-2.46762 -0.12568,-0.0954 -0.78083,-0.32502 -1.4546,-0.5195 -4.27063,-1.23276 -8.2943,-3.29403 -10.07829,-5.195 l -0.44155,-0.49352 0,0.90913 c 0,0.50796 -0.12916,1.25779 -0.28576,1.63642 -0.15659,0.37865 -0.63238,2.41219 -1.039,4.54562 -1.04598,5.48827 -1.15479,6.06628 -1.24679,5.97425 -0.0449,-0.0449 -0.18021,-0.90267 -0.28569,-1.92214 -0.11845,-1.14518 -0.38809,-2.37297 -0.7273,-3.22091 -0.50479,-1.26182 -0.53097,-1.43891 -0.28577,-2.1819 0.21836,-0.65731 0.21128,-0.92879 0,-1.4546 -0.49173,-1.22259 -0.49173,-1.23836 0.77925,-2.05202 1.60529,-1.0275 2.73797,-2.27148 2.5975,-2.85725 -0.33705,-1.40702 -0.36357,-2.18748 -0.12983,-3.81832 0.17871,-1.24646 0.35882,-1.81825 0.54543,-1.81825 0.41584,0 0.8785,-0.86387 1.01306,-1.8702 0.1335,-0.99804 -0.17753,-2.02605 -0.59746,-2.02605 -0.20373,0 -0.26806,-0.44376 -0.25975,-1.79228 0.008,-1.56289 -0.0608,-1.9211 -0.57145,-2.96115 -0.63828,-1.30007 -1.53939,-2.09127 -3.35073,-2.93517 -0.67885,-0.31586 -1.07799,-0.45683 -1.71438,-0.46755 z m -156.23962,0.052 c -0.26901,10e-4 -0.50251,0.14315 -0.85717,0.44158 -0.34469,0.29004 -0.87185,0.5195 -1.16887,0.5195 -0.37574,0 -0.96574,0.38501 -1.94813,1.27277 -0.77659,0.70179 -1.73676,1.55454 -2.12994,1.87019 -0.39319,0.31568 -0.82161,0.88713 -0.96108,1.27278 -0.13992,0.38698 -0.44431,0.73511 -0.67535,0.80523 -0.59899,0.18179 -1.14291,0.71961 -1.14291,1.11691 0,0.18762 -0.23313,0.56218 -0.51949,0.83122 -0.44289,0.41604 -0.50049,0.59073 -0.38963,1.24679 0.0844,0.49955 0.0659,0.77925 -0.0778,0.77925 -0.38786,0 -0.24347,0.43426 0.18182,0.54547 0.44101,0.11534 0.57631,0.52215 0.15585,0.46755 -0.8023,-0.10415 -0.98704,0.014 -0.98704,0.7273 0,0.45252 -0.1195,0.75744 -0.31172,0.8312 -0.44241,0.16979 -0.37447,0.49353 0.10383,0.49353 0.60291,0 0.52672,0.75166 -0.10383,1.039 -0.58151,0.26496 -0.6579,0.59743 -0.15584,0.59743 0.30975,0 0.29592,0.0339 -0.026,0.38962 -0.22987,0.25402 -0.27222,0.43152 -0.12986,0.5195 0.42125,0.26035 0.23353,0.91202 -0.36365,1.22082 -0.55038,0.28461 -0.59662,0.36074 -0.38963,0.90913 0.18405,0.4876 0.17752,0.6537 -0.10383,0.9351 -0.46958,0.46959 -0.45977,0.53938 0.46754,1.97409 0.44915,0.69493 0.80523,1.30138 0.80523,1.37669 0,0.0753 -0.2128,0.35967 -0.49351,0.6234 -0.28072,0.26372 -0.51951,0.59206 -0.51951,0.7273 0,0.13523 -0.28062,0.35154 -0.6234,0.49351 -0.82719,0.34264 -1.30855,1.36756 -1.61045,3.37675 -0.13497,0.89829 -0.3221,2.13579 -0.41561,2.75336 -0.0935,0.61758 -0.17242,2.01452 -0.18183,3.09103 -0.0133,1.52066 -0.1708,2.57261 -0.72729,4.7794 -0.76356,3.02795 -1.74033,8.1437 -1.74033,9.14318 0,1.04447 -0.2026,0.47956 -0.49352,-1.40264 -0.16143,-1.04436 -0.3257,-4.33408 -0.38962,-7.74054 -0.10415,-5.5562 -0.37848,-8.35442 -1.09096,-11.79266 -0.10157,-0.49055 -0.51517,-0.74733 -3.42868,-2.15592 l -3.32481,-1.61045 -0.10383,-1.61045 c -0.0713,-0.96278 -0.37228,-2.31415 -0.7273,-3.35078 -0.40847,-1.19271 -0.65878,-2.53186 -0.83119,-4.28587 -0.27247,-2.77173 -1.27627,-7.17429 -1.92215,-8.46785 -1.03574,-2.07425 -3.24888,-4.30342 -4.59757,-4.62356 -0.41086,-0.0975 -1.3719,-0.12193 -2.12996,-0.052 -1.11832,0.10329 -1.68066,0.2833 -2.96115,1.01302 -2.11344,1.20437 -2.50098,1.63453 -3.48064,3.71442 l -0.8312,1.76629 -0.15585,3.79236 -0.12988,3.76638 -0.75327,1.03899 c -1.37985,1.85367 -1.6427,2.55777 -1.81826,4.9872 -0.0885,1.22397 -0.25952,2.33687 -0.38961,2.4936 -0.13007,0.15674 -0.78156,0.40421 -1.42863,0.54548 -1.7056,0.37237 -2.02465,0.53914 -2.36372,1.19484 -0.62734,1.21312 -1.40428,4.93206 -1.76631,8.5198 -0.27189,2.69432 -0.50911,4.11663 -0.90912,5.29889 -0.34543,1.02102 -0.60187,2.26813 -0.67535,3.40273 l -0.10383,1.79228 -1.03899,1.01303 c -1.38177,1.34862 0.93081,6.94794 -2.22152,6.94794 -1.7153,0 -2.33212,0.0948 -3.03906,0.4156 -0.50912,0.23102 -1.35777,0.40415 -2.00008,0.4156 -1.45858,0.026 -2.57154,0.41336 -2.57154,0.90913 0,0.53006 1.08043,0.78344 2.38971,0.54547 1.77919,-0.32337 2.01531,0.0125 0.9351,1.42862 -0.4404,0.57743 -1.33952,1.25472 -2.59751,2.00008 -1.05488,0.62502 -1.95659,1.24617 -2.00006,1.37668 -0.0849,0.25466 0.90525,0.6013 1.11691,0.38962 0.0699,-0.0699 0.28965,0.0233 0.49354,0.2078 0.29797,0.26967 0.59052,0.30626 1.45459,0.18182 1.12847,-0.16251 1.5497,-0.19221 2.3897,-0.12986 1.10489,0.082 2.66047,-0.11745 3.117,-0.41561 0.30503,-0.19921 1.1844,-0.3702 2.41568,-0.44158 2.23046,-0.12928 0.51433,-5.93572 3.10466,-7.31159 0.86832,-0.46121 1.62363,-0.79207 1.68837,-0.7273 0.0648,0.0647 -0.39275,1.02318 -1.01302,2.12994 -0.94483,1.6859 -1.08725,2.05569 -0.85718,2.2858 0.23011,0.23013 0.0671,0.80313 -1.039,3.48066 -2.9557,7.15474 -2.82856,6.78925 -2.41566,7.09117 0.33824,0.24734 0.34242,0.38756 0.12986,1.84422 -0.12774,0.87529 -0.42199,3.84665 -0.64936,6.59764 -0.43958,5.31858 -0.57806,6.382866 -1.22082,9.50686 -0.5578,2.71099 -0.55361,2.65343 0.54547,2.961153 0.5155,0.144337 0.98338,0.37457 1.039,0.519501 0.0556,0.144909 0.009,1.992648 -0.10383,4.104047 -0.19208,3.590613 -0.27436,4.02362 -1.03899,6.545698 -0.64397,2.124079 -0.88797,3.474205 -1.22083,6.415824 -0.4965,4.387862 -0.82704,9.800387 -0.8312,13.610898 -0.002,2.20557 -0.098,2.886357 -0.41559,3.662473 -0.21527,0.526108 -0.42446,1.513373 -0.49353,2.181901 -0.0995,0.962245 -0.41124,1.738636 -1.48058,3.766373 -0.74291,1.408758 -1.76915,3.195688 -2.28579,3.974173 l -0.96107,1.428626 0.052,2.000074 c 0.0261,1.454283 0.12877,2.161094 0.36365,2.519575 0.17922,0.273489 0.40432,0.493524 0.49353,0.493524 0.26599,0 4.01039,-1.357849 4.64952,-1.688374 0.6544,-0.338391 0.98536,-0.939339 1.29875,-2.33775 0.18285,-0.815922 1.4488,-3.955696 2.96116,-7.350923 0.68875,-1.546257 0.78181,-2.272949 0.41559,-3.324799 -0.1747,-0.501729 -0.3092,-1.057602 -0.31169,-1.246799 -0.005,-0.657912 2.23354,-8.040919 3.27285,-10.779624 1.49844,-3.948623 2.10401,-6.043092 2.72736,-9.402947 0.49297,-2.657006 0.67929,-3.203877 1.7663,-5.402798 1.13381,-2.293591 1.23252,-2.632334 1.58448,-5.117074 l 0.36365,-2.64945 1.63642,0.05196 c 2.46043,0.07886 2.51958,0.110371 2.51958,1.116926 0,0.470559 0.13655,2.047495 0.31169,3.480649 0.32678,2.674115 0.30093,3.595548 -0.31169,8.805522 -0.14692,1.246495 -0.14395,2.441484 0,3.844299 0.2659,2.593594 0.26416,9.828764 0,10.779623 -0.11047,0.397613 -0.54605,1.279025 -0.96108,1.948125 -0.86744,1.398484 -0.82456,0.959021 -0.54547,7.792498 l 0.18183,4.545623 0.62339,0.597425 c 0.82719,0.817601 2.91875,2.052025 3.48065,2.052025 0.33309,0 0.68566,-0.339454 1.29875,-1.272776 1.02887,-1.566238 1.15931,-2.031842 0.85717,-3.091024 -0.13004,-0.45592 -0.52074,-2.200484 -0.85717,-3.870274 -0.52263,-2.592736 -0.59762,-3.365984 -0.5195,-5.272923 0.0868,-2.11542 0.17413,-2.439772 1.53252,-6.441799 1.37443,-4.049205 2.62617,-8.403432 3.09103,-10.701697 0.12033,-0.59491 0.31508,-2.923309 0.41561,-5.169024 0.1005,-2.245715 0.34407,-5.007241 0.54547,-6.130097 l 0.36365,-2.02605 2.8053,-0.129875 c 2.00916,-0.08743 2.91592,-0.211588 3.11699,-0.415601 0.21748,-0.22063 0.34145,-2.08796 0.59743,-8.234067 0.35214,-8.4547 0.66782,-11.65489 1.1429,-11.9485 0.24221,-0.14969 0.19247,-0.87082 -0.28573,-4.72745 -0.31049,-2.50426 -0.63416,-4.97111 -0.70132,-5.45475 -0.004,-2.55264 -0.12471,-2.52159 1.74027,-4.46783 l 1.40265,-1.11693 c 0.76765,-0.61635 1.60018,-1.19789 1.84422,-1.27278 0.40473,-0.12417 1.11898,-1.0752 2.00008,-2.67542 0.33334,-0.60537 0.32852,-0.58137 0.20781,0.8312 -0.0671,0.78601 -0.35462,3.21324 -0.62341,5.40279 -0.26877,2.18958 -0.52727,4.71233 -0.59743,5.61061 -0.0702,0.89828 -0.25799,2.42233 -0.41559,3.37676 -0.15761,0.95442 -0.3681,2.5153 -0.44158,3.48064 l -0.12988,1.76629 0.98705,0.23378 c 0.94199,0.2372 0.94398,0.27124 0.83121,0.90913 -0.0637,0.36039 -0.21275,1.44816 -0.33767,2.41567 l -0.23378,1.76629 1.03899,2.02606 c 0.94559,1.88428 1.10933,2.10843 2.18191,2.77933 l 1.16886,0.727297 0.49354,-0.519497 c 0.30245,-0.32634 0.44461,-0.65115 0.36365,-0.85717 -0.072,-0.18326 -0.17123,-1.81396 -0.2078,-3.61053 -0.0553,-2.70645 -0.0342,-3.02166 0.12987,-1.92216 0.10891,0.72987 0.27448,1.468 0.36365,1.63643 0.0892,0.16844 0.73746,0.46866 1.42863,0.67535 0.7008,0.2096 1.34583,0.52411 1.4546,0.7273 0.40056,0.74851 1.64965,5.990161 2.44165,10.234148 0.45052,2.414143 1.04759,5.483995 1.32472,6.831423 0.27713,1.34743 0.77253,4.417281 1.11692,6.831424 0.3444,2.414144 0.78529,5.355463 0.98706,6.519723 0.41674,2.404853 0.34611,3.806871 -0.38963,6.467773 -0.2998,1.084334 -0.49091,2.481639 -0.57145,4.2599 -0.0912,2.013265 -0.23463,2.991529 -0.59743,4.052099 -0.3612,1.056114 -0.44687,1.619602 -0.33767,2.259824 0.22999,1.348738 0.11036,4.381487 -0.2078,5.143048 -0.15922,0.381098 -0.3117,1.191958 -0.3117,1.81825 0,0.923438 0.10383,1.246816 0.49352,1.636425 0.59151,0.591523 2.49362,1.014263 3.71443,0.831199 1.88097,-0.282067 2.39783,-1.366832 1.84422,-3.818323 -0.43147,-1.910588 -0.41422,-2.026051 0.18183,-2.026051 0.4144,0 0.54396,0.150341 0.7273,0.831201 0.15822,0.587558 0.35527,0.897563 0.7273,1.038999 0.47636,0.181127 0.51975,0.277572 0.41559,1.064975 -0.568,4.294478 -0.61045,5.279575 -0.31169,5.818399 0.48211,0.869501 1.48566,1.272775 3.29882,1.272775 1.66006,3.31e-4 2.64846,-0.323329 2.88323,-0.935099 0.23619,-0.615538 0.12419,-2.042483 -0.25976,-3.27285 -0.21023,-0.673705 -0.42657,-1.889501 -0.46755,-2.727374 l -0.0778,-1.532526 0.93509,-0.337674 c 0.50169,-0.186397 0.98324,-0.478622 1.09095,-0.649375 0.12957,-0.205423 0.0924,-0.969778 -0.12987,-2.233849 -0.18483,-1.050695 -0.45127,-3.133665 -0.57146,-4.649524 -0.12015,-1.515859 -0.37713,-4.108348 -0.59741,-5.740474 -0.37159,-2.753166 -0.509,-3.385252 -1.22084,-5.896324 -0.24244,-0.855354 -0.20673,-1.14959 0.57146,-4.285873 0.45971,-1.852715 1.10872,-4.853026 1.4546,-6.649598 0.3459,-1.796572 1.13027,-5.31802 1.74032,-7.844448 1.34306,-5.561941 2.29983,-10.249701 2.62349,-12.857613 l 0.25974,-1.94812 1.37667,-0.7273 1.40265,-0.70134 -0.10382,-1.84423 c -1.17652,-10.27408 -0.79809,-8.99262 0.57145,-4.02611 0.16721,0.81263 0.37979,1.64629 0.49352,1.84421 0.11373,0.19795 0.38421,1.4364 0.59743,2.77934 0.42569,2.68087 0.3777,3.10484 -0.54548,4.07807 l -0.54547,0.57145 0.6234,0.49353 c 0.33685,0.27608 0.86009,0.55781 1.16888,0.6234 0.30878,0.0655 0.54547,0.23524 0.54547,0.38962 0,0.481058 1.10798,0.31994 2.10397,-0.31169 1.02412,-0.64948 1.01614,-0.66215 1.37667,-2.77934 0.23893,-1.40309 0.23198,-1.51092 -0.38962,-3.37676 l -0.64937,-1.92214 0,-5.8184 c -0.01,-3.20401 -0.13485,-7.05205 -0.28572,-8.57175 -0.1505,-1.51585 -0.34479,-3.75205 -0.41561,-4.9872 -0.36185,-6.3073 -1.63185,-18.32227 -2.44164,-22.98786 -0.16565,-0.95443 -0.3117,-1.94412 -0.3117,-2.20788 -8.4e-4,-0.83452 -0.58401,-1.77672 -1.32473,-2.12994 -0.875,-0.41726 -0.90718,-0.75328 -0.0778,-0.75328 l 0.62339,0 -0.64938,-0.90913 c -0.37894,-0.52763 -0.61636,-1.03596 -0.54547,-1.22082 0.17517,-0.45644 0.51732,-0.40316 0.75328,0.12987 0.19328,0.43664 0.20005,0.43321 0.0778,-0.052 -0.30597,-1.21556 -0.24119,-1.9548 0.25975,-2.83128 0.59203,-1.03583 0.54528,-1.63134 -0.23377,-2.77931 -0.28609,-0.42161 -0.51949,-0.96402 -0.51949,-1.19486 0,-0.23083 -0.24424,-0.67259 -0.54548,-0.98704 -0.4082,-0.42606 -0.57091,-0.8649 -0.67535,-1.74032 -0.10991,-0.92133 -0.33764,-1.45106 -1.03901,-2.46763 -0.49186,-0.71293 -1.08682,-1.63481 -1.32472,-2.02605 -0.23789,-0.39123 -0.72795,-0.93898 -1.06498,-1.24681 -0.33702,-0.30782 -0.77892,-0.93805 -0.98705,-1.37667 -0.41303,-0.87042 -1.90696,-2.40156 -2.77932,-2.85724 -0.30233,-0.15792 -1.15218,-0.36221 -1.89617,-0.46757 -0.74399,-0.10533 -1.48442,-0.3198 -1.66241,-0.46754 -0.17797,-0.14774 -0.94765,-0.34113 -1.68837,-0.4156 -0.74069,-0.0745 -1.58112,-0.18452 -1.8702,-0.25974 -0.0992,-0.0258 -0.19604,-0.0526 -0.28572,-0.052 z m 23.6892,28.20884 c -0.3214,0.55434 -0.60885,1.60591 -0.85718,3.16895 -0.48668,3.06524 -0.4907,9.80804 0,12.6758 0.4126,2.4112 0.42645,3.47509 0.0259,4.7794 -0.524,1.70683 -0.63114,7.31802 -0.20781,11.6368 0.24576,2.51086 0.33797,4.52449 0.25975,6.33789 -0.065,1.50715 0.004,4.06739 0.15585,5.9223 0.22953,2.81922 0.35932,3.48953 0.9351,4.9872 0.69264,1.801709 1.61773,2.955546 2.57153,3.194926 0.25986,0.06517 0.54781,0.234324 0.64937,0.363651 0.10146,0.129348 0.28233,3.303628 0.4156,7.065199 0.13326,3.761573 0.29965,7.117966 0.36365,7.454823 0.29923,1.574715 0.70053,1.861951 3.24688,2.363725 0.6737,0.132762 1.29413,0.3403 1.37668,0.46755 0.0824,0.12725 0.12737,0.77864 0.12987,1.4546 0.004,1.733017 1.61629,7.264611 3.87027,13.273221 1.38658,3.696304 1.49254,4.7368 1.06497,11.377047 -0.28494,4.425607 -0.18095,5.071441 0.96108,6.259974 1.50477,1.566013 3.09758,1.252194 4.18197,-0.805225 0.6581,-1.248578 0.65938,-1.895542 0.052,-5.662548 -0.21156,-1.311767 -0.26311,-2.623325 -0.18183,-4.285874 l 0.12988,-2.3897 -0.77925,-1.116924 c -0.42086,-0.617566 -0.85381,-1.403465 -0.96108,-1.740326 -0.10726,-0.336859 -0.26225,-3.454466 -0.36365,-6.935322 -0.10136,-3.480857 -0.26528,-6.882512 -0.33768,-7.532748 l -0.12987,-1.168876 1.81825,0.05196 1.81826,0.05196 0.25974,0.8312 c 0.22456,0.664364 0.24755,1.181221 0.052,2.727375 -0.33223,2.626159 -0.28648,5.415707 0.10383,7.091173 0.37459,1.607649 1.19296,5.986393 1.53253,8.182123 l 0.23378,1.480574 -0.77925,1.2468 c -1.01409,1.669357 -1.0849,2.561584 -0.38962,4.493674 0.99473,2.764288 1.10436,3.248945 1.32471,5.870348 0.27186,3.233991 0.4334,3.688333 1.53253,4.701475 1.61427,1.487989 2.58018,1.756632 3.71442,1.064974 1.29622,-0.790412 1.314,-2.883274 0.0779,-7.065198 -1.56337,-5.289374 -1.72104,-6.047311 -1.68838,-7.922373 0.0174,-0.998345 0.21304,-2.973975 0.44157,-4.389775 1.59275,-9.867404 1.91369,-14.029033 1.32473,-16.468145 -0.16268,-0.673713 -0.28324,-1.649563 -0.28573,-2.181899 -0.002,-0.874583 0.0557,-1.022456 0.67536,-1.428625 l 0.70132,-0.441574 0.10383,-9.558798 0.0778,-9.558802 0.54547,-0.4156 c 0.29972,-0.23575 1.06271,-1.21564 1.68838,-2.15592 l 1.1429,-1.68837 -0.10383,-3.5326 -0.12987,-3.5326 0.25974,2.18189 c 0.17065,1.52015 0.34759,2.26978 0.59743,2.54555 0.25391,0.28025 0.36365,0.74258 0.36365,1.58448 0,1.00057 0.12434,1.44738 0.85717,2.83127 0.73724,1.39221 1.04602,1.73247 2.00007,2.33776 0.61758,0.39179 1.15538,0.74685 1.19486,0.77925 0.0394,0.0324 -0.0959,1.430767 -0.28572,3.116996 -0.18979,1.686218 -0.28053,3.181146 -0.20781,3.298822 0.0771,0.124739 0.92844,0.2078 2.05202,0.2078 1.18958,0 1.94813,0.07769 1.94813,0.207798 0,1.131045 1.13362,10.057857 1.53252,12.052397 0.68474,3.423368 0.89874,5.991759 0.90913,11.013398 0.004,2.301859 0.0967,5.467225 0.20781,7.039224 0.37083,5.247622 1.06315,11.843457 1.27276,12.104347 0.11397,0.141818 0.34208,0.23739 0.51951,0.207799 0.60136,-0.100144 0.53996,0.725613 -0.10382,1.272775 -0.33408,0.283912 -0.72512,0.708431 -0.85718,0.961075 -0.13202,0.252643 -0.37186,0.467549 -0.51949,0.467549 -0.14765,0 -0.71515,0.523232 -1.27277,1.168876 -1.71982,1.991329 -1.96868,2.413779 -1.81827,3.013099 0.20559,0.818997 1.1634,1.116924 3.55859,1.116924 2.32761,0 3.78488,-0.239801 5.24695,-0.909125 0.56142,-0.257032 1.83525,-0.590674 2.83127,-0.727299 2.34696,-0.321949 2.57153,-0.548492 2.57153,-2.415676 0,-1.163105 0.0981,-1.525848 0.57143,-2.285798 0.77462,-1.243658 0.96006,-1.761654 1.24681,-3.142974 0.24569,-1.183471 0.25738,-1.191234 -0.51949,-2.701399 -0.42947,-0.834816 -1.27525,-2.136608 -1.8702,-2.883224 -0.68055,-0.853984 -1.03904,-1.464758 -0.96109,-1.662401 0.27491,-0.696586 0.34511,-3.305499 0.12989,-5.220973 -0.12556,-1.11749 -0.32776,-3.401643 -0.44158,-5.065124 -0.11381,-1.663505 -0.36305,-3.665569 -0.54547,-4.467699 -0.23653,-1.039949 -0.28018,-1.884112 -0.18183,-2.909199 0.37716,-3.931531 0.5606,-6.240926 0.75328,-9.506848 0.35504,-6.017678 0.40385,-6.623274 0.64936,-6.779473 0.13052,-0.08303 0.90425,-0.154187 1.71436,-0.155849 1.19677,-0.0025 1.50881,0.07338 1.6624,0.363649 0.10393,0.196501 0.95099,2.456578 1.8702,5.039149 0.9192,2.582571 1.98669,5.32569 2.36372,6.078148 0.59018,1.177857 1.29699,3.455379 1.92216,6.078149 0.0936,0.392999 0.3619,2.368633 0.59741,4.389774 0.23555,2.021145 0.76741,5.616325 1.16888,7.974323 l 0.72731,4.285872 -0.41561,4.441726 c -0.28625,3.041958 -0.36712,4.636482 -0.23377,4.987198 0.10745,0.282633 0.76501,1.377141 1.4546,2.44165 0.9976,1.540014 1.27257,2.148402 1.3507,2.961149 0.11555,1.202679 0.25038,1.27319 2.44165,1.5585 0.96953,0.126233 1.83391,0.397121 2.44165,0.753275 0.51232,0.300254 1.34717,0.631145 1.8702,0.727299 1.35082,0.248395 6.30728,0.0719 6.67557,-0.233775 0.16291,-0.135211 0.28573,-0.496259 0.28573,-0.805225 0,-0.641587 -0.93143,-2.436604 -1.35071,-2.597499 -0.15368,-0.05901 -0.25975,-0.248097 -0.25975,-0.4156 0,-0.167487 -0.25792,-0.533497 -0.57144,-0.8312 -1.16669,-1.107731 -1.68839,-1.982835 -1.68839,-2.857249 0,-1.325589 -0.68337,-4.685523 -2.62347,-12.701772 -1.70389,-7.040279 -1.83217,-7.723799 -2.33774,-12.545921 -0.2943,-2.807144 -0.61086,-5.829238 -0.67536,-6.727524 -0.0645,-0.898286 -0.2873,-2.161753 -0.49351,-2.779325 -0.21742,-0.651174 -0.46194,-2.361327 -0.59744,-4.078074 -0.12849,-1.628142 -0.3312,-3.527932 -0.44157,-4.233923 -0.11036,-0.706012 -0.14471,-1.372515 -0.0778,-1.480575 0.0669,-0.108074 0.51648,-0.199179 0.98706,-0.2078 1.19988,-0.022 2.39638,-0.427418 2.70139,-0.909123 0.26461,-0.417883 0.0658,-1.361415 -2.88322,-14.260274 l -0.7273,-3.2209 1.01302,-3.81831 c 2.39616,-8.85013 2.92187,-11.7347 2.93517,-16.05256 l 0.0259,-3.48064 -2.00007,-7.35093 c -2.88761,-10.67829 -3.09322,-11.29665 -3.9221,-12.07836 -0.93597,-0.88274 -2.88062,-1.82896 -5.01318,-2.41569 -1.57569,-0.4335 -2.02245,-0.68593 -4.46769,-2.46762 -1.49861,-1.09194 -2.78448,-2.01063 -2.83128,-2.05202 -0.0467,-0.0413 -0.0779,-0.76265 -0.0779,-1.61044 0,-1.51919 0.009,-1.56378 0.72729,-2.15593 1.17555,-0.96896 1.91428,-3.87029 0.98706,-3.87029 -0.37406,0 -0.35598,-0.0401 -0.052,-1.16887 0.41658,-1.54626 0.41515,-3.44028 0,-4.23392 -0.48965,-0.93609 -2.07671,-2.32593 -3.35077,-2.9092 -1.51675,-0.69441 -3.20791,-0.57664 -5.06513,0.33767 -2.10351,1.03556 -2.96115,2.62528 -2.96115,5.45476 0,1.1492 -0.0623,1.29158 -0.46755,1.35069 -0.31522,0.046 -0.49588,0.25861 -0.6234,0.75328 -0.27404,1.06286 0.18802,2.42718 1.14291,3.37675 l 0.80522,0.77924 -0.15585,2.1819 c -0.16861,2.53345 -0.33947,2.89827 -2.33776,4.9872 -1.50222,1.57036 -1.73449,1.70147 -4.64952,2.88323 -2.00916,0.81452 -3.20544,1.50881 -4.18197,2.41567 -0.44632,0.41449 -1.10277,2.76458 -2.28579,8.23408 -0.43212,1.99775 -1.67455,10.06138 -1.9741,12.83164 -0.23324,2.1569 -0.14183,14.12277 0.12986,17.76689 0.10522,1.41096 0.10265,1.42284 -0.20779,0.75328 -0.39883,-0.86011 -0.68324,-3.66899 -0.9351,-9.68866 -0.1989,-4.75352 -0.27658,-5.42576 -1.01303,-7.92238 -0.61042,-2.06946 -0.82792,-4.47373 -1.01302,-11.7407 -0.18307,-7.18652 -0.23499,-7.69424 -1.24681,-8.64967 -24.866,55.521378 -5.27469,8.93766 -27.8452,1.09092 z m 173.95449,-27.97519 c -0.11237,-0.008 -0.18368,-0.006 -0.25966,0.026 -0.19807,0.0858 -1.19734,0.16587 -2.20791,0.18182 -1.44098,0.0228 -2.00901,0.12767 -2.64946,0.46755 -1.99829,1.06039 -4.53552,4.7163 -5.11703,7.40287 -0.0848,0.39162 -0.3663,1.17901 -0.6494,1.74033 -0.50247,0.99704 -0.51743,1.07373 -0.36365,3.76637 0.0862,1.51597 0.1457,3.10306 0.12983,3.50663 -0.0158,0.40358 0.14461,1.14127 0.36372,1.63643 0.21903,0.49515 0.50646,1.66454 0.6234,2.59749 0.11696,0.93296 0.25768,1.75654 0.31171,1.84423 0.054,0.0877 0.008,0.48215 -0.10383,0.88315 -0.21229,0.7688 -0.88048,1.29175 -2.33783,1.81824 -0.42382,0.15315 -0.98847,0.54445 -1.2468,0.88316 -0.51368,0.67331 -0.90077,2.54979 -0.90908,4.38977 0,0.61757 -0.22784,2.87975 -0.51951,5.01318 -0.37088,2.71443 -0.58274,5.44819 -0.70127,9.09124 -0.11638,3.56962 -0.26467,5.4742 -0.46764,6.10413 -0.33714,1.04672 -0.72414,4.72655 -0.85713,8.18211 -0.0498,1.2913 -0.23615,2.98037 -0.4156,3.76637 -0.17971,0.78601 -0.69754,3.21323 -1.1429,5.40281 l -0.80527,4.00014 0.44162,1.63643 c 0.58715,2.12189 1.49649,3.13742 3.0131,3.4287 0.56638,0.10879 0.69338,0.0683 0.77925,-0.25975 0.0623,-0.23912 0.32692,-0.42969 0.64934,-0.46755 0.46347,-0.0544 0.52306,-0.16579 0.54551,-0.83119 0.0141,-0.42107 -0.0275,-0.75329 -0.10383,-0.75329 -0.0765,0 -0.39082,-0.2149 -0.67535,-0.46754 -0.70917,-0.62959 -0.85347,-1.69992 -0.44153,-3.117 0.21379,-0.7348 0.28426,-1.49306 0.20781,-2.10397 -0.41553,-3.31594 -0.42426,-3.08375 0.49348,-4.90929 0.46822,-0.93117 0.89279,-1.65315 0.93509,-1.61043 0.0423,0.0426 -0.11114,1.19163 -0.3117,2.57151 -0.3585,2.47068 -0.34378,2.51047 0.0515,3.0131 0.38053,0.4839 0.3886,0.75983 0.28578,5.24695 -0.099,4.31394 -0.42126,7.826936 -0.96112,10.415981 -0.1123,0.53889 -0.2078,1.647408 -0.2078,2.467624 8e-5,1.300023 0.0831,1.555145 0.51949,2.02605 0.37929,0.409311 0.68492,0.545474 1.29876,0.545474 0.72888,0 0.8174,0.06164 0.9351,0.597426 0.16715,0.761317 0.42997,0.859452 2.67547,0.987049 l 1.84417,0.103912 0.25976,1.402649 c 0.13265,0.773853 0.23372,1.880206 0.23372,2.467624 0,0.686984 0.16127,1.446001 0.46764,2.103975 0.3225,0.692558 0.52275,1.614696 0.62341,2.857249 0.20363,2.516527 0.55191,4.168391 2.20783,10.909497 0.78597,3.200145 1.58177,6.868146 1.76629,8.130173 0.3157,2.157537 0.30431,2.323678 -0.0258,2.883224 -0.28767,0.487483 -0.33771,1.116667 -0.33771,3.48065 0,3.231463 -0.16649,3.759501 -1.63638,5.532673 -1.30257,1.571325 -1.55625,2.49 -0.93511,3.37675 0.16217,0.231762 0.39126,0.84129 0.51951,1.3507 0.25418,1.009491 0.66372,1.329619 1.84418,1.454598 1.58851,0.168127 4.62978,0.122269 5.35085,-0.07787 0.98779,-0.274321 1.27332,-0.760507 1.89613,-3.091024 0.28103,-1.051078 0.77368,-2.395527 1.06502,-3.013099 l 0.51949,-1.142901 0.15586,0.701326 c 0.0843,0.373865 0.20588,1.372576 0.28577,2.233848 0.13605,1.469388 0.35184,2.078001 0.7273,2.078001 0.0879,0 0.21312,-1.309131 0.25966,-2.909199 0.0798,-2.719728 0.12069,-3.005786 0.7273,-4.41575 1.01739,-2.36512 0.86836,-3.357581 -0.77916,-5.039148 -1.65825,-1.692473 -1.69841,-1.811501 -1.87021,-8.675649 -0.22924,-9.154735 -0.4722,-10.731433 -2.25986,-14.078446 -1.64361,-3.077159 -1.77818,-3.324752 -1.92215,-4.130023 -0.12401,-0.694233 -0.0815,-0.772088 0.41559,-0.961075 0.30016,-0.114123 0.92971,-0.2078 1.40266,-0.2078 0.99004,0 1.7663,-0.458564 1.7663,-1.039 0,-0.393205 0.29416,-0.404411 1.37663,-0.07793 0.25983,0.07833 0.45932,-0.545924 0.46763,-1.376673 0,-0.450144 0.12161,-0.540622 0.70128,-0.649376 0.49091,-0.0921 0.7229,-0.271367 0.80519,-0.597424 0.0851,-0.339063 0.35434,-0.518178 1.03901,-0.701325 1.38627,-0.370768 1.43274,-0.570476 1.14289,-5.091099 -0.13532,-2.110689 -0.33497,-4.546712 -0.44153,-5.402802 -0.22816,-1.83211 0.0532,-3.07248 0.7273,-3.19492 0.22462,-0.0408 0.63473,-0.26454 0.88318,-0.49353 0.24853,-0.22897 0.65223,-0.52134 0.90908,-0.64937 0.71998,-0.35888 0.99445,-1.20427 1.27283,-3.76638 0.18509,-1.70626 0.2023,-2.75036 0.0515,-3.76637 -0.14919,-1.00641 -0.13973,-1.62821 0.0258,-2.1819 0.12726,-0.42471 0.23382,-0.97911 0.23382,-1.2468 0,-0.26769 0.14837,-1.40121 0.33771,-2.49361 0.34254,-1.9759 0.34204,-1.97789 1.03901,-2.20786 l 0.70128,-0.23378 -0.12992,-6.6496 c -0.0781,-3.6649 -0.16008,-9.05504 -0.18178,-11.97447 -0.0365,-4.94314 -0.0979,-5.67178 -0.80518,-10.51987 -0.41785,-2.86329 -0.91224,-5.59627 -1.09105,-6.07815 -0.3732,-1.00586 -0.8385,-1.39366 -2.02595,-1.58448 -1.47068,-0.2363 -3.80078,-1.04622 -4.00027,-1.40264 -0.10587,-0.18921 -0.28768,-1.23488 -0.38958,-2.31178 -0.10179,-1.07689 -0.30538,-2.27293 -0.44161,-2.64946 -0.19019,-0.53266 -0.19069,-0.71839 0,-0.90911 0.46306,-0.46307 0.29016,-1.16243 -0.46747,-1.74033 -0.66081,-0.50427 -0.7317,-0.61593 -0.62341,-1.27278 0.41868,-2.53944 0.40688,-2.65581 -0.23382,-3.45466 -0.33364,-0.41607 -0.6406,-0.96608 -0.70128,-1.24681 -0.55274,-2.55968 -1.13757,-3.85877 -2.3897,-5.42878 -0.81249,-1.01879 -2.38204,-1.99786 -3.16903,-2.05202 z m -75.17159,0.38963 c -0.51858,0.0159 -0.99444,0.0506 -1.37668,0.12987 -1.44366,0.2997 -2.40581,1.10682 -3.79234,3.16895 -1.6648,2.47599 -2.58823,5.2668 -2.05202,6.25997 0.17678,0.32739 0.27571,1.25869 0.25975,2.83128 -0.0149,1.48008 0.0444,2.20552 0.15584,1.94811 0.0972,-0.22456 0.17352,-0.82151 0.18183,-1.29874 0.008,-0.47721 0.0927,-0.85717 0.20781,-0.85717 0.28746,0 0.53756,0.7171 0.70131,2.05202 0.0758,0.61854 0.24547,1.26116 0.36365,1.42863 0.17367,0.24608 0.18184,0.21351 0.0779,-0.10383 -0.18815,-0.57477 0.0894,-2.18814 0.36365,-2.10397 0.12688,0.039 0.52031,0.63634 0.85717,1.32474 0.33685,0.6884 0.78288,1.44119 0.98705,1.66239 0.32542,0.35256 0.34016,0.53553 0.15585,1.53253 -0.45641,2.46894 -1.2576,3.17522 -4.4677,3.97417 -1.96794,0.48979 -2.785,0.88284 -3.68845,1.74033 -0.86864,0.82444 -0.98578,1.45095 -1.1429,5.24694 -0.12908,3.1184 -0.147,3.17329 -0.88315,4.64952 -0.89277,1.79034 -0.95557,2.89516 -0.28573,5.01318 0.60975,1.92803 0.5743,3.70223 -0.10382,5.97425 -0.29703,0.99507 -0.75379,2.51163 -1.01303,3.37675 -0.25925,0.86512 -0.66932,3.25177 -0.90912,5.2989 -0.23979,2.04712 -0.5072,4.13706 -0.59742,4.64953 -0.0902,0.51246 -0.40224,2.36379 -0.70133,4.10404 -0.41697,2.42612 -0.77419,3.75753 -1.53252,5.7145 -0.75585,1.95056 -1.02615,2.92895 -1.11693,4.13002 l -0.10383,1.5585 1.01302,0.98706 c 0.56826,0.53922 1.26055,1.10284 1.53253,1.24679 0.58103,0.30753 0.5911,0.31406 0.2078,2.75335 -0.16302,1.037445 -0.5212,4.084627 -0.77925,6.77948 -0.4491,4.689623 -0.45774,5.699946 -0.46755,23.481394 -0.01,17.966483 -0.0489,19.41745 -0.6234,22.494344 -0.10619,0.56859 -0.0442,0.699621 0.41561,0.909126 0.29263,0.133332 0.51949,0.345687 0.51949,0.493524 0,0.147804 0.26266,0.434493 0.57145,0.6234 0.30878,0.188932 0.72925,0.564608 0.96107,0.8312 0.35826,0.412025 0.77773,0.51354 2.67543,0.753275 2.06777,0.261245 2.27974,0.259649 2.98712,-0.07787 l 0.75328,-0.363651 -0.10383,0.753276 c -0.21063,1.317268 0.10447,1.418068 4.10406,1.480574 1.90182,0.02968 3.95612,-0.0092 4.54562,-0.103891 0.89598,-0.144014 1.06496,-0.127914 1.06496,0.129875 0,0.16959 0.1194,0.358996 0.25976,0.415599 0.36223,0.146184 2.60786,0.143507 3.14297,0 0.24665,-0.06616 0.48376,-0.25659 0.51951,-0.441575 0.0553,-0.285309 0.37463,-0.335181 2.10397,-0.337674 1.62712,-0.0017 2.20541,-0.08953 2.85724,-0.415601 0.78897,-0.39467 0.80523,-0.445107 0.80523,-1.428623 0,-0.900331 0.0614,-1.033264 0.46756,-1.090951 0.32287,-0.04588 0.46757,-0.192522 0.46757,-0.519499 0,-0.446413 0.088,-0.470908 2.15587,-0.597425 2.85527,-0.174702 3.3805,-0.489294 2.90921,-1.71435 -0.11837,-0.307801 -1.21953,-11.543827 -2.44164,-24.961968 -2.47499,-27.173629 -2.43909,-27.022229 -3.16893,-30.728419 -0.49476,-2.51251 -0.51576,-2.79364 -0.31172,-5.40281 0.11862,-1.51584 0.20146,-3.53924 0.18183,-4.49367 -0.0317,-1.55048 0.0299,-1.98094 0.72732,-3.89625 1.62459,-4.46108 2.40342,-6.69582 3.11701,-9.16917 0.72248,-2.50624 0.73668,-2.62135 0.7273,-6.1301 -0.0191,-7.01947 -0.26183,-14.00452 -0.54551,-15.71487 -0.32791,-1.97714 -1.32786,-5.54379 -1.79224,-6.44179 -0.40288,-0.77915 -1.47106,-1.37333 -3.50665,-1.92217 -0.89828,-0.24218 -1.94474,-0.64841 -2.33775,-0.90911 -0.78825,-0.52287 -1.98459,-2.31236 -2.1819,-3.29883 -0.12168,-0.60845 -0.0886,-0.65294 0.70133,-0.77926 0.98442,-0.1574 2.07799,-1.01998 2.07799,-1.63641 0,-0.24433 0.19847,-0.79932 0.44158,-1.24679 0.33455,-0.61584 0.4324,-1.15148 0.41559,-2.15593 -0.0122,-0.72986 0.0826,-2.0188 0.20781,-2.88323 0.22366,-1.54343 0.22599,-1.59753 -0.38961,-2.96115 -0.34481,-0.76372 -0.73052,-1.72607 -0.85719,-2.12994 -0.43094,-1.37389 -1.38699,-2.63367 -2.31178,-3.03908 -0.87754,-0.38471 -2.80806,-0.59333 -4.36379,-0.54548 z m -132.21271,11.0134 c 0.0573,0.0206 0.1064,0.10501 0.15585,0.23376 0.0747,0.19476 0.0456,0.44794 -0.0779,0.57146 -0.16332,0.16333 -0.26482,0.12765 -0.36365,-0.12988 -0.0747,-0.19474 -0.0196,-0.44793 0.10383,-0.57145 0.0817,-0.0817 0.12448,-0.12451 0.18182,-0.10383 z m 26.05291,5.24694 c 0.15603,0.031 0.32995,0.15618 0.38964,0.31169 0.0632,0.16483 0.0634,0.33438 -0.0259,0.38963 -0.17831,0.11025 -0.64937,-0.25892 -0.64937,-0.51949 0,-0.14362 0.12969,-0.21295 0.28572,-0.18183 z m -27.32569,0.62341 c 0.19054,0 0.28573,0.17594 0.28573,0.49351 0,0.49567 -0.18998,0.66719 -0.46755,0.38963 -0.25683,-0.25681 -0.1244,-0.88314 0.18182,-0.88314 z m 26.98803,0.052 c 0.13167,-0.0194 0.25973,0.089 0.25973,0.33768 0,0.25076 -0.12231,0.4156 -0.31169,0.4156 -0.19011,0 -0.29881,-0.13622 -0.25976,-0.33768 0.0497,-0.25608 0.18002,-0.39618 0.31172,-0.4156 z m -27.32571,1.37667 c 0.76325,0 1.48857,0.80732 1.40266,1.55851 -0.0814,0.7104 -0.86607,0.93842 -1.06498,0.31169 -0.0678,-0.21334 -0.3527,-0.57691 -0.6234,-0.83119 -0.59821,-0.56199 -0.46576,-1.03901 0.28572,-1.03901 z m 26.80621,0.70133 c 0.15636,-0.0249 0.36365,0.12985 0.36365,0.33768 0,0.10565 -0.0623,0.18182 -0.15587,0.18182 -0.26583,0 -0.45968,-0.24415 -0.33767,-0.44158 0.0326,-0.0527 0.0777,-0.0697 0.12989,-0.0778 z m -0.85719,2.96115 c 0.10566,0 0.24229,0.0956 0.31171,0.2078 0.0695,0.1123 -0.0327,0.2078 -0.2078,0.2078 -0.17505,0 -0.3117,-0.0954 -0.3117,-0.2078 0,-0.11227 0.10211,-0.2078 0.20779,-0.2078 z m 115.23234,26.47228 c 0.30169,-0.0524 0.5236,0.90934 0.88315,3.50663 0.17869,1.29096 1.07517,-9.62683 1.29149,-8.57552 0.52718,2.56209 0.51585,5.13496 -0.0259,6.70155 -0.22938,0.66323 -0.69607,2.26729 -1.03901,3.55857 -0.34292,1.29129 -0.71282,2.42191 -0.80521,2.51958 -0.23926,0.25295 -0.59494,-1.22634 -0.59744,-2.44165 -10e-4,-1.28525 -0.43195,-3.00796 -1.22081,-4.80537 -0.71581,-1.63084 -0.80589,-3.12321 -0.31171,-5.94828 0.35624,-2.03652 1.27417,5.97382 1.66966,5.56241 0.0461,-0.0479 0.11276,-0.0703 0.15584,-0.0778 z m 77.45017,-7.61444 c 0.10286,-0.0899 0.25293,0.41582 0.46755,1.4546 0.25335,1.2259 0.39233,2.82954 0.4156,4.85733 0.0192,1.66474 -0.009,3.06982 -0.0515,3.117 -0.0474,0.0471 -0.34562,-1.18807 -0.64934,-2.72737 -0.45276,-2.2967 -0.53878,-3.11575 -0.44161,-4.62355 0.0838,-1.29942 0.15685,-1.98814 0.25975,-2.07801 z m -61.14516,0.44158 0.38968,1.84423 c 0.29599,1.3724 0.37004,2.26242 0.28568,3.55857 -0.1202,1.84744 -0.83369,5.77611 -1.53249,8.46785 -0.23324,0.89828 -0.4131,2.25067 -0.41559,2.98712 0,0.90784 -0.12061,1.47165 -0.33772,1.74032 -0.29208,0.3615 -0.31162,-0.0393 -0.18179,-4.41575 0.21121,-7.12092 0.22908,-7.36073 0.49349,-8.46784 0.13415,-0.56143 0.32716,-1.7034 0.4156,-2.54555 0.0884,-0.84215 0.32084,-1.91459 0.51949,-2.36372 z m 23.09184,1.29875 c 0.0573,-0.0225 0.11446,0.57605 0.2078,2.078 0.0865,1.40358 0.11787,2.85387 0.0781,3.24688 l -0.0781,0.7273 -0.12991,-0.7273 c -0.27422,-1.37677 -0.37571,-3.56281 -0.2078,-4.67551 0.0598,-0.39651 0.0952,-0.63585 0.12991,-0.64937 z m -60.41788,19.6371 c 0.0456,0.0455 -0.10286,1.04511 -0.31171,2.20787 -0.20884,1.16277 -0.44452,2.16173 -0.51949,2.23385 -0.28173,0.27089 0.0571,-2.95048 0.38962,-3.71442 0.19074,-0.43832 0.39602,-0.77287 0.44158,-0.7273 z m -122.73184,6.80544 c 0.17354,-0.0279 0.33081,0.30557 0.44157,0.96108 0.0771,0.45613 0.10167,0.85941 0.052,0.90912 -0.16582,0.16582 -0.81675,-1.51153 -0.67535,-1.74033 0.0581,-0.094 0.12397,-0.12054 0.18183,-0.12987 z m 121.35517,0.77925 c 0.0265,0.015 0.0333,0.0916 0.0259,0.25975 -0.009,0.22458 -0.0919,0.65439 -0.18182,0.93511 -0.16015,0.50017 -0.16488,0.4963 -0.18183,-0.10383 -0.009,-0.33685 0.0729,-0.76666 0.18183,-0.9351 0.0816,-0.12614 0.12927,-0.17085 0.15585,-0.15585 z m -1.92216,1.27278 c 0.12243,-0.0537 0.13175,0.0679 0.12988,0.44157 -0.003,0.6557 -0.25491,1.17372 -0.46755,0.96108 -0.24852,-0.24851 -0.13233,-1.03803 0.18183,-1.29875 0.0651,-0.054 0.11502,-0.086 0.15584,-0.10383 z m 38.28713,1.5585 c 0.16939,-0.004 0.30755,0.37699 0.64941,1.61046 0.44744,1.61467 0.42458,1.97545 -0.10383,1.16886 -0.51941,-0.7927 -0.9671,-2.43562 -0.7273,-2.67542 0.074,-0.0737 0.12536,-0.10254 0.18179,-0.10383 z m -82.73035,0.026 c 0.37455,-0.0535 0.45694,0.0718 0.57145,0.93509 0.0729,0.54719 0.0714,1.27954 0,1.63643 -0.18214,0.91082 -0.41492,0.81142 -0.80522,-0.36366 -0.43465,-1.30863 -0.34254,-2.1256 0.23377,-2.20786 z m -7.68859,0.33768 c 0.13324,-0.0477 0.23626,0.30977 0.25975,0.9351 0.0173,0.45829 -0.10823,0.88746 -0.3117,1.09094 -0.31011,0.31013 -0.32423,0.24982 -0.2078,-0.77924 0.069,-0.6108 0.1674,-1.14809 0.2078,-1.19486 0.0202,-0.0234 0.033,-0.0452 0.052,-0.052 z m -68.15839,1.11692 c 0.27883,-0.0112 0.39397,0.39728 0.33769,1.16887 -0.0353,0.48375 -0.15566,0.91835 -0.28573,0.96108 -0.53284,0.17504 -0.87795,-1.56882 -0.38963,-1.9741 0.12264,-0.1019 0.24472,-0.15224 0.33767,-0.15585 z m 188.8642,0.15585 c 0.0765,-0.006 0.1664,0.006 0.28568,0.052 0.28983,0.11103 0.32042,0.37475 0.23382,1.58447 -0.0698,0.97506 -0.21887,1.54349 -0.46757,1.81824 -0.58774,0.64949 -0.98878,0.52522 -0.83119,-0.25975 0.0731,-0.36491 0.21503,-1.19124 0.3117,-1.84422 0.14937,-1.01049 0.23748,-1.33112 0.46756,-1.3507 z"
+             style="fill:#ffffff" />
+          <path
+             sodipodi:nodetypes="cssscsssscccscscccsscccccssccscccccsccsccccsssssscscccccscscsccssccssscssccsccssssccsscsscsscsssccccccccscsssscccccssccccsscscccccscsccscsccccscssssccccsscccccccscccsscsccccsccccccccccccccccccscc"
+             inkscape:connector-curvature="0"
+             id="rect4315"
+             d="m 330.16787,-179.01007 c -0.96088,0.001 -1.90267,0.16903 -2.57153,0.49352 -1.11624,0.54152 -2.2676,1.62597 -2.96115,2.80529 -0.65152,1.10787 -1.41328,4.18147 -1.68837,6.77948 -0.121,1.14286 -0.32268,3.00524 -0.44157,4.13003 -0.26786,2.5335 -0.62703,3.76062 -1.40266,4.83135 -0.66352,0.91597 -2.74856,2.47882 -3.97416,2.98712 -0.90257,0.37432 -2.82408,2.29993 -4.13003,4.13002 -0.49228,0.68986 -1.39067,2.33951 -2.00008,3.63649 -0.60943,1.297 -1.80508,3.35957 -2.64945,4.59758 -0.84435,1.23803 -2.19863,3.58715 -3.0131,5.22098 -1.26454,2.53677 -1.48992,3.14566 -1.5585,4.23391 -0.0762,1.20893 -0.0532,1.35756 0.7273,2.51958 2.3156,3.44745 7.92197,9.89274 8.59773,9.89649 0.1816,8.2e-4 0.91438,0.45259 1.63642,1.01302 0.96106,0.74594 1.5185,1.04129 2.05203,1.06496 1.18739,0.0526 1.4106,-0.009 2.25982,-0.57145 0.57936,-0.38338 0.95582,-0.50818 1.32472,-0.41558 0.66104,0.16586 0.65735,0.53503 0,3.06503 -0.371,1.42794 -0.67413,3.77997 -1.11692,8.54578 -0.33602,3.61663 -0.68103,6.80107 -0.75327,7.06521 -0.16972,0.62047 0.17433,0.84918 1.3507,0.85716 0.84342,0.005 2.03306,0.30237 2.57152,0.64937 0.12078,0.0777 0.60477,1.17295 1.09095,2.441651 0.48616,1.2687 1.36191,3.501516 1.92214,4.961234 0.56028,1.459714 1.22898,3.079264 1.48059,3.584549 0.85521,1.717401 1.70413,4.658002 1.84422,6.337899 0.12221,1.465389 0.0844,1.707283 -0.28573,2.207874 -0.77545,1.048829 -1.70021,3.108255 -2.10397,4.675499 -0.56226,2.182119 -0.78284,6.997946 -0.54547,11.974473 0.36583,7.669662 0.39396,7.505176 -1.16887,9.454897 -0.79696,0.994281 -0.8855,1.737157 -0.46757,3.818323 0.1852,0.92191 0.17908,1.949231 -0.0259,4.545624 -0.26322,3.333094 -0.28665,3.347292 0.15585,3.818323 0.77138,0.821093 2.36051,1.519476 3.94819,1.7663 1.81104,0.281578 2.54894,0.154779 2.8053,-0.5195 0.18419,-0.484464 0.20004,-0.483658 0.85718,-0.155849 0.79749,0.397862 4.22808,0.445913 5.11706,0.07787 0.5257,-0.217608 0.57145,-0.315191 0.57145,-1.480575 0,-0.944159 -0.11965,-1.430952 -0.49352,-2.078 -1.10998,-1.921068 -1.71174,-4.341555 -1.50655,-6.052173 0.0463,-0.385819 -0.046,-0.527878 -0.44157,-0.6234 -0.46,-0.111055 -0.51642,-0.228679 -0.57145,-1.272774 -0.0512,-0.971615 0.13873,-1.833303 1.2468,-5.220973 1.91258,-5.847391 2.87348,-9.098863 3.79235,-12.909573 0.88324,-3.662887 1.11468,-5.278747 1.42862,-9.792572 0.32824,-4.719288 0.59549,-6.424352 1.55851,-9.974397 1.08599,-4.003296 1.87602,-7.463948 2.05202,-8.96137 0.11726,-0.99771 0.21346,-1.15492 0.9351,-1.61046 0.43698,-0.27585 0.88154,-0.73553 0.98704,-1.01302 0.16662,-0.43821 1.85176,-1.71436 2.25983,-1.71436 0.08,0 0.50794,0.86891 0.93511,1.94813 0.58457,1.477 0.92352,2.10835 1.42861,2.49361 l 0.67536,0.49353 0,2.441637 0,2.415677 0.67534,0 c 0.59777,0 3.00673,0.395045 3.16895,0.5195 0.29946,0.229757 0.92425,6.14455 1.16888,11.117298 0.28277,5.749069 0.60507,9.104101 1.22083,12.467997 0.47948,2.619584 1.93532,9.380962 2.46762,11.480947 0.27931,1.101872 0.64601,2.943619 0.80523,4.078074 0.25189,1.794536 0.23319,2.248504 -0.0259,3.48065 -0.37537,1.784519 -1.29437,4.117705 -2.1819,5.506697 -0.76297,1.194069 -1.37667,2.782566 -1.37667,3.610525 0,0.590501 0.42344,1.084508 1.22082,1.40265 0.27841,0.111077 0.76619,0.226293 1.06498,0.233775 0.86314,0.02061 2.96659,-0.734516 3.74039,-1.324725 1.09304,-0.83371 1.38605,-1.566554 1.53253,-4.026124 0.12672,-2.127914 0.14969,-2.215638 0.9351,-3.324799 1.51218,-2.13551 1.45639,-1.758553 0.4156,-4.389774 -1.87214,-4.733143 -2.26368,-7.123881 -2.1819,-13.065422 0.0701,-5.095938 0.0799,-9.477909 0,-17.714945 -0.0335,-3.452788 -0.01,-6.809181 0.0778,-7.454823 l 0.15585,-1.168875 3.68845,0 c 3.60924,0 3.66187,0.01514 3.8443,0.467549 0.1019,0.252644 0.50159,1.657285 0.90912,3.117 0.79711,2.854956 2.47129,6.952224 3.89626,9.584772 0.48623,0.898287 1.53043,3.112703 2.31178,4.909274 0.78133,1.796572 2.61637,5.747829 4.07807,8.779547 1.46166,3.03171 2.89056,6.101564 3.19492,6.831424 0.72317,1.73414 0.8893,3.821649 0.44157,5.974249 -0.36908,1.774586 -0.33794,1.890522 0.83121,3.324799 0.52986,0.650048 0.67534,1.03136 0.67534,1.688374 0,0.465663 0.0765,0.857175 0.18184,0.857175 0.10543,0 0.2671,0.427718 0.33766,0.961075 0.26147,1.977233 0.5223,3.121429 0.85718,3.5326 0.3472,0.426297 4.31746,2.026048 5.01317,2.026048 0.20641,0 0.62979,-0.140372 0.96109,-0.3117 0.9785,-0.506 0.84419,-1.27186 -0.90913,-4.883298 -1.60175,-3.299215 -3.16896,-7.986874 -3.16896,-9.454897 0,-0.436589 -0.24488,-1.524213 -0.5195,-2.44165 -0.59091,-1.974208 -1.61756,-6.707575 -2.75335,-12.545923 -1.10323,-5.671223 -1.78431,-7.84416 -3.61052,-11.584847 -2.22164,-4.550654 -2.69717,-6.062009 -2.85725,-9.039297 -0.1265,-2.352385 -0.12582,-2.437918 0.28572,-2.545548 0.23437,-0.06129 0.47873,-0.241718 0.54547,-0.415604 0.0668,-0.173895 -0.20501,-1.5477 -0.62339,-3.065048 l -0.77925,-2.779324 0.5195,-0.3117 c 0.27523,-0.17216 0.91557,-0.74194 1.42862,-1.27277 0.90082,-0.93197 0.94855,-1.03799 1.27277,-3.0131 0.29572,-1.8013 0.29964,-2.22769 0.052,-3.63651 -0.18309,-1.04132 -0.29657,-3.38259 -0.31169,-6.70155 -0.0128,-2.80427 -0.10745,-7.35327 -0.20781,-10.10427 -0.16069,-4.40736 -0.26518,-5.46548 -0.90913,-8.88345 -0.9329,-4.95177 -1.36603,-8.83769 -1.37667,-12.44202 -0.009,-3.04616 -0.40663,-6.49816 -0.90912,-7.92237 -0.61495,-1.74297 -1.81863,-2.40439 -4.80538,-2.70139 -1.79604,-0.17861 -1.85541,-0.25559 -1.74032,-1.45462 0.16162,-1.68406 0.55221,-4.60551 0.80523,-6.00021 0.13238,-0.72985 0.22794,-2.80101 0.23377,-4.59757 l 0.0259,-3.24688 -0.67534,-1.3507 c -1.66849,-3.34714 -2.89089,-4.20788 -5.58462,-4.00015 -2.26167,0.1744 -2.84917,0.52193 -4.156,2.46762 -2.02767,3.01892 -2.89623,5.56388 -3.66248,10.62377 l -0.54548,3.48066 -0.98704,0.9351 c -0.58437,0.55737 -1.10566,1.27155 -1.27278,1.7663 -0.23643,0.69988 -0.54709,1.04805 -2.00007,2.05202 -2.77825,1.9197 -2.89905,2.2994 -3.27285,10.54584 -0.23666,5.22038 -0.6631,9.65044 -0.96108,9.94843 -0.0918,0.0918 -0.85028,0.41039 -1.68837,0.70133 -1.50077,0.52098 -3.20909,1.44847 -3.68845,2.02604 -0.13466,0.16227 -0.57975,0.28634 -0.98705,0.28572 -0.60709,-8.2e-4 -0.808,-0.10017 -1.09095,-0.59742 -0.22938,-0.4047 -0.31099,-0.84862 -0.23378,-1.32472 0.0737,-0.4538 0.003,-0.95767 -0.20779,-1.40264 -0.53769,-1.1331 -0.44834,-5.01059 0.18183,-8.05226 0.72276,-3.48867 0.61034,-6.40073 -0.31172,-8.2081 -0.54068,-1.05984 -1.1388,-1.48537 -3.06504,-2.15593 -1.35771,-0.47263 -1.71019,-0.68306 -1.97409,-1.19484 -0.1766,-0.34245 -0.63694,-1.03916 -1.01303,-1.53253 -0.7594,-0.99617 -0.81476,-1.46592 -0.36365,-2.54555 0.20503,-0.49069 0.28573,-1.42585 0.28573,-2.83127 -6e-4,-1.83949 -0.13563,-2.66678 -1.11694,-6.75349 -1.47823,-6.15618 -1.91604,-6.96366 -4.49367,-8.13018 -0.71164,-0.32203 -1.68857,-0.49522 -2.64944,-0.49353 z m -13.35115,36.0273 c 0.42516,-0.0125 0.87574,0.25133 1.40266,0.80523 0.7745,0.81417 1.24599,2.11591 1.53252,4.20794 0.0764,0.55788 0.4521,2.01179 0.8312,3.22091 0.3791,1.20912 0.78865,2.97867 0.90913,3.9482 0.21566,1.73548 0.11159,3.55858 -0.20781,3.55858 -0.0898,0 -0.70476,0.45158 -1.37668,1.01302 -0.73076,0.61061 -1.42693,1.01884 -1.71435,1.01303 -0.31323,-0.006 -0.80509,-0.37259 -1.42861,-1.06499 -0.52608,-0.58416 -1.51427,-1.65983 -2.18192,-2.38969 -0.66762,-0.72985 -1.45629,-1.82407 -1.76629,-2.44165 -0.31001,-0.61757 -0.77421,-1.41883 -1.03899,-1.76629 -0.26478,-0.34746 -0.49353,-0.77067 -0.49353,-0.93511 0,-0.16444 -0.12086,-0.48336 -0.28573,-0.70132 -0.16486,-0.21796 -0.30754,-0.574 -0.31169,-0.80523 -0.0119,-0.7714 1.84778,-3.72113 3.03907,-4.83136 0.62865,-0.58585 1.44387,-1.4709 1.81825,-1.94812 0.45723,-0.58285 0.84761,-0.87063 1.27277,-0.88315 z m 59.97626,3.84431 c 0.0451,0.0165 0.0811,0.0632 0.12987,0.12987 0.43808,0.5991 1.08201,3.33301 1.40266,5.94828 0.1652,1.34742 0.48721,3.32305 0.7273,4.38977 1.2961,5.75903 2.27797,10.94102 2.3897,12.6758 0.11767,1.8276 0.0874,2.04438 -0.41561,3.14297 -0.29664,0.64798 -0.51949,1.39525 -0.51949,1.6624 0,1.33011 -0.47745,0.003 -1.71435,-4.80537 -1.35114,-5.25249 -1.3692,-5.28179 -1.37668,-8.1042 -0.006,-2.75296 -0.19401,-4.24282 -0.9351,-7.42885 -0.63222,-2.71793 -0.36502,-7.85863 0.3117,-7.61067 z m -25.66329,9.53282 c 0.0674,-0.009 0.0904,-0.0134 0.10382,0 0.0539,0.054 -0.0303,1.69252 -0.2078,3.6365 -0.38882,4.25688 -0.75327,10.5586 -0.75327,13.27321 0,1.08826 -0.0862,2.42018 -0.20781,2.98713 -0.12157,0.56697 -0.28875,1.04099 -0.36365,1.03901 -0.28236,-0.008 -5.58188,-12.42404 -6.05216,-14.18236 -0.27026,-1.01056 -0.68472,-2.36247 -0.93511,-3.01309 -0.57893,-1.50419 -0.4064,-1.78742 0.93511,-1.42863 1.9514,0.52194 3.45968,0.15629 4.2599,-1.06497 0.18262,-0.27874 0.50739,-0.51945 0.70131,-0.5195 0.19391,-6e-5 0.82525,-0.18627 1.42863,-0.41561 0.45255,-0.17198 0.88866,-0.28331 1.09095,-0.31169 z m 31.04012,21.55925 c 0.24644,-0.0209 0.48061,0.63775 0.54547,1.92214 0.0705,1.39759 0.0191,1.57645 -0.5195,2.33775 -0.32073,0.45324 -0.68011,0.82879 -0.80523,0.8312 -0.39328,0.007 -0.53525,-1.8243 -0.18183,-2.36372 0.17094,-0.26085 0.37401,-0.88339 0.44159,-1.37669 0.12381,-0.90337 0.32783,-1.33441 0.5195,-1.35068 z m -30.31282,2.07799 c 0.18993,-0.0627 0.25976,0.33907 0.25976,1.55851 0,1.50951 -0.25373,2.30307 -0.51951,1.61045 -0.21131,-0.55065 -0.005,-3.08133 0.25975,-3.16896 z"
+             style="fill:#ffffff;fill-opacity:1;stroke:none" />
+          <path
+             style="fill:#ffffff"
+             d="m 694.30966,-128.78171 c -0.004,0.65199 0.0594,3.1705 0.15586,5.58463 0.16728,4.18989 0.21166,4.46628 0.83119,6.20802 0.83469,2.34662 0.8302,2.58545 -0.10382,3.19493 -0.7495,0.48901 -0.74613,0.50895 -0.80523,2.02605 -0.0329,0.84214 0.0352,2.27065 0.15584,3.16894 0.12069,0.8983 0.2755,2.01537 0.33768,2.4936 0.0901,0.69312 -0.0349,1.18191 -0.57144,2.44165 13.64895,-0.48516 1.76803,-8.15738 -8e-5,-25.11782 z m 24.39061,-49.7422 c 0.72417,0.044 1.19248,0.17556 1.68837,0.4156 1.0503,0.50844 2.75179,2.33722 3.40272,3.6365 0.82397,1.64471 0.82974,2.19523 0.0259,4.59758 -0.60829,1.8181 -0.70514,2.35625 -0.59743,3.27285 0.15202,1.29342 -0.12461,2.32331 -0.83119,2.98712 -0.27747,0.26066 -0.51951,0.67732 -0.51951,0.93509 0,0.28404 -0.22625,0.63472 -0.59742,0.90914 -0.79068,0.5846 -0.80395,1.28977 -0.0259,2.36372 0.96457,1.33157 1.78308,1.78391 4.6755,2.5975 0.9785,0.27523 2.74451,0.91728 3.92222,1.42862 1.17773,0.51136 2.29009,0.9351 2.4936,0.9351 0.23856,0 0.48343,0.28568 0.67535,0.77925 0.16374,0.42108 0.52855,1.1719 0.80523,1.68838 0.33936,0.63353 0.55965,1.52748 0.70133,2.75335 1.39141,11.58593 4.95105,45.08552 1.03888,50.287583 l -1.19486,1.55851 0.18183,2.33775 c 0.20686,2.81462 0.71055,7.67901 1.11693,10.62378 0.25721,1.86206 0.27952,2.29749 0.0259,3.27284 -0.16054,0.61757 -0.71596,2.99704 -1.22083,5.2989 l -0.90912,4.18198 -0.12988,6.026187 c -0.20113,9.55104 -0.73059,15.57099 -1.45461,16.67595 -0.29164,0.44512 -0.28497,0.53429 0.12989,1.11693 0.62662,0.87997 2.084,1.73281 3.76637,2.23384 1.6798,0.50027 2.03486,0.75396 2.57153,1.63643 0.53693,0.88292 0.29893,1.08207 -1.76631,1.50655 -1.66104,0.34139 -6.00563,0.45252 -6.88337,0.18182 -0.25198,-0.0777 -0.8871,-0.42993 -1.40264,-0.80522 -0.92587,-0.67398 -0.93849,-0.68263 -2.12995,-0.46755 -0.91662,0.16544 -1.61618,0.15714 -2.85725,-0.052 l -1.63643,-0.28573 -0.12988,-1.22082 c -0.072,-0.67371 -0.12139,-2.2455 -0.12987,-3.48065 -0.0172,-2.48067 0.24012,-3.5296 1.29875,-5.2989 0.55784,-0.93231 0.62748,-1.27384 0.85717,-4.07807 0.13797,-1.68429 0.33658,-4.78012 0.44158,-6.8574 0.10501,-2.077287 0.38913,-5.264537 0.62339,-7.091167 0.49682,-3.87382 0.50328,-5.17166 0.10383,-6.98728 -0.16055,-0.72985 -0.28157,-1.67733 -0.28572,-2.10397 -0.004,-0.42665 -0.14097,-1.0465 -0.3117,-1.37668 -0.17076,-0.33018 -0.50265,-1.47969 -0.7273,-2.57152 -0.46975,-2.28297 -0.91775,-3.88574 -2.05203,-7.32495 -0.84988,-2.57687 -2.52895,-5.93866 -2.70139,-5.4028 -0.0542,0.16844 -0.14654,1.35817 -0.2078,2.64946 -0.11331,2.38833 -0.71525,6.32772 -1.2468,8.23407 -0.45005,1.61403 -0.56054,11.33941 -0.15585,13.50699 0.1912,1.02421 0.32283,3.27367 0.36365,6.0262 l 0.0778,4.389767 1.1429,2.85725 1.16888,2.85725 0.15585,3.16895 c 0.14286,2.72238 0.11511,3.20724 -0.15585,3.50663 -0.28464,0.3145 -0.25937,0.4838 0.12987,1.63642 0.6052,1.79203 0.56191,2.21071 -0.28572,2.96115 -0.56432,0.49961 -0.7273,0.80274 -0.7273,1.37667 0,0.601 -0.0909,0.77709 -0.59742,1.039 -0.41714,0.21571 -0.6234,0.45223 -0.6234,0.77925 0,0.60463 -0.41261,0.96319 -1.37669,1.16888 -0.41518,0.0884 -1.7643,0.1273 -2.98711,0.0779 -3.2834,-0.1325 -4.32466,-0.76708 -3.42871,-2.078 0.21462,-0.31401 0.66107,-0.96089 0.98706,-1.4546 0.32596,-0.49371 0.65418,-1.01096 0.75327,-1.1429 0.11653,-0.15516 0.0121,-0.42947 -0.31171,-0.75328 -0.62271,-0.62271 -1.77702,-2.56623 -2.38969,-4.0521 -0.90915,-2.20479 -1.27149,-8.72965 -1.2468,-22.286537 0.0157,-8.58696 -0.0166,-10.32323 -0.36365,-13.27322 -0.21956,-1.86656 -0.50752,-3.54987 -0.62341,-3.76637 -0.36527,-0.68256 -1.2064,-3.98667 -1.55849,-6.10413 -0.18627,-1.12027 -0.36069,-2.04908 -0.38963,-2.07801 -0.0289,-0.0289 -0.77171,-0.18837 -1.66239,-0.36365 -0.89068,-0.17526 -1.84721,-0.41285 -2.10399,-0.5195 -0.59813,-0.24845 -1.86769,-2.885883 -1.87019,-3.870283 -8.3e-4,-0.39615 -0.0603,-1.1883 -0.12987,-1.7663 -0.10114,-0.84169 -0.2354,-1.09596 -0.62341,-1.27278 -0.26643,-0.12138 -0.46754,-0.39248 -0.46754,-0.59742 0,-0.20492 -0.24383,-0.82126 -0.5195,-1.37668 -0.44954,-0.90569 -0.49764,-1.33151 -0.57145,-4.07807 -0.0453,-1.68428 -0.24847,-4.94516 -0.44159,-7.24702 -0.34854,-4.15491 -0.32565,-5.55084 0.10383,-10.31207 0.11136,-1.23514 0.2851,-3.5191 0.38961,-5.0911 0.10458,-1.57199 0.27539,-3.54763 0.38964,-4.38978 0.11426,-0.84213 0.22879,-2.70385 0.23377,-4.13002 0.004,-1.51809 0.12058,-3.05511 0.28572,-3.68845 0.58966,-2.26135 1.16541,-4.0155 1.3507,-4.13003 0.10576,-0.0654 0.29199,-0.4668 0.4156,-0.88314 0.21528,-0.72506 0.37539,-0.83144 3.6365,-2.44164 1.87252,-0.92457 4.02365,-1.96 4.7794,-2.31178 0.83475,-0.38857 1.68337,-0.9917 2.18191,-1.53254 l 0.83119,-0.88315 0,0.85718 c 0,0.48217 0.0951,1.38996 0.2078,2.00008 0.50949,2.75851 4.33461,16.54428 4.55767,22.45503 0.28592,7.57619 1.57927,10.02738 6.65555,11.20914 17.16957,3.9971 -11.29342,1.53033 -11.34309,1.58389 0.60856,0.60857 9.08194,1.33902 11.429,0.98706 1.13405,-0.17007 -2.83272,2.00018 -3.50779,-2.12938 -0.77755,-4.75631 1.5965,-4.5816 1.39597,-15.54334 -0.10275,-5.61428 1.12724,-15.50318 1.02087,-16.12076 -0.1063,-0.61755 -0.19949,-1.90129 -0.20781,-2.83127 -0.009,-1.024 -0.12238,-1.96256 -0.31169,-2.41567 l -0.31171,-0.75327 -1.71434,1.71435 c -1.59982,1.59149 -1.88895,2.02604 -1.27278,2.02604 0.13571,0 0.58358,0.25367 1.01303,0.54548 l 0.77924,0.5195 -0.54548,0.59742 c -0.68189,0.71177 -0.7475,1.53281 -0.15584,2.36373 0.59333,0.83329 1.834,6.4574 2.20788,10.0783 0.39295,3.80577 1.11691,12.90959 1.11691,13.97454 0,0.73853 -0.1387,0.98652 -1.48056,2.44166 l -1.50656,1.63642 -1.71435,-1.3507 -1.71436,-1.32473 -0.18181,-6.20802 c -0.089,-3.42012 -0.10158,-8.4702 -0.052,-11.22119 0.0777,-4.29976 0.15095,-5.19763 0.5195,-6.46778 0.6212,-2.14089 0.55757,-2.58072 -0.4156,-3.63651 -0.87005,-0.94388 -0.86901,-0.93735 0.10383,-1.61044 0.37865,-0.26196 0.35103,-0.30428 -0.54547,-0.85718 -0.52081,-0.32118 -1.45249,-0.91186 -2.078,-1.29875 -0.87345,-0.54022 -1.1429,-0.81522 -1.1429,-1.19484 0,-0.39609 -0.0838,-0.47639 -0.4156,-0.38964 l -0.4156,0.10383 0.4156,-0.67537 c 0.56599,-0.91577 0.54697,-1.75069 -0.0779,-2.33774 -0.34413,-0.32327 -0.48982,-0.61332 -0.41559,-0.90911 0.0711,-0.28322 -0.14133,-0.87031 -0.6234,-1.66241 -0.69553,-1.14276 -0.7379,-1.2917 -0.6234,-2.44165 0.15954,-1.6001 0.15707,-1.62058 0,-3.16896 -0.11047,-1.08874 -0.0512,-1.53254 0.31169,-2.49359 1.3114,-3.47296 3.97954,-5.24695 7.84446,-5.24695 0.30891,0 0.5898,-0.0146 0.83119,0 z m -14.18235,72.15854 -0.5195,0.6234 c -0.57916,0.70654 -0.62175,1.27927 -0.18183,2.12995 0.51762,1.00098 0.7088,0.72183 0.70133,-1.06498 z m 28.80626,1.32472 c -0.30131,0 -0.27869,2.91624 0.0259,3.2209 0.45266,0.45265 0.57145,0.25705 0.57145,-0.96108 0,-1.28603 -0.25163,-2.25982 -0.59742,-2.25982 z"
+             id="path5251"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="ccsccccccccscccsccssscccccccccccccscssscccccsssscccsssssccccccscsscscccccscsccsccccccsccccccccccscccscsscssscccccsccccssccccccsccccsccccccccsscccccccccscc" />
+        </g>
+        <g
+           transform="matrix(0.89521731,0,0,0.89521731,62.685747,-20.151368)"
+           id="g5253"
+           inkscape:export-filename="/var/www/opportunity-fr.png"
+           inkscape:export-xdpi="15.306176"
+           inkscape:export-ydpi="15.306176"
+           style="fill:#15741e;fill-opacity:1">
+          <path
+             inkscape:connector-curvature="0"
+             id="path5255"
+             d="m 532.59375,-185.34375 c -8.77929,0.34138 -12.87412,10.23265 -12.28125,17.84375 -4.6771,4.29249 -13.34944,4.17595 -15.59375,11.125 -2.88306,-2.42651 1.5554,-5.05677 1.15625,-8.03125 2.04975,-8.01388 -1.91629,-17.33268 -10.28125,-19.5 -7.05983,-3.3212 -16.16826,0.51516 -18.0625,8.25 -1.62621,4.59003 -1.89771,9.77687 -4.75,13.59375 0.84164,2.91761 -2.56707,5.22662 -4.28125,2.46875 -1.80348,-1.63601 -6.46994,-1.28709 -6.78125,-3.5 5.04724,-9.59943 -2.65993,-23.84772 -14.125,-21.96875 -8.6057,0.54727 -13.97565,11.08419 -10.125,18.5 0.31892,2.27196 1.41043,4.57022 -1.90625,4.5625 -2.55535,0.16772 -4.8277,3.50357 -6.90625,3.09375 -1.52624,-1.21359 -5.58836,-1.35982 -3.375,-3.96875 3.92568,-8.37727 -0.0931,-21.59637 -10.59375,-21.96875 -7.15582,-1.64816 -15.3064,3.20068 -15.0625,11 -0.78415,3.1427 1.42931,8.0627 -0.46875,10.1875 -6.57123,0.69523 -13.38987,4.84742 -13.84375,12.125 -4.26975,12.07334 -8.07158,25.748 -2.75,38.09375 1.06439,4.64035 6.25118,7.63766 4.46875,12.84375 -1.93555,10.420909 0.0656,20.9833 -2.875,31.21875 -2.05734,6.425811 0.6705,14.980541 -4.65625,19.96875 -7.34972,2.33103 -4.05637,14.359705 3.28125,13.625 6.08377,0.13068 12.69959,-1.472903 17.5625,-4.875 2.28714,-2.789754 2.80704,-6.507138 3.375,-9.96875 -0.09,4.764178 0.1196,12.222469 6.5625,12.375 5.64067,1.694015 12.13105,3.595283 17.59375,0.9375 5.9017,2.342413 12.17319,-1.593185 17.9375,-0.6875 5.65444,4.727545 17.88113,1.814354 17.0625,-6.65625 -2.51385,-2.58658 0.84063,-4.633909 0.82632,-7.566329 3.38988,-13.594728 -1.77325,-28.614378 3.51743,-41.652421 2.34356,-1.203892 3.51081,-3.736892 6.15625,-1.6875 4.30996,0.12722 1.33339,6.023556 2.53125,8.875 0.2522,3.840451 3.09871,8.525639 6.84375,8.4375 0.19051,9.859387 0.0955,20.683083 -6.9375,28.40625 -3.3759,4.393618 -2.98634,12.460291 3.46875,13.59375 7.40124,1.941475 15.36249,-3.477443 16.34375,-11.03125 1.76147,-4.146495 1.56395,-8.921012 2.75,-13.21875 3.19866,4.988465 2.29568,11.026766 2.6875,16.4375 1.77126,4.547809 7.26991,6.153102 11.65625,5.28125 4.63196,4.60727 13.04852,2.629005 16.25,-2.21875 3.8317,0.1801 7.0235,1.83825 10.21875,3.625 3.40364,1.516106 7.68544,0.20994 10.46875,-0.875 4.61654,4.356586 12.32929,2.306509 16.8125,-1.21875 7.73441,5.64273 18.52245,-1.868788 18.96875,-10.5625 2.38924,-4.288652 0.50328,-9.473456 -1.78125,-13.15625 0.27288,-2.414424 -1.49174,-6.963851 -0.1875,-8.40625 1.96316,4.595234 5.66819,8.897688 7.4375,13.8125 0.80512,4.579412 -5.53184,6.741111 -4.375,11.71875 -0.0939,4.377963 3.77907,6.803724 7.53125,7.5 6.66123,6.596349 18.60368,0.65909 19.25,-8.15625 -0.13675,-6.869067 -0.71677,-13.889166 1.71875,-20.40625 0.44299,-2.924036 0.27078,-6.134284 3.96875,-5.6875 5.642,-0.759645 11.45196,-6.10966 8.76773,-12.16015 -3.04734,-11.572372 -6.88765,-23.51936 -4.29898,-35.5586 -0.0376,-11.24765 -0.69804,-22.64728 -2.03125,-33.75 -1.68333,-3.15638 -4.68512,-5.45699 -4.71875,-9.3125 -1.7439,-2.34813 -0.62401,-5.38848 -1.09375,-7.4375 -4.22513,-6.14396 -8.88777,-15.62137 -17.90625,-13.6875 -9.05572,1.94403 -13.68324,12.824 -12.5,21.15625 1.80061,2.0134 -1.19711,2.01271 -2,3.375 -3.63545,-5.68368 -4.3909,-12.41699 -7.5,-18.21875 -3.45541,-6.45728 -12.43353,-8.96578 -18.1875,-4.03125 -6.9863,4.60749 -8.15041,13.49065 -7.84375,21.125 -1.34332,-2.13198 -5.31145,-2.22402 -6.21875,-3.4375 6.03079,-8.21775 -0.22039,-21.7051 -10.875,-20.59375 z m 15.375,67.1875 c -0.21793,5.36679 -1.29611,-1.00081 0,0 z m -0.5,16.6875 c 0.99947,3.068511 5.25805,3.180079 4.34375,6.84375 0.0341,3.154813 3.50319,4.519123 4.53125,6.53125 1.69188,12.459017 0.50495,25.930847 -5.1875,37.0625 -1.45006,3.228308 -4.34543,-0.998925 -5.75,-2.71875 0.76789,-15.662004 1.41091,-32.403783 2.0625,-47.71875 z M 507.8125,-84.625 c -0.89458,-2.344042 0.68876,-4.668206 0,-0.25 l 0,0.25 z m -81.59375,9.53125 c 0.99057,7.689763 1.57496,16.151348 1.5,23.625 -2.46949,2.715938 -2.65473,0.09685 -2.5,-2.21875 0.31146,-7.522753 -0.0706,-15.081421 0.78125,-22.5625 l 0.18589,0.98257 0.0329,0.17368 z"
+             style="fill:#15741e;fill-opacity:1" />
+          <path
+             inkscape:connector-curvature="0"
+             id="path5257"
+             d="m 833.15625,-185.46875 c -10.61894,0.40275 -14.89569,15.07614 -8.96875,22.5625 -3.24215,1.28524 -6.92188,4.95178 -9.78125,1.46875 -2.41831,-1.11304 0.93428,-4.55793 0.1875,-6.78125 1.23862,-8.6378 -5.69956,-18.35375 -14.96875,-16.6875 -9.65098,1.54101 -14.26503,12.624 -11.75,21.3125 0.22039,4.20964 -5.31158,5.18158 -5.25,9.5625 -0.58979,2.91585 -0.17165,8.08543 -1.71875,9.65625 -1.68982,-7.56301 -3.94554,-17.6944 -12.9375,-19.28125 -2.5296,-0.26742 -3.09796,-1.43454 -1.9375,-3.46875 1.94453,-7.13696 -1.2388,-17.12267 -9.75,-17.5 -6.84541,-1.05453 -13.40518,4.16091 -13.96875,10.96875 -1.67042,3.31738 0.10001,7.15847 0.5625,10.09375 -2.81521,2.71248 -7.29818,3.04541 -9.6875,6.34375 -2.97787,-0.56465 -5.4068,-2.62289 -4.55124,-5.33645 2.86452,-10.67287 -2.33601,-22.34 -14.28449,-21.11698 -4.11878,0.67761 -9.43905,5.80348 -9.90096,12.24152 -0.46191,6.43804 3.5356,12.69221 -3.98936,13.63167 -1.36299,-11.68141 -9.46077,-27.25537 -19.77395,-27.32601 -11.33673,-0.70988 -19.13253,11.04989 -20.28125,21.1875 -0.60236,1.86195 0.51187,5.82734 -2.3125,2.78125 -2.51385,-7.6527 -1.69607,-18.78773 -10.25,-23.125 -9.42765,-4.31113 -20.35282,4.71883 -19.41578,14.68667 -0.0223,4.86549 -2.44515,8.85589 -6.05297,11.87583 -3.12087,5.55741 -1.47113,12.61847 -3.96875,18.46875 -5.59886,0.31103 -14.16856,0.57713 -15.125,7.71875 0.82211,3.01153 -2.89213,6.44808 0.0937,9.25 3.65154,3.95631 9.63191,3.32373 14.40625,2.28125 -2.22738,8.09428 -1.18932,16.7043 -3.0625,24.90625 -0.32345,3.635201 2.88767,6.237428 1.03125,10.03125 -2.10421,8.031181 -2.27542,16.285112 -2.625,24.4375 -0.56876,6.788229 -8.07444,12.193792 -4.90625,19.40625 2.56811,7.61351 13.33216,5.484169 16.65625,-0.34375 1.93361,-3.879155 4.07356,-7.773207 4.75,-12.125 -0.75133,7.078916 5.95438,15.597458 13.4375,12.4375 5.85887,-2.907229 6.38159,-10.612447 4.125,-15.96875 -0.29678,-9.474809 6.14667,-18.298182 5.15625,-27.59375 5.60409,0.519658 7.42295,-6.553482 7.09375,-10.5 1.88104,2.104928 6.18731,0.449158 5.53125,4.3125 2.79181,10.929887 3.94412,22.338056 1.6875,33.375 -1.03579,5.478115 -2.43531,14.069828 4.3125,16.5 2.32963,0.339604 4.40698,0.07138 5.03125,2.65625 5.64661,5.721517 18.51708,0.245373 15.59375,-8.28125 -0.85766,-1.772151 2.64551,-3.326408 1.15625,-5.625 0.11806,-9.899465 -4.33761,-19.931722 -0.0312,-29.5 1.38897,-3.888736 1.07148,-9.658634 3.40625,-12.4375 2.02077,-0.169637 4.37291,-1.154266 3.6875,1.96875 -0.17808,5.672303 -0.67464,13.216056 5.21875,16.25 1.81839,5.920523 4.90703,11.779156 5.15625,18.0625 -1.74757,6.142937 -0.31578,15.269741 7.21875,16.28125 3.44683,-0.23683 4.16971,4.662246 7.8125,5.0625 5.73576,2.496401 12.71026,-2.6192 11.21875,-8.96875 -0.90926,-6.747706 -4.04607,-13.398765 -1.1875,-20.09375 1.05599,-6.180856 0.13483,-12.589253 1.875,-18.5625 0.15232,-1.170623 -0.33317,-6.191482 0.78125,-2.53125 1.73618,11.44115 1.43117,23.289343 2.65625,34.78125 -5.09982,3.776218 -4.73467,14.03616 2.625,14.6875 6.598,0.51367 14.76432,-0.409347 18.96875,-5.84375 0.30979,-3.006652 0.98684,-2.209415 1.875,-0.03125 2.95642,6.381185 11.18803,7.410609 17.59375,7.5 2.44417,0.233694 4.2279,-1.504395 6.09375,-2.09375 5.16354,3.094145 11.24046,1.085349 16.90625,1.9375 4.44267,-0.04883 8.44656,-1.87574 11.53125,-5.0625 1.96998,0.08617 4.01045,-3.140374 4.25,0.03125 4.39233,7.76227 15.81734,4.940145 21.15625,-0.3125 1.75273,-2.494218 3.5559,2.524215 5.9375,2.84375 5.64937,2.825579 15.4035,4.61774 18.65625,-2.5 3.33745,6.80815 12.80008,6.259908 18.1875,2.46875 6.73433,-1.266976 4.59326,-9.541461 6.65625,-14.25 0.76482,-5.064531 -4.84837,-8.744641 -3.21875,-13.8125 -0.0473,-4.961968 -0.54835,-9.951769 -2.15625,-14.625 5.10014,-3.112838 8.99189,-8.854383 6.86489,-15.02208 -1.47966,-4.10586 4.08563,-5.80673 3.54136,-10.00917 0.19405,-4.55648 -0.40614,-9.51624 2.15625,-13.4375 0.81273,-8.93789 -0.64178,-17.96039 -0.40625,-26.9375 -0.25603,-6.10652 -1.83158,-14.39498 -8.3125,-16.25 -0.88706,-8.12947 -3.12762,-20.15069 -12.78125,-22.375 -9.21749,-1.67593 -16.49045,6.84222 -17.9375,15.1875 -1.31605,4.06103 0.85707,8.50712 0.25,12.375 -1.94216,3.0417 -2.66986,-2.80991 -5.34375,-3.25 -2.33896,-1.72381 -7.7667,-0.91909 -8.25,-4.28125 3.06172,-4.87659 0.63971,-11.48983 -2.09375,-15.9375 -2.48931,-2.89422 -6.31504,-4.69482 -10.15625,-4.40625 z m -50.84375,47.71875 0,-0.125 z m 0.9375,2.25 -0.71875,-0.0625 z m -0.0625,0.75 -0.625,-0.0937 z m -0.1875,1.125 -0.375,-0.0937 z m -0.0937,0.40625 -0.28125,-0.0937 z m -4.8125,23.40625 c 1.84097,-0.21407 1.2601,-0.14652 0,0 z m -0.4375,0.15625 -0.0625,0.0312 z m -0.0312,0.0937 c 0.21679,-0.24074 0.94864,-0.42562 0,0 z m 40.625,16.34375 c 1.5133,1.822095 0.13519,6.527325 1.07857,9.238178 0.38295,9.539639 2.19695,19.481004 2.73393,28.699322 -1.17272,1.248389 -0.66055,-6.399583 -1.25575,-7.995037 -0.8439,-9.886692 -2.27801,-20.457494 -2.55675,-29.942463 z m 40.875,8.53125 c 2.91407,1.322047 4.94373,2.727283 4.65625,6.28125 1.46209,8.899393 6.4935,18.869516 2.78125,27.59375 -0.859,0.760572 -1.55409,3.918078 -1.375,1.21875 0.87815,-7.831174 -3.84608,-15.062087 -4.42825,-22.803951 -0.67176,-3.942175 -1.76816,-9.118313 -1.63425,-12.289799 z"
+             style="fill:#15741e;fill-opacity:1"
+             sodipodi:nodetypes="ccccccccccccccccsccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
+          <path
+             inkscape:connector-curvature="0"
+             id="path5259"
+             d="m 329.09375,-184.96875 c -9.64386,0.71361 -12.61776,11.89957 -12.75,19.96875 -1.64342,4.59633 -9.02726,5.85876 -9.78125,11.5625 -3.62546,6.98327 -11.7035,15.08223 -7.15625,23.59375 3.38662,5.97315 8.3141,11.4778 14.40625,14.46875 -0.31646,5.89541 -3.72559,14.26041 2.21875,18.375 3.49019,-0.03633 2.37935,3.880043 4.15625,6.03125 2.19229,3.439677 3.42578,7.955259 0.59375,11.34375 -2.5438,8.106369 1.08562,17.170089 -2.65625,25 0.30284,5.930746 -1.79194,14.596612 5.0625,17.4375 5.20459,1.787213 11.57589,2.055025 16.6875,-0.09375 4.75482,-2.750739 4.67432,-9.109768 1.875,-13.1875 -2.37758,-8.65942 4.57444,-16.206197 4.5625,-24.9375 0.94258,-4.532513 0.72743,-11.261752 2.34375,-14.53125 3.75504,0.942812 1.06979,6.200069 2.28295,9.120434 0.49208,9.53632 3.89276,18.999284 4.2483,28.379566 -2.50556,4.646548 -5.77647,12.003259 0.3125,15.5 7.09577,4.531951 16.84939,-2.641527 16.4375,-10.5625 4.35737,-6.570282 -3.17985,-13.181719 -1.28125,-20.09375 0.0203,-4.427986 -0.14459,-8.85407 -0.1875,-13.28125 3.24495,8.436644 9.24122,16.322932 10.53125,25.21875 0.0676,5.547198 2.16295,11.142234 4.90625,15.875 4.28817,5.599482 15.83785,5.149304 16.625,-2.9375 0.0719,-6.258044 -5.2094,-11.158335 -5.3125,-17.59375 -2.05143,-10.624733 -4.49672,-21.492745 -8.84375,-31.34375 0.97638,-3.647016 -0.75827,-7.58887 1.90625,-10.65625 1.86131,-6.71746 -0.40378,-13.7978 0.28125,-20.6875 -0.95258,-10.87732 -2.23667,-21.81715 -3.3125,-32.625 -0.5109,-3.5002 -3.66324,-6.27967 -6.03125,-7.90625 2.26196,-8.12467 -0.67681,-20.16655 -10.4375,-21.15625 -10.09318,-0.67007 -14.68417,10.8038 -15.1875,19.125 -1.56832,3.01193 -4.80277,6.10104 -6.71875,7.96875 -1.85902,-2.3362 -6.11301,-2.68259 -4.65625,-6.65625 0.10387,-9.02928 -3.81106,-21.85766 -15.125,-20.71875 z"
+             style="fill:#15741e;fill-opacity:1;stroke:none" />
+        </g>
+        <g
+           transform="matrix(0.89521731,0,0,0.89521731,62.685747,-20.151368)"
+           style="fill:#ffffff"
+           id="g5261"
+           inkscape:export-filename="/var/www/opportunity-fr.png"
+           inkscape:export-xdpi="15.306176"
+           inkscape:export-ydpi="15.306176">
+          <path
+             style="fill:#ffffff"
+             d="m 533.46386,-179.37372 c -3.08144,-0.009 -5.60136,2.08155 -6.13011,5.09109 -0.0774,0.44113 -0.30954,0.91937 -0.49352,1.06498 -0.27554,0.21774 -0.31029,0.59666 -0.25975,2.12994 0.0338,1.02535 0.10629,1.95767 0.18183,2.078 0.21715,0.34629 0.0365,2.81977 -0.25976,3.53261 -0.14793,0.35588 -0.44551,0.73416 -0.67535,0.85717 -0.22983,0.12301 -0.70031,0.62466 -1.03899,1.11693 -0.33868,0.49226 -0.99757,1.1965 -1.4546,1.55849 -0.74798,0.59241 -8.48384,4.28621 -10.4939,5.01318 -1.54903,0.56024 -2.43855,1.88081 -2.67542,3.89624 -0.10158,0.86509 -0.31615,1.39339 -0.77926,2.00007 -0.34724,0.45494 -0.80179,1.37882 -1.01302,2.05203 -0.21122,0.67322 -0.56989,1.65956 -0.77926,2.20788 -0.20938,0.54834 -0.36365,1.49579 -0.36365,2.10398 0,0.60817 -0.14871,1.37323 -0.31169,1.68836 -0.16296,0.31515 -0.6247,1.74715 -1.039,3.19492 -0.4143,1.4478 -0.81927,2.74144 -0.90913,2.85726 -0.22361,0.28832 -0.80502,3.11437 -0.80522,3.92222 -2.2e-4,0.89006 0.5397,2.45407 1.11692,3.2209 0.46322,0.61535 3.20422,2.34304 7.40288,4.6755 1.15091,0.63938 2.10398,1.30343 2.10398,1.4546 0,0.15119 -0.14982,0.84975 -0.31171,1.55851 -0.31934,1.39815 -0.98315,7.95812 -1.32472,13.01346 -0.20894,3.09243 -0.19922,3.18075 0.23377,3.76638 0.44269,0.59883 0.43838,0.60831 0.4156,12.260199 -0.0125,6.409003 -0.0832,16.161146 -0.15585,21.663145 -0.0873,6.618444 -0.0492,11.267961 0.10383,13.766747 0.21261,3.471456 0.29007,3.952014 0.96107,5.922298 0.79827,2.344058 1.01019,2.861139 1.40265,3.16895 0.20994,0.164693 0.20277,0.470417 -0.052,1.584475 -0.61102,2.672257 0.26565,4.103267 2.85724,4.649524 1.17179,0.24699 2.70933,0.0864 3.48066,-0.363651 0.79385,-0.46321 0.96018,-1.337941 0.67534,-3.584549 l -0.2078,-1.5585 1.01303,-0.88315 c 0.96789,-0.876275 0.98503,-0.910354 0.7273,-1.532523 -0.20989,-0.506693 -0.2278,-1.300363 -0.052,-3.870275 0.57833,-8.451291 0.73561,-12.172589 0.77924,-19.40332 0.051,-8.438639 0.28018,-13.497624 0.75329,-16.078521 0.16464,-0.898286 0.36218,-2.135778 0.44157,-2.753349 0.19132,-1.488848 0.3148,-1.142685 1.11692,3.065049 0.3532,1.852714 0.98103,4.731537 1.37668,6.415823 l 0.70133,3.06505 -0.026,10.935472 c -0.0125,6.007289 0.0879,12.720074 0.20781,14.909646 0.11991,2.189572 0.24038,4.616799 0.25974,5.402799 l 0.0259,1.428624 1.63642,0.571449 c 1.59563,0.567918 1.64721,0.57835 2.57152,0.259751 0.52035,-0.179357 1.13504,-0.3117 1.3507,-0.3117 0.21566,0 0.87153,0.501779 1.4546,1.116925 1.22736,1.294917 2.21328,1.843335 4.20796,2.363725 2.46641,0.643464 4.59092,0.379616 4.90927,-0.623401 0.20337,-0.640788 -0.27207,-1.233591 -2.078,-2.571525 -2.39113,-1.771518 -3.32043,-2.714947 -3.55857,-3.662473 -0.11342,-0.4512 -0.5317,-1.567959 -0.93511,-2.4936 l -0.7273,-1.688374 0.33768,-2.207875 c 0.24514,-1.533588 0.42478,-4.302273 0.54547,-9.221122 0.095,-3.873857 0.29946,-8.467744 0.46755,-10.208172 0.43893,-4.544593 0.5588,-7.610736 0.64939,-17.273372 0.0466,-4.970804 0.15753,-9.037719 0.28572,-9.688679 0.28505,-1.44737 0.27135,-9.72688 -0.026,-13.22127 l -0.23376,-2.67542 -2.25983,-0.75328 c -1.24729,-0.41096 -2.3636,-0.83945 -2.46762,-0.9351 -0.11341,-0.10425 -0.0395,-0.32681 0.18182,-0.57145 0.34152,-0.37737 0.35317,-0.44941 0.052,-0.90913 -0.28487,-0.43474 -0.28726,-0.53639 -0.0259,-0.75327 0.16428,-0.13632 0.28573,-0.34759 0.28573,-0.49353 0,-0.56468 -2.16664,-2.10233 -3.71442,-2.62347 -0.29563,-0.0995 0.36078,-1.19642 3.84429,-6.38984 2.31827,-3.45622 4.3497,-6.41552 4.49368,-6.57168 0.22245,-0.24126 0.50481,-0.22432 1.9741,0.23378 0.95102,0.29652 1.85018,0.54548 1.97411,0.54548 0.32085,0 0.25953,-1.0219 -0.10383,-2.05203 -0.28711,-0.81376 -0.25958,-0.99087 0.12988,-2.54556 0.29409,-1.17386 0.41075,-2.2517 0.38963,-3.58455 -0.0238,-1.50956 0.05,-2.1965 0.41559,-3.24686 0.3838,-1.10272 0.47756,-1.78343 0.49353,-4.02614 0.0186,-2.62156 0.002,-2.71048 -0.49353,-3.19492 -0.47946,-0.46849 -7.65679,-3.81892 -9.55879,-4.46769 l -0.85718,-0.31171 0.15585,1.66241 c 0.0858,0.91378 0.16,2.20951 0.15586,2.88322 -0.01,1.81511 -0.52942,9.07099 -0.70133,9.89648 -0.13705,0.65809 -0.16492,0.58079 -0.49352,-1.06498 -0.19624,-0.98282 -0.71721,-3.08168 -1.16888,-4.67551 -0.88075,-3.10792 -0.92224,-3.84347 -0.18183,-4.88329 0.3843,-0.53971 0.38961,-0.55844 -0.10383,-1.09095 -0.75325,-0.81276 -1.87327,-0.72618 -2.75335,0.18182 -0.64224,0.66262 -0.64108,0.70506 -0.25975,0.90913 0.68775,0.36808 1.04058,1.35603 0.8312,2.33775 -0.10114,0.47445 -0.2533,2.24334 -0.33768,3.92221 l -0.15584,3.03908 -0.46755,-1.53252 c -0.88675,-2.89599 -2.12242,-6.2266 -2.80531,-7.58469 -1.45902,-2.90163 -2.16623,-4.88899 -2.05202,-5.74048 0.0594,-0.44241 0.25356,-0.96184 0.44158,-1.1429 0.31495,-0.30332 0.35467,-0.2834 0.57144,0.0779 0.513,0.85514 1.7541,2.05857 3.24688,3.19492 2.1378,1.62736 2.38924,1.73192 3.24688,1.29874 1.36838,-0.69113 2.41566,-1.98639 2.41566,-2.98712 0,-0.25996 0.19162,-0.80359 0.41561,-1.19485 0.22395,-0.39124 0.54609,-1.0595 0.7273,-1.48057 0.21022,-0.48844 0.48732,-0.75329 0.7273,-0.75329 0.24982,0 0.60976,-0.43832 1.09095,-1.29874 0.72066,-1.28868 0.88419,-2.0604 0.51951,-2.28579 -0.10705,-0.0661 0.0492,-0.61667 0.33766,-1.2468 0.67153,-1.46682 0.71817,-3.52339 0.10383,-4.72746 -0.56029,-1.09825 -2.15981,-2.62961 -3.40273,-3.27284 -0.8093,-0.41883 -1.30861,-0.51618 -2.44164,-0.51951 z m 31.58559,0.18182 c -0.16354,0.0176 -0.36755,0.0526 -0.59744,0.10382 -1.96779,0.43836 -4.83354,2.30171 -5.81839,3.79235 -1.16686,1.76614 -2.24529,3.91133 -2.51958,4.96122 -0.39724,1.52056 -0.37866,2.45306 0.12988,4.33782 l 0.44158,1.61046 -0.44158,1.14289 c -0.50062,1.30827 -0.55399,2.45259 -0.12988,3.0131 0.49423,0.65319 1.38836,1.14157 2.10398,1.14291 0.60864,8.3e-4 0.67483,0.0547 0.54548,0.46754 -0.0791,0.25265 -0.31037,0.66731 -0.5195,0.93511 -0.26878,0.34416 -0.38963,0.8193 -0.38963,1.63642 0,1.08067 -0.0636,1.22456 -0.83119,1.97409 -1.10515,1.07906 -1.26291,1.81483 -1.09095,4.90929 0.0959,1.72585 0.0743,2.68201 -0.0779,2.98711 -0.12391,0.24831 -0.36601,0.77589 -0.54547,1.16887 -0.1795,0.39302 -0.50892,1.03564 -0.7273,1.42863 -0.77605,1.39663 -0.50458,3.29142 1.01302,7.14313 1.04657,2.65619 1.0761,3.70377 0.23378,6.62362 -0.70278,2.43615 -0.91343,3.56495 -1.35071,7.27299 -0.27461,2.32862 -0.76488,5.77237 -1.22081,8.5198 -0.0863,0.52073 -0.29138,0.76255 -0.93511,1.09095 -0.71833,0.36644 -0.79867,0.4797 -0.70133,0.96108 0.0612,0.30265 0.33831,2.23457 0.62341,4.31185 0.28508,2.07729 0.54663,3.91175 0.59742,4.0521 0.0508,0.14037 0.29301,0.25976 0.51951,0.25976 0.22646,0 0.82285,0.0995 1.32471,0.23377 0.81443,0.21782 0.94238,0.19019 1.32474,-0.15585 0.23563,-0.21327 0.68432,-0.38438 0.98704,-0.38963 l 0.54548,0 0.10383,4.078076 0.10382,4.052107 1.40265,0.311694 1.37667,0.285721 0.77925,1.558505 c 0.68444,1.367804 0.79355,1.839506 1.01303,4.000149 0.13685,1.347428 0.40445,3.561844 0.57145,4.909275 0.39816,3.212309 0.3421,6.703003 -0.15586,11.221195 -0.22275,2.021146 -0.53684,5.204417 -0.70132,7.0652 -0.35975,4.069886 -0.99734,6.741104 -2.7014,11.299121 -0.67166,1.796572 -1.29177,3.581175 -1.37669,3.974175 -0.28808,1.333276 -1.10464,3.509583 -1.45459,3.896249 -0.22747,0.251428 -0.50824,0.360283 -0.80523,0.285724 -0.33338,-0.08367 -0.56413,0.03602 -0.88314,0.441575 -0.54792,0.696562 -0.54003,0.813063 0.0259,0.961075 0.44073,0.115246 0.42489,0.154769 -0.31171,0.909124 -0.59737,0.611772 -0.75326,0.951134 -0.75326,1.532525 0,0.534993 0.08,0.763873 0.33767,0.8312 1.39001,0.363259 5.7456,-0.248413 7.24702,-1.013025 0.84845,-0.432049 1.34704,-1.201341 1.50655,-2.363725 0.2353,-1.714848 0.47864,-2.079396 0.49352,-0.727299 0.01,0.894837 0.0814,1.168874 0.31171,1.168874 0.33852,0 0.37908,-0.20218 0.70131,-2.597498 0.2511,-1.866543 0.51897,-2.617723 1.42863,-4.052099 0.70689,-1.114647 0.79425,-2.002587 0.3117,-3.662476 -0.21836,-0.751187 -0.44159,-1.13014 -0.7273,-1.220823 -0.61867,-0.196355 -0.41739,-0.928991 1.6624,-5.9223 0.99679,-2.393132 2.03773,-5.146439 2.33776,-6.130097 0.35745,-1.171918 0.62345,-1.696944 0.7273,-1.50655 0.0872,0.159791 0.70463,2.786688 1.40264,5.818399 1.47465,6.404801 1.74849,8.648957 1.42863,12.23422 -0.25909,2.903773 -0.57131,3.792351 -1.29875,3.792351 -0.30346,0 -0.65536,0.196869 -0.90913,0.519499 -0.50138,0.637405 -0.54765,0.909124 -0.12988,0.909124 0.4053,0 0.38474,0.13207 -0.10382,0.753276 -0.59015,0.750216 -0.54304,1.783988 0.10382,2.207874 0.8465,0.554652 3.054,0.307944 4.75343,-0.545474 l 1.37668,-0.701325 0.0259,-1.9741 c 0.0275,-1.479702 0.16028,-2.214574 0.46755,-2.909199 0.22611,-0.511188 0.46827,-0.935099 0.54548,-0.935099 0.0771,0 0.10447,0.976925 0.052,2.155924 -0.0838,1.883398 -0.0583,2.155924 0.23379,2.155924 0.26658,0 0.39363,-0.469778 0.67534,-2.311775 0.28581,-1.868637 0.50868,-2.617132 1.19484,-3.974173 0.98485,-1.947709 0.99134,-2.273532 -0.052,-4.441724 -0.5755,-1.196006 -0.76487,-1.428626 -1.19486,-1.428626 -0.28072,0 -0.59189,-0.104739 -0.67535,-0.233774 -0.4228,-0.653689 -1.05984,-12.846916 -0.8312,-15.81877 0.16713,-2.172198 -0.23179,-4.111802 -1.40265,-6.909349 -0.70552,-1.685694 -0.83715,-2.247292 -0.98705,-4.181974 -0.0957,-1.235144 -0.37341,-3.434364 -0.59743,-4.883299 -0.22402,-1.448934 -0.36364,-2.721309 -0.31169,-2.805298 0.052,-0.08401 0.73517,-0.337162 1.50655,-0.57145 0.77136,-0.23429 1.48973,-0.555865 1.61045,-0.701326 0.28493,-0.343304 0.64687,-2.588768 0.64937,-4.026136 l 0,-1.116912 1.09095,-0.64938 c 2.25622,-1.3542 2.56518,-2.04491 2.8053,-6.28595 0.089,-1.572 0.30213,-5.23671 0.49353,-8.15616 0.41771,-6.3721 0.48279,-12.36515 0.12987,-14.20831 -0.14829,-0.77444 -0.32605,-4.29778 -0.4156,-8.46785 -0.14987,-6.97781 -0.16442,-7.20501 -0.77925,-9.89647 -0.77973,-3.41336 -1.75484,-6.26291 -2.33774,-6.88337 -0.40746,-0.43373 -0.4004,-0.53179 -0.15587,-1.27278 0.24046,-0.72856 0.20716,-0.86535 -0.18182,-1.48056 -0.23601,-0.37329 -0.61916,-1.06104 -0.85717,-1.53254 -0.23802,-0.47149 -0.56855,-0.95919 -0.7273,-1.09095 -0.15875,-0.13173 -0.28572,-0.31803 -0.28572,-0.41559 0,-0.0976 -0.32944,-0.62169 -0.7273,-1.1429 -1.16296,-1.52361 -1.3928,-2.06996 -1.11693,-2.67543 0.1984,-0.43545 0.16863,-0.61693 -0.18183,-1.09095 -0.53274,-0.72058 -0.85359,-1.60966 -1.9741,-5.37682 -0.50095,-1.68429 -1.14738,-3.54403 -1.42862,-4.13002 -0.64884,-1.352 -2.62068,-3.1843 -4.28588,-3.97418 -0.86488,-0.41024 -1.17175,-0.52029 -1.66239,-0.46756 z m -75.27554,0.0259 c -2.13218,-0.0482 -4.12594,1.04672 -5.35085,2.98712 -1.15654,1.83207 -2.91897,7.64178 -3.87027,12.80568 -0.29994,1.62815 -0.62373,3.05741 -0.7273,3.16896 -0.12328,0.13278 -0.38403,0.0709 -0.77925,-0.15585 -0.57959,-0.33264 -0.59742,-0.32513 -0.59742,0.052 0,0.21599 0.26057,0.58216 0.59742,0.83121 0.33686,0.24905 0.6234,0.56332 0.6234,0.70132 0,0.59467 -0.82329,2.12995 -1.14289,2.12995 -0.26385,0 -0.28528,0.0671 -0.10383,0.28572 0.35443,0.42706 0.0388,0.93003 -0.57144,0.93511 -0.92252,0.008 -2.13029,0.71027 -3.22091,1.87018 -0.57595,0.61258 -1.10139,1.38453 -1.16888,1.71436 -0.42819,2.09287 -0.52752,4.64027 -0.4156,10.98742 0.11728,6.65123 0.10157,7.0522 -0.3117,8.64968 -0.23796,0.92002 -0.42059,2.20526 -0.41559,2.85724 0.004,0.65199 -0.0594,3.1705 -0.15586,5.58463 -0.16728,4.18989 -0.21166,4.46628 -0.83119,6.20802 -0.83469,2.34662 -0.8302,2.58545 0.10382,3.19493 0.7495,0.48901 0.74613,0.50895 0.80523,2.02605 0.0329,0.84214 -0.0352,2.27065 -0.15584,3.16894 -0.12069,0.8983 -0.2755,2.01537 -0.33768,2.4936 -0.0901,0.69312 0.0349,1.18191 0.57144,2.44165 0.37027,0.86919 0.76149,1.70792 0.88315,1.84423 0.12169,0.13634 0.95551,0.54866 1.84423,0.9351 1.80241,0.78371 2.36373,0.71016 2.36373,-0.31169 0,-0.44194 -0.10275,-0.56671 -0.59743,-0.67537 -0.33686,-0.074 -0.62339,-0.20992 -0.62339,-0.31169 0,-0.10179 -0.36634,-0.43686 -0.80523,-0.7273 -1.22601,-0.81133 -1.63554,-2.30063 -0.77925,-2.83128 0.45206,-0.28016 0.67417,0.0243 0.85718,1.16888 0.18438,1.15306 0.67265,2.03422 1.09095,1.94813 0.28047,-0.0578 0.33243,-0.27479 0.28572,-1.14291 -0.0316,-0.58752 -0.12504,-1.29849 -0.23379,-1.58447 -0.10878,-0.28595 -0.2077,-1.09779 -0.20778,-1.79227 -1.4e-4,-0.97887 -0.14872,-1.54216 -0.62341,-2.54556 -0.75581,-1.59769 -0.78576,-2.07799 -0.12987,-2.07799 0.64353,0 1.34892,-0.742 2.078,-2.1819 0.58749,-1.16028 0.6234,-1.25633 0.6234,-4.38978 0,-1.75901 0.0175,-3.17738 0.052,-3.14296 0.14253,0.14198 0.64332,4.0881 0.85719,6.75349 0.12611,1.572 0.50489,4.99793 0.83119,7.63664 0.32629,2.63873 0.75864,6.92428 0.98705,9.506854 0.22841,2.582572 0.63882,6.796501 0.88315,9.351001 0.44251,4.626476 0.4267,4.623549 0.90913,4.623549 0.26637,0 0.75716,-0.139086 1.09095,-0.311699 0.44632,-0.230801 1.09688,-0.302865 2.46762,-0.259751 l 1.87021,0.07793 0.28572,0.805225 c 0.24902,0.698049 0.26432,1.691677 0.052,6.831422 -0.13667,3.30704 -0.20068,6.971755 -0.12986,8.156148 0.27793,4.648992 -0.40236,9.179546 -1.7663,11.506922 -0.49615,0.846611 -1.46515,2.93091 -2.72738,5.948275 -0.27503,0.657479 -1.22529,2.286197 -2.12995,3.636498 -2.47896,3.700185 -2.91248,4.901385 -1.9741,5.558648 0.77899,0.545624 2.69633,0.358879 6.05218,-0.597424 1.32306,-0.377041 2.07799,-1.025069 2.07799,-1.7663 0,-0.464308 1.17075,-3.350675 2.31177,-5.688523 l 0.85719,-1.740325 0,-2.64945 c 0.0113,-3.004164 0.24265,-3.987248 1.94812,-8.675648 1.52699,-4.197708 2.3841,-7.194291 2.85725,-10.000371 0.23626,-1.401266 0.44589,-2.575847 0.49352,-2.623475 0.0477,-0.04763 0.33561,0.440182 0.6234,1.09095 0.62431,1.411696 3.33784,6.353699 5.84438,10.649747 3.46785,5.943711 4.33678,9.111637 3.81832,13.818697 -0.39114,3.551168 -0.31484,4.185598 0.51949,4.961224 0.94666,0.880123 2.11971,1.215704 3.14299,0.909124 0.87619,-0.262535 2.23923,-1.504903 2.41567,-2.207875 0.0639,-0.254422 -0.0378,-1.353068 -0.23378,-2.441649 -0.29225,-1.623391 -0.34695,-2.588505 -0.23376,-5.376823 l 0.15584,-3.402725 -0.59742,-0.805224 c -0.32623,-0.442489 -0.93511,-1.113551 -1.3507,-1.50655 -0.85581,-0.809256 -1.86739,-2.510713 -2.72738,-4.597574 -0.83596,-2.028593 -2.45892,-7.533446 -2.9092,-9.896473 -0.43598,-2.288056 -1.20493,-4.288452 -2.57152,-6.649598 -2.41501,-4.172454 -2.6084,-4.836875 -1.50655,-5.220973 0.50135,-0.174777 0.6234,-0.343539 0.6234,-0.857175 0,-0.345086 0.10991,-0.75783 0.25974,-0.9351 0.21612,-0.255644 0.25292,-0.924934 0.12989,-3.272849 -0.0852,-1.628143 -0.15579,-4.081348 -0.15586,-5.428773 l 0,-2.441649 0.36365,0.805229 c 0.20792,0.449149 0.38124,0.967851 0.38962,1.142896 0.008,0.175045 0.14537,0.484162 0.28574,0.675344 0.23582,0.321228 0.46135,0.273427 3.06503,-0.597415 l 2.83128,-0.935104 -0.15585,-1.402644 c -0.12685,-1.287414 -0.0661,-1.535604 0.59742,-3.194934 l 0.70133,-1.79227 -0.57145,-3.48064 -0.57145,-3.48066 0.49353,-0.5195 c 0.26851,-0.28686 0.49353,-0.61528 0.49353,-0.7273 0,-0.11204 -0.49091,-1.21237 -1.09095,-2.44164 -0.60006,-1.22928 -1.30419,-2.99377 -1.55851,-3.94821 -0.2543,-0.95443 -0.7831,-2.71723 -1.16888,-3.89625 -1.4087,-4.30532 -1.81333,-6.37331 -3.71442,-18.18249 -0.22863,-1.42035 -0.44156,-3.34823 -0.44156,-4.28588 -0.002,-2.63674 -0.9188,-6.05746 -2.02606,-7.53275 -0.50514,-0.67304 -2.23607,-1.61169 -3.5326,-1.92215 -0.80923,-0.19375 -0.78109,-1.03603 0.052,-1.50654 0.45701,-0.25812 0.661,-0.55147 0.75327,-1.11693 0.0683,-0.41903 0.19074,-0.70806 0.28572,-0.64938 0.095,0.0587 0.23673,-0.15416 0.3117,-0.46754 0.0749,-0.31338 0.58333,-1.5224 1.11693,-2.7014 1.2652,-2.79551 1.41205,-3.38202 1.55849,-5.94828 0.10147,-1.77962 0.0382,-2.52105 -0.33766,-4.28587 -0.25008,-1.17408 -0.6287,-2.4328 -0.85718,-2.8053 -0.47726,-0.778 -1.5519,-1.52459 -2.72738,-1.89618 -0.44767,-0.14149 -1.35086,-0.57748 -2.02604,-0.98704 -1.50281,-0.91159 -2.13919,-1.14988 -3.58455,-1.40265 -0.3089,-0.054 -0.60452,-0.0971 -0.90913,-0.10383 z m -79.6653,0.0259 -1.58448,0.75327 c -2.60574,1.23655 -2.98515,2.21345 -2.72737,6.83143 0.11518,2.0623 0.0852,3.26182 -0.0778,3.92222 -0.19083,0.77213 -0.1843,1.15608 0.0778,2.12995 0.17709,0.65762 0.39474,2.12235 0.46754,3.24688 l 0.12989,2.05202 -0.57145,0.41561 c -1.08927,0.80533 -2.36973,1.34169 -4.33783,1.81825 -1.08159,0.2619 -3.37272,0.91597 -5.09109,1.42862 -1.71836,0.51265 -3.15886,0.90912 -3.19493,0.90912 -0.0361,0 -0.22702,0.45369 -0.4156,0.98705 -0.1886,0.53336 -0.70609,1.74697 -1.1429,2.7014 -0.74741,1.63311 -2.20372,6.72734 -2.20787,7.6886 -8.3e-4,0.24137 -0.51074,1.93046 -1.11694,3.76637 -0.60619,1.83593 -1.17033,3.85014 -1.24679,4.4677 -0.0766,0.61757 -0.34472,1.7987 -0.6234,2.62348 -0.47559,1.40731 -0.50616,1.74913 -0.49353,5.6106 l 0,4.10404 0.8312,2.88323 c 0.45371,1.57201 1.1255,3.80819 1.50655,4.9872 0.38103,1.179 0.83465,2.67915 1.01303,3.32479 0.29373,1.06314 0.3785,1.16888 0.88315,1.16888 0.58085,0 0.50716,-0.10902 2.41567,3.0131 0.95444,1.56135 1.05946,2.90777 0.5195,7.14312 -0.46559,3.652051 -0.94344,9.487957 -1.16888,14.364179 -0.11307,2.446277 -0.0726,3.153565 0.18184,3.792348 0.26915,0.676062 0.27482,1.050766 0.052,2.727375 -0.14181,1.066715 -0.41433,2.555398 -0.59743,3.3248 -0.36516,1.534231 -1.57138,8.735784 -2.05203,12.28617 -0.16723,1.235147 -0.36402,4.352753 -0.44157,6.935324 l -0.12987,4.701474 -0.7273,0.597425 c -0.88959,0.745121 -1.1511,1.404794 -1.4546,3.480649 l -0.25975,1.6624 -1.68838,1.350699 c -0.93451,0.747864 -2.1099,1.55948 -2.62347,1.81825 -1.71768,0.865461 -1.3773,1.869817 0.77925,2.207874 1.56429,0.245213 4.41018,0.09917 5.68851,-0.285724 0.54862,-0.165177 1.239,-0.531412 1.53253,-0.805225 0.45932,-0.428476 0.80833,-0.504572 2.3897,-0.597426 1.01058,-0.05934 2.2003,-0.227915 2.64945,-0.389625 0.74595,-0.268593 0.81343,-0.374364 0.9351,-1.19485 0.0733,-0.494014 0.6653,-2.59961 1.29876,-4.675498 0.63347,-2.075872 1.36892,-4.88516 1.63642,-6.233998 0.44298,-2.233576 2.33527,-15.220374 2.64945,-18.15652 0.24073,-2.249799 0.5484,-3.681578 1.16887,-5.636574 0.33857,-1.066714 0.72305,-2.994589 0.88314,-4.285874 0.42069,-3.393071 0.65959,-4.502568 1.24681,-6.052174 0.28739,-0.758397 0.91603,-3.14434 1.40265,-5.298894 0.83815,-3.710919 1.39217,-5.205485 1.76629,-4.831355 0.30046,0.30045 0.77926,3.128902 0.77926,4.545623 0,0.763344 0.0791,1.841033 0.18183,2.389702 0.10275,0.54869 0.31064,2.415571 0.44158,4.155999 0.1309,1.740428 0.35482,3.907089 0.51949,4.805373 0.16469,0.898287 0.38868,2.635132 0.49353,3.870275 0.1049,1.235143 0.30347,2.786553 0.41559,3.454675 0.12808,0.762928 0.11861,1.492979 0,1.948123 -0.25033,0.960596 -0.54631,4.127805 -1.039,11.428997 -0.45835,6.792457 -0.47891,9.278883 -0.18182,12.545922 0.11347,1.247681 0.2452,3.250091 0.3117,4.467699 l 0.12988,2.233851 0.75327,0.311699 c 0.46639,0.202663 1.3679,0.328532 2.41567,0.337674 1.59562,0.01385 1.69399,0.05336 2.33776,0.675351 0.80479,0.77752 1.75109,1.017786 4.54562,1.19485 2.16424,0.137114 3.51926,-0.06457 4.10404,-0.649376 0.47424,-0.474215 0.2903,-0.947451 -0.5195,-1.3507 -0.39149,-0.194957 -1.39169,-0.884105 -2.23384,-1.532524 l -1.53253,-1.19485 -0.44157,-1.61045 c -0.4264,-1.582297 -0.45945,-1.919114 -0.38962,-11.325096 0.0395,-5.333569 0.1568,-11.690276 0.23377,-14.104422 0.13756,-4.314568 0.14347,-4.418502 0.80522,-6.156073 0.66212,-1.738591 0.67794,-1.896605 1.29875,-9.896472 0.34717,-4.473628 0.72714,-8.916074 0.8312,-9.870504 0.10404,-0.954416 0.23607,-2.977816 0.31171,-4.493666 0.13151,-2.63394 0.18448,-2.83209 0.93509,-4.44173 0.43198,-0.92634 0.8857,-1.68838 1.01302,-1.68838 0.12732,0 0.58771,0.28655 1.01303,0.62341 1.4188,1.12366 1.50073,0.98632 1.3507,-1.97411 -0.12915,-2.54826 -0.10684,-2.62629 0.70132,-5.76644 0.45061,-1.75068 0.79113,-3.50257 0.77926,-3.89625 -0.0119,-0.39369 0.15066,-1.96766 0.33767,-3.48066 0.2739,-2.21587 0.27502,-2.88348 0.0778,-3.48064 -0.18147,-0.54982 -0.16845,-0.85414 0,-1.16887 0.30761,-0.57476 0.25967,-1.37301 -0.10383,-2.57153 -0.16721,-0.55121 -0.28572,-1.47967 -0.28572,-2.05202 0,-0.57234 -0.1511,-2.22943 -0.33767,-3.68846 -0.1866,-1.45902 -0.3339,-3.74365 -0.31171,-5.09109 0.0222,-1.34743 -0.0495,-3.1305 -0.15585,-3.9482 -0.1236,-0.95095 -0.12679,-1.74861 0,-2.20788 0.2403,-0.87027 -0.10339,-2.73458 -0.64937,-3.42869 -0.65177,-0.82861 -6.61828,-4.05647 -8.59773,-4.64953 -0.92022,-0.2757 -2.20786,-1.43863 -2.20786,-2.00008 0,-0.21521 0.1905,-0.50293 0.41559,-0.62339 0.52781,-0.28246 1.37492,-2.00589 2.33775,-4.70148 0.42114,-1.179 0.94754,-2.62929 1.16888,-3.24687 0.22134,-0.61758 0.45915,-1.8335 0.5195,-2.7014 0.0908,-1.30815 0.0434,-1.79601 -0.33767,-2.85726 -1.03348,-2.878 -2.16665,-4.24715 -4.38978,-5.29889 -1.48448,-0.70227 -1.76674,-0.72494 -2.77932,-0.15585 l -0.77926,0.44158 -1.22082,-0.44158 z m 37.81958,0.052 c -0.72417,0.044 -1.19248,0.17556 -1.68837,0.4156 -1.0503,0.50844 -2.75179,2.33722 -3.40272,3.6365 -0.82397,1.64471 -0.82974,2.19523 -0.0259,4.59758 0.60829,1.8181 0.70514,2.35625 0.59743,3.27285 -0.15202,1.29342 0.12461,2.32331 0.83119,2.98712 0.27747,0.26066 0.51951,0.67732 0.51951,0.93509 0,0.28404 0.22625,0.63472 0.59742,0.90914 0.79068,0.5846 0.80395,1.28977 0.0259,2.36372 -0.96457,1.33157 -1.78308,1.78391 -4.6755,2.5975 -0.9785,0.27523 -2.74451,0.91728 -3.92222,1.42862 -1.17773,0.51136 -2.29009,0.9351 -2.4936,0.9351 -0.23856,0 -0.48343,0.28568 -0.67535,0.77925 -0.16374,0.42108 -0.52855,1.1719 -0.80523,1.68838 -0.33936,0.63353 -0.55965,1.52748 -0.70133,2.75335 -0.27115,2.34633 -1.1771,9.16998 -1.4546,11.01339 -0.11828,0.78601 -0.14907,2.21452 -0.0778,3.16895 0.0993,1.33246 0.0296,2.19878 -0.28572,3.76638 -1.18532,5.892 -1.58336,20.43036 -0.59744,21.76704 0.71103,0.964 0.78369,1.96159 0.31171,3.76638 -0.35717,1.3658 -0.38478,1.92786 -0.25975,3.4287 0.14901,1.78896 0.14459,1.81063 1.32472,3.376737 l 1.19486,1.558513 -0.18183,2.337748 c -0.20686,2.814615 -0.71055,7.679009 -1.11693,10.623774 -0.25721,1.862064 -0.27952,2.297494 -0.0259,3.272849 0.16054,0.61757 0.71596,2.99704 1.22083,5.298897 l 0.90912,4.181975 0.12988,6.026198 c 0.20113,9.551035 0.73059,15.57099 1.45461,16.675945 0.29164,0.445117 0.28497,0.534287 -0.12989,1.116926 -0.62662,0.879975 -2.084,1.73281 -3.76637,2.233849 -1.6798,0.500266 -2.03486,0.753956 -2.57153,1.636424 -0.53693,0.882926 -0.29893,1.082073 1.76631,1.506551 1.66104,0.34139 6.00563,0.452522 6.88337,0.181823 0.25198,-0.07771 0.8871,-0.429936 1.40264,-0.805223 0.92587,-0.673979 0.93849,-0.682632 2.12995,-0.467551 0.91662,0.165443 1.61618,0.157146 2.85725,-0.05196 l 1.63643,-0.285725 0.12988,-1.220825 c 0.072,-0.673711 0.12139,-2.245503 0.12987,-3.480648 0.0172,-2.480675 -0.24012,-3.529599 -1.29875,-5.2989 -0.55784,-0.932315 -0.62748,-1.273837 -0.85717,-4.078074 -0.13797,-1.684284 -0.33658,-4.780113 -0.44158,-6.857397 -0.10501,-2.077285 -0.38913,-5.264538 -0.62339,-7.091173 -0.49682,-3.873817 -0.50328,-5.171654 -0.10383,-6.987274 0.16055,-0.729857 0.28157,-1.677329 0.28572,-2.103975 0.004,-0.426644 0.14097,-1.046493 0.3117,-1.376674 0.17076,-0.330181 0.50265,-1.479698 0.7273,-2.571525 0.46975,-2.282973 0.91775,-3.885738 2.05203,-7.324948 0.84988,-2.576871 2.52895,-5.938656 2.70139,-5.402796 0.0542,0.168431 0.14654,1.358161 0.2078,2.649453 0.11331,2.388331 0.71525,6.327721 1.2468,8.234068 0.45005,1.614033 0.56054,11.339412 0.15585,13.506996 -0.1912,1.024208 -0.32283,3.273664 -0.36365,6.026199 l -0.0778,4.389773 -1.1429,2.85725 -1.16888,2.857248 -0.15585,3.16895 c -0.14286,2.722379 -0.11511,3.207234 0.15585,3.506624 0.28464,0.314509 0.25937,0.4838 -0.12987,1.636424 -0.6052,1.792033 -0.56191,2.210708 0.28572,2.96115 0.56432,0.499609 0.7273,0.802739 0.7273,1.376675 0,0.600998 0.0909,0.777088 0.59742,1.038998 0.41714,0.215706 0.6234,0.452231 0.6234,0.779251 0,0.604631 0.41261,0.963186 1.37669,1.168874 0.41518,0.08844 1.7643,0.127299 2.98711,0.07793 3.2834,-0.132502 4.32466,-0.767073 3.42871,-2.078 -0.21462,-0.31401 -0.66107,-0.960883 -0.98706,-1.4546 -0.32596,-0.493707 -0.65418,-1.010954 -0.75327,-1.1429 -0.11653,-0.155159 -0.0121,-0.429463 0.31171,-0.753275 0.62271,-0.622717 1.77702,-2.566229 2.38969,-4.052098 0.90915,-2.204799 1.27149,-8.729652 1.2468,-22.286545 -0.0157,-8.586958 0.0166,-10.323229 0.36365,-13.273221 0.21956,-1.866555 0.50752,-3.549868 0.62341,-3.766373 0.36527,-0.682555 1.2064,-3.986661 1.55849,-6.104124 0.18627,-1.120273 0.36069,-2.049084 0.38963,-2.07801 0.0289,-0.02888 0.77171,-0.188369 1.66239,-0.36365 0.89068,-0.175259 1.84721,-0.412847 2.10399,-0.519497 0.59813,-0.248451 1.86769,-2.885881 1.87019,-3.870281 8.3e-4,-0.39615 0.0603,-1.1883 0.12987,-1.7663 0.10114,-0.84169 0.2354,-1.09596 0.62341,-1.27278 0.26643,-0.12138 0.46754,-0.39248 0.46754,-0.59742 0,-0.20492 0.24383,-0.82126 0.5195,-1.37668 0.44954,-0.90569 0.49764,-1.33151 0.57145,-4.07807 0.0453,-1.68428 0.24847,-4.94516 0.44159,-7.24702 0.34854,-4.15491 0.32565,-5.55084 -0.10383,-10.31207 -0.11136,-1.23514 -0.2851,-3.5191 -0.38961,-5.0911 -0.10458,-1.57199 -0.27539,-3.54763 -0.38964,-4.38978 -0.11426,-0.84213 -0.22879,-2.70385 -0.23377,-4.13002 -0.004,-1.51809 -0.12058,-3.05511 -0.28572,-3.68845 -0.58966,-2.26135 -1.16541,-4.0155 -1.3507,-4.13003 -0.10576,-0.0654 -0.29199,-0.4668 -0.4156,-0.88314 -0.21528,-0.72506 -0.37539,-0.83144 -3.6365,-2.44164 -1.87252,-0.92457 -4.02365,-1.96 -4.7794,-2.31178 -0.83475,-0.38857 -1.68337,-0.9917 -2.18191,-1.53254 l -0.83119,-0.88315 0,0.85718 c 0,0.48217 -0.0951,1.38996 -0.2078,2.00008 -0.50949,2.75851 -1.23154,11.46653 -1.4546,17.37728 -0.28592,7.57619 -0.17273,9.22501 0.96107,14.31221 0.4204,1.8863 0.69107,3.49093 0.6234,3.55857 -0.60856,0.60857 -9.08194,1.33902 -11.429,0.98706 -1.13405,-0.17007 -1.11664,0.0255 -0.44157,-4.10406 0.77755,-4.75631 0.94237,-7.40257 1.1429,-18.36431 0.10275,-5.61428 0.28325,-10.70753 0.38962,-11.32511 0.1063,-0.61755 0.19949,-1.90129 0.20781,-2.83127 0.009,-1.024 0.12238,-1.96256 0.31169,-2.41567 l 0.31171,-0.75327 1.71434,1.71435 c 1.59982,1.59149 1.88895,2.02604 1.27278,2.02604 -0.13571,0 -0.58358,0.25367 -1.01303,0.54548 l -0.77924,0.5195 0.54548,0.59742 c 0.68189,0.71177 0.7475,1.53281 0.15584,2.36373 -0.59333,0.83329 -1.834,6.4574 -2.20788,10.0783 -0.39295,3.80577 -1.11691,12.90959 -1.11691,13.97454 0,0.73853 0.1387,0.98652 1.48056,2.44166 l 1.50656,1.63642 1.71435,-1.3507 1.71436,-1.32473 0.18181,-6.20802 c 0.089,-3.42012 0.10158,-8.4702 0.052,-11.22119 -0.0777,-4.29976 -0.15095,-5.19763 -0.5195,-6.46778 -0.6212,-2.14089 -0.55757,-2.58072 0.4156,-3.63651 0.87005,-0.94388 0.86901,-0.93735 -0.10383,-1.61044 -0.37865,-0.26196 -0.35103,-0.30428 0.54547,-0.85718 0.52081,-0.32118 1.45249,-0.91186 2.078,-1.29875 0.87345,-0.54022 1.1429,-0.81522 1.1429,-1.19484 0,-0.39609 0.0838,-0.47639 0.4156,-0.38964 l 0.4156,0.10383 -0.4156,-0.67537 c -0.56599,-0.91577 -0.54697,-1.75069 0.0779,-2.33774 0.34413,-0.32327 0.48982,-0.61332 0.41559,-0.90911 -0.0711,-0.28322 0.14133,-0.87031 0.6234,-1.66241 0.69553,-1.14276 0.7379,-1.2917 0.6234,-2.44165 -0.15954,-1.6001 -0.15707,-1.62058 0,-3.16896 0.11047,-1.08874 0.0512,-1.53254 -0.31169,-2.49359 -1.3114,-3.47296 -3.97954,-5.24695 -7.84446,-5.24695 -0.30891,0 -0.5898,-0.0146 -0.83119,0 z m 151.82385,0 c -1.34795,-0.003 -3.6534,1.14055 -4.54563,2.25983 -1.56377,1.96177 -2.50232,3.71891 -3.58455,6.67557 -0.68505,1.87163 -0.73132,2.09716 -0.64937,3.92223 0.102,2.27024 0.4713,3.11684 1.50655,3.61052 0.63865,0.30458 0.70132,0.41976 0.70132,1.19485 0,0.47077 0.11729,1.18136 0.28573,1.58447 0.61509,1.47217 0.34029,1.7371 -2.33775,2.07801 -1.15278,0.14673 -3.01534,1.24736 -3.61053,2.12995 -0.247,0.36625 -0.49295,1.03755 -0.54547,1.50654 -0.0525,0.46899 -0.2086,1.64308 -0.33768,2.59751 -0.12905,0.95442 -0.31587,2.35697 -0.41559,3.14296 -0.19921,1.5702 -0.71985,7.50665 -0.88315,9.92245 -0.0569,0.84215 -0.33746,2.19987 -0.62341,3.03907 -0.91814,2.69481 -0.99691,3.68275 -1.01302,13.1953 l -0.0259,8.96138 -0.67535,2.25982 c -0.72949,2.41415 -0.73836,2.75643 -0.12988,5.06513 0.33944,1.28789 0.4375,1.45928 1.24681,1.94812 0.48553,0.29327 0.88315,0.66594 0.88315,0.8312 0,0.26184 -0.67683,4.252034 -1.19485,6.961302 -0.0966,0.505292 -0.57384,2.337647 -1.03901,4.078076 -0.88152,3.298403 -2.72241,13.266337 -2.49358,13.506996 0.44008,0.462902 3.24096,1.248076 5.14304,1.454599 l 2.12995,0.233775 1.45459,2.85725 c 0.79241,1.572002 2.34869,4.434002 3.45468,6.337898 1.10599,1.903897 2.63327,4.736368 3.40273,6.311924 1.64564,3.369693 1.72232,3.958257 0.88314,7.195072 -0.58918,2.272502 -0.72177,2.509144 -2.36373,4.3638 -1.20636,1.362619 -2.01773,2.790488 -2.02604,3.610524 -0.0141,1.430644 2.18813,1.744189 4.44173,0.6234 1.91412,-0.95194 2.66839,-1.686372 3.11699,-3.013099 l 0.38963,-1.116926 0,1.013026 c 0.0195,1.397437 -0.21755,2.087201 -1.19485,3.558574 -1.26478,1.904146 -1.29427,2.608363 -0.12988,3.091024 0.44687,0.185233 2.60429,0.06981 4.38977,-0.233775 1.40415,-0.238712 2.39736,-0.993808 2.57153,-1.922149 0.0825,-0.439714 0.27221,-0.714583 0.51949,-0.77925 0.33328,-0.08715 0.38963,-0.297304 0.38963,-1.4546 0,-0.827891 0.16543,-1.80781 0.4156,-2.519575 0.52929,-1.505934 0.51077,-1.920237 -0.12987,-3.948198 -0.47738,-1.511163 -0.51481,-1.881694 -0.38962,-3.5326 0.0769,-1.01428 0.45528,-3.107689 0.8312,-4.623548 1.44189,-5.814093 2.75335,-13.213306 2.75335,-15.533047 0,-0.779834 0.0899,-1.032593 0.44157,-1.220824 0.24011,-0.128516 1.71429,-0.302594 3.29882,-0.389624 3.22328,-0.177065 4.6325,-0.535288 6.98728,-1.792276 l 1.42861,-0.753274 -0.0778,-1.116925 c -0.0317,-0.64356 -0.64382,-3.172461 -1.4546,-5.922299 -0.77801,-2.638713 -1.74796,-6.233894 -2.15593,-7.974327 -0.40794,-1.740418 -1.00627,-4.1199 -1.32471,-5.298894 -0.53671,-1.98688 -0.57818,-2.48848 -0.67535,-6.93534 -0.0577,-2.6387 -0.0242,-5.49574 0.0778,-6.33788 0.93306,-7.6932 1.01815,-14.28813 0.23378,-17.4552 -0.34769,-1.40401 -0.41757,-2.60471 -0.5195,-8.57176 -0.1235,-7.22796 -0.5384,-11.35959 -1.27278,-12.77969 -0.3708,-0.71705 -2.4325,-2.38766 -3.14297,-2.54555 -0.83307,-0.18512 -1.63643,-0.53083 -1.63643,-0.70132 0,-0.0875 0.21392,-0.64615 0.49353,-1.2468 0.64525,-1.38607 0.65339,-2.26625 0,-4.00014 -0.28754,-0.76305 -0.8351,-2.24884 -1.22083,-3.29884 l -0.70131,-1.89617 0.41558,-0.59742 c 0.28517,-0.40043 0.4068,-0.84023 0.36365,-1.3507 -0.0711,-0.84206 -0.47148,-1.13583 -0.67534,-0.49352 -0.22684,0.71468 -0.65995,0.47003 -0.90912,-0.5195 -0.57944,-2.30115 -3.06847,-6.22141 -4.85734,-7.66263 -1.14255,-0.92053 -2.68342,-1.58198 -3.68843,-1.58448 z m -42.52106,17.1435 c 0.0559,0 0.11844,0.0717 0.20779,0.2078 0.11059,0.16843 0.20531,0.47675 0.20779,0.70132 0.002,0.22457 0.12466,0.6523 0.28574,0.96109 0.39095,0.74949 0.0847,0.72785 -0.57146,-0.052 -0.56001,-0.66551 -0.64015,-1.11011 -0.31169,-1.61045 0.0893,-0.13611 0.12599,-0.2078 0.18183,-0.2078 z m -150.39522,2.07801 c 0.33859,-0.004 0.76186,0.36051 1.19486,1.03899 0.65208,1.02185 3.58405,4.49782 3.87027,4.59757 0.32593,0.11361 3.40206,-3.00238 3.84429,-3.89624 0.45847,-0.92666 0.40923,-0.99592 1.06498,1.48056 0.2841,1.07297 0.46921,2.32612 0.46755,3.27285 -0.003,1.52332 -0.004,1.55566 -1.71435,4.80538 l -1.71435,3.24687 -0.23378,-1.81825 c -0.12774,-1.01056 -0.40456,-2.29764 -0.59743,-2.85724 -0.36265,-1.05228 -0.29355,-2.18375 0.15587,-2.72738 0.18057,-0.21844 0.0846,-0.39978 -0.38964,-0.77925 -0.33355,-0.26687 -0.78845,-0.49339 -1.01303,-0.49351 -0.3837,-2.4e-4 -1.71435,0.7098 -1.71435,0.90911 0,0.0505 0.25931,0.54702 0.59744,1.09095 l 0.62339,0.98706 -0.59742,1.63643 c -0.32925,0.90214 -0.67099,2.3078 -0.75327,3.14296 -0.0822,0.83517 -0.20419,1.77131 -0.28573,2.05202 -0.13628,0.46911 -0.21234,0.39855 -0.72729,-0.7273 -1.63774,-3.5805 -3.14797,-8.88055 -3.14299,-10.96144 0.003,-1.38238 0.41515,-3.53215 0.75328,-3.87028 0.0868,-0.0867 0.19884,-0.12848 0.3117,-0.12986 z m 203.592,18.85784 c 0.032,-0.0239 0.0556,-0.0221 0.0778,0 0.19124,0.18902 0.57506,3.81981 0.83119,7.84444 0.32841,5.16022 1.11,10.63925 2.15593,14.98757 0.26835,1.11558 0.46655,2.07902 0.41561,2.12995 -0.12665,0.12664 -0.0724,0.316 -3.24688,-8.85748 -0.50515,-1.45971 -1.23209,-3.39536 -1.63643,-4.31184 -0.9601,-2.17596 -1.00737,-3.62364 -0.15585,-6.51972 0.32765,-1.1144 0.67447,-2.42989 0.75327,-2.93518 0.15032,-0.96395 0.58096,-2.16984 0.80524,-2.33774 z m -114.86142,1.32471 c 0.0914,0 0.23631,0.64054 0.3117,1.4546 0.0754,0.81409 0.39594,2.55303 0.7273,3.8443 0.33134,1.29129 0.80278,3.26693 1.03899,4.38978 0.23622,1.12286 0.65046,2.85971 0.93511,3.87028 0.28467,1.01057 0.87257,3.27274 1.29875,5.01317 0.42615,1.74042 0.75713,3.19063 0.7273,3.2209 -0.0298,0.0303 -0.27093,-0.56459 -0.5195,-1.32473 -0.70186,-2.14649 -1.73859,-4.3422 -3.87028,-8.18212 -1.07905,-1.94369 -2.08884,-3.75426 -2.23385,-4.00014 -0.27933,-0.47364 -0.24758,-0.97997 0.23378,-3.71444 0.34936,-1.98445 1.12282,-4.5716 1.3507,-4.5716 z m 79.8731,1.84424 c 0.0173,-0.009 0.0379,-0.0142 0.052,0 0.10868,0.11002 1.21617,6.37801 1.74033,9.87049 0.23592,1.57201 0.45267,3.66532 0.46755,4.64952 0.015,0.98423 -0.0267,1.84508 -0.0779,1.89618 -0.1372,0.13722 -2.52678,-5.52449 -2.88321,-6.83142 -0.50156,-1.8391 -0.55476,-2.72128 -0.33769,-4.83136 0.20456,-1.98845 0.78027,-4.62016 1.03901,-4.75341 z m 21.30516,20.95136 -0.12988,1.42862 c -0.15396,1.76275 -1.49582,10.26281 -2.20788,13.97455 -0.28949,1.509102 -7.19915,-12.17341 -7.25267,-12.11987 -0.0536,0.0536 -0.10383,-0.63745 -0.10383,-1.5585 0,-1.41184 7.48427,7.60848 7.74622,7.18462 0.0457,-0.074 0.35733,-1.74719 0.70132,-3.71443 0.34397,-1.96721 0.76598,-3.94483 0.9351,-4.38976 l 0.3117,-0.80523 z m -45.74762,-14.58749 c -0.11275,-0.0113 -0.244,0.0642 -0.31171,0.18182 -0.59393,1.03244 -0.58166,1.01242 -2.33775,0.46755 -0.89828,-0.27871 -1.82183,-0.49351 -2.05202,-0.49352 -0.51143,-4e-5 -0.90913,0.35623 -0.90913,0.8312 0,0.19455 -0.16506,0.42225 -0.38962,0.49352 -0.43257,0.1373 -0.57923,0.99128 -0.2078,1.22083 0.11227,0.0694 0.2078,0.33208 0.2078,0.59742 0,0.31371 0.30228,0.74587 0.85717,1.22083 0.46936,0.40175 0.92094,0.7273 1.01304,0.7273 0.29119,0 0.18113,0.63257 -0.20781,1.19485 -0.20618,0.29805 -0.43829,0.66485 -0.51949,0.80522 -0.22854,0.39514 0.50027,0.29932 1.24679,-0.15585 0.35882,-0.21878 0.81043,-0.65159 1.01302,-0.96107 0.20259,-0.30949 0.76959,-0.91067 1.2468,-1.3507 0.47721,-0.44002 0.85718,-0.89581 0.85718,-1.01302 0,-0.11722 0.13048,-0.36821 0.28573,-0.54548 0.38967,-0.44503 0.63709,-2.96785 0.31169,-3.16895 -0.0339,-0.0209 -0.0663,-0.0482 -0.10382,-0.052 z m 34.65063,23.22164 c 0.15426,0 0.084,1.43153 -0.15584,3.0131 -0.23306,1.53724 -1.00058,0.29038 -0.83122,-1.35071 0.10858,-1.0523 0.46342,-1.66239 0.98706,-1.66239 z m -123.53707,1.32473 0.5195,0.6234 c 0.57916,0.70654 0.62175,1.27927 0.18183,2.12995 -0.51762,1.00098 -0.7088,0.72183 -0.70133,-1.06498 z m -28.80626,1.32472 c 0.30131,0 0.27869,2.91624 -0.0259,3.2209 -0.45266,0.45265 -0.57145,0.25705 -0.57145,-0.96108 0,-1.28603 0.25163,-2.25982 0.59742,-2.25982 z m 167.01921,28.572499 1.97409,0 0.12988,0.649375 c 0.0702,0.349555 0.092,1.515412 0.0259,2.597499 -0.0682,1.119734 -0.013,3.453527 0.15586,5.428774 0.16314,1.908858 0.26083,4.194907 0.20779,5.065124 -0.053,0.870216 -0.18758,1.584474 -0.28571,1.584474 -0.1656,0 -0.94021,-1.401769 -1.53254,-2.727374 -0.53539,-1.198208 -2.49502,-7.436188 -2.72736,-8.701624 -0.13402,-0.729856 -0.44403,-1.859491 -0.70133,-2.493599 l -0.46755,-1.142899 0.59743,-0.129875 c 0.33833,-0.06768 1.52868,-0.129875 2.62347,-0.129875 z"
+             id="path5263"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="cccscccscscccsscscsccscscscssccsccccscsccscccscccsscscscccccsscccccccsscscssccccccccccsssscscccccscccsssccsccccsccccsscccscccscscccsssccsccsccccccccccsssscccscssccccsssccsscssscsccccccssscccsssssscsccccssssscccccscssccccccssscscssccccscccscccccscscsscccccccsssccssssscccccsssssscccsccssscccsccccssccscccccccccccccccsscsccscccccsccccscccccccccccssscscsccccccsssscccccccccccsscssccssscssscscccccssscccccsccccccsssccsscsccscccscsccsssscscccccccccscccsccsssccccccsscccccccccccscssscccccsssscccsssssccccccscsscscccccscsccsccccccsccccccccccscccscsscssscccccsccccssccccccsccccsccccccccsscccccccscccccscccccsssccccccsssscscccsscscssscsssscccscccccsscssscccccsscccccccccccccscccccccccscccccccccccsccccssccsscscccccscsccsccssccccscscscccccscsccsssccscssccccsccscccccccsccccccccssccccsc" />
+          <path
+             style="fill:#ffffff"
+             d="m 834.38106,-179.50361 c -0.21213,-0.003 -0.44385,0.009 -0.7273,0.0259 -1.7338,0.10565 -2.71371,0.58319 -4.13007,2.00007 -1.59882,1.59944 -1.95814,3.05239 -1.40264,5.81839 0.15667,0.78 0.16183,1.20994 0.0258,1.29875 -0.94889,0.62064 0.22517,4.26229 1.2468,3.87028 0.41202,-0.15812 0.94092,1.71868 1.09096,3.8443 0.15069,2.13518 0.49248,2.63318 2.49359,3.66248 2.01153,1.03466 1.95734,0.97578 1.5585,1.58446 -0.25459,0.38866 -0.30704,0.74067 -0.2078,1.40266 0.10846,0.72352 0.0258,1.08891 -0.38967,1.8702 -0.30745,0.57844 -0.56188,1.49557 -0.64934,2.31178 -0.0822,0.7719 -0.2009,1.22659 -0.28575,1.06497 -0.0824,-0.15615 -0.44644,-1.49189 -0.8052,-2.98713 -0.35882,-1.49523 -0.9163,-3.40859 -1.24679,-4.23392 -0.33049,-0.82532 -0.61925,-1.75984 -0.62339,-2.078 l 0,-0.57145 -0.28578,0.5195 c -0.33198,0.60775 -0.83984,0.99643 -3.27284,2.4936 -2.51455,1.54737 -3.69129,2.10819 -5.66256,2.72737 -0.92661,0.29108 -1.80777,0.61336 -1.94807,0.7273 -0.1404,0.11394 -0.25975,0.64585 -0.25975,1.16887 0,0.62982 -0.22319,1.5157 -0.70137,2.64945 -0.53163,1.26064 -0.71742,1.98886 -0.70129,2.75336 0.025,1.17285 -0.34894,5.48881 -0.5195,6.02619 -0.0615,0.19365 -0.21677,1.68118 -0.3377,3.29883 -0.34197,4.57604 -0.51136,6.39508 -0.64934,6.72753 -0.0698,0.16843 -0.22659,1.11938 -0.33772,2.12994 -0.11104,1.01057 -0.35168,3.03397 -0.5195,4.49367 -0.25526,2.2208 -0.25908,3.60667 -0.0781,8.38992 0.18402,4.86148 0.17772,5.89747 -0.0781,6.98728 -0.28419,1.2113 -0.29151,1.27789 0.0515,1.16887 0.22635,-0.0718 0.57827,0.0848 0.93509,0.4156 0.56183,0.52069 0.59399,0.59133 0.70138,3.35078 0.079,2.01825 0.17547,2.91619 0.38957,3.19492 0.16426,0.21375 0.72207,0.88094 1.22088,1.480576 0.90617,1.089426 0.90675,1.092496 1.84418,0.961087 0.51601,-0.07226 1.19568,-0.215878 1.53257,-0.311716 0.33679,-0.09577 0.91224,-0.222856 1.27272,-0.285721 0.75674,-0.131936 0.63089,-0.568696 1.27282,4.156009 0.52823,3.888226 1.03436,8.898764 1.45461,14.494044 0.10543,1.403571 0.22833,2.927605 0.28567,3.376748 0.0573,0.449144 0.29018,3.420231 0.51951,6.597648 0.45509,6.305008 0.77567,8.522417 1.53256,10.857548 0.27297,0.842147 0.58159,2.270672 0.70129,3.16895 0.11969,0.898285 0.34378,2.139499 0.49357,2.779324 0.29989,1.280829 0.24678,1.402649 -0.83121,1.402649 -1.33673,0 -1.61693,1.288576 -0.8572,4.104049 l 0.4416,1.610449 -1.039,0.98705 c -0.95588,0.897372 -1.03899,1.053006 -1.03899,1.896176 0,1.650737 0.11229,1.701008 3.58454,1.688374 3.46536,-0.01271 4.19133,-0.199164 4.36379,-1.19485 0.0888,-0.512211 0.21388,-0.619045 0.90909,-0.753274 1.55936,-0.301153 2.3638,-0.606843 2.3638,-0.883151 0,-0.152833 0.30829,-0.469428 0.70128,-0.701324 0.393,-0.231881 0.87708,-0.748795 1.06501,-1.1429 0.30082,-0.630249 0.31735,-0.831184 0.0781,-1.688374 -0.14969,-0.536008 -0.2748,-1.508188 -0.25975,-2.1819 0.015,-0.694026 -0.23098,-2.438583 -0.57145,-4.000149 -0.33049,-1.515859 -0.68715,-3.20494 -0.80518,-3.766375 -0.12818,-0.609833 -0.26016,-5.552023 -0.31169,-12.260196 -0.092,-11.994358 -0.40855,-27.291621 -0.59747,-28.468585 -0.064,-0.396753 0.0316,-1.385626 0.23382,-2.233866 l 0.36365,-1.53252 0.49348,1.42863 c 1.30339,3.889805 2.72092,12.339632 3.89625,23.247618 0.2299,2.133429 0.87374,6.46675 1.42866,9.610748 0.55491,3.144005 1.18912,6.904235 1.42859,8.363948 0.4012,2.444807 1.86013,8.527652 2.57155,10.753647 0.2256,0.705988 0.23939,1.08149 0.0781,1.506549 -0.35019,0.920819 -0.044,1.798143 1.03899,3.0131 1.09677,1.230691 1.69374,1.500664 3.29886,1.402648 0.93195,-0.05694 1.00293,-0.05345 1.22079,0.57145 0.14579,0.418177 0.44976,0.757789 0.85722,0.935101 0.68275,0.297187 4.41948,0.390323 6.1301,0.15585 0.77218,-0.105834 0.99053,-0.22252 1.1429,-0.6234 0.32865,-0.864565 -0.11778,-1.965281 -1.1429,-2.805301 -0.50446,-0.413312 -0.90917,-0.835621 -0.90917,-0.961073 -8e-5,-0.125453 0.19442,-0.608222 0.4156,-1.064975 0.22109,-0.456761 0.49839,-1.521827 0.6234,-2.363725 0.19533,-1.315597 0.16682,-1.652058 -0.12983,-2.441649 -0.41942,-1.116061 -0.77485,-2.397097 -2.10402,-7.558723 -1.20872,-4.694093 -1.89265,-7.99566 -2.49359,-12.052397 -0.24123,-1.628146 -0.79372,-5.080052 -1.24681,-7.662623 -0.46256,-2.637897 -0.96261,-6.25295 -1.11688,-8.260048 -0.15111,-1.964999 -0.39973,-5.046944 -0.57154,-6.857395 -0.17163,-1.810456 -0.3117,-3.343597 -0.3117,-3.402726 0,-0.119169 1.45178,-0.473092 2.8053,-0.675355 1.14474,-0.171018 1.3906,-0.569982 1.71444,-2.909199 0.21843,-1.58073 0.21395,-2.13407 -0.0258,-3.45467 -0.33124,-1.82213 -0.34952,-2.6751 -0.0515,-3.81833 0.34412,-1.32395 0.52466,-11.81721 0.25975,-14.98757 -0.37861,-4.53416 -1.05637,-9.64738 -1.5585,-11.79265 -0.18402,-0.78713 -0.27737,-2.3914 -0.28568,-4.28588 -0.008,-1.91984 -0.14097,-3.56185 -0.33771,-4.46768 -0.17057,-0.786 -0.33647,-2.0235 -0.38959,-2.75336 -0.0533,-0.72985 -0.18162,-1.65902 -0.28576,-2.05204 -0.10415,-0.39298 -0.4535,-1.75148 -0.75323,-3.01309 -0.29974,-1.26158 -0.62757,-2.37214 -0.75332,-2.46762 -0.12568,-0.0954 -0.78083,-0.32502 -1.4546,-0.5195 -4.27063,-1.23276 -8.2943,-3.29403 -10.07829,-5.195 l -0.44155,-0.49352 0,0.90913 c 0,0.50796 -0.12916,1.25779 -0.28576,1.63642 -0.15659,0.37865 -0.63238,2.41219 -1.039,4.54562 -1.04598,5.48827 -1.15479,6.06628 -1.24679,5.97425 -0.0449,-0.0449 -0.18021,-0.90267 -0.28569,-1.92214 -0.11845,-1.14518 -0.38809,-2.37297 -0.7273,-3.22091 -0.50479,-1.26182 -0.53097,-1.43891 -0.28577,-2.1819 0.21836,-0.65731 0.21128,-0.92879 0,-1.4546 -0.49173,-1.22259 -0.49173,-1.23836 0.77925,-2.05202 1.60529,-1.0275 2.73797,-2.27148 2.5975,-2.85725 -0.33705,-1.40702 -0.36357,-2.18748 -0.12983,-3.81832 0.17871,-1.24646 0.35882,-1.81825 0.54543,-1.81825 0.41584,0 0.8785,-0.86387 1.01306,-1.8702 0.1335,-0.99804 -0.17753,-2.02605 -0.59746,-2.02605 -0.20373,0 -0.26806,-0.44376 -0.25975,-1.79228 0.008,-1.56289 -0.0608,-1.9211 -0.57145,-2.96115 -0.63828,-1.30007 -1.53939,-2.09127 -3.35073,-2.93517 -0.67885,-0.31586 -1.07799,-0.45683 -1.71438,-0.46755 z m -156.23962,0.052 c -0.26901,10e-4 -0.50251,0.14315 -0.85717,0.44158 -0.34469,0.29004 -0.87185,0.5195 -1.16887,0.5195 -0.37574,0 -0.96574,0.38501 -1.94813,1.27277 -0.77659,0.70179 -1.73676,1.55454 -2.12994,1.87019 -0.39319,0.31568 -0.82161,0.88713 -0.96108,1.27278 -0.13992,0.38698 -0.44431,0.73511 -0.67535,0.80523 -0.59899,0.18179 -1.14291,0.71961 -1.14291,1.11691 0,0.18762 -0.23313,0.56218 -0.51949,0.83122 -0.44289,0.41604 -0.50049,0.59073 -0.38963,1.24679 0.0844,0.49955 0.0659,0.77925 -0.0778,0.77925 -0.38786,0 -0.24347,0.43426 0.18182,0.54547 0.44101,0.11534 0.57631,0.52215 0.15585,0.46755 -0.8023,-0.10415 -0.98704,0.014 -0.98704,0.7273 0,0.45252 -0.1195,0.75744 -0.31172,0.8312 -0.44241,0.16979 -0.37447,0.49353 0.10383,0.49353 0.60291,0 0.52672,0.75166 -0.10383,1.039 -0.58151,0.26496 -0.6579,0.59743 -0.15584,0.59743 0.30975,0 0.29592,0.0339 -0.026,0.38962 -0.22987,0.25402 -0.27222,0.43152 -0.12986,0.5195 0.42125,0.26035 0.23353,0.91202 -0.36365,1.22082 -0.55038,0.28461 -0.59662,0.36074 -0.38963,0.90913 0.18405,0.4876 0.17752,0.6537 -0.10383,0.9351 -0.46958,0.46959 -0.45977,0.53938 0.46754,1.97409 0.44915,0.69493 0.80523,1.30138 0.80523,1.37669 0,0.0753 -0.2128,0.35967 -0.49351,0.6234 -0.28072,0.26372 -0.51951,0.59206 -0.51951,0.7273 0,0.13523 -0.28062,0.35154 -0.6234,0.49351 -0.82719,0.34264 -1.30855,1.36756 -1.61045,3.37675 -0.13497,0.89829 -0.3221,2.13579 -0.41561,2.75336 -0.0935,0.61758 -0.17242,2.01452 -0.18183,3.09103 -0.0133,1.52066 -0.1708,2.57261 -0.72729,4.7794 -0.76356,3.02795 -1.74033,8.1437 -1.74033,9.14318 0,1.04447 -0.2026,0.47956 -0.49352,-1.40264 -0.16143,-1.04436 -0.3257,-4.33408 -0.38962,-7.74054 -0.10415,-5.5562 -0.37848,-8.35442 -1.09096,-11.79266 -0.10157,-0.49055 -0.51517,-0.74733 -3.42868,-2.15592 l -3.32481,-1.61045 -0.10383,-1.61045 c -0.0713,-0.96278 -0.37228,-2.31415 -0.7273,-3.35078 -0.40847,-1.19271 -0.65878,-2.53186 -0.83119,-4.28587 -0.27247,-2.77173 -1.27627,-7.17429 -1.92215,-8.46785 -1.03574,-2.07425 -3.24888,-4.30342 -4.59757,-4.62356 -0.41086,-0.0975 -1.3719,-0.12193 -2.12996,-0.052 -1.11832,0.10329 -1.68066,0.2833 -2.96115,1.01302 -2.11344,1.20437 -2.50098,1.63453 -3.48064,3.71442 l -0.8312,1.76629 -0.15585,3.79236 -0.12988,3.76638 -0.75327,1.03899 c -1.37985,1.85367 -1.6427,2.55777 -1.81826,4.9872 -0.0885,1.22397 -0.25952,2.33687 -0.38961,2.4936 -0.13007,0.15674 -0.78156,0.40421 -1.42863,0.54548 -1.7056,0.37237 -2.02465,0.53914 -2.36372,1.19484 -0.62734,1.21312 -1.40428,4.93206 -1.76631,8.5198 -0.27189,2.69432 -0.50911,4.11663 -0.90912,5.29889 -0.34543,1.02102 -0.60187,2.26813 -0.67535,3.40273 l -0.10383,1.79228 -1.03899,1.01303 c -1.38177,1.34862 0.93081,6.94794 -2.22152,6.94794 -1.7153,0 -2.33212,0.0948 -3.03906,0.4156 -0.50912,0.23102 -1.35777,0.40415 -2.00008,0.4156 -1.45858,0.026 -2.57154,0.41336 -2.57154,0.90913 0,0.53006 1.08043,0.78344 2.38971,0.54547 1.77919,-0.32337 2.01531,0.0125 0.9351,1.42862 -0.4404,0.57743 -1.33952,1.25472 -2.59751,2.00008 -1.05488,0.62502 -1.95659,1.24617 -2.00006,1.37668 -0.0849,0.25466 0.90525,0.6013 1.11691,0.38962 0.0699,-0.0699 0.28965,0.0233 0.49354,0.2078 0.29797,0.26967 0.59052,0.30626 1.45459,0.18182 1.12847,-0.16251 1.5497,-0.19221 2.3897,-0.12986 1.10489,0.082 2.66047,-0.11745 3.117,-0.41561 0.30503,-0.19921 1.1844,-0.3702 2.41568,-0.44158 2.23046,-0.12928 0.51433,-5.93572 3.10466,-7.31159 0.86832,-0.46121 1.62363,-0.79207 1.68837,-0.7273 0.0648,0.0647 -0.39275,1.02318 -1.01302,2.12994 -0.94483,1.6859 -1.08725,2.05569 -0.85718,2.2858 0.23011,0.23013 0.0671,0.80313 -1.039,3.48066 -2.9557,7.15474 -2.82856,6.78925 -2.41566,7.09117 0.33824,0.24734 0.34242,0.38756 0.12986,1.84422 -0.12774,0.87529 -0.42199,3.84665 -0.64936,6.59764 -0.43958,5.31858 -0.57806,6.382866 -1.22082,9.50686 -0.5578,2.71099 -0.55361,2.65343 0.54547,2.961153 0.5155,0.144337 0.98338,0.37457 1.039,0.519501 0.0556,0.144909 0.009,1.992648 -0.10383,4.104047 -0.19208,3.590613 -0.27436,4.02362 -1.03899,6.545698 -0.64397,2.124079 -0.88797,3.474205 -1.22083,6.415824 -0.4965,4.387862 -0.82704,9.800387 -0.8312,13.610898 -0.002,2.20557 -0.098,2.886357 -0.41559,3.662473 -0.21527,0.526108 -0.42446,1.513373 -0.49353,2.181901 -0.0995,0.962245 -0.41124,1.738636 -1.48058,3.766373 -0.74291,1.408758 -1.76915,3.195688 -2.28579,3.974173 l -0.96107,1.428626 0.052,2.000074 c 0.0261,1.454283 0.12877,2.161094 0.36365,2.519575 0.17922,0.273489 0.40432,0.493524 0.49353,0.493524 0.26599,0 4.01039,-1.357849 4.64952,-1.688374 0.6544,-0.338391 0.98536,-0.939339 1.29875,-2.33775 0.18285,-0.815922 1.4488,-3.955696 2.96116,-7.350923 0.68875,-1.546257 0.78181,-2.272949 0.41559,-3.324799 -0.1747,-0.501729 -0.3092,-1.057602 -0.31169,-1.246799 -0.005,-0.657912 2.23354,-8.040919 3.27285,-10.779624 1.49844,-3.948623 2.10401,-6.043092 2.72736,-9.402947 0.49297,-2.657006 0.67929,-3.203877 1.7663,-5.402798 1.13381,-2.293591 1.23252,-2.632334 1.58448,-5.117074 l 0.36365,-2.64945 1.63642,0.05196 c 2.46043,0.07886 2.51958,0.110371 2.51958,1.116926 0,0.470559 0.13655,2.047495 0.31169,3.480649 0.32678,2.674115 0.30093,3.595548 -0.31169,8.805522 -0.14692,1.246495 -0.14395,2.441484 0,3.844299 0.2659,2.593594 0.26416,9.828764 0,10.779623 -0.11047,0.397613 -0.54605,1.279025 -0.96108,1.948125 -0.86744,1.398484 -0.82456,0.959021 -0.54547,7.792498 l 0.18183,4.545623 0.62339,0.597425 c 0.82719,0.817601 2.91875,2.052025 3.48065,2.052025 0.33309,0 0.68566,-0.339454 1.29875,-1.272776 1.02887,-1.566238 1.15931,-2.031842 0.85717,-3.091024 -0.13004,-0.45592 -0.52074,-2.200484 -0.85717,-3.870274 -0.52263,-2.592736 -0.59762,-3.365984 -0.5195,-5.272923 0.0868,-2.11542 0.17413,-2.439772 1.53252,-6.441799 1.37443,-4.049205 2.62617,-8.403432 3.09103,-10.701697 0.12033,-0.59491 0.31508,-2.923309 0.41561,-5.169024 0.1005,-2.245715 0.34407,-5.007241 0.54547,-6.130097 l 0.36365,-2.02605 2.8053,-0.129875 c 2.00916,-0.08743 2.91592,-0.211588 3.11699,-0.415601 0.21748,-0.22063 0.34145,-2.08796 0.59743,-8.234067 0.35214,-8.4547 0.66782,-11.65489 1.1429,-11.9485 0.24221,-0.14969 0.19247,-0.87082 -0.28573,-4.72745 -0.31049,-2.50426 -0.63416,-4.97111 -0.70132,-5.45475 -0.004,-2.55264 -0.12471,-2.52159 1.74027,-4.46783 l 1.40265,-1.11693 c 0.76765,-0.61635 1.60018,-1.19789 1.84422,-1.27278 0.40473,-0.12417 1.11898,-1.0752 2.00008,-2.67542 0.33334,-0.60537 0.32852,-0.58137 0.20781,0.8312 -0.0671,0.78601 -0.35462,3.21324 -0.62341,5.40279 -0.26877,2.18958 -0.52727,4.71233 -0.59743,5.61061 -0.0702,0.89828 -0.25799,2.42233 -0.41559,3.37676 -0.15761,0.95442 -0.3681,2.5153 -0.44158,3.48064 l -0.12988,1.76629 0.98705,0.23378 c 0.94199,0.2372 0.94398,0.27124 0.83121,0.90913 -0.0637,0.36039 -0.21275,1.44816 -0.33767,2.41567 l -0.23378,1.76629 1.03899,2.02606 c 0.94559,1.88428 1.10933,2.10843 2.18191,2.77933 l 1.16886,0.727297 0.49354,-0.519497 c 0.30245,-0.32634 0.44461,-0.65115 0.36365,-0.85717 -0.072,-0.18326 -0.17123,-1.81396 -0.2078,-3.61053 -0.0553,-2.70645 -0.0342,-3.02166 0.12987,-1.92216 0.10891,0.72987 0.27448,1.468 0.36365,1.63643 0.0892,0.16844 0.73746,0.46866 1.42863,0.67535 0.7008,0.2096 1.34583,0.52411 1.4546,0.7273 0.40056,0.74851 1.64965,5.990161 2.44165,10.234148 0.45052,2.414143 1.04759,5.483995 1.32472,6.831423 0.27713,1.34743 0.77253,4.417281 1.11692,6.831424 0.3444,2.414144 0.78529,5.355463 0.98706,6.519723 0.41674,2.404853 0.34611,3.806871 -0.38963,6.467773 -0.2998,1.084334 -0.49091,2.481639 -0.57145,4.2599 -0.0912,2.013265 -0.23463,2.991529 -0.59743,4.052099 -0.3612,1.056114 -0.44687,1.619602 -0.33767,2.259824 0.22999,1.348738 0.11036,4.381487 -0.2078,5.143048 -0.15922,0.381098 -0.3117,1.191958 -0.3117,1.81825 0,0.923438 0.10383,1.246816 0.49352,1.636425 0.59151,0.591523 2.49362,1.014263 3.71443,0.831199 1.88097,-0.282067 2.39783,-1.366832 1.84422,-3.818323 -0.43147,-1.910588 -0.41422,-2.026051 0.18183,-2.026051 0.4144,0 0.54396,0.150341 0.7273,0.831201 0.15822,0.587558 0.35527,0.897563 0.7273,1.038999 0.47636,0.181127 0.51975,0.277572 0.41559,1.064975 -0.568,4.294478 -0.61045,5.279575 -0.31169,5.818399 0.48211,0.869501 1.48566,1.272775 3.29882,1.272775 1.66006,3.31e-4 2.64846,-0.323329 2.88323,-0.935099 0.23619,-0.615538 0.12419,-2.042483 -0.25976,-3.27285 -0.21023,-0.673705 -0.42657,-1.889501 -0.46755,-2.727374 l -0.0778,-1.532526 0.93509,-0.337674 c 0.50169,-0.186397 0.98324,-0.478622 1.09095,-0.649375 0.12957,-0.205423 0.0924,-0.969778 -0.12987,-2.233849 -0.18483,-1.050695 -0.45127,-3.133665 -0.57146,-4.649524 -0.12015,-1.515859 -0.37713,-4.108348 -0.59741,-5.740474 -0.37159,-2.753166 -0.509,-3.385252 -1.22084,-5.896324 -0.24244,-0.855354 -0.20673,-1.14959 0.57146,-4.285873 0.45971,-1.852715 1.10872,-4.853026 1.4546,-6.649598 0.3459,-1.796572 1.13027,-5.31802 1.74032,-7.844448 1.34306,-5.561941 2.29983,-10.249701 2.62349,-12.857613 l 0.25974,-1.94812 1.37667,-0.7273 1.40265,-0.70134 -0.10382,-1.84423 c -1.17652,-10.27408 -0.79809,-8.99262 0.57145,-4.02611 0.16721,0.81263 0.37979,1.64629 0.49352,1.84421 0.11373,0.19795 0.38421,1.4364 0.59743,2.77934 0.42569,2.68087 0.3777,3.10484 -0.54548,4.07807 l -0.54547,0.57145 0.6234,0.49353 c 0.33685,0.27608 0.86009,0.55781 1.16888,0.6234 0.30878,0.0655 0.54547,0.23524 0.54547,0.38962 0,0.481058 1.10798,0.31994 2.10397,-0.31169 1.02412,-0.64948 1.01614,-0.66215 1.37667,-2.77934 0.23893,-1.40309 0.23198,-1.51092 -0.38962,-3.37676 l -0.64937,-1.92214 0,-5.8184 c -0.01,-3.20401 -0.13485,-7.05205 -0.28572,-8.57175 -0.1505,-1.51585 -0.34479,-3.75205 -0.41561,-4.9872 -0.36185,-6.3073 -1.63185,-18.32227 -2.44164,-22.98786 -0.16565,-0.95443 -0.3117,-1.94412 -0.3117,-2.20788 -8.4e-4,-0.83452 -0.58401,-1.77672 -1.32473,-2.12994 -0.875,-0.41726 -0.90718,-0.75328 -0.0778,-0.75328 l 0.62339,0 -0.64938,-0.90913 c -0.37894,-0.52763 -0.61636,-1.03596 -0.54547,-1.22082 0.17517,-0.45644 0.51732,-0.40316 0.75328,0.12987 0.19328,0.43664 0.20005,0.43321 0.0778,-0.052 -0.30597,-1.21556 -0.24119,-1.9548 0.25975,-2.83128 0.59203,-1.03583 0.54528,-1.63134 -0.23377,-2.77931 -0.28609,-0.42161 -0.51949,-0.96402 -0.51949,-1.19486 0,-0.23083 -0.24424,-0.67259 -0.54548,-0.98704 -0.4082,-0.42606 -0.57091,-0.8649 -0.67535,-1.74032 -0.10991,-0.92133 -0.33764,-1.45106 -1.03901,-2.46763 -0.49186,-0.71293 -1.08682,-1.63481 -1.32472,-2.02605 -0.23789,-0.39123 -0.72795,-0.93898 -1.06498,-1.24681 -0.33702,-0.30782 -0.77892,-0.93805 -0.98705,-1.37667 -0.41303,-0.87042 -1.90696,-2.40156 -2.77932,-2.85724 -0.30233,-0.15792 -1.15218,-0.36221 -1.89617,-0.46757 -0.74399,-0.10533 -1.48442,-0.3198 -1.66241,-0.46754 -0.17797,-0.14774 -0.94765,-0.34113 -1.68837,-0.4156 -0.74069,-0.0745 -1.58112,-0.18452 -1.8702,-0.25974 -0.0992,-0.0258 -0.19604,-0.0526 -0.28572,-0.052 z m 23.6892,28.20884 c -0.3214,0.55434 -0.60885,1.60591 -0.85718,3.16895 -0.48668,3.06524 -0.4907,9.80804 0,12.6758 0.4126,2.4112 0.42645,3.47509 0.0259,4.7794 -0.524,1.70683 -0.63114,7.31802 -0.20781,11.6368 0.24576,2.51086 0.33797,4.52449 0.25975,6.33789 -0.065,1.50715 0.004,4.06739 0.15585,5.9223 0.22953,2.81922 0.35932,3.48953 0.9351,4.9872 0.69264,1.801709 1.61773,2.955546 2.57153,3.194926 0.25986,0.06517 0.54781,0.234324 0.64937,0.363651 0.10146,0.129348 0.28233,3.303628 0.4156,7.065199 0.13326,3.761573 0.29965,7.117966 0.36365,7.454823 0.29923,1.574715 0.70053,1.861951 3.24688,2.363725 0.6737,0.132762 1.29413,0.3403 1.37668,0.46755 0.0824,0.12725 0.12737,0.77864 0.12987,1.4546 0.004,1.733017 1.61629,7.264611 3.87027,13.273221 1.38658,3.696304 1.49254,4.7368 1.06497,11.377047 -0.28494,4.425607 -0.18095,5.071441 0.96108,6.259974 1.50477,1.566013 3.09758,1.252194 4.18197,-0.805225 0.6581,-1.248578 0.65938,-1.895542 0.052,-5.662548 -0.21156,-1.311767 -0.26311,-2.623325 -0.18183,-4.285874 l 0.12988,-2.3897 -0.77925,-1.116924 c -0.42086,-0.617566 -0.85381,-1.403465 -0.96108,-1.740326 -0.10726,-0.336859 -0.26225,-3.454466 -0.36365,-6.935322 -0.10136,-3.480857 -0.26528,-6.882512 -0.33768,-7.532748 l -0.12987,-1.168876 1.81825,0.05196 1.81826,0.05196 0.25974,0.8312 c 0.22456,0.664364 0.24755,1.181221 0.052,2.727375 -0.33223,2.626159 -0.28648,5.415707 0.10383,7.091173 0.37459,1.607649 1.19296,5.986393 1.53253,8.182123 l 0.23378,1.480574 -0.77925,1.2468 c -1.01409,1.669357 -1.0849,2.561584 -0.38962,4.493674 0.99473,2.764288 1.10436,3.248945 1.32471,5.870348 0.27186,3.233991 0.4334,3.688333 1.53253,4.701475 1.61427,1.487989 2.58018,1.756632 3.71442,1.064974 1.29622,-0.790412 1.314,-2.883274 0.0779,-7.065198 -1.56337,-5.289374 -1.72104,-6.047311 -1.68838,-7.922373 0.0174,-0.998345 0.21304,-2.973975 0.44157,-4.389775 1.59275,-9.867404 1.91369,-14.029033 1.32473,-16.468145 -0.16268,-0.673713 -0.28324,-1.649563 -0.28573,-2.181899 -0.002,-0.874583 0.0557,-1.022456 0.67536,-1.428625 l 0.70132,-0.441574 0.10383,-9.558798 0.0778,-9.558802 0.54547,-0.4156 c 0.29972,-0.23575 1.06271,-1.21564 1.68838,-2.15592 l 1.1429,-1.68837 -0.10383,-3.5326 -0.12987,-3.5326 0.25974,2.18189 c 0.17065,1.52015 0.34759,2.26978 0.59743,2.54555 0.25391,0.28025 0.36365,0.74258 0.36365,1.58448 0,1.00057 0.12434,1.44738 0.85717,2.83127 0.73724,1.39221 1.04602,1.73247 2.00007,2.33776 0.61758,0.39179 1.15538,0.74685 1.19486,0.77925 0.0394,0.0324 -0.0959,1.430767 -0.28572,3.116996 -0.18979,1.686218 -0.28053,3.181146 -0.20781,3.298822 0.0771,0.124739 0.92844,0.2078 2.05202,0.2078 1.18958,0 1.94813,0.07769 1.94813,0.207798 0,1.131045 1.13362,10.057857 1.53252,12.052397 0.68474,3.423368 0.89874,5.991759 0.90913,11.013398 0.004,2.301859 0.0967,5.467225 0.20781,7.039224 0.37083,5.247622 1.06315,11.843457 1.27276,12.104347 0.11397,0.141818 0.34208,0.23739 0.51951,0.207799 0.60136,-0.100144 0.53996,0.725613 -0.10382,1.272775 -0.33408,0.283912 -0.72512,0.708431 -0.85718,0.961075 -0.13202,0.252643 -0.37186,0.467549 -0.51949,0.467549 -0.14765,0 -0.71515,0.523232 -1.27277,1.168876 -1.71982,1.991329 -1.96868,2.413779 -1.81827,3.013099 0.20559,0.818997 1.1634,1.116924 3.55859,1.116924 2.32761,0 3.78488,-0.239801 5.24695,-0.909125 0.56142,-0.257032 1.83525,-0.590674 2.83127,-0.727299 2.34696,-0.321949 2.57153,-0.548492 2.57153,-2.415676 0,-1.163105 0.0981,-1.525848 0.57143,-2.285798 0.77462,-1.243658 0.96006,-1.761654 1.24681,-3.142974 0.24569,-1.183471 0.25738,-1.191234 -0.51949,-2.701399 -0.42947,-0.834816 -1.27525,-2.136608 -1.8702,-2.883224 -0.68055,-0.853984 -1.03904,-1.464758 -0.96109,-1.662401 0.27491,-0.696586 0.34511,-3.305499 0.12989,-5.220973 -0.12556,-1.11749 -0.32776,-3.401643 -0.44158,-5.065124 -0.11381,-1.663505 -0.36305,-3.665569 -0.54547,-4.467699 -0.23653,-1.039949 -0.28018,-1.884112 -0.18183,-2.909199 0.37716,-3.931531 0.5606,-6.240926 0.75328,-9.506848 0.35504,-6.017678 0.40385,-6.623274 0.64936,-6.779473 0.13052,-0.08303 0.90425,-0.154187 1.71436,-0.155849 1.19677,-0.0025 1.50881,0.07338 1.6624,0.363649 0.10393,0.196501 0.95099,2.456578 1.8702,5.039149 0.9192,2.582571 1.98669,5.32569 2.36372,6.078148 0.59018,1.177857 1.29699,3.455379 1.92216,6.078149 0.0936,0.392999 0.3619,2.368633 0.59741,4.389774 0.23555,2.021145 0.76741,5.616325 1.16888,7.974323 l 0.72731,4.285872 -0.41561,4.441726 c -0.28625,3.041958 -0.36712,4.636482 -0.23377,4.987198 0.10745,0.282633 0.76501,1.377141 1.4546,2.44165 0.9976,1.540014 1.27257,2.148402 1.3507,2.961149 0.11555,1.202679 0.25038,1.27319 2.44165,1.5585 0.96953,0.126233 1.83391,0.397121 2.44165,0.753275 0.51232,0.300254 1.34717,0.631145 1.8702,0.727299 1.35082,0.248395 6.30728,0.0719 6.67557,-0.233775 0.16291,-0.135211 0.28573,-0.496259 0.28573,-0.805225 0,-0.641587 -0.93143,-2.436604 -1.35071,-2.597499 -0.15368,-0.05901 -0.25975,-0.248097 -0.25975,-0.4156 0,-0.167487 -0.25792,-0.533497 -0.57144,-0.8312 -1.16669,-1.107731 -1.68839,-1.982835 -1.68839,-2.857249 0,-1.325589 -0.68337,-4.685523 -2.62347,-12.701772 -1.70389,-7.040279 -1.83217,-7.723799 -2.33774,-12.545921 -0.2943,-2.807144 -0.61086,-5.829238 -0.67536,-6.727524 -0.0645,-0.898286 -0.2873,-2.161753 -0.49351,-2.779325 -0.21742,-0.651174 -0.46194,-2.361327 -0.59744,-4.078074 -0.12849,-1.628142 -0.3312,-3.527932 -0.44157,-4.233923 -0.11036,-0.706012 -0.14471,-1.372515 -0.0778,-1.480575 0.0669,-0.108074 0.51648,-0.199179 0.98706,-0.2078 1.19988,-0.022 2.39638,-0.427418 2.70139,-0.909123 0.26461,-0.417883 0.0658,-1.361415 -2.88322,-14.260274 l -0.7273,-3.2209 1.01302,-3.81831 c 2.39616,-8.85013 2.92187,-11.7347 2.93517,-16.05256 l 0.0259,-3.48064 -2.00007,-7.35093 c -2.88761,-10.67829 -3.09322,-11.29665 -3.9221,-12.07836 -0.93597,-0.88274 -2.88062,-1.82896 -5.01318,-2.41569 -1.57569,-0.4335 -2.02245,-0.68593 -4.46769,-2.46762 -1.49861,-1.09194 -2.78448,-2.01063 -2.83128,-2.05202 -0.0467,-0.0413 -0.0779,-0.76265 -0.0779,-1.61044 0,-1.51919 0.009,-1.56378 0.72729,-2.15593 1.17555,-0.96896 1.91428,-3.87029 0.98706,-3.87029 -0.37406,0 -0.35598,-0.0401 -0.052,-1.16887 0.41658,-1.54626 0.41515,-3.44028 0,-4.23392 -0.48965,-0.93609 -2.07671,-2.32593 -3.35077,-2.9092 -1.51675,-0.69441 -3.20791,-0.57664 -5.06513,0.33767 -2.10351,1.03556 -2.96115,2.62528 -2.96115,5.45476 0,1.1492 -0.0623,1.29158 -0.46755,1.35069 -0.31522,0.046 -0.49588,0.25861 -0.6234,0.75328 -0.27404,1.06286 0.18802,2.42718 1.14291,3.37675 l 0.80522,0.77924 -0.15585,2.1819 c -0.16861,2.53345 -0.33947,2.89827 -2.33776,4.9872 -1.50222,1.57036 -1.73449,1.70147 -4.64952,2.88323 -2.00916,0.81452 -3.20544,1.50881 -4.18197,2.41567 -0.44632,0.41449 -1.10277,2.76458 -2.28579,8.23408 -0.43212,1.99775 -1.67455,10.06138 -1.9741,12.83164 -0.23324,2.1569 -0.14183,14.12277 0.12986,17.76689 0.10522,1.41096 0.10265,1.42284 -0.20779,0.75328 -0.39883,-0.86011 -0.68324,-3.66899 -0.9351,-9.68866 -0.1989,-4.75352 -0.27658,-5.42576 -1.01303,-7.92238 -0.61042,-2.06946 -0.82792,-4.47373 -1.01302,-11.7407 -0.18307,-7.18652 -0.23499,-7.69424 -1.24681,-8.64967 -24.866,55.521378 -5.27469,8.93766 -27.8452,1.09092 z m 173.95449,-27.97519 c -0.11237,-0.008 -0.18368,-0.006 -0.25966,0.026 -0.19807,0.0858 -1.19734,0.16587 -2.20791,0.18182 -1.44098,0.0228 -2.00901,0.12767 -2.64946,0.46755 -1.99829,1.06039 -4.53552,4.7163 -5.11703,7.40287 -0.0848,0.39162 -0.3663,1.17901 -0.6494,1.74033 -0.50247,0.99704 -0.51743,1.07373 -0.36365,3.76637 0.0862,1.51597 0.1457,3.10306 0.12983,3.50663 -0.0158,0.40358 0.14461,1.14127 0.36372,1.63643 0.21903,0.49515 0.50646,1.66454 0.6234,2.59749 0.11696,0.93296 0.25768,1.75654 0.31171,1.84423 0.054,0.0877 0.008,0.48215 -0.10383,0.88315 -0.21229,0.7688 -0.88048,1.29175 -2.33783,1.81824 -0.42382,0.15315 -0.98847,0.54445 -1.2468,0.88316 -0.51368,0.67331 -0.90077,2.54979 -0.90908,4.38977 0,0.61757 -0.22784,2.87975 -0.51951,5.01318 -0.37088,2.71443 -0.58274,5.44819 -0.70127,9.09124 -0.11638,3.56962 -0.26467,5.4742 -0.46764,6.10413 -0.33714,1.04672 -0.72414,4.72655 -0.85713,8.18211 -0.0498,1.2913 -0.23615,2.98037 -0.4156,3.76637 -0.17971,0.78601 -0.69754,3.21323 -1.1429,5.40281 l -0.80527,4.00014 0.44162,1.63643 c 0.58715,2.12189 1.49649,3.13742 3.0131,3.4287 0.56638,0.10879 0.69338,0.0683 0.77925,-0.25975 0.0623,-0.23912 0.32692,-0.42969 0.64934,-0.46755 0.46347,-0.0544 0.52306,-0.16579 0.54551,-0.83119 0.0141,-0.42107 -0.0275,-0.75329 -0.10383,-0.75329 -0.0765,0 -0.39082,-0.2149 -0.67535,-0.46754 -0.70917,-0.62959 -0.85347,-1.69992 -0.44153,-3.117 0.21379,-0.7348 0.28426,-1.49306 0.20781,-2.10397 -0.41553,-3.31594 -0.42426,-3.08375 0.49348,-4.90929 0.46822,-0.93117 0.89279,-1.65315 0.93509,-1.61043 0.0423,0.0426 -0.11114,1.19163 -0.3117,2.57151 -0.3585,2.47068 -0.34378,2.51047 0.0515,3.0131 0.38053,0.4839 0.3886,0.75983 0.28578,5.24695 -0.099,4.31394 -0.42126,7.826936 -0.96112,10.415981 -0.1123,0.53889 -0.2078,1.647408 -0.2078,2.467624 8e-5,1.300023 0.0831,1.555145 0.51949,2.02605 0.37929,0.409311 0.68492,0.545474 1.29876,0.545474 0.72888,0 0.8174,0.06164 0.9351,0.597426 0.16715,0.761317 0.42997,0.859452 2.67547,0.987049 l 1.84417,0.103912 0.25976,1.402649 c 0.13265,0.773853 0.23372,1.880206 0.23372,2.467624 0,0.686984 0.16127,1.446001 0.46764,2.103975 0.3225,0.692558 0.52275,1.614696 0.62341,2.857249 0.20363,2.516527 0.55191,4.168391 2.20783,10.909497 0.78597,3.200145 1.58177,6.868146 1.76629,8.130173 0.3157,2.157537 0.30431,2.323678 -0.0258,2.883224 -0.28767,0.487483 -0.33771,1.116667 -0.33771,3.48065 0,3.231463 -0.16649,3.759501 -1.63638,5.532673 -1.30257,1.571325 -1.55625,2.49 -0.93511,3.37675 0.16217,0.231762 0.39126,0.84129 0.51951,1.3507 0.25418,1.009491 0.66372,1.329619 1.84418,1.454598 1.58851,0.168127 4.62978,0.122269 5.35085,-0.07787 0.98779,-0.274321 1.27332,-0.760507 1.89613,-3.091024 0.28103,-1.051078 0.77368,-2.395527 1.06502,-3.013099 l 0.51949,-1.142901 0.15586,0.701326 c 0.0843,0.373865 0.20588,1.372576 0.28577,2.233848 0.13605,1.469388 0.35184,2.078001 0.7273,2.078001 0.0879,0 0.21312,-1.309131 0.25966,-2.909199 0.0798,-2.719728 0.12069,-3.005786 0.7273,-4.41575 1.01739,-2.36512 0.86836,-3.357581 -0.77916,-5.039148 -1.65825,-1.692473 -1.69841,-1.811501 -1.87021,-8.675649 -0.22924,-9.154735 -0.4722,-10.731433 -2.25986,-14.078446 -1.64361,-3.077159 -1.77818,-3.324752 -1.92215,-4.130023 -0.12401,-0.694233 -0.0815,-0.772088 0.41559,-0.961075 0.30016,-0.114123 0.92971,-0.2078 1.40266,-0.2078 0.99004,0 1.7663,-0.458564 1.7663,-1.039 0,-0.393205 0.29416,-0.404411 1.37663,-0.07793 0.25983,0.07833 0.45932,-0.545924 0.46763,-1.376673 0,-0.450144 0.12161,-0.540622 0.70128,-0.649376 0.49091,-0.0921 0.7229,-0.271367 0.80519,-0.597424 0.0851,-0.339063 0.35434,-0.518178 1.03901,-0.701325 1.38627,-0.370768 1.43274,-0.570476 1.14289,-5.091099 -0.13532,-2.110689 -0.33497,-4.546712 -0.44153,-5.402802 -0.22816,-1.83211 0.0532,-3.07248 0.7273,-3.19492 0.22462,-0.0408 0.63473,-0.26454 0.88318,-0.49353 0.24853,-0.22897 0.65223,-0.52134 0.90908,-0.64937 0.71998,-0.35888 0.99445,-1.20427 1.27283,-3.76638 0.18509,-1.70626 0.2023,-2.75036 0.0515,-3.76637 -0.14919,-1.00641 -0.13973,-1.62821 0.0258,-2.1819 0.12726,-0.42471 0.23382,-0.97911 0.23382,-1.2468 0,-0.26769 0.14837,-1.40121 0.33771,-2.49361 0.34254,-1.9759 0.34204,-1.97789 1.03901,-2.20786 l 0.70128,-0.23378 -0.12992,-6.6496 c -0.0781,-3.6649 -0.16008,-9.05504 -0.18178,-11.97447 -0.0365,-4.94314 -0.0979,-5.67178 -0.80518,-10.51987 -0.41785,-2.86329 -0.91224,-5.59627 -1.09105,-6.07815 -0.3732,-1.00586 -0.8385,-1.39366 -2.02595,-1.58448 -1.47068,-0.2363 -3.80078,-1.04622 -4.00027,-1.40264 -0.10587,-0.18921 -0.28768,-1.23488 -0.38958,-2.31178 -0.10179,-1.07689 -0.30538,-2.27293 -0.44161,-2.64946 -0.19019,-0.53266 -0.19069,-0.71839 0,-0.90911 0.46306,-0.46307 0.29016,-1.16243 -0.46747,-1.74033 -0.66081,-0.50427 -0.7317,-0.61593 -0.62341,-1.27278 0.41868,-2.53944 0.40688,-2.65581 -0.23382,-3.45466 -0.33364,-0.41607 -0.6406,-0.96608 -0.70128,-1.24681 -0.55274,-2.55968 -1.13757,-3.85877 -2.3897,-5.42878 -0.81249,-1.01879 -2.38204,-1.99786 -3.16903,-2.05202 z m -75.17159,0.38963 c -0.51858,0.0159 -0.99444,0.0506 -1.37668,0.12987 -1.44366,0.2997 -2.40581,1.10682 -3.79234,3.16895 -1.6648,2.47599 -2.58823,5.2668 -2.05202,6.25997 0.17678,0.32739 0.27571,1.25869 0.25975,2.83128 -0.0149,1.48008 0.0444,2.20552 0.15584,1.94811 0.0972,-0.22456 0.17352,-0.82151 0.18183,-1.29874 0.008,-0.47721 0.0927,-0.85717 0.20781,-0.85717 0.28746,0 0.53756,0.7171 0.70131,2.05202 0.0758,0.61854 0.24547,1.26116 0.36365,1.42863 0.17367,0.24608 0.18184,0.21351 0.0779,-0.10383 -0.18815,-0.57477 0.0894,-2.18814 0.36365,-2.10397 0.12688,0.039 0.52031,0.63634 0.85717,1.32474 0.33685,0.6884 0.78288,1.44119 0.98705,1.66239 0.32542,0.35256 0.34016,0.53553 0.15585,1.53253 -0.45641,2.46894 -1.2576,3.17522 -4.4677,3.97417 -1.96794,0.48979 -2.785,0.88284 -3.68845,1.74033 -0.86864,0.82444 -0.98578,1.45095 -1.1429,5.24694 -0.12908,3.1184 -0.147,3.17329 -0.88315,4.64952 -0.89277,1.79034 -0.95557,2.89516 -0.28573,5.01318 0.60975,1.92803 0.5743,3.70223 -0.10382,5.97425 -0.29703,0.99507 -0.75379,2.51163 -1.01303,3.37675 -0.25925,0.86512 -0.66932,3.25177 -0.90912,5.2989 -0.23979,2.04712 -0.5072,4.13706 -0.59742,4.64953 -0.0902,0.51246 -0.40224,2.36379 -0.70133,4.10404 -0.41697,2.42612 -0.77419,3.75753 -1.53252,5.7145 -0.75585,1.95056 -1.02615,2.92895 -1.11693,4.13002 l -0.10383,1.5585 1.01302,0.98706 c 0.56826,0.53922 1.26055,1.10284 1.53253,1.24679 0.58103,0.30753 0.5911,0.31406 0.2078,2.75335 -0.16302,1.037445 -0.5212,4.084627 -0.77925,6.77948 -0.4491,4.689623 -0.45774,5.699946 -0.46755,23.481394 -0.01,17.966483 -0.0489,19.41745 -0.6234,22.494344 -0.10619,0.56859 -0.0442,0.699621 0.41561,0.909126 0.29263,0.133332 0.51949,0.345687 0.51949,0.493524 0,0.147804 0.26266,0.434493 0.57145,0.6234 0.30878,0.188932 0.72925,0.564608 0.96107,0.8312 0.35826,0.412025 0.77773,0.51354 2.67543,0.753275 2.06777,0.261245 2.27974,0.259649 2.98712,-0.07787 l 0.75328,-0.363651 -0.10383,0.753276 c -0.21063,1.317268 0.10447,1.418068 4.10406,1.480574 1.90182,0.02968 3.95612,-0.0092 4.54562,-0.103891 0.89598,-0.144014 1.06496,-0.127914 1.06496,0.129875 0,0.16959 0.1194,0.358996 0.25976,0.415599 0.36223,0.146184 2.60786,0.143507 3.14297,0 0.24665,-0.06616 0.48376,-0.25659 0.51951,-0.441575 0.0553,-0.285309 0.37463,-0.335181 2.10397,-0.337674 1.62712,-0.0017 2.20541,-0.08953 2.85724,-0.415601 0.78897,-0.39467 0.80523,-0.445107 0.80523,-1.428623 0,-0.900331 0.0614,-1.033264 0.46756,-1.090951 0.32287,-0.04588 0.46757,-0.192522 0.46757,-0.519499 0,-0.446413 0.088,-0.470908 2.15587,-0.597425 2.85527,-0.174702 3.3805,-0.489294 2.90921,-1.71435 -0.11837,-0.307801 -1.21953,-11.543827 -2.44164,-24.961968 -2.47499,-27.173629 -2.43909,-27.022229 -3.16893,-30.728419 -0.49476,-2.51251 -0.51576,-2.79364 -0.31172,-5.40281 0.11862,-1.51584 0.20146,-3.53924 0.18183,-4.49367 -0.0317,-1.55048 0.0299,-1.98094 0.72732,-3.89625 1.62459,-4.46108 2.40342,-6.69582 3.11701,-9.16917 0.72248,-2.50624 0.73668,-2.62135 0.7273,-6.1301 -0.0191,-7.01947 -0.26183,-14.00452 -0.54551,-15.71487 -0.32791,-1.97714 -1.32786,-5.54379 -1.79224,-6.44179 -0.40288,-0.77915 -1.47106,-1.37333 -3.50665,-1.92217 -0.89828,-0.24218 -1.94474,-0.64841 -2.33775,-0.90911 -0.78825,-0.52287 -1.98459,-2.31236 -2.1819,-3.29883 -0.12168,-0.60845 -0.0886,-0.65294 0.70133,-0.77926 0.98442,-0.1574 2.07799,-1.01998 2.07799,-1.63641 0,-0.24433 0.19847,-0.79932 0.44158,-1.24679 0.33455,-0.61584 0.4324,-1.15148 0.41559,-2.15593 -0.0122,-0.72986 0.0826,-2.0188 0.20781,-2.88323 0.22366,-1.54343 0.22599,-1.59753 -0.38961,-2.96115 -0.34481,-0.76372 -0.73052,-1.72607 -0.85719,-2.12994 -0.43094,-1.37389 -1.38699,-2.63367 -2.31178,-3.03908 -0.87754,-0.38471 -2.80806,-0.59333 -4.36379,-0.54548 z m -132.21271,11.0134 c 0.0573,0.0206 0.1064,0.10501 0.15585,0.23376 0.0747,0.19476 0.0456,0.44794 -0.0779,0.57146 -0.16332,0.16333 -0.26482,0.12765 -0.36365,-0.12988 -0.0747,-0.19474 -0.0196,-0.44793 0.10383,-0.57145 0.0817,-0.0817 0.12448,-0.12451 0.18182,-0.10383 z m 26.05291,5.24694 c 0.15603,0.031 0.32995,0.15618 0.38964,0.31169 0.0632,0.16483 0.0634,0.33438 -0.0259,0.38963 -0.17831,0.11025 -0.64937,-0.25892 -0.64937,-0.51949 0,-0.14362 0.12969,-0.21295 0.28572,-0.18183 z m -27.32569,0.62341 c 0.19054,0 0.28573,0.17594 0.28573,0.49351 0,0.49567 -0.18998,0.66719 -0.46755,0.38963 -0.25683,-0.25681 -0.1244,-0.88314 0.18182,-0.88314 z m 26.98803,0.052 c 0.13167,-0.0194 0.25973,0.089 0.25973,0.33768 0,0.25076 -0.12231,0.4156 -0.31169,0.4156 -0.19011,0 -0.29881,-0.13622 -0.25976,-0.33768 0.0497,-0.25608 0.18002,-0.39618 0.31172,-0.4156 z m -27.32571,1.37667 c 0.76325,0 1.48857,0.80732 1.40266,1.55851 -0.0814,0.7104 -0.86607,0.93842 -1.06498,0.31169 -0.0678,-0.21334 -0.3527,-0.57691 -0.6234,-0.83119 -0.59821,-0.56199 -0.46576,-1.03901 0.28572,-1.03901 z m 26.80621,0.70133 c 0.15636,-0.0249 0.36365,0.12985 0.36365,0.33768 0,0.10565 -0.0623,0.18182 -0.15587,0.18182 -0.26583,0 -0.45968,-0.24415 -0.33767,-0.44158 0.0326,-0.0527 0.0777,-0.0697 0.12989,-0.0778 z m -0.85719,2.96115 c 0.10566,0 0.24229,0.0956 0.31171,0.2078 0.0695,0.1123 -0.0327,0.2078 -0.2078,0.2078 -0.17505,0 -0.3117,-0.0954 -0.3117,-0.2078 0,-0.11227 0.10211,-0.2078 0.20779,-0.2078 z m 115.23234,26.47228 c 0.30169,-0.0524 0.5236,0.90934 0.88315,3.50663 0.17869,1.29096 1.07517,-9.62683 1.29149,-8.57552 0.52718,2.56209 0.51585,5.13496 -0.0259,6.70155 -0.22938,0.66323 -0.69607,2.26729 -1.03901,3.55857 -0.34292,1.29129 -0.71282,2.42191 -0.80521,2.51958 -0.23926,0.25295 -0.59494,-1.22634 -0.59744,-2.44165 -10e-4,-1.28525 -0.43195,-3.00796 -1.22081,-4.80537 -0.71581,-1.63084 -0.80589,-3.12321 -0.31171,-5.94828 0.35624,-2.03652 1.27417,5.97382 1.66966,5.56241 0.0461,-0.0479 0.11276,-0.0703 0.15584,-0.0778 z m 77.45017,-7.61444 c 0.10286,-0.0899 0.25293,0.41582 0.46755,1.4546 0.25335,1.2259 0.39233,2.82954 0.4156,4.85733 0.0192,1.66474 -0.009,3.06982 -0.0515,3.117 -0.0474,0.0471 -0.34562,-1.18807 -0.64934,-2.72737 -0.45276,-2.2967 -0.53878,-3.11575 -0.44161,-4.62355 0.0838,-1.29942 0.15685,-1.98814 0.25975,-2.07801 z m -61.14516,0.44158 0.38968,1.84423 c 0.29599,1.3724 0.37004,2.26242 0.28568,3.55857 -0.1202,1.84744 -0.83369,5.77611 -1.53249,8.46785 -0.23324,0.89828 -0.4131,2.25067 -0.41559,2.98712 0,0.90784 -0.12061,1.47165 -0.33772,1.74032 -0.29208,0.3615 -0.31162,-0.0393 -0.18179,-4.41575 0.21121,-7.12092 0.22908,-7.36073 0.49349,-8.46784 0.13415,-0.56143 0.32716,-1.7034 0.4156,-2.54555 0.0884,-0.84215 0.32084,-1.91459 0.51949,-2.36372 z m 23.09184,1.29875 c 0.0573,-0.0225 0.11446,0.57605 0.2078,2.078 0.0865,1.40358 0.11787,2.85387 0.0781,3.24688 l -0.0781,0.7273 -0.12991,-0.7273 c -0.27422,-1.37677 -0.37571,-3.56281 -0.2078,-4.67551 0.0598,-0.39651 0.0952,-0.63585 0.12991,-0.64937 z m -60.41788,19.6371 c 0.0456,0.0455 -0.10286,1.04511 -0.31171,2.20787 -0.20884,1.16277 -0.44452,2.16173 -0.51949,2.23385 -0.28173,0.27089 0.0571,-2.95048 0.38962,-3.71442 0.19074,-0.43832 0.39602,-0.77287 0.44158,-0.7273 z m -122.73184,6.80544 c 0.17354,-0.0279 0.33081,0.30557 0.44157,0.96108 0.0771,0.45613 0.10167,0.85941 0.052,0.90912 -0.16582,0.16582 -0.81675,-1.51153 -0.67535,-1.74033 0.0581,-0.094 0.12397,-0.12054 0.18183,-0.12987 z m 121.35517,0.77925 c 0.0265,0.015 0.0333,0.0916 0.0259,0.25975 -0.009,0.22458 -0.0919,0.65439 -0.18182,0.93511 -0.16015,0.50017 -0.16488,0.4963 -0.18183,-0.10383 -0.009,-0.33685 0.0729,-0.76666 0.18183,-0.9351 0.0816,-0.12614 0.12927,-0.17085 0.15585,-0.15585 z m -1.92216,1.27278 c 0.12243,-0.0537 0.13175,0.0679 0.12988,0.44157 -0.003,0.6557 -0.25491,1.17372 -0.46755,0.96108 -0.24852,-0.24851 -0.13233,-1.03803 0.18183,-1.29875 0.0651,-0.054 0.11502,-0.086 0.15584,-0.10383 z m 38.28713,1.5585 c 0.16939,-0.004 0.30755,0.37699 0.64941,1.61046 0.44744,1.61467 0.42458,1.97545 -0.10383,1.16886 -0.51941,-0.7927 -0.9671,-2.43562 -0.7273,-2.67542 0.074,-0.0737 0.12536,-0.10254 0.18179,-0.10383 z m -82.73035,0.026 c 0.37455,-0.0535 0.45694,0.0718 0.57145,0.93509 0.0729,0.54719 0.0714,1.27954 0,1.63643 -0.18214,0.91082 -0.41492,0.81142 -0.80522,-0.36366 -0.43465,-1.30863 -0.34254,-2.1256 0.23377,-2.20786 z m -7.68859,0.33768 c 0.13324,-0.0477 0.23626,0.30977 0.25975,0.9351 0.0173,0.45829 -0.10823,0.88746 -0.3117,1.09094 -0.31011,0.31013 -0.32423,0.24982 -0.2078,-0.77924 0.069,-0.6108 0.1674,-1.14809 0.2078,-1.19486 0.0202,-0.0234 0.033,-0.0452 0.052,-0.052 z m -68.15839,1.11692 c 0.27883,-0.0112 0.39397,0.39728 0.33769,1.16887 -0.0353,0.48375 -0.15566,0.91835 -0.28573,0.96108 -0.53284,0.17504 -0.87795,-1.56882 -0.38963,-1.9741 0.12264,-0.1019 0.24472,-0.15224 0.33767,-0.15585 z m 188.8642,0.15585 c 0.0765,-0.006 0.1664,0.006 0.28568,0.052 0.28983,0.11103 0.32042,0.37475 0.23382,1.58447 -0.0698,0.97506 -0.21887,1.54349 -0.46757,1.81824 -0.58774,0.64949 -0.98878,0.52522 -0.83119,-0.25975 0.0731,-0.36491 0.21503,-1.19124 0.3117,-1.84422 0.14937,-1.01049 0.23748,-1.33112 0.46756,-1.3507 z"
+             id="path5265"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="ccsccccscsccccscccsccsccccccccccccccccccscssccscccscccsccccscccccccscccccscccccccccccccscccccccccccccccscsccscccccscsccccccsssccssccsccscscscccscsscscscsssscccccsscccscccccccscsccccscssscscccscccscscsccsscccsscccsccccscssccssscccsscccscccsscccsscccccssscccccccccccccccccccccscccsssccscccscssssccsccsccccccscscsccccccccccccssscccscscsscccccscscscssssccccccccsccsccccscsccssscccccccccccccccccssscccssccccccccccccssccccsscccccccsscscsssscccssccscccssccccccscsccsscscssssccccccccccccccscscscccsscccccsscssccscscccccccccccccccccccccccccccccscccccccccccsccccscccccsscccccccccsccsccccssccsccscscscccscccccccccccccscccccccsccccscccccsssssssccscssccccssscssccccccccsccccsscsscsscccccsccsccsccccccccccccccccccsccsscscssccscccscsscccscsssccscccccscccccccccccccccccsccccccccccccscccccccccccccccccccccccccccccccscccsccccccsccccsccccc" />
+          <path
+             style="fill:#ffffff;fill-opacity:1;stroke:none"
+             d="m 330.16787,-179.01007 c -0.96088,0.001 -1.90267,0.16903 -2.57153,0.49352 -1.11624,0.54152 -2.2676,1.62597 -2.96115,2.80529 -0.65152,1.10787 -1.41328,4.18147 -1.68837,6.77948 -0.121,1.14286 -0.32268,3.00524 -0.44157,4.13003 -0.26786,2.5335 -0.62703,3.76062 -1.40266,4.83135 -0.66352,0.91597 -2.74856,2.47882 -3.97416,2.98712 -0.90257,0.37432 -2.82408,2.29993 -4.13003,4.13002 -0.49228,0.68986 -1.39067,2.33951 -2.00008,3.63649 -0.60943,1.297 -1.80508,3.35957 -2.64945,4.59758 -0.84435,1.23803 -2.19863,3.58715 -3.0131,5.22098 -1.26454,2.53677 -1.48992,3.14566 -1.5585,4.23391 -0.0762,1.20893 -0.0532,1.35756 0.7273,2.51958 2.3156,3.44745 7.92197,9.89274 8.59773,9.89649 0.1816,8.2e-4 0.91438,0.45259 1.63642,1.01302 0.96106,0.74594 1.5185,1.04129 2.05203,1.06496 1.18739,0.0526 1.4106,-0.009 2.25982,-0.57145 0.57936,-0.38338 0.95582,-0.50818 1.32472,-0.41558 0.66104,0.16586 0.65735,0.53503 0,3.06503 -0.371,1.42794 -0.67413,3.77997 -1.11692,8.54578 -0.33602,3.61663 -0.68103,6.80107 -0.75327,7.06521 -0.16972,0.62047 0.17433,0.84918 1.3507,0.85716 0.84342,0.005 2.03306,0.30237 2.57152,0.64937 0.12078,0.0777 0.60477,1.17295 1.09095,2.441651 0.48616,1.2687 1.36191,3.501516 1.92214,4.961234 0.56028,1.459714 1.22898,3.079264 1.48059,3.584549 0.85521,1.717401 1.70413,4.658002 1.84422,6.337899 0.12221,1.465389 0.0844,1.707283 -0.28573,2.207874 -0.77545,1.048829 -1.70021,3.108255 -2.10397,4.675499 -0.56226,2.182119 -0.78284,6.997946 -0.54547,11.974473 0.36583,7.669662 0.39396,7.505176 -1.16887,9.454897 -0.79696,0.994281 -0.8855,1.737157 -0.46757,3.818323 0.1852,0.92191 0.17908,1.949231 -0.0259,4.545624 -0.26322,3.333094 -0.28665,3.347292 0.15585,3.818323 0.77138,0.821093 2.36051,1.519476 3.94819,1.7663 1.81104,0.281578 2.54894,0.154779 2.8053,-0.5195 0.18419,-0.484464 0.20004,-0.483658 0.85718,-0.155849 0.79749,0.397862 4.22808,0.445913 5.11706,0.07787 0.5257,-0.217608 0.57145,-0.315191 0.57145,-1.480575 0,-0.944159 -0.11965,-1.430952 -0.49352,-2.078 -1.10998,-1.921068 -1.71174,-4.341555 -1.50655,-6.052173 0.0463,-0.385819 -0.046,-0.527878 -0.44157,-0.6234 -0.46,-0.111055 -0.51642,-0.228679 -0.57145,-1.272774 -0.0512,-0.971615 0.13873,-1.833303 1.2468,-5.220973 1.91258,-5.847391 2.87348,-9.098863 3.79235,-12.909573 0.88324,-3.662887 1.11468,-5.278747 1.42862,-9.792572 0.32824,-4.719288 0.59549,-6.424352 1.55851,-9.974397 1.08599,-4.003296 1.87602,-7.463948 2.05202,-8.96137 0.11726,-0.99771 0.21346,-1.15492 0.9351,-1.61046 0.43698,-0.27585 0.88154,-0.73553 0.98704,-1.01302 0.16662,-0.43821 1.85176,-1.71436 2.25983,-1.71436 0.08,0 0.50794,0.86891 0.93511,1.94813 0.58457,1.477 0.92352,2.10835 1.42861,2.49361 l 0.67536,0.49353 0,2.441637 0,2.415677 0.67534,0 c 0.59777,0 3.00673,0.395045 3.16895,0.5195 0.29946,0.229757 0.92425,6.14455 1.16888,11.117298 0.28277,5.749069 0.60507,9.104101 1.22083,12.467997 0.47948,2.619584 1.93532,9.380962 2.46762,11.480947 0.27931,1.101872 0.64601,2.943619 0.80523,4.078074 0.25189,1.794536 0.23319,2.248504 -0.0259,3.48065 -0.37537,1.784519 -1.29437,4.117705 -2.1819,5.506697 -0.76297,1.194069 -1.37667,2.782566 -1.37667,3.610525 0,0.590501 0.42344,1.084508 1.22082,1.40265 0.27841,0.111077 0.76619,0.226293 1.06498,0.233775 0.86314,0.02061 2.96659,-0.734516 3.74039,-1.324725 1.09304,-0.83371 1.38605,-1.566554 1.53253,-4.026124 0.12672,-2.127914 0.14969,-2.215638 0.9351,-3.324799 1.51218,-2.13551 1.45639,-1.758553 0.4156,-4.389774 -1.87214,-4.733143 -2.26368,-7.123881 -2.1819,-13.065422 0.0701,-5.095938 0.0799,-9.477909 0,-17.714945 -0.0335,-3.452788 -0.01,-6.809181 0.0778,-7.454823 l 0.15585,-1.168875 3.68845,0 c 3.60924,0 3.66187,0.01514 3.8443,0.467549 0.1019,0.252644 0.50159,1.657285 0.90912,3.117 0.79711,2.854956 2.47129,6.952224 3.89626,9.584772 0.48623,0.898287 1.53043,3.112703 2.31178,4.909274 0.78133,1.796572 2.61637,5.747829 4.07807,8.779547 1.46166,3.03171 2.89056,6.101564 3.19492,6.831424 0.72317,1.73414 0.8893,3.821649 0.44157,5.974249 -0.36908,1.774586 -0.33794,1.890522 0.83121,3.324799 0.52986,0.650048 0.67534,1.03136 0.67534,1.688374 0,0.465663 0.0765,0.857175 0.18184,0.857175 0.10543,0 0.2671,0.427718 0.33766,0.961075 0.26147,1.977233 0.5223,3.121429 0.85718,3.5326 0.3472,0.426297 4.31746,2.026048 5.01317,2.026048 0.20641,0 0.62979,-0.140372 0.96109,-0.3117 0.9785,-0.506 0.84419,-1.27186 -0.90913,-4.883298 -1.60175,-3.299215 -3.16896,-7.986874 -3.16896,-9.454897 0,-0.436589 -0.24488,-1.524213 -0.5195,-2.44165 -0.59091,-1.974208 -1.61756,-6.707575 -2.75335,-12.545923 -1.10323,-5.671223 -1.78431,-7.84416 -3.61052,-11.584847 -2.22164,-4.550654 -2.69717,-6.062009 -2.85725,-9.039297 -0.1265,-2.352385 -0.12582,-2.437918 0.28572,-2.545548 0.23437,-0.06129 0.47873,-0.241718 0.54547,-0.415604 0.0668,-0.173895 -0.20501,-1.5477 -0.62339,-3.065048 l -0.77925,-2.779324 0.5195,-0.3117 c 0.27523,-0.17216 0.91557,-0.74194 1.42862,-1.27277 0.90082,-0.93197 0.94855,-1.03799 1.27277,-3.0131 0.29572,-1.8013 0.29964,-2.22769 0.052,-3.63651 -0.18309,-1.04132 -0.29657,-3.38259 -0.31169,-6.70155 -0.0128,-2.80427 -0.10745,-7.35327 -0.20781,-10.10427 -0.16069,-4.40736 -0.26518,-5.46548 -0.90913,-8.88345 -0.9329,-4.95177 -1.36603,-8.83769 -1.37667,-12.44202 -0.009,-3.04616 -0.40663,-6.49816 -0.90912,-7.92237 -0.61495,-1.74297 -1.81863,-2.40439 -4.80538,-2.70139 -1.79604,-0.17861 -1.85541,-0.25559 -1.74032,-1.45462 0.16162,-1.68406 0.55221,-4.60551 0.80523,-6.00021 0.13238,-0.72985 0.22794,-2.80101 0.23377,-4.59757 l 0.0259,-3.24688 -0.67534,-1.3507 c -1.66849,-3.34714 -2.89089,-4.20788 -5.58462,-4.00015 -2.26167,0.1744 -2.84917,0.52193 -4.156,2.46762 -2.02767,3.01892 -2.89623,5.56388 -3.66248,10.62377 l -0.54548,3.48066 -0.98704,0.9351 c -0.58437,0.55737 -1.10566,1.27155 -1.27278,1.7663 -0.23643,0.69988 -0.54709,1.04805 -2.00007,2.05202 -2.77825,1.9197 -2.89905,2.2994 -3.27285,10.54584 -0.23666,5.22038 -0.6631,9.65044 -0.96108,9.94843 -0.0918,0.0918 -0.85028,0.41039 -1.68837,0.70133 -1.50077,0.52098 -3.20909,1.44847 -3.68845,2.02604 -0.13466,0.16227 -0.57975,0.28634 -0.98705,0.28572 -0.60709,-8.2e-4 -0.808,-0.10017 -1.09095,-0.59742 -0.22938,-0.4047 -0.31099,-0.84862 -0.23378,-1.32472 0.0737,-0.4538 0.003,-0.95767 -0.20779,-1.40264 -0.53769,-1.1331 -0.44834,-5.01059 0.18183,-8.05226 0.72276,-3.48867 0.61034,-6.40073 -0.31172,-8.2081 -0.54068,-1.05984 -1.1388,-1.48537 -3.06504,-2.15593 -1.35771,-0.47263 -1.71019,-0.68306 -1.97409,-1.19484 -0.1766,-0.34245 -0.63694,-1.03916 -1.01303,-1.53253 -0.7594,-0.99617 -0.81476,-1.46592 -0.36365,-2.54555 0.20503,-0.49069 0.28573,-1.42585 0.28573,-2.83127 -6e-4,-1.83949 -0.13563,-2.66678 -1.11694,-6.75349 -1.47823,-6.15618 -1.91604,-6.96366 -4.49367,-8.13018 -0.71164,-0.32203 -1.68857,-0.49522 -2.64944,-0.49353 z m -13.35115,36.0273 c 0.42516,-0.0125 0.87574,0.25133 1.40266,0.80523 0.7745,0.81417 1.24599,2.11591 1.53252,4.20794 0.0764,0.55788 0.4521,2.01179 0.8312,3.22091 0.3791,1.20912 0.78865,2.97867 0.90913,3.9482 0.21566,1.73548 0.11159,3.55858 -0.20781,3.55858 -0.0898,0 -0.70476,0.45158 -1.37668,1.01302 -0.73076,0.61061 -1.42693,1.01884 -1.71435,1.01303 -0.31323,-0.006 -0.80509,-0.37259 -1.42861,-1.06499 -0.52608,-0.58416 -1.51427,-1.65983 -2.18192,-2.38969 -0.66762,-0.72985 -1.45629,-1.82407 -1.76629,-2.44165 -0.31001,-0.61757 -0.77421,-1.41883 -1.03899,-1.76629 -0.26478,-0.34746 -0.49353,-0.77067 -0.49353,-0.93511 0,-0.16444 -0.12086,-0.48336 -0.28573,-0.70132 -0.16486,-0.21796 -0.30754,-0.574 -0.31169,-0.80523 -0.0119,-0.7714 1.84778,-3.72113 3.03907,-4.83136 0.62865,-0.58585 1.44387,-1.4709 1.81825,-1.94812 0.45723,-0.58285 0.84761,-0.87063 1.27277,-0.88315 z m 59.97626,3.84431 c 0.0451,0.0165 0.0811,0.0632 0.12987,0.12987 0.43808,0.5991 1.08201,3.33301 1.40266,5.94828 0.1652,1.34742 0.48721,3.32305 0.7273,4.38977 1.2961,5.75903 2.27797,10.94102 2.3897,12.6758 0.11767,1.8276 0.0874,2.04438 -0.41561,3.14297 -0.29664,0.64798 -0.51949,1.39525 -0.51949,1.6624 0,1.33011 -0.47745,0.003 -1.71435,-4.80537 -1.35114,-5.25249 -1.3692,-5.28179 -1.37668,-8.1042 -0.006,-2.75296 -0.19401,-4.24282 -0.9351,-7.42885 -0.63222,-2.71793 -0.36502,-7.85863 0.3117,-7.61067 z m -25.66329,9.53282 c 0.0674,-0.009 0.0904,-0.0134 0.10382,0 0.0539,0.054 -0.0303,1.69252 -0.2078,3.6365 -0.38882,4.25688 -0.75327,10.5586 -0.75327,13.27321 0,1.08826 -0.0862,2.42018 -0.20781,2.98713 -0.12157,0.56697 -0.28875,1.04099 -0.36365,1.03901 -0.28236,-0.008 -5.58188,-12.42404 -6.05216,-14.18236 -0.27026,-1.01056 -0.68472,-2.36247 -0.93511,-3.01309 -0.57893,-1.50419 -0.4064,-1.78742 0.93511,-1.42863 1.9514,0.52194 3.45968,0.15629 4.2599,-1.06497 0.18262,-0.27874 0.50739,-0.51945 0.70131,-0.5195 0.19391,-6e-5 0.82525,-0.18627 1.42863,-0.41561 0.45255,-0.17198 0.88866,-0.28331 1.09095,-0.31169 z m 31.04012,21.55925 c 0.24644,-0.0209 0.48061,0.63775 0.54547,1.92214 0.0705,1.39759 0.0191,1.57645 -0.5195,2.33775 -0.32073,0.45324 -0.68011,0.82879 -0.80523,0.8312 -0.39328,0.007 -0.53525,-1.8243 -0.18183,-2.36372 0.17094,-0.26085 0.37401,-0.88339 0.44159,-1.37669 0.12381,-0.90337 0.32783,-1.33441 0.5195,-1.35068 z m -30.31282,2.07799 c 0.18993,-0.0627 0.25976,0.33907 0.25976,1.55851 0,1.50951 -0.25373,2.30307 -0.51951,1.61045 -0.21131,-0.55065 -0.005,-3.08133 0.25975,-3.16896 z"
+             id="path5267"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="cssscsssscccscscccsscccccssccscccccsccsccccsssssscscccccscscsccssccssscssccsccssssccsscsscsscsssccccccccscsssscccccssccccsscscccccscsccscsccccscssssccccsscccccccscccsscsccccsccccccccccccccccccscc" />
+          <path
+             sodipodi:nodetypes="ccsccccccccscccsccssscccccccccccccscssscccccsssscccsssssccccccscsscscccccscsccsccccccsccccccccccscccscsscssscccccsccccssccccccsccccsccccccccsscccccccccscc"
+             inkscape:connector-curvature="0"
+             id="path5269"
+             d="m 694.30966,-128.78171 c -0.004,0.65199 0.0594,3.1705 0.15586,5.58463 0.16728,4.18989 0.21166,4.46628 0.83119,6.20802 0.83469,2.34662 0.8302,2.58545 -0.10382,3.19493 -0.7495,0.48901 -0.74613,0.50895 -0.80523,2.02605 -0.0329,0.84214 0.0352,2.27065 0.15584,3.16894 0.12069,0.8983 0.2755,2.01537 0.33768,2.4936 0.0901,0.69312 -0.0349,1.18191 -0.57144,2.44165 13.64895,-0.48516 1.76803,-8.15738 -8e-5,-25.11782 z m 24.39061,-49.7422 c 0.72417,0.044 1.19248,0.17556 1.68837,0.4156 1.0503,0.50844 2.75179,2.33722 3.40272,3.6365 0.82397,1.64471 0.82974,2.19523 0.0259,4.59758 -0.60829,1.8181 -0.70514,2.35625 -0.59743,3.27285 0.15202,1.29342 -0.12461,2.32331 -0.83119,2.98712 -0.27747,0.26066 -0.51951,0.67732 -0.51951,0.93509 0,0.28404 -0.22625,0.63472 -0.59742,0.90914 -0.79068,0.5846 -0.80395,1.28977 -0.0259,2.36372 0.96457,1.33157 1.78308,1.78391 4.6755,2.5975 0.9785,0.27523 2.74451,0.91728 3.92222,1.42862 1.17773,0.51136 2.29009,0.9351 2.4936,0.9351 0.23856,0 0.48343,0.28568 0.67535,0.77925 0.16374,0.42108 0.52855,1.1719 0.80523,1.68838 0.33936,0.63353 0.55965,1.52748 0.70133,2.75335 1.39141,11.58593 4.95105,45.08552 1.03888,50.287583 l -1.19486,1.55851 0.18183,2.33775 c 0.20686,2.81462 0.71055,7.67901 1.11693,10.62378 0.25721,1.86206 0.27952,2.29749 0.0259,3.27284 -0.16054,0.61757 -0.71596,2.99704 -1.22083,5.2989 l -0.90912,4.18198 -0.12988,6.026187 c -0.20113,9.55104 -0.73059,15.57099 -1.45461,16.67595 -0.29164,0.44512 -0.28497,0.53429 0.12989,1.11693 0.62662,0.87997 2.084,1.73281 3.76637,2.23384 1.6798,0.50027 2.03486,0.75396 2.57153,1.63643 0.53693,0.88292 0.29893,1.08207 -1.76631,1.50655 -1.66104,0.34139 -6.00563,0.45252 -6.88337,0.18182 -0.25198,-0.0777 -0.8871,-0.42993 -1.40264,-0.80522 -0.92587,-0.67398 -0.93849,-0.68263 -2.12995,-0.46755 -0.91662,0.16544 -1.61618,0.15714 -2.85725,-0.052 l -1.63643,-0.28573 -0.12988,-1.22082 c -0.072,-0.67371 -0.12139,-2.2455 -0.12987,-3.48065 -0.0172,-2.48067 0.24012,-3.5296 1.29875,-5.2989 0.55784,-0.93231 0.62748,-1.27384 0.85717,-4.07807 0.13797,-1.68429 0.33658,-4.78012 0.44158,-6.8574 0.10501,-2.077287 0.38913,-5.264537 0.62339,-7.091167 0.49682,-3.87382 0.50328,-5.17166 0.10383,-6.98728 -0.16055,-0.72985 -0.28157,-1.67733 -0.28572,-2.10397 -0.004,-0.42665 -0.14097,-1.0465 -0.3117,-1.37668 -0.17076,-0.33018 -0.50265,-1.47969 -0.7273,-2.57152 -0.46975,-2.28297 -0.91775,-3.88574 -2.05203,-7.32495 -0.84988,-2.57687 -2.52895,-5.93866 -2.70139,-5.4028 -0.0542,0.16844 -0.14654,1.35817 -0.2078,2.64946 -0.11331,2.38833 -0.71525,6.32772 -1.2468,8.23407 -0.45005,1.61403 -0.56054,11.33941 -0.15585,13.50699 0.1912,1.02421 0.32283,3.27367 0.36365,6.0262 l 0.0778,4.389767 1.1429,2.85725 1.16888,2.85725 0.15585,3.16895 c 0.14286,2.72238 0.11511,3.20724 -0.15585,3.50663 -0.28464,0.3145 -0.25937,0.4838 0.12987,1.63642 0.6052,1.79203 0.56191,2.21071 -0.28572,2.96115 -0.56432,0.49961 -0.7273,0.80274 -0.7273,1.37667 0,0.601 -0.0909,0.77709 -0.59742,1.039 -0.41714,0.21571 -0.6234,0.45223 -0.6234,0.77925 0,0.60463 -0.41261,0.96319 -1.37669,1.16888 -0.41518,0.0884 -1.7643,0.1273 -2.98711,0.0779 -3.2834,-0.1325 -4.32466,-0.76708 -3.42871,-2.078 0.21462,-0.31401 0.66107,-0.96089 0.98706,-1.4546 0.32596,-0.49371 0.65418,-1.01096 0.75327,-1.1429 0.11653,-0.15516 0.0121,-0.42947 -0.31171,-0.75328 -0.62271,-0.62271 -1.77702,-2.56623 -2.38969,-4.0521 -0.90915,-2.20479 -1.27149,-8.72965 -1.2468,-22.286537 0.0157,-8.58696 -0.0166,-10.32323 -0.36365,-13.27322 -0.21956,-1.86656 -0.50752,-3.54987 -0.62341,-3.76637 -0.36527,-0.68256 -1.2064,-3.98667 -1.55849,-6.10413 -0.18627,-1.12027 -0.36069,-2.04908 -0.38963,-2.07801 -0.0289,-0.0289 -0.77171,-0.18837 -1.66239,-0.36365 -0.89068,-0.17526 -1.84721,-0.41285 -2.10399,-0.5195 -0.59813,-0.24845 -1.86769,-2.885883 -1.87019,-3.870283 -8.3e-4,-0.39615 -0.0603,-1.1883 -0.12987,-1.7663 -0.10114,-0.84169 -0.2354,-1.09596 -0.62341,-1.27278 -0.26643,-0.12138 -0.46754,-0.39248 -0.46754,-0.59742 0,-0.20492 -0.24383,-0.82126 -0.5195,-1.37668 -0.44954,-0.90569 -0.49764,-1.33151 -0.57145,-4.07807 -0.0453,-1.68428 -0.24847,-4.94516 -0.44159,-7.24702 -0.34854,-4.15491 -0.32565,-5.55084 0.10383,-10.31207 0.11136,-1.23514 0.2851,-3.5191 0.38961,-5.0911 0.10458,-1.57199 0.27539,-3.54763 0.38964,-4.38978 0.11426,-0.84213 0.22879,-2.70385 0.23377,-4.13002 0.004,-1.51809 0.12058,-3.05511 0.28572,-3.68845 0.58966,-2.26135 1.16541,-4.0155 1.3507,-4.13003 0.10576,-0.0654 0.29199,-0.4668 0.4156,-0.88314 0.21528,-0.72506 0.37539,-0.83144 3.6365,-2.44164 1.87252,-0.92457 4.02365,-1.96 4.7794,-2.31178 0.83475,-0.38857 1.68337,-0.9917 2.18191,-1.53254 l 0.83119,-0.88315 0,0.85718 c 0,0.48217 0.0951,1.38996 0.2078,2.00008 0.50949,2.75851 4.33461,16.54428 4.55767,22.45503 0.28592,7.57619 1.57927,10.02738 6.65555,11.20914 17.16957,3.9971 -11.29342,1.53033 -11.34309,1.58389 0.60856,0.60857 9.08194,1.33902 11.429,0.98706 1.13405,-0.17007 -2.83272,2.00018 -3.50779,-2.12938 -0.77755,-4.75631 1.5965,-4.5816 1.39597,-15.54334 -0.10275,-5.61428 1.12724,-15.50318 1.02087,-16.12076 -0.1063,-0.61755 -0.19949,-1.90129 -0.20781,-2.83127 -0.009,-1.024 -0.12238,-1.96256 -0.31169,-2.41567 l -0.31171,-0.75327 -1.71434,1.71435 c -1.59982,1.59149 -1.88895,2.02604 -1.27278,2.02604 0.13571,0 0.58358,0.25367 1.01303,0.54548 l 0.77924,0.5195 -0.54548,0.59742 c -0.68189,0.71177 -0.7475,1.53281 -0.15584,2.36373 0.59333,0.83329 1.834,6.4574 2.20788,10.0783 0.39295,3.80577 1.11691,12.90959 1.11691,13.97454 0,0.73853 -0.1387,0.98652 -1.48056,2.44166 l -1.50656,1.63642 -1.71435,-1.3507 -1.71436,-1.32473 -0.18181,-6.20802 c -0.089,-3.42012 -0.10158,-8.4702 -0.052,-11.22119 0.0777,-4.29976 0.15095,-5.19763 0.5195,-6.46778 0.6212,-2.14089 0.55757,-2.58072 -0.4156,-3.63651 -0.87005,-0.94388 -0.86901,-0.93735 0.10383,-1.61044 0.37865,-0.26196 0.35103,-0.30428 -0.54547,-0.85718 -0.52081,-0.32118 -1.45249,-0.91186 -2.078,-1.29875 -0.87345,-0.54022 -1.1429,-0.81522 -1.1429,-1.19484 0,-0.39609 -0.0838,-0.47639 -0.4156,-0.38964 l -0.4156,0.10383 0.4156,-0.67537 c 0.56599,-0.91577 0.54697,-1.75069 -0.0779,-2.33774 -0.34413,-0.32327 -0.48982,-0.61332 -0.41559,-0.90911 0.0711,-0.28322 -0.14133,-0.87031 -0.6234,-1.66241 -0.69553,-1.14276 -0.7379,-1.2917 -0.6234,-2.44165 0.15954,-1.6001 0.15707,-1.62058 0,-3.16896 -0.11047,-1.08874 -0.0512,-1.53254 0.31169,-2.49359 1.3114,-3.47296 3.97954,-5.24695 7.84446,-5.24695 0.30891,0 0.5898,-0.0146 0.83119,0 z m -14.18235,72.15854 -0.5195,0.6234 c -0.57916,0.70654 -0.62175,1.27927 -0.18183,2.12995 0.51762,1.00098 0.7088,0.72183 0.70133,-1.06498 z m 28.80626,1.32472 c -0.30131,0 -0.27869,2.91624 0.0259,3.2209 0.45266,0.45265 0.57145,0.25705 0.57145,-0.96108 0,-1.28603 -0.25163,-2.25982 -0.59742,-2.25982 z"
+             style="fill:#ffffff" />
+        </g>
+      </g>
+      <g
+         id="g5271"
+         inkscape:export-filename="/var/www/opportunity-fr.png"
+         inkscape:export-xdpi="15.306176"
+         inkscape:export-ydpi="15.306176">
+        <path
+           inkscape:connector-curvature="0"
+           id="path3072"
+           d="m 849.53125,-156.5 c -11.65317,2.67516 -20.62207,11.43515 -31.09375,16.6875 -4.07096,2.99736 -0.73144,8.37139 0.75,11.40625 -2.37805,1.17481 -4.57052,4.6702 -6.03125,0.8125 -1.77014,-2.26664 -5.74451,-2.48993 -4.34375,-6.03125 0.67453,-7.61954 -5.48248,-17.28151 -14.0625,-14.8125 -5.15496,-0.0122 -11.09674,-0.56335 -15.40625,2.15625 -6.63602,-3.97257 -15.17298,-2.33287 -22.34375,-1.03125 -6.63511,3.22303 -4.76534,11.44514 -5.125,17.40625 0.66991,3.58606 0.39977,4.69872 -2.53125,2.09375 -8.34753,-5.46016 -19.20116,-5.83102 -28.4375,-2.78125 -5.83659,-2.18073 -12.27447,0.87846 -17.71875,-2.09375 -4.0928,-1.38781 -7.35692,2.21349 -11.51723,0.27064 -14.28555,-2.54346 -29.1189,-1.36358 -43.10777,1.94811 -1.39905,-1.1987 0.62865,-4.87808 -0.53125,-6.96875 -0.76731,-7.37359 -8.17051,-13.60313 -15.625,-10.96875 -6.40022,-0.51982 -15.19237,0.0511 -16.75,7.78125 -1.32222,2.3968 0.90553,6.89349 -0.9375,8.0625 -4.20618,0.58455 -8.25478,2.84615 -12.4375,1 -6.28299,-0.48014 -12.48912,1.27477 -18.03125,4.0625 0.43437,4.03621 -0.59587,3.67256 -3.3125,1.25 -15.50527,-10.57164 -39.46782,-7.4864 -50.15625,8.3125 -8.48587,-12.79554 -26.35952,-18.0757 -40.46875,-12.34375 -4.65207,-1.54381 -9.35644,-1.59654 -14.09375,-0.71875 -3.51483,0.47684 -6.52341,-4.26926 -8.1875,0.5625 -1.49454,1.87959 -2.23679,5.38016 -3.1875,6.71875 -9.48283,-9.08703 -24.2234,-10.7795 -36.25,-6.625 -5.10622,-2.44516 -10.47634,-0.2205 -15.6875,-0.96875 -2.34912,-1.3014 -4.65278,-2.18273 -5.84375,0.90625 -0.98585,0.76162 -2.56199,-3.36144 -4,-4.25 -15.47906,-17.7609 -45.54339,-20.26698 -63.28125,-4.1875 -16.08204,13.20769 -21.68989,38.36875 -10.625,56.625 11.90206,21.025791 41.46825,30.552933 62.6875,17.6875 4.32984,-2.495882 8.2488,-5.760838 11.46875,-9.53125 0,10.395833 0,20.791667 0,31.1875 8.91855,-5.530036 20.24747,4.07494 28.59375,-3.03125 4.19634,-3.080079 3.94405,-8.708405 3.71875,-13.34375 10.16596,1.828235 20.7528,-1.6973 28.59375,-8.15625 0,7.947917 0,15.895833 0,23.84375 9.02496,-5.575103 20.00348,4.817783 28.5625,-2.34375 4.6904,-2.842475 3.31886,-9.758485 4.25,-13.25 12.72707,2.187068 25.99991,-4.479121 33.71875,-13.75 12.40037,15.72491 38.4423,18.910729 53.53125,5.40625 -0.18043,3.003909 -1.48527,9.511346 3.5625,7.625 17.84946,-2.020495 36.93105,5.903908 53.8125,-2.28125 3.23763,-1.51316 6.12449,-4.191369 5.8125,-8.0625 7.83979,10.63195 23.36722,13.879657 35.28125,9.40625 8.7776,-2.442781 46.19992,-1.932502 68.88843,1.201516 18.35524,2.71945 36.86306,0.722994 54.89282,-2.982766 2.67607,-2.101976 0.62475,-6.674884 2.8125,-8.25 15.11813,17.36286 48.20346,15.598364 59.375,-5.5625 9.49728,-17.098619 3.33768,-41.42619 -13.3125,-51.25 3.56138,-2.42299 12.03007,-3.32762 10.4375,-9.28125 -6.27926,-5.44881 -5.60125,-17.33948 -14.84375,-19.59375 -0.4878,0.0248 -0.98563,-0.0475 -1.46875,0.0312 z"
+           style="font-size:92.23697662px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold"
+           sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
+        <g
+           id="g5275"
+           style="fill:#15741e;fill-opacity:1">
+          <path
+             style="font-size:92.23697662px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#15741e;fill-opacity:1;stroke:none;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold"
+             d="m 848.125,-152.28125 c -0.23042,-0.004 -0.46119,0.0347 -0.65625,0.21875 -9.45589,4.35893 -17.82108,10.67731 -27,15.625 0.54956,3.7751 2.72171,6.9311 5.15625,9.75 -5.38916,1.72562 -9.97745,5.00184 -13.53125,9.1875 -0.0292,-0.31856 -0.0539,-0.63232 -0.0937,-0.9375 0.8291,-4.93949 -3.02291,-9.49644 -8.09375,-8.90625 1.44118,-6.06192 1.7298,-16.42954 -6.34375,-17.5 -0.63591,-0.0621 -1.2974,-0.0475 -1.9375,0 -4.81739,1.98838 -12.15051,-2.15054 -15.0625,3.875 -0.24131,0.47977 -0.40117,0.96838 -0.53125,1.46875 -1.08051,-2.36528 -3.07279,-4.234 -5.9375,-4.78125 -1.43437,-0.32898 -2.91689,-0.52137 -4.40625,-0.40625 -4.71805,1.1194 -13.02942,-1.76304 -13.8125,5.46875 1.04319,5.14782 -1.00634,10.86531 0.96875,15.78125 -1.04199,3.13134 -1.09789,6.36814 -0.9375,9.625 -3.74556,-10.13569 -14.77959,-15.50029 -25.34375,-14.65625 -4.43181,-0.19489 -8.45099,3.79538 -12.5625,1.21875 -4.96371,-1.10284 -10.20048,1.222 -15.03125,-0.25 l 0,-1.03125 -1.34375,0.5 c -0.28029,-0.13269 -0.56691,-0.27215 -0.84375,-0.4375 0,0.25056 -5.4e-4,0.49947 0,0.75 l -0.5,0.1875 c -6.79626,1.97362 -16.05119,-3.15576 -21,4.03125 -2.59952,11.98824 2.1231,23.795226 -2.40625,35.206059 -2.79548,2.200561 -7.98465,0.260354 -6.75,-3.84375 -1.12341,-12.393769 0.21796,-23.577619 -0.53125,-35.987309 -6.59241,3.20591 -15.09847,-1.8302 -21.0625,2.15625 -1.40188,-1.05515 -3.18226,-1.62381 -5.15625,-1.375 1.44118,-6.06192 1.7298,-16.42954 -6.34375,-17.5 -0.63591,-0.0621 -1.2974,-0.0475 -1.9375,0 -4.79776,1.98142 -12.11932,-2.14336 -15.03125,3.875 -2.01127,4.20446 0.34146,9.20846 -0.34375,13.28125 -1.84511,-1.02885 -4.17155,-0.7537 -6.21875,-0.71875 -3.18866,0.59208 -6.10013,2.84264 -9.4375,1.125 -5.38731,-0.91163 -10.97056,0.10073 -15.875,2.40625 l 0,11.4375 c -1.24833,-1.9003 -2.72745,-3.66063 -4.46875,-5.25 -6.38447,-6.41 -15.42862,-10.07339 -24.5,-9.71875 -12.30117,-0.34969 -23.11132,7.54379 -28.625,18.09375 -4.87795,-10.25808 -14.66833,-18.08695 -26.59375,-18.09375 -1.39615,-0.0552 -2.79197,-0.0141 -4.1875,0 -3.87017,-0.26065 -7.87025,2.78075 -11.34375,2.21875 -5.24994,-3.48822 -11.72984,1.11687 -17.125,-1.84375 -2.91145,4.44642 -3.48076,9.38491 -3.40625,14.46875 -5.28605,-8.61867 -14.21057,-14.85047 -24.71875,-14.8125 -1.43695,-0.10613 -2.87485,-0.041 -4.3125,-0.0312 -3.88177,-0.37454 -7.88706,3.0355 -11.34375,2.21875 -5.25188,-3.49851 -11.72906,1.12435 -17.125,-1.84375 -1.59144,2.43049 -2.46719,5.01819 -2.9375,7.6875 -6.38433,-14.79525 -21.60073,-25.628 -38.03125,-25.15625 -24.59295,-1.16575 -46.12729,23.56176 -41.46875,47.8125 3.33439,23.94392 30.49438,40.833603 53.5625,33.15625 11.7309,-3.318702 20.96911,-12.361697 25.75,-23.3125 l 0,39.568369 c 9.13972,-2.44898 17.89502,5.550963 23.625,-2.443369 1.59341,-4.316445 0.14786,-9.544812 0.71875,-13.6875 13.56512,4.925666 29.03895,-1.802074 36.5625,-13.5 l 0,28.873254 c 8.14322,-2.181969 17.89502,6.308578 23.625,-1.685754 1.63689,-4.36534 0.11672,-9.457052 0.6875,-13.6875 14.50823,5.243527 31.26967,-2.775984 38.0625,-16.03125 8.92367,17.287743 34.39702,23.416688 49.71875,10.84375 3.20241,-2.341671 5.84116,-5.313746 7.875,-8.65625 l 0,14.427347 c 7.08607,-1.898706 17.9675,4.054837 23.6875,-4.021097 2.46507,-11.420132 -1.71986,-22.539547 1.8125,-33.54981 2.94053,-1.00114 7.39574,-3.7114 5.96875,1 -0.33953,12.945776 0.14843,23.623701 -0.0937,36.570908 7.84702,-2.102604 17.67693,3.941307 23.46875,-3.771098 2.04823,-11.585263 -0.15233,-23.429841 1.15625,-34.61231 0.4396,-0.0594 0.85601,-0.13542 1.25,-0.25 -0.22104,11.417756 -0.89851,22.932904 6.9375,31.92481 7.6879,8.09207 20.64451,9.475054 30.53125,5.375 15.05282,-2.212936 38.03725,1.528139 41.5625,-2.6875 2.54174,-11.996693 -2.12373,-23.880398 2.46875,-35.20606 2.68163,-2.13495 7.88446,-0.27184 6.625,3.781251 1.05143,12.540694 -0.16981,21.08869 0.46875,33.646889 25.08714,-2.645206 63.93976,4.62696 69.8125,-2.063292 0.8288,-6.71703 0.61327,-14.034368 0.5,-20.940038 0.88284,4.597265 2.7977,8.986114 5.90625,12.78125 12.65434,17.043219 42.85252,17.523844 54.125,-1.15625 3.5101,-5.110559 5.20164,-14.930585 4.75,-21.125 -0.99088,-12.97126 -10.12857,-25.30198 -22.6875,-29.03125 5.90312,-3.07087 9.67017,-5.24421 15.54219,-8.36485 -6.12936,-5.72927 -6.82243,-19.28729 -13.16719,-16.69765 -0.22703,-0.01 -0.45708,-0.058 -0.6875,-0.0625 z m -478.08867,32.35898 c 13.87103,-0.418 19.93765,16.70508 10.35469,26.758406 -8.63621,9.668328 -24.64149,5.965836 -26.44083,-7.398636 -2.0595,-9.52348 4.37682,-19.3673 14.71114,-19.26602 0.45906,-0.0557 0.92755,-0.0803 1.375,-0.0937 z m 70.12246,16.21875 c 10.36477,-0.23689 11.26851,15.220664 0.49492,15.938291 -8.01809,1.013499 -12.28042,-6.856671 -7.30235,-12.945911 1.62413,-2.35362 3.91178,-3.13012 6.80743,-2.99238 z m 60.8125,0 c 10.26654,-0.27612 11.91648,14.707796 1.40625,15.969541 -7.65098,1.107367 -13.12069,-5.304789 -8.87246,-11.69083 1.51192,-2.761491 4.32967,-4.465911 7.46621,-4.278711 z m 58.21113,-0.22134 c 9.77234,-0.63515 12.35803,12.713901 3.24747,15.722081 -7.39934,2.744506 -13.79168,-3.510697 -9.79981,-10.40958 1.42043,-2.847371 3.247,-5.252801 6.55234,-5.312501 z"
+             id="path5277"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="sccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccsscccscccccccccccccc" />
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-size:92.23697662px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol"
+           x="330.88214"
+           y="-70.130157"
+           id="text5279"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan5281"
+             x="330.88214"
+             y="-70.130157"
+             style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;fill:#ffffff;fill-opacity:1;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Semi-Bold">Opportunité</tspan></text>
+      </g>
+    </g>
+  </g>
+</svg>
index 05e8e4e..bbee410 100644 (file)
@@ -19,13 +19,11 @@ import opportunity_controller
 import opts
 import privileges
 
-# Avoids a crash when running automatic tests
-if "NIT_TESTING".environ == "true" then exit 0
-
 var iface = "localhost:8080"
 
 var vh = new VirtualHost(iface)
 vh.routes.add new Route("/rest/", new OpportunityRESTAction)
+vh.routes.add new Route("/static/", new FileServer("art"))
 vh.routes.add new Route(null, new OpportunityWelcome)
 
 var fac = new HttpFactory.and_libevent
index e00ce4c..53996b0 100644 (file)
@@ -92,7 +92,7 @@ class OpportunityFooter
                        {{{"Opportunity, the meetup planner."}}}
                </p>
                <p class="text-muted text-center">
-                       {{{"Proudly powered by %1!".format("<a href=\"http://nitlanguage.org/\">Nit</a>")}}}
+                       {{{"Proudly powered by %0!".format("<a href=\"http://nitlanguage.org/\">Nit</a>")}}}
                </p>
        </div>
 </div>
index 443192e..ab9b9f7 100644 (file)
@@ -7,5 +7,5 @@ msgstr "Opportunité"
 msgid "Opportunity, the meetup planner."
 msgstr "Opportunité, l'organisateur d'événements."
 
-msgid "Proudly powered by %1!"
-msgstr "Fièrement codé en %1!"
+msgid "Proudly powered by %0!"
+msgstr "Fièrement codé en %0!"
index c243407..71d18e1 100644 (file)
@@ -458,7 +458,7 @@ redef class Meetup
 </tr>
 <tr id="pizzas">
        <th>
-       {{{"%1 ratio × %2".format("<span style='color:orange'>∇</span>", "<input id='pizza_unit' type='number' placeholder='1' text='1' class='inputsm' style='width: 8ex !important;' onchange='update_scores()' onkeypress='update_scores()' onpaste='update_scores()' oninput='update_scores()'>")}}}
+       {{{"%0 ratio × %1".format("<span style='color:orange'>∇</span>", "<input id='pizza_unit' type='number' placeholder='1' text='1' class='inputsm' style='width: 8ex !important;' onchange='update_scores()' onkeypress='update_scores()' onpaste='update_scores()' oninput='update_scores()'>")}}}
        </th>
 """
                for i in answers(db) do t.add """
index 2d321da..0ea1cf2 100644 (file)
@@ -23,18 +23,19 @@ class OpportunityHomePage
 
        init do
                body = """
-               <div class="page-header">
-               <h1 class="text-center">{{{"Welcome to Opportunity!"}}}</h1>
-                       </div>
-                       <p class="text-center">
-                               <p class="text-center">{{{"Opportunity is a free (as in free software), easy-to-use, meetup planner."}}}</p>
-                               <p class="text-center">{{{"You can start using it right now by creating a new Meetup and sharing it with your friends!"}}}</p>
-                               <p class="text-center">
-                               <form action="new_meetup">
-                               <button type="submit" class="btn btn-lg center-block btn-success">{{{"Create a Meetup"}}}</button>
-                               </form>
-                               </p>
-                       </p>
+<div class="container">
+       <p class="text-center"><img src="/static/opportunity.svg"></p>
+
+       <div class="jumbotron text-center">
+               <p>
+                       {{{"Opportunity is a free (as in free software), easy-to-use, meetup planner."}}}
+                       {{{"You can start using it right now by creating a new Meetup and sharing it with your friends!"}}}
+               </p>
+               <form action="new_meetup">
+                       <button type="submit" class="btn btn-lg center-block btn-success">{{{"Create a Meetup"}}}</button>
+               </form>
+       </div>
+</div>
 """
        end
 end
index 46b62be..f3ec358 100644 (file)
     <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
       <ul class="nav navbar-nav">
         <li><a href="http://xymus.net/ens/">Enseignement</a></li>
-        <li><a href="http://xymus.net/opportunity/">Opportunité</a></li>
-        <li><a href="http://tnitter.xymus.net/">Tnitter</a></li>
-        <li class="active"><a href="http://pep8.xymus.net/">Pep/8 Analysis</a></li>
-        <li><a href="http://benitlux.xymus.net/">Benitlux</a></li>
+        <li><a href="http://xymus.net/opportunity/"><img height="22px" src="/static/opportunity-small-fr.png"></a></li>
+        <li><a href="http://xymus.net/tnitter/"><img height="22px" src="/static/tnitter-small.png"></a></li>
+        <li class="active"><a href="http://xymus.net/pep8/">Pep/8 Analysis</a></li>
+        <li><a href="http://xymus.net/benitlux/">Benitlux</a></li>
       </ul>
 
       <ul class="nav navbar-nav pull-right">
diff --git a/contrib/tnitter/art/icon-wide.svg b/contrib/tnitter/art/icon-wide.svg
new file mode 100644 (file)
index 0000000..248ba47
--- /dev/null
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="61.34494"
+   height="21.098732"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="branding.svg"
+   inkscape:export-filename="tnitter-small.png"
+   inkscape:export-xdpi="273.0022"
+   inkscape:export-ydpi="273.0022">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#424242"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="63.415271"
+     inkscape:cy="11.805101"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="2558"
+     inkscape:window-height="1379"
+     inkscape:window-x="2560"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-4.3047165,-999.85371)">
+    <g
+       id="g2987"
+       inkscape:export-filename="tnitter-small.png"
+       inkscape:export-xdpi="337.26083"
+       inkscape:export-ydpi="337.26083"
+       transform="matrix(0.96433067,0,0,0.96433067,1.25494,36.032445)">
+      <text
+         y="1017.1279"
+         x="16.147572"
+         xml:space="preserve"
+         style="font-size:17.83931541px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:-3.04325652px;word-spacing:0px;fill:#0056b8;fill-opacity:1;stroke:none;font-family:Sans"
+         id="text3876"
+         sodipodi:linespacing="125%"><tspan
+           dx="0.43475091"
+           id="tspan3878"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;letter-spacing:-0.86950183px;fill:#0056b8;fill-opacity:1;font-family:URW Bookman L;-inkscape-font-specification:URW Bookman L Bold">nitter</tspan></text>
+      <path
+         d="m 17.538638,1000.9638 -11.8559936,0 -1.751575,5.3016 1.751575,0.7428 c 0.8174,-2.177 2.4522065,-3.6625 4.0169448,-3.6625 0.3503148,0 0.3970248,0.128 0.3970248,0.9219 l 0,9.8351 c 0,0.9989 -0.07007,1.3575 -0.2802525,1.6136 -0.2101897,0.2816 -0.794048,0.5122 -1.3078428,0.5378 l -0.7006297,0.051 0,2.1002 7.652214,0 0,-2.1002 -0.70063,-0.051 c -0.513794,-0.026 -1.097654,-0.2562 -1.307842,-0.5378 -0.210188,-0.2561 -0.280252,-0.6147 -0.280252,-1.6136 l 0,-9.9119 c 0,-0.8964 10e-7,-0.8964 0.467087,-0.8964 0.8174,0 1.704867,0.4866 2.568978,1.4087 0.537147,0.5634 0.723984,0.8452 1.51803,2.3051 l 1.704867,-0.7428 -1.891703,-5.3016"
+         style="font-size:163.82507324px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#0056b8;fill-opacity:1;stroke:none;font-family:URW Bookman L;-inkscape-font-specification:URW Bookman L Bold"
+         id="path3866-9"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccccsssccccccccssscccc" />
+    </g>
+  </g>
+</svg>
index e40e309..ad41a71 100644 (file)
@@ -82,6 +82,9 @@ class TnitterWeb
        <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
        <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
+       <script>
+               {{{javascript_header or else ""}}}
+       </script>
 </head>
 <body>
 
@@ -93,6 +96,9 @@ class TnitterWeb
 </body>
 </html>"""
 
+       # Custom JavaScript code added within a `<script>` block to each page
+       var javascript_header: nullable Writable = null is writable
+
        redef fun answer(request, turi)
        do
                # Get existing session
index 4b175c2..949db77 100644 (file)
@@ -33,9 +33,6 @@ end
 # Address and port of the listening socket
 fun tnitter_interface: String do return "localhost:8080"
 
-# Avoid executing when running tests
-if "NIT_TESTING".environ == "true" then exit 0
-
 # Prepare options
 var opts = new OptionContext
 opts.parse(args)
index dcbfffe..b8a955a 100644 (file)
@@ -36,7 +36,7 @@ import json::serialization
 import model
 
 # Delay in seconds before the next request after an error
-fun request_delay_on_error: Int do return 60
+fun request_delay_on_error: Float do return 60.0
 
 redef class App
        redef fun on_create
@@ -106,13 +106,7 @@ abstract class AsyncTnitterRequest
        redef var rest_action
 
        # Should this request be delayed by `request_delay_on_error` seconds?
-       var delay: Bool
-
-       redef fun main
-       do
-               if delay then nanosleep(request_delay_on_error, 0)
-               return super
-       end
+       fun after_error(value: Bool) is autoinit do if value then delay = request_delay_on_error
 end
 
 # Async request to list latest posts, either immediately or by push notification
index 6c5b63c..c97809c 100644 (file)
@@ -12,17 +12,17 @@ bin/calculator: $(shell ${NITLS} -M src/calculator.nit linux) ${NITC}
 
 android: bin/calculator.apk
 
-bin/calculator.apk: $(shell ${NITLS} -M src/calculator.nit android) ${NITC} res/drawable-ldpi/icon.png
+bin/calculator.apk: $(shell ${NITLS} -M src/calculator.nit android) ${NITC} android/res/
        mkdir -p bin
        ${NITC} -o $@ src/calculator.nit -m ../../lib/android/ui/ -D debug
 
-android-release: $(shell ${NITLS} -M src/calculator.nit android) ${NITC} res/drawable-ldpi/icon.png
+android-release: $(shell ${NITLS} -M src/calculator.nit android) ${NITC} android/res/
        mkdir -p bin
        ${NITC} -o bin/calculator.apk src/calculator.nit -m ../../lib/android/ui/ --release
 
-res/drawable-ldpi/icon.png: art/icon.svg ../../contrib/inkscape_tools/bin/svg_to_icons
-       mkdir -p res
-       ../../contrib/inkscape_tools/bin/svg_to_icons art/icon.svg --android --out res/
+android/res/: art/icon.svg ../../contrib/inkscape_tools/bin/svg_to_icons
+       mkdir -p android/res
+       ../../contrib/inkscape_tools/bin/svg_to_icons art/icon.svg --android --out android/res/
 
 ../../contrib/inkscape_tools/bin/svg_to_icons:
        make -C ../../contrib/inkscape_tools/
diff --git a/examples/rosettacode/empty_string.nit b/examples/rosettacode/empty_string.nit
new file mode 100644 (file)
index 0000000..8848c8e
--- /dev/null
@@ -0,0 +1,18 @@
+#!/usr/bin/env nit
+#
+# This file is part of NIT ( http://www.nitlanguage.org ).
+# This program is public domain
+
+# Task: Empty_string
+# SEE: <http://rosettacode.org/wiki/Empty_string>
+module empty_string
+
+var s = ""
+
+if s.is_empty then print "Is empty"
+if s == "" then print "Is empty"
+if s.length == 0 then print "Is empty"
+
+if not s.is_empty then print "Not empty"
+if s != "" then print "Not empty"
+if s.length > 0 then print "Not empty"
diff --git a/examples/rosettacode/tape.nit b/examples/rosettacode/tape.nit
new file mode 100644 (file)
index 0000000..1ff531a
--- /dev/null
@@ -0,0 +1,10 @@
+#!/usr/bin/env nit
+#
+# This file is part of NIT ( http://www.nitlanguage.org ).
+# This program is public domain
+
+# Task: Create_a_file_on_magnetic_tape
+# SEE: <http://rosettacode.org/wiki/Create_a_file_on_magnetic_tape>
+module tape
+
+"Hello, World!".write_to_file("/dev/tape")
index baf4e4a..40dace2 100644 (file)
@@ -121,7 +121,7 @@ end
 class AssetManager
 
        # Native asset manager
-       private var native_assets_manager: NativeAssetManager = app.native_activity.assets.new_global_ref is lazy
+       private var native_assets_manager: NativeAssetManager = app.native_context.assets.new_global_ref is lazy
 
        # Close this asset manager
        fun close do native_assets_manager.close
@@ -400,8 +400,8 @@ end
 redef class App
        # Resource Manager used to manage resources placed in the `res` folder of the app
        var resource_manager: ResourcesManager is lazy do
-               var res = native_activity.resources
-               var pkg = native_activity.package_name
+               var res = native_context.resources
+               var pkg = native_context.package_name
                return new ResourcesManager.native(res, pkg.to_s)
        end
 
@@ -409,7 +409,7 @@ redef class App
        var asset_manager: AssetManager is lazy do return new AssetManager
 end
 
-redef extern class NativeActivity
+redef extern class NativeContext
 
        # Get the native AssetsManager of the application, used to initialize the nit's AssetManager
        private fun assets: NativeAssetManager in "Java" `{
index dc335dc..486d140 100644 (file)
@@ -20,8 +20,13 @@ module dalvik
 import activities
 
 redef class App
-       # The main Java Activity of this application
+       # Main Java Activity of this application
+       #
+       # Require: A Nit activity is currently running.
        fun native_activity: NativeActivity is abstract
+
+       # Current reference context, either an activity or a service
+       fun native_context: NativeContext do return native_activity
 end
 
 extern class JavaClassLoader in "Java" `{java.lang.ClassLoader`}
@@ -43,7 +48,7 @@ redef class Sys
        do
                var class_loader = self.class_loader
                if class_loader == null then
-                       find_class_loader app.native_activity
+                       find_class_loader app.native_context
                        class_loader = self.class_loader
                        assert class_loader != null
                end
@@ -54,35 +59,35 @@ redef class Sys
                return load_jclass_intern(class_loader, class_loader_method, name)
        end
 
-       private fun find_class_loader(native_activity: NativeActivity) import jni_env, class_loader=, JavaObject.as nullable, class_loader_method=, JMethodID.as nullable `{
+       private fun find_class_loader(native_context: NativeContext) import jni_env, class_loader=, JavaObject.as nullable, class_loader_method=, JMethodID.as nullable `{
                JNIEnv *env = Sys_jni_env(self);
 
                // Retrieve main activity
-               jclass class_activity = (*env)->GetObjectClass(env, native_activity);
-               if (class_activity == NULL) {
-                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "Failed retrieving activity class");
+               jclass class_context = (*env)->GetObjectClass(env, native_context);
+               if (class_context == NULL) {
+                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "Failed to retrieve activity class");
                        (*env)->ExceptionDescribe(env);
                        exit(1);
                }
 
-               jmethodID class_activity_getClassLoader = (*env)->GetMethodID(env, class_activity, "getClassLoader", "()Ljava/lang/ClassLoader;");
+               jmethodID class_activity_getClassLoader = (*env)->GetMethodID(env, class_context, "getClassLoader", "()Ljava/lang/ClassLoader;");
                if (class_activity_getClassLoader == NULL) {
-                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "Failed retrieving 'getClassLoader' method");
+                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "Failed to retrieve 'getClassLoader' method");
                        (*env)->ExceptionDescribe(env);
                        exit(1);
                }
 
                // Call activity.getClassLoader
-               jobject instance_class_loader = (*env)->CallObjectMethod(env, native_activity, class_activity_getClassLoader);
+               jobject instance_class_loader = (*env)->CallObjectMethod(env, native_context, class_activity_getClassLoader);
                if (instance_class_loader == NULL) {
-                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "Failed retrieving class loader instance");
+                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "Failed to retrieve class loader instance");
                        (*env)->ExceptionDescribe(env);
                        exit(1);
                }
 
                jclass class_class_loader = (*env)->GetObjectClass(env, instance_class_loader);
                if (class_class_loader == NULL) {
-                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "Failed retrieving class of class loader");
+                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "Failed to retrieve class of class loader");
                        (*env)->ExceptionDescribe(env);
                        exit(1);
                }
@@ -90,7 +95,7 @@ redef class Sys
                // Get the method ClassLoader.findClass
                jmethodID class_class_loader_findClass = (*env)->GetMethodID(env, class_class_loader, "findClass", "(Ljava/lang/String;)Ljava/lang/Class;");
                if (class_class_loader_findClass == NULL) {
-                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "Failed retrieving 'findClass' method");
+                       __android_log_print(ANDROID_LOG_ERROR, "Nit", "Failed to retrieve 'findClass' method");
                        (*env)->ExceptionDescribe(env);
                        exit(1);
                }
@@ -100,7 +105,7 @@ redef class Sys
                Sys_class_loader_method__assign(self, JMethodID_as_nullable(class_class_loader_findClass));
 
                // Clean up
-               (*env)->DeleteLocalRef(env, class_activity);
+               (*env)->DeleteLocalRef(env, class_context);
                (*env)->DeleteLocalRef(env, instance_class_loader);
                (*env)->DeleteLocalRef(env, class_class_loader);
        `}
index d7427c3..d4e9b0f 100644 (file)
@@ -30,7 +30,15 @@ in "Java" `{
 `}
 
 redef class App
-       redef fun run_on_ui_thread(task) do app.native_activity.run_on_ui_thread task
+       redef fun run_on_ui_thread(task)
+       do
+               if app.activities.not_empty then
+                       app.native_activity.run_on_ui_thread task
+               else
+                       # There is no UI, it must be a service, run on the caller thread
+                       task.main
+               end
+       end
 end
 
 redef class Text
@@ -102,3 +110,8 @@ private extern class JavaHttpResponse in "Java" `{ org.apache.http.HttpResponse
                }
        `}
 end
+
+# Force linearization of print
+#
+# TODO prioritize `android::log`
+redef fun print(object) do super
index 8c6a928..746c0c4 100644 (file)
@@ -1305,7 +1305,7 @@ class Intent
        redef fun to_s do return intent.to_native_s.to_s
 end
 
-redef extern class NativeActivity
+redef extern class NativeContext
        private fun start_activity(intent: NativeIntent) in "Java" `{ self.startActivity(intent); `}
        private fun start_service(intent: NativeIntent) in "Java" `{ self.startService(intent); `}
        private fun stop_service(intent: NativeIntent) in "Java" `{ self.stopService(intent); `}
@@ -1331,11 +1331,11 @@ end
 redef class App
 
        # Execute the intent and launch the appropriate application
-       fun start_activity(intent: Intent) do native_activity.start_activity(intent.intent)
+       fun start_activity(intent: Intent) do native_context.start_activity(intent.intent)
 
        # Start a service that will be running until the `stop_service` call
-       fun start_service(intent: Intent) do native_activity.start_service(intent.intent)
+       fun start_service(intent: Intent) do native_context.start_service(intent.intent)
 
        # Stop service
-       fun stop_service(intent: Intent) do native_activity.stop_service(intent.intent)
+       fun stop_service(intent: Intent) do native_context.stop_service(intent.intent)
 end
index 8de56eb..74e3b4c 100644 (file)
@@ -25,7 +25,7 @@ in "Java" `{
        import android.app.Notification;
 `}
 
-redef class NativeActivity
+redef class NativeContext
        fun notification_manager: NativeNotificationManager in "Java" `{
                return (NotificationManager)self.getSystemService(Context.NOTIFICATION_SERVICE);
        `}
@@ -47,7 +47,7 @@ end
 
 extern class NativeNotificationBuilder in "Java" `{ android.app.Notification$Builder `}
 
-       new (context: NativeActivity) in "Java" `{ return new Notification.Builder(context); `}
+       new (context: NativeContext) in "Java" `{ return new Notification.Builder(context); `}
 
        fun create: NativeNotification in "Java" `{
                // Deprecated since API 16, which introduces `build`,
index efd7c5f..0b6cb66 100644 (file)
@@ -109,7 +109,7 @@ class Notification
                if id != null then
                        sys.jni_env.push_local_frame(8)
 
-                       var manager = app.native_activity.notification_manager
+                       var manager = app.native_context.notification_manager
                        manager.cancel(tag.to_java_string, id)
 
                        self.id = null
diff --git a/lib/android/service/NitBroadcastReceiver.java b/lib/android/service/NitBroadcastReceiver.java
new file mode 100644 (file)
index 0000000..bd358cf
--- /dev/null
@@ -0,0 +1,29 @@
+/* This file is part of NIT ( http://www.nitlanguage.org ).
+ *
+ * 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.
+ */
+
+package nit.app;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+// BroadcastReceiver launching NitService
+public class NitBroadcastReceiver extends BroadcastReceiver {
+
+       @Override
+       public void onReceive(Context context, Intent intent) {
+               context.startService(new Intent(context, NitService.class));
+       }
+}
diff --git a/lib/android/service/NitService.java b/lib/android/service/NitService.java
new file mode 100644 (file)
index 0000000..6603b8e
--- /dev/null
@@ -0,0 +1,58 @@
+/* This file is part of NIT ( http://www.nitlanguage.org ).
+ *
+ * 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.
+ */
+
+package nit.app;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+
+// Service implemented in Nit
+public class NitService extends Service {
+
+       protected int nitService = 0;
+
+       static {
+               System.loadLibrary("main");
+       }
+
+       @Override
+       public int onStartCommand(Intent intent, int flags, int id) {
+               return nitOnStartCommand(nitService, intent, flags, id);
+       }
+
+       @Override
+       public void onCreate() {
+               nitService = nitNewService();
+               nitOnCreate(nitService);
+               super.onCreate();
+       }
+
+       @Override
+       public void onDestroy() {
+               nitOnDestroy(nitService);
+               super.onDestroy();
+       }
+
+       @Override
+       public IBinder onBind(Intent arg) {
+               return null;
+       }
+
+       protected native int nitNewService();
+       protected native int nitOnStartCommand(int nitService, Intent intent, int flags, int id);
+       protected native void nitOnCreate(int nitService);
+       protected native void nitOnDestroy(int nitService);
+}
diff --git a/lib/android/service/at_boot.nit b/lib/android/service/at_boot.nit
new file mode 100644 (file)
index 0000000..a2c1868
--- /dev/null
@@ -0,0 +1,30 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
+
+# Import this module to launch `Service` at device boot
+module at_boot is
+       extra_java_files "NitBroadcastReceiver.java"
+       android_manifest """
+<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+"""
+       android_manifest_application """
+<receiver android:name="nit.app.NitBroadcastReceiver">
+       <intent-filter>
+               <action android:name="android.intent.action.BOOT_COMPLETED" />
+       </intent-filter>
+</receiver>
+"""
+end
+
+import service
diff --git a/lib/android/service/service.nit b/lib/android/service/service.nit
new file mode 100644 (file)
index 0000000..901a0e2
--- /dev/null
@@ -0,0 +1,159 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
+
+# Android service support for _app.nit_ centered around the class `Service`
+module service is
+       extra_java_files "NitService.java"
+       android_manifest_application """<service android:name="nit.app.NitService"></service>"""
+end
+
+import android::nit_activity
+
+in "C" `{
+       // Nit's App running instance, declared in `nit_activity`
+       extern App global_app;
+
+       JNIEXPORT jint JNICALL Java_nit_app_NitService_nitNewService
+               (JNIEnv *env, jobject java_service)
+       {
+               // Pin a ref to the Java service in the Java GC
+               java_service = (*env)->NewGlobalRef(env, java_service);
+
+               // Create the service in Nit and pin it in the Nit GC
+               Service nit_service = App_register_service(global_app, java_service);
+
+               // FIXME replace the previous call to register_service by
+               // the following line when #1941 is fixed:
+               //Service nit_service = new_Service(java_service);
+
+               Service_incr_ref(nit_service);
+
+               return (jint)(void*)nit_service;
+       }
+
+       JNIEXPORT jint JNICALL Java_nit_app_NitService_nitOnStartCommand
+               (JNIEnv *env, jobject java_service, jint nit_service, jobject intent, jint flags, jint id)
+       {
+               return Service_on_start_command((Service)nit_service, intent, flags, id);
+       }
+
+       JNIEXPORT void JNICALL Java_nit_app_NitService_nitOnCreate
+               (JNIEnv *env, jobject java_service, jint nit_service)
+       {
+               Service_on_create((Service)nit_service);
+       }
+
+       JNIEXPORT void JNICALL Java_nit_app_NitService_nitOnDestroy
+               (JNIEnv *env, jobject java_service, jint nit_service)
+       {
+               Service_on_destroy((Service)nit_service);
+
+               // Unpin the service instances in both Nit and Java
+               java_service = Service_native((Service)nit_service);
+               (*env)->DeleteGlobalRef(env, java_service);
+               Service_decr_ref(nit_service);
+       }
+`}
+
+redef class App
+
+       # Current instance of `Service`, if any
+       var service: nullable Service = null
+
+       # Launch `Service` in the background, it will be set as `service` when ready
+       fun start_service do native_context.start_service
+
+       # Register a service from Java/C
+       #
+       # FIXME remove when #1941 is fixed
+       private fun register_service(java_service: NativeService): Service
+       do
+               return new Service(java_service.new_global_ref)
+       end
+
+       # Prioritize an activity context if one is running, fallback on a service
+       redef fun native_context
+       do
+               if activities.not_empty then return super
+
+               var service = service
+               assert service != null
+               return service.native
+       end
+
+       # Dummy method to force the compilation of callbacks from C
+       #
+       # The callbacks are used in the launch of a Nit service from C code.
+       private fun force_service_callbacks_in_c import Service, register_service,
+               Service.on_start_command, Service.on_create, Service.on_destroy, Service.native `{ `}
+
+       redef fun setup
+       do
+               super
+
+               # Call the dummy method to force their compilation in global compilation
+               force_service_callbacks_in_c
+       end
+end
+
+# Android service with its life-cycle callbacks
+class Service
+       # Java service with the Android context of this service
+       var native: NativeService
+
+       # The service has been created
+       fun on_create do app.service = self
+
+       # The service received a start command (may happen more then once per service)
+       #
+       # Should return either `start_sticky`, `start_not_sticky` or `start_redeliver_intent`.
+       fun on_start_command(intent: JavaObject, flags, id: Int): Int do return start_sticky
+
+       # The service is being destroyed
+       fun on_destroy do app.service = null
+end
+
+# Wrapper of Java class `android.app.Service`
+extern class NativeService in "Java" `{ android.app.Service `}
+       super NativeContext
+
+       redef fun new_global_ref import sys, Sys.jni_env `{
+               Sys sys = NativeService_sys(self);
+               JNIEnv *env = Sys_jni_env(sys);
+               return (*env)->NewGlobalRef(env, self);
+       `}
+end
+
+redef class NativeContext
+       private fun start_service in "Java" `{
+               android.content.Intent intent =
+                       new android.content.Intent(self, nit.app.NitService.class);
+               self.startService(intent);
+       `}
+end
+
+# The service is explicitly started and stopped, it is restarted if stopped by the system
+#
+# Return value of `Service::on_start_command`.
+fun start_sticky: Int in "Java" `{ return android.app.Service.START_STICKY; `}
+
+# The service may be stopped by the system and will not be restarted
+#
+# Return value of `Service::on_start_command`.
+fun start_not_sticky: Int in "Java" `{ return android.app.Service.START_NOT_STICKY; `}
+
+# The service is explicitly started and stopped, it is restarted with the last intent if stopped by the system
+#
+# Return value of `Service::on_start_command`.
+fun start_redeliver_intent: Int in "Java" `{ return android.app.Service.START_REDELIVER_INTENT; `}
index ca3a2b9..b268087 100644 (file)
@@ -144,7 +144,6 @@ end
 
 # Provides services to save and load data for the android platform
 class SharedPreferences
-       protected var context: NativeActivity
        protected var shared_preferences: NativeSharedPreferences
        protected var editor: NativeSharedPreferencesEditor
 
@@ -153,9 +152,8 @@ class SharedPreferences
 
        protected init(app: App, file_name: String, mode: Int)
        do
-               self.context = app.native_activity
                sys.jni_env.push_local_frame(1)
-               setup(file_name.to_java_string, mode)
+               setup(file_name.to_java_string, mode, app.native_context)
                sys.jni_env.pop_local_frame
        end
 
@@ -174,13 +172,13 @@ class SharedPreferences
                self.editor = editor.new_global_ref
        end
 
-       private fun setup(file_name: JavaString, mode: Int) import context, set_vars in "Java" `{
-               Activity context = (Activity) SharedPreferences_context(self);
+       private fun setup(file_name: JavaString, mode: Int, context: NativeContext) import set_vars in "Java" `{
                SharedPreferences sp;
 
                // Uses default SharedPreferences if file_name is an empty String
                if (file_name.equals("")) {
-                       sp = context.getPreferences((int)mode);
+                       Activity activity = (Activity)context;
+                       sp = activity.getPreferences((int)mode);
                } else {
                        sp = context.getSharedPreferences(file_name, (int)mode);
                }
@@ -405,6 +403,6 @@ end
 
 redef class App
        var shared_preferences: SharedPreferences is lazy do
-               return new SharedPreferences.privately(self, "")
+               return new SharedPreferences.privately(self, "app.nit")
        end
 end
index 21c2cf9..3cf745c 100644 (file)
@@ -28,13 +28,12 @@ redef class App
        fun toast(message: String, is_long: Bool)
        do
                var jstr = message.to_java_string
-               native_toast(jstr, is_long)
+               native_toast(jstr, is_long, native_activity)
                jstr.delete_local_ref
        end
 
-       private fun native_toast(message: JavaString, is_long: Bool)
-       import native_activity in "Java" `{
-               final android.app.Activity context = App_native_activity(self);
+       private fun native_toast(message: JavaString, is_long: Bool, native_activity: NativeActivity) in "Java" `{
+               final android.app.Activity context = native_activity;
                final CharSequence final_message = message;
                final int duration = is_long? Toast.LENGTH_LONG: Toast.LENGTH_SHORT;
 
index b6a3460..e4dd670 100644 (file)
@@ -54,6 +54,12 @@ extern class NativeView in "Java" `{ android.view.View `}
 
        fun enabled: Bool in "Java" `{ return self.isEnabled(); `}
        fun enabled=(value: Bool) in "Java" `{ self.setEnabled(value); `}
+
+       # Java implementation: int android.view.View.getId()
+       fun id: Int in "Java" `{ return self.getId(); `}
+
+       # Java implementation: android.view.View.setId(int)
+       fun id=(id: Int) in "Java" `{ self.setId((int)id); `}
 end
 
 # A collection of `NativeView`
@@ -448,6 +454,21 @@ extern class Android_widget_ArrayAdapter in "Java" `{ android.widget.ArrayAdapte
        `}
 end
 
+# Java class: android.app.Fragment
+extern class Android_app_Fragment in "Java" `{ android.app.Fragment `}
+       super JavaObject
+
+       redef fun new_global_ref import sys, Sys.jni_env `{
+               Sys sys = Android_app_Fragment_sys(self);
+               JNIEnv *env = Sys_jni_env(sys);
+               return (*env)->NewGlobalRef(env, self);
+       `}
+
+       redef fun pop_from_local_frame_with_env(jni_env) `{
+               return (*jni_env)->PopLocalFrame(jni_env, self);
+       `}
+end
+
 # Java class: android.widget.AbsListView
 extern class Android_widget_AbsListView in "Java" `{ android.widget.AbsListView `}
        #super Android_widget_AdapterView
@@ -455,7 +476,7 @@ extern class Android_widget_AbsListView in "Java" `{ android.widget.AbsListView
        #super Android_view_ViewTreeObserver_OnGlobalLayoutListener
        #super Android_widget_Filter_FilterListener
        #super Android_view_ViewTreeObserver_OnTouchModeChangeListener
-       super NativeView
+       super NativeViewGroup
 
        # Java implementation:  android.widget.AbsListView.setAdapter(android.widget.Adapter)
        fun set_adapter(arg0: Android_widget_ListAdapter) in "Java" `{
@@ -992,3 +1013,69 @@ fun android_r_style_text_appearance_medium: Int in "Java" `{
 fun android_r_style_text_appearance_small: Int in "Java" `{
        return android.R.style.TextAppearance_Small;
 `}
+
+# Java class: android.widget.Checkable
+extern class Android_widget_Checkable in "Java" `{ android.widget.Checkable `}
+       super JavaObject
+
+       # Java implementation: android.widget.Checkable.setChecked(boolean)
+       fun set_checked(arg0: Bool) in "Java" `{
+               self.setChecked(arg0);
+       `}
+
+       # Java implementation: boolean android.widget.Checkable.isChecked()
+       fun is_checked: Bool in "Java" `{
+               return self.isChecked();
+       `}
+
+       # Java implementation: android.widget.Checkable.toggle()
+       fun toggle in "Java" `{
+               self.toggle();
+       `}
+
+       redef fun new_global_ref import sys, Sys.jni_env `{
+               Sys sys = Android_widget_Checkable_sys(self);
+               JNIEnv *env = Sys_jni_env(sys);
+               return (*env)->NewGlobalRef(env, self);
+       `}
+
+       redef fun pop_from_local_frame_with_env(jni_env) `{
+               return (*jni_env)->PopLocalFrame(jni_env, self);
+       `}
+end
+
+# Java abstract class: android.widget.CompoundButton
+extern class Android_widget_CompoundButton in "Java" `{ android.widget.CompoundButton `}
+       super NativeButton
+       super Android_widget_Checkable
+
+       redef fun new_global_ref import sys, Sys.jni_env `{
+               Sys sys = Android_widget_CompoundButton_sys(self);
+               JNIEnv *env = Sys_jni_env(sys);
+               return (*env)->NewGlobalRef(env, self);
+       `}
+
+       redef fun pop_from_local_frame_with_env(jni_env) `{
+               return (*jni_env)->PopLocalFrame(jni_env, self);
+       `}
+end
+
+# Java class: android.widget.CheckBox
+extern class Android_widget_CheckBox in "Java" `{ android.widget.CheckBox `}
+       super Android_widget_CompoundButton
+
+       # Java constructor: android.widget.CheckBox
+       new (a: NativeContext) in "Java" `{
+               return new android.widget.CheckBox(a);
+       `}
+
+       redef fun new_global_ref import sys, Sys.jni_env `{
+               Sys sys = Android_widget_CheckBox_sys(self);
+               JNIEnv *env = Sys_jni_env(sys);
+               return (*env)->NewGlobalRef(env, self);
+       `}
+
+       redef fun pop_from_local_frame_with_env(jni_env) `{
+               return (*jni_env)->PopLocalFrame(jni_env, self);
+       `}
+end
index 90c513b..5d428ba 100644 (file)
@@ -37,18 +37,69 @@ redef class Control
        type NATIVE: JavaObject
 end
 
+redef class NativeActivity
+
+       private fun remove_title_bar in "Java" `{
+               self.requestWindowFeature(android.view.Window.FEATURE_NO_TITLE);
+       `}
+
+       # Insert a single layout as the root of the activity window
+       private fun insert_root_layout(root_layout_id: Int)
+       in "Java" `{
+               android.widget.FrameLayout layout = new android.widget.FrameLayout(self);
+               layout.setId((int)root_layout_id);
+               self.setContentView(layout);
+       `}
+
+       # Replace the currently visible fragment, if any, with `native_fragment`
+       private fun show_fragment(root_layout_id: Int, native_fragment: Android_app_Fragment)
+       in "Java" `{
+               android.app.FragmentTransaction transaction = self.getFragmentManager().beginTransaction();
+               transaction.replace((int)root_layout_id, native_fragment);
+               transaction.commit();
+       `}
+end
+
+redef class App
+       redef fun on_create
+       do
+               app.native_activity.remove_title_bar
+               native_activity.insert_root_layout(root_layout_id)
+               super
+       end
+
+       # Identifier of the container holding the fragments
+       private var root_layout_id = 0xFFFF
+
+       redef fun window=(window)
+       do
+               native_activity.show_fragment(root_layout_id, window.native)
+               super
+       end
+end
+
+# On Android, a window is implemented with the fragment `native`
 redef class Window
-       redef var native = app.native_activity.new_global_ref
+       redef var native = (new Android_app_Fragment(self)).new_global_ref
 
-       redef type NATIVE: NativeActivity
+       redef type NATIVE: Android_app_Fragment
+
+       # Root high-level view of this window
+       var view: nullable View = null
 
        redef fun add(item)
        do
+               if item isa View then view = item
                super
+       end
 
-               # FIXME abstract the Android restriction where `content_view` must be a layout
-               assert item isa Layout
-               native.content_view = item.native
+       private fun on_create_fragment: NativeView
+       do
+               on_create
+
+               var view = view
+               assert view != null else print_error "{class_name} needs a `view` after `Window::on_create` returns"
+               return view.native
        end
 end
 
@@ -110,7 +161,7 @@ redef class ListLayout
                var adapter = new Android_widget_ArrayAdapter(app.native_activity,
                        android_r_layout_simple_list_item_1, self)
                native.set_adapter adapter
-               return adapter
+               return adapter.new_global_ref
        end
 
        redef fun add(item)
@@ -166,9 +217,37 @@ redef class Label
        init do native.set_text_appearance(app.native_activity, android_r_style_text_appearance_medium)
 end
 
+redef class CheckBox
+       redef type NATIVE: Android_widget_CompoundButton
+       redef var native do return (new Android_widget_CheckBox(app.native_activity)).new_global_ref
+
+       redef fun is_checked do return native.is_checked
+       redef fun is_checked=(value) do native.set_checked(value)
+end
+
 redef class TextInput
        redef type NATIVE: NativeEditText
        redef var native = (new NativeEditText(app.native_activity)).new_global_ref
+
+       redef fun is_password=(value)
+       do
+               native.is_password = value or else false
+               super
+       end
+end
+
+redef class NativeEditText
+
+       # Configure this view to hide passwords
+       fun is_password=(value: Bool) in "Java" `{
+               if (value) {
+                       self.setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD);
+                       self.setTransformationMethod(android.text.method.PasswordTransformationMethod.getInstance());
+               } else {
+                       self.setInputType(android.text.InputType.TYPE_CLASS_TEXT);
+                       self.setTransformationMethod(null);
+               }
+       `}
 end
 
 redef class Button
@@ -186,6 +265,7 @@ redef class NativeButton
        private new (context: NativeActivity, sender_object: Button)
        import Button.on_click in "Java" `{
                final int final_sender_object = sender_object;
+               Button_incr_ref(final_sender_object);
 
                return new android.widget.Button(context){
                        @Override
@@ -199,3 +279,19 @@ redef class NativeButton
                };
        `}
 end
+
+redef class Android_app_Fragment
+       private new (nit_window: Window)
+       import Window.on_create_fragment in "Java" `{
+               final int final_nit_window = nit_window;
+
+               return new android.app.Fragment(){
+                       @Override
+                       public android.view.View onCreateView(android.view.LayoutInflater inflater,
+                               android.view.ViewGroup container, android.os.Bundle state) {
+
+                               return Window_on_create_fragment(final_nit_window);
+                       }
+               };
+       `}
+end
index 99ff7ad..cef49ee 100644 (file)
@@ -49,10 +49,10 @@ end
 redef class App
        # Get the handle to this device vibrator as a global ref
        var vibrator: Vibrator is lazy do
-               var v = vibrator_native(native_activity)
+               var v = vibrator_native(native_context)
                return v.new_global_ref
        end
-       private fun vibrator_native(context: NativeActivity): Vibrator in "Java" `{
+       private fun vibrator_native(context: NativeContext): Vibrator in "Java" `{
                android.os.Vibrator v = (android.os.Vibrator)
                        context.getSystemService(android.content.Context.VIBRATOR_SERVICE);
                return v;
diff --git a/lib/android/wifi.nit b/lib/android/wifi.nit
new file mode 100644 (file)
index 0000000..1cc68bb
--- /dev/null
@@ -0,0 +1,158 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
+
+# Simple wrapper of the Android WiFi services
+#
+# Refer to the official Android documentation for the details on these services.
+module wifi is android_manifest """
+       <uses-permission android:name="android.hardware.WIFI" />
+       <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+"""
+
+import android::nit_activity
+
+redef class NativeContext
+       # Handle to the WiFi system service
+       fun wifi_manager: NativeWifiManager in "Java" `{
+               return (android.net.wifi.WifiManager)
+                       self.getSystemService(android.content.Context.WIFI_SERVICE);
+       `}
+end
+
+# Wraps Java class: `android.net.wifi.WifiManager`
+extern class NativeWifiManager in "Java" `{ android.net.wifi.WifiManager `}
+       super JavaObject
+
+       # Wraps: `removeNetwork`
+       fun remove_network(arg0: Int): Bool in "Java" `{
+               return self.removeNetwork((int)arg0);
+       `}
+
+       # Wraps: `enableNetwork`
+       fun enable_network(arg0: Int, arg1: Bool): Bool in "Java" `{
+               return self.enableNetwork((int)arg0, arg1);
+       `}
+
+       # Wraps: `disableNetwork`
+       fun disable_network(arg0: Int): Bool in "Java" `{
+               return self.disableNetwork((int)arg0);
+       `}
+
+       # Wraps: `disconnect`
+       fun disconnect: Bool in "Java" `{
+               return self.disconnect();
+       `}
+
+       # Wraps: `reconnect`
+       fun reconnect: Bool in "Java" `{
+               return self.reconnect();
+       `}
+
+       # Wraps: `reassociate`
+       fun reassociate: Bool in "Java" `{
+               return self.reassociate();
+       `}
+
+       # Wraps: `pingSupplicant`
+       fun ping_supplicant: Bool in "Java" `{
+               return self.pingSupplicant();
+       `}
+
+       # Wraps: `startScan`
+       fun start_scan: Bool in "Java" `{
+               return self.startScan();
+       `}
+
+       # Wraps: `getScanResults`
+       fun get_scan_results: NativeListOfScanResult in "Java" `{
+               return self.getScanResults();
+       `}
+
+       # Wraps: `saveConfiguration`
+       fun save_configuration: Bool in "Java" `{
+               return self.saveConfiguration();
+       `}
+
+       # Wraps: `setWifiEnabled`
+       fun set_wifi_enabled(arg0: Bool): Bool in "Java" `{
+               return self.setWifiEnabled(arg0);
+       `}
+
+       # Wraps: `getWifiState`
+       fun get_wifi_state: Int in "Java" `{
+               return self.getWifiState();
+       `}
+
+       # Wraps: `isWifiEnabled`
+       fun is_wifi_enabled: Bool in "Java" `{
+               return self.isWifiEnabled();
+       `}
+
+       # Wraps: `calculateSignalLevel`
+       fun calculate_signal_level(arg0: Int, arg1: Int): Int in "Java" `{
+               return self.calculateSignalLevel((int)arg0, (int)arg1);
+       `}
+
+       # Wraps: `compareSignalLevel`
+       fun compare_signal_level(arg0: Int, arg1: Int): Int in "Java" `{
+               return self.compareSignalLevel((int)arg0, (int)arg1);
+       `}
+end
+
+# Wraps Java class: `android.net.wifi.ScanResult`
+extern class NativeScanResult in "Java" `{ android.net.wifi.ScanResult `}
+       super JavaObject
+
+       # Wraps: `describeContents`
+       fun describe_contents: Int in "Java" `{
+               return self.describeContents();
+       `}
+
+       # Wraps: `BSSID`
+       fun bssid: JavaString in "Java" `{
+               return self.BSSID;
+       `}
+
+       # Wraps: `SSID`
+       fun ssid: JavaString in "Java" `{
+               return self.SSID;
+       `}
+
+       # Wraps: `capabilities`
+       fun capabilities: JavaString in "Java" `{
+               return self.capabilities;
+       `}
+
+       # Wraps: `frequency`
+       fun frequency: Int in "Java" `{
+               return self.frequency;
+       `}
+
+       # Wraps: `level`
+       fun level: Int in "Java" `{
+               return self.level;
+       `}
+end
+
+# Java list of `NativeScanResult`
+extern class NativeListOfScanResult in "Java" `{ java.util.List `}
+
+       # Number of elements in this list
+       fun length: Int in "Java" `{ return self.size();`}
+
+       # Element at `index`
+       fun [](index: Int): NativeScanResult in "Java" `{
+               return ((java.util.List<android.net.wifi.ScanResult>)self).get((int)index);
+       `}
+end
index 4b62f4a..9a5feca 100644 (file)
@@ -48,6 +48,9 @@ class AsyncHttpRequest
        # Should the response content be deserialized from JSON?
        var deserialize_json = true is writable
 
+       # Delay in seconds before sending this request
+       var delay = 0.0 is writable
+
        redef fun start
        do
                before
@@ -56,6 +59,9 @@ class AsyncHttpRequest
 
        redef fun main
        do
+               var delay = delay
+               if delay > 0.0 then delay.sleep
+
                var uri = rest_server_uri / rest_action
 
                # Execute REST request
index 3a6af1e..727b716 100644 (file)
@@ -163,6 +163,9 @@ end
 # A control for the user to enter custom `text`
 class TextInput
        super TextView
+
+       # Hide password or any content entered in this view?
+       var is_password: nullable Bool is writable
 end
 
 # A pushable button, raises `ButtonPressEvent`
@@ -175,6 +178,14 @@ class Label
        super TextView
 end
 
+# Toggle control with two states and a label
+class CheckBox
+       super TextView
+
+       # Is this control in the checked/on state?
+       var is_checked = false is writable
+end
+
 # A `Button` press event
 class ButtonPressEvent
        super AppEvent
index 4516703..ab81a37 100644 (file)
@@ -186,6 +186,7 @@ class List[E]
        do
                _head = null
                _tail = null
+               length = 0
        end
 
 
index 66b81aa..0454f1d 100644 (file)
@@ -1145,11 +1145,16 @@ redef class String
 
        # Create a directory (and all intermediate directories if needed)
        #
+       # The optional `mode` parameter specifies the permissions of the directory,
+       # the default value is `0o777`.
+       #
        # Return an error object in case of error.
        #
        #    assert "/etc/".mkdir != null
-       fun mkdir: nullable Error
+       fun mkdir(mode: nullable Int): nullable Error
        do
+               mode = mode or else 0o777
+
                var dirs = self.split_with("/")
                var path = new FlatBuffer
                if dirs.is_empty then return null
@@ -1162,7 +1167,7 @@ redef class String
                        if d.is_empty then continue
                        path.append(d)
                        path.add('/')
-                       var res = path.to_s.to_cstring.file_mkdir
+                       var res = path.to_s.to_cstring.file_mkdir(mode)
                        if not res and error == null then
                                error = new IOError("Cannot create directory `{path}`: {sys.errno.strerror}")
                        end
@@ -1326,7 +1331,7 @@ redef class NativeString
                return stat_element;
        `}
 
-       private fun file_mkdir: Bool `{ return !mkdir(self, 0777); `}
+       private fun file_mkdir(mode: Int): Bool `{ return !mkdir(self, mode); `}
 
        private fun rmdir: Bool `{ return !rmdir(self); `}
 
index bdd7daa..0f8325f 100644 (file)
@@ -128,7 +128,7 @@ redef class Int
        #
        # assert 3.is_prime
        # assert not 1.is_prime
-       # assert not 12.is_prime
+       # assert not 15.is_prime
        fun is_prime: Bool
        do
                if self == 2 then
@@ -136,7 +136,7 @@ redef class Int
                else if self <= 1 or self.is_even then
                        return false
                end
-               for i in [3..self.sqrt[ do
+               for i in [3..self.sqrt] do
                        if self % i == 0 then return false
                end
                return true
@@ -524,11 +524,11 @@ redef class Sys
        end
 end
 
-# Computes the arc tangent given `x` and `y`.
+# Computes the arc tangent given `y` and `x`.
 #
 #     assert atan2(-0.0, 1.0) == -0.0
 #     assert atan2(0.0, 1.0) == 0.0
-fun atan2(x: Float, y: Float): Float `{ return atan2(x, y); `}
+fun atan2(y: Float, x: Float): Float `{ return atan2(y, x); `}
 
 # Approximate value of **pi**.
 fun pi: Float do return 3.14159265
index 0d2848c..b38eb27 100644 (file)
@@ -495,18 +495,21 @@ abstract class Text
                end
        end
 
-       # Justify a self in a space of `length`
+       # Justify `self` in a space of `length`
        #
        # `left` is the space ratio on the left side.
        # * 0.0 for left-justified (no space at the left)
        # * 1.0 for right-justified (all spaces at the left)
        # * 0.5 for centered (half the spaces at the left)
        #
+       # `char`, or `' '` by default, is repeated to pad the empty space.
+       #
        # Examples
        #
        #     assert "hello".justify(10, 0.0)  == "hello     "
        #     assert "hello".justify(10, 1.0)  == "     hello"
        #     assert "hello".justify(10, 0.5)  == "  hello   "
+       #     assert "hello".justify(10, 0.5, '.') == "..hello..."
        #
        # If `length` is not enough, `self` is returned as is.
        #
@@ -515,13 +518,14 @@ abstract class Text
        # REQUIRE: `left >= 0.0 and left <= 1.0`
        # ENSURE: `self.length <= length implies result.length == length`
        # ENSURE: `self.length >= length implies result == self`
-       fun justify(length: Int, left: Float): String
+       fun justify(length: Int, left: Float, char: nullable Char): String
        do
+               var pad = (char or else ' ').to_s
                var diff = length - self.length
                if diff <= 0 then return to_s
                assert left >= 0.0 and left <= 1.0
                var before = (diff.to_f * left).to_i
-               return " " * before + self + " " * (diff-before)
+               return pad * before + self + pad * (diff-before)
        end
 
        # Mangle a string to be a unique string only made of alphanumeric characters and underscores.
@@ -615,7 +619,7 @@ abstract class Text
                                b.append("\\\\")
                        else if c.code_point < 32 then
                                b.add('\\')
-                               var oct = c.code_point.to_base(8, false)
+                               var oct = c.code_point.to_base(8)
                                # Force 3 octal digits since it is the
                                # maximum allowed in the C specification
                                if oct.length == 1 then
@@ -689,7 +693,7 @@ abstract class Text
                                b.add('\\')
                                b.add(c)
                        else if c.code_point < 32 or c == ';' or c == '|' or c == '\\' or c == '=' then
-                               b.append("?{c.code_point.to_base(16, false)}")
+                               b.append("?{c.code_point.to_base(16)}")
                        else
                                b.add(c)
                        end
@@ -1569,9 +1573,9 @@ redef class Int
        # Returns a string describing error number
        fun strerror: String do return strerror_ext.to_s
 
-       # Fill `s` with the digits in base `base` of `self` (and with the '-' sign if 'signed' and negative).
+       # Fill `s` with the digits in base `base` of `self` (and with the '-' sign if negative).
        # assume < to_c max const of char
-       private fun fill_buffer(s: Buffer, base: Int, signed: Bool)
+       private fun fill_buffer(s: Buffer, base: Int)
        do
                var n: Int
                # Sign
@@ -1603,14 +1607,30 @@ redef class Int
                snprintf(nstr, strlen, "%ld", self);
        `}
 
-       # return displayable int in base base and signed
-       fun to_base(base: Int, signed: Bool): String is abstract
+       # String representation of `self` in the given `base`
+       #
+       # ~~~
+       # assert 15.to_base(10) == "15"
+       # assert 15.to_base(16) == "f"
+       # assert 15.to_base(2) == "1111"
+       # assert (-10).to_base(3) == "-101"
+       # ~~~
+       fun to_base(base: Int): String
+       do
+               var l = digit_count(base)
+               var s = new Buffer
+               s.enlarge(l)
+               for x in [0..l[ do s.add(' ')
+               fill_buffer(s, base)
+               return s.to_s
+       end
+
 
        # return displayable int in hexadecimal
        #
        #     assert 1.to_hex  == "1"
        #     assert (-255).to_hex  == "-ff"
-       fun to_hex: String do return to_base(16,false)
+       fun to_hex: String do return to_base(16)
 end
 
 redef class Float
@@ -1887,7 +1907,11 @@ redef class Collection[E]
        #     assert [1, 2, 3].join(":")    == "1:2:3"
        #     assert [1..3].join(":")       == "1:2:3"
        #     assert [1..3].join            == "123"
-       fun join(separator: nullable Text): String
+       #
+       # if `last_separator` is given, then it is used to separate the last element.
+       #
+       #     assert [1, 2, 3, 4].join(", ", " and ")    == "1, 2, 3 and 4"
+       fun join(separator: nullable Text, last_separator: nullable Text): String
        do
                if is_empty then return ""
 
@@ -1898,13 +1922,19 @@ redef class Collection[E]
                var e = i.item
                if e != null then s.append(e.to_s)
 
+               if last_separator == null then last_separator = separator
+
                # Concat other items
                i.next
                while i.is_ok do
-                       if separator != null then s.append(separator)
                        e = i.item
-                       if e != null then s.append(e.to_s)
                        i.next
+                       if i.is_ok then
+                               if separator != null then s.append(separator)
+                       else
+                               if last_separator != null then s.append(last_separator)
+                       end
+                       if e != null then s.append(e.to_s)
                end
                return s.to_s
        end
index 47b8608..18fdabe 100644 (file)
@@ -52,20 +52,25 @@ redef class FlatText
        fun char_to_byte_index(index: Int): Int do
                var dpos = index - _position
                var b = _bytepos
+               var its = _items
 
-               if dpos == 0 then return b
                if dpos == 1 then
-                       b += _items.length_of_char_at(b)
+                       if its[b] & 0x80u8 == 0x00u8 then
+                               b += 1
+                       else
+                               b += its.length_of_char_at(b)
+                       end
                        _bytepos = b
                        _position = index
                        return b
                end
                if dpos == -1 then
-                       b = _items.find_beginning_of_char_at(b - 1)
+                       b = its.find_beginning_of_char_at(b - 1)
                        _bytepos = b
                        _position = index
                        return b
                end
+               if dpos == 0 then return b
 
                var ln = _length
                var pos = _position
@@ -74,7 +79,6 @@ redef class FlatText
                var delta_end = (ln - 1) - index
                var delta_cache = (pos - index).abs
                var min = delta_begin
-               var its = _items
 
                if delta_cache < min then min = delta_cache
                if delta_end < min then min = delta_end
@@ -292,7 +296,49 @@ redef class FlatText
        end
 
        redef fun [](index) do
-               assert index >= 0 and index < _length
+               var len = _length
+
+               # Statistically:
+               # * ~70% want the next char
+               # * ~23% want the previous
+               # * ~7% want the same char
+               #
+               # So it makes sense to shortcut early. And early is here.
+               var dpos = index - _position
+               var b = _bytepos
+               if dpos == 1 and index < len - 1 then
+                       var its = _items
+                       var c = its[b]
+                       if c & 0x80u8 == 0x00u8 then
+                               # We want the next, and current is easy.
+                               # So next is easy to find!
+                               b += 1
+                               _position = index
+                               _bytepos = b
+                               # The rest will be done by `dpos==0` bellow.
+                               dpos = 0
+                       end
+               else if dpos == -1 and index > 1 then
+                       var its = _items
+                       var c = its[b-1]
+                       if c & 0x80u8 == 0x00u8 then
+                               # We want the previous, and it is easy.
+                               b -= 1
+                               dpos = 0
+                               _position = index
+                               _bytepos = b
+                               return c.ascii
+                       end
+               end
+               if dpos == 0 then
+                       # We know what we want (+0 or +1) just get it now!
+                       var its = _items
+                       var c = its[b]
+                       if c & 0x80u8 == 0x00u8 then return c.ascii
+                       return items.char_at(b)
+               end
+
+               assert index >= 0 and index < len
                return fetch_char_at(index)
        end
 
@@ -1250,6 +1296,10 @@ redef class NativeString
        #
        # Very unsafe, make sure to have room for this char prior to calling this function.
        private fun set_char_at(pos: Int, c: Char) do
+               if c.code_point < 128 then
+                       self[pos] = c.code_point.to_b
+                       return
+               end
                var ln = c.u8char_len
                native_set_char(pos, c, ln)
        end
@@ -1280,14 +1330,6 @@ redef class NativeString
 end
 
 redef class Int
-       redef fun to_base(base, signed)
-       do
-               var l = digit_count(base)
-               var s = new FlatBuffer.from(" " * l)
-               fill_buffer(s, base, signed)
-               return s.to_s
-       end
-
        # return displayable int in base 10 and signed
        #
        #     assert 1.to_s            == "1"
index 5fc37f2..1555183 100644 (file)
@@ -132,13 +132,11 @@ extern class Tm `{struct tm *`}
        fun is_dst: Bool `{ return self->tm_isdst; `}
 
        # Convert `self` to a human readable String.
-       fun asctime: String import NativeString.to_s_with_copy `{
-               return NativeString_to_s_with_copy( asctime(self) );
-       `}
+       private fun asctime: NativeString `{ return asctime(self); `}
 
        # Convert `self` to a human readable String corresponding to `format`.
        # TODO document allowed format.
-       fun strftime(format: String): String import String.to_cstring, NativeString.to_s `{
+       fun strftime(format: String): String import String.to_cstring, NativeString.to_s_with_copy `{
                char* buf, *c_format;
 
                buf = (char*)malloc(100);
@@ -150,7 +148,7 @@ extern class Tm `{struct tm *`}
                return s;
        `}
 
-       redef fun to_s do return asctime.replace("\n", "")
+       redef fun to_s do return asctime.to_s_with_copy.replace("\n", "")
 end
 
 # Date using the international format defined by ISO 8601.
index 039fb94..94ad1c9 100644 (file)
@@ -444,7 +444,6 @@ end
 # Useful for converting a concave polygon into multiple convex ones
 fun triangulate(pts: Array[Point[Float]], results: Array[ConvexPolygon]) do
        var poly = new Polygon(pts)
-       poly.sort_ccw
        pts = poly.points
        recursive_triangulate(pts, results)
 end
index f7d2c78..b9270f3 100644 (file)
@@ -92,7 +92,8 @@ extern class GtkWidget `{GtkWidget *`}
                return self == o;
        `}
 
-       fun request_size(width, height: Int) `{
+       # Set the minimum dimension of this widget
+       fun set_size_request(width, height: Int) `{
                gtk_widget_set_size_request(self, width, height);
        `}
 
@@ -137,6 +138,21 @@ extern class GtkWidget `{GtkWidget *`}
 
        # Hide the widget (reverse the effects of `show`)
        fun hide `{ gtk_widget_hide(self); `}
+
+       # Vertical alignement of this widget
+       fun valign=(value: GtkAlign) `{ gtk_widget_set_valign(self, value); `}
+
+       # Horizontal alignement of this widget
+       fun halign=(value: GtkAlign) `{ gtk_widget_set_halign(self, value); `}
+end
+
+# How a widget deals with extra space
+extern class GtkAlign `{ GtkAlign `}
+       new fill `{ return GTK_ALIGN_FILL; `}
+       new start `{ return GTK_ALIGN_START; `}
+       new align_end `{ return GTK_ALIGN_END; `}
+       new center `{ return GTK_ALIGN_CENTER; `}
+       new baseline `{ return GTK_ALIGN_BASELINE; `}
 end
 
 # Base class for widgets which contain other widgets
@@ -199,6 +215,11 @@ extern class GtkWindow `{GtkWindow *`}
                signal_connect("destroy", to_call, user_data)
        end
 
+       # Resize the window as if the user had done so
+       fun resize(width, height: Int) `{
+               return gtk_window_resize(self, width, height);
+       `}
+
        fun resizable: Bool `{
                return gtk_window_get_resizable(self);
        `}
index e114d9d..25265c4 100644 (file)
@@ -236,6 +236,18 @@ extern class GtkLockButton
        super GtkButton
 end
 
+# Contains a single widget and scrollbars
+extern class GtkScrolledWindow `{ GtkScrolledWindow * `}
+       super GtkBin
+
+       new `{ return (GtkScrolledWindow *)gtk_scrolled_window_new(NULL, NULL); `}
+
+       # Set horizontal and vertical scrollbar policies
+       fun set_policy(hscrollbar_policy, vscrollbar_policy: GtkPolicyType) `{
+               gtk_scrolled_window_set_policy(self, hscrollbar_policy, vscrollbar_policy);
+       `}
+end
+
 # A button to launch a color selection dialog
 # See: https://developer.gnome.org/gtk3/stable/GtkColorButton.html
 extern class GtkColorButton `{GtkColorButton *`}
@@ -246,3 +258,22 @@ extern class GtkColorButton `{GtkColorButton *`}
        `}
 end
 
+# Button remaining "pressed-in" when clicked
+extern class GtkToggleButton `{ GtkToggleButton * `}
+       super GtkButton
+
+       # Current state, returns `true` if pressed/checked
+       fun active: Bool `{ return gtk_toggle_button_get_active(self); `}
+
+       # Set current state, `true` for pressed/checked
+       fun active=(value: Bool) `{ gtk_toggle_button_set_active(self, value); `}
+end
+
+# Check box next to a label
+extern class GtkCheckButton `{ GtkCheckButton * `}
+       super GtkToggleButton
+
+       new `{ return (GtkCheckButton *)gtk_check_button_new(); `}
+
+       new with_label(lbl: NativeString) `{ return (GtkCheckButton *)gtk_check_button_new_with_label((gchar *)lbl); `}
+end
index 1ea6c8f..96d1e8a 100644 (file)
@@ -203,6 +203,39 @@ redef class Label
        redef fun text do return native.text.to_s
 end
 
+# On iOS, check boxes are a layout composed of a label and an `UISwitch`
+redef class CheckBox
+
+       redef type NATIVE: UIStackView
+       redef fun native do return layout.native
+
+       # Root layout implementing this check box
+       var layout = new HorizontalLayout(parent=self.parent)
+
+       # Label with the text
+       var lbl = new Label(parent=layout)
+
+       # `UISwitch` acting as the real check box
+       var ui_switch: UISwitch is noautoinit
+
+       init do
+               # Tweak the layout so it is centered
+               layout.native.distribution = new UIStackViewDistribution.fill_proportionally
+               layout.native.alignment = new UIStackViewAlignment.center
+               layout.native.layout_margins_relative_arrangement = true
+
+               var s = new UISwitch
+               native.add_arranged_subview s
+               ui_switch = s
+       end
+
+       redef fun text=(text) do lbl.text = text
+       redef fun text do return lbl.text
+
+       redef fun is_checked do return ui_switch.on
+       redef fun is_checked=(value) do ui_switch.set_on_animated(value, true)
+end
+
 redef class TextInput
 
        redef type NATIVE: UITextField
@@ -210,6 +243,12 @@ redef class TextInput
 
        redef fun text=(text) do native.text = (text or else "").to_nsstring
        redef fun text do return native.text.to_s
+
+       redef fun is_password=(value)
+       do
+               native.secure_text_entry = value or else false
+               super
+       end
 end
 
 redef class Button
index 260237b..c162b84 100644 (file)
@@ -430,6 +430,11 @@ extern class UITextField in "ObjC" `{ UITextField * `}
        fun text=(text: NSString) in "ObjC" `{
                self.text = text;
        `}
+
+       # Wraps: `UITextField.secureTextEntry`
+       fun secure_text_entry=(value: Bool) in "ObjC" `{
+               self.secureTextEntry = value;
+       `}
 end
 
 # Lays out a collection of views in either a column or a row
@@ -490,14 +495,24 @@ extern class UIStackView in "ObjC" `{ UIStackView * `}
        fun spacing=(value: Float) in "ObjC" `{ self.spacing = value; `}
 
        # Wraps: `UIStackView.baselineRelativeArrangement`
-       #fun baseline_relative_arrangement: Bool in "ObjC" `{
-       #       return [self baselineRelativeArrangement];
-       #`}
+       fun baseline_relative_arrangement: Bool in "ObjC" `{
+               return self.baselineRelativeArrangement;
+       `}
+
+       # Wraps: `UIStackView.baselineRelativeArrangement`
+       fun baseline_relative_arrangement=(value: Bool) in "ObjC" `{
+               self.baselineRelativeArrangement = value;
+       `}
 
        # Wraps: `UIStackView.layoutMarginsRelativeArrangement`
-       #fun layout_margins_relative_arrangement: Bool in "ObjC" `{
-       #       return [self layoutMarginsRelativeArrangement];
-       #`}
+       fun layout_margins_relative_arrangement: Bool in "ObjC" `{
+               return self.layoutMarginsRelativeArrangement;
+       `}
+
+       # Wraps: `UIStackView.layoutMarginsRelativeArrangement`
+       fun layout_margins_relative_arrangement=(value: Bool) in "ObjC" `{
+               self.layoutMarginsRelativeArrangement = value;
+       `}
 end
 
 # Defines the orientation of the arranged views in `UIStackView`
@@ -591,3 +606,46 @@ extern class UITableViewStyle in "ObjC" `{ UITableViewStyle* `}
        new plain in "ObjC" `{ return UITableViewStylePlain; `}
        new grouped in "ObjC" `{ return UITableViewStyleGrouped; `}
 end
+
+# On/Off button
+extern class UISwitch in "ObjC" `{ UISwitch * `}
+       super UIView
+
+       # Wraps: `[self initWithFrame:(CGRect)frame]`
+       new in "ObjC" `{ return [[UISwitch alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame]]; `}
+
+       # Wraps: `UISwitch.onTintColor`
+#      fun on_tint_color: UIColor in "ObjC" `{
+#              return [self onTintColor];
+#      `}
+
+       # Wraps: `UISwitch.tintColor`
+#      fun tint_color: UIColor in "ObjC" `{
+#              return [self tintColor];
+#      `}
+
+       # Wraps: `UISwitch.thumbTintColor`
+#      fun thumb_tint_color: UIColor in "ObjC" `{
+#              return [self thumbTintColor];
+#      `}
+
+       # Wraps: `UISwitch.onImage`
+#      fun on_image: UIImage in "ObjC" `{
+#              return [self onImage];
+#      `}
+
+       # Wraps: `UISwitch.offImage`
+#      fun off_image: UIImage in "ObjC" `{
+#              return [self offImage];
+#      `}
+
+       # Wraps: `UISwitch.on`
+       fun on: Bool in "ObjC" `{
+               return self.on;
+       `}
+
+       # Wraps: `[self setOn:(BOOL)on animated:(BOOL)animated]`
+       fun set_on_animated(on: Bool, animated: Bool) in "ObjC" `{
+               [self setOn: on animated: animated];
+       `}
+end
index 9438a0a..4f9df3c 100644 (file)
@@ -609,9 +609,8 @@ redef class Map[K, V]
                                        v.stream.write ", "
                                else first = false
 
-                               if key == null then key = "null"
-
-                               v.stream.write key.to_s.to_json
+                               var k = key or else "null"
+                               v.stream.write k.to_s.to_json
                                v.stream.write ": "
                                if not v.try_to_serialize(val) then
                                        v.warn("element of type {val.class_name} is not serializable.")
index c01d417..36de40f 100644 (file)
 module libevent is pkgconfig("libevent")
 
 in "C header" `{
-       #include <sys/stat.h>
-       #include <sys/types.h>
-       #include <fcntl.h>
-       #include <errno.h>
-       #include <sys/socket.h>
-
        #include <event2/listener.h>
        #include <event2/bufferevent.h>
        #include <event2/buffer.h>
 `}
 
 in "C" `{
+       #include <sys/stat.h>
+       #include <sys/types.h>
+       #include <fcntl.h>
+       #include <errno.h>
+       #include <string.h>
+
+       #include <sys/socket.h>
+       #include <arpa/inet.h>
+       #include <netinet/in.h>
+       #include <netinet/ip.h>
+
+// Protect callbacks for compatibility with light FFI
+#ifdef Connection_decr_ref
        // Callback forwarded to 'Connection.write_callback'
        static void c_write_cb(struct bufferevent *bev, Connection ctx) {
                Connection_write_callback(ctx);
@@ -54,10 +61,12 @@ in "C" `{
 
        // Callback forwarded to 'ConnectionFactory.accept_connection'
        static void accept_connection_cb(struct evconnlistener *listener, evutil_socket_t fd,
-               struct sockaddr *address, int socklen, ConnectionFactory ctx)
+               struct sockaddr *addrin, int socklen, ConnectionFactory ctx)
        {
-               ConnectionFactory_accept_connection(ctx, listener, fd, address, socklen);
+               ConnectionFactory_accept_connection(ctx, listener, fd, addrin, socklen);
        }
+#endif
+
 `}
 
 # Structure to hold information and state for a Libevent dispatch loop.
@@ -392,17 +401,26 @@ class ConnectionFactory
        # Accept a connection on `listener`
        #
        # By default, it creates a new NativeBufferEvent and calls `spawn_connection`.
-       fun accept_connection(listener: ConnectionListener, fd: Int, address: Pointer, socklen: Int)
+       fun accept_connection(listener: ConnectionListener, fd: Int, addrin: Pointer, socklen: Int)
        do
                var base = listener.base
                var bev = new NativeBufferEvent.socket(base, fd, bev_opt_close_on_free)
-               var conn = spawn_connection(bev)
+
+               # Human representation of remote client address
+               var addr_len = 46 # Longest possible IPv6 address + null byte
+               var addr_buf = new NativeString(addr_len)
+               addr_buf = addrin_to_address(addrin, addr_buf, addr_len)
+               var addr = if addr_buf.address_is_null then
+                               "Unknown address"
+                       else addr_buf.to_s
+
+               var conn = spawn_connection(bev, addr)
                bev.enable ev_read|ev_write
                bev.setcb conn
        end
 
        # Create a new `Connection` object for `buffer_event`
-       fun spawn_connection(buffer_event: NativeBufferEvent): Connection
+       fun spawn_connection(buffer_event: NativeBufferEvent, address: String): Connection
        do
                return new Connection(buffer_event)
        end
@@ -416,4 +434,19 @@ class ConnectionFactory
                end
                return listener
        end
+
+       # Put string representation of source `address` into `buf`
+       private fun addrin_to_address(address: Pointer, buf: NativeString, buf_len: Int): NativeString `{
+               struct sockaddr *addrin = (struct sockaddr*)address;
+
+               if (addrin->sa_family == AF_INET) {
+                       struct in_addr *src = &((struct sockaddr_in*)addrin)->sin_addr;
+                       return (char *)inet_ntop(addrin->sa_family, src, buf, buf_len);
+               }
+               else if (addrin->sa_family == AF_INET6) {
+                       struct in6_addr *src = &((struct sockaddr_in6*)addrin)->sin6_addr;
+                       return (char *)inet_ntop(addrin->sa_family, src, buf, buf_len);
+               }
+               return NULL;
+       `}
 end
index 21dc181..23c1f91 100644 (file)
@@ -20,9 +20,41 @@ import gtk::v3_10
 
 import data_store
 
+# Request width of the GTK window for an app.nit application
+#
+# This is the minimum width of the window, it may grow bigger to fit content.
+fun gtk_window_width_request: Int do return 480
+
 redef class App
        redef fun setup do gtk_init
 
+       # Single GTK window of this application
+       var native_window: GtkWindow is lazy do
+               var win = new GtkWindow(new GtkWindowType.toplevel)
+               win.connect_destroy_signal_to_quit
+               win.titlebar = native_header_bar
+               win.add native_stack
+               return win
+       end
+
+       # GTK 3 header bar
+       var native_header_bar: GtkHeaderBar is lazy do
+               var bar = new GtkHeaderBar
+               bar.title = "app.nit" # TODO offer a portable API to name windows
+               bar.show_close_button = true
+
+               # TODO add back button
+
+               return bar
+       end
+
+       # Root `GtkStack` used to simulate the many app.nit windows
+       var native_stack: GtkStack is lazy do
+               var stack = new GtkStack
+               stack.homogeneous = false
+               return stack
+       end
+
        # On GNU/Linux, we go through all the callbacks once,
        # there is no complex life-cycle.
        redef fun run
@@ -32,8 +64,7 @@ redef class App
                app.on_start
                app.on_resume
 
-               var window = window
-               window.native.show_all
+               native_window.show_all
                gtk_main
 
                app.on_pause
@@ -44,6 +75,21 @@ redef class App
 
        # Spacing between GTK controls, default at 2
        var control_spacing = 2 is writable
+
+       redef fun window=(window)
+       do
+               var root_view = window.view
+               assert root_view != null
+               native_stack.add root_view.native
+               native_stack.visible_child = root_view.native
+
+               # FIXME These settings forces the GTK window to resize to its minimum
+               # size when changing app.nit windows. It is not pretty, but it could be
+               # improved with GTK 3.18 and interpolate_size.
+               native_window.resizable = false
+
+               super
+       end
 end
 
 redef class Control
@@ -64,21 +110,23 @@ redef class Control
 end
 
 redef class CompositeControl
-       redef type NATIVE: GtkContainer
-
-       redef fun add(item)
-       do
-               super
-               native.add item.native
-       end
 end
 
+# On GNU/Linux, a window is implemented by placing the `view` in a `GtkStack` in the single GTK window
 redef class Window
-       redef type NATIVE: GtkWindow
-       redef var native do
-               var win = new GtkWindow(new GtkWindowType.toplevel)
-               win.connect_destroy_signal_to_quit
-               return win
+
+       # Root view of this window
+       var view: nullable View = null
+
+       redef fun add(view)
+       do
+               if view isa View then
+                       self.view = view
+                       view.native.valign = new GtkAlign.start
+                       view.native.set_size_request(gtk_window_width_request, 0)
+               end
+
+               super
        end
 end
 
@@ -91,10 +139,17 @@ end
 
 redef class Layout
        redef type NATIVE: GtkBox
-       redef fun remove(view)
+
+       redef fun add(item)
+       do
+               super
+               if item isa View then native.add item.native
+       end
+
+       redef fun remove(item)
        do
                super
-               native.remove view.native
+               if item isa View then native.remove item.native
        end
 end
 
@@ -104,6 +159,7 @@ redef class HorizontalLayout
        redef fun add(item)
        do
                super
+               # FIXME abstract the use either homogeneous or weight to balance views size in a layout
                native.homogeneous = true
                native.set_child_packing(item.native, true, true, 0, new GtkPackType.start)
        end
@@ -116,17 +172,41 @@ redef class VerticalLayout
        do
                super
 
-               # FIXME abstract the use either homogeneous or weight to balance views size in a layout
-               native.homogeneous = true
                native.set_child_packing(item.native, true, true, 0, new GtkPackType.start)
        end
 end
 
+# On GNU/Linux, this is implemented by a `GtkListBox` inside a `GtkScrolledWindow`
 redef class ListLayout
-       redef type NATIVE: GtkListBox
-       redef var native = new GtkListBox
 
-       init do native.selection_mode = new GtkSelectionMode.none
+       redef type NATIVE: GtkScrolledWindow
+
+       redef var native = new GtkScrolledWindow
+
+       # Container inside `native`
+       var native_list_box = new GtkListBox
+
+       init do
+               native_list_box.selection_mode = new GtkSelectionMode.none
+               native.add native_list_box
+
+               # Set the size of the GtkScrolledWindow:
+               # use content width and set static height
+               native.set_policy(new GtkPolicyType.never, new GtkPolicyType.automatic)
+               native.set_size_request(gtk_window_width_request, 640)
+       end
+
+       redef fun add(item)
+       do
+               super
+               if item isa View then native_list_box.add item.native
+       end
+
+       redef fun remove(item)
+       do
+               super
+               if item isa View then native_list_box.remove item.native
+       end
 end
 
 redef class Button
@@ -149,6 +229,17 @@ redef class Label
        redef fun text=(value) do native.text = (value or else "").to_s
 end
 
+redef class CheckBox
+       redef type NATIVE: GtkCheckButton
+       redef var native = new GtkCheckButton
+
+       redef fun text do return native.text
+       redef fun text=(value) do native.text = (value or else "").to_s
+
+       redef fun is_checked do return native.active
+       redef fun is_checked=(value) do native.active = value
+end
+
 redef class TextInput
        redef type NATIVE: GtkEntry
        redef var native = new GtkEntry
@@ -158,4 +249,10 @@ redef class TextInput
                if value == null then value = ""
                native.text = value.to_s
        end
+
+       redef fun is_password=(value)
+       do
+               native.visibility = value != true
+               super
+       end
 end
index 4c2428f..d63f3e4 100644 (file)
@@ -133,6 +133,14 @@ class MarkdownProcessor
        # ~~~
        var ext_mode = true
 
+       # Disable attaching MDLocation to Tokens
+       #
+       # Locations are useful for some tools but they may
+       # cause an important time and space overhead.
+       #
+       # Default = `false`
+       var no_location = false is writable
+
        init do self.emitter = new MarkdownEmitter(self)
 
        # Process the mardown `input` string and return the processed output.
@@ -397,11 +405,16 @@ class MarkdownProcessor
                        c2 = ' '
                end
 
-               var loc = new MDLocation(
-                       current_loc.line_start,
-                       current_loc.column_start + pos,
-                       current_loc.line_start,
-                       current_loc.column_start + pos)
+               var loc
+               if no_location then
+                       loc = null
+               else
+                       loc = new MDLocation(
+                               current_loc.line_start,
+                               current_loc.column_start + pos,
+                               current_loc.line_start,
+                               current_loc.column_start + pos)
+               end
 
                if c == '*' then
                        if c1 == '*' then
@@ -610,10 +623,12 @@ class MarkdownEmitter
        end
 
        # Append `c` to current buffer.
-       fun addc(c: Char) do add c.to_s
+       fun addc(c: Char) do
+               current_buffer.add c
+       end
 
        # Append a "\n" line break.
-       fun addn do add "\n"
+       fun addn do addc '\n'
 end
 
 # A Link Reference.
@@ -1938,7 +1953,7 @@ end
 abstract class Token
 
        # Location of `self` in the original input.
-       var location: MDLocation
+       var location: nullable MDLocation
 
        # Position of `self` in input independant from lines.
        var pos: Int
@@ -2330,18 +2345,11 @@ redef class Text
                        if c == '\\' and pos + 1 < length then
                                pos = escape(out, self[pos + 1], pos)
                        else
-                               var end_reached = false
-                               for n in nend do
-                                       if c == n then
-                                               end_reached = true
-                                               break
-                                       end
-                               end
-                               if end_reached then break
+                               for n in nend do if c == n then break label
                                out.add c
                        end
                        pos += 1
-               end
+               end label
                if pos == length then return -1
                return pos
        end
index 53c355f..8a2c7a0 100644 (file)
@@ -2830,7 +2830,7 @@ class TestTokenProcessor
        redef fun token_at(input, pos) do
                var token = super
                if token isa TokenNone then return token
-               var res = "{token.class_name} at {token.location}"
+               var res = "{token.class_name} at {token.location or else "?"}"
                var exp = test_stack.shift
                print ""
                print "EXP {exp}"
index 07c830b..95cd31d 100644 (file)
@@ -58,10 +58,16 @@ class MasterHeader
     <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
       <ul class="nav navbar-nav">
         <li{{{actives.get_or_default("ens", "")}}}><a href="http://xymus.net/ens/">Enseignement</a></li>
-        <li{{{actives.get_or_default("opportunity", "")}}}><a href="http://xymus.net/opportunity/">Opportunité</a></li>
-        <li{{{actives.get_or_default("tnitter", "")}}}><a href="http://tnitter.xymus.net/">Tnitter</a></li>
-        <li><a href="http://pep8.xymus.net/">Pep/8 Analysis</a></li>
-        <li{{{actives.get_or_default("benitlux", "")}}}><a href="http://benitlux.xymus.net/">Benitlux</a></li>
+        <li{{{actives.get_or_default("opportunity", "")}}}>
+          <a href="http://xymus.net/opportunity/">
+                 <img height="22px" src="/static/opportunity-small-fr.png"></a>
+        </li>
+        <li{{{actives.get_or_default("tnitter", "")}}}>
+                 <a href="http://xymus.net/tnitter/">
+          <img height="22px" src="/static/tnitter-small.png">
+               </a></li>
+        <li><a href="http://xymus.net/pep8/">Pep/8 Analysis</a></li>
+        <li{{{actives.get_or_default("benitlux", "")}}}><a href="http://xymus.net/benitlux/">Benitlux</a></li>
       </ul>
 
       <ul class="nav navbar-nav pull-right">
@@ -96,6 +102,7 @@ class OpportunityMasterHeader
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
        <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
        <script>
+               {{{tracking_code}}}
                {{{page_js}}}
        </script>
        <style>
@@ -113,7 +120,9 @@ class OpportunityMasterHeader
 end
 
 redef class TnitterWeb
-       redef var header: String = (new MasterHeader("tnitter", true)).to_s
+       redef var header = (new MasterHeader("tnitter", true)).to_s
+
+       redef fun javascript_header do return tracking_code
 end
 
 redef class BenitluxDocument
@@ -128,6 +137,11 @@ redef class OpportunityPage
        redef var header = new OpportunityMasterHeader(new MasterHeader("opportunity", false))
 end
 
+redef class FileServer
+
+       redef fun javascript_header do return tracking_code
+end
+
 redef class MeetupCreationPage
        redef var templates do
                var map = super
@@ -138,6 +152,16 @@ redef class MeetupCreationPage
        end
 end
 
+fun tracking_code: String do return """
+       (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+       (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+       m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+       })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+       ga('create', 'UA-574578-1', 'auto');
+       ga('send', 'pageview');
+"""
+
 # Avoid executing when running tests
 if "NIT_TESTING".environ == "true" then exit 0
 
@@ -161,18 +185,23 @@ factory.config.virtual_hosts.add benitlux_vh
 var user_group = new UserGroup("nitcorn", "nitcorn")
 if sys.uid == 0 then user_group.drop_privileges
 
+# Files shared by all the virtual hosts (mostly for the common header)
+var shared_file_server = new FileServer("/var/www/static/")
+
 # Tnitter is available at `tnitter.xymus.net` and `xymus.net/tnitter/`
 var tnitter = new TnitterWeb
-default_vh.routes.add new Route("/tnitter/", tnitter)
+default_vh.routes.add new Route("/tnitter", tnitter)
 
 tnitter_vh.routes.add new Route("/rest/", new TnitterREST)
 tnitter_vh.routes.add new Route("/push/", new TnitterPush)
+tnitter_vh.routes.add new Route("/static/", shared_file_server)
 tnitter_vh.routes.add new Route(null, tnitter)
 
 # Pep/8 Analysis is only a file server. It is available at `pep8.xymus.net`
 # and through the global/default file server at `xymus.net/pep8/`
 #
 # TODO Implement pep8analysis server-side with a nitcorn action
+pep8_vh.routes.add new Route("/static/", shared_file_server)
 pep8_vh.routes.add new Route(null, new FileServer("/var/www/pep8/"))
 
 # Benitlux is available at `benitlux.xymus.net` and `xymus.net/benitlux/`
@@ -182,15 +211,16 @@ pep8_vh.routes.add new Route(null, new FileServer("/var/www/pep8/"))
 var benitlux_sub = new BenitluxSubscriptionAction
 var benitlux_rest = new BenitluxRESTAction
 default_vh.routes.add new Route("/benitlux/rest/", benitlux_rest)
-default_vh.routes.add new Route("/benitlux/", benitlux_sub)
+default_vh.routes.add new Route("/benitlux", benitlux_sub)
 benitlux_vh.routes.add new Route("/rest/", benitlux_rest)
+benitlux_vh.routes.add new Route("/static/", shared_file_server)
 benitlux_vh.routes.add new Route(null, benitlux_sub)
 
 # Opportunity service
 var opportunity = new OpportunityWelcome
 var opportunity_rest = new OpportunityRESTAction
 default_vh.routes.add new Route("/opportunity/rest/", opportunity_rest)
-default_vh.routes.add new Route("/opportunity/", opportunity)
+default_vh.routes.add new Route("/opportunity", opportunity)
 
 # Nitiwiki modification form
 var passwords = "nitiwiki_passwords".to_path.read_lines
@@ -201,7 +231,7 @@ default_vh.routes.add new Route("/edit", new EditAction("http://xymus.net/", "/h
 # a different header.
 var file_server_ens = new FileServer("/var/www/ens/")
 file_server_ens.header = (new MasterHeader("ens", false))
-default_vh.routes.add new Route("/ens/", file_server_ens)
+default_vh.routes.add new Route("/ens", file_server_ens)
 
 # Default file server is used for the main page at `xymus.net` and it is
 # the default action for any path not caught by other actions.
index 1690864..3d0fd33 100644 (file)
@@ -70,7 +70,7 @@ class HttpResponse
                end
 
                # Set server ID
-               if not header.keys.has("Server") then header["Server"] = "unitcorn"
+               if not header.keys.has("Server") then header["Server"] = "nitcorn"
        end
 
        # Get this reponse as a string according to HTTP protocol
index c0d6d52..ede6d06 100644 (file)
@@ -27,16 +27,30 @@ redef class Action
                        super
                        return
                end
-               print """{{{class_name}}} enter:
-uri="{{{truncated_uri}}}"
-query="{{{request.query_string}}}"
-body:{{{request.body.length}}} bytes"""
+
+               print "{http_server.remote_address}: {class_name} prepare for url:'{request.url}' body:'{request.body}' cookie:'{request.cookie.join(",", ":")}'"
+
                var clock = new Clock
+
                super
+
                var perf = sys.perfs[class_name]
                perf.add(clock.lapse)
                if perf.count % perfs_print_period == 0 then print "{class_name} perfs: {perf}:"
-               print "{class_name} return: uri={truncated_uri}"
+       end
+end
+
+redef class HttpServer
+       redef fun read_http_request(str)
+       do
+               print "{remote_address}: received HTTP request"
+               super
+       end
+
+       redef fun respond(response)
+       do
+               super
+               if log_nitcorn_actions then print "{remote_address}: response header '{response.header.join(",", ":")}' to '{remote_address}'"
        end
 end
 
@@ -52,7 +66,7 @@ redef fun print_error(object) do
        "{timestamp.hour}:{timestamp.min}:{timestamp.sec}: {object}"
 end
 
-# Should the actions be logged ?
+# Should the actions be logged? This may log sensitive data.
 fun log_nitcorn_actions: Bool do return false
 
 # Number of actions executed before printing the perfs
index 0fb5cad..e888361 100644 (file)
@@ -35,6 +35,9 @@ class HttpServer
 
        private var parser = new HttpRequestParser is lazy
 
+       # Human readable address of the remote client
+       var remote_address: String
+
        redef fun read_http_request(str)
        do
                var request_object = parser.parse_http_request(str.to_s)
@@ -131,7 +134,7 @@ class HttpFactory
        # You can use this to create the first `HttpFactory`, which is the most common.
        init and_libevent do init(new NativeEventBase)
 
-       redef fun spawn_connection(buf_ev) do return new HttpServer(buf_ev, self)
+       redef fun spawn_connection(buf_ev, address) do return new HttpServer(buf_ev, self, address)
 
        # Execute the main listening loop to accept connections
        #
index 8ae26ac..15fa9cc 100644 (file)
@@ -62,7 +62,7 @@ redef class Sys
        private var next_session_id_cache: nullable Int = null
 
        # Salt used to hash the session id
-       protected var session_salt = "Default unitcorn session salt"
+       protected var session_salt = "Default nitcorn session salt"
 end
 
 redef class Int
index 8403ea7..4763061 100644 (file)
@@ -60,7 +60,45 @@ class PerfMap
                return ts
        end
 
-       redef fun to_s do return "* " + join("\n* ", ": ")
+       redef fun to_s
+       do
+               var prec = 3
+
+               var table = new Map[String, Array[String]]
+               for event, stats in self do
+                       table[event] = [event,
+                               stats.min.to_precision(prec),
+                               stats.max.to_precision(prec),
+                               stats.avg.to_precision(prec),
+                               stats.sum.to_precision(prec),
+                               stats.count.to_s]
+               end
+
+               var widths = [0] * 6
+               for event, row in table do
+                       for i in row.length.times do
+                               widths[i] = widths[i].max(row[i].length)
+                       end
+               end
+
+               var s = "# {"Event".justify(widths[0], 0.0)} {"min".justify(widths[1], 0.5)} {"max".justify(widths[2], 0.5)} {"avg".justify(widths[3], 0.5)} {"sum".justify(widths[4], 0.5)} {"count".justify(widths[5], 0.5)}\n"
+
+               var sorted_events = table.keys.to_a
+               alpha_comparator.sort sorted_events
+               for event in sorted_events do
+                       var row = table[event]
+                       s += "*"
+                       for c in row.length.times do
+                               var cell = row[c]
+                               s += " "
+                               if c == 0 then
+                                       s += cell.justify(widths[c], 0.0, '.')
+                               else s += cell.justify(widths[c], 1.0)
+                       end
+                       s += "\n"
+               end
+               return s
+       end
 end
 
 # Statistics on wall clock execution time of a category of events by `name`
index d55bad0..e0c53af 100644 (file)
@@ -161,10 +161,10 @@ abstract class ConcurrentCollection[E]
                return r
        end
 
-       redef fun join(sep)
+       redef fun join(sep, last_sep)
        do
                mutex.lock
-               var r = real_collection.join(sep)
+               var r = real_collection.join(sep, last_sep)
                mutex.unlock
                return r
        end
index 5373b91..023bd53 100644 (file)
@@ -105,58 +105,53 @@ extern class SDLDisplay `{SDL_Surface *`}
                return events
        end
 
-       private fun poll_event: nullable SDLInputEvent import SDLKeyEvent, SDLMouseButtonEvent, SDLMouseMotionEvent, SDLQuitEvent, NativeString.to_s, SDLMouseButtonEvent.as(nullable SDLInputEvent), SDLMouseMotionEvent.as(nullable SDLInputEvent), SDLKeyEvent.as(nullable SDLInputEvent), SDLQuitEvent.as(nullable SDLInputEvent) `{
-               SDL_Event event;
-
+       private fun poll_event: nullable SDLInputEvent
+       import new_key_event, new_mouse_motion_event, new_mouse_button_event, new_quit_event `{
                SDL_PumpEvents();
 
+               SDL_Event event;
                if (SDL_PollEvent(&event))
                {
                        switch (event.type) {
                                case SDL_KEYDOWN:
                                case SDL_KEYUP:
-       #ifdef DEBUG
-                                       printf("The \"%s\" key was pressed!\n",
-                                                  SDL_GetKeyName(event.key.keysym.sym));
-       #endif
-
-                                       return SDLKeyEvent_as_nullable_SDLInputEvent(
-                                                       new_SDLKeyEvent(NativeString_to_s(
-                                                               SDL_GetKeyName(event.key.keysym.sym)),
-                                                               event.type==SDL_KEYDOWN));
+                                       return SDLDisplay_new_key_event(self,
+                                                               SDL_GetKeyName(event.key.keysym.sym),
+                                                               event.type==SDL_KEYDOWN);
 
                                case SDL_MOUSEMOTION:
-       #ifdef DEBUG
-                                       printf("Mouse moved by %d,%d to (%d,%d)\n",
-                                                  event.motion.xrel, event.motion.yrel,
-                                                  event.motion.x, event.motion.y);
-       #endif
-
-                                       return SDLMouseMotionEvent_as_nullable_SDLInputEvent(
-                                                       new_SDLMouseMotionEvent(event.motion.x, event.motion.y,
-                                                               event.motion.xrel, event.motion.yrel, SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1)));
+                                       return SDLDisplay_new_mouse_motion_event(self,
+                                               event.motion.x, event.motion.y,
+                                               event.motion.xrel, event.motion.yrel,
+                                               SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1));
 
                                case SDL_MOUSEBUTTONDOWN:
                                case SDL_MOUSEBUTTONUP:
-       #ifdef DEBUG
-                                       printf("Mouse button \"%d\" pressed at (%d,%d)\n",
-                                                  event.button.button, event.button.x, event.button.y);
-       #endif
-                                       return SDLMouseButtonEvent_as_nullable_SDLInputEvent(
-                                                       new_SDLMouseButtonEvent(event.button.x, event.button.y,
-                                                               event.button.button, event.type == SDL_MOUSEBUTTONDOWN));
+                                       return SDLDisplay_new_mouse_button_event(self,
+                                               event.button.x, event.button.y,
+                                               event.button.button,
+                                               event.type == SDL_MOUSEBUTTONDOWN);
 
                                case SDL_QUIT:
-       #ifdef DEBUG
-                                       printf("Quit event\n");
-       #endif
-                                       return SDLQuitEvent_as_nullable_SDLInputEvent(new_SDLQuitEvent());
+                                       return SDLDisplay_new_quit_event(self);
                        }
                }
 
                return null_SDLInputEvent();
        `}
 
+       private fun new_key_event(name: NativeString, down: Bool): nullable SDLInputEvent
+       do return new SDLKeyEvent(name.to_s, down)
+
+       private fun new_mouse_motion_event(x, y, xr, yr: Float, down: Bool): nullable SDLInputEvent
+       do return new SDLMouseMotionEvent(x, y, xr, yr, down)
+
+       private fun new_mouse_button_event(x, y: Float, id: Int, down: Bool): nullable SDLInputEvent
+       do return new SDLMouseButtonEvent(x, y, id, down)
+
+       private fun new_quit_event: nullable SDLInputEvent
+       do return new SDLQuitEvent
+
        # Set the position of the cursor to x,y
        fun warp_mouse(x,y: Int) `{ SDL_WarpMouse(x, y); `}
 
@@ -372,6 +367,7 @@ class SDLKeyEvent
        super SDLInputEvent
 
        redef var name
+
        var down: Bool
 
        redef fun to_c
@@ -394,10 +390,13 @@ class SDLKeyEvent
 
        # Return true if the key is the up arrow
        redef fun is_arrow_up do return name == "up"
+
        # Return true if the key is the left arrow
        redef fun is_arrow_left do return name == "left"
+
        # Return true if the key is the down arrow
        redef fun is_arrow_down do return name == "down"
+
        # Return true if the key is the right arrow
        redef fun is_arrow_right do return name == "right"
 end
index ef8c445..787f51c 100644 (file)
@@ -103,6 +103,26 @@ The `noserialize` annotation mark an exception in a `serialize` module or class
   end
   ~~~
 
+## The `serialize_as` annotation
+
+By default, an attribute is identified in the serialization format by its Nit name.
+The `serialize_as` attribute changes this behavior and sets the name of an attribute in the serialization format.
+
+This annotation can be useful to change the name of an attribute to what is expected by a remote service.
+Or to use identifiers in the serialization format that are reserved keywords in Nit (like `class` and `type`).
+
+~~~
+class UserCredentials
+       serialize
+
+       # Rename to "username" in JSON for compatibility with remote service
+       var name: String is serialize_as "username"
+
+       # Rename to a shorter "ap" for a smaller JSON file
+       var avatar_path: String = "/somepath/"+name is lazy, serialize_as "ap"
+end
+~~~
+
 ## Custom serializable classes
 
 The annotation `serialize` should be enough for most cases,
index cdf1db0..8ae8d2f 100644 (file)
@@ -46,6 +46,7 @@ module serialization is
        new_annotation auto_serializable
        new_annotation serialize
        new_annotation noserialize
+       new_annotation serialize_as
 end
 
 # Abstract serialization service to be sub-classed by specialized services.
index 6824882..582e5fb 100644 (file)
@@ -46,7 +46,7 @@ function NitComplete()
 
                " This gives us better results for Nit
                set noignorecase
-               set completeopt=longest,menuone,preview
+               set completeopt=longest,menuone
 
                " Do not predict small 3 letters keywords (or their prefix), they slow down
                " prediction and some also require double-enter on end of line.
index b8681bc..d2f0b11 100644 (file)
@@ -668,7 +668,9 @@ abstract class AbstractCompiler
                self.header.add_decl("  #define be32toh(val) ((be16toh((val) << 16) | (be16toh((val) >> 16))))")
                self.header.add_decl("#endif")
                self.header.add_decl("#ifdef ANDROID")
-               self.header.add_decl("  #define be32toh(val) betoh32(val)")
+               self.header.add_decl("  #ifndef be32toh")
+               self.header.add_decl("          #define be32toh(val) betoh32(val)")
+               self.header.add_decl("  #endif")
                self.header.add_decl("  #include <android/log.h>")
                self.header.add_decl("  #define PRINT_ERROR(...) (void)__android_log_print(ANDROID_LOG_WARN, \"Nit\", __VA_ARGS__)")
                self.header.add_decl("#else")
@@ -1248,17 +1250,21 @@ abstract class AbstractCompilerVisitor
        do
                mtype = self.anchor(mtype)
                var valmtype = value.mcasttype
+
+               # Do nothing if useless autocast
                if valmtype.is_subtype(self.compiler.mainmodule, null, mtype) then
                        return value
                end
 
+               # Just as_not_null if the target is not nullable.
+               #
+               # eg `nullable PreciseType` adapted to `Object` gives precisetype.
                if valmtype isa MNullableType and valmtype.mtype.is_subtype(self.compiler.mainmodule, null, mtype) then
-                       var res = new RuntimeVariable(value.name, valmtype, valmtype.mtype)
-                       return res
-               else
-                       var res = new RuntimeVariable(value.name, valmtype, mtype)
-                       return res
+                       mtype = valmtype.mtype
                end
+
+               var res = new RuntimeVariable(value.name, value.mtype, mtype)
+               return res
        end
 
        # Generate a super call from a method definition
@@ -1326,13 +1332,18 @@ abstract class AbstractCompilerVisitor
 
        # Checks
 
+       # Can value be null? (according to current knowledge)
+       fun maybenull(value: RuntimeVariable): Bool
+       do
+               return value.mcasttype isa MNullableType or value.mcasttype isa MNullType
+       end
+
        # Add a check and an abort for a null receiver if needed
        fun check_recv_notnull(recv: RuntimeVariable)
        do
                if self.compiler.modelbuilder.toolcontext.opt_no_check_null.value then return
 
-               var maybenull = recv.mcasttype isa MNullableType or recv.mcasttype isa MNullType
-               if maybenull then
+               if maybenull(recv) then
                        self.add("if (unlikely({recv} == NULL)) \{")
                        self.add_abort("Receiver is null")
                        self.add("\}")
@@ -2021,6 +2032,8 @@ redef class MMethodDef
                else if node isa AClassdef then
                        # Automatic free init is always inlined since it is empty or contains only attribtes assigments
                        return true
+               else if node == null then
+                       return true
                else
                        abort
                end
@@ -3069,7 +3082,18 @@ redef class AAttrPropdef
                        v.assign(v.frame.returnvar.as(not null), res)
                else if mpropdef == mwritepropdef then
                        assert arguments.length == 2
-                       v.write_attribute(self.mpropdef.mproperty, arguments.first, arguments[1])
+                       var recv = arguments.first
+                       var arg = arguments[1]
+                       if is_optional and v.maybenull(arg) then
+                               var value = v.new_var(self.mpropdef.static_mtype.as(not null))
+                               v.add("if ({arg} == NULL) \{")
+                               v.assign(value, evaluate_expr(v, recv))
+                               v.add("\} else \{")
+                               v.assign(value, arg)
+                               v.add("\}")
+                               arg = value
+                       end
+                       v.write_attribute(self.mpropdef.mproperty, arguments.first, arg)
                        if is_lazy then
                                var ret = self.mtype
                                var useiset = not ret.is_c_primitive and not ret isa MNullableType
@@ -3508,6 +3532,9 @@ redef class AOrElseExpr
        do
                var res = v.new_var(self.mtype.as(not null))
                var i1 = v.expr(self.n_expr, null)
+
+               if not v.maybenull(i1) then return i1
+
                v.add("if ({i1}!=NULL) \{")
                v.assign(res, i1)
                v.add("\} else \{")
@@ -3537,7 +3564,11 @@ redef class AFloatExpr
 end
 
 redef class ACharExpr
-       redef fun expr(v) do return v.char_instance(self.value.as(not null))
+       redef fun expr(v) do
+               if is_ascii then return v.byte_instance(value.as(not null).ascii)
+               if is_code_point then return v.int_instance(value.as(not null).code_point)
+               return v.char_instance(self.value.as(not null))
+       end
 end
 
 redef class AArrayExpr
@@ -3690,7 +3721,7 @@ redef class AAsNotnullExpr
                var i = v.expr(self.n_expr, null)
                if v.compiler.modelbuilder.toolcontext.opt_no_check_assert.value then return i
 
-               if i.mtype.is_c_primitive then return i
+               if not v.maybenull(i) then return i
 
                v.add("if (unlikely({i} == NULL)) \{")
                v.add_abort("Cast failed")
index 79c2f14..7a536b1 100644 (file)
@@ -262,18 +262,20 @@ redef class MExplicitCast
                #
 
                # In nitni files, declare internal function as extern
-               var full_friendly_csignature = "int {v.compiler.mainmodule.name }___{from.mangled_cname}_is_a_{to.mangled_cname}({from.cname_blind})"
+               var full_friendly_csignature = "int {v.compiler.mainmodule.c_name }___{from.mangled_cname}_is_a_{to.mangled_cname}({from.cname_blind})"
                ccu.header_decl.add("extern {full_friendly_csignature};\n")
 
                # In nitni files, #define friendly as extern
-               ccu.header_decl.add("#define {check_cname} {v.compiler.mainmodule.name}___{check_cname}\n")
+               ccu.header_decl.add "#ifndef {check_cname}\n"
+               ccu.header_decl.add "#define {check_cname} {v.compiler.mainmodule.c_name}___{check_cname}\n"
+               ccu.header_decl.add "#endif\n"
 
                if compile_implementation_too then
                        # Internally, implement internal function
                        var nitni_visitor = v.compiler.new_visitor
                        nitni_visitor.frame = v.frame
 
-                       var full_internal_csignature = "int {v.compiler.mainmodule.name }___{from.mangled_cname}_is_a_{to.mangled_cname}({internal_call_context.name_mtype(from)} from)"
+                       var full_internal_csignature = "int {v.compiler.mainmodule.c_name }___{from.mangled_cname}_is_a_{to.mangled_cname}({internal_call_context.name_mtype(from)} from)"
 
                        nitni_visitor.add_decl("/* nitni check for {from} to {to} */")
                        nitni_visitor.add_decl("{full_internal_csignature} \{")
@@ -289,7 +291,9 @@ redef class MExplicitCast
                # special checks
                if from == to.as_nullable then
                        # format A_is_null
-                       ccu.header_decl.add("#define {from.mangled_cname}_is_null !{from.mangled_cname}_is_a_{to.mangled_cname}\n")
+                       ccu.header_decl.add "#ifndef {from.mangled_cname}_is_null\n"
+                       ccu.header_decl.add "#define {from.mangled_cname}_is_null !{from.mangled_cname}_is_a_{to.mangled_cname}\n"
+                       ccu.header_decl.add "#endif\n"
                end
 
                #
@@ -297,18 +301,20 @@ redef class MExplicitCast
                #
 
                # In nitni files, declare internal function as extern
-               full_friendly_csignature = "{to.cname_blind} {v.compiler.mainmodule.name }___{from.mangled_cname}_as_{to.mangled_cname}({from.cname_blind})"
+               full_friendly_csignature = "{to.cname_blind} {v.compiler.mainmodule.c_name }___{from.mangled_cname}_as_{to.mangled_cname}({from.cname_blind})"
                ccu.header_decl.add("extern {full_friendly_csignature};\n")
 
                # In nitni files, #define friendly as extern
-               ccu.header_decl.add("#define {cast_cname} {v.compiler.mainmodule.name}___{cast_cname}\n")
+               ccu.header_decl.add "#ifndef {cast_cname}\n"
+               ccu.header_decl.add "#define {cast_cname} {v.compiler.mainmodule.c_name}___{cast_cname}\n"
+               ccu.header_decl.add "#endif\n"
 
                if compile_implementation_too then
                        # Internally, implement internal function
                        var nitni_visitor = v.compiler.new_visitor
                        nitni_visitor.frame = v.frame
 
-                       var full_internal_csignature = "{to.cname_blind} {v.compiler.mainmodule.name }___{from.mangled_cname}_as_{to.mangled_cname}({internal_call_context.name_mtype(from)} from)"
+                       var full_internal_csignature = "{to.cname_blind} {v.compiler.mainmodule.c_name }___{from.mangled_cname}_as_{to.mangled_cname}({internal_call_context.name_mtype(from)} from)"
                        nitni_visitor.add_decl("/* nitni cast for {from} to {to} */")
                        nitni_visitor.add_decl("{full_internal_csignature} \{")
 
@@ -333,12 +339,16 @@ redef class MExplicitCast
                # special casts
                if from.as_nullable == to then
                        # format A_as_nullable
-                       ccu.header_decl.add("#define {from.mangled_cname}_as_nullable {from.mangled_cname}_as_{to.mangled_cname}\n")
+                       ccu.header_decl.add "#ifndef {from.mangled_cname}_as_nullable\n"
+                       ccu.header_decl.add "#define {from.mangled_cname}_as_nullable {from.mangled_cname}_as_{to.mangled_cname}\n"
+                       ccu.header_decl.add "#endif\n"
                end
 
                if from == to.as_nullable then
                        # format A_as_nullable
-                       ccu.header_decl.add("#define {to.mangled_cname}_as_not_nullable {from.mangled_cname}_as_{to.mangled_cname}\n")
+                       ccu.header_decl.add "#ifndef {to.mangled_cname}_as_not_nullable\n"
+                       ccu.header_decl.add "#define {to.mangled_cname}_as_not_nullable {from.mangled_cname}_as_{to.mangled_cname}\n"
+                       ccu.header_decl.add "#endif\n"
                end
        end
 end
index b0d5c27..0ac6e66 100644 (file)
@@ -448,6 +448,10 @@ class GlobalCompilerVisitor
                if args.first.mtype.is_c_primitive then
                        var mclasstype = args.first.mtype.as(MClassType)
                        if not self.compiler.runtime_type_analysis.live_types.has(mclasstype) then
+                               self.add("/* skip, dead class {mclasstype} */")
+                               return res
+                       end
+                       if not mclasstype.has_mproperty(self.compiler.mainmodule, m) then
                                self.add("/* skip, no method {m} */")
                                return res
                        end
index 267eae0..362bb52 100644 (file)
@@ -1399,8 +1399,7 @@ class SeparateCompilerVisitor
                var res: nullable RuntimeVariable = null
                var recv = arguments.first
                var consider_null = not self.compiler.modelbuilder.toolcontext.opt_no_check_null.value or mmethod.name == "==" or mmethod.name == "!="
-               var maybenull = (recv.mcasttype isa MNullableType or recv.mcasttype isa MNullType) and consider_null
-               if maybenull then
+               if maybenull(recv) and consider_null then
                        self.add("if ({recv} == NULL) \{")
                        if mmethod.name == "==" or mmethod.name == "is_same_instance" then
                                res = self.new_var(bool_type)
index 070b86b..56fbc74 100644 (file)
@@ -551,7 +551,7 @@ private class Pager
                        else if c == '`' then
                                b.append("'")
                        else if c.code_point < 32 then
-                               b.append("\\{c.code_point.to_base(8, false)}")
+                               b.append("\\{c.code_point.to_base(8)}")
                        else
                                b.add(c)
                        end
index d640ac2..5adcabd 100644 (file)
@@ -84,6 +84,7 @@ lazy
 noinit
 readonly
 writable
+optional
 autoinit
 noautoinit
 lateinit
index e48e537..8b3de28 100644 (file)
@@ -24,8 +24,13 @@ import modelize
 private import annotation
 
 redef class ToolContext
+
+       # Apply the annotation `serialize_as`
+       var serialization_phase_rename: Phase = new SerializationPhaseRename(self, null)
+
        # Generate serialization and deserialization methods on `auto_serializable` annotated classes.
-       var serialization_phase_pre_model: Phase = new SerializationPhasePreModel(self, null)
+       var serialization_phase_pre_model: Phase = new SerializationPhasePreModel(self,
+               [serialization_phase_rename])
 
        # The second phase of the serialization
        var serialization_phase_post_model: Phase = new SerializationPhasePostModel(self,
@@ -56,6 +61,34 @@ redef class ADefinition
        end
 end
 
+private class SerializationPhaseRename
+       super Phase
+
+       redef fun process_annotated_node(node, nat)
+       do
+               var text = nat.n_atid.n_id.text
+               if text != "serialize_as" then return
+
+               if not node isa AAttrPropdef then
+                       toolcontext.error(node.location,
+                               "Syntax Error: annotation `{text}` applies only to attributes.")
+                       return
+               end
+
+               # Can't use `arg_as_string` because it needs the literal phase
+               var args = nat.n_args
+               if args.length != 1 or not args.first isa AStringFormExpr then
+                       toolcontext.error(node.location,
+                               "Syntax Error: annotation `{text}` expects a single string literal as argument.")
+                       return
+               end
+
+               var t = args.first.collect_text
+               var val = t.substring(1, t.length-2)
+               node.serialize_name = val
+       end
+end
+
 private class SerializationPhasePreModel
        super Phase
 
@@ -164,8 +197,7 @@ private class SerializationPhasePreModel
                        if (per_attribute and not attribute.is_serialize) or
                                attribute.is_noserialize then continue
 
-                       var name = attribute.name
-                       code.add "      v.serialize_attribute(\"{name}\", {name})"
+                       code.add "      v.serialize_attribute(\"{attribute.serialize_name}\", {attribute.name})"
                end
 
                code.add "end"
@@ -179,6 +211,16 @@ private class SerializationPhasePreModel
        do
                var npropdefs = nclassdef.n_propdefs
 
+               # Do not insert a `from_deserializer` if it already exists
+               for npropdef in npropdefs do
+                       if npropdef isa AMethPropdef then
+                               var methid = npropdef.n_methid
+                               if methid != null and methid.collect_text == "from_deserializer" then
+                                       return
+                               end
+                       end
+               end
+
                var code = new Array[String]
                code.add """
 redef init from_deserializer(v: Deserializer)
@@ -204,11 +246,11 @@ do
                        var name = attribute.name
 
                        code.add """
-       var {{{name}}} = v.deserialize_attribute("{{{name}}}")
+       var {{{name}}} = v.deserialize_attribute("{{{attribute.serialize_name}}}")
        if not {{{name}}} isa {{{type_name}}} then
                # Check if it was a subjectent error
                v.errors.add new AttributeTypeError("TODO remove this arg on c_src regen",
-                       self, "{{{name}}}", {{{name}}}, "{{{type_name}}}")
+                       self, "{{{attribute.serialize_name}}}", {{{name}}}, "{{{type_name}}}")
 
                # Clear subjacent error
                if v.keep_going == false then return
@@ -312,10 +354,10 @@ redef class AIsaExpr
 end
 
 redef class AAttrPropdef
-       private fun name: String
-       do
-               return n_id2.text
-       end
+       private fun name: String do return n_id2.text
+
+       # Name of this attribute in the serialized format
+       private var serialize_name: String = name is lazy
 end
 
 redef class AType
index 85deec6..e826f05 100644 (file)
@@ -20,6 +20,16 @@ import c_tools
 import nitni
 import ffi
 import naive_interpreter
+import pkgconfig
+import debugger_socket # To linearize `ToolContext::init`
+
+redef class ToolContext
+
+       # --compile-dir
+       var opt_compile_dir = new OptionString("Directory used to generate temporary files", "--compile-dir")
+
+       init do option_context.add_option opt_compile_dir
+end
 
 redef class AMethPropdef
        # Does this method definition use the FFI and is it supported by the interpreter?
@@ -34,21 +44,40 @@ redef class AMethPropdef
                        n_extern_code_block.is_c) then return false
 
                for mparam in mpropdef.msignature.mparameters do
-                       var mtype = mparam.mtype
-                       if not mtype.is_cprimitive then
+                       if not mparam.mtype.is_cprimitive then
                                return false
                        end
                end
 
+               var return_mtype = mpropdef.msignature.return_mtype
+               if return_mtype != null and not return_mtype.is_cprimitive then
+                       return false
+               end
+
                return true
        end
 end
 
 redef class NaiveInterpreter
+       redef fun start(mainmodule)
+       do
+               super
+
+               # Delete temporary files
+               var compile_dir = compile_dir
+               if compile_dir.file_exists then compile_dir.rmdir
+       end
+
        # Where to store generated C and extracted code
-       #
-       # TODO make customizable and delete when execution completes
-       private var compile_dir = "nit_compile"
+       private var compile_dir: String is lazy do
+               # Prioritize the user supplied directory
+               var opt = modelbuilder.toolcontext.opt_compile_dir.value
+               if opt != null then return opt
+               return "/tmp/niti_ffi_{process_id}"
+       end
+
+       # Identifier for this process, unique between running interpreters
+       private fun process_id: Int `{ return getpid(); `}
 
        # Path of the compiled foreign code library
        #
@@ -75,7 +104,7 @@ redef class AModule
                var compile_dir = v.compile_dir
                var foreign_code_lib_path = v.foreign_code_lib_path(mmodule)
 
-               if not compile_dir.file_exists then compile_dir.mkdir
+               if not compile_dir.file_exists then compile_dir.mkdir(0o700)
 
                # Compile the common FFI part
                ensure_compile_ffi_wrapper
@@ -93,13 +122,29 @@ redef class AModule
                var srcs = [for file in ccu.files do new ExternCFile(file, ""): ExternFile]
                srcs.add_all mmodule.ffi_files
 
-               if mmodule.pkgconfigs.not_empty then
-                       fatal(v, "NOT YET IMPLEMENTED annotation `pkgconfig`")
-                       return false
-               end
-
+               # Compiler options specific to this module
                var ldflags = mmodule.ldflags[""].join(" ")
-               # TODO pkgconfig
+
+               # Protect pkg-config
+               var pkgconfigs = mmodule.pkgconfigs
+               var pkg_command = ""
+               if not pkgconfigs.is_empty then
+                       var cmd = "which pkg-config >/dev/null"
+                       if system(cmd) != 0 then
+                               v.fatal "FFI Error: Command `pkg-config` not found. Please install it"
+                               return false
+                       end
+
+                       for p in pkgconfigs do
+                               cmd = "pkg-config --exists '{p}'"
+                               if system(cmd) != 0 then
+                                       v.fatal "FFI Error: package {p} is not found by `pkg-config`. Please install it."
+                                       return false
+                               end
+                       end
+
+                       pkg_command = "`pkg-config --cflags --libs {pkgconfigs.join(" ")}`"
+               end
 
                # Compile each source file to an object file (or equivalent)
                var object_files = new Array[String]
@@ -108,9 +153,8 @@ redef class AModule
                end
 
                # Link everything in a shared library
-               # TODO customize the compiler
-               var cmd = "{v.c_compiler} -Wall -shared -o {foreign_code_lib_path} {object_files.join(" ")} {ldflags}"
-               if sys.system(cmd) != 0 then
+               var cmd = "{v.c_compiler} -Wall -shared -o {foreign_code_lib_path} {object_files.join(" ")} {ldflags} {pkg_command}"
+               if system(cmd) != 0 then
                        v.fatal "FFI Error: Failed to link native code using `{cmd}`"
                        return false
                end
index 6d25e7c..cbc328a 100644 (file)
@@ -1475,7 +1475,12 @@ redef class AAttrPropdef
                        return evaluate_expr(v, recv, f)
                else if mpropdef == mwritepropdef then
                        assert args.length == 2
-                       v.write_attribute(attr, recv, args[1])
+                       var arg = args[1]
+                       if is_optional and arg.mtype isa MNullType then
+                               var f = v.new_frame(self, mpropdef, args)
+                               arg = evaluate_expr(v, recv, f)
+                       end
+                       v.write_attribute(attr, recv, arg)
                        return null
                else
                        abort
@@ -1836,7 +1841,13 @@ redef class AWithExpr
                v.callsite(method_start, [expr])
                v.stmt(self.n_block)
                v.is_escape(self.break_mark) # Clear the break
+
+               # Execute the finally without an escape
+               var old_mark = v.escapemark
+               v.escapemark = null
                v.callsite(method_finish, [expr])
+               # Restore the escape unless another escape was provided
+               if v.escapemark == null then v.escapemark = old_mark
        end
 end
 
@@ -1932,6 +1943,8 @@ end
 redef class ACharExpr
        redef fun expr(v)
        do
+               if is_ascii then return v.byte_instance(self.value.as(not null).ascii)
+               if is_code_point then return v.int_instance(self.value.as(not null).code_point)
                return v.char_instance(self.value.as(not null))
        end
 end
index b183301..72df12b 100644 (file)
@@ -95,17 +95,66 @@ redef class AFloatExpr
        end
 end
 
+# Any kind of literal which supports a prefix or a suffix
+class AAugmentedLiteral
+       # Returns the text of the token
+       private fun text: String is abstract
+
+       # Is the combination of prefixes and suffixes in `self` valid ?
+       fun is_valid_augmentation: Bool is abstract
+
+       private fun delimiter_start: Char is abstract
+
+       private fun delimiter_end: Char is abstract
+
+       # Prefix for the entity, "" if no prefix is found
+       protected var prefix: String is lazy do return text.substring(0, text.index_of(delimiter_start))
+
+       # Suffix for the entity, "" if no prefix is found
+       protected var suffix: String is lazy do return text.substring_from(text.last_index_of(delimiter_end) + 1)
+
+       # Content of the entity, without prefix nor suffix
+       protected var content: String is lazy do return text.substring_from(text.index_of(delimiter_start)).substring(0, text.last_index_of(delimiter_end) + 1)
+end
+
 redef class ACharExpr
+       super AAugmentedLiteral
        # The value of the literal char once computed.
-       var value: nullable Char
+       var value: nullable Char = null
+
+       redef fun delimiter_start do return '\''
+
+       redef fun delimiter_end do return '\''
+
+       # Is the expression returning an ASCII byte value ?
+       fun is_ascii: Bool do return prefix == "b"
+
+       # Is the expression returning a Code Point ?
+       fun is_code_point: Bool do return prefix == "u"
+
+       redef fun text do return n_char.text
+
+       redef fun is_valid_augmentation do
+               if suffix != "" then return false
+               if is_ascii then return true
+               if is_code_point then return true
+               if prefix != "" then return false
+               return true
+       end
+
        redef fun accept_literal(v)
        do
-               var txt = self.n_char.text.unescape_nit
+               if not is_valid_augmentation then
+                       v.toolcontext.error(hot_location, "Syntax Error: invalid prefix/suffix combination {prefix}/{suffix}")
+                       return
+               end
+               var txt = content.unescape_nit
                if txt.length != 3 then
                        v.toolcontext.error(self.hot_location, "Syntax Error: invalid character literal `{txt}`.")
                        return
                end
                self.value = txt.chars[1]
+               if is_ascii and txt.chars[1].code_point > 127 then v.toolcontext.error(self.hot_location, "Syntax Error: usage of byte prefix on multibyte character.")
        end
 end
 
index 18b8061..59d725b 100644 (file)
@@ -204,19 +204,21 @@ redef class ModelBuilder
                                        mreadpropdef.mproperty.is_autoinit = true
                                        continue
                                end
-                               if npropdef.has_value then continue
-                               var paramname = mreadpropdef.mproperty.name
-                               var ret_type = msignature.return_mtype
-                               if ret_type == null then return
-                               var mparameter = new MParameter(paramname, ret_type, false)
-                               mparameters.add(mparameter)
+                               if npropdef.has_value and not npropdef.is_optional then continue
                                var msetter = npropdef.mwritepropdef
                                if msetter == null then
                                        # No setter, it is a readonly attribute, so just add it
+                                       var paramname = mreadpropdef.mproperty.name
+                                       var ret_type = msignature.return_mtype
+                                       if ret_type == null then return
+                                       var mparameter = new MParameter(paramname, ret_type, false)
+                                       mparameters.add(mparameter)
+
                                        initializers.add(npropdef.mpropdef.mproperty)
                                        npropdef.mpropdef.mproperty.is_autoinit = true
                                else
                                        # Add the setter to the list
+                                       mparameters.add_all msetter.msignature.mparameters
                                        initializers.add(msetter.mproperty)
                                        msetter.mproperty.is_autoinit = true
                                end
@@ -598,7 +600,7 @@ redef class APropdef
                        var mdoc = ndoc.to_mdoc
                        mpropdef.mdoc = mdoc
                        mdoc.original_mentity = mpropdef
-               else if mpropdef.is_intro and mpropdef.mproperty.visibility >= protected_visibility then
+               else if mpropdef.is_intro and mpropdef.mproperty.visibility >= protected_visibility and mpropdef.name != "new" then
                        modelbuilder.advice(self, "missing-doc", "Documentation warning: Undocumented property `{mpropdef.mproperty}`")
                end
 
@@ -1175,6 +1177,9 @@ redef class AAttrPropdef
        # Is the node tagged lazy?
        var is_lazy = false
 
+       # Is the node tagged optional?
+       var is_optional = false
+
        # Has the node a default value?
        # Could be through `n_expr` or `n_block`
        var has_value = false
@@ -1271,6 +1276,14 @@ redef class AAttrPropdef
                        self.mlazypropdef = mlazypropdef
                end
 
+               var atoptional = self.get_single_annotation("optional", modelbuilder)
+               if atoptional != null then
+                       if not has_value then
+                               modelbuilder.error(atoptional, "Error: `optional` attributes need a default value.")
+                       end
+                       is_optional = true
+               end
+
                var atreadonly = self.get_single_annotation("readonly", modelbuilder)
                if atreadonly != null then
                        if not has_value then
@@ -1398,7 +1411,14 @@ redef class AAttrPropdef
                                        var cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "Float")
                                        if cla != null then mtype = cla.mclass_type
                                else if nexpr isa ACharExpr then
-                                       var cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "Char")
+                                       var cla: nullable MClass
+                                       if nexpr.is_ascii then
+                                               cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "Byte")
+                                       else if nexpr.is_code_point then
+                                               cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "Int")
+                                       else
+                                               cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "Char")
+                                       end
                                        if cla != null then mtype = cla.mclass_type
                                else if nexpr isa ABoolExpr then
                                        var cla = modelbuilder.try_get_mclass_by_name(nexpr, mmodule, "Bool")
@@ -1442,9 +1462,13 @@ redef class AAttrPropdef
 
                var mwritepropdef = self.mwritepropdef
                if mwritepropdef != null then
+                       var mwritetype = mtype
+                       if is_optional then
+                               mwritetype = mwritetype.as_nullable
+                       end
                        var name: String
                        name = n_id2.text
-                       var mparameter = new MParameter(name, mtype, false)
+                       var mparameter = new MParameter(name, mwritetype, false)
                        var msignature = new MSignature([mparameter], null)
                        mwritepropdef.msignature = msignature
                end
index d6331d6..d16e844 100644 (file)
@@ -19,7 +19,7 @@ import nitni_base
 
 redef class MMethod
        # Build a C function name for the FFI implementation (uses friendly naming).
-       # * On a specific static receiver mype `recv_mtype` 
+       # * On a specific static receiver type `recv_mtype`
        # * In referene to the module `from_module` (used for type resolving and as a possible prefix)
        # * Has a possible `suffix` to the method name (may be "__super", "__impl", null, etc.)
        # * With a specified length indicating whether it uses the sort name or the long name with
@@ -39,13 +39,13 @@ redef class MMethod
 
                if suffix != null then cname = "{cname}{suffix}"
 
-               if length.long then cname = "{from_mmodule.name}___{cname}"
+               if length.long then cname = "{from_mmodule.c_name}___{cname}"
 
                return cname
        end
 
        # Build a C function signature for the FFI implementation (uses friendly naming).
-       # * On a specific static receiver mype `recv_mtype` 
+       # * On a specific static receiver type `recv_mtype`
        # * In referene to the module `from_module` (used for type resolving and as a possible prefix)
        # * Has a possible `suffix` to the method name (may be "__super", "__impl", null, etc.)
        # * With a specified length indicating whether it uses the sort name or the long name with
@@ -83,7 +83,7 @@ redef class MMethod
        end
 
        # Build a C function call for the FFI implementation (uses friendly naming).
-       # * On a specific static receiver mype `recv_mtype` 
+       # * On a specific static receiver type `recv_mtype`
        # * In referene to the module `from_module` (used for type resolving and as a possible prefix)
        # * Has a possible `suffix` to the method name (may be "__super", "__impl", null, etc.)
        # * With a specified length indicating whether it uses the sort name or the long name with
index 4824cb4..d0325cc 100644 (file)
@@ -152,7 +152,11 @@ private class TypeVisitor
                        end
                        return null # forward error
                end
-               self.error(nexpr, "Error: expected an expression.")
+               var more_message = null
+               var p = nexpr.parent
+               if p != null then more_message = p.bad_expr_message(nexpr)
+               if more_message == null then more_message = "" else more_message = " " + more_message
+               self.error(nexpr, "Error: expected an expression{more_message}.")
                return null
        end
 
@@ -806,6 +810,12 @@ end
 
 redef class ANode
        private fun accept_post_typing(v: TypeVisitor) do end
+
+       # An additional information message to explain the role of a child expression.
+       #
+       # The point of the method is to allow some kind of double dispatch so the parent
+       # choose how to describe its children.
+       private fun bad_expr_message(child: AExpr): nullable String do return null
 end
 
 redef class AAttrPropdef
@@ -1449,9 +1459,15 @@ redef class AFloatExpr
 end
 
 redef class ACharExpr
-       redef fun accept_typing(v)
-       do
-               var mclass = v.get_mclass(self, "Char")
+       redef fun accept_typing(v) do
+               var mclass: nullable MClass = null
+               if is_ascii then
+                       mclass = v.get_mclass(self, "Byte")
+               else if is_code_point then
+                       mclass = v.get_mclass(self, "Int")
+               else
+                       mclass = v.get_mclass(self, "Char")
+               end
                if mclass == null then return # Forward error
                self.mtype = mclass.mclass_type
        end
@@ -1714,6 +1730,14 @@ redef class ASendExpr
        # The property invoked by the send.
        var callsite: nullable CallSite
 
+       redef fun bad_expr_message(child)
+       do
+               if child == self.n_expr then
+                       return "to be the receiver of `{self.property_name}`"
+               end
+               return null
+       end
+
        redef fun accept_typing(v)
        do
                var nrecv = self.n_expr
index 010a944..3e5865b 100644 (file)
@@ -117,6 +117,7 @@ redef class AExpr
                super
                if other isa AExpr then
                        if other.implicit_cast_to == null then other.implicit_cast_to = implicit_cast_to
+                       other.vararg_decl = vararg_decl
                end
        end
 end
diff --git a/tests/base_attr_optional.nit b/tests/base_attr_optional.nit
new file mode 100644 (file)
index 0000000..4417afe
--- /dev/null
@@ -0,0 +1,43 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
+
+import kernel
+
+class A
+       var i: Int = 99 is optional
+
+       var o: Object = 999 is optional
+end
+
+var a = new A
+a.i.output
+a.o.output
+
+a.i = 1
+a.o = 10
+a.i.output
+a.o.output
+
+a.i = null
+a.o = null
+a.i.output
+a.o.output
+
+a = new A(2)
+a.i.output
+a.o.output
+
+a = new A(3, true)
+a.i.output
+a.o.output
diff --git a/tests/base_covar_adapt.nit b/tests/base_covar_adapt.nit
new file mode 100644 (file)
index 0000000..54f60bd
--- /dev/null
@@ -0,0 +1,35 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
+
+import core::kernel
+
+class A[E]
+       fun foo(e: E): E
+       do
+               if e == null then e = true
+               return e
+       end
+end
+
+fun foo(a: A[nullable Object], o: nullable Object) do
+       a.foo(o).as(not null).output
+end
+
+foo(new A[nullable Object], 1.0)
+foo(new A[nullable Float], 1.0)
+foo(new A[Float], 1.0)
+
+foo(new A[nullable Object], null)
+#alt1#foo(new A[nullable Float], null)
+#alt2#foo(new A[Float], null)
diff --git a/tests/base_gen_nest.nit b/tests/base_gen_nest.nit
new file mode 100644 (file)
index 0000000..13f8105
--- /dev/null
@@ -0,0 +1,31 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
+
+import core::kernel
+
+class G[E: Object]
+       var e: E
+       fun foo: Object
+       do
+               var e = self.e
+               if e isa G[Object] then
+                       return e.foo
+               end
+               return e
+       end
+end
+
+var g1 = new G[Float](1.0)
+var g2 = new G[G[Float]](g1)
+g2.foo.output
diff --git a/tests/base_vararg_transform.nit b/tests/base_vararg_transform.nit
new file mode 100644 (file)
index 0000000..732da49
--- /dev/null
@@ -0,0 +1,27 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
+
+fun foo(i: Object...) do print i
+
+var n: nullable Object = null
+
+foo(1, 1)
+
+foo((false or true) and true, 2)
+foo(n or else 1, 3)
+foo(if true then 1 else -1, 4)
+
+foo([1..3], 5)
+foo([1,2,3], 6)
+foo([for i in [0..2] do i + 1], 7)
diff --git a/tests/base_with2.nit b/tests/base_with2.nit
new file mode 100644 (file)
index 0000000..d357cdd
--- /dev/null
@@ -0,0 +1,35 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
+
+import core::kernel
+
+class Foo
+       var zz = 0
+       fun work(i: Int) do
+               var a = new Foo
+               i.output
+       end
+       fun start do work 1
+       fun finish do work 4
+end
+
+do
+       with f = new Foo do
+               f.work 2
+               if true then break label
+               f.work 30
+       end
+       50.output
+end label
+6.output
diff --git a/tests/error_arg.nit b/tests/error_arg.nit
new file mode 100644 (file)
index 0000000..c550d9f
--- /dev/null
@@ -0,0 +1,39 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
+
+import core::kernel
+
+redef class Int
+       fun a: Int do return 10*self+self.abs
+end
+
+fun foo(a: Int): Int do
+       a.output
+       return a
+end
+fun bar(a: Int) do a.output
+
+foo 1.a
+foo(1.a)
+foo (1).a
+foo(1).a
+foo((1).a)
+
+'\n'.output
+
+bar 1.a
+bar(1.a)
+#alt1#bar (1).a
+#alt1#bar(1).a
+bar((1).a)
index 0d45e5d..dae2c37 100644 (file)
@@ -36,3 +36,4 @@ test_ropebuffer
 ui_test
 test_text_stat
 nitsaf_args
+test_ffi_c_lots_of_refs
index 39ce010..6497642 100644 (file)
@@ -36,3 +36,4 @@ test_ropebuffer
 ui_test
 test_text_stat
 nitsaf.args
+test_ffi_c_lots_of_refs
diff --git a/tests/sav/base_attr_optional.res b/tests/sav/base_attr_optional.res
new file mode 100644 (file)
index 0000000..c879e94
--- /dev/null
@@ -0,0 +1,10 @@
+99
+999
+1
+10
+99
+999
+2
+999
+3
+true
diff --git a/tests/sav/base_covar_adapt.res b/tests/sav/base_covar_adapt.res
new file mode 100644 (file)
index 0000000..5e640b5
--- /dev/null
@@ -0,0 +1,4 @@
+1.000000
+1.000000
+1.000000
+true
diff --git a/tests/sav/base_covar_adapt_alt1.res b/tests/sav/base_covar_adapt_alt1.res
new file mode 100644 (file)
index 0000000..0b0273c
--- /dev/null
@@ -0,0 +1,5 @@
+Runtime error: Cast failed. Expected `E`, got `Bool` (alt/base_covar_adapt_alt1.nit:20)
+1.000000
+1.000000
+1.000000
+true
diff --git a/tests/sav/base_covar_adapt_alt2.res b/tests/sav/base_covar_adapt_alt2.res
new file mode 100644 (file)
index 0000000..bc3ebbd
--- /dev/null
@@ -0,0 +1,5 @@
+Runtime error: Cast failed. Expected `E`, got `null` (alt/base_covar_adapt_alt2.nit:18)
+1.000000
+1.000000
+1.000000
+true
diff --git a/tests/sav/base_gen_nest.res b/tests/sav/base_gen_nest.res
new file mode 100644 (file)
index 0000000..961b372
--- /dev/null
@@ -0,0 +1 @@
+1.000000
index 5b14b4e..b2c999e 100644 (file)
@@ -1 +1 @@
-alt/base_meth_call_alt1.nit:36,1--6: Error: expected an expression.
+alt/base_meth_call_alt1.nit:36,1--6: Error: expected an expression to be the receiver of `output`.
diff --git a/tests/sav/base_vararg_transform.res b/tests/sav/base_vararg_transform.res
new file mode 100644 (file)
index 0000000..12a875f
--- /dev/null
@@ -0,0 +1,7 @@
+[1,1]
+[true,2]
+[1,3]
+[1,4]
+[[1,2,3],5]
+[[1,2,3],6]
+[[1,2,3],7]
diff --git a/tests/sav/base_with2.res b/tests/sav/base_with2.res
new file mode 100644 (file)
index 0000000..76fda2f
--- /dev/null
@@ -0,0 +1,4 @@
+1
+2
+4
+6
diff --git a/tests/sav/empty_string.res b/tests/sav/empty_string.res
new file mode 100644 (file)
index 0000000..405c2a9
--- /dev/null
@@ -0,0 +1,3 @@
+Is empty
+Is empty
+Is empty
diff --git a/tests/sav/error_arg.res b/tests/sav/error_arg.res
new file mode 100644 (file)
index 0000000..1aa7d08
--- /dev/null
@@ -0,0 +1,9 @@
+11
+11
+1
+1
+11
+
+11
+11
+11
diff --git a/tests/sav/error_arg_alt1.res b/tests/sav/error_arg_alt1.res
new file mode 100644 (file)
index 0000000..efe82e4
--- /dev/null
@@ -0,0 +1,2 @@
+alt/error_arg_alt1.nit:37,1--7: Error: expected an expression to be the receiver of `a`.
+alt/error_arg_alt1.nit:38,1--6: Error: expected an expression to be the receiver of `a`.
diff --git a/tests/sav/nitc-common/fixme/base_with2.res b/tests/sav/nitc-common/fixme/base_with2.res
new file mode 100644 (file)
index 0000000..e47fd69
--- /dev/null
@@ -0,0 +1,3 @@
+1
+2
+6
diff --git a/tests/sav/nitce/base_covar_adapt_alt1.res b/tests/sav/nitce/base_covar_adapt_alt1.res
new file mode 100644 (file)
index 0000000..326b920
--- /dev/null
@@ -0,0 +1,5 @@
+1.000000
+1.000000
+1.000000
+true
+true
diff --git a/tests/sav/nitce/base_covar_adapt_alt2.res b/tests/sav/nitce/base_covar_adapt_alt2.res
new file mode 100644 (file)
index 0000000..326b920
--- /dev/null
@@ -0,0 +1,5 @@
+1.000000
+1.000000
+1.000000
+true
+true
index 7d9b1ab..8e58cac 100644 (file)
@@ -2,7 +2,7 @@
 <A: true a 0.123 1234 asdf false p4ssw0rd>
 
 # Json:
-{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": {"__kind": "char", "__val": "a"}, "f": 0.123, "i": 1234, "s": "asdf", "n": null}
+{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": {"__kind": "char", "__val": "a"}, "f": 0.123, "i": 1234, "serialization_specific_name": "asdf", "n": null}
 
 # Back in Nit:
 <A: true a 0.123 1234 asdf false p4ssw0rd>
@@ -11,7 +11,7 @@
 <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>
 
 # Json:
-{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "s": "hjkl", "n": 12, "ii": 1111, "ss": "qwer"}
+{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "serialization_specific_name": "hjkl", "n": 12, "ii": 1111, "ss": "qwer"}
 
 # Back in Nit:
 <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>
@@ -20,7 +20,7 @@
 <C: <A: true a 0.123 1234 asdf false p4ssw0rd> <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>>
 
 # Json:
-{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": {"__kind": "char", "__val": "a"}, "f": 0.123, "i": 1234, "s": "asdf", "n": null}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "s": "hjkl", "n": 12, "ii": 1111, "ss": "qwer"}, "aa": {"__kind": "ref", "__id": 1}}
+{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": {"__kind": "char", "__val": "a"}, "f": 0.123, "i": 1234, "serialization_specific_name": "asdf", "n": null}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "serialization_specific_name": "hjkl", "n": 12, "ii": 1111, "ss": "qwer"}, "aa": {"__kind": "ref", "__id": 1}}
 
 # Back in Nit:
 <C: <A: true a 0.123 1234 asdf false p4ssw0rd> <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>>
@@ -30,7 +30,7 @@
 <- false p4ssw0rd> 1111        f"\r\/> true>
 
 # Json:
-{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "ii": 1111, "ss": "\tf\"\r\\/", "d": {"__kind": "ref", "__id": 0}}
+{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "serialization_specific_name": "new line ->\n<-", "n": null, "ii": 1111, "ss": "\tf\"\r\\/", "d": {"__kind": "ref", "__id": 0}}
 
 # Back in Nit:
 <D: <B: <A: false b 123.123 2345 new line ->
diff --git a/tests/sav/nitcg/test_text_stat.res b/tests/sav/nitcg/test_text_stat.res
deleted file mode 100644 (file)
index 8fd2394..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-Hello world !
-Usage of Strings:
-
-Allocations, by type:
-               
-       -FlatString = 29
-       -FlatBuffer = 2
-       -Concat = 0
-       -RopeBuffer = 0
-
-Calls to length, by type:
-       FlatString = 23 (cache misses 5, 21.73%)
-Indexed accesses, by type:
-       FlatString = 13
-Calls to bytelen for each type:
-       FlatString = 61
-Calls to position for each type:
-       FlatString = 27
-Calls to bytepos for each type:
-       FlatString = 14
-Calls to first_byte on FlatString 216
-Calls to last_byte on FlatString 19
-FlatStrings allocated with length 78 (86.813%)
-Length of travel for index distribution:
-* null = 16 => occurences 80.0%, cumulative 80.0% 
-* 1 = 14 => occurences 35.0%, cumulative 75.0% 
-Byte length of the FlatStrings created:
-* null = 6 => occurences 4.444%, cumulative 4.444% 
-* 1 = 21 => occurences 14.094%, cumulative 18.121% 
-* 2 = 33 => occurences 20.245%, cumulative 36.81% 
-* 3 = 29 => occurences 16.292%, cumulative 50.0% 
-* 4 = 9 => occurences 4.663%, cumulative 50.777% 
-* 5 = 20 => occurences 9.615%, cumulative 56.731% 
-* 6 = 21 => occurences 9.417%, cumulative 62.332% 
-* 9 = 1 => occurences 0.42%, cumulative 58.824% 
-* 10 = 9 => occurences 3.557%, cumulative 58.893% 
-* 11 = 2 => occurences 0.746%, cumulative 56.343% 
-* 12 = 1 => occurences 0.355%, cumulative 53.901% 
-* 13 = 1 => occurences 0.339%, cumulative 51.864% 
-* 14 = 1 => occurences 0.325%, cumulative 50.0% 
-* 15 = 5 => occurences 1.558%, cumulative 49.533% 
-* 16 = 7 => occurences 2.083%, cumulative 49.405% 
-* 17 = 1 => occurences 0.285%, cumulative 47.578% 
-* 25 = 2 => occurences 0.549%, cumulative 46.429% 
-* 26 = 1 => occurences 0.265%, cumulative 44.974% 
-* 31 = 2 => occurences 0.512%, cumulative 43.99% 
-* 32 = 1 => occurences 0.247%, cumulative 42.716% 
-* 33 = 1 => occurences 0.239%, cumulative 41.627% 
-* 34 = 2 => occurences 0.464%, cumulative 40.835% 
-* 35 = 1 => occurences 0.225%, cumulative 39.775% 
-* 37 = 1 => occurences 0.218%, cumulative 38.865% 
-* 39 = 1 => occurences 0.212%, cumulative 38.004% 
-* 40 = 1 => occurences 0.207%, cumulative 37.19% 
-* 43 = 1 => occurences 0.201%, cumulative 36.419% 
-* 46 = 1 => occurences 0.196%, cumulative 35.686% 
-* 48 = 1 => occurences 0.191%, cumulative 34.99% 
-* 51 = 21 => occurences 3.918%, cumulative 38.06% 
index 9d2321b..95a4dc1 100644 (file)
@@ -2,7 +2,7 @@
 <A: true a 0.123 1234 asdf false p4ssw0rd>
 
 # Json:
-{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": {"__kind": "char", "__val": "a"}, "f": 0.123, "i": 1234, "s": "asdf", "n": null}
+{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": {"__kind": "char", "__val": "a"}, "f": 0.123, "i": 1234, "serialization_specific_name": "asdf", "n": null}
 
 # Back in Nit:
 <A: true a 0.123 1234 asdf false p4ssw0rd>
@@ -11,7 +11,7 @@
 <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>
 
 # Json:
-{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "s": "hjkl", "n": 12, "ii": 1111, "ss": "qwer"}
+{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "serialization_specific_name": "hjkl", "n": 12, "ii": 1111, "ss": "qwer"}
 
 # Back in Nit:
 <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>
@@ -20,7 +20,7 @@
 <C: <A: true a 0.123 1234 asdf false p4ssw0rd> <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>>
 
 # Json:
-{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": {"__kind": "char", "__val": "a"}, "f": 0.123, "i": 1234, "s": "asdf", "n": null}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "s": "hjkl", "n": 12, "ii": 1111, "ss": "qwer"}, "aa": {"__kind": "ref", "__id": 1}}
+{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": {"__kind": "char", "__val": "a"}, "f": 0.123, "i": 1234, "serialization_specific_name": "asdf", "n": null}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "serialization_specific_name": "hjkl", "n": 12, "ii": 1111, "ss": "qwer"}, "aa": {"__kind": "ref", "__id": 1}}
 
 # Back in Nit:
 <C: <A: true a 0.123 1234 asdf false p4ssw0rd> <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>>
@@ -30,7 +30,7 @@
 <- false p4ssw0rd> 1111        f"\r\/> true>
 
 # Json:
-{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "ii": 1111, "ss": "\tf\"\r\\/", "d": {"__kind": "ref", "__id": 0}}
+{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "serialization_specific_name": "new line ->\n<-", "n": null, "ii": 1111, "ss": "\tf\"\r\\/", "d": {"__kind": "ref", "__id": 0}}
 
 # Back in Nit:
 <D: <B: <A: false b 123.123 2345 new line ->
index 1c2f960..84e2d3d 100644 (file)
@@ -2,7 +2,7 @@
 <A: true a 0.123 1234 asdf false p4ssw0rd>
 
 # Json:
-{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": {"__kind": "char", "__val": "a"}, "f": 0.123, "i": 1234, "s": "asdf", "n": null}
+{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": {"__kind": "char", "__val": "a"}, "f": 0.123, "i": 1234, "serialization_specific_name": "asdf", "n": null}
 
 # Back in Nit:
 <A: true a 0.123 1234 asdf false p4ssw0rd>
@@ -11,7 +11,7 @@
 <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>
 
 # Json:
-{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "s": "hjkl", "n": 12, "ii": 1111, "ss": "qwer"}
+{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "serialization_specific_name": "hjkl", "n": 12, "ii": 1111, "ss": "qwer"}
 
 # Back in Nit:
 <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>
@@ -20,7 +20,7 @@
 <C: <A: true a 0.123 1234 asdf false p4ssw0rd> <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>>
 
 # Json:
-{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": {"__kind": "char", "__val": "a"}, "f": 0.123, "i": 1234, "s": "asdf", "n": null}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "s": "hjkl", "n": 12, "ii": 1111, "ss": "qwer"}, "aa": {"__kind": "ref", "__id": 1}}
+{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": {"__kind": "char", "__val": "a"}, "f": 0.123, "i": 1234, "serialization_specific_name": "asdf", "n": null}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "serialization_specific_name": "hjkl", "n": 12, "ii": 1111, "ss": "qwer"}, "aa": {"__kind": "ref", "__id": 1}}
 
 # Back in Nit:
 <C: <A: true a 0.123 1234 asdf false p4ssw0rd> <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>>
@@ -30,7 +30,7 @@
 <- false p4ssw0rd> 1111        f"\r\/> true>
 
 # Json:
-{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "ii": 1111, "ss": "\tf\"\r\\/", "d": {"__kind": "ref", "__id": 0}}
+{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": {"__kind": "char", "__val": "b"}, "f": 123.123, "i": 2345, "serialization_specific_name": "new line ->\n<-", "n": null, "ii": 1111, "ss": "\tf\"\r\\/", "d": {"__kind": "ref", "__id": 0}}
 
 # Back in Nit:
 <D: <B: <A: false b 123.123 2345 new line ->
index ada4bc7..86c613b 100644 (file)
@@ -2,26 +2,26 @@
 <A: true a 0.123 1234 asdf false p4ssw0rd>
 
 # Json:
-{"b": true, "c": "a", "f": 0.123, "i": 1234, "s": "asdf", "n": null}
+{"b": true, "c": "a", "f": 0.123, "i": 1234, "serialization_specific_name": "asdf", "n": null}
 
 # Nit:
 <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>
 
 # Json:
-{"b": false, "c": "b", "f": 123.123, "i": 2345, "s": "hjkl", "n": 12, "ii": 1111, "ss": "qwer"}
+{"b": false, "c": "b", "f": 123.123, "i": 2345, "serialization_specific_name": "hjkl", "n": 12, "ii": 1111, "ss": "qwer"}
 
 # Nit:
 <C: <A: true a 0.123 1234 asdf false p4ssw0rd> <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>>
 
 # Json:
-{"a": {"b": true, "c": "a", "f": 0.123, "i": 1234, "s": "asdf", "n": null}, "b": {"b": false, "c": "b", "f": 123.123, "i": 2345, "s": "hjkl", "n": 12, "ii": 1111, "ss": "qwer"}, "aa": {"b": true, "c": "a", "f": 0.123, "i": 1234, "s": "asdf", "n": null}}
+{"a": {"b": true, "c": "a", "f": 0.123, "i": 1234, "serialization_specific_name": "asdf", "n": null}, "b": {"b": false, "c": "b", "f": 123.123, "i": 2345, "serialization_specific_name": "hjkl", "n": 12, "ii": 1111, "ss": "qwer"}, "aa": {"b": true, "c": "a", "f": 0.123, "i": 1234, "serialization_specific_name": "asdf", "n": null}}
 
 # Nit:
 <D: <B: <A: false b 123.123 2345 new line ->
 <- false p4ssw0rd> 1111        f"\r\/> true>
 
 # Json:
-{"b": false, "c": "b", "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "ii": 1111, "ss": "\tf\"\r\\/", "d": null}
+{"b": false, "c": "b", "f": 123.123, "i": 2345, "serialization_specific_name": "new line ->\n<-", "n": null, "ii": 1111, "ss": "\tf\"\r\\/", "d": null}
 
 # Nit:
 <E: a: hello, 1234, 123.4; b: hella, 2345, 234.5>
diff --git a/tests/sav/test_prefixed_chars.res b/tests/sav/test_prefixed_chars.res
new file mode 100644 (file)
index 0000000..a334f7f
--- /dev/null
@@ -0,0 +1,2 @@
+0x41
+66515
diff --git a/tests/sav/test_prefixed_chars_alt1.res b/tests/sav/test_prefixed_chars_alt1.res
new file mode 100644 (file)
index 0000000..8c96895
--- /dev/null
@@ -0,0 +1 @@
+alt/test_prefixed_chars_alt1.nit:18,17--20: Syntax Error: usage of byte prefix on multibyte character.
index e320033..702e2b2 100644 (file)
@@ -9,48 +9,49 @@ Allocations, by type:
        -RopeBuffer = 0
 
 Calls to length, by type:
-       FlatString = 23 (cache misses 5, 21.73%)
+       FlatString = 18 (cache misses 5, 27.77%)
 Indexed accesses, by type:
-       FlatString = 13
+       FlatString = 8
 Calls to bytelen for each type:
        FlatString = 61
 Calls to position for each type:
-       FlatString = 27
+       FlatString = 17
 Calls to bytepos for each type:
-       FlatString = 14
-Calls to first_byte on FlatString 216
+       FlatString = 9
+Calls to first_byte on FlatString 191
 Calls to last_byte on FlatString 19
 FlatStrings allocated with length 78 (86.813%)
 Length of travel for index distribution:
-* 0 = 16 => occurences 80.0%, cumulative 80.0% 
-* 1 = 14 => occurences 35.0%, cumulative 75.0% 
+* 0 = 11 => occurences 73.333%, cumulative 73.333% 
+* 1 = 8 => occurences 27.586%, cumulative 65.517% 
 Byte length of the FlatStrings created:
 * 0 = 6 => occurences 4.478%, cumulative 4.478% 
-* 1 = 21 => occurences 14.189%, cumulative 18.243% 
-* 2 = 33 => occurences 20.37%, cumulative 37.037% 
+* 1 = 24 => occurences 16.216%, cumulative 20.27% 
+* 2 = 30 => occurences 18.519%, cumulative 37.037% 
 * 3 = 29 => occurences 16.384%, cumulative 50.282% 
-* 4 = 7 => occurences 3.646%, cumulative 50.0% 
-* 5 = 20 => occurences 9.662%, cumulative 56.039% 
-* 6 = 21 => occurences 9.459%, cumulative 61.712% 
-* 9 = 1 => occurences 0.422%, cumulative 58.228% 
-* 10 = 9 => occurences 3.571%, cumulative 58.333% 
-* 11 = 2 => occurences 0.749%, cumulative 55.805% 
-* 12 = 1 => occurences 0.356%, cumulative 53.381% 
-* 13 = 1 => occurences 0.34%, cumulative 51.361% 
-* 14 = 1 => occurences 0.326%, cumulative 49.511% 
-* 15 = 5 => occurences 1.563%, cumulative 49.063% 
-* 16 = 7 => occurences 2.09%, cumulative 48.955% 
-* 17 = 1 => occurences 0.286%, cumulative 47.143% 
-* 25 = 2 => occurences 0.551%, cumulative 46.006% 
-* 26 = 1 => occurences 0.265%, cumulative 44.562% 
-* 31 = 2 => occurences 0.513%, cumulative 43.59% 
-* 32 = 1 => occurences 0.248%, cumulative 42.327% 
-* 33 = 1 => occurences 0.24%, cumulative 41.247% 
-* 34 = 2 => occurences 0.465%, cumulative 40.465% 
-* 35 = 1 => occurences 0.225%, cumulative 39.414% 
-* 37 = 1 => occurences 0.219%, cumulative 38.512% 
-* 39 = 1 => occurences 0.213%, cumulative 37.66% 
-* 40 = 1 => occurences 0.207%, cumulative 36.853% 
-* 43 = 1 => occurences 0.202%, cumulative 36.089% 
-* 46 = 1 => occurences 0.196%, cumulative 35.363% 
-* 48 = 3 => occurences 0.575%, cumulative 35.057% 
+* 4 = 3 => occurences 1.563%, cumulative 47.917% 
+* 5 = 20 => occurences 9.662%, cumulative 54.106% 
+* 6 = 26 => occurences 11.712%, cumulative 62.162% 
+* 9 = 1 => occurences 0.422%, cumulative 58.65% 
+* 10 = 9 => occurences 3.571%, cumulative 58.73% 
+* 11 = 2 => occurences 0.749%, cumulative 56.18% 
+* 12 = 1 => occurences 0.356%, cumulative 53.737% 
+* 13 = 1 => occurences 0.34%, cumulative 51.701% 
+* 14 = 1 => occurences 0.326%, cumulative 49.837% 
+* 15 = 7 => occurences 2.188%, cumulative 50.0% 
+* 16 = 5 => occurences 1.493%, cumulative 49.254% 
+* 17 = 1 => occurences 0.286%, cumulative 47.429% 
+* 25 = 2 => occurences 0.551%, cumulative 46.281% 
+* 26 = 1 => occurences 0.265%, cumulative 44.828% 
+* 31 = 2 => occurences 0.513%, cumulative 43.846% 
+* 32 = 1 => occurences 0.248%, cumulative 42.574% 
+* 33 = 1 => occurences 0.24%, cumulative 41.487% 
+* 34 = 2 => occurences 0.465%, cumulative 40.698% 
+* 35 = 1 => occurences 0.225%, cumulative 39.64% 
+* 37 = 1 => occurences 0.219%, cumulative 38.731% 
+* 39 = 1 => occurences 0.213%, cumulative 37.872% 
+* 40 = 1 => occurences 0.207%, cumulative 37.06% 
+* 43 = 1 => occurences 0.202%, cumulative 36.29% 
+* 46 = 1 => occurences 0.196%, cumulative 35.56% 
+* 51 = 14 => occurences 2.682%, cumulative 37.356% 
+* 52 = 5 => occurences 0.931%, cumulative 37.244% 
index 2228810..478f9d0 100644 (file)
@@ -24,7 +24,7 @@ class A
        var c: Char
        var f: Float
        var i: Int
-       var s: String
+       var s: String is serialize_as "serialization_specific_name"
        var n: nullable Int
        var password = "p4ssw0rd" is lazy, noserialize
 
diff --git a/tests/test_prefixed_chars.nit b/tests/test_prefixed_chars.nit
new file mode 100644 (file)
index 0000000..3070060
--- /dev/null
@@ -0,0 +1,21 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# 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.
+
+var ascii_char = b'A'
+var unicode_char = u'𐏓'
+
+#alt1 var bug_ascii = b'𐏓'
+
+print ascii_char
+print unicode_char