diff --git a/.github/workflows/esy-build.yml b/.github/workflows/esy-build.yml index a0961413c7..cf191c5522 100644 --- a/.github/workflows/esy-build.yml +++ b/.github/workflows/esy-build.yml @@ -59,7 +59,7 @@ jobs: if: ${{ matrix.system == 'ubuntu' }} working-directory: melange-basic-template run: | - sed -i 's@"installConfig"@"resolutions": { "\@opam/dune": "ocaml/dune:dune.opam#258058c6803525261df9d330d9eca2a4b0a8adc2", "\@opam/melange-compiler-libs": "melange-re/melange-compiler-libs:melange-compiler-libs.opam#7263bea2285499f5da857f2bb374345a5178791e", "\@opam/reactjs-jsx-ppx": "melange-re/melange:reactjs-jsx-ppx.opam#'"$GITHUB_SHA"'","\@opam/melange": "melange-re/melange:melange.opam#'"$GITHUB_SHA"'", "\@opam/mel": "melange-re/melange:mel.opam#'"$GITHUB_SHA"'"},"installConfig"@' esy.json + sed -i 's@"installConfig"@"resolutions": { "\@opam/dune": "ocaml/dune:dune.opam#258058c6803525261df9d330d9eca2a4b0a8adc2", "\@opam/melange-compiler-libs": "melange-re/melange-compiler-libs:melange-compiler-libs.opam#7263bea2285499f5da857f2bb374345a5178791e", "\@opam/reactjs-jsx-ppx": "melange-re/melange:reactjs-jsx-ppx.opam#'"$GITHUB_SHA"'","\@opam/melange": "melange-re/melange:melange.opam#'"$GITHUB_SHA"'"},"installConfig"@' esy.json - name: Build basic template if: ${{ matrix.system == 'ubuntu' }} diff --git a/Changes.md b/Changes.md index 2ded335ae7..6ddf30d152 100644 --- a/Changes.md +++ b/Changes.md @@ -47,6 +47,9 @@ Unreleased ([#525](https://github.com/melange-re/melange/pull/525)) - melange: add `melpp` executable to preprocess `#if` conditionals with the melange parser ([#539](https://github.com/melange-re/melange/pull/539)) +- mel: delete the `mel` package. The dune integration is now the only + officially supported workflow for orchestrating melange builds + ([#546](https://github.com/melange-re/melange/pull/546)) 0.3.2 2022-11-19 --------------- diff --git a/Makefile b/Makefile index d62c43c809..3ba4840ef5 100644 --- a/Makefile +++ b/Makefile @@ -33,7 +33,6 @@ opam-install-test: ## Install test dependencies opam pin -y add melange-compiler-libs.dev https://github.com/melange-re/melange-compiler-libs.git#7263bea2285499f5da857f2bb374345a5178791e opam pin add reactjs-jsx-ppx.dev . --with-test -y opam pin add melange.dev . --with-test -y - opam pin add mel.dev . --with-test -y opam pin add rescript-syntax.dev . --with-test -y .PHONY: opam-install-dev diff --git a/dune b/dune index 1b43d57c4c..390179e319 100644 --- a/dune +++ b/dune @@ -9,23 +9,3 @@ (CPPO_FLAGS -D=BS_RELEASE_BUILD)) (ocamlopt_flags (:standard -O3 -unbox-closures)))) - -(install - (package melange) - (dirs - (lib/es6 as mel_runtime/lib/es6) - (lib/js as mel_runtime/lib/js)) - (files - (package.json as mel_runtime/package.json) - (bsconfig.json as mel_runtime/bsconfig.json) - ;; while we wait for https://github.com/ocaml/dune/pull/6250 - ;; dune build lib/artifacts.sexp - ;; cp ./_build/default/lib/artifacts.sexp lib/checked-in-artifacts.sexp - (include ./lib/checked-in-artifacts.sexp)) - (section lib)) - -;;;;{BSB GENERATED: NO EDIT - -(include dune.mel) - -;;;;BSB GENERATED: NO EDIT} diff --git a/dune-project b/dune-project index 6c6c2c69aa..13f83bd758 100644 --- a/dune-project +++ b/dune-project @@ -4,8 +4,6 @@ (using melange 0.1) -(using directory-targets 0.1) - (executables_implicit_empty_intf true) (cram enable) @@ -49,21 +47,6 @@ (reason :with-test) (reactjs-jsx-ppx :with-test))) -(package - (name mel) - (synopsis - "Build system for Melange that defers to Dune for build orchestration") - (depends - ocaml - (melange - (= :version)) - reactjs-jsx-ppx - (cmdliner - (>= "1.1.0")) - (luv - (>= "0.5.11")) - (ounit :with-test))) - (package (name rescript-syntax) (synopsis "ReScript syntax packaged as an opam library") diff --git a/dune.mel b/dune.mel deleted file mode 100644 index 6fd8ea06b6..0000000000 --- a/dune.mel +++ /dev/null @@ -1,5228 +0,0 @@ - -(subdir jscomp/runtime -(rule -(targets js.ast) - (deps (:inputs js.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js.d) - (deps (:inputs js.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js.cmj js.cmi js.cmt js.mjs js.js) - (alias mel) - (deps (:inputs js.ast) (include js.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml.ast) - (deps (:inputs caml.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml.d) - (deps (:inputs caml.ast caml.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml.iast) - (deps (:inputs caml.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml.cmi caml.cmti) - (alias mel) - (deps (:inputs caml.iast) (include caml.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml.cmj caml.cmt caml.mjs caml.js) - (alias mel) - (deps (:inputs caml.ast) caml.cmi (include caml.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets curry.ast) - (deps (:inputs curry.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets curry.d) - (deps (:inputs curry.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets curry.cmj curry.cmi curry.cmt curry.mjs curry.js) - (alias mel) - (deps (:inputs curry.ast) (include curry.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o curry.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_gc.ast) - (deps (:inputs caml_gc.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_gc.d) - (deps (:inputs caml_gc.ast caml_gc.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_gc.iast) - (deps (:inputs caml_gc.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_gc.cmi caml_gc.cmti) - (alias mel) - (deps (:inputs caml_gc.iast) (include caml_gc.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_gc.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_gc.cmj caml_gc.cmt caml_gc.mjs caml_gc.js) - (alias mel) - (deps (:inputs caml_gc.ast) caml_gc.cmi (include caml_gc.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_gc.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_io.ast) - (deps (:inputs caml_io.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_io.d) - (deps (:inputs caml_io.ast caml_io.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_io.iast) - (deps (:inputs caml_io.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_io.cmi caml_io.cmti) - (alias mel) - (deps (:inputs caml_io.iast) (include caml_io.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_io.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_io.cmj caml_io.cmt caml_io.mjs caml_io.js) - (alias mel) - (deps (:inputs caml_io.ast) caml_io.cmi (include caml_io.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_io.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_oo.ast) - (deps (:inputs caml_oo.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_oo.d) - (deps (:inputs caml_oo.ast caml_oo.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_oo.iast) - (deps (:inputs caml_oo.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_oo.cmi caml_oo.cmti) - (alias mel) - (deps (:inputs caml_oo.iast) (include caml_oo.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_oo.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_oo.cmj caml_oo.cmt caml_oo.mjs caml_oo.js) - (alias mel) - (deps (:inputs caml_oo.ast) caml_oo.cmi (include caml_oo.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_oo.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_md5.ast) - (deps (:inputs caml_md5.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_md5.d) - (deps (:inputs caml_md5.ast caml_md5.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_md5.iast) - (deps (:inputs caml_md5.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_md5.cmi caml_md5.cmti) - (alias mel) - (deps (:inputs caml_md5.iast) (include caml_md5.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_md5.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_md5.cmj caml_md5.cmt caml_md5.mjs caml_md5.js) - (alias mel) - (deps (:inputs caml_md5.ast) caml_md5.cmi (include caml_md5.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_md5.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_obj.ast) - (deps (:inputs caml_obj.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_obj.d) - (deps (:inputs caml_obj.ast caml_obj.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_obj.iast) - (deps (:inputs caml_obj.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_obj.cmi caml_obj.cmti) - (alias mel) - (deps (:inputs caml_obj.iast) (include caml_obj.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_obj.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_obj.cmj caml_obj.cmt caml_obj.mjs caml_obj.js) - (alias mel) - (deps (:inputs caml_obj.ast) caml_obj.cmi (include caml_obj.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_obj.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_sys.ast) - (deps (:inputs caml_sys.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_sys.d) - (deps (:inputs caml_sys.ast caml_sys.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_sys.iast) - (deps (:inputs caml_sys.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_sys.cmi caml_sys.cmti) - (alias mel) - (deps (:inputs caml_sys.iast) (include caml_sys.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_sys.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_sys.cmj caml_sys.cmt caml_sys.mjs caml_sys.js) - (alias mel) - (deps (:inputs caml_sys.ast) caml_sys.cmi (include caml_sys.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_sys.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_hash.ast) - (deps (:inputs caml_hash.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_hash.d) - (deps (:inputs caml_hash.ast caml_hash.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_hash.iast) - (deps (:inputs caml_hash.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_hash.cmi caml_hash.cmti) - (alias mel) - (deps (:inputs caml_hash.iast) (include caml_hash.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_hash.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_hash.cmj caml_hash.cmt caml_hash.mjs caml_hash.js) - (alias mel) - (deps (:inputs caml_hash.ast) caml_hash.cmi (include caml_hash.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_hash.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_array.ast) - (deps (:inputs caml_array.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_array.d) - (deps (:inputs caml_array.ast caml_array.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_array.iast) - (deps (:inputs caml_array.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_array.cmi caml_array.cmti) - (alias mel) - (deps (:inputs caml_array.iast) (include caml_array.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_array.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_array.cmj caml_array.cmt caml_array.mjs caml_array.js) - (alias mel) - (deps (:inputs caml_array.ast) caml_array.cmi (include caml_array.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_array.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_bytes.ast) - (deps (:inputs caml_bytes.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_bytes.d) - (deps (:inputs caml_bytes.ast caml_bytes.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_bytes.iast) - (deps (:inputs caml_bytes.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_bytes.cmi caml_bytes.cmti) - (alias mel) - (deps (:inputs caml_bytes.iast) (include caml_bytes.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_bytes.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_bytes.cmj caml_bytes.cmt caml_bytes.mjs caml_bytes.js) - (alias mel) - (deps (:inputs caml_bytes.ast) caml_bytes.cmi (include caml_bytes.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_bytes.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_float.ast) - (deps (:inputs caml_float.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_float.d) - (deps (:inputs caml_float.ast caml_float.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_float.iast) - (deps (:inputs caml_float.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_float.cmi caml_float.cmti) - (alias mel) - (deps (:inputs caml_float.iast) (include caml_float.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_float.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_float.cmj caml_float.cmt caml_float.mjs caml_float.js) - (alias mel) - (deps (:inputs caml_float.ast) caml_float.cmi (include caml_float.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_float.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_int32.ast) - (deps (:inputs caml_int32.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_int32.d) - (deps (:inputs caml_int32.ast caml_int32.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_int32.iast) - (deps (:inputs caml_int32.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_int32.cmi caml_int32.cmti) - (alias mel) - (deps (:inputs caml_int32.iast) (include caml_int32.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_int32.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_int32.cmj caml_int32.cmt caml_int32.mjs caml_int32.js) - (alias mel) - (deps (:inputs caml_int32.ast) caml_int32.cmi (include caml_int32.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_int32.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_int64.ast) - (deps (:inputs caml_int64.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_int64.d) - (deps (:inputs caml_int64.ast caml_int64.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_int64.iast) - (deps (:inputs caml_int64.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_int64.cmi caml_int64.cmti) - (alias mel) - (deps (:inputs caml_int64.iast) (include caml_int64.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_int64.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_int64.cmj caml_int64.cmt caml_int64.mjs caml_int64.js) - (alias mel) - (deps (:inputs caml_int64.ast) caml_int64.cmi (include caml_int64.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_int64.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_lexer.ast) - (deps (:inputs caml_lexer.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_lexer.d) - (deps (:inputs caml_lexer.ast caml_lexer.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_lexer.iast) - (deps (:inputs caml_lexer.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_lexer.cmi caml_lexer.cmti) - (alias mel) - (deps (:inputs caml_lexer.iast) (include caml_lexer.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_lexer.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_lexer.cmj caml_lexer.cmt caml_lexer.mjs caml_lexer.js) - (alias mel) - (deps (:inputs caml_lexer.ast) caml_lexer.cmi (include caml_lexer.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_lexer.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_format.ast) - (deps (:inputs caml_format.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_format.d) - (deps (:inputs caml_format.ast caml_format.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_format.iast) - (deps (:inputs caml_format.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_format.cmi caml_format.cmti) - (alias mel) - (deps (:inputs caml_format.iast) (include caml_format.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_format.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_format.cmj caml_format.cmt caml_format.mjs caml_format.js) - (alias mel) - (deps (:inputs caml_format.ast) caml_format.cmi (include caml_format.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_format.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_module.ast) - (deps (:inputs caml_module.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_module.d) - (deps (:inputs caml_module.ast caml_module.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_module.iast) - (deps (:inputs caml_module.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_module.cmi caml_module.cmti) - (alias mel) - (deps (:inputs caml_module.iast) (include caml_module.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_module.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_module.cmj caml_module.cmt caml_module.mjs caml_module.js) - (alias mel) - (deps (:inputs caml_module.ast) caml_module.cmi (include caml_module.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_module.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_option.ast) - (deps (:inputs caml_option.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_option.d) - (deps (:inputs caml_option.ast caml_option.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_option.iast) - (deps (:inputs caml_option.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_option.cmi caml_option.cmti) - (alias mel) - (deps (:inputs caml_option.iast) (include caml_option.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_option.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_option.cmj caml_option.cmt caml_option.mjs caml_option.js) - (alias mel) - (deps (:inputs caml_option.ast) caml_option.cmi (include caml_option.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_option.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_parser.ast) - (deps (:inputs caml_parser.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_parser.d) - (deps (:inputs caml_parser.ast caml_parser.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_parser.iast) - (deps (:inputs caml_parser.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_parser.cmi caml_parser.cmti) - (alias mel) - (deps (:inputs caml_parser.iast) (include caml_parser.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_parser.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_parser.cmj caml_parser.cmt caml_parser.mjs caml_parser.js) - (alias mel) - (deps (:inputs caml_parser.ast) caml_parser.cmi (include caml_parser.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_parser.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_string.ast) - (deps (:inputs caml_string.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_string.d) - (deps (:inputs caml_string.ast caml_string.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_string.iast) - (deps (:inputs caml_string.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_string.cmi caml_string.cmti) - (alias mel) - (deps (:inputs caml_string.iast) (include caml_string.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_string.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_string.cmj caml_string.cmt caml_string.mjs caml_string.js) - (alias mel) - (deps (:inputs caml_string.ast) caml_string.cmi (include caml_string.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_string.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_oo_curry.ast) - (deps (:inputs caml_oo_curry.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_oo_curry.d) - (deps (:inputs caml_oo_curry.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_oo_curry.cmj caml_oo_curry.cmi caml_oo_curry.cmt caml_oo_curry.mjs caml_oo_curry.js) - (alias mel) - (deps (:inputs caml_oo_curry.ast) (include caml_oo_curry.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_oo_curry.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bs_stdlib_mini.ast) - (deps (:inputs bs_stdlib_mini.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bs_stdlib_mini.d) - (deps (:inputs bs_stdlib_mini.ast bs_stdlib_mini.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bs_stdlib_mini.iast) - (deps (:inputs bs_stdlib_mini.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bs_stdlib_mini.cmi bs_stdlib_mini.cmti) - (alias mel) - (deps (:inputs bs_stdlib_mini.iast) (include bs_stdlib_mini.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o bs_stdlib_mini.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bs_stdlib_mini.cmj bs_stdlib_mini.cmt bs_stdlib_mini.mjs bs_stdlib_mini.js) - (alias mel) - (deps (:inputs bs_stdlib_mini.ast) bs_stdlib_mini.cmi (include bs_stdlib_mini.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o bs_stdlib_mini.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_exceptions.ast) - (deps (:inputs caml_exceptions.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_exceptions.d) - (deps (:inputs caml_exceptions.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_exceptions.cmj caml_exceptions.cmi caml_exceptions.cmt caml_exceptions.mjs caml_exceptions.js) - (alias mel) - (deps (:inputs caml_exceptions.ast) (include caml_exceptions.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_exceptions.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_splice_call.ast) - (deps (:inputs caml_splice_call.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_splice_call.d) - (deps (:inputs caml_splice_call.ast caml_splice_call.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_splice_call.iast) - (deps (:inputs caml_splice_call.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_splice_call.cmi caml_splice_call.cmti) - (alias mel) - (deps (:inputs caml_splice_call.iast) (include caml_splice_call.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_splice_call.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_splice_call.cmj caml_splice_call.cmt caml_splice_call.mjs caml_splice_call.js) - (alias mel) - (deps (:inputs caml_splice_call.ast) caml_splice_call.cmi (include caml_splice_call.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_splice_call.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_array_extern.ast) - (deps (:inputs caml_array_extern.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_array_extern.d) - (deps (:inputs caml_array_extern.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_array_extern.cmj caml_array_extern.cmi caml_array_extern.cmt caml_array_extern.mjs caml_array_extern.js) - (alias mel) - (deps (:inputs caml_array_extern.ast) (include caml_array_extern.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_array_extern.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_float_extern.ast) - (deps (:inputs caml_float_extern.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_float_extern.d) - (deps (:inputs caml_float_extern.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_float_extern.cmj caml_float_extern.cmi caml_float_extern.cmt caml_float_extern.mjs caml_float_extern.js) - (alias mel) - (deps (:inputs caml_float_extern.ast) (include caml_float_extern.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_float_extern.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_int32_extern.ast) - (deps (:inputs caml_int32_extern.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_int32_extern.d) - (deps (:inputs caml_int32_extern.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_int32_extern.cmj caml_int32_extern.cmi caml_int32_extern.cmt caml_int32_extern.mjs caml_int32_extern.js) - (alias mel) - (deps (:inputs caml_int32_extern.ast) (include caml_int32_extern.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_int32_extern.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_int64_extern.ast) - (deps (:inputs caml_int64_extern.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_int64_extern.d) - (deps (:inputs caml_int64_extern.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_int64_extern.cmj caml_int64_extern.cmi caml_int64_extern.cmt caml_int64_extern.mjs caml_int64_extern.js) - (alias mel) - (deps (:inputs caml_int64_extern.ast) (include caml_int64_extern.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_int64_extern.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_js_exceptions.ast) - (deps (:inputs caml_js_exceptions.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_js_exceptions.d) - (deps (:inputs caml_js_exceptions.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_js_exceptions.cmj caml_js_exceptions.cmi caml_js_exceptions.cmt caml_js_exceptions.mjs caml_js_exceptions.js) - (alias mel) - (deps (:inputs caml_js_exceptions.ast) (include caml_js_exceptions.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_js_exceptions.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_string_extern.ast) - (deps (:inputs caml_string_extern.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_string_extern.d) - (deps (:inputs caml_string_extern.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_string_extern.cmj caml_string_extern.cmi caml_string_extern.cmt caml_string_extern.mjs caml_string_extern.js) - (alias mel) - (deps (:inputs caml_string_extern.ast) (include caml_string_extern.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_string_extern.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_hash_primitive.ast) - (deps (:inputs caml_hash_primitive.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_hash_primitive.d) - (deps (:inputs caml_hash_primitive.ast caml_hash_primitive.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_hash_primitive.iast) - (deps (:inputs caml_hash_primitive.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_hash_primitive.cmi caml_hash_primitive.cmti) - (alias mel) - (deps (:inputs caml_hash_primitive.iast) (include caml_hash_primitive.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -o caml_hash_primitive.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_hash_primitive.cmj caml_hash_primitive.cmt caml_hash_primitive.mjs caml_hash_primitive.js) - (alias mel) - (deps (:inputs caml_hash_primitive.ast) caml_hash_primitive.cmi (include caml_hash_primitive.d) bsconfig.json) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_hash_primitive.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_nativeint_extern.ast) - (deps (:inputs caml_nativeint_extern.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_nativeint_extern.d) - (deps (:inputs caml_nativeint_extern.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_nativeint_extern.cmj caml_nativeint_extern.cmi caml_nativeint_extern.cmt caml_nativeint_extern.mjs caml_nativeint_extern.js) - (alias mel) - (deps (:inputs caml_nativeint_extern.ast) (include caml_nativeint_extern.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_nativeint_extern.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_undefined_extern.ast) - (deps (:inputs caml_undefined_extern.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_undefined_extern.d) - (deps (:inputs caml_undefined_extern.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_undefined_extern.cmj caml_undefined_extern.cmi caml_undefined_extern.cmt caml_undefined_extern.mjs caml_undefined_extern.js) - (alias mel) - (deps (:inputs caml_undefined_extern.ast) (include caml_undefined_extern.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_undefined_extern.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_external_polyfill.ast) - (deps (:inputs caml_external_polyfill.ml) ../../.melange.eobjs/jscomp/runtime/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_external_polyfill.d) - (deps (:inputs caml_external_polyfill.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets caml_external_polyfill.cmj caml_external_polyfill.cmi caml_external_polyfill.cmt caml_external_polyfill.mjs caml_external_polyfill.js) - (alias mel) - (deps (:inputs caml_external_polyfill.ast) (include caml_external_polyfill.d) bsconfig.json) -(action - (run melc -bs-legacy -I . -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -w a -bs-package-name @melange/runtime -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o caml_external_polyfill.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - -(alias (name mel)(deps caml_external_polyfill.mjs caml_external_polyfill.js caml_undefined_extern.mjs caml_undefined_extern.js caml_nativeint_extern.mjs caml_nativeint_extern.js caml_hash_primitive.mjs caml_hash_primitive.js caml_string_extern.mjs caml_string_extern.js caml_js_exceptions.mjs caml_js_exceptions.js caml_int64_extern.mjs caml_int64_extern.js caml_int32_extern.mjs caml_int32_extern.js caml_float_extern.mjs caml_float_extern.js caml_array_extern.mjs caml_array_extern.js caml_splice_call.mjs caml_splice_call.js caml_exceptions.mjs caml_exceptions.js bs_stdlib_mini.mjs bs_stdlib_mini.js caml_oo_curry.mjs caml_oo_curry.js caml_string.mjs caml_string.js caml_parser.mjs caml_parser.js caml_option.mjs caml_option.js caml_module.mjs caml_module.js caml_format.mjs caml_format.js caml_lexer.mjs caml_lexer.js caml_int64.mjs caml_int64.js caml_int32.mjs caml_int32.js caml_float.mjs caml_float.js caml_bytes.mjs caml_bytes.js caml_array.mjs caml_array.js caml_hash.mjs caml_hash.js caml_sys.mjs caml_sys.js caml_obj.mjs caml_obj.js caml_md5.mjs caml_md5.js caml_oo.mjs caml_oo.js caml_io.mjs caml_io.js caml_gc.mjs caml_gc.js curry.mjs curry.js caml.mjs caml.js js.mjs js.js) -(enabled_if %{bin-available:melc}))) - -(subdir .melange.eobjs/jscomp/runtime -(rule (write-file .bsbuild MzUKSnMKQ2FtbApDdXJyeQpDYW1sX2djCkNhbWxfaW8KQ2FtbF9vbwpDYW1sX21kNQpDYW1sX29iagpDYW1sX3N5cwpDYW1sX2hhc2gKQ2FtbF9hcnJheQpDYW1sX2J5dGVzCkNhbWxfZmxvYXQKQ2FtbF9pbnQzMgpDYW1sX2ludDY0CkNhbWxfbGV4ZXIKQ2FtbF9mb3JtYXQKQ2FtbF9tb2R1bGUKQ2FtbF9vcHRpb24KQ2FtbF9wYXJzZXIKQ2FtbF9zdHJpbmcKQ2FtbF9vb19jdXJyeQpCc19zdGRsaWJfbWluaQpDYW1sX2V4Y2VwdGlvbnMKQ2FtbF9zcGxpY2VfY2FsbApDYW1sX2FycmF5X2V4dGVybgpDYW1sX2Zsb2F0X2V4dGVybgpDYW1sX2ludDMyX2V4dGVybgpDYW1sX2ludDY0X2V4dGVybgpDYW1sX2pzX2V4Y2VwdGlvbnMKQ2FtbF9zdHJpbmdfZXh0ZXJuCkNhbWxfaGFzaF9wcmltaXRpdmUKQ2FtbF9uYXRpdmVpbnRfZXh0ZXJuCkNhbWxfdW5kZWZpbmVkX2V4dGVybgpDYW1sX2V4dGVybmFsX3BvbHlmaWxsCi4JCjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAowCg==)) -) - -(subdir jscomp/others -(rule -(targets js_typed_array2.ml) - (deps (:inputs js_typed_array2.cppo.ml) ) -(action (system "cppo %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_typed_array.ml) - (deps (:inputs js_typed_array.cppo.ml) ) -(action (system "cppo %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalSetInt.ml) - (deps (:inputs internal_set.cppo.ml) ) -(action (system "cppo -D TYPE_INT %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalSetString.ml) - (deps (:inputs internal_set.cppo.ml) ) -(action (system "cppo -D TYPE_STRING %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalMapInt.ml) - (deps (:inputs internal_map.cppo.ml) ) -(action (system "cppo -D TYPE_INT %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalMapString.ml) - (deps (:inputs internal_map.cppo.ml) ) -(action (system "cppo -D TYPE_STRING %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArrayInt.mli) - (deps (:inputs sort.cppo.mli) ) -(action (system "cppo -D TYPE_INT %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArrayInt.ml) - (deps (:inputs sort.cppo.ml) ) -(action (system "cppo -D TYPE_INT %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArrayString.mli) - (deps (:inputs sort.cppo.mli) ) -(action (system "cppo -D TYPE_STRING %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArrayString.ml) - (deps (:inputs sort.cppo.ml) ) -(action (system "cppo -D TYPE_STRING %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSetInt.mli) - (deps (:inputs setm.cppo.mli) ) -(action (system "cppo -D TYPE_INT %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSetInt.ml) - (deps (:inputs setm.cppo.ml) ) -(action (system "cppo -D TYPE_INT %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSetString.mli) - (deps (:inputs setm.cppo.mli) ) -(action (system "cppo -D TYPE_STRING %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSetString.ml) - (deps (:inputs setm.cppo.ml) ) -(action (system "cppo -D TYPE_STRING %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMapInt.mli) - (deps (:inputs mapm.cppo.mli) ) -(action (system "cppo -D TYPE_INT %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMapInt.ml) - (deps (:inputs mapm.cppo.ml) ) -(action (system "cppo -D TYPE_INT %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMapString.mli) - (deps (:inputs mapm.cppo.mli) ) -(action (system "cppo -D TYPE_STRING %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMapString.ml) - (deps (:inputs mapm.cppo.ml) ) -(action (system "cppo -D TYPE_STRING %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetInt.mli) - (deps (:inputs belt_Set.cppo.mli) ) -(action (system "cppo -D TYPE_INT %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetInt.ml) - (deps (:inputs belt_Set.cppo.ml) ) -(action (system "cppo -D TYPE_INT %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetString.mli) - (deps (:inputs belt_Set.cppo.mli) ) -(action (system "cppo -D TYPE_STRING %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetString.ml) - (deps (:inputs belt_Set.cppo.ml) ) -(action (system "cppo -D TYPE_STRING %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapInt.mli) - (deps (:inputs map.cppo.mli) ) -(action (system "cppo -D TYPE_INT %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapInt.ml) - (deps (:inputs map.cppo.ml) ) -(action (system "cppo -D TYPE_INT %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapString.mli) - (deps (:inputs map.cppo.mli) ) -(action (system "cppo -D TYPE_STRING %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapString.ml) - (deps (:inputs map.cppo.ml) ) -(action (system "cppo -D TYPE_STRING %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMapInt.mli) - (deps (:inputs hashmap.cppo.mli) ) -(action (system "cppo -D TYPE_INT %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMapInt.ml) - (deps (:inputs hashmap.cppo.ml) ) -(action (system "cppo -D TYPE_INT %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMapString.mli) - (deps (:inputs hashmap.cppo.mli) ) -(action (system "cppo -D TYPE_STRING %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMapString.ml) - (deps (:inputs hashmap.cppo.ml) ) -(action (system "cppo -D TYPE_STRING %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSetInt.mli) - (deps (:inputs hashset.cppo.mli) ) -(action (system "cppo -D TYPE_INT %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSetInt.ml) - (deps (:inputs hashset.cppo.ml) ) -(action (system "cppo -D TYPE_INT %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSetString.mli) - (deps (:inputs hashset.cppo.mli) ) -(action (system "cppo -D TYPE_STRING %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSetString.ml) - (deps (:inputs hashset.cppo.ml) ) -(action (system "cppo -D TYPE_STRING %{inputs} -o %{targets}")) -(enabled_if %{bin-available:melc}) ) - (rule -(targets dom.ast) - (deps (:inputs dom.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets dom.d) - (deps (:inputs dom.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets dom.cmj dom.cmi dom.cmt dom.mjs dom.js) - (alias mel) - (deps (:inputs dom.ast) (include dom.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o dom.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt.ast) - (deps (:inputs belt.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt.d) - (deps (:inputs belt.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt.cmj belt.cmi belt.cmt belt.mjs belt.js) - (alias mel) - (deps (:inputs belt.ast) (include belt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node.ast) - (deps (:inputs node.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node.d) - (deps (:inputs node.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node.cmj node.cmi node.cmt node.mjs node.js) - (alias mel) - (deps (:inputs node.ast) (include node.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o node.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_OO.ast) - (deps (:inputs js_OO.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_OO.d) - (deps (:inputs js_OO.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_OO.cmj js_OO.cmi js_OO.cmt js_OO.mjs js_OO.js) - (alias mel) - (deps (:inputs js_OO.ast) (include js_OO.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_OO.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_re.ast) - (deps (:inputs js_re.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_re.d) - (deps (:inputs js_re.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_re.cmj js_re.cmi js_re.cmt js_re.mjs js_re.js) - (alias mel) - (deps (:inputs js_re.ast) (include js_re.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_re.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_exn.ast) - (deps (:inputs js_exn.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_exn.d) - (deps (:inputs js_exn.ast js_exn.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_exn.iast) - (deps (:inputs js_exn.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_exn.cmi js_exn.cmti) - (alias mel) - (deps (:inputs js_exn.iast) (include js_exn.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o js_exn.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_exn.cmj js_exn.cmt js_exn.mjs js_exn.js) - (alias mel) - (deps (:inputs js_exn.ast) js_exn.cmi (include js_exn.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_exn.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_int.ast) - (deps (:inputs js_int.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_int.d) - (deps (:inputs js_int.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_int.cmj js_int.cmi js_int.cmt js_int.mjs js_int.js) - (alias mel) - (deps (:inputs js_int.ast) (include js_int.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_int.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_obj.ast) - (deps (:inputs js_obj.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_obj.d) - (deps (:inputs js_obj.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_obj.cmj js_obj.cmi js_obj.cmt js_obj.mjs js_obj.js) - (alias mel) - (deps (:inputs js_obj.ast) (include js_obj.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_obj.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Id.ast) - (deps (:inputs belt_Id.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Id.d) - (deps (:inputs belt_Id.ast belt_Id.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Id.iast) - (deps (:inputs belt_Id.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Id.cmi belt_Id.cmti) - (alias mel) - (deps (:inputs belt_Id.iast) (include belt_Id.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_Id.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Id.cmj belt_Id.cmt belt_Id.mjs belt_Id.js) - (alias mel) - (deps (:inputs belt_Id.ast) belt_Id.cmi (include belt_Id.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_Id.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_cast.ast) - (deps (:inputs js_cast.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_cast.d) - (deps (:inputs js_cast.ast js_cast.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_cast.iast) - (deps (:inputs js_cast.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_cast.cmi js_cast.cmti) - (alias mel) - (deps (:inputs js_cast.iast) (include js_cast.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o js_cast.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_cast.cmj js_cast.cmt js_cast.mjs js_cast.js) - (alias mel) - (deps (:inputs js_cast.ast) js_cast.cmi (include js_cast.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_cast.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_date.ast) - (deps (:inputs js_date.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_date.d) - (deps (:inputs js_date.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_date.cmj js_date.cmi js_date.cmt js_date.mjs js_date.js) - (alias mel) - (deps (:inputs js_date.ast) (include js_date.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_date.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_dict.ast) - (deps (:inputs js_dict.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_dict.d) - (deps (:inputs js_dict.ast js_dict.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_dict.iast) - (deps (:inputs js_dict.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_dict.cmi js_dict.cmti) - (alias mel) - (deps (:inputs js_dict.iast) (include js_dict.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o js_dict.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_dict.cmj js_dict.cmt js_dict.mjs js_dict.js) - (alias mel) - (deps (:inputs js_dict.ast) js_dict.cmi (include js_dict.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_dict.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_json.ast) - (deps (:inputs js_json.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_json.d) - (deps (:inputs js_json.ast js_json.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_json.iast) - (deps (:inputs js_json.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_json.cmi js_json.cmti) - (alias mel) - (deps (:inputs js_json.iast) (include js_json.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o js_json.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_json.cmj js_json.cmt js_json.mjs js_json.js) - (alias mel) - (deps (:inputs js_json.ast) js_json.cmi (include js_json.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_json.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_list.ast) - (deps (:inputs js_list.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_list.d) - (deps (:inputs js_list.ast js_list.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_list.iast) - (deps (:inputs js_list.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_list.cmi js_list.cmti) - (alias mel) - (deps (:inputs js_list.iast) (include js_list.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o js_list.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_list.cmj js_list.cmt js_list.mjs js_list.js) - (alias mel) - (deps (:inputs js_list.ast) js_list.cmi (include js_list.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_list.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_math.ast) - (deps (:inputs js_math.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_math.d) - (deps (:inputs js_math.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_math.cmj js_math.cmi js_math.cmt js_math.mjs js_math.js) - (alias mel) - (deps (:inputs js_math.ast) (include js_math.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_math.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_null.ast) - (deps (:inputs js_null.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_null.d) - (deps (:inputs js_null.ast js_null.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_null.iast) - (deps (:inputs js_null.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_null.cmi js_null.cmti) - (alias mel) - (deps (:inputs js_null.iast) (include js_null.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o js_null.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_null.cmj js_null.cmt js_null.mjs js_null.js) - (alias mel) - (deps (:inputs js_null.ast) js_null.cmi (include js_null.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_null.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_fs.ast) - (deps (:inputs node_fs.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_fs.d) - (deps (:inputs node_fs.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_fs.cmj node_fs.cmi node_fs.cmt node_fs.mjs node_fs.js) - (alias mel) - (deps (:inputs node_fs.ast) (include node_fs.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o node_fs.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Int.ast) - (deps (:inputs belt_Int.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Int.d) - (deps (:inputs belt_Int.ast belt_Int.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Int.iast) - (deps (:inputs belt_Int.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Int.cmi belt_Int.cmti) - (alias mel) - (deps (:inputs belt_Int.iast) (include belt_Int.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_Int.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Int.cmj belt_Int.cmt belt_Int.mjs belt_Int.js) - (alias mel) - (deps (:inputs belt_Int.ast) belt_Int.cmi (include belt_Int.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_Int.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Map.ast) - (deps (:inputs belt_Map.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Map.d) - (deps (:inputs belt_Map.ast belt_Map.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Map.iast) - (deps (:inputs belt_Map.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Map.cmi belt_Map.cmti) - (alias mel) - (deps (:inputs belt_Map.iast) (include belt_Map.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_Map.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Map.cmj belt_Map.cmt belt_Map.mjs belt_Map.js) - (alias mel) - (deps (:inputs belt_Map.ast) belt_Map.cmi (include belt_Map.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_Map.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Set.ast) - (deps (:inputs belt_Set.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Set.d) - (deps (:inputs belt_Set.ast belt_Set.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Set.iast) - (deps (:inputs belt_Set.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Set.cmi belt_Set.cmti) - (alias mel) - (deps (:inputs belt_Set.iast) (include belt_Set.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_Set.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Set.cmj belt_Set.cmt belt_Set.mjs belt_Set.js) - (alias mel) - (deps (:inputs belt_Set.ast) belt_Set.cmi (include belt_Set.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_Set.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_array.ast) - (deps (:inputs js_array.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_array.d) - (deps (:inputs js_array.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_array.cmj js_array.cmi js_array.cmt js_array.mjs js_array.js) - (alias mel) - (deps (:inputs js_array.ast) (include js_array.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_array.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_float.ast) - (deps (:inputs js_float.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_float.d) - (deps (:inputs js_float.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_float.cmj js_float.cmi js_float.cmt js_float.mjs js_float.js) - (alias mel) - (deps (:inputs js_float.ast) (include js_float.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_float.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_types.ast) - (deps (:inputs js_types.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_types.d) - (deps (:inputs js_types.ast js_types.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_types.iast) - (deps (:inputs js_types.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_types.cmi js_types.cmti) - (alias mel) - (deps (:inputs js_types.iast) (include js_types.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o js_types.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_types.cmj js_types.cmt js_types.mjs js_types.js) - (alias mel) - (deps (:inputs js_types.ast) js_types.cmi (include js_types.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_types.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_List.ast) - (deps (:inputs belt_List.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_List.d) - (deps (:inputs belt_List.ast belt_List.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_List.iast) - (deps (:inputs belt_List.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_List.cmi belt_List.cmti) - (alias mel) - (deps (:inputs belt_List.iast) (include belt_List.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_List.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_List.cmj belt_List.cmt belt_List.mjs belt_List.js) - (alias mel) - (deps (:inputs belt_List.ast) belt_List.cmi (include belt_List.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_List.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_array2.ast) - (deps (:inputs js_array2.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_array2.d) - (deps (:inputs js_array2.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_array2.cmj js_array2.cmi js_array2.cmt js_array2.mjs js_array2.js) - (alias mel) - (deps (:inputs js_array2.ast) (include js_array2.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_array2.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_global.ast) - (deps (:inputs js_global.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_global.d) - (deps (:inputs js_global.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_global.cmj js_global.cmi js_global.cmt js_global.mjs js_global.js) - (alias mel) - (deps (:inputs js_global.ast) (include js_global.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_global.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_option.ast) - (deps (:inputs js_option.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_option.d) - (deps (:inputs js_option.ast js_option.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_option.iast) - (deps (:inputs js_option.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_option.cmi js_option.cmti) - (alias mel) - (deps (:inputs js_option.iast) (include js_option.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o js_option.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_option.cmj js_option.cmt js_option.mjs js_option.js) - (alias mel) - (deps (:inputs js_option.ast) js_option.cmi (include js_option.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_option.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_result.ast) - (deps (:inputs js_result.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_result.d) - (deps (:inputs js_result.ast js_result.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_result.iast) - (deps (:inputs js_result.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_result.cmi js_result.cmti) - (alias mel) - (deps (:inputs js_result.iast) (include js_result.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o js_result.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_result.cmj js_result.cmt js_result.mjs js_result.js) - (alias mel) - (deps (:inputs js_result.ast) js_result.cmi (include js_result.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_result.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_string.ast) - (deps (:inputs js_string.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_string.d) - (deps (:inputs js_string.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_string.cmj js_string.cmi js_string.cmt js_string.mjs js_string.js) - (alias mel) - (deps (:inputs js_string.ast) (include js_string.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_string.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_vector.ast) - (deps (:inputs js_vector.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_vector.d) - (deps (:inputs js_vector.ast js_vector.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_vector.iast) - (deps (:inputs js_vector.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_vector.cmi js_vector.cmti) - (alias mel) - (deps (:inputs js_vector.iast) (include js_vector.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o js_vector.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_vector.cmj js_vector.cmt js_vector.mjs js_vector.js) - (alias mel) - (deps (:inputs js_vector.ast) js_vector.cmi (include js_vector.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_vector.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_path.ast) - (deps (:inputs node_path.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_path.d) - (deps (:inputs node_path.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_path.cmj node_path.cmi node_path.cmt node_path.mjs node_path.js) - (alias mel) - (deps (:inputs node_path.ast) (include node_path.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o node_path.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Array.ast) - (deps (:inputs belt_Array.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Array.d) - (deps (:inputs belt_Array.ast belt_Array.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Array.iast) - (deps (:inputs belt_Array.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Array.cmi belt_Array.cmti) - (alias mel) - (deps (:inputs belt_Array.iast) (include belt_Array.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_Array.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Array.cmj belt_Array.cmt belt_Array.mjs belt_Array.js) - (alias mel) - (deps (:inputs belt_Array.ast) belt_Array.cmi (include belt_Array.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_Array.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Float.ast) - (deps (:inputs belt_Float.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Float.d) - (deps (:inputs belt_Float.ast belt_Float.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Float.iast) - (deps (:inputs belt_Float.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Float.cmi belt_Float.cmti) - (alias mel) - (deps (:inputs belt_Float.iast) (include belt_Float.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_Float.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Float.cmj belt_Float.cmt belt_Float.mjs belt_Float.js) - (alias mel) - (deps (:inputs belt_Float.ast) belt_Float.cmi (include belt_Float.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_Float.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Range.ast) - (deps (:inputs belt_Range.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Range.d) - (deps (:inputs belt_Range.ast belt_Range.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Range.iast) - (deps (:inputs belt_Range.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Range.cmi belt_Range.cmti) - (alias mel) - (deps (:inputs belt_Range.iast) (include belt_Range.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_Range.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Range.cmj belt_Range.cmt belt_Range.mjs belt_Range.js) - (alias mel) - (deps (:inputs belt_Range.ast) belt_Range.cmi (include belt_Range.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_Range.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_console.ast) - (deps (:inputs js_console.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_console.d) - (deps (:inputs js_console.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_console.cmj js_console.cmi js_console.cmt js_console.mjs js_console.js) - (alias mel) - (deps (:inputs js_console.ast) (include js_console.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_console.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_promise.ast) - (deps (:inputs js_promise.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_promise.d) - (deps (:inputs js_promise.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_promise.cmj js_promise.cmi js_promise.cmt js_promise.mjs js_promise.js) - (alias mel) - (deps (:inputs js_promise.ast) (include js_promise.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_promise.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_string2.ast) - (deps (:inputs js_string2.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_string2.d) - (deps (:inputs js_string2.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_string2.cmj js_string2.cmi js_string2.cmt js_string2.mjs js_string2.js) - (alias mel) - (deps (:inputs js_string2.ast) (include js_string2.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_string2.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapInt.ast) - (deps (:inputs belt_MapInt.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapInt.d) - (deps (:inputs belt_MapInt.ast belt_MapInt.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapInt.iast) - (deps (:inputs belt_MapInt.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapInt.cmi belt_MapInt.cmti) - (alias mel) - (deps (:inputs belt_MapInt.iast) (include belt_MapInt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_MapInt.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapInt.cmj belt_MapInt.cmt belt_MapInt.mjs belt_MapInt.js) - (alias mel) - (deps (:inputs belt_MapInt.ast) belt_MapInt.cmi (include belt_MapInt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_MapInt.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Option.ast) - (deps (:inputs belt_Option.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Option.d) - (deps (:inputs belt_Option.ast belt_Option.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Option.iast) - (deps (:inputs belt_Option.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Option.cmi belt_Option.cmti) - (alias mel) - (deps (:inputs belt_Option.iast) (include belt_Option.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_Option.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Option.cmj belt_Option.cmt belt_Option.mjs belt_Option.js) - (alias mel) - (deps (:inputs belt_Option.ast) belt_Option.cmi (include belt_Option.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_Option.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Result.ast) - (deps (:inputs belt_Result.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Result.d) - (deps (:inputs belt_Result.ast belt_Result.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Result.iast) - (deps (:inputs belt_Result.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Result.cmi belt_Result.cmti) - (alias mel) - (deps (:inputs belt_Result.iast) (include belt_Result.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_Result.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_Result.cmj belt_Result.cmt belt_Result.mjs belt_Result.js) - (alias mel) - (deps (:inputs belt_Result.ast) belt_Result.cmi (include belt_Result.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_Result.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetInt.ast) - (deps (:inputs belt_SetInt.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetInt.d) - (deps (:inputs belt_SetInt.ast belt_SetInt.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetInt.iast) - (deps (:inputs belt_SetInt.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetInt.cmi belt_SetInt.cmti) - (alias mel) - (deps (:inputs belt_SetInt.iast) (include belt_SetInt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_SetInt.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetInt.cmj belt_SetInt.cmt belt_SetInt.mjs belt_SetInt.js) - (alias mel) - (deps (:inputs belt_SetInt.ast) belt_SetInt.cmi (include belt_SetInt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_SetInt.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets dom_storage.ast) - (deps (:inputs dom_storage.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets dom_storage.d) - (deps (:inputs dom_storage.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets dom_storage.cmj dom_storage.cmi dom_storage.cmt dom_storage.mjs dom_storage.js) - (alias mel) - (deps (:inputs dom_storage.ast) (include dom_storage.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o dom_storage.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_mapperRt.ast) - (deps (:inputs js_mapperRt.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_mapperRt.d) - (deps (:inputs js_mapperRt.ast js_mapperRt.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_mapperRt.iast) - (deps (:inputs js_mapperRt.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_mapperRt.cmi js_mapperRt.cmti) - (alias mel) - (deps (:inputs js_mapperRt.iast) (include js_mapperRt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o js_mapperRt.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_mapperRt.cmj js_mapperRt.cmt js_mapperRt.mjs js_mapperRt.js) - (alias mel) - (deps (:inputs js_mapperRt.ast) js_mapperRt.cmi (include js_mapperRt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_mapperRt.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_buffer.ast) - (deps (:inputs node_buffer.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_buffer.d) - (deps (:inputs node_buffer.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_buffer.cmj node_buffer.cmi node_buffer.cmt node_buffer.mjs node_buffer.js) - (alias mel) - (deps (:inputs node_buffer.ast) (include node_buffer.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o node_buffer.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_module.ast) - (deps (:inputs node_module.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_module.d) - (deps (:inputs node_module.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_module.cmj node_module.cmi node_module.cmt node_module.mjs node_module.js) - (alias mel) - (deps (:inputs node_module.ast) (include node_module.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o node_module.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMap.ast) - (deps (:inputs belt_HashMap.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMap.d) - (deps (:inputs belt_HashMap.ast belt_HashMap.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMap.iast) - (deps (:inputs belt_HashMap.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMap.cmi belt_HashMap.cmti) - (alias mel) - (deps (:inputs belt_HashMap.iast) (include belt_HashMap.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_HashMap.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMap.cmj belt_HashMap.cmt belt_HashMap.mjs belt_HashMap.js) - (alias mel) - (deps (:inputs belt_HashMap.ast) belt_HashMap.cmi (include belt_HashMap.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_HashMap.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSet.ast) - (deps (:inputs belt_HashSet.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSet.d) - (deps (:inputs belt_HashSet.ast belt_HashSet.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSet.iast) - (deps (:inputs belt_HashSet.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSet.cmi belt_HashSet.cmti) - (alias mel) - (deps (:inputs belt_HashSet.iast) (include belt_HashSet.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_HashSet.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSet.cmj belt_HashSet.cmt belt_HashSet.mjs belt_HashSet.js) - (alias mel) - (deps (:inputs belt_HashSet.ast) belt_HashSet.cmi (include belt_HashSet.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_HashSet.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapDict.ast) - (deps (:inputs belt_MapDict.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapDict.d) - (deps (:inputs belt_MapDict.ast belt_MapDict.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapDict.iast) - (deps (:inputs belt_MapDict.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapDict.cmi belt_MapDict.cmti) - (alias mel) - (deps (:inputs belt_MapDict.iast) (include belt_MapDict.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_MapDict.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapDict.cmj belt_MapDict.cmt belt_MapDict.mjs belt_MapDict.js) - (alias mel) - (deps (:inputs belt_MapDict.ast) belt_MapDict.cmi (include belt_MapDict.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_MapDict.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetDict.ast) - (deps (:inputs belt_SetDict.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetDict.d) - (deps (:inputs belt_SetDict.ast belt_SetDict.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetDict.iast) - (deps (:inputs belt_SetDict.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetDict.cmi belt_SetDict.cmti) - (alias mel) - (deps (:inputs belt_SetDict.iast) (include belt_SetDict.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_SetDict.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetDict.cmj belt_SetDict.cmt belt_SetDict.mjs belt_SetDict.js) - (alias mel) - (deps (:inputs belt_SetDict.ast) belt_SetDict.cmi (include belt_SetDict.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_SetDict.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets dom_storage2.ast) - (deps (:inputs dom_storage2.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets dom_storage2.d) - (deps (:inputs dom_storage2.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets dom_storage2.cmj dom_storage2.cmi dom_storage2.cmt dom_storage2.mjs dom_storage2.js) - (alias mel) - (deps (:inputs dom_storage2.ast) (include dom_storage2.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o dom_storage2.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_undefined.ast) - (deps (:inputs js_undefined.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_undefined.d) - (deps (:inputs js_undefined.ast js_undefined.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_undefined.iast) - (deps (:inputs js_undefined.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_undefined.cmi js_undefined.cmti) - (alias mel) - (deps (:inputs js_undefined.iast) (include js_undefined.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o js_undefined.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_undefined.cmj js_undefined.cmt js_undefined.mjs js_undefined.js) - (alias mel) - (deps (:inputs js_undefined.ast) js_undefined.cmi (include js_undefined.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_undefined.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_process.ast) - (deps (:inputs node_process.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_process.d) - (deps (:inputs node_process.ast node_process.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_process.iast) - (deps (:inputs node_process.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_process.cmi node_process.cmti) - (alias mel) - (deps (:inputs node_process.iast) (include node_process.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o node_process.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_process.cmj node_process.cmt node_process.mjs node_process.js) - (alias mel) - (deps (:inputs node_process.ast) node_process.cmi (include node_process.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o node_process.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapString.ast) - (deps (:inputs belt_MapString.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapString.d) - (deps (:inputs belt_MapString.ast belt_MapString.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapString.iast) - (deps (:inputs belt_MapString.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapString.cmi belt_MapString.cmti) - (alias mel) - (deps (:inputs belt_MapString.iast) (include belt_MapString.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_MapString.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MapString.cmj belt_MapString.cmt belt_MapString.mjs belt_MapString.js) - (alias mel) - (deps (:inputs belt_MapString.ast) belt_MapString.cmi (include belt_MapString.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_MapString.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetString.ast) - (deps (:inputs belt_SetString.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetString.d) - (deps (:inputs belt_SetString.ast belt_SetString.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetString.iast) - (deps (:inputs belt_SetString.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetString.cmi belt_SetString.cmti) - (alias mel) - (deps (:inputs belt_SetString.iast) (include belt_SetString.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_SetString.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SetString.cmj belt_SetString.cmt belt_SetString.mjs belt_SetString.js) - (alias mel) - (deps (:inputs belt_SetString.ast) belt_SetString.cmi (include belt_SetString.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_SetString.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArray.ast) - (deps (:inputs belt_SortArray.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArray.d) - (deps (:inputs belt_SortArray.ast belt_SortArray.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArray.iast) - (deps (:inputs belt_SortArray.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArray.cmi belt_SortArray.cmti) - (alias mel) - (deps (:inputs belt_SortArray.iast) (include belt_SortArray.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_SortArray.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArray.cmj belt_SortArray.cmt belt_SortArray.mjs belt_SortArray.js) - (alias mel) - (deps (:inputs belt_SortArray.ast) belt_SortArray.cmi (include belt_SortArray.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_SortArray.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_typed_array.ast) - (deps (:inputs js_typed_array.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_typed_array.d) - (deps (:inputs js_typed_array.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_typed_array.cmj js_typed_array.cmi js_typed_array.cmt js_typed_array.mjs js_typed_array.js) - (alias mel) - (deps (:inputs js_typed_array.ast) (include js_typed_array.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_typed_array.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMapInt.ast) - (deps (:inputs belt_HashMapInt.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMapInt.d) - (deps (:inputs belt_HashMapInt.ast belt_HashMapInt.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMapInt.iast) - (deps (:inputs belt_HashMapInt.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMapInt.cmi belt_HashMapInt.cmti) - (alias mel) - (deps (:inputs belt_HashMapInt.iast) (include belt_HashMapInt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_HashMapInt.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMapInt.cmj belt_HashMapInt.cmt belt_HashMapInt.mjs belt_HashMapInt.js) - (alias mel) - (deps (:inputs belt_HashMapInt.ast) belt_HashMapInt.cmi (include belt_HashMapInt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_HashMapInt.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSetInt.ast) - (deps (:inputs belt_HashSetInt.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSetInt.d) - (deps (:inputs belt_HashSetInt.ast belt_HashSetInt.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSetInt.iast) - (deps (:inputs belt_HashSetInt.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSetInt.cmi belt_HashSetInt.cmti) - (alias mel) - (deps (:inputs belt_HashSetInt.iast) (include belt_HashSetInt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_HashSetInt.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSetInt.cmj belt_HashSetInt.cmt belt_HashSetInt.mjs belt_HashSetInt.js) - (alias mel) - (deps (:inputs belt_HashSetInt.ast) belt_HashSetInt.cmi (include belt_HashSetInt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_HashSetInt.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMap.ast) - (deps (:inputs belt_MutableMap.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMap.d) - (deps (:inputs belt_MutableMap.ast belt_MutableMap.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMap.iast) - (deps (:inputs belt_MutableMap.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMap.cmi belt_MutableMap.cmti) - (alias mel) - (deps (:inputs belt_MutableMap.iast) (include belt_MutableMap.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_MutableMap.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMap.cmj belt_MutableMap.cmt belt_MutableMap.mjs belt_MutableMap.js) - (alias mel) - (deps (:inputs belt_MutableMap.ast) belt_MutableMap.cmi (include belt_MutableMap.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_MutableMap.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSet.ast) - (deps (:inputs belt_MutableSet.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSet.d) - (deps (:inputs belt_MutableSet.ast belt_MutableSet.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSet.iast) - (deps (:inputs belt_MutableSet.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSet.cmi belt_MutableSet.cmti) - (alias mel) - (deps (:inputs belt_MutableSet.iast) (include belt_MutableSet.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_MutableSet.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSet.cmj belt_MutableSet.cmt belt_MutableSet.mjs belt_MutableSet.js) - (alias mel) - (deps (:inputs belt_MutableSet.ast) belt_MutableSet.cmi (include belt_MutableSet.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_MutableSet.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_typed_array2.ast) - (deps (:inputs js_typed_array2.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_typed_array2.d) - (deps (:inputs js_typed_array2.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_typed_array2.cmj js_typed_array2.cmi js_typed_array2.cmt js_typed_array2.mjs js_typed_array2.js) - (alias mel) - (deps (:inputs js_typed_array2.ast) (include js_typed_array2.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_typed_array2.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node__no_aliases.ast) - (deps (:inputs node__no_aliases.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node__no_aliases.d) - (deps (:inputs node__no_aliases.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node__no_aliases.cmj node__no_aliases.cmi node__no_aliases.cmt node__no_aliases.mjs node__no_aliases.js) - (alias mel) - (deps (:inputs node__no_aliases.ast) (include node__no_aliases.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o node__no_aliases.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableQueue.ast) - (deps (:inputs belt_MutableQueue.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableQueue.d) - (deps (:inputs belt_MutableQueue.ast belt_MutableQueue.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableQueue.iast) - (deps (:inputs belt_MutableQueue.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableQueue.cmi belt_MutableQueue.cmti) - (alias mel) - (deps (:inputs belt_MutableQueue.iast) (include belt_MutableQueue.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_MutableQueue.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableQueue.cmj belt_MutableQueue.cmt belt_MutableQueue.mjs belt_MutableQueue.js) - (alias mel) - (deps (:inputs belt_MutableQueue.ast) belt_MutableQueue.cmi (include belt_MutableQueue.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_MutableQueue.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableStack.ast) - (deps (:inputs belt_MutableStack.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableStack.d) - (deps (:inputs belt_MutableStack.ast belt_MutableStack.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableStack.iast) - (deps (:inputs belt_MutableStack.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableStack.cmi belt_MutableStack.cmti) - (alias mel) - (deps (:inputs belt_MutableStack.iast) (include belt_MutableStack.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_MutableStack.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableStack.cmj belt_MutableStack.cmt belt_MutableStack.mjs belt_MutableStack.js) - (alias mel) - (deps (:inputs belt_MutableStack.ast) belt_MutableStack.cmi (include belt_MutableStack.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_MutableStack.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArrayInt.ast) - (deps (:inputs belt_SortArrayInt.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArrayInt.d) - (deps (:inputs belt_SortArrayInt.ast belt_SortArrayInt.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArrayInt.iast) - (deps (:inputs belt_SortArrayInt.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArrayInt.cmi belt_SortArrayInt.cmti) - (alias mel) - (deps (:inputs belt_SortArrayInt.iast) (include belt_SortArrayInt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_SortArrayInt.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArrayInt.cmj belt_SortArrayInt.cmt belt_SortArrayInt.mjs belt_SortArrayInt.js) - (alias mel) - (deps (:inputs belt_SortArrayInt.ast) belt_SortArrayInt.cmi (include belt_SortArrayInt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_SortArrayInt.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_null_undefined.ast) - (deps (:inputs js_null_undefined.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_null_undefined.d) - (deps (:inputs js_null_undefined.ast js_null_undefined.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_null_undefined.iast) - (deps (:inputs js_null_undefined.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_null_undefined.cmi js_null_undefined.cmti) - (alias mel) - (deps (:inputs js_null_undefined.iast) (include js_null_undefined.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o js_null_undefined.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets js_null_undefined.cmj js_null_undefined.cmt js_null_undefined.mjs js_null_undefined.js) - (alias mel) - (deps (:inputs js_null_undefined.ast) js_null_undefined.cmi (include js_null_undefined.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o js_null_undefined.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMapString.ast) - (deps (:inputs belt_HashMapString.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMapString.d) - (deps (:inputs belt_HashMapString.ast belt_HashMapString.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMapString.iast) - (deps (:inputs belt_HashMapString.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMapString.cmi belt_HashMapString.cmti) - (alias mel) - (deps (:inputs belt_HashMapString.iast) (include belt_HashMapString.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_HashMapString.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashMapString.cmj belt_HashMapString.cmt belt_HashMapString.mjs belt_HashMapString.js) - (alias mel) - (deps (:inputs belt_HashMapString.ast) belt_HashMapString.cmi (include belt_HashMapString.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_HashMapString.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSetString.ast) - (deps (:inputs belt_HashSetString.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSetString.d) - (deps (:inputs belt_HashSetString.ast belt_HashSetString.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSetString.iast) - (deps (:inputs belt_HashSetString.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSetString.cmi belt_HashSetString.cmti) - (alias mel) - (deps (:inputs belt_HashSetString.iast) (include belt_HashSetString.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_HashSetString.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_HashSetString.cmj belt_HashSetString.cmt belt_HashSetString.mjs belt_HashSetString.js) - (alias mel) - (deps (:inputs belt_HashSetString.ast) belt_HashSetString.cmi (include belt_HashSetString.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_HashSetString.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMapInt.ast) - (deps (:inputs belt_MutableMapInt.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMapInt.d) - (deps (:inputs belt_MutableMapInt.ast belt_MutableMapInt.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMapInt.iast) - (deps (:inputs belt_MutableMapInt.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMapInt.cmi belt_MutableMapInt.cmti) - (alias mel) - (deps (:inputs belt_MutableMapInt.iast) (include belt_MutableMapInt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_MutableMapInt.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMapInt.cmj belt_MutableMapInt.cmt belt_MutableMapInt.mjs belt_MutableMapInt.js) - (alias mel) - (deps (:inputs belt_MutableMapInt.ast) belt_MutableMapInt.cmi (include belt_MutableMapInt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_MutableMapInt.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSetInt.ast) - (deps (:inputs belt_MutableSetInt.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSetInt.d) - (deps (:inputs belt_MutableSetInt.ast belt_MutableSetInt.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSetInt.iast) - (deps (:inputs belt_MutableSetInt.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSetInt.cmi belt_MutableSetInt.cmti) - (alias mel) - (deps (:inputs belt_MutableSetInt.iast) (include belt_MutableSetInt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_MutableSetInt.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSetInt.cmj belt_MutableSetInt.cmt belt_MutableSetInt.mjs belt_MutableSetInt.js) - (alias mel) - (deps (:inputs belt_MutableSetInt.ast) belt_MutableSetInt.cmi (include belt_MutableSetInt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_MutableSetInt.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_child_process.ast) - (deps (:inputs node_child_process.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_child_process.d) - (deps (:inputs node_child_process.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets node_child_process.cmj node_child_process.cmi node_child_process.cmt node_child_process.mjs node_child_process.js) - (alias mel) - (deps (:inputs node_child_process.ast) (include node_child_process.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o node_child_process.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalAVLset.ast) - (deps (:inputs belt_internalAVLset.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalAVLset.d) - (deps (:inputs belt_internalAVLset.ast belt_internalAVLset.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalAVLset.iast) - (deps (:inputs belt_internalAVLset.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalAVLset.cmi belt_internalAVLset.cmti) - (alias mel) - (deps (:inputs belt_internalAVLset.iast) (include belt_internalAVLset.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_internalAVLset.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalAVLset.cmj belt_internalAVLset.cmt belt_internalAVLset.mjs belt_internalAVLset.js) - (alias mel) - (deps (:inputs belt_internalAVLset.ast) belt_internalAVLset.cmi (include belt_internalAVLset.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_internalAVLset.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalMapInt.ast) - (deps (:inputs belt_internalMapInt.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalMapInt.d) - (deps (:inputs belt_internalMapInt.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalMapInt.cmj belt_internalMapInt.cmi belt_internalMapInt.cmt belt_internalMapInt.mjs belt_internalMapInt.js) - (alias mel) - (deps (:inputs belt_internalMapInt.ast) (include belt_internalMapInt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_internalMapInt.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalSetInt.ast) - (deps (:inputs belt_internalSetInt.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalSetInt.d) - (deps (:inputs belt_internalSetInt.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalSetInt.cmj belt_internalSetInt.cmi belt_internalSetInt.cmt belt_internalSetInt.mjs belt_internalSetInt.js) - (alias mel) - (deps (:inputs belt_internalSetInt.ast) (include belt_internalSetInt.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_internalSetInt.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArrayString.ast) - (deps (:inputs belt_SortArrayString.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArrayString.d) - (deps (:inputs belt_SortArrayString.ast belt_SortArrayString.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArrayString.iast) - (deps (:inputs belt_SortArrayString.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArrayString.cmi belt_SortArrayString.cmti) - (alias mel) - (deps (:inputs belt_SortArrayString.iast) (include belt_SortArrayString.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_SortArrayString.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_SortArrayString.cmj belt_SortArrayString.cmt belt_SortArrayString.mjs belt_SortArrayString.js) - (alias mel) - (deps (:inputs belt_SortArrayString.ast) belt_SortArrayString.cmi (include belt_SortArrayString.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_SortArrayString.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalAVLtree.ast) - (deps (:inputs belt_internalAVLtree.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalAVLtree.d) - (deps (:inputs belt_internalAVLtree.ast belt_internalAVLtree.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalAVLtree.iast) - (deps (:inputs belt_internalAVLtree.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalAVLtree.cmi belt_internalAVLtree.cmti) - (alias mel) - (deps (:inputs belt_internalAVLtree.iast) (include belt_internalAVLtree.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_internalAVLtree.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalAVLtree.cmj belt_internalAVLtree.cmt belt_internalAVLtree.mjs belt_internalAVLtree.js) - (alias mel) - (deps (:inputs belt_internalAVLtree.ast) belt_internalAVLtree.cmi (include belt_internalAVLtree.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_internalAVLtree.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalBuckets.ast) - (deps (:inputs belt_internalBuckets.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalBuckets.d) - (deps (:inputs belt_internalBuckets.ast belt_internalBuckets.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalBuckets.iast) - (deps (:inputs belt_internalBuckets.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalBuckets.cmi belt_internalBuckets.cmti) - (alias mel) - (deps (:inputs belt_internalBuckets.iast) (include belt_internalBuckets.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_internalBuckets.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalBuckets.cmj belt_internalBuckets.cmt belt_internalBuckets.mjs belt_internalBuckets.js) - (alias mel) - (deps (:inputs belt_internalBuckets.ast) belt_internalBuckets.cmi (include belt_internalBuckets.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_internalBuckets.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMapString.ast) - (deps (:inputs belt_MutableMapString.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMapString.d) - (deps (:inputs belt_MutableMapString.ast belt_MutableMapString.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMapString.iast) - (deps (:inputs belt_MutableMapString.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMapString.cmi belt_MutableMapString.cmti) - (alias mel) - (deps (:inputs belt_MutableMapString.iast) (include belt_MutableMapString.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_MutableMapString.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableMapString.cmj belt_MutableMapString.cmt belt_MutableMapString.mjs belt_MutableMapString.js) - (alias mel) - (deps (:inputs belt_MutableMapString.ast) belt_MutableMapString.cmi (include belt_MutableMapString.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_MutableMapString.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSetString.ast) - (deps (:inputs belt_MutableSetString.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSetString.d) - (deps (:inputs belt_MutableSetString.ast belt_MutableSetString.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSetString.iast) - (deps (:inputs belt_MutableSetString.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSetString.cmi belt_MutableSetString.cmti) - (alias mel) - (deps (:inputs belt_MutableSetString.iast) (include belt_MutableSetString.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_MutableSetString.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_MutableSetString.cmj belt_MutableSetString.cmt belt_MutableSetString.mjs belt_MutableSetString.js) - (alias mel) - (deps (:inputs belt_MutableSetString.ast) belt_MutableSetString.cmi (include belt_MutableSetString.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_MutableSetString.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalMapString.ast) - (deps (:inputs belt_internalMapString.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalMapString.d) - (deps (:inputs belt_internalMapString.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalMapString.cmj belt_internalMapString.cmi belt_internalMapString.cmt belt_internalMapString.mjs belt_internalMapString.js) - (alias mel) - (deps (:inputs belt_internalMapString.ast) (include belt_internalMapString.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_internalMapString.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalSetString.ast) - (deps (:inputs belt_internalSetString.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalSetString.d) - (deps (:inputs belt_internalSetString.ast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalSetString.cmj belt_internalSetString.cmi belt_internalSetString.cmt belt_internalSetString.mjs belt_internalSetString.js) - (alias mel) - (deps (:inputs belt_internalSetString.ast) (include belt_internalSetString.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_internalSetString.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalSetBuckets.ast) - (deps (:inputs belt_internalSetBuckets.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalSetBuckets.d) - (deps (:inputs belt_internalSetBuckets.ast belt_internalSetBuckets.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalSetBuckets.iast) - (deps (:inputs belt_internalSetBuckets.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalSetBuckets.cmi belt_internalSetBuckets.cmti) - (alias mel) - (deps (:inputs belt_internalSetBuckets.iast) (include belt_internalSetBuckets.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_internalSetBuckets.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalSetBuckets.cmj belt_internalSetBuckets.cmt belt_internalSetBuckets.mjs belt_internalSetBuckets.js) - (alias mel) - (deps (:inputs belt_internalSetBuckets.ast) belt_internalSetBuckets.cmi (include belt_internalSetBuckets.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_internalSetBuckets.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalBucketsType.ast) - (deps (:inputs belt_internalBucketsType.ml) ../../.melange.eobjs/jscomp/others/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalBucketsType.d) - (deps (:inputs belt_internalBucketsType.ast belt_internalBucketsType.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-others -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalBucketsType.iast) - (deps (:inputs belt_internalBucketsType.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalBucketsType.cmi belt_internalBucketsType.cmti) - (alias mel) - (deps (:inputs belt_internalBucketsType.iast) (include belt_internalBucketsType.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -o belt_internalBucketsType.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets belt_internalBucketsType.cmj belt_internalBucketsType.cmt belt_internalBucketsType.mjs belt_internalBucketsType.js) - (alias mel) - (deps (:inputs belt_internalBucketsType.ast) belt_internalBucketsType.cmi (include belt_internalBucketsType.d) bsconfig.json(alias ../runtime/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -bs-cross-module-opt -nopervasives -unsafe -open Bs_stdlib_mini -w a -bs-package-name @melange/runtime-others -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o belt_internalBucketsType.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - -(alias (name mel)(deps belt_internalBucketsType.mjs belt_internalBucketsType.js belt_internalSetBuckets.mjs belt_internalSetBuckets.js belt_internalSetString.mjs belt_internalSetString.js belt_internalMapString.mjs belt_internalMapString.js belt_MutableSetString.mjs belt_MutableSetString.js belt_MutableMapString.mjs belt_MutableMapString.js belt_internalBuckets.mjs belt_internalBuckets.js belt_internalAVLtree.mjs belt_internalAVLtree.js belt_SortArrayString.mjs belt_SortArrayString.js belt_internalSetInt.mjs belt_internalSetInt.js belt_internalMapInt.mjs belt_internalMapInt.js belt_internalAVLset.mjs belt_internalAVLset.js node_child_process.mjs node_child_process.js belt_MutableSetInt.mjs belt_MutableSetInt.js belt_MutableMapInt.mjs belt_MutableMapInt.js belt_HashSetString.mjs belt_HashSetString.js belt_HashMapString.mjs belt_HashMapString.js js_null_undefined.mjs js_null_undefined.js belt_SortArrayInt.mjs belt_SortArrayInt.js belt_MutableStack.mjs belt_MutableStack.js belt_MutableQueue.mjs belt_MutableQueue.js node__no_aliases.mjs node__no_aliases.js js_typed_array2.mjs js_typed_array2.js belt_MutableSet.mjs belt_MutableSet.js belt_MutableMap.mjs belt_MutableMap.js belt_HashSetInt.mjs belt_HashSetInt.js belt_HashMapInt.mjs belt_HashMapInt.js js_typed_array.mjs js_typed_array.js belt_SortArray.mjs belt_SortArray.js belt_SetString.mjs belt_SetString.js belt_MapString.mjs belt_MapString.js node_process.mjs node_process.js js_undefined.mjs js_undefined.js dom_storage2.mjs dom_storage2.js belt_SetDict.mjs belt_SetDict.js belt_MapDict.mjs belt_MapDict.js belt_HashSet.mjs belt_HashSet.js belt_HashMap.mjs belt_HashMap.js node_module.mjs node_module.js node_buffer.mjs node_buffer.js js_mapperRt.mjs js_mapperRt.js dom_storage.mjs dom_storage.js belt_SetInt.mjs belt_SetInt.js belt_Result.mjs belt_Result.js belt_Option.mjs belt_Option.js belt_MapInt.mjs belt_MapInt.js js_string2.mjs js_string2.js js_promise.mjs js_promise.js js_console.mjs js_console.js belt_Range.mjs belt_Range.js belt_Float.mjs belt_Float.js belt_Array.mjs belt_Array.js node_path.mjs node_path.js js_vector.mjs js_vector.js js_string.mjs js_string.js js_result.mjs js_result.js js_option.mjs js_option.js js_global.mjs js_global.js js_array2.mjs js_array2.js belt_List.mjs belt_List.js js_types.mjs js_types.js js_float.mjs js_float.js js_array.mjs js_array.js belt_Set.mjs belt_Set.js belt_Map.mjs belt_Map.js belt_Int.mjs belt_Int.js node_fs.mjs node_fs.js js_null.mjs js_null.js js_math.mjs js_math.js js_list.mjs js_list.js js_json.mjs js_json.js js_dict.mjs js_dict.js js_date.mjs js_date.js js_cast.mjs js_cast.js belt_Id.mjs belt_Id.js js_obj.mjs js_obj.js js_int.mjs js_int.js js_exn.mjs js_exn.js js_re.mjs js_re.js js_OO.mjs js_OO.js node.mjs node.js belt.mjs belt.js dom.mjs dom.js) -(enabled_if %{bin-available:melc}))) - -(subdir .melange.eobjs/jscomp/others -(rule (write-file .bsbuild ODMKRG9tCkJlbHQKTm9kZQpKc19PTwpKc19yZQpKc19leG4KSnNfaW50CkpzX29iagpCZWx0X0lkCkpzX2Nhc3QKSnNfZGF0ZQpKc19kaWN0CkpzX2pzb24KSnNfbGlzdApKc19tYXRoCkpzX251bGwKTm9kZV9mcwpCZWx0X0ludApCZWx0X01hcApCZWx0X1NldApKc19hcnJheQpKc19mbG9hdApKc190eXBlcwpCZWx0X0xpc3QKSnNfYXJyYXkyCkpzX2dsb2JhbApKc19vcHRpb24KSnNfcmVzdWx0CkpzX3N0cmluZwpKc192ZWN0b3IKTm9kZV9wYXRoCkJlbHRfQXJyYXkKQmVsdF9GbG9hdApCZWx0X1JhbmdlCkpzX2NvbnNvbGUKSnNfcHJvbWlzZQpKc19zdHJpbmcyCkJlbHRfTWFwSW50CkJlbHRfT3B0aW9uCkJlbHRfUmVzdWx0CkJlbHRfU2V0SW50CkRvbV9zdG9yYWdlCkpzX21hcHBlclJ0Ck5vZGVfYnVmZmVyCk5vZGVfbW9kdWxlCkJlbHRfSGFzaE1hcApCZWx0X0hhc2hTZXQKQmVsdF9NYXBEaWN0CkJlbHRfU2V0RGljdApEb21fc3RvcmFnZTIKSnNfdW5kZWZpbmVkCk5vZGVfcHJvY2VzcwpCZWx0X01hcFN0cmluZwpCZWx0X1NldFN0cmluZwpCZWx0X1NvcnRBcnJheQpKc190eXBlZF9hcnJheQpCZWx0X0hhc2hNYXBJbnQKQmVsdF9IYXNoU2V0SW50CkJlbHRfTXV0YWJsZU1hcApCZWx0X011dGFibGVTZXQKSnNfdHlwZWRfYXJyYXkyCk5vZGVfX25vX2FsaWFzZXMKQmVsdF9NdXRhYmxlUXVldWUKQmVsdF9NdXRhYmxlU3RhY2sKQmVsdF9Tb3J0QXJyYXlJbnQKSnNfbnVsbF91bmRlZmluZWQKQmVsdF9IYXNoTWFwU3RyaW5nCkJlbHRfSGFzaFNldFN0cmluZwpCZWx0X011dGFibGVNYXBJbnQKQmVsdF9NdXRhYmxlU2V0SW50Ck5vZGVfY2hpbGRfcHJvY2VzcwpCZWx0X2ludGVybmFsQVZMc2V0CkJlbHRfaW50ZXJuYWxNYXBJbnQKQmVsdF9pbnRlcm5hbFNldEludApCZWx0X1NvcnRBcnJheVN0cmluZwpCZWx0X2ludGVybmFsQVZMdHJlZQpCZWx0X2ludGVybmFsQnVja2V0cwpCZWx0X011dGFibGVNYXBTdHJpbmcKQmVsdF9NdXRhYmxlU2V0U3RyaW5nCkJlbHRfaW50ZXJuYWxNYXBTdHJpbmcKQmVsdF9pbnRlcm5hbFNldFN0cmluZwpCZWx0X2ludGVybmFsU2V0QnVja2V0cwpCZWx0X2ludGVybmFsQnVja2V0c1R5cGUKLgkKMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACjAK)) -) - -(subdir jscomp/stdlib-412 -(rule -(targets stdlib.ast) - (deps (:inputs stdlib.ml) ../../.melange.eobjs/jscomp/stdlib-412/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -nopervasives -bs-cross-module-opt -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stdlib.d) - (deps (:inputs stdlib.ast stdlib.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-stdlib -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stdlib.iast) - (deps (:inputs stdlib.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -nopervasives -bs-cross-module-opt -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stdlib.cmi stdlib.cmti) - (alias mel) - (deps (:inputs stdlib.iast) (include stdlib.d) bsconfig.json(alias ../runtime/mel)(alias ../others/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -I ../others -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -nopervasives -bs-cross-module-opt -w a -o stdlib.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stdlib.cmj stdlib.cmt stdlib.mjs stdlib.js) - (alias mel) - (deps (:inputs stdlib.ast) stdlib.cmi (include stdlib.d) bsconfig.json(alias ../runtime/mel)(alias ../others/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -I ../others -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -nopervasives -bs-cross-module-opt -w a -bs-package-name @melange/runtime-stdlib -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o stdlib.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalAtomic.ast) - (deps (:inputs camlinternalAtomic.ml) ../../.melange.eobjs/jscomp/stdlib-412/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -nopervasives -bs-cross-module-opt -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalAtomic.d) - (deps (:inputs camlinternalAtomic.ast camlinternalAtomic.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-stdlib -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalAtomic.iast) - (deps (:inputs camlinternalAtomic.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -nopervasives -bs-cross-module-opt -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalAtomic.cmi camlinternalAtomic.cmti) - (alias mel) - (deps (:inputs camlinternalAtomic.iast) (include camlinternalAtomic.d) bsconfig.json(alias ../runtime/mel)(alias ../others/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -I ../others -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -nopervasives -bs-cross-module-opt -w a -o camlinternalAtomic.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalAtomic.cmj camlinternalAtomic.cmt camlinternalAtomic.mjs camlinternalAtomic.js) - (alias mel) - (deps (:inputs camlinternalAtomic.ast) camlinternalAtomic.cmi (include camlinternalAtomic.d) bsconfig.json(alias ../runtime/mel)(alias ../others/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -I ../others -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -nopervasives -bs-cross-module-opt -w a -bs-package-name @melange/runtime-stdlib -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o camlinternalAtomic.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalFormatBasics.ast) - (deps (:inputs camlinternalFormatBasics.ml) ../../.melange.eobjs/jscomp/stdlib-412/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -nopervasives -bs-cross-module-opt -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalFormatBasics.d) - (deps (:inputs camlinternalFormatBasics.ast camlinternalFormatBasics.iast) ) -(action (run meldep -root-dir ../.. -p @melange/runtime-stdlib -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalFormatBasics.iast) - (deps (:inputs camlinternalFormatBasics.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -nopervasives -bs-cross-module-opt -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalFormatBasics.cmi camlinternalFormatBasics.cmti) - (alias mel) - (deps (:inputs camlinternalFormatBasics.iast) (include camlinternalFormatBasics.d) bsconfig.json(alias ../runtime/mel)(alias ../others/mel)) -(action - (run melc -bs-legacy -I . -I ../runtime -I ../others -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -nopervasives -bs-cross-module-opt -w a -o camlinternalFormatBasics.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalFormatBasics.cmj camlinternalFormatBasics.cmt camlinternalFormatBasics.mjs camlinternalFormatBasics.js) - (alias mel) - (deps (:inputs camlinternalFormatBasics.ast) camlinternalFormatBasics.cmi (include camlinternalFormatBasics.d) bsconfig.json(alias ../runtime/mel)(alias ../others/mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../runtime -I ../others -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -nostdlib -nopervasives -bs-cross-module-opt -w a -bs-package-name @melange/runtime-stdlib -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o camlinternalFormatBasics.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - -(alias (name mel)(deps camlinternalFormatBasics.mjs camlinternalFormatBasics.js camlinternalAtomic.mjs camlinternalAtomic.js stdlib.mjs stdlib.js) -(enabled_if %{bin-available:melc}))) - -(subdir .melange.eobjs/jscomp/stdlib-412 -(rule (write-file .bsbuild MwpTdGRsaWIKQ2FtbGludGVybmFsQXRvbWljCkNhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcwouCQoxAAAACjAK)) -) - -(subdir jscomp/stdlib-412/stdlib_modules -(rule -(targets gc.ast) - (deps (:inputs gc.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets gc.d) - (deps (:inputs gc.ast gc.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets gc.iast) - (deps (:inputs gc.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets gc.cmi gc.cmti) - (alias mel) - (deps (:inputs gc.iast) (include gc.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o gc.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets gc.cmj gc.cmt gc.mjs gc.js) - (alias mel) - (deps (:inputs gc.ast) gc.cmi (include gc.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o gc.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets oo.ast) - (deps (:inputs oo.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets oo.d) - (deps (:inputs oo.ast oo.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets oo.iast) - (deps (:inputs oo.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets oo.cmi oo.cmti) - (alias mel) - (deps (:inputs oo.iast) (include oo.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o oo.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets oo.cmj oo.cmt oo.mjs oo.js) - (alias mel) - (deps (:inputs oo.ast) oo.cmi (include oo.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o oo.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets arg.ast) - (deps (:inputs arg.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets arg.d) - (deps (:inputs arg.ast arg.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets arg.iast) - (deps (:inputs arg.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets arg.cmi arg.cmti) - (alias mel) - (deps (:inputs arg.iast) (include arg.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o arg.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets arg.cmj arg.cmt arg.mjs arg.js) - (alias mel) - (deps (:inputs arg.ast) arg.cmi (include arg.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o arg.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets fun.ast) - (deps (:inputs fun.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets fun.d) - (deps (:inputs fun.ast fun.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets fun.iast) - (deps (:inputs fun.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets fun.cmi fun.cmti) - (alias mel) - (deps (:inputs fun.iast) (include fun.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o fun.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets fun.cmj fun.cmt fun.mjs fun.js) - (alias mel) - (deps (:inputs fun.ast) fun.cmi (include fun.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o fun.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets int.ast) - (deps (:inputs int.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets int.d) - (deps (:inputs int.ast int.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets int.iast) - (deps (:inputs int.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets int.cmi int.cmti) - (alias mel) - (deps (:inputs int.iast) (include int.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o int.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets int.cmj int.cmt int.mjs int.js) - (alias mel) - (deps (:inputs int.ast) int.cmi (include int.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o int.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets map.ast) - (deps (:inputs map.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets map.d) - (deps (:inputs map.ast map.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets map.iast) - (deps (:inputs map.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets map.cmi map.cmti) - (alias mel) - (deps (:inputs map.iast) (include map.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o map.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets map.cmj map.cmt map.mjs map.js) - (alias mel) - (deps (:inputs map.ast) map.cmi (include map.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o map.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets obj.ast) - (deps (:inputs obj.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets obj.d) - (deps (:inputs obj.ast obj.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets obj.iast) - (deps (:inputs obj.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets obj.cmi obj.cmti) - (alias mel) - (deps (:inputs obj.iast) (include obj.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o obj.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets obj.cmj obj.cmt obj.mjs obj.js) - (alias mel) - (deps (:inputs obj.ast) obj.cmi (include obj.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o obj.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets seq.ast) - (deps (:inputs seq.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets seq.d) - (deps (:inputs seq.ast seq.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets seq.iast) - (deps (:inputs seq.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets seq.cmi seq.cmti) - (alias mel) - (deps (:inputs seq.iast) (include seq.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o seq.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets seq.cmj seq.cmt seq.mjs seq.js) - (alias mel) - (deps (:inputs seq.ast) seq.cmi (include seq.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o seq.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets set.ast) - (deps (:inputs set.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets set.d) - (deps (:inputs set.ast set.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets set.iast) - (deps (:inputs set.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets set.cmi set.cmti) - (alias mel) - (deps (:inputs set.iast) (include set.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o set.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets set.cmj set.cmt set.mjs set.js) - (alias mel) - (deps (:inputs set.ast) set.cmi (include set.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o set.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets sys.ast) - (deps (:inputs sys.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets sys.d) - (deps (:inputs sys.ast sys.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets sys.iast) - (deps (:inputs sys.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets sys.cmi sys.cmti) - (alias mel) - (deps (:inputs sys.iast) (include sys.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o sys.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets sys.cmj sys.cmt sys.mjs sys.js) - (alias mel) - (deps (:inputs sys.ast) sys.cmi (include sys.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o sys.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bool.ast) - (deps (:inputs bool.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bool.d) - (deps (:inputs bool.ast bool.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bool.iast) - (deps (:inputs bool.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bool.cmi bool.cmti) - (alias mel) - (deps (:inputs bool.iast) (include bool.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o bool.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bool.cmj bool.cmt bool.mjs bool.js) - (alias mel) - (deps (:inputs bool.ast) bool.cmi (include bool.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o bool.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets char.ast) - (deps (:inputs char.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets char.d) - (deps (:inputs char.ast char.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets char.iast) - (deps (:inputs char.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets char.cmi char.cmti) - (alias mel) - (deps (:inputs char.iast) (include char.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o char.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets char.cmj char.cmt char.mjs char.js) - (alias mel) - (deps (:inputs char.ast) char.cmi (include char.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o char.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets lazy.ast) - (deps (:inputs lazy.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets lazy.d) - (deps (:inputs lazy.ast lazy.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets lazy.iast) - (deps (:inputs lazy.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets lazy.cmi lazy.cmti) - (alias mel) - (deps (:inputs lazy.iast) (include lazy.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o lazy.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets lazy.cmj lazy.cmt lazy.mjs lazy.js) - (alias mel) - (deps (:inputs lazy.ast) lazy.cmi (include lazy.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o lazy.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets list.ast) - (deps (:inputs list.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets list.d) - (deps (:inputs list.ast list.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets list.iast) - (deps (:inputs list.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets list.cmi list.cmti) - (alias mel) - (deps (:inputs list.iast) (include list.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o list.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets list.cmj list.cmt list.mjs list.js) - (alias mel) - (deps (:inputs list.ast) list.cmi (include list.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o list.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets unit.ast) - (deps (:inputs unit.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets unit.d) - (deps (:inputs unit.ast unit.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets unit.iast) - (deps (:inputs unit.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets unit.cmi unit.cmti) - (alias mel) - (deps (:inputs unit.iast) (include unit.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o unit.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets unit.cmj unit.cmt unit.mjs unit.js) - (alias mel) - (deps (:inputs unit.ast) unit.cmi (include unit.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o unit.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets weak.ast) - (deps (:inputs weak.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets weak.d) - (deps (:inputs weak.ast weak.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets weak.iast) - (deps (:inputs weak.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets weak.cmi weak.cmti) - (alias mel) - (deps (:inputs weak.iast) (include weak.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o weak.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets weak.cmj weak.cmt weak.mjs weak.js) - (alias mel) - (deps (:inputs weak.ast) weak.cmi (include weak.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o weak.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets array.ast) - (deps (:inputs array.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets array.d) - (deps (:inputs array.ast array.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets array.iast) - (deps (:inputs array.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets array.cmi array.cmti) - (alias mel) - (deps (:inputs array.iast) (include array.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o array.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets array.cmj array.cmt array.mjs array.js) - (alias mel) - (deps (:inputs array.ast) array.cmi (include array.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o array.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bytes.ast) - (deps (:inputs bytes.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bytes.d) - (deps (:inputs bytes.ast bytes.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bytes.iast) - (deps (:inputs bytes.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bytes.cmi bytes.cmti) - (alias mel) - (deps (:inputs bytes.iast) (include bytes.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o bytes.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bytes.cmj bytes.cmt bytes.mjs bytes.js) - (alias mel) - (deps (:inputs bytes.ast) bytes.cmi (include bytes.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o bytes.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets float.ast) - (deps (:inputs float.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets float.d) - (deps (:inputs float.ast float.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets float.iast) - (deps (:inputs float.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets float.cmi float.cmti) - (alias mel) - (deps (:inputs float.iast) (include float.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o float.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets float.cmj float.cmt float.mjs float.js) - (alias mel) - (deps (:inputs float.ast) float.cmi (include float.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o float.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets int32.ast) - (deps (:inputs int32.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets int32.d) - (deps (:inputs int32.ast int32.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets int32.iast) - (deps (:inputs int32.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets int32.cmi int32.cmti) - (alias mel) - (deps (:inputs int32.iast) (include int32.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o int32.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets int32.cmj int32.cmt int32.mjs int32.js) - (alias mel) - (deps (:inputs int32.ast) int32.cmi (include int32.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o int32.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets int64.ast) - (deps (:inputs int64.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets int64.d) - (deps (:inputs int64.ast int64.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets int64.iast) - (deps (:inputs int64.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets int64.cmi int64.cmti) - (alias mel) - (deps (:inputs int64.iast) (include int64.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o int64.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets int64.cmj int64.cmt int64.mjs int64.js) - (alias mel) - (deps (:inputs int64.ast) int64.cmi (include int64.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o int64.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets queue.ast) - (deps (:inputs queue.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets queue.d) - (deps (:inputs queue.ast queue.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets queue.iast) - (deps (:inputs queue.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets queue.cmi queue.cmti) - (alias mel) - (deps (:inputs queue.iast) (include queue.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o queue.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets queue.cmj queue.cmt queue.mjs queue.js) - (alias mel) - (deps (:inputs queue.ast) queue.cmi (include queue.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o queue.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets scanf.ast) - (deps (:inputs scanf.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets scanf.d) - (deps (:inputs scanf.ast scanf.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets scanf.iast) - (deps (:inputs scanf.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets scanf.cmi scanf.cmti) - (alias mel) - (deps (:inputs scanf.iast) (include scanf.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o scanf.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets scanf.cmj scanf.cmt scanf.mjs scanf.js) - (alias mel) - (deps (:inputs scanf.ast) scanf.cmi (include scanf.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o scanf.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stack.ast) - (deps (:inputs stack.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stack.d) - (deps (:inputs stack.ast stack.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stack.iast) - (deps (:inputs stack.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stack.cmi stack.cmti) - (alias mel) - (deps (:inputs stack.iast) (include stack.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o stack.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stack.cmj stack.cmt stack.mjs stack.js) - (alias mel) - (deps (:inputs stack.ast) stack.cmi (include stack.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o stack.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets uchar.ast) - (deps (:inputs uchar.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets uchar.d) - (deps (:inputs uchar.ast uchar.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets uchar.iast) - (deps (:inputs uchar.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets uchar.cmi uchar.cmti) - (alias mel) - (deps (:inputs uchar.iast) (include uchar.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o uchar.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets uchar.cmj uchar.cmt uchar.mjs uchar.js) - (alias mel) - (deps (:inputs uchar.ast) uchar.cmi (include uchar.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o uchar.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets atomic.ast) - (deps (:inputs atomic.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets atomic.d) - (deps (:inputs atomic.ast atomic.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets atomic.iast) - (deps (:inputs atomic.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets atomic.cmi atomic.cmti) - (alias mel) - (deps (:inputs atomic.iast) (include atomic.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o atomic.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets atomic.cmj atomic.cmt atomic.mjs atomic.js) - (alias mel) - (deps (:inputs atomic.ast) atomic.cmi (include atomic.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o atomic.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets buffer.ast) - (deps (:inputs buffer.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets buffer.d) - (deps (:inputs buffer.ast buffer.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets buffer.iast) - (deps (:inputs buffer.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets buffer.cmi buffer.cmti) - (alias mel) - (deps (:inputs buffer.iast) (include buffer.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o buffer.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets buffer.cmj buffer.cmt buffer.mjs buffer.js) - (alias mel) - (deps (:inputs buffer.ast) buffer.cmi (include buffer.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o buffer.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets digest.ast) - (deps (:inputs digest.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets digest.d) - (deps (:inputs digest.ast digest.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets digest.iast) - (deps (:inputs digest.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets digest.cmi digest.cmti) - (alias mel) - (deps (:inputs digest.iast) (include digest.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o digest.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets digest.cmj digest.cmt digest.mjs digest.js) - (alias mel) - (deps (:inputs digest.ast) digest.cmi (include digest.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o digest.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets either.ast) - (deps (:inputs either.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets either.d) - (deps (:inputs either.ast either.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets either.iast) - (deps (:inputs either.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets either.cmi either.cmti) - (alias mel) - (deps (:inputs either.iast) (include either.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o either.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets either.cmj either.cmt either.mjs either.js) - (alias mel) - (deps (:inputs either.ast) either.cmi (include either.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o either.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets format.ast) - (deps (:inputs format.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets format.d) - (deps (:inputs format.ast format.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets format.iast) - (deps (:inputs format.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets format.cmi format.cmti) - (alias mel) - (deps (:inputs format.iast) (include format.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o format.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets format.cmj format.cmt format.mjs format.js) - (alias mel) - (deps (:inputs format.ast) format.cmi (include format.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o format.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets genlex.ast) - (deps (:inputs genlex.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets genlex.d) - (deps (:inputs genlex.ast genlex.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets genlex.iast) - (deps (:inputs genlex.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets genlex.cmi genlex.cmti) - (alias mel) - (deps (:inputs genlex.iast) (include genlex.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o genlex.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets genlex.cmj genlex.cmt genlex.mjs genlex.js) - (alias mel) - (deps (:inputs genlex.ast) genlex.cmi (include genlex.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o genlex.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets lexing.ast) - (deps (:inputs lexing.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets lexing.d) - (deps (:inputs lexing.ast lexing.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets lexing.iast) - (deps (:inputs lexing.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets lexing.cmi lexing.cmti) - (alias mel) - (deps (:inputs lexing.iast) (include lexing.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o lexing.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets lexing.cmj lexing.cmt lexing.mjs lexing.js) - (alias mel) - (deps (:inputs lexing.ast) lexing.cmi (include lexing.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o lexing.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets option.ast) - (deps (:inputs option.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets option.d) - (deps (:inputs option.ast option.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets option.iast) - (deps (:inputs option.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets option.cmi option.cmti) - (alias mel) - (deps (:inputs option.iast) (include option.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o option.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets option.cmj option.cmt option.mjs option.js) - (alias mel) - (deps (:inputs option.ast) option.cmi (include option.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o option.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets printf.ast) - (deps (:inputs printf.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets printf.d) - (deps (:inputs printf.ast printf.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets printf.iast) - (deps (:inputs printf.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets printf.cmi printf.cmti) - (alias mel) - (deps (:inputs printf.iast) (include printf.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o printf.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets printf.cmj printf.cmt printf.mjs printf.js) - (alias mel) - (deps (:inputs printf.ast) printf.cmi (include printf.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o printf.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets random.ast) - (deps (:inputs random.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets random.d) - (deps (:inputs random.ast random.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets random.iast) - (deps (:inputs random.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets random.cmi random.cmti) - (alias mel) - (deps (:inputs random.iast) (include random.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o random.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets random.cmj random.cmt random.mjs random.js) - (alias mel) - (deps (:inputs random.ast) random.cmi (include random.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o random.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets result.ast) - (deps (:inputs result.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets result.d) - (deps (:inputs result.ast result.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets result.iast) - (deps (:inputs result.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets result.cmi result.cmti) - (alias mel) - (deps (:inputs result.iast) (include result.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o result.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets result.cmj result.cmt result.mjs result.js) - (alias mel) - (deps (:inputs result.ast) result.cmi (include result.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o result.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stream.ast) - (deps (:inputs stream.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stream.d) - (deps (:inputs stream.ast stream.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stream.iast) - (deps (:inputs stream.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stream.cmi stream.cmti) - (alias mel) - (deps (:inputs stream.iast) (include stream.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o stream.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stream.cmj stream.cmt stream.mjs stream.js) - (alias mel) - (deps (:inputs stream.ast) stream.cmi (include stream.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o stream.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets string.ast) - (deps (:inputs string.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets string.d) - (deps (:inputs string.ast string.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets string.iast) - (deps (:inputs string.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets string.cmi string.cmti) - (alias mel) - (deps (:inputs string.iast) (include string.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o string.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets string.cmj string.cmt string.mjs string.js) - (alias mel) - (deps (:inputs string.ast) string.cmi (include string.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o string.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets complex.ast) - (deps (:inputs complex.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets complex.d) - (deps (:inputs complex.ast complex.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets complex.iast) - (deps (:inputs complex.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets complex.cmi complex.cmti) - (alias mel) - (deps (:inputs complex.iast) (include complex.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o complex.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets complex.cmj complex.cmt complex.mjs complex.js) - (alias mel) - (deps (:inputs complex.ast) complex.cmi (include complex.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o complex.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets hashtbl.ast) - (deps (:inputs hashtbl.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets hashtbl.d) - (deps (:inputs hashtbl.ast hashtbl.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets hashtbl.iast) - (deps (:inputs hashtbl.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets hashtbl.cmi hashtbl.cmti) - (alias mel) - (deps (:inputs hashtbl.iast) (include hashtbl.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o hashtbl.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets hashtbl.cmj hashtbl.cmt hashtbl.mjs hashtbl.js) - (alias mel) - (deps (:inputs hashtbl.ast) hashtbl.cmi (include hashtbl.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o hashtbl.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets marshal.ast) - (deps (:inputs marshal.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets marshal.d) - (deps (:inputs marshal.ast marshal.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets marshal.iast) - (deps (:inputs marshal.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets marshal.cmi marshal.cmti) - (alias mel) - (deps (:inputs marshal.iast) (include marshal.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o marshal.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets marshal.cmj marshal.cmt marshal.mjs marshal.js) - (alias mel) - (deps (:inputs marshal.ast) marshal.cmi (include marshal.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o marshal.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets parsing.ast) - (deps (:inputs parsing.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets parsing.d) - (deps (:inputs parsing.ast parsing.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets parsing.iast) - (deps (:inputs parsing.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets parsing.cmi parsing.cmti) - (alias mel) - (deps (:inputs parsing.iast) (include parsing.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o parsing.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets parsing.cmj parsing.cmt parsing.mjs parsing.js) - (alias mel) - (deps (:inputs parsing.ast) parsing.cmi (include parsing.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o parsing.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets callback.ast) - (deps (:inputs callback.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets callback.d) - (deps (:inputs callback.ast callback.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets callback.iast) - (deps (:inputs callback.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets callback.cmi callback.cmti) - (alias mel) - (deps (:inputs callback.iast) (include callback.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o callback.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets callback.cmj callback.cmt callback.mjs callback.js) - (alias mel) - (deps (:inputs callback.ast) callback.cmi (include callback.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o callback.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets filename.ast) - (deps (:inputs filename.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets filename.d) - (deps (:inputs filename.ast filename.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets filename.iast) - (deps (:inputs filename.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets filename.cmi filename.cmti) - (alias mel) - (deps (:inputs filename.iast) (include filename.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o filename.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets filename.cmj filename.cmt filename.mjs filename.js) - (alias mel) - (deps (:inputs filename.ast) filename.cmi (include filename.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o filename.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets printexc.ast) - (deps (:inputs printexc.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets printexc.d) - (deps (:inputs printexc.ast printexc.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets printexc.iast) - (deps (:inputs printexc.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets printexc.cmi printexc.cmti) - (alias mel) - (deps (:inputs printexc.iast) (include printexc.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o printexc.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets printexc.cmj printexc.cmt printexc.mjs printexc.js) - (alias mel) - (deps (:inputs printexc.ast) printexc.cmi (include printexc.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o printexc.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets std_exit.ast) - (deps (:inputs std_exit.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets std_exit.d) - (deps (:inputs std_exit.ast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets std_exit.cmj std_exit.cmi std_exit.cmt std_exit.mjs std_exit.js) - (alias mel) - (deps (:inputs std_exit.ast) (include std_exit.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o std_exit.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets ephemeron.ast) - (deps (:inputs ephemeron.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets ephemeron.d) - (deps (:inputs ephemeron.ast ephemeron.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets ephemeron.iast) - (deps (:inputs ephemeron.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets ephemeron.cmi ephemeron.cmti) - (alias mel) - (deps (:inputs ephemeron.iast) (include ephemeron.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o ephemeron.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets ephemeron.cmj ephemeron.cmt ephemeron.mjs ephemeron.js) - (alias mel) - (deps (:inputs ephemeron.ast) ephemeron.cmi (include ephemeron.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o ephemeron.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stdLabels.ast) - (deps (:inputs stdLabels.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stdLabels.d) - (deps (:inputs stdLabels.ast stdLabels.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stdLabels.iast) - (deps (:inputs stdLabels.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stdLabels.cmi stdLabels.cmti) - (alias mel) - (deps (:inputs stdLabels.iast) (include stdLabels.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o stdLabels.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stdLabels.cmj stdLabels.cmt stdLabels.mjs stdLabels.js) - (alias mel) - (deps (:inputs stdLabels.ast) stdLabels.cmi (include stdLabels.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o stdLabels.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets in_channel.ast) - (deps (:inputs in_channel.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets in_channel.d) - (deps (:inputs in_channel.ast in_channel.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets in_channel.iast) - (deps (:inputs in_channel.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets in_channel.cmi in_channel.cmti) - (alias mel) - (deps (:inputs in_channel.iast) (include in_channel.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o in_channel.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets in_channel.cmj in_channel.cmt in_channel.mjs in_channel.js) - (alias mel) - (deps (:inputs in_channel.ast) in_channel.cmi (include in_channel.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o in_channel.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets listLabels.ast) - (deps (:inputs listLabels.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets listLabels.d) - (deps (:inputs listLabels.ast listLabels.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets listLabels.iast) - (deps (:inputs listLabels.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets listLabels.cmi listLabels.cmti) - (alias mel) - (deps (:inputs listLabels.iast) (include listLabels.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o listLabels.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets listLabels.cmj listLabels.cmt listLabels.mjs listLabels.js) - (alias mel) - (deps (:inputs listLabels.ast) listLabels.cmi (include listLabels.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o listLabels.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets moreLabels.ast) - (deps (:inputs moreLabels.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets moreLabels.d) - (deps (:inputs moreLabels.ast moreLabels.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets moreLabels.iast) - (deps (:inputs moreLabels.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets moreLabels.cmi moreLabels.cmti) - (alias mel) - (deps (:inputs moreLabels.iast) (include moreLabels.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o moreLabels.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets moreLabels.cmj moreLabels.cmt moreLabels.mjs moreLabels.js) - (alias mel) - (deps (:inputs moreLabels.ast) moreLabels.cmi (include moreLabels.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o moreLabels.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets pervasives.ast) - (deps (:inputs pervasives.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets pervasives.d) - (deps (:inputs pervasives.ast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets pervasives.cmj pervasives.cmi pervasives.cmt pervasives.mjs pervasives.js) - (alias mel) - (deps (:inputs pervasives.ast) (include pervasives.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o pervasives.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets arrayLabels.ast) - (deps (:inputs arrayLabels.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets arrayLabels.d) - (deps (:inputs arrayLabels.ast arrayLabels.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets arrayLabels.iast) - (deps (:inputs arrayLabels.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets arrayLabels.cmi arrayLabels.cmti) - (alias mel) - (deps (:inputs arrayLabels.iast) (include arrayLabels.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o arrayLabels.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets arrayLabels.cmj arrayLabels.cmt arrayLabels.mjs arrayLabels.js) - (alias mel) - (deps (:inputs arrayLabels.ast) arrayLabels.cmi (include arrayLabels.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o arrayLabels.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bytesLabels.ast) - (deps (:inputs bytesLabels.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bytesLabels.d) - (deps (:inputs bytesLabels.ast bytesLabels.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bytesLabels.iast) - (deps (:inputs bytesLabels.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bytesLabels.cmi bytesLabels.cmti) - (alias mel) - (deps (:inputs bytesLabels.iast) (include bytesLabels.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o bytesLabels.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets bytesLabels.cmj bytesLabels.cmt bytesLabels.mjs bytesLabels.js) - (alias mel) - (deps (:inputs bytesLabels.ast) bytesLabels.cmi (include bytesLabels.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o bytesLabels.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets out_channel.ast) - (deps (:inputs out_channel.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets out_channel.d) - (deps (:inputs out_channel.ast out_channel.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets out_channel.iast) - (deps (:inputs out_channel.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets out_channel.cmi out_channel.cmti) - (alias mel) - (deps (:inputs out_channel.iast) (include out_channel.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o out_channel.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets out_channel.cmj out_channel.cmt out_channel.mjs out_channel.js) - (alias mel) - (deps (:inputs out_channel.ast) out_channel.cmi (include out_channel.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o out_channel.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stringLabels.ast) - (deps (:inputs stringLabels.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stringLabels.d) - (deps (:inputs stringLabels.ast stringLabels.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stringLabels.iast) - (deps (:inputs stringLabels.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stringLabels.cmi stringLabels.cmti) - (alias mel) - (deps (:inputs stringLabels.iast) (include stringLabels.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o stringLabels.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets stringLabels.cmj stringLabels.cmt stringLabels.mjs stringLabels.js) - (alias mel) - (deps (:inputs stringLabels.ast) stringLabels.cmi (include stringLabels.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o stringLabels.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalOO.ast) - (deps (:inputs camlinternalOO.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalOO.d) - (deps (:inputs camlinternalOO.ast camlinternalOO.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalOO.iast) - (deps (:inputs camlinternalOO.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalOO.cmi camlinternalOO.cmti) - (alias mel) - (deps (:inputs camlinternalOO.iast) (include camlinternalOO.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o camlinternalOO.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalOO.cmj camlinternalOO.cmt camlinternalOO.mjs camlinternalOO.js) - (alias mel) - (deps (:inputs camlinternalOO.ast) camlinternalOO.cmi (include camlinternalOO.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o camlinternalOO.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalMod.ast) - (deps (:inputs camlinternalMod.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalMod.d) - (deps (:inputs camlinternalMod.ast camlinternalMod.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalMod.iast) - (deps (:inputs camlinternalMod.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalMod.cmi camlinternalMod.cmti) - (alias mel) - (deps (:inputs camlinternalMod.iast) (include camlinternalMod.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o camlinternalMod.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalMod.cmj camlinternalMod.cmt camlinternalMod.mjs camlinternalMod.js) - (alias mel) - (deps (:inputs camlinternalMod.ast) camlinternalMod.cmi (include camlinternalMod.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o camlinternalMod.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalLazy.ast) - (deps (:inputs camlinternalLazy.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalLazy.d) - (deps (:inputs camlinternalLazy.ast camlinternalLazy.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalLazy.iast) - (deps (:inputs camlinternalLazy.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalLazy.cmi camlinternalLazy.cmti) - (alias mel) - (deps (:inputs camlinternalLazy.iast) (include camlinternalLazy.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o camlinternalLazy.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalLazy.cmj camlinternalLazy.cmt camlinternalLazy.mjs camlinternalLazy.js) - (alias mel) - (deps (:inputs camlinternalLazy.ast) camlinternalLazy.cmi (include camlinternalLazy.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o camlinternalLazy.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalFormat.ast) - (deps (:inputs camlinternalFormat.ml) ../../../.melange.eobjs/jscomp/stdlib-412/stdlib_modules/.bsbuild) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalFormat.d) - (deps (:inputs camlinternalFormat.ast camlinternalFormat.iast) ) -(action (run meldep -root-dir ../../.. -p @melange/runtime-stdlib-modules -proj-dir . %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalFormat.iast) - (deps (:inputs camlinternalFormat.mli) ) -(action - (run melc -w a -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -absname -bs-ast -o %{targets} %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalFormat.cmi camlinternalFormat.cmti) - (alias mel) - (deps (:inputs camlinternalFormat.iast) (include camlinternalFormat.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -o camlinternalFormat.cmi %{inputs})) -(enabled_if %{bin-available:melc}) ) - (rule -(targets camlinternalFormat.cmj camlinternalFormat.cmt camlinternalFormat.mjs camlinternalFormat.js) - (alias mel) - (deps (:inputs camlinternalFormat.ast) camlinternalFormat.cmi (include camlinternalFormat.d) bsconfig.json(alias ../../runtime/mel)(alias ../../others/mel)(alias ../mel)) -(action - (run melc -intf-suffix .ml -bs-legacy -I . -I ../../runtime -I ../../others -I .. -no-keep-locs -no-alias-deps -bs-no-version-header -bs-no-check-div-by-zero -bs-cross-module-opt -nolabels -w a -bs-package-name @melange/runtime-stdlib-modules -bs-package-output commonjs:.:.js -bs-package-output es6:.:.mjs -o camlinternalFormat.cmj %{inputs})) -(enabled_if %{bin-available:melc}) ) - -(alias (name mel)(deps camlinternalFormat.mjs camlinternalFormat.js camlinternalLazy.mjs camlinternalLazy.js camlinternalMod.mjs camlinternalMod.js camlinternalOO.mjs camlinternalOO.js stringLabels.mjs stringLabels.js out_channel.mjs out_channel.js bytesLabels.mjs bytesLabels.js arrayLabels.mjs arrayLabels.js pervasives.mjs pervasives.js moreLabels.mjs moreLabels.js listLabels.mjs listLabels.js in_channel.mjs in_channel.js stdLabels.mjs stdLabels.js ephemeron.mjs ephemeron.js std_exit.mjs std_exit.js printexc.mjs printexc.js filename.mjs filename.js callback.mjs callback.js parsing.mjs parsing.js marshal.mjs marshal.js hashtbl.mjs hashtbl.js complex.mjs complex.js string.mjs string.js stream.mjs stream.js result.mjs result.js random.mjs random.js printf.mjs printf.js option.mjs option.js lexing.mjs lexing.js genlex.mjs genlex.js format.mjs format.js either.mjs either.js digest.mjs digest.js buffer.mjs buffer.js atomic.mjs atomic.js uchar.mjs uchar.js stack.mjs stack.js scanf.mjs scanf.js queue.mjs queue.js int64.mjs int64.js int32.mjs int32.js float.mjs float.js bytes.mjs bytes.js array.mjs array.js weak.mjs weak.js unit.mjs unit.js list.mjs list.js lazy.mjs lazy.js char.mjs char.js bool.mjs bool.js sys.mjs sys.js set.mjs set.js seq.mjs seq.js obj.mjs obj.js map.mjs map.js int.mjs int.js fun.mjs fun.js arg.mjs arg.js oo.mjs oo.js gc.mjs gc.js) -(enabled_if %{bin-available:melc}))) - -(subdir .melange.eobjs/jscomp/stdlib-412/stdlib_modules -(rule (write-file .bsbuild NjAKR2MKT28KQXJnCkZ1bgpJbnQKTWFwCk9iagpTZXEKU2V0ClN5cwpCb29sCkNoYXIKTGF6eQpMaXN0ClVuaXQKV2VhawpBcnJheQpCeXRlcwpGbG9hdApJbnQzMgpJbnQ2NApRdWV1ZQpTY2FuZgpTdGFjawpVY2hhcgpBdG9taWMKQnVmZmVyCkRpZ2VzdApFaXRoZXIKRm9ybWF0CkdlbmxleApMZXhpbmcKT3B0aW9uClByaW50ZgpSYW5kb20KUmVzdWx0ClN0cmVhbQpTdHJpbmcKQ29tcGxleApIYXNodGJsCk1hcnNoYWwKUGFyc2luZwpDYWxsYmFjawpGaWxlbmFtZQpQcmludGV4YwpTdGRfZXhpdApFcGhlbWVyb24KU3RkTGFiZWxzCkluX2NoYW5uZWwKTGlzdExhYmVscwpNb3JlTGFiZWxzClBlcnZhc2l2ZXMKQXJyYXlMYWJlbHMKQnl0ZXNMYWJlbHMKT3V0X2NoYW5uZWwKU3RyaW5nTGFiZWxzCkNhbWxpbnRlcm5hbE9PCkNhbWxpbnRlcm5hbE1vZApDYW1saW50ZXJuYWxMYXp5CkNhbWxpbnRlcm5hbEZvcm1hdAouCQoxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACjAK)) -) - - -(subdir .melange.eobjs -(rule (write-file .bsbuild MAowCg==)) -(rule (write-file .sourcedirs.json "{ \"dirs\" : [ \"/Users/antoniomonteiro/projects/melange/jscomp/runtime\" , \"/Users/antoniomonteiro/projects/melange/jscomp/others\" , \"/Users/antoniomonteiro/projects/melange/jscomp/stdlib-412\" , \"/Users/antoniomonteiro/projects/melange/jscomp/stdlib-412/stdlib_modules\" ] , \"pkgs\" : [] , \"generated\" : [] }")) -) - -(data_only_dirs node_modules .melange.eobjs) -(alias (name mel) (deps .melange.eobjs/.sourcedirs.json (alias jscomp/runtime/mel)(alias jscomp/others/mel)(alias jscomp/stdlib-412/mel)(alias jscomp/stdlib-412/stdlib_modules/mel))) diff --git a/jscomp/build_tests/bs_dependencies_node_path_override/.gitignore b/jscomp/build_tests/bs_dependencies_node_path_override/.gitignore deleted file mode 100644 index 71c60460d7..0000000000 --- a/jscomp/build_tests/bs_dependencies_node_path_override/.gitignore +++ /dev/null @@ -1,29 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -**/*.js -!node_modules -!input.js -!testcase.js \ No newline at end of file diff --git a/jscomp/build_tests/bs_dependencies_node_path_override/README.md b/jscomp/build_tests/bs_dependencies_node_path_override/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/bs_dependencies_node_path_override/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/bs_dependencies_node_path_override/bsconfig.json b/jscomp/build_tests/bs_dependencies_node_path_override/bsconfig.json deleted file mode 100644 index 5eb6a09cf2..0000000000 --- a/jscomp/build_tests/bs_dependencies_node_path_override/bsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "bs_dependencies_node_path_override", - "version": "0.1.0", - "sources": [ - { - "dir": "src", - "subdirs" : true - }, - { - "dir": "examples", - "type" : "dev", - "subdirs" : true - } - ], - "package-specs" : { - "module": "commonjs", - "in-source": true - }, - "namespace": true, - "bs-dependencies" : [ - "liba" - ] -} \ No newline at end of file diff --git a/jscomp/build_tests/bs_dependencies_node_path_override/examples/test.ml b/jscomp/build_tests/bs_dependencies_node_path_override/examples/test.ml deleted file mode 100644 index f5f8f9d8c1..0000000000 --- a/jscomp/build_tests/bs_dependencies_node_path_override/examples/test.ml +++ /dev/null @@ -1 +0,0 @@ -let v = Demo.name \ No newline at end of file diff --git a/jscomp/build_tests/bs_dependencies_node_path_override/input.js b/jscomp/build_tests/bs_dependencies_node_path_override/input.js deleted file mode 100644 index 863ab0f765..0000000000 --- a/jscomp/build_tests/bs_dependencies_node_path_override/input.js +++ /dev/null @@ -1,5 +0,0 @@ -//@ts-check -var path = require('path') -var p = require('child_process') -var node_path = path.join(__dirname, "nothing_exists_here") + ":" + path.join(__dirname, "overridden_node_modules") -p.execSync(`NODE_PATH=${node_path} node ./testcase.js`, {cwd:__dirname,shell:true,encoding:'utf8',stdio:"inherit"}) \ No newline at end of file diff --git a/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/.gitignore b/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/.gitignore deleted file mode 100644 index 8f464d0527..0000000000 --- a/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/README.md b/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/bsconfig.json b/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/bsconfig.json deleted file mode 100644 index f34d7ed09e..0000000000 --- a/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/bsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "liba", - "version": "0.1.0", - "sources": [ - { - "dir": "src", - "subdirs" : true - }, - { - "dir" : "examples", - "type": "dev", - "subdirs" : true - } - ], - "namespace": true - -} \ No newline at end of file diff --git a/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/examples/xx/test.ml b/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/examples/xx/test.ml deleted file mode 100644 index af158a09e6..0000000000 --- a/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/examples/xx/test.ml +++ /dev/null @@ -1 +0,0 @@ -let name = __FILE__ + 3 \ No newline at end of file diff --git a/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/examples/yy.ml b/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/examples/yy.ml deleted file mode 100644 index d32a6d0646..0000000000 --- a/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/examples/yy.ml +++ /dev/null @@ -1 +0,0 @@ -let name = __FILE__ \ No newline at end of file diff --git a/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/package.json b/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/package.json deleted file mode 100644 index f6901b53ad..0000000000 --- a/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "liba", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "rescript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.9.3" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/src/demo.ml b/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/src/demo.ml deleted file mode 100644 index ca8c589c96..0000000000 --- a/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let name = __FILE__ \ No newline at end of file diff --git a/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/src/hi/fib.ml b/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/src/hi/fib.ml deleted file mode 100644 index d32a6d0646..0000000000 --- a/jscomp/build_tests/bs_dependencies_node_path_override/overridden_node_modules/liba/src/hi/fib.ml +++ /dev/null @@ -1 +0,0 @@ -let name = __FILE__ \ No newline at end of file diff --git a/jscomp/build_tests/bs_dependencies_node_path_override/package.json b/jscomp/build_tests/bs_dependencies_node_path_override/package.json deleted file mode 100644 index a3a0e562ee..0000000000 --- a/jscomp/build_tests/bs_dependencies_node_path_override/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "bs_dependencies_node_path_override", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "rescript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "^5.1.0-dev.3" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/bs_dependencies_node_path_override/src/demo.ml b/jscomp/build_tests/bs_dependencies_node_path_override/src/demo.ml deleted file mode 100644 index 1b2a37152f..0000000000 --- a/jscomp/build_tests/bs_dependencies_node_path_override/src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let name = __FILE__ ^ Liba.Demo.name \ No newline at end of file diff --git a/jscomp/build_tests/bs_dependencies_node_path_override/testcase.js b/jscomp/build_tests/bs_dependencies_node_path_override/testcase.js deleted file mode 100644 index fdf1c492a7..0000000000 --- a/jscomp/build_tests/bs_dependencies_node_path_override/testcase.js +++ /dev/null @@ -1,7 +0,0 @@ -//@ts-check -var assert = require('assert') -var path = require('path') -var p = require('child_process') -p.execSync(`bsb -make-world`, {cwd:__dirname,shell:true,encoding:'utf8',stdio:"inherit"}) -var u = require("./examples/test.js") -assert.equal(path.basename(u.v),'demo.mldemo.ml') \ No newline at end of file diff --git a/jscomp/build_tests/bucklescript-tea/.gitignore b/jscomp/build_tests/bucklescript-tea/.gitignore deleted file mode 100644 index e83813b44b..0000000000 --- a/jscomp/build_tests/bucklescript-tea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -/node_modules -/.merlin -/lib/bs -/lib/js/test -/lib/ocaml -npm-debug.log -*.bs.js -.bsb.lock \ No newline at end of file diff --git a/jscomp/build_tests/bucklescript-tea/.npmignore b/jscomp/build_tests/bucklescript-tea/.npmignore deleted file mode 100644 index b057e4c32f..0000000000 --- a/jscomp/build_tests/bucklescript-tea/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -/node_modules -/.merlin -/lib/bs -/lib/js/test -npm-debug.log diff --git a/jscomp/build_tests/bucklescript-tea/.travis.yml b/jscomp/build_tests/bucklescript-tea/.travis.yml deleted file mode 100644 index 825bcf19e9..0000000000 --- a/jscomp/build_tests/bucklescript-tea/.travis.yml +++ /dev/null @@ -1,10 +0,0 @@ -language: node_js -node_js: - - 8 -before_script: - - npm install bs-platform -script: - - npm run build:all -cache: - directories: - - "node_modules" diff --git a/jscomp/build_tests/bucklescript-tea/CONTRIBUTING.md b/jscomp/build_tests/bucklescript-tea/CONTRIBUTING.md deleted file mode 100644 index b80c21c0e1..0000000000 --- a/jscomp/build_tests/bucklescript-tea/CONTRIBUTING.md +++ /dev/null @@ -1,17 +0,0 @@ -# How to contribute - -If you'd like to help us improve and extend BuckleScript-TEA, then we welcome your contributions! - -Below you will find some basic steps required to be able to contribute to the project. If you have any questions about this process or any other aspect of contributing to a DCO-style open source project, feel free to open an issue and we'll get your questions answered as quickly as we can. - -## Contribution Licensing - -Since BuckleScript-TEA is distributed under the terms of the [LGPL Version 3](LICENSE), contributions that you make are licensed under the same terms. In order for us to be able to accept your contributions, we will need explicit confirmation from you that you are able and willing to provide them under these terms, and the mechanism we use to do this is called a Developer's Certificate of Origin [DCO](DCO.md). This is very similar to the process used by the Linux(R) kernel, Samba, and many other open source projects. - -To participate under these terms, all that you must do is include a line like the following as the last line of the commit message for each commit in your contribution (git can insert this line for you automatically with the `git commit -s` flag): - -``` -Signed-Off-By: Random J. Developer -``` - -You must use your real name (sorry, no pseudonyms, and no anonymous contributions). diff --git a/jscomp/build_tests/bucklescript-tea/CONTRIBUTORS.md b/jscomp/build_tests/bucklescript-tea/CONTRIBUTORS.md deleted file mode 100644 index 097a28bf1d..0000000000 --- a/jscomp/build_tests/bucklescript-tea/CONTRIBUTORS.md +++ /dev/null @@ -1,22 +0,0 @@ -# Contributors - -In alphabetical order in their requisite sections. - -## Original Author(s): - -- @overminddl1 (Gabriel Robertson) - -## Bucklescript - -- @bobzhang (Hongbo Zhang): Significant work on Bucklescript itself and for adding useful features to Bucklescript that have significantly helped this project's ease-of-use. We all owe him a gratitude. :-) - -## Special Thanks - -- @IwanKaramazow: Bug finder extraordinaire, thanks for catching all those corner cases! Also helping flesh out the API. - -- @jackalcooper: Bug finder extraordinaire, thanks for catching those Bucklescript issues! Also helped flesh out the API. - -- @jordwest: Adding further to the API. - -- @tcoopman: Adding further to the API. - diff --git a/jscomp/build_tests/bucklescript-tea/COPYING b/jscomp/build_tests/bucklescript-tea/COPYING deleted file mode 100644 index b743e04edb..0000000000 --- a/jscomp/build_tests/bucklescript-tea/COPYING +++ /dev/null @@ -1,674 +0,0 @@ -GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - -Copyright (C) 2007 Free Software Foundation, Inc. -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The GNU General Public License is a free, copyleft license for -software and other kinds of works. - -The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - -To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - -Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - -Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - -The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - -0. Definitions. - -"This License" refers to version 3 of the GNU General Public License. - -"Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - -"The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - -To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - -A "covered work" means either the unmodified Program or a work based -on the Program. - -To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - -To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - -An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - -1. Source Code. - -The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - -A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - -The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - -The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - -The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - -The Corresponding Source for a work in source code form is that -same work. - -2. Basic Permissions. - -All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - -You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - -Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - -3. Protecting Users' Legal Rights From Anti-Circumvention Law. - -No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - -When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - -4. Conveying Verbatim Copies. - -You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - -You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - -5. Conveying Modified Source Versions. - -You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - -a) The work must carry prominent notices stating that you modified -it, and giving a relevant date. - -b) The work must carry prominent notices stating that it is -released under this License and any conditions added under section -7. This requirement modifies the requirement in section 4 to -"keep intact all notices". - -c) You must license the entire work, as a whole, under this -License to anyone who comes into possession of a copy. This -License will therefore apply, along with any applicable section 7 -additional terms, to the whole of the work, and all its parts, -regardless of how they are packaged. This License gives no -permission to license the work in any other way, but it does not -invalidate such permission if you have separately received it. - -d) If the work has interactive user interfaces, each must display -Appropriate Legal Notices; however, if the Program has interactive -interfaces that do not display Appropriate Legal Notices, your -work need not make them do so. - -A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - -6. Conveying Non-Source Forms. - -You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - -a) Convey the object code in, or embodied in, a physical product -(including a physical distribution medium), accompanied by the -Corresponding Source fixed on a durable physical medium -customarily used for software interchange. - -b) Convey the object code in, or embodied in, a physical product -(including a physical distribution medium), accompanied by a -written offer, valid for at least three years and valid for as -long as you offer spare parts or customer support for that product -model, to give anyone who possesses the object code either (1) a -copy of the Corresponding Source for all the software in the -product that is covered by this License, on a durable physical -medium customarily used for software interchange, for a price no -more than your reasonable cost of physically performing this -conveying of source, or (2) access to copy the -Corresponding Source from a network server at no charge. - -c) Convey individual copies of the object code with a copy of the -written offer to provide the Corresponding Source. This -alternative is allowed only occasionally and noncommercially, and -only if you received the object code with such an offer, in accord -with subsection 6b. - -d) Convey the object code by offering access from a designated -place (gratis or for a charge), and offer equivalent access to the -Corresponding Source in the same way through the same place at no -further charge. You need not require recipients to copy the -Corresponding Source along with the object code. If the place to -copy the object code is a network server, the Corresponding Source -may be on a different server (operated by you or a third party) -that supports equivalent copying facilities, provided you maintain -clear directions next to the object code saying where to find the -Corresponding Source. Regardless of what server hosts the -Corresponding Source, you remain obligated to ensure that it is -available for as long as needed to satisfy these requirements. - -e) Convey the object code using peer-to-peer transmission, provided -you inform other peers where the object code and Corresponding -Source of the work are being offered to the general public at no -charge under subsection 6d. - -A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - -A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - -"Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - -If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - -The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - -Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - -7. Additional Terms. - -"Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - -When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - -Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - -a) Disclaiming warranty or limiting liability differently from the -terms of sections 15 and 16 of this License; or - -b) Requiring preservation of specified reasonable legal notices or -author attributions in that material or in the Appropriate Legal -Notices displayed by works containing it; or - -c) Prohibiting misrepresentation of the origin of that material, or -requiring that modified versions of such material be marked in -reasonable ways as different from the original version; or - -d) Limiting the use for publicity purposes of names of licensors or -authors of the material; or - -e) Declining to grant rights under trademark law for use of some -trade names, trademarks, or service marks; or - -f) Requiring indemnification of licensors and authors of that -material by anyone who conveys the material (or modified versions of -it) with contractual assumptions of liability to the recipient, for -any liability that these contractual assumptions directly impose on -those licensors and authors. - -All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - -If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - -Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - -8. Termination. - -You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - -However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - -Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - -Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - -9. Acceptance Not Required for Having Copies. - -You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - -10. Automatic Licensing of Downstream Recipients. - -Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - -An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - -You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - -11. Patents. - -A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - -A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - -Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - -In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - -If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - -If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - -A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - -Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - -12. No Surrender of Others' Freedom. - -If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - -13. Use with the GNU Affero General Public License. - -Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - -14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - -If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - -Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - -15. Disclaimer of Warranty. - -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -16. Limitation of Liability. - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - -17. Interpretation of Sections 15 and 16. - -If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) -This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - -You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - -The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/jscomp/build_tests/bucklescript-tea/COPYING.LESSER b/jscomp/build_tests/bucklescript-tea/COPYING.LESSER deleted file mode 100644 index b7de6e186b..0000000000 --- a/jscomp/build_tests/bucklescript-tea/COPYING.LESSER +++ /dev/null @@ -1,165 +0,0 @@ -GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - -Copyright (C) 2007 Free Software Foundation, Inc. -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - -This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - -0. Additional Definitions. - -As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - -"The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - -An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - -A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - -The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - -The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - -1. Exception to Section 3 of the GNU GPL. - -You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - -2. Conveying Modified Versions. - -If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - -a) under this License, provided that you make a good faith effort to -ensure that, in the event an Application does not supply the -function or data, the facility still operates, and performs -whatever part of its purpose remains meaningful, or - -b) under the GNU GPL, with none of the additional permissions of -this License applicable to that copy. - -3. Object Code Incorporating Material from Library Header Files. - -The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - -a) Give prominent notice with each copy of the object code that the -Library is used in it and that the Library and its use are -covered by this License. - -b) Accompany the object code with a copy of the GNU GPL and this license -document. - -4. Combined Works. - -You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - -a) Give prominent notice with each copy of the Combined Work that -the Library is used in it and that the Library and its use are -covered by this License. - -b) Accompany the Combined Work with a copy of the GNU GPL and this license -document. - -c) For a Combined Work that displays copyright notices during -execution, include the copyright notice for the Library among -these notices, as well as a reference directing the user to the -copies of the GNU GPL and this license document. - -d) Do one of the following: - -0) Convey the Minimal Corresponding Source under the terms of this -License, and the Corresponding Application Code in a form -suitable for, and under terms that permit, the user to -recombine or relink the Application with a modified version of -the Linked Version to produce a modified Combined Work, in the -manner specified by section 6 of the GNU GPL for conveying -Corresponding Source. - -1) Use a suitable shared library mechanism for linking with the -Library. A suitable mechanism is one that (a) uses at run time -a copy of the Library already present on the user's computer -system, and (b) will operate properly with a modified version -of the Library that is interface-compatible with the Linked -Version. - -e) Provide Installation Information, but only if you would otherwise -be required to provide such information under section 6 of the -GNU GPL, and only to the extent that such information is -necessary to install and execute a modified version of the -Combined Work produced by recombining or relinking the -Application with a modified version of the Linked Version. (If -you use option 4d0, the Installation Information must accompany -the Minimal Corresponding Source and Corresponding Application -Code. If you use option 4d1, you must provide the Installation -Information in the manner specified by section 6 of the GNU GPL -for conveying Corresponding Source.) - -5. Combined Libraries. - -You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - -a) Accompany the combined library with a copy of the same work based -on the Library, uncombined with any other library facilities, -conveyed under the terms of this License. - -b) Give prominent notice with the combined library that part of it -is a work based on the Library, and explaining where to find the -accompanying uncombined form of the same work. - -6. Revised Versions of the GNU Lesser General Public License. - -The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - -If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. diff --git a/jscomp/build_tests/bucklescript-tea/DCO.md b/jscomp/build_tests/bucklescript-tea/DCO.md deleted file mode 100644 index 4da109487a..0000000000 --- a/jscomp/build_tests/bucklescript-tea/DCO.md +++ /dev/null @@ -1,11 +0,0 @@ -Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -1. The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or - -2. The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or - -3. The contribution was provided directly to me by some other person who certified (1), (2) or (3) and I have not modified it. - -4. I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. diff --git a/jscomp/build_tests/bucklescript-tea/LICENSE b/jscomp/build_tests/bucklescript-tea/LICENSE deleted file mode 100644 index efd51740d4..0000000000 --- a/jscomp/build_tests/bucklescript-tea/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright (C) 2016-2017 OvermindDL1 (Gabriel Robertson) - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -In addition to the permissions granted to you by the LGPL, you may combine -or link a "work that uses the Library" with a publicly distributed version -of this file to produce a combined library or application, then distribute -that combined work under the terms of your choosing, with no requirement -to comply with the obligations normally placed on you by section 4 of the -LGPL version 3 (or the corresponding section of a later version of the LGPL -should you choose to use a later version). - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. diff --git a/jscomp/build_tests/bucklescript-tea/README.md b/jscomp/build_tests/bucklescript-tea/README.md deleted file mode 100644 index 604084ab50..0000000000 --- a/jscomp/build_tests/bucklescript-tea/README.md +++ /dev/null @@ -1,138 +0,0 @@ -# Bucklescript-TEA - -[![NPM](https://nodei.co/npm/bucklescript-tea.png?compact=true)](https://nodei.co/npm/bucklescript-tea/) - -[![Build Status](https://travis-ci.org/OvermindDL1/bucklescript-tea.svg?branch=master)](https://travis-ci.org/OvermindDL1/bucklescript-tea) - -## Reason to Use - -- Entirely event driven, this is like React/Flow but type-safe and significantly faster. -- Amazingly fast compile-times, especially with the built-in watcher of Bucklescript. -- You have the entire power of the OCaml language at your disposal to Javascript. -- You have access to the highly optimized OCaml ecosystem if necessary. -- You have access to the entire Javascript eco-system through a type-safe interface if necessary. -- Open license, same as Bucklescript itself. - -## Description - -This is a library for OCaml-via-Bucklescript (though in the future to support native compilation for back-end template generation) that follows TEA/[The Elm Architecture](https://guide.elm-lang.org/architecture/) as I see it in various incarnations. - -You can read more about it [here](http://blog.overminddl1.com/tags/bucklescript-tea/). - -Currently included and planned forms are: - -- [X] Elm API: Following the Elm API as closely as OCaml allows. Converting code back and forth between Elm and OCaml should be made as easy as possible (mostly organizing functions correctly and adding a few `let`'s around, a conversion utility to go back and forth is a 'nice-to-have' someday, but not currently in-dev, PR's welcome). It may be good to 'version' the API, break it out from the latest Elm API to follow different versions of the Elm API behind versioned modules that can be easily opened. This is not done yet but is a 'nice-to-have' goal before hitting version 1.0.0 to ensure even better API stability. Currently the `update` callback passes the `model` first instead of second as it makes matching on the message in a far more expected way, comments on reversing this back to Elm's way? -- [ ] WebComponent: TEA is a wonderful way to reason about information flow and view generation, however the implementation in Elm is very broken when wanting to combine it with WebComponents due to lacking a few ways to listen for data changes (which also fits very well into the TEA `update` model, just Elm has not done it as of the date of this writing). This may be an extension on the above Elm API however it is possible that it may require breaking away from that API. -- [ ] OCamlized-TEA: The Elm API is succinct, but highly inefficient in the amount of allocations it causes, though this is not necessary it would be nice to have a replacement API that takes effort to reduce the amount of allocations. Most real-world use would get near nothing out of this but for a few cases it would be quite useful to have an overhaul of the Virtual-DOM declaration style. -- [ ] React: It would also be nice to have a React back-end for easier integration with React projects, both into and out of this component. This should not have any breaking change over the Elm API but would just be an extension on it. -- [ ] Binding: Experiment with a method to build a vdom once then 'bind' to various parts of it. This will not follow TEA so precisely but the TEA style central event loop will still exist, this style will be quite different but may be even more simple while allowing even faster DOM diffing and updating. - -With the above any PR's are welcome to clean up code, flesh out functionality, and until we hit 1.0.0 break API compatibility if necessary (but as minimally as possible). 1.0.0 should be complete when the Elm API style is followed as closely as possible and becomes as optimized as it can become while following the API, once that is set then API breaking changes will only happen to match Elm updates. PR's are also welcome to add support to other systems such as Yarn as long as it does not break the base NPM packaging system. - -## Installation - -### NPM - -First verify you have `bs-platform` installed, whether globally or just in your project. - -Then install via npm by: - -```sh -npm install --save-dev bucklescript-tea -``` - -Then in your current Bucklescript project just use this as a dependency add this to your bsconfig.json file: - -```json - "bs-dependencies" : ["bucklescript-tea"] -``` - -_If you install it via any other method make sure that `bucklescript-tea` is a dependency in your npm's package.json file as `bsb` uses that for lookup._ - -## Usage - -### Example project - -Once you have your Bucklescript project set up and the dependencies configured as above then lets make a new TEA module, the Counter, as is traditional in Elm tutorials, this file will be named `counter.ml` in your `src` directory for this example. Code is described via inline comments: - -```ocaml -(* This line opens the Tea.App modules into the current scope for Program access functions and types *) -open Tea.App - -(* This opens the Elm-style virtual-dom functions and types into the current scope *) -open Tea.Html - -(* Let's create a new type here to be our main message type that is passed around *) -type msg = - | Increment (* This will be our message to increment the counter *) - | Decrement (* This will be our message to decrement the counter *) - | Reset (* This will be our message to reset the counter to 0 *) - | Set of int (* This will be out message to set the counter to a specific value *) - [@@bs.deriving {accessors}] (* This is a nice quality-of-life addon from Bucklescript, it will generate function names for each constructor name, optional, but nice to cut down on code, this is unused in this example but good to have regardless *) - -(* This is optional for such a simple example, but it is good to have an `init` function to define your initial model default values, the model for Counter is just an integer *) -let init () = 4 - -(* This is the central message handler, it takes the model as the first argument *) -let update model = function (* These should be simple enough to be self-explanatory, mutate the model based on the message, easy to read and follow *) - | Increment -> model + 1 - | Decrement -> model - 1 - | Reset -> 0 - | Set v -> v - -(* This is just a helper function for the view, a simple function that returns a button based on some argument *) -let view_button title msg = - button - [ onClick msg - ] - [ text title - ] - -(* This is the main callback to generate the virtual-dom. - This returns a virtual-dom node that becomes the view, only changes from call-to-call are set on the real DOM for efficiency, this is also only called once per frame even with many messages sent in within that frame, otherwise does nothing *) -let view model = - div - [] - [ span - [ style "text-weight" "bold" ] - [ text (string_of_int model) ] - ; br [] - ; view_button "Increment" Increment - ; br [] - ; view_button "Decrement" Decrement - ; br [] - ; view_button "Set to 42" (Set 42) - ; br [] - ; if model <> 0 then view_button "Reset" Reset else noNode - ] - -(* This is the main function, it can be named anything you want but `main` is traditional. - The Program returned here has a set of callbacks that can easily be called from - Bucklescript or from javascript for running this main attached to an element, - or even to pass a message into the event loop. You can even expose the - constructors to the messages to javascript via the above [@@bs.deriving {accessors}] - attribute on the `msg` type or manually, that way even javascript can use it safely. *) -let main = - beginnerProgram { (* The beginnerProgram just takes a set model state and the update and view functions *) - model = init (); (* Since model is a set value here, we call our init function to generate that value *) - update; - view; - } -``` - -If anything is typed wrong than the OCaml type checker will catch it and advise. Compilation times are wonderfully fast, probably faster than about any other compile-to-javascript language that you will come across. - -To use this from javascript (with your bundler of choice) you can just do: - -```javascript - var app = require("src/counter.ml").main(document.getElementById("my-element")); -``` - -And if you need to shut it down or pass it a message or so then you can do so via the `app` variable, or feel free to not assign it to a variable as well. - -For further examples see the [bucklescript-testing](https://github.com/OvermindDL1/bucklescript-testing) project for now until a full example set up is built. - -### Starter-Kit - -There is a fantastic starter kit made by tcoopman that supports rollup combining of the files and a built-in server for testing, see and get it at: [tcoopman's starter kit](https://github.com/tcoopman/bucklescript-tea-starter-kit) - diff --git a/jscomp/build_tests/bucklescript-tea/bsconfig.json b/jscomp/build_tests/bucklescript-tea/bsconfig.json deleted file mode 100644 index 8976e12de4..0000000000 --- a/jscomp/build_tests/bucklescript-tea/bsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "bucklescript-tea", - "version": "0.6.11", - "bsc-flags": [ - "-bs-cross-module-opt" - ], - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "sources": [ - "src", - { - "dir": "test", - "type": "dev" - } - ], - "suffix": ".bs.js" -} diff --git a/jscomp/build_tests/bucklescript-tea/input.js b/jscomp/build_tests/bucklescript-tea/input.js deleted file mode 100644 index a3cbe13190..0000000000 --- a/jscomp/build_tests/bucklescript-tea/input.js +++ /dev/null @@ -1,9 +0,0 @@ -var p = require("child_process"); -const { assert } = require("console"); - -var o = p.spawnSync(`bsb`); - -console.log(o.stderr + ""); -console.log("-----"); -console.log(o.stdout + ""); -assert(o.status === 0) \ No newline at end of file diff --git a/jscomp/build_tests/bucklescript-tea/package.json b/jscomp/build_tests/bucklescript-tea/package.json deleted file mode 100644 index 6d50c5ded7..0000000000 --- a/jscomp/build_tests/bucklescript-tea/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "bucklescript-tea", - "version": "0.6.11", - "description": "TEA for Bucklescript", - "main": "index.js", - "scripts": { - "clean": "bsb clean", - "clean:all": "bsb -clean-world", - "build": "bsb", - "build:all": "bsb -make-world", - "watch": "bsb -w", - "build:test:client": "browserify --standalone=Test_client --outfile=lib/js/test/app_test_client.js lib/js/test/test_client.js", - "watch:test:client": "watchify --standalone=Test_client --outfile=lib/js/test/app_test_client.js lib/js/test/test_client.js", - "watch:test": "run-p watch watch:test:*", - "prebuild:test": "run-s build", - "build:test": "run-p build:test:*", - "pretest": "run-s build:test", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/overminddl1/bucklescript-tea.git" - }, - "keywords": [ - "TEA", - "Bucklescript", - "OCaml" - ], - "author": "OvermindDL1", - "license": "LGPLv3", - "bugs": { - "url": "https://github.com/overminddl1/bucklescript-tea/issues" - }, - "homepage": "https://github.com/overminddl1/bucklescript-tea#readme", - "peerDependencies": { - "bs-platform": "^1.7.5" - }, - "devDependencies": { - "browserify": "^14.0.0", - "bs-platform": "^1.7.5", - "npm-run-all": "4.0.2", - "watchify": "3.9.0" - } -} diff --git a/jscomp/build_tests/bucklescript-tea/src/tea.ml b/jscomp/build_tests/bucklescript-tea/src/tea.ml deleted file mode 100644 index 5730da1637..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea.ml +++ /dev/null @@ -1,38 +0,0 @@ -(* TODO: Remove this once Bucklescript upgrade to OCaml 4.03+ as that version include result *) -module Result = Tea_result - -module Cmd = Tea_cmd - -module Sub = Tea_sub - -module App = Tea_app - -module Html = Tea_html - -module Svg = Tea_svg - -(* module Task = Tea_task *) - -module Program = Tea_program - - -module Time = Tea_time - - -module Json = Tea_json - - -module Navigation = Tea_navigation - - -module Random = Tea_random - - -module AnimationFrame = Tea_animationframe - -module Mouse = Tea_mouse - -module Http = Tea_http - - -module Ex = Tea_ex diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_animationframe.ml b/jscomp/build_tests/bucklescript-tea/src/tea_animationframe.ml deleted file mode 100644 index e9fe791833..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_animationframe.ml +++ /dev/null @@ -1,48 +0,0 @@ - - -type t = - { time : Tea_time.t - ; delta : Tea_time.t - } - -let every ?(key="") tagger = - let open Vdom in - let enableCall callbacks = - (* let () = Js.log ("rAF", "enable") in *) - let lastTime = ref (Web.Date.now ()) in - let id = ref None in - let rec onFrame _time = - let time = Web.Date.now () in - match !id with - | None -> () - | Some _i -> - let ret = - { time = time - ; delta = if time < !lastTime then 0.0 else time -. !lastTime - } in - let () = lastTime := time in - let () = callbacks.enqueue (tagger ret) in - match !id with - | None -> () - | Some _stillActive -> - let () = id := Some (Web.Window.requestAnimationFrame onFrame) in - () in - let () = id := Some (Web.Window.requestAnimationFrame onFrame) in - fun () -> match !id with - | None -> () - | Some i -> - (* let () = Js.log ("rAF", "disable") in *) - let () = Web.Window.cancelAnimationFrame i in - let () = id := None in - () - in Tea_sub.registration key enableCall - - -let times ?(key="") tagger = - every - (fun ev -> tagger ~key:key ev.time) - - -let diffs ?(key="") tagger = - every - (fun ev -> tagger ~key:key ev.delta) diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_app.ml b/jscomp/build_tests/bucklescript-tea/src/tea_app.ml deleted file mode 100644 index 834dbbe0d6..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_app.ml +++ /dev/null @@ -1,423 +0,0 @@ -(* "OAK-TEA" Maybe? For OCaml Application Kernal TEA *) - - -(* TODO: Create a new program interface to make the program type just handle init/update/shutdown and such interface - functionality. Top level should just be a model change handler, what is currently 'view', and multiple programs - that can update their own part of the model, of which the entirety can be accessed by view. Probably should be in a - Tea.AppEx package or something. Unsure how to work with compatability with Tea.App, perhaps have Tea.App delegate to - Tea.AppEx or so as a simple wrapper? *) - - -(* module type Program = sig - type flags - type model - type msg - val init : flags -> model - val update : model -> msg -> model * 'msg Tea_cmd.t - val subscriptions : model -> int - (* val view : model -> msg Vdom.t *) -end *) - -(* type 'flags 'model testRec = { - init : 'flags -> 'model -} *) - -(* type ('flags, 'model, 'msg) fullProgram = { - internal : unit -> unit; - init : 'flags -> 'model * 'msg Tea_cmd.t; - update : 'model -> 'msg -> 'model * 'msg Tea_cmd.t; - view : 'model -> 'msg Vdom.t; -} *) - -type ('flags, 'model, 'msg) program = { - init : 'flags -> 'model * 'msg Tea_cmd.t; - update : 'model -> 'msg -> 'model * 'msg Tea_cmd.t; - view : 'model -> 'msg Vdom.t; - subscriptions : 'model -> 'msg Tea_sub.t; - shutdown : 'model -> 'msg Tea_cmd.t; -} - - -type ('flags, 'model, 'msg) standardProgram = { - init : 'flags -> 'model * 'msg Tea_cmd.t; - update : 'model -> 'msg -> 'model * 'msg Tea_cmd.t; - view : 'model -> 'msg Vdom.t; - subscriptions : 'model -> 'msg Tea_sub.t; -} - -type ('model, 'msg) beginnerProgram = { - model : 'model; - update : 'model -> 'msg -> 'model; - view : 'model -> 'msg Vdom.t; -} - - -type ('model, 'msg) pumpInterface = { - startup : unit -> unit; - render_string : 'model -> string; - handleMsg : 'model -> 'msg -> 'model; - shutdown : 'msg Tea_cmd.t -> unit; -} - - -type 'msg programInterface = < - pushMsg : 'msg -> unit; -> Js.t - -external makeProgramInterface : - pushMsg:('msg -> unit) -> - shutdown:(unit -> unit) -> - getHtmlString:(unit -> string) -> - 'msg programInterface = "" [@@bs.obj] - - - -(* TODO: Need to refactor the program layers to layer everything properly, things are a bit mixed up right now... *) - - -(* let programStateWrapper initModel pump = - let model = ref initModel in - let rec handler msg = - let newModel = pump !model msg in - (model := newModel) in - handler *) - -let programStateWrapper initModel pump shutdown = -(* let programStateWrapper : 'model -> ('msg Vdom.applicationCallbacks ref -> 'model -> 'msg) -> ('msg -> unit) = fun initModel pump -> *) -(* let programStateWrapper : 'model -> ('msg Vdom.applicationCallbacks ref -> 'model -> 'msg -> 'model) -> 'msg programInterface = fun initModel pump -> *) - let open Vdom in - let model = ref initModel in - let callbacks = ref { enqueue = fun _msg -> Js.log "INVALID enqueue CALL!" } in - let pumperInterfaceC () = pump callbacks in - let pumperInterface = pumperInterfaceC () in - (* let handler = function - | None -> () - | Some msg -> - let newModel = pumper !model msg in - let () = (model := newModel) in - () in *) - let pending : 'msg list option ref = ref None in - let rec handler msg = - match !pending with - | None -> - let () = pending := Some [] in - (* let () = Js.log ("APP", "mainloop", "pre", !model) in *) - let newModel = pumperInterface.handleMsg !model msg in - (* let () = Js.log ("APP", "mainloop", "post", newModel) in *) - let () = (model := newModel) in - ( match !pending with - | None -> failwith "INVALID message queue state, should never be None during message processing!" - | Some [] -> pending := None - | Some msgs -> - let () = pending := None in - List.iter handler (List.rev msgs) - ) - | Some msgs -> pending := Some (msg :: msgs) in - let finalizedCBs : 'msg Vdom.applicationCallbacks = { - enqueue = fun msg -> handler msg; - } in - let () = (callbacks := finalizedCBs) in - let pi_requestShutdown () = - let () = callbacks := { enqueue = fun _msg -> Js.log "INVALID message enqueued when shut down" } in - let cmd = shutdown !model in - let () = pumperInterface.shutdown cmd in - () in - let render_string () = - let rendered = pumperInterface.render_string !model in - rendered in - let () = pumperInterface.startup () in - makeProgramInterface - ~pushMsg:handler - ~shutdown:pi_requestShutdown - ~getHtmlString:render_string - - -let programLoop update view subscriptions initModel initCmd = function - | None -> fun callbacks -> - let oldSub = ref Tea_sub.none in - let handleSubscriptionChange model = - (* let open Vdom in *) - let newSub = subscriptions model in - oldSub := (Tea_sub.run callbacks callbacks !oldSub newSub) in - { startup = - ( fun () -> - let () = Tea_cmd.run callbacks initCmd in - let () = handleSubscriptionChange initModel in - () - ) - ; render_string = - ( fun model -> - let vdom = view model in - let rendered = Vdom.renderToHtmlString vdom in - rendered - ) - ; handleMsg = - ( fun model msg -> - let newModel, cmd = update model msg in - (* let open Vdom in *) - let () = Tea_cmd.run callbacks cmd in - let () = handleSubscriptionChange newModel in - newModel - ) - ; shutdown = (fun cmd -> - let () = Tea_cmd.run callbacks cmd in (* TODO: Perhaps add cancelable commands? *) - let () = oldSub := (Tea_sub.run callbacks callbacks !oldSub Tea_sub.none) in - () - ) - } - | Some parentNode -> fun callbacks -> - (* let priorRenderedVdom = ref [view initModel] in *) - let priorRenderedVdom = ref [] in - (* let lastVdom = ref (!priorRenderedVdom) in *) - let latestModel = ref initModel in - let nextFrameID = ref None in - let doRender _delta = - match !nextFrameID with - | None -> () (* The render has been canceled, possibly by shutting down, do nothing *) - | Some _id -> - let newVdom = [view !latestModel] in - let justRenderedVdom = Vdom.patchVNodesIntoElement callbacks parentNode !priorRenderedVdom newVdom in - let () = priorRenderedVdom := justRenderedVdom in - (* let () = Vdom.patchVNodesIntoElement callbacks parentNode !priorRenderedVdom !lastVdom in - let () = priorRenderedVdom := (!lastVdom) in *) - (nextFrameID := None) in - let scheduleRender () = match !nextFrameID with - | Some _ -> () (* A frame is already scheduled, nothing to do *) - | None -> - if false then (* This turns on or off requestAnimationFrame or real-time rendering, false for the benchmark, should be true about everywhere else. *) - let id = Web.Window.requestAnimationFrame doRender in - let () = nextFrameID := Some id in - () - else - let () = nextFrameID := Some (-1) in - doRender 16 in - (* let () = Js.log (Vdom.createVNodeIntoElement callbacks !lastVdom parentNode) in *) - (* We own the passed in node, clear it out TODO: Clear it out properly *) - (* let () = Js.log ("Blah", Web.Node.firstChild parentNode, Js.Null.test (Web.Node.firstChild parentNode), false, true) in *) - let clearPnode () = while (Js.Array.length (Web.Node.childNodes parentNode)) > 0 do - match Js.Null.toOption (Web.Node.firstChild parentNode) with - | None -> () - | Some firstChild -> let _removedChild = Web.Node.removeChild parentNode firstChild in () - done in - (* let () = Vdom.patchVNodesIntoElement callbacks parentNode [] (!lastVdom) in *) - (* let () = Vdom.patchVNodesIntoElement callbacks parentNode [] (!priorRenderedVdom) in *) - (* Initial render *) - let oldSub = ref Tea_sub.none in - let handleSubscriptionChange model = - (* let open Vdom in *) - let newSub = subscriptions model in - oldSub := (Tea_sub.run callbacks callbacks !oldSub newSub) in - let handlerStartup () = - let () = clearPnode () in - let () = Tea_cmd.run callbacks initCmd in - let () = handleSubscriptionChange !latestModel in - let () = nextFrameID := Some (-1) in - let () = doRender 16 in - () in - let render_string model = - let vdom = view model in - let rendered = Vdom.renderToHtmlString vdom in - rendered in - let handler model msg = - let newModel, cmd = update model msg in - let () = latestModel := newModel in - (* let open Vdom in *) - (* let () = Js.log ("APP", "latestModel", "precmd", !latestModel) in *) - let () = Tea_cmd.run callbacks cmd in - (* let () = Js.log ("APP", "latestModel", "postcmd", !latestModel) in *) - (* TODO: Figure out if it is better to get view on update like here, or do it in doRender... *) - (* let newVdom = view newModel in (* Process VDom diffs here with callbacks *) *) - (* let () = Vdom.patchVNodeIntoElement callbacks parentNode !lastVdom newVdom in *) - (* let () = Js.log lastVdom in *) - (* let () = Js.log newVdom in *) - (* let () = Js.log (Vdom.createVNodeIntoElement callbacks newVdom parentNode) in *) - (* let () = lastVdom := [newVdom] in *) - let () = scheduleRender () in - (* let () = Js.log ("APP", "latestModel", "presub", !latestModel) in *) - let () = handleSubscriptionChange newModel in - (* let () = Js.log ("APP", "latestModel", "postsub", !latestModel) in *) - newModel in - let handlerShutdown cmd = - (* let open Vdom in *) - let () = nextFrameID := None in - let () = Tea_cmd.run callbacks cmd in - let () = oldSub := (Tea_sub.run callbacks callbacks !oldSub Tea_sub.none) in - let () = priorRenderedVdom := [] in - let () = clearPnode () in - () in - { startup = handlerStartup - ; render_string = render_string - ; handleMsg = handler - ; shutdown = handlerShutdown - } - - -let program : ('flags, 'model, 'msg) program -> Web.Node.t Js.null_undefined -> 'flags -> 'msg programInterface = - fun {init; update; view; subscriptions; shutdown} pnode flags -> - let () = Web.polyfills () in - let initModel, initCmd = init flags in - let opnode = Js.Null_undefined.toOption pnode in - let pumpInterface = programLoop update view subscriptions initModel initCmd opnode in - programStateWrapper initModel pumpInterface shutdown - - -let standardProgram : ('flags, 'model, 'msg) standardProgram -> Web.Node.t Js.null_undefined -> 'flags -> 'msg programInterface = - fun {init; update; view; subscriptions} pnode args -> - program { - init = init; - update = update; - view = view; - subscriptions = subscriptions; - shutdown = fun _model -> Tea_cmd.none - } pnode args - - -let beginnerProgram : ('model, 'msg) beginnerProgram -> Web.Node.t Js.null_undefined -> unit -> 'msg programInterface = - fun {model; update; view} pnode () -> - standardProgram { - init = (fun () -> (model, Tea_cmd.none)); - update = (fun model msg -> (update model msg, Tea_cmd.none)); - view = view; - subscriptions = (fun _model -> Tea_sub.none) - } pnode () - - -let map func vnode = - Vdom.map func vnode - -(* let fullProgram program pnode flags = - match Js.Null_undefined.toOption pnode with - | None -> Web.Document.body () - | Some parentNode -> parentNode *) - -(* class fullProgramClass {internal; init; update; view} pnode flags = object(self) *) -(* class ['msg, 'model] fullProgramClass - (msgHandler : 'model -> 'msg -> 'model * 'msg Tea_cmd.t) - (initModel : 'model) - (initCmd : 'msg Tea_cmd.t) - (view : 'model -> 'msg Vdom.t) - pnode = - object(self) - val mutable model = initModel - val mutable lastView = view initModel - - initializer - Js.log initCmd - - method update (msg : 'msg) = - let (newModel, newCmd) = msgHandler model msg in - model <- newModel; - cmd <- newCmd - end *) - -(* let programStateWrapperInit initModel = - ref initModel - -let programStateWrapper model pump = - let rec handler msg = - let newModel = pump handler !model msg in - (model := newModel) in - handler - - - -let programLoopInit msgHandler view model = function - | None -> None - | Some parentNode -> - let vdom = view model in - let () = Js.log (Vdom.createVNodesIntoElement msgHandler [vdom] parentNode) in - let rvdom = ref vdom in - Some (parentNode, rvdom) - -let programLoop = function - | None -> fun update _view _initModel msgHandler model msg -> - let newModel, _newCmd = update model msg in (* TODO: Process commands to msgHandler *) - newModel - | Some (parentNode, lastVdom) -> fun update view initModel msgHandler -> - let handler model msg = - let newModel, _newCmd = update model msg in (* TODO: Process commands to msgHandler *) - let newVdom = view newModel in (* Process VDom diffs here with msgHandler *) - (* let () = Js.log lastVdom in *) - (* let () = Js.log newVdom in *) - (lastVdom := newVdom); - newModel in - handler - - -let program {init; update; view} pnode flags = - let initModel, initCmd = init flags in - let opnode = Js.Null_undefined.toOption pnode in - let modelState = programStateWrapperInit initModel in - let rec viewState msgHandler = programLoopInit msgHandler view initModel opnode - and pump_unfixed msgHandler = programLoop viewState update view initModel msgHandler in - (* let rec pump model msg = programLoop opnode update view initModel msgHandler model msg *) - let rec msgHandler msg = programStateWrapper modelState (pump_unfixed msgHandler) msg in - fun msg -> msgHandler msg *) - - - (* new fullProgramClass - update - initModel - initCmds - view - (Js.Null_undefined.toOption pnode) *) - - (* { - internal = (fun () -> Js.log "internal update"); - init = init; - update = update; - view = view; - } (Js.Null_undefined.toOption pnode) flags *) - - - (* match Js.Null_undefined.toOption pnode with - | None -> Web.Document.body () - | Some parentNode -> parentNode *) - - -(* let beginnerProgram program = function - | None -> Js.log 42 - | Some parentNode -> Js.log 84 *) - -(* let beginnerProgram program pnode = match Js.Null_undefined.toOption pnode with - | None -> Web.Document.body () - | Some node -> node *) - -(* let beginnerPrograms pnode = match Js.Null_undefined.toOption pnode with - | None -> Web.Document.body () - | Some node -> Web.Node.style node *) - - -(* -module type ProgramState = sig -end - -module MakeProgram (Prog : Program) : ProgramState = struct - (* module Program = Prog *) -end - -let makeProgram p = - let module P = (val p : Program) in - (module struct - let x = P.init - let y = 42 - end : ProgramState) - - -module type Main = sig -end - -module type App = sig -end - -(* -module Make (Prog : Program) : App = struct - (* let x = M.x + 1 *) -end *) - -module Make (MainProg : Main) : App = struct - (* let x = M.x + 1 *) -end - -(* let programWithFlags (module Prog : Program) = - 42 *) *) diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_cmd.ml b/jscomp/build_tests/bucklescript-tea/src/tea_cmd.ml deleted file mode 100644 index fe93fb60e8..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_cmd.ml +++ /dev/null @@ -1,56 +0,0 @@ - - -type 'msg applicationCallbacks = 'msg Vdom.applicationCallbacks - -type 'msg t = - | NoCmd - | Tagger of ('msg applicationCallbacks ref -> unit) - | Batch of 'msg t list - | EnqueueCall of ('msg applicationCallbacks ref -> unit) - - - -let none = NoCmd - - -let batch cmds = - Batch cmds - - -let call call = - EnqueueCall call - - -let fnMsg fnMsg = - let open Vdom in - EnqueueCall (fun callbacks -> !callbacks.enqueue (fnMsg ())) - - -let msg msg = - let open Vdom in - EnqueueCall (fun callbacks -> !callbacks.enqueue msg) - - -let rec run callbacks = - function - | NoCmd -> () - | Tagger tagger -> tagger callbacks - | Batch cmds -> List.fold_left (fun () cmd -> run callbacks cmd) () cmds - | EnqueueCall cb -> - (* let () = Js.log ("Cmd.run", "enqueue", cb) in *) - cb callbacks - - - -(* let wrapCallbacks func callbacks = *) -(* let open Vdom in *) -(* ref *) -(* { enqueue = (fun msg -> !callbacks.enqueue (func msg)) *) -(* } *) - -let map : ('a -> 'b) -> 'a t -> 'b t = fun func cmd -> - let open Vdom in - Tagger - ( fun callbacks -> - run (wrapCallbacks func callbacks) cmd - ) diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_ex.ml b/jscomp/build_tests/bucklescript-tea/src/tea_ex.ml deleted file mode 100644 index 2139e23e08..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_ex.ml +++ /dev/null @@ -1,52 +0,0 @@ - -(* Everything here is not in Elm and is purely used as an extension and may vanish at any time if a better API comes out. *) - -module LocalStorage = struct - open Tea_task - open Tea_result - - let length = - nativeBinding (fun cb -> - match Web.Window.LocalStorage.length Web.Window.window with - | None -> cb (Error "localStorage is not available") - | Some value -> cb (Ok value) - ) - - let clear = - nativeBinding (fun cb -> - match Web.Window.LocalStorage.clear Web.Window.window with - | None -> cb (Error "localStorage is not available") - | Some value -> cb (Ok value) - ) - let clearCmd () = Tea_task.attemptOpt (fun _ -> None) clear - - let key idx = - nativeBinding (fun cb -> - match Web.Window.LocalStorage.key Web.Window.window idx with - | None -> cb (Error "localStorage is not available") - | Some value -> cb (Ok value) - ) - - let getItem key = - nativeBinding (fun cb -> - match Web.Window.LocalStorage.getItem Web.Window.window key with - | None -> cb (Error "localStorage is not available") - | Some value -> cb (Ok value) - ) - - let removeItem key = - nativeBinding (fun cb -> - match Web.Window.LocalStorage.removeItem Web.Window.window key with - | None -> cb (Error "localStorage is not available") - | Some value -> cb (Ok value) - ) - let removeItemCmd key = Tea_task.attemptOpt (fun _ -> None) (removeItem key) - - let setItem key value = - nativeBinding (fun cb -> - match Web.Window.LocalStorage.setItem Web.Window.window key value with - | None -> cb (Error "localStorage is not available") - | Some () -> cb (Ok ()) - ) - let setItemCmd key value = Tea_task.attemptOpt (fun _ -> None) (setItem key value) -end diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_html.ml b/jscomp/build_tests/bucklescript-tea/src/tea_html.ml deleted file mode 100644 index 50b2a1d778..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_html.ml +++ /dev/null @@ -1,252 +0,0 @@ -open Vdom - -module Cmds = Tea_html_cmds - -(* let map lift vdom = - *) - -(* Nodes *) - -let noNode = noNode - -let text str = text str - -let lazy1 key gen = lazyGen key gen - -let node ?(namespace="") tagName ?(key="") ?(unique="") props nodes = fullnode namespace tagName key unique props nodes - -(* let embedProgram main = custom *) - - -(* HTML Elements *) - -let br props = fullnode "" "br" "br" "br" props [] - -let br' ?(key="") ?(unique="") props nodes = fullnode "" "br" key unique props nodes - -let div ?(key="") ?(unique="") props nodes = fullnode "" "div" key unique props nodes - -let span ?(key="") ?(unique="") props nodes = fullnode "" "span" key unique props nodes - -let p ?(key="") ?(unique="") props nodes = fullnode "" "p" key unique props nodes - -let pre ?(key="") ?(unique="") props nodes = fullnode "" "pre" key unique props nodes - -let a ?(key="") ?(unique="") props nodes = fullnode "" "a" key unique props nodes - -let section ?(key="") ?(unique="") props nodes = fullnode "" "section" key unique props nodes - -let header ?(key="") ?(unique="") props nodes = fullnode "" "header" key unique props nodes - -let footer ?(key="") ?(unique="") props nodes = fullnode "" "footer" key unique props nodes - -let h1 ?(key="") ?(unique="") props nodes = fullnode "" "h1" key unique props nodes - -let h2 ?(key="") ?(unique="") props nodes = fullnode "" "h2" key unique props nodes - -let h3 ?(key="") ?(unique="") props nodes = fullnode "" "h3" key unique props nodes - -let h4 ?(key="") ?(unique="") props nodes = fullnode "" "h4" key unique props nodes - -let h5 ?(key="") ?(unique="") props nodes = fullnode "" "h5" key unique props nodes - -let h6 ?(key="") ?(unique="") props nodes = fullnode "" "h6" key unique props nodes - -let i ?(key="") ?(unique="") props nodes = fullnode "" "i" key unique props nodes - -let strong ?(key="") ?(unique="") props nodes = fullnode "" "strong" key unique props nodes - -let button ?(key="") ?(unique="") props nodes = fullnode "" "button" key unique props nodes - -let input' ?(key="") ?(unique="") props nodes = fullnode "" "input" key unique props nodes - -let textarea ?(key="") ?(unique="") props nodes = fullnode "" "textarea" key unique props nodes - -let label ?(key="") ?(unique="") props nodes = fullnode "" "label" key unique props nodes - -let ul ?(key="") ?(unique="") props nodes = fullnode "" "ul" key unique props nodes - -let ol ?(key="") ?(unique="") props nodes = fullnode "" "ol" key unique props nodes - -let li ?(key="") ?(unique="") props nodes = fullnode "" "li" key unique props nodes - -let table ?(key="") ?(unique="") props nodes = fullnode "" "table" key unique props nodes - -let thead ?(key="") ?(unique="") props nodes = fullnode "" "thead" key unique props nodes - -let tfoot ?(key="") ?(unique="") props nodes = fullnode "" "tfoot" key unique props nodes - -let tbody ?(key="") ?(unique="") props nodes = fullnode "" "tbody" key unique props nodes - -let th ?(key="") ?(unique="") props nodes = fullnode "" "th" key unique props nodes - -let tr ?(key="") ?(unique="") props nodes = fullnode "" "tr" key unique props nodes - -let td ?(key="") ?(unique="") props nodes = fullnode "" "td" key unique props nodes - -let progress ?(key="") ?(unique="") props nodes = fullnode "" "progress" key unique props nodes - -let img ?(key="") ?(unique="") props nodes = fullnode "" "img" key unique props nodes - -let select ?(key="") ?(unique="") props nodes = fullnode "" "select" key unique props nodes - -let option' ?(key="") ?(unique="") props nodes = fullnode "" "option" key unique props nodes - -let form ?(key="") ?(unique="") props nodes = fullnode "" "form" key unique props nodes - -let nav ?(key="") ?(unique="") props nodes = fullnode "" "nav" key unique props nodes - -let main ?(key="") ?(unique="") props nodes = fullnode "" "main" key unique props nodes - -let aside ?(key="") ?(unique="") props nodes = fullnode "" "aside" key unique props nodes - -let article ?(key="") ?(unique="") props nodes = fullnode "" "article" key unique props nodes - -let details ?(key="") ?(unique="") props nodes = fullnode "" "details" key unique props nodes - -let figcaption ?(key="") ?(unique="") props nodes = fullnode "" "figcaption" key unique props nodes - -let figure ?(key="") ?(unique="") props nodes = fullnode "" "figure" key unique props nodes - -let mark ?(key="") ?(unique="") props nodes = fullnode "" "mark" key unique props nodes - -let summary ?(key="") ?(unique="") props nodes = fullnode "" "summary" key unique props nodes - -let time ?(key="") ?(unique="") props nodes = fullnode "" "time" key unique props nodes - -(* Properties *) - -let noProp = Vdom.noProp - -let id str = prop "id" str - -(* `href` is actually an attribute, not a property, but need it here for Elm compat... *) -let href str = attribute "" "href" str - -(* `src` is actually an attribute, not a property, but need it here for Elm compat... *) -let src str = attribute "" "src" str - -let class' name = prop "className" name - -let classList classes = - classes - |> List.filter (fun (_fst, snd) -> snd) - |> List.map (fun (fst, _snd) -> fst) - |> String.concat " " - |> class' - -let type' typ = prop "type" typ - -let style key value = style key value - -let styles s = styles s - -let placeholder str = prop "placeholder" str - -let autofocus b = if b then prop "autofocus" "autofocus" else noProp - -let value str = prop "value" str - -let name str = prop "name" str - -let checked b = if b then prop "checked" "checked" else noProp - -let for' str = prop "htmlFor" str - -let hidden b = if b then prop "hidden" "hidden" else noProp - -let target t = prop "target" t - -let action a = prop "action" a - -let method' m = prop "method" m - -(* Events *) - -let onCB eventName key cb = onCB eventName key cb - -let onMsg eventName msg = onMsg eventName msg - -let onInputOpt ?(key="") msg = - onCB "input" key - (fun ev -> - match Js.Undefined.toOption ev##target with - | None -> None - | Some target -> match Js.Undefined.toOption target##value with - | None -> None - | Some value -> msg value - ) - -let onInput ?(key="") msg = onInputOpt ~key:key (fun ev -> Some (msg ev)) - -let onChangeOpt ?(key="") msg = - onCB "change" key - (fun ev -> - match Js.Undefined.toOption ev##target with - | None -> None - | Some target -> match Js.Undefined.toOption target##value with - | None -> None - | Some value -> msg value - ) - -let onChange ?(key="") msg = onChangeOpt ~key:key (fun ev -> Some (msg ev)) - -let onClick msg = - onMsg "click" msg - -let onDoubleClick msg = - onMsg "dblclick" msg - -let onBlur msg = - onMsg "blur" msg - -let onFocus msg = - onMsg "focus" msg - -let onCheckOpt ?(key="") msg = - onCB "change" key - (fun ev -> - match Js.Undefined.toOption ev##target with - | None -> None - | Some target -> match Js.Undefined.toOption target##checked with - | None -> None - | Some value -> msg value - ) - -let onCheck ?(key="") msg = onCheckOpt ~key:key (fun ev -> Some (msg ev)) - -let onMouseDown msg = - onMsg "mousedown" msg - -let onMouseUp msg = - onMsg "mouseup" msg - -let onMouseEnter msg = - onMsg "mouseenter" msg - -let onMouseLeave msg = - onMsg "mouseleave" msg - -let onMouseOver msg = - onMsg "mouseover" msg - -let onMouseOut msg = - onMsg "mouseout" msg - - -module Attributes = struct - - let max value = attribute "" "max" value - - let min value = attribute "" "min" value - - let step value = attribute "" "step" value - - let disabled b = if b then attribute "" "disabled" "true" else noProp - - let selected b = if b then attribute "" "selected" "true" else noProp - - let acceptCharset c = attribute "" "accept-charset" c - - let rel value = attribute "" "rel" value -end diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_html_cmds.ml b/jscomp/build_tests/bucklescript-tea/src/tea_html_cmds.ml deleted file mode 100644 index a4c277aa4e..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_html_cmds.ml +++ /dev/null @@ -1,11 +0,0 @@ - -let focus id = - Tea_cmd.call (fun _enqueue -> match Js.Null_undefined.toOption (Web.Document.getElementById id) with - | None -> Js.log ("Attempted to focus a non-existant element of: ", id) - | Some elem -> - (* let () = Js.log ("Focusing element", id, elem) in *) - let ecb _ignored = Web.Node.focus elem in - let cb _ignored = let _unhandledID = Web.Window.requestAnimationFrame ecb in () in (* One to get out of the current render frame*) - let _unhandledID = Web.Window.requestAnimationFrame cb in (* And another to properly focus *) - () - ) diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_http.ml b/jscomp/build_tests/bucklescript-tea/src/tea_http.ml deleted file mode 100644 index 34dbb247d0..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_http.ml +++ /dev/null @@ -1,235 +0,0 @@ - - -type response_status = - { code : int - ; message : string - } - -type requestBody = Web.XMLHttpRequest.body -type bodyType = Web.XMLHttpRequest.responseType -type responseBody = Web.XMLHttpRequest.responseBody - -type response = - { url : string - ; status : response_status - ; headers : string Map.Make(String).t - ; body : responseBody - } - -type 'parsedata error = - | BadUrl of string - | Timeout - | NetworkError - | Aborted - | BadStatus of response - | BadPayload of 'parsedata * response - -let string_of_error = function - | BadUrl url -> "Bad Url: " ^ url - | Timeout -> "Timeout" - | NetworkError -> "Unknown network error" - | Aborted -> "Request aborted" - | BadStatus resp -> "Bad Status: " ^ resp.url - | BadPayload (_customData, resp) -> "Bad Payload: " ^ resp.url - -type header = Header of string * string - -type 'res expect = - Expect of bodyType * (response -> ('res, string) Tea_result.t) - -type 'msg requestEvents = - { onreadystatechange : ('msg Vdom.applicationCallbacks ref -> (Web.XMLHttpRequest.event_readystatechange -> unit)) option - ; onprogress : ('msg Vdom.applicationCallbacks ref -> (Web.XMLHttpRequest.event_progress -> unit)) option - } - -let emptyRequestEvents = - { onreadystatechange = None - ; onprogress = None - } - -type 'res rawRequest = - { method' : string - ; headers : header list - ; url : string - ; body : requestBody - ; expect : 'res expect - ; timeout : Tea_time.t option - ; withCredentials : bool - } - -type ('msg, 'res) request = - Request of 'res rawRequest * 'msg requestEvents option - -let expectStringResponse func = - let open Web.XMLHttpRequest in - Expect - ( TextResponseType - , ( fun { body; _ } -> - match body with - | TextResponse s -> func s - | _ -> Tea_result.Error "Non-text response returned" - ) - ) - - -let expectString = - expectStringResponse (fun resString -> Tea_result.Ok resString) - - -let request rawRequest = - Request (rawRequest, None) - - -let getString url = - request - { method' = "GET" - ; headers = [] - ; url = url - ; body = Web.XMLHttpRequest.EmptyBody - ; expect = expectString - ; timeout = None - ; withCredentials = false - } - - -let send resultToMessage (Request (request, maybeEvents)) = - let module StringMap = Map.Make(String) in - let {method'; headers; url; body; expect; timeout; withCredentials } = request in - let (Expect (typ, responseToResult)) = expect in - Tea_cmd.call (fun callbacks -> - let enqRes result = - fun _ev -> - let open Vdom in - !callbacks.enqueue (resultToMessage result) in - let enqResError result = enqRes (Tea_result.Error result) in - let enqResOk result = enqRes (Tea_result.Ok result) in - let xhr = Web.XMLHttpRequest.create () in - let setEvent ev cb = ev cb xhr in - let () = match maybeEvents with - | None -> () - | Some { onprogress; onreadystatechange } -> - let open Web.XMLHttpRequest in - let mayCB thenDo = function - | None -> () - | Some v -> thenDo (v callbacks) in - let () = mayCB (setEvent set_onreadystatechange) onreadystatechange in - let () = mayCB (setEvent set_onprogress) onprogress in - () in - let () = setEvent Web.XMLHttpRequest.set_onerror (enqResError NetworkError) in - let () = setEvent Web.XMLHttpRequest.set_ontimeout (enqResError Timeout) in - let () = setEvent Web.XMLHttpRequest.set_onabort (enqResError Aborted) in - let () = setEvent Web.XMLHttpRequest.set_onload - ( fun _ev -> - let open Web.XMLHttpRequest in - let headers = - match getAllResponseHeadersAsDict xhr with - | Tea_result.Error _e -> StringMap.empty - | Tea_result.Ok headers -> headers in - let response = - { status = { code = get_status xhr; message = get_statusText xhr } - ; headers = headers - ; url = get_responseURL xhr - ; body = get_response xhr - } in - if response.status.code < 200 || 300 <= response.status.code - then enqResError (BadStatus response) () - else match responseToResult response with - | Tea_result.Error error -> enqResError (BadPayload (error, response)) () - | Tea_result.Ok result -> enqResOk result () - ) in - let () = try Web.XMLHttpRequest.open_ method' url xhr - with _ -> enqResError (BadUrl url) () in - let () = - let setHeader (Header (k, v)) = Web.XMLHttpRequest.setRequestHeader k v xhr in - let () = List.iter setHeader headers in - let () = Web.XMLHttpRequest.set_responseType typ xhr in - let () = - match timeout with - | None -> () - | Some t -> Web.XMLHttpRequest.set_timeout t xhr in - let () = Web.XMLHttpRequest.set_withCredentials withCredentials xhr in - () in - let () = Web.XMLHttpRequest.send body xhr in - () - ) - -external encodeURIComponent : string -> string = "encodeURIComponent" [@@bs.val] - -let encodeUri str = - encodeURIComponent str - -external decodeURIComponent : string -> string = "decodeURIComponent" [@@bs.val] - -let decodeUri str = - try Some (decodeURIComponent str) - with _ -> None - -module Progress = struct - - (* - type bytesProgressed = - { bytes : int - ; bytesExpected : int - } - - type ('data, 'parseFailData) t = - | NoProgress - (* SomeProgress (bytes, bytesExpected) *) - | SomeProgress of bytesProgressed - | FailProgress of 'parseFailData error - | DoneProgress of 'data - - type ('msg, 'parseFailData) trackedRequest = - { request : 'msg rawRequest - ; toProgress : bytesProgressed -> 'msg - ; toError : 'parseFailData error -> 'msg - } - *) - - type t = - { bytes : int - ; bytesExpected : int - } - - let emptyProgress = - { bytes = 0 - ; bytesExpected = 0 - } - - (* Yeah this does not follow the original API, but that original - API is... not extensible... Instead, we have generic event - listener support here so no need to constrain the API. - Might still want to make a subscription variant though... *) - let track toMessage (Request (request, events)) = - let onprogress = Some - ( fun callbacks ev -> - let open Vdom in - let lengthComputable = - let open Tea_json.Decoder in - let open Tea_result in - match decodeValue (field "lengthComputable" bool) ev with - | Error _e -> false - | Ok v -> v in - if lengthComputable then - let open Tea_json.Decoder in - let open Tea_result in - let decoder = - map2 (fun bytes bytesExpected -> {bytes; bytesExpected}) - (field "loaded" int) - (field "total" int) - in - match decodeValue decoder ev with - | Error _e -> () - | Ok t -> - !callbacks.enqueue (toMessage t) - ) in - let events = - match events with - | None -> emptyRequestEvents - | Some e -> e - in Request - (request - , Some { events with onprogress } - ) - -end diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_json.ml b/jscomp/build_tests/bucklescript-tea/src/tea_json.ml deleted file mode 100644 index dff9233be3..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_json.ml +++ /dev/null @@ -1,553 +0,0 @@ - -module Decoder = struct - - type error = String.t - - module ObjectDict = Map.Make(String) - - type ('input, 'result) t = - Decoder of ('input -> ('result, error) Tea_result.t) - (* - | Parser : (Web.Json.t -> ('result, error) Tea_result.t) -> ('result, error) Tea_result.t t - *) - (* - | Value : (Web.Json.t, error) Tea_result.t t - | Succeed : 'result -> ('result, error) Tea_result.t t - | Fail : error -> (_, error) Tea_result.t t - | Null : 'result -> ('result, error) Tea_result.t t - | String : (string, error) Tea_result.t t - *) - - exception ParseFail of string - - - (* Primitive types *) - - let string = - Decoder - ( fun value -> - let open Web.Json in - match classify value with - | JSONString s -> Tea_result.Ok s - | _ -> Tea_result.Error "Non-string value" - ) - - let int = - Decoder - ( fun value -> - let open Web.Json in - match classify value with - | JSONNumber n -> - if n > (float_of_int min_int) && n < (float_of_int max_int) - then Tea_result.Ok (int_of_float n) - else Tea_result.Error "number out of int range" - | _ -> Tea_result.Error "Non-int value" - ) - - let float = - Decoder - ( fun value -> - let open Web.Json in - match classify value with - | JSONNumber n -> Tea_result.Ok n - | _ -> Tea_result.Error "Non-float-value" - ) - - let bool = - Decoder - ( fun value -> - let open Web.Json in - match classify value with - | JSONTrue -> Tea_result.Ok true - | JSONFalse -> Tea_result.Ok false - | _ -> Tea_result.Error "Non-boolean value" - ) - - let null v = - Decoder - ( fun value -> - let open Web.Json in - match classify value with - | JSONNull -> Tea_result.Ok v - | _ -> Tea_result.Error "Non-null value" - ) - - (* Compound types *) - - let list (Decoder decoder) = - Decoder - ( fun value -> - let open Web.Json in - match classify value with - | JSONArray a -> - ( let parse v = - ( match decoder v with - | Tea_result.Ok r -> r - | Tea_result.Error e -> raise (ParseFail e) - ) in - try Tea_result.Ok (Array.to_list a |> List.map parse) - with ParseFail e -> Tea_result.Error ("list -> " ^ e) - ) - | _ -> Tea_result.Error "Non-list value" - ) - - let array (Decoder decoder) = - Decoder - ( fun value -> - let open Web.Json in - match classify value with - | JSONArray a -> - ( let parse v = - ( match decoder v with - | Tea_result.Ok r -> r - | Tea_result.Error e -> raise (ParseFail e) - ) in - try Tea_result.Ok (Array.map parse a) - with ParseFail e -> Tea_result.Error ("array -> " ^ e) - ) - | _ -> Tea_result.Error "Non-array value" - ) - - let keyValuePairs (Decoder decoder) = - Decoder - ( fun value -> - let open Web.Json in - match classify value with - | JSONObject o -> - ( let keys = Js.Dict.keys o in - let parse k l = - ( match Js.Dict.get o k with - | None -> raise (ParseFail ("Key is undefined: " ^ k)) - | Some v -> - match decoder v with - | Tea_result.Ok r -> (k, r) :: l - | Tea_result.Error e -> raise (ParseFail e) - ) in - try Tea_result.Ok (Array.fold_right parse keys []) - with ParseFail e -> Tea_result.Error ("Invalid keyValuePair parsing: " ^ e) - ) - | _ -> Tea_result.Error "Non-keyValuePair value" - ) - - let dict (Decoder decoder) = - Decoder - ( fun value -> - let open Web.Json in - match classify value with - | JSONObject o -> - ( let keys = Js.Dict.keys o in - let parse k d = - ( match Js.Dict.get o k with - | None -> raise (ParseFail ("Key is undefined: " ^ k)) - | Some v -> - match decoder v with - | Tea_result.Ok r -> ObjectDict.add k r d - | Tea_result.Error e -> raise (ParseFail e) - ) in - let emptyDict = ObjectDict.empty in - try Tea_result.Ok (Array.fold_right parse keys emptyDict) - with ParseFail e -> Tea_result.Error ("Invalid dict parsing: " ^ e) - ) - | _ -> Tea_result.Error "Non-dict value" - ) - - let field key (Decoder decoder) = - Decoder - ( fun value -> - let open Web.Json in - match classify value with - | JSONObject o -> - ( match Js.Dict.get o key with - | None -> Tea_result.Error ("Field Value is undefined: " ^ key) - | Some v -> - match decoder v with - | Ok _ as o -> o - | Error e -> Error ("field `" ^ key ^ "` -> " ^ e) - ) - | _ -> Tea_result.Error "Non-fieldable value" - ) - - let at fields dec = - List.fold_right field fields dec - - let index idx (Decoder decoder) = - Decoder - ( fun value -> - let open Web.Json in - match classify value with - | JSONArray a -> - if idx < 0 || idx > (Array.length a) - then Tea_result.Error ("Array index out of range: " ^ (string_of_int idx)) - else decoder a.(idx) - | _ -> Tea_result.Error "Non-array value" - ) - - let maybe (Decoder decoder) = - Decoder - ( fun value -> - match decoder value with - | Tea_result.Ok r -> Tea_result.Ok (Some r) - | Tea_result.Error _ -> Tea_result.Ok None - ) - - let oneOf decoders = - Decoder - ( fun value -> - let rec parse v = function - | [] -> Tea_result.Error "No one-of's matched" - | ((Decoder decoder) :: rest) -> - try - match decoder v with - | Tea_result.Ok _ as ok -> ok - | Tea_result.Error _ -> parse v rest - with _ -> parse v rest - in parse value decoders - ) - - let map mapper - (Decoder decoder1) = - Decoder - ( fun value -> - let open Tea_result in - match decoder1 value with - | Ok v1 -> Ok (mapper v1) - | Error e -> Error ("map " ^ e) - ) - - let map2 mapper - (Decoder decoder1) - (Decoder decoder2) = - Decoder - ( fun value -> - let open Tea_result in - match - decoder1 value, - decoder2 value - with - | Ok v1, - Ok v2 -> Ok (mapper v1 v2) - | e1, e2 -> - match Tea_result.error_of_first e1 e2 with - | None -> failwith "Impossible case" - | Some e -> Error ("map2 -> " ^ e) - ) - - let map3 mapper - (Decoder decoder1) - (Decoder decoder2) - (Decoder decoder3) = - Decoder - ( fun value -> - let open Tea_result in - match - decoder1 value, - decoder2 value, - decoder3 value - with - | Ok v1, - Ok v2, - Ok v3 -> Ok (mapper v1 v2 v3) - | e1, e2, e3 -> - let open! Tea_result in - match - e1 - |> first e2 - |> first e3 - with - | Ok _ -> failwith "Impossible case" - | Error e -> Error ("map3 -> " ^ e) - ) - - let map4 mapper - (Decoder decoder1) - (Decoder decoder2) - (Decoder decoder3) - (Decoder decoder4) = - Decoder - ( fun value -> - let open Tea_result in - match - decoder1 value, - decoder2 value, - decoder3 value, - decoder4 value - with - | Ok v1, - Ok v2, - Ok v3, - Ok v4 -> Ok (mapper v1 v2 v3 v4) - | e1, e2, e3, e4 -> - let open! Tea_result in - match - e1 - |> first e2 - |> first e3 - |> first e4 - with - | Ok _ -> failwith "Impossible case" - | Error e -> Error ("map4 -> " ^ e) - ) - - let map5 mapper - (Decoder decoder1) - (Decoder decoder2) - (Decoder decoder3) - (Decoder decoder4) - (Decoder decoder5) = - Decoder - ( fun value -> - let open Tea_result in - match - decoder1 value, - decoder2 value, - decoder3 value, - decoder4 value, - decoder5 value - with - | Ok v1, - Ok v2, - Ok v3, - Ok v4, - Ok v5 -> Ok (mapper v1 v2 v3 v4 v5) - | e1, e2, e3, e4, e5 -> - let open! Tea_result in - match - e1 - |> first e2 - |> first e3 - |> first e4 - |> first e5 - with - | Ok _ -> failwith "Impossible case" - | Error e -> Error ("map5 -> " ^ e) - ) - - let map6 mapper - (Decoder decoder1) - (Decoder decoder2) - (Decoder decoder3) - (Decoder decoder4) - (Decoder decoder5) - (Decoder decoder6) = - Decoder - ( fun value -> - let open Tea_result in - match - decoder1 value, - decoder2 value, - decoder3 value, - decoder4 value, - decoder5 value, - decoder6 value - with - | Ok v1, - Ok v2, - Ok v3, - Ok v4, - Ok v5, - Ok v6 -> Ok (mapper v1 v2 v3 v4 v5 v6) - | e1, e2, e3, e4, e5, e6 -> - let open! Tea_result in - match - e1 - |> first e2 - |> first e3 - |> first e4 - |> first e5 - |> first e6 - with - | Ok _ -> failwith "Impossible case" - | Error e -> Error ("map6 -> " ^ e) - ) - - let map7 mapper - (Decoder decoder1) - (Decoder decoder2) - (Decoder decoder3) - (Decoder decoder4) - (Decoder decoder5) - (Decoder decoder6) - (Decoder decoder7) = - Decoder - ( fun value -> - let open Tea_result in - match - decoder1 value, - decoder2 value, - decoder3 value, - decoder4 value, - decoder5 value, - decoder6 value, - decoder7 value - with - | Ok v1, - Ok v2, - Ok v3, - Ok v4, - Ok v5, - Ok v6, - Ok v7 -> Ok (mapper v1 v2 v3 v4 v5 v6 v7) - | e1, e2, e3, e4, e5, e6, e7 -> - let open! Tea_result in - match - e1 - |> first e2 - |> first e3 - |> first e4 - |> first e5 - |> first e6 - |> first e7 - with - | Ok _ -> failwith "Impossible case" - | Error e -> Error ("map7 -> " ^ e) - ) - - let map8 mapper - (Decoder decoder1) - (Decoder decoder2) - (Decoder decoder3) - (Decoder decoder4) - (Decoder decoder5) - (Decoder decoder6) - (Decoder decoder7) - (Decoder decoder8) = - Decoder - ( fun value -> - let open Tea_result in - match - decoder1 value, - decoder2 value, - decoder3 value, - decoder4 value, - decoder5 value, - decoder6 value, - decoder7 value, - decoder8 value - with - | Ok v1, - Ok v2, - Ok v3, - Ok v4, - Ok v5, - Ok v6, - Ok v7, - Ok v8 -> Ok (mapper v1 v2 v3 v4 v5 v6 v7 v8) - | e1, e2, e3, e4, e5, e6, e7, e8 -> - let open! Tea_result in - match - e1 - |> first e2 - |> first e3 - |> first e4 - |> first e5 - |> first e6 - |> first e7 - |> first e8 - with - | Ok _ -> failwith "Impossible case" - | Error e -> Error ("map8 -> " ^ e) - ) - - - (* Fancy Primitives *) - - let succeed v = - Decoder - ( fun _value -> - Tea_result.Ok v - ) - - let fail e = - Decoder - ( fun _value -> - Tea_result.Error e - ) - - let value = - Decoder - ( fun value -> - Tea_result.Ok value - ) - - let andThen func (Decoder decoder) = - Decoder - ( fun value -> - match decoder value with - | Tea_result.Ok r -> - let (Decoder andThenDecoder) = func r in - andThenDecoder value - | Tea_result.Error _ as err -> err - ) - - let lazy_ func = - andThen func (succeed ()) - - let nullable decoder = - oneOf - [ null None - ; map (fun v -> Some v) decoder - ] - - - (* Decoders *) - - (* TODO: Constrain this value type more *) - let decodeValue (Decoder decoder) value = - try decoder value - with - | ParseFail e -> Tea_result.Error e - | _ -> Tea_result.Error "Unknown JSON parsing error" - - let decodeEvent (Decoder decoder) (value : Web_node.event) = - try decoder (Obj.magic value) - with - | ParseFail e -> Tea_result.Error e - | _ -> Tea_result.Error "Unknown JSON parsing error" - - let decodeString decoder string = - try - let value = Web.Json.parseExn string in - decodeValue decoder value - with - (* | JsException e -> Tea_result.Error ("Given an invalid JSON: " ^ e) *) - | _ -> Tea_result.Error "Invalid JSON string" - -end - - -module Encoder = struct - open Web - - type t = Json.t - - let encode indentLevel value = - Web.Json.string_of_json ~indent:indentLevel (Js.Undefined.return value) - - - (* Encoders *) - - let string (v : string) = Json.of_type Json.String v - - let int (v : int) = Json.of_type Json.Number (float_of_int v) - - let float (v : float) = Json.of_type Json.Number v - - let bool (v : bool) = Json.of_type Json.Boolean v - - let null = Json.of_type Json.Null Json.null - - let object_ v = - let aux o (k, v) = - let () = Js.Dict.set o k v in - o in - let o = List.fold_left aux (Js.Dict.empty ()) v in - Json.of_type Json.Object o - - let array (v : 't array) = Json.of_type Json.Array v - - let list (v : 't list) = Json.of_type Json.Array (Array.of_list v) - -end - - -type t = Web.Json.t diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_mouse.ml b/jscomp/build_tests/bucklescript-tea/src/tea_mouse.ml deleted file mode 100644 index 9bdc5f34ff..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_mouse.ml +++ /dev/null @@ -1,43 +0,0 @@ - -type position = { - x : int; - y : int; -} - - -let position = - let open Tea_json.Decoder in - map2 (fun x y -> {x; y}) - (field "pageX" int) - (field "pageY" int) - - -let registerGlobal name key tagger = - let open Vdom in - let enableCall callbacks_base = - let callbacks = ref callbacks_base in - let fn = fun ev -> - let open Tea_json.Decoder in - let open Tea_result in - match decodeEvent position ev with - | Error _ -> None - | Ok pos -> Some (tagger pos) in - let handler = EventHandlerCallback (key, fn) in - let elem = Web_node.document_node in - let cache = eventHandler_Register callbacks elem name handler in - fun () -> - let _ = eventHandler_Unregister elem name cache in - () - in Tea_sub.registration key enableCall - -let clicks ?(key="") tagger = - registerGlobal "click" key tagger - -let moves ?(key="") tagger = - registerGlobal "mousemove" key tagger - -let downs ?(key="") tagger = - registerGlobal "mousedown" key tagger - -let ups ?(key="") tagger = - registerGlobal "mouseup" key tagger diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_navigation.ml b/jscomp/build_tests/bucklescript-tea/src/tea_navigation.ml deleted file mode 100644 index 3aab776854..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_navigation.ml +++ /dev/null @@ -1,84 +0,0 @@ - -type ('flags, 'model, 'msg) navigationProgram = - { init : 'flags -> Web.Location.location -> 'model * 'msg Tea_cmd.t - ; update : 'model -> 'msg -> 'model * 'msg Tea_cmd.t - ; view : 'model -> 'msg Vdom.t - ; subscriptions : 'model -> 'msg Tea_sub.t - ; shutdown : 'model -> 'msg Tea_cmd.t - } - - -let getLocation () = - Web.Location.asRecord (Web.Document.location ()) - - - -let notifier : (Web.Location.location -> unit) option ref = ref None - -let notifyUrlChange () = - match !notifier with - | None -> () - | Some cb -> - let location = getLocation () in - let () = cb location in - () - - -let subscribe tagger = - let open Vdom in - let enableCall callbacks = - let notifyHandler location = - callbacks.enqueue (tagger location) in - let () = notifier := Some notifyHandler in - let handler : Web.Node.event_cb = fun [@bs] _event -> - notifyUrlChange () in - let () = Web.Window.addEventListener "popstate" handler false in - fun () -> Web.Window.removeEventListener "popstate" handler false - in Tea_sub.registration "navigation" enableCall - - - -let replaceState url = - let _ = Web.Window.History.replaceState Web.Window.window (Js.Json.parseExn "{}") "" url in - () - - -let pushState url = - let _ = Web.Window.History.pushState Web.Window.window (Js.Json.parseExn "{}") "" url in - () - - -let modifyUrl url = - Tea_cmd.call (fun _enqueue -> - let () = replaceState url in - let () = notifyUrlChange () in - () - ) - - -let newUrl url = - Tea_cmd.call (fun _enqueue -> - let () = pushState url in - let () = notifyUrlChange () in - () - ) - - -let navigationProgram locationToMessage stuff = - let init flag = - stuff.init flag (getLocation ()) in - - let subscriptions model = - Tea_sub.batch - [ subscribe locationToMessage - ; stuff.subscriptions model - ] in - - let open! Tea_app in - program - { init = init - ; update = stuff.update - ; view = stuff.view - ; subscriptions = subscriptions - ; shutdown = stuff.shutdown - } diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_program.ml b/jscomp/build_tests/bucklescript-tea/src/tea_program.ml deleted file mode 100644 index 304d6defff..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_program.ml +++ /dev/null @@ -1,52 +0,0 @@ - - -type 'msg processMsg = - | PushMsg of 'msg - | Kill - -let spawn initState update shutdown = - let state = ref (Some initState) in - let onMessage procMsg = - match !state with - | None -> () - | Some model -> - ( match procMsg with - | PushMsg msg -> - let () = state := (update model msg) in - () - | Kill -> - let () = shutdown model in - let () = state := None in - () - ) in - onMessage - - - - - -(* let testing0 = - let s = spawn 42 (fun model -> let () = Js.log model in function - | `Inc -> Some (model + 1) - | `Dec -> Some (model - 1) - ) (fun _ -> ()) in - let () = s (PushMsg `Dec) in - let () = s (PushMsg `Dec) in - let () = s Kill in - let () = s (PushMsg `Dec) in - () *) - - - -module type Process = sig - (* This module should be `import`ed into a module that will become a persistent process. - That process should have a handleMsg callback to handle its own message types. - It should call itself - *) - - type msg - - val handleMsg : msg -> unit -end - -let testing1 = 42 diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_random.ml b/jscomp/build_tests/bucklescript-tea/src/tea_random.ml deleted file mode 100644 index 11659a7e0c..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_random.ml +++ /dev/null @@ -1,114 +0,0 @@ - - - -let () = Random.self_init () - - -let minInt = min_int - -let maxInt = max_int - -let minFloat = min_float - -let maxFloat = max_float - - -type 'typ t = - | Generator of (Random.State.t -> 'typ) - - -let bool = - Generator (fun state -> Random.State.bool state) - - -let int min max = - Generator (fun state -> min + Random.State.int state max) - - -let float min max = - Generator (fun state -> min +. Random.State.float state max) - - -let list count (Generator genCmd) = - let rec buildList state i = if i > 0 then (genCmd state)::(buildList state (i-1)) else [] in - Generator (fun state -> buildList state count) - - -let map func (Generator genCmd) = - Generator - (fun state -> - func (genCmd state) - ) - -let map2 func (Generator genCmd1) (Generator genCmd2) = - Generator - (fun state -> - let res1 = genCmd1 state in - let res2 = genCmd2 state in - func res1 res2 - ) - -let map3 func (Generator genCmd1) (Generator genCmd2) (Generator genCmd3) = - Generator - (fun state -> - let res1 = genCmd1 state in - let res2 = genCmd2 state in - let res3 = genCmd3 state in - func res1 res2 res3 - ) - -let map4 func (Generator genCmd1) (Generator genCmd2) (Generator genCmd3) (Generator genCmd4) = - Generator - (fun state -> - let res1 = genCmd1 state in - let res2 = genCmd2 state in - let res3 = genCmd3 state in - let res4 = genCmd4 state in - func res1 res2 res3 res4 - ) - -let map5 func (Generator genCmd1) (Generator genCmd2) (Generator genCmd3) (Generator genCmd4) (Generator genCmd5) = - Generator - (fun state -> - let res1 = genCmd1 state in - let res2 = genCmd2 state in - let res3 = genCmd3 state in - let res4 = genCmd4 state in - let res5 = genCmd5 state in - func res1 res2 res3 res4 res5 - ) - -let andThen func (Generator genCmd) = - Generator - (fun state -> - let res = genCmd state in - let (Generator userGen) = func res in - userGen state - ) - -let pair gen1 gen2 = - map2 (fun a b -> a, b) gen1 gen2 - - - -let generate tagger (Generator genCmd) = - Tea_cmd.call (fun callbacks -> - let state = Random.get_state () in - let genValue = genCmd state in - let () = Random.set_state state in - let open Vdom in - !callbacks.enqueue (tagger genValue) - ) - - -(* Generate Values Manually *) - -type seed = - | Seed of Random.State.t - -let step (Generator genCmd) (Seed state) = - let newState = Random.State.copy state in - genCmd newState, Seed newState - -let initialSeed seed = - Seed (Random.State.make [| seed |]) diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_result.ml b/jscomp/build_tests/bucklescript-tea/src/tea_result.ml deleted file mode 100644 index c01c8563e5..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_result.ml +++ /dev/null @@ -1,60 +0,0 @@ - - -(* TODO: Remove this when Bucklescript is updated to OCaml 4.03 as it includes result *) -type ('a, 'b) t (* result *) = ('a,'b) result = - | Ok of 'a - | Error of 'b - -let result_to_option = function - | Ok a -> Some a - | Error _ -> None - -let option_of_result = function - | Ok a -> Some a - | Error _ -> None - -let ok = function - | Ok a -> Some a - | Error _ -> None - -let error = function - | Ok _ -> None - | Error e -> Some e - -let rec last_of = function - | [] -> failwith "`Tea.Result.do` must never be passed the empty list" - | [last] -> last - | next :: tl -> - match next with - | Error _ as e -> e - | Ok _ -> last_of tl - -let rec accumulate = function - | [] -> Ok [] - | [last] -> - begin match last with - | Error _ as e -> e - | Ok o -> Ok [o] - end - | next :: tl -> - match next with - | Error _ as e -> e - | Ok o -> - match accumulate tl with - | Error _ as e -> e - | Ok os -> Ok (o :: os) - -let first fst = function - | Error _ as e -> e - | Ok _ -> fst - -let rec error_of_any = function - | [] -> None - | hd :: tl -> - match hd with - | Error e -> Some e - | Ok _ -> error_of_any tl - -let error_of_first fst = function - | Error e -> Some e - | Ok _ -> error fst diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_sub.ml b/jscomp/build_tests/bucklescript-tea/src/tea_sub.ml deleted file mode 100644 index 8d84ba7733..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_sub.ml +++ /dev/null @@ -1,90 +0,0 @@ - - -type 'msg t = - | NoSub : _ t - | Batch : 'msg t list -> 'msg t - | Registration : string * ('msg Vdom.applicationCallbacks ref -> (unit -> unit)) * (unit -> unit) option ref -> 'msg t - | Mapper : ('msg Vdom.applicationCallbacks ref -> 'msgB Vdom.applicationCallbacks ref) * 'msgB t -> 'msg t - - -type 'msg applicationCallbacks = 'msg Vdom.applicationCallbacks - - -let none = NoSub - - -let batch subs = - Batch subs - - -let registration key enableCall = - Registration (key, (fun callbacks -> enableCall !callbacks), ref None) - - -let map msgMapper sub = - let open Vdom in - let func callbacks = ref - { enqueue = (fun userMsg -> !callbacks.enqueue (msgMapper userMsg)) - } - in - Mapper (func, sub) - -let mapFunc func sub = - Mapper (func, sub) - - -let rec run : type msgOld msgNew . msgOld Vdom.applicationCallbacks ref -> msgNew Vdom.applicationCallbacks ref -> msgOld t -> msgNew t -> msgNew t = - fun oldCallbacks newCallbacks oldSub newSub -> - let rec enable : type msg . msg Vdom.applicationCallbacks ref -> msg t -> unit = fun callbacks -> function - | NoSub -> () - | Batch [] -> () - | Batch subs -> List.iter (enable callbacks) subs - | Mapper (mapper, sub) -> - let subCallbacks = mapper callbacks in - enable subCallbacks sub - | Registration (_key, enCB, diCB) -> diCB := Some (enCB callbacks) - in - let rec disable : type msg . msg Vdom.applicationCallbacks ref -> msg t -> unit = fun callbacks -> function - | NoSub -> () - | Batch [] -> () - | Batch subs -> List.iter (disable callbacks) subs - | Mapper (mapper, sub) -> - let subCallbacks = mapper callbacks in - disable subCallbacks sub - | Registration (_key, _enCB, diCB) -> - match !diCB with - | None -> () - | Some cb -> - let () = diCB := None in - cb () - in - match [@ocaml.warning "-4"] oldSub, newSub with - | NoSub, NoSub -> newSub - | Registration (oldKey, _oldEnCB, oldDiCB), Registration (newKey, _newEnCB, newDiCB) when oldKey = newKey -> - let () = newDiCB := !oldDiCB in - newSub - | Mapper (oldMapper, oldSubSub), Mapper (newMapper, newSubSub) -> - let olderCallbacks = oldMapper oldCallbacks in (* Resolve the type checker *) - let newerCallbacks = newMapper newCallbacks in - let _newerSubSub = run olderCallbacks newerCallbacks oldSubSub newSubSub in - newSub - | Batch oldSubs, Batch newSubs -> - let rec aux oldList newList = - ( match oldList, newList with - | [], [] -> () - | [], newSubSub :: newRest -> - let () = enable newCallbacks newSubSub in - aux [] newRest - | oldSubSub :: oldRest, [] -> - let () = disable oldCallbacks oldSubSub in - aux oldRest [] - | oldSubSub :: oldRest, newSubSub :: newRest -> - let _newerSubSub = run oldCallbacks newCallbacks oldSubSub newSubSub in - aux oldRest newRest - ) in - let () = aux oldSubs newSubs in - newSub - | oldS, newS -> - let () = disable oldCallbacks oldS in - let () = enable newCallbacks newS in - newSub diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_svg.ml b/jscomp/build_tests/bucklescript-tea/src/tea_svg.ml deleted file mode 100644 index 063b0cf0c3..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_svg.ml +++ /dev/null @@ -1,201 +0,0 @@ -open Vdom - -module Cmds = Tea_html_cmds - -module Attributes = Tea_svg_attributes - -module Events = Tea_svg_events - - -let svgNamespace = "http://www.w3.org/2000/svg" - - -(* Nodes *) - -let noNode = noNode - -let text str = text str - -let lazy1 key gen = lazyGen key gen - -let node tagName ?(key="") ?(unique="") props nodes = fullnode svgNamespace tagName key unique props nodes - -let svg ?(key="") ?(unique="") props nodes = fullnode svgNamespace "svg" key unique props nodes - -(* Animation elements *) - -let foreignObject ?(key="") ?(unique="") props nodes = fullnode svgNamespace "foreignObject" key unique props nodes - -let animate ?(key="") ?(unique="") props nodes = fullnode svgNamespace "animate" key unique props nodes - -let animateColor ?(key="") ?(unique="") props nodes = fullnode svgNamespace "animateColor" key unique props nodes - -let animateMotion ?(key="") ?(unique="") props nodes = fullnode svgNamespace "animateMotion" key unique props nodes - -let animateTransform ?(key="") ?(unique="") props nodes = fullnode svgNamespace "animateTransform" key unique props nodes - -let mpath ?(key="") ?(unique="") props nodes = fullnode svgNamespace "mpath" key unique props nodes - -let set ?(key="") ?(unique="") props nodes = fullnode svgNamespace "set" key unique props nodes - -(* Container elements *) - -let a ?(key="") ?(unique="") props nodes = fullnode svgNamespace "a" key unique props nodes - -let defs ?(key="") ?(unique="") props nodes = fullnode svgNamespace "defs" key unique props nodes - -let g ?(key="") ?(unique="") props nodes = fullnode svgNamespace "g" key unique props nodes - -let marker ?(key="") ?(unique="") props nodes = fullnode svgNamespace "marker" key unique props nodes - -let mask ?(key="") ?(unique="") props nodes = fullnode svgNamespace "mask" key unique props nodes - -let missingGlyph ?(key="") ?(unique="") props nodes = fullnode svgNamespace "missingGlyph" key unique props nodes - -let pattern ?(key="") ?(unique="") props nodes = fullnode svgNamespace "pattern" key unique props nodes - -let switch ?(key="") ?(unique="") props nodes = fullnode svgNamespace "switch" key unique props nodes - -let symbol ?(key="") ?(unique="") props nodes = fullnode svgNamespace "symbol" key unique props nodes - -(* Descriptive elements *) - -let desc ?(key="") ?(unique="") props nodes = fullnode svgNamespace "desc" key unique props nodes - -let metadata ?(key="") ?(unique="") props nodes = fullnode svgNamespace "metadata" key unique props nodes - -let title ?(key="") ?(unique="") props nodes = fullnode svgNamespace "title" key unique props nodes - -(* Filter primitive elements *) - -let feBlend ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feBlend" key unique props nodes - -let feColorMatrix ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feColorMatrix" key unique props nodes - -let feComponentTransfer ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feComponentTransfer" key unique props nodes - -let feComposite ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feComposite" key unique props nodes - -let feConvolveMatrix ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feConvolveMatrix" key unique props nodes - -let feDiffuseLighting ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feDiffuseLighting" key unique props nodes - -let feDisplacementMap ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feDisplacementMap" key unique props nodes - -let feFlood ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feFlood" key unique props nodes - -let feFuncA ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feFuncA" key unique props nodes - -let feFuncB ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feFuncB" key unique props nodes - -let feFuncG ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feFuncG" key unique props nodes - -let feFuncR ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feFuncR" key unique props nodes - -let feGaussianBlur ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feGaussianBlur" key unique props nodes - -let feImage ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feImage" key unique props nodes - -let feMerge ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feMerge" key unique props nodes - -let feMergeNode ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feMergeNode" key unique props nodes - -let feMorphology ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feMorphology" key unique props nodes - -let feOffset ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feOffset" key unique props nodes - -let feSpecularLighting ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feSpecularLighting" key unique props nodes - -let feTile ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feTile" key unique props nodes - -let feTurbulence ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feTurbulence" key unique props nodes - -(* Font elements *) - -let font ?(key="") ?(unique="") props nodes = fullnode svgNamespace "font" key unique props nodes - -let fontFace ?(key="") ?(unique="") props nodes = fullnode svgNamespace "fontFace" key unique props nodes - -let fontFaceFormat ?(key="") ?(unique="") props nodes = fullnode svgNamespace "fontFaceFormat" key unique props nodes - -let fontFaceName ?(key="") ?(unique="") props nodes = fullnode svgNamespace "fontFaceName" key unique props nodes - -let fontFaceSrc ?(key="") ?(unique="") props nodes = fullnode svgNamespace "fontFaceSrc" key unique props nodes - -let fontFaceUri ?(key="") ?(unique="") props nodes = fullnode svgNamespace "fontFaceUri" key unique props nodes - -let hkern ?(key="") ?(unique="") props nodes = fullnode svgNamespace "hkern" key unique props nodes - -let vkern ?(key="") ?(unique="") props nodes = fullnode svgNamespace "vkern" key unique props nodes - -(* Gradient elements *) - -let linearGradient ?(key="") ?(unique="") props nodes = fullnode svgNamespace "linearGradient" key unique props nodes - -let radialGradient ?(key="") ?(unique="") props nodes = fullnode svgNamespace "radialGradient" key unique props nodes - -let stop ?(key="") ?(unique="") props nodes = fullnode svgNamespace "stop" key unique props nodes - -(* Graphics elements *) - -let circle ?(key="") ?(unique="") props nodes = fullnode svgNamespace "circle" key unique props nodes - -let ellipse ?(key="") ?(unique="") props nodes = fullnode svgNamespace "ellipse" key unique props nodes - -let svgimage ?(key="") ?(unique="") props nodes = fullnode svgNamespace "image" key unique props nodes - -let line ?(key="") ?(unique="") props nodes = fullnode svgNamespace "line" key unique props nodes - -let path ?(key="") ?(unique="") props nodes = fullnode svgNamespace "path" key unique props nodes - -let polygon ?(key="") ?(unique="") props nodes = fullnode svgNamespace "polygon" key unique props nodes - -let polyline ?(key="") ?(unique="") props nodes = fullnode svgNamespace "polyline" key unique props nodes - -let rect ?(key="") ?(unique="") props nodes = fullnode svgNamespace "rect" key unique props nodes - -let use ?(key="") ?(unique="") props nodes = fullnode svgNamespace "use" key unique props nodes - -(* Light source elements *) - -let feDistantLight ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feDistantLight" key unique props nodes - -let fePointLight ?(key="") ?(unique="") props nodes = fullnode svgNamespace "fePointLight" key unique props nodes - -let feSpotLight ?(key="") ?(unique="") props nodes = fullnode svgNamespace "feSpotLight" key unique props nodes - -(* Text content elements *) - -let altGlyph ?(key="") ?(unique="") props nodes = fullnode svgNamespace "altGlyph" key unique props nodes - -let altGlyphDef ?(key="") ?(unique="") props nodes = fullnode svgNamespace "altGlyphDef" key unique props nodes - -let altGlyphItem ?(key="") ?(unique="") props nodes = fullnode svgNamespace "altGlyphItem" key unique props nodes - -let glyph ?(key="") ?(unique="") props nodes = fullnode svgNamespace "glyph" key unique props nodes - -let glyphRef ?(key="") ?(unique="") props nodes = fullnode svgNamespace "glyphRef" key unique props nodes - -let textPath ?(key="") ?(unique="") props nodes = fullnode svgNamespace "textPath" key unique props nodes - -let text' ?(key="") ?(unique="") props nodes = fullnode svgNamespace "text" key unique props nodes - -let tref ?(key="") ?(unique="") props nodes = fullnode svgNamespace "tref" key unique props nodes - -let tspan ?(key="") ?(unique="") props nodes = fullnode svgNamespace "tspan" key unique props nodes - -(* Uncategorized elements *) - -let clipPath ?(key="") ?(unique="") props nodes = fullnode svgNamespace "clipPath" key unique props nodes - -let svgcolorProfile ?(key="") ?(unique="") props nodes = fullnode svgNamespace "colorProfile" key unique props nodes - -let cursor ?(key="") ?(unique="") props nodes = fullnode svgNamespace "cursor" key unique props nodes - -let filter ?(key="") ?(unique="") props nodes = fullnode svgNamespace "filter" key unique props nodes - -let script ?(key="") ?(unique="") props nodes = fullnode svgNamespace "script" key unique props nodes - -let style ?(key="") ?(unique="") props nodes = fullnode svgNamespace "style" key unique props nodes - -let view ?(key="") ?(unique="") props nodes = fullnode svgNamespace "view" key unique props nodes diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_svg_attributes.ml b/jscomp/build_tests/bucklescript-tea/src/tea_svg_attributes.ml deleted file mode 100644 index 5359ddbd9e..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_svg_attributes.ml +++ /dev/null @@ -1,1515 +0,0 @@ -open Vdom - -(* Regular attributes *) - -let accentHeight v = attribute "" "accent-height" v - -let accelerate v = attribute "" "accelerate" v - - - -let accumulate v = - attribute "" "accumulate" v - - - - -let additive v = - attribute "" "additive" v - - - - -let alphabetic v = - attribute "" "alphabetic" v - - - - -let allowReorder v = - attribute "" "allowReorder" v - - - - -let amplitude v = - attribute "" "amplitude" v - - - - -let arabicForm v = - attribute "" "arabic-form" v - - - - -let ascent v = - attribute "" "ascent" v - - - - -let attributeName v = - attribute "" "attributeName" v - - - - -let attributeType v = - attribute "" "attributeType" v - - - - -let autoReverse v = - attribute "" "autoReverse" v - - - - -let azimuth v = - attribute "" "azimuth" v - - - - -let baseFrequency v = - attribute "" "baseFrequency" v - - - - -let baseProfile v = - attribute "" "baseProfile" v - - - - -let bbox v = - attribute "" "bbox" v - - - - -let begin' v = - attribute "" "begin" v - - - - -let bias v = - attribute "" "bias" v - - - - -let by v = - attribute "" "by" v - - - - -let calcMode v = - attribute "" "calcMode" v - - - - -let capHeight v = - attribute "" "cap-height" v - - - - -let class' v = - attribute "" "class" v - - - - -let clipPathUnits v = - attribute "" "clipPathUnits" v - - - - -let contentScriptType v = - attribute "" "contentScriptType" v - - - - -let contentStyleType v = - attribute "" "contentStyleType" v - - - - -let cx v = - attribute "" "cx" v - - - - -let cy v = - attribute "" "cy" v - - - - -let d v = - attribute "" "d" v - - - - -let decelerate v = - attribute "" "decelerate" v - - - - -let descent v = - attribute "" "descent" v - - - - -let diffuseConstant v = - attribute "" "diffuseConstant" v - - - - -let divisor v = - attribute "" "divisor" v - - - - -let dur v = - attribute "" "dur" v - - - - -let dx v = - attribute "" "dx" v - - - - -let dy v = - attribute "" "dy" v - - - - -let edgeMode v = - attribute "" "edgeMode" v - - - - -let elevation v = - attribute "" "elevation" v - - - - -let end' v = - attribute "" "end" v - - - - -let exponent v = - attribute "" "exponent" v - - - - -let externalResourcesRequired v = - attribute "" "externalResourcesRequired" v - - - - -let filterRes v = - attribute "" "filterRes" v - - - - -let filterUnits v = - attribute "" "filterUnits" v - - - - -let format v = - attribute "" "format" v - - - - -let from v = - attribute "" "from" v - - - - -let fx v = - attribute "" "fx" v - - - - -let fy v = - attribute "" "fy" v - - - - -let g1 v = - attribute "" "g1" v - - - - -let g2 v = - attribute "" "g2" v - - - - -let glyphName v = - attribute "" "glyph-name" v - - - - -let glyphRef v = - attribute "" "glyphRef" v - - - - -let gradientTransform v = - attribute "" "gradientTransform" v - - - - -let gradientUnits v = - attribute "" "gradientUnits" v - - - - -let hanging v = - attribute "" "hanging" v - - - - -let height v = - attribute "" "height" v - - - - -let horizAdvX v = - attribute "" "horiz-adv-x" v - - - - -let horizOriginX v = - attribute "" "horiz-origin-x" v - - - - -let horizOriginY v = - attribute "" "horiz-origin-y" v - - - - -let id v = - attribute "" "id" v - - - - -let ideographic v = - attribute "" "ideographic" v - - - - -let in' v = - attribute "" "in" v - - - - -let in2 v = - attribute "" "in2" v - - - - -let intercept v = - attribute "" "intercept" v - - - - -let k v = - attribute "" "k" v - - - - -let k1 v = - attribute "" "k1" v - - - - -let k2 v = - attribute "" "k2" v - - - - -let k3 v = - attribute "" "k3" v - - - - -let k4 v = - attribute "" "k4" v - - - - -let kernelMatrix v = - attribute "" "kernelMatrix" v - - - - -let kernelUnitLength v = - attribute "" "kernelUnitLength" v - - - - -let keyPoints v = - attribute "" "keyPoints" v - - - - -let keySplines v = - attribute "" "keySplines" v - - - - -let keyTimes v = - attribute "" "keyTimes" v - - - - -let lang v = - attribute "" "lang" v - - - - -let lengthAdjust v = - attribute "" "lengthAdjust" v - - - - -let limitingConeAngle v = - attribute "" "limitingConeAngle" v - - - - -let local v = - attribute "" "local" v - - - - -let markerHeight v = - attribute "" "markerHeight" v - - - - -let markerUnits v = - attribute "" "markerUnits" v - - - - -let markerWidth v = - attribute "" "markerWidth" v - - - - -let maskContentUnits v = - attribute "" "maskContentUnits" v - - - - -let maskUnits v = - attribute "" "maskUnits" v - - - - -let mathematical v = - attribute "" "mathematical" v - - - - -let max v = - attribute "" "max" v - - - - -let media v = - attribute "" "media" v - - - - -let method' v = - attribute "" "method" v - - - - -let min v = - attribute "" "min" v - - - - -let mode v = - attribute "" "mode" v - - - - -let name v = - attribute "" "name" v - - - - -let numOctaves v = - attribute "" "numOctaves" v - - - - -let offset v = - attribute "" "offset" v - - - - -let operator v = - attribute "" "operator" v - - - - -let order v = - attribute "" "order" v - - - - -let orient v = - attribute "" "orient" v - - - - -let orientation v = - attribute "" "orientation" v - - - - -let origin v = - attribute "" "origin" v - - - - -let overlinePosition v = - attribute "" "overline-position" v - - - - -let overlineThickness v = - attribute "" "overline-thickness" v - - - - -let panose1 v = - attribute "" "panose-1" v - - - - -let path v = - attribute "" "path" v - - - - -let pathLength v = - attribute "" "pathLength" v - - - - -let patternContentUnits v = - attribute "" "patternContentUnits" v - - - - -let patternTransform v = - attribute "" "patternTransform" v - - - - -let patternUnits v = - attribute "" "patternUnits" v - - - - -let pointOrder v = - attribute "" "point-order" v - - - - -let points v = - attribute "" "points" v - - - - -let pointsAtX v = - attribute "" "pointsAtX" v - - - - -let pointsAtY v = - attribute "" "pointsAtY" v - - - - -let pointsAtZ v = - attribute "" "pointsAtZ" v - - - - -let preserveAlpha v = - attribute "" "preserveAlpha" v - - - - -let preserveAspectRatio v = - attribute "" "preserveAspectRatio" v - - - - -let primitiveUnits v = - attribute "" "primitiveUnits" v - - - - -let r v = - attribute "" "r" v - - - - -let radius v = - attribute "" "radius" v - - - - -let refX v = - attribute "" "refX" v - - - - -let refY v = - attribute "" "refY" v - - - - -let renderingIntent v = - attribute "" "rendering-intent" v - - - - -let repeatCount v = - attribute "" "repeatCount" v - - - - -let repeatDur v = - attribute "" "repeatDur" v - - - - -let requiredExtensions v = - attribute "" "requiredExtensions" v - - - - -let requiredFeatures v = - attribute "" "requiredFeatures" v - - - - -let restart v = - attribute "" "restart" v - - - - -let result v = - attribute "" "result" v - - - - -let rotate v = - attribute "" "rotate" v - - - - -let rx v = - attribute "" "rx" v - - - - -let ry v = - attribute "" "ry" v - - - - -let scale v = - attribute "" "scale" v - - - - -let seed v = - attribute "" "seed" v - - - - -let slope v = - attribute "" "slope" v - - - - -let spacing v = - attribute "" "spacing" v - - - - -let specularConstant v = - attribute "" "specularConstant" v - - - - -let specularExponent v = - attribute "" "specularExponent" v - - - - -let speed v = - attribute "" "speed" v - - - - -let spreadMethod v = - attribute "" "spreadMethod" v - - - - -let startOffset v = - attribute "" "startOffset" v - - - - -let stdDeviation v = - attribute "" "stdDeviation" v - - - - -let stemh v = - attribute "" "stemh" v - - - - -let stemv v = - attribute "" "stemv" v - - - - -let stitchTiles v = - attribute "" "stitchTiles" v - - - - -let strikethroughPosition v = - attribute "" "strikethrough-position" v - - - - -let strikethroughThickness v = - attribute "" "strikethrough-thickness" v - - - - -let string v = - attribute "" "string" v - - - - -let style v = - attribute "" "style" v - - - - -let surfaceScale v = - attribute "" "surfaceScale" v - - - - -let systemLanguage v = - attribute "" "systemLanguage" v - - - - -let tableValues v = - attribute "" "tableValues" v - - - - -let target v = - attribute "" "target" v - - - - -let targetX v = - attribute "" "targetX" v - - - - -let targetY v = - attribute "" "targetY" v - - - - -let textLength v = - attribute "" "textLength" v - - - - -let title v = - attribute "" "title" v - - - - -let to' v = - attribute "" "to" v - - - - -let transform v = - attribute "" "transform" v - - - - -let type' v = - attribute "" "type" v - - - - -let u1 v = - attribute "" "u1" v - - - - -let u2 v = - attribute "" "u2" v - - - - -let underlinePosition v = - attribute "" "underline-position" v - - - - -let underlineThickness v = - attribute "" "underline-thickness" v - - - - -let unicode v = - attribute "" "unicode" v - - - - -let unicodeRange v = - attribute "" "unicode-range" v - - - - -let unitsPerEm v = - attribute "" "units-per-em" v - - - - -let vAlphabetic v = - attribute "" "v-alphabetic" v - - - - -let vHanging v = - attribute "" "v-hanging" v - - - - -let vIdeographic v = - attribute "" "v-ideographic" v - - - - -let vMathematical v = - attribute "" "v-mathematical" v - - - - -let values v = - attribute "" "values" v - - - - -let version v = - attribute "" "version" v - - - - -let vertAdvY v = - attribute "" "vert-adv-y" v - - - - -let vertOriginX v = - attribute "" "vert-origin-x" v - - - - -let vertOriginY v = - attribute "" "vert-origin-y" v - - - - -let viewBox v = - attribute "" "viewBox" v - - - - -let viewTarget v = - attribute "" "viewTarget" v - - - - -let width v = - attribute "" "width" v - - - - -let widths v = - attribute "" "widths" v - - - - -let x v = - attribute "" "x" v - - - - -let xHeight v = - attribute "" "x-height" v - - - - -let x1 v = - attribute "" "x1" v - - - - -let x2 v = - attribute "" "x2" v - - - - -let xChannelSelector v = - attribute "" "xChannelSelector" v - - - - -let xlinkActuate v = - attribute "http://www.w3.org/1999/xlink" "xlink:actuate" v - - - - -let xlinkArcrole v = - attribute "http://www.w3.org/1999/xlink" "xlink:arcrole" v - - - - -let xlinkHref v = - attribute "http://www.w3.org/1999/xlink" "xlink:href" v - - - - -let xlinkRole v = - attribute "http://www.w3.org/1999/xlink" "xlink:role" v - - - - -let xlinkShow v = - attribute "http://www.w3.org/1999/xlink" "xlink:show" v - - - - -let xlinkTitle v = - attribute "http://www.w3.org/1999/xlink" "xlink:title" v - - - - -let xlinkType v = - attribute "http://www.w3.org/1999/xlink" "xlink:type" v - - - - -let xmlBase v = - attribute "http://www.w3.org/XML/1998/namespace" "xml:base" v - - - - -let xmlLang v = - attribute "http://www.w3.org/XML/1998/namespace" "xml:lang" v - - - - -let xmlSpace v = - attribute "http://www.w3.org/XML/1998/namespace" "xml:space" v - - - - -let y v = - attribute "" "y" v - - - - -let y1 v = - attribute "" "y1" v - - - - -let y2 v = - attribute "" "y2" v - - - - -let yChannelSelector v = - attribute "" "yChannelSelector" v - - - - -let z v = - attribute "" "z" v - - - - -let zoomAndPan v = - attribute "" "zoomAndPan" v - - - -(* Presentation attributes *) - - - -let alignmentBaseline v = - attribute "" "alignment-baseline" v - - - - -let baselineShift v = - attribute "" "baseline-shift" v - - - - -let clipPath v = - attribute "" "clip-path" v - - - - -let clipRule v = - attribute "" "clip-rule" v - - - - -let clip v = - attribute "" "clip" v - - - - -let colorInterpolationFilters v = - attribute "" "color-interpolation-filters" v - - - - -let colorInterpolation v = - attribute "" "color-interpolation" v - - - - -let colorProfile v = - attribute "" "color-profile" v - - - - -let colorRendering v = - attribute "" "color-rendering" v - - - - -let color v = - attribute "" "color" v - - - - -let cursor v = - attribute "" "cursor" v - - - - -let direction v = - attribute "" "direction" v - - - - -let display v = - attribute "" "display" v - - - - -let dominantBaseline v = - attribute "" "dominant-baseline" v - - - - -let enableBackground v = - attribute "" "enable-background" v - - - - -let fillOpacity v = - attribute "" "fill-opacity" v - - - - -let fillRule v = - attribute "" "fill-rule" v - - - - -let fill v = - attribute "" "fill" v - - - - -let filter v = - attribute "" "filter" v - - - - -let floodColor v = - attribute "" "flood-color" v - - - - -let floodOpacity v = - attribute "" "flood-opacity" v - - - - -let fontFamily v = - attribute "" "font-family" v - - - - -let fontSizeAdjust v = - attribute "" "font-size-adjust" v - - - - -let fontSize v = - attribute "" "font-size" v - - - - -let fontStretch v = - attribute "" "font-stretch" v - - - - -let fontStyle v = - attribute "" "font-style" v - - - - -let fontVariant v = - attribute "" "font-variant" v - - - - -let fontWeight v = - attribute "" "font-weight" v - - - - -let glyphOrientationHorizontal v = - attribute "" "glyph-orientation-horizontal" v - - - - -let glyphOrientationVertical v = - attribute "" "glyph-orientation-vertical" v - - - - -let imageRendering v = - attribute "" "image-rendering" v - - - - -let kerning v = - attribute "" "kerning" v - - - - -let letterSpacing v = - attribute "" "letter-spacing" v - - - - -let lightingColor v = - attribute "" "lighting-color" v - - - - -let markerEnd v = - attribute "" "marker-end" v - - - - -let markerMid v = - attribute "" "marker-mid" v - - - - -let markerStart v = - attribute "" "marker-start" v - - - - -let mask v = - attribute "" "mask" v - - - - -let opacity v = - attribute "" "opacity" v - - - - -let overflow v = - attribute "" "overflow" v - - - - -let pointerEvents v = - attribute "" "pointer-events" v - - - - -let shapeRendering v = - attribute "" "shape-rendering" v - - - - -let stopColor v = - attribute "" "stop-color" v - - - - -let stopOpacity v = - attribute "" "stop-opacity" v - - - - -let strokeDasharray v = - attribute "" "stroke-dasharray" v - - - - -let strokeDashoffset v = - attribute "" "stroke-dashoffset" v - - - - -let strokeLinecap v = - attribute "" "stroke-linecap" v - - - - -let strokeLinejoin v = - attribute "" "stroke-linejoin" v - - - - -let strokeMiterlimit v = - attribute "" "stroke-miterlimit" v - - - - -let strokeOpacity v = - attribute "" "stroke-opacity" v - - - - -let strokeWidth v = - attribute "" "stroke-width" v - - - - -let stroke v = - attribute "" "stroke" v - - - - -let textAnchor v = - attribute "" "text-anchor" v - - - - -let textDecoration v = - attribute "" "text-decoration" v - - - - -let textRendering v = - attribute "" "text-rendering" v - - - - -let unicodeBidi v = - attribute "" "unicode-bidi" v - - - - -let visibility v = - attribute "" "visibility" v - - - - -let wordSpacing v = - attribute "" "word-spacing" v - - - - -let writingMode v = - attribute "" "writing-mode" v diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_svg_events.ml b/jscomp/build_tests/bucklescript-tea/src/tea_svg_events.ml deleted file mode 100644 index 214a3c44ad..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_svg_events.ml +++ /dev/null @@ -1 +0,0 @@ -(* open Vdom *) diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_task.ml b/jscomp/build_tests/bucklescript-tea/src/tea_task.ml deleted file mode 100644 index f199130e11..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_task.ml +++ /dev/null @@ -1,188 +0,0 @@ - -type never - -type ('succeed, 'fail) t = - Task : ((('succeed, 'fail) Tea_result.t -> unit) -> unit) -> ('succeed, 'fail) t - (* Task : ((('succeed, 'fail) Tea_result.t -> (unit -> unit)) -> (unit -> unit)) -> ('succeed, 'fail) t *) - - -(* Helpers *) - -let nothing () = () - -(* Resolvers *) - - -let performOpt (toOptionalMessage : 'value -> 'msg) (Task task : ('value, never) t) = - Tea_cmd.call (fun callbacks -> - let open Tea_result in - let open Vdom in - let cb = function - | Error _e -> failwith "ERROR: Task perfom returned error of never! Should not happen!" - | Ok v -> - match toOptionalMessage v with - | None -> () - | Some result -> !callbacks.enqueue result - in task cb - ) - -let perform toMessage task = - performOpt (fun v -> Some (toMessage v)) task - - -let attemptOpt resultToOptionalMessage (Task task) = - Tea_cmd.call (fun callbacks -> - let open Vdom in - let cb value = - match resultToOptionalMessage value with - | None -> () - | Some result -> !callbacks.enqueue result - in task cb - ) - -let attempt resultToMessage task = - attemptOpt (fun v -> Some (resultToMessage v)) task - - -(* Basics *) - -let succeed (value : 'v) : ('v, 'e) t = - Task (fun cb -> cb (Tea_result.Ok value)) - - -let fail (value : 'v) : ('s, 'v) t = - Task (fun cb -> cb (Tea_result.Error value)) - - -let nativeBinding func = - Task func - - -(* Chaining *) - -let andThen fn (Task task) = - let open Tea_result in - Task (fun cb -> - task - (function - | Error _e as err -> cb err - | Ok v -> - let (Task nextTask) = fn v in - nextTask cb - ) - ) - - -let onError fn (Task task) = - let open Tea_result in - Task (fun cb -> - task - (function - | Ok _v as ok -> cb ok - | Error e -> - let (Task newTask) = fn e in - newTask cb - ) - ) - - -let mapError func task = - task - |> onError (fun e -> fail (func e)) - - -(* Mapping *) - -let map func task1 = - task1 - |> andThen (fun v1 -> succeed (func v1)) - - -let map2 func task1 task2 = - task1 - |> andThen (fun v1 -> task2 - |> andThen (fun v2 -> succeed (func v1 v2))) - - -let map3 func task1 task2 task3 = - task1 - |> andThen (fun v1 -> task2 - |> andThen (fun v2 -> task3 - |> andThen (fun v3 -> succeed (func v1 v2 v3)))) - - -let map4 func task1 task2 task3 task4 = - task1 - |> andThen (fun v1 -> task2 - |> andThen (fun v2 -> task3 - |> andThen (fun v3 -> task4 - |> andThen (fun v4 -> succeed (func v1 v2 v3 v4))))) - - -let map5 func task1 task2 task3 task4 task5 = - task1 - |> andThen (fun v1 -> task2 - |> andThen (fun v2 -> task3 - |> andThen (fun v3 -> task4 - |> andThen (fun v4 -> task5 - |> andThen (fun v5 -> succeed (func v1 v2 v3 v4 v5)))))) - - -let map6 func task1 task2 task3 task4 task5 task6 = - task1 - |> andThen (fun v1 -> task2 - |> andThen (fun v2 -> task3 - |> andThen (fun v3 -> task4 - |> andThen (fun v4 -> task5 - |> andThen (fun v5 -> task6 - |> andThen (fun v6 -> succeed (func v1 v2 v3 v4 v5 v6))))))) - - -let rec sequence = function - | [] -> succeed [] - | task :: remainingTasks -> - map2 (fun l r -> l :: r (* TODO: Replace with `List.cons` when updated to version 4.03 *)) task (sequence remainingTasks) - - - -let testing_deop = ref true -let testing () = - let open Tea_result in - let doTest expected (Task task) = - let testAssert v = - if v = expected - then Js.log ("Passed:", expected, v) - else Js.log ("FAILED:", expected, v) - in task testAssert in - let s = succeed 42 in - let () = doTest (Ok 42) s in - let f = fail 86 in - let () = doTest (Error 86) f in - let r () = if !testing_deop then succeed 42 else fail 3.14 in - let a1 = succeed 2 |> andThen (fun n -> succeed (n + 2)) in - let () = doTest (Ok 4) a1 in - let a2 = succeed 2 |> andThen (fun n -> succeed (string_of_int n)) in - let () = doTest (Ok "2") a2 in - let m1 = map sqrt (succeed 9.) in - let () = doTest (Ok 3.) m1 in - let m2 = map2 (+) (succeed 9) (succeed 3) in - let () = doTest (Ok 12) m2 in - let m3 = map string_of_int (succeed 9) in - let () = doTest (Ok "9") m3 in - let s0 = sequence [ succeed 1; succeed 2 ] in - let () = doTest (Ok [1; 2]) s0 in - let s1 = sequence [succeed 1; fail 2.7; r ()] in - let () = doTest (Error 2.7) s1 in - let e0 = fail "file not found" |> onError (fun _msg -> succeed 42) in - let () = doTest (Ok 42) e0 in - let e1 = fail "file not found" |> onError (fun _msg -> fail 42) in - let () = doTest (Error 42) e1 in - let n0 = sequence [ mapError string_of_int (fail 42); mapError Js.Float.toString (fail 3.14) ] in - let () = doTest (Error "42") n0 in - let n1 = sequence [ mapError string_of_int (succeed 1); mapError Js.Float.toString (fail 3.14)] in - let () = doTest (Error "3.14") n1 in - let n2 = sequence [ mapError string_of_int (succeed 1); mapError Js.Float.toString (succeed 2)] in - let () = doTest (Ok [1;2]) n2 in - let _c0 = perform (fun _ -> 42) (succeed 18) in - (* (\* Should not compile *\) let _c1 = perform (fun _ -> 42) (fail 18) in *) - () diff --git a/jscomp/build_tests/bucklescript-tea/src/tea_time.ml b/jscomp/build_tests/bucklescript-tea/src/tea_time.ml deleted file mode 100644 index fe13884fd9..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/tea_time.ml +++ /dev/null @@ -1,70 +0,0 @@ - - -type t = float - - -(* type 'msg mySub = - | Every of t * (t -> 'msg) - - -type 'msg myCmd = - | Delay of t * (unit -> 'msg) *) - - -let every interval tagger = - let open Vdom in - let key = Js.Float.toString interval in - let enableCall callbacks = - let id = (Web.Window.setInterval (fun () -> callbacks.enqueue (tagger (Web.Date.now ())) ) interval) in - (* let () = Js.log ("Time.every", "enable", interval, tagger, callbacks) in *) - fun () -> - (* let () = Js.log ("Time.every", "disable", id, interval, tagger, callbacks) in *) - Web.Window.clearTimeout id - in Tea_sub.registration key enableCall - - -let delay msTime msg = - Tea_cmd.call - ( fun callbacks -> - let _unhandledID = - Web.Window.setTimeout - ( fun () -> - let open Vdom in - !callbacks.enqueue msg - ) - msTime - in () - ) - - -(* Generic Helpers *) - -let millisecond = 1.0 - - -let second = - 1000.0 *. millisecond - - -let minute = - 60.0 *. second - - -let hour = - 60.0 *. minute - - -let inMilliseconds t = - t - - -let inSeconds t = - t /. second - - -let inMinutes t = - t /. minute - - -let inHours t = - t /. hour diff --git a/jscomp/build_tests/bucklescript-tea/src/vdom.ml b/jscomp/build_tests/bucklescript-tea/src/vdom.ml deleted file mode 100644 index 65289ff887..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/vdom.ml +++ /dev/null @@ -1,504 +0,0 @@ - -(* https://github.com/Matt-Esch/virtual-dom/blob/master/docs/vnode.md *) - - - -type 'msg applicationCallbacks = { - enqueue : 'msg -> unit; -} - -(* -type 'msg userkey = - | UserkeyString of string - | UserkeyMsg of 'msg -*) - -(* Attributes are not properties *) -(* https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes *) - -type 'msg eventHandler = - | EventHandlerCallback of string * (Web.Node.event -> 'msg option) - | EventHandlerMsg of 'msg - -type 'msg eventCache = - { handler : Web.Node.event_cb - ; cb : (Web.Node.event -> 'msg option) ref - } - -type 'msg property = - | NoProp - | RawProp of string * string (* TODO: This last string needs to be made something more generic, maybe a function... *) - (* Attribute (namespace, key, value) *) - | Attribute of string * string * string - | Data of string * string - (* Event (name, userkey, callback) *) - | Event of string * 'msg eventHandler * 'msg eventCache option ref - (* | Event of string * (Web.Event.t -> 'msg) *) - | Style of (string * string) list - -type 'msg properties = 'msg property list - -(* type 'msg taggerCallbacks = - { renderToHtmlString : unit -> string - ; patchVNodesIntoElement : 'msg applicationCallbacks ref -> Web.Node.t - } *) - -type 'msg t = - | CommentNode of string - | Text of string - (* Node (namespace, tagName, key, unique, properties, children) *) - | Node of string * string * string * string * 'msg properties * 'msg t list - (* | ArrayNode of string * string * string * string * 'msg property array * 'msg t array *) - (* LazyGen (key, fnGenerator) *) - | LazyGen of string * (unit -> 'msg t) * 'msg t ref - (* Tagger (toString, toDom, toVNodes) *) -(* | Tagger of (unit -> string) * ('msg applicationCallbacks ref -> Web.Node.t -> Web.Node.t -> int -> 'msg t list -> Web.Node.t) * (unit -> 'msg t) *) - (* Tagger (tagger, vdom) *) - | Tagger of ('msg applicationCallbacks ref -> 'msg applicationCallbacks ref) * 'msg t - (* *) - (* | Tagger of (('a -> 'msg) -> 'a t -> 'msg t) *) - (* Custom (key, cbAdd, cbRemove, cbChange, properties, children) *) - (* | Custom of string * (unit -> Web.Node.t) * (Web.Node.t -> unit) * *) - - - -(* Nodes *) - -let noNode = CommentNode "" - -let comment s = CommentNode s - -let text s = Text s - -let fullnode namespace tagName key unique props vdoms = - Node (namespace, tagName, key, unique, props, vdoms) - -let node ?(namespace="") tagName ?(key="") ?(unique="") props vdoms = - fullnode namespace tagName key unique props vdoms - -(* let arraynode namespace tagName key unique props vdoms = - ArrayNode (namespace, tagName, key, unique, props, vdoms) *) - -let lazyGen key fn = - LazyGen (key, fn, ref noNode) - -(* Properties *) - -let noProp = NoProp - -let prop key value = RawProp (key, value) - -let onCB name key cb = Event (name, EventHandlerCallback (key, cb), ref None) - -let onMsg name msg = Event (name, EventHandlerMsg msg, ref None) - -let attribute namespace key value = Attribute (namespace, key, value) - - -let data key value = Data (key, value) - -let style key value = Style [ (key, value) ] - -let styles s = Style s - -(* Accessors *) - - -(* TODO: Need to properly escape and so forth *) -let rec renderToHtmlString = function - | CommentNode s -> "" - | Text s -> s - | Node (namespace, tagName, _key, _unique, props, vdoms) -> - let renderProp = function - | NoProp -> "" - | RawProp (k, v) -> String.concat "" [" "; k; "=\""; v; "\""] - | Attribute (_namespace, k, v) -> String.concat "" [" "; k; "=\""; v; "\""] - | Data (k, v) -> String.concat "" [" data-"; k; "=\""; v; "\""] - | Event (_, _, _) -> "" - | Style s -> String.concat "" [" style=\""; String.concat ";" (List.map (fun (k, v) -> String.concat "" [k;":";v;";"]) s); "\""] - in - String.concat "" - [ "<" - ; namespace - ; if namespace = "" then "" else ":" - ; tagName - ; String.concat "" (List.map (fun p -> renderProp p) props) - ; ">" - ; String.concat "" (List.map (fun v -> renderToHtmlString v) vdoms) - ; "" - ] - | LazyGen (_key, gen, _cache) -> - let vdom = gen () in - renderToHtmlString vdom - | Tagger (_tagger, vdom) -> renderToHtmlString vdom - - -(* TODO: Make a vdom 'patcher' that binds into the actual DOM for hot-loading into an existing template *) - - -(* Diffing/Patching *) - -let emptyEventHandler : Web.Node.event_cb = fun [@bs] _ev -> () -let emptyEventCB = fun _ev -> None - -let eventHandler callbacks cb : Web.Node.event_cb = - fun [@bs] ev -> - match !cb ev with - | None -> () (* User ignored, do nothing *) - | Some msg -> !callbacks.enqueue msg - - -let eventHandler_GetCB = function - | EventHandlerCallback (_, cb) -> cb - | EventHandlerMsg msg -> fun _ev -> Some msg - -let compareEventHandlerTypes left = function - | EventHandlerCallback (cb, _) -> - (match left with - | EventHandlerCallback (lcb, _) when cb = lcb -> true - | _ -> false - ) - | EventHandlerMsg msg -> - (match left with - | EventHandlerMsg lmsg when msg = lmsg -> true - | _ -> false - ) - - -let eventHandler_Register callbacks elem name handlerType = - let cb = ref (eventHandler_GetCB handlerType) in - let handler = eventHandler callbacks cb in - let () = Web.Node.addEventListener elem name handler false in - Some { handler; cb } - -let eventHandler_Unregister elem name = function - | None -> None - | Some cache -> - let () = Web.Node.removeEventListener elem name cache.handler false in - None - -let eventHandler_Mutate callbacks elem (oldName : string) (newName : string) oldHandlerType newHandlerType oldCache newCache = - match !oldCache with - | None -> newCache := eventHandler_Register callbacks elem newName newHandlerType - | Some oldcache -> - if oldName = newName then - let () = newCache := !oldCache in - if compareEventHandlerTypes oldHandlerType newHandlerType then () - else - let cb = eventHandler_GetCB newHandlerType in - let () = oldcache.cb := cb in - () - else - let () = oldCache := eventHandler_Unregister elem oldName !oldCache in - let () = newCache := eventHandler_Register callbacks elem newName newHandlerType in - () - - -let patchVNodesOnElems_PropertiesApply_Add callbacks elem _idx = function - | NoProp -> () - | RawProp (k, v) -> Web.Node.setProp elem k v - | Attribute (namespace, k, v) -> Web.Node.setAttributeNsOptional elem namespace k v - | Data (k, v) -> Js.log ("TODO: Add Data Unhandled", k, v); failwith "TODO: Add Data Unhandled" - | Event (name, handlerType, cache) -> cache := eventHandler_Register callbacks elem name handlerType - | Style s -> List.fold_left (fun () (k, v) -> Web.Node.setStyleProperty elem k (Js.Null.return v)) () s - - -let patchVNodesOnElems_PropertiesApply_Remove _callbacks elem _idx = function - | NoProp -> () - | RawProp (k, _v) -> Web.Node.setProp elem k Js.Undefined.empty - | Attribute (namespace, k, _v) -> Web.Node.removeAttributeNsOptional elem namespace k - | Data (k, v) -> Js.log ("TODO: Remove Data Unhandled", k, v); failwith "TODO: Remove Data Unhandled" - | Event (name, _, cache) -> cache := eventHandler_Unregister elem name !cache - | Style s -> List.fold_left (fun () (k, _v) -> Web.Node.setStyleProperty elem k Js.Null.empty) () s - -let patchVNodesOnElems_PropertiesApply_RemoveAdd callbacks elem idx oldProp newProp = - let () = patchVNodesOnElems_PropertiesApply_Remove callbacks elem idx oldProp in - let () = patchVNodesOnElems_PropertiesApply_Add callbacks elem idx newProp in - () - -let patchVNodesOnElems_PropertiesApply_Mutate _callbacks elem _idx oldProp = function - | NoProp as _newProp -> failwith "This should never be called as all entries through NoProp are gated." - | RawProp (k, v) as _newProp -> - (* let () = Js.log ("Mutating RawProp", elem, oldProp, _newProp) in *) - Web.Node.setProp elem k v (* Wow setting properties is slow, unsure how to optimize this further though... *) - | Attribute (namespace, k, v) as _newProp -> - (* let () = Js.log ("Mutating Attribute", namespace, k, v, elem) in *) - Web.Node.setAttributeNsOptional elem namespace k v - | Data (k, v) as _newProp -> Js.log ("TODO: Mutate Data Unhandled", k, v); failwith "TODO: Mutate Data Unhandled" - | Event (_newName, _newHandlerType, _newCache) as _newProp -> failwith "This will never be called because it is gated" - | Style s as _newProp -> - (* let () = Js.log ("Mutating Style", elem, oldProp, _newProp) in *) - match [@ocaml.warning "-4"] oldProp with - | Style oldS -> - List.fold_left2 (fun () (ok, ov) (nk, nv) -> - if ok = nk then - if ov = nv then - () - else - Web.Node.setStyleProperty elem nk (Js.Null.return nv) - else - let () = Web.Node.setStyleProperty elem ok Js.Null.empty in - Web.Node.setStyleProperty elem nk (Js.Null.return nv) - ) () oldS s - | _ -> failwith "Passed a non-Style to a new Style as a Mutations while the old Style is not actually a style!" - -let rec patchVNodesOnElems_PropertiesApply callbacks elem idx oldProperties newProperties = - (* let () = Js.log ("PROPERTY-APPLY", elem, idx, oldProperties, newProperties) in *) - match [@ocaml.warning "-4"] oldProperties, newProperties with - | [], [] -> true - | [], _newProp :: _newRest -> - (* Well this is wrong, the lengths should never differ, recreate node *) - false - (* let () = patchVNodesOnElems_PropertiesApply_Add callbacks elem idx newProp in - patchVNodesOnElems_PropertiesApply callbacks elem (idx+1) [] newRest *) - | _oldProp :: _oldRest, [] -> - (* Well this is wrong, the lengths should never differ, recreate node *) - false - (* let () = patchVNodesOnElems_PropertiesApply_Remove callbacks elem idx oldProp in - patchVNodesOnElems_PropertiesApply callbacks elem (idx+1) [] oldRest *) - (* NoProp *) - | NoProp :: oldRest, NoProp :: newRest -> patchVNodesOnElems_PropertiesApply callbacks elem (idx+1) oldRest newRest - (* RawProp *) - | (RawProp (oldK, oldV) as oldProp) :: oldRest, (RawProp (newK, newV) as newProp) :: newRest -> - (* let () = Js.log ("RawProp Test", elem, idx, oldProp, newProp, oldK = newK && oldV = newV, oldRest, newRest) in *) - let () = if oldK = newK && oldV = newV then () else - patchVNodesOnElems_PropertiesApply_Mutate callbacks elem idx oldProp newProp in - patchVNodesOnElems_PropertiesApply callbacks elem (idx+1) oldRest newRest - (* Attribute *) - | (Attribute (oldNS, oldK, oldV) as oldProp) :: oldRest, (Attribute (newNS, newK, newV) as newProp) :: newRest -> - let () = if oldNS = newNS && oldK = newK && oldV = newV then () else - patchVNodesOnElems_PropertiesApply_Mutate callbacks elem idx oldProp newProp in - patchVNodesOnElems_PropertiesApply callbacks elem (idx+1) oldRest newRest - (* Data *) - | (Data (oldK, oldV) as oldProp) :: oldRest, (Data (newK, newV) as newProp) :: newRest -> - let () = if oldK = newK && oldV = newV then () else - patchVNodesOnElems_PropertiesApply_Mutate callbacks elem idx oldProp newProp in - patchVNodesOnElems_PropertiesApply callbacks elem (idx+1) oldRest newRest - (* Event *) - (* | Event (oldTyp, oldKey, oldCbev) :: oldRest, Event (newTyp, newKey, newCbev) :: newRest -> - let () = if oldTyp = newTyp && oldKey = newKey then () else *) - | (Event (oldName, oldHandlerType, oldCache) as _oldProp) :: oldRest, (Event (newName, newHandlerType, newCache) as _newProp) :: newRest -> - let () = eventHandler_Mutate callbacks elem oldName newName oldHandlerType newHandlerType oldCache newCache in - patchVNodesOnElems_PropertiesApply callbacks elem (idx+1) oldRest newRest - (* Style *) - | (Style oldS as oldProp) :: oldRest, (Style newS as newProp) :: newRest -> - let () = if oldS = newS then () else - patchVNodesOnElems_PropertiesApply_Mutate callbacks elem idx oldProp newProp in - patchVNodesOnElems_PropertiesApply callbacks elem (idx+1) oldRest newRest - | oldProp :: oldRest, newProp :: newRest -> - let () = patchVNodesOnElems_PropertiesApply_RemoveAdd callbacks elem idx oldProp newProp in - patchVNodesOnElems_PropertiesApply callbacks elem (idx+1) oldRest newRest - - -let patchVNodesOnElems_Properties callbacks elem oldProperties newProperties = - (* Profiling here show `=` to be very slow, but testing reveals it to be faster than checking through the properties - manually on times when there are few to no changes, which is most of the time, so keeping it for now... *) - (* TODO: Look into if there is a better way to quick test property comparisons, especially since it likely returns - false when events are included regardless of anything else. *) - (* if oldProperties = newProperties then - () - else *) - patchVNodesOnElems_PropertiesApply callbacks elem 0 oldProperties newProperties - - -let genEmptyProps length = - let rec aux lst = function - | 0 -> lst - | len -> aux (noProp :: lst) (len - 1) - in aux [] length - -let mapEmptyProps props = List.map (fun _ -> noProp) props - - -let rec patchVNodesOnElems_ReplaceNode callbacks elem elems idx = function [@ocaml.warning "-4"] - | (Node (newNamespace, newTagName, _newKey, _newUnique, newProperties, newChildren)) -> - let oldChild = elems.(idx) in - let newChild = Web.Document.createElementNsOptional newNamespace newTagName in - let [@ocaml.warning "-8"] true = patchVNodesOnElems_Properties callbacks newChild (mapEmptyProps newProperties) newProperties in - let childChildren = Web.Node.childNodes newChild in - let () = patchVNodesOnElems callbacks newChild childChildren 0 [] newChildren in - let _attachedChild = Web.Node.insertBefore elem newChild oldChild in - let _removedChild = Web.Node.removeChild elem oldChild in - (* let () = Js.log ("Fullswap happened", oldChild, newChild) in *) - () - | _ -> failwith "Node replacement should never be passed anything but a node itself" - -and patchVNodesOnElems_CreateElement callbacks = function - | CommentNode s -> Web.Document.createComment s - | Text text -> Web.Document.createTextNode text - | Node (newNamespace, newTagName, _newKey, _unique, newProperties, newChildren) -> - let newChild = Web.Document.createElementNsOptional newNamespace newTagName in - let [@ocaml.warning "-8"] true = patchVNodesOnElems_Properties callbacks newChild (mapEmptyProps newProperties) newProperties in - let childChildren = Web.Node.childNodes newChild in - let () = patchVNodesOnElems callbacks newChild childChildren 0 [] newChildren in - newChild - | LazyGen (_newKey, newGen, newCache) -> - let vdom = newGen () in - let () = newCache := vdom in - patchVNodesOnElems_CreateElement callbacks vdom - | Tagger (tagger, vdom) -> - (* let () = Js.log ("Tagger", "creating", tagger, vdom) in *) - patchVNodesOnElems_CreateElement (tagger callbacks) vdom - -and patchVNodesOnElems_MutateNode callbacks elem elems idx oldNode newNode = - match (oldNode, newNode) with - | ((Node (_oldNamespace, oldTagName, _oldKey, oldUnique, oldProperties, oldChildren) as _oldNode), - (Node (_newNamespace, newTagName, _newKey, newUnique, newProperties, newChildren) as newNode)) -> - (* We are being ordered to mutate the node, the key's are already handled *) - if oldUnique <> newUnique || oldTagName <> newTagName then - (* let () = Js.log ("Node test", "unique swap", elem, elems.(idx), newNode) in *) - patchVNodesOnElems_ReplaceNode callbacks elem elems idx newNode - else (* Same node type, just mutate things *) - (* let () = Js.log ("Node test", "non-unique mutate", elem, elems.(idx), newNode) in *) - let child = elems.(idx) in - let childChildren = Web.Node.childNodes child in - let () = if patchVNodesOnElems_Properties callbacks child oldProperties newProperties then () else - (* Properties mutation failed, full swap and log *) - let () = Js.log "VDom: Failed swapping properties because the property list length changed, use `noProp` to swap properties instead, not by altering the list structure. This is a massive inefficiency until this issue is resolved." in - patchVNodesOnElems_ReplaceNode callbacks elem elems idx newNode - in patchVNodesOnElems callbacks child childChildren 0 oldChildren newChildren - | _ -> failwith "Non-node passed to patchVNodesOnElems_MutateNode" - - -and patchVNodesOnElems callbacks elem elems idx oldVNodes newVNodes = - (* let () = Js.log ("patchVNodesOnElems", elem, elems, idx, oldVNodes, newVNodes) in *) - match [@ocaml.warning "-4"] oldVNodes, newVNodes with - | Tagger (_oldTagger, oldVdom) :: oldRest, _ -> - (* let () = Js.log ("Tagger", "old", oldTagger, oldVdom) in *) - patchVNodesOnElems callbacks elem elems idx (oldVdom :: oldRest) newVNodes - | oldNode :: oldRest, Tagger (newTagger, newVdom) :: newRest -> - (* let () = Js.log ("Tagger", "new", newTagger, newVdom) in *) - let () = patchVNodesOnElems (newTagger callbacks) elem elems idx [oldNode] [newVdom] in - patchVNodesOnElems callbacks elem elems (idx + 1) oldRest newRest - | [], [] -> () - | [], newNode :: newRest -> - let newChild = patchVNodesOnElems_CreateElement callbacks newNode in - let _attachedChild = Web.Node.appendChild elem newChild in - patchVNodesOnElems callbacks elem elems (idx + 1) [] newRest - | _oldVnode :: oldRest, [] -> - let child = elems.(idx) in - let _removedChild = Web.Node.removeChild elem child in - patchVNodesOnElems callbacks elem elems idx oldRest [] (* Not changing idx so we can delete the rest too *) - | CommentNode oldS :: oldRest, CommentNode newS :: newRest when oldS = newS -> patchVNodesOnElems callbacks elem elems (idx+1) oldRest newRest - | Text oldText :: oldRest, Text newText :: newRest -> - let () = if oldText = newText then () else - let child = elems.(idx) in - Web.Node.set_nodeValue child newText in - patchVNodesOnElems callbacks elem elems (idx+1) oldRest newRest - | LazyGen (oldKey, _oldGen, oldCache) :: oldRest, LazyGen (newKey, newGen, newCache) :: newRest -> - if oldKey = newKey then - (* let () = Js.log ("Lazy match!", oldKey, newKey, elem, elems, idx) in *) - let () = newCache := !oldCache in (* Don't forget to pass the cache along... *) - patchVNodesOnElems callbacks elem elems (idx+1) oldRest newRest - else - ( match oldRest, newRest with - | LazyGen (olderKey, _olderGen, _olderCache) :: olderRest, - LazyGen (newerKey, _newerGen, _newerCache) :: newerRest when olderKey = newKey && oldKey = newerKey -> - (* let () = Js.log ("Lazy older newer swap", olderKey, oldKey, newKey, newerKey, elem, elems.(idx)) in *) - (* TODO: Test this branch, it is untested thus far *) - let firstChild = elems.(idx) in - let secondChild = elems.(idx+1) in - let _removedChild = Web.Node.removeChild elem secondChild in - let _attachedChild = Web.Node.insertBefore elem secondChild firstChild in - patchVNodesOnElems callbacks elem elems (idx+2) olderRest newerRest - | LazyGen (olderKey, _olderGen, olderCache) :: olderRest, _ when olderKey = newKey -> - (* let () = Js.log ("Lazy older match", olderKey, oldKey, newKey, elem, elems.(idx)) in *) - let oldChild = elems.(idx) in - let _removedChild = Web.Node.removeChild elem oldChild in - let oldVdom = !olderCache in - let () = newCache := oldVdom in (* Don't forget to pass the cache along... *) - patchVNodesOnElems callbacks elem elems (idx+1) olderRest newRest - | _, LazyGen (newerKey, _newerGen, _newerCache) :: _newerRest when newerKey = oldKey -> - (* let () = Js.log ("Lazy newer match", "parse", oldKey, newKey, newerKey, elem, elems.(idx)) in *) - let oldChild = elems.(idx) in - let newVdom = newGen () in - let () = newCache := newVdom in (* Don't forget to pass the cache along... *) - let newChild = patchVNodesOnElems_CreateElement callbacks newVdom in - let _attachedChild = Web.Node.insertBefore elem newChild oldChild in - patchVNodesOnElems callbacks elem elems (idx+1) oldVNodes newRest - | _ -> - (* let () = Js.log ("Lazy nomatch", oldKey, newKey, elem, elems.(idx)) in *) - let oldVdom = !oldCache in - let newVdom = newGen () in - let () = newCache := newVdom in (* Don't forget to pass the cache along... *) - patchVNodesOnElems callbacks elem elems idx (oldVdom :: oldRest) (newVdom :: newRest) - ) - | (Node (oldNamespace, oldTagName, oldKey, _oldUnique, _oldProperties, _oldChildren) as oldNode) :: oldRest, - (Node (newNamespace, newTagName, newKey, _newUnique, _newProperties, _newChildren) as newNode) :: newRest -> - if oldKey = newKey && oldKey <> "" then (* Do nothing, they are keyed identically *) - (* let () = Js.log ("Node test", "match", elem, elems.(idx), newNode) in *) - patchVNodesOnElems callbacks elem elems (idx+1) oldRest newRest - else if oldKey = "" || newKey = "" then - let () = patchVNodesOnElems_MutateNode callbacks elem elems idx oldNode newNode in - patchVNodesOnElems callbacks elem elems (idx+1) oldRest newRest - else (* Keys do not match but do exist *) - ( match oldRest, newRest with - | Node (olderNamespace, olderTagName, olderKey, _olderUnique, _olderProperties, _olderChildren) :: olderRest, - Node (newerNamespace, newerTagName, newerKey, _newerUnique, _newerProperties, _newerChildren) :: newerRest - when olderNamespace = newNamespace && olderTagName = newTagName && olderKey = newKey && - oldNamespace = newerNamespace && oldTagName = newerTagName && oldKey = newerKey -> - (* let () = Js.log ("Node test", "older newer swap", elem, elems.(idx), newNode) in *) - (* TODO: Test this branch, it is untested thus far *) - let firstChild = elems.(idx) in - let secondChild = elems.(idx+1) in - let _removedChild = Web.Node.removeChild elem secondChild in - let _attachedChild = Web.Node.insertBefore elem secondChild firstChild in - patchVNodesOnElems callbacks elem elems (idx+2) olderRest newerRest - | Node (olderNamespace, olderTagName, olderKey, _olderUnique, _olderProperties, _olderChildren) :: olderRest, _ - when olderNamespace = newNamespace && olderTagName = newTagName && olderKey = newKey -> - (* let () = Js.log ("Node test", "older match", elem, elems.(idx), newNode) in *) - let oldChild = elems.(idx) in - let _removedChild = Web.Node.removeChild elem oldChild in - patchVNodesOnElems callbacks elem elems (idx+1) olderRest newRest - | _, Node (newerNamespace, newerTagName, newerKey, _newerUnique, _newerProperties, _newerChildren) :: _newerRest - when oldNamespace = newerNamespace && oldTagName = newerTagName && oldKey = newerKey -> - (* let () = Js.log ("Node test", "newer match", elem, elems.(idx), newNode) in *) - let oldChild = elems.(idx) in - let newChild = patchVNodesOnElems_CreateElement callbacks newNode in - let _attachedChild = Web.Node.insertBefore elem newChild oldChild in - patchVNodesOnElems callbacks elem elems (idx+1) oldVNodes newRest - | _ -> - let () = patchVNodesOnElems_MutateNode callbacks elem elems idx oldNode newNode in - patchVNodesOnElems callbacks elem elems (idx+1) oldRest newRest - ) - | _oldVnode :: oldRest, newNode :: newRest -> - let oldChild = elems.(idx) in - let newChild = patchVNodesOnElems_CreateElement callbacks newNode in - let _attachedChild = Web.Node.insertBefore elem newChild oldChild in - let _removedChild = Web.Node.removeChild elem oldChild in - patchVNodesOnElems callbacks elem elems (idx+1) oldRest newRest - - - -let patchVNodesIntoElement callbacks elem oldVNodes newVNodes = - let elems = Web.Node.childNodes elem in - let () = patchVNodesOnElems callbacks elem elems 0 oldVNodes newVNodes in (* Planning to return an altered vdom set here instead of using mutation... *) - newVNodes - -let patchVNodeIntoElement callbacks elem oldVNode newVNode = - patchVNodesIntoElement callbacks elem [oldVNode] [newVNode] - - -(* Node namespace key tagName properties children *) -(* | Node of string option * string option * string * 'msg property list * 'msg velem list *) - - - -let wrapCallbacks func callbacks = - ref - { enqueue = (fun msg -> !callbacks.enqueue (func msg)) - } - -let map : ('a -> 'b) -> 'a t -> 'b t = fun func vdom -> - let tagger callbacks = - ref - { enqueue = (fun msg -> !callbacks.enqueue (func msg)) - } in - Tagger (Obj.magic tagger, Obj.magic vdom) - -(* let map func vdom = - let toString () = renderToHtmlString vdom in - let toDom in - Tagger (toString, toDom, toVNodes) *) diff --git a/jscomp/build_tests/bucklescript-tea/src/web.ml b/jscomp/build_tests/bucklescript-tea/src/web.ml deleted file mode 100644 index f899104323..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/web.ml +++ /dev/null @@ -1,32 +0,0 @@ - - -module Event = Web_event - - -module Node = Web_node - - -module Document = Web_document - - -module Date = Web_date - - -module Window = Web_window - - -module Location = Web_location - - -module Json = Web_json - - -module XMLHttpRequest = Web_xmlhttprequest - -module FormData = Web_formdata - - -let polyfills () = - let () = Node.remove_polyfill () in - let () = Window.requestAnimationFrame_polyfill () in - () diff --git a/jscomp/build_tests/bucklescript-tea/src/web_date.ml b/jscomp/build_tests/bucklescript-tea/src/web_date.ml deleted file mode 100644 index 2e575d8e91..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/web_date.ml +++ /dev/null @@ -1,17 +0,0 @@ - - -type t = < -> Js.t - - -type date_obj = < - now : unit -> float [@bs.meth]; -> Js.t - - -external create_date : unit -> t = "Date" [@@bs.new] - -external date_obj : date_obj = "Date" [@@bs.val] - - -let now () = date_obj##now () diff --git a/jscomp/build_tests/bucklescript-tea/src/web_document.ml b/jscomp/build_tests/bucklescript-tea/src/web_document.ml deleted file mode 100644 index 9ee23605a4..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/web_document.ml +++ /dev/null @@ -1,33 +0,0 @@ - -(* TODO: Polyfill document if it is missing, like on node or in native *) - -type t = < - body : Web_node.t [@bs.get]; - createElement : string -> Web_node.t [@bs.meth]; - createElementNS : string -> string -> Web_node.t [@bs.meth]; - createComment : string -> Web_node.t [@bs.meth]; - createTextNode : string -> Web_node.t [@bs.meth]; - getElementById : string -> Web_node.t Js.null_undefined [@bs.meth]; - location : Web_location.t [@bs.get]; -> Js.t - -external document : t = "document" [@@bs.val] - -let body () = document##body - -let createElement typ = document##createElement typ - -let createElementNS namespace key = document##createElementNS namespace key - -let createComment text = document##createComment text - -let createTextNode text = document##createTextNode text - -let getElementById id = document##getElementById id - -let createElementNsOptional namespace tagName = - match namespace with - | "" -> document##createElement tagName - | ns -> document##createElementNS ns tagName - -let location () = document##location diff --git a/jscomp/build_tests/bucklescript-tea/src/web_event.ml b/jscomp/build_tests/bucklescript-tea/src/web_event.ml deleted file mode 100644 index 0cbe91ad90..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/web_event.ml +++ /dev/null @@ -1,20 +0,0 @@ -(* type target = < - value : string Js.undefined [@bs.get]; -> Js.t *) - -type 'node t = < - target : 'node Js.undefined [@bs.get]; - keyCode : int [@bs.get]; - preventDefault : unit -> unit [@bs.meth]; - stopPropagation : unit -> unit [@bs.meth]; -> Js.t - -type 'node cb = 'node t -> unit [@bs] - -type options = bool (* false | true (* TODO: Define a javascript record as another option *) *) - - -type popstateEvent = < -> Js.t - -type popstateCb = popstateEvent -> unit [@bs] diff --git a/jscomp/build_tests/bucklescript-tea/src/web_formdata.ml b/jscomp/build_tests/bucklescript-tea/src/web_formdata.ml deleted file mode 100644 index 780a7c0b93..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/web_formdata.ml +++ /dev/null @@ -1,10 +0,0 @@ - -class type _formdata = object - method append : string -> string -> unit - (* method append_blob : string -> Web_blob.t -> string -> unit *) -end [@bs] -type t = _formdata Js.t - -external create : unit -> t = "FormData" [@@bs.new] - -let append key value f = f##append key value diff --git a/jscomp/build_tests/bucklescript-tea/src/web_json.ml b/jscomp/build_tests/bucklescript-tea/src/web_json.ml deleted file mode 100644 index 5acacd419d..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/web_json.ml +++ /dev/null @@ -1,17 +0,0 @@ - -include Js.Json - -type nothingYet -external stringify : 't -> nothingYet Js.null -> int -> string = "JSON.stringify" [@@bs.val] - -let string_of_json ?(indent=2) value = - match Js.Undefined.toOption value with - | None -> "undefined" - | Some v -> - try stringify v Js.Null.empty indent - with _ -> "" - -let of_type (type a) (_v : a kind) (x : a) : t = - Obj.magic x - -let null : Js_types.null_val = Obj.magic Js.null diff --git a/jscomp/build_tests/bucklescript-tea/src/web_location.ml b/jscomp/build_tests/bucklescript-tea/src/web_location.ml deleted file mode 100644 index 958a8820ec..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/web_location.ml +++ /dev/null @@ -1,76 +0,0 @@ - - -type t = < - href : string [@bs.get] [@bs.set]; - protocol : string [@bs.get] [@bs.set]; - host : string [@bs.get] [@bs.set]; - hostname : string [@bs.get] [@bs.set]; - port : string [@bs.get] [@bs.set]; - pathname : string [@bs.get] [@bs.set]; - search : string [@bs.get] [@bs.set]; - hash : string [@bs.get] [@bs.set]; - username : string [@bs.get] [@bs.set]; - password : string [@bs.get] [@bs.set]; - origin : string [@bs.get]; -> Js.t - -let getHref location = location##href -let setHref location value = location##href #= value - -let getProtocol location = location##protocol -let setProtocol location value = location##protocol #= value - -let getHost location = location##host -let setHost location value = location##host #= value - -let getHostname location = location##hostname -let setHostname location value = location##hostname #= value - -let getPort location = location##port -let setPort location value = location##port #= value - -let getPathname location = location##pathname -let setPathname location value = location##pathname #= value - -let getSearch location = location##search -let setSearch location value = location##search #= value - -let getHash location = location##hash -let setHash location value = location##hash #= value - -let getUsername location = location##username -let setUsername location value = location##username #= value - -let getPassword location = location##password -let setPassword location value = location##password #= value - -let getOrigin location = location##origin - - -type location = - { href : string - ; protocol : string - ; host : string - ; hostname : string - ; port : string - ; pathname : string - ; search : string - ; hash : string - ; username : string - ; password : string - ; origin : string - } - -let asRecord location = - { href = location##href - ; protocol = location##protocol - ; host = location##host - ; hostname = location##hostname - ; port = location##port - ; pathname = location##pathname - ; search = location##search - ; hash = location##hash - ; username = location##username - ; password = location##password - ; origin = location##origin - } diff --git a/jscomp/build_tests/bucklescript-tea/src/web_node.ml b/jscomp/build_tests/bucklescript-tea/src/web_node.ml deleted file mode 100644 index 6cd87393e9..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/web_node.ml +++ /dev/null @@ -1,116 +0,0 @@ - -type style = < - setProperty : Web_json.t Js.undefined [@bs.get]; (* TODO: Revamp this and the next line... *) - setProperty__ : string -> string Js.null -> string Js.null -> unit [@bs.meth]; - > Js.t - -external getStyle : style -> string -> string Js.null = "" [@@bs.get_index] - -external setStyle : style -> string -> string Js.null -> unit = "" [@@bs.set_index] - -type t = < - style : style [@bs.get]; - value : string Js.undefined [@bs.set] [@bs.get]; - checked : bool Js.undefined [@bs.set] [@bs.get]; - childNodes : t Js.Array.t [@bs.get]; - firstChild : t Js.Null.t [@bs.get]; - appendChild : t -> t [@bs.meth]; - removeChild : t -> t [@bs.meth]; - insertBefore : t -> t -> t [@bs.meth]; - remove : unit -> unit [@bs.meth]; - setAttributeNS : string -> string -> string -> unit [@bs.meth]; - setAttribute : string -> string -> unit [@bs.meth]; - removeAttributeNS : string -> string -> unit [@bs.meth]; - removeAttribute : string -> unit [@bs.meth]; - addEventListener : string -> t Web_event.cb -> Web_event.options -> unit [@bs.meth]; - removeEventListener : string -> t Web_event.cb -> Web_event.options -> unit [@bs.meth]; - focus : unit -> unit [@bs.meth]; - (* Text Nodes only *) - nodeValue : string [@bs.set] [@bs.get {null}]; -> Js.t - -external document_node : t = "document" [@@bs.val] - -type event = t Web_event.t - -type event_cb = t Web_event.cb - - -external getProp_asEventListener : t -> 'key -> t Web_event.cb Js.undefined = "" [@@bs.get_index] - -external setProp_asEventListener : t -> 'key -> t Web_event.cb Js.undefined -> unit = "" [@@bs.set_index] - -external getProp : t -> 'key -> 'value = "" [@@bs.get_index] - -external setProp : t -> 'key -> 'value -> unit = "" [@@bs.set_index] - -let style n = n##style - -let getStyle n key = getStyle n##style key - -let setStyle n key value = setStyle n##style key value - -let setStyleProperty n ?(priority=false) key value = - let style = n##style in - match Js.Undefined.toOption style##setProperty with - | None -> setStyle n key value (* TODO: Change this to setAttribute sometime, maybe... *) - | Some _valid -> style##setProperty__ key value (if priority then (Js.Null.return "important") else Js.Null.empty) - -let childNodes n = n##childNodes - -let firstChild n = n##firstChild - -let appendChild n child = n##appendChild child - -let removeChild n child = n##removeChild child - -let insertBefore n child refNode = n##insertBefore child refNode - -let remove n child = n##remove child - -let setAttributeNS n namespace key value = n##setAttributeNS namespace key value - -let setAttribute n key value = n##setAttribute key value - -let setAttributeNsOptional n namespace key value = - match namespace with - | "" -> n##setAttribute key value - | ns -> n##setAttributeNS ns key value - -let removeAttributeNS n namespace key = n##removeAttributeNS namespace key - -let removeAttribute n key = n##removeAttribute key - -let removeAttributeNsOptional n namespace key = - match namespace with - | "" -> n##removeAttribute key - | ns -> n##removeAttributeNS ns key - -let addEventListener n typ listener options = n##addEventListener typ listener options - -let removeEventListener n typ listener options = n##removeEventListener typ listener options - -let focus n = n##focus () - -(* Text Nodes only *) - -let set_nodeValue n text = n##nodeValue #= text - -let get_nodeValue n = n##nodeValue - - -(* Polyfills *) - -let remove_polyfill : unit -> unit = fun () -> - [%bs.raw{| - // remove polyfill - (function() { - if (!('remove' in Element.prototype)) { - Element.prototype.remove = function() { - if (this.parentNode) { - this.parentNode.removeChild(this); - } - }; - }; - }()) - |}] diff --git a/jscomp/build_tests/bucklescript-tea/src/web_window.ml b/jscomp/build_tests/bucklescript-tea/src/web_window.ml deleted file mode 100644 index dbb24e6ce4..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/web_window.ml +++ /dev/null @@ -1,78 +0,0 @@ - -(* TODO: Polyfill window if it is missing, like on node or in native *) - -module History = Web_window_history - -module LocalStorage = Web_window_localstorage - -type timeoutHandlerID = int - -type t = < - history : History.t Js.Undefined.t [@bs.get]; - location : Web_location.t [@bs.get]; - clearTimeout : timeoutHandlerID -> unit [@bs.meth]; - requestAnimationFrame : (float -> unit) -> int [@bs.meth]; - cancelAnimationFrame : int -> unit [@bs.meth]; - setInterval : (unit -> unit) -> float -> timeoutHandlerID [@bs.meth]; - setTimeout : (unit -> unit) -> float -> timeoutHandlerID [@bs.meth]; - addEventListener : string -> Web_node.t Web_event.cb -> Web_event.options -> unit [@bs.meth]; - removeEventListener : string -> Web_node.t Web_event.cb -> Web_event.options -> unit [@bs.meth]; - localStorage : LocalStorage.t Js.Undefined.t [@bs.get]; -> Js.t - -external window : t = "window" [@@bs.val] - - -let history () = window##history - -let localStorage () = window##localStorage - -let location () = window##location - -(* requestAnimationFrame callback is a float timestamp in milliseconds *) -let requestAnimationFrame callback = window##requestAnimationFrame callback - -let cancelAnimationFrame id = window##cancelAnimationFrame id - -let clearTimeout id = window##clearTimeout id - -let setInterval cb msTime = window##setInterval cb msTime - -let setTimeout cb msTime = window##setTimeout cb msTime - -let addEventListener typ listener options = window##addEventListener typ listener options - -let removeEventListener typ listener options = window##removeEventListener typ listener options - - - -(* Polyfills *) - -let requestAnimationFrame_polyfill : unit -> unit = fun () -> - [%bs.raw{| - // requestAnimationFrame polyfill - (function() { - var lastTime = 0; - var vendors = ['ms', 'moz', 'webkit', 'o']; - for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { - window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame']; - window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] - || window[vendors[x]+'CancelRequestAnimationFrame']; - } - - if (!window.requestAnimationFrame) - window.requestAnimationFrame = function(callback, element) { - var currTime = new Date().getTime(); - var timeToCall = Math.max(0, 16 - (currTime - lastTime)); - var id = window.setTimeout(function() { callback(currTime + timeToCall); }, - timeToCall); - lastTime = currTime + timeToCall; - return id; - }; - - if (!window.cancelAnimationFrame) - window.cancelAnimationFrame = function(id) { - clearTimeout(id); - }; - }()) - |}] diff --git a/jscomp/build_tests/bucklescript-tea/src/web_window_history.ml b/jscomp/build_tests/bucklescript-tea/src/web_window_history.ml deleted file mode 100644 index 8c59cca485..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/web_window_history.ml +++ /dev/null @@ -1,40 +0,0 @@ - - -type t = < - length : int [@bs.get]; - back : unit -> unit [@bs.meth]; - forward : unit -> unit [@bs.meth]; - go : int -> unit [@bs.meth]; - pushState : Js.Json.t -> string -> string -> unit [@bs.meth]; - replaceState : Js.Json.t -> string -> string -> unit [@bs.meth]; - state : Js.Json.t [@bs.get]; -> Js.t - - -let length window = match Js.Undefined.toOption window##history with - | None -> -1 - | Some history -> history##length - -let back window = match Js.Undefined.toOption window##history with - | None -> () - | Some history -> history##back - -let forward window = match Js.Undefined.toOption window##history with - | None -> () - | Some history -> history##forward - -let go window to' = match Js.Undefined.toOption window##history with - | None -> () - | Some history -> history##go to' - -let pushState window state title url = match Js.Undefined.toOption window##history with - | None -> () - | Some history -> history##pushState state title url - -let replaceState window state title url = match Js.Undefined.toOption window##history with - | None -> () - | Some history -> history##replaceState state title url - -let state window = match Js.Undefined.toOption window##history with - | None -> Js.Undefined.empty - | Some history -> history##state diff --git a/jscomp/build_tests/bucklescript-tea/src/web_window_localstorage.ml b/jscomp/build_tests/bucklescript-tea/src/web_window_localstorage.ml deleted file mode 100644 index 427ae07ab2..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/web_window_localstorage.ml +++ /dev/null @@ -1,41 +0,0 @@ - - -type t = < - length : int [@bs.get]; - clear : unit -> unit [@bs.meth]; - key : int -> string [@bs.meth]; - getItem : string -> string [@bs.meth]; - removeItem : string -> unit [@bs.meth]; - setItem : string -> string -> unit [@bs.meth]; -> Js.t - -let length window = match Js.Undefined.toOption window##localStorage with - | None -> None - | Some localStorage -> Some (localStorage##length) - - -let clear window = match Js.Undefined.toOption window##localStorage with - | None -> None - | Some localStorage -> Some (localStorage##clear ()) - - -let key window idx = match Js.Undefined.toOption window##localStorage with - | None -> None - | Some localStorage -> Some (localStorage##key idx) - - -let getItem window key = match Js.Undefined.toOption window##localStorage with - | None -> None - | Some localStorage -> - try Some (localStorage##getItem key) - with _ -> None - - -let removeItem window key = match Js.Undefined.toOption window##localStorage with - | None -> None - | Some localStorage -> Some (localStorage##removeItem key) - - -let setItem window key value = match Js.Undefined.toOption window##localStorage with - | None -> None - | Some localStorage -> Some (localStorage##setItem key value) diff --git a/jscomp/build_tests/bucklescript-tea/src/web_xmlhttprequest.ml b/jscomp/build_tests/bucklescript-tea/src/web_xmlhttprequest.ml deleted file mode 100644 index 767034688a..0000000000 --- a/jscomp/build_tests/bucklescript-tea/src/web_xmlhttprequest.ml +++ /dev/null @@ -1,252 +0,0 @@ - -type unresolved - -type xmlHttpRequestUpload - -type event_readystatechange = Web_json.t -type event_abort = Web_json.t -type event_error = Web_json.t -type event_load = Web_json.t -type event_loadstart = Web_json.t -type event_progress = Web_json.t -type event_timeout = Web_json.t -type event_loadend = Web_json.t - -class type _xmlhttprequest = object - (* Methods *) - method abort : unit -> unit - method getAllResponseHeaders : unit -> string Js.null - method getResponseHeader : string -> string Js.null - method _open : string -> string -> bool -> string -> string -> unit - method overrideMimeType : string -> unit - method send : unit -> unit - method send__string : string Js.null -> unit - method send__formdata : Web_formdata.t -> unit - method send__document : Web_document.t -> unit - (* method send_blob : Web_blob.t -> unit *) - (* method send_arrayBufferView : Web_arraybuffer_view.t -> unit *) - method setRequestHeader : string -> string -> unit - - (* Properties *) - method onreadystatechange : (event_readystatechange -> unit) [@@bs.get] [@@bs.set] - method readyState : int [@@bs.get] - method responseType : string [@@bs.get] [@@bs.set] - method response : unresolved Js.null [@@bs.get] - method responseText : string [@@bs.get] - method responseURL : string [@@bs.get] - method responseXML : Web_document.t Js.null [@@bs.get] - method status : int [@@bs.get] - method statusText : string [@@bs.get] - method timeout : float [@@bs.get] [@@bs.set] - method upload : xmlHttpRequestUpload [@@bs.get] - method withCredentials : bool [@@bs.get] [@@bs.set] - - (* Base events *) - method onabort : (event_abort -> unit) [@@bs.get] [@@bs.set] - method onerror : (event_error -> unit) [@@bs.get] [@@bs.set] - method onload : (event_load -> unit) [@@bs.get] [@@bs.set] - method onloadstart : (event_loadstart -> unit) [@@bs.get] [@@bs.set] - method onprogress : (event_loadstart -> unit) [@@bs.get] [@@bs.set] - method ontimeout : (event_timeout -> unit) [@@bs.get] [@@bs.set] - method onloadend : (event_loadend -> unit) [@@bs.get] [@@bs.set] -end [@bs] -type t = _xmlhttprequest Js.t - -external create : unit -> t = "XMLHttpRequest" [@@bs.new] - -type errors = - | IncompleteResponse - | NetworkError - -type body = - | EmptyBody - | EmptyStringBody - | StringBody of string - | FormDataBody of Web_formdata.t - | FormListBody of (string * string) list - | DocumentBody of Web_document.t - (* | BlobBody of Web_blob.t *) - (* | ArrayBufferViewBody of Web_arraybuffer_view.t *) - -(* Main interface functions *) - -let abort x = x##abort () - -let getAllResponseHeaders x = - let open! Tea_result in - match Js.Null.toOption (x##getAllResponseHeaders ()) with - | None -> Error IncompleteResponse - | Some "" -> Error NetworkError - | Some s -> Ok s - -let getAllResponseHeadersAsList x = - let open! Tea_result in - match getAllResponseHeaders x with - | Error _ as err -> err - | Ok s -> Ok - ( s - |> Js.String.split "\r\n" - |> Array.map (Js.String.splitAtMost ": " ~limit:2) - |> Array.to_list - |> List.filter (fun a -> Array.length a == 2) - |> List.map - ( function - | [|key; value|] -> (key, value) - | _ -> failwith "Cannot happen, already checked length" - ) - ) - -let getAllResponseHeadersAsDict x = - let module StringMap = Map.Make(String) in - match getAllResponseHeadersAsList x with - | Tea_result.Error _ as err -> err - | Tea_result.Ok l -> - let insert d (k, v) = StringMap.add k v d in - Tea_result.Ok (List.fold_left insert StringMap.empty l) - -let getResponseHeader key x = Js.Null.toOption (x##getResponse key) - -let open_ method' url ?(async=true) ?(user="") ?(password="") x = - x##_open method' url async user password - -let overrideMimeType mimetype x = x##overrideMimeType mimetype - -let send body x = - match body with - | EmptyBody -> x##send () - | EmptyStringBody -> x##send__string Js.Null.empty - | StringBody s -> x##send__string (Js.Null.return s) - | FormDataBody f -> x##send__formdata f - | FormListBody l -> - let form = - List.fold_left - (fun f (key, value) -> let () = Web_formdata.append key value f in f) - (Web_formdata.create ()) - l in - x##send__formdata form - | DocumentBody d -> x##send__document d - (* | BlobBody b -> x##send_blob b *) - (* | ArrayBufferViewBody a -> x##send_arrayBufferView a *) - -let setRequestHeader header value x = x##setRequestHeader header value - - -(* Properties *) - -type state = - | Unsent - | Opened - | HeadersReceived - | Loading - | Done - -type responseType = - | StringResponseType - | ArrayBufferResponseType - | BlobResponseType - | DocumentResponseType - | JsonResponseType - | TextResponseType - | RawResponseType of string - -type responseBody = - | NoResponse - | StringResponse of string - | ArrayBufferResponse of unit - | BlobResponse of unit - | DocumentResponse of Web_document.t - | JsonResponse of Web_json.t - | TextResponse of string - | RawResponse of string * unit - -let set_onreadystatechange cb x = x##onreadystatechange #= cb - -let get_onreadystatechange x = x##onreadystatechange - -let readyState x = - match x##readystate with - | 0 -> Unsent - | 1 -> Opened - | 2 -> HeadersReceived - | 3 -> Loading - | 4 -> Done - | i -> failwith ("Invalid return from 'readystate' of: " ^ string_of_int i) - -let set_responseType typ x = - match typ with - | StringResponseType -> x##responseType #= "" - | ArrayBufferResponseType -> x##responseType #= "arraybuffer" - | BlobResponseType -> x##responseType #= "blob" - | DocumentResponseType -> x##responseType #= "document" - | JsonResponseType -> x##responseType #= "json" - | TextResponseType -> x##responseType #= "text" - | RawResponseType s -> x##responseType #= s - -let get_responseType x = - match x##responseType with - | "" -> StringResponseType - | "arraybuffer" -> ArrayBufferResponseType - | "blob" -> BlobResponseType - | "document" -> DocumentResponseType - | "json" -> JsonResponseType - | "text" -> TextResponseType - | s -> RawResponseType s - -let get_response x = - match Js.Null.toOption x##response with - | None -> NoResponse - | Some resp -> - match get_responseType x with - | StringResponseType -> StringResponse (Obj.magic resp) - | ArrayBufferResponseType -> ArrayBufferResponse (Obj.magic resp) - | BlobResponseType -> BlobResponse (Obj.magic resp) - | DocumentResponseType -> DocumentResponse (Obj.magic resp) - | JsonResponseType -> JsonResponse (Obj.magic resp) - | TextResponseType -> TextResponse (Obj.magic resp) - | RawResponseType s -> RawResponse (s, Obj.magic resp) - -let get_responseText x = x##responseText - -let get_responseURL x = x##responseURL - -let get_responseXML x = Js.Null.toOption x##responseXML - -let get_status x = x##status - -let get_statusText x = x##statusText - -let set_timeout t x = x##timeout #= t - -let get_timeout x = x##timeout - -let set_withCredentials b x = x##withCredentials #= b - -let get_withCredentials x = x##withCredentials - -let set_onabort cb x = x##onabort #= cb - -let get_onabort x = x##onabort - -let set_onerror cb x = x##onerror #= cb - -let get_onerror x = x##onerror - -let set_onload cb x = x##onload #= cb - -let get_onload x = x##onload - -let set_onloadstart cb x = x##onloadstart #= cb - -let get_onloadstart x = x##onloadstart - -let set_onprogress cb x = x##onprogress #= cb - -let get_onprogress x = x##onprogress - -let set_ontimeout cb x = x##ontimeout #= cb - -let get_ontimeout x = x##ontimeout - -let set_onloadend cb x = x##onloadend #= cb - -let get_onloadend x = x##onloadend diff --git a/jscomp/build_tests/bucklescript-tea/test/index.html b/jscomp/build_tests/bucklescript-tea/test/index.html deleted file mode 100644 index 69bda22193..0000000000 --- a/jscomp/build_tests/bucklescript-tea/test/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - Testing - - - - -
- All code is available on github. -
- - - - - -
-
-
-
- - - diff --git a/jscomp/build_tests/bucklescript-tea/test/test_client.ml b/jscomp/build_tests/bucklescript-tea/test/test_client.ml deleted file mode 100644 index 8c41338c04..0000000000 --- a/jscomp/build_tests/bucklescript-tea/test/test_client.ml +++ /dev/null @@ -1,4 +0,0 @@ -let counter = let open Test_client_counter in main -let btn_update_span = let open Test_client_btn_update_span in main -let attribute_removal = let open Test_client_attribute_removal in main -let drag = let open Test_client_drag in main diff --git a/jscomp/build_tests/bucklescript-tea/test/test_client_attribute_removal.ml b/jscomp/build_tests/bucklescript-tea/test/test_client_attribute_removal.ml deleted file mode 100644 index 917fb2b9a3..0000000000 --- a/jscomp/build_tests/bucklescript-tea/test/test_client_attribute_removal.ml +++ /dev/null @@ -1,63 +0,0 @@ -open Tea.App -open Tea.Html - -type model = { - selected: string option; - languages: string list -} - -type message = - | Select of string - | Delete -[@@bs.deriving {accessors}] - -let render_selected = function - | Some selected -> - div [] - [ text ("you selected " ^ selected) - ; div [onClick Delete] [text "delete selection"]] - | None -> div [] [text "Nothing selected"] - -(* let lang l is_selected = - * let baseProps = [onClick (Select l); style "color" "blue"] in - * let props = if is_selected == true then (style "border" "1px solid black")::baseProps else baseProps - * in - * li props [text l] *) - -let lang l is_selected = - li - [ onClick (Select l) - ; style "color" "blue" - ; if is_selected then style "border" "1px solid black" else noProp - ; if is_selected then Vdom.attribute "" "lang" l else noProp - ] - [ text l ] - -let render_languages selected languages = - let is_selected selected language = - match selected with - | Some l -> language == l - | None -> false - in - let rendered = List.map (fun l -> lang l (is_selected selected l)) languages in - ul [] rendered - -let update state = function - | Select lang -> { state with selected = Some lang} - | Delete -> { state with selected = None } - -let view state = - div [] - [ render_selected state.selected - ; render_languages state.selected state.languages] - -let main = - let initialState = { - selected = Some "Erlang"; - languages = ["Erlang"; "Ocaml"; "Clojure"] - } in - beginnerProgram { - model = initialState; - update; - view; - } diff --git a/jscomp/build_tests/bucklescript-tea/test/test_client_btn_update_span.ml b/jscomp/build_tests/bucklescript-tea/test/test_client_btn_update_span.ml deleted file mode 100644 index cb0578ec07..0000000000 --- a/jscomp/build_tests/bucklescript-tea/test/test_client_btn_update_span.ml +++ /dev/null @@ -1,34 +0,0 @@ -open Tea.App -open Tea.Html - -type msg = - | Trigger -[@@bs.deriving {accessors}] - -type model = (string option * string option) - -let update' model = function - | Trigger -> - let (left, _) = model in - (left, Some "right") - -let render_model = function - | (Some _, Some _) -> - input' [value "This should be on screen"] [] - | _ -> - span [] [text "nothing"] - -let view' model = - div [] - [ button [onClick Trigger] [text "trigger rerender"] - ; render_model model - ] - - - -let main = - beginnerProgram { - model = (Some "left", None); - update = update'; - view = view' - } diff --git a/jscomp/build_tests/bucklescript-tea/test/test_client_counter.ml b/jscomp/build_tests/bucklescript-tea/test/test_client_counter.ml deleted file mode 100644 index 9d8c613e98..0000000000 --- a/jscomp/build_tests/bucklescript-tea/test/test_client_counter.ml +++ /dev/null @@ -1,51 +0,0 @@ -open Tea.App -open Tea.Html - -type msg = - | Increment - | Decrement - | Reset - | Set of int - -let update model = function - | Increment -> model + 1 - | Decrement -> model - 1 - | Reset -> 0 - | Set v -> v - - -let view_button title msg = - button - [ onClick msg - ] - [ text title - ] - -let view model = - div - [] - [ span - [ style "text-weight" "bold" ] - [ text (string_of_int model) ] - ; br [] - ; view_button "Increment" ( - if model >= 3 then - Decrement - else - Increment - ) - ; br [] - ; view_button "Decrement" Decrement - ; br [] - ; view_button "Set to 42" (Set 42) - ; br [] - ; if model <> 0 then view_button "Reset" Reset else noNode - ] - - -let main = - beginnerProgram { - model = 4; - update; - view; - } diff --git a/jscomp/build_tests/bucklescript-tea/test/test_client_drag.ml b/jscomp/build_tests/bucklescript-tea/test/test_client_drag.ml deleted file mode 100644 index 767b04abdf..0000000000 --- a/jscomp/build_tests/bucklescript-tea/test/test_client_drag.ml +++ /dev/null @@ -1,110 +0,0 @@ -open Tea -open Tea.App -open Tea.Html -open Tea.Mouse - -type msg = - | DragStart of position - | DragAt of position - | DragEnd of position -[@@bs.deriving {accessors}] - - -type drag = - { start : position - ; current : position - } - -type model = - { position : position - ; drag : drag option - } - - -let init () = - ( {position = {x = 200; y = 200}; drag = None}, Cmd.none ) - -let getPosition {position; drag} = - match drag with - | None -> - position - - | Some {start; current} -> - { x = position.x + current.x - start.x - ; y = position.y + current.y - start.y - } - - -let updateHelp ({position} as model) = function - | DragStart xy -> - { position - ; drag = Some {start = xy; current = xy} - } - - | DragAt xy -> - { position - ; drag = match model.drag with - | None -> None - | Some drag -> Some {drag with current = xy} - } - - | DragEnd _ -> - { position = getPosition model - ; drag = None - } - - -let update model msg = - ( updateHelp model msg, Cmd.none ) - - -let subscriptions model = - match model.drag with - | None -> - Sub.none - - | Some _ -> - Sub.batch [ Mouse.moves dragAt; Mouse.ups dragEnd ] - - -let px number = - (string_of_int number) ^ "px" - -let onMouseDown = - onCB "mousedown" "" (fun ev -> - Json.Decoder.decodeEvent (Json.Decoder.map dragStart Mouse.position) ev - |> Result.result_to_option - ) - -let view model = - let realPosition = getPosition model in - div - [ onMouseDown - ; styles - [ "background-color", "#3C8D2F" - ; "cursor", "move" - - ; "width", "100px" - ; "height", "100px" - ; "border-radius", "4px" - ; "position", "absolute" - ; "left", px realPosition.x - ; "top", px realPosition.y - - ; "color", "white" - ; "display", "flex" - ; "align-items", "center" - ; "justify-content", "center" - ] - ] - [ text "Drag Me!" - ] - - -let main = - standardProgram { - init; - update; - view; - subscriptions; - } diff --git a/jscomp/build_tests/bucklescript-tea/test/tester.ml b/jscomp/build_tests/bucklescript-tea/test/tester.ml deleted file mode 100644 index 0853b5c93f..0000000000 --- a/jscomp/build_tests/bucklescript-tea/test/tester.ml +++ /dev/null @@ -1 +0,0 @@ -let a = 42 diff --git a/jscomp/build_tests/case/.gitignore b/jscomp/build_tests/case/.gitignore deleted file mode 100644 index 8f464d0527..0000000000 --- a/jscomp/build_tests/case/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/case/README.md b/jscomp/build_tests/case/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/case/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/case/bsconfig.json b/jscomp/build_tests/case/bsconfig.json deleted file mode 100644 index 3416b27ef0..0000000000 --- a/jscomp/build_tests/case/bsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "case", - "version": "0.1.0", - "sources": [ - "src" - ], - "bs-dependencies" : [ - // add your bs-dependencies here - ] -} \ No newline at end of file diff --git a/jscomp/build_tests/case/input.js b/jscomp/build_tests/case/input.js deleted file mode 100644 index b1f37c561c..0000000000 --- a/jscomp/build_tests/case/input.js +++ /dev/null @@ -1,8 +0,0 @@ - - -var p = require('child_process') -var assert = require('assert') -var o = p.spawnSync(`bsb`,{encoding: 'utf8',cwd : __dirname}) - - -assert.ok(o.stderr.match(/different cases/).length > 0 ) \ No newline at end of file diff --git a/jscomp/build_tests/case/package.json b/jscomp/build_tests/case/package.json deleted file mode 100644 index 410690cf29..0000000000 --- a/jscomp/build_tests/case/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "case", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "rescript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.9.2" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/case/src/Demo.mli b/jscomp/build_tests/case/src/Demo.mli deleted file mode 100644 index 139597f9cb..0000000000 --- a/jscomp/build_tests/case/src/Demo.mli +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/jscomp/build_tests/case/src/demo.ml b/jscomp/build_tests/case/src/demo.ml deleted file mode 100644 index 923b77316d..0000000000 --- a/jscomp/build_tests/case/src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let () = Js.log "Hello, BuckleScript" \ No newline at end of file diff --git a/jscomp/build_tests/case2/.gitignore b/jscomp/build_tests/case2/.gitignore deleted file mode 100644 index 8f464d0527..0000000000 --- a/jscomp/build_tests/case2/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/case2/README.md b/jscomp/build_tests/case2/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/case2/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/case2/bsconfig.json b/jscomp/build_tests/case2/bsconfig.json deleted file mode 100644 index 948c3e6171..0000000000 --- a/jscomp/build_tests/case2/bsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "case2", - "version": "0.1.0", - "sources": [ - "src" - ], - "bs-dependencies" : [ - // add your bs-dependencies here - ] -} \ No newline at end of file diff --git a/jscomp/build_tests/case2/input.js b/jscomp/build_tests/case2/input.js deleted file mode 100644 index b1f37c561c..0000000000 --- a/jscomp/build_tests/case2/input.js +++ /dev/null @@ -1,8 +0,0 @@ - - -var p = require('child_process') -var assert = require('assert') -var o = p.spawnSync(`bsb`,{encoding: 'utf8',cwd : __dirname}) - - -assert.ok(o.stderr.match(/different cases/).length > 0 ) \ No newline at end of file diff --git a/jscomp/build_tests/case2/package.json b/jscomp/build_tests/case2/package.json deleted file mode 100644 index 6ed87c0e24..0000000000 --- a/jscomp/build_tests/case2/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "case2", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.9.2" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/case2/src/X.ml b/jscomp/build_tests/case2/src/X.ml deleted file mode 100644 index 923b77316d..0000000000 --- a/jscomp/build_tests/case2/src/X.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let () = Js.log "Hello, BuckleScript" \ No newline at end of file diff --git a/jscomp/build_tests/case2/src/x.mli b/jscomp/build_tests/case2/src/x.mli deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/.gitignore b/jscomp/build_tests/case3/.gitignore deleted file mode 100644 index 73fc816200..0000000000 --- a/jscomp/build_tests/case3/.gitignore +++ /dev/null @@ -1,27 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -.bsb.lock -*.bs.js \ No newline at end of file diff --git a/jscomp/build_tests/case3/README.md b/jscomp/build_tests/case3/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/case3/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/case3/bsconfig.json b/jscomp/build_tests/case3/bsconfig.json deleted file mode 100644 index 6d2fa8ccae..0000000000 --- a/jscomp/build_tests/case3/bsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "case3", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - }, - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "suffix": ".bs.js", - "bs-dependencies": [ - ], - "warnings": {"error" : "+101"}, - "refmt": 3 -} diff --git a/jscomp/build_tests/case3/input.js b/jscomp/build_tests/case3/input.js deleted file mode 100644 index bbf5f03f66..0000000000 --- a/jscomp/build_tests/case3/input.js +++ /dev/null @@ -1,16 +0,0 @@ -//@ts-check - -var p = require("child_process"); -var fs = require("fs"); -var path = require("path"); -var assert = require("assert"); -p.spawnSync(`bsb`, { - encoding: "utf8", - cwd: __dirname, - stdio: [0, 1, 2] -}); - -var o = fs.readFileSync(path.join(__dirname, "src", "hello.bs.js"), "ascii"); -assert.ok(/HelloGen.f/.test(o)) - - diff --git a/jscomp/build_tests/case3/package.json b/jscomp/build_tests/case3/package.json deleted file mode 100644 index 94f05bf846..0000000000 --- a/jscomp/build_tests/case3/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "case3", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^5.1.0-dev.1" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/case3/src/B01.bs.js b/jscomp/build_tests/case3/src/B01.bs.js deleted file mode 100644 index 40fed0f7be..0000000000 --- a/jscomp/build_tests/case3/src/B01.bs.js +++ /dev/null @@ -1,2 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/jscomp/build_tests/case3/src/B01.re b/jscomp/build_tests/case3/src/B01.re deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/src/B01.rei b/jscomp/build_tests/case3/src/B01.rei deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/src/B02.bs.js b/jscomp/build_tests/case3/src/B02.bs.js deleted file mode 100644 index 40fed0f7be..0000000000 --- a/jscomp/build_tests/case3/src/B02.bs.js +++ /dev/null @@ -1,2 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/jscomp/build_tests/case3/src/B02.re b/jscomp/build_tests/case3/src/B02.re deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/src/B03.bs.js b/jscomp/build_tests/case3/src/B03.bs.js deleted file mode 100644 index 40fed0f7be..0000000000 --- a/jscomp/build_tests/case3/src/B03.bs.js +++ /dev/null @@ -1,2 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/jscomp/build_tests/case3/src/B03.ml b/jscomp/build_tests/case3/src/B03.ml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/src/B04.bs.js b/jscomp/build_tests/case3/src/B04.bs.js deleted file mode 100644 index 40fed0f7be..0000000000 --- a/jscomp/build_tests/case3/src/B04.bs.js +++ /dev/null @@ -1,2 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/jscomp/build_tests/case3/src/B04.ml b/jscomp/build_tests/case3/src/B04.ml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/src/B04.mli b/jscomp/build_tests/case3/src/B04.mli deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/src/B05.bs.js b/jscomp/build_tests/case3/src/B05.bs.js deleted file mode 100644 index 40fed0f7be..0000000000 --- a/jscomp/build_tests/case3/src/B05.bs.js +++ /dev/null @@ -1,2 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/jscomp/build_tests/case3/src/B05.re b/jscomp/build_tests/case3/src/B05.re deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/src/B05.rei b/jscomp/build_tests/case3/src/B05.rei deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/src/a01.bs.js b/jscomp/build_tests/case3/src/a01.bs.js deleted file mode 100644 index 40fed0f7be..0000000000 --- a/jscomp/build_tests/case3/src/a01.bs.js +++ /dev/null @@ -1,2 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/jscomp/build_tests/case3/src/a01.re b/jscomp/build_tests/case3/src/a01.re deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/src/a01.rei b/jscomp/build_tests/case3/src/a01.rei deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/src/a02.bs.js b/jscomp/build_tests/case3/src/a02.bs.js deleted file mode 100644 index 40fed0f7be..0000000000 --- a/jscomp/build_tests/case3/src/a02.bs.js +++ /dev/null @@ -1,2 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/jscomp/build_tests/case3/src/a02.re b/jscomp/build_tests/case3/src/a02.re deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/src/a03.bs.js b/jscomp/build_tests/case3/src/a03.bs.js deleted file mode 100644 index 40fed0f7be..0000000000 --- a/jscomp/build_tests/case3/src/a03.bs.js +++ /dev/null @@ -1,2 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/jscomp/build_tests/case3/src/a03.ml b/jscomp/build_tests/case3/src/a03.ml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/src/a04.bs.js b/jscomp/build_tests/case3/src/a04.bs.js deleted file mode 100644 index 40fed0f7be..0000000000 --- a/jscomp/build_tests/case3/src/a04.bs.js +++ /dev/null @@ -1,2 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/jscomp/build_tests/case3/src/a04.ml b/jscomp/build_tests/case3/src/a04.ml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/src/a04.mli b/jscomp/build_tests/case3/src/a04.mli deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/src/a05.bs.js b/jscomp/build_tests/case3/src/a05.bs.js deleted file mode 100644 index 40fed0f7be..0000000000 --- a/jscomp/build_tests/case3/src/a05.bs.js +++ /dev/null @@ -1,2 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/jscomp/build_tests/case3/src/a05.re b/jscomp/build_tests/case3/src/a05.re deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/src/a05.rei b/jscomp/build_tests/case3/src/a05.rei deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/case3/src/hello.re b/jscomp/build_tests/case3/src/hello.re deleted file mode 100644 index f7183ef4a7..0000000000 --- a/jscomp/build_tests/case3/src/hello.re +++ /dev/null @@ -1,3 +0,0 @@ - -[@genType.import "hh"] -external f : int => int = "f"; \ No newline at end of file diff --git a/jscomp/build_tests/cmd/input.js b/jscomp/build_tests/cmd/input.js deleted file mode 100644 index 0d5be78cae..0000000000 --- a/jscomp/build_tests/cmd/input.js +++ /dev/null @@ -1,58 +0,0 @@ -var p = require("child_process"); - -var assert = require("assert"); - -var react = ` -type u - -external a : u = "react" [@@bs.module] - -external b : unit -> int = "bool" [@@bs.module "react"] - -let v = a -let h = b () -`; - -var foo_react = ` -type bla - - -external foo : bla = "foo.react" [@@bs.module] - -external bar : unit -> bla = "bar" [@@bs.val] [@@bs.module "foo.react"] - -let c = foo - -let d = bar () -`; - -function evalCode(code) { - var bsc_exe = p.spawnSync( - `bsc -bs-no-version-header -bs-cross-module-opt -w -40 -bs-eval '${code}'`, - { - encoding: "utf8", - shell: true, - cwd: __dirname - } - ); - - return bsc_exe; -} - -function test(react) { - var x = evalCode(react); - console.log(x); - assert.ok(x.stdout.match(/require/g).length === 1, "react one"); -} - -test(react); - -assert.ok( - evalCode(react + foo_react).stdout.match(/require/g).length === 2, - "foo react twice " -); - -assert.ok( - evalCode(foo_react).stdout.match(/require/g).length === 1, - "foo react one" -); diff --git a/jscomp/build_tests/custom_namespace/.gitignore b/jscomp/build_tests/custom_namespace/.gitignore deleted file mode 100644 index 8f464d0527..0000000000 --- a/jscomp/build_tests/custom_namespace/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/custom_namespace/README.md b/jscomp/build_tests/custom_namespace/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/custom_namespace/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/custom_namespace/bsconfig.json b/jscomp/build_tests/custom_namespace/bsconfig.json deleted file mode 100644 index fe59a20d05..0000000000 --- a/jscomp/build_tests/custom_namespace/bsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "namespace", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - }, - "namespace": "Foo_bar", - "package-specs":{ - "module": "commonjs", - "in-source": true - }, - "bsc-flags" : ["-bs-no-version-header"], - "bs-dependencies": [], - "warnings": { - "number" : "-40+6+7", - "error" : true - }, - "suffix": ".bs.js" -} diff --git a/jscomp/build_tests/custom_namespace/input.js b/jscomp/build_tests/custom_namespace/input.js deleted file mode 100644 index dfd4a77ad8..0000000000 --- a/jscomp/build_tests/custom_namespace/input.js +++ /dev/null @@ -1,12 +0,0 @@ -var child_process = require('child_process') -var fs = require('fs') -var path = require('path') -var assert = require('assert') - -child_process.execSync(`bsb -clean-world && bsb -make-world`, {cwd:__dirname, stdio:[0,1,2]}) - -var x = require('./src/demo.bs.js') -assert.equal(x.v, 42 ) - -var merlin = fs.readFileSync(path.join(__dirname,'.merlin'), 'utf8') -assert.ok(merlin.includes('-open Foo_bar')) diff --git a/jscomp/build_tests/custom_namespace/package.json b/jscomp/build_tests/custom_namespace/package.json deleted file mode 100644 index 9017b1bc9a..0000000000 --- a/jscomp/build_tests/custom_namespace/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "namespace", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.8.3" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/custom_namespace/src/demo.bs.js b/jscomp/build_tests/custom_namespace/src/demo.bs.js deleted file mode 100644 index 5bcd6ef35d..0000000000 --- a/jscomp/build_tests/custom_namespace/src/demo.bs.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - - -var v = 42; - -exports.v = v; -/* No side effect */ diff --git a/jscomp/build_tests/custom_namespace/src/demo.ml b/jscomp/build_tests/custom_namespace/src/demo.ml deleted file mode 100644 index a65bbc17de..0000000000 --- a/jscomp/build_tests/custom_namespace/src/demo.ml +++ /dev/null @@ -1 +0,0 @@ -let v = 42 diff --git a/jscomp/build_tests/customize_namespace/.gitignore b/jscomp/build_tests/customize_namespace/.gitignore deleted file mode 100644 index 2ace595109..0000000000 --- a/jscomp/build_tests/customize_namespace/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.bs.js -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/customize_namespace/bsconfig.json b/jscomp/build_tests/customize_namespace/bsconfig.json deleted file mode 100644 index 87d5404e87..0000000000 --- a/jscomp/build_tests/customize_namespace/bsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "a0003", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - }, - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "suffix": ".bs.js", - "bs-dependencies": [ - "depa", - "depb" - ], - "warnings": {"error" : "+101"}, - "refmt": 3 -} diff --git a/jscomp/build_tests/customize_namespace/input.js b/jscomp/build_tests/customize_namespace/input.js deleted file mode 100644 index f317daddac..0000000000 --- a/jscomp/build_tests/customize_namespace/input.js +++ /dev/null @@ -1,8 +0,0 @@ - -//@ts-check - -var cp = require('child_process') -var assert = require('assert') -cp.execSync(`bsb -make-world`, {cwd : __dirname, encoding : 'utf8'}) - -assert.equal(require('./src/demo.bs').v,5) \ No newline at end of file diff --git a/jscomp/build_tests/customize_namespace/node_modules/depa/bsconfig.json b/jscomp/build_tests/customize_namespace/node_modules/depa/bsconfig.json deleted file mode 100644 index 86b6b3a1e2..0000000000 --- a/jscomp/build_tests/customize_namespace/node_modules/depa/bsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "depa", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - }, - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "suffix": ".bs.js", - "namespace" : "depx", - "warnings": { - "error" : "+101" - }, - "refmt": 3 -} diff --git a/jscomp/build_tests/customize_namespace/node_modules/depa/package.json b/jscomp/build_tests/customize_namespace/node_modules/depa/package.json deleted file mode 100644 index 4b136ef308..0000000000 --- a/jscomp/build_tests/customize_namespace/node_modules/depa/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "depa", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^5.0.0-dev.2" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/customize_namespace/node_modules/depa/src/a.ml b/jscomp/build_tests/customize_namespace/node_modules/depa/src/a.ml deleted file mode 100644 index 45ae05f568..0000000000 --- a/jscomp/build_tests/customize_namespace/node_modules/depa/src/a.ml +++ /dev/null @@ -1 +0,0 @@ -let v = 3 \ No newline at end of file diff --git a/jscomp/build_tests/customize_namespace/node_modules/depa/src/demo.ml b/jscomp/build_tests/customize_namespace/node_modules/depa/src/demo.ml deleted file mode 100644 index c5a39ce7b0..0000000000 --- a/jscomp/build_tests/customize_namespace/node_modules/depa/src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - -let v = A.v -let () = Js.log "Hello, BuckleScript" \ No newline at end of file diff --git a/jscomp/build_tests/customize_namespace/node_modules/depb/bsconfig.json b/jscomp/build_tests/customize_namespace/node_modules/depb/bsconfig.json deleted file mode 100644 index 9ee62b28bf..0000000000 --- a/jscomp/build_tests/customize_namespace/node_modules/depb/bsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "depb", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - }, - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "suffix": ".bs.js", - "namespace" : true, - "warnings": { - "error" : "+101" - }, - "refmt": 3 -} diff --git a/jscomp/build_tests/customize_namespace/node_modules/depb/package.json b/jscomp/build_tests/customize_namespace/node_modules/depb/package.json deleted file mode 100644 index d541520ae4..0000000000 --- a/jscomp/build_tests/customize_namespace/node_modules/depb/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "depb", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^5.0.0-dev.2" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/customize_namespace/node_modules/depb/src/a.ml b/jscomp/build_tests/customize_namespace/node_modules/depb/src/a.ml deleted file mode 100644 index 6361d0f1ab..0000000000 --- a/jscomp/build_tests/customize_namespace/node_modules/depb/src/a.ml +++ /dev/null @@ -1 +0,0 @@ -let v = 2 \ No newline at end of file diff --git a/jscomp/build_tests/customize_namespace/node_modules/depb/src/demo.ml b/jscomp/build_tests/customize_namespace/node_modules/depb/src/demo.ml deleted file mode 100644 index c7262ca979..0000000000 --- a/jscomp/build_tests/customize_namespace/node_modules/depb/src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - -let v = A.v -let () = Js.log __FILE__ \ No newline at end of file diff --git a/jscomp/build_tests/customize_namespace/package.json b/jscomp/build_tests/customize_namespace/package.json deleted file mode 100644 index 0e6f34bd91..0000000000 --- a/jscomp/build_tests/customize_namespace/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "a0003", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^5.0.0-dev.2" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/customize_namespace/src/demo.ml b/jscomp/build_tests/customize_namespace/src/demo.ml deleted file mode 100644 index 57e133ec0f..0000000000 --- a/jscomp/build_tests/customize_namespace/src/demo.ml +++ /dev/null @@ -1,4 +0,0 @@ - - -let () = Js.log "Hello, BuckleScript" -let v = Depx.Demo.v + Depb.Demo.v \ No newline at end of file diff --git a/jscomp/build_tests/cycle/.gitignore b/jscomp/build_tests/cycle/.gitignore deleted file mode 100644 index 1c2bb277a5..0000000000 --- a/jscomp/build_tests/cycle/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -.bsb.lock \ No newline at end of file diff --git a/jscomp/build_tests/cycle/README.md b/jscomp/build_tests/cycle/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/cycle/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/cycle/bsconfig.json b/jscomp/build_tests/cycle/bsconfig.json deleted file mode 100644 index 0a8b82ee80..0000000000 --- a/jscomp/build_tests/cycle/bsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "cycle", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - }, - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "suffix": ".bs.js", - "bs-dependencies": [ - ], - "warnings": {"error" : "+101"}, - "refmt": 3 -} diff --git a/jscomp/build_tests/cycle/input.js b/jscomp/build_tests/cycle/input.js deleted file mode 100644 index b105c22338..0000000000 --- a/jscomp/build_tests/cycle/input.js +++ /dev/null @@ -1,8 +0,0 @@ -//@ts-check -var cp = require("child_process"); -var assert = require("assert"); - - var output = cp.spawnSync(`bsb`, { encoding: "utf8" ,shell:true}); - - -assert(/dependency cycle/.test(output.stdout)) \ No newline at end of file diff --git a/jscomp/build_tests/cycle/package.json b/jscomp/build_tests/cycle/package.json deleted file mode 100644 index 300d45a3d6..0000000000 --- a/jscomp/build_tests/cycle/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "cycle", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^5.1.0-dev.1" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/cycle/src/a.ml b/jscomp/build_tests/cycle/src/a.ml deleted file mode 100644 index b44504e5b3..0000000000 --- a/jscomp/build_tests/cycle/src/a.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let v = B.v \ No newline at end of file diff --git a/jscomp/build_tests/cycle/src/b.ml b/jscomp/build_tests/cycle/src/b.ml deleted file mode 100644 index 9f613852b2..0000000000 --- a/jscomp/build_tests/cycle/src/b.ml +++ /dev/null @@ -1 +0,0 @@ -let v = A.v \ No newline at end of file diff --git a/jscomp/build_tests/dev/.gitignore b/jscomp/build_tests/dev/.gitignore deleted file mode 100644 index cec5237a24..0000000000 --- a/jscomp/build_tests/dev/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -**/*.js \ No newline at end of file diff --git a/jscomp/build_tests/dev/README.md b/jscomp/build_tests/dev/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/dev/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/dev/bsconfig.json b/jscomp/build_tests/dev/bsconfig.json deleted file mode 100644 index 9ba8ba4e0c..0000000000 --- a/jscomp/build_tests/dev/bsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "dev", - "version": "0.1.0", - "sources": [ - { - "dir": "src", - "subdirs" : true - }, - { - "dir": "examples", - "type" : "dev", - "subdirs" : true - } - ], - "package-specs" : { - "module": "commonjs", - "in-source": true - }, - "namespace": true, - "bs-dependencies" : [ - "liba" - ] -} \ No newline at end of file diff --git a/jscomp/build_tests/dev/examples/test.ml b/jscomp/build_tests/dev/examples/test.ml deleted file mode 100644 index f5f8f9d8c1..0000000000 --- a/jscomp/build_tests/dev/examples/test.ml +++ /dev/null @@ -1 +0,0 @@ -let v = Demo.name \ No newline at end of file diff --git a/jscomp/build_tests/dev/input.js b/jscomp/build_tests/dev/input.js deleted file mode 100644 index 05c614f7e9..0000000000 --- a/jscomp/build_tests/dev/input.js +++ /dev/null @@ -1,7 +0,0 @@ -//@ts-check -var assert = require('assert') -var path = require('path') -var p = require('child_process') -p.execSync(`bsb -make-world`, {cwd:__dirname,shell:true,encoding:'utf8'}) -var u = require("./examples/test.js") -assert.equal(path.basename(u.v),'demo.mldemo.ml') \ No newline at end of file diff --git a/jscomp/build_tests/dev/node_modules/liba/.gitignore b/jscomp/build_tests/dev/node_modules/liba/.gitignore deleted file mode 100644 index 8f464d0527..0000000000 --- a/jscomp/build_tests/dev/node_modules/liba/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/dev/node_modules/liba/.vscode/tasks.json b/jscomp/build_tests/dev/node_modules/liba/.vscode/tasks.json deleted file mode 100644 index 6e049a1ad3..0000000000 --- a/jscomp/build_tests/dev/node_modules/liba/.vscode/tasks.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "version": "0.1.0", - "command": "npm", - "options": { - "cwd": "${workspaceRoot}" - }, - "isShellCommand": true, - "args": [ - "run", - "watch" - ], - "showOutput": "always", - "isBackground": true, - "problemMatcher": { - "fileLocation": "absolute", - "owner": "ocaml", - "watching": { - "activeOnStart": false, - "beginsPattern": ">>>> Start compiling", - "endsPattern": ">>>> Finish compiling" - }, - "pattern": [ - { - "regexp": "^File \"(.*)\", line (\\d+)(?:, characters (\\d+)-(\\d+))?:$", - "file": 1, - "line": 2, - "column": 3, - "endColumn": 4 - }, - { - "regexp": "^(?:(?:Parse\\s+)?(Warning|[Ee]rror)(?:\\s+\\d+)?:)?\\s+(.*)$", - "severity": 1, - "message": 2, - "loop": true - } - ] - } -} \ No newline at end of file diff --git a/jscomp/build_tests/dev/node_modules/liba/README.md b/jscomp/build_tests/dev/node_modules/liba/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/dev/node_modules/liba/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/dev/node_modules/liba/bsconfig.json b/jscomp/build_tests/dev/node_modules/liba/bsconfig.json deleted file mode 100644 index f34d7ed09e..0000000000 --- a/jscomp/build_tests/dev/node_modules/liba/bsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "liba", - "version": "0.1.0", - "sources": [ - { - "dir": "src", - "subdirs" : true - }, - { - "dir" : "examples", - "type": "dev", - "subdirs" : true - } - ], - "namespace": true - -} \ No newline at end of file diff --git a/jscomp/build_tests/dev/node_modules/liba/examples/xx/test.ml b/jscomp/build_tests/dev/node_modules/liba/examples/xx/test.ml deleted file mode 100644 index af158a09e6..0000000000 --- a/jscomp/build_tests/dev/node_modules/liba/examples/xx/test.ml +++ /dev/null @@ -1 +0,0 @@ -let name = __FILE__ + 3 \ No newline at end of file diff --git a/jscomp/build_tests/dev/node_modules/liba/examples/yy.ml b/jscomp/build_tests/dev/node_modules/liba/examples/yy.ml deleted file mode 100644 index d32a6d0646..0000000000 --- a/jscomp/build_tests/dev/node_modules/liba/examples/yy.ml +++ /dev/null @@ -1 +0,0 @@ -let name = __FILE__ \ No newline at end of file diff --git a/jscomp/build_tests/dev/node_modules/liba/package.json b/jscomp/build_tests/dev/node_modules/liba/package.json deleted file mode 100644 index 63c69448e0..0000000000 --- a/jscomp/build_tests/dev/node_modules/liba/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "liba", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.9.3" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/dev/node_modules/liba/src/demo.ml b/jscomp/build_tests/dev/node_modules/liba/src/demo.ml deleted file mode 100644 index ca8c589c96..0000000000 --- a/jscomp/build_tests/dev/node_modules/liba/src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let name = __FILE__ \ No newline at end of file diff --git a/jscomp/build_tests/dev/node_modules/liba/src/hi/fib.ml b/jscomp/build_tests/dev/node_modules/liba/src/hi/fib.ml deleted file mode 100644 index d32a6d0646..0000000000 --- a/jscomp/build_tests/dev/node_modules/liba/src/hi/fib.ml +++ /dev/null @@ -1 +0,0 @@ -let name = __FILE__ \ No newline at end of file diff --git a/jscomp/build_tests/dev/package.json b/jscomp/build_tests/dev/package.json deleted file mode 100644 index a3a03aa1d2..0000000000 --- a/jscomp/build_tests/dev/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "dev", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.9.3" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/dev/src/demo.ml b/jscomp/build_tests/dev/src/demo.ml deleted file mode 100644 index 1b2a37152f..0000000000 --- a/jscomp/build_tests/dev/src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let name = __FILE__ ^ Liba.Demo.name \ No newline at end of file diff --git a/jscomp/build_tests/devdeps/.gitignore b/jscomp/build_tests/devdeps/.gitignore deleted file mode 100644 index 1c2bb277a5..0000000000 --- a/jscomp/build_tests/devdeps/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -.bsb.lock \ No newline at end of file diff --git a/jscomp/build_tests/devdeps/README.md b/jscomp/build_tests/devdeps/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/devdeps/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/devdeps/bsconfig.json b/jscomp/build_tests/devdeps/bsconfig.json deleted file mode 100644 index b9f636ce5c..0000000000 --- a/jscomp/build_tests/devdeps/bsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "devdeps", - "version": "0.1.0", - "sources": [{ - "dir" : "src", - "subdirs" : true - }, - { - "dir" : "test", - "type" : "dev" - } -], - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "suffix": ".bs.js", - "bs-dependencies": [ - ], - "bs-dev-dependencies": ["weird"], - "warnings": {"error":"+101"}, - "refmt": 3 -} diff --git a/jscomp/build_tests/devdeps/input.js b/jscomp/build_tests/devdeps/input.js deleted file mode 100644 index b045edfef1..0000000000 --- a/jscomp/build_tests/devdeps/input.js +++ /dev/null @@ -1,28 +0,0 @@ -//@ts-check - -var cp = require("child_process"); -var assert = require("assert"); -var targetOne = `test/test.cmj`; -var targetTwo = `src/demo.cmj`; - -cp.exec(`bsb -- -t commands ${targetOne}`, { encoding: "ascii" }, function( - err, - output -) { - if (err !== null) { - console.error("unexpected"); - throw err; - } - assert(output.split("\n").some(x => x.includes("weird"))); -}); - -cp.exec(`bsb -- -t commands ${targetTwo}`, { encoding: "ascii" }, function( - err, - output -) { - if (err !== null) { - console.error("unexpected"); - throw err; - } - assert(output.split("\n").some(x => x.includes("weird")) === false); -}); diff --git a/jscomp/build_tests/devdeps/node_modules/weird/bsconfig.json b/jscomp/build_tests/devdeps/node_modules/weird/bsconfig.json deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/devdeps/node_modules/weird/package.json b/jscomp/build_tests/devdeps/node_modules/weird/package.json deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/devdeps/package.json b/jscomp/build_tests/devdeps/package.json deleted file mode 100644 index 4c76777d05..0000000000 --- a/jscomp/build_tests/devdeps/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "devdeps", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^5.0.5" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/devdeps/src/demo.ml b/jscomp/build_tests/devdeps/src/demo.ml deleted file mode 100644 index 923b77316d..0000000000 --- a/jscomp/build_tests/devdeps/src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let () = Js.log "Hello, BuckleScript" \ No newline at end of file diff --git a/jscomp/build_tests/devdeps/test/test.ml b/jscomp/build_tests/devdeps/test/test.ml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/devonly/.gitignore b/jscomp/build_tests/devonly/.gitignore deleted file mode 100644 index 1c2bb277a5..0000000000 --- a/jscomp/build_tests/devonly/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -.bsb.lock \ No newline at end of file diff --git a/jscomp/build_tests/devonly/README.md b/jscomp/build_tests/devonly/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/devonly/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/devonly/bsconfig.json b/jscomp/build_tests/devonly/bsconfig.json deleted file mode 100644 index 0a646a1c50..0000000000 --- a/jscomp/build_tests/devonly/bsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "devonly", - "version": "0.1.0", - "sources": [{ - "dir" : "src", - "subdirs" : true, - "type": "dev" - },{ - "dir" : "src2", - "type": "dev" - }], - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "suffix": ".bs.js", - "bs-dependencies": [ - ], - "warnings": {"error" : "+101"}, - "refmt": 3 -} diff --git a/jscomp/build_tests/devonly/input.js b/jscomp/build_tests/devonly/input.js deleted file mode 100644 index 01e3c58eac..0000000000 --- a/jscomp/build_tests/devonly/input.js +++ /dev/null @@ -1,5 +0,0 @@ - -//@ts-check -var cp = require("child_process"); - -cp.execSync(`bsb`,{cwd:__dirname,encoding:'utf8'}) diff --git a/jscomp/build_tests/devonly/package.json b/jscomp/build_tests/devonly/package.json deleted file mode 100644 index 9e07341041..0000000000 --- a/jscomp/build_tests/devonly/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "devonly", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^5.1.0-dev.1" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/devonly/src/demo.bs.js b/jscomp/build_tests/devonly/src/demo.bs.js deleted file mode 100644 index 98f5dce25f..0000000000 --- a/jscomp/build_tests/devonly/src/demo.bs.js +++ /dev/null @@ -1,8 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -'use strict'; - -var Depdemo = require("./depdemo.bs.js"); - -console.log(Depdemo.a); - -/* Not a pure module */ diff --git a/jscomp/build_tests/devonly/src/demo.ml b/jscomp/build_tests/devonly/src/demo.ml deleted file mode 100644 index 980efd6de5..0000000000 --- a/jscomp/build_tests/devonly/src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let () = Js.log Depdemo.a \ No newline at end of file diff --git a/jscomp/build_tests/devonly/src/depdemo.bs.js b/jscomp/build_tests/devonly/src/depdemo.bs.js deleted file mode 100644 index 4cf78af2a0..0000000000 --- a/jscomp/build_tests/devonly/src/depdemo.bs.js +++ /dev/null @@ -1,8 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -'use strict'; - - -var a = 3; - -exports.a = a; -/* No side effect */ diff --git a/jscomp/build_tests/devonly/src/depdemo.ml b/jscomp/build_tests/devonly/src/depdemo.ml deleted file mode 100644 index b7660e86d3..0000000000 --- a/jscomp/build_tests/devonly/src/depdemo.ml +++ /dev/null @@ -1 +0,0 @@ -let a = 3 \ No newline at end of file diff --git a/jscomp/build_tests/devonly/src2/hello.bs.js b/jscomp/build_tests/devonly/src2/hello.bs.js deleted file mode 100644 index 4cccf8f263..0000000000 --- a/jscomp/build_tests/devonly/src2/hello.bs.js +++ /dev/null @@ -1,8 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -'use strict'; - - -var v = 3; - -exports.v = v; -/* No side effect */ diff --git a/jscomp/build_tests/devonly/src2/hello.ml b/jscomp/build_tests/devonly/src2/hello.ml deleted file mode 100644 index f470837acd..0000000000 --- a/jscomp/build_tests/devonly/src2/hello.ml +++ /dev/null @@ -1,2 +0,0 @@ - -let v = 3 \ No newline at end of file diff --git a/jscomp/build_tests/devonly/src2/hellodep.bs.js b/jscomp/build_tests/devonly/src2/hellodep.bs.js deleted file mode 100644 index 67cbf8ec70..0000000000 --- a/jscomp/build_tests/devonly/src2/hellodep.bs.js +++ /dev/null @@ -1,8 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -'use strict'; - -var Hello = require("./hello.bs.js"); - -console.log(Hello.v); - -/* Not a pure module */ diff --git a/jscomp/build_tests/devonly/src2/hellodep.ml b/jscomp/build_tests/devonly/src2/hellodep.ml deleted file mode 100644 index eee454f3c6..0000000000 --- a/jscomp/build_tests/devonly/src2/hellodep.ml +++ /dev/null @@ -1 +0,0 @@ -Js.log Hello.v \ No newline at end of file diff --git a/jscomp/build_tests/duplicated_symlinked_packages/.gitignore b/jscomp/build_tests/duplicated_symlinked_packages/.gitignore deleted file mode 100644 index 5abc616503..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.merlin -**/lib diff --git a/jscomp/build_tests/duplicated_symlinked_packages/README.md b/jscomp/build_tests/duplicated_symlinked_packages/README.md deleted file mode 100644 index 100d897ea0..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/README.md +++ /dev/null @@ -1,36 +0,0 @@ -Special tests for duplicated symlink warnings - - -``` -. -├── a -│   ├── node_modules -│   │   ├── c -> ../../c -│   │   └── z -│   │   ├── lib -│   │   │   ├── bs -│   │   │   └── ocaml -│   │   └── src -│   └── src -├── b -│   ├── node_modules -│   │   └── c -> ../../c -│   └── src -├── c -│   └── src -├── node_modules -│   ├── a -> ../a -│   ├── b -> ../b -│   └── z -│   └── src -└── out.expected -└── src - -``` - -`c` is symlinked everywhere, while `z` is actually conflicting package. - -`out.expected` has exactly 1 warning for `z` conflict - -Run `node ./jscomp/build_tests/duplicated_symlinked_packages/input.js` to check the tests against previous snapshots. -Run `node ./jscomp/build_tests/duplicated_symlinked_packages/input.js update` to update the snapshots (assuming you've made some changes to duplicated) diff --git a/jscomp/build_tests/duplicated_symlinked_packages/a/bsconfig.json b/jscomp/build_tests/duplicated_symlinked_packages/a/bsconfig.json deleted file mode 100644 index d43b12fa55..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/a/bsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "a", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - }, - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "suffix": ".bs.js", - "bs-dependencies": [ - "c", - "z" - ], - "warnings": {"error" : "+101"}, - "namespace": true, - "refmt": 3 -} diff --git a/jscomp/build_tests/duplicated_symlinked_packages/a/node_modules/c b/jscomp/build_tests/duplicated_symlinked_packages/a/node_modules/c deleted file mode 120000 index 2fcc51115e..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/a/node_modules/c +++ /dev/null @@ -1 +0,0 @@ -../../c \ No newline at end of file diff --git a/jscomp/build_tests/duplicated_symlinked_packages/a/node_modules/z/bsconfig.json b/jscomp/build_tests/duplicated_symlinked_packages/a/node_modules/z/bsconfig.json deleted file mode 100644 index c99d72b2b4..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/a/node_modules/z/bsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "z", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - }, - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "suffix": ".bs.js", - "bs-dependencies": [ - - ], - "warnings": { - "error" : "+101" - }, - "namespace": true, - "refmt": 3 -} diff --git a/jscomp/build_tests/duplicated_symlinked_packages/a/node_modules/z/package.json b/jscomp/build_tests/duplicated_symlinked_packages/a/node_modules/z/package.json deleted file mode 100644 index 92b37ba7fb..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/a/node_modules/z/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "z", - "version": "0.1.0", - "scripts": { - "build": "bsb -make-world", - "start": "bsb -make-world -w", - "clean": "bsb -clean-world" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^7.0.1", - "gentype": "^3.7.1" - } -} diff --git a/jscomp/build_tests/duplicated_symlinked_packages/a/node_modules/z/src/.git_keep b/jscomp/build_tests/duplicated_symlinked_packages/a/node_modules/z/src/.git_keep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/duplicated_symlinked_packages/a/package.json b/jscomp/build_tests/duplicated_symlinked_packages/a/package.json deleted file mode 100644 index ccd2dbee29..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/a/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "a", - "version": "0.1.0", - "scripts": { - "build": "bsb -make-world", - "start": "bsb -make-world -w", - "clean": "bsb -clean-world" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": {} -} diff --git a/jscomp/build_tests/duplicated_symlinked_packages/a/src/.git_keep b/jscomp/build_tests/duplicated_symlinked_packages/a/src/.git_keep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/duplicated_symlinked_packages/b/bsconfig.json b/jscomp/build_tests/duplicated_symlinked_packages/b/bsconfig.json deleted file mode 100644 index a81ad8abc5..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/b/bsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "b", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - }, - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "suffix": ".bs.js", - "bs-dependencies": [ - "c" - ], - "warnings": {"error" : "+101"}, - "namespace": true, - "refmt": 3 -} diff --git a/jscomp/build_tests/duplicated_symlinked_packages/b/node_modules/c b/jscomp/build_tests/duplicated_symlinked_packages/b/node_modules/c deleted file mode 120000 index 2fcc51115e..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/b/node_modules/c +++ /dev/null @@ -1 +0,0 @@ -../../c \ No newline at end of file diff --git a/jscomp/build_tests/duplicated_symlinked_packages/b/package.json b/jscomp/build_tests/duplicated_symlinked_packages/b/package.json deleted file mode 100644 index 51e7fbb2a6..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/b/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "b", - "version": "0.1.0", - "scripts": { - "build": "bsb -make-world", - "start": "bsb -make-world -w", - "clean": "bsb -clean-world" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": {} -} diff --git a/jscomp/build_tests/duplicated_symlinked_packages/b/src/.git_keep b/jscomp/build_tests/duplicated_symlinked_packages/b/src/.git_keep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/duplicated_symlinked_packages/bsconfig.json b/jscomp/build_tests/duplicated_symlinked_packages/bsconfig.json deleted file mode 100644 index 3407bcfb1a..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/bsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "duplicated-symlinked-packages", - "version": "0.1.0", - "sources": [ - "src" - ], - "bs-dependencies" : [ - "a", - "b", - "z" - ] -} diff --git a/jscomp/build_tests/duplicated_symlinked_packages/c/bsconfig.json b/jscomp/build_tests/duplicated_symlinked_packages/c/bsconfig.json deleted file mode 100644 index 3238c16330..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/c/bsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "c", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - }, - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "suffix": ".bs.js", - "bs-dependencies": [ - - ], - "warnings": {"error" : "+101"}, - "namespace": true, - "refmt": 3 -} diff --git a/jscomp/build_tests/duplicated_symlinked_packages/c/package.json b/jscomp/build_tests/duplicated_symlinked_packages/c/package.json deleted file mode 100644 index 92b37ba7fb..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/c/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "z", - "version": "0.1.0", - "scripts": { - "build": "bsb -make-world", - "start": "bsb -make-world -w", - "clean": "bsb -clean-world" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^7.0.1", - "gentype": "^3.7.1" - } -} diff --git a/jscomp/build_tests/duplicated_symlinked_packages/c/src/.git_keep b/jscomp/build_tests/duplicated_symlinked_packages/c/src/.git_keep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/duplicated_symlinked_packages/input.js b/jscomp/build_tests/duplicated_symlinked_packages/input.js deleted file mode 100644 index 9c30547412..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/input.js +++ /dev/null @@ -1,32 +0,0 @@ -const fs = require('fs') -const path = require('path') -const child_process = require('child_process') - -const expectedFilePath = path.join(__dirname, 'out.expected') - -const updateTests = process.argv[2] === 'update' - -function postProcessErrorOutput (output) { - output = output.trimRight() - output = output.replace(new RegExp(__dirname, 'gi'), '.') - return output -} - -child_process.exec('bsb -clean -make-world', {cwd: __dirname}, (err, stdout, stderr) => { - const actualErrorOutput = postProcessErrorOutput(stderr.toString()) - if (updateTests) { - fs.writeFileSync(expectedFilePath, actualErrorOutput) - } else { - const expectedErrorOutput = postProcessErrorOutput(fs.readFileSync(expectedFilePath, {encoding: 'utf-8'})) - if (expectedErrorOutput !== actualErrorOutput) { - console.error(`The old and new error output aren't the same`) - console.error('\n=== Old:') - console.error(expectedErrorOutput) - console.error('\n=== New:') - console.error(actualErrorOutput) - process.exit(1) - } - } -}) - - diff --git a/jscomp/build_tests/duplicated_symlinked_packages/node_modules/a b/jscomp/build_tests/duplicated_symlinked_packages/node_modules/a deleted file mode 120000 index 82f488f269..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/node_modules/a +++ /dev/null @@ -1 +0,0 @@ -../a \ No newline at end of file diff --git a/jscomp/build_tests/duplicated_symlinked_packages/node_modules/b b/jscomp/build_tests/duplicated_symlinked_packages/node_modules/b deleted file mode 120000 index 42532fe13c..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/node_modules/b +++ /dev/null @@ -1 +0,0 @@ -../b \ No newline at end of file diff --git a/jscomp/build_tests/duplicated_symlinked_packages/node_modules/z/bsconfig.json b/jscomp/build_tests/duplicated_symlinked_packages/node_modules/z/bsconfig.json deleted file mode 100644 index c99d72b2b4..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/node_modules/z/bsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "z", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - }, - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "suffix": ".bs.js", - "bs-dependencies": [ - - ], - "warnings": { - "error" : "+101" - }, - "namespace": true, - "refmt": 3 -} diff --git a/jscomp/build_tests/duplicated_symlinked_packages/node_modules/z/package.json b/jscomp/build_tests/duplicated_symlinked_packages/node_modules/z/package.json deleted file mode 100644 index 92b37ba7fb..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/node_modules/z/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "z", - "version": "0.1.0", - "scripts": { - "build": "bsb -make-world", - "start": "bsb -make-world -w", - "clean": "bsb -clean-world" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^7.0.1", - "gentype": "^3.7.1" - } -} diff --git a/jscomp/build_tests/duplicated_symlinked_packages/node_modules/z/src/.git_keep b/jscomp/build_tests/duplicated_symlinked_packages/node_modules/z/src/.git_keep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/duplicated_symlinked_packages/out.expected b/jscomp/build_tests/duplicated_symlinked_packages/out.expected deleted file mode 100644 index 57e0a503f3..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/out.expected +++ /dev/null @@ -1,2 +0,0 @@ -Duplicated package: z ./node_modules/z (chosen) vs ./node_modules/a/node_modules/z in ./node_modules/a -Duplicated package: z ./node_modules/z (chosen) vs ./node_modules/a/node_modules/z in ./node_modules/a \ No newline at end of file diff --git a/jscomp/build_tests/duplicated_symlinked_packages/package.json b/jscomp/build_tests/duplicated_symlinked_packages/package.json deleted file mode 100644 index c83e7801a0..0000000000 --- a/jscomp/build_tests/duplicated_symlinked_packages/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "duplicated-symlinked-packages", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.8.3" - } -} diff --git a/jscomp/build_tests/duplicated_symlinked_packages/src/.git_keep b/jscomp/build_tests/duplicated_symlinked_packages/src/.git_keep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/exports/.gitignore b/jscomp/build_tests/exports/.gitignore deleted file mode 100644 index 8f464d0527..0000000000 --- a/jscomp/build_tests/exports/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/exports/README.md b/jscomp/build_tests/exports/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/exports/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/exports/bsconfig.json b/jscomp/build_tests/exports/bsconfig.json deleted file mode 100644 index e402bc598b..0000000000 --- a/jscomp/build_tests/exports/bsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "exports", - "version": "0.1.0", - "sources": [ - "src" - ], - "bs-dependencies" : [ - // add your bs-dependencies here - ] -} \ No newline at end of file diff --git a/jscomp/build_tests/exports/input.js b/jscomp/build_tests/exports/input.js deleted file mode 100644 index b80267548b..0000000000 --- a/jscomp/build_tests/exports/input.js +++ /dev/null @@ -1,4 +0,0 @@ -var child_process = require('child_process') - -child_process.execSync(`bsb`, - { cwd: __dirname, encoding: 'utf8', stdio: [0, 1, 2] }) \ No newline at end of file diff --git a/jscomp/build_tests/exports/package.json b/jscomp/build_tests/exports/package.json deleted file mode 100644 index fe201ee950..0000000000 --- a/jscomp/build_tests/exports/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "exports", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.8.3" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/exports/src/demo.ml b/jscomp/build_tests/exports/src/demo.ml deleted file mode 100644 index 1ff72fc466..0000000000 --- a/jscomp/build_tests/exports/src/demo.ml +++ /dev/null @@ -1,13 +0,0 @@ - - -let _ = - Js.Int.toString, - Js.Float.isNaN - - -(* make sure exception runtime is there *) -let f = function [@bs.open] - | Not_found -> 0 - | ( Invalid_argument _ - | Stack_overflow ) -> 1 - | Sys_error _ -> 2 diff --git a/jscomp/build_tests/generator/.gitignore b/jscomp/build_tests/generator/.gitignore deleted file mode 100644 index 8f464d0527..0000000000 --- a/jscomp/build_tests/generator/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/generator/README.md b/jscomp/build_tests/generator/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/generator/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/generator/bsconfig.json b/jscomp/build_tests/generator/bsconfig.json deleted file mode 100644 index cef85d1305..0000000000 --- a/jscomp/build_tests/generator/bsconfig.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "generator", - "version": "0.1.0", - "sources": [ - { - "dir": "src", - "generators": [ - { - "name": "ml_cmj_cmi", - "edge": [ - "test.ml", ":", "test.cpp.ml" - ] - } - ] - } - - ], - "generators": [ - { - "name" : "ml_cmj_cmi", - "command": "sed 's/OCAML/3/' $in > $out" - } - ], - "bs-dependencies" : [ - - ] -} \ No newline at end of file diff --git a/jscomp/build_tests/generator/input.js b/jscomp/build_tests/generator/input.js deleted file mode 100644 index a804255c42..0000000000 --- a/jscomp/build_tests/generator/input.js +++ /dev/null @@ -1,19 +0,0 @@ - - -var child_process = require('child_process') -var assert = require('assert') -var output = child_process.spawnSync(`bsb -clean-world && bsb -make-world`, - { - cwd: __dirname, - encoding: 'utf8', - stdio : ['pipe','pipe','pipe'], - shell : true - } -) -// console.log(output) -// var matches = output.match(/IGNORED/g) -// console.log(matches) - -assert.equal((output.stderr.match(/IGNORED/g)).length, 1) -assert.equal(output.stderr.indexOf('a-b.ml') > 0, true) - diff --git a/jscomp/build_tests/generator/package.json b/jscomp/build_tests/generator/package.json deleted file mode 100644 index 5ad03f8f81..0000000000 --- a/jscomp/build_tests/generator/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "generator", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.8.3" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/generator/src/a-b.ml b/jscomp/build_tests/generator/src/a-b.ml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/generator/src/demo.ml b/jscomp/build_tests/generator/src/demo.ml deleted file mode 100644 index 923b77316d..0000000000 --- a/jscomp/build_tests/generator/src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let () = Js.log "Hello, BuckleScript" \ No newline at end of file diff --git a/jscomp/build_tests/generator/src/test.cpp.ml b/jscomp/build_tests/generator/src/test.cpp.ml deleted file mode 100644 index 9cce515143..0000000000 --- a/jscomp/build_tests/generator/src/test.cpp.ml +++ /dev/null @@ -1,10 +0,0 @@ - -(* -#define FS_VAL(name,ty) external name : ty = "" [@@bs.module "fs"] - - -FS_VAL(readdirSync, string -> string array) - *) - - - let ocaml = OCAML \ No newline at end of file diff --git a/jscomp/build_tests/generator/src/test.ml b/jscomp/build_tests/generator/src/test.ml deleted file mode 100644 index 7e4157a82e..0000000000 --- a/jscomp/build_tests/generator/src/test.ml +++ /dev/null @@ -1,10 +0,0 @@ - -(* -#define FS_VAL(name,ty) external name : ty = "" [@@bs.module "fs"] - - -FS_VAL(readdirSync, string -> string array) - *) - - - let ocaml = 3 diff --git a/jscomp/build_tests/hyphen2/.gitignore b/jscomp/build_tests/hyphen2/.gitignore deleted file mode 100644 index 8f464d0527..0000000000 --- a/jscomp/build_tests/hyphen2/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/hyphen2/README.md b/jscomp/build_tests/hyphen2/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/hyphen2/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/hyphen2/bsconfig.json b/jscomp/build_tests/hyphen2/bsconfig.json deleted file mode 100644 index a9855a852c..0000000000 --- a/jscomp/build_tests/hyphen2/bsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "hyphen2", - "version": "0.1.0", - "sources": [ - "y-src" - ], - "namespace": true -} \ No newline at end of file diff --git a/jscomp/build_tests/hyphen2/input.js b/jscomp/build_tests/hyphen2/input.js deleted file mode 100644 index 96e4281670..0000000000 --- a/jscomp/build_tests/hyphen2/input.js +++ /dev/null @@ -1,3 +0,0 @@ -var p = require('child_process') - -p.execSync(`bsb`,{cwd:__dirname,stdio:[0,1,2]}) \ No newline at end of file diff --git a/jscomp/build_tests/hyphen2/package.json b/jscomp/build_tests/hyphen2/package.json deleted file mode 100644 index 0a2d2809d5..0000000000 --- a/jscomp/build_tests/hyphen2/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "hyphen2", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.9.1" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/hyphen2/y-src/demo.ml b/jscomp/build_tests/hyphen2/y-src/demo.ml deleted file mode 100644 index 923b77316d..0000000000 --- a/jscomp/build_tests/hyphen2/y-src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let () = Js.log "Hello, BuckleScript" \ No newline at end of file diff --git a/jscomp/build_tests/in_source/bsconfig.json b/jscomp/build_tests/in_source/bsconfig.json deleted file mode 100644 index 01012613ec..0000000000 --- a/jscomp/build_tests/in_source/bsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name" : "x", - "sources" : ".", - "package-specs" : [{ - "module" : "commonjs", - "in-source": true - },{ - "module": "es6", - "in-source": true - } - ] -} \ No newline at end of file diff --git a/jscomp/build_tests/in_source/input.js b/jscomp/build_tests/in_source/input.js deleted file mode 100644 index 17cf4f6dce..0000000000 --- a/jscomp/build_tests/in_source/input.js +++ /dev/null @@ -1,27 +0,0 @@ -var child_process = require('child_process') - -var assert = require('assert') - - - - -assert.throws( - () => { - var output = child_process.execSync(`bsb -regen`, - { cwd: __dirname, encoding: 'utf8' } - ) - } - , - function (err){ - if (err.message.match(/detected two module formats/)){ - return true - } - return false - } - -) - - -// assert.throws(()=>{ -// throw new Error('Wrong value') -// }, /x/) \ No newline at end of file diff --git a/jscomp/build_tests/in_source/input.sh b/jscomp/build_tests/in_source/input.sh deleted file mode 100644 index fb7182c816..0000000000 --- a/jscomp/build_tests/in_source/input.sh +++ /dev/null @@ -1 +0,0 @@ -bsb -regen \ No newline at end of file diff --git a/jscomp/build_tests/install/.gitignore b/jscomp/build_tests/install/.gitignore deleted file mode 100644 index ed88eec953..0000000000 --- a/jscomp/build_tests/install/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -*.bs.js \ No newline at end of file diff --git a/jscomp/build_tests/install/bsconfig.json b/jscomp/build_tests/install/bsconfig.json deleted file mode 100644 index 1c761aad89..0000000000 --- a/jscomp/build_tests/install/bsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "install", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - }, - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "suffix": ".bs.js", - "bs-dependencies": [ - ], - "warnings": {"error" : "+101"}, - "refmt": 3 - } - \ No newline at end of file diff --git a/jscomp/build_tests/install/input.js b/jscomp/build_tests/install/input.js deleted file mode 100644 index 8405e4543c..0000000000 --- a/jscomp/build_tests/install/input.js +++ /dev/null @@ -1,32 +0,0 @@ -var p = require("child_process"); -var fs = require("fs"); -var path = require("path"); -var assert = require("assert"); - -p.spawnSync(`bsb`, [`-clean`], { - encoding: "utf8", - cwd: __dirname, - stdio: [0, 1, 2] -}); -p.spawnSync(`bsb`, [`-install`], { - encoding: "utf8", - cwd: __dirname, - stdio: [0, 1, 2] -}); - -var fooExists = fs.existsSync(path.join(__dirname, "lib", "ocaml", "Foo.cmi")); -assert.ok(fooExists == false); - -p.spawnSync(`bsb`, { - encoding: "utf8", - cwd: __dirname, - stdio: [0, 1, 2] -}); -p.spawnSync(`bsb` ,[`-install`], { - encoding: "utf8", - cwd: __dirname, - stdio: [0, 1, 2] -}); - -fooExists = fs.existsSync(path.join(__dirname, "lib", "ocaml", "Foo.cmi")); -assert.ok(fooExists); \ No newline at end of file diff --git a/jscomp/build_tests/install/package.json b/jscomp/build_tests/install/package.json deleted file mode 100644 index 161529d71b..0000000000 --- a/jscomp/build_tests/install/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "install", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "install": "bsb -install", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^5.1.0-dev.1" - } - } \ No newline at end of file diff --git a/jscomp/build_tests/install/src/Foo.re b/jscomp/build_tests/install/src/Foo.re deleted file mode 100644 index 02c8fd113d..0000000000 --- a/jscomp/build_tests/install/src/Foo.re +++ /dev/null @@ -1 +0,0 @@ -let main = () => Js.log("hello"); \ No newline at end of file diff --git a/jscomp/build_tests/jsxv/.gitignore b/jscomp/build_tests/jsxv/.gitignore deleted file mode 100644 index 77bd7bcfba..0000000000 --- a/jscomp/build_tests/jsxv/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -.DS_Store -.merlin -npm-debug.log -/lib/bs/ -/node_modules/ diff --git a/jscomp/build_tests/jsxv/README.md b/jscomp/build_tests/jsxv/README.md deleted file mode 100644 index 61633ebfaf..0000000000 --- a/jscomp/build_tests/jsxv/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Basic Reason Template - -Hello! This project allows you to quickly get started with Reason and BuckleScript. If you wanted a more sophisticated version, try the `react` template (`bsb -theme react -init .`). - -# Build -``` -npm run build -``` - -# Build + Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically diff --git a/jscomp/build_tests/jsxv/bsconfig.json b/jscomp/build_tests/jsxv/bsconfig.json deleted file mode 100644 index 4688af174b..0000000000 --- a/jscomp/build_tests/jsxv/bsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -// This is the configuration file used by BuckleScript's build system bsb. Its documentation lives here: http://bucklescript.github.io/bucklescript/docson/#build-schema.json -// BuckleScript comes with its own parser for bsconfig.json, which is normal JSON, with the extra support of comments and trailing commas. -{ - "name": "jsxv", - "version": "0.1.0", - "sources": [ - "src" - ], - "reason": { - "react-jsx": false - }, - "bs-dependencies" : [ - // add your dependencies here. You'd usually install them normally through `npm install my-dependency`. If my-dependency has a bsconfig.json too, then everything will work seamlessly. - ], - "namespace": true -} diff --git a/jscomp/build_tests/jsxv/input.js b/jscomp/build_tests/jsxv/input.js deleted file mode 100644 index e8284aa465..0000000000 --- a/jscomp/build_tests/jsxv/input.js +++ /dev/null @@ -1,9 +0,0 @@ -//@ts-check - -var assert = require('assert') - -var p = require('child_process') - -var output = p.spawnSync(`bsb`, {cwd:__dirname, encoding:'utf8',shell:true}) - -assert.ok(output.stderr.match(/File ".*bsconfig.json", line 10/)) \ No newline at end of file diff --git a/jscomp/build_tests/jsxv/package.json b/jscomp/build_tests/jsxv/package.json deleted file mode 100644 index 43d07ed1d8..0000000000 --- a/jscomp/build_tests/jsxv/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "jsxv", - "version": "0.1.0", - "scripts": { - "build": "bsb -make-world", - "start": "bsb -make-world -w", - "clean": "bsb -clean-world" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.9.3" - } -} diff --git a/jscomp/build_tests/jsxv/src/demo.re b/jscomp/build_tests/jsxv/src/demo.re deleted file mode 100644 index f50d59a36b..0000000000 --- a/jscomp/build_tests/jsxv/src/demo.re +++ /dev/null @@ -1 +0,0 @@ -Js.log("Hello, BuckleScript and Reason!"); diff --git a/jscomp/build_tests/jsxv/tasks.json b/jscomp/build_tests/jsxv/tasks.json deleted file mode 100644 index 6e049a1ad3..0000000000 --- a/jscomp/build_tests/jsxv/tasks.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "version": "0.1.0", - "command": "npm", - "options": { - "cwd": "${workspaceRoot}" - }, - "isShellCommand": true, - "args": [ - "run", - "watch" - ], - "showOutput": "always", - "isBackground": true, - "problemMatcher": { - "fileLocation": "absolute", - "owner": "ocaml", - "watching": { - "activeOnStart": false, - "beginsPattern": ">>>> Start compiling", - "endsPattern": ">>>> Finish compiling" - }, - "pattern": [ - { - "regexp": "^File \"(.*)\", line (\\d+)(?:, characters (\\d+)-(\\d+))?:$", - "file": 1, - "line": 2, - "column": 3, - "endColumn": 4 - }, - { - "regexp": "^(?:(?:Parse\\s+)?(Warning|[Ee]rror)(?:\\s+\\d+)?:)?\\s+(.*)$", - "severity": 1, - "message": 2, - "loop": true - } - ] - } -} \ No newline at end of file diff --git a/jscomp/build_tests/monorepo/.gitignore b/jscomp/build_tests/monorepo/.gitignore deleted file mode 100644 index 33dd1d0201..0000000000 --- a/jscomp/build_tests/monorepo/.gitignore +++ /dev/null @@ -1,35 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -.bsb.lock -/node_modules/ - -/lib -/libs/*/lib/ -/apps/*/lib/ -/apps/*/.melage.eobjs/ -/libs/*/.melage.eobjs/ - -.melange.eobjs diff --git a/jscomp/build_tests/monorepo/README.md b/jscomp/build_tests/monorepo/README.md deleted file mode 100644 index b20ab1bade..0000000000 --- a/jscomp/build_tests/monorepo/README.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - diff --git a/jscomp/build_tests/monorepo/apps/app/bsconfig.json b/jscomp/build_tests/monorepo/apps/app/bsconfig.json deleted file mode 100644 index 23fbad2f0b..0000000000 --- a/jscomp/build_tests/monorepo/apps/app/bsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "@app/app", - "version": "0.1.0", - "sources": { - "dir": "src", - "subdirs": true - }, - "bs-dependencies": ["@app/number-adder"] -} diff --git a/jscomp/build_tests/monorepo/apps/app/src/main.bs.js b/jscomp/build_tests/monorepo/apps/app/src/main.bs.js deleted file mode 100644 index 0ce539cbf9..0000000000 --- a/jscomp/build_tests/monorepo/apps/app/src/main.bs.js +++ /dev/null @@ -1,10 +0,0 @@ -// Generated by Melange - -import * as NumberAdder from "@app/number-adder/./src/NumberAdder.bs.js"; - -var result = NumberAdder.addNumbers(1, 4); - -export { - result , -} -/* result Not a pure module */ diff --git a/jscomp/build_tests/monorepo/apps/app/src/main.ml b/jscomp/build_tests/monorepo/apps/app/src/main.ml deleted file mode 100644 index 2ce7dbb528..0000000000 --- a/jscomp/build_tests/monorepo/apps/app/src/main.ml +++ /dev/null @@ -1 +0,0 @@ -let result = NumberAdder.addNumbers 1 4 \ No newline at end of file diff --git a/jscomp/build_tests/monorepo/bsconfig.json b/jscomp/build_tests/monorepo/bsconfig.json deleted file mode 100644 index d6e20c2f3e..0000000000 --- a/jscomp/build_tests/monorepo/bsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "monorepo-test", - "version": "0.1.0", - "sources": [], - "bs-dependencies": [ - "@app/number-adder", - "@app/app" - ], - "package-specs": { - "module": "es6", - "in-source": true, - "suffix": ".bs.js" - }, - "workspace": { - "@app/app": "./apps/app", - "@app/number-adder": "./libs/number-adder" - } -} diff --git a/jscomp/build_tests/monorepo/input.js b/jscomp/build_tests/monorepo/input.js deleted file mode 100644 index 53b002ce35..0000000000 --- a/jscomp/build_tests/monorepo/input.js +++ /dev/null @@ -1,14 +0,0 @@ -var fs = require('fs') -var assert = require('assert') -var path = require('path') -var p = require('child_process') -p.execSync(`bsb -make-world`, { cwd: __dirname, shell: true, encoding: 'utf8' }) -var u = fs - .readFileSync(path.resolve(__dirname, './apps/app/src/main.bs.js')) - .toString() -assert.ok( - u.includes( - `import * as NumberAdder from "@app/number-adder/src/NumberAdder.bs.js";` - ), - 'Wrong include' -) diff --git a/jscomp/build_tests/monorepo/libs/number-adder/bsconfig.json b/jscomp/build_tests/monorepo/libs/number-adder/bsconfig.json deleted file mode 100644 index b486854807..0000000000 --- a/jscomp/build_tests/monorepo/libs/number-adder/bsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "@app/number-adder", - "version": "0.1.0", - "sources": { - "dir": "src", - "subdirs": true - } -} diff --git a/jscomp/build_tests/monorepo/libs/number-adder/src/NumberAdder.bs.js b/jscomp/build_tests/monorepo/libs/number-adder/src/NumberAdder.bs.js deleted file mode 100644 index 4d4a419015..0000000000 --- a/jscomp/build_tests/monorepo/libs/number-adder/src/NumberAdder.bs.js +++ /dev/null @@ -1,11 +0,0 @@ -// Generated by Melange - - -function addNumbers(a, b) { - return a + b | 0; -} - -export { - addNumbers , -} -/* No side effect */ diff --git a/jscomp/build_tests/monorepo/libs/number-adder/src/NumberAdder.ml b/jscomp/build_tests/monorepo/libs/number-adder/src/NumberAdder.ml deleted file mode 100644 index 8f45eeb29e..0000000000 --- a/jscomp/build_tests/monorepo/libs/number-adder/src/NumberAdder.ml +++ /dev/null @@ -1 +0,0 @@ -let addNumbers a b = a + b \ No newline at end of file diff --git a/jscomp/build_tests/monorepo/package.json b/jscomp/build_tests/monorepo/package.json deleted file mode 100644 index 810c28f370..0000000000 --- a/jscomp/build_tests/monorepo/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "monorepo", - "scripts": { - "bash": "zsh" - } -} diff --git a/jscomp/build_tests/namespace/README.md b/jscomp/build_tests/namespace/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/namespace/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/namespace/bsconfig.json b/jscomp/build_tests/namespace/bsconfig.json deleted file mode 100644 index a6185ac73c..0000000000 --- a/jscomp/build_tests/namespace/bsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "namespace", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - }, - "namespace": true, - "package-specs":{ - "module": "commonjs", - "in-source": true - }, - "bsc-flags" : ["-bs-no-version-header"], - "bs-dependencies": [ - "liba", - "libb" - ], - "warnings": { - "number" : "-40+6+7", - "error" : true - }, - "suffix": ".bs.js" -} \ No newline at end of file diff --git a/jscomp/build_tests/namespace/input.js b/jscomp/build_tests/namespace/input.js deleted file mode 100644 index f1cb507ccf..0000000000 --- a/jscomp/build_tests/namespace/input.js +++ /dev/null @@ -1,44 +0,0 @@ -var child_process = require("child_process"); -var fs = require("fs"); -var path = require("path"); -child_process.execSync(`bsb -clean-world && bsb -make-world`, { - cwd: __dirname, - stdio: [0, 1, 2], -}); - -var x = require("./src/demo.bs.js"); -var assert = require("assert"); -var demo_bs_js = fs.readFileSync( - path.join(__dirname, "src", "demo.bs.js"), - "utf8" -); -assert.ok(demo_bs_js.includes("liba/src/demo.bs.js")); -assert.equal(x.v, 3); - -var merlin = fs.readFileSync(path.join(__dirname, ".merlin"), "utf8"); -var warn_flag = "-40+6+7"; // Note it is additive now -assert.ok(merlin.includes("-open")); -assert.ok(merlin.includes(warn_flag)); -assert.ok(merlin.includes("emptydir") !== true); - -var testDepsNoWarning = "-w a" -function hasWarnError(file) { - return fs.readFileSync(file, "utf8").includes(testDepsNoWarning); -} - -var content = - fs.readFileSync(path.join(__dirname, "lib", "bs", "build.ninja")) + ""; -assert.ok(content.includes("emptydir") !== true); -assert.ok(!content.includes(testDepsNoWarning)); -assert.ok(content.includes(warn_flag)); -assert.ok( - hasWarnError( - path.join(__dirname, "node_modules", "liba", "lib", "bs", "build.ninja") - ) -); -assert.ok( - hasWarnError( - path.join(__dirname, "node_modules", "libb", "lib", "bs", "build.ninja") - ) -); -assert.ok(content.includes(".bs.js")); diff --git a/jscomp/build_tests/namespace/node_modules/liba/.gitignore b/jscomp/build_tests/namespace/node_modules/liba/.gitignore deleted file mode 100644 index 8f464d0527..0000000000 --- a/jscomp/build_tests/namespace/node_modules/liba/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/namespace/node_modules/liba/.vscode/tasks.json b/jscomp/build_tests/namespace/node_modules/liba/.vscode/tasks.json deleted file mode 100644 index 6e049a1ad3..0000000000 --- a/jscomp/build_tests/namespace/node_modules/liba/.vscode/tasks.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "version": "0.1.0", - "command": "npm", - "options": { - "cwd": "${workspaceRoot}" - }, - "isShellCommand": true, - "args": [ - "run", - "watch" - ], - "showOutput": "always", - "isBackground": true, - "problemMatcher": { - "fileLocation": "absolute", - "owner": "ocaml", - "watching": { - "activeOnStart": false, - "beginsPattern": ">>>> Start compiling", - "endsPattern": ">>>> Finish compiling" - }, - "pattern": [ - { - "regexp": "^File \"(.*)\", line (\\d+)(?:, characters (\\d+)-(\\d+))?:$", - "file": 1, - "line": 2, - "column": 3, - "endColumn": 4 - }, - { - "regexp": "^(?:(?:Parse\\s+)?(Warning|[Ee]rror)(?:\\s+\\d+)?:)?\\s+(.*)$", - "severity": 1, - "message": 2, - "loop": true - } - ] - } -} \ No newline at end of file diff --git a/jscomp/build_tests/namespace/node_modules/liba/README.md b/jscomp/build_tests/namespace/node_modules/liba/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/namespace/node_modules/liba/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/namespace/node_modules/liba/bsconfig.json b/jscomp/build_tests/namespace/node_modules/liba/bsconfig.json deleted file mode 100644 index f88a85e32c..0000000000 --- a/jscomp/build_tests/namespace/node_modules/liba/bsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "liba", - "version": "0.1.0", - "sources": "src", - "namespace": true, - "warnings": { - "error" : true - }, - "suffix": ".bs.js" -} \ No newline at end of file diff --git a/jscomp/build_tests/namespace/node_modules/liba/package.json b/jscomp/build_tests/namespace/node_modules/liba/package.json deleted file mode 100644 index 8169afc62c..0000000000 --- a/jscomp/build_tests/namespace/node_modules/liba/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "liba", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.8.3" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/namespace/node_modules/liba/src/demo.ml b/jscomp/build_tests/namespace/node_modules/liba/src/demo.ml deleted file mode 100644 index 6ac6adb715..0000000000 --- a/jscomp/build_tests/namespace/node_modules/liba/src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let v = 1 \ No newline at end of file diff --git a/jscomp/build_tests/namespace/node_modules/libb/.gitignore b/jscomp/build_tests/namespace/node_modules/libb/.gitignore deleted file mode 100644 index 8f464d0527..0000000000 --- a/jscomp/build_tests/namespace/node_modules/libb/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/namespace/node_modules/libb/.vscode/tasks.json b/jscomp/build_tests/namespace/node_modules/libb/.vscode/tasks.json deleted file mode 100644 index 6e049a1ad3..0000000000 --- a/jscomp/build_tests/namespace/node_modules/libb/.vscode/tasks.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "version": "0.1.0", - "command": "npm", - "options": { - "cwd": "${workspaceRoot}" - }, - "isShellCommand": true, - "args": [ - "run", - "watch" - ], - "showOutput": "always", - "isBackground": true, - "problemMatcher": { - "fileLocation": "absolute", - "owner": "ocaml", - "watching": { - "activeOnStart": false, - "beginsPattern": ">>>> Start compiling", - "endsPattern": ">>>> Finish compiling" - }, - "pattern": [ - { - "regexp": "^File \"(.*)\", line (\\d+)(?:, characters (\\d+)-(\\d+))?:$", - "file": 1, - "line": 2, - "column": 3, - "endColumn": 4 - }, - { - "regexp": "^(?:(?:Parse\\s+)?(Warning|[Ee]rror)(?:\\s+\\d+)?:)?\\s+(.*)$", - "severity": 1, - "message": 2, - "loop": true - } - ] - } -} \ No newline at end of file diff --git a/jscomp/build_tests/namespace/node_modules/libb/README.md b/jscomp/build_tests/namespace/node_modules/libb/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/namespace/node_modules/libb/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/namespace/node_modules/libb/bsconfig.json b/jscomp/build_tests/namespace/node_modules/libb/bsconfig.json deleted file mode 100644 index e99b832d67..0000000000 --- a/jscomp/build_tests/namespace/node_modules/libb/bsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "libb", - "version": "0.1.0", - "sources": "src", - "namespace": true, - "warnings": { - "error" : true - } -} \ No newline at end of file diff --git a/jscomp/build_tests/namespace/node_modules/libb/package.json b/jscomp/build_tests/namespace/node_modules/libb/package.json deleted file mode 100644 index 5b566771ed..0000000000 --- a/jscomp/build_tests/namespace/node_modules/libb/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "libb", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.8.3" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/namespace/node_modules/libb/src/demo.ml b/jscomp/build_tests/namespace/node_modules/libb/src/demo.ml deleted file mode 100644 index c9ca0d20c2..0000000000 --- a/jscomp/build_tests/namespace/node_modules/libb/src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let v = 2 \ No newline at end of file diff --git a/jscomp/build_tests/namespace/package.json b/jscomp/build_tests/namespace/package.json deleted file mode 100644 index 9017b1bc9a..0000000000 --- a/jscomp/build_tests/namespace/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "namespace", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.8.3" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/namespace/src/demo.bs.js b/jscomp/build_tests/namespace/src/demo.bs.js deleted file mode 100644 index 2aaed7aec4..0000000000 --- a/jscomp/build_tests/namespace/src/demo.bs.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -var Demo$Liba = require("liba/src/demo.bs.js"); -var Demo$Libb = require("libb/src/demo.bs.js"); - -var v = Demo$Liba.v + Demo$Libb.v | 0; - -exports.v = v; -/* No side effect */ diff --git a/jscomp/build_tests/namespace/src/demo.ml b/jscomp/build_tests/namespace/src/demo.ml deleted file mode 100644 index 7eb7f9b635..0000000000 --- a/jscomp/build_tests/namespace/src/demo.ml +++ /dev/null @@ -1,4 +0,0 @@ - - -let v = - (Liba.Demo.v + Libb.Demo.v) \ No newline at end of file diff --git a/jscomp/build_tests/namespace/src/main.bs.js b/jscomp/build_tests/namespace/src/main.bs.js deleted file mode 100644 index 6db343da39..0000000000 --- a/jscomp/build_tests/namespace/src/main.bs.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -var Demo$Namespace = require("./demo.bs.js"); - -var a = Demo$Namespace.v; - -exports.a = a; -/* No side effect */ diff --git a/jscomp/build_tests/namespace/src/main.ml b/jscomp/build_tests/namespace/src/main.ml deleted file mode 100644 index ca9dcdeb32..0000000000 --- a/jscomp/build_tests/namespace/src/main.ml +++ /dev/null @@ -1,2 +0,0 @@ - -let a = Demo.v \ No newline at end of file diff --git a/jscomp/build_tests/nested/.gitignore b/jscomp/build_tests/nested/.gitignore deleted file mode 100644 index 30be413425..0000000000 --- a/jscomp/build_tests/nested/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -src/**/*.js \ No newline at end of file diff --git a/jscomp/build_tests/nested/README.md b/jscomp/build_tests/nested/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/nested/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/nested/bsconfig.json b/jscomp/build_tests/nested/bsconfig.json deleted file mode 100644 index c5e09885ed..0000000000 --- a/jscomp/build_tests/nested/bsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "nested", - "version": "0.1.0", - "sources": { - "dir": "src", - "subdirs" : true - - }, - "package-specs" : { - "module": "commonjs", - "in-source": true - }, - "warnings": {"error" : true} -} \ No newline at end of file diff --git a/jscomp/build_tests/nested/input.js b/jscomp/build_tests/nested/input.js deleted file mode 100644 index d77535c53e..0000000000 --- a/jscomp/build_tests/nested/input.js +++ /dev/null @@ -1,21 +0,0 @@ - - -var p = require('child_process') -var assert = require('assert') -var fs = require('fs') -var path = require('path') -p.execSync(`bsb`, {cwd : __dirname, stdio:[0,1,2]}) - -var content = fs.readFileSync(path.join(__dirname,'src','demo.js'),'utf8') - -assert.ok(content.match(/A00_a1_main/g).length === 3 ) -assert.ok(content.match(/B00_b1_main/g).length === 3 ) -assert.ok(content.match(/A0_main/g).length === 2) -assert.ok(content.match(/a0_main/g).length === 1) -assert.ok(content.match(/B0_main/g).length === 2) -assert.ok(content.match(/b0_main/g).length === 1) - - -assert.ok(require('./src/demo.js').v === 4,'nested') - - diff --git a/jscomp/build_tests/nested/package.json b/jscomp/build_tests/nested/package.json deleted file mode 100644 index a5b567a9aa..0000000000 --- a/jscomp/build_tests/nested/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "nested", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.9.2" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/nested/src/a0/a0_main.ml b/jscomp/build_tests/nested/src/a0/a0_main.ml deleted file mode 100644 index e37d9062f6..0000000000 --- a/jscomp/build_tests/nested/src/a0/a0_main.ml +++ /dev/null @@ -1 +0,0 @@ -let v = 1 \ No newline at end of file diff --git a/jscomp/build_tests/nested/src/a0/a1/A00_a1_main.ml b/jscomp/build_tests/nested/src/a0/a1/A00_a1_main.ml deleted file mode 100644 index e37d9062f6..0000000000 --- a/jscomp/build_tests/nested/src/a0/a1/A00_a1_main.ml +++ /dev/null @@ -1 +0,0 @@ -let v = 1 \ No newline at end of file diff --git a/jscomp/build_tests/nested/src/b0/b0_main.ml b/jscomp/build_tests/nested/src/b0/b0_main.ml deleted file mode 100644 index e37d9062f6..0000000000 --- a/jscomp/build_tests/nested/src/b0/b0_main.ml +++ /dev/null @@ -1 +0,0 @@ -let v = 1 \ No newline at end of file diff --git a/jscomp/build_tests/nested/src/b0/b1/B00_b1_main.ml b/jscomp/build_tests/nested/src/b0/b1/B00_b1_main.ml deleted file mode 100644 index e37d9062f6..0000000000 --- a/jscomp/build_tests/nested/src/b0/b1/B00_b1_main.ml +++ /dev/null @@ -1 +0,0 @@ -let v = 1 \ No newline at end of file diff --git a/jscomp/build_tests/nested/src/demo.ml b/jscomp/build_tests/nested/src/demo.ml deleted file mode 100644 index d55013b807..0000000000 --- a/jscomp/build_tests/nested/src/demo.ml +++ /dev/null @@ -1,4 +0,0 @@ - - -let v = - A00_a1_main.v + A0_main.v + B0_main.v + B00_b1_main.v \ No newline at end of file diff --git a/jscomp/build_tests/nested/src/demo.mli b/jscomp/build_tests/nested/src/demo.mli deleted file mode 100644 index cddb8c95b4..0000000000 --- a/jscomp/build_tests/nested/src/demo.mli +++ /dev/null @@ -1 +0,0 @@ -val v : int \ No newline at end of file diff --git a/jscomp/build_tests/nnest/.gitignore b/jscomp/build_tests/nnest/.gitignore deleted file mode 100644 index 30be413425..0000000000 --- a/jscomp/build_tests/nnest/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -src/**/*.js \ No newline at end of file diff --git a/jscomp/build_tests/nnest/README.md b/jscomp/build_tests/nnest/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/nnest/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/nnest/bsconfig.json b/jscomp/build_tests/nnest/bsconfig.json deleted file mode 100644 index aba38421e2..0000000000 --- a/jscomp/build_tests/nnest/bsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "nested", - "version": "0.1.0", - "sources": { - "dir": "src", - "subdirs" : true - - }, - "package-specs" : { - "module": "commonjs", - "in-source": true - }, - "namespace": true, - "warnings": {"error": true} -} \ No newline at end of file diff --git a/jscomp/build_tests/nnest/input.js b/jscomp/build_tests/nnest/input.js deleted file mode 100644 index 895802aa64..0000000000 --- a/jscomp/build_tests/nnest/input.js +++ /dev/null @@ -1,27 +0,0 @@ -// @ts-check - -var p = require("child_process"); -var assert = require("assert"); -var fs = require("fs"); -var path = require("path"); -p.execSync(`bsb`, { cwd: __dirname, stdio: [0, 1, 2] }); - -var content = fs.readFileSync(path.join(__dirname, "src", "demo.js"), "utf8"); - -assert.ok(content.match(/A0_a1_main/g).length === 3); -assert.ok(content.match(/B0_b1_main/g).length === 3); -assert.ok(content.match(/A0_main/g).length === 2); -assert.ok(content.match(/a0_main/g).length === 1); -assert.ok(content.match(/B0_main/g).length === 2); -assert.ok(content.match(/b0_main/g).length === 1); - -assert.ok(require("./src/demo.js").v === 4, "nested"); - -// var testWarnError = /warnings\s*=\s*[^\r\n]*-warn-error/; - -// function hasWarnError(file) { -// var content = fs.readFileSync(file, "utf8"); -// return testWarnError.test(content); -// } - -// assert.ok(hasWarnError(path.join(__dirname,'lib','bs','build.ninja'))) diff --git a/jscomp/build_tests/nnest/package.json b/jscomp/build_tests/nnest/package.json deleted file mode 100644 index a5b567a9aa..0000000000 --- a/jscomp/build_tests/nnest/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "nested", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.9.2" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/nnest/src/a0/a0_main.ml b/jscomp/build_tests/nnest/src/a0/a0_main.ml deleted file mode 100644 index e37d9062f6..0000000000 --- a/jscomp/build_tests/nnest/src/a0/a0_main.ml +++ /dev/null @@ -1 +0,0 @@ -let v = 1 \ No newline at end of file diff --git a/jscomp/build_tests/nnest/src/a0/a1/A0_a1_main.ml b/jscomp/build_tests/nnest/src/a0/a1/A0_a1_main.ml deleted file mode 100644 index e37d9062f6..0000000000 --- a/jscomp/build_tests/nnest/src/a0/a1/A0_a1_main.ml +++ /dev/null @@ -1 +0,0 @@ -let v = 1 \ No newline at end of file diff --git a/jscomp/build_tests/nnest/src/b0/b0_main.ml b/jscomp/build_tests/nnest/src/b0/b0_main.ml deleted file mode 100644 index e37d9062f6..0000000000 --- a/jscomp/build_tests/nnest/src/b0/b0_main.ml +++ /dev/null @@ -1 +0,0 @@ -let v = 1 \ No newline at end of file diff --git a/jscomp/build_tests/nnest/src/b0/b1/B0_b1_main.ml b/jscomp/build_tests/nnest/src/b0/b1/B0_b1_main.ml deleted file mode 100644 index e37d9062f6..0000000000 --- a/jscomp/build_tests/nnest/src/b0/b1/B0_b1_main.ml +++ /dev/null @@ -1 +0,0 @@ -let v = 1 \ No newline at end of file diff --git a/jscomp/build_tests/nnest/src/demo.ml b/jscomp/build_tests/nnest/src/demo.ml deleted file mode 100644 index e3e8be071d..0000000000 --- a/jscomp/build_tests/nnest/src/demo.ml +++ /dev/null @@ -1,4 +0,0 @@ - - -let v = - A0_a1_main.v + A0_main.v + B0_main.v + B0_b1_main.v \ No newline at end of file diff --git a/jscomp/build_tests/ns/.gitignore b/jscomp/build_tests/ns/.gitignore deleted file mode 100644 index 8f464d0527..0000000000 --- a/jscomp/build_tests/ns/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/ns/README.md b/jscomp/build_tests/ns/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/ns/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/ns/bsconfig.json b/jscomp/build_tests/ns/bsconfig.json deleted file mode 100644 index 068db71d34..0000000000 --- a/jscomp/build_tests/ns/bsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "ns", - "version": "0.1.0", - "sources": [ - "src" - ], - "package-specs" : { - "module": "commonjs", - "in-source": true - }, - "namespace": true - -} \ No newline at end of file diff --git a/jscomp/build_tests/ns/input.js b/jscomp/build_tests/ns/input.js deleted file mode 100755 index ffd50009ba..0000000000 --- a/jscomp/build_tests/ns/input.js +++ /dev/null @@ -1,5 +0,0 @@ -var child_process = require('child_process') - -child_process.execSync(`bsb`, - {cwd:__dirname, stdio:[0,1,2]} -) \ No newline at end of file diff --git a/jscomp/build_tests/ns/package.json b/jscomp/build_tests/ns/package.json deleted file mode 100644 index fb780a9c8e..0000000000 --- a/jscomp/build_tests/ns/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "ns", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.8.3" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/ns/src/demo.js b/jscomp/build_tests/ns/src/demo.js deleted file mode 100644 index 10408eb85f..0000000000 --- a/jscomp/build_tests/ns/src/demo.js +++ /dev/null @@ -1,8 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -'use strict'; - -var Hello$Ns = require("./hello.js"); - -console.log(Hello$Ns.a + Hello$Ns.b | 0); - -/* Not a pure module */ diff --git a/jscomp/build_tests/ns/src/demo.ml b/jscomp/build_tests/ns/src/demo.ml deleted file mode 100644 index f869b122d4..0000000000 --- a/jscomp/build_tests/ns/src/demo.ml +++ /dev/null @@ -1,5 +0,0 @@ - - - -let () = - Js.log (Hello.a + Hello.b) \ No newline at end of file diff --git a/jscomp/build_tests/ns/src/hello.js b/jscomp/build_tests/ns/src/hello.js deleted file mode 100644 index 8c37ebaa85..0000000000 --- a/jscomp/build_tests/ns/src/hello.js +++ /dev/null @@ -1,11 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -'use strict'; - - -var a = 4; - -var b = 2; - -exports.a = a; -exports.b = b; -/* No side effect */ diff --git a/jscomp/build_tests/ns/src/hello.ml b/jscomp/build_tests/ns/src/hello.ml deleted file mode 100644 index 9cdcd1dbfd..0000000000 --- a/jscomp/build_tests/ns/src/hello.ml +++ /dev/null @@ -1,3 +0,0 @@ -let a = 3 + 1 - -let b = 2 \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/.gitignore b/jscomp/build_tests/ocamlgraph/.gitignore deleted file mode 100755 index 53857a4005..0000000000 --- a/jscomp/build_tests/ocamlgraph/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -*.cm* -*.annot -*.o -/.depend -/META -/Makefile -/autom4te.cache/ -/config.log -/config.status -/configure -/graph.a -/src/dot_lexer.ml -/src/dot_parser.ml -/src/dot_parser.mli -/src/dot_parser.output -/src/gml.ml -/src/version.ml -/www/index.en.html -/www/index.fr.html -/www/version.prehtml -/bin/ -/dgraph/dgraph.byte -/dgraph/dgraph.opt -/editor/editor.byte -/editor/editor.opt -/view_graph/viewgraph.byte -/view_graph/viewgraph.opt -/export -*.bs.js -.merlin -.bsb.lock diff --git a/jscomp/build_tests/ocamlgraph/.ocp-indent b/jscomp/build_tests/ocamlgraph/.ocp-indent deleted file mode 100755 index 31dcc35bf5..0000000000 --- a/jscomp/build_tests/ocamlgraph/.ocp-indent +++ /dev/null @@ -1 +0,0 @@ -normal diff --git a/jscomp/build_tests/ocamlgraph/CHANGES b/jscomp/build_tests/ocamlgraph/CHANGES deleted file mode 100755 index 6480addba2..0000000000 --- a/jscomp/build_tests/ocamlgraph/CHANGES +++ /dev/null @@ -1,366 +0,0 @@ - -* marks some incompatible change - -version 1.8.7, April 12, 2016 ------------------------------ - o fixed examples/demo.ml so that it also compiles with an installed OCamlGraph - o [Components] fixed stack overflow with [scc] (patch by Albin Coquereau) - o [Dominator] fixed stack overflow (patch by Albin Coquereau) - o new functor [Path.Johnson] to compute all pairs of shortest paths - using Johnson's algorithm (contributed by Mário Pereira) - o fixed configuration on Windows (patch by Martin R. Neuhäußer) - o new functor [Components.Undirected] to compute connected components - o Graphviz: fixed printing of attribute BgcolorWithTransparency - * Prim, Nonnegative: function weight now has the more general type "edge -> t" - (to be consistent with Path) - o new module type Sig.WEIGHT (used in Path, Prim, and Nonnegative) - o Fixpoint: do not catch Not_found raised by a user-provided function. - o Adding folds to BFS. - -version 1.8.6, January 23, 2015 -------------------------------- - * Dominator: new functor [Make_graph] with may use graph building operations, - while the old functor [Make] now only requires a read-only graph. - Function [compute_all] and [compute_dom_graph] are now only defined in the - new [Make_graph] functor. - o Graphviz: support for additional polygonal-shapes - o New module Clique (contributed by Giselle Reis) - o Avoid ocamldoc error with OCaml 4.02 - * Path: function weight now has the more general type "edge -> t" - (contributed by Steffen Smolka) - update your code by turning "weight l" into "weight (G.E.label e)" - o installation: "make install-findlib" now uses DESTDIR when defined - o Traverse: documentation is clarified: providing iterators over the roots of - the graph is enough. - o Imperative concreate (di)graph: fix bug of functions add_edge* of imperative - concrete (di)graphs which appears when the added edge [e] was already in the - graph [g] and one of the vertices of [e] is equal to another vertex of [g] - (when using the user-defined equality [G.V.equal]), but not physically equal - to it. This bug only occurs with OCaml version >= 4.0. - o functions in modules Components, Dominator, Flow, Topological and Traverse - now create smaller auxiliary hash tables - o Graphviz: add the attribute `HtmlLabel to specify html strings. - -version 1.8.5, March 4, 2014 ------------------------------ - o Graphviz: reverted to the old API where edges and vertices are - given a single style attribute; but such attributes are collected - and output in the DOT file into a list (thus allowing multiple style - attributes) - o fixed issue in ./configure with ocamlfind on Win32. - o fixed compilation when laglgnomecanvas is missing (bug introduced in 1.8.4). - o fixed more issues with 'make -j'. - -version 1.8.4, February 4, 2014 -------------------------------- - o fixed [Graphml] printer (contributed by Johannes Schauer) - o Components: the components of [scc_list] are provided in the same order than - the ones of [scc_array]. - o fix compilation with 'make -j' - o Graphviz: handle attribute penwidth on edges and vertices - o also install graph.o and graph.cmxs - o fixed installation with ocamlfind (thanks to Virgile Prevosto) - o new functions [gnp] and [gnp_labeled] in module [Rand] to generate random - graphs using the G(n,p) model (contributed by Thomas Aubry) - o Prim's algorithm (in module [Prim]; not exported in [Pack]) - (contributed by Thomas Aubry) - o Graphviz: support for nested subgraphs. (Backward-incompatible change: - add 'sg_parent = None' to obtain subgraphs whose parents are the main graph) - o Graphviz: edges and vertices can now receive multiple styles. - (Backward-incompatible change: constructors `Style now require a list as - argument) - o Graphviz: new vertex style 'rounded' - o Merge: fixed bug with vertices with no incoming nor outcoming edge. - o fixed compilation issue with OCaml 3.12.1 - -version 1.8.3, April 17, 2013 ------------------------------ - o new module Merge implementing several different merges of vertices and - edges into a graph (contributed by Emmanuel Haucourt) - o fixed DOT parser (contributed by Alex Reece) - o Topological: fixed bug in presence of disjoint cycles; new implementation - o new module [Graphml] to export graphs into the graphml format - (contributed by Pietro Abate) - o Builder.S now contains functions remove_*. - o modified Fixpoint module so that it also works with unlabeled - graphs, break backward compatibility yet (contributed by Markus W. Weissmann) - o support of lablgtk2 installed with findlib (contributed by B. Monate) - o new module [Dominator] to compute dominators - (contributed by David Brumley and Ivan Jager) - -version 1.8.2, May 12, 2012 ---------------------------- - o new module [Path.BellmanFord] implementing Bellman-Ford algorithm - (contributed by Yuto Takei) - o new module Contraction implementing edge contraction - (contributed by Markus W. Weissmann) - o Gmap: new function [filter_map] (contributed by Markus W. Weissmann) - o Topological: fix bug when a cycle depends on another cycle. That breaks - compatibility: the input graph must implement Sig.COMPARABLE instead of - Sig.HASHABLE - o new module Topological.Make_stable to iterate over a graph in a **stable** - topological order. Stable means that the provided ordering only depends on - the graph topology and on the user's vertices ordering. - o new module Leaderlist to compute the leader list algorithm (see the Dragon) - (contributed by Markus W. Weissmann ) - -version 1.8.1, October 17, 2011 -------------------------------- - o module Gmap now has a signature for edges (E_SRC) compatible with - Sig, so that it is easier to apply functor Gmap.Edge - (contributed by Markus W. Weissmann ) - o new module Fixpoint to compute fixpoints using the work-list - algorithm, e.g. for data flow analysis - (contributed by Markus W. Weissmann ) - -version 1.8, October 4, 2011 ----------------------------- - o removed ocamlyacc shift/reduce conflict in dot_parser.mly - (patch contributed by Till Varoquaux) - o Dgraph: Correct height and width-related problems with text - o DGraph: many bug fixes. Patch by Benjamin Monate - o Sig.G: new function [find_all_edges] for each graph implementation - o Oper: fixed bug with function [intersect]: now use G.E.compare instead of (=) - o fixed "make install-findlib" - -version 1.7, February 23, 2011 ------------------------------- - o Makefile: fixed bug when installing ocamlgraph with ocamlfind - o DGraph: fixed bug with colors on some windows manager - o Configure: fixed issue with automatic detection of extension under - Windows/Mingw - -version 1.6, December 13, 2010 ------------------------------- - o DGraph: new viewer mode (called `tree') which focus on a subset part of the - graph centered on a given node - o Graphviz: fixed bug with attribute `Constraint (was `Constraints) (patch by - Boris Yakobowski) - o DGraph: fixed font size issue when zooming - o DGraph: now interpret text anchors and espaced sequences correctly - o DGraph: offer possibility to disable the default callbacks on nodes - o 'make -j' works again - o new implementation Persistent.Digraph.ConcreteBidirectionalLabeled - o new implementation Persistent.Digraph.ConcreteBidirectional - o Makefile: bug fixed when ocamlc (resp. ocamlopt) and ocamlc.opt - (resp. ocamlopt.opt) are unconsistent - -version 1.5, April 29, 2010 ---------------------------- - o Makefile: bug fixed when installing ocamlgraph with ocamlfind - (patch by Virgile Prevosto) - o DGraph: new method set_zoom_padding in DgraphView.view - o Traverse.Dfs.has_cycle: can now be used on undirected graphs as well, - and is now tail recursive - o DGraph: handle dotted ellipse - -version 1.4, March 24, 2010 ---------------------------- - o new function [clear] for imperative graphs - o new implementation Imperative.Digraph.ConcreteBidirectionalLabeled - (contribution of Jaap Boender) - o Dgraph displays graphs faster - o DGraph: several bugs fixed - o DGraph: several API changes - (may break compatibility with existing development) - -version 1.3, October 2, 2009 ----------------------------- - o Oper.mirror: undirected graphs are not copied anymore - o Oper.mirror: fixed bug (isolated vertices were lost) - o Graphviz: new signature GraphWithDotAttrs - o Improvements of Dgraph - o Configure: better test for detecting lablgtk - o OcamlGraph is now installed by default in `ocamlc -where`/ocamlgraph - o Viewgraph is now packed in a single module Viewgraph (break compatibility - with previous version) - o Dgraph is now packed in a single module Dgraph (break compatibility with - previous version) - o Makefile: fixed bug when the installation directory of binaries does not - exist - o Makefile: fixed bug of ocamldep under Windows - -version 1.2, August 31, 2009 ----------------------------- - o experimental: new GTK-based graph viewer called Dgraph - (viewGraph is now deprecated) - o added Delaunay.iter_triangles (not of use in Ocamlgraph, actually) - -version 1.1, June 23, 2009 --------------------------- - o added constraint "type E.label = unit" to unlabeled graph data structure - o viewGraph: new module viewGraph_utils; fixed compilation (gtkInit - was missing; patch by Mehdi Dogguy) - o configure: fixed bug under Cygwin (patch by Julien Bernet) - o configure: look for lablgnomecanvas.cmxa when compiling in native code - o Makefile: fixed make install-findlib when lablgtk and/or - lablgnomecanvas not installed (patch by Peter Hawkins) - -version 1.0, October 14, 2008 ------------------------------ - o license: LGPL updated to version 2.1 - o ocamlgraph now requires ocaml 3.10 or higher - o experimental: GTK-based graph viewer based on dot - (contribution of Anne Pacalet) - o Makefile: - - fixed bug when lablgnomecanvas is not installed - - fixed bug when ocamlfind is installed - - patch to the build system for a DESTDIR (patch by Igor Galic) - - "make -j" compliant - o new function Blocks.after_unserialization in order to be able to safely - serialize abstract vertices (see the FAQ) - o Dot: - - fixed bug in the parsing of attributes - - fixed bug in the parsing of subgraphs (patch by Anne Pacalet) - o Oper: fixed bug in intersect - o Path: improved efficiency of Dijkstra - o Topological: - - fixed bug in Make.{iter,fold} - - folding is now tail-recursive (patch by Michael Furr) - -version 0.99c, April 3rd, 2008 ------------------------------- - o replicated a bug fix of Bitv (could not affect Matrix, though) - o fixed DFS traversal in Traverse.Dfs.{prefix,prefix_component,iterator} - -version 0.99b, December 18th, 2007 ----------------------------------- - o fixed link bug with ocaml 3.09 - (see http://caml.inria.fr/mantis/view.php?id=4124) - -version 0.99a, November 21st, 2007 ---------------------------------- - o fixed bug in Makefile when lablgtk2 is not installed - o Sig.I.create and Sig_pack.create are now of type ?size:int -> unit -> t - (instead of unit -> t) to indicate an initial guess on the graph size - -version 0.99, June 27th, 2007 ------------------------------ - o experimental: GTK-based graph editor based on hyperbolic geometry; - to build it and test it, cd to editor/ and type make - o [Components.Make] functor: function [scc] as a new profile and a - more precise specification. New function [scc_array]. - o fixed configure to set ocaml's standard library using "ocamlc -where" - o new module Dot to parse files in Graphviz's DOT format - o slight change in the license (no more clause 6 of the LGPL; see LICENSE) - o new module Strat implementing simple game strategies - o Graphviz: little refactoring and improved documentation - -version 0.98, Sep 27th, 2006 ----------------------------- - o rename Sig.IA to Sig.IM - o add subgraph support in Graphviz - (breaks ascendent compatibility if you use Graphviz: by default add - let get_subgraph _ = None - in the argument of Graphviz.Dot and Graphviz.Neato) - -version 0.97, July 20th, 2006 ------------------------------ - o fixed compilation under Windows/Cygwin (contributed by Denis Berthod) - o fixed bug with escaped string in Graphviz - -version 0.96, May 2nd, 2006 ---------------------------- - o new demo program: sudoku.ml (solving the Sudoku using graph coloring) - o new module Coloring for (rather brute force) graph coloring - o new implementation Imperative.Digraph.ConcreteBidirectional - that maintains the set of ingoing edges for each node, thus improving the - efficiency of functions such as iter_pred, pred, in_degree, etc. - (contributed by Ted Kremenek) - -version 0.95, November 2nd, 2005 --------------------------------- - o compatibility with ocaml 3.09 - o new module Path.Check to check for paths - -version 0.94, July 6th, 2005 ----------------------------- - o new module Gml to parse and print graphs in GML file format - (see http://www.infosun.fmi.uni-passau.de/Graphlet/GML) - corresponding functions parse_gml_file and print_gml_file in Pack - o added display_with_gv in Pack - o improved implementation of Unionfind (patch by Marc Lasson) - -version 0.93, March 31st, 2005 ------------------------------- - o fixed bug in Rand (integer overflow causing Invalid_argument "random"); - improved code in Rand - o bug fixed in the META file - o add find_edge in Sig.G (and so in all graph implementations) - -version 0.92, January 18th, 2005 --------------------------------- - o fixed escaped labels in Graphviz output (patch by Boris Yakobowski) - o new Graphviz option OrderingOut (patch by Boris Yakobowski) - o fixed sharing bugs in Oper (patch by Boris Yakobowski) - o fixed bug in nb_edges for undirected graphs - o improvement of iterators of undirected concrete graphs - -version 0.91, December 16th, 2004 ---------------------------------- - o more precise specifications of remove_edge and shortest_path. - o bug fixed in mem_edge_e of labelled graphs - o generation of random graphs improved - o add Rand.Make and Rand.Planar.Make (generic functors) - o add signatures Persistent.S and Imperative.S - -version 0.90, November 30th, 2004 ---------------------------------- - o graph.cma graph.cmxa - o version.ml and META files are now writable - o add interfaces Sig.VERTEX and Sig.EDGE - o "sig.ml" and "sig_pack.ml" removed; ocamlgraph now requires ocaml 3.08.0 - o improvement of Minsep - o add Components.scc_list - o Oper.Neighbourhood replaces Neighborhood - o Gmap replaces Copy - o add types Sig_pack.vertex and Sig_pack.edge - o fixed bug in Ford-Fulkerson: G.V.equal instead of = in two asserts - -version 0.81, July 13th, 2004 ------------------------------ - o compatibility with ocaml 3.08 - o Oper.Choose.choose_edge: choose an edge in a graph - o add types Sig.G.edge and Sig.G.vertex resp. equal to Sig.G.V.t and Sig.G.E.t - o fixed typos in invalid_arg arguments (in Bitv) - -version 0.80, June 28th, 2004 ------------------------------ - o major contribution by Matthieu Sozeau and Pierre-Loïc Garoche. - New modules are: - - Md: Minimum Degree algorithm - - Cliquetree: the clique tree of a graph - - Mcs_m: Maximal Cardinality Search (MCS-M) algorithm - - Minsep: Minimal separators of a graph - - Neighborhood: compute the neighborhood of a vertex/some vertices - - Oper.Difference: subgraphs induced by the elimination of some vertices - - Oper.Choose: choose a vertex in a graph - - Copy: graphs copying - - Util.DataV: create a vertex type with data attached to it - o out_degree: raises Invalid_argument if v not in g (instead of Not_found) - o Pack.Graph: golberg/ford_fulkerson fail ("not a directed graph") - -version 0.70, Feb 27th, 2004 ----------------------------- - o Makefile.in: dependences ("make -j" works) - o union and intersection (see Oper.S.union and Oper.S.intersection) - o Golberg/Ford_fulkerson algorithms in a single module Flow - o step-by-step iterators in Traverse.{Dfs,Bfs} - o Ford_fulkerson: maxflow now returns a flow function over edges - -version 0.60, Feb 18th, 2004 ----------------------------- - o fixed bug in Ford-Fulkerson - o random planar graphs (see Rand.Planar) - o Delaunay triangulation (see Delaunay) - o implementations with adjacency matrices (see Imperative.Matrix) - o operations on predecessors for undirected graphs optimized - o Traverse.Dfs.{prefix,prefix_component} optimized (now tail recursive) - -version 0.50, Feb 4th, 2004 ---------------------------- - o first release - -Local Variables: -mode: text -End: diff --git a/jscomp/build_tests/ocamlgraph/COPYING b/jscomp/build_tests/ocamlgraph/COPYING deleted file mode 100755 index a7aed869a8..0000000000 --- a/jscomp/build_tests/ocamlgraph/COPYING +++ /dev/null @@ -1,14 +0,0 @@ -Ocamlgraph: a generic graph library for ocaml -Copyright (C) 2004-2010 -Sylvain Conchon, Jean-Christophe Filliâtre and Julien Signoles - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License version 2.1, as published by the Free Software Foundation. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -See the GNU Library General Public License version 2.1 for more details -(enclosed in the file LICENSE). diff --git a/jscomp/build_tests/ocamlgraph/CREDITS b/jscomp/build_tests/ocamlgraph/CREDITS deleted file mode 100755 index 24ee8c4f46..0000000000 --- a/jscomp/build_tests/ocamlgraph/CREDITS +++ /dev/null @@ -1,9 +0,0 @@ - -Contributors, in alphabetic order - - Sylvain Conchon - Jean-Christophe Filliâtre - François Pottier - Julien Signoles - Vincent Simonet - Matthieu Sozeau diff --git a/jscomp/build_tests/ocamlgraph/FAQ b/jscomp/build_tests/ocamlgraph/FAQ deleted file mode 100755 index 9765b28ac5..0000000000 --- a/jscomp/build_tests/ocamlgraph/FAQ +++ /dev/null @@ -1,86 +0,0 @@ -========================== -FREQUENTLY ASKED QUESTIONS -========================== - -========== -Q: I need to store some information into vertices and/or edges - I need several kind of labels on the edges ------ -A: Use one of the functor implementation provided in Persistent or Imperative. - If for instance you want mutable directed graphs with colored vertices, - you may do - - type color = Red | Green | Blue | Yellow - module G = Imperative.Digraph.Abstract(struct type t = color end) - - (to be able to change the color you would use `type t = color ref' instead) -========== -========== -Q: How to choose between concrete and abstract vertices for my graph - implementation? ------ -A: If you fall into one of the following cases, use abstract vertices: - - you cannot provide efficient comparison/hash functions for vertices; or - - you wish to get two different vertices with the same label. - In other cases, it is certainly easier to use concrete vertices. -========== -========== -Q: Is it possible to serialize graphs? ------ -A: Graphs are serializable data structures: just call [Pervasives.output_value] - on your graph (for example). - - But abstract graphs use integer tags to identify vertices; - this tag is made from the global reference [Blocks.cpt_vertex]. - There are two related issues. - - 1) If there are abstract vertices in RAM while unmarshalling some others, - you have to be sure that RAM vertices do not share tags with unmarshalled - ones (except if you really want that). - - 2) If you need to create new vertices after unserialising an abstract graph, - you have to: - - serialize [!Blocks.cpt_vertex]; - - call function [Blocks.after_unserialization] after your unserialisation - process. - - There is no issue with concrete graph: it may be easier to use them if - unmarshalling is required. -========== -========== -Q: I need Foobar-Tarjan algorithm and it is not provided ------ -A: Please contribute by sending us the code :-) See next question. -========== -========== -Q: How can I contribute to this library? ------ -A: You can contribute either with a graph data structure or with an algorithm - over graphs. For the former, please follow the signatures given in module - Sig. For the latter, write your algorithm as a functor, following examples - in modules Path, Flow, Components, etc. -========== -========== -Q: Your implementation of algorithm AAA could be greatly improved provided - you add this and this into the graph data structure ------ -A: Of course yes. But the idea behind ocamlgraph is to be as generic as - possible (any algorithm should be useable on any implementation). - - When the graph data structure provides additional capabilities - (such as marking, etc.) it is possible to provide a more efficient - implementation into some specialized functor. See module Traverse for - instance (where DFS and cycle detection are optimized for imperative - graphs equipped with marks) -========== -========== -Q: I have a graph implementation with polymorphic types for vertices or edges - and thus I can't apply the algorithms functors ------ -A: Here we bump into Ocaml's type system limitations: the number of type - parameters must be know when the functor is written and the simplest - choice for us was to assume no type parameter at all. (This is exactly the - same for functors Set.Make or Map.Make from Ocaml standard library.) - As a (bad) workaround, you can copy the functor body and substitute your - own functions for the functor arguments. -========== diff --git a/jscomp/build_tests/ocamlgraph/INSTALL.adoc b/jscomp/build_tests/ocamlgraph/INSTALL.adoc deleted file mode 100755 index 2dd9718142..0000000000 --- a/jscomp/build_tests/ocamlgraph/INSTALL.adoc +++ /dev/null @@ -1,26 +0,0 @@ - -= How to create the library ? - -You need Objective Caml >= 3.10.2 to compile this library. - -Configure with - - ./configure - -Compile with - - make - -Install (as root if needed) with - - make install - -findlib users may also do - - make install-findlib - -== How to create the documentation ? - -create a local documentation with - - make doc diff --git a/jscomp/build_tests/ocamlgraph/LICENSE b/jscomp/build_tests/ocamlgraph/LICENSE deleted file mode 100755 index fd5990a07f..0000000000 --- a/jscomp/build_tests/ocamlgraph/LICENSE +++ /dev/null @@ -1,528 +0,0 @@ -The Library is distributed under the terms of the GNU Library General -Public License version 2.1 (included below). - -As a special exception to the GNU Library General Public License, you -may link, statically or dynamically, a "work that uses the Library" -with a publicly distributed version of the Library to produce an -executable file containing portions of the Library, and distribute -that executable file under terms of your choice, without any of the -additional requirements listed in clause 6 of the GNU Library General -Public License. By "a publicly distributed version of the Library", we -mean either the unmodified Library as distributed, or a -modified version of the Library that is distributed under the -conditions defined in clause 3 of the GNU Library General Public -License. This exception does not however invalidate any other reasons -why the executable file might be covered by the GNU Library General -Public License. - -====================================================================== - - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations -below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it -becomes a de-facto standard. To achieve this, non-free programs must -be allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control -compilation and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at least - three years, to give the same user the materials specified in - Subsection 6a, above, for a charge no more than the cost of - performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply, and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License -may add an explicit geographical distribution limitation excluding those -countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms -of the ordinary General Public License). - - To apply these terms, attach the following notices to the library. -It is safest to attach them to the start of each source file to most -effectively convey the exclusion of warranty; and each file should -have at least the "copyright" line and a pointer to where the full -notice is found. - - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or -your school, if any, to sign a "copyright disclaimer" for the library, -if necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James - Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/jscomp/build_tests/ocamlgraph/META.in b/jscomp/build_tests/ocamlgraph/META.in deleted file mode 100755 index 945faf4d89..0000000000 --- a/jscomp/build_tests/ocamlgraph/META.in +++ /dev/null @@ -1,5 +0,0 @@ -version = "VERSION" -description = "Generic Graph Library" -requires="" -archive(byte) = "CMA" -archive(native) = "CMXA" diff --git a/jscomp/build_tests/ocamlgraph/Makefile.in b/jscomp/build_tests/ocamlgraph/Makefile.in deleted file mode 100755 index 0a5376e080..0000000000 --- a/jscomp/build_tests/ocamlgraph/Makefile.in +++ /dev/null @@ -1,650 +0,0 @@ -########################################################################## -# # -# Ocamlgraph: a generic graph library for OCaml # -# Copyright (C) 2004-2010 # -# Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles # -# # -# This software is free software; you can redistribute it and/or # -# modify it under the terms of the GNU Library General Public # -# License version 2.1, with the special exception on linking # -# described in file LICENSE. # -# # -# This software is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # -# # -########################################################################## - -# Where to install the binaries -DESTDIR = -prefix =@prefix@ -exec_prefix=@exec_prefix@ -datarootdir=@datarootdir@ -BINDIR =$(DESTDIR)@bindir@ - -# Where to install the man page -MANDIR=@mandir@ - -# Other variables set by ./configure -OCAMLC = @OCAMLC@ -OCAMLOPT = @OCAMLOPT@ -OCAMLDEP = @OCAMLDEP@ -slash -OCAMLDOC = @OCAMLDOC@ -OCAMLLEX = @OCAMLLEX@ -OCAMLYACC= @OCAMLYACC@ -v -OCAMLLIB = @OCAMLLIB@ -OCAMLBEST= @OCAMLBEST@ -OCAMLVERSION = @OCAMLVERSION@ -OCAMLWEB = @OCAMLWEB@ -OCAMLWIN32 = @OCAMLWIN32@ -OCAMLFIND = @OCAMLFIND@ -EXE = @EXE@ -LIBEXT = @LIBEXT@ -OBJEXT = @OBJEXT@ - -# Others global variables -SRCDIR = src -LIBDIR = lib - -INCLUDES= -I $(SRCDIR) -I $(LIBDIR) -BFLAGS = $(INCLUDES) -g -dtypes -w +a -w -4 -w -44 -w -50 -w -48 -w -29 -OFLAGS = $(INCLUDES) - -# main target -############# - -NAME=ocamlgraph - -ifeq (@LABLGNOMECANVAS@,yes) -all: byte $(OCAMLBEST) viewer dgraph editor -else -all: byte $(OCAMLBEST) -endif - -# bytecode and native-code compilation -###################################### - -LIB= unionfind heap bitv -LIB:=$(patsubst %, $(LIBDIR)/%.cmo, $(LIB)) - -CMO = version util blocks persistent imperative \ - delaunay builder classic rand oper \ - components path nonnegative traverse coloring topological kruskal flow \ - prim dominator graphviz gml dot_parser dot_lexer dot pack \ - gmap minsep cliquetree mcs_m md strat fixpoint leaderlist contraction \ - graphml merge mincut clique -CMO := $(LIB) $(patsubst %, $(SRCDIR)/%.cmo, $(CMO)) - -CMX = $(CMO:.cmo=.cmx) -CMA = graph.cma -CMXA = graph.cmxa -ifeq (@NATIVE_DYNLINK@,yes) -CMXS = graph.cmxs -endif - -CMI = sig sig_pack dot_ast -CMI := $(patsubst %, src/%.cmi, $(CMI)) - -GENERATED = META \ - src/gml.ml src/version.ml \ - src/dot_parser.ml src/dot_parser.mli src/dot_lexer.ml - -$(CMX): OFLAGS += -for-pack Graph - -byte: $(CMA) -opt: $(CMXA) $(CMXS) - -graph.cma: graph.cmo - $(OCAMLC) $(INCLUDES) -a -g -o $@ $^ - -graph.cmxa: graph.cmx - $(OCAMLOPT) $(INCLUDES) -a -o $@ $^ - -graph.cmxs: graph.cmx - $(OCAMLOPT) $(INCLUDES) -shared -o $@ $^ - -graph.cmi: graph.cmo -graph.o: graph.cmx - -graph.cmo: $(CMI) $(CMO) - $(OCAMLC) $(INCLUDES) -pack -g -o $@ $^ - -graph.cmx: $(CMI) $(CMX) - $(OCAMLOPT) $(INCLUDES) -pack -o $@ $^ - -VERSION=1.8.7 - -src/version.ml: Makefile - rm -f $@ - echo "let version = \""$(VERSION)"\"" > $@ - echo "let date = \""`date`"\"" >> $@ - -# gtk2 graph editor -################### - -ED_DIR=editor - -editor: $(ED_DIR)/editor.byte $(ED_DIR)/editor.$(OCAMLBEST) - -ED_CMO = ed_hyper ed_graph ed_draw ed_display ed_main -ED_CMO:= $(patsubst %, $(ED_DIR)/%.cmo, $(ED_CMO)) -ED_CMX = $(ED_CMO:.cmo=.cmx) -ED_CMI = $(ED_CMO:.cmo=.cmi) - -ED_INCLUDES = @INCLUDEGTK2@ -I +threads -I $(ED_DIR) -I . - -$(ED_CMI) $(ED_CMO): BFLAGS+= $(ED_INCLUDES) -$(ED_CMI) $(ED_CMO): $(CMA) -$(ED_CMX): OFLAGS+= $(ED_INCLUDES) -$(ED_CMX): $(CMXA) - -$(ED_DIR)/editor.byte: $(CMA) $(ED_CMO) - $(OCAMLC) -g -o $@ $(ED_INCLUDES) \ - lablgtk.cma lablgnomecanvas.cma unix.cma $^ - -$(ED_DIR)/editor.opt: $(CMXA) $(ED_CMX) - $(OCAMLOPT) -o $@ $(ED_INCLUDES) \ - lablgtk.cmxa lablgnomecanvas.cmxa unix.cmxa $^ - -# gtk2 graph viewer (deprecated) -################### - -VIEWER_DIR=view_graph - -viewer: $(VIEWER_DIR)/viewgraph.byte $(VIEWER_DIR)/viewgraph.$(OCAMLBEST) - -VIEWER_CMO=viewGraph_core viewGraph_select viewGraph_utils viewGraph_test -VIEWER_CMO:=$(patsubst %,$(VIEWER_DIR)/%.cmo, $(VIEWER_CMO)) -VIEWER_CMX=$(VIEWER_CMO:.cmo=.cmx) -VIEWER_CMI=$(VIEWER_CMO:.cmo=.cmi) -VIEWER_MLI=$(VIEWER_CMI:.cmi=.mli) - -VIEWER_INCLUDES= @INCLUDEGTK2@ -I $(VIEWER_DIR) -I . - -$(VIEWER_CMI) $(VIEWER_CMO): BFLAGS+= $(VIEWER_INCLUDES) -$(VIEWER_CMX): OFLAGS+= $(VIEWER_INCLUDES) -for-pack Viewgraph -$(VIEWER_CMI) $(VIEWER_CMO): $(CMA) -$(VIEWER_CMX): $(CMXA) - -VIEWER_CMOLIB = $(VIEWER_DIR)/viewgraph.cmo -VIEWER_CMILIB = $(VIEWER_DIR)/viewgraph.cmi -VIEWER_CMXLIB = $(VIEWER_DIR)/viewgraph.cmx - -$(VIEWER_CMOLIB): $(filter-out $(VIEWER_DIR)/viewGraph_test.cmo, $(VIEWER_CMO)) - $(OCAMLC) -o $@ $(VIEWER_INCLUDES) -pack $^ - -$(VIEWER_CMXLIB): $(filter-out $(VIEWER_DIR)/viewGraph_test.cmx, $(VIEWER_CMX)) - $(OCAMLOPT) -o $@ $(VIEWER_INCLUDES) -pack $^ - -$(VIEWER_DIR)/viewgraph.byte: $(CMA) $(VIEWER_CMOLIB) - $(OCAMLC) -g -o $@ $(VIEWER_INCLUDES) \ - lablgtk.cma gtkInit.cmo lablgnomecanvas.cma unix.cma $^ - -$(VIEWER_DIR)/viewgraph.opt: $(CMXA) $(VIEWER_CMXLIB) - $(OCAMLOPT) -o $@ $(VIEWER_INCLUDES) \ - lablgtk.cmxa gtkInit.cmx lablgnomecanvas.cmxa unix.cmxa $^ - -# new gtk2 graph viewer: dgraph -############################### - -DGRAPH_DIR=dgraph - -dgraph: $(DGRAPH_DIR)/dgraph.byte $(DGRAPH_DIR)/dgraph.$(OCAMLBEST) - -DGRAPH_CMO=xDotDraw xDot \ - dGraphModel \ - dGraphTreeLayout dGraphSubTree dGraphTreeModel \ - dGraphViewItem dGraphView \ - dGraphRandModel dGraphContainer \ - dGraphViewer -DGRAPH_CMO:=$(patsubst %,$(DGRAPH_DIR)/%.cmo, $(DGRAPH_CMO)) -DGRAPH_CMX=$(DGRAPH_CMO:.cmo=.cmx) -DGRAPH_CMI=$(filter-out dgraph/dGraphViewer.cmi, $(DGRAPH_CMO:.cmo=.cmi)) - -DGRAPH_INCLUDES= @INCLUDEGTK2@ -I $(DGRAPH_DIR) -I . - -$(DGRAPH_CMI) $(DGRAPH_CMO): BFLAGS+= $(DGRAPH_INCLUDES) -$(DGRAPH_CMX): OFLAGS+= $(DGRAPH_INCLUDES) -for-pack Dgraph - -$(DGRAPH_CMI) $(DGRAPH_CMO): $(CMA) -$(DGRAPH_CMX): $(CMXA) - -DGRAPH_CMOLIB = $(DGRAPH_DIR)/dgraph.cmo -DGRAPH_CMILIB = $(DGRAPH_DIR)/dgraph.cmi -DGRAPH_CMXLIB = $(DGRAPH_DIR)/dgraph.cmx - -dgraph/dGraphViewer.cmo: $(DGRAPH_CMOLIB) -dgraph/dGraphViewer.cmx: $(DGRAPH_CMXLIB) - -$(DGRAPH_CMOLIB): $(filter-out dgraph/dGraphViewer.cmo, $(DGRAPH_CMO)) - $(OCAMLC) -o $@ $(DGRAPH_INCLUDES) -pack $^ - -$(DGRAPH_CMXLIB): $(filter-out dgraph/dGraphViewer.cmx, $(DGRAPH_CMX)) - $(OCAMLOPT) -o $@ $(DGRAPH_INCLUDES) -pack $^ - -$(DGRAPH_DIR)/dgraph.byte: $(CMA) $(DGRAPH_CMOLIB) \ - $(DGRAPH_DIR)/dGraphViewer.cmo - $(OCAMLC) -g -o $@ $(DGRAPH_INCLUDES) \ - lablgtk.cma gtkInit.cmo lablgnomecanvas.cma $^ - -$(DGRAPH_DIR)/dgraph.opt: $(CMXA) $(DGRAPH_CMXLIB) \ - $(DGRAPH_DIR)/dGraphViewer.cmx - $(OCAMLOPT) -o $@ $(DGRAPH_INCLUDES) \ - lablgtk.cmxa gtkInit.cmx lablgnomecanvas.cmxa $^ - -# Fixing issue with "make -j" -############################# - -# wait than all bytecodes are done before packing the native library: -# without these extra dependencies, building graph.cmx also rebuilds the .cmi -# while graph.cmi may be required at the same time by some .cmo of the -# bytecodes, leading to tentative access to a corrupted graph.cmi. - -ifeq (@LABLGNOMECANVAS@,yes) -graph.cmx: | $(DGRAPH_DIR)/dgraph.byte \ - $(VIEWER_DIR)/viewgraph.byte \ - $(ED_DIR)/editor.byte -endif - -$(CMX): | $(SRCDIR)/blocks.cmo - -# No .mli for blocks.ml: so, to avoid clash when generating block.cmi -# from both ocamlc and ocamlopt, force to fully compile the bytecode library -# before the native one -$(SRCDIR)/blocks.cmx: | graph.cmo - -# Examples -########## - -EXAMPLESBIN=bin/demo.$(OCAMLBEST) bin/demo_planar.$(OCAMLBEST) \ - bin/bench.$(OCAMLBEST) bin/color.$(OCAMLBEST) bin/sudoku.$(OCAMLBEST) \ - bin/test.$(OCAMLBEST) - -.PHONY: examples -examples: $(EXAMPLESBIN) - -.PHONY: demo -demo: bin/demo.$(OCAMLBEST) - -bin/demo.byte: $(CMXA) examples/demo.cmo - mkdir -p bin - $(OCAMLOPT) -o $@ graphics.cma unix.cma $^ - -bin/demo.opt: $(CMXA) examples/demo.cmx - mkdir -p bin - $(OCAMLOPT) -o $@ graphics.cmxa unix.cmxa $^ - -bin/fgtest.opt: $(CMXA) myTest/fgtest.cmx - mkdir -p bin - $(OCAMLOPT) -o $@ graphics.cmxa unix.cmxa $^ - -bin/demo_planar.byte: $(CMA) examples/demo_planar.cmo - mkdir -p bin - $(OCAMLC) -o $@ graphics.cma unix.cma $^ - -bin/demo_planar.opt: $(CMXA) examples/demo_planar.cmx - mkdir -p bin - $(OCAMLOPT) -o $@ graphics.cmxa unix.cmxa $^ - -bin/compare_prim_kruskal.opt: $(CMXA) examples/compare_prim_kruskal.ml - mkdir -p bin - $(OCAMLOPT) -o $@ graphics.cmxa unix.cmxa $^ - -bin/demo_prim.opt: $(CMXA) examples/demo_prim.ml - mkdir -p bin - $(OCAMLOPT) -o $@ graphics.cmxa unix.cmxa $^ - -bin/color.byte: $(CMA) examples/color.cmo - mkdir -p bin - $(OCAMLC) -o $@ graphics.cma unix.cma $^ - -bin/color.opt: $(CMXA) examples/color.cmx - mkdir -p bin - $(OCAMLOPT) -o $@ graphics.cmxa unix.cmxa $^ - -bin/sudoku.byte: $(CMA) examples/sudoku.cmo - mkdir -p bin - $(OCAMLC) -o $@ graphics.cma unix.cma $^ - -bin/sudoku.opt: $(CMXA) examples/sudoku.cmx - mkdir -p bin - $(OCAMLOPT) -o $@ graphics.cmxa unix.cmxa $^ - -test: $(CMA) tests/test.ml - ocaml unix.cma graphics.cma $^ - -test-bf: $(CMA) tests/test_bf.ml - ocaml unix.cma graphics.cma $^ - -test-johnson: $(CMA) tests/test_johnson.ml - ocaml unix.cma graphics.cma $^ - -bin/test-ts: $(CMXA) tests/test_topsort.ml - mkdir -p bin - $(OCAMLOPT) -o $@ unix.cmxa $^ - -test-ts: bin/test-ts - bin/test-ts 10 - -nonneg: $(CMA) tests/nonneg.ml - ocaml unix.cma graphics.cma $^ - -test-graphml: $(CMA) tests/testgraphml.ml - ocaml unix.cma $^ - -bin/test.byte: $(CMA) tests/test.cmo - $(OCAMLC) -g -unsafe -o $@ unix.cma graphics.cma $^ - -bin/test.opt: $(CMXA) tests/test.cmx - $(OCAMLOPT) -unsafe -inline 100 -o $@ unix.cmxa graphics.cmxa $^ - -bin/test_bf.byte: $(CMA) tests/test_bf.ml - $(OCAMLC) -g -o $@ unix.cma graphics.cma $^ - -bin/nonneg.byte: $(CMA) tests/nonneg.ml - $(OCAMLC) -g -o $@ unix.cma graphics.cma $^ - -bench: bin/bench.$(OCAMLBEST) - bin/bench.opt - -bin/bench.opt: $(CMXA) tests/bench.ml - $(OCAMLOPT) -unsafe -inline 100 -o $@ unix.cmxa $^ - -bin/testunix.opt: $(CMXA) myTest/testunix.ml - $(OCAMLOPT) -unsafe -inline 100 -o $@ unix.cmxa $^ - -check: $(CMA) tests/check.ml bin/test-ts - ocaml $(CMA) tests/test_clique.ml tests/check.ml - bin/test-ts 10 - -# Additional rules -################## - -EXAMPLES = demo color demo_planar sudoku -EXAMPLESBIN:=$(patsubst %, bin/%.opt, $(EXAMPLES)) -EXAMPLES:= $(patsubst %, examples/%.ml, $(EXAMPLES)) - -examples: $(EXAMPLESBIN) - -TESTS = test check -TESTS := $(patsubst %, tests/%.ml, $(TESTS)) - -DPD_GRAPH_ML= $(TESTS) $(EXAMPLES) - -$(DPD_GRAPH_ML:.ml=.cmo): $(CMA) -$(DPD_GRAPH_ML:.ml=.cmx): $(CMXA) - -# installation -############## - -INSTALL_LIBDIR=$(DESTDIR)$(OCAMLLIB)/ocamlgraph - -install: install-$(OCAMLBEST) install-byte - mkdir -p $(BINDIR) -ifeq (@LABLGNOMECANVAS@,yes) -ifeq ($(OCAMLBEST),byte) - cp -f $(BINDIR)/graph-editor.byte $(BINDIR)/graph-editor$(EXE) - cp -f $(BINDIR)/graph-viewer.byte $(BINDIR)/graph-viewer$(EXE) -else - cp -f $(BINDIR)/graph-editor.opt $(BINDIR)/graph-editor$(EXE) - cp -f $(BINDIR)/graph-viewer.opt $(BINDIR)/graph-viewer$(EXE) -endif -endif - -install-byte: - mkdir -p $(INSTALL_LIBDIR) - cp -f graph.cmo graph.cmi $(CMA) $(INSTALL_LIBDIR) - cp -f $(SRCDIR)/*.mli $(INSTALL_LIBDIR) -ifeq (@LABLGNOMECANVAS@,yes) - mkdir -p $(BINDIR) - cp -f $(ED_DIR)/editor.byte $(BINDIR)/graph-editor.byte - cp -f $(VIEWER_CMILIB) $(VIEWER_CMOLIB) $(INSTALL_LIBDIR) - cp -f $(DGRAPH_CMILIB) $(DGRAPH_CMOLIB) $(INSTALL_LIBDIR) - cp -f $(VIEWER_DIR)/*.mli $(DGRAPH_DIR)/*.mli $(INSTALL_LIBDIR) - cp -f $(DGRAPH_DIR)/dgraph.byte $(BINDIR)/graph-viewer.byte -endif - -install-opt: install-byte - mkdir -p $(INSTALL_LIBDIR) - cp -f graph$(OBJEXT) graph$(LIBEXT) graph.cmi graph.cmx \ - $(CMXA) $(CMXS) $(INSTALL_LIBDIR) - cp -f $(SRCDIR)/*.mli $(INSTALL_LIBDIR) -ifeq (@LABLGNOMECANVAS@,yes) - mkdir -p $(BINDIR) - cp -f $(ED_DIR)/editor.opt $(BINDIR)/graph-editor.opt - cp -f $(VIEWER_CMILIB) $(VIEWER_CMXLIB) $(VIEWER_CMXLIB:.cmx=.o) \ - $(INSTALL_LIBDIR) - cp -f $(DGRAPH_CMILIB) $(DGRAPH_CMXLIB) $(DGRAPH_CMXLIB:.cmx=.o) \ - $(INSTALL_LIBDIR) - cp -f $(DGRAPH_DIR)/dgraph.opt $(BINDIR)/graph-viewer.opt - cp -f $(VIEWER_DIR)/*.mli $(DGRAPH_DIR)/*.mli $(INSTALL_LIBDIR) -endif - -ifdef DESTDIR -OCAMLFINDDEST := -destdir $(DESTDIR) -endif - -install-findlib: META -ifdef OCAMLFIND -ifeq (@LABLGNOMECANVAS@,yes) - $(OCAMLFIND) install $(OCAMLFINDDEST) ocamlgraph META \ - $(SRCDIR)/*.mli $(VIEWER_DIR)/*.mli $(DGRAPH_DIR)/*.mli \ - graph$(OBJEXT) graph$(LIBEXT) graph.cmx graph.cmo graph.cmi \ - $(CMA) $(CMXA) \ - $(VIEWER_CMXLIB) $(VIEWER_CMOLIB) $(VIEWER_CMILIB) \ - $(VIEWER_CMXLIB:.cmx=.o) \ - $(DGRAPH_CMXLIB) $(DGRAPH_CMOLIB) $(DGRAPH_CMILIB) \ - $(DGRAPH_CMXLIB:.cmx=.o) -else - $(OCAMLFIND) install $(OCAMLFINDDEST) ocamlgraph META \ - $(SRCDIR)/*.mli $(VIEWER_DIR)/*.mli $(DGRAPH_DIR)/*.mli \ - graph$(LIBEXT) graph.cmx graph.cmo graph.cmi $(CMA) $(CMXA) -endif -endif - -META: META.in Makefile - sed -e s/VERSION/$(VERSION)/ -e s/CMA/$(CMA)/ -e s/CMXA/$(CMXA)/ \ - $@.in > $@ - -# documentation -############### - -DOCFILES=$(NAME).ps $(NAME).html - -NODOC = blocks dot_parser dot_lexer version -NODOC := $(patsubst %, $(SRCDIR)/%.cmo, $(NODOC)) -DOC_CMO = $(filter-out $(NODOC) $(LIB), $(CMO)) -DOC_SRC = $(CMI:.cmi=.mli) $(DOC_CMO:.cmo=.mli) $(DOC_CMO:.cmo=.ml) -ifeq (@LABLGNOMECANVAS@,yes) -DOC_SRC := $(DOC_SRC) $(DGRAPH_CMI:.cmi=.mli) -endif - -.PHONY: doc -doc: $(DOC_CMO) - mkdir -p doc - rm -f doc/* - $(OCAMLDOC) -d doc -html $(DGRAPH_INCLUDES) -I lib -I src $(DOC_SRC) - -# literate programming -$(NAME).tex: $(DOC_SRC) - $(OCAMLWEB) -o $@ $^ - -wc: - ocamlwc -p $(SRCDIR)/*.mli $(SRCDIR)/*.ml - -# file headers -############## - -headers: - headache \ - -c misc/headache_config.txt \ - -h misc/header.txt \ - Makefile.in configure.in README.adoc \ - $(LIBDIR)/*.ml $(LIBDIR)/*.ml[ily] \ - $(SRCDIR)/*.ml $(SRCDIR)/*.ml[ily] \ - $(ED_DIR)/*.ml $(ED_DIR)/*.mli - headache \ - -c misc/headache_config.txt \ - -h $(DGRAPH_DIR)/headers/CEA_LGPL \ - $(DGRAPH_DIR)/*.ml $(DGRAPH_DIR)/*.mli -# export -######## - -EXPORTDIR=$(NAME)-$(VERSION) -TAR=$(EXPORTDIR).tar - -FTP = /users/www-perso/projets/ocamlgraph/download -WWW = /users/www-perso/projets/ocamlgraph - -FILES = src/*.ml* lib/*.ml* Makefile.in configure configure.in META.in \ - .depend editor/ed_*.ml* editor/Makefile \ - editor/tests/*.dot editor/tests/*.gml \ - view_graph/*.ml view_graph/*.mli \ - view_graph/README view_graph/Makefile \ - dgraph/*.ml dgraph/*.mli \ - examples/*.ml tests/*.ml \ - README.adoc FAQ CREDITS INSTALL.adoc COPYING LICENSE CHANGES - -export: source export-doc export-web export-delaunay - -source: - mkdir -p export - cd export; rm -rf $(EXPORTDIR) - mkdir -p export/$(EXPORTDIR)/bin - cp --parents $(FILES) export/$(EXPORTDIR) - cd export ; tar cf $(TAR) $(EXPORTDIR) ; gzip -f --best $(TAR) - cp export/$(TAR).gz $(FTP) - cp README.adoc FAQ CREDITS COPYING LICENSE CHANGES $(EXAMPLES) $(FTP) - -# Build and install the .tar.gz requiered by Frama-C -framac: EXPORTDIR=ocamlgraph -framac: FTP=$$HOME/GIT/frama-c.master -framac: - mkdir -p export - cd export; rm -rf $(EXPORTDIR) - mkdir -p export/$(EXPORTDIR)/bin - cp --parents $(FILES) export/$(EXPORTDIR) - cd export ; tar cf $(TAR) $(EXPORTDIR) ; gzip -f --best $(TAR) - cp export/$(TAR).gz $(FTP) - make -C $(FTP) force-ocamlgraph - -www/version.prehtml: Makefile.in - echo "<#def version>$(VERSION)" > www/version.prehtml - -export-web: www/version.prehtml - make -C www install - -export-doc: $(DOC_CMO) - rm -f $(WWW)/doc/* - -$(OCAMLDOC) -d $(WWW)/doc -html $(DGRAPH_INCLUDES) -I lib -I src $(DOC_SRC) - -MISCFTP = $(HOME)/WWW/ftp/ocaml/misc -DELAUNAY=delaunay.ml delaunay.mli -export-delaunay: - cd src; cp -f $(DELAUNAY) $(MISCFTP) - cd src; rm -f delaunay.annot; caml2html -noannot -d $(MISCFTP) $(DELAUNAY) - -# generic rules -############### - -.SUFFIXES: .mli .ml .cmi .cmo .cmx .mll .mly .tex .dvi .ps .html - -.mli.cmi: - $(OCAMLC) -c $(BFLAGS) $< - -.ml.cmo: - $(OCAMLC) -c $(BFLAGS) $< - -.ml.o: - $(OCAMLOPT) -c $(OFLAGS) $< - -.ml.cmx: - $(OCAMLOPT) -c $(OFLAGS) $< - -.mll.ml: - $(OCAMLLEX) $< - -.mly.ml: - $(OCAMLYACC) -v $< - -.mly.mli: - $(OCAMLYACC) -v $< - -.tex.dvi: - latex $< && latex $< - -.dvi.ps: - dvips $< -o $@ - -.tex.html: - hevea $< - -# Emacs tags -############ - -otags: - otags -r src editor view_graph - -tags: - find . -name "*.ml*" | sort -r | xargs \ - etags "--regex=/let[ \t]+\([^ \t]+\)/\1/" \ - "--regex=/let[ \t]+rec[ \t]+\([^ \t]+\)/\1/" \ - "--regex=/and[ \t]+\([^ \t]+\)/\1/" \ - "--regex=/type[ \t]+\([^ \t]+\)/\1/" \ - "--regex=/exception[ \t]+\([^ \t]+\)/\1/" \ - "--regex=/val[ \t]+\([^ \t]+\)/\1/" \ - "--regex=/module[ \t]+\([^ \t]+\)/\1/" - -# Makefile is rebuilt whenever Makefile.in or configure.in is modified -###################################################################### - -Makefile: Makefile.in config.status - if test -e $@; then chmod a+w $@; fi - ./config.status - chmod a-w $@ - -config.status: configure - ./config.status --recheck - -configure: configure.in - autoconf - -# clean -####### - -clean: - rm -f *~ - for d in $(SRCDIR) $(LIBDIR) $(ED_DIR) $(VIEWER_DIR) $(DGRAPH_DIR) \ - tests examples; \ - do \ - rm -f $$d/*.cm[iox] $$d/*$(OBJEXT) $$d/*~ $$d/*.annot; \ - done - rm -f $(GENERATED) $(SRCDIR)/dot_parser.output - rm -f graph.*a graph.cm* graph.o graph$(LIBEXT) - rm -f $(ED_DIR)/editor.byte $(ED_DIR)/editor.opt - rm -f $(VIEWER_DIR)/viewgraph.byte $(VIEWER_DIR)/viewgraph.opt - rm -f $(DGRAPH_DIR)/dgraph.byte $(DGRAPH_DIR)/dgraph.opt - rm -f $(DGRAPH_DIR)/dgraph - rm -f *.haux *.aux *.log $(NAME).tex $(NAME).dvi $(DOCFILES) - rm -f $(EXAMPLESBIN) - -dist-clean distclean:: clean - rm -f Makefile config.cache config.log config.status *.byte *.opt - -svnclean svn-clean:: dist-clean - rm -f config.* configure configure.lineno - -# depend -######## - -.PHONY: depend -.depend depend: $(GENERATED) - rm -f .depend - $(OCAMLDEP) $(INCLUDES) -I $(ED_DIR) -I $(VIEWER_DIR) -I $(DGRAPH_DIR)\ - $(LIBDIR)/*.ml $(LIBDIR)/*.mli \ - $(SRCDIR)/*.ml $(SRCDIR)/*.mli \ - $(ED_DIR)/*.mli $(ED_DIR)/*.ml \ - $(VIEWER_DIR)/*.mli $(VIEWER_DIR)/*.ml \ - $(DGRAPH_DIR)/*.mli $(DGRAPH_DIR)/*.ml > .depend - -include .depend diff --git a/jscomp/build_tests/ocamlgraph/README.adoc b/jscomp/build_tests/ocamlgraph/README.adoc deleted file mode 100755 index 5adf753e4c..0000000000 --- a/jscomp/build_tests/ocamlgraph/README.adoc +++ /dev/null @@ -1,62 +0,0 @@ -= OCamlgraph - -OCamlgraph is a graph library for Ocaml. Its contribution is three-fold: - -1. It provides an easy-to-use graph implementation together with several - operations and algorithms over graphs, in Graph.Pack.Digraph. - It is a reasonably efficient imperative data structure for directed graphs - with vertices and edges labeled with integers. -+ -Have a look at this module first in order to get an overview of what -this library provides. See also `demo.ml`. - -2. Then OCamlgraph provides several other graph implementations for those - not satisfied with the one above. Some are persistent (imutable) and other - imperative (mutable). Some are directed and other are not. - Some have labels for vertices, or labels for edges, or both. - Some have abstract types for vertices. etc. -+ -See interface Sig for the graph signatures and modules Persistent and -Imperative for the implementations. -+ -These implementations are written as functors: you give the types of -vertices labels, edge labels, etc. and you get the data structure as a -result. - -3. Finally, OCamlgraph provides several classic operations and algorithms - over graphs. They are also written as functors i.e. independently of the - data structure for graphs. One consequence is that you can define your own - data structure for graphs and yet re-use all the algorithms from this - library -- you only need to provide a few operations such as iterating over - all vertices, over the successors of a vertex, etc. - - -== How to link with OCamlgraph - -OCamlgraph is packaged as a single module `Graph`. Link is done as follows: - -bytecode:: - - ocamlc graph.cma - -native code:: - - ocamlopt graph.cmxa - - -== Examples - -You'll find examples of OCamlgraph use in subdirectory examples/ -(demo.ml, demo_planar.ml, color.ml, etc.). You can compile these -programs with `make examples`. Corresponding binaries are produced in -subdirectory bin/. You can also build them individually, e.g. `make -bin/demo.opt` compiles examples/demo.ml. - - -== Bug reports - -Bug reports can be sent to - - Sylvain Conchon - Jean-Christophe Filliatre - Julien Signoles diff --git a/jscomp/build_tests/ocamlgraph/TODO.adoc b/jscomp/build_tests/ocamlgraph/TODO.adoc deleted file mode 100755 index 4c9ca18e5a..0000000000 --- a/jscomp/build_tests/ocamlgraph/TODO.adoc +++ /dev/null @@ -1,22 +0,0 @@ - -- has_cycle: return the cycle as a list of vertices -- Better graph viewer and editor -- Improve the website -- It should be possible to specify the first vertex to visit in traversal - algorithm (suggestion of Fabrice Derepas) -- Implementations for graph with unlabeled vertices - (exactly like graph with unlabeled edges) -- Provide more bidirectional graph implementation: - only Imperative.Digraph.ConcreteBidirectional exists at this day. -- Provide generic marks (instead of only integer marks) - -== DGraph - -=== mode Tree: - -- texte trop bas -- texte multi-ligne -- gros zoom déviant -- mauvaise borne polygone & rectangle - -Un bon exemple est 'examples/fancy.dot' diff --git a/jscomp/build_tests/ocamlgraph/benchs/bgl/bench.cpp b/jscomp/build_tests/ocamlgraph/benchs/bgl/bench.cpp deleted file mode 100755 index 72ea3df829..0000000000 --- a/jscomp/build_tests/ocamlgraph/benchs/bgl/bench.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include -#include -#include - -#include -#include -#include -#include - -#include - -using namespace boost; -using namespace std; - -int cpt = 0; - -class my_dfs_visitor:public default_dfs_visitor { -public: - template < typename Vertex, typename Graph > - void discover_vertex(const Vertex& u, const Graph& g) { - cpt++; - cout << cpt << "\t" << u << "\n"; - } -}; - -int main(int _, char* args[]) { - // create a typedef for the Graph type - typedef adjacency_list Graph; - - minstd_rand ran(time(0)); - - GraphvizDigraph g; - read_graphviz(args[1], g); - // generate_random_graph(g, atoi(args[1]), atoi(args[2]), ran); - // write_graphviz(cout, g); - default_dfs_visitor vis; - // my_dfs_visitor vis; - time_t t1, t2; - time(&t1); - depth_first_search(g, visitor(vis)); - time(&t2); - double dif = difftime(t2, t1); - cout << dif << " seconds.\n"; - - return 0; -} - -/* -Local Variables: -compile-command: "g++ -O3 -o cpp_bench -Wall -lbgl-viz bench.cpp" -End: -*/ diff --git a/jscomp/build_tests/ocamlgraph/benchs/ocamlgraph/bench.ml b/jscomp/build_tests/ocamlgraph/benchs/ocamlgraph/bench.ml deleted file mode 100755 index 4ef1815c57..0000000000 --- a/jscomp/build_tests/ocamlgraph/benchs/ocamlgraph/bench.ml +++ /dev/null @@ -1,20 +0,0 @@ -let v = int_of_string Sys.argv.(1) -let e = int_of_string Sys.argv.(2) - -module Int = struct - type t = int - let compare = compare - let equal = (=) - let hash = Hashtbl.hash -end - -open Graph - -module G = Imperative.Digraph.Abstract(Int) -module R = Rand.I(G) - -let g = R.graph ~v ~e () - -(* module D = Traverse.Dfs(G) *) - -(* let () = D.prefix (fun _ -> ()) g *) diff --git a/jscomp/build_tests/ocamlgraph/benchs/ocamlgraph/generate.ml b/jscomp/build_tests/ocamlgraph/benchs/ocamlgraph/generate.ml deleted file mode 100755 index 490df0a99c..0000000000 --- a/jscomp/build_tests/ocamlgraph/benchs/ocamlgraph/generate.ml +++ /dev/null @@ -1,29 +0,0 @@ -let v = int_of_string Sys.argv.(1) -let e = int_of_string Sys.argv.(2) - -module Int = struct - type t = int - let compare = compare - let equal = (=) - let hash = Hashtbl.hash -end - -open Graph - -module G = Imperative.Digraph.Abstract(Int) -module R = Rand.I(G) - -module Display = struct - include G - let vertex_name v = string_of_int (V.label v) - let graph_attributes _ = [] - let default_vertex_attributes _ = [] - let vertex_attributes _ = [] - let default_edge_attributes _ = [] - let edge_attributes _ = [] - let get_subgraph _ = None -end - -module Gv = Graphviz.Dot(Display) - -let () = Gv.output_graph stdout (R.graph ~v ~e ()) diff --git a/jscomp/build_tests/ocamlgraph/bsconfig.json b/jscomp/build_tests/ocamlgraph/bsconfig.json deleted file mode 100644 index bd15931a04..0000000000 --- a/jscomp/build_tests/ocamlgraph/bsconfig.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "graph", - "sources": [ - "libx", - { - "dir": "src", - "generators": [ - { - "name" : "lex", - "edge": [ - "dot_lexer.ml", ":", "dot_lexer.mll" - ] - }, - { - "name" : "lex", - "edge": [ - "gml.ml", ":", "gml.mll" - ] - }, - { - "name" : "yacc", - "edge": [ - "dot_parser.ml", "dot_parser.mli", - ":", "dot_parser.mly" - ] - } - ] - }, - { - "dir" : "tests", - "files" : [ - "check.ml" - ,"test_clique.ml" - ,"test_topsort.ml" - ,"test_johnson.ml" - // ,"test_bf.ml" - // relies on Filename.tempfile - ] - } - - ], - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "suffix": ".bs.js", - "generators": [ - { - "name": "lex", - "command": "ocamllex.opt $in" - }, - { - "name": "yacc", - "command": "ocamlyacc $in" - } - ], - "bsc-flags" : ["-w", "a"], - "namespace": true -} \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/configure.in b/jscomp/build_tests/ocamlgraph/configure.in deleted file mode 100755 index 5448bc67c7..0000000000 --- a/jscomp/build_tests/ocamlgraph/configure.in +++ /dev/null @@ -1,242 +0,0 @@ -########################################################################## -# # -# Ocamlgraph: a generic graph library for OCaml # -# Copyright (C) 2004-2010 # -# Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles # -# # -# This software is free software; you can redistribute it and/or # -# modify it under the terms of the GNU Library General Public # -# License version 2.1, with the special exception on linking # -# described in file LICENSE. # -# # -# This software is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # -# # -########################################################################## - -# the script generated by autoconf from this input will set the following -# variables: -# OCAMLC "ocamlc" if present in the path, or a failure -# or "ocamlc.opt" if present with same version number as ocamlc -# OCAMLOPT "ocamlopt" (or "ocamlopt.opt" if present), or "no" -# OCAMLBEST either "byte" if no native compiler was found, -# or "opt" otherwise -# OCAMLDEP "ocamldep" -# OCAMLLEX "ocamllex" (or "ocamllex.opt" if present) -# OCAMLYACC "ocamlyac" -# OCAMLLIB the path to the ocaml standard library -# OCAMLVERSION the ocaml version number -# OCAMLWEB "ocamlweb" (not mandatory) -# OCAMLWIN32 "yes"/"no" depending on Sys.os_type = "Win32" -# EXE ".exe" if OCAMLWIN32=yes, "" otherwise - -# check for one particular file of the sources -# ADAPT THE FOLLOWING LINE TO YOUR SOURCES! -AC_INIT(src/sig.mli) - -# Check for Ocaml compilers - -# we first look for ocamlc in the path; if not present, we fail -AC_CHECK_PROG(OCAMLC,ocamlc,ocamlc,no) -if test "$OCAMLC" = no ; then - AC_MSG_ERROR(Cannot find ocamlc.) -fi - -# we extract Ocaml version number and library path -OCAMLVERSION=`$OCAMLC -v | sed -n -e 's|.*version *\(.*\)$|\1|p' ` -echo "ocaml version is $OCAMLVERSION" - -case $OCAMLVERSION in - 0.*|1.*|2.*|3.0*) - AC_MSG_ERROR(ocamlgraph needs ocaml version 3.10.0 or higher);; - 3.10*) - NATIVE_DYNLINK=no;; - *) - NATIVE_DYNLINK=yes - ;; -esac - -# OCAMLLIB=`$OCAMLC -v | tail -n 1 | cut -f 4 -d " "` -# OCAMLLIB=`$OCAMLC -v | tail -n 1 | sed -e 's|[[^:]]*: \(.*\)|\1|' ` -OCAMLLIB=`$OCAMLC -where | tr -d '\\r' | tr '\\\\' '/'` -echo "ocaml library path is $OCAMLLIB" - -# then we look for ocamlopt; if not present, we issue a warning -# if the version is not the same, we also discard it -# we set OCAMLBEST to "opt" or "byte", whether ocamlopt is available or not -AC_CHECK_PROG(OCAMLOPT,ocamlopt,ocamlopt,no) -OCAMLBEST=byte -if test "$OCAMLOPT" = no ; then - AC_MSG_WARN(Cannot find ocamlopt; bytecode compilation only.) -else - AC_MSG_CHECKING(ocamlopt version) - TMPVERSION=`$OCAMLOPT -v | sed -n -e 's|.*version *\(.*\)$|\1|p' ` - if test "$TMPVERSION" != "$OCAMLVERSION" ; then - AC_MSG_RESULT(differs from ocamlc; ocamlopt discarded.) - OCAMLOPT=no - else - AC_MSG_RESULT(ok) - OCAMLBEST=opt - fi -fi - -# checking for ocamlc.opt -AC_CHECK_PROG(OCAMLCDOTOPT,ocamlc.opt,ocamlc.opt,no) -if test "$OCAMLCDOTOPT" != no ; then - AC_MSG_CHECKING(ocamlc.opt version) - TMPVERSION=`$OCAMLCDOTOPT -v | sed -n -e 's|.*version *\(.*\)$|\1|p' ` - if test "$TMPVERSION" != "$OCAMLVERSION" ; then - AC_MSG_RESULT(differs from ocamlc; ocamlc.opt discarded.) - else - AC_MSG_RESULT(ok) - OCAMLC=$OCAMLCDOTOPT - fi -fi - -# checking for ocamlopt.opt -if test "$OCAMLOPT" != no ; then - AC_CHECK_PROG(OCAMLOPTDOTOPT,ocamlopt.opt,ocamlopt.opt,no) - if test "$OCAMLOPTDOTOPT" != no ; then - AC_MSG_CHECKING(ocamlc.opt version) - TMPVER=`$OCAMLOPTDOTOPT -v | sed -n -e 's|.*version *\(.*\)$|\1|p' ` - if test "$TMPVER" != "$OCAMLVERSION" ; then - AC_MSG_RESULT(differs from ocamlc; ocamlopt.opt discarded.) - else - AC_MSG_RESULT(ok) - OCAMLOPT=$OCAMLOPTDOTOPT - fi - fi -fi - -# ocamldep, ocamllex and ocamlyacc should also be present in the path -AC_CHECK_PROG(OCAMLDEP,ocamldep,ocamldep,no) -if test "$OCAMLDEP" = no ; then - AC_MSG_ERROR(Cannot find ocamldep.) -fi - -AC_CHECK_PROG(OCAMLLEX,ocamllex,ocamllex,no) -if test "$OCAMLLEX" = no ; then - AC_MSG_ERROR(Cannot find ocamllex.) -else - AC_CHECK_PROG(OCAMLLEXDOTOPT,ocamllex.opt,ocamllex.opt,no) - if test "$OCAMLLEXDOTOPT" != no ; then - OCAMLLEX=$OCAMLLEXDOTOPT - fi -fi - -AC_CHECK_PROG(OCAMLYACC,ocamlyacc,ocamlyacc,no) -if test "$OCAMLYACC" = no ; then - AC_MSG_ERROR(Cannot find ocamlyacc.) -fi - -AC_CHECK_PROG(OCAMLDOC,ocamldoc,ocamldoc,true) -if test "$OCAMLDOC" = true ; then - AC_MSG_WARN(Cannot find ocamldoc) -else - AC_CHECK_PROG(OCAMLDOCOPT,ocamldoc.opt,ocamldoc.opt,no) - if test "$OCAMLDOCOPT" != no ; then - OCAMLDOC=$OCAMLDOCOPT - fi -fi - -AC_CHECK_PROG(OCAMLWEB,ocamlweb,ocamlweb,true) - -AC_CHECK_PROG(OCAMLFIND,ocamlfind,ocamlfind) -if test "$OCAMLFIND" = "" ; then - echo "No ocamlfind detected" -else - OCAMLLIB_BY_FINDLIB=`ocamlfind printconf stdlib | tr -d '\\r' | tr '\\\\' '/'` - if test "$OCAMLLIB_BY_FINDLIB" = "$OCAMLLIB" ; then - echo "OCamlfind detected and enabled" - else - echo "OCamlfind detected but disabled. Standard libraries differ:" - echo " ocamlc: '$OCAMLLIB'" - echo " ocamlfind: '$OCAMLLIB_BY_FINDLIB'" - OCAMLFIND="" - fi -fi - -if test "$OCAMLBEST" = "opt"; then - SUFFIX=cmxa; -else - SUFFIX=cma; -fi - -# checking for lablgtk2 and lablgnomecanvas -########################################### - -# lablgtk2 now uses ocamlfind while older version uses `ocamlc -where ` -# its installation path is not the same -if test "$OCAMLFIND" = "" ; then - LABLGTK_PATH=+lablgtk2 - LABLGTKPATH_FOR_CONFIGURE=$OCAMLLIB/lablgtk2 -else - LABLGTK_PATH=`ocamlfind query lablgtk2 | tr -d '\\r\\n'` - if test "$LABLGTK_PATH" = "" -o "$LABLGTK_PATH" -ef "$OCAMLLIB/lablgtk2" ; \ - then - LABLGTK_PATH=+lablgtk2 - LABLGTKPATH_FOR_CONFIGURE=$OCAMLLIB/lablgtk2 - else - LABLGTKPATH_FOR_CONFIGURE=$LABLGTK_PATH - fi -fi - -AC_CHECK_FILE($LABLGTKPATH_FOR_CONFIGURE/lablgtk.$SUFFIX, - LABLGTK2=yes, - LABLGTK2=no) - -if test "$LABLGTK2" = yes ; then - INCLUDEGTK2="-I $LABLGTK_PATH" - AC_CHECK_FILE($LABLGTKPATH_FOR_CONFIGURE/lablgnomecanvas.$SUFFIX, - LABLGNOMECANVAS=yes, - LABLGNOMECANVAS=no) -else - LABLGTK2=no - LABLGNOMECANVAS=no -fi - -# platform -AC_MSG_CHECKING(Win32 platform) -echo "print_endline Sys.os_type" > check_arch.ml -if ocaml check_arch.ml | grep -q Win32; then - AC_MSG_RESULT(yes) - OCAMLWIN32=yes - EXE=.exe -else - AC_MSG_RESULT(no) - OCAMLWIN32=no - EXE= -fi -rm -f check_arch.ml - -LIBEXT=`ocamlc -config | grep ext_lib | sed -e 's/.*\(\..*\)/\1/' ` -OBJEXT=`ocamlc -config | grep ext_obj | sed -e 's/.*\(\..*\)/\1/' ` - -if test "$LABLGNOMECANVAS" = no ; then - AC_MSG_WARN([lablgnomecanvas not found: the graph editor and view_graph will not be compiled]) -fi - -# substitutions to perform -AC_SUBST(OCAMLC) -AC_SUBST(OCAMLOPT) -AC_SUBST(OCAMLDEP) -AC_SUBST(OCAMLLEX) -AC_SUBST(OCAMLDOC) -AC_SUBST(OCAMLYACC) -AC_SUBST(OCAMLBEST) -AC_SUBST(OCAMLVERSION) -AC_SUBST(OCAMLLIB) -AC_SUBST(OCAMLWEB) -AC_SUBST(LABLGTK2) -AC_SUBST(LABLGNOMECANVAS) -AC_SUBST(OCAMLWIN32) -AC_SUBST(EXE) -AC_SUBST(LIBEXT) -AC_SUBST(OBJEXT) -AC_SUBST(INCLUDEGTK2) -AC_SUBST(NATIVE_DYNLINK) - -# Finally create the Makefile from Makefile.in -AC_OUTPUT(Makefile) -chmod a-w Makefile diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphContainer.ml b/jscomp/build_tests/ocamlgraph/dgraph/dGraphContainer.ml deleted file mode 100755 index a6732bfb91..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphContainer.ml +++ /dev/null @@ -1,478 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -open Graph - -let ($) f x = f x - -type cluster = string -type status = Global | Tree | Both - -(* ABSTRACT CLASS *) - -class type - ['vertex, 'edge, 'cluster, 'tree_vertex, 'tree_edge, 'tree_cluster] - view_container_type = - object - - method global_view : - ('vertex, 'edge, 'cluster) DGraphView.view option - - method tree_view: - ('tree_vertex, 'tree_edge, 'tree_cluster) DGraphView.view option - - method tree_root: 'vertex option - - method depth_backward : int - method depth_forward : int - method status : status - - method set_depth_backward : int -> unit - method set_depth_forward : int -> unit - method set_tree_root: 'vertex -> unit - method switch : status -> unit - - method adapt_zoom: unit -> unit - - end - -module type S = sig - - type graph - type vertex - type edge - - module Tree: Sig.G with type V.label = vertex - - module GView: DGraphView.S with type vertex = vertex - and type edge = edge - and type cluster = cluster - - module TView: DGraphView.S with type vertex = Tree.V.t - and type edge = Tree.E.t - and type cluster = cluster - - type global_view = (vertex, edge, cluster) DGraphView.view - type tree_view = (Tree.V.t, Tree.E.t, cluster) DGraphView.view - - class view_container : - ?packing:(GObj.widget -> unit) - -> ?status:status - -> ?default_callbacks:bool - -> mk_global_view: (unit -> global_view) - -> mk_tree_view: - (depth_backward:int -> depth_forward:int -> Gtk.widget Gtk.obj -> vertex - -> tree_view) - -> vertex option - -> [ vertex, edge, cluster, Tree.V.t, Tree.E.t, cluster] - view_container_type - -end - -(* CONTAINER *) - -let with_commands ?packing mk_view model = - let main_table = GPack.table ~columns:2 ~rows:2 ?packing () in - let view = - let packing w = main_table#attach ~left:0 ~right:2 ~top:1 ~expand:`BOTH w in - mk_view ~packing model - in - (* Buttons box *) - let buttons_box = - GPack.button_box - `HORIZONTAL - ~border_width:3 - ~child_height:10 - ~child_width:85 - ~spacing:10 - ~layout:`START - ~packing:(main_table#attach ~top:0 ~left:0 ~expand:`X) () - in - let view_label = GMisc.label ~markup:"View" () in - buttons_box#pack ~expand:false view_label#coerce; - let add_button label mode = - let b = GButton.button ~label ~packing:buttons_box#pack () in - ignore (b#connect#clicked ~callback:(fun _ -> view#switch mode)) - in - add_button "Global" Global; - add_button "Tree" Tree; - add_button "Both" Both; - - (* Depth of exploration controls *) - let depth_hbox = - GPack.hbox ~packing:(main_table#attach ~expand:`X ~top:0 ~left:1) () - in - let depth_forward_adj = GData.adjustment ~lower:0. ~page_size:0. () in - let depth_backward_adj = GData.adjustment ~lower:0. ~page_size:0. () in - let change_depth_forward adj content () = - content#set_depth_forward (int_of_float adj#value); - in - let change_depth_backward adj content () = - content#set_depth_backward (int_of_float adj#value) - in - ignore $ depth_forward_adj#connect#value_changed - ~callback:(change_depth_forward depth_forward_adj view); - ignore $ depth_backward_adj#connect#value_changed - ~callback:(change_depth_backward depth_backward_adj view); - let depth_label = GMisc.label ~markup:"Depth" () in - let depth_forward_label = GMisc.label ~text:" forward: " () in - let depth_backward_label = GMisc.label ~text:" backward: " () in - let depth_forward_spin = - GEdit.spin_button ~value:2. ~adjustment:depth_forward_adj () - in - let depth_backward_spin = - GEdit.spin_button ~value:2. ~adjustment:depth_backward_adj () - in - depth_hbox#pack ~from:`END depth_backward_spin#coerce; - depth_hbox#pack ~from:`END depth_backward_label#coerce; - depth_hbox#pack ~from:`END depth_forward_spin#coerce; - depth_hbox#pack ~from:`END depth_forward_label#coerce; - depth_hbox#pack ~from:`END depth_label#coerce; - - main_table, view - -(* FROM GRAPH *) - -module HString = struct - type t = string - let equal = (=) - let hash = Hashtbl.hash -end - -module Build - (G: Sig.G) - (T: DGraphTreeModel.S with type Tree.V.label = G.V.t) = -struct - - type graph = G.t - type vertex = G.V.t - type edge = G.E.t - module TreeModel = T - module Tree = T.Tree - - module HE(E: sig type t val compare: t -> t -> int end) = struct - type t = E.t - let equal x y = E.compare x y = 0 - let hash = Hashtbl.hash - end - module GView = DGraphView.Make(G.V)(HE(G.E))(HString) - module TView = DGraphView.Make(Tree.V)(HE(Tree.E))(HString) - - type global_view = (G.V.t, G.E.t, string) DGraphView.view - type tree_view = (Tree.V.t, Tree.E.t, string) DGraphView.view - - class view_container - ?packing - ?(status=Global) - ?(default_callbacks=true) - ~mk_global_view - ~mk_tree_view - default_tree_root - = - - (* widgets *) - let paned_box = GPack.paned `VERTICAL ?packing () in - let global_frame = GBin.frame ~label:"Global View" () in - let tree_frame = GBin.frame ~label:"Tree View" () in - - (* Callback functions *) - let connect_tree_callback view node = - let item = node#item in - let callback ev = - let apply f = match view#global_view with - | None -> false - | Some gview -> - let tree = T.tree () in - let vlist = T.TreeManipulation.get_graph_vertex item tree in - f (gview:global_view) (gview#get_node vlist); - false - in - match ev with - | `BUTTON_PRESS _ -> - (* clicking on a node of the tree view *) - view#set_tree_root (T.Tree.V.label item); - apply (fun v -> v#dehighlight) - | `MOTION_NOTIFY _ -> apply (fun v n -> v#highlight n) - | `LEAVE_NOTIFY _ -> apply (fun v -> v#dehighlight) - | _ -> false - in - node#connect_event ~callback - in - let connect_global_callback view node = - let item = node#item in - let callback ev = - let apply f = match view#tree_view with - | None -> false - | Some tview -> - let tree = T.tree () in - let vlist = T.TreeManipulation.get_tree_vertices item tree in - List.iter (fun v -> f (tview:tree_view) (tview#get_node v)) vlist; - false - in - match ev with - | `BUTTON_PRESS _ -> (* clicking on a node of the global view *) - (* Update the root of the tree view *) - view#set_tree_root node#item; - (* Center the global view on the selected node *) - begin match view#global_view with - | None -> () - | Some w -> w#center_node node - end; - false - | `MOTION_NOTIFY _ -> apply (fun v n -> v#highlight n) - | `LEAVE_NOTIFY _ -> apply (fun v -> v#dehighlight) - |_ -> false - in - node#connect_event ~callback - in - - object (self) - - val mutable global_view: global_view option = None - val mutable tree_view: tree_view option = None - val mutable tree_change = false (* must recompute the tree? *) - val mutable tree_root = default_tree_root - val mutable status = status - val mutable depth_forward = 2 - val mutable depth_backward = 2 - - (* Getters *) - - method status = status - method global_view = global_view - method tree_view = tree_view - method tree_root = tree_root - method depth_forward = depth_forward - method depth_backward = depth_backward - - (* Setters *) - - method set_depth_forward i = - depth_forward <- i; - tree_change <- true; - self#update () - - method set_depth_backward i = - depth_backward <- i; - tree_change <- true; - self#update () - - method set_tree_root v = - tree_root <- Some v; - tree_change <- true; - - self#update () - - method switch s = - status <- s; - self#update () - - (* Compute the views *) - - method private memo_tree_view () = - if tree_change then begin - (match tree_view with - | None -> () - | Some view -> - match view#misc#parent with - | Some parent -> tree_frame#remove parent - | None -> () - ); - match tree_root with - | None -> assert false - | Some r -> - let view = - mk_tree_view ~depth_backward ~depth_forward paned_box#as_widget r - in - tree_view <- Some view; - if default_callbacks then begin - view#connect_highlighting_event(); - view#iter_nodes (connect_tree_callback self); - end; - let scroll = - GBin.scrolled_window - ~hpolicy:`AUTOMATIC - ~vpolicy:`AUTOMATIC - ~packing:tree_frame#add - () - in - scroll#add view#coerce - end - - method private memo_global_view () = match global_view with - | None -> - let view = mk_global_view () in - global_view <- Some view; - if default_callbacks then begin - view#connect_highlighting_event (); - view#iter_nodes (connect_global_callback self); - end; - let scroll = - GBin.scrolled_window - ~hpolicy:`AUTOMATIC - ~vpolicy:`AUTOMATIC - ~packing:global_frame#add - () - in - scroll#add view#coerce - | Some _ -> - () - - method adapt_zoom () = - let az = function - | None -> () - | Some w -> w#adapt_zoom () - in - az tree_view; - az global_view - - method private add_global_view () = - self#memo_global_view (); - paned_box#pack1 global_frame#coerce - - method private add_tree_view () = - self#memo_tree_view (); - paned_box#pack2 tree_frame#coerce - - method private update () = - List.iter paned_box#remove paned_box#all_children; - (match status, tree_root with - | Global, _ | _, None -> self#add_global_view () - | Tree, Some _ -> self#add_tree_view () - | Both, Some _ -> self#add_global_view (); self#add_tree_view ()) - - initializer - self#update () - - end - -end - -module Make(G: Graphviz.GraphWithDotAttrs) = struct - - module FullTreeModel = DGraphTreeModel.SubTreeMake(G) - include Build(G)(FullTreeModel) - module GlobalModel = DGraphModel.Make(G) - - let from_graph - ?packing - ?status - ?(default_callbacks=true) - ?(mk_global_view = fun model -> GView.view ~aa:true model) - ?(mk_tree_view = fun model -> TView.view ~aa:true model) - ?root - g = - let status = match status with - | None -> - if G.nb_vertex g < 500 && G.nb_edges g < 2500 then Global else Tree - | Some s -> s - in - new view_container - ?packing - ~default_callbacks - ~status - ~mk_global_view:(fun () -> mk_global_view (GlobalModel.from_graph g)) - ~mk_tree_view:(fun ~depth_backward ~depth_forward w v -> - let model = - FullTreeModel.from_graph ~depth_forward ~depth_backward w g v - in - mk_tree_view model) - root - - let from_graph_with_commands ?packing ?status ?(default_callbacks=true) ?mk_global_view ?mk_tree_view ?root g = - with_commands - ?packing - (fun ~packing g -> - from_graph - ~packing ?status ~default_callbacks ?mk_global_view ?mk_tree_view - ?root g) - g - -end - -(* FROM DOT *) - -module Dot = struct - - include Build(DGraphModel.DotG)(DGraphTreeModel.SubTreeDotModelMake) - - exception Found of DGraphModel.DotG.V.t - - let from_dot - ?packing - ?status - ?(default_callbacks=true) - ?(mk_global_view = fun model -> GView.view ~aa:true model) - ?(mk_tree_view = fun model -> TView.view ~aa:true model) - dot_file = - let gmodel = - if Filename.check_suffix dot_file "xdot" then - DGraphModel.read_xdot dot_file - else - DGraphModel.read_dot dot_file - in - let one_vertex = - try - gmodel#iter_vertex (fun v -> raise (Found v)); - None - with Found v -> - Some v - in - let status = match status with - | None -> - let nb f = - let cpt = ref 0 in - f gmodel (fun _ -> incr cpt); - !cpt - in - if nb (fun g -> g#iter_vertex) < 500 - && nb (fun g -> g#iter_edges_e) < 2500 - then Global - else Tree - | Some s -> s - in - new view_container - ?packing - ~status - ~default_callbacks - ~mk_global_view:(fun () -> mk_global_view gmodel) - ~mk_tree_view:(fun ~depth_backward ~depth_forward _ v -> - mk_tree_view - (DGraphTreeModel.SubTreeDotModelMake.from_model - ~depth_forward - ~depth_backward - gmodel - v)) - one_vertex - - let from_dot_with_commands ?packing ?status ?(default_callbacks=true) ?mk_global_view ?mk_tree_view dot_file = - with_commands - ?packing - (fun ~packing d -> - from_dot - ~packing ?status ~default_callbacks ?mk_global_view ?mk_tree_view d) - dot_file - -end diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphContainer.mli b/jscomp/build_tests/ocamlgraph/dgraph/dGraphContainer.mli deleted file mode 100755 index 47f0a76313..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphContainer.mli +++ /dev/null @@ -1,155 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -open Graph - -type cluster = string - -type status = Global | Tree | Both - -class type - ['vertex, 'edge, 'cluster, 'tree_vertex, 'tree_edge, 'tree_cluster] - view_container_type = - object - - method global_view : - ('vertex, 'edge, 'cluster) DGraphView.view option - - method tree_view: - ('tree_vertex, 'tree_edge, 'tree_cluster) DGraphView.view option - - method tree_root: 'vertex option - - method depth_backward : int - method depth_forward : int - method status : status - - method set_depth_backward : int -> unit - method set_depth_forward : int -> unit - method set_tree_root: 'vertex -> unit - method switch : status -> unit - - method adapt_zoom: unit -> unit - end - -module type S = sig - - type graph - type vertex - type edge - - module Tree: Sig.G with type V.label = vertex - - module GView: DGraphView.S with type vertex = vertex - and type edge = edge - and type cluster = cluster - - module TView: DGraphView.S with type vertex = Tree.V.t - and type edge = Tree.E.t - and type cluster = cluster - - type global_view = (vertex, edge, cluster) DGraphView.view - type tree_view = (Tree.V.t, Tree.E.t, cluster) DGraphView.view - - class view_container : - ?packing:(GObj.widget -> unit) - -> ?status:status - -> ?default_callbacks:bool (* register default node callbacks (centering - and highlighting). True by default *) - -> mk_global_view: (unit -> global_view) - -> mk_tree_view: - (depth_backward:int -> depth_forward:int -> Gtk.widget Gtk.obj -> vertex - -> tree_view) - -> vertex option - -> [ vertex, edge, cluster, Tree.V.t, Tree.E.t, cluster] - view_container_type - -end - -module Make(G: Graphviz.GraphWithDotAttrs) : sig - - include S with type graph = G.t and type vertex = G.V.t and type edge = G.E.t - - val from_graph : - ?packing:(GObj.widget -> unit) - -> ?status:status - -> ?default_callbacks:bool - -> - ?mk_global_view: - ((G.V.t, G.E.t, cluster) DGraphModel.abstract_model -> global_view) - -> - ?mk_tree_view: - ((Tree.V.t, Tree.E.t, cluster) DGraphModel.abstract_model -> tree_view) - -> ?root:G.vertex - -> G.t - -> view_container - - val from_graph_with_commands : - ?packing:(GObj.widget -> unit) - -> ?status:status - -> ?default_callbacks:bool - -> - ?mk_global_view: - ((G.V.t, G.E.t, cluster) DGraphModel.abstract_model -> global_view) - -> - ?mk_tree_view: - ((Tree.V.t, Tree.E.t, cluster) DGraphModel.abstract_model -> tree_view) - -> ?root:G.vertex - -> G.t - -> GPack.table * view_container - -end - -module Dot : sig - - open DGraphModel - - include S with type graph = DotG.t - and type vertex = DotG.V.t - and type edge = DotG.E.t - - val from_dot : - ?packing:(GObj.widget -> unit) - -> ?status:status - -> ?default_callbacks:bool - -> ?mk_global_view: - ((DotG.V.t, DotG.E.t, cluster) abstract_model -> global_view) - -> ?mk_tree_view: - ((Tree.V.t, Tree.E.t, cluster) abstract_model -> tree_view) - -> string (* dot filename *) - -> view_container - - val from_dot_with_commands : - ?packing:(GObj.widget -> unit) - -> ?status:status - -> ?default_callbacks:bool - -> ?mk_global_view: - ((DotG.V.t, DotG.E.t, cluster) abstract_model -> global_view) - -> ?mk_tree_view: - ((Tree.V.t, Tree.E.t, cluster) abstract_model -> tree_view) - -> string (* dot filename *) - -> GPack.table * view_container - -end diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphMake.ml b/jscomp/build_tests/ocamlgraph/dgraph/dGraphMake.ml deleted file mode 100755 index ed59d8b6a2..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphMake.ml +++ /dev/null @@ -1,31 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -open Graph -open XDot -open Printf - -exception DotError of string - diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphModel.ml b/jscomp/build_tests/ocamlgraph/dgraph/dGraphModel.ml deleted file mode 100755 index 006355b5d1..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphModel.ml +++ /dev/null @@ -1,222 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -(* This graph model is for now immutable, no adding or removing nodes. *) - -open Graph -open XDot - -exception DotError of string - -(* ABSTRACT CLASS *) - -class type ['vertex, 'edge, 'cluster] abstract_model = object - method iter_edges : ('vertex -> 'vertex -> unit) -> unit - method iter_edges_e : ('edge -> unit) -> unit - method iter_pred : ('vertex -> unit) -> 'vertex -> unit - method iter_pred_e : ('edge -> unit) -> 'vertex -> unit - method iter_succ : ('vertex -> unit) -> 'vertex -> unit - method iter_succ_e : ('edge -> unit) -> 'vertex -> unit - method iter_vertex : ('vertex -> unit) -> unit - method iter_clusters : ('cluster -> unit) -> unit - method iter_associated_vertex : ('vertex -> unit) -> 'vertex -> unit - - - (** Membership functions *) - method find_edge : 'vertex -> 'vertex -> 'edge - method mem_edge : 'vertex -> 'vertex -> bool - method mem_edge_e : 'edge -> bool - method mem_vertex : 'vertex -> bool - method src : 'edge -> 'vertex - method dst : 'edge -> 'vertex - - (** Dot layout *) - method bounding_box : bounding_box - method get_edge_layout : 'edge -> edge_layout - method get_vertex_layout : 'vertex -> node_layout - method get_cluster_layout : 'cluster -> cluster_layout -end - -(* BUILDING A MODEL WITH AN OCAML GRAPH *) - -module Make(G : Graphviz.GraphWithDotAttrs) = struct - - type cluster = string - module X = XDot.Make(G) - - class model layout g : [G.vertex, G.edge, cluster] abstract_model = object - - (* Iterators *) - method iter_edges f = G.iter_edges f g - method iter_edges_e f = G.iter_edges_e f g - method iter_pred f v = G.iter_pred f g v - method iter_pred_e f v = G.iter_pred_e f g v - method iter_succ f = G.iter_succ f g - method iter_succ_e f = G.iter_succ_e f g - method iter_vertex f = G.iter_vertex f g - method iter_associated_vertex f v = f v - method iter_clusters f = - Hashtbl.iter (fun k _ -> f k) layout.X.cluster_layouts - - (* Membership functions *) - method find_edge = try G.find_edge g with Not_found -> assert false - method mem_edge = G.mem_edge g - method mem_edge_e = G.mem_edge_e g - method mem_vertex = G.mem_vertex g - method src = G.E.src - method dst = G.E.dst - - (* Layout *) - method bounding_box = layout.X.bbox - - method get_vertex_layout v = - try X.HV.find layout.X.vertex_layouts v - with Not_found -> assert false - - method get_edge_layout e = - try X.HE.find layout.X.edge_layouts e - with Not_found -> assert false - - method get_cluster_layout c = - try Hashtbl.find layout.X.cluster_layouts c - with Not_found -> assert false - - end - - let from_graph ?(cmd="dot") ?(tmp_name = "dgraph") g = - (* Output dot file *) - let module DumpDot = Graphviz.Dot(G) in - let dot_file, out = Filename.open_temp_file tmp_name ".dot" in - DumpDot.output_graph out g; - close_out out; - (* Get layout from dot file *) - let layout = - try - X.layout_of_dot ~cmd ~dot_file g - with X.DotError err -> raise (DotError err) - in - let model = new model layout g in - Sys.remove dot_file; - model - -end - -(* BUILDING A MODEL WITH A DOT FILE *) - -(* Here we build a model from a graph where vertices and edges - are labeled with xdot layouts *) - -module Vertex = struct - type t = XDot.node_layout -end - -module Edge = struct - type t = XDot.edge_layout - let default = XDot.mk_edge_layout - ~draw:[] ~ldraw:[] ~hdraw:[] ~tdraw:[] ~hldraw:[] ~tldraw:[] - let compare : t -> t -> int = Pervasives.compare -end - -module DotG = Imperative.Digraph.AbstractLabeled(Vertex)(Edge) -module DotB = Builder.I(DotG) - -type cluster = string -type dotg_model = (DotG.vertex, DotG.edge, cluster) abstract_model - -module DotParser = - Dot.Parse - (DotB) - (struct - (* Read the attributes of a node *) - let node = XDot.read_node_layout - - (* Read edge attributes *) - let edge = XDot.read_edge_layout - - end) - -module DotModel = struct - type cluster = string - class model g clusters_hash bounding_box - : [DotG.vertex, DotG.edge, cluster] abstract_model - = - object - (* Iterators *) - method iter_edges f = DotG.iter_edges f g - method iter_edges_e f = DotG.iter_edges_e f g - method iter_pred f v = DotG.iter_pred f g v - method iter_pred_e f v = DotG.iter_pred_e f g v - method iter_succ f = DotG.iter_succ f g - method iter_succ_e f = DotG.iter_succ_e f g - method iter_vertex f = DotG.iter_vertex f g - method iter_associated_vertex f v = f v - method iter_clusters f = Hashtbl.iter (fun k _ -> f k) clusters_hash - - (* Membership functions *) - method find_edge = try DotG.find_edge g with Not_found -> assert false - method mem_edge = DotG.mem_edge g - method mem_edge_e = DotG.mem_edge_e g - method mem_vertex = DotG.mem_vertex g - method src = DotG.E.src - method dst = DotG.E.dst - - (* Layout *) - method bounding_box = bounding_box - method get_vertex_layout = DotG.V.label - method get_edge_layout = DotG.E.label - method get_cluster_layout c = - let attrs = - try Hashtbl.find clusters_hash c with Not_found -> assert false - in - XDot.read_cluster_layout attrs - end - - let model = new model -end - -(* Runs graphviz, parses the graph and instantiates the model *) -let read_dot ?(cmd="dot") dot_file = - let basename = try Filename.chop_extension dot_file - with Invalid_argument _ -> dot_file in - let xdot_file = basename ^ ".xdot" in - let dot_cmd = Printf.sprintf "%s -Txdot %s > %s" cmd dot_file xdot_file in - - (* Run graphviz *) - match Sys.command dot_cmd with - | 0 -> begin - let graph, bb, clusters_hash = - DotParser.parse_bounding_box_and_clusters xdot_file in - DotModel.model graph clusters_hash (XDot.read_bounding_box bb) - end - | _ -> raise (DotError "Error during dot execution") - -(* Does not run graphviz. - Parses a graph from an xdot file and instantiates the model. *) -let read_xdot xdot_file = - let graph, bb, clusters_hash = - DotParser.parse_bounding_box_and_clusters xdot_file - in - DotModel.model graph clusters_hash (XDot.read_bounding_box bb) - diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphModel.mli b/jscomp/build_tests/ocamlgraph/dgraph/dGraphModel.mli deleted file mode 100755 index c422ad778c..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphModel.mli +++ /dev/null @@ -1,89 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -(** Abstract graph model *) - -open XDot -open Graph - -exception DotError of string - -(** Immutable graph model. - Layout accessors, iterators and - membership functions. *) -class type ['vertex, 'edge, 'cluster] abstract_model = object - method iter_edges : ('vertex -> 'vertex -> unit) -> unit - method iter_edges_e : ('edge -> unit) -> unit - method iter_pred : ('vertex -> unit) -> 'vertex -> unit - method iter_pred_e : ('edge -> unit) -> 'vertex -> unit - method iter_succ : ('vertex -> unit) -> 'vertex -> unit - method iter_succ_e : ('edge -> unit) -> 'vertex -> unit - method iter_vertex : ('vertex -> unit) -> unit - method iter_clusters : ('cluster -> unit) -> unit - method iter_associated_vertex : ('vertex -> unit) -> 'vertex -> unit - - (** Membership functions *) - method find_edge : 'vertex -> 'vertex -> 'edge - method mem_edge : 'vertex -> 'vertex -> bool - method mem_edge_e : 'edge -> bool - method mem_vertex : 'vertex -> bool - method src : 'edge -> 'vertex - method dst : 'edge -> 'vertex - - (** Dot layout *) - method bounding_box : bounding_box - method get_edge_layout : 'edge -> edge_layout - method get_vertex_layout : 'vertex -> node_layout - method get_cluster_layout : 'cluster -> cluster_layout -end - -(** This functor creates a model from a graph *) -module Make(G : Graph.Graphviz.GraphWithDotAttrs) : sig - - type cluster = string - - class model: - XDot.Make(G).graph_layout -> G.t -> [G.V.t, G.E.t, cluster] abstract_model - - val from_graph : ?cmd:string -> ?tmp_name:string -> G.t -> model - (** Creates a model using graphviz. - [tmp_name] is the name of the temporary dot files. - @raise DotError if issue occurs with the generated dot file *) - -end - - -module DotG : Sig.G - with type V.label = XDot.node_layout and type E.label = XDot.edge_layout - - -type cluster = string -type dotg_model = (DotG.vertex, DotG.edge, cluster) abstract_model - -(** Creates a model from a dot file. *) -val read_dot : ?cmd:string -> string -> dotg_model - -(** Creates a model from an xdot file (the layout is not recomputed)*) -val read_xdot : string -> dotg_model diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphRandModel.ml b/jscomp/build_tests/ocamlgraph/dgraph/dGraphRandModel.ml deleted file mode 100755 index 73695a785e..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphRandModel.ml +++ /dev/null @@ -1,78 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -open Graph - -let element = function - | [] -> invalid_arg "empty list in element" - | l -> - Random.self_init (); - List.nth l (Random.int (List.length l)) - -let black = 0x000000 -and white = 0xFFFFFF -and red = 0xFF0000 -and green = 0x00FF00 -and blue = 0x0000FF -and yellow = 0xFFFF00 -and cyan = 0x00FFFF -and magenta = 0xFF00FF - -module Vertex = struct - type t = int -end - -module Edge = struct - type t = int - let compare : int -> int -> int = Pervasives.compare - let default = 0 -end - -module G = Imperative.Digraph.AbstractLabeled(Vertex)(Edge) -module R = Rand.I(G) - -module GraphAttrs = struct - include G - let graph_attributes _ = [] - let default_vertex_attributes _ = [] - let vertex_name v = string_of_int (G.V.label v) - let vertex_attributes _ = - let shape = element [`Ellipse; `Box; `Circle; `Doublecircle; `Diamond] in - let color = element [black; white; red; green; blue; yellow; cyan; magenta] in - [`Shape shape; `Color color] - let default_edge_attributes _ = [] - let edge_attributes _ = [] - let get_subgraph _ = None -end - -module Model = DGraphModel.Make(GraphAttrs) - -let create () = - (* State *) - Random.self_init (); - let v = 100 in - let e = Random.int (v*2) in - let g = R.graph ~loops:true ~v ~e () in - Model.from_graph g diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphRandModel.mli b/jscomp/build_tests/ocamlgraph/dgraph/dGraphRandModel.mli deleted file mode 100755 index 26dce3c5a9..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphRandModel.mli +++ /dev/null @@ -1,33 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -module G: Graph.Sig.G - -module GraphAttrs: - Graph.Graphviz.GraphWithDotAttrs with type t = G.t - and type V.t = G.V.t - and type E.t = G.E.t - -val create: unit -> DGraphModel.Make(GraphAttrs).model diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphSubTree.ml b/jscomp/build_tests/ocamlgraph/dgraph/dGraphSubTree.ml deleted file mode 100755 index 1987fc7ca2..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphSubTree.ml +++ /dev/null @@ -1,292 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -open Graph - -module type G = sig - type t - module V : sig - type t - type label - val label : t -> label - val hash : t -> int - val equal : t -> t -> bool - end - module E : sig - type t - end - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - val iter_pred : (V.t -> unit) -> t -> V.t -> unit - val find_edge : t -> V.t -> V.t -> E.t -end - -module type Tree = sig - type t - module V : sig - type t - type label - val create : label -> t - val label : t -> label - val hash: t -> int - val equal: t -> t -> bool - end - module E : Sig.EDGE with type vertex = V.t - val create : ?size:int -> unit -> t - val add_vertex : t -> V.t -> unit - val add_edge_e : t -> E.t -> unit -end - -module type S = sig - - module Tree: Tree with type E.label = unit - type t - val get_structure : t -> Tree.t - val get_root : t -> Tree.V.t - val get_tree_vertices : Tree.V.label -> t -> Tree.V.t list - val is_ghost_node : Tree.V.t -> t -> bool - val is_ghost_edge : Tree.E.t -> t -> bool - exception Ghost_node - val get_graph_vertex : Tree.V.t -> t -> Tree.V.label - -end - -module Build - (G : G) - (Tree : Tree with type V.label = G.V.t and type E.label = unit) - (GA: sig - type t - val iter_succ: (G.V.t -> unit) -> t -> G.V.t -> unit - val iter_pred: (G.V.t -> unit) -> t -> G.V.t -> unit - end) = -struct - - module Tree = Tree - module H = Hashtbl.Make(G.V) - module HT = Hashtbl.Make(Tree.V) - module HE = - Hashtbl.Make - (struct - type t = Tree.E.t - let equal x y = Tree.E.compare x y = 0 - let hash = Hashtbl.hash - end) - - type t = { - structure: Tree.t; (* the tree itself *) - root : Tree.V.t; (* the root *) - (* nodes of the tree corresponding to the original nodes *) - assoc_vertex_table: Tree.V.t H.t; - - ghost_vertices: unit HT.t; - ghost_edges: unit HE.t; - } - - (* Getter *) - let get_structure t = t.structure;; - let get_root t = t.root;; - - (** Give the list of vertices in the tree graph representing a vertex - from the old graph *) - let get_tree_vertices vertex tree = - try H.find_all tree.assoc_vertex_table vertex - with Not_found -> assert false;; - - (** True if the vertex is not to be shown *) - let is_ghost_node v tree = HT.mem tree.ghost_vertices v;; - - (** True if the edge is not to be shown *) - let is_ghost_edge e tree = HE.mem tree.ghost_edges e;; - - exception Ghost_node;; - - (** Give the old graph vertex represented by a vertex in the tree - - @raise Ghost_node if the vertex is a ghost vertex *) - let get_graph_vertex vertex tree = - if is_ghost_node vertex tree then raise Ghost_node - else Tree.V.label vertex;; - - (* Explore the graph from a vertex and build a tree - - Will be used forward and backward *) - let build src_graph tree src_vertex tree_root backward_flag depth = - let complete_to_depth v missing = - let pred_vertex = ref v in - let next_vertex = ref v in - for _i = 1 to missing - 1 do - next_vertex := Tree.V.create (Tree.V.label v); - HT.add tree.ghost_vertices !next_vertex (); - let new_ghost_edge = - if backward_flag then Tree.E.create !next_vertex () !pred_vertex - else Tree.E.create !pred_vertex () !next_vertex - in Tree.add_edge_e tree.structure new_ghost_edge; - HE.add tree.ghost_edges new_ghost_edge (); - pred_vertex := !next_vertex; - done - in - let has_succ = ref false in - let vertex_visited = H.create 97 in - let queue = Queue.create () in - H.add vertex_visited src_vertex true; - (* Initialize queue *) - if depth <> 0 then - if backward_flag then - GA.iter_pred - (fun a -> Queue.add (a, tree_root, depth) queue) - src_graph - src_vertex - else - GA.iter_succ - (fun a -> Queue.add (a, tree_root, depth) queue) - src_graph - src_vertex; - (* Empty queue *) - let rec empty_queue () = - if not(Queue.is_empty queue) then begin - let vertex, origin_vertex, depth = Queue.take queue in - if depth > 0 then begin - let new_vertex = Tree.V.create vertex in - H.add tree.assoc_vertex_table vertex new_vertex; - if backward_flag then begin - let new_edge = Tree.E.create new_vertex () origin_vertex in - Tree.add_edge_e tree.structure new_edge - end else begin - let new_edge = Tree.E.create origin_vertex () new_vertex in - Tree.add_edge_e tree.structure new_edge - end; - if not(H.mem vertex_visited vertex) then begin - H.add vertex_visited vertex true; - let iter f = - f - (fun a -> - Queue.add (a, new_vertex, depth - 1) queue; - has_succ := true) - src_graph - vertex - in - if backward_flag then iter GA.iter_pred else iter GA.iter_succ; - if not !has_succ then complete_to_depth new_vertex depth; - has_succ := false; - end else if depth <> 1 then begin - if backward_flag then - GA.iter_pred (fun _ -> has_succ := true) src_graph vertex - else - GA.iter_succ (fun _ -> has_succ := true) src_graph vertex; - if !has_succ then begin - let ghost_vertex = Tree.V.create vertex in - HT.add tree.ghost_vertices ghost_vertex (); - let new_edge = - if backward_flag then Tree.E.create ghost_vertex () new_vertex - else Tree.E.create new_vertex () ghost_vertex - in Tree.add_edge_e tree.structure new_edge; - complete_to_depth ghost_vertex (depth-1) - end else - complete_to_depth new_vertex depth; - has_succ := false; - end - end; - empty_queue () - end - in - empty_queue () - (* [JS 2010/11/10] trying to simplify the algorithm. Not finish yet - let new_build graph tree root troot depth backward = - let first = ref true in - let q = Queue.create () in - (* invariant: [h] contains exactly the vertices which have been pushed *) - let must_add_ghost = ref true in - let add_tree_vertex v = - let tv = if !first then troot else Tree.V.create v in - first := false; - Tree.add_vertex tree.structure tv; - H.add tree.assoc_vertex_table v tv; - tv - in - let add_tree_edge tsrc dst = - let tdst = add_tree_vertex dst in - let tsrc, tdst = if backward then tdst, tsrc else tsrc, tdst in - let e = Tree.E.create tsrc () tdst in - Tree.add_edge_e tree.structure e; - tdst, e - in - let push n src dst = - if n < depth then Queue.add (dst, n + 1) q; - ignore (add_tree_edge src dst); - must_add_ghost := false - in - let loop () = - while not (Queue.is_empty q) do - let v, n = Queue.pop q in - let tv = add_tree_vertex v in - must_add_ghost := true; - (if backward then GA.iter_pred else GA.iter_succ) (push n tv) graph v; - if !must_add_ghost then - let tsrc = ref tv in - for i = n to depth do - let tdst, te = add_tree_edge !tsrc v in - HT.add tree.ghost_vertices tdst (); - HE.add tree.ghost_edges te (); - tsrc := tdst - done - done - in - Queue.add (root, 0) q; - loop () - *) - (** Build a tree graph centered on a vertex and containing its - predecessors and successors *) - let make src_graph src_vertex depth_forward depth_backward = - let tree = { - structure = Tree.create (); - root = Tree.V.create src_vertex; - assoc_vertex_table = H.create 97; - ghost_vertices = HT.create 17; - ghost_edges = HE.create 17; - } - in - H.add tree.assoc_vertex_table src_vertex tree.root; - Tree.add_vertex tree.structure tree.root; - build src_graph tree src_vertex tree.root false depth_forward; - build src_graph tree src_vertex tree.root true depth_backward; - (* new_build src_graph tree src_vertex tree.root depth_forward false; - new_build src_graph tree src_vertex tree.root depth_backward true;*) - tree - -end - -module Make - (G : G) - (Tree : Tree with type V.label = G.V.t and type E.label = unit) = - Build(G)(Tree)(G) - -module Make_from_dot_model - (Tree : Tree with type V.label = DGraphModel.DotG.V.t - and type E.label = unit) = - Build - (DGraphModel.DotG) - (Tree) - (struct - type t = DGraphModel.dotg_model - let iter_succ f g = g#iter_succ f - let iter_pred f g = g#iter_pred f - end) diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphSubTree.mli b/jscomp/build_tests/ocamlgraph/dgraph/dGraphSubTree.mli deleted file mode 100755 index c24fd9b7a6..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphSubTree.mli +++ /dev/null @@ -1,92 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -open Graph - -module type G = sig - type t - module V : sig - type t - type label - val label : t -> label - val hash : t -> int - val equal : t -> t -> bool - end - module E : sig - type t - end - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - val iter_pred : (V.t -> unit) -> t -> V.t -> unit - val find_edge : t -> V.t -> V.t -> E.t -end - -module type Tree = sig - type t - module V : sig - type t - type label - val create : label -> t - val label : t -> label - val hash : t -> int - val equal : t -> t -> bool - end - module E : Sig.EDGE with type vertex = V.t - val create : ?size:int -> unit -> t - val add_vertex : t -> V.t -> unit - val add_edge_e : t -> E.t -> unit -end - -module type S = sig - - module Tree: Tree with type E.label = unit - type t - val get_structure : t -> Tree.t - val get_root : t -> Tree.V.t - val get_tree_vertices : Tree.V.label -> t -> Tree.V.t list - val is_ghost_node : Tree.V.t -> t -> bool - val is_ghost_edge : Tree.E.t -> t -> bool - exception Ghost_node - val get_graph_vertex : Tree.V.t -> t -> Tree.V.label - -end - -module Make - (G : G) - (Tree : Tree with type V.label = G.V.t and type E.label = unit) : -sig - include S with module Tree = Tree - val make : G.t -> G.V.t -> int -> int -> t -end - -module Make_from_dot_model - (Tree : Tree with type V.label = DGraphModel.DotG.V.t - and type E.label = unit) : -sig - include S with module Tree = Tree - val make: - (Tree.V.label, DGraphModel.DotG.E.t, string) DGraphModel.abstract_model -> - Tree.V.label -> int -> int -> t -end - diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphTreeLayout.ml b/jscomp/build_tests/ocamlgraph/dgraph/dGraphTreeLayout.ml deleted file mode 100755 index 805c4d6662..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphTreeLayout.ml +++ /dev/null @@ -1,973 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -open Graph - -let set_if_none field value = match field with - | None -> Some value - | Some a -> Some a - -let the = function None -> assert false | Some a -> a - -type cluster = string - -module Build - (G: Graphviz.GraphWithDotAttrs) - (TreeManipulation: sig val is_ghost_node: G.V.t -> bool end) = -struct - - module Layout = struct - include XDot.Make(G) - open XDot - type t = graph_layout = - { vertex_layouts : node_layout HV.t; - edge_layouts : edge_layout HE.t; - cluster_layouts : (string, cluster_layout) Hashtbl.t; - bbox : bounding_box } - end - open Layout - - type geometry_info = { - dimensions : (float * float) HV.t; - position : (float * float) HV.t; - mutable x_offset : float; - mutable y_offset : int; - } - - let get_position v geometry_info = - try HV.find geometry_info.position v - with Not_found -> assert false - - let get_dimensions v geometry_info = - try HV.find geometry_info.dimensions v - with Not_found -> assert false - - let set_offset geometry_info = - geometry_info.y_offset <- 150; - geometry_info.x_offset <- - HV.fold (fun _ (w, _) maxw -> max w maxw) - geometry_info.dimensions 0. - - (* Calculate node positions for a tree *) - let fill_tree_positions tree root iter_fun fold_fun table geometry_info = - let vertex_x_space = 10. in - let stack = Stack.create () in - let fill_stack tree root = - let stack_queue = Queue.create () in - let rec flush_queue queue = - if not(Queue.is_empty queue) then begin - let elem, depth = Queue.take queue in - iter_fun (fun v -> Queue.add (v, depth + 1) queue) tree elem; - Stack.push (elem,depth) stack; - flush_queue queue - end - in - Queue.add (root, 0) stack_queue; - flush_queue stack_queue; - in - fill_stack tree root; - let offset = ref geometry_info.x_offset in - let max_depth = snd (Stack.top stack) in - let rec flush_stack stack = - if not (Stack.is_empty stack) then begin - let elem, depth = Stack.pop stack in - if depth = max_depth then begin - HV.add table elem (!offset, depth); - offset := !offset +. geometry_info.x_offset +. vertex_x_space; - end else begin - let sum, cpt = - fold_fun - (fun v (sum, cpt) -> - let (x, _) = - try HV.find table v with Not_found -> assert false - in - sum +. x, cpt +. 1.) - tree - elem - (0., 0.) - in - assert (cpt <> 0.); - HV.add table elem (sum /. cpt, depth) - end; - flush_stack stack - end - in - flush_stack stack - - (* Bind two tree position tables together *) - let bind_tree_tables forward_table backward_table root geometry_info = - (* Using dimension is required in order to be put at the middle of the - canvas.*) - let max_fwd, max_dim_fwd = - HV.fold - (fun v (_, y) (max_y, max_dimy as acc) -> - if TreeManipulation.is_ghost_node v then acc - else (*max y max_y*) - if y < max_y then acc - else - let _, dimy = get_dimensions v geometry_info in - (*[BM] why 1.5? *) - let dimy = dimy *. 1.5 in - y, if y = max_y then max max_dimy dimy else dimy) - forward_table - (0, 0.) - in - HV.iter - (fun v (x, y) ->(*[BM]: why 0.5 and 1.5 ??? *) - HV.add - geometry_info.position - v - (x, ((float (max_fwd + y)) -. 0.5) *. float geometry_info.y_offset - -. 1.5 *. max_dim_fwd)) - backward_table; - HV.iter - (fun v (x, y) ->(*[BM]: why 0.5 and 1.5 ??? *) - HV.add - geometry_info.position - v - (x, ((float (max_fwd - y)) -. 0.5) *. float geometry_info.y_offset - -. 1.5 *. max_dim_fwd)) - forward_table; - HV.remove geometry_info.position root - - (* DRAW OPERATIONS *) - - (* Convert an int in hexadecimal representing a color in rgb format to a - string prefixed by # *) - let string_color i = Printf.sprintf "#%06X" i;; - let string_color32 i = Printf.sprintf "#%08lX" i;; - - (** @return an array of positions to draw an edge from positions and - dimensions of vertices *) - let edge_to_posarray src dst geometry_info = - let xsrc, ysrc = get_position src geometry_info in - let _, hsrc = get_dimensions src geometry_info in - let xdst, ydst = get_position dst geometry_info in - let _, hdst = get_dimensions dst geometry_info in - let ystart = ysrc -. hsrc/.2. and yend = ydst +. hdst/. 2. in - (* Bezier intermediate points. *) - let xdec = (xdst -. xsrc)/.4.0 in - let ydec = (ydst -. ysrc)/.4.0 in - (* Format.printf "%f %f %f@." ystart yend ydec;*) - [| xsrc, ystart; - xsrc +. xdec, ystart +. ydec; - xdst -. xdec, yend -. ydec; - xdst, yend |];; - - (** @return an array to draw an arrow from start and end positions of the - edge *) - let edge_to_arrow (x1, y1) (x2, y2) = - let warrow = 4. in (* Half-width of the arrow *) - let harrow = 10. in (* Height of the arrow *) - let dx = x2 -. x1 in - let dy = y1 -. y2 in - let d = sqrt (dx *. dx +. dy *. dy) in - let xp1 = -. (harrow *. dx +. warrow *. dy) /. d +. x2 in - let yp1 = (harrow *. dy -. warrow *. dx) /. d +. y2 in - let xp2 = (warrow *. dy -. harrow *. dx) /. d +. x2 in - let yp2 = (warrow *. dx +. harrow *. dy) /. d +. y2 in - [ XDotDraw.Filled_polygon [| x2, y2; xp1, yp1; xp2, yp2 |] ] - -end - -(* FROM GRAPH *) - -module Make - (Tree: Graphviz.GraphWithDotAttrs) - (TreeManipulation: sig val is_ghost_node: Tree.V.t -> bool end) = -struct - - include Build(Tree)(TreeManipulation) - open Layout - - (* PARSE VERTICES ATTRIBUTES *) - - type vattributes = { - (* See graphviz.mli for the meaning of each options *) - mutable color : int32 option; - mutable fontcolor : int option; - mutable fontname : string option; - mutable fontsize : int option; - mutable height : float option; - mutable label : string option; - mutable html_label : string option; - mutable orientation : float option; - mutable peripheries : int option; - mutable regular : bool option; - mutable shape : [ `Ellipse | `Box | `Circle | `Doublecircle | `Diamond - | `Oval | `Egg | `Triangle | `Invtriangle - | `Trapezium | `Invtrapezium - | `House | `Invhouse - | `Oval | `Egg | `Triangle | `Invtriangle - | `Trapezium | `Invtrapezium - | `House | `Invhouse - | `Parallelogram | `Doubleoctagon | `Tripleoctagon - | `Mdiamond | `Mcircle | `Msquare - | `Star | `Underline - | `Note | `Tab | `Folder - | `Box3d | `Component | `Promoter - | `Cds - | `Terminator | `Utr | `Primersite - | `Restrictionsite - | `Fivepoverhang | `Threepoverhang | `Noverhang - | `Assembly | `Signature | `Insulator | `Ribosite | `Rnastab - | `Proteasesite | `Proteinstab | `Rpromoter | `Rarrow - | `Larrow | `Lpromoter - | `Plaintext | `Record | `Polygon of int * float ] option; - mutable style : [ `Rounded | `Filled | `Solid | `Dashed | `Dotted | `Bold - | `Invis ] list; - mutable width : float option; - mutable fillcolor : int32 option; - } - - let set_vattribute vattrs : Graphviz.DotAttributes.vertex -> _ = function - | `Color c -> - vattrs.color <- - set_if_none vattrs.color (Graphviz.color_to_color_with_transparency c) - | `ColorWithTransparency c -> vattrs.color <- set_if_none vattrs.color c - | `Fontcolor c -> vattrs.fontcolor <- set_if_none vattrs.fontcolor c - | `Fontname n -> vattrs.fontname <- set_if_none vattrs.fontname n - | `Fontsize s -> vattrs.fontsize <- set_if_none vattrs.fontsize s - | `Height h -> vattrs.height <- set_if_none vattrs.height h - | `Label label -> vattrs.label <- set_if_none vattrs.label label - | `HtmlLabel l -> vattrs.html_label <- set_if_none vattrs.html_label l - | `Orientation o -> vattrs.orientation <- set_if_none vattrs.orientation o - | `Peripheries p -> vattrs.peripheries <- set_if_none vattrs.peripheries p - | `Regular r -> vattrs.regular <- set_if_none vattrs.regular r - | `Shape shape -> vattrs.shape <- set_if_none vattrs.shape shape - | `Style s -> vattrs.style <- s :: vattrs.style - | `Width w -> vattrs.width <- set_if_none vattrs.width w - | `Fillcolor c -> - vattrs.fillcolor <- set_if_none vattrs.fillcolor - (Graphviz.color_to_color_with_transparency c) - | `FillcolorWithTransparency c -> - vattrs.fillcolor <- set_if_none vattrs.fillcolor c - | `Comment _ | `Distortion _ | `Fixedsize _ | `Layer _ | `Penwidth _ - | `Url _ | `Z _ -> - () (* TODO *) - - let attributes_list_to_vattributes vattrs = - List.iter (set_vattribute vattrs) - - let fill_vattributes tree vattributes = - let vertex_to_vattrs v = - let vattrs = { - color = None; - fontcolor = None; - fontname = None; - fontsize = None; - height = None; - label = None; - html_label = None; - orientation = None; - peripheries = None; - regular = None; - shape = None; - style = []; - width = None; - fillcolor = None - } in - let dgraph_layout_default = - [ `Color 0xFFFFFF; `Fontcolor 0x000000; `Fontname "Sans"; - `Fontsize 12; `Height 0.; `Label (Tree.vertex_name v); - `Orientation 0.; `Peripheries 1; `Regular false; `Shape `Ellipse; - `Width 0.; `Fillcolor 0xFFFFFF ] - in - attributes_list_to_vattributes vattrs - (Tree.vertex_attributes v - @ Tree.default_vertex_attributes tree - @ dgraph_layout_default); - vattrs - in - Tree.iter_vertex (fun v -> HV.add vattributes v (vertex_to_vattrs v)) tree - - (* PLACE VERTICES *) - - (* Calculate dimension of a string in pixel *) - let calc_dimensions - family - ptsize - ?(weight=`NORMAL) - ?(style=`NORMAL) - s - context_obj - = - let width_margin = 20. in - let height_margin = 0. in - let font_description = Pango.Font.from_string "" in - Pango.Font.modify font_description - ~family:family - ~weight - ~style - ~size:(ptsize * Pango.scale) - (); - let context = GtkBase.Widget.create_pango_context context_obj in - Pango.Context.set_font_description context font_description; - let layout = Pango.Layout.create context in - Pango.Layout.set_text layout s; - let width, height = Pango.Layout.get_pixel_size layout in - float width +. width_margin, float height +. height_margin - - let fill_dimensions context tree vattributes geometry_info = - let add_vertex_dimensions v = - let vattrs = try HV.find vattributes v with Not_found -> assert false in - let minwidth, minheight = the vattrs.width, the vattrs.height in - let truewidth, trueheight = - calc_dimensions - (the vattrs.fontname) - (the vattrs.fontsize) - (the vattrs.label) context - in - let width = max minwidth truewidth in - let height = max minheight trueheight in - HV.replace geometry_info.dimensions v (width, height) - in - Tree.iter_vertex add_vertex_dimensions tree - - let fill_position tree root geometry_info = - let forward_table = HV.create 97 in - let backward_table = HV.create 97 in - fill_tree_positions tree root Tree.iter_succ Tree.fold_succ forward_table - geometry_info; - fill_tree_positions tree root Tree.iter_pred Tree.fold_pred backward_table - geometry_info; - bind_tree_tables forward_table backward_table root geometry_info - - (* BUILD LAYOUT - ADD DRAW OPERATIONS *) - - let style_to_style_attr = function - | `Filled -> XDotDraw.Filled - | `Solid -> XDotDraw.Solid - | `Dashed -> XDotDraw.Dashed - | `Dotted -> XDotDraw.Dotted - | `Bold -> XDotDraw.Bold - | `Invis -> XDotDraw.Invisible - | `Rounded -> XDotDraw.Rounded;; - - (* FOR VERTEX *) - - let shape_to_operations v vattrs geometry_info shape = - let width, height = - let a, b = get_dimensions v geometry_info in - a /. 2., b - in - let position = get_position v geometry_info in - let filled = List.mem `Filled vattrs.style in - match shape with - | `Ellipse -> - if filled then [ XDotDraw.Filled_ellipse (position,width,height) ] - else [ XDotDraw.Unfilled_ellipse (position,width,height) ] - | `Circle -> - let diameter = max width height in - if filled then [ XDotDraw.Filled_ellipse (position,diameter,diameter) ] - else [ XDotDraw.Unfilled_ellipse (position,diameter,diameter) ] - | `Doublecircle -> - let diameter = max width height in - let big_diameter = diameter +. 5. in - (XDotDraw.Unfilled_ellipse (position,big_diameter,big_diameter)) :: - [ if filled then XDotDraw.Filled_ellipse (position,diameter,diameter) - else XDotDraw.Unfilled_ellipse (position,diameter,diameter) ] - | `Box -> - let x, y = position in - let x1 = x -. width and x2 = x +. width in - let y1 = y -. height and y2 = y +. height in - let pos_array = [|(x1,y1);(x1,y2);(x2,y2);(x2,y1)|] in - if filled then [ XDotDraw.Filled_polygon pos_array ] - else [ XDotDraw.Unfilled_polygon pos_array ] - | `Record -> - let x, y = position in - let x1 = x -. width and x2 = x +. width in - let y1 = y -. height and y2 = y +. height in - let pos_array = [|(x1,y1);(x1,y2);(x2,y2);(x2,y1)|] in - if filled then [ XDotDraw.Filled_polygon pos_array ] - else [ XDotDraw.Unfilled_polygon pos_array ] - | `Diamond -> - let x, y = position in - let x1 = x -. width and x2 = x +. width in - let y1 = y -. height and y2 = y +. height in - let pos_array = [|(x,y1);(x1,y);(x,y2);(x2,y)|] in - if filled then [ XDotDraw.Filled_polygon pos_array ] - else [ XDotDraw.Unfilled_polygon pos_array ] - |_ -> [ XDotDraw.Unfilled_ellipse ((0.,0.),0.,0.) ];; - - let vattrs_to_draw_operations v vattributes geometry_info = - let vattrs = try HV.find vattributes v with Not_found -> assert false in - let width, _height = get_dimensions v geometry_info in - (* Vertex shape drawing *) - XDotDraw.Pen_color (string_color32 (the vattrs.color)) :: - XDotDraw.Style (List.map (style_to_style_attr) vattrs.style) :: - (if List.mem `Filled vattrs.style then - XDotDraw.Fill_color (string_color32 (the vattrs.fillcolor)) :: - shape_to_operations v vattrs geometry_info (the vattrs.shape) - else - shape_to_operations v vattrs geometry_info (the vattrs.shape)) - , - (* Vertex label drawing *) - [ XDotDraw.Pen_color (string_color (the vattrs.fontcolor)); - XDotDraw.Font - (float (the vattrs.fontsize), - the vattrs.fontname); - let x, y = get_position v geometry_info in - let _, h = get_dimensions v geometry_info in - (* [JS 2010/10/08] "/. 4." is quite strange but gives better results *) - XDotDraw.Text - ((x, y +. h /. 4.), - XDotDraw.Center, - width, - the vattrs.label) ] - - let vertex_to_node_layout v vattributes geometry_info = - let draw, ldraw = vattrs_to_draw_operations v vattributes geometry_info in - let width, height = get_dimensions v geometry_info in - let abs, ord = get_position v geometry_info in - { - XDot.n_name = Tree.vertex_name v; - XDot.n_pos = (abs,ord); - XDot.n_bbox = XDot.bounding_box (abs, ord) width height; - XDot.n_draw = draw; - XDot.n_ldraw = ldraw - } - - (* FOR CLUSTER *) - - open Graphviz.DotAttributes - - let get_clusters tree = - let clusters = Hashtbl.create 20 in - Tree.iter_vertex - (fun v -> match Tree.get_subgraph v with - | None -> () - | Some c -> Hashtbl.add clusters c v) - tree; - clusters;; - - let rec get_cluster_color = function - | [] -> 0x000000 - | `Color c :: _ -> c - | _ :: q -> get_cluster_color q;; - - let find_cluster_corners l geometry_info = - let max_x_distance = 2. *. geometry_info.x_offset in - let max_y_distance = 2. *. float geometry_info.y_offset in - let rec find_corners l corners_array = - let (minx,miny) = corners_array.(0) in - let (maxx,maxy) = corners_array.(3) in - match l with - |[] -> corners_array - |v :: tl -> - let x, y = get_position v geometry_info in - let w, h = get_dimensions v geometry_info in - let halfw = w /. 2. in - let x1 = x -. halfw and x2 = x +. halfw in - let y1 = y -. h and y2 = y +. h in - (* Should cluster be split in two *) - let x1_distance = minx -. x1 in - let x2_distance = x2 -. maxx in - let y1_distance = miny -. y1 in - let y2_distance = y2 -. maxy in - if x1_distance > max_x_distance || - x2_distance > max_x_distance || - y1_distance > max_y_distance || - y2_distance > max_y_distance || - ((x1_distance <> 0. || x2_distance <> 0.) && - (y1_distance <> 0. || y2_distance <> 0.)) - then - Array.append (find_corners tl corners_array) - (find_corners tl [| x1, y1; x1, y2; x2, y2; x2, y1 |]) - else - let newminx = min x1 minx in - let newminy = min y1 miny in - let newmaxx = max x2 maxx in - let newmaxy = max y2 maxy in - find_corners tl [|(newminx,newminy);(newminx,newmaxy); - (newmaxx,newmaxy);(newmaxx,newminy)|] - in - match l with - | [] -> - let z = 0., 0. in - Array.make 4 z - | v :: q -> - let x, y = get_position v geometry_info in - let w, h = get_dimensions v geometry_info in - let halfw = w /. 2. in - let x1 = x -. halfw in - let x2 = x +. halfw in - let y1 = y -. h in - let y2 = y +. h in - find_corners q [| x1, y1; x1, y2; x2, y2; x2, y1 |];; - - let cluster_to_cluster_layout _tree c clusters geometry_info = - let border_padding = 10. in - let vertices = - try Hashtbl.find_all clusters c - with Not_found -> assert false - in - let corners_array = find_cluster_corners vertices geometry_info in - let add_padding corners_array = - let (x1,y1) = corners_array.(0) in - let (x2,y2) = corners_array.(3) in - let x1_padded = x1 -. border_padding in - let x2_padded = x2 +. border_padding in - let y1_padded = y1 -. border_padding in - let y2_padded = y2 +. border_padding in - [|(x1_padded,y1_padded);(x1_padded,y2_padded); - (x2_padded,y2_padded);(x2_padded,y1_padded)|] - in - let rec _cut_corners_array corners_array = - ignore (assert false); - (* [JS 2010/09/09] does not work: - exponential time seems to be required! *) - let length = Array.length corners_array in - if length > 4 then - XDotDraw.Unfilled_polygon (add_padding (Array.sub corners_array 0 4)) :: - (_cut_corners_array (Array.sub corners_array 4 (length-4))) - else - [ XDotDraw.Unfilled_polygon (add_padding corners_array) ] - in - let (x1,y1) = corners_array.(0) in - let (x2,y2) = corners_array.(3) in - { - XDot.c_pos = ((x1 +. x2) /. 2., (y1 +. y2) /. 2.); - XDot.c_bbox = ((x1,y1),(x2,y2)); - XDot.c_draw = - XDotDraw.Pen_color - (string_color (get_cluster_color c.sg_attributes)) :: - (*cut_corners_array corners_array*)[]; - XDot.c_ldraw = [] - };; - - (* FOR EDGE *) - - type eattributes = { - (* See graphviz.mli for the meaning of each field *) - mutable color : int32 option; - mutable decorate : bool option; - mutable dir : [ `Forward | `Back | `Both | `None ] option; - mutable fontcolor : int option; - mutable fontname : string option; - mutable fontsize : int option; - mutable label : string option; - mutable html_label : string option; - mutable labelfontcolor : int option; - mutable labelfontname : string option; - mutable labelfontsize : int option; - mutable style : [ `Solid | `Dashed | `Dotted | `Bold | `Invis ] list - } - - let rec attributes_list_to_eattributes eattrs : edge list -> _ = function - |[] -> () - | `Color c :: q -> - eattrs.color <- - set_if_none eattrs.color (Graphviz.color_to_color_with_transparency c); - attributes_list_to_eattributes eattrs q - | `ColorWithTransparency c :: q -> - eattrs.color <- set_if_none eattrs.color c; - attributes_list_to_eattributes eattrs q - | `Decorate d :: q -> - eattrs.decorate <- set_if_none eattrs.decorate d; - attributes_list_to_eattributes eattrs q - | `Dir d :: q -> - eattrs.dir <- set_if_none eattrs.dir d; - attributes_list_to_eattributes eattrs q - | `Fontcolor c :: q -> - eattrs.fontcolor <- set_if_none eattrs.fontcolor c; - attributes_list_to_eattributes eattrs q - | `Fontname n :: q -> - eattrs.fontname <- set_if_none eattrs.fontname n; - attributes_list_to_eattributes eattrs q - | `Fontsize s :: q -> - eattrs.fontsize <- set_if_none eattrs.fontsize s; - attributes_list_to_eattributes eattrs q - | `Label l :: q -> - eattrs.label <- set_if_none eattrs.label l; - attributes_list_to_eattributes eattrs q - | `HtmlLabel l :: q -> - eattrs.html_label <- set_if_none eattrs.html_label l; - attributes_list_to_eattributes eattrs q - | `Labelfontcolor c :: q -> - eattrs.fontcolor <- set_if_none eattrs.fontcolor c; - attributes_list_to_eattributes eattrs q - | `Labelfontname n :: q -> - eattrs.labelfontname <- set_if_none eattrs.labelfontname n; - attributes_list_to_eattributes eattrs q - | `Labelfontsize s :: q -> - eattrs.labelfontsize <- set_if_none eattrs.labelfontsize s; - attributes_list_to_eattributes eattrs q - | `Style s :: q -> - eattrs.style <- s :: eattrs.style; - attributes_list_to_eattributes eattrs q - | (`Arrowhead _ | `Arrowsize _ | `Arrowtail _ | `Comment _ | `Constraint _ - | `Headlabel _ | `Headport _ | `Headurl _ | `Labelangle _ - |`Labeldistance _ | `Labelfloat _ | `Layer _ | `Minlen _ | `Penwidth _ - | `Samehead _ | `Sametail _ | `Taillabel _ | `Tailport _ | `Tailurl _ - | `Weight _ ) :: q -> - attributes_list_to_eattributes eattrs q;; - - let eattrs_to_operation tree e geometry_info = - let eattrs = { - color = None; - decorate = None; - dir = None; - fontcolor = None; - fontname = None; - fontsize = None; - label = None; - html_label = None; - labelfontcolor = None; - labelfontname = None; - labelfontsize = None; - style = [] } - in - let dgraph_layout_default = - [ `Color 0xFF0000; `Decorate false; `Dir `Forward; `Fontcolor 0x00000; - `Fontname "Sans"; `Fontsize 12; `Label ""; `Labelfontcolor 0x000000; - `Labelfontname "Sans"; `Labelfontsize 12; `Style `Solid ] - in - attributes_list_to_eattributes eattrs - (Tree.default_edge_attributes tree - @ Tree.edge_attributes e - @ dgraph_layout_default); - let posarray = - edge_to_posarray (Tree.E.src e) (Tree.E.dst e) geometry_info - in - let xsrc, ysrc = posarray.(0) in - let xend, yend = posarray.(3) in - ( - (* Shapes and curves *) - [ XDotDraw.Pen_color (string_color32 (the eattrs.color)); - XDotDraw.Fill_color (string_color32 (the eattrs.color)); - XDotDraw.Style (List.map (style_to_style_attr) eattrs.style); - XDotDraw.Filled_bspline posarray ] - , - (* Label drawing *) - [ XDotDraw.Pen_color (string_color (the eattrs.fontcolor)); - XDotDraw.Fill_color (string_color (the eattrs.fontcolor)); - XDotDraw.Font (float_of_int (the eattrs.fontsize), - (the eattrs.fontname)); - (let pos = ((xsrc +. xend) /. 2. +. 5., (ysrc +. yend) /. 2.) in - XDotDraw.Text (pos,XDotDraw.Center,40.,the eattrs.label)) ] - , - (* Head arrowhead drawing *) - (if eattrs.dir = Some `None then - [] - else - XDotDraw.Pen_color (string_color32 (the eattrs.color)) :: - XDotDraw.Fill_color (string_color32 (the eattrs.color)) :: - XDotDraw.Style (List.map (style_to_style_attr) eattrs.style) :: - (edge_to_arrow posarray.(2) posarray.(3))) - , - (* Tail arrowhead drawing *) - [] - , - (* Head label drawing *) - [] - , - (* Tail label drawing *) - [] - ) - - let edge_to_edge_layout tree e geometry_info = - let (draw,ldraw,hdraw,tdraw,hldraw,tldraw) = - eattrs_to_operation tree e geometry_info - in - { - XDot.e_draw = draw; - XDot.e_ldraw = ldraw; - XDot.e_hdraw = hdraw; - XDot.e_tdraw = tdraw; - XDot.e_hldraw = hldraw; - XDot.e_tldraw = tldraw - } - - (* Graph *) - let from_tree context tree root = - let vattributes = HV.create 97 in - fill_vattributes tree vattributes; - let geometry_info = - { dimensions = HV.create 97; - position = HV.create 97; - x_offset = 0.; - y_offset = 0 } - in - fill_dimensions context tree vattributes geometry_info; - set_offset geometry_info; - fill_position tree root geometry_info; - - let vertex_layouts = HV.create 97 in - Tree.iter_vertex - (fun v -> - let n_layout = vertex_to_node_layout v vattributes geometry_info in - HV.add vertex_layouts v n_layout) - tree; - - let edge_layouts = HE.create 97 in - Tree.iter_edges_e - (fun e -> - let e_layout = edge_to_edge_layout tree e geometry_info in - HE.add edge_layouts e e_layout) - tree; - - let cluster_layouts = Hashtbl.create 7 - (* [JS 2010/09/09] does not work *) - (* build_cluster_layouts tree geometry_info*) - in - { vertex_layouts = vertex_layouts; - edge_layouts = edge_layouts; - cluster_layouts = cluster_layouts; - bbox = - let ((_,_), (_,_) as bb) = - HV.fold - (fun v (x, y) ((minx, miny),(maxx, maxy) as acc) -> - if TreeManipulation.is_ghost_node v then acc - else (min x minx, min y miny), (max x maxx, max y maxy)) - geometry_info.position - ((max_float, max_float), (0., 0.)) - in - (* Format.printf "BB=%f %f %f %f@." x1 y1 x2 y2;*) - bb } - -end - -module MakeFromDotModel - (Tree: Sig.G with type V.label = DGraphModel.DotG.V.t - and type E.label = unit) - (TreeManipulation: sig val is_ghost_node: Tree.V.t -> bool end) = -struct - - module Tree = struct - include Tree - let graph_attributes _ = [] - let default_vertex_attributes _ = [] - let default_edge_attributes _ = [] - let vertex_name _ = "" - let vertex_attributes _ = [] - let edge_attributes _ = [] - let get_subgraph _ = None - end - - include Build(Tree)(TreeManipulation) - open Layout - - (* POSITIONS *) - let fill_dimensions model tree geometry_info = - let corners pos_array = - let p0 = pos_array.(0) in - Array.fold_left - (fun ((minx, miny), (maxx, maxy)) (x, y) -> - (min minx x, min miny y), (max maxx x, max maxy y)) - (p0, p0) - pos_array - in - (* The width and height of the bounding box of the first shape - corresponding to a node.*) - let rec get_size = function - | [] -> 0., 0. - | XDotDraw.Unfilled_ellipse (_,w,h) :: _ - | XDotDraw.Filled_ellipse (_,w,h) :: _ -> - 2. *. w, 2. *. h - | XDotDraw.Unfilled_polygon pos_array :: _ - | XDotDraw.Filled_polygon pos_array :: _ -> - let (minx, miny), (maxx, maxy) = corners pos_array in - maxx -. minx, maxy -. miny - | (XDotDraw.Style _ |XDotDraw.Font _|XDotDraw.Pen_color _ - |XDotDraw.Fill_color _|XDotDraw.Filled_bspline _ |XDotDraw.Bspline _ - | XDotDraw.Polyline _|XDotDraw.Text _) - :: tl -> get_size tl - in - Tree.iter_vertex - (fun v -> - let layout = model#get_vertex_layout (Tree.V.label v) in - let dim = get_size layout.XDot.n_draw in - HV.add geometry_info.dimensions v dim) - tree - - let fill_position tree root geometry_info = - let forward_table = HV.create 97 in - let backward_table = HV.create 97 in - fill_tree_positions tree root Tree.iter_succ Tree.fold_succ forward_table - geometry_info; - (*HV.iter (fun k (off,depth) -> Format.printf "off:%f depth:%d@." off depth) - forward_table;*) - fill_tree_positions tree root Tree.iter_pred Tree.fold_pred backward_table - geometry_info; - (* HV.iter (fun k (off,depth) -> - Format.printf "BACKoff:%f depth:%d@." off depth) - backward_table; - Format.printf "DONE@.";*) - bind_tree_tables forward_table backward_table root geometry_info - - (* VERTICES *) - let parse_n_draw_operations operations (abs, ord as pos) = - let polygon pts = - let length = float (Array.length pts) in - let oldabssum, oldordsum = - Array.fold_left - (fun (xsum, ysum) (x, y) -> xsum +. x, ysum +. y) (0.,0.) pts - in - let oldabs, oldord = oldabssum /. length, oldordsum /. length in - Array.map (fun (x, y) -> x -. oldabs +. abs, y -. oldord +. ord) pts - in - let do_one = function - | XDotDraw.Unfilled_ellipse (_, w, h) -> - XDotDraw.Unfilled_ellipse (pos, w, h) - | XDotDraw.Filled_ellipse (_, w, h) -> XDotDraw.Filled_ellipse (pos, w, h) - | XDotDraw.Filled_polygon pts -> XDotDraw.Filled_polygon (polygon pts) - | XDotDraw.Unfilled_polygon pts -> XDotDraw.Unfilled_polygon (polygon pts) - | op -> op - in - List.map do_one operations - - let parse_n_ldraw_operations - (initial_node_pos_x,initial_node_pos_y) - (node_pos_x,node_pos_y) - operations - = - List.map - (function - | XDotDraw.Text ((pos_x,pos_y), align, w, s) -> - let translate_x,translate_y = - node_pos_x-.initial_node_pos_x,node_pos_y-.initial_node_pos_y - in - let (_,_ as pos) = (* same affine move as the attached node has had*) - pos_x+.translate_x, - pos_y+.translate_y - in - XDotDraw.Text (pos, align, w, s) - | op -> op) - operations - - let parse_vertex_layout _tree v orig_layout geometry_info = - let width, height = get_dimensions v geometry_info in - let (_,_ as pos) = get_position v geometry_info in - { XDot.n_name = orig_layout.XDot.n_name; - n_pos = pos; - n_bbox = XDot.bounding_box pos width height; - n_draw = parse_n_draw_operations orig_layout.XDot.n_draw pos; - n_ldraw = parse_n_ldraw_operations - orig_layout.XDot.n_pos - pos - orig_layout.XDot.n_ldraw} - - (* EDGES *) - let rec parse_e_draw_operations operations src dst geometry_info = - match operations with - | [] -> [] - | XDotDraw.Bspline _ :: tl -> - let pos_array = edge_to_posarray src dst geometry_info in - XDotDraw.Bspline pos_array :: - (edge_to_arrow pos_array.(2) pos_array.(3)) @ - (parse_e_draw_operations tl src dst geometry_info) - | XDotDraw.Filled_bspline _ :: tl -> - let pos_array = edge_to_posarray src dst geometry_info in - XDotDraw.Filled_bspline pos_array :: - (edge_to_arrow pos_array.(2) pos_array.(3)) @ - (parse_e_draw_operations tl src dst geometry_info) - | XDotDraw.Pen_color c :: tl -> - XDotDraw.Pen_color c :: XDotDraw.Fill_color c :: - (parse_e_draw_operations tl src dst geometry_info) - | op :: tl -> op :: (parse_e_draw_operations tl src dst geometry_info);; - - let rec parse_e_ldraw_operations operations src dst geometry_info = - match operations with - | [] -> [] - | XDotDraw.Text (_, align, w, s) :: tl -> - let (xsrc,ysrc) = get_position src geometry_info in - let (xdst,ydst) = get_position dst geometry_info in - let pos = ((xsrc +. xdst) /. 2., (ysrc +. ydst) /. 2.) in - XDotDraw.Text (pos, align, w, s) :: - (parse_e_ldraw_operations tl src dst geometry_info) - | op :: tl -> op :: (parse_e_ldraw_operations tl src dst geometry_info);; - - let parse_edge_layout _tree e layout geometry_info = - let src = Tree.E.src e and dst = Tree.E.dst e in - { - XDot.e_draw = - parse_e_draw_operations layout.XDot.e_draw src dst geometry_info; - e_ldraw = - parse_e_ldraw_operations layout.XDot.e_ldraw src dst geometry_info; - e_hdraw = []; - e_tdraw = []; - e_hldraw = []; - e_tldraw = [] - };; - - (* CLUSTERS *) - - let from_model tree root model = - let geometry_info = - { dimensions = HV.create 97; - position = HV.create 97; - x_offset = 0.; - y_offset = 0 } - in - fill_dimensions model tree geometry_info; - set_offset geometry_info; - fill_position tree root geometry_info; - let vertex_layouts = HV.create 97 in - Tree.iter_vertex - (fun v -> - let old_layout = model#get_vertex_layout (Tree.V.label v) in - let v_layout = parse_vertex_layout tree v old_layout geometry_info in - HV.add vertex_layouts v v_layout) - tree; - let edge_layouts = HE.create 97 in - Tree.iter_edges_e - (fun e -> - let src = Tree.V.label (Tree.E.src e) in - let dst = Tree.V.label (Tree.E.dst e) in - let old_layout = - try model#get_edge_layout (model#find_edge src dst) - with Not_found -> - { XDot.e_draw = []; - e_ldraw = []; - e_hdraw = []; - e_tdraw = []; - e_hldraw = []; - e_tldraw = [] } - in - let e_layout = parse_edge_layout tree e old_layout geometry_info in - HE.add edge_layouts e e_layout) - tree; - let cluster_layouts = Hashtbl.create 7 in - let root_pos = get_position root geometry_info in - { vertex_layouts = vertex_layouts; - edge_layouts = edge_layouts; - cluster_layouts = cluster_layouts; - bbox = - let ((_,_), (_,_) as bb) = - HV.fold - (fun v (x, y) ((minx, miny),(maxx, maxy) as acc) -> - if TreeManipulation.is_ghost_node v then acc - else - let width,height= get_dimensions v geometry_info in - (min (x-.width) minx, min (y-.height) miny), - (max (x+.width) maxx, max (y+.height) maxy)) - geometry_info.position - (root_pos, root_pos) - in - (* Format.printf "BB=%f %f %f %f@." x1 y1 x2 y2;*) - bb } - -end diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphTreeLayout.mli b/jscomp/build_tests/ocamlgraph/dgraph/dGraphTreeLayout.mli deleted file mode 100755 index 89af4a1d89..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphTreeLayout.mli +++ /dev/null @@ -1,53 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -open Graph - -type cluster = string - -module Make - (Tree: Graphviz.GraphWithDotAttrs) - (TreeManipulation: sig val is_ghost_node: Tree.V.t -> bool end): -sig - - val from_tree: - [> `widget] Gtk.obj -> Tree.t -> Tree.V.t -> XDot.Make(Tree).graph_layout - -end - -module MakeFromDotModel - (Tree : Sig.G with type V.label = DGraphModel.DotG.V.t - and type E.label = unit) - (TreeManipulation: sig val is_ghost_node: Tree.V.t -> bool end): -sig - - module Tree: Graphviz.GraphWithDotAttrs with module V = Tree.V - and module E = Tree.E - and type t = Tree.t - - val from_model: - Tree.t -> Tree.V.t -> DGraphModel.dotg_model -> XDot.Make(Tree).graph_layout - -end diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphTreeModel.ml b/jscomp/build_tests/ocamlgraph/dgraph/dGraphTreeModel.ml deleted file mode 100755 index 2b5ef285f2..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphTreeModel.ml +++ /dev/null @@ -1,247 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -open Graph - -module type S = sig - - module Tree: Graphviz.GraphWithDotAttrs - - module TreeManipulation : sig - type t - val get_structure : t -> Tree.t - val get_tree_vertices : Tree.V.label -> t -> Tree.V.t list - val get_graph_vertex : Tree.V.t -> t -> Tree.V.label - val is_ghost_node : Tree.V.t -> t -> bool - val is_ghost_edge : Tree.E.t -> t -> bool - end - - type cluster = string - - class tree_model : - XDot.Make(Tree).graph_layout -> - TreeManipulation.t -> - [Tree.V.t, Tree.E.t, cluster] DGraphModel.abstract_model - - val tree : unit -> TreeManipulation.t - -end - -module Build - (G: Sig.G) - (T: Graphviz.GraphWithDotAttrs with type V.label = G.V.t) - (TM: DGraphSubTree.S with type Tree.t = T.t - and type Tree.V.t = T.V.t - and type Tree.E.t = T.E.t) = -struct - - module TreeManipulation = TM - type cluster = string - - module X = XDot.Make(T) - - class tree_model layout tree - : [ T.V.t, T.E.t, cluster ] DGraphModel.abstract_model - = - let tree_structure = TM.get_structure tree in - object - - (* Iterators *) - method iter_edges f = - T.iter_edges - (fun v1 v2 -> - if not (TM.is_ghost_node v1 tree && TM.is_ghost_node v2 tree) then - f v1 v2) - tree_structure - - method iter_edges_e f = - T.iter_edges_e - (fun e -> if not (TM.is_ghost_edge e tree) then f e) - tree_structure - - method iter_pred f v = - T.iter_pred - (fun v -> if not (TM.is_ghost_node v tree) then f v) - tree_structure v - - method iter_pred_e f v = - T.iter_pred_e - (fun e -> if not (TM.is_ghost_edge e tree) then f e) - tree_structure v - - method iter_succ f = - T.iter_succ - (fun v -> if not (TM.is_ghost_node v tree) then f v) - tree_structure - - method iter_succ_e f = - T.iter_succ_e - (fun e -> if not (TM.is_ghost_edge e tree) then f e) - tree_structure - - method iter_vertex f = - T.iter_vertex - (fun v -> if not (TM.is_ghost_node v tree) then f v) - tree_structure - - method iter_associated_vertex f v = - let origin_vertex = TM.get_graph_vertex v tree in - List.iter - (fun v -> if not (TM.is_ghost_node v tree) then f v) - (TM.get_tree_vertices origin_vertex tree) - - method iter_clusters f = - Hashtbl.iter (fun k _ -> f k) layout.X.cluster_layouts - - (* Membership functions *) - method find_edge = - try T.find_edge tree_structure - with Not_found -> assert false - - method mem_edge = T.mem_edge tree_structure - method mem_edge_e = T.mem_edge_e tree_structure - method mem_vertex = T.mem_vertex tree_structure - method src = T.E.src - method dst = T.E.dst - - (* Layout *) - method bounding_box = layout.X.bbox - - method get_vertex_layout v = - try X.HV.find layout.X.vertex_layouts v - with Not_found -> assert false - - method get_edge_layout e = - try X.HE.find layout.X.edge_layouts e - with Not_found -> assert false - - method get_cluster_layout c = - try Hashtbl.find layout.X.cluster_layouts c - with Not_found -> assert false - - end - -end - -module SubTreeMake(G: Graphviz.GraphWithDotAttrs) = struct - - module T = Imperative.Digraph.Abstract(G.V) - module TM = DGraphSubTree.Make(G)(T) - - let tree_ref : TM.t option ref = ref None - let tree () = match !tree_ref with None -> assert false | Some t -> t - - let graph_ref: G.t option ref = ref None - let graph () = match !graph_ref with None -> assert false | Some g -> g - - module Tree = struct - - include T - - let graph_attributes _ = G.graph_attributes (graph ()) - let default_vertex_attributes _ = G.default_vertex_attributes (graph ()) - let default_edge_attributes _ = G.default_edge_attributes (graph ()) - - let cpt = ref 0 - let name_table = Hashtbl.create 97 - let vertex_name v = - try Hashtbl.find name_table v - with Not_found -> - incr cpt; - Hashtbl.add name_table v (string_of_int !cpt); - string_of_int !cpt - - let vertex_attributes v = - let t = tree () in - if TM.is_ghost_node v t then [ `Style `Invis ] - else G.vertex_attributes (TM.get_graph_vertex v t) - - let edge_attributes e = - let t = tree () in - if TM.is_ghost_node (T.E.src e) t || TM.is_ghost_node (T.E.dst e) t then - [ `Style `Dashed; `Dir `None ] - else - G.edge_attributes - (G.find_edge - (graph ()) - (TM.get_graph_vertex (T.E.src e) t) - (TM.get_graph_vertex (T.E.dst e) t)) - - let get_subgraph v = - let t = tree () in - if TM.is_ghost_node v t then None - else G.get_subgraph (TM.get_graph_vertex v t) - - end - - include Build(G)(Tree)(TM) - - module TreeLayout = - DGraphTreeLayout.Make - (Tree) - (struct let is_ghost_node v = TM.is_ghost_node v (tree ()) end) - - let from_graph - ?(depth_forward=2) - ?(depth_backward=2) - context - g - v - = - (* Generate subtree *) - let t = TM.make g v depth_forward depth_backward in - tree_ref := Some t; - graph_ref := Some g; - let layout = - TreeLayout.from_tree context (TM.get_structure t) (TM.get_root t) - in - new tree_model layout t - -end - -module SubTreeDotModelMake = struct - - module T = Imperative.Digraph.Abstract(DGraphModel.DotG.V) - module TM = DGraphSubTree.Make_from_dot_model(T) - - let tree_ref : TM.t option ref = ref None - let tree () = match !tree_ref with None -> assert false | Some t -> t - - module TreeLayout = - DGraphTreeLayout.MakeFromDotModel - (T) - (struct let is_ghost_node v = TM.is_ghost_node v (tree ()) end) - - include TreeLayout - include Build(DGraphModel.DotG)(Tree)(TM) - - let from_model ?(depth_forward=2) ?(depth_backward=2) model v = - let t = TM.make model v depth_forward depth_backward in - tree_ref := Some t; - let tree_structure = TM.get_structure t in - let layout = from_model tree_structure (TM.get_root t) model in - new tree_model layout t - -end diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphTreeModel.mli b/jscomp/build_tests/ocamlgraph/dgraph/dGraphTreeModel.mli deleted file mode 100755 index da9d9d7b44..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphTreeModel.mli +++ /dev/null @@ -1,72 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -module type S = sig - - module Tree: Graph.Graphviz.GraphWithDotAttrs - - module TreeManipulation : sig - type t - val get_structure : t -> Tree.t - val get_tree_vertices : Tree.V.label -> t -> Tree.V.t list - val get_graph_vertex : Tree.V.t -> t -> Tree.V.label - val is_ghost_node : Tree.V.t -> t -> bool - val is_ghost_edge : Tree.E.t -> t -> bool - end - - type cluster = string - - class tree_model : - XDot.Make(Tree).graph_layout -> - TreeManipulation.t -> - [ Tree.V.t, Tree.E.t, cluster ] DGraphModel.abstract_model - - val tree : unit -> TreeManipulation.t - -end - -(** This functor creates a model centered on a vertex from a graph *) -module SubTreeMake(G : Graph.Graphviz.GraphWithDotAttrs) : sig - - include S with type Tree.V.label = G.V.t - - val from_graph : - ?depth_forward:int -> ?depth_backward:int -> - [> `widget] Gtk.obj -> G.t -> G.V.t -> tree_model - -end - -(** Creates a model centered on a vertex from a dot model *) -module SubTreeDotModelMake : sig - - include S with type Tree.V.label = DGraphModel.DotG.V.t - - val from_model : - ?depth_forward:int -> ?depth_backward:int - -> DGraphModel.dotg_model - -> DGraphModel.DotG.V.t - -> tree_model - -end diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphView.ml b/jscomp/build_tests/ocamlgraph/dgraph/dGraphView.ml deleted file mode 100755 index f9f7574620..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphView.ml +++ /dev/null @@ -1,314 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -open DGraphViewItem - -let ($) f x = f x - -class type ['vertex, 'edge, 'cluster] view = object - inherit GnoCanvas.canvas - method model : ('vertex, 'edge, 'cluster) DGraphModel.abstract_model - method get_node : 'vertex -> 'vertex view_item - method get_edge : 'edge -> 'edge view_item - method get_cluster : 'cluster -> 'cluster view_item - method iter_nodes: ('vertex view_item -> unit) -> unit - method iter_edges: ('vertex view_item -> 'vertex view_item -> unit) -> unit - method iter_edges_e: ('edge view_item -> unit) -> unit - method iter_clusters: ('cluster view_item -> unit) -> unit - method iter_succ: ('vertex view_item -> unit) -> 'vertex view_item -> unit - method iter_pred: ('vertex view_item -> unit) -> 'vertex view_item -> unit - method iter_succ_e: ('edge view_item -> unit) -> 'vertex view_item -> unit - method iter_pred_e: ('edge view_item -> unit) -> 'vertex view_item -> unit - method iter_associated_vertex: - ('vertex view_item -> unit) -> 'vertex view_item -> unit - method mem_edge: 'vertex view_item -> 'vertex view_item -> bool - method find_edge: 'vertex view_item -> 'vertex view_item -> 'edge view_item - method src: 'edge view_item -> 'vertex view_item - method dst: 'edge view_item -> 'vertex view_item - method zoom_factor : float - method zoom_to : float -> unit - method zoom_in : unit -> unit - method zoom_out : unit -> unit - method adapt_zoom : unit -> unit - method center_node: 'vertex view_item -> unit - method set_zoom_padding: float -> unit - method connect_highlighting_event: unit -> unit - method highlight: ?color: int32 * int32 -> 'vertex view_item -> unit - method dehighlight: 'vertex view_item -> unit -end - -module type S = sig - - type vertex - type edge - type cluster - - val view: - ?aa:bool (** Anti-aliasing *) -> - ?delay_node:(vertex -> bool) -> - ?delay_edge:(edge -> bool) -> - ?delay_cluster:(cluster -> bool) -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(GObj.widget -> unit) -> - ?show:bool -> - (vertex, edge, cluster) DGraphModel.abstract_model -> - (vertex, edge, cluster) view - (** View as a Gnome Canvas. - Support zooming and scrolling. *) - -end - -(* ************************************************************************* *) -(** View from a model *) -(* ************************************************************************* *) - -module Make(V: Sig.HASHABLE)(E: Sig.HASHABLE)(C: Sig.HASHABLE) = struct - - type vertex = V.t - type edge = E.t - type cluster = C.t - - module HV = Hashtbl.Make(V) - module HE = Hashtbl.Make(E) - module HC = Hashtbl.Make(C) - - (* Widget derived from Gnome Canvas. - Supports zooming and scrolling *) - class view - ?delay_node ?delay_edge ?delay_cluster - obj - (model : (V.t, E.t, C.t) DGraphModel.abstract_model) - = - let delay f v = match f with None -> false | Some f -> f v in - let (x1, y1), (x2, y2) = model#bounding_box in - object(self) - - inherit GnoCanvas.canvas obj - - method model = model - - (* Hash tables from the model to the view items*) - val node_hash : V.t view_item HV.t = HV.create 17 - val edge_hash : E.t view_item HE.t = HE.create 17 - val cluster_hash : C.t view_item HC.t = HC.create 7 - - (* Canvas items creation *) - - method private add_vertex vertex = - try - let layout = model#get_vertex_layout vertex in - let item = - view_node - ~delay:(delay delay_node vertex) - ~view:(self :> common_view) ~vertex ~layout () - in - HV.add node_hash vertex item - with Not_found -> - assert false - - method private add_edge edge = - try - let layout = model#get_edge_layout edge in - let item = - view_edge - ~delay:(delay delay_edge edge) - ~view:(self:>common_view) ~edge ~layout () - in - HE.add edge_hash edge item - with Not_found -> - assert false - - method private add_cluster cluster = - let layout = model#get_cluster_layout cluster in - let item = - view_cluster - ~delay:(delay delay_cluster cluster) - ~view:(self :> common_view) ~cluster ~layout () - in - HC.add cluster_hash cluster item - - (* From model to view items *) - - method get_node n = - try HV.find node_hash n with Not_found -> assert false - - method get_edge e = - try HE.find edge_hash e with Not_found -> assert false - - method get_cluster c = - try HC.find cluster_hash c with Not_found -> assert false - - (* Iterate on nodes and edges *) - method iter_nodes f = HV.iter (fun _ v -> f v) node_hash - method iter_edges_e f = HE.iter (fun _ e -> f e) edge_hash - method iter_clusters f = HC.iter (fun _ c -> f c) cluster_hash - - method iter_edges f = - model#iter_edges (fun v1 v2 -> f (self#get_node v1) (self#get_node v2)) - - (* Iterate on successors of a node *) - method iter_succ f (node: 'v view_item) = - let f' v = f (self#get_node v) in - model#iter_succ f' node#item - - (* Iterate on predecessors of a node *) - method iter_pred f (node: 'v view_item) = - let f' v = f (self#get_node v) in - model#iter_pred f' node#item - - method iter_succ_e f (node: 'v view_item) = - let f' e = f (self#get_edge e) in - model#iter_succ_e f' node#item - - method iter_pred_e f (node: 'v view_item) = - let f' e = f (self#get_edge e) in - model#iter_pred_e f' node#item - - (* Iterate on associated nodes *) - method iter_associated_vertex f (node: 'v view_item) = - let f' v = f (self#get_node v) in - model#iter_associated_vertex f' node#item - - (* Membership functions *) - - method mem_edge (n1:'v view_item) (n2:'v view_item) = - model#mem_edge n1#item n2#item - - method find_edge (n1:'v view_item) (n2:'v view_item) = - self#get_edge (model#find_edge n1#item n2#item) - - method src (e: 'e view_item) = self#get_node (model#src e#item) - method dst (e: 'e view_item) = self#get_node (model#dst e#item) - - (* Zoom factor *) - val mutable zoom_f = 1. - method zoom_factor = zoom_f - - val mutable zoom_padding = 0.1 - method set_zoom_padding n = zoom_padding <- n - - method private set_zoom_f x = if x > 1e-10 then zoom_f <- x - - (* Zoom to a particular factor *) - method zoom_to x = - self#set_zoom_f x; - self#set_pixels_per_unit zoom_f; - self#iter_clusters (fun c -> c#zoom_text zoom_f); - self#iter_nodes (fun n -> n#zoom_text zoom_f); - self#iter_edges_e (fun e -> e#zoom_text zoom_f) - - method zoom_in () = self#zoom_to (zoom_f +. zoom_padding *. zoom_f) - method zoom_out () = self#zoom_to (zoom_f -. zoom_padding *. zoom_f) - method center_node (node:V.t view_item) = - node#center () - (* self#zoom_in ();*) - - - method adapt_zoom () = - let width = self#hadjustment#page_size in - let height = self#vadjustment#page_size in - let w_zoom = width /. abs_float (x1-.x2) in - let h_zoom = height /. abs_float (y1-.y2) in - self#zoom_to (min 1. (min w_zoom h_zoom)) - - (* EVENTS *) - - (* Zoom with the keys *) - method private zoom_keys_ev ev = - match GdkEvent.Key.keyval ev with - | k when k = GdkKeysyms._KP_Subtract -> self#zoom_out (); true - | k when k = GdkKeysyms._KP_Add -> self#zoom_in (); true - | _ -> false - - (* Zoom with the mouse *) - method private zoom_mouse_ev ev = - match GdkEvent.Scroll.direction ev with - | `UP -> self#zoom_in (); true - | `DOWN -> self#zoom_out (); true - | _ -> false - - method highlight ?color node = - let h e = e#highlight ?color () in - h node; - self#iter_associated_vertex (fun v -> - h v; - self#iter_succ_e h v; - self#iter_pred_e h v) - node - - method dehighlight node = - let h e = e#dehighlight () in - h node; - self#iter_associated_vertex (fun v -> - h v; - self#iter_succ_e h v; - self#iter_pred_e h v) - node - - method connect_highlighting_event () = - let connect node = - let callback = function - | `MOTION_NOTIFY _ -> self#highlight node; false - | `LEAVE_NOTIFY _ -> self#dehighlight node; false - | _ -> false - in - node#connect_event ~callback - in - self#iter_nodes connect - - initializer - (* Create and add items from the model vertices, edges and clusters *) - model#iter_clusters self#add_cluster; - model#iter_vertex self#add_vertex; - model#iter_edges_e self#add_edge; - (* Scroll region management *) - ignore $ self#set_center_scroll_region true; - ignore $ self#set_scroll_region ~x1 ~y1 ~x2 ~y2 ; - (* Attach zoom events *) - ignore $ self#event#connect#key_press ~callback:self#zoom_keys_ev; - ignore $ self#event#connect#scroll ~callback:self#zoom_mouse_ev; - - end - - let view - ?(aa=false) ?delay_node ?delay_edge ?delay_cluster - ?border_width ?width ?height ?packing ?show - (model:(vertex, edge, cluster) DGraphModel.abstract_model) = - let canvas = - GnoCanvas.canvas ~aa ?border_width ?width ?height ?show ?packing () - in - (* Grab focus to process keyboard input *) - ignore $ canvas#event#connect#enter_notify - ~callback:(fun _ -> canvas#misc#grab_focus () ; false); - let view = - new view ?delay_node ?delay_edge ?delay_cluster - (Gobject.unsafe_cast canvas#as_widget) - model - in - view - -end diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphView.mli b/jscomp/build_tests/ocamlgraph/dgraph/dGraphView.mli deleted file mode 100755 index b5180a74b6..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphView.mli +++ /dev/null @@ -1,138 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -(** View classes. - - Each optional function [delay_node], [delay_edge] and [delay_cluster] of - this module may be used to indicate whether an element must be displayed - instantaneously (if the function returns [false]) or may be delayed for - latter display (if the function returns [true]). By default, each function - always returns [false]. It may be set for returning [true] from time to - time, improving efficiency. *) - -open DGraphViewItem - -(** Graph widget derived from [GnoCanvas.canvas]. - Support zooming and scrolling. *) -class type ['vertex, 'edge, 'cluster] view = object - - inherit GnoCanvas.canvas - - method model : ('vertex, 'edge, 'cluster) DGraphModel.abstract_model - - (** {2 Getters} *) - - method get_node : 'vertex -> 'vertex view_item - method get_edge : 'edge -> 'edge view_item - method get_cluster : 'cluster -> 'cluster view_item - - (** {2 Iterators} *) - - method iter_nodes: ('vertex view_item -> unit) -> unit - method iter_edges: ('vertex view_item -> 'vertex view_item -> unit) -> unit - method iter_edges_e: ('edge view_item -> unit) -> unit - method iter_clusters: ('cluster view_item -> unit) -> unit - - method iter_succ: ('vertex view_item -> unit) -> 'vertex view_item -> unit - method iter_pred: ('vertex view_item -> unit) -> 'vertex view_item -> unit - method iter_succ_e: ('edge view_item -> unit) -> 'vertex view_item -> unit - method iter_pred_e: ('edge view_item -> unit) -> 'vertex view_item -> unit - - (* Benoit Bataille's method: is it really useful? *) - method iter_associated_vertex: - ('vertex view_item -> unit) -> 'vertex view_item -> unit - - (** {2 Membership functions} *) - - method mem_edge: 'vertex view_item -> 'vertex view_item -> bool - method find_edge: 'vertex view_item -> 'vertex view_item -> 'edge view_item - method src: 'edge view_item -> 'vertex view_item - method dst: 'edge view_item -> 'vertex view_item - - (** {2 Zooming} *) - - method zoom_factor : float - (** The current zoom factor.*) - - method zoom_to : float -> unit - (** Set an absolute zoom factor.*) - - method zoom_in : unit -> unit - (** Increase [zoom_factor] by [zoom_factor*zoom_padding].*) - - method zoom_out : unit -> unit - (** Decrease [zoom_factor] by [zoom_factor*zoom_padding].*) - - method adapt_zoom : unit -> unit - (** Zoom in order to view the whole graph (bird eye view). *) - - method set_zoom_padding: float -> unit - (** Set the zoom padding used by [zoom_in] and [zoom_out]. - It defaults to 0.1. *) - - method center_node: 'vertex view_item -> unit - (** Center canvas on a node. *) - - (** {2 Highlighting} *) - - method connect_highlighting_event: unit -> unit - - method highlight: ?color: int32 * int32 -> 'vertex view_item -> unit - (** Change the color of the given vertex item. - May be cancelled by [dehighlight]. - If [color] is [primary,secondary], then - [primary] is used except if the current color is [primary]. In this - case, [secondary] is used. *) - - method dehighlight: 'vertex view_item -> unit - (** Cancel [highlight]. *) - -end - -module type S = sig - - type vertex - type edge - type cluster - - val view: - ?aa:bool (** Anti-aliasing *) -> - ?delay_node:(vertex -> bool) -> - ?delay_edge:(edge -> bool) -> - ?delay_cluster:(cluster -> bool) -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(GObj.widget -> unit) -> - ?show:bool -> - (vertex, edge, cluster) DGraphModel.abstract_model -> - (vertex, edge, cluster) view - (** View as a Gnome Canvas. - Support zooming and scrolling. *) - -end - -module Make(V: Sig.HASHABLE)(E: Sig.HASHABLE)(C: Sig.HASHABLE) : - S with type vertex = V.t and type edge = E.t and type cluster = C.t diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphViewItem.ml b/jscomp/build_tests/ocamlgraph/dgraph/dGraphViewItem.ml deleted file mode 100755 index 1b3f44c4a6..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphViewItem.ml +++ /dev/null @@ -1,451 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -open XDot -open XDotDraw - -let red_color = 0xFF0000FFl -let blue_color = 0x0000FFFFl -let green_color = 0x00FF00FFl -let black_color = 0x000000FFl -let white_color = 0xFFFFFFFFl - - -exception Cannot_convert_color of string -let rgba_to_int32 col = - (* Graphivz sometimes insert named colors by itself, we need to catch - those. The list might be incomplete though; if it is, we might need to - translate http://www.w3.org/TR/SVG/types.html#ColorKeywords *) - match col with - | "black" -> black_color - | "white" -> white_color - | "red" -> red_color - | "green" -> green_color - | "blue" -> blue_color - | _ -> - try - match String.length col with - | 7 -> Graph.Graphviz.color_to_color_with_transparency - (int_of_string ("0x" ^ String.sub col 1 6)) - | 9 -> Int32.of_string ("0x" ^ String.sub col 1 8) - | _ -> failwith "" - with Failure _ -> - (* Can fail either in the failed match above, or in int*of_string *) - raise (Cannot_convert_color (col^" but int32 expected")) - -let convert_fill_color col = `FILL_COLOR_RGBA (rgba_to_int32 col) -let convert_outline_color col = `OUTLINE_COLOR_RGBA (rgba_to_int32 col) - -let ($) f x = f x - - -(* Derived text class. *) -class graph_text txt_obj ~size_points ~(props:GnomeCanvas.text_p list) = - let props = `SIZE_POINTS size_points :: props in - object (self) - - inherit GnoCanvas.text txt_obj as text - val original_size = size_points - val mutable props = props - - method! set p = - props <- p; - text#set p - - method highlight ?(color=red_color,green_color) () = - let primary, secondary = color in - let color = ref primary in - let rec hi_props = function - | [] -> [] - | `SIZE_POINTS p :: l -> - let p = if p >= 12. then p else max 6. (p *. 1.5) in - `SIZE_POINTS p :: hi_props l - | `WEIGHT d :: l -> - `WEIGHT (max 600 (int_of_float (float d *. 1.5))) :: hi_props l - | `FILL_COLOR_RGBA c :: l -> - if c = primary then color := secondary; - hi_props l - | p :: l -> p :: hi_props l - in - (* as inserted in head, `WEIGHT 600 will not apply if there is already a - specified weight *) - text#set (`FILL_COLOR_RGBA !color :: `WEIGHT 600 :: hi_props props) - - method dehighlight () = - (* as inserted in head, properties will not apply if they are already - specified *) - text#set (`WEIGHT 400 :: `FILL_COLOR_RGBA black_color :: props) - - method resize (zoom_factor:float) = - let rec change = function - | [] -> [] - | `SIZE_POINTS _ :: l -> - `SIZE_POINTS (zoom_factor*.original_size) :: change l - | `FONT _ :: l -> change l - | p :: l -> p :: change l - in - self#set (change props) - - initializer - text#set props - - end - -(* Constructor copied and adapted from gnoCanvas.ml *) -let graph_text ?x ?y ?text ?font ?anchor ~size_points ?(props=[]) p = - let add_prop props f x = - match x with None -> props | Some x -> f x :: props - in - let props = add_prop props (fun x -> `ANCHOR x) anchor in - let props = add_prop props (fun x -> `FONT x) font in - let props = add_prop props (fun x -> `TEXT x) text in - let props = add_prop props (fun x -> `Y x) y in - let props = add_prop props (fun x -> `X x) x in - let i = GnomeCanvas.Item.new_item p#as_group GnomeCanvas.Types.text in - new graph_text i ~size_points ~props - -(** FROM DOT LAYOUT TO VIEW ITEMS *) - -(* Shape properties. - Used when initializing items *) - -let pen_color draw_st = convert_outline_color draw_st.XDotDraw.pen_color -let fill_color draw_st = convert_fill_color draw_st.XDotDraw.fill_color - -(* Flattens an array of pair of coordinates into an array of coordinates *) -let flatten_points pts = - let convert i = - let x, y = pts.(i / 2) in - if i mod 2 = 0 then x else y - in - Array.init (2 * Array.length pts) convert - -(* SHAPE CONSTRUCTORS *) - -(* Ellipse, polygon and bpath canvas items do not share the same type - in lablgtk2 - They are kept in separate type constructors along with their - initial properties. *) -type shape_t = - | SEllipse of GnoCanvas.ellipse - | SPolygon of GnoCanvas.polygon - | SBSpline of GnoCanvas.bpath - -let shape_item = function - | SEllipse e -> e#as_item - | SPolygon p -> p#as_item - | SBSpline b -> b#as_item - -(* Shape properties (used by canvas items ellipse, polygon and bpath) *) -type shape_p = - [ `FILL_COLOR_RGBA of int32 - | `OUTLINE_COLOR_RGBA of int32 - | `WIDTH_UNITS of float - | `DASH of float * float array ] - -(* Property list completion *) -(* In the initial property list of a shape, we need all the properties to hold - a value, so that we can refer to them when unsetting property changes *) - -let complete_props props = - let rec what_props (fill, width, outline, dash as acc) = function - | [] -> acc - | `FILL_COLOR_RGBA _ :: l -> what_props (true, width, outline, dash) l - | `WIDTH_UNITS _ :: l -> what_props (fill, true, outline, dash) l - | `OUTLINE_COLOR_RGBA _ :: l -> what_props (fill, width, true, dash) l - | `DASH _ :: l -> what_props (fill, width, outline, true) l - in - let fill, width, outline, dash = - what_props (false, false, false, false) props - in - let props = if fill then props else `FILL_COLOR_RGBA black_color :: props in - let props = if width then props else `WIDTH_UNITS 1. :: props in - let props = - if outline then props else `OUTLINE_COLOR_RGBA black_color :: props - in - if dash then props else `DASH (0., [| |]) :: props - -(* Shape class (either a rect, an ellipse, a polygon or a path). - Uses a properties queue to undo changes *) -class shape ~fill shape init_props = object (self) - - inherit GnoCanvas.base_item (shape_item shape) - - method private set_props props = match shape with - | SPolygon p -> p#set (props :> GnomeCanvas.polygon_p list) - | SEllipse e -> e#set (props :> GnomeCanvas.re_p list) - | SBSpline b -> b#set (props :> GnomeCanvas.bpath_p list) - - (* Properties queue *) - val mutable props = [] - - method set p = - props <- p; - self#set_props p - - method highlight ?(color=red_color,green_color) () = - let primary, secondary = color in - let color = ref primary in - let rec hi_props = function - | [] -> [] - | `WIDTH_UNITS u :: l -> `WIDTH_UNITS (max 3. (u *. 3.)) :: hi_props l - | `FILL_COLOR_RGBA c :: l when fill -> - if c = primary then color := secondary; - hi_props l - | `OUTLINE_COLOR_RGBA c :: l -> - if c = primary then color := secondary; - hi_props l - | p :: l -> p :: hi_props l - in - (* as inserted in head, `WIDTH_UNITS 3. will not apply if there is already - a specified weight *) - let props = hi_props props in - let props = if fill then `FILL_COLOR_RGBA !color :: props else props in - self#set_props (`OUTLINE_COLOR_RGBA !color :: `WIDTH_UNITS 3. :: props) - - method dehighlight () = - (* as inserted in head, `WIDTH_UNITS 1. will not apply if there is already - a specified weight *) - let props = if fill then `FILL_COLOR_RGBA black_color :: props else props in - self#set_props (`WIDTH_UNITS 1. :: `OUTLINE_COLOR_RGBA black_color :: props) - - initializer self#set (complete_props init_props) - -end - -let get_props draw_st = - let base_props = [ pen_color draw_st; fill_color draw_st ] in - let fold_sty_attr props = function - | Dashed -> `DASH (0., [|10.|]) :: props - | Dotted -> `DASH (0., [|2.; 10.|]) :: props - | _ -> props - in - List.fold_left fold_sty_attr base_props draw_st.style - -let ellipse ~fill draw_st group pos w h = - let((x1,y1), (x2,y2)) = XDot.bounding_box pos w h in - let props = get_props draw_st in - let ellip = GnoCanvas.ellipse group ~x1 ~y1 ~x2 ~y2 ~props in - new shape ~fill (SEllipse ellip) props - -let polygon ~fill draw_st group pts = - let props = get_props draw_st in - let points = flatten_points pts in - let poly = GnoCanvas.polygon group ~points ~props in - new shape ~fill (SPolygon poly) props - -let pathdef pts = - if List.length pts mod 3 = 1 then - (* Starting point *) - let pathdef = GnomeCanvas.PathDef.new_path () in - let (x0,y0) = List.hd pts in - GnomeCanvas.PathDef.moveto pathdef x0 y0; - (* Rest of the spline *) - let rec curveto = function - | (x1,y1) :: (x2,y2) :: (x3,y3) :: t -> - GnomeCanvas.PathDef.curveto pathdef x1 y1 x2 y2 x3 y3; - curveto t - | _ -> () - in - curveto (List.tl pts); - pathdef - else - (* failwith "Cannot build pathdef" *) - assert false - -let bspline ~fill draw_st group pts = - let path = - pathdef (Array.fold_right (fun p acc -> p :: acc) pts []) - in - let props = get_props draw_st in - let bpath = GnoCanvas.bpath group ~bpath:path ~props in - new shape ~fill (SBSpline bpath) props - -let text draw_st group (x,y) _align anchor label = - let size_points, font = draw_st.XDotDraw.font in - let props = [ convert_fill_color draw_st.XDotDraw.pen_color ] in - let anchor = - if anchor = -. 1. then `WEST else if anchor = 1.0 then `EAST else `CENTER - in - let size_points,height = XDotDraw.string_scale_size font size_points label - in - (* y-height/4 because the base line of the text is 1/4th from the bottom *) - graph_text - group - ~x ~y:(y-.height/.4.) ~text:label ~props ~anchor - ~font ~size_points - -class type common_view = object - inherit GnoCanvas.canvas - method zoom_factor : float - method adapt_zoom : unit -> unit -end - -(* ITEMS *) - -class type textshape = object - method highlight: ?color:int32 * int32 -> unit -> unit - method dehighlight: unit -> unit - method hide: unit -> unit - method show: unit -> unit - method lower_to_bottom: unit -> unit - method connect: - < event : callback:(GnoCanvas.item_event -> bool) -> GtkSignal.id; - after : GnoCanvas.item_signals; - destroy : callback:(unit -> unit) -> GtkSignal.id; > -end - -(* DGraph item - Node and edge derive from this class - Contains shapes and texts - Can be : highlighted and/or selected - - ~pos : center of the container - ~ops_list : list of list of operations - ~hl_vip : highlight properties, set when method highlight is called *) -class [ 'a ] view_item ~fill ~delay ~(view: common_view) ~pos ~ops_list - ~(item:'a) = - object (self) - - inherit GnoCanvas.group view#root#as_group - - val mutable hilighted = false - val mutable texts = [] - val mutable shapes = [] - val mutable computed = not delay - val mutable cached_events = [] - - method item = item - - method private cache : 'a. ('a -> unit) -> 'a -> unit = - fun f x -> - if computed then f x - else cached_events <- (fun () -> f x) :: cached_events - - method zoom_text (zf:float) = - self#cache (fun zf -> List.iter (fun t -> t#resize zf) texts) zf - - method private iter f = - List.iter (fun t -> f (t :> textshape)) texts; - List.iter f (shapes :> textshape list) - - method highlight ?color () = - self#cache - (fun () -> - if not hilighted then begin - hilighted <- true; - self#iter (fun s -> s#highlight ?color ()); - List.iter (fun t -> t#raise_to_top ()) texts; - end) - () - - method dehighlight () = - self#cache - (fun () -> - if hilighted then begin - hilighted <- false; - self#iter (fun s -> s#dehighlight ()); - end) - () - - method! hide () = self#cache (fun () -> self#iter (fun s -> s#hide ())) () - method! show () = self#cache (fun () -> self#iter (fun s -> s#show ())) () - - method connect_event ~callback = - self#cache - (fun () -> self#iter (fun s -> ignore (s#connect#event ~callback))) - () - - method center () = - self#cache(fun () -> - let x, y = pos in - let w = view#hadjustment#page_size /. view#zoom_factor in - let h = view#vadjustment#page_size /. view#zoom_factor in - let sx = x -. (w /. 2.) in - let sy = y -. (h /. 2.) in - let sx, sy = view#w2c ~wx:sx ~wy:sy in - ignore $ view#scroll_to ~x:sx ~y:sy) - () - - method! lower_to_bottom () = - self#cache (fun () -> self#iter (fun s -> s#lower_to_bottom ())) () - - (* Reads a list of list of operations - Updates the shapes and texts lists *) - method private read_operations () = - let read_op draw_st = function - (* Create shapes *) - | XDotDraw.Filled_ellipse (pos, w, h) - | XDotDraw.Unfilled_ellipse (pos, w, h) -> - shapes <- ellipse ~fill draw_st self pos w h :: shapes - | XDotDraw.Filled_polygon pts | XDotDraw.Unfilled_polygon pts -> - shapes <- polygon ~fill draw_st self pts :: shapes - | XDotDraw.Bspline pts | XDotDraw.Filled_bspline pts -> - shapes <- bspline ~fill draw_st self pts :: shapes - | XDotDraw.Text (pos, align, anchor, label) -> - texts <- text draw_st self pos align anchor label :: texts - | _ -> () - in - List.iter (draw_with read_op) ops_list; - List.iter (fun t -> t#raise_to_top ()) texts; - List.fold_right (* preserve order *) (fun f () -> f ()) cached_events () - - method compute () = - if not computed then begin - computed <- true; - self#read_operations () - end - - initializer - if delay then - let prio = Glib.int_of_priority `LOW in - ignore (Glib.Idle.add ~prio (fun () -> self#compute (); false)) - else - self#read_operations () - - end - -let view_node ~delay ~view ~vertex ~layout () = - let pos = layout.n_pos in - let ops_list = [ layout.n_ldraw; layout.n_draw ] in - new view_item ~fill:false ~delay ~view ~pos ~ops_list ~item:vertex - -let view_edge ~delay ~view ~edge ~layout () = - let pos = 0., 0. in - let ops_list = - [ layout.e_draw; layout.e_ldraw; - layout.e_tldraw; layout.e_hldraw; - layout.e_tdraw; layout.e_hdraw ] - in - new view_item ~fill:true ~delay ~view ~pos ~ops_list ~item:edge - -let view_cluster ~delay ~view ~cluster ~layout () = - let pos = layout.c_pos in - let ops_list = [ layout.c_ldraw; layout.c_draw ] in - let view = - new view_item ~fill:false ~delay ~pos ~ops_list ~view ~item:cluster - in - view#lower_to_bottom (); - view diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphViewItem.mli b/jscomp/build_tests/ocamlgraph/dgraph/dGraphViewItem.mli deleted file mode 100755 index 6bce502d04..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphViewItem.mli +++ /dev/null @@ -1,146 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -(** View items for the different elements of a graph. *) - -(* ********************************************************************** *) -(** {2 Shape} *) -(* ********************************************************************** *) - -(** Shape properties *) -type shape_p = [ `FILL_COLOR_RGBA of int32 - | `OUTLINE_COLOR_RGBA of int32 - | `WIDTH_UNITS of float - | `DASH of float * float array ] - -class type textshape = object - - method highlight: ?color:int32 * int32 -> unit -> unit - (** Change the color of the text. May be cancelled by [dehighlight]. - If [color] is [primary,secondary], then - [primary] is used except if the current color is [primary]. In this - case, [secondary] is used. *) - - method dehighlight: unit -> unit - (** Cancel [highlight]. *) - - method hide: unit -> unit - method show: unit -> unit - method lower_to_bottom: unit -> unit - method connect: - < event : callback:(GnoCanvas.item_event -> bool) -> GtkSignal.id; - after : GnoCanvas.item_signals; - destroy : callback:(unit -> unit) -> GtkSignal.id; > - -end - -class type shape = object - inherit GnoCanvas.base_item - inherit textshape - val obj : GnomeCanvas.item Gtk.obj - method set: shape_p list -> unit -end - -(* ********************************************************************** *) -(** {2 Text} *) -(* ********************************************************************** *) - -(** Derived text class. *) -class graph_text : - GnomeCanvas.text Gtk.obj -> - size_points:float -> - props:GnomeCanvas.text_p list -> - object - inherit GnoCanvas.text - inherit textshape - method resize: float -> unit - end - -(* ********************************************************************** *) -(** {2 View items} *) -(* ********************************************************************** *) - -class type common_view = object - inherit GnoCanvas.canvas - method zoom_factor : float - method adapt_zoom : unit -> unit -end - -(** ViewItem class. - Group of shapes and texts *) -class ['a ] view_item : - fill:bool -> - delay:bool (** May the item be displayed non instantaneously? *) -> - view:common_view -> - pos:float * float -> - ops_list:XDotDraw.operation list list -> - item:'a -> - object - inherit GnoCanvas.group - method item: 'a - method zoom_text: float -> unit - - method highlight: ?color: int32 * int32 -> unit -> unit - (** Change the color of the item. May be cancelled by [dehighlight]. - If [color] is [primary,secondary], then - [primary] is used except if the current color is [primary]. In this - case, [secondary] is used. *) - - method dehighlight: unit -> unit - (** Cancel [highlight]. *) - - method show : unit -> unit - method hide : unit -> unit - method center : unit -> unit - method connect_event: callback:(GnoCanvas.item_event -> bool) -> unit - method compute: unit -> unit (** apply all delayed operations *) - method lower_to_bottom: unit -> unit - end - -exception Cannot_convert_color of string - -val view_node: - delay:bool -> - view:common_view -> - vertex:'vertex -> - layout:XDot.node_layout -> - unit -> - 'vertex view_item - -val view_edge: - delay:bool -> - view:common_view -> - edge:'edge -> - layout:XDot.edge_layout -> - unit -> - 'edge view_item - -val view_cluster: - delay:bool -> - view:common_view -> - cluster:'cluster -> - layout:XDot.cluster_layout -> - unit -> - 'cluster view_item diff --git a/jscomp/build_tests/ocamlgraph/dgraph/dGraphViewer.ml b/jscomp/build_tests/ocamlgraph/dgraph/dGraphViewer.ml deleted file mode 100755 index 39b08f7e76..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/dGraphViewer.ml +++ /dev/null @@ -1,150 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -open Dgraph -open Printf - -let ($) f x = f x -let get_some = function Some t -> t | None -> assert false - -let debug = false - -module Content = DGraphContainer.Dot - -type state = { - mutable file: string option; - mutable window: GWindow.window; - mutable content: (GPack.table * Content.view_container) option -} - -let init_state () = - let window = - GWindow.window - ~width:1280 ~height:1024 - ~title:"Graph Widget" - ~allow_shrink:true ~allow_grow:true () - in - let status = GMisc.label ~markup:"" () in - status#set_use_markup true; - let file = ref None in - for i=1 to Array.length Sys.argv - 1 do - file := Some Sys.argv.(i) - done; - { file = !file; - window = window; - content = None } - -(* Top menu *) - -let menu_desc = "\ - \ - \ - \ - \ - \ - \ - -" - -let update_state state ~packing = - (match state.content with None -> () | Some (t, _) -> t#destroy ()); - try - let _, view as content = match state.file with - | Some file -> - if debug then printf "Building Model...\n"; - state.file <- Some file; - Content.from_dot_with_commands ~packing file - | None -> - raise Not_found - in - state.content <- Some content; - state.window#show (); - view#adapt_zoom () - - with Not_found -> - if debug then printf "No model\n" - -let all_files () = - let f = GFile.filter ~name:"All" () in - f#add_pattern "*" ; - f - -let open_file state ~packing () = - let dialog = - GWindow.file_chooser_dialog - ~action:`OPEN - ~title:"Open File" - ~parent:state.window () - in - dialog#add_button_stock `CANCEL `CANCEL ; - dialog#add_select_button_stock `OPEN `OPEN ; - dialog#add_filter (all_files ()) ; - match dialog#run () with - | `OPEN -> - state.file <- dialog#filename; - dialog#destroy (); - update_state state ~packing - | `DELETE_EVENT | `CANCEL -> dialog#destroy () - -let create_menu state ~packing = - let ui_m = GAction.ui_manager () in - let actions = GAction.action_group ~name:"Actions" () in - GAction.add_actions actions [ - GAction.add_action "FileMenu" ~label:"File" ; - GAction.add_action "Open" ~label:"Open" ~accel:"o" ~stock:`OPEN - ~callback:(fun _ -> open_file state ~packing ()); - GAction.add_action - "Zoom fit" ~label:"Zoom fit" ~accel:"t" ~stock:`ZOOM_FIT - ~callback:(fun _ -> match state.content with - |None -> () - |Some (_,v) -> v#adapt_zoom ()); - GAction.add_action "Quit" ~label:"Quit" ~accel:"q" ~stock:`QUIT - ~callback:(fun _ -> GMain.Main.quit ()); - ]; - ui_m#insert_action_group actions 0 ; - ignore $ ui_m#add_ui_from_string menu_desc; - ui_m - -(* Main loop *) - -let main () = - (* GUI *) - let state = init_state () in - let vbox = - GPack.vbox ~border_width:4 ~spacing:4 ~packing:state.window#add () - in - let packing = vbox#pack ~expand:true ~fill:true in - (* Menu *) - let ui_m = create_menu state ~packing in - state.window#add_accel_group ui_m#get_accel_group ; - vbox#pack ~expand:false (ui_m#get_widget "/MenuBar"); - ignore $ state.window#connect#destroy ~callback:GMain.Main.quit; - if debug then printf "GUI built, time: %f\n" (Sys.time ()); - update_state state ~packing; - state.window#show (); - GMain.Main.main () - -(* [JS 2009/09/21] Printexc.print prevents to use ocaml < 3.11 *) -let _ = (*Printexc.print*) main () diff --git a/jscomp/build_tests/ocamlgraph/dgraph/doc/style.css b/jscomp/build_tests/ocamlgraph/dgraph/doc/style.css deleted file mode 100755 index c0a80f3d33..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/doc/style.css +++ /dev/null @@ -1,33 +0,0 @@ -a:visited {color : #416DFF; text-decoration : none; } -a:link {color : #416DFF; text-decoration : none;} -a:hover {color : Red; text-decoration : none; background-color: #5FFF88} -a:active {color : Red; text-decoration : underline; } -.keyword { font-weight : bold ; color : Red } -.keywordsign { color : #C04600 } -.superscript { font-size : 4 } -.subscript { font-size : 4 } -.comment { color : Green } -.constructor { color : Blue } -.type { color : #5C6585 } -.string { color : Maroon } -.warning { color : Red ; font-weight : bold } -.info { margin-left : 3em; margin-right : 3em } -.param_info { margin-top: 4px; margin-left : 3em; margin-right : 3em } -.code { color : #465F91 ; } -h1 { font-size : 20pt ; text-align: center; } -h2 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #90BDFF ;padding: 2px; } -h3 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #90DDFF ;padding: 2px; } -h4 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #90EDFF ;padding: 2px; } -h5 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #90FDFF ;padding: 2px; } -h6 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #C0FFFF ; padding: 2px; } -div.h7 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #E0FFFF ; padding: 2px; } -div.h8 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #F0FFFF ; padding: 2px; } -div.h9 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #FFFFFF ; padding: 2px; } -.typetable { border-style : hidden } -.indextable { border-style : hidden } -.paramstable { border-style : hidden ; padding: 5pt 5pt} -body { background-color : White } -tr { background-color : White } -td.typefieldcomment { background-color : #FFFFFF ; font-size: smaller ;} -pre { margin-bottom: 4px } -div.sig_block {margin-left: 2em} \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/awilliams.gv b/jscomp/build_tests/ocamlgraph/dgraph/examples/awilliams.gv deleted file mode 100755 index 7f01a145c1..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/awilliams.gv +++ /dev/null @@ -1,188 +0,0 @@ -digraph pvn { - ordering=out; - - node_1 -> node_2; - node_1 [label="ID: 1\ntype: 48\nnbr out: 0\nnbr chi: 11"]; - node_2 [label="ID: 2\ntype: 8\nnbr out: 0\nnbr chi: 0"]; - node_1 -> node_3; - node_3 [label="ID: 3\ntype: 1\nnbr out: 0\nnbr chi: 0"]; - node_1 -> node_4; - node_4 [label="ID: 4\ntype: 6\nnbr out: 0\nnbr chi: 0"]; - node_1 -> node_5; - node_5 [label="ID: 5\ntype: 14\nnbr out: 0\nnbr chi: 0"]; - node_1 -> node_6; - node_6 [label="ID: 6\ntype: 14\nnbr out: 0\nnbr chi: 0"]; - node_1 -> node_7; - node_7 [label="ID: 7\ntype: 49\nnbr out: 0\nnbr chi: 0"]; - node_7 -> node_8; - node_8 [label="ID: 8\ntype: 45\nnbr out: 2\nnbr chi: 0"]; - node_8 -> node_9; - node_9 [label="ID: 9\ntype: 48\nnbr out: 0\nnbr chi: 4"]; - node_9 -> node_10; - node_10 [label="ID: 10\ntype: 8\nnbr out: 0\nnbr chi: 0"]; - node_9 -> node_11; - node_11 [label="ID: 11\ntype: 1\nnbr out: 0\nnbr chi: 0"]; - node_9 -> node_12; - node_12 [label="ID: 12\ntype: 5\nnbr out: 0\nnbr chi: 0"]; - node_9 -> node_13; - node_13 [label="ID: 13\ntype: 16\nnbr out: 0\nnbr chi: 0"]; - node_8 -> node_14; - node_14 [label="ID: 14\ntype: 39\nnbr out: 1\nnbr chi: 0"]; - node_14 -> node_15; - node_15 [label="ID: 15\ntype: 55\nnbr out: 0\nnbr chi: 0"]; - node_15 -> node_16; - node_16 [label="ID: 16\ntype: 48\nnbr out: 0\nnbr chi: 3"]; - node_16 -> node_17; - node_17 [label="ID: 17\ntype: 1\nnbr out: 0\nnbr chi: 0"]; - node_16 -> node_18; - node_18 [label="ID: 18\ntype: 6\nnbr out: 0\nnbr chi: 0"]; - node_16 -> node_19; - node_19 [label="ID: 19\ntype: 45\nnbr out: 1\nnbr chi: 0"]; - node_19 -> node_20; - node_20 [label="ID: 20\ntype: 48\nnbr out: 0\nnbr chi: 5"]; - node_20 -> node_21; - node_21 [label="ID: 21\ntype: 38\nnbr out: 0\nnbr chi: 0"]; - node_20 -> node_22; - node_22 [label="ID: 22\ntype: 8\nnbr out: 0\nnbr chi: 0"]; - node_20 -> node_23; - node_23 [label="ID: 23\ntype: 1\nnbr out: 0\nnbr chi: 0"]; - node_20 -> node_24; - node_24 [label="ID: 24\ntype: 5\nnbr out: 0\nnbr chi: 0"]; - node_20 -> node_25; - node_25 [label="ID: 25\ntype: 16\nnbr out: 0\nnbr chi: 0"]; - node_19 -> node_26; - node_26 [label="ID: 26\ntype: 41\nnbr out: 12\nnbr chi: 0"]; - node_26 -> node_27; - node_27 [label="ID: 27\ntype: 48\nnbr out: 0\nnbr chi: 5"]; - node_27 -> node_28; - node_28 [label="ID: 28\ntype: 38\nnbr out: 0\nnbr chi: 0"]; - node_27 -> node_29; - node_29 [label="ID: 29\ntype: 8\nnbr out: 0\nnbr chi: 0"]; - node_27 -> node_30; - node_30 [label="ID: 30\ntype: 1\nnbr out: 0\nnbr chi: 0"]; - node_27 -> node_31; - node_31 [label="ID: 31\ntype: 5\nnbr out: 0\nnbr chi: 0"]; - node_27 -> node_32; - node_32 [label="ID: 32\ntype: 16\nnbr out: 0\nnbr chi: 0"]; - node_26 -> node_27; - node_26 -> node_27; - node_26 -> node_27; - node_26 -> node_27; - node_26 -> node_27; - node_26 -> node_27; - node_26 -> node_27; - node_26 -> node_27; - node_26 -> node_27; - node_26 -> node_27; - node_26 -> node_27; - node_26 -> node_33; - node_33 [label="ID: 33\ntype: 48\nnbr out: 0\nnbr chi: 5"]; - node_33 -> node_34; - node_34 [label="ID: 34\ntype: 38\nnbr out: 0\nnbr chi: 0"]; - node_33 -> node_35; - node_35 [label="ID: 35\ntype: 14\nnbr out: 0\nnbr chi: 0"]; - node_33 -> node_36; - node_36 [label="ID: 36\ntype: 14\nnbr out: 0\nnbr chi: 0"]; - node_33 -> node_37; - node_37 [label="ID: 37\ntype: 20\nnbr out: 0\nnbr chi: 0"]; - node_33 -> node_38; - node_38 [label="ID: 38\ntype: 16\nnbr out: 0\nnbr chi: 0"]; - node_15 -> node_39; - node_39 [label="ID: 39\ntype: 45\nnbr out: 1\nnbr chi: 0"]; - node_39 -> node_40; - node_40 [label="ID: 40\ntype: 16\nnbr out: 0\nnbr chi: 0"]; - node_39 -> node_41; - node_41 [label="ID: 41\ntype: 48\nnbr out: 0\nnbr chi: 3"]; - node_41 -> node_42; - node_42 [label="ID: 42\ntype: 14\nnbr out: 0\nnbr chi: 0"]; - node_41 -> node_43; - node_43 [label="ID: 43\ntype: 1\nnbr out: 0\nnbr chi: 0"]; - node_41 -> node_44; - node_44 [label="ID: 44\ntype: 6\nnbr out: 0\nnbr chi: 0"]; - node_15 -> node_45; - node_45 [label="ID: 45\ntype: 48\nnbr out: 0\nnbr chi: 4"]; - node_45 -> node_46; - node_46 [label="ID: 46\ntype: 14\nnbr out: 0\nnbr chi: 0"]; - node_45 -> node_47; - node_47 [label="ID: 47\ntype: 45\nnbr out: 1\nnbr chi: 0"]; - node_47 -> node_48; - node_48 [label="ID: 48\ntype: 14\nnbr out: 0\nnbr chi: 0"]; - node_47 -> node_49; - node_49 [label="ID: 49\ntype: 14\nnbr out: 0\nnbr chi: 0"]; - node_45 -> node_50; - node_50 [label="ID: 50\ntype: 14\nnbr out: 0\nnbr chi: 0"]; - node_45 -> node_51; - node_51 [label="ID: 51\ntype: 45\nnbr out: 1\nnbr chi: 0"]; - node_51 -> node_52; - node_52 [label="ID: 52\ntype: 45\nnbr out: 1\nnbr chi: 0"]; - node_52 -> node_53; - node_53 [label="ID: 53\ntype: 54\nnbr out: 0\nnbr chi: 0"]; - node_52 -> node_54; - node_54 [label="ID: 54\ntype: 16\nnbr out: 0\nnbr chi: 0"]; - node_51 -> node_55; - node_55 [label="ID: 55\ntype: 48\nnbr out: 0\nnbr chi: 3"]; - node_55 -> node_56; - node_56 [label="ID: 56\ntype: 14\nnbr out: 0\nnbr chi: 0"]; - node_55 -> node_57; - node_57 [label="ID: 57\ntype: 1\nnbr out: 0\nnbr chi: 0"]; - node_55 -> node_58; - node_58 [label="ID: 58\ntype: 6\nnbr out: 0\nnbr chi: 0"]; - node_15 -> node_59; - node_59 [label="ID: 59\ntype: 48\nnbr out: 0\nnbr chi: 5"]; - node_59 -> node_60; - node_60 [label="ID: 60\ntype: 38\nnbr out: 0\nnbr chi: 0"]; - node_59 -> node_61; - node_61 [label="ID: 61\ntype: 8\nnbr out: 0\nnbr chi: 0"]; - node_59 -> node_62; - node_62 [label="ID: 62\ntype: 1\nnbr out: 0\nnbr chi: 0"]; - node_59 -> node_63; - node_63 [label="ID: 63\ntype: 5\nnbr out: 0\nnbr chi: 0"]; - node_59 -> node_64; - node_64 [label="ID: 64\ntype: 16\nnbr out: 0\nnbr chi: 0"]; - node_15 -> node_65; - node_65 [label="ID: 65\ntype: 48\nnbr out: 0\nnbr chi: 5"]; - node_65 -> node_66; - node_66 [label="ID: 66\ntype: 38\nnbr out: 0\nnbr chi: 0"]; - node_65 -> node_67; - node_67 [label="ID: 67\ntype: 14\nnbr out: 0\nnbr chi: 0"]; - node_65 -> node_68; - node_68 [label="ID: 68\ntype: 14\nnbr out: 0\nnbr chi: 0"]; - node_65 -> node_69; - node_69 [label="ID: 69\ntype: 20\nnbr out: 0\nnbr chi: 0"]; - node_65 -> node_70; - node_70 [label="ID: 70\ntype: 16\nnbr out: 0\nnbr chi: 0"]; - node_14 -> node_71; - node_71 [label="ID: 71\ntype: 45\nnbr out: 1\nnbr chi: 0"]; - node_71 -> node_72; - node_72 [label="ID: 72\ntype: 16\nnbr out: 0\nnbr chi: 0"]; - node_71 -> node_73; - node_73 [label="ID: 73\ntype: 48\nnbr out: 0\nnbr chi: 3"]; - node_73 -> node_74; - node_74 [label="ID: 74\ntype: 14\nnbr out: 0\nnbr chi: 0"]; - node_73 -> node_75; - node_75 [label="ID: 75\ntype: 1\nnbr out: 0\nnbr chi: 0"]; - node_73 -> node_76; - node_76 [label="ID: 76\ntype: 6\nnbr out: 0\nnbr chi: 0"]; - node_8 -> node_77; - node_77 [label="ID: 77\ntype: 45\nnbr out: 1\nnbr chi: 0"]; - node_77 -> node_78; - node_78 [label="ID: 78\ntype: 16\nnbr out: 0\nnbr chi: 0"]; - node_77 -> node_79; - node_79 [label="ID: 79\ntype: 48\nnbr out: 0\nnbr chi: 3"]; - node_79 -> node_80; - node_80 [label="ID: 80\ntype: 14\nnbr out: 0\nnbr chi: 0"]; - node_79 -> node_81; - node_81 [label="ID: 81\ntype: 1\nnbr out: 0\nnbr chi: 0"]; - node_79 -> node_82; - node_82 [label="ID: 82\ntype: 6\nnbr out: 0\nnbr chi: 0"]; - node_1 -> node_83; - node_83 [label="ID: 83\ntype: 38\nnbr out: 0\nnbr chi: 0"]; - node_1 -> node_84; - node_84 [label="ID: 84\ntype: 8\nnbr out: 0\nnbr chi: 0"]; - node_1 -> node_85; - node_85 [label="ID: 85\ntype: 1\nnbr out: 0\nnbr chi: 0"]; - node_1 -> node_86; - node_86 [label="ID: 86\ntype: 5\nnbr out: 0\nnbr chi: 0"]; - node_1 -> node_87; - node_87 [label="ID: 87\ntype: 16\nnbr out: 0\nnbr chi: 0"]; -} diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/clusters.dot b/jscomp/build_tests/ocamlgraph/dgraph/examples/clusters.dot deleted file mode 100755 index 67dcd4c249..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/clusters.dot +++ /dev/null @@ -1,27 +0,0 @@ -digraph G { - - subgraph cluster_0 { - style=filled; - color=lightgrey; - node [style=filled,color=white]; - a0 -> a1 -> a2 -> a3; - label = "process #1"; - } - - subgraph cluster_1 { - node [style=filled]; - b0 -> b1 -> b2 -> b3; - label = "process #2"; - color=blue - } - start -> a0; - start -> b0; - a1 -> b3; - b2 -> a3; - a3 -> a0; - a3 -> end; - b3 -> end; - - start [shape=Mdiamond]; - end [shape=Msquare]; -} diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/clusters.svg b/jscomp/build_tests/ocamlgraph/dgraph/examples/clusters.svg deleted file mode 100755 index 0b5fdc781f..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/clusters.svg +++ /dev/null @@ -1,137 +0,0 @@ - - -]> - - - - -G - -cluster0 - -process #1 - -cluster1 - -process #2 - - -a0 - -a0 - - -a1 - -a1 - - -a0->a1 - - - - -a2 - -a2 - - -a1->a2 - - - - -b3 - -b3 - - -a1->b3 - - - - -a3 - -a3 - - -a2->a3 - - - - -a3->a0 - - - - -end - - - - - -end - - -a3->end - - - - -b0 - -b0 - - -b1 - -b1 - - -b0->b1 - - - - -b2 - -b2 - - -b1->b2 - - - - -b2->a3 - - - - -b2->b3 - - - - -start - -start - - -start->a0 - - - - -start->b0 - - - - - diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/clusters_with_edges.dot b/jscomp/build_tests/ocamlgraph/dgraph/examples/clusters_with_edges.dot deleted file mode 100755 index af8463bf71..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/clusters_with_edges.dot +++ /dev/null @@ -1,19 +0,0 @@ -digraph G { - compound=true; - subgraph cluster0 { - a -> b; - a -> c; - b -> d; - c -> d; - } - subgraph cluster1 { - e -> g; - e -> f; - } - b -> f [lhead=cluster1]; - d -> e; - c -> g [ltail=cluster0, - lhead=cluster1]; - c -> e [ltail=cluster0]; - d -> h; -} diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/crazy.dot b/jscomp/build_tests/ocamlgraph/dgraph/examples/crazy.dot deleted file mode 100755 index b51d4987f9..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/crazy.dot +++ /dev/null @@ -1,104 +0,0 @@ -digraph "unix" { - graph [ fontname = "Helvetica-Oblique", - fontsize = 36, - label = "\n\n\n\nObject Oriented Graphs\nStephen North, 3/19/93", - size = "6,6" ]; - node [ shape = polygon, - sides = 4, - distortion = "0.0", - orientation = "0.0", - skew = "0.0", - color = white, - style = filled, - fontname = "Helvetica-Outline" ]; - "5th Edition" [sides=9, distortion="0.936354", orientation=28, skew="-0.126818", color=salmon2]; - "6th Edition" [sides=5, distortion="0.238792", orientation=11, skew="0.995935", color=deepskyblue]; - "PWB 1.0" [sides=8, distortion="0.019636", orientation=79, skew="-0.440424", color=goldenrod2]; - LSX [sides=9, distortion="-0.698271", orientation=22, skew="-0.195492", color=burlywood2]; - "1 BSD" [sides=7, distortion="0.265084", orientation=26, skew="0.403659", color=gold1]; - "Mini Unix" [distortion="0.039386", orientation=2, skew="-0.461120", color=greenyellow]; - Wollongong [sides=5, distortion="0.228564", orientation=63, skew="-0.062846", color=darkseagreen]; - Interdata [distortion="0.624013", orientation=56, skew="0.101396", color=dodgerblue1]; - "Unix/TS 3.0" [sides=8, distortion="0.731383", orientation=43, skew="-0.824612", color=thistle2]; - "PWB 2.0" [sides=6, distortion="0.592100", orientation=34, skew="-0.719269", color=darkolivegreen3]; - "7th Edition" [sides=10, distortion="0.298417", orientation=65, skew="0.310367", color=chocolate]; - "8th Edition" [distortion="-0.997093", orientation=50, skew="-0.061117", color=turquoise3]; - "32V" [sides=7, distortion="0.878516", orientation=19, skew="0.592905", color=steelblue3]; - V7M [sides=10, distortion="-0.960249", orientation=32, skew="0.460424", color=navy]; - "Ultrix-11" [sides=10, distortion="-0.633186", orientation=10, skew="0.333125", color=darkseagreen4]; - Xenix [sides=8, distortion="-0.337997", orientation=52, skew="-0.760726", color=coral]; - "UniPlus+" [sides=7, distortion="0.788483", orientation=39, skew="-0.526284", color=darkolivegreen3]; - "9th Edition" [sides=7, distortion="0.138690", orientation=55, skew="0.554049", color=coral3]; - "2 BSD" [sides=7, distortion="-0.010661", orientation=84, skew="0.179249", color=blanchedalmond]; - "2.8 BSD" [distortion="-0.239422", orientation=44, skew="0.053841", color=lightskyblue1]; - "2.9 BSD" [distortion="-0.843381", orientation=70, skew="-0.601395", color=aquamarine2]; - "3 BSD" [sides=10, distortion="0.251820", orientation=18, skew="-0.530618", color=lemonchiffon]; - "4 BSD" [sides=5, distortion="-0.772300", orientation=24, skew="-0.028475", color=darkorange1]; - "4.1 BSD" [distortion="-0.226170", orientation=38, skew="0.504053", color=lightyellow1]; - "4.2 BSD" [sides=10, distortion="-0.807349", orientation=50, skew="-0.908842", color=darkorchid4]; - "4.3 BSD" [sides=10, distortion="-0.030619", orientation=76, skew="0.985021", color=lemonchiffon2]; - "Ultrix-32" [distortion="-0.644209", orientation=21, skew="0.307836", color=goldenrod3]; - "PWB 1.2" [sides=7, distortion="0.640971", orientation=84, skew="-0.768455", color=cyan]; - "USG 1.0" [distortion="0.758942", orientation=42, skew="0.039886", color=blue]; - "CB Unix 1" [sides=9, distortion="-0.348692", orientation=42, skew="0.767058", color=firebrick]; - "USG 2.0" [distortion="0.748625", orientation=74, skew="-0.647656", color=chartreuse4]; - "CB Unix 2" [sides=10, distortion="0.851818", orientation=32, skew="-0.020120", color=greenyellow]; - "CB Unix 3" [sides=10, distortion="0.992237", orientation=29, skew="0.256102", color=bisque4]; - "Unix/TS++" [sides=6, distortion="0.545461", orientation=16, skew="0.313589", color=mistyrose2]; - "PDP-11 Sys V" [sides=9, distortion="-0.267769", orientation=40, skew="0.271226", color=cadetblue1]; - "USG 3.0" [distortion="-0.848455", orientation=44, skew="0.267152", color=bisque2]; - "Unix/TS 1.0" [distortion="0.305594", orientation=75, skew="0.070516", color=orangered]; - "TS 4.0" [sides=10, distortion="-0.641701", orientation=50, skew="-0.952502", color=crimson]; - "System V.0" [sides=9, distortion="0.021556", orientation=26, skew="-0.729938", color=darkorange1]; - "System V.2" [sides=6, distortion="0.985153", orientation=33, skew="-0.399752", color=darkolivegreen4]; - "System V.3" [sides=7, distortion="-0.687574", orientation=58, skew="-0.180116", color=lightsteelblue1]; - "5th Edition" -> "6th Edition"; - "5th Edition" -> "PWB 1.0"; - "6th Edition" -> LSX; - "6th Edition" -> "1 BSD"; - "6th Edition" -> "Mini Unix"; - "6th Edition" -> Wollongong; - "6th Edition" -> Interdata; - Interdata -> "Unix/TS 3.0"; - Interdata -> "PWB 2.0"; - Interdata -> "7th Edition"; - "7th Edition" -> "8th Edition"; - "7th Edition" -> "32V"; - "7th Edition" -> V7M; - "7th Edition" -> "Ultrix-11"; - "7th Edition" -> Xenix; - "7th Edition" -> "UniPlus+"; - V7M -> "Ultrix-11"; - "8th Edition" -> "9th Edition"; - "1 BSD" -> "2 BSD"; - "2 BSD" -> "2.8 BSD"; - "2.8 BSD" -> "Ultrix-11"; - "2.8 BSD" -> "2.9 BSD"; - "32V" -> "3 BSD"; - "3 BSD" -> "4 BSD"; - "4 BSD" -> "4.1 BSD"; - "4.1 BSD" -> "4.2 BSD"; - "4.1 BSD" -> "2.8 BSD"; - "4.1 BSD" -> "8th Edition"; - "4.2 BSD" -> "4.3 BSD"; - "4.2 BSD" -> "Ultrix-32"; - "PWB 1.0" -> "PWB 1.2"; - "PWB 1.0" -> "USG 1.0"; - "PWB 1.2" -> "PWB 2.0"; - "USG 1.0" -> "CB Unix 1"; - "USG 1.0" -> "USG 2.0"; - "CB Unix 1" -> "CB Unix 2"; - "CB Unix 2" -> "CB Unix 3"; - "CB Unix 3" -> "Unix/TS++"; - "CB Unix 3" -> "PDP-11 Sys V"; - "USG 2.0" -> "USG 3.0"; - "USG 3.0" -> "Unix/TS 3.0"; - "PWB 2.0" -> "Unix/TS 3.0"; - "Unix/TS 1.0" -> "Unix/TS 3.0"; - "Unix/TS 3.0" -> "TS 4.0"; - "Unix/TS++" -> "TS 4.0"; - "CB Unix 3" -> "TS 4.0"; - "TS 4.0" -> "System V.0"; - "System V.0" -> "System V.2"; - "System V.2" -> "System V.3"; -} diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/crazy2.dot b/jscomp/build_tests/ocamlgraph/dgraph/examples/crazy2.dot deleted file mode 100755 index ea5fd0bd6f..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/crazy2.dot +++ /dev/null @@ -1,15 +0,0 @@ -digraph "unix" { - graph [ fontname = "Helvetica-Oblique", - fontsize = 36, - label = "\n\n\n\nObject Oriented Graphs\nStephen North, 3/19/93", - size = "6,6" ]; - node [ shape = polygon, - sides = 4, - distortion = "0.0", - orientation = "0.0", - skew = "0.0", - color = blue, - style = filled, - fontname = "Helvetica-Outline" ]; - "CB Unix 2" [sides=10, distortion="0.851818", orientation=32, skew="-0.020120", color=greenyellow]; -} diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/dep.dot b/jscomp/build_tests/ocamlgraph/dgraph/examples/dep.dot deleted file mode 100755 index a597b53547..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/dep.dot +++ /dev/null @@ -1,741 +0,0 @@ -digraph G { - ""; - "-slice-loop-var is set"; - "-inout is set"; - "-sparecode-verbose is set"; - "message_table"; - "-copy is set"; - "contextfree_only_globals"; - " is set"; - "Components.compute"; - "-scg-help"; - "-security-analysis"; - "-continue-annot-error"; - "-orig-name"; - "-dominators-verbose is set"; - "pdg_node lattice_set offsetmap_bitwise G[base] ptmap hashconsing_table 9"; - "-dominators-help is set"; - "-cg-init-func"; - "(bool lattice_base, bool lattice_base) lattice_product offsetmap_bitwise G[base] ptmap hashconsing_table 10"; - "Cluster_info offsetmaphashconsing_table"; - "(bool lattice_base, bool lattice_base) lattice_product offsetmap_bitwise G[base] ptmap hashconsing_table 12"; - "-overflow is set"; - "-journal-enable"; - "-occurrence-verbose is set"; - "-slicing-verbose"; - "-unicode"; - "-debug is set"; - "message_counter"; - "-slicing-keep-annotations"; - "-security-help is set"; - "Users"; - "-cg-help is set"; - "big_int lattice_mod G[base] ptmap hashconsing_table 3"; - "-slice-undef-functions is set"; - "-value-debug is set"; - "-sparecode-analysis"; - "-simplify-cfg is set"; - "-no-type"; - "V_Or_Uninitialized offsetmap G[base] ptmap hashconsing_table 6"; - "postdominator"; - "-obfuscate"; - "FileIndex"; - "-slicing-level is set"; - "int lattice_set offsetmap_bitwise G[base] ptmap hashconsing_table 13"; - "-impact-pragma is set"; - "Components.Nodes"; - "-pdg is set"; - "Dynamic_Alloc_Table"; - "-sparecode-debug is set"; - "-scope-help is set"; - "-security-debug"; - "-input is set"; - "-slice-pragma"; - "Annotations"; - "Components"; - "-quiet is set"; - "-slice-loop-inv is set"; - "-security-verbose is set"; - "-metrics-debug"; - "-dump-dependencies"; - "-slice-assert is set"; - "-value-verbose"; - "-wp-help is set"; - "-cast-from-constant"; - "-inout-debug is set"; - "-cpp-extra-args"; - "FileIndex.compute"; - "-lib-entry"; - "-unspecified-access"; - "-security-annotation"; - "Globals.Vars"; - "-users-verbose"; - "builtin logic functions table"; - "-slice-return"; - "-sparecode-help"; - "-security-analysis is set"; - "-no-obj"; - "-float-digits"; - "-annot"; - "-cg is set"; - "-impact-help is set"; - "-ocode is set"; - "-impact-verbose is set"; - "-users-debug is set"; - "-wp-cfg"; - "-wp-help"; - "-slice-calls"; - "-security-annotation is set"; - "-print"; - "alarms"; - "-constfold is set"; - "-slice-rd"; - "-deps is set"; - "-machdep is set"; - "logic types table"; - "-val is set"; - "UseRelations"; - "-sparecode-help is set"; - "-slice-loop-var"; - "-semantic-const-fold"; - "-main is set"; - "AST"; - "FormalsDecl"; - "-out-external"; - "-wp-cfg is set"; - "-value-help is set"; - "external_inputs"; - "-scope-debug is set"; - "-from-help is set"; - "internal_inouts"; - "-security-lattice is set"; - "-inout-help is set"; - "metrics"; - "-memory-footprint is set"; - "-impact-slicing"; - "-print-path"; - "-scf-help"; - "-metrics-verbose"; - "!Db.Value.compute"; - "-overflow"; - "-semantic-const-fold is set"; - "callwise_from"; - "vid"; - "-verbose"; - "-security-slicing"; - "-input-with-formals is set"; - "-slevel is set"; - "-value-debug"; - "Leaf_Table"; - "-dominators-verbose"; - "-dominators-debug"; - "-semantic-const-folding"; - "-cpp-command"; - "-add-path is set"; - "-val"; - "-slice-calls is set"; - "-unicode is set"; - "-pdg-help"; - "-wp-proof"; - "-slice-value"; - "-help is set"; - "-users-help is set"; - "-scf-help is set"; - "-occurrence-debug is set"; - "-verbose is set"; - "called_functions"; - "-deref"; - "-version is set"; - "Location_Bytes offsetmaphashconsing_table"; - "-cg-verbose"; - "-debug"; - "-ulevel"; - "-context-valid-pointers is set"; - "-keep-switch"; - "-pdg-debug"; - "File.t"; - "Functions"; - "value_table"; - "-load-module is set"; - "-time is set"; - "-security-help"; - "-slicing-debug"; - "-input-with-formals"; - "Buckx.MemoryFootprint"; - "-dump-dependencies is set"; - "-slice-wr is set"; - "-wp-bot is set"; - "-slicing-help"; - "-scg-verbose is set"; - "-occurrence"; - "-cast-from-constant is set"; - "-security-slicing is set"; - "-propagate-top"; - "-ulevel is set"; - "-scg-init-func is set"; - "unit G[base] ptmap hashconsing_table 2"; - "-metrics-debug is set"; - "-journal-name"; - "Pdg.State"; - "internal_outs"; - "-keep-switch is set"; - "-wp-dot is set"; - "((bool lattice_base, bool lattice_base) lattice_product, (bool lattice_base, bool lattice_base) lattice_product) lattice_product offsetmap_bitwise G[base] ptmap hashconsing_table 11"; - "-typecheck is set"; - "-load-script"; - "builtin logic contructors table"; - "-slicing-debug is set"; - "-wp-builtin-why-file"; - "-pp-annot is set"; - "-no-obj is set"; - "-memory-footprint"; - "-from-debug is set"; - "BuiltinFunctions"; - "CurrentLoc"; - "SCQueue"; - "Binary_cache.MemoryFootprint"; - "-save"; - "-copy"; - "-scf-debug is set"; - "-journal-name is set"; - "-slice-print is set"; - "vglobals"; - "-impact-slicing is set"; - "reachable_stmts"; - "unit G[varinfo] ptmap hashconsing_table 1"; - "-slice-wr"; - "-occurrence-verbose"; - "external_derefs"; - "-slice-value is set"; - "Callers"; - "Mem_Exec"; - "-metrics-dump"; - "-slicing-level"; - "sid"; - "-slicing-help is set"; - "-journal-enable is set"; - "base"; - "Int_Intervals G[base] ptmap hashconsing_table 4"; - "-dominators-debug is set"; - "VarInfos"; - "-safe-arrays"; - "Slicing.Project"; - "Untyped AST"; - "-keep-comments"; - "-metrics-dump is set"; - "-klr is set"; - "-constfold"; - "-sparecode-annot"; - "-mem-exec-all is set"; - "-access-path is set"; - "-inout-verbose is set"; - "SemanticsServicestate"; - "-dot-postdom"; - "-occurrence-debug"; - "external_outs"; - "-context-valid-pointers"; - "logic functions table"; - "-slicing-verbose is set"; - "-load"; - "-metrics-help is set"; - "-wp-dot"; - "-timeout"; - "-context-width is set"; - "-security-lattice"; - "eid"; - "-plevel is set"; - "-inout-debug"; - "!Db.From.compute_all"; - "Sparecode"; - "Widen.Hints"; - "-cg"; - "-main"; - "logic contructors table"; - "-no-type is set"; - "-cpp-command is set"; - "LoopStmts"; - "-slice-assert"; - "-rm-unused-globals"; - "-check"; - "-wp-proof is set"; - "Location_Bytes offsetmap G[base] ptmap hashconsing_table 7"; - "-orig-name is set"; - "-pdg-help is set"; - "-scf-verbose"; - "-rm-unused-globals is set"; - "-slicing-keep-annotations is set"; - "-impact-print"; - "-scg-init-func"; - "-scg"; - "-fct-pdg is set"; - "-mem-exec is set"; - "-load is set"; - "natural_loops"; - "-scf-verbose is set"; - "Components.Annotations"; - "-absolute-valid-range"; - "-context-depth is set"; - "-cg-help"; - "-dot-pdg"; - "-pdg-debug is set"; - "-slice-print"; - "-impact-help"; - "MinValidAbsoluteAddress"; - "-slice-callers"; - "Occurrence.compute"; - "-context-width"; - "-from-help"; - "-from-debug"; - "-slice-return is set"; - "-typecheck"; - "-impact-print is set"; - "-deref is set"; - "is_called"; - "-quiet"; - "-cg-init-func is set"; - "-users-debug"; - "Cluster_info offsetmap G[base] ptmap hashconsing_table 8"; - "external_inouts"; - "-klr"; - "-scg-debug"; - "-wp-verbose"; - "-add-path"; - "-plevel"; - "SGState"; - "-continue-annot-error is set"; - "-save is set"; - "-occurrence is set"; - "-input"; - "-pdg-verbose is set"; - "-help"; - "-wp-bot"; - "-sparecode-debug"; - "-load-script is set"; - "-fct-pdg"; - "-codpds is set"; - "-wp-debug is set"; - "-security-propagate-assertions"; - "-pp-annot"; - "internal derefs"; - "-machdep"; - "-users"; - "-propagate-top is set"; - "-slice-undef-functions"; - "-print-libpath is set"; - "-scf-debug"; - "-deps"; - "-metrics"; - "-scg is set"; - "-occurrence-help"; - "V_Or_Uninitialized offsetmaphashconsing_table"; - "-wp-mm"; - "-users-verbose is set"; - "-timeout is set"; - "-ocode"; - "-print is set"; - "-wlevel is set"; - "-semantic-const-folding is set"; - "-unspecified-access is set"; - "-version"; - "-obfuscate is set"; - "-metrics-verbose is set"; - "-from-verbose"; - "-impact-debug"; - "KF"; - "-cpp-extra-args is set"; - "dominator"; - "internal_inputs"; - "-inout"; - "MaxValidAbsoluteAddress"; - "Occurrences.LastResult"; - "-float-digits is set"; - "Sparecode.Globs.Result"; - "syntactic callgraph"; - "-mem-exec"; - "-out is set"; - "-dot-postdom is set"; - "-check is set"; - "Eval.Got_Imprecise_Value"; - "-value-verbose is set"; - "with_formals_inputs"; - "-print-path is set"; - "-out"; - "-wp-fct"; - "Never_Terminates"; - "-occurrence-help is set"; - "-context-depth"; - "-wp-behav is set"; - "GlobalAnnotations"; - "-wlevel"; - "-calldeps is set"; - "-pdg-verbose"; - "-metrics-help"; - "-slice-threat"; - "-scope-verbose"; - "-annot is set"; - "Non linear assignments"; - "-scg-verbose"; - "-wp-builtin-why-file is set"; - "-keep-comments is set"; - "-simplify-cfg"; - "-slice-loop-inv"; - "-absolute-valid-range is set"; - "-wp-verbose is set"; - "-wp-fct is set"; - "-access-path"; - "-warn-unspecified-order"; - "-users is set"; - "-inout-help"; - "-scope-debug"; - "-out-external is set"; - "-inout-verbose"; - "-pdg"; - "-sparecode-analysis is set"; - "-slevel"; - "-print-plugin-path"; - "-cg-verbose is set"; - "theMachine"; - "-load-module"; - "-users-help"; - "-security-propagate-assertions is set"; - "-metrics is set"; - "-impact-verbose"; - "-slice-rd is set"; - "-scg-help is set"; - "-sparecode-annot is set"; - "-slice-callers is set"; - "builtin logic types table"; - "-security-debug is set"; - "-wp-mm is set"; - "-print-libpath"; - "-security-verbose"; - "Int_Intervals map_lattice offsetmap_bitwise G[base] ptmap hashconsing_table 5"; - "-cg-debug is set"; - "-scg-debug is set"; - "-warn-unspecified-order is set"; - "-impact-debug is set"; - "-wp-debug"; - "-scope-verbose is set"; - "-wp-behav"; - "-value-help"; - "-time"; - "-print-plugin-path is set"; - "-slice-threat is set"; - "-dot-pdg is set"; - "-mem-exec-all"; - "-lib-entry is set"; - "-sparecode-verbose"; - "Occurrences.State"; - "-safe-arrays is set"; - "-codpds"; - "-dominators-help"; - "-scope-help"; - "-slice-pragma is set"; - "-calldeps"; - "-from-verbose is set"; - "Constant_Propagation"; - "-cg-debug"; - "functionwise_from"; - "compinfokey"; - "-impact-pragma"; - - - "" -> " is set"; - "" -> "File.t"; - "Components.compute" -> "Components"; - "Components.compute" -> "Components.Nodes"; - "-scg-help" -> "-scg-help is set"; - "-security-analysis" -> "-security-analysis is set"; - "-continue-annot-error" -> "-continue-annot-error is set"; - "-orig-name" -> "-orig-name is set"; - "-cg-init-func" -> "-cg-init-func is set"; - "-journal-enable" -> "-journal-enable is set"; - "-slicing-verbose" -> "-slicing-verbose is set"; - "-unicode" -> "-unicode is set"; - "-slicing-keep-annotations" -> "-slicing-keep-annotations is set"; - "-sparecode-analysis" -> "-sparecode-analysis is set"; - "-no-type" -> "-no-type is set"; - "-obfuscate" -> "-obfuscate is set"; - "FileIndex" -> "FileIndex.compute"; - "-security-debug" -> "-security-debug is set"; - "-slice-pragma" -> "-slice-pragma is set"; - "-metrics-debug" -> "-metrics-debug is set"; - "-dump-dependencies" -> "-dump-dependencies is set"; - "-value-verbose" -> "-value-verbose is set"; - "-cast-from-constant" -> "-cast-from-constant is set"; - "-cpp-extra-args" -> "-cpp-extra-args is set"; - "-cpp-extra-args" -> "File.t"; - "-lib-entry" -> "-lib-entry is set"; - "-lib-entry" -> "contextfree_only_globals"; - "-lib-entry" -> "value_table"; - "-unspecified-access" -> "-unspecified-access is set"; - "-security-annotation" -> "-security-annotation is set"; - "-users-verbose" -> "-users-verbose is set"; - "builtin logic functions table" -> "logic functions table"; - "-slice-return" -> "-slice-return is set"; - "-sparecode-help" -> "-sparecode-help is set"; - "-no-obj" -> "-no-obj is set"; - "-float-digits" -> "-float-digits is set"; - "-annot" -> "-annot is set"; - "-annot" -> "AST"; - "-wp-cfg" -> "-wp-cfg is set"; - "-wp-help" -> "-wp-help is set"; - "-slice-calls" -> "-slice-calls is set"; - "-print" -> "-print is set"; - "-slice-rd" -> "-slice-rd is set"; - "UseRelations" -> "value_table"; - "-slice-loop-var" -> "-slice-loop-var is set"; - "-semantic-const-fold" -> "-semantic-const-fold is set"; - "AST" -> "((bool lattice_base, bool lattice_base) lattice_product, (bool lattice_base, bool lattice_base) lattice_product) lattice_product offsetmap_bitwise G[base] ptmap hashconsing_table 11"; - "AST" -> "(bool lattice_base, bool lattice_base) lattice_product offsetmap_bitwise G[base] ptmap hashconsing_table 10"; - "AST" -> "(bool lattice_base, bool lattice_base) lattice_product offsetmap_bitwise G[base] ptmap hashconsing_table 12"; - "AST" -> "Annotations"; - "AST" -> "Cluster_info offsetmap G[base] ptmap hashconsing_table 8"; - "AST" -> "Cluster_info offsetmaphashconsing_table"; - "AST" -> "Components.Annotations"; - "AST" -> "FileIndex"; - "AST" -> "FormalsDecl"; - "AST" -> "Functions"; - "AST" -> "GlobalAnnotations"; - "AST" -> "Globals.Vars"; - "AST" -> "Int_Intervals G[base] ptmap hashconsing_table 4"; - "AST" -> "Int_Intervals map_lattice offsetmap_bitwise G[base] ptmap hashconsing_table 5"; - "AST" -> "KF"; - "AST" -> "Location_Bytes offsetmap G[base] ptmap hashconsing_table 7"; - "AST" -> "Location_Bytes offsetmaphashconsing_table"; - "AST" -> "LoopStmts"; - "AST" -> "Non linear assignments"; - "AST" -> "Occurrences.LastResult"; - "AST" -> "V_Or_Uninitialized offsetmap G[base] ptmap hashconsing_table 6"; - "AST" -> "V_Or_Uninitialized offsetmaphashconsing_table"; - "AST" -> "VarInfos"; - "AST" -> "Widen.Hints"; - "AST" -> "big_int lattice_mod G[base] ptmap hashconsing_table 3"; - "AST" -> "contextfree_only_globals"; - "AST" -> "dominator"; - "AST" -> "int lattice_set offsetmap_bitwise G[base] ptmap hashconsing_table 13"; - "AST" -> "logic contructors table"; - "AST" -> "logic functions table"; - "AST" -> "logic types table"; - "AST" -> "message_counter"; - "AST" -> "message_table"; - "AST" -> "metrics"; - "AST" -> "natural_loops"; - "AST" -> "pdg_node lattice_set offsetmap_bitwise G[base] ptmap hashconsing_table 9"; - "AST" -> "postdominator"; - "AST" -> "reachable_stmts"; - "AST" -> "syntactic callgraph"; - "AST" -> "unit G[base] ptmap hashconsing_table 2"; - "AST" -> "unit G[varinfo] ptmap hashconsing_table 1"; - "AST" -> "value_table"; - "-out-external" -> "-out-external is set"; - "external_inputs" -> "Slicing.Project"; - "internal_inouts" -> "external_inouts"; - "-impact-slicing" -> "-impact-slicing is set"; - "-print-path" -> "-print-path is set"; - "-scf-help" -> "-scf-help is set"; - "-metrics-verbose" -> "-metrics-verbose is set"; - "-overflow" -> "-overflow is set"; - "-overflow" -> "value_table"; - "-verbose" -> "-verbose is set"; - "-security-slicing" -> "-security-slicing is set"; - "-value-debug" -> "-value-debug is set"; - "-dominators-verbose" -> "-dominators-verbose is set"; - "-dominators-debug" -> "-dominators-debug is set"; - "-semantic-const-folding" -> "-semantic-const-folding is set"; - "-cpp-command" -> "-cpp-command is set"; - "-cpp-command" -> "File.t"; - "-val" -> "-val is set"; - "-pdg-help" -> "-pdg-help is set"; - "-wp-proof" -> "-wp-proof is set"; - "-slice-value" -> "-slice-value is set"; - "-deref" -> "-deref is set"; - "-cg-verbose" -> "-cg-verbose is set"; - "-debug" -> "-debug is set"; - "-ulevel" -> "-ulevel is set"; - "-ulevel" -> "AST"; - "-keep-switch" -> "-keep-switch is set"; - "-keep-switch" -> "AST"; - "-pdg-debug" -> "-pdg-debug is set"; - "File.t" -> "AST"; - "File.t" -> "Untyped AST"; - "value_table" -> "!Db.Value.compute"; - "value_table" -> "Callers"; - "value_table" -> "Constant_Propagation"; - "value_table" -> "Dynamic_Alloc_Table"; - "value_table" -> "Eval.Got_Imprecise_Value"; - "value_table" -> "Leaf_Table"; - "value_table" -> "Mem_Exec"; - "value_table" -> "Never_Terminates"; - "value_table" -> "Occurrences.State"; - "value_table" -> "SGState"; - "value_table" -> "Users"; - "value_table" -> "alarms"; - "value_table" -> "called_functions"; - "value_table" -> "callwise_from"; - "value_table" -> "functionwise_from"; - "value_table" -> "internal derefs"; - "value_table" -> "internal_inouts"; - "value_table" -> "internal_inputs"; - "value_table" -> "internal_outs"; - "value_table" -> "is_called"; - "value_table" -> "vglobals"; - "-security-help" -> "-security-help is set"; - "-slicing-debug" -> "-slicing-debug is set"; - "-input-with-formals" -> "-input-with-formals is set"; - "-slicing-help" -> "-slicing-help is set"; - "-occurrence" -> "-occurrence is set"; - "-propagate-top" -> "-propagate-top is set"; - "-propagate-top" -> "value_table"; - "-journal-name" -> "-journal-name is set"; - "Pdg.State" -> "Components.compute"; - "Pdg.State" -> "Slicing.Project"; - "internal_outs" -> "external_outs"; - "-load-script" -> "-load-script is set"; - "builtin logic contructors table" -> "logic contructors table"; - "-wp-builtin-why-file" -> "-wp-builtin-why-file is set"; - "-memory-footprint" -> "-memory-footprint is set"; - "-memory-footprint" -> "Binary_cache.MemoryFootprint"; - "-memory-footprint" -> "Buckx.MemoryFootprint"; - "-save" -> "-save is set"; - "-copy" -> "-copy is set"; - "-slice-wr" -> "-slice-wr is set"; - "-occurrence-verbose" -> "-occurrence-verbose is set"; - "-metrics-dump" -> "-metrics-dump is set"; - "-slicing-level" -> "-slicing-level is set"; - "-safe-arrays" -> "-safe-arrays is set"; - "-safe-arrays" -> "value_table"; - "-keep-comments" -> "-keep-comments is set"; - "-constfold" -> "-constfold is set"; - "-constfold" -> "AST"; - "-sparecode-annot" -> "-sparecode-annot is set"; - "-dot-postdom" -> "-dot-postdom is set"; - "-occurrence-debug" -> "-occurrence-debug is set"; - "external_outs" -> "Slicing.Project"; - "-context-valid-pointers" -> "-context-valid-pointers is set"; - "-context-valid-pointers" -> "value_table"; - "-load" -> "-load is set"; - "-wp-dot" -> "-wp-dot is set"; - "-timeout" -> "-timeout is set"; - "-security-lattice" -> "-security-lattice is set"; - "-inout-debug" -> "-inout-debug is set"; - "-cg" -> "-cg is set"; - "-main" -> "-main is set"; - "-main" -> "SemanticsServicestate"; - "-main" -> "contextfree_only_globals"; - "-main" -> "value_table"; - "-slice-assert" -> "-slice-assert is set"; - "-rm-unused-globals" -> "-rm-unused-globals is set"; - "-check" -> "-check is set"; - "-scf-verbose" -> "-scf-verbose is set"; - "-impact-print" -> "-impact-print is set"; - "-scg-init-func" -> "-scg-init-func is set"; - "-scg-init-func" -> "SemanticsServicestate"; - "-scg" -> "-scg is set"; - "Components.Annotations" -> "Components.Nodes"; - "Components.Annotations" -> "Components.compute"; - "-absolute-valid-range" -> "-absolute-valid-range is set"; - "-absolute-valid-range" -> "value_table"; - "-cg-help" -> "-cg-help is set"; - "-dot-pdg" -> "-dot-pdg is set"; - "-slice-print" -> "-slice-print is set"; - "-impact-help" -> "-impact-help is set"; - "-slice-callers" -> "-slice-callers is set"; - "-context-width" -> "-context-width is set"; - "-context-width" -> "value_table"; - "-from-help" -> "-from-help is set"; - "-from-debug" -> "-from-debug is set"; - "-typecheck" -> "-typecheck is set"; - "-quiet" -> "-quiet is set"; - "-users-debug" -> "-users-debug is set"; - "-klr" -> "-klr is set"; - "-klr" -> "value_table"; - "-scg-debug" -> "-scg-debug is set"; - "-wp-verbose" -> "-wp-verbose is set"; - "-add-path" -> "-add-path is set"; - "-plevel" -> "-plevel is set"; - "-plevel" -> "value_table"; - "SGState" -> "SCQueue"; - "SGState" -> "SemanticsServicestate"; - "-input" -> "-input is set"; - "-help" -> "-help is set"; - "-wp-bot" -> "-wp-bot is set"; - "-sparecode-debug" -> "-sparecode-debug is set"; - "-fct-pdg" -> "-fct-pdg is set"; - "-security-propagate-assertions" -> "-security-propagate-assertions is set"; - "-pp-annot" -> "-pp-annot is set"; - "-pp-annot" -> "AST"; - "internal derefs" -> "external_derefs"; - "-machdep" -> "-machdep is set"; - "-machdep" -> "theMachine"; - "-users" -> "-users is set"; - "-users" -> "Users"; - "-slice-undef-functions" -> "-slice-undef-functions is set"; - "-scf-debug" -> "-scf-debug is set"; - "-deps" -> "-deps is set"; - "-metrics" -> "-metrics is set"; - "-occurrence-help" -> "-occurrence-help is set"; - "-wp-mm" -> "-wp-mm is set"; - "-ocode" -> "-ocode is set"; - "-version" -> "-version is set"; - "-from-verbose" -> "-from-verbose is set"; - "-impact-debug" -> "-impact-debug is set"; - "internal_inputs" -> "external_inputs"; - "internal_inputs" -> "with_formals_inputs"; - "-inout" -> "-inout is set"; - "-mem-exec" -> "-mem-exec is set"; - "-mem-exec" -> "value_table"; - "-out" -> "-out is set"; - "-wp-fct" -> "-wp-fct is set"; - "-context-depth" -> "-context-depth is set"; - "-context-depth" -> "value_table"; - "-wlevel" -> "-wlevel is set"; - "-wlevel" -> "value_table"; - "-pdg-verbose" -> "-pdg-verbose is set"; - "-metrics-help" -> "-metrics-help is set"; - "-slice-threat" -> "-slice-threat is set"; - "-scope-verbose" -> "-scope-verbose is set"; - "-scg-verbose" -> "-scg-verbose is set"; - "-simplify-cfg" -> "-simplify-cfg is set"; - "-simplify-cfg" -> "AST"; - "-slice-loop-inv" -> "-slice-loop-inv is set"; - "-access-path" -> "-access-path is set"; - "-warn-unspecified-order" -> "-warn-unspecified-order is set"; - "-inout-help" -> "-inout-help is set"; - "-scope-debug" -> "-scope-debug is set"; - "-inout-verbose" -> "-inout-verbose is set"; - "-pdg" -> "-pdg is set"; - "-slevel" -> "-slevel is set"; - "-slevel" -> "value_table"; - "-print-plugin-path" -> "-print-plugin-path is set"; - "theMachine" -> "AST"; - "theMachine" -> "BuiltinFunctions"; - "theMachine" -> "Untyped AST"; - "theMachine" -> "builtin logic contructors table"; - "theMachine" -> "builtin logic functions table"; - "theMachine" -> "builtin logic types table"; - "-load-module" -> "-load-module is set"; - "-users-help" -> "-users-help is set"; - "-impact-verbose" -> "-impact-verbose is set"; - "builtin logic types table" -> "logic types table"; - "-print-libpath" -> "-print-libpath is set"; - "-security-verbose" -> "-security-verbose is set"; - "-wp-debug" -> "-wp-debug is set"; - "-wp-behav" -> "-wp-behav is set"; - "-value-help" -> "-value-help is set"; - "-time" -> "-time is set"; - "-mem-exec-all" -> "-mem-exec-all is set"; - "-mem-exec-all" -> "value_table"; - "-sparecode-verbose" -> "-sparecode-verbose is set"; - "Occurrences.State" -> "Occurrence.compute"; - "Occurrences.State" -> "Occurrences.LastResult"; - "-codpds" -> "-codpds is set"; - "-dominators-help" -> "-dominators-help is set"; - "-scope-help" -> "-scope-help is set"; - "-calldeps" -> "-calldeps is set"; - "-cg-debug" -> "-cg-debug is set"; - "functionwise_from" -> "!Db.From.compute_all"; - "functionwise_from" -> "Pdg.State"; - "-impact-pragma" -> "-impact-pragma is set"; - - } \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/dfa.gv b/jscomp/build_tests/ocamlgraph/dgraph/examples/dfa.gv deleted file mode 100755 index fde068023b..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/dfa.gv +++ /dev/null @@ -1,34 +0,0 @@ -digraph g { -"start" [ label = "MWGC-" ]; -"n1" [ label = "WC-MG" ]; -"n2" [ label = "MWC-G" ]; -"n3" [ label = "C-MWG" ]; -"n4" [ label = "W-MGC" ]; -"n5" [ label = "MGC-W" ]; -"n6" [ label = "MWG-C" ]; -"n7" [ label = "G-MWC" ]; -"n8" [ label = "MG-WC" ]; -"n9" [ label = "-MWGC" ]; -"start" -> "n1" [ label = "g" ]; -"n1" -> "start" [ label = "g" ]; -subgraph l { rank = same; "n3" "n4" } -subgraph r { rank = same; "n5" "n6" } -"n1" -> "n2" [ label = "m" ]; -"n2" -> "n1" [ label = "m" ]; -"n2" -> "n3" [ label = "w" ]; -"n3" -> "n2" [ label = "w" ]; -"n2" -> "n4" [ label = "c" ]; -"n4" -> "n2" [ label = "c" ]; -"n3" -> "n5" [ label = "g" ]; -"n5" -> "n3" [ label = "g" ]; -"n4" -> "n6" [ label = "g" ]; -"n6" -> "n4" [ label = "g" ]; -"n5" -> "n7" [ label = "c" ]; -"n7" -> "n5" [ label = "c" ]; -"n6" -> "n7" [ label = "w" ]; -"n7" -> "n6" [ label = "w" ]; -"n7" -> "n8" [ label = "m" ]; -"n8" -> "n7" [ label = "m" ]; -"n8" -> "n9" [ label = "g" ]; -"n9" -> "n8" [ label = "g" ]; -} diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/fancy.dot b/jscomp/build_tests/ocamlgraph/dgraph/examples/fancy.dot deleted file mode 100755 index cf0769f91d..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/fancy.dot +++ /dev/null @@ -1,15 +0,0 @@ - digraph G { - size ="4,4"; - main [shape=box]; /* this is a comment */ - main -> parse [weight=8]; - parse -> execute; - main -> init [style=dotted, comment="youhou"]; - main -> cleanup; - execute -> { make_string; printf} - init -> make_string; - edge [color=red]; // so is this - main -> printf [style=bold,label="100 times"]; - make_string [label="make a\nstring"]; - node [shape=box,style=filled,color=".7 .3 1.0"]; - execute -> compare; - } diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/fsm.dot b/jscomp/build_tests/ocamlgraph/dgraph/examples/fsm.dot deleted file mode 100755 index e59b7c2dc3..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/fsm.dot +++ /dev/null @@ -1,20 +0,0 @@ -digraph finite_state_machine { - rankdir=LR; - size="8,5" - node [shape = doublecircle]; LR_0 LR_3 LR_4 LR_8; - node [shape = circle]; - LR_0 -> LR_2 [ label = "SS(B)" ]; - LR_0 -> LR_1 [ label = "SS(S)" ]; - LR_1 -> LR_3 [ label = "S($end)" ]; - LR_2 -> LR_6 [ label = "SS(b)" ]; - LR_2 -> LR_5 [ label = "SS(a)" ]; - LR_2 -> LR_4 [ label = "S(A)" ]; - LR_5 -> LR_7 [ label = "S(b)" ]; - LR_5 -> LR_5 [ label = "S(a)" ]; - LR_6 -> LR_6 [ label = "S(b)" ]; - LR_6 -> LR_5 [ label = "S(a)" ]; - LR_7 -> LR_8 [ label = "S(b)" ]; - LR_7 -> LR_5 [ label = "S(a)" ]; - LR_8 -> LR_6 [ label = "S(b)" ]; - LR_8 -> LR_5 [ label = "S(a)" ]; -} diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/gzip.dot b/jscomp/build_tests/ocamlgraph/dgraph/examples/gzip.dot deleted file mode 100755 index 7bafc85f9e..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/gzip.dot +++ /dev/null @@ -1,740 +0,0 @@ -digraph G { - "UV atoi (97)" [shape=diamond, label="atoi", color="#4000A0", style=dotted]; - "UV zip (0)" [shape=diamond, label="zip", color="#000000", style=bold]; - "UV do_exit (98)" [shape=diamond, label="do_exit", color="#408020", - style=bold]; - "UV flush_outbuf (1)" [label="flush_outbuf", color="#000000", style=bold]; - "UV updcrc (2)" [shape=diamond, label="updcrc", color="#008000", style=bold]; - "UV treat_file (99)" [shape=diamond, label="treat_file", color="#4080A0", - style=bold]; - "UV treat_stdin (100)" [shape=diamond, label="treat_stdin", - color="#C00020", style=bold]; - "UV bi_init (3)" [label="bi_init", color="#000000", style=bold]; - "UV do_list (101)" [shape=diamond, label="do_list", color="#C000A0", - style=bold]; - "UV ct_init (4)" [label="ct_init", color="#000000", style=bold]; - "UV fileno (102)" [shape=diamond, label="fileno", color="#C08020", - style=dotted]; - "UV lm_init (5)" [label="lm_init", color="#000000", style=bold]; - "UV basename (6)" [shape=diamond, label="basename", color="#808000", - style=bold]; - "UV isatty (103)" [shape=diamond, label="isatty", color="#C080A0", - style=dotted]; - "UV fstat (104)" [shape=diamond, label="fstat", color="#400060", - style=dotted]; - "UV deflate (7)" [label="deflate", color="#000000", style=bold]; - "UV get_method (105)" [shape=diamond, label="get_method", color="#4000E0", - style=bold]; - "UV file_read (8)" [shape=diamond, label="file_read", color="#000040", - style=bold]; - "UV read (9)" [shape=diamond, label="read", color="#0000C0", style=dotted]; - "UV get_istat (106)" [label="get_istat", color="#4080A0", style=bold]; - "UV make_ofname (107)" [label="make_ofname", color="#4080A0", style=bold]; - "UV copy (10)" [shape=diamond, label="copy", color="#008040", style=bold]; - "UV __errno_location (11)" [shape=diamond, label="__errno_location", - color="#0080C0", style=dotted]; - "UV open (108)" [label="open", color="#4080A0", style=dotted]; - "UV close (109)" [shape=diamond, label="close", color="#C000E0", - style=dotted]; - "UV write_buf (12)" [shape=diamond, label="write_buf", color="#800040", - style=bold]; - "UV read_error (13)" [shape=diamond, label="read_error", color="#8000C0", - style=bold]; - "UV create_outfile (110)" [label="create_outfile", color="#4080A0", - style=bold]; - "UV unlink (111)" [shape=diamond, label="unlink", color="#C080E0", - style=dotted]; - "UV clear_bufs (14)" [shape=diamond, label="clear_bufs", color="#808040", - style=bold]; - "UV fill_inbuf (15)" [shape=diamond, label="fill_inbuf", color="#8080C0", - style=bold]; - "UV copy_stat (112)" [label="copy_stat", color="#4080A0", style=bold]; - "UV flush_window (16)" [shape=diamond, label="flush_window", - color="#004000", style=bold]; - "UV check_ofname (113)" [label="check_ofname", color="#4080A0", style=bold]; - "UV write (17)" [label="write", color="#800040", style=dotted]; - "UV name_too_long (114)" [label="name_too_long", color="#4080A0", - style=bold]; - "UV write_error (18)" [shape=diamond, label="write_error", color="#00C000", - style=bold]; - "UV shorten_name (115)" [label="shorten_name", color="#4080A0", style=bold]; - "UV strlwr (19)" [shape=diamond, label="strlwr", color="#00C080", - style=bold]; - "UV do_stat (116)" [label="do_stat", color="#4080A0", style=bold]; - "UV isupper (20)" [shape=diamond, label="isupper", color="#804000", - style=dotted]; - "UV lstat (117)" [label="lstat", color="#4080A0", style=dotted]; - "UV strrchr (21)" [shape=diamond, label="strrchr", color="#804080", - style=dotted]; - "UV stat (118)" [label="stat", color="#4080A0", style=dotted]; - "UV get_suffix (119)" [label="get_suffix", color="#4080A0", style=bold]; - "UV make_simple_name (22)" [shape=diamond, label="make_simple_name", - color="#80C000", style=bold]; - "UV strcat (120)" [label="strcat", color="#4080A0", style=dotted]; - "UV add_envopt (23)" [shape=diamond, label="add_envopt", color="#80C080", - style=bold]; - "UV memcmp (121)" [label="memcmp", color="#4000E0", style=dotted]; - "UV getenv (24)" [label="getenv", color="#80C080", style=dotted]; - "UV strlen (25)" [shape=diamond, label="strlen", color="#0040C0", - style=dotted]; - "UV printf (122)" [label="printf", color="#C000A0", style=dotted]; - "UV lseek (123)" [label="lseek", color="#C000A0", style=dotted]; - "UV xmalloc (26)" [label="xmalloc", color="#80C080", style=bold]; - "UV strcpy (27)" [shape=diamond, label="strcpy", color="#00C0C0", - style=dotted]; - "UV ctime (124)" [label="ctime", color="#C000A0", style=dotted]; - "UV same_file (125)" [label="same_file", color="#4080A0", style=bold]; - "UV strspn (28)" [label="strspn", color="#80C080", style=dotted]; - "UV strcspn (29)" [shape=diamond, label="strcspn", color="#8040C0", - style=dotted]; - "UV fflush (126)" [label="fflush", color="#4080A0", style=dotted]; - "UV free (30)" [shape=diamond, label="free", color="#80C040", style=dotted]; - "UV fgets (127)" [label="fgets", color="#4080A0", style=dotted]; - "UV chmod (128)" [label="chmod", color="#4080A0", style=dotted]; - "UV calloc (31)" [label="calloc", color="#80C080", style=dotted]; - "UV error (32)" [shape=diamond, label="error", color="#400000", style=bold]; - "UV reset_times (129)" [label="reset_times", color="#4080A0", style=bold]; - "UV fprintf (33)" [shape=diamond, label="fprintf", color="#400080", - style=dotted]; - "UV utime (130)" [label="utime", color="#4080A0", style=dotted]; - "UV abort_gzip (34)" [shape=diamond, label="abort_gzip", color="#408000", - style=bold]; - "UV chown (131)" [label="chown", color="#4080A0", style=dotted]; - "UV exit (132)" [label="exit", color="#408020", style=dotted]; - "UV warn (35)" [shape=diamond, label="warn", color="#408080", style=bold]; - "UV perror (36)" [shape=diamond, label="perror", color="#C00000", - style=dotted]; - "UV fill_window (133)" [label="fill_window", color="#000000", style=bold]; - "UV display_ratio (37)" [shape=diamond, label="display_ratio", - color="#C00080", style=bold]; - "UV longest_match (134)" [label="longest_match", color="#000000", - style=bold]; - "UV _IO_putc (38)" [label="_IO_putc", color="#C00080", style=dotted]; - "UV deflate_fast (135)" [label="deflate_fast", color="#000000", style=bold]; - "UV malloc (39)" [shape=diamond, label="malloc", color="#C08080", - style=dotted]; - "UV check_zipfile (40)" [label="check_zipfile", color="#4000E0", style=bold]; - "UV unzip (41)" [shape=diamond, label="unzip", color="#4000C0", style=bold]; - "UV inflate (42)" [label="inflate", color="#4000C0", style=bold]; - "UV read_tree (43)" [label="read_tree", color="#C000C0", style=bold]; - "UV build_tree (44)" [label="build_tree", color="#C000C0", style=bold]; - "UV unpack (45)" [shape=diamond, label="unpack", color="#C000C0", - style=bold]; - "UV unlzw (46)" [shape=diamond, label="unlzw", color="#C08040", style=bold]; - "UV memset (47)" [shape=diamond, label="memset", color="#C080C0", - style=dotted]; - "UV memcpy (48)" [shape=diamond, label="memcpy", color="#404000", - style=dotted]; - "UV fillbuf (49)" [label="fillbuf", color="#C04040", style=bold]; - "UV getbits (50)" [label="getbits", color="#C04040", style=bold]; - "UV init_getbits (51)" [label="init_getbits", color="#C04040", style=bold]; - "UV make_table (52)" [label="make_table", color="#C04040", style=bold]; - "UV read_pt_len (53)" [label="read_pt_len", color="#C04040", style=bold]; - "UV read_c_len (54)" [label="read_c_len", color="#C04040", style=bold]; - "UV decode_c (55)" [label="decode_c", color="#C04040", style=bold]; - "UV decode_p (56)" [label="decode_p", color="#C04040", style=bold]; - "UV huf_decode_start (57)" [label="huf_decode_start", color="#C04040", - style=bold]; - "UV decode_start (58)" [label="decode_start", color="#C04040", style=bold]; - "UV decode (59)" [label="decode", color="#C04040", style=bold]; - "UV unlzh (60)" [shape=diamond, label="unlzh", color="#C04040", style=bold]; - "UV gen_codes (61)" [label="gen_codes", color="#000000", style=bold]; - "UV bi_reverse (62)" [label="bi_reverse", color="#000000", style=bold]; - "UV init_block (63)" [label="init_block", color="#000000", style=bold]; - "UV pqdownheap (64)" [label="pqdownheap", color="#000000", style=bold]; - "UV gen_bitlen (65)" [label="gen_bitlen", color="#000000", style=bold]; - "UV build_tree_0 (66)" [label="build_tree_0", color="#000000", style=bold]; - "UV scan_tree (67)" [label="scan_tree", color="#000000", style=bold]; - "UV send_tree (68)" [label="send_tree", color="#000000", style=bold]; - "UV send_bits (69)" [label="send_bits", color="#000000", style=bold]; - "UV build_bl_tree (70)" [label="build_bl_tree", color="#000000", style=bold]; - "UV send_all_trees (71)" [label="send_all_trees", color="#000000", - style=bold]; - "UV flush_block (72)" [label="flush_block", color="#000000", style=bold]; - "UV set_file_type (73)" [label="set_file_type", color="#000000", style=bold]; - "UV copy_block (74)" [label="copy_block", color="#000000", style=bold]; - "UV compress_block (75)" [label="compress_block", color="#000000", - style=bold]; - "UV bi_windup (76)" [label="bi_windup", color="#000000", style=bold]; - "UV ct_tally (77)" [label="ct_tally", color="#000000", style=bold]; - "UV lzw (78)" [shape=diamond, label="lzw", color="#808060", style=bold]; - "UV huft_build (79)" [label="huft_build", color="#4000C0", style=bold]; - "UV huft_free (80)" [label="huft_free", color="#4000C0", style=bold]; - "UV inflate_codes (81)" [label="inflate_codes", color="#4000C0", style=bold]; - "UV inflate_stored (82)" [label="inflate_stored", color="#4000C0", - style=bold]; - "UV inflate_fixed (83)" [label="inflate_fixed", color="#4000C0", style=bold]; - "UV inflate_dynamic (84)" [label="inflate_dynamic", color="#4000C0", - style=bold]; - "UV inflate_block (85)" [label="inflate_block", color="#4000C0", style=bold]; - "UV (86)" [shape=diamond, label="", color="#80C020", - style=bold]; - "UV usage (87)" [shape=diamond, label="usage", color="#80C0A0", style=bold]; - "UV help (88)" [shape=diamond, label="help", color="#004060", style=bold]; - "UV license (89)" [shape=diamond, label="license", color="#0040E0", - style=bold]; - "UV version (90)" [shape=diamond, label="version", color="#00C060", - style=bold]; - "UV main (91)" [shape=diamond, label="main", color="#00C0E0", style=bold]; - "UV strcmp (92)" [shape=diamond, label="strcmp", color="#804060", - style=dotted]; - "UV signal (93)" [shape=diamond, label="signal", color="#8040E0", - style=dotted]; - "UV strncmp (94)" [shape=diamond, label="strncmp", color="#80C060", - style=dotted]; - "UV strncpy (95)" [shape=diamond, label="strncpy", color="#80C0E0", - style=dotted]; - "UV getopt_long (96)" [shape=diamond, label="getopt_long", color="#400020", - style=dotted]; - - subgraph cluster_36 { label="S 36"; - color="#C00000"; - style=bold; - "UV perror (36)"; }; - subgraph cluster_37 { label="S 37"; - color="#C00080"; - style=bold; - "UV _IO_putc (38)";"UV display_ratio (37)"; }; - subgraph cluster_86 { label="S 86"; - color="#80C020"; - style=bold; - "UV (86)"; }; - subgraph cluster_87 { label="S 87"; - color="#80C0A0"; - style=bold; - "UV usage (87)"; }; - subgraph cluster_39 { label="S 39"; - color="#C08080"; - style=bold; - "UV malloc (39)"; }; - subgraph cluster_88 { label="S 88"; - color="#004060"; - style=bold; - "UV help (88)"; }; - subgraph cluster_89 { label="S 89"; - color="#0040E0"; - style=bold; - "UV license (89)"; }; - subgraph cluster_20 { label="S 20"; - color="#804000"; - style=bold; - "UV isupper (20)"; }; - subgraph cluster_21 { label="S 21"; - color="#804080"; - style=bold; - "UV strrchr (21)"; }; - subgraph cluster_111 { label="S 111"; - color="#C080E0"; - style=bold; - "UV unlink (111)"; }; - subgraph cluster_22 { label="S 22"; - color="#80C000"; - style=bold; - "UV make_simple_name (22)"; }; - subgraph cluster_23 { label="S 23"; - color="#80C080"; - style=bold; - "UV calloc (31)";"UV strspn (28)";"UV xmalloc (26)";"UV getenv (24)";"UV add_envopt (23)"; }; - subgraph cluster_25 { label="S 25"; - color="#0040C0"; - style=bold; - "UV strlen (25)"; }; - subgraph cluster_27 { label="S 27"; - color="#00C0C0"; - style=bold; - "UV strcpy (27)"; }; - subgraph cluster_41 { label="S 41"; - color="#4000C0"; - style=bold; - "UV inflate_block (85)";"UV inflate_dynamic (84)";"UV inflate_fixed (83)";"UV inflate_stored (82)";"UV inflate_codes (81)";"UV huft_free (80)";"UV huft_build (79)";"UV inflate (42)";"UV unzip (41)"; }; - subgraph cluster_90 { label="S 90"; - color="#00C060"; - style=bold; - "UV version (90)"; }; - subgraph cluster_29 { label="S 29"; - color="#8040C0"; - style=bold; - "UV strcspn (29)"; }; - subgraph cluster_91 { label="S 91"; - color="#00C0E0"; - style=bold; - "UV main (91)"; }; - subgraph cluster_78 { label="S 78"; - color="#808060"; - style=bold; - "UV lzw (78)"; }; - subgraph cluster_92 { label="S 92"; - color="#804060"; - style=bold; - "UV strcmp (92)"; }; - subgraph cluster_0 { label="S 0"; - color="#000000"; - style=bold; - "UV ct_tally (77)";"UV bi_windup (76)";"UV compress_block (75)";"UV copy_block (74)";"UV set_file_type (73)";"UV flush_block (72)";"UV send_all_trees (71)";"UV build_bl_tree (70)";"UV send_bits (69)";"UV send_tree (68)";"UV scan_tree (67)";"UV build_tree_0 (66)";"UV gen_bitlen (65)";"UV pqdownheap (64)";"UV init_block (63)";"UV bi_reverse (62)";"UV gen_codes (61)";"UV deflate_fast (135)";"UV longest_match (134)";"UV fill_window (133)";"UV deflate (7)";"UV lm_init (5)";"UV ct_init (4)";"UV bi_init (3)";"UV flush_outbuf (1)";"UV zip (0)"; }; - subgraph cluster_93 { label="S 93"; - color="#8040E0"; - style=bold; - "UV signal (93)"; }; - subgraph cluster_45 { label="S 45"; - color="#C000C0"; - style=bold; - "UV unpack (45)";"UV build_tree (44)";"UV read_tree (43)"; }; - subgraph cluster_10 { label="S 10"; - color="#008040"; - style=bold; - "UV copy (10)"; }; - subgraph cluster_100 { label="S 100"; - color="#C00020"; - style=bold; - "UV treat_stdin (100)"; }; - subgraph cluster_94 { label="S 94"; - color="#80C060"; - style=bold; - "UV strncmp (94)"; }; - subgraph cluster_46 { label="S 46"; - color="#C08040"; - style=bold; - "UV unlzw (46)"; }; - subgraph cluster_11 { label="S 11"; - color="#0080C0"; - style=bold; - "UV __errno_location (11)"; }; - subgraph cluster_101 { label="S 101"; - color="#C000A0"; - style=bold; - "UV ctime (124)";"UV lseek (123)";"UV printf (122)";"UV do_list (101)"; }; - subgraph cluster_2 { label="S 2"; - color="#008000"; - style=bold; - "UV updcrc (2)"; }; - subgraph cluster_95 { label="S 95"; - color="#80C0E0"; - style=bold; - "UV strncpy (95)"; }; - subgraph cluster_60 { label="S 60"; - color="#C04040"; - style=bold; - "UV unlzh (60)";"UV decode (59)";"UV decode_start (58)";"UV huf_decode_start (57)";"UV decode_p (56)";"UV decode_c (55)";"UV read_c_len (54)";"UV read_pt_len (53)";"UV make_table (52)";"UV init_getbits (51)";"UV getbits (50)";"UV fillbuf (49)"; }; - subgraph cluster_47 { label="S 47"; - color="#C080C0"; - style=bold; - "UV memset (47)"; }; - subgraph cluster_12 { label="S 12"; - color="#800040"; - style=bold; - "UV write (17)";"UV write_buf (12)"; }; - subgraph cluster_102 { label="S 102"; - color="#C08020"; - style=bold; - "UV fileno (102)"; }; - subgraph cluster_96 { label="S 96"; - color="#400020"; - style=bold; - "UV getopt_long (96)"; }; - subgraph cluster_48 { label="S 48"; - color="#404000"; - style=bold; - "UV memcpy (48)"; }; - subgraph cluster_13 { label="S 13"; - color="#8000C0"; - style=bold; - "UV read_error (13)"; }; - subgraph cluster_103 { label="S 103"; - color="#C080A0"; - style=bold; - "UV isatty (103)"; }; - subgraph cluster_97 { label="S 97"; - color="#4000A0"; - style=bold; - "UV atoi (97)"; }; - subgraph cluster_14 { label="S 14"; - color="#808040"; - style=bold; - "UV clear_bufs (14)"; }; - subgraph cluster_104 { label="S 104"; - color="#400060"; - style=bold; - "UV fstat (104)"; }; - subgraph cluster_98 { label="S 98"; - color="#408020"; - style=bold; - "UV exit (132)";"UV do_exit (98)"; }; - subgraph cluster_15 { label="S 15"; - color="#8080C0"; - style=bold; - "UV fill_inbuf (15)"; }; - subgraph cluster_105 { label="S 105"; - color="#4000E0"; - style=bold; - "UV check_zipfile (40)";"UV memcmp (121)";"UV get_method (105)"; }; - subgraph cluster_6 { label="S 6"; - color="#808000"; - style=bold; - "UV basename (6)"; }; - subgraph cluster_16 { label="S 16"; - color="#004000"; - style=bold; - "UV flush_window (16)"; }; - subgraph cluster_99 { label="S 99"; - color="#4080A0"; - style=bold; - "UV chown (131)";"UV utime (130)";"UV reset_times (129)";"UV chmod (128)";"UV fgets (127)";"UV fflush (126)";"UV same_file (125)";"UV strcat (120)";"UV get_suffix (119)";"UV stat (118)";"UV lstat (117)";"UV do_stat (116)";"UV shorten_name (115)";"UV name_too_long (114)";"UV check_ofname (113)";"UV copy_stat (112)";"UV create_outfile (110)";"UV open (108)";"UV make_ofname (107)";"UV get_istat (106)";"UV treat_file (99)"; }; - subgraph cluster_30 { label="S 30"; - color="#80C040"; - style=bold; - "UV free (30)"; }; - subgraph cluster_8 { label="S 8"; - color="#000040"; - style=bold; - "UV file_read (8)"; }; - subgraph cluster_18 { label="S 18"; - color="#00C000"; - style=bold; - "UV write_error (18)"; }; - subgraph cluster_9 { label="S 9"; - color="#0000C0"; - style=bold; - "UV read (9)"; }; - subgraph cluster_32 { label="S 32"; - color="#400000"; - style=bold; - "UV error (32)"; }; - subgraph cluster_19 { label="S 19"; - color="#00C080"; - style=bold; - "UV strlwr (19)"; }; - subgraph cluster_109 { label="S 109"; - color="#C000E0"; - style=bold; - "UV close (109)"; }; - subgraph cluster_33 { label="S 33"; - color="#400080"; - style=bold; - "UV fprintf (33)"; }; - subgraph cluster_34 { label="S 34"; - color="#408000"; - style=bold; - "UV abort_gzip (34)"; }; - subgraph cluster_35 { label="S 35"; - color="#408080"; - style=bold; - "UV warn (35)"; }; - - "UV zip (0)" -> "UV flush_outbuf (1)" [color="#000000"]; - "UV zip (0)" -> "UV updcrc (2)" [color="#000000"]; - "UV zip (0)" -> "UV bi_init (3)" [color="#000000"]; - "UV zip (0)" -> "UV ct_init (4)" [color="#000000"]; - "UV zip (0)" -> "UV lm_init (5)" [color="#000000"]; - "UV zip (0)" -> "UV basename (6)" [color="#000000"]; - "UV zip (0)" -> "UV deflate (7)" [color="#000000"]; - "UV zip (0)" -> "UV write_buf (12)" [color="#000000"]; - "UV zip (0)" -> "UV error (32)" [color="#000000"]; - "UV zip (0)" -> "UV memset (47)" [color="#000000"]; - "UV zip (0)" -> "UV memcpy (48)" [color="#000000"]; - "UV zip (0)" -> "UV (86)" [color="#000000"]; - "UV do_exit (98)" -> "UV free (30)" [color="#408020"]; - "UV do_exit (98)" -> "UV exit (132)" [color="#408020"]; - "UV flush_outbuf (1)" -> "UV write_buf (12)" [color="#000000"]; - "UV treat_file (99)" -> "UV __errno_location (11)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV clear_bufs (14)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV write_error (18)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV strlwr (19)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV isupper (20)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV strrchr (21)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV strlen (25)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV strcpy (27)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV strcspn (29)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV error (32)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV fprintf (33)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV perror (36)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV display_ratio (37)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV (86)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV strcmp (92)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV treat_stdin (100)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV do_list (101)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV fileno (102)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV isatty (103)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV fstat (104)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV get_method (105)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV get_istat (106)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV make_ofname (107)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV open (108)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV close (109)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV create_outfile (110)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV unlink (111)" [color="#4080A0"]; - "UV treat_file (99)" -> "UV copy_stat (112)" [color="#4080A0"]; - "UV treat_stdin (100)" -> "UV clear_bufs (14)" [color="#C00020"]; - "UV treat_stdin (100)" -> "UV strcpy (27)" [color="#C00020"]; - "UV treat_stdin (100)" -> "UV error (32)" [color="#C00020"]; - "UV treat_stdin (100)" -> "UV fprintf (33)" [color="#C00020"]; - "UV treat_stdin (100)" -> "UV display_ratio (37)" [color="#C00020"]; - "UV treat_stdin (100)" -> "UV (86)" [color="#C00020"]; - "UV treat_stdin (100)" -> "UV do_exit (98)" [color="#C00020"]; - "UV treat_stdin (100)" -> "UV do_list (101)" [color="#C00020"]; - "UV treat_stdin (100)" -> "UV fileno (102)" [color="#C00020"]; - "UV treat_stdin (100)" -> "UV isatty (103)" [color="#C00020"]; - "UV treat_stdin (100)" -> "UV fstat (104)" [color="#C00020"]; - "UV treat_stdin (100)" -> "UV get_method (105)" [color="#C00020"]; - "UV do_list (101)" -> "UV read (9)" [color="#C000A0"]; - "UV do_list (101)" -> "UV read_error (13)" [color="#C000A0"]; - "UV do_list (101)" -> "UV display_ratio (37)" [color="#C000A0"]; - "UV do_list (101)" -> "UV printf (122)" [color="#C000A0"]; - "UV do_list (101)" -> "UV lseek (123)" [color="#C000A0"]; - "UV do_list (101)" -> "UV ctime (124)" [color="#C000A0"]; - "UV ct_init (4)" -> "UV gen_codes (61)" [color="#000000"]; - "UV ct_init (4)" -> "UV bi_reverse (62)" [color="#000000"]; - "UV ct_init (4)" -> "UV init_block (63)" [color="#000000"]; - "UV lm_init (5)" -> "UV error (32)" [color="#000000"]; - "UV lm_init (5)" -> "UV memset (47)" [color="#000000"]; - "UV lm_init (5)" -> "UV (86)" [color="#000000"]; - "UV lm_init (5)" -> "UV fill_window (133)" [color="#000000"]; - "UV basename (6)" -> "UV strlwr (19)" [color="#808000"]; - "UV basename (6)" -> "UV strrchr (21)" [color="#808000"]; - "UV deflate (7)" -> "UV flush_block (72)" [color="#000000"]; - "UV deflate (7)" -> "UV ct_tally (77)" [color="#000000"]; - "UV deflate (7)" -> "UV fill_window (133)" [color="#000000"]; - "UV deflate (7)" -> "UV longest_match (134)" [color="#000000"]; - "UV deflate (7)" -> "UV deflate_fast (135)" [color="#000000"]; - "UV get_method (105)" -> "UV basename (6)" [color="#4000E0"]; - "UV get_method (105)" -> "UV fill_inbuf (15)" [color="#4000E0"]; - "UV get_method (105)" -> "UV error (32)" [color="#4000E0"]; - "UV get_method (105)" -> "UV fprintf (33)" [color="#4000E0"]; - "UV get_method (105)" -> "UV check_zipfile (40)" [color="#4000E0"]; - "UV get_method (105)" -> "UV memcmp (121)" [color="#4000E0"]; - "UV file_read (8)" -> "UV updcrc (2)" [color="#000040"]; - "UV file_read (8)" -> "UV read (9)" [color="#000040"]; - "UV get_istat (106)" -> "UV __errno_location (11)" [color="#4080A0"]; - "UV get_istat (106)" -> "UV strlen (25)" [color="#4080A0"]; - "UV get_istat (106)" -> "UV strcpy (27)" [color="#4080A0"]; - "UV get_istat (106)" -> "UV perror (36)" [color="#4080A0"]; - "UV get_istat (106)" -> "UV strcmp (92)" [color="#4080A0"]; - "UV get_istat (106)" -> "UV do_stat (116)" [color="#4080A0"]; - "UV get_istat (106)" -> "UV get_suffix (119)" [color="#4080A0"]; - "UV get_istat (106)" -> "UV strcat (120)" [color="#4080A0"]; - "UV make_ofname (107)" -> "UV strlwr (19)" [color="#4080A0"]; - "UV make_ofname (107)" -> "UV strcpy (27)" [color="#4080A0"]; - "UV make_ofname (107)" -> "UV fprintf (33)" [color="#4080A0"]; - "UV make_ofname (107)" -> "UV strcmp (92)" [color="#4080A0"]; - "UV make_ofname (107)" -> "UV get_suffix (119)" [color="#4080A0"]; - "UV make_ofname (107)" -> "UV strcat (120)" [color="#4080A0"]; - "UV copy (10)" -> "UV read (9)" [color="#008040"]; - "UV copy (10)" -> "UV __errno_location (11)" [color="#008040"]; - "UV copy (10)" -> "UV write_buf (12)" [color="#008040"]; - "UV copy (10)" -> "UV read_error (13)" [color="#008040"]; - "UV write_buf (12)" -> "UV write (17)" [color="#800040"]; - "UV write_buf (12)" -> "UV write_error (18)" [color="#800040"]; - "UV read_error (13)" -> "UV __errno_location (11)" [color="#8000C0"]; - "UV read_error (13)" -> "UV fprintf (33)" [color="#8000C0"]; - "UV read_error (13)" -> "UV abort_gzip (34)" [color="#8000C0"]; - "UV read_error (13)" -> "UV perror (36)" [color="#8000C0"]; - "UV create_outfile (110)" -> "UV fprintf (33)" [color="#4080A0"]; - "UV create_outfile (110)" -> "UV perror (36)" [color="#4080A0"]; - "UV create_outfile (110)" -> "UV fstat (104)" [color="#4080A0"]; - "UV create_outfile (110)" -> "UV open (108)" [color="#4080A0"]; - "UV create_outfile (110)" -> "UV close (109)" [color="#4080A0"]; - "UV create_outfile (110)" -> "UV unlink (111)" [color="#4080A0"]; - "UV create_outfile (110)" -> "UV check_ofname (113)" [color="#4080A0"]; - "UV create_outfile (110)" -> "UV name_too_long (114)" [color="#4080A0"]; - "UV create_outfile (110)" -> "UV shorten_name (115)" [color="#4080A0"]; - "UV fill_inbuf (15)" -> "UV read (9)" [color="#8080C0"]; - "UV fill_inbuf (15)" -> "UV __errno_location (11)" [color="#8080C0"]; - "UV fill_inbuf (15)" -> "UV read_error (13)" [color="#8080C0"]; - "UV copy_stat (112)" -> "UV fprintf (33)" [color="#4080A0"]; - "UV copy_stat (112)" -> "UV perror (36)" [color="#4080A0"]; - "UV copy_stat (112)" -> "UV unlink (111)" [color="#4080A0"]; - "UV copy_stat (112)" -> "UV chmod (128)" [color="#4080A0"]; - "UV copy_stat (112)" -> "UV reset_times (129)" [color="#4080A0"]; - "UV copy_stat (112)" -> "UV chown (131)" [color="#4080A0"]; - "UV flush_window (16)" -> "UV updcrc (2)" [color="#004000"]; - "UV flush_window (16)" -> "UV write_buf (12)" [color="#004000"]; - "UV check_ofname (113)" -> "UV __errno_location (11)" [color="#4080A0"]; - "UV check_ofname (113)" -> "UV isupper (20)" [color="#4080A0"]; - "UV check_ofname (113)" -> "UV strcpy (27)" [color="#4080A0"]; - "UV check_ofname (113)" -> "UV fprintf (33)" [color="#4080A0"]; - "UV check_ofname (113)" -> "UV perror (36)" [color="#4080A0"]; - "UV check_ofname (113)" -> "UV strcmp (92)" [color="#4080A0"]; - "UV check_ofname (113)" -> "UV fileno (102)" [color="#4080A0"]; - "UV check_ofname (113)" -> "UV isatty (103)" [color="#4080A0"]; - "UV check_ofname (113)" -> "UV unlink (111)" [color="#4080A0"]; - "UV check_ofname (113)" -> "UV name_too_long (114)" [color="#4080A0"]; - "UV check_ofname (113)" -> "UV shorten_name (115)" [color="#4080A0"]; - "UV check_ofname (113)" -> "UV stat (118)" [color="#4080A0"]; - "UV check_ofname (113)" -> "UV same_file (125)" [color="#4080A0"]; - "UV check_ofname (113)" -> "UV fflush (126)" [color="#4080A0"]; - "UV check_ofname (113)" -> "UV fgets (127)" [color="#4080A0"]; - "UV check_ofname (113)" -> "UV chmod (128)" [color="#4080A0"]; - "UV name_too_long (114)" -> "UV strlen (25)" [color="#4080A0"]; - "UV name_too_long (114)" -> "UV stat (118)" [color="#4080A0"]; - "UV name_too_long (114)" -> "UV same_file (125)" [color="#4080A0"]; - "UV write_error (18)" -> "UV fprintf (33)" [color="#00C000"]; - "UV write_error (18)" -> "UV abort_gzip (34)" [color="#00C000"]; - "UV write_error (18)" -> "UV perror (36)" [color="#00C000"]; - "UV shorten_name (115)" -> "UV strrchr (21)" [color="#4080A0"]; - "UV shorten_name (115)" -> "UV strlen (25)" [color="#4080A0"]; - "UV shorten_name (115)" -> "UV strcpy (27)" [color="#4080A0"]; - "UV shorten_name (115)" -> "UV strcspn (29)" [color="#4080A0"]; - "UV shorten_name (115)" -> "UV error (32)" [color="#4080A0"]; - "UV shorten_name (115)" -> "UV strcmp (92)" [color="#4080A0"]; - "UV shorten_name (115)" -> "UV get_suffix (119)" [color="#4080A0"]; - "UV strlwr (19)" -> "UV isupper (20)" [color="#00C080"]; - "UV do_stat (116)" -> "UV __errno_location (11)" [color="#4080A0"]; - "UV do_stat (116)" -> "UV lstat (117)" [color="#4080A0"]; - "UV do_stat (116)" -> "UV stat (118)" [color="#4080A0"]; - "UV get_suffix (119)" -> "UV strlwr (19)" [color="#4080A0"]; - "UV get_suffix (119)" -> "UV strlen (25)" [color="#4080A0"]; - "UV get_suffix (119)" -> "UV strcpy (27)" [color="#4080A0"]; - "UV get_suffix (119)" -> "UV strcmp (92)" [color="#4080A0"]; - "UV make_simple_name (22)" -> "UV strrchr (21)" [color="#80C000"]; - "UV add_envopt (23)" -> "UV getenv (24)" [color="#80C080"]; - "UV add_envopt (23)" -> "UV strlen (25)" [color="#80C080"]; - "UV add_envopt (23)" -> "UV xmalloc (26)" [color="#80C080"]; - "UV add_envopt (23)" -> "UV strcpy (27)" [color="#80C080"]; - "UV add_envopt (23)" -> "UV strspn (28)" [color="#80C080"]; - "UV add_envopt (23)" -> "UV strcspn (29)" [color="#80C080"]; - "UV add_envopt (23)" -> "UV free (30)" [color="#80C080"]; - "UV add_envopt (23)" -> "UV calloc (31)" [color="#80C080"]; - "UV add_envopt (23)" -> "UV error (32)" [color="#80C080"]; - "UV add_envopt (23)" -> "UV malloc (39)" [color="#80C080"]; - "UV xmalloc (26)" -> "UV error (32)" [color="#80C080"]; - "UV xmalloc (26)" -> "UV malloc (39)" [color="#80C080"]; - "UV error (32)" -> "UV fprintf (33)" [color="#400000"]; - "UV error (32)" -> "UV abort_gzip (34)" [color="#400000"]; - "UV reset_times (129)" -> "UV fprintf (33)" [color="#4080A0"]; - "UV reset_times (129)" -> "UV perror (36)" [color="#4080A0"]; - "UV reset_times (129)" -> "UV utime (130)" [color="#4080A0"]; - "UV abort_gzip (34)" -> "UV do_exit (98)" [color="#408000"]; - "UV abort_gzip (34)" -> "UV close (109)" [color="#408000"]; - "UV abort_gzip (34)" -> "UV unlink (111)" [color="#408000"]; - "UV warn (35)" -> "UV fprintf (33)" [color="#408080"]; - "UV fill_window (133)" -> "UV memcpy (48)" [color="#000000"]; - "UV fill_window (133)" -> "UV (86)" [color="#000000"]; - "UV display_ratio (37)" -> "UV fprintf (33)" [color="#C00080"]; - "UV display_ratio (37)" -> "UV _IO_putc (38)" [color="#C00080"]; - "UV deflate_fast (135)" -> "UV flush_block (72)" [color="#000000"]; - "UV deflate_fast (135)" -> "UV ct_tally (77)" [color="#000000"]; - "UV deflate_fast (135)" -> "UV fill_window (133)" [color="#000000"]; - "UV deflate_fast (135)" -> "UV longest_match (134)" [color="#000000"]; - "UV check_zipfile (40)" -> "UV fprintf (33)" [color="#4000E0"]; - "UV unzip (41)" -> "UV updcrc (2)" [color="#4000C0"]; - "UV unzip (41)" -> "UV fill_inbuf (15)" [color="#4000C0"]; - "UV unzip (41)" -> "UV flush_window (16)" [color="#4000C0"]; - "UV unzip (41)" -> "UV free (30)" [color="#4000C0"]; - "UV unzip (41)" -> "UV error (32)" [color="#4000C0"]; - "UV unzip (41)" -> "UV fprintf (33)" [color="#4000C0"]; - "UV unzip (41)" -> "UV malloc (39)" [color="#4000C0"]; - "UV unzip (41)" -> "UV inflate (42)" [color="#4000C0"]; - "UV unzip (41)" -> "UV memset (47)" [color="#4000C0"]; - "UV unzip (41)" -> "UV memcpy (48)" [color="#4000C0"]; - "UV inflate (42)" -> "UV flush_window (16)" [color="#4000C0"]; - "UV inflate (42)" -> "UV inflate_block (85)" [color="#4000C0"]; - "UV read_tree (43)" -> "UV fill_inbuf (15)" [color="#C000C0"]; - "UV read_tree (43)" -> "UV error (32)" [color="#C000C0"]; - "UV unpack (45)" -> "UV fill_inbuf (15)" [color="#C000C0"]; - "UV unpack (45)" -> "UV flush_window (16)" [color="#C000C0"]; - "UV unpack (45)" -> "UV error (32)" [color="#C000C0"]; - "UV unpack (45)" -> "UV read_tree (43)" [color="#C000C0"]; - "UV unpack (45)" -> "UV build_tree (44)" [color="#C000C0"]; - "UV unlzw (46)" -> "UV read (9)" [color="#C08040"]; - "UV unlzw (46)" -> "UV write_buf (12)" [color="#C08040"]; - "UV unlzw (46)" -> "UV read_error (13)" [color="#C08040"]; - "UV unlzw (46)" -> "UV fill_inbuf (15)" [color="#C08040"]; - "UV unlzw (46)" -> "UV error (32)" [color="#C08040"]; - "UV unlzw (46)" -> "UV fprintf (33)" [color="#C08040"]; - "UV unlzw (46)" -> "UV memset (47)" [color="#C08040"]; - "UV unlzw (46)" -> "UV memcpy (48)" [color="#C08040"]; - "UV fillbuf (49)" -> "UV fill_inbuf (15)" [color="#C04040"]; - "UV getbits (50)" -> "UV fillbuf (49)" [color="#C04040"]; - "UV init_getbits (51)" -> "UV fillbuf (49)" [color="#C04040"]; - "UV make_table (52)" -> "UV error (32)" [color="#C04040"]; - "UV read_pt_len (53)" -> "UV fillbuf (49)" [color="#C04040"]; - "UV read_pt_len (53)" -> "UV getbits (50)" [color="#C04040"]; - "UV read_pt_len (53)" -> "UV make_table (52)" [color="#C04040"]; - "UV read_c_len (54)" -> "UV fillbuf (49)" [color="#C04040"]; - "UV read_c_len (54)" -> "UV getbits (50)" [color="#C04040"]; - "UV read_c_len (54)" -> "UV make_table (52)" [color="#C04040"]; - "UV decode_c (55)" -> "UV fillbuf (49)" [color="#C04040"]; - "UV decode_c (55)" -> "UV getbits (50)" [color="#C04040"]; - "UV decode_c (55)" -> "UV read_pt_len (53)" [color="#C04040"]; - "UV decode_c (55)" -> "UV read_c_len (54)" [color="#C04040"]; - "UV decode_p (56)" -> "UV fillbuf (49)" [color="#C04040"]; - "UV decode_p (56)" -> "UV getbits (50)" [color="#C04040"]; - "UV huf_decode_start (57)" -> "UV init_getbits (51)" [color="#C04040"]; - "UV decode_start (58)" -> "UV huf_decode_start (57)" [color="#C04040"]; - "UV decode (59)" -> "UV decode_c (55)" [color="#C04040"]; - "UV decode (59)" -> "UV decode_p (56)" [color="#C04040"]; - "UV unlzh (60)" -> "UV write_buf (12)" [color="#C04040"]; - "UV unlzh (60)" -> "UV fill_inbuf (15)" [color="#C04040"]; - "UV unlzh (60)" -> "UV error (32)" [color="#C04040"]; - "UV unlzh (60)" -> "UV decode_start (58)" [color="#C04040"]; - "UV unlzh (60)" -> "UV decode (59)" [color="#C04040"]; - "UV gen_codes (61)" -> "UV bi_reverse (62)" [color="#000000"]; - "UV build_tree_0 (66)" -> "UV gen_codes (61)" [color="#000000"]; - "UV build_tree_0 (66)" -> "UV pqdownheap (64)" [color="#000000"]; - "UV build_tree_0 (66)" -> "UV gen_bitlen (65)" [color="#000000"]; - "UV send_tree (68)" -> "UV send_bits (69)" [color="#000000"]; - "UV send_bits (69)" -> "UV flush_outbuf (1)" [color="#000000"]; - "UV build_bl_tree (70)" -> "UV build_tree_0 (66)" [color="#000000"]; - "UV build_bl_tree (70)" -> "UV scan_tree (67)" [color="#000000"]; - "UV send_all_trees (71)" -> "UV send_tree (68)" [color="#000000"]; - "UV send_all_trees (71)" -> "UV send_bits (69)" [color="#000000"]; - "UV flush_block (72)" -> "UV init_block (63)" [color="#000000"]; - "UV flush_block (72)" -> "UV build_tree_0 (66)" [color="#000000"]; - "UV flush_block (72)" -> "UV send_bits (69)" [color="#000000"]; - "UV flush_block (72)" -> "UV build_bl_tree (70)" [color="#000000"]; - "UV flush_block (72)" -> "UV send_all_trees (71)" [color="#000000"]; - "UV flush_block (72)" -> "UV set_file_type (73)" [color="#000000"]; - "UV flush_block (72)" -> "UV copy_block (74)" [color="#000000"]; - "UV flush_block (72)" -> "UV compress_block (75)" [color="#000000"]; - "UV flush_block (72)" -> "UV bi_windup (76)" [color="#000000"]; - "UV copy_block (74)" -> "UV flush_outbuf (1)" [color="#000000"]; - "UV copy_block (74)" -> "UV bi_windup (76)" [color="#000000"]; - "UV compress_block (75)" -> "UV send_bits (69)" [color="#000000"]; - "UV bi_windup (76)" -> "UV flush_outbuf (1)" [color="#000000"]; - "UV lzw (78)" -> "UV fprintf (33)" [color="#808060"]; - "UV huft_build (79)" -> "UV malloc (39)" [color="#4000C0"]; - "UV huft_build (79)" -> "UV memset (47)" [color="#4000C0"]; - "UV huft_build (79)" -> "UV huft_free (80)" [color="#4000C0"]; - "UV huft_free (80)" -> "UV free (30)" [color="#4000C0"]; - "UV inflate_codes (81)" -> "UV fill_inbuf (15)" [color="#4000C0"]; - "UV inflate_codes (81)" -> "UV flush_window (16)" [color="#4000C0"]; - "UV inflate_codes (81)" -> "UV memcpy (48)" [color="#4000C0"]; - "UV inflate_stored (82)" -> "UV fill_inbuf (15)" [color="#4000C0"]; - "UV inflate_stored (82)" -> "UV flush_window (16)" [color="#4000C0"]; - "UV inflate_fixed (83)" -> "UV huft_build (79)" [color="#4000C0"]; - "UV inflate_fixed (83)" -> "UV huft_free (80)" [color="#4000C0"]; - "UV inflate_fixed (83)" -> "UV inflate_codes (81)" [color="#4000C0"]; - "UV inflate_dynamic (84)" -> "UV fill_inbuf (15)" [color="#4000C0"]; - "UV inflate_dynamic (84)" -> "UV fprintf (33)" [color="#4000C0"]; - "UV inflate_dynamic (84)" -> "UV huft_build (79)" [color="#4000C0"]; - "UV inflate_dynamic (84)" -> "UV huft_free (80)" [color="#4000C0"]; - "UV inflate_dynamic (84)" -> "UV inflate_codes (81)" [color="#4000C0"]; - "UV inflate_block (85)" -> "UV fill_inbuf (15)" [color="#4000C0"]; - "UV inflate_block (85)" -> "UV inflate_stored (82)" [color="#4000C0"]; - "UV inflate_block (85)" -> "UV inflate_fixed (83)" [color="#4000C0"]; - "UV inflate_block (85)" -> "UV inflate_dynamic (84)" [color="#4000C0"]; - "UV usage (87)" -> "UV fprintf (33)" [color="#80C0A0"]; - "UV help (88)" -> "UV fprintf (33)" [color="#004060"]; - "UV help (88)" -> "UV usage (87)" [color="#004060"]; - "UV license (89)" -> "UV fprintf (33)" [color="#0040E0"]; - "UV version (90)" -> "UV fprintf (33)" [color="#00C060"]; - "UV main (91)" -> "UV basename (6)" [color="#00C0E0"]; - "UV main (91)" -> "UV add_envopt (23)" [color="#00C0E0"]; - "UV main (91)" -> "UV strlen (25)" [color="#00C0E0"]; - "UV main (91)" -> "UV strcpy (27)" [color="#00C0E0"]; - "UV main (91)" -> "UV fprintf (33)" [color="#00C0E0"]; - "UV main (91)" -> "UV usage (87)" [color="#00C0E0"]; - "UV main (91)" -> "UV help (88)" [color="#00C0E0"]; - "UV main (91)" -> "UV license (89)" [color="#00C0E0"]; - "UV main (91)" -> "UV version (90)" [color="#00C0E0"]; - "UV main (91)" -> "UV strcmp (92)" [color="#00C0E0"]; - "UV main (91)" -> "UV signal (93)" [color="#00C0E0"]; - "UV main (91)" -> "UV strncmp (94)" [color="#00C0E0"]; - "UV main (91)" -> "UV strncpy (95)" [color="#00C0E0"]; - "UV main (91)" -> "UV getopt_long (96)" [color="#00C0E0"]; - "UV main (91)" -> "UV atoi (97)" [color="#00C0E0"]; - "UV main (91)" -> "UV do_exit (98)" [color="#00C0E0"]; - "UV main (91)" -> "UV treat_file (99)" [color="#00C0E0"]; - "UV main (91)" -> "UV treat_stdin (100)" [color="#00C0E0"]; - "UV main (91)" -> "UV do_list (101)" [color="#00C0E0"]; - - } \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/gzip_annot.dot b/jscomp/build_tests/ocamlgraph/dgraph/examples/gzip_annot.dot deleted file mode 100755 index b880a5adeb..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/gzip_annot.dot +++ /dev/null @@ -1,1268 +0,0 @@ -digraph G { - node [label="\N"]; - graph [bb="0,0,9334,994", - _draw_="c 5 -white C 5 -white P 4 0 0 0 994 9334 994 9334 0 ", - xdotversion="1.2"]; - subgraph cluster_36 { - graph [label="S 36", - color="#C00000", - style=bold, - lp="3856,421", - bb="3803,356,3909,433", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3856 416 0 32 4 -S 36 ", - _draw_="S 4 -bold c 7 -#C00000 p 4 3803 356 3803 433 3909 433 3909 356 ", - xdotversion=""]; - "UV error (32)" [label=error, width="1.00", height="0.49", style=bold, color="#C00000", pos="3847,382", _draw_="S 4 -bold c 7 -#C00000 e 3847 382 36 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3847 377 0 35 5 -error "]; - "UV error (32)" -> "UV error (32)" [style=invis, minlen=0, pos="e,3869,368 3869,396 3885,401 3901,396 3901,382 3901,371 3891,366 3879,366"]; - } - subgraph cluster_37 { - graph [label="S 37", - color="#C00080", - style=bold, - lp="2354,421", - bb="2287,356,2421,433", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2354 416 0 32 4 -S 37 ", - _draw_="S 4 -bold c 7 -#C00080 p 4 2287 356 2287 433 2421 433 2421 356 ", - xdotversion=""]; - "UV memset (47)" [label=memset, width="1.39", height="0.49", style=dotted, color="#C00080", pos="2345,382", _draw_="S 6 -dotted c 7 -#C00080 e 2345 382 50 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2345 377 0 55 6 -memset "]; - "UV memset (47)" -> "UV memset (47)" [style=invis, minlen=0, pos="e,2374,368 2374,396 2394,400 2413,396 2413,382 2413,370 2400,366 2384,367"]; - } - subgraph cluster_50 { - graph [label="S 50", - color="#40C000", - style=bold, - lp="8479,251", - bb="8421,186,8537,263", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 8479 246 0 32 4 -S 50 ", - _draw_="S 4 -bold c 7 -#40C000 p 4 8421 186 8421 263 8537 263 8537 186 ", - xdotversion=""]; - "UV unlink (111)" [label=unlink, width="1.14", height="0.49", style=dotted, color="#40C000", pos="8470,212", _draw_="S 6 -dotted c 7 -#40C000 e 8470 212 41 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 8470 207 0 43 6 -unlink "]; - "UV unlink (111)" -> "UV unlink (111)" [style=invis, minlen=0, pos="e,8494,198 8494,226 8512,231 8529,226 8529,212 8529,201 8518,195 8504,196"]; - } - subgraph cluster_38 { - graph [label="S 38", - color="#C08000", - style=bold, - lp="2179,421", - bb="2111,356,2247,433", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2179 416 0 32 4 -S 38 ", - _draw_="S 4 -bold c 7 -#C08000 p 4 2111 356 2111 433 2247 433 2247 356 ", - xdotversion=""]; - "UV memcpy (48)" [label=memcpy, width="1.42", height="0.49", style=dotted, color="#C08000", pos="2170,382", _draw_="S 6 -dotted c 7 -#C08000 e 2170 382 51 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2170 377 0 57 6 -memcpy "]; - "UV memcpy (48)" -> "UV memcpy (48)" [style=invis, minlen=0, pos="e,2200,368 2200,396 2220,400 2239,396 2239,382 2239,370 2226,366 2210,367"]; - } - subgraph cluster_51 { - graph [label="S 51", - color="#40C080", - style=bold, - lp="6036,336", - bb="5980,271,6092,348", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6036 331 0 32 4 -S 51 ", - _draw_="S 4 -bold c 7 -#40C080 p 4 5980 271 5980 348 6092 348 6092 271 ", - xdotversion=""]; - "UV isatty (103)" [label=isatty, width="1.08", height="0.49", style=dotted, color="#40C080", pos="6027,297", _draw_="S 6 -dotted c 7 -#40C080 e 6027 297 39 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6027 292 0 39 6 -isatty "]; - "UV isatty (103)" -> "UV isatty (103)" [style=invis, minlen=0, pos="e,6050,283 6050,311 6067,316 6084,311 6084,297 6084,286 6073,280 6060,281"]; - } - subgraph cluster_52 { - graph [label="S 52", - color="#C04000", - style=bold, - lp="5742,421", - bb="5691,356,5793,433", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5742 416 0 32 4 -S 52 ", - _draw_="S 4 -bold c 7 -#C04000 p 4 5691 356 5691 433 5793 433 5793 356 ", - xdotversion=""]; - "UV fstat (104)" [label=fstat, width="0.94", height="0.49", style=dotted, color="#C04000", pos="5733,382", _draw_="S 6 -dotted c 7 -#C04000 e 5733 382 34 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5733 377 0 32 5 -fstat "]; - "UV fstat (104)" -> "UV fstat (104)" [style=invis, minlen=0, pos="e,5754,368 5754,396 5769,401 5785,396 5785,382 5785,371 5775,366 5764,366"]; - } - subgraph cluster_39 { - graph [label="S 39", - color="#C08080", - style=bold, - lp="1368,336", - bb="1308,271,1428,348", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1368 331 0 32 4 -S 39 ", - _draw_="S 4 -bold c 7 -#C08080 p 4 1308 271 1308 348 1428 348 1428 271 ", - xdotversion=""]; - "UV updcrc (2)" [label=updcrc, width="1.19", height="0.49", style=bold, color="#C08080", pos="1359,297", _draw_="S 4 -bold c 7 -#C08080 e 1359 297 43 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1359 292 0 45 6 -updcrc "]; - "UV updcrc (2)" -> "UV updcrc (2)" [style=invis, minlen=0, pos="e,1385,283 1385,311 1402,316 1420,311 1420,297 1420,286 1408,280 1395,281"]; - } - subgraph cluster_53 { - graph [label="S 53", - color="#C04080", - style=bold, - lp="4524,251", - bb="4461,186,4587,263", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 4524 246 0 32 4 -S 53 ", - _draw_="S 4 -bold c 7 -#C04080 p 4 4461 186 4461 263 4587 263 4587 186 ", - xdotversion=""]; - "UV strcspn (29)" [label=strcspn, width="1.28", height="0.49", style=dotted, color="#C04080", pos="4515,212", _draw_="S 6 -dotted c 7 -#C04080 e 4515 212 46 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 4515 207 0 50 7 -strcspn "]; - "UV strcspn (29)" -> "UV strcspn (29)" [style=invis, minlen=0, pos="e,4542,198 4542,226 4561,230 4579,226 4579,212 4579,201 4567,196 4552,197"]; - } - subgraph cluster_54 { - graph [label="S 54", - color="#C0C000", - style=bold, - lp="3766,166", - bb="3719,101,3813,178", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3766 161 0 32 4 -S 54 ", - _draw_="S 4 -bold c 7 -#C0C000 p 4 3719 101 3719 178 3813 178 3813 101 ", - xdotversion=""]; - "UV free (30)" [label=free, width="0.83", height="0.49", style=dotted, color="#C0C000", pos="3757,127", _draw_="S 6 -dotted c 7 -#C0C000 e 3757 127 30 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3757 122 0 27 4 -free "]; - "UV free (30)" -> "UV free (30)" [style=invis, minlen=0, pos="e,3776,113 3776,141 3790,146 3805,141 3805,127 3805,116 3796,111 3786,111"]; - } - subgraph cluster_20 { - graph [label="S 20", - color="#804000", - style=bold, - lp="5605,421", - bb="5559,356,5651,433", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5605 416 0 32 4 -S 20 ", - _draw_="S 4 -bold c 7 -#804000 p 4 5559 356 5559 433 5651 433 5651 356 ", - xdotversion=""]; - "UV lzw (78)" [label=lzw, width="0.81", height="0.49", style=bold, color="#804000", pos="5596,382", _draw_="S 4 -bold c 7 -#804000 e 5596 382 29 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5596 377 0 25 3 -lzw "]; - "UV lzw (78)" -> "UV lzw (78)" [style=invis, minlen=0, pos="e,5614,368 5614,396 5628,401 5643,396 5643,382 5643,371 5634,366 5624,366"]; - } - subgraph cluster_55 { - graph [label="S 55", - color="#C0C080", - style=bold, - lp="7888,166", - bb="7831,101,7945,178", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7888 161 0 32 4 -S 55 ", - _draw_="S 4 -bold c 7 -#C0C080 p 4 7831 101 7831 178 7945 178 7945 101 ", - xdotversion=""]; - "UV strlwr (19)" [label=strlwr, width="1.11", height="0.49", style=bold, color="#C0C080", pos="7879,127", _draw_="S 4 -bold c 7 -#C0C080 e 7879 127 40 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7879 122 0 41 6 -strlwr "]; - "UV strlwr (19)" -> "UV strlwr (19)" [style=invis, minlen=0, pos="e,7903,113 7903,141 7920,146 7937,141 7937,127 7937,116 7926,110 7913,111"]; - } - subgraph cluster_56 { - graph [label="S 56", - color="#404040", - style=bold, - lp="5181,336", - bb="5072,271,5290,348", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5181 331 0 32 4 -S 56 ", - _draw_="S 4 -bold c 7 -#404040 p 4 5072 271 5072 348 5290 348 5290 271 ", - xdotversion=""]; - "UV __errno_location (11)" [label=__errno_location, width="2.56", height="0.49", style=dotted, color="#404040", pos="5172,297", _draw_="S 6 -dotted c 7 -#404040 e 5172 297 92 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5172 292 0 114 16 -__errno_location "]; - "UV __errno_location (11)" -> "UV __errno_location (11)" [style=invis, minlen=0, pos="e,5222,282 5222,312 5253,315 5282,310 5282,297 5282,285 5259,280 5232,281"]; - } - subgraph cluster_21 { - graph [label="S 21", - color="#804080", - style=bold, - lp="658,974", - bb="29,356,1287,986", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 658 969 0 32 4 -S 21 ", - _draw_="S 4 -bold c 7 -#804080 p 4 29 356 29 986 1287 986 1287 356 ", - xdotversion=""]; - "UV zip (0)" [label=zip, width="0.69", height="0.49", style=bold, color="#804080", pos="640,935", _draw_="S 4 -bold c 7 -#804080 e 640 935 25 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 640 930 0 20 3 -zip "]; - "UV flush_outbuf (1)" [label=flush_outbuf, width="1.97", height="0.50", style=bold, color="#804080", pos="1050,382", _draw_="S 4 -bold c 7 -#804080 e 1050 382 71 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1050 377 0 86 12 -flush_outbuf "]; - "UV bi_init (3)" [label=bi_init, width="1.11", height="0.50", style=bold, color="#804080", pos="100,863", _draw_="S 4 -bold c 7 -#804080 e 100 863 40 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 100 858 0 42 7 -bi_init "]; - "UV ct_init (4)" [label=ct_init, width="1.14", height="0.50", style=bold, color="#804080", pos="119,714", _draw_="S 4 -bold c 7 -#804080 e 119 714 41 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 119 709 0 43 7 -ct_init "]; - "UV lm_init (5)" [label=lm_init, width="1.22", height="0.50", style=bold, color="#804080", pos="1234,863", _draw_="S 4 -bold c 7 -#804080 e 1234 863 44 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1234 858 0 47 7 -lm_init "]; - "UV deflate (7)" [label=deflate, width="1.22", height="0.50", style=bold, color="#804080", pos="487,863", _draw_="S 4 -bold c 7 -#804080 e 487 863 44 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 487 858 0 48 7 -deflate "]; - "UV fill_window (133)" [label=fill_window, width="1.81", height="0.50", style=bold, color="#804080", pos="1214,714", _draw_="S 4 -bold c 7 -#804080 e 1214 714 65 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1214 709 0 78 11 -fill_window "]; - "UV longest_match (134)" [label=longest_match, width="2.25", height="0.50", style=bold, color="#804080", pos="444,714", _draw_="S 4 -bold c 7 -#804080 e 444 714 81 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 444 709 0 101 13 -longest_match "]; - "UV deflate_fast (135)" [label=deflate_fast, width="1.86", height="0.50", style=bold, color="#804080", pos="444,786", _draw_="S 4 -bold c 7 -#804080 e 444 786 67 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 444 781 0 81 12 -deflate_fast "]; - "UV gen_codes (61)" [label=gen_codes, width="1.67", height="0.50", style=bold, color="#804080", pos="137,467", _draw_="S 4 -bold c 7 -#804080 e 137 467 60 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 137 462 0 71 9 -gen_codes "]; - "UV bi_reverse (62)" [label=bi_reverse, width="1.67", height="0.50", style=bold, color="#804080", pos="97,382", _draw_="S 4 -bold c 7 -#804080 e 97 382 60 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 97 377 0 71 10 -bi_reverse "]; - "UV init_block (63)" [label=init_block, width="1.56", height="0.50", style=bold, color="#804080", pos="173,637", _draw_="S 4 -bold c 7 -#804080 e 173 637 56 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 173 632 0 65 10 -init_block "]; - "UV pqdownheap (64)" [label=pqdownheap, width="2.03", height="0.50", style=bold, color="#804080", pos="1023,467", _draw_="S 4 -bold c 7 -#804080 e 1023 467 73 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1023 462 0 89 10 -pqdownheap "]; - "UV gen_bitlen (65)" [label=gen_bitlen, width="1.69", height="0.50", style=bold, color="#804080", pos="1183,467", _draw_="S 4 -bold c 7 -#804080 e 1183 467 61 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1183 462 0 72 10 -gen_bitlen "]; - "UV build_tree_0 (66)" [label=build_tree_0, width="1.97", height="0.50", style=bold, color="#804080", pos="1016,552", _draw_="S 4 -bold c 7 -#804080 e 1016 552 71 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1016 547 0 86 12 -build_tree_0 "]; - "UV scan_tree (67)" [label=scan_tree, width="1.58", height="0.50", style=bold, color="#804080", pos="1162,552", _draw_="S 4 -bold c 7 -#804080 e 1162 552 57 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1162 547 0 67 9 -scan_tree "]; - "UV send_tree (68)" [label=send_tree, width="1.61", height="0.50", style=bold, color="#804080", pos="534,552", _draw_="S 4 -bold c 7 -#804080 e 534 552 58 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 534 547 0 68 9 -send_tree "]; - "UV send_bits (69)" [label=send_bits, width="1.56", height="0.50", style=bold, color="#804080", pos="621,467", _draw_="S 4 -bold c 7 -#804080 e 621 467 56 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 621 462 0 65 9 -send_bits "]; - "UV build_bl_tree (70)" [label=build_bl_tree, width="2.03", height="0.50", style=bold, color="#804080", pos="1126,637", _draw_="S 4 -bold c 7 -#804080 e 1126 637 73 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1126 632 0 89 13 -build_bl_tree "]; - "UV send_all_trees (71)" [label=send_all_trees, width="2.19", height="0.50", style=bold, color="#804080", pos="534,637", _draw_="S 4 -bold c 7 -#804080 e 534 637 79 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 534 632 0 98 14 -send_all_trees "]; - "UV flush_block (72)" [label=flush_block, width="1.78", height="0.50", style=bold, color="#804080", pos="647,714", _draw_="S 4 -bold c 7 -#804080 e 647 714 64 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 647 709 0 77 11 -flush_block "]; - "UV set_file_type (73)" [label=set_file_type, width="1.97", height="0.50", style=bold, color="#804080", pos="924,637", _draw_="S 4 -bold c 7 -#804080 e 924 637 71 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 924 632 0 87 13 -set_file_type "]; - "UV copy_block (74)" [label=copy_block, width="1.72", height="0.50", style=bold, color="#804080", pos="753,637", _draw_="S 4 -bold c 7 -#804080 e 753 637 62 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 753 632 0 74 10 -copy_block "]; - "UV compress_block (75)" [label=compress_block, width="2.36", height="0.50", style=bold, color="#804080", pos="332,637", _draw_="S 4 -bold c 7 -#804080 e 332 637 85 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 332 632 0 107 14 -compress_block "]; - "UV bi_windup (76)" [label=bi_windup, width="1.67", height="0.50", style=bold, color="#804080", pos="858,552", _draw_="S 4 -bold c 7 -#804080 e 858 552 60 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 858 547 0 71 9 -bi_windup "]; - "UV ct_tally (77)" [label=ct_tally, width="1.28", height="0.50", style=bold, color="#804080", pos="299,714", _draw_="S 4 -bold c 7 -#804080 e 299 714 46 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 299 709 0 50 8 -ct_tally "]; - "UV zip (0)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,658,923 658,947 671,951 683,947 683,935 683,926 677,922 668,922"]; - "UV zip (0)" -> "UV flush_outbuf (1)" [pos="e,1108,392 665,933 753,927 1046,906 1079,881 1113,854 1100,724 1131,696 1150,679 1166,701 1187,688 1227,663 1234,647 1248,603 12\ -71,534 1289,497 1244,441 1228,420 1168,404 1118,394", _draw_="c 5 -black B 19 665 933 753 927 1046 906 1079 881 1113 854 1100 724 1131 696 1150 679 1166 701 1187 688 1227 663 1234 647 1248 6\ -03 1271 534 1289 497 1244 441 1228 420 1168 404 1118 394 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1118 391 1108 392 1117 397 "]; - "UV zip (0)" -> "UV bi_init (3)" [pos="e,128,876 615,934 541,931 322,919 145,881 142,881 140,880 137,879", _draw_="c 5 -black B 7 615 934 541 931 322 919 145 881 142 881 140 880 137 879 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 139 876 128 876 136 882 "]; - "UV zip (0)" -> "UV ct_init (4)" [pos="e,118,732 615,934 522,929 200,909 165,881 144,863 124,785 119,742", _draw_="c 5 -black B 7 615 934 522 929 200 909 165 881 144 863 124 785 119 742 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 122 742 118 732 116 742 "]; - "UV zip (0)" -> "UV lm_init (5)" [pos="e,1197,873 665,934 741,931 977,919 1167,881 1174,880 1180,878 1187,876", _draw_="c 5 -black B 7 665 934 741 931 977 919 1167 881 1174 880 1180 878 1187 876 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1188 879 1197 873 1186 873 "]; - "UV zip (0)" -> "UV deflate (7)" [pos="e,513,878 618,927 593,916 551,897 522,883", _draw_="c 5 -black B 4 618 927 593 916 551 897 522 883 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 523 880 513 878 520 886 "]; - "UV flush_outbuf (1)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,665,934 1112,391 1168,400 1244,418 1262,441 1307,497 1289,534 1266,603 1252,647 1245,663 1205,688 1184,701 1168,679 1149,696 1\ -118,724 1131,854 1097,881 1064,906 777,927 675,933"]; - "UV bi_init (3)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,615,934 134,872 144,876 154,879 163,881 326,916 525,929 605,933"]; - "UV ct_init (4)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,615,933 127,732 139,771 160,861 183,881 217,907 503,927 605,932"]; - "UV ct_init (4)" -> "UV gen_codes (61)" [pos="e,119,485 100,698 97,695 95,692 93,688 66,621 71,594 93,526 97,514 104,502 112,493", _draw_="c 5 -black B 10 100 698 97 695 95 692 93 688 66 621 71 594 93 526 97 514 104 502 112 493 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 115 495 119 485 110 490 "]; - "UV ct_init (4)" -> "UV bi_reverse (62)" [pos="e,86,400 88,702 82,699 76,694 72,688 44,641 56,494 68,441 71,430 76,418 81,409", _draw_="c 5 -black B 10 88 702 82 699 76 694 72 688 44 641 56 494 68 441 71 430 76 418 81 409 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 84 410 86 400 78 407 "]; - "UV ct_init (4)" -> "UV init_block (63)" [pos="e,161,655 131,697 138,687 147,674 155,663", _draw_="c 5 -black B 4 131 697 138 687 147 674 155 663 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 158 665 161 655 152 661 "]; - "UV lm_init (5)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,665,934 1204,876 1198,878 1191,880 1185,881 996,919 763,931 675,934"]; - "UV lm_init (5)" -> "UV fill_window (133)" [pos="e,1216,732 1232,845 1228,819 1222,772 1217,742", _draw_="c 5 -black B 4 1232 845 1228 819 1222 772 1217 742 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1220 742 1216 732 1214 742 "]; - "UV deflate (7)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,621,924 519,876 547,888 585,906 612,919"]; - "UV deflate (7)" -> "UV flush_block (72)" [pos="e,633,732 514,849 520,845 526,841 531,837 568,807 605,766 627,740", _draw_="c 5 -black B 7 514 849 520 845 526 841 531 837 568 807 605 766 627 740 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 630 742 633 732 624 738 "]; - "UV deflate (7)" -> "UV ct_tally (77)" [pos="e,304,732 445,857 416,853 380,846 368,837 336,813 317,770 307,742", _draw_="c 5 -black B 7 445 857 416 853 380 846 368 837 336 813 317 770 307 742 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 310 741 304 732 304 743 "]; - "UV deflate (7)" -> "UV fill_window (133)" [pos="e,1162,725 526,855 646,831 1006,757 1152,727", _draw_="c 5 -black B 4 526 855 646 831 1006 757 1152 727 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1153 730 1162 725 1152 724 "]; - "UV deflate (7)" -> "UV longest_match (134)" [pos="e,480,730 511,848 515,845 518,841 520,837 534,809 535,795 520,768 513,755 501,744 489,735", _draw_="c 5 -black B 10 511 848 515 845 518 841 520 837 534 809 535 795 520 768 513 755 501 744 489 735 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 490 732 480 730 487 738 "]; - "UV deflate (7)" -> "UV deflate_fast (135)" [pos="e,454,804 477,845 472,836 465,823 459,813", _draw_="c 5 -black B 4 477 845 472 836 465 823 459 813 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 462 811 454 804 456 814 "]; - "UV fill_window (133)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,665,934 1210,732 1201,771 1179,862 1155,881 1117,910 785,928 675,933"]; - "UV longest_match (134)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,615,932 408,730 393,739 377,752 368,768 354,795 355,809 368,837 382,864 395,867 422,881 483,911 560,925 605,931"]; - "UV deflate_fast (135)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,615,932 435,804 427,825 418,859 434,881 455,907 552,924 605,931"]; - "UV deflate_fast (135)" -> "UV flush_block (72)" [pos="e,607,728 485,772 517,760 563,744 597,732", _draw_="c 5 -black B 4 485 772 517 760 563 744 597 732 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 599 735 607 728 596 728 "]; - "UV deflate_fast (135)" -> "UV ct_tally (77)" [pos="e,328,728 412,770 390,759 360,744 337,733", _draw_="c 5 -black B 4 412 770 390 759 360 744 337 733 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 338 730 328 728 335 736 "]; - "UV deflate_fast (135)" -> "UV fill_window (133)" [pos="e,1152,720 507,780 650,767 992,735 1142,721", _draw_="c 5 -black B 4 507 780 650 767 992 735 1142 721 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1142 724 1152 720 1142 718 "]; - "UV deflate_fast (135)" -> "UV longest_match (134)" [pos="e,444,732 444,768 444,760 444,751 444,742", _draw_="c 5 -black B 4 444 768 444 760 444 751 444 742 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 448 742 444 732 441 742 "]; - "UV gen_codes (61)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,615,934 131,485 117,532 82,657 108,688 127,708 149,677 169,696 181,706 195,822 201,837 212,859 213,868 234,881 297,917 518,930\ - 605,934"]; - "UV gen_codes (61)" -> "UV bi_reverse (62)" [pos="e,106,400 129,449 123,438 116,422 110,409", _draw_="c 5 -black B 4 129 449 123 438 116 422 110 409 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 113 408 106 400 107 411 "]; - "UV bi_reverse (62)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,615,934 81,399 72,410 61,425 54,441 36,487 38,502 38,552 38,786 38,786 38,786 38,828 21,851 51,881 92,919 484,931 605,934"]; - "UV init_block (63)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,615,933 177,655 186,698 209,806 229,837 248,863 258,868 287,881 344,905 527,924 605,932"]; - "UV pqdownheap (64)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,665,933 1047,484 1064,496 1089,510 1113,518 1126,521 1220,516 1228,526 1281,581 1237,648 1171,688 1146,703 1127,676 1105,696 1\ -074,724 1095,853 1063,881 1034,906 771,926 675,932"]; - "UV gen_bitlen (65)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,665,933 1210,483 1223,494 1239,508 1246,526 1260,557 1257,570 1246,603 1233,647 1226,664 1186,688 1163,702 1146,677 1125,696 1\ -094,724 1108,853 1075,881 1045,906 773,927 675,932"]; - "UV build_tree_0 (66)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,665,933 1019,570 1028,632 1056,838 1010,881 986,903 762,924 675,932"]; - "UV build_tree_0 (66)" -> "UV gen_codes (61)" [pos="e,191,475 975,537 960,533 943,528 927,526 846,513 639,523 556,518 429,508 283,489 201,477", _draw_="c 5 -black B 10 975 537 960 533 943 528 927 526 846 513 639 523 556 518 429 508 283 489 201 477 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 201 474 191 475 200 480 "]; - "UV build_tree_0 (66)" -> "UV pqdownheap (64)" [pos="e,1022,485 1017,534 1019,523 1020,508 1021,495", _draw_="c 5 -black B 4 1017 534 1019 523 1020 508 1021 495 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1024 495 1022 485 1018 495 "]; - "UV build_tree_0 (66)" -> "UV gen_bitlen (65)" [pos="e,1160,484 1059,538 1074,532 1091,525 1105,518 1121,510 1138,499 1152,490", _draw_="c 5 -black B 7 1059 538 1074 532 1091 525 1105 518 1121 510 1138 499 1152 490 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1154 493 1160 484 1150 487 "]; - "UV scan_tree (67)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,665,933 1181,569 1191,580 1203,595 1208,611 1220,643 1232,663 1208,688 1190,707 1106,677 1085,696 1055,724 1083,853 1051,881 1\ -023,904 770,925 675,932"]; - "UV send_tree (68)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,630,919 498,566 479,576 457,590 446,611 430,641 423,662 446,688 460,702 519,683 534,696 547,706 573,822 579,837 589,857 594,86\ -1 606,881 612,891 619,901 625,911"]; - "UV send_tree (68)" -> "UV send_bits (69)" [pos="e,603,484 552,535 565,522 582,505 596,491", _draw_="c 5 -black B 4 552 535 565 522 582 505 596 491 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 598 494 603 484 593 489 "]; - "UV send_bits (69)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,649,919 626,485 640,537 681,686 682,688 695,699 710,682 720,696 731,708 723,716 720,732 707,799 673,872 654,910"]; - "UV send_bits (69)" -> "UV flush_outbuf (1)" [pos="e,994,393 669,457 746,442 897,412 984,395", _draw_="c 5 -black B 4 669 457 746 442 897 412 984 395 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 985 398 994 393 984 392 "]; - "UV build_bl_tree (70)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,665,933 1102,654 1089,664 1074,679 1065,696 1027,769 1095,822 1035,881 1010,905 768,925 675,932"]; - "UV build_bl_tree (70)" -> "UV build_tree_0 (66)" [pos="e,1038,569 1104,620 1087,607 1065,589 1046,575", _draw_="c 5 -black B 4 1104 620 1087 607 1065 589 1046 575 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1048 572 1038 569 1044 578 "]; - "UV build_bl_tree (70)" -> "UV scan_tree (67)" [pos="e,1154,570 1134,619 1139,608 1145,592 1150,579", _draw_="c 5 -black B 4 1134 619 1139 608 1145 592 1150 579 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1153 581 1154 570 1147 578 "]; - "UV send_all_trees (71)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,634,918 540,655 558,706 609,848 631,908"]; - "UV send_all_trees (71)" -> "UV send_tree (68)" [pos="e,534,570 534,619 534,608 534,593 534,580", _draw_="c 5 -black B 4 534 619 534 608 534 593 534 580 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 538 580 534 570 531 580 "]; - "UV send_all_trees (71)" -> "UV send_bits (69)" [pos="e,623,485 578,622 587,617 595,611 601,603 624,571 626,525 624,495", _draw_="c 5 -black B 7 578 622 587 617 595 611 601 603 624 571 626 525 624 495 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 627 495 623 485 621 495 "]; - "UV flush_block (72)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,641,917 646,732 645,771 642,861 641,907"]; - "UV flush_block (72)" -> "UV init_block (63)" [pos="e,189,654 594,704 575,701 554,698 534,696 502,692 269,699 238,688 223,682 208,671 196,661", _draw_="c 5 -black B 10 594 704 575 701 554 698 534 696 502 692 269 699 238 688 223 682 208 671 196 661 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 199 659 189 654 194 664 "]; - "UV flush_block (72)" -> "UV build_tree_0 (66)" [pos="e,993,569 708,708 756,703 816,696 824,688 851,664 818,633 844,611 859,598 910,608 927,603 947,596 968,585 985,574", _draw_="c 5 -black B 13 708 708 756 703 816 696 824 688 851 664 818 633 844 611 859 598 910 608 927 603 947 596 968 585 985 574 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 986 577 993 569 983 571 "]; - "UV flush_block (72)" -> "UV send_bits (69)" [pos="e,623,485 645,696 640,653 630,546 624,495", _draw_="c 5 -black B 4 645 696 640 653 630 546 624 495 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 627 495 623 485 621 495 "]; - "UV flush_block (72)" -> "UV build_bl_tree (70)" [pos="e,1095,653 711,712 798,708 950,701 1004,688 1033,681 1063,669 1086,657", _draw_="c 5 -black B 7 711 712 798 708 950 701 1004 688 1033 681 1063 669 1086 657 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1087 660 1095 653 1084 654 "]; - "UV flush_block (72)" -> "UV send_all_trees (71)" [pos="e,559,654 622,697 606,687 585,672 567,660", _draw_="c 5 -black B 4 622 697 606 687 585 672 567 660 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 569 657 559 654 565 663 "]; - "UV flush_block (72)" -> "UV set_file_type (73)" [pos="e,901,654 708,708 755,704 816,696 839,688 858,681 877,670 893,660", _draw_="c 5 -black B 7 708 708 755 704 816 696 839 688 858 681 877 670 893 660 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 895 663 901 654 891 657 "]; - "UV flush_block (72)" -> "UV copy_block (74)" [pos="e,730,654 670,697 685,686 705,671 722,660", _draw_="c 5 -black B 4 670 697 685 686 705 671 722 660 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 724 663 730 654 720 657 "]; - "UV flush_block (72)" -> "UV compress_block (75)" [pos="e,363,654 593,704 574,701 553,698 534,696 496,691 484,697 446,688 421,681 394,669 372,658", _draw_="c 5 -black B 10 593 704 574 701 553 698 534 696 496 691 484 697 446 688 421 681 394 669 372 658 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 374 655 363 654 371 661 "]; - "UV flush_block (72)" -> "UV bi_windup (76)" [pos="e,801,558 648,696 651,673 659,634 682,611 711,582 755,567 791,560", _draw_="c 5 -black B 7 648 696 651 673 659 634 682 611 711 582 755 567 791 560 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 792 563 801 558 791 557 "]; - "UV set_file_type (73)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,665,933 939,655 974,698 1054,812 995,881 974,905 761,925 675,932"]; - "UV copy_block (74)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,649,919 751,655 749,675 744,706 735,732 714,798 676,872 654,910"]; - "UV copy_block (74)" -> "UV flush_outbuf (1)" [pos="e,995,393 756,619 761,596 771,556 789,526 818,480 830,469 875,441 909,420 951,406 985,396", _draw_="c 5 -black B 10 756 619 761 596 771 556 789 526 818 480 830 469 875 441 909 420 951 406 985 396 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 986 399 995 393 984 393 "]; - "UV copy_block (74)" -> "UV bi_windup (76)" [pos="e,837,569 774,620 790,607 812,590 829,576", _draw_="c 5 -black B 4 774 620 790 607 812 590 829 576 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 832 578 837 569 827 573 "]; - "UV compress_block (75)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,615,933 292,653 274,663 255,677 244,696 201,777 261,831 338,881 383,909 535,925 605,932"]; - "UV compress_block (75)" -> "UV send_bits (69)" [pos="e,579,479 350,619 374,595 421,553 467,526 499,507 538,492 569,482", _draw_="c 5 -black B 7 350 619 374 595 421 553 467 526 499 507 538 492 569 482 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 570 485 579 479 568 479 "]; - "UV bi_windup (76)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,663,928 879,569 894,581 915,595 936,603 951,608 994,599 1004,611 1027,636 1021,657 1004,688 932,823 748,898 672,925"]; - "UV bi_windup (76)" -> "UV flush_outbuf (1)" [pos="e,1012,397 868,534 882,510 910,468 941,441 959,425 982,411 1003,401", _draw_="c 5 -black B 7 868 534 882 510 910 468 941 441 959 425 982 411 1003 401 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1004 404 1012 397 1001 398 "]; - "UV ct_tally (77)" -> "UV zip (0)" [style=invis, minlen=0, pos="e,615,933 301,732 307,767 323,842 370,881 406,909 541,925 605,932"]; - } - subgraph cluster_22 { - graph [label="S 22", - color="#80C000", - style=bold, - lp="6315,591", - bb="6229,526,6401,603", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6315 586 0 32 4 -S 22 ", - _draw_="S 4 -bold c 7 -#80C000 p 4 6229 526 6229 603 6401 603 6401 526 ", - xdotversion=""]; - "UV getopt_long (96)" [label=getopt_long, width="1.92", height="0.49", style=dotted, color="#80C000", pos="6306,552", _draw_="S 6 -dotted c 7 -#80C000 e 6306 552 69 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6306 547 0 82 11 -getopt_long "]; - "UV getopt_long (96)" -> "UV getopt_long (96)" [style=invis, minlen=0, pos="e,6345,537 6345,567 6369,570 6393,565 6393,552 6393,541 6375,536 6355,536"]; - } - subgraph cluster_57 { - graph [label="S 57", - color="#4040C0", - style=bold, - lp="2596,421", - bb="2537,356,2655,433", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2596 416 0 32 4 -S 57 ", - _draw_="S 4 -bold c 7 -#4040C0 p 4 2537 356 2537 433 2655 433 2655 356 ", - xdotversion=""]; - "UV malloc (39)" [label=malloc, width="1.17", height="0.49", style=dotted, color="#4040C0", pos="2587,382", _draw_="S 6 -dotted c 7 -#4040C0 e 2587 382 42 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2587 377 0 44 6 -malloc "]; - "UV malloc (39)" -> "UV malloc (39)" [style=invis, minlen=0, pos="e,2612,368 2612,396 2630,401 2647,396 2647,382 2647,371 2636,365 2622,366"]; - } - subgraph cluster_23 { - graph [label="S 23", - color="#80C080", - style=bold, - lp="5400,506", - bb="5343,441,5457,518", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5400 501 0 32 4 -S 23 ", - _draw_="S 4 -bold c 7 -#80C080 p 4 5343 441 5343 518 5457 518 5457 441 ", - xdotversion=""]; - "UV usage (87)" [label=usage, width="1.11", height="0.49", style=bold, color="#80C080", pos="5391,467", _draw_="S 4 -bold c 7 -#80C080 e 5391 467 40 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5391 462 0 41 5 -usage "]; - "UV usage (87)" -> "UV usage (87)" [style=invis, minlen=0, pos="e,5415,453 5415,481 5432,486 5449,481 5449,467 5449,456 5438,450 5425,451"]; - } - subgraph cluster_58 { - graph [label="S 58", - color="#40C040", - style=bold, - lp="7966,81", - bb="7903,16,8029,93", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7966 76 0 32 4 -S 58 ", - _draw_="S 4 -bold c 7 -#40C040 p 4 7903 16 7903 93 8029 93 8029 16 ", - xdotversion=""]; - "UV isupper (20)" [label=isupper, width="1.28", height="0.49", style=dotted, color="#40C040", pos="7957,42", _draw_="S 6 -dotted c 7 -#40C040 e 7957 42 46 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7957 37 0 50 7 -isupper "]; - "UV isupper (20)" -> "UV isupper (20)" [style=invis, minlen=0, pos="e,7984,28 7984,56 8003,60 8021,56 8021,42 8021,31 8009,26 7994,27"]; - } - subgraph cluster_24 { - graph [label="S 24", - color="#004040", - style=bold, - lp="5497,421", - bb="5443,356,5551,433", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5497 416 0 32 4 -S 24 ", - _draw_="S 4 -bold c 7 -#004040 p 4 5443 356 5443 433 5551 433 5551 356 ", - xdotversion=""]; - "UV warn (35)" [label=warn, width="1.03", height="0.49", style=bold, color="#004040", pos="5488,382", _draw_="S 4 -bold c 7 -#004040 e 5488 382 37 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5488 377 0 36 4 -warn "]; - "UV warn (35)" -> "UV warn (35)" [style=invis, minlen=0, pos="e,5510,368 5510,396 5527,401 5543,396 5543,382 5543,371 5533,365 5520,366"]; - } - subgraph cluster_25 { - graph [label="S 25", - color="#0040C0", - style=bold, - lp="3058,506", - bb="3007,441,3109,518", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3058 501 0 32 4 -S 25 ", - _draw_="S 4 -bold c 7 -#0040C0 p 4 3007 441 3007 518 3109 518 3109 441 ", - xdotversion=""]; - "UV copy (10)" [label=copy, width="0.94", height="0.49", style=bold, color="#0040C0", pos="3049,467", _draw_="S 4 -bold c 7 -#0040C0 e 3049 467 34 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3049 462 0 32 4 -copy "]; - "UV copy (10)" -> "UV copy (10)" [style=invis, minlen=0, pos="e,3070,453 3070,481 3085,486 3101,481 3101,467 3101,456 3091,451 3080,451"]; - } - subgraph cluster_26 { - graph [label="S 26", - color="#00C040", - style=bold, - lp="5400,591", - bb="5351,526,5449,603", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5400 586 0 32 4 -S 26 ", - _draw_="S 4 -bold c 7 -#00C040 p 4 5351 526 5351 603 5449 603 5449 526 ", - xdotversion=""]; - "UV help (88)" [label=help, width="0.89", height="0.49", style=bold, color="#00C040", pos="5391,552", _draw_="S 4 -bold c 7 -#00C040 e 5391 552 32 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5391 547 0 29 4 -help "]; - "UV help (88)" -> "UV help (88)" [style=invis, minlen=0, pos="e,5411,538 5411,566 5426,571 5441,566 5441,552 5441,541 5432,536 5421,536"]; - } - subgraph cluster_27 { - graph [label="S 27", - color="#00C0C0", - style=bold, - lp="3184,591", - bb="3117,356,3251,603", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3184 586 0 32 4 -S 27 ", - _draw_="S 4 -bold c 7 -#00C0C0 p 4 3117 356 3117 603 3251 603 3251 356 ", - xdotversion=""]; - "UV read_tree (43)" [label=read_tree, width="1.58", height="0.50", style=bold, color="#00C0C0", pos="3182,552", _draw_="S 4 -bold c 7 -#00C0C0 e 3182 552 57 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3182 547 0 67 9 -read_tree "]; - "UV build_tree (44)" [label=build_tree, width="1.64", height="0.50", style=bold, color="#00C0C0", pos="3184,382", _draw_="S 4 -bold c 7 -#00C0C0 e 3184 382 59 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3184 377 0 69 10 -build_tree "]; - "UV unpack (45)" [label=unpack, width="1.28", height="0.49", style=bold, color="#00C0C0", pos="3179,467", _draw_="S 4 -bold c 7 -#00C0C0 e 3179 467 46 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3179 462 0 50 6 -unpack "]; - "UV read_tree (43)" -> "UV unpack (45)" [style=invis, minlen=0, pos="e,3174,484 3176,534 3174,522 3173,507 3174,494"]; - "UV build_tree (44)" -> "UV unpack (45)" [style=invis, minlen=0, pos="e,3186,449 3189,400 3189,411 3188,426 3187,439"]; - "UV unpack (45)" -> "UV read_tree (43)" [pos="e,3187,534 3185,484 3187,496 3188,511 3187,524", _draw_="c 5 -black B 4 3185 484 3187 496 3188 511 3187 524 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3184 524 3187 534 3191 524 "]; - "UV unpack (45)" -> "UV build_tree (44)" [pos="e,3177,400 3174,449 3173,438 3174,423 3176,410", _draw_="c 5 -black B 4 3174 449 3173 438 3174 423 3176 410 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3179 410 3177 400 3173 410 "]; - "UV unpack (45)" -> "UV unpack (45)" [style=invis, minlen=0, pos="e,3206,453 3206,481 3225,485 3243,481 3243,467 3243,456 3231,451 3216,452"]; - } - subgraph cluster_40 { - graph [label="S 40", - color="#400040", - style=bold, - lp="1421,421", - bb="1325,356,1517,433", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1421 416 0 32 4 -S 40 ", - _draw_="S 4 -bold c 7 -#400040 p 4 1325 356 1325 433 1517 433 1517 356 ", - xdotversion=""]; - "UV flush_window (16)" [label=flush_window, width="2.19", height="0.49", style=bold, color="#400040", pos="1412,382", _draw_="S 4 -bold c 7 -#400040 e 1412 382 79 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1412 377 0 96 12 -flush_window "]; - "UV flush_window (16)" -> "UV flush_window (16)" [style=invis, minlen=0, pos="e,1456,367 1456,397 1483,400 1509,395 1509,382 1509,371 1489,365 1466,366"]; - } - subgraph cluster_28 { - graph [label="S 28", - color="#804040", - style=bold, - lp="5518,591", - bb="5457,526,5579,603", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5518 586 0 32 4 -S 28 ", - _draw_="S 4 -bold c 7 -#804040 p 4 5457 526 5457 603 5579 603 5579 526 ", - xdotversion=""]; - "UV license (89)" [label=license, width="1.22", height="0.49", style=bold, color="#804040", pos="5509,552", _draw_="S 4 -bold c 7 -#804040 e 5509 552 44 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5509 547 0 47 7 -license "]; - "UV license (89)" -> "UV license (89)" [style=invis, minlen=0, pos="e,5535,538 5535,566 5553,571 5571,566 5571,552 5571,541 5559,535 5545,536"]; - } - subgraph cluster_41 { - graph [label="S 41", - color="#4000C0", - style=bold, - lp="7566,251", - bb="7505,186,7627,263", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7566 246 0 32 4 -S 41 ", - _draw_="S 4 -bold c 7 -#4000C0 p 4 7505 186 7505 263 7627 263 7627 186 ", - xdotversion=""]; - "UV strrchr (21)" [label=strrchr, width="1.22", height="0.49", style=dotted, color="#4000C0", pos="7557,212", _draw_="S 6 -dotted c 7 -#4000C0 e 7557 212 44 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7557 207 0 47 7 -strrchr "]; - "UV strrchr (21)" -> "UV strrchr (21)" [style=invis, minlen=0, pos="e,7583,198 7583,226 7601,231 7619,226 7619,212 7619,201 7607,195 7593,196"]; - } - subgraph cluster_42 { - graph [label="S 42", - color="#408040", - style=bold, - lp="5595,506", - bb="5518,441,5672,518", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5595 501 0 32 4 -S 42 ", - _draw_="S 4 -bold c 7 -#408040 p 4 5518 441 5518 518 5672 518 5672 441 ", - xdotversion=""]; - "UV clear_bufs (14)" [label=clear_bufs, width="1.67", height="0.49", style=bold, color="#408040", pos="5586,467", _draw_="S 4 -bold c 7 -#408040 e 5586 467 60 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5586 462 0 69 10 -clear_bufs "]; - "UV clear_bufs (14)" -> "UV clear_bufs (14)" [style=invis, minlen=0, pos="e,5620,453 5620,481 5642,485 5664,481 5664,467 5664,455 5648,450 5630,452"]; - } - subgraph cluster_29 { - graph [label="S 29", - color="#8040C0", - style=bold, - lp="4525,421", - bb="4455,356,4595,433", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 4525 416 0 32 4 -S 29 ", - _draw_="S 4 -bold c 7 -#8040C0 p 4 4455 356 4455 433 4595 433 4595 356 ", - xdotversion=""]; - "UV file_read (8)" [label=file_read, width="1.47", height="0.49", style=bold, color="#8040C0", pos="4516,382", _draw_="S 4 -bold c 7 -#8040C0 e 4516 382 53 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 4516 377 0 59 9 -file_read "]; - "UV file_read (8)" -> "UV file_read (8)" [style=invis, minlen=0, pos="e,4546,368 4546,396 4567,400 4587,396 4587,382 4587,370 4573,366 4556,367"]; - } - subgraph cluster_43 { - graph [label="S 43", - color="#4080C0", - style=bold, - lp="5351,421", - bb="5267,356,5435,433", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5351 416 0 32 4 -S 43 ", - _draw_="S 4 -bold c 7 -#4080C0 p 4 5267 356 5267 433 5435 433 5435 356 ", - xdotversion=""]; - "UV write_error (18)" [label=write_error, width="1.86", height="0.49", style=bold, color="#4080C0", pos="5342,382", _draw_="S 4 -bold c 7 -#4080C0 e 5342 382 67 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5342 377 0 79 11 -write_error "]; - "UV write_error (18)" -> "UV write_error (18)" [style=invis, minlen=0, pos="e,5380,367 5380,397 5404,400 5427,395 5427,382 5427,371 5410,366 5390,366"]; - } - subgraph cluster_44 { - graph [label="S 44", - color="#C00040", - style=bold, - lp="8189,336", - bb="8131,271,8247,348", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 8189 331 0 32 4 -S 44 ", - _draw_="S 4 -bold c 7 -#C00040 p 4 8131 271 8131 348 8247 348 8247 271 ", - xdotversion=""]; - "UV perror (36)" [label=perror, width="1.14", height="0.49", style=dotted, color="#C00040", pos="8180,297", _draw_="S 6 -dotted c 7 -#C00040 e 8180 297 41 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 8180 292 0 43 6 -perror "]; - "UV perror (36)" -> "UV perror (36)" [style=invis, minlen=0, pos="e,8204,283 8204,311 8222,316 8239,311 8239,297 8239,286 8228,280 8214,281"]; - } - subgraph cluster_10 { - graph [label="S 10", - color="#008040", - style=bold, - lp="8260,166", - bb="8199,101,8321,178", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 8260 161 0 32 4 -S 10 ", - _draw_="S 4 -bold c 7 -#008040 p 4 8199 101 8199 178 8321 178 8321 101 ", - xdotversion=""]; - "UV strcmp (92)" [label=strcmp, width="1.22", height="0.49", style=dotted, color="#008040", pos="8251,127", _draw_="S 6 -dotted c 7 -#008040 e 8251 127 44 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 8251 122 0 47 6 -strcmp "]; - "UV strcmp (92)" -> "UV strcmp (92)" [style=invis, minlen=0, pos="e,8277,113 8277,141 8295,146 8313,141 8313,127 8313,116 8301,110 8287,111"]; - } - subgraph cluster_1 { - graph [label="S 1", - color="#000080", - style=bold, - lp="2404,506", - bb="2346,441,2462,518", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2404 501 0 23 3 -S 1 ", - _draw_="S 4 -bold c 7 -#000080 p 4 2346 441 2346 518 2462 518 2462 441 ", - xdotversion=""]; - "UV unlzw (46)" [label=unlzw, width="1.14", height="0.49", style=bold, color="#000080", pos="2395,467", _draw_="S 4 -bold c 7 -#000080 e 2395 467 41 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2395 462 0 43 5 -unlzw "]; - "UV unlzw (46)" -> "UV unlzw (46)" [style=invis, minlen=0, pos="e,2419,453 2419,481 2437,486 2454,481 2454,467 2454,456 2443,450 2429,451"]; - } - subgraph cluster_45 { - graph [label="S 45", - color="#C000C0", - style=bold, - lp="4693,421", - bb="4603,271,4783,433", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 4693 416 0 32 4 -S 45 ", - _draw_="S 4 -bold c 7 -#C000C0 p 4 4603 271 4603 433 4783 433 4783 271 ", - xdotversion=""]; - "UV display_ratio (37)" [label=display_ratio, width="2.03", height="0.49", style=bold, color="#C000C0", pos="4684,382", _draw_="S 4 -bold c 7 -#C000C0 e 4684 382 73 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 4684 377 0 87 13 -display_ratio "]; - "UV _IO_putc (38)" [label=_IO_putc, width="1.47", height="0.50", style=dotted, color="#C000C0", pos="4684,297", _draw_="S 6 -dotted c 7 -#C000C0 e 4684 297 53 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 4684 292 0 61 8 -_IO_putc "]; - "UV display_ratio (37)" -> "UV display_ratio (37)" [style=invis, minlen=0, pos="e,4725,367 4725,397 4750,400 4775,395 4775,382 4775,371 4756,366 4735,366"]; - "UV display_ratio (37)" -> "UV _IO_putc (38)" [pos="e,4679,315 4678,364 4677,353 4677,338 4678,325", _draw_="c 5 -black B 4 4678 364 4677 353 4677 338 4678 325 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4681 325 4679 315 4675 325 "]; - "UV _IO_putc (38)" -> "UV display_ratio (37)" [style=invis, minlen=0, pos="e,4690,364 4689,315 4691,326 4691,341 4691,354"]; - } - subgraph cluster_46 { - graph [label="S 46", - color="#C08040", - style=bold, - lp="2917,506", - bb="2835,441,2999,518", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2917 501 0 32 4 -S 46 ", - _draw_="S 4 -bold c 7 -#C08040 p 4 2835 441 2835 518 2999 518 2999 441 ", - xdotversion=""]; - "UV (86)" [label="", width="1.81", height="0.49", style=bold, color="#C08040", pos="2908,467", _draw_="S 4 -bold c 7 -#C08040 e 2908 467 65 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2908 462 0 76 10 - "]; - "UV (86)" -> "UV (86)" [style=invis, minlen=0, pos="e,2944,452 2944,482 2968,485 2991,480 2991,467 2991,456 2974,451 2954,451"]; - } - subgraph cluster_2 { - graph [label="S 2", - color="#008000", - style=bold, - lp="1814,825", - bb="1525,356,2103,837", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1814 820 0 23 3 -S 2 ", - _draw_="S 4 -bold c 7 -#008000 p 4 1525 356 1525 837 2103 837 2103 356 ", - xdotversion=""]; - "UV unzip (41)" [label=unzip, width="1.06", height="0.49", style=bold, color="#008000", pos="1695,786", _draw_="S 4 -bold c 7 -#008000 e 1695 786 38 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1695 781 0 38 5 -unzip "]; - "UV inflate (42)" [label=inflate, width="1.14", height="0.50", style=bold, color="#008000", pos="1574,714", _draw_="S 4 -bold c 7 -#008000 e 1574 714 41 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1574 709 0 44 7 -inflate "]; - "UV huft_build (79)" [label=huft_build, width="1.64", height="0.50", style=bold, color="#008000", pos="2036,467", _draw_="S 4 -bold c 7 -#008000 e 2036 467 59 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2036 462 0 69 10 -huft_build "]; - "UV huft_free (80)" [label=huft_free, width="1.53", height="0.50", style=bold, color="#008000", pos="1958,382", _draw_="S 4 -bold c 7 -#008000 e 1958 382 55 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1958 377 0 63 9 -huft_free "]; - "UV inflate_codes (81)" [label=inflate_codes, width="2.03", height="0.50", style=bold, color="#008000", pos="1800,467", _draw_="S 4 -bold c 7 -#008000 e 1800 467 73 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1800 462 0 90 13 -inflate_codes "]; - "UV inflate_stored (82)" [label=inflate_stored, width="2.14", height="0.50", style=bold, color="#008000", pos="1806,552", _draw_="S 4 -bold c 7 -#008000 e 1806 552 77 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1806 547 0 95 14 -inflate_stored "]; - "UV inflate_fixed (83)" [label=inflate_fixed, width="1.92", height="0.50", style=bold, color="#008000", pos="1642,552", _draw_="S 4 -bold c 7 -#008000 e 1642 552 69 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1642 547 0 84 13 -inflate_fixed "]; - "UV inflate_dynamic (84)" [label=inflate_dynamic, width="2.42", height="0.50", style=bold, color="#008000", pos="1988,552", _draw_="S 4 -bold c 7 -#008000 e 1988 552 87 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1988 547 0 109 15 -inflate_dynamic "]; - "UV inflate_block (85)" [label=inflate_block, width="1.97", height="0.50", style=bold, color="#008000", pos="1803,637", _draw_="S 4 -bold c 7 -#008000 e 1803 637 71 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 1803 632 0 87 13 -inflate_block "]; - "UV unzip (41)" -> "UV unzip (41)" [style=invis, minlen=0, pos="e,1721,773 1721,799 1737,801 1751,797 1751,786 1751,777 1742,773 1731,773"]; - "UV unzip (41)" -> "UV inflate (42)" [pos="e,1594,730 1668,773 1649,763 1623,748 1603,735", _draw_="c 5 -black B 4 1668 773 1649 763 1623 748 1603 735 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1604 732 1594 730 1601 738 "]; - "UV inflate (42)" -> "UV unzip (41)" [style=invis, minlen=0, pos="e,1675,771 1602,727 1621,738 1647,753 1666,766"]; - "UV inflate (42)" -> "UV inflate_block (85)" [pos="e,1760,652 1607,703 1644,691 1706,670 1750,655", _draw_="c 5 -black B 4 1607 703 1644 691 1706 670 1750 655 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1751 658 1760 652 1749 652 "]; - "UV huft_build (79)" -> "UV unzip (41)" [style=invis, minlen=0, pos="e,1732,782 2056,485 2066,495 2078,510 2084,526 2096,558 2102,573 2084,603 2011,726 1829,768 1742,781"]; - "UV huft_build (79)" -> "UV huft_free (80)" [pos="e,1974,399 2020,449 2009,436 1994,420 1981,406", _draw_="c 5 -black B 4 2020 449 2009 436 1994 420 1981 406 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1984 404 1974 399 1979 409 "]; - "UV huft_free (80)" -> "UV unzip (41)" [style=invis, minlen=0, pos="e,1676,771 1903,385 1841,390 1737,403 1655,441 1601,466 1576,471 1549,526 1535,556 1545,569 1549,603 1550,606 1551,607 1551,611 \ -1559,645 1541,664 1566,688 1585,705 1604,680 1624,696 1638,706 1630,717 1639,732 1647,744 1658,755 1668,764"]; - "UV inflate_codes (81)" -> "UV unzip (41)" [style=invis, minlen=0, pos="e,1685,769 1733,474 1671,483 1585,499 1564,526 1543,552 1553,570 1564,603 1582,653 1609,652 1639,696 1654,717 1670,741 1680,760"]; - "UV inflate_stored (82)" -> "UV unzip (41)" [style=invis, minlen=0, pos="e,1694,768 1771,568 1754,578 1734,592 1723,611 1695,656 1692,721 1694,758"]; - "UV inflate_fixed (83)" -> "UV unzip (41)" [style=invis, minlen=0, pos="e,1691,768 1646,570 1655,611 1678,710 1689,758"]; - "UV inflate_fixed (83)" -> "UV huft_build (79)" [pos="e,2001,482 1680,537 1693,532 1707,528 1720,526 1791,512 1812,531 1882,518 1920,511 1961,496 1992,485", _draw_="c 5 -black B 10 1680 537 1693 532 1707 528 1720 526 1791 512 1812 531 1882 518 1920 511 1961 496 1992 485 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1993 488 2001 482 1990 482 "]; - "UV inflate_fixed (83)" -> "UV huft_free (80)" [pos="e,1908,390 1649,534 1660,509 1684,465 1718,441 1747,420 1837,402 1898,392", _draw_="c 5 -black B 7 1649 534 1660 509 1684 465 1718 441 1747 420 1837 402 1898 392 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1899 395 1908 390 1898 389 "]; - "UV inflate_fixed (83)" -> "UV inflate_codes (81)" [pos="e,1769,483 1672,536 1697,523 1733,503 1760,488", _draw_="c 5 -black B 4 1672 536 1697 523 1733 503 1760 488 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1762 491 1769 483 1759 485 "]; - "UV inflate_dynamic (84)" -> "UV unzip (41)" [style=invis, minlen=0, pos="e,1725,775 1978,570 1961,598 1925,652 1883,688 1838,726 1775,755 1734,771"]; - "UV inflate_dynamic (84)" -> "UV huft_build (79)" [pos="e,2026,485 1998,534 2004,523 2013,507 2021,494", _draw_="c 5 -black B 4 1998 534 2004 523 2013 507 2021 494 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2024 495 2026 485 2018 492 "]; - "UV inflate_dynamic (84)" -> "UV huft_free (80)" [pos="e,1957,400 1976,534 1973,529 1970,523 1968,518 1956,482 1956,438 1957,410", _draw_="c 5 -black B 7 1976 534 1973 529 1970 523 1968 518 1956 482 1956 438 1957 410 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1961 410 1957 400 1954 410 "]; - "UV inflate_dynamic (84)" -> "UV inflate_codes (81)" [pos="e,1835,483 1952,536 1921,522 1877,502 1844,487", _draw_="c 5 -black B 4 1952 536 1921 522 1877 502 1844 487 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1846 484 1835 483 1843 490 "]; - "UV inflate_block (85)" -> "UV unzip (41)" [style=invis, minlen=0, pos="e,1707,769 1790,655 1771,681 1734,731 1713,761"]; - "UV inflate_block (85)" -> "UV inflate_stored (82)" [pos="e,1806,570 1804,619 1805,608 1805,593 1805,580", _draw_="c 5 -black B 4 1804 619 1805 608 1805 593 1805 580 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1808 580 1806 570 1802 580 "]; - "UV inflate_block (85)" -> "UV inflate_fixed (83)" [pos="e,1666,569 1763,622 1749,616 1734,610 1720,603 1704,595 1688,584 1675,575", _draw_="c 5 -black B 7 1763 622 1749 616 1734 610 1720 603 1704 595 1688 584 1675 575 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1676 572 1666 569 1672 577 "]; - "UV inflate_block (85)" -> "UV inflate_dynamic (84)" [pos="e,1958,569 1844,622 1860,617 1877,610 1892,603 1911,595 1932,583 1949,574", _draw_="c 5 -black B 7 1844 622 1860 617 1877 610 1892 603 1911 595 1932 583 1949 574 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1951 577 1958 569 1948 571 "]; - } - subgraph cluster_11 { - graph [label="S 11", - color="#0080C0", - style=bold, - lp="4312,506", - bb="4177,356,4447,518", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 4312 501 0 32 4 -S 11 ", - _draw_="S 4 -bold c 7 -#0080C0 p 4 4177 356 4177 518 4447 518 4447 356 ", - xdotversion=""]; - "UV do_list (101)" [label=do_list, width="1.17", height="0.49", style=bold, color="#0080C0", pos="4312,467", _draw_="S 4 -bold c 7 -#0080C0 e 4312 467 42 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 4312 462 0 44 7 -do_list "]; - "UV printf (122)" [label=printf, width="1.03", height="0.50", style=dotted, color="#0080C0", pos="4222,382", _draw_="S 6 -dotted c 7 -#0080C0 e 4222 382 37 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 4222 377 0 38 6 -printf "]; - "UV lseek (123)" [label=lseek, width="0.97", height="0.50", style=dotted, color="#0080C0", pos="4312,382", _draw_="S 6 -dotted c 7 -#0080C0 e 4312 382 35 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 4312 377 0 35 5 -lseek "]; - "UV ctime (124)" [label=ctime, width="1.03", height="0.50", style=dotted, color="#0080C0", pos="4402,382", _draw_="S 6 -dotted c 7 -#0080C0 e 4402 382 37 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 4402 377 0 38 5 -ctime "]; - "UV do_list (101)" -> "UV do_list (101)" [style=invis, minlen=0, pos="e,4337,453 4337,481 4355,486 4372,481 4372,467 4372,456 4361,450 4347,451"]; - "UV do_list (101)" -> "UV printf (122)" [pos="e,4229,400 4285,453 4276,447 4267,440 4259,433 4251,426 4242,416 4236,408", _draw_="c 5 -black B 7 4285 453 4276 447 4267 440 4259 433 4251 426 4242 416 4236 408 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4238 405 4229 400 4233 410 "]; - "UV do_list (101)" -> "UV lseek (123)" [pos="e,4307,400 4306,449 4305,438 4305,423 4306,410", _draw_="c 5 -black B 4 4306 449 4305 438 4305 423 4306 410 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4309 410 4307 400 4303 410 "]; - "UV do_list (101)" -> "UV ctime (124)" [pos="e,4382,397 4326,450 4333,445 4340,439 4347,433 4356,424 4366,414 4375,405", _draw_="c 5 -black B 7 4326 450 4333 445 4340 439 4347 433 4356 424 4366 414 4375 405 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4378 407 4382 397 4373 402 "]; - "UV printf (122)" -> "UV do_list (101)" [style=invis, minlen=0, pos="e,4298,450 4242,397 4253,408 4265,422 4277,433 4281,437 4286,440 4290,443"]; - "UV lseek (123)" -> "UV do_list (101)" [style=invis, minlen=0, pos="e,4318,449 4317,400 4319,411 4319,426 4319,439"]; - "UV ctime (124)" -> "UV do_list (101)" [style=invis, minlen=0, pos="e,4339,453 4395,400 4388,410 4376,423 4365,433 4359,438 4354,443 4347,447"]; - } - subgraph cluster_12 { - graph [label="S 12", - color="#800040", - style=bold, - lp="5650,591", - bb="5587,526,5713,603", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5650 586 0 32 4 -S 12 ", - _draw_="S 4 -bold c 7 -#800040 p 4 5587 526 5587 603 5713 603 5713 526 ", - xdotversion=""]; - "UV version (90)" [label=version, width="1.28", height="0.49", style=bold, color="#800040", pos="5641,552", _draw_="S 4 -bold c 7 -#800040 e 5641 552 46 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5641 547 0 50 7 -version "]; - "UV version (90)" -> "UV version (90)" [style=invis, minlen=0, pos="e,5668,538 5668,566 5687,570 5705,566 5705,552 5705,541 5693,536 5678,537"]; - } - subgraph cluster_47 { - graph [label="S 47", - color="#C080C0", - style=bold, - lp="7960,336", - bb="7905,271,8015,348", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7960 331 0 32 4 -S 47 ", - _draw_="S 4 -bold c 7 -#C080C0 p 4 7905 271 7905 348 8015 348 8015 271 ", - xdotversion=""]; - "UV fileno (102)" [label=fileno, width="1.06", height="0.49", style=dotted, color="#C080C0", pos="7951,297", _draw_="S 6 -dotted c 7 -#C080C0 e 7951 297 38 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7951 292 0 38 6 -fileno "]; - "UV fileno (102)" -> "UV fileno (102)" [style=invis, minlen=0, pos="e,7974,283 7974,311 7990,316 8007,311 8007,297 8007,286 7996,281 7984,281"]; - } - subgraph cluster_3 { - graph [label="S 3", - color="#008080", - style=bold, - lp="7628,336", - bb="7505,271,7751,348", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7628 331 0 23 3 -S 3 ", - _draw_="S 4 -bold c 7 -#008080 p 4 7505 271 7505 348 7751 348 7751 271 ", - xdotversion=""]; - "UV make_simple_name (22)" [label=make_simple_name, width="2.94", height="0.49", style=bold, color="#008080", pos="7619,297", _draw_="S 4 -bold c 7 -#008080 e 7619 297 106 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7619 292 0 134 16 -make_simple_name "]; - "UV make_simple_name (22)" -> "UV make_simple_name (22)" [style=invis, minlen=0, pos="e,7676,282 7676,312 7711,315 7743,310 7743,297 7743,285 7717,280 7686,281"]; - } - subgraph cluster_48 { - graph [label="S 48", - color="#404000", - style=bold, - lp="4238,336", - bb="4158,271,4318,348", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 4238 331 0 32 4 -S 48 ", - _draw_="S 4 -bold c 7 -#404000 p 4 4158 271 4158 348 4318 348 4318 271 ", - xdotversion=""]; - "UV abort_gzip (34)" [label=abort_gzip, width="1.75", height="0.49", style=bold, color="#404000", pos="4229,297", _draw_="S 4 -bold c 7 -#404000 e 4229 297 63 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 4229 292 0 73 10 -abort_gzip "]; - "UV abort_gzip (34)" -> "UV abort_gzip (34)" [style=invis, minlen=0, pos="e,4265,282 4265,312 4288,315 4310,310 4310,297 4310,286 4294,281 4275,281"]; - } - subgraph cluster_13 { - graph [label="S 13", - color="#8000C0", - style=bold, - lp="3669,591", - bb="3465,441,3873,603", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3669 586 0 32 4 -S 13 ", - _draw_="S 4 -bold c 7 -#8000C0 p 4 3465 441 3465 603 3873 603 3873 441 ", - xdotversion=""]; - "UV add_envopt (23)" [label=add_envopt, width="1.89", height="0.49", style=bold, color="#8000C0", pos="3779,552", _draw_="S 4 -bold c 7 -#8000C0 e 3779 552 68 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3779 547 0 80 10 -add_envopt "]; - "UV getenv (24)" [label=getenv, width="1.22", height="0.50", style=dotted, color="#8000C0", pos="3517,467", _draw_="S 6 -dotted c 7 -#8000C0 e 3517 467 44 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3517 462 0 48 6 -getenv "]; - "UV xmalloc (26)" [label=xmalloc, width="1.31", height="0.50", style=bold, color="#8000C0", pos="3626,467", _draw_="S 4 -bold c 7 -#8000C0 e 3626 467 47 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3626 462 0 52 7 -xmalloc "]; - "UV strspn (28)" [label=strspn, width="1.14", height="0.50", style=dotted, color="#8000C0", pos="3732,467", _draw_="S 6 -dotted c 7 -#8000C0 e 3732 467 41 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3732 462 0 43 6 -strspn "]; - "UV calloc (31)" [label=calloc, width="1.03", height="0.50", style=dotted, color="#8000C0", pos="3828,467", _draw_="S 6 -dotted c 7 -#8000C0 e 3828 467 37 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3828 462 0 38 6 -calloc "]; - "UV add_envopt (23)" -> "UV add_envopt (23)" [style=invis, minlen=0, pos="e,3817,537 3817,567 3841,570 3865,565 3865,552 3865,541 3847,536 3827,536"]; - "UV add_envopt (23)" -> "UV getenv (24)" [pos="e,3523,485 3714,546 3660,541 3587,531 3561,518 3549,512 3538,502 3530,493", _draw_="c 5 -black B 7 3714 546 3660 541 3587 531 3561 518 3549 512 3538 502 3530 493 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3532 490 3523 485 3527 495 "]; - "UV add_envopt (23)" -> "UV xmalloc (26)" [pos="e,3635,485 3727,541 3709,535 3690,528 3673,518 3662,511 3651,501 3642,492", _draw_="c 5 -black B 7 3727 541 3709 535 3690 528 3673 518 3662 511 3651 501 3642 492 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3645 490 3635 485 3640 495 "]; - "UV add_envopt (23)" -> "UV strspn (28)" [pos="e,3737,485 3764,535 3757,523 3748,508 3741,494", _draw_="c 5 -black B 4 3764 535 3757 523 3748 508 3741 494 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3744 493 3737 485 3738 496 "]; - "UV add_envopt (23)" -> "UV calloc (31)" [pos="e,3813,484 3784,534 3790,522 3799,506 3807,493", _draw_="c 5 -black B 4 3784 534 3790 522 3799 506 3807 493 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3810 494 3813 484 3805 490 "]; - "UV getenv (24)" -> "UV add_envopt (23)" [style=invis, minlen=0, pos="e,3716,545 3537,483 3548,495 3563,510 3579,518 3601,529 3659,538 3706,544"]; - "UV xmalloc (26)" -> "UV add_envopt (23)" [style=invis, minlen=0, pos="e,3737,538 3648,483 3661,494 3676,508 3691,518 3702,524 3715,530 3727,535"]; - "UV strspn (28)" -> "UV add_envopt (23)" [style=invis, minlen=0, pos="e,3775,534 3747,484 3755,495 3764,511 3770,525"]; - "UV calloc (31)" -> "UV add_envopt (23)" [style=invis, minlen=0, pos="e,3794,535 3823,485 3817,497 3808,513 3800,526"]; - } - subgraph cluster_4 { - graph [label="S 4", - color="#800000", - style=bold, - lp="6919,591", - bb="6409,186,7429,603", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6919 586 0 23 3 -S 4 ", - _draw_="S 4 -bold c 7 -#800000 p 4 6409 186 6409 603 7429 603 7429 186 ", - xdotversion=""]; - "UV treat_file (99)" [label=treat_file, width="1.53", height="0.49", style=bold, color="#800000", pos="6776,552", _draw_="S 4 -bold c 7 -#800000 e 6776 552 55 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6776 547 0 62 10 -treat_file "]; - "UV get_istat (106)" [label=get_istat, width="1.47", height="0.50", style=bold, color="#800000", pos="7196,467", _draw_="S 4 -bold c 7 -#800000 e 7196 467 53 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7196 462 0 61 9 -get_istat "]; - "UV make_ofname (107)" [label=make_ofname, width="2.14", height="0.50", style=bold, color="#800000", pos="7344,467", _draw_="S 4 -bold c 7 -#800000 e 7344 467 77 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7344 462 0 95 11 -make_ofname "]; - "UV open (108)" [label=open, width="0.94", height="0.50", style=dotted, color="#800000", pos="6491,382", _draw_="S 6 -dotted c 7 -#800000 e 6491 382 34 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6491 377 0 34 4 -open "]; - "UV create_outfile (110)" [label=create_outfile, width="2.14", height="0.50", style=bold, color="#800000", pos="6660,467", _draw_="S 4 -bold c 7 -#800000 e 6660 467 77 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6660 462 0 95 14 -create_outfile "]; - "UV copy_stat (112)" [label=copy_stat, width="1.58", height="0.50", style=bold, color="#800000", pos="7008,467", _draw_="S 4 -bold c 7 -#800000 e 7008 467 57 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7008 462 0 66 9 -copy_stat "]; - "UV check_ofname (113)" [label=check_ofname, width="2.19", height="0.50", style=bold, color="#800000", pos="6722,382", _draw_="S 4 -bold c 7 -#800000 e 6722 382 79 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6722 377 0 98 12 -check_ofname "]; - "UV name_too_long (114)" [label=name_too_long, width="2.33", height="0.50", style=bold, color="#800000", pos="6521,297", _draw_="S 4 -bold c 7 -#800000 e 6521 297 84 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6521 292 0 105 13 -name_too_long "]; - "UV shorten_name (115)" [label=shorten_name, width="2.22", height="0.50", style=bold, color="#800000", pos="6703,297", _draw_="S 4 -bold c 7 -#800000 e 6703 297 80 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6703 292 0 99 12 -shorten_name "]; - "UV do_stat (116)" [label=do_stat, width="1.28", height="0.50", style=bold, color="#800000", pos="6885,382", _draw_="S 4 -bold c 7 -#800000 e 6885 382 46 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6885 377 0 51 7 -do_stat "]; - "UV lstat (117)" [label=lstat, width="0.89", height="0.50", style=dotted, color="#800000", pos="7173,297", _draw_="S 6 -dotted c 7 -#800000 e 7173 297 32 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7173 292 0 31 5 -lstat "]; - "UV stat (118)" [label=stat, width="0.83", height="0.50", style=dotted, color="#800000", pos="6848,212", _draw_="S 6 -dotted c 7 -#800000 e 6848 212 30 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6848 207 0 27 4 -stat "]; - "UV get_suffix (119)" [label=get_suffix, width="1.61", height="0.50", style=bold, color="#800000", pos="7361,212", _draw_="S 4 -bold c 7 -#800000 e 7361 212 58 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7361 207 0 68 10 -get_suffix "]; - "UV strcat (120)" [label=strcat, width="1.08", height="0.50", style=dotted, color="#800000", pos="7342,382", _draw_="S 6 -dotted c 7 -#800000 e 7342 382 39 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7342 377 0 40 6 -strcat "]; - "UV same_file (125)" [label=same_file, width="1.53", height="0.50", style=bold, color="#800000", pos="7000,212", _draw_="S 4 -bold c 7 -#800000 e 7000 212 55 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7000 207 0 64 9 -same_file "]; - "UV fflush (126)" [label=fflush, width="1.03", height="0.50", style=dotted, color="#800000", pos="6838,297", _draw_="S 6 -dotted c 7 -#800000 e 6838 297 37 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6838 292 0 38 6 -fflush "]; - "UV fgets (127)" [label=fgets, width="0.94", height="0.50", style=dotted, color="#800000", pos="6927,297", _draw_="S 6 -dotted c 7 -#800000 e 6927 297 34 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6927 292 0 34 5 -fgets "]; - "UV chmod (128)" [label=chmod, width="1.17", height="0.50", style=dotted, color="#800000", pos="7061,297", _draw_="S 6 -dotted c 7 -#800000 e 7061 297 42 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7061 292 0 45 5 -chmod "]; - "UV reset_times (129)" [label=reset_times, width="1.83", height="0.50", style=bold, color="#800000", pos="7199,382", _draw_="S 4 -bold c 7 -#800000 e 7199 382 66 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7199 377 0 80 11 -reset_times "]; - "UV utime (130)" [label=utime, width="1.08", height="0.50", style=dotted, color="#800000", pos="7282,297", _draw_="S 6 -dotted c 7 -#800000 e 7282 297 39 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7282 292 0 40 5 -utime "]; - "UV chown (131)" [label=chown, width="1.19", height="0.50", style=dotted, color="#800000", pos="7052,382", _draw_="S 6 -dotted c 7 -#800000 e 7052 382 43 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7052 377 0 46 5 -chown "]; - "UV treat_file (99)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6808,538 6808,566 6829,570 6849,566 6849,552 6849,540 6835,536 6818,537"]; - "UV treat_file (99)" -> "UV get_istat (106)" [pos="e,7173,483 6831,550 6914,547 7069,538 7120,518 7137,511 7152,500 7165,489", _draw_="c 5 -black B 7 6831 550 6914 547 7069 538 7120 518 7137 511 7152 500 7165 489 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7167 492 7173 483 7163 486 "]; - "UV treat_file (99)" -> "UV make_ofname (107)" [pos="e,7315,484 6831,551 6939,549 7172,542 7249,518 7269,511 7289,500 7306,489", _draw_="c 5 -black B 7 6831 551 6939 549 7172 542 7249 518 7269 511 7289 500 7306 489 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7308 492 7315 484 7305 486 "]; - "UV treat_file (99)" -> "UV open (108)" [pos="e,6486,400 6721,551 6657,548 6559,540 6530,518 6498,491 6487,442 6486,410", _draw_="c 5 -black B 7 6721 551 6657 548 6559 540 6530 518 6498 491 6487 442 6486 410 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6490 410 6486 400 6483 410 "]; - "UV treat_file (99)" -> "UV create_outfile (110)" [pos="e,6678,485 6750,537 6731,524 6706,506 6686,491", _draw_="c 5 -black B 4 6750 537 6731 524 6706 506 6686 491 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6688 488 6678 485 6684 494 "]; - "UV treat_file (99)" -> "UV copy_stat (112)" [pos="e,6982,483 6827,545 6858,540 6896,532 6928,518 6945,511 6960,500 6974,489", _draw_="c 5 -black B 7 6827 545 6858 540 6896 532 6928 518 6945 511 6960 500 6974 489 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6976 492 6982 483 6972 486 "]; - "UV get_istat (106)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6831,550 7186,485 7175,496 7157,510 7138,518 7086,538 6930,546 6841,550"]; - "UV get_istat (106)" -> "UV do_stat (116)" [pos="e,6912,397 7153,456 7130,451 7101,445 7074,441 7042,435 7032,441 7000,433 6973,425 6943,412 6921,401", _draw_="c 5 -black B 10 7153 456 7130 451 7101 445 7074 441 7042 435 7032 441 7000 433 6973 425 6943 412 6921 401 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6923 398 6912 397 6920 404 "]; - "UV get_istat (106)" -> "UV get_suffix (119)" [pos="e,7367,230 7225,452 7235,448 7247,443 7258,441 7273,437 7380,443 7390,433 7415,405 7386,293 7370,240", _draw_="c 5 -black B 10 7225 452 7235 448 7247 443 7258 441 7273 437 7380 443 7390 433 7415 405 7386 293 7370 240 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7373 239 7367 230 7367 241 "]; - "UV get_istat (106)" -> "UV strcat (120)" [pos="e,7329,399 7228,453 7237,448 7248,444 7258,441 7272,436 7277,439 7289,433 7301,426 7313,416 7322,407", _draw_="c 5 -black B 10 7228 453 7237 448 7248 444 7258 441 7272 436 7277 439 7289 433 7301 426 7313 416 7322 407 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7325 409 7329 399 7320 404 "]; - "UV make_ofname (107)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6831,551 7328,485 7313,496 7290,510 7267,518 7190,542 6956,550 6841,551"]; - "UV make_ofname (107)" -> "UV get_suffix (119)" [pos="e,7378,229 7385,452 7393,447 7401,441 7405,433 7409,427 7404,272 7403,271 7399,259 7392,247 7384,237", _draw_="c 5 -black B 10 7385 452 7393 447 7401 441 7405 433 7409 427 7404 272 7403 271 7399 259 7392 247 7384 237 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7387 235 7378 229 7381 239 "]; - "UV make_ofname (107)" -> "UV strcat (120)" [pos="e,7342,400 7344,449 7343,438 7343,423 7343,410", _draw_="c 5 -black B 4 7344 449 7343 438 7343 423 7343 410 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7346 410 7342 400 7340 410 "]; - "UV open (108)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6721,550 6497,400 6503,429 6512,488 6548,518 6573,538 6652,546 6711,549"]; - "UV create_outfile (110)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6759,535 6689,484 6708,497 6732,515 6751,529"]; - "UV create_outfile (110)" -> "UV open (108)" [pos="e,6514,396 6620,451 6607,446 6592,439 6579,433 6560,423 6539,411 6523,401", _draw_="c 5 -black B 7 6620 451 6607 446 6592 439 6579 433 6560 423 6539 411 6523 401 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6524 398 6514 396 6521 404 "]; - "UV create_outfile (110)" -> "UV check_ofname (113)" [pos="e,6709,400 6673,449 6681,438 6693,421 6703,408", _draw_="c 5 -black B 4 6673 449 6681 438 6693 421 6703 408 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6706 410 6709 400 6700 406 "]; - "UV create_outfile (110)" -> "UV name_too_long (114)" [pos="e,6529,315 6628,450 6620,445 6612,440 6605,433 6573,401 6548,354 6533,324", _draw_="c 5 -black B 7 6628 450 6620 445 6612 440 6605 433 6573 401 6548 354 6533 324 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6536 323 6529 315 6530 326 "]; - "UV create_outfile (110)" -> "UV shorten_name (115)" [pos="e,6666,313 6633,450 6627,445 6622,439 6619,433 6605,402 6604,386 6619,356 6627,340 6642,328 6657,318", _draw_="c 5 -black B 10 6633 450 6627 445 6622 439 6619 433 6605 402 6604 386 6619 356 6627 340 6642 328 6657 318 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6659 321 6666 313 6656 315 "]; - "UV copy_stat (112)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6829,547 6996,485 6984,496 6965,510 6946,518 6912,533 6872,541 6839,546"]; - "UV copy_stat (112)" -> "UV chmod (128)" [pos="e,7078,314 7044,453 7056,449 7068,445 7079,441 7091,437 7098,442 7104,433 7125,405 7115,388 7104,356 7100,344 7093,332 7085,322", _draw_="c 5 -black B 13 7044 453 7056 449 7068 445 7079 441 7091 437 7098 442 7104 433 7125 405 7115 388 7104 356 7100 344 7093 332 7085\ - 322 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7087 319 7078 314 7082 324 "]; - "UV copy_stat (112)" -> "UV reset_times (129)" [pos="e,7177,399 7044,453 7055,449 7067,444 7079,441 7097,436 7103,439 7119,433 7137,426 7155,415 7169,405", _draw_="c 5 -black B 10 7044 453 7055 449 7067 444 7079 441 7097 436 7103 439 7119 433 7137 426 7155 415 7169 405 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7171 408 7177 399 7167 402 "]; - "UV copy_stat (112)" -> "UV chown (131)" [pos="e,7043,400 7017,449 7023,437 7031,422 7038,409", _draw_="c 5 -black B 4 7017 449 7023 437 7031 422 7038 409 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7041 410 7043 400 7035 407 "]; - "UV check_ofname (113)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6776,534 6737,400 6745,411 6755,426 6761,441 6771,468 6775,501 6776,524"]; - "UV check_ofname (113)" -> "UV name_too_long (114)" [pos="e,6549,314 6672,368 6653,362 6633,356 6614,348 6595,340 6575,329 6558,319", _draw_="c 5 -black B 7 6672 368 6653 362 6633 356 6614 348 6595 340 6575 329 6558 319 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6559 316 6549 314 6556 322 "]; - "UV check_ofname (113)" -> "UV shorten_name (115)" [pos="e,6707,315 6718,364 6716,353 6712,338 6709,325", _draw_="c 5 -black B 4 6718 364 6716 353 6712 338 6709 325 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6712 324 6707 315 6706 325 "]; - "UV check_ofname (113)" -> "UV stat (118)" [pos="e,6868,226 6767,367 6782,363 6799,358 6815,356 6833,353 6959,360 6970,348 6994,323 6992,297 6970,271 6961,258 6951,268 6936,263 \ -6915,255 6893,242 6877,231", _draw_="c 5 -black B 16 6767 367 6782 363 6799 358 6815 356 6833 353 6959 360 6970 348 6994 323 6992 297 6970 271 6961 258 6951 268 6936\ - 263 6915 255 6893 242 6877 231 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6878 228 6868 226 6875 234 "]; - "UV check_ofname (113)" -> "UV same_file (125)" [pos="e,7004,230 6767,367 6782,363 6799,358 6815,356 6834,353 6970,360 6983,348 7013,320 7011,271 7006,240", _draw_="c 5 -black B 10 6767 367 6782 363 6799 358 6815 356 6834 353 6970 360 6983 348 7013 320 7011 271 7006 240 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7009 239 7004 230 7003 240 "]; - "UV check_ofname (113)" -> "UV fflush (126)" [pos="e,6825,314 6761,366 6772,361 6783,355 6792,348 6802,340 6811,331 6819,322", _draw_="c 5 -black B 7 6761 366 6772 361 6783 355 6792 348 6802 340 6811 331 6819 322 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6822 324 6825 314 6816 320 "]; - "UV check_ofname (113)" -> "UV fgets (127)" [pos="e,6917,314 6769,367 6783,363 6800,359 6815,356 6846,350 6857,362 6884,348 6895,342 6905,332 6911,323", _draw_="c 5 -black B 10 6769 367 6783 363 6800 359 6815 356 6846 350 6857 362 6884 348 6895 342 6905 332 6911 323 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6914 324 6917 314 6909 320 "]; - "UV check_ofname (113)" -> "UV chmod (128)" [pos="e,7048,314 6767,367 6782,363 6799,358 6815,356 6857,349 6966,364 7005,348 7019,342 7032,332 7041,322", _draw_="c 5 -black B 10 6767 367 6782 363 6799 358 6815 356 6857 349 6966 364 7005 348 7019 342 7032 332 7041 322 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7044 324 7048 314 7039 319 "]; - "UV name_too_long (114)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6721,550 6476,312 6456,321 6435,336 6423,356 6388,418 6378,465 6427,518 6446,538 6615,546 6711,550"]; - "UV name_too_long (114)" -> "UV stat (118)" [pos="e,6820,219 6572,283 6586,279 6600,275 6614,271 6683,252 6764,232 6810,221", _draw_="c 5 -black B 7 6572 283 6586 279 6600 275 6614 271 6683 252 6764 232 6810 221 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6811 224 6820 219 6810 218 "]; - "UV name_too_long (114)" -> "UV same_file (125)" [pos="e,6973,228 6567,282 6582,277 6598,273 6614,271 6675,261 6828,276 6887,263 6914,257 6943,244 6964,233", _draw_="c 5 -black B 10 6567 282 6582 277 6598 273 6614 271 6675 261 6828 276 6887 263 6914 257 6943 244 6964 233 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6966 236 6973 228 6963 230 "]; - "UV shorten_name (115)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6724,547 6673,314 6646,329 6611,350 6605,356 6559,412 6527,462 6574,518 6583,528 6658,539 6714,546"]; - "UV shorten_name (115)" -> "UV get_suffix (119)" [pos="e,7313,222 6747,282 6761,277 6777,273 6792,271 6912,252 6944,275 7064,263 7148,254 7244,236 7303,224", _draw_="c 5 -black B 10 6747 282 6761 277 6777 273 6792 271 6912 252 6944 275 7064 263 7148 254 7244 236 7303 224 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7304 227 7313 222 7303 221 "]; - "UV do_stat (116)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6804,537 6879,400 6867,432 6841,499 6825,518 6821,522 6816,527 6812,530"]; - "UV do_stat (116)" -> "UV lstat (117)" [pos="e,7163,314 6913,367 6923,363 6934,358 6945,356 6985,346 7091,365 7127,348 7139,342 7149,332 7157,322", _draw_="c 5 -black B 10 6913 367 6923 363 6934 358 6945 356 6985 346 7091 365 7127 348 7139 342 7149 332 7157 322 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7160 324 7163 314 7154 320 "]; - "UV do_stat (116)" -> "UV stat (118)" [pos="e,6867,226 6913,367 6923,363 6934,358 6945,356 6964,351 7100,361 7112,348 7136,323 7136,295 7112,271 7099,256 6955,268 6936,263 \ -6914,256 6892,244 6875,232", _draw_="c 5 -black B 16 6913 367 6923 363 6934 358 6945 356 6964 351 7100 361 7112 348 7136 323 7136 295 7112 271 7099 256 6955 268 6936\ - 263 6914 256 6892 244 6875 232 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6877 229 6867 226 6873 235 "]; - "UV lstat (117)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6815,540 7162,314 7154,326 7141,340 7126,348 7110,355 6980,345 6965,356 6937,377 6968,409 6940,433 6922,448 6907,426 6887,441 \ -6857,463 6877,491 6849,518 6842,525 6833,530 6824,535"]; - "UV stat (118)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6723,547 6818,214 6726,220 6454,241 6428,271 6406,296 6405,322 6428,348 6445,365 6518,339 6534,356 6586,406 6500,465 6549,518 \ -6560,529 6650,540 6713,546"]; - "UV get_suffix (119)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6831,549 7363,230 7364,259 7362,316 7330,348 7319,359 7306,344 7294,356 7269,380 7302,410 7274,433 7246,456 7138,417 7109,441 \ -7082,463 7117,494 7090,518 7072,534 6928,544 6841,549"]; - "UV strcat (120)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6831,550 7330,399 7320,411 7306,426 7289,433 7274,439 7148,430 7134,441 7106,462 7137,495 7109,518 7090,534 6932,544 6841,549"]; - "UV same_file (125)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6825,544 7051,219 7108,227 7195,245 7214,271 7235,298 7238,323 7214,348 7196,367 6996,339 6975,356 6948,378 6984,409 6957,433 \ -6938,451 6918,423 6897,441 6870,464 6898,492 6873,518 6862,529 6849,536 6835,541"]; - "UV fflush (126)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6722,548 6828,315 6820,326 6807,341 6792,348 6775,355 6462,342 6448,356 6396,409 6434,476 6496,518 6514,529 6635,541 6712,547"]; - "UV fgets (127)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6768,535 6918,315 6910,326 6899,341 6884,348 6872,354 6644,346 6634,356 6623,368 6623,420 6634,433 6652,451 6728,424 6746,441 \ -6773,464 6751,484 6761,518 6762,520 6763,523 6764,526"]; - "UV chmod (128)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6781,534 7046,314 7035,326 7018,341 7000,348 6983,354 6845,344 6830,356 6803,378 6820,398 6810,433 6801,464 6791,500 6784,524"]; - "UV reset_times (129)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6830,549 7174,399 7158,409 7136,422 7116,433 7109,436 7105,434 7099,441 7076,467 7102,495 7074,518 7057,532 6922,543 6840,548"]; - "UV reset_times (129)" -> "UV utime (130)" [pos="e,7266,314 7216,364 7229,351 7245,335 7259,321", _draw_="c 5 -black B 4 7216 364 7229 351 7245 335 7259 321 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7261 324 7266 314 7256 319 "]; - "UV utime (130)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6824,543 7270,314 7260,326 7246,341 7229,348 7206,357 7021,340 7000,356 6972,377 7003,409 6975,433 6956,449 6937,423 6917,441 \ -6891,464 6922,492 6897,518 6888,527 6860,535 6834,541"]; - "UV chown (131)" -> "UV treat_file (99)" [style=invis, minlen=0, pos="e,6826,545 7037,399 7027,411 7012,425 6995,433 6974,443 6961,425 6942,441 6915,464 6944,493 6917,518 6905,529 6869,537 6836,543"]; - } - subgraph cluster_49 { - graph [label="S 49", - color="#404080", - style=bold, - lp="8361,251", - bb="8309,186,8413,263", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 8361 246 0 32 4 -S 49 ", - _draw_="S 4 -bold c 7 -#404080 p 4 8309 186 8309 263 8413 263 8413 186 ", - xdotversion=""]; - "UV close (109)" [label=close, width="0.97", height="0.49", style=dotted, color="#404080", pos="8352,212", _draw_="S 6 -dotted c 7 -#404080 e 8352 212 35 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 8352 207 0 34 5 -close "]; - "UV close (109)" -> "UV close (109)" [style=invis, minlen=0, pos="e,8373,198 8373,226 8389,231 8405,226 8405,212 8405,201 8395,196 8383,196"]; - } - subgraph cluster_14 { - graph [label="S 14", - color="#808040", - style=bold, - lp="7456,166", - bb="7398,101,7514,178", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7456 161 0 32 4 -S 14 ", - _draw_="S 4 -bold c 7 -#808040 p 4 7398 101 7398 178 7514 178 7514 101 ", - xdotversion=""]; - "UV strcpy (27)" [label=strcpy, width="1.14", height="0.49", style=dotted, color="#808040", pos="7447,127", _draw_="S 6 -dotted c 7 -#808040 e 7447 127 41 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 7447 122 0 42 6 -strcpy "]; - "UV strcpy (27)" -> "UV strcpy (27)" [style=invis, minlen=0, pos="e,7471,113 7471,141 7489,146 7506,141 7506,127 7506,116 7495,110 7481,111"]; - } - subgraph cluster_5 { - graph [label="S 5", - color="#800080", - style=bold, - lp="6712,166", - bb="6656,101,6768,178", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6712 161 0 23 3 -S 5 ", - _draw_="S 4 -bold c 7 -#800080 p 4 6656 101 6656 178 6768 178 6768 101 ", - xdotversion=""]; - "UV strlen (25)" [label=strlen, width="1.08", height="0.49", style=dotted, color="#800080", pos="6703,127", _draw_="S 6 -dotted c 7 -#800080 e 6703 127 39 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6703 122 0 40 6 -strlen "]; - "UV strlen (25)" -> "UV strlen (25)" [style=invis, minlen=0, pos="e,6726,113 6726,141 6743,146 6760,141 6760,127 6760,116 6749,110 6736,111"]; - } - subgraph cluster_15 { - graph [label="S 15", - color="#8080C0", - style=bold, - lp="6017,591", - bb="5949,526,6085,603", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6017 586 0 32 4 -S 15 ", - _draw_="S 4 -bold c 7 -#8080C0 p 4 5949 526 5949 603 6085 603 6085 526 ", - xdotversion=""]; - "UV strncmp (94)" [label=strncmp, width="1.42", height="0.49", style=dotted, color="#8080C0", pos="6008,552", _draw_="S 6 -dotted c 7 -#8080C0 e 6008 552 51 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6008 547 0 56 7 -strncmp "]; - "UV strncmp (94)" -> "UV strncmp (94)" [style=invis, minlen=0, pos="e,6038,538 6038,566 6058,570 6077,566 6077,552 6077,540 6064,536 6048,537"]; - } - subgraph cluster_6 { - graph [label="S 6", - color="#808000", - style=bold, - lp="4812,591", - bb="4730,526,4894,603", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 4812 586 0 23 3 -S 6 ", - _draw_="S 4 -bold c 7 -#808000 p 4 4730 526 4730 603 4894 603 4894 526 ", - xdotversion=""]; - "UV treat_stdin (100)" [label=treat_stdin, width="1.81", height="0.49", style=bold, color="#808000", pos="4803,552", _draw_="S 4 -bold c 7 -#808000 e 4803 552 65 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 4803 547 0 76 11 -treat_stdin "]; - "UV treat_stdin (100)" -> "UV treat_stdin (100)" [style=invis, minlen=0, pos="e,4839,537 4839,567 4863,570 4886,565 4886,552 4886,541 4869,536 4849,536"]; - } - subgraph cluster_16 { - graph [label="S 16", - color="#004000", - style=bold, - lp="5605,336", - bb="5547,271,5663,348", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5605 331 0 32 4 -S 16 ", - _draw_="S 4 -bold c 7 -#004000 p 4 5547 271 5547 348 5663 348 5663 271 ", - xdotversion=""]; - "UV fprintf (33)" [label=fprintf, width="1.14", height="0.49", style=dotted, color="#004000", pos="5596,297", _draw_="S 6 -dotted c 7 -#004000 e 5596 297 41 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5596 292 0 42 7 -fprintf "]; - "UV fprintf (33)" -> "UV fprintf (33)" [style=invis, minlen=0, pos="e,5620,283 5620,311 5638,316 5655,311 5655,297 5655,286 5644,280 5630,281"]; - } - subgraph cluster_7 { - graph [label="S 7", - color="#808080", - style=bold, - lp="3411,591", - bb="3365,526,3457,603", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3411 586 0 23 3 -S 7 ", - _draw_="S 4 -bold c 7 -#808080 p 4 3365 526 3365 603 3457 603 3457 526 ", - xdotversion=""]; - "UV atoi (97)" [label=atoi, width="0.81", height="0.49", style=dotted, color="#808080", pos="3402,552", _draw_="S 6 -dotted c 7 -#808080 e 3402 552 29 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3402 547 0 26 4 -atoi "]; - "UV atoi (97)" -> "UV atoi (97)" [style=invis, minlen=0, pos="e,3420,538 3420,566 3434,571 3449,566 3449,552 3449,541 3440,536 3430,536"]; - } - subgraph cluster_17 { - graph [label="S 17", - color="#004080", - style=bold, - lp="5518,676", - bb="5466,611,5570,688", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5518 671 0 32 4 -S 17 ", - _draw_="S 4 -bold c 7 -#004080 p 4 5466 611 5466 688 5570 688 5570 611 ", - xdotversion=""]; - "UV main (91)" [label=main, width="0.97", height="0.49", style=bold, color="#004080", pos="5509,637", _draw_="S 4 -bold c 7 -#004080 e 5509 637 35 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5509 632 0 34 4 -main "]; - "UV main (91)" -> "UV main (91)" [style=invis, minlen=0, pos="e,5532,624 5532,650 5547,653 5562,649 5562,637 5562,628 5553,623 5542,623"]; - } - subgraph cluster_8 { - graph [label="S 8", - color="#000040", - style=bold, - lp="8984,825", - bb="8665,441,9303,837", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 8984 820 0 23 3 -S 8 ", - _draw_="S 4 -bold c 7 -#000040 p 4 8665 441 8665 837 9303 837 9303 441 ", - xdotversion=""]; - "UV fillbuf (49)" [label=fillbuf, width="1.03", height="0.50", style=bold, color="#000040", pos="8714,786", _draw_="S 4 -bold c 7 -#000040 e 8714 786 37 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 8714 781 0 38 7 -fillbuf "]; - "UV getbits (50)" [label=getbits, width="1.22", height="0.50", style=bold, color="#000040", pos="8930,467", _draw_="S 4 -bold c 7 -#000040 e 8930 467 44 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 8930 462 0 47 7 -getbits "]; - "UV init_getbits (51)" [label=init_getbits, width="1.78", height="0.50", style=bold, color="#000040", pos="8837,552", _draw_="S 4 -bold c 7 -#000040 e 8837 552 64 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 8837 547 0 77 12 -init_getbits "]; - "UV make_table (52)" [label=make_table, width="1.83", height="0.50", style=bold, color="#000040", pos="9058,467", _draw_="S 4 -bold c 7 -#000040 e 9058 467 66 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 9058 462 0 79 10 -make_table "]; - "UV read_pt_len (53)" [label=read_pt_len, width="1.86", height="0.50", style=bold, color="#000040", pos="9026,552", _draw_="S 4 -bold c 7 -#000040 e 9026 552 67 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 9026 547 0 81 11 -read_pt_len "]; - "UV read_c_len (54)" [label=read_c_len, width="1.72", height="0.50", style=bold, color="#000040", pos="9173,552", _draw_="S 4 -bold c 7 -#000040 e 9173 552 62 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 9173 547 0 74 10 -read_c_len "]; - "UV decode_c (55)" [label=decode_c, width="1.50", height="0.50", style=bold, color="#000040", pos="9181,637", _draw_="S 4 -bold c 7 -#000040 e 9181 637 54 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 9181 632 0 62 8 -decode_c "]; - "UV decode_p (56)" [label=decode_p, width="1.53", height="0.50", style=bold, color="#000040", pos="9054,637", _draw_="S 4 -bold c 7 -#000040 e 9054 637 55 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 9054 632 0 64 8 -decode_p "]; - "UV huf_decode_start (57)" [label=huf_decode_start, width="2.61", height="0.50", style=bold, color="#000040", pos="8887,637", _draw_="S 4 -bold c 7 -#000040 e 8887 637 94 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 8887 632 0 119 16 -huf_decode_start "]; - "UV decode_start (58)" [label=decode_start, width="2.03", height="0.50", style=bold, color="#000040", pos="8924,714", _draw_="S 4 -bold c 7 -#000040 e 8924 714 73 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 8924 709 0 89 12 -decode_start "]; - "UV decode (59)" [label=decode, width="1.22", height="0.50", style=bold, color="#000040", pos="9099,714", _draw_="S 4 -bold c 7 -#000040 e 9099 714 44 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 9099 709 0 48 6 -decode "]; - "UV unlzh (60)" [label=unlzh, width="1.08", height="0.49", style=bold, color="#000040", pos="9036,786", _draw_="S 4 -bold c 7 -#000040 e 9036 786 39 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 9036 781 0 39 5 -unlzh "]; - "UV fillbuf (49)" -> "UV unlzh (60)" [style=invis, minlen=0, pos="e,8997,786 8751,786 8831,786 8908,786 8987,786"]; - "UV getbits (50)" -> "UV fillbuf (49)" [pos="e,8708,768 8889,474 8836,484 8748,503 8725,526 8663,587 8688,705 8705,758", _draw_="c 5 -black B 7 8889 474 8836 484 8748 503 8725 526 8663 587 8688 705 8705 758 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8702 759 8708 768 8708 757 "]; - "UV getbits (50)" -> "UV unlzh (60)" [style=invis, minlen=0, pos="e,9074,781 8942,484 8952,496 8966,511 8983,518 8997,523 9234,515 9244,526 9295,577 9281,625 9244,688 9211,745 9134,769 9084,779"]; - "UV init_getbits (51)" -> "UV fillbuf (49)" [pos="e,8708,768 8784,562 8757,570 8726,585 8709,611 8681,656 8694,721 8705,758", _draw_="c 5 -black B 7 8784 562 8757 570 8726 585 8709 611 8681 656 8694 721 8705 758 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8702 759 8708 768 8708 757 "]; - "UV init_getbits (51)" -> "UV unlzh (60)" [style=invis, minlen=0, pos="e,8999,780 8815,569 8804,580 8790,595 8784,611 8772,642 8767,658 8784,688 8788,694 8793,691 8799,696 8820,709 8820,720 8842,732 \ -8889,756 8949,771 8989,778"]; - "UV make_table (52)" -> "UV unlzh (60)" [style=invis, minlen=0, pos="e,8998,781 9039,484 9025,496 9004,511 8983,518 8972,521 8773,517 8764,526 8700,592 8723,679 8799,732 8829,753 8928,770 8988,779"]; - "UV read_pt_len (53)" -> "UV fillbuf (49)" [pos="e,8709,768 8997,568 8974,580 8941,596 8910,603 8891,607 8744,597 8729,611 8690,649 8698,719 8707,758", _draw_="c 5 -black B 10 8997 568 8974 580 8941 596 8910 603 8891 607 8744 597 8729 611 8690 649 8698 719 8707 758 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8704 759 8709 768 8710 758 "]; - "UV read_pt_len (53)" -> "UV getbits (50)" [pos="e,8947,484 9004,535 8997,529 8990,524 8983,518 8974,509 8963,500 8954,491", _draw_="c 5 -black B 7 9004 535 8997 529 8990 524 8983 518 8974 509 8963 500 8954 491 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8957 489 8947 484 8952 494 "]; - "UV read_pt_len (53)" -> "UV make_table (52)" [pos="e,9051,485 9033,534 9037,523 9043,508 9047,495", _draw_="c 5 -black B 4 9033 534 9037 523 9043 508 9047 495 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 9051 496 9051 485 9044 493 "]; - "UV read_pt_len (53)" -> "UV unlzh (60)" [style=invis, minlen=0, pos="e,9074,781 9046,569 9060,581 9081,596 9102,603 9117,608 9234,599 9244,611 9268,635 9262,658 9244,688 9211,745 9134,769 9084,779"]; - "UV read_c_len (54)" -> "UV fillbuf (49)" [pos="e,8715,768 9155,569 9142,581 9122,596 9102,603 9069,614 8815,592 8784,611 8733,642 8719,717 8716,758", _draw_="c 5 -black B 10 9155 569 9142 581 9122 596 9102 603 9069 614 8815 592 8784 611 8733 642 8719 717 8716 758 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8713 758 8715 768 8719 758 "]; - "UV read_c_len (54)" -> "UV getbits (50)" [pos="e,8943,484 9139,537 9127,532 9114,528 9102,526 9077,520 9008,528 8983,518 8970,512 8959,502 8950,492", _draw_="c 5 -black B 10 9139 537 9127 532 9114 528 9102 526 9077 520 9008 528 8983 518 8970 512 8959 502 8950 492 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8952 489 8943 484 8947 494 "]; - "UV read_c_len (54)" -> "UV make_table (52)" [pos="e,9081,484 9150,535 9133,522 9108,504 9089,490", _draw_="c 5 -black B 4 9150 535 9133 522 9108 504 9089 490 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 9091 487 9081 484 9087 493 "]; - "UV read_c_len (54)" -> "UV unlzh (60)" [style=invis, minlen=0, pos="e,9074,781 9203,568 9219,578 9236,592 9244,611 9259,641 9262,658 9244,688 9211,745 9134,769 9084,779"]; - "UV decode_c (55)" -> "UV fillbuf (49)" [pos="e,8730,770 9166,654 9154,666 9137,681 9118,688 9061,709 8901,676 8842,696 8801,710 8762,741 8737,763", _draw_="c 5 -black B 10 9166 654 9154 666 9137 681 9118 688 9061 709 8901 676 8842 696 8801 710 8762 741 8737 763 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8735 760 8730 770 8740 765 "]; - "UV decode_c (55)" -> "UV getbits (50)" [pos="e,8931,485 9151,622 9141,617 9129,613 9118,611 9100,606 8964,615 8950,603 8943,596 8935,533 8932,495", _draw_="c 5 -black B 10 9151 622 9141 617 9129 613 9118 611 9100 606 8964 615 8950 603 8943 596 8935 533 8932 495 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8935 495 8931 485 8929 495 "]; - "UV decode_c (55)" -> "UV read_pt_len (53)" [pos="e,9050,569 9147,623 9129,616 9110,607 9102,603 9087,595 9071,584 9058,575", _draw_="c 5 -black B 7 9147 623 9129 616 9110 607 9102 603 9087 595 9071 584 9058 575 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 9060 572 9050 569 9056 578 "]; - "UV decode_c (55)" -> "UV read_c_len (54)" [pos="e,9175,570 9179,619 9178,608 9177,593 9176,580", _draw_="c 5 -black B 4 9179 619 9178 608 9177 593 9176 580 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 9179 580 9175 570 9173 580 "]; - "UV decode_c (55)" -> "UV unlzh (60)" [style=invis, minlen=0, pos="e,9071,778 9180,655 9178,676 9171,710 9152,732 9134,753 9105,766 9081,775"]; - "UV decode_p (56)" -> "UV fillbuf (49)" [pos="e,8722,768 9039,654 9027,666 9009,681 8990,688 8967,696 8791,683 8769,696 8757,703 8739,735 8727,759", _draw_="c 5 -black B 10 9039 654 9027 666 9009 681 8990 688 8967 696 8791 683 8769 696 8757 703 8739 735 8727 759 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8724 758 8722 768 8730 761 "]; - "UV decode_p (56)" -> "UV getbits (50)" [pos="e,8924,485 9022,622 9012,618 9001,614 8990,611 8979,607 8944,612 8935,603 8909,573 8914,526 8921,495", _draw_="c 5 -black B 10 9022 622 9012 618 9001 614 8990 611 8979 607 8944 612 8935 603 8909 573 8914 526 8921 495 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8924 496 8924 485 8918 494 "]; - "UV decode_p (56)" -> "UV unlzh (60)" [style=invis, minlen=0, pos="e,9038,768 9052,655 9050,667 9048,682 9046,696 9044,717 9041,740 9039,758"]; - "UV huf_decode_start (57)" -> "UV init_getbits (51)" [pos="e,8848,570 8876,619 8870,608 8861,592 8853,579", _draw_="c 5 -black B 4 8876 619 8870 608 8861 592 8853 579 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8856 577 8848 570 8850 580 "]; - "UV huf_decode_start (57)" -> "UV unlzh (60)" [style=invis, minlen=0, pos="e,9034,768 8921,654 8957,671 9006,695 9006,696 9021,713 9029,739 9032,758"]; - "UV decode_start (58)" -> "UV huf_decode_start (57)" [pos="e,8896,655 8915,696 8910,687 8905,675 8900,664", _draw_="c 5 -black B 4 8915 696 8910 687 8905 675 8900 664 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8903 663 8896 655 8897 666 "]; - "UV decode_start (58)" -> "UV unlzh (60)" [style=invis, minlen=0, pos="e,9018,771 8955,730 8972,740 8993,754 9009,765"]; - "UV decode (59)" -> "UV decode_c (55)" [pos="e,9163,654 9117,697 9129,687 9143,673 9155,661", _draw_="c 5 -black B 4 9117 697 9129 687 9143 673 9155 661 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 9158 663 9163 654 9153 658 "]; - "UV decode (59)" -> "UV decode_p (56)" [pos="e,9064,655 9089,696 9083,687 9076,674 9069,663", _draw_="c 5 -black B 4 9089 696 9083 687 9076 674 9069 663 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 9072 662 9064 655 9066 665 "]; - "UV decode (59)" -> "UV unlzh (60)" [style=invis, minlen=0, pos="e,9055,770 9089,732 9082,742 9071,753 9062,763"]; - "UV unlzh (60)" -> "UV decode_start (58)" [pos="e,8945,731 9010,773 8993,763 8971,749 8953,737", _draw_="c 5 -black B 4 9010 773 8993 763 8971 749 8953 737 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8955 734 8945 731 8951 740 "]; - "UV unlzh (60)" -> "UV decode (59)" [pos="e,9079,731 9045,769 9052,760 9062,748 9072,738", _draw_="c 5 -black B 4 9045 769 9052 760 9062 748 9072 738 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 9074 741 9079 731 9069 736 "]; - "UV unlzh (60)" -> "UV unlzh (60)" [style=invis, minlen=0, pos="e,9063,773 9063,799 9079,801 9093,797 9093,786 9093,777 9084,773 9073,773"]; - } - subgraph cluster_30 { - graph [label="S 30", - color="#80C040", - style=bold, - lp="3884,251", - bb="3821,101,3947,263", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3884 246 0 32 4 -S 30 ", - _draw_="S 4 -bold c 7 -#80C040 p 4 3821 101 3821 263 3947 263 3947 101 ", - xdotversion=""]; - "UV do_exit (98)" [label=do_exit, width="1.28", height="0.49", style=bold, color="#80C040", pos="3875,212", _draw_="S 4 -bold c 7 -#80C040 e 3875 212 46 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3875 207 0 50 7 -do_exit "]; - "UV exit (132)" [label=exit, width="0.81", height="0.50", style=dotted, color="#80C040", pos="3875,127", _draw_="S 6 -dotted c 7 -#80C040 e 3875 127 29 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 3875 122 0 26 4 -exit "]; - "UV do_exit (98)" -> "UV do_exit (98)" [style=invis, minlen=0, pos="e,3902,198 3902,226 3921,230 3939,226 3939,212 3939,201 3927,196 3912,197"]; - "UV do_exit (98)" -> "UV exit (132)" [pos="e,3870,145 3869,194 3868,182 3868,168 3869,155", _draw_="c 5 -black B 4 3869 194 3868 182 3868 168 3869 155 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3872 155 3870 145 3866 155 "]; - "UV exit (132)" -> "UV do_exit (98)" [style=invis, minlen=0, pos="e,3881,194 3880,145 3882,156 3882,171 3881,184"]; - } - subgraph cluster_18 { - graph [label="S 18", - color="#00C000", - style=bold, - lp="6157,591", - bb="6093,526,6221,603", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6157 586 0 32 4 -S 18 ", - _draw_="S 4 -bold c 7 -#00C000 p 4 6093 526 6093 603 6221 603 6221 526 ", - xdotversion=""]; - "UV strncpy (95)" [label=strncpy, width="1.31", height="0.49", style=dotted, color="#00C000", pos="6148,552", _draw_="S 6 -dotted c 7 -#00C000 e 6148 552 47 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6148 547 0 51 7 -strncpy "]; - "UV strncpy (95)" -> "UV strncpy (95)" [style=invis, minlen=0, pos="e,6175,538 6175,566 6194,570 6213,566 6213,552 6213,541 6200,536 6185,537"]; - } - subgraph cluster_9 { - graph [label="S 9", - color="#0000C0", - style=bold, - lp="5885,591", - bb="5829,526,5941,603", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5885 586 0 23 3 -S 9 ", - _draw_="S 4 -bold c 7 -#0000C0 p 4 5829 526 5829 603 5941 603 5941 526 ", - xdotversion=""]; - "UV signal (93)" [label=signal, width="1.08", height="0.49", style=dotted, color="#0000C0", pos="5876,552", _draw_="S 6 -dotted c 7 -#0000C0 e 5876 552 39 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5876 547 0 40 6 -signal "]; - "UV signal (93)" -> "UV signal (93)" [style=invis, minlen=0, pos="e,5899,538 5899,566 5916,571 5933,566 5933,552 5933,541 5922,535 5909,536"]; - } - subgraph cluster_31 { - graph [label="S 31", - color="#80C0C0", - style=bold, - lp="2868,336", - bb="2818,271,2918,348", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2868 331 0 32 4 -S 31 ", - _draw_="S 4 -bold c 7 -#80C0C0 p 4 2818 271 2818 348 2918 348 2918 271 ", - xdotversion=""]; - "UV read (9)" [label=read, width="0.92", height="0.49", style=dotted, color="#80C0C0", pos="2859,297", _draw_="S 6 -dotted c 7 -#80C0C0 e 2859 297 33 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2859 292 0 31 4 -read "]; - "UV read (9)" -> "UV read (9)" [style=invis, minlen=0, pos="e,2879,283 2879,311 2895,316 2910,311 2910,297 2910,286 2901,281 2889,281"]; - } - subgraph cluster_32 { - graph [label="S 32", - color="#400000", - style=bold, - lp="2593,336", - bb="2518,186,2668,348", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2593 331 0 32 4 -S 32 ", - _draw_="S 4 -bold c 7 -#400000 p 4 2518 186 2518 348 2668 348 2668 186 ", - xdotversion=""]; - "UV write_buf (12)" [label=write_buf, width="1.61", height="0.49", style=bold, color="#400000", pos="2584,297", _draw_="S 4 -bold c 7 -#400000 e 2584 297 58 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2584 292 0 66 9 -write_buf "]; - "UV write (17)" [label=write, width="1.03", height="0.50", style=dotted, color="#400000", pos="2584,212", _draw_="S 6 -dotted c 7 -#400000 e 2584 212 37 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2584 207 0 37 5 -write "]; - "UV write_buf (12)" -> "UV write_buf (12)" [style=invis, minlen=0, pos="e,2617,283 2617,311 2639,315 2660,311 2660,297 2660,285 2645,280 2627,282"]; - "UV write_buf (12)" -> "UV write (17)" [pos="e,2579,230 2578,279 2577,268 2577,253 2578,240", _draw_="c 5 -black B 4 2578 279 2577 268 2577 253 2578 240 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2581 240 2579 230 2575 240 "]; - "UV write (17)" -> "UV write_buf (12)" [style=invis, minlen=0, pos="e,2590,279 2589,230 2591,241 2591,256 2591,269"]; - } - subgraph cluster_19 { - graph [label="S 19", - color="#00C080", - style=bold, - lp="6253,421", - bb="6175,356,6331,433", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6253 416 0 32 4 -S 19 ", - _draw_="S 4 -bold c 7 -#00C080 p 4 6175 356 6175 433 6331 433 6331 356 ", - xdotversion=""]; - "UV basename (6)" [label=basename, width="1.69", height="0.49", style=bold, color="#00C080", pos="6244,382", _draw_="S 4 -bold c 7 -#00C080 e 6244 382 61 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 6244 377 0 70 8 -basename "]; - "UV basename (6)" -> "UV basename (6)" [style=invis, minlen=0, pos="e,6279,367 6279,397 6301,400 6323,395 6323,382 6323,371 6307,366 6289,366"]; - } - subgraph cluster_33 { - graph [label="S 33", - color="#400080", - style=bold, - lp="2997,421", - bb="2917,356,3077,433", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2997 416 0 32 4 -S 33 ", - _draw_="S 4 -bold c 7 -#400080 p 4 2917 356 2917 433 3077 433 3077 356 ", - xdotversion=""]; - "UV read_error (13)" [label=read_error, width="1.75", height="0.49", style=bold, color="#400080", pos="2988,382", _draw_="S 4 -bold c 7 -#400080 e 2988 382 63 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2988 377 0 73 10 -read_error "]; - "UV read_error (13)" -> "UV read_error (13)" [style=invis, minlen=0, pos="e,3024,367 3024,397 3047,400 3069,395 3069,382 3069,371 3053,366 3034,366"]; - } - subgraph cluster_34 { - graph [label="S 34", - color="#408000", - style=bold, - lp="5117,506", - bb="4975,356,5259,518", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5117 501 0 32 4 -S 34 ", - _draw_="S 4 -bold c 7 -#408000 p 4 4975 356 4975 518 5259 518 5259 356 ", - xdotversion=""]; - "UV get_method (105)" [label=get_method, width="1.94", height="0.49", style=bold, color="#408000", pos="5108,467", _draw_="S 4 -bold c 7 -#408000 e 5108 467 70 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5108 462 0 83 10 -get_method "]; - "UV memcmp (121)" [label=memcmp, width="1.50", height="0.50", style=dotted, color="#408000", pos="5037,382", _draw_="S 6 -dotted c 7 -#408000 e 5037 382 54 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5037 377 0 62 6 -memcmp "]; - "UV check_zipfile (40)" [label=check_zipfile, width="1.97", height="0.50", style=bold, color="#408000", pos="5180,382", _draw_="S 4 -bold c 7 -#408000 e 5180 382 71 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 5180 377 0 87 13 -check_zipfile "]; - "UV get_method (105)" -> "UV check_zipfile (40)" [pos="e,5160,399 5117,449 5126,436 5141,420 5153,406", _draw_="c 5 -black B 4 5117 449 5126 436 5141 420 5153 406 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5155 409 5160 399 5150 404 "]; - "UV get_method (105)" -> "UV get_method (105)" [style=invis, minlen=0, pos="e,5147,452 5147,482 5172,485 5196,480 5196,467 5196,456 5178,451 5157,451"]; - "UV get_method (105)" -> "UV memcmp (121)" [pos="e,5047,400 5088,450 5077,438 5063,422 5053,409", _draw_="c 5 -black B 4 5088 450 5077 438 5063 422 5053 409 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5055 406 5047 400 5050 410 "]; - "UV memcmp (121)" -> "UV get_method (105)" [style=invis, minlen=0, pos="e,5099,449 5057,399 5069,411 5082,427 5093,441"]; - "UV check_zipfile (40)" -> "UV get_method (105)" [style=invis, minlen=0, pos="e,5128,450 5170,400 5161,413 5147,429 5135,442"]; - } - subgraph cluster_35 { - graph [label="S 35", - color="#408080", - style=bold, - lp="2732,421", - bb="2663,356,2801,433", - _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2732 416 0 32 4 -S 35 ", - _draw_="S 4 -bold c 7 -#408080 p 4 2663 356 2663 433 2801 433 2801 356 ", - xdotversion=""]; - "UV fill_inbuf (15)" [label=fill_inbuf, width="1.44", height="0.49", style=bold, color="#408080", pos="2723,382", _draw_="S 4 -bold c 7 -#408080 e 2723 382 52 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 2723 377 0 58 10 -fill_inbuf "]; - "UV fill_inbuf (15)" -> "UV fill_inbuf (15)" [style=invis, minlen=0, pos="e,2753,368 2753,396 2773,400 2793,396 2793,382 2793,370 2779,366 2763,367"]; - } - "UV zip (0)" -> "UV updcrc (2)" [style=dotted, pos="e,1316,297 615,934 506,932 75,919 30,881 -2,852 9,829 9,786 9,786 9,786 9,467 9,416 -9,389 28,356 77,313 1062,300 1306,297", _draw_="S 6 -dotted c 5 -black B 16 615 934 506 932 75 919 30 881 -2 852 9 829 9 786 9 786 9 786 9 467 9 416 -9 389 28 356 77 313 1062 3\ -00 1306 297 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1306 301 1316 297 1306 294 "]; - "UV zip (0)" -> "UV basename (6)" [style=dotted, pos="e,6279,396 665,935 1176,933 9214,906 9307,837 9327,822 9323,809 9323,786 9323,786 9323,786 9323,552 9323,502 9345,473 9307,441 9\ -292,427 6425,436 6405,433 6364,427 6320,412 6288,400", _draw_="S 6 -dotted c 5 -black B 19 665 935 1176 933 9214 906 9307 837 9327 822 9323 809 9323 786 9323 786 9323 786 9323 552 9323 502 93\ -45 473 9307 441 9292 427 6425 436 6405 433 6364 427 6320 412 6288 400 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6290 397 6279 396 6287 403 "]; - "UV flush_outbuf (1)" -> "UV write_buf (12)" [style=dotted, pos="e,2526,299 1115,375 1170,369 1251,361 1321,356 1778,324 2327,305 2516,299", _draw_="S 6 -dotted c 5 -black B 7 1115 375 1170 369 1251 361 1321 356 1778 324 2327 305 2516 299 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2516 303 2526 299 2516 296 "]; - "UV do_exit (98)" -> "UV free (30)" [style=dotted, pos="e,3773,142 3849,198 3839,192 3827,185 3817,178 3805,169 3792,158 3781,149", _draw_="S 6 -dotted c 5 -black B 7 3849 198 3839 192 3827 185 3817 178 3805 169 3792 158 3781 149 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3783 146 3773 142 3778 151 "]; - "UV treat_file (99)" -> "UV clear_bufs (14)" [style=dotted, pos="e,5626,480 6723,547 6651,541 6519,530 6405,526 6337,523 5853,527 5784,518 5732,511 5676,495 5636,483", _draw_="S 6 -dotted c 5 -black B 10 6723 547 6651 541 6519 530 6405 526 6337 523 5853 527 5784 518 5732 511 5676 495 5636 483 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5637 480 5626 480 5635 486 "]; - "UV treat_file (99)" -> "UV write_error (18)" [style=dotted, pos="e,5366,399 6723,547 6651,541 6519,531 6405,526 6338,522 6170,527 6103,518 5971,498 5945,459 5812,441 5771,435 5480,443 5439,433 \ -5417,427 5393,414 5375,404", _draw_="S 6 -dotted c 5 -black B 16 6723 547 6651 541 6519 531 6405 526 6338 522 6170 527 6103 518 5971 498 5945 459 5812 441 5771 435 5\ -480 443 5439 433 5417 427 5393 414 5375 404 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5376 401 5366 399 5373 407 "]; - "UV treat_file (99)" -> "UV strlen (25)" [style=dotted, pos="e,6742,130 6722,548 6606,540 6343,521 6339,518 6314,490 6345,376 6375,356 6391,345 7742,361 7755,348 7856,246 7634,186 7631,186 \ -7606,177 7421,179 7394,178 7153,164 6864,141 6752,131", _draw_="S 6 -dotted c 5 -black B 19 6722 548 6606 540 6343 521 6339 518 6314 490 6345 376 6375 356 6391 345 7742 361 7755 348 7856 246 7\ -634 186 7631 186 7606 177 7421 179 7394 178 7153 164 6864 141 6752 131 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6752 128 6742 130 6752 134 "]; - "UV treat_file (99)" -> "UV strcpy (27)" [style=dotted, pos="e,7487,132 6722,548 6646,542 6515,530 6496,518 6434,476 6396,409 6448,356 6461,342 7760,361 7772,348 7826,293 7779,229 7716,186 \ -7681,161 7564,143 7497,133", _draw_="S 6 -dotted c 5 -black B 16 6722 548 6646 542 6515 530 6496 518 6434 476 6396 409 6448 356 6461 342 7760 361 7772 348 7826 293 7\ -779 229 7716 186 7681 161 7564 143 7497 133 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7497 130 7487 132 7497 136 "]; - "UV treat_file (99)" -> "UV fprintf (33)" [style=dotted, pos="e,5637,299 6722,548 6599,540 6307,519 6301,518 6172,494 6120,515 6017,433 5987,408 6007,378 5974,356 5923,319 5737,304 5647,299", _draw_="S 6 -dotted c 5 -black B 13 6722 548 6599 540 6307 519 6301 518 6172 494 6120 515 6017 433 5987 408 6007 378 5974 356 5923 319 5\ -737 304 5647 299 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5647 296 5637 299 5647 303 "]; - "UV treat_file (99)" -> "UV perror (36)" [style=dotted, pos="e,8160,312 6831,552 6988,550 7431,543 7573,518 7817,474 7881,455 8103,348 8120,340 8138,328 8152,318", _draw_="S 6 -dotted c 5 -black B 10 6831 552 6988 550 7431 543 7573 518 7817 474 7881 455 8103 348 8120 340 8138 328 8152 318 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8154 321 8160 312 8150 315 "]; - "UV treat_file (99)" -> "UV display_ratio (37)" [style=dotted, pos="e,4738,394 6723,547 6651,541 6519,530 6405,526 6373,524 5844,526 5812,518 5745,499 5744,459 5676,441 5639,430 5010,436 4971,433 \ -4894,425 4806,408 4748,396", _draw_="S 6 -dotted c 5 -black B 16 6723 547 6651 541 6519 530 6405 526 6373 524 5844 526 5812 518 5745 499 5744 459 5676 441 5639 430 5\ -010 436 4971 433 4894 425 4806 408 4748 396 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4748 393 4738 394 4747 399 "]; - "UV treat_file (99)" -> "UV (86)" [style=dotted, pos="e,2931,484 6723,547 6651,540 6519,529 6405,526 6358,524 3049,529 3003,518 2981,512 2958,500 2940,490", _draw_="S 6 -dotted c 5 -black B 10 6723 547 6651 540 6519 529 6405 526 6358 524 3049 529 3003 518 2981 512 2958 500 2940 490 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2941 487 2931 484 2937 492 "]; - "UV treat_file (99)" -> "UV strcmp (92)" [style=dotted, pos="e,8294,130 6831,551 7068,548 7997,533 8127,518 8306,496 8359,506 8522,433 8636,382 8735,280 8653,186 8631,159 8409,139 8304,131", _draw_="S 6 -dotted c 5 -black B 13 6831 551 7068 548 7997 533 8127 518 8306 496 8359 506 8522 433 8636 382 8735 280 8653 186 8631 159 8\ -409 139 8304 131 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8304 128 8294 130 8304 134 "]; - "UV treat_file (99)" -> "UV treat_stdin (100)" [style=dotted, pos="e,4861,560 6729,561 6657,574 6517,598 6396,607 6337,611 5386,610 5326,607 5163,598 4971,575 4871,561", _draw_="S 6 -dotted c 5 -black B 10 6729 561 6657 574 6517 598 6396 607 6337 611 5386 610 5326 607 5163 598 4971 575 4871 561 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4871 558 4861 560 4871 564 "]; - "UV treat_file (99)" -> "UV do_list (101)" [style=dotted, pos="e,4353,471 6723,547 6651,541 6519,530 6405,526 6087,513 5290,531 4971,518 4744,508 4474,483 4363,472", _draw_="S 6 -dotted c 5 -black B 10 6723 547 6651 541 6519 530 6405 526 6087 513 5290 531 4971 518 4744 508 4474 483 4363 472 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4363 469 4353 471 4363 475 "]; - "UV treat_file (99)" -> "UV fileno (102)" [style=dotted, pos="e,7933,313 6831,551 6967,549 7317,541 7430,518 7641,474 7695,451 7883,348 7898,340 7913,329 7925,319", _draw_="S 6 -dotted c 5 -black B 10 6831 551 6967 549 7317 541 7430 518 7641 474 7695 451 7883 348 7898 340 7913 329 7925 319 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7927 322 7933 313 7923 316 "]; - "UV treat_file (99)" -> "UV get_method (105)" [style=dotted, pos="e,5155,480 6723,547 6651,541 6519,530 6405,526 6287,521 5457,531 5339,518 5278,511 5211,495 5165,483", _draw_="S 6 -dotted c 5 -black B 10 6723 547 6651 541 6519 530 6405 526 6287 521 5457 531 5339 518 5278 511 5211 495 5165 483 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5166 480 5155 480 5164 486 "]; - "UV treat_file (99)" -> "UV close (109)" [style=dotted, pos="e,8354,230 6831,552 7009,551 7562,546 7737,518 8005,475 8137,545 8322,348 8350,318 8354,271 8354,240", _draw_="S 6 -dotted c 5 -black B 10 6831 552 7009 551 7562 546 7737 518 8005 475 8137 545 8322 348 8350 318 8354 271 8354 240 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8358 240 8354 230 8351 240 "]; - "UV treat_file (99)" -> "UV unlink (111)" [style=dotted, pos="e,8460,229 6831,551 7052,548 7865,535 7979,518 8117,496 8164,508 8281,433 8362,381 8427,284 8455,238", _draw_="S 6 -dotted c 5 -black B 10 6831 551 7052 548 7865 535 7979 518 8117 496 8164 508 8281 433 8362 381 8427 284 8455 238 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8458 239 8460 229 8452 236 "]; - "UV treat_stdin (100)" -> "UV clear_bufs (14)" [style=dotted, pos="e,5556,482 4867,549 5030,541 5447,520 5461,518 5491,511 5523,498 5547,487", _draw_="S 6 -dotted c 5 -black B 7 4867 549 5030 541 5447 520 5461 518 5491 511 5523 498 5547 487 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5549 490 5556 482 5546 484 "]; - "UV treat_stdin (100)" -> "UV strcpy (27)" [style=dotted, pos="e,7407,131 4803,534 4803,503 4803,437 4803,382 4803,382 4803,382 4803,297 4803,187 6663,183 6772,178 7007,166 7285,142 7397,132", _draw_="S 6 -dotted c 5 -black B 13 4803 534 4803 503 4803 437 4803 382 4803 382 4803 382 4803 297 4803 187 6663 183 6772 178 7007 166 7\ -285 142 7397 132 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7397 135 7407 131 7397 129 "]; - "UV treat_stdin (100)" -> "UV error (32)" [style=dotted, pos="e,3870,396 4738,550 4584,545 4202,532 4145,518 4042,493 3931,432 3879,401", _draw_="S 6 -dotted c 5 -black B 7 4738 550 4584 545 4202 532 4145 518 4042 493 3931 432 3879 401 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3880 398 3870 396 3877 404 "]; - "UV treat_stdin (100)" -> "UV fprintf (33)" [style=dotted, pos="e,5559,305 4811,534 4813,529 4815,523 4817,518 4842,447 4806,401 4865,356 4875,348 5283,349 5294,348 5386,340 5490,319 5549,307", _draw_="S 6 -dotted c 5 -black B 13 4811 534 4813 529 4815 523 4817 518 4842 447 4806 401 4865 356 4875 348 5283 349 5294 348 5386 340 5\ -490 319 5549 307 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5550 310 5559 305 5549 304 "]; - "UV treat_stdin (100)" -> "UV display_ratio (37)" [style=dotted, pos="e,4696,399 4791,535 4770,506 4726,443 4702,407", _draw_="S 6 -dotted c 5 -black B 4 4791 535 4770 506 4726 443 4702 407 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4705 405 4696 399 4699 409 "]; - "UV treat_stdin (100)" -> "UV (86)" [style=dotted, pos="e,2931,484 4738,550 4588,544 4201,532 3877,526 3853,525 3027,524 3003,518 2981,512 2958,500 2940,490", _draw_="S 6 -dotted c 5 -black B 10 4738 550 4588 544 4201 532 3877 526 3853 525 3027 524 3003 518 2981 512 2958 500 2940 490 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2941 487 2931 484 2937 492 "]; - "UV treat_stdin (100)" -> "UV do_exit (98)" [style=dotted, pos="e,3898,227 4738,550 4582,546 4197,533 4173,518 4142,496 4159,471 4135,441 4067,351 3959,270 3906,233", _draw_="S 6 -dotted c 5 -black B 10 4738 550 4582 546 4197 533 4173 518 4142 496 4159 471 4135 441 4067 351 3959 270 3906 233 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3908 230 3898 227 3904 236 "]; - "UV treat_stdin (100)" -> "UV do_list (101)" [style=dotted, pos="e,4351,474 4748,542 4652,526 4453,492 4361,476", _draw_="S 6 -dotted c 5 -black B 4 4748 542 4652 526 4453 492 4361 476 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4361 473 4351 474 4360 479 "]; - "UV treat_stdin (100)" -> "UV fileno (102)" [style=dotted, pos="e,7920,307 4840,538 4851,532 4862,526 4871,518 4905,488 4902,471 4925,433 4946,399 4937,375 4971,356 4988,346 7736,350 7755,348 \ -7810,341 7871,323 7910,310", _draw_="S 6 -dotted c 5 -black B 16 4840 538 4851 532 4862 526 4871 518 4905 488 4902 471 4925 433 4946 399 4937 375 4971 356 4988 346 7\ -736 350 7755 348 7810 341 7871 323 7910 310 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7911 313 7920 307 7909 307 "]; - "UV treat_stdin (100)" -> "UV isatty (103)" [style=dotted, pos="e,5991,304 4821,535 4827,530 4832,524 4837,518 4891,451 4867,397 4941,356 4959,346 5647,349 5667,348 5781,338 5912,317 5981,306", _draw_="S 6 -dotted c 5 -black B 13 4821 535 4827 530 4832 524 4837 518 4891 451 4867 397 4941 356 4959 346 5647 349 5667 348 5781 338 5\ -912 317 5981 306 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5982 309 5991 304 5981 303 "]; - "UV treat_stdin (100)" -> "UV fstat (104)" [style=dotted, pos="e,5718,398 4867,550 4986,545 5228,534 5263,518 5307,497 5295,460 5339,441 5373,426 5634,445 5668,433 5684,427 5699,416 5711,405", _draw_="S 6 -dotted c 5 -black B 13 4867 550 4986 545 5228 534 5263 518 5307 497 5295 460 5339 441 5373 426 5634 445 5668 433 5684 427 5\ -699 416 5711 405 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5713 408 5718 398 5708 403 "]; - "UV treat_stdin (100)" -> "UV get_method (105)" [style=dotted, pos="e,5072,482 4858,543 4891,537 4933,528 4969,518 5001,509 5036,496 5062,486", _draw_="S 6 -dotted c 5 -black B 7 4858 543 4891 537 4933 528 4969 518 5001 509 5036 496 5062 486 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5064 489 5072 482 5061 482 "]; - "UV do_list (101)" -> "UV read (9)" [style=dotted, pos="e,2892,298 4276,458 4248,451 4210,442 4176,433 4059,401 4034,376 3913,356 3714,322 3075,303 2902,298", _draw_="S 6 -dotted c 5 -black B 10 4276 458 4248 451 4210 442 4176 433 4059 401 4034 376 3913 356 3714 322 3075 303 2902 298 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2902 295 2892 298 2902 302 "]; - "UV do_list (101)" -> "UV read_error (13)" [style=dotted, pos="e,3018,398 4271,464 4194,458 4022,445 3877,441 3835,439 3155,441 3113,433 3083,427 3051,414 3027,403", _draw_="S 6 -dotted c 5 -black B 10 4271 464 4194 458 4022 445 3877 441 3835 439 3155 441 3113 433 3083 427 3051 414 3027 403 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3028 400 3018 398 3025 406 "]; - "UV do_list (101)" -> "UV display_ratio (37)" [style=dotted, pos="e,4662,399 4353,464 4422,459 4555,448 4599,433 4618,426 4637,415 4653,405", _draw_="S 6 -dotted c 5 -black B 7 4353 464 4422 459 4555 448 4599 433 4618 426 4637 415 4653 405 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4656 407 4662 399 4652 402 "]; - "UV lm_init (5)" -> "UV error (32)" [style=dotted, pos="e,3812,386 1278,863 1438,861 1984,856 2157,837 2396,810 2452,778 2687,732 2728,724 2777,754 2777,714 2777,714 2777,714 2777,552 \ -2777,497 2785,470 2831,441 2841,434 3244,433 3255,433 3460,422 3703,398 3802,387", _draw_="S 6 -dotted c 5 -black B 22 1278 863 1438 861 1984 856 2157 837 2396 810 2452 778 2687 732 2728 724 2777 754 2777 714 2777 714 2\ -777 714 2777 552 2777 497 2785 470 2831 441 2841 434 3244 433 3255 433 3460 422 3703 398 3802 387 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3802 390 3812 386 3802 384 "]; - "UV lm_init (5)" -> "UV memset (47)" [style=dotted, pos="e,2342,400 1278,863 1451,862 2072,859 2107,837 2267,737 2325,492 2340,410", _draw_="S 6 -dotted c 5 -black B 7 1278 863 1451 862 2072 859 2107 837 2267 737 2325 492 2340 410 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2343 410 2342 400 2337 409 "]; - "UV lm_init (5)" -> "UV (86)" [style=dotted, pos="e,2891,484 1278,863 1530,860 2777,849 2791,837 2834,801 2815,769 2815,714 2815,714 2815,714 2815,637 2815,579 2856,523 2884,492", _draw_="S 6 -dotted c 5 -black B 13 1278 863 1530 860 2777 849 2791 837 2834 801 2815 769 2815 714 2815 714 2815 714 2815 637 2815 579 2\ -856 523 2884 492 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2887 494 2891 484 2882 489 "]; - "UV basename (6)" -> "UV strlwr (19)" [style=dotted, pos="e,7875,145 6290,370 6315,365 6346,358 6375,356 6395,354 7739,357 7755,348 7828,305 7861,203 7873,155", _draw_="S 6 -dotted c 5 -black B 10 6290 370 6315 365 6346 358 6375 356 6395 354 7739 357 7755 348 7828 305 7861 203 7873 155 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7876 155 7875 145 7870 154 "]; - "UV basename (6)" -> "UV strrchr (21)" [style=dotted, pos="e,7539,228 6283,368 6299,363 6319,358 6337,356 6353,353 7448,356 7461,348 7494,327 7479,302 7501,271 7510,258 7521,245 7532,235", _draw_="S 6 -dotted c 5 -black B 13 6283 368 6299 363 6319 358 6337 356 6353 353 7448 356 7461 348 7494 327 7479 302 7501 271 7510 258 7\ -521 245 7532 235 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7534 238 7539 228 7529 233 "]; - "UV get_method (105)" -> "UV basename (6)" [style=dotted, pos="e,6189,390 5169,458 5216,452 5281,444 5339,441 5543,427 5594,446 5797,433 5934,423 6092,403 6179,391", _draw_="S 6 -dotted c 5 -black B 10 5169 458 5216 452 5281 444 5339 441 5543 427 5594 446 5797 433 5934 423 6092 403 6179 391 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6179 394 6189 390 6179 388 "]; - "UV get_method (105)" -> "UV fill_inbuf (15)" [style=dotted, pos="e,2759,395 5039,463 4920,457 4666,445 4451,441 4366,439 2998,444 2913,433 2863,426 2807,410 2769,398", _draw_="S 6 -dotted c 5 -black B 10 5039 463 4920 457 4666 445 4451 441 4366 439 2998 444 2913 433 2863 426 2807 410 2769 398 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2770 395 2759 395 2768 401 "]; - "UV get_method (105)" -> "UV error (32)" [style=dotted, pos="e,3881,389 5039,464 4920,459 4666,448 4451,441 4328,436 4297,444 4173,433 4071,424 3953,402 3891,391", _draw_="S 6 -dotted c 5 -black B 10 5039 464 4920 459 4666 448 4451 441 4328 436 4297 444 4173 433 4071 424 3953 402 3891 391 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3891 388 3881 389 3890 394 "]; - "UV get_method (105)" -> "UV fprintf (33)" [style=dotted, pos="e,5618,312 5165,457 5200,451 5246,444 5286,441 5297,440 5648,440 5655,433 5679,408 5669,387 5655,356 5649,341 5638,328 5626,318", _draw_="S 6 -dotted c 5 -black B 13 5165 457 5200 451 5246 444 5286 441 5297 440 5648 440 5655 433 5679 408 5669 387 5655 356 5649 341 5\ -638 328 5626 318 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5628 315 5618 312 5624 321 "]; - "UV file_read (8)" -> "UV updcrc (2)" [style=dotted, pos="e,1402,299 4487,367 4476,363 4463,358 4451,356 4399,345 2568,349 2514,348 2089,337 1576,309 1412,300", _draw_="S 6 -dotted c 5 -black B 10 4487 367 4476 363 4463 358 4451 356 4399 345 2568 349 2514 348 2089 337 1576 309 1412 300 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1412 297 1402 299 1412 303 "]; - "UV file_read (8)" -> "UV read (9)" [style=dotted, pos="e,2892,298 4486,367 4476,363 4463,358 4451,356 4419,349 4187,349 4154,348 3663,331 3065,306 2902,298", _draw_="S 6 -dotted c 5 -black B 10 4486 367 4476 363 4463 358 4451 356 4419 349 4187 349 4154 348 3663 331 3065 306 2902 298 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2902 295 2892 298 2902 302 "]; - "UV get_istat (106)" -> "UV __errno_location (11)" [style=dotted, pos="e,5241,309 7154,456 7131,450 7101,444 7074,441 6971,429 6241,445 6137,433 5984,415 5951,375 5797,356 5685,341 5656,357 5543,348 \ -5443,339 5326,323 5251,311", _draw_="S 6 -dotted c 5 -black B 16 7154 456 7131 450 7101 444 7074 441 6971 429 6241 445 6137 433 5984 415 5951 375 5797 356 5685 341 5\ -656 357 5543 348 5443 339 5326 323 5251 311 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5251 308 5241 309 5250 314 "]; - "UV get_istat (106)" -> "UV strlen (25)" [style=dotted, pos="e,6742,131 7225,452 7235,448 7247,443 7258,441 7303,431 7623,436 7668,433 7799,422 8166,447 8251,348 8274,322 8275,295 8251,271 \ -8238,257 7918,268 7899,263 7841,244 7844,204 7785,186 7765,179 7416,179 7394,178 7153,166 6864,142 6752,132", _draw_="S 6 -dotted c 5 -black B 25 7225 452 7235 448 7247 443 7258 441 7303 431 7623 436 7668 433 7799 422 8166 447 8251 348 8274 322 8\ -275 295 8251 271 8238 257 7918 268 7899 263 7841 244 7844 204 7785 186 7765 179 7416 179 7394 178 7153 166 6864 142 6752 132 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6752 129 6742 131 6752 135 "]; - "UV get_istat (106)" -> "UV strcpy (27)" [style=dotted, pos="e,7486,132 7225,452 7235,448 7247,443 7258,441 7273,438 8309,443 8319,433 8370,381 8365,326 8319,271 8304,252 7918,189 7894,186 \ -7865,181 7857,181 7827,178 7708,163 7569,144 7496,133", _draw_="S 6 -dotted c 5 -black B 19 7225 452 7235 448 7247 443 7258 441 7273 438 8309 443 8319 433 8370 381 8365 326 8319 271 8304 252 7\ -918 189 7894 186 7865 181 7857 181 7827 178 7708 163 7569 144 7496 133 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7496 130 7486 132 7496 136 "]; - "UV get_istat (106)" -> "UV perror (36)" [style=dotted, pos="e,8167,314 7225,452 7235,448 7247,443 7258,441 7333,425 7524,441 7599,433 7772,413 7811,378 7983,356 8015,351 8096,360 8125,348 \ -8138,342 8151,331 8160,321", _draw_="S 6 -dotted c 5 -black B 16 7225 452 7235 448 7247 443 7258 441 7333 425 7524 441 7599 433 7772 413 7811 378 7983 356 8015 351 8\ -096 360 8125 348 8138 342 8151 331 8160 321 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8162 324 8167 314 8157 319 "]; - "UV get_istat (106)" -> "UV strcmp (92)" [style=dotted, pos="e,8294,131 7225,452 7235,447 7247,443 7258,441 7291,434 8424,445 8454,433 8577,381 8711,287 8624,186 8604,162 8402,141 8304,132", _draw_="S 6 -dotted c 5 -black B 13 7225 452 7235 447 7247 443 7258 441 7291 434 8424 445 8454 433 8577 381 8711 287 8624 186 8604 162 8\ -402 141 8304 132 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8304 129 8294 131 8304 135 "]; - "UV make_ofname (107)" -> "UV strlwr (19)" [style=dotted, pos="e,7915,135 7421,467 7673,466 8454,461 8499,433 8536,410 8532,388 8546,348 8571,280 8614,237 8563,186 8556,178 8206,178 8195,178 \ -8099,169 7987,148 7925,137", _draw_="S 6 -dotted c 5 -black B 16 7421 467 7673 466 8454 461 8499 433 8536 410 8532 388 8546 348 8571 280 8614 237 8563 186 8556 178 8\ -206 178 8195 178 8099 169 7987 148 7925 137 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7925 134 7915 135 7924 140 "]; - "UV make_ofname (107)" -> "UV strcpy (27)" [style=dotted, pos="e,7485,134 7421,467 7666,466 8411,460 8454,433 8526,387 8522,345 8541,263 8550,229 8566,210 8541,186 8535,178 7837,178 7827,178 \ -7708,168 7568,147 7495,136", _draw_="S 6 -dotted c 5 -black B 16 7421 467 7666 466 8411 460 8454 433 8526 387 8522 345 8541 263 8550 229 8566 210 8541 186 8535 178 7\ -837 178 7827 178 7708 168 7568 147 7495 136 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7495 133 7485 134 7494 139 "]; - "UV make_ofname (107)" -> "UV fprintf (33)" [style=dotted, pos="e,5635,303 7303,452 7289,447 7273,443 7258,441 7244,438 6184,441 6171,433 6141,412 6171,377 6141,356 6127,345 5995,349 5976,348 \ -5857,337 5717,316 5645,305", _draw_="S 6 -dotted c 5 -black B 16 7303 452 7289 447 7273 443 7258 441 7244 438 6184 441 6171 433 6141 412 6171 377 6141 356 6127 345 5\ -995 349 5976 348 5857 337 5717 316 5645 305 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5645 302 5635 303 5644 308 "]; - "UV make_ofname (107)" -> "UV strcmp (92)" [style=dotted, pos="e,8295,128 7421,466 7681,462 8511,447 8534,433 8630,372 8663,272 8590,186 8554,143 8391,132 8305,128", _draw_="S 6 -dotted c 5 -black B 10 7421 466 7681 462 8511 447 8534 433 8630 372 8663 272 8590 186 8554 143 8391 132 8305 128 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8305 125 8295 128 8305 132 "]; - "UV copy (10)" -> "UV read (9)" [style=dotted, pos="e,2856,315 3029,453 3021,448 3012,443 3003,441 2991,437 2893,441 2883,433 2853,406 2852,356 2855,325", _draw_="S 6 -dotted c 5 -black B 10 3029 453 3021 448 3012 443 3003 441 2991 437 2893 441 2883 433 2853 406 2852 356 2855 325 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2858 325 2856 315 2852 325 "]; - "UV copy (10)" -> "UV __errno_location (11)" [style=dotted, pos="e,5104,309 3029,453 3021,448 3012,443 3003,441 2984,435 2927,447 2913,433 2890,407 2889,380 2913,356 2923,346 4775,348 4787,348 \ -4894,340 5016,323 5094,311", _draw_="S 6 -dotted c 5 -black B 16 3029 453 3021 448 3012 443 3003 441 2984 435 2927 447 2913 433 2890 407 2889 380 2913 356 2923 346 4\ -775 348 4787 348 4894 340 5016 323 5094 311 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5095 314 5104 309 5094 308 "]; - "UV copy (10)" -> "UV write_buf (12)" [style=dotted, pos="e,2634,306 3029,453 3021,448 3012,443 3003,441 2971,431 2881,450 2852,433 2818,412 2838,380 2805,356 2780,337 2701,318 2644,308", _draw_="S 6 -dotted c 5 -black B 13 3029 453 3021 448 3012 443 3003 441 2971 431 2881 450 2852 433 2818 412 2838 380 2805 356 2780 337 2\ -701 318 2644 308 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2644 305 2634 306 2643 311 "]; - "UV copy (10)" -> "UV read_error (13)" [style=dotted, pos="e,3000,399 3037,450 3028,438 3016,421 3006,407", _draw_="S 6 -dotted c 5 -black B 4 3037 450 3028 438 3016 421 3006 407 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3009 405 3000 399 3003 409 "]; - "UV write_buf (12)" -> "UV write_error (18)" [style=dotted, pos="e,5306,367 2626,309 2672,322 2748,340 2814,348 2882,355 5196,345 5263,356 5274,358 5286,360 5297,364", _draw_="S 6 -dotted c 5 -black B 10 2626 309 2672 322 2748 340 2814 348 2882 355 5196 345 5263 356 5274 358 5286 360 5297 364 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5295 367 5306 367 5298 361 "]; - "UV read_error (13)" -> "UV __errno_location (11)" [style=dotted, pos="e,5104,309 3028,368 3045,363 3065,358 3083,356 3177,343 4693,354 4787,348 4894,340 5016,323 5094,311", _draw_="S 6 -dotted c 5 -black B 10 3028 368 3045 363 3065 358 3083 356 3177 343 4693 354 4787 348 4894 340 5016 323 5094 311 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5095 314 5104 309 5094 308 "]; - "UV read_error (13)" -> "UV fprintf (33)" [style=dotted, pos="e,5560,305 3028,368 3045,363 3065,358 3083,356 3205,339 5172,358 5294,348 5386,339 5491,319 5550,307", _draw_="S 6 -dotted c 5 -black B 10 3028 368 3045 363 3065 358 3083 356 3205 339 5172 358 5294 348 5386 339 5491 319 5550 307 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5551 310 5560 305 5550 304 "]; - "UV read_error (13)" -> "UV abort_gzip (34)" [style=dotted, pos="e,4166,298 3028,369 3045,364 3065,359 3083,356 3292,323 3937,304 4156,298", _draw_="S 6 -dotted c 5 -black B 7 3028 369 3045 364 3065 359 3083 356 3292 323 3937 304 4156 298 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4156 302 4166 298 4156 295 "]; - "UV read_error (13)" -> "UV perror (36)" [style=dotted, pos="e,8151,309 3034,370 3057,364 3087,358 3113,356 3181,348 7952,358 8019,348 8062,341 8109,325 8141,313", _draw_="S 6 -dotted c 5 -black B 10 3034 370 3057 364 3087 358 3113 356 3181 348 7952 358 8019 348 8062 341 8109 325 8141 313 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8143 316 8151 309 8140 309 "]; - "UV create_outfile (110)" -> "UV fprintf (33)" [style=dotted, pos="e,5635,302 6583,465 6441,461 6147,450 6103,433 6056,413 6064,377 6017,356 6009,352 5756,318 5645,303", _draw_="S 6 -dotted c 5 -black B 10 6583 465 6441 461 6147 450 6103 433 6056 413 6064 377 6017 356 6009 352 5756 318 5645 303 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5645 300 5635 302 5645 306 "]; - "UV create_outfile (110)" -> "UV perror (36)" [style=dotted, pos="e,8167,314 6729,459 6786,453 6869,444 6942,441 6967,439 7367,442 7390,433 7438,414 7427,374 7474,356 7508,342 8092,361 8125,348 \ -8139,342 8151,332 8160,322", _draw_="S 6 -dotted c 5 -black B 16 6729 459 6786 453 6869 444 6942 441 6967 439 7367 442 7390 433 7438 414 7427 374 7474 356 7508 342 8\ -092 361 8125 348 8139 342 8151 332 8160 322 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8163 324 8167 314 8158 319 "]; - "UV create_outfile (110)" -> "UV fstat (104)" [style=dotted, pos="e,5755,396 6584,464 6381,456 5842,434 5837,433 5811,426 5784,412 5764,401", _draw_="S 6 -dotted c 5 -black B 7 6584 464 6381 456 5842 434 5837 433 5811 426 5784 412 5764 401 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5765 398 5755 396 5762 404 "]; - "UV create_outfile (110)" -> "UV close (109)" [style=dotted, pos="e,8348,229 6729,459 6786,453 6869,444 6942,441 7107,432 7518,445 7681,433 7816,422 8172,425 8281,348 8318,322 8337,271 8345,239", _draw_="S 6 -dotted c 5 -black B 13 6729 459 6786 453 6869 444 6942 441 7107 432 7518 445 7681 433 7816 422 8172 425 8281 348 8318 322 8\ -337 271 8345 239 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8348 240 8348 229 8342 238 "]; - "UV create_outfile (110)" -> "UV unlink (111)" [style=dotted, pos="e,8457,229 6729,459 6786,453 6869,444 6942,441 7057,435 7857,446 7970,433 8130,413 8180,422 8322,348 8376,320 8425,268 8450,237", _draw_="S 6 -dotted c 5 -black B 13 6729 459 6786 453 6869 444 6942 441 7057 435 7857 446 7970 433 8130 413 8180 422 8322 348 8376 320 8\ -425 268 8450 237 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8453 239 8457 229 8448 234 "]; - "UV copy_stat (112)" -> "UV fprintf (33)" [style=dotted, pos="e,5635,303 6955,460 6902,454 6819,445 6746,441 6730,440 6157,440 6141,433 6102,413 6118,376 6079,356 6059,345 5999,350 5976,348 \ -5857,336 5718,315 5645,304", _draw_="S 6 -dotted c 5 -black B 16 6955 460 6902 454 6819 445 6746 441 6730 440 6157 440 6141 433 6102 413 6118 376 6079 356 6059 345 5\ -999 350 5976 348 5857 336 5718 315 5645 304 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5645 301 5635 303 5645 307 "]; - "UV copy_stat (112)" -> "UV perror (36)" [style=dotted, pos="e,8167,314 7053,456 7077,450 7107,444 7134,441 7172,436 7438,443 7474,433 7537,414 7537,374 7599,356 7628,347 8098,358 8125,348 \ -8139,342 8151,332 8160,322", _draw_="S 6 -dotted c 5 -black B 16 7053 456 7077 450 7107 444 7134 441 7172 436 7438 443 7474 433 7537 414 7537 374 7599 356 7628 347 8\ -098 358 8125 348 8139 342 8151 332 8160 322 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8163 324 8167 314 8158 319 "]; - "UV copy_stat (112)" -> "UV unlink (111)" [style=dotted, pos="e,8474,230 7052,455 7076,450 7107,443 7134,441 7152,439 8420,444 8433,433 8489,385 8482,287 8476,240", _draw_="S 6 -dotted c 5 -black B 10 7052 455 7076 450 7107 443 7134 441 7152 439 8420 444 8433 433 8489 385 8482 287 8476 240 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8479 239 8474 230 8473 240 "]; - "UV fill_inbuf (15)" -> "UV read (9)" [style=dotted, pos="e,2837,311 2748,366 2770,352 2804,331 2828,316", _draw_="S 6 -dotted c 5 -black B 4 2748 366 2770 352 2804 331 2828 316 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2830 319 2837 311 2827 313 "]; - "UV fill_inbuf (15)" -> "UV __errno_location (11)" [style=dotted, pos="e,5104,309 2767,373 2799,366 2844,359 2883,356 3094,338 4576,362 4787,348 4894,340 5016,323 5094,311", _draw_="S 6 -dotted c 5 -black B 10 2767 373 2799 366 2844 359 2883 356 3094 338 4576 362 4787 348 4894 340 5016 323 5094 311 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5095 314 5104 309 5094 308 "]; - "UV fill_inbuf (15)" -> "UV read_error (13)" [style=dotted, pos="e,2925,382 2775,382 2822,382 2868,382 2915,382", _draw_="S 6 -dotted c 5 -black B 4 2775 382 2822 382 2868 382 2915 382 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2915 386 2925 382 2915 379 "]; - "UV check_ofname (113)" -> "UV __errno_location (11)" [style=dotted, pos="e,5240,309 6659,371 6623,365 6576,359 6534,356 6315,339 5763,363 5543,348 5442,340 5325,323 5250,311", _draw_="S 6 -dotted c 5 -black B 10 6659 371 6623 365 6576 359 6534 356 6315 339 5763 363 5543 348 5442 340 5325 323 5250 311 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5250 308 5240 309 5249 314 "]; - "UV check_ofname (113)" -> "UV isupper (20)" [style=dotted, pos="e,7964,59 6770,368 6788,363 6810,358 6830,356 6847,353 8008,359 8019,348 8058,308 7995,136 7968,69", _draw_="S 6 -dotted c 5 -black B 10 6770 368 6788 363 6810 358 6830 356 6847 353 8008 359 8019 348 8058 308 7995 136 7968 69 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7971 67 7964 59 7964 70 "]; - "UV check_ofname (113)" -> "UV strcpy (27)" [style=dotted, pos="e,7486,132 6771,368 6789,363 6810,358 6830,356 6845,354 7851,358 7861,348 7912,296 7909,240 7861,186 7855,179 7605,147 7496,133", _draw_="S 6 -dotted c 5 -black B 13 6771 368 6789 363 6810 358 6830 356 6845 354 7851 358 7861 348 7912 296 7909 240 7861 186 7855 179 7\ -605 147 7496 133 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7496 130 7486 132 7496 136 "]; - "UV check_ofname (113)" -> "UV fprintf (33)" [style=dotted, pos="e,5634,304 6659,371 6623,365 6576,359 6534,356 6287,337 6224,366 5976,348 5857,338 5717,317 5644,306", _draw_="S 6 -dotted c 5 -black B 10 6659 371 6623 365 6576 359 6534 356 6287 337 6224 366 5976 348 5857 338 5717 317 5644 306 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5644 303 5634 304 5643 309 "]; - "UV check_ofname (113)" -> "UV perror (36)" [style=dotted, pos="e,8167,314 6770,368 6788,363 6810,358 6830,356 6866,351 8092,361 8125,348 8139,342 8151,332 8160,322", _draw_="S 6 -dotted c 5 -black B 10 6770 368 6788 363 6810 358 6830 356 6866 351 8092 361 8125 348 8139 342 8151 332 8160 322 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8163 324 8167 314 8158 319 "]; - "UV check_ofname (113)" -> "UV strcmp (92)" [style=dotted, pos="e,8229,142 6770,368 6788,363 6810,358 6830,356 6847,353 8035,356 8049,348 8082,327 8064,301 8087,271 8127,220 8185,174 8220,148", _draw_="S 6 -dotted c 5 -black B 13 6770 368 6788 363 6810 358 6830 356 6847 353 8035 356 8049 348 8082 327 8064 301 8087 271 8127 220 8\ -185 174 8220 148 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8223 150 8229 142 8219 145 "]; - "UV check_ofname (113)" -> "UV fileno (102)" [style=dotted, pos="e,7939,314 6771,368 6789,363 6810,358 6830,356 6860,352 7872,359 7899,348 7912,342 7924,332 7933,322", _draw_="S 6 -dotted c 5 -black B 10 6771 368 6789 363 6810 358 6830 356 6860 352 7872 359 7899 348 7912 342 7924 332 7933 322 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7936 324 7939 314 7930 320 "]; - "UV check_ofname (113)" -> "UV isatty (103)" [style=dotted, pos="e,6064,303 6657,372 6621,366 6575,360 6534,356 6477,350 6463,353 6405,348 6286,336 6146,315 6074,304", _draw_="S 6 -dotted c 5 -black B 10 6657 372 6621 366 6575 360 6534 356 6477 350 6463 353 6405 348 6286 336 6146 315 6074 304 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6074 301 6064 303 6074 307 "]; - "UV check_ofname (113)" -> "UV unlink (111)" [style=dotted, pos="e,8458,229 6770,368 6788,363 6810,358 6830,356 6848,353 8073,357 8087,348 8120,327 8095,291 8127,271 8155,253 8388,275 8417,263 \ -8430,257 8443,247 8452,237", _draw_="S 6 -dotted c 5 -black B 16 6770 368 6788 363 6810 358 6830 356 6848 353 8073 357 8087 348 8120 327 8095 291 8127 271 8155 253 8\ -388 275 8417 263 8430 257 8443 247 8452 237 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8455 239 8458 229 8449 235 "]; - "UV flush_window (16)" -> "UV updcrc (2)" [style=dotted, pos="e,1370,314 1401,364 1394,352 1384,336 1375,323", _draw_="S 6 -dotted c 5 -black B 4 1401 364 1394 352 1384 336 1375 323 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1378 321 1370 314 1372 324 "]; - "UV flush_window (16)" -> "UV write_buf (12)" [style=dotted, pos="e,2526,299 1461,368 1480,364 1501,359 1521,356 1715,327 2313,306 2516,299", _draw_="S 6 -dotted c 5 -black B 7 1461 368 1480 364 1501 359 1521 356 1715 327 2313 306 2516 299 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2516 303 2526 299 2516 296 "]; - "UV name_too_long (114)" -> "UV strlen (25)" [style=dotted, pos="e,6686,143 6540,279 6573,248 6642,184 6679,150", _draw_="S 6 -dotted c 5 -black B 4 6540 279 6573 248 6642 184 6679 150 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6681 153 6686 143 6676 148 "]; - "UV shorten_name (115)" -> "UV strrchr (21)" [style=dotted, pos="e,7544,229 6747,282 6761,277 6777,273 6792,271 6831,265 7463,277 7499,263 7513,257 7527,247 7537,236", _draw_="S 6 -dotted c 5 -black B 10 6747 282 6761 277 6777 273 6792 271 6831 265 7463 277 7499 263 7513 257 7527 247 7537 236 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7539 239 7544 229 7534 234 "]; - "UV shorten_name (115)" -> "UV strlen (25)" [style=dotted, pos="e,6703,145 6703,279 6703,249 6703,190 6703,155", _draw_="S 6 -dotted c 5 -black B 4 6703 279 6703 249 6703 190 6703 155 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6707 155 6703 145 6700 155 "]; - "UV shorten_name (115)" -> "UV strcpy (27)" [style=dotted, pos="e,7406,129 6714,279 6731,253 6766,206 6809,186 6862,161 7254,137 7396,130", _draw_="S 6 -dotted c 5 -black B 7 6714 279 6731 253 6766 206 6809 186 6862 161 7254 137 7396 130 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7396 133 7406 129 7396 127 "]; - "UV shorten_name (115)" -> "UV strcspn (29)" [style=dotted, pos="e,4561,213 6660,282 6645,277 6629,273 6614,271 6588,266 4904,222 4571,213", _draw_="S 6 -dotted c 5 -black B 7 6660 282 6645 277 6629 273 6614 271 6588 266 4904 222 4571 213 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4571 210 4561 213 4571 217 "]; - "UV shorten_name (115)" -> "UV error (32)" [style=dotted, pos="e,3882,378 6681,314 6664,326 6639,341 6614,348 6582,356 4207,354 4173,356 4073,360 3955,371 3892,377", _draw_="S 6 -dotted c 5 -black B 10 6681 314 6664 326 6639 341 6614 348 6582 356 4207 354 4173 356 4073 360 3955 371 3892 377 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3892 374 3882 378 3892 380 "]; - "UV shorten_name (115)" -> "UV strcmp (92)" [style=dotted, pos="e,8212,135 6747,282 6761,277 6777,273 6792,271 6827,265 7396,277 7428,263 7472,244 7458,205 7501,186 7524,175 7925,180 7949,178 \ -8040,169 8143,149 8202,137", _draw_="S 6 -dotted c 5 -black B 16 6747 282 6761 277 6777 273 6792 271 6827 265 7396 277 7428 263 7472 244 7458 205 7501 186 7524 175 7\ -925 180 7949 178 8040 169 8143 149 8202 137 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8203 140 8212 135 8202 134 "]; - "UV write_error (18)" -> "UV fprintf (33)" [style=dotted, pos="e,5563,308 5383,368 5430,352 5506,327 5553,311", _draw_="S 6 -dotted c 5 -black B 4 5383 368 5430 352 5506 327 5553 311 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5554 314 5563 308 5552 308 "]; - "UV write_error (18)" -> "UV abort_gzip (34)" [style=dotted, pos="e,4283,306 5305,367 5292,363 5277,358 5263,356 5191,343 4673,353 4599,348 4491,339 4366,320 4293,308", _draw_="S 6 -dotted c 5 -black B 10 5305 367 5292 363 5277 358 5263 356 5191 343 4673 353 4599 348 4491 339 4366 320 4293 308 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4293 305 4283 306 4292 311 "]; - "UV write_error (18)" -> "UV perror (36)" [style=dotted, pos="e,8151,309 5383,368 5400,363 5420,358 5439,356 5582,337 7878,370 8019,348 8062,341 8109,325 8141,313", _draw_="S 6 -dotted c 5 -black B 10 5383 368 5400 363 5420 358 5439 356 5582 337 7878 370 8019 348 8062 341 8109 325 8141 313 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8143 316 8151 309 8140 309 "]; - "UV strlwr (19)" -> "UV isupper (20)" [style=dotted, pos="e,7942,59 7894,111 7906,98 7922,81 7935,66", _draw_="S 6 -dotted c 5 -black B 4 7894 111 7906 98 7922 81 7935 66 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7937 69 7942 59 7932 64 "]; - "UV do_stat (116)" -> "UV __errno_location (11)" [style=dotted, pos="e,5239,309 6854,368 6841,363 6825,358 6810,356 6741,344 5614,353 5543,348 5441,340 5324,323 5249,311", _draw_="S 6 -dotted c 5 -black B 10 6854 368 6841 363 6825 358 6810 356 6741 344 5614 353 5543 348 5441 340 5324 323 5249 311 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5249 308 5239 309 5248 314 "]; - "UV make_simple_name (22)" -> "UV strrchr (21)" [style=dotted, pos="e,7569,229 7606,279 7597,267 7585,250 7575,237", _draw_="S 6 -dotted c 5 -black B 4 7606 279 7597 267 7585 250 7575 237 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7578 235 7569 229 7572 239 "]; - "UV get_suffix (119)" -> "UV strlwr (19)" [style=dotted, pos="e,7841,132 7406,200 7426,195 7449,190 7471,186 7506,179 7730,147 7831,133", _draw_="S 6 -dotted c 5 -black B 7 7406 200 7426 195 7449 190 7471 186 7506 179 7730 147 7831 133 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7831 136 7841 132 7831 130 "]; - "UV get_suffix (119)" -> "UV strlen (25)" [style=dotted, pos="e,6741,132 7307,205 7182,189 6870,148 6751,133", _draw_="S 6 -dotted c 5 -black B 4 7307 205 7182 189 6870 148 6751 133 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6751 130 6741 132 6751 136 "]; - "UV get_suffix (119)" -> "UV strcpy (27)" [style=dotted, pos="e,7431,143 7378,195 7392,182 7410,164 7424,150", _draw_="S 6 -dotted c 5 -black B 4 7378 195 7392 182 7410 164 7424 150 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7426 153 7431 143 7421 148 "]; - "UV get_suffix (119)" -> "UV strcmp (92)" [style=dotted, pos="e,8212,135 7404,200 7424,194 7449,189 7471,186 7577,172 7844,187 7949,178 8040,169 8143,149 8202,137", _draw_="S 6 -dotted c 5 -black B 10 7404 200 7424 194 7449 189 7471 186 7577 172 7844 187 7949 178 8040 169 8143 149 8202 137 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8203 140 8212 135 8202 134 "]; - "UV add_envopt (23)" -> "UV strlen (25)" [style=dotted, pos="e,6664,127 3839,544 3875,538 3915,529 3928,518 4050,414 3934,274 4067,186 4123,148 6298,130 6654,127", _draw_="S 6 -dotted c 5 -black B 10 3839 544 3875 538 3915 529 3928 518 4050 414 3934 274 4067 186 4123 148 6298 130 6654 127 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6654 131 6664 127 6654 124 "]; - "UV add_envopt (23)" -> "UV strcpy (27)" [style=dotted, pos="e,7407,131 3842,546 3889,540 3947,531 3967,518 4003,495 3997,474 4021,441 4079,363 4075,324 4154,271 4271,193 4319,205 4457,186 \ -4521,177 6708,180 6772,178 7007,168 7285,143 7397,132", _draw_="S 6 -dotted c 5 -black B 19 3842 546 3889 540 3947 531 3967 518 4003 495 3997 474 4021 441 4079 363 4075 324 4154 271 4271 193 4\ -319 205 4457 186 4521 177 6708 180 6772 178 7007 168 7285 143 7397 132 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7397 135 7407 131 7397 129 "]; - "UV add_envopt (23)" -> "UV strcspn (29)" [style=dotted, pos="e,4498,229 3845,548 3906,543 3991,533 4021,518 4109,472 4084,397 4173,356 4204,342 4291,358 4322,348 4391,324 4457,268 4490,236", _draw_="S 6 -dotted c 5 -black B 13 3845 548 3906 543 3991 533 4021 518 4109 472 4084 397 4173 356 4204 342 4291 358 4322 348 4391 324 4\ -457 268 4490 236 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4493 238 4498 229 4488 233 "]; - "UV add_envopt (23)" -> "UV free (30)" [style=dotted, pos="e,3762,144 3833,541 3859,535 3886,527 3895,518 3945,464 3942,422 3913,356 3890,301 3851,311 3817,263 3794,228 3775,182 3765,154", _draw_="S 6 -dotted c 5 -black B 13 3833 541 3859 535 3886 527 3895 518 3945 464 3942 422 3913 356 3890 301 3851 311 3817 263 3794 228 3\ -775 182 3765 154 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3768 153 3762 144 3762 155 "]; - "UV add_envopt (23)" -> "UV error (32)" [style=dotted, pos="e,3858,399 3828,540 3849,534 3869,526 3874,518 3897,485 3879,437 3863,408", _draw_="S 6 -dotted c 5 -black B 7 3828 540 3849 534 3869 526 3874 518 3897 485 3879 437 3863 408 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3866 406 3858 399 3860 409 "]; - "UV xmalloc (26)" -> "UV error (32)" [style=dotted, pos="e,3817,392 3655,453 3664,449 3673,445 3682,441 3725,424 3774,407 3807,395", _draw_="S 6 -dotted c 5 -black B 7 3655 453 3664 449 3673 445 3682 441 3725 424 3774 407 3807 395 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3808 398 3817 392 3806 392 "]; - "UV xmalloc (26)" -> "UV malloc (39)" [style=dotted, pos="e,2604,398 3600,452 3591,448 3580,443 3570,441 3521,429 2708,448 2659,433 2642,427 2625,415 2612,405", _draw_="S 6 -dotted c 5 -black B 10 3600 452 3591 448 3580 443 3570 441 3521 429 2708 448 2659 433 2642 427 2625 415 2612 405 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2614 402 2604 398 2609 407 "]; - "UV reset_times (129)" -> "UV fprintf (33)" [style=dotted, pos="e,5634,304 7158,368 7142,363 7122,358 7104,356 6980,338 6102,356 5976,348 5857,339 5716,317 5644,306", _draw_="S 6 -dotted c 5 -black B 10 7158 368 7142 363 7122 358 7104 356 6980 338 6102 356 5976 348 5857 339 5716 317 5644 306 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5644 303 5634 304 5643 309 "]; - "UV reset_times (129)" -> "UV perror (36)" [style=dotted, pos="e,8167,314 7241,368 7258,363 7277,358 7294,356 7317,352 8104,356 8125,348 8139,342 8151,332 8160,322", _draw_="S 6 -dotted c 5 -black B 10 7241 368 7258 363 7277 358 7294 356 7317 352 8104 356 8125 348 8139 342 8151 332 8160 322 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8163 324 8167 314 8158 319 "]; - "UV error (32)" -> "UV fprintf (33)" [style=dotted, pos="e,5560,305 3882,378 3942,372 4067,360 4173,356 4298,350 5170,358 5294,348 5386,339 5491,319 5550,307", _draw_="S 6 -dotted c 5 -black B 10 3882 378 3942 372 4067 360 4173 356 4298 350 5170 358 5294 348 5386 339 5491 319 5550 307 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5551 310 5560 305 5550 304 "]; - "UV error (32)" -> "UV abort_gzip (34)" [style=dotted, pos="e,4180,308 3880,375 3944,361 4089,329 4170,310", _draw_="S 6 -dotted c 5 -black B 4 3880 375 3944 361 4089 329 4170 310 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4171 313 4180 308 4170 307 "]; - "UV abort_gzip (34)" -> "UV do_exit (98)" [style=dotted, pos="e,3917,219 4191,283 4179,279 4165,274 4152,271 4075,249 3983,231 3927,221", _draw_="S 6 -dotted c 5 -black B 7 4191 283 4179 279 4165 274 4152 271 4075 249 3983 231 3927 221 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3927 218 3917 219 3926 224 "]; - "UV abort_gzip (34)" -> "UV close (109)" [style=dotted, pos="e,8318,215 4289,291 4362,285 4490,274 4599,271 4936,258 7295,275 7631,263 7888,253 8195,227 8308,216", _draw_="S 6 -dotted c 5 -black B 10 4289 291 4362 285 4490 274 4599 271 4936 258 7295 275 7631 263 7888 253 8195 227 8308 216 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8308 219 8318 215 8308 213 "]; - "UV abort_gzip (34)" -> "UV unlink (111)" [style=dotted, pos="e,8458,229 4289,291 4362,285 4490,274 4599,271 4626,270 8393,272 8417,263 8430,257 8443,247 8452,237", _draw_="S 6 -dotted c 5 -black B 10 4289 291 4362 285 4490 274 4599 271 4626 270 8393 272 8417 263 8430 257 8443 247 8452 237 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8455 239 8458 229 8449 235 "]; - "UV warn (35)" -> "UV fprintf (33)" [style=dotted, pos="e,5576,313 5507,367 5524,354 5549,334 5568,319", _draw_="S 6 -dotted c 5 -black B 4 5507 367 5524 354 5549 334 5568 319 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5570 322 5576 313 5566 316 "]; - "UV fill_window (133)" -> "UV memcpy (48)" [style=dotted, pos="e,2155,399 1258,701 1267,697 1276,693 1283,688 1411,604 1382,501 1521,441 1551,428 2077,444 2107,433 2122,427 2137,416 2148,406", _draw_="S 6 -dotted c 5 -black B 13 1258 701 1267 697 1276 693 1283 688 1411 604 1382 501 1521 441 1551 428 2077 444 2107 433 2122 427 2\ -137 416 2148 406 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2150 409 2155 399 2145 404 "]; - "UV fill_window (133)" -> "UV (86)" [style=dotted, pos="e,2870,481 1277,709 1339,705 1437,698 1521,696 1587,693 2043,697 2107,688 2400,645 2738,529 2860,484", _draw_="S 6 -dotted c 5 -black B 10 1277 709 1339 705 1437 698 1521 696 1587 693 2043 697 2107 688 2400 645 2738 529 2860 484 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2861 487 2870 481 2859 481 "]; - "UV display_ratio (37)" -> "UV fprintf (33)" [style=dotted, pos="e,5559,305 4737,370 4764,365 4797,359 4827,356 5034,335 5088,367 5294,348 5386,340 5490,319 5549,307", _draw_="S 6 -dotted c 5 -black B 10 4737 370 4764 365 4797 359 4827 356 5034 335 5088 367 5294 348 5386 340 5490 319 5549 307 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5550 310 5559 305 5549 304 "]; - "UV check_zipfile (40)" -> "UV fprintf (33)" [style=dotted, pos="e,5557,302 5223,368 5236,363 5250,359 5263,356 5364,331 5481,313 5547,303", _draw_="S 6 -dotted c 5 -black B 7 5223 368 5236 363 5250 359 5263 356 5364 331 5481 313 5547 303 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5547 306 5557 302 5547 300 "]; - "UV unzip (41)" -> "UV updcrc (2)" [style=dotted, pos="e,1345,314 1658,782 1608,776 1518,762 1447,732 1378,702 1307,712 1307,637 1307,637 1307,637 1307,552 1307,464 1294,438 1321,356 \ -1325,344 1332,332 1339,322", _draw_="S 6 -dotted c 5 -black B 16 1658 782 1608 776 1518 762 1447 732 1378 702 1307 712 1307 637 1307 637 1307 637 1307 552 1307 464 1\ -294 438 1321 356 1325 344 1332 332 1339 322 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1342 324 1345 314 1336 320 "]; - "UV unzip (41)" -> "UV fill_inbuf (15)" [style=dotted, pos="e,2706,399 1731,780 1782,770 1877,752 1957,732 2238,659 2352,705 2572,518 2603,491 2587,464 2620,441 2635,430 2643,440 2659,433 \ -2673,426 2687,415 2698,406", _draw_="S 6 -dotted c 5 -black B 16 1731 780 1782 770 1877 752 1957 732 2238 659 2352 705 2572 518 2603 491 2587 464 2620 441 2635 430 2\ -643 440 2659 433 2673 426 2687 415 2698 406 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2701 408 2706 399 2696 403 "]; - "UV unzip (41)" -> "UV flush_window (16)" [style=dotted, pos="e,1408,400 1662,777 1583,756 1391,697 1391,637 1391,637 1391,637 1391,552 1391,501 1400,443 1406,410", _draw_="S 6 -dotted c 5 -black B 10 1662 777 1583 756 1391 697 1391 637 1391 637 1391 637 1391 552 1391 501 1400 443 1406 410 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1409 410 1408 400 1403 409 "]; - "UV unzip (41)" -> "UV error (32)" [style=dotted, pos="e,3812,386 1733,785 1899,782 2555,768 2639,732 2696,707 2739,698 2739,637 2739,637 2739,637 2739,552 2739,501 2724,473 2763,441 \ -2774,432 3242,433 3255,433 3460,422 3703,398 3802,387", _draw_="S 6 -dotted c 5 -black B 19 1733 785 1899 782 2555 768 2639 732 2696 707 2739 698 2739 637 2739 637 2739 637 2739 552 2739 501 2\ -724 473 2763 441 2774 432 3242 433 3255 433 3460 422 3703 398 3802 387 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3802 390 3812 386 3802 384 "]; - "UV unzip (41)" -> "UV fprintf (33)" [style=dotted, pos="e,5560,305 1731,780 1795,771 1933,750 2049,732 2266,697 2335,712 2524,603 2626,544 2623,480 2733,441 2752,434 3066,443 3081,433 \ -3112,412 3083,376 3113,356 3126,347 5279,349 5294,348 5386,339 5491,319 5550,307", _draw_="S 6 -dotted c 5 -black B 22 1731 780 1795 771 1933 750 2049 732 2266 697 2335 712 2524 603 2626 544 2623 480 2733 441 2752 434 3\ -066 443 3081 433 3112 412 3083 376 3113 356 3126 347 5279 349 5294 348 5386 339 5491 319 5550 307 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5551 310 5560 305 5550 304 "]; - "UV inflate (42)" -> "UV flush_window (16)" [style=dotted, pos="e,1419,400 1560,697 1558,694 1556,691 1554,688 1496,589 1444,463 1423,409", _draw_="S 6 -dotted c 5 -black B 7 1560 697 1558 694 1556 691 1554 688 1496 589 1444 463 1423 409 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1426 408 1419 400 1420 411 "]; - "UV read_tree (43)" -> "UV fill_inbuf (15)" [style=dotted, pos="e,2731,399 3126,549 3033,543 2857,531 2831,518 2786,493 2753,441 2736,408", _draw_="S 6 -dotted c 5 -black B 7 3126 549 3033 543 2857 531 2831 518 2786 493 2753 441 2736 408 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2739 406 2731 399 2733 409 "]; - "UV read_tree (43)" -> "UV error (32)" [style=dotted, pos="e,3811,385 3213,537 3264,513 3368,466 3461,441 3582,408 3729,392 3801,386", _draw_="S 6 -dotted c 5 -black B 7 3213 537 3264 513 3368 466 3461 441 3582 408 3729 392 3801 386 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3801 389 3811 385 3801 383 "]; - "UV unpack (45)" -> "UV fill_inbuf (15)" [style=dotted, pos="e,2760,394 3150,453 3139,448 3126,443 3113,441 3026,422 3001,446 2913,433 2863,425 2808,409 2770,397", _draw_="S 6 -dotted c 5 -black B 10 3150 453 3139 448 3126 443 3113 441 3026 422 3001 446 2913 433 2863 425 2808 409 2770 397 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2771 394 2760 394 2769 400 "]; - "UV unpack (45)" -> "UV flush_window (16)" [style=dotted, pos="e,1439,399 3151,453 3140,448 3126,443 3113,441 3027,424 1608,452 1521,433 1496,427 1468,415 1448,404", _draw_="S 6 -dotted c 5 -black B 10 3151 453 3140 448 3126 443 3113 441 3027 424 1608 452 1521 433 1496 427 1468 415 1448 404 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1449 401 1439 399 1446 407 "]; - "UV unpack (45)" -> "UV error (32)" [style=dotted, pos="e,3812,386 3223,461 3343,446 3680,404 3802,387", _draw_="S 6 -dotted c 5 -black B 4 3223 461 3343 446 3680 404 3802 387 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3802 390 3812 386 3802 384 "]; - "UV unlzw (46)" -> "UV read (9)" [style=dotted, pos="e,2831,307 2425,455 2437,450 2449,442 2459,433 2488,405 2470,376 2503,356 2520,346 2654,350 2672,348 2725,340 2784,322 2821,310", _draw_="S 6 -dotted c 5 -black B 13 2425 455 2437 450 2449 442 2459 433 2488 405 2470 376 2503 356 2520 346 2654 350 2672 348 2725 340 2\ -784 322 2821 310 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2822 313 2831 307 2820 307 "]; - "UV unlzw (46)" -> "UV write_buf (12)" [style=dotted, pos="e,2543,310 2411,451 2416,445 2421,439 2425,433 2447,401 2438,383 2465,356 2484,337 2511,323 2534,314", _draw_="S 6 -dotted c 5 -black B 10 2411 451 2416 445 2421 439 2425 433 2447 401 2438 383 2465 356 2484 337 2511 323 2534 314 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2535 317 2543 310 2532 311 "]; - "UV unlzw (46)" -> "UV read_error (13)" [style=dotted, pos="e,2948,396 2435,463 2488,457 2585,447 2668,441 2729,436 2745,443 2805,433 2852,426 2902,411 2938,399", _draw_="S 6 -dotted c 5 -black B 10 2435 463 2488 457 2585 447 2668 441 2729 436 2745 443 2805 433 2852 426 2902 411 2938 399 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2939 402 2948 396 2937 396 "]; - "UV unlzw (46)" -> "UV fill_inbuf (15)" [style=dotted, pos="e,2708,399 2424,454 2437,449 2453,444 2468,441 2510,432 2620,447 2659,433 2675,427 2690,416 2701,406", _draw_="S 6 -dotted c 5 -black B 10 2424 454 2437 449 2453 444 2468 441 2510 432 2620 447 2659 433 2675 427 2690 416 2701 406 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2703 409 2708 399 2698 404 "]; - "UV unlzw (46)" -> "UV error (32)" [style=dotted, pos="e,3812,386 2435,463 2497,457 2621,445 2725,441 2961,429 3020,444 3255,433 3460,422 3703,398 3802,387", _draw_="S 6 -dotted c 5 -black B 10 2435 463 2497 457 2621 445 2725 441 2961 429 3020 444 3255 433 3460 422 3703 398 3802 387 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3802 390 3812 386 3802 384 "]; - "UV unlzw (46)" -> "UV fprintf (33)" [style=dotted, pos="e,5560,305 2419,453 2427,448 2436,444 2445,441 2467,433 2477,446 2495,433 2526,410 2501,376 2533,356 2550,345 5275,349 5294,348 \ -5386,339 5491,319 5550,307", _draw_="S 6 -dotted c 5 -black B 16 2419 453 2427 448 2436 444 2445 441 2467 433 2477 446 2495 433 2526 410 2501 376 2533 356 2550 345 5\ -275 349 5294 348 5386 339 5491 319 5550 307 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5551 310 5560 305 5550 304 "]; - "UV unlzw (46)" -> "UV memset (47)" [style=dotted, pos="e,2355,399 2385,450 2378,438 2368,421 2360,408", _draw_="S 6 -dotted c 5 -black B 4 2385 450 2378 438 2368 421 2360 408 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2363 406 2355 399 2357 409 "]; - "UV unlzw (46)" -> "UV memcpy (48)" [style=dotted, pos="e,2199,396 2360,457 2338,451 2308,442 2283,433 2258,423 2230,411 2208,400", _draw_="S 6 -dotted c 5 -black B 7 2360 457 2338 451 2308 442 2283 433 2258 423 2230 411 2208 400 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2210 397 2199 396 2207 403 "]; - "UV fillbuf (49)" -> "UV fill_inbuf (15)" [style=dotted, pos="e,2719,400 8677,786 8205,784 3397,761 3255,732 3010,682 2881,720 2733,518 2711,486 2713,440 2717,410", _draw_="S 6 -dotted c 5 -black B 10 8677 786 8205 784 3397 761 3255 732 3010 682 2881 720 2733 518 2711 486 2713 440 2717 410 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2720 410 2719 400 2714 409 "]; - "UV make_table (52)" -> "UV error (32)" [style=dotted, pos="e,3880,389 9023,452 9011,447 8996,443 8983,441 8918,429 4240,438 4173,433 4071,424 3952,403 3890,391", _draw_="S 6 -dotted c 5 -black B 10 9023 452 9011 447 8996 443 8983 441 8918 429 4240 438 4173 433 4071 424 3952 403 3890 391 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3890 388 3880 389 3889 394 "]; - "UV unlzh (60)" -> "UV write_buf (12)" [style=dotted, pos="e,2627,309 8997,783 8944,779 8845,771 8760,768 8457,754 3530,801 3300,603 3216,529 3341,428 3255,356 3246,348 2827,349 2814,348 \ -2753,341 2683,324 2637,312", _draw_="S 6 -dotted c 5 -black B 16 8997 783 8944 779 8845 771 8760 768 8457 754 3530 801 3300 603 3216 529 3341 428 3255 356 3246 348 2\ -827 349 2814 348 2753 341 2683 324 2637 312 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2638 309 2627 309 2636 315 "]; - "UV lzw (78)" -> "UV fprintf (33)" [style=dotted, pos="e,5596,315 5596,364 5596,352 5596,338 5596,325", _draw_="S 6 -dotted c 5 -black B 4 5596 364 5596 352 5596 338 5596 325 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5600 325 5596 315 5593 325 "]; - "UV huft_build (79)" -> "UV malloc (39)" [style=dotted, pos="e,2556,394 2093,462 2199,453 2417,435 2425,433 2468,425 2514,409 2546,398", _draw_="S 6 -dotted c 5 -black B 7 2093 462 2199 453 2417 435 2425 433 2468 425 2514 409 2546 398 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2548 401 2556 394 2545 394 "]; - "UV huft_build (79)" -> "UV memset (47)" [style=dotted, pos="e,2322,398 2094,463 2138,459 2200,450 2251,433 2273,425 2295,413 2313,403", _draw_="S 6 -dotted c 5 -black B 7 2094 463 2138 459 2200 450 2251 433 2273 425 2295 413 2313 403 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2315 406 2322 398 2312 400 "]; - "UV huft_free (80)" -> "UV free (30)" [style=dotted, pos="e,3727,127 1990,367 2073,329 2307,226 2514,186 2752,139 3531,129 3717,127", _draw_="S 6 -dotted c 5 -black B 7 1990 367 2073 329 2307 226 2514 186 2752 139 3531 129 3717 127 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3717 131 3727 127 3717 124 "]; - "UV inflate_codes (81)" -> "UV fill_inbuf (15)" [style=dotted, pos="e,2708,399 1858,456 1890,450 1931,444 1968,441 2007,437 2623,445 2659,433 2675,427 2690,416 2701,406", _draw_="S 6 -dotted c 5 -black B 10 1858 456 1890 450 1931 444 1968 441 2007 437 2623 445 2659 433 2675 427 2690 416 2701 406 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2703 409 2708 399 2698 404 "]; - "UV inflate_codes (81)" -> "UV flush_window (16)" [style=dotted, pos="e,1441,398 1731,461 1662,455 1560,444 1521,433 1497,426 1470,414 1450,403", _draw_="S 6 -dotted c 5 -black B 7 1731 461 1662 455 1560 444 1521 433 1497 426 1470 414 1450 403 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1451 400 1441 398 1448 406 "]; - "UV inflate_codes (81)" -> "UV memcpy (48)" [style=dotted, pos="e,2155,399 1859,456 1891,451 1932,444 1968,441 1999,437 2079,444 2107,433 2122,427 2137,416 2148,406", _draw_="S 6 -dotted c 5 -black B 10 1859 456 1891 451 1932 444 1968 441 1999 437 2079 444 2107 433 2122 427 2137 416 2148 406 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2150 409 2155 399 2145 404 "]; - "UV inflate_stored (82)" -> "UV fill_inbuf (15)" [style=dotted, pos="e,2708,399 1848,537 1862,532 1878,528 1892,526 1908,523 2453,527 2466,518 2497,497 2467,462 2496,441 2511,430 2643,439 2659,433 \ -2675,427 2690,416 2701,406", _draw_="S 6 -dotted c 5 -black B 16 1848 537 1862 532 1878 528 1892 526 1908 523 2453 527 2466 518 2497 497 2467 462 2496 441 2511 430 2\ -643 439 2659 433 2675 427 2690 416 2701 406 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2703 409 2708 399 2698 404 "]; - "UV inflate_stored (82)" -> "UV flush_window (16)" [style=dotted, pos="e,1446,398 1766,537 1751,531 1734,524 1718,518 1630,481 1608,472 1521,433 1500,423 1475,412 1455,402", _draw_="S 6 -dotted c 5 -black B 10 1766 537 1751 531 1734 524 1718 518 1630 481 1608 472 1521 433 1500 423 1475 412 1455 402 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 1457 399 1446 398 1454 405 "]; - "UV inflate_dynamic (84)" -> "UV fill_inbuf (15)" [style=dotted, pos="e,2707,399 2075,550 2210,547 2461,539 2496,518 2531,497 2510,461 2544,441 2566,427 2636,442 2659,433 2674,427 2688,416 2699,406", _draw_="S 6 -dotted c 5 -black B 13 2075 550 2210 547 2461 539 2496 518 2531 497 2510 461 2544 441 2566 427 2636 442 2659 433 2674 427 2\ -688 416 2699 406 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2702 408 2707 399 2697 403 "]; - "UV inflate_dynamic (84)" -> "UV fprintf (33)" [style=dotted, pos="e,5560,305 2045,538 2064,533 2085,526 2104,518 2174,488 2202,489 2251,433 2276,405 2253,376 2283,356 2301,344 5274,349 5294,348 \ -5386,339 5491,319 5550,307", _draw_="S 6 -dotted c 5 -black B 16 2045 538 2064 533 2085 526 2104 518 2174 488 2202 489 2251 433 2276 405 2253 376 2283 356 2301 344 5\ -274 349 5294 348 5386 339 5491 319 5550 307 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5551 310 5560 305 5550 304 "]; - "UV inflate_block (85)" -> "UV fill_inbuf (15)" [style=dotted, pos="e,2707,399 1872,633 2033,623 2426,591 2533,518 2567,495 2548,462 2582,441 2612,422 2628,446 2659,433 2674,427 2688,416 2699,406", _draw_="S 6 -dotted c 5 -black B 13 1872 633 2033 623 2426 591 2533 518 2567 495 2548 462 2582 441 2612 422 2628 446 2659 433 2674 427 2\ -688 416 2699 406 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 2702 408 2707 399 2697 403 "]; - "UV usage (87)" -> "UV fprintf (33)" [style=dotted, pos="e,5635,303 5425,458 5450,452 5484,444 5514,441 5530,439 5787,444 5797,433 5821,408 5818,383 5797,356 5779,332 5699,313 5645,305", _draw_="S 6 -dotted c 5 -black B 13 5425 458 5450 452 5484 444 5514 441 5530 439 5787 444 5797 433 5821 408 5818 383 5797 356 5779 332 5\ -699 313 5645 305 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5645 302 5635 303 5644 308 "]; - "UV help (88)" -> "UV fprintf (33)" [style=dotted, pos="e,5636,302 5414,540 5426,534 5440,529 5453,526 5502,515 5629,532 5676,518 5747,497 5782,496 5818,433 5835,403 5839,383 5818,356 \ -5797,329 5705,311 5646,303", _draw_="S 6 -dotted c 5 -black B 16 5414 540 5426 534 5440 529 5453 526 5502 515 5629 532 5676 518 5747 497 5782 496 5818 433 5835 403 5\ -839 383 5818 356 5797 329 5705 311 5646 303 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5646 300 5636 302 5646 306 "]; - "UV help (88)" -> "UV usage (87)" [style=dotted, pos="e,5391,485 5391,534 5391,522 5391,508 5391,495", _draw_="S 6 -dotted c 5 -black B 4 5391 534 5391 522 5391 508 5391 495 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5395 495 5391 485 5388 495 "]; - "UV license (89)" -> "UV fprintf (33)" [style=dotted, pos="e,5637,299 5539,539 5552,534 5568,529 5583,526 5601,522 5891,530 5903,518 5954,466 5949,411 5903,356 5871,317 5726,303 5647,299", _draw_="S 6 -dotted c 5 -black B 13 5539 539 5552 534 5568 529 5583 526 5601 522 5891 530 5903 518 5954 466 5949 411 5903 356 5871 317 5\ -726 303 5647 299 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5647 296 5637 299 5647 303 "]; - "UV version (90)" -> "UV fprintf (33)" [style=dotted, pos="e,5636,301 5673,539 5687,534 5704,529 5719,526 5732,523 5933,526 5941,518 5991,466 5988,411 5941,356 5923,334 5738,312 5646,302", _draw_="S 6 -dotted c 5 -black B 13 5673 539 5687 534 5704 529 5719 526 5732 523 5933 526 5941 518 5991 466 5988 411 5941 356 5923 334 5\ -738 312 5646 302 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5646 299 5636 301 5646 305 "]; - "UV main (91)" -> "UV basename (6)" [style=dotted, pos="e,6228,399 5544,636 5602,633 5715,624 5747,603 5781,580 5761,546 5795,526 5821,511 6028,527 6055,518 6123,495 6187,438 6220,406", _draw_="S 6 -dotted c 5 -black B 13 5544 636 5602 633 5715 624 5747 603 5781 580 5761 546 5795 526 5821 511 6028 527 6055 518 6123 495 6\ -187 438 6220 406 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6223 408 6228 399 6218 403 "]; - "UV main (91)" -> "UV add_envopt (23)" [style=dotted, pos="e,3834,562 5474,637 5285,635 4385,627 4107,603 4016,594 3910,576 3844,564", _draw_="S 6 -dotted c 5 -black B 7 5474 637 5285 635 4385 627 4107 603 4016 594 3910 576 3844 564 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3844 561 3834 562 3843 567 "]; - "UV main (91)" -> "UV strlen (25)" [style=dotted, pos="e,6664,127 5474,637 5268,635 4226,622 4135,518 4103,479 4110,322 4154,271 4245,164 4319,206 4457,186 4680,151 6345,131 6654,127", _draw_="S 6 -dotted c 5 -black B 13 5474 637 5268 635 4226 622 4135 518 4103 479 4110 322 4154 271 4245 164 4319 206 4457 186 4680 151 6\ -345 131 6654 127 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6654 131 6664 127 6654 124 "]; - "UV main (91)" -> "UV strcpy (27)" [style=dotted, pos="e,7449,145 5544,635 5597,632 5691,624 5717,603 5746,579 5718,547 5747,526 5768,511 5948,527 5970,518 6018,498 6016,473 6055,441 \ -6105,400 6111,376 6171,356 6188,350 7421,360 7433,348 7460,322 7454,208 7450,155", _draw_="S 6 -dotted c 5 -black B 22 5544 635 5597 632 5691 624 5717 603 5746 579 5718 547 5747 526 5768 511 5948 527 5970 518 6018 498 6\ -016 473 6055 441 6105 400 6111 376 6171 356 6188 350 7421 360 7433 348 7460 322 7454 208 7450 155 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 7453 155 7449 145 7447 155 "]; - "UV main (91)" -> "UV fprintf (33)" [style=dotted, pos="e,5559,305 5474,635 5365,627 5035,597 4971,518 4927,461 4921,407 4971,356 4978,349 5286,348 5294,348 5386,339 5490,318 5549,307", _draw_="S 6 -dotted c 5 -black B 13 5474 635 5365 627 5035 597 4971 518 4927 461 4921 407 4971 356 4978 349 5286 348 5294 348 5386 339 5\ -490 318 5549 307 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5550 310 5559 305 5549 304 "]; - "UV main (91)" -> "UV usage (87)" [style=dotted, pos="e,5374,483 5474,635 5431,631 5363,622 5347,603 5326,576 5337,558 5347,526 5352,513 5360,501 5368,491", _draw_="S 6 -dotted c 5 -black B 10 5474 635 5431 631 5363 622 5347 603 5326 576 5337 558 5347 526 5352 513 5360 501 5368 491 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5371 493 5374 483 5365 489 "]; - "UV main (91)" -> "UV help (88)" [style=dotted, pos="e,5408,567 5486,624 5476,618 5464,610 5453,603 5440,594 5427,583 5416,574", _draw_="S 6 -dotted c 5 -black B 7 5486 624 5476 618 5464 610 5453 603 5440 594 5427 583 5416 574 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5418 571 5408 567 5413 576 "]; - "UV main (91)" -> "UV license (89)" [style=dotted, pos="e,5509,570 5509,619 5509,607 5509,593 5509,580", _draw_="S 6 -dotted c 5 -black B 4 5509 619 5509 607 5509 593 5509 580 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5513 580 5509 570 5506 580 "]; - "UV main (91)" -> "UV version (90)" [style=dotted, pos="e,5625,568 5537,626 5551,620 5569,612 5583,603 5595,595 5608,585 5618,575", _draw_="S 6 -dotted c 5 -black B 7 5537 626 5551 620 5569 612 5583 603 5595 595 5608 585 5618 575 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5620 578 5625 568 5615 573 "]; - "UV main (91)" -> "UV strcmp (92)" [style=dotted, pos="e,8258,144 5544,634 5613,629 5765,616 5784,603 5816,581 5793,546 5825,526 5845,513 6008,520 6030,518 6199,497 6236,458 6405,441 \ -6519,429 7319,439 7433,433 7616,422 8129,483 8251,348 8299,294 8277,200 8261,154", _draw_="S 6 -dotted c 5 -black B 22 5544 634 5613 629 5765 616 5784 603 5816 581 5793 546 5825 526 5845 513 6008 520 6030 518 6199 497 6\ -236 458 6405 441 6519 429 7319 439 7433 433 7616 422 8129 483 8251 348 8299 294 8277 200 8261 154 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 8264 153 8258 144 8258 155 "]; - "UV main (91)" -> "UV signal (93)" [style=dotted, pos="e,5864,569 5544,636 5616,633 5775,625 5823,603 5836,597 5848,586 5857,576", _draw_="S 6 -dotted c 5 -black B 7 5544 636 5616 633 5775 625 5823 603 5836 597 5848 586 5857 576 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5859 579 5864 569 5854 574 "]; - "UV main (91)" -> "UV strncmp (94)" [style=dotted, pos="e,5993,569 5544,635 5641,631 5908,617 5945,603 5960,597 5974,586 5985,576", _draw_="S 6 -dotted c 5 -black B 7 5544 635 5641 631 5908 617 5945 603 5960 597 5974 586 5985 576 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 5988 578 5993 569 5983 573 "]; - "UV main (91)" -> "UV strncpy (95)" [style=dotted, pos="e,6134,569 5544,636 5662,633 6039,623 6089,603 6103,597 6117,586 6127,576", _draw_="S 6 -dotted c 5 -black B 7 5544 636 5662 633 6039 623 6089 603 6103 597 6117 586 6127 576 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6129 579 6134 569 6124 574 "]; - "UV main (91)" -> "UV getopt_long (96)" [style=dotted, pos="e,6286,569 5544,636 5679,634 6161,623 6225,603 6244,597 6263,586 6278,575", _draw_="S 6 -dotted c 5 -black B 7 5544 636 5679 634 6161 623 6225 603 6244 597 6263 586 6278 575 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6280 578 6286 569 6276 572 "]; - "UV main (91)" -> "UV atoi (97)" [style=dotted, pos="e,3415,568 5474,637 5207,635 3511,621 3461,603 3447,597 3433,586 3422,575", _draw_="S 6 -dotted c 5 -black B 7 5474 637 5207 635 3511 621 3461 603 3447 597 3433 586 3422 575 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3425 573 3415 568 3420 578 "]; - "UV main (91)" -> "UV do_exit (98)" [style=dotted, pos="e,3837,222 5474,637 5196,635 3359,622 3339,603 3165,425 3666,269 3827,225", _draw_="S 6 -dotted c 5 -black B 7 5474 637 5196 635 3359 622 3339 603 3165 425 3666 269 3827 225 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 3828 228 3837 222 3826 222 "]; - "UV main (91)" -> "UV treat_file (99)" [style=dotted, pos="e,6727,560 5544,636 5688,632 6234,618 6405,603 6516,593 6644,574 6717,562", _draw_="S 6 -dotted c 5 -black B 7 5544 636 5688 632 6234 618 6405 603 6516 593 6644 574 6717 562 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 6718 565 6727 560 6717 559 "]; - "UV main (91)" -> "UV treat_stdin (100)" [style=dotted, pos="e,4827,568 5474,636 5353,632 4956,618 4900,603 4878,597 4854,584 4836,573", _draw_="S 6 -dotted c 5 -black B 7 5474 636 5353 632 4956 618 4900 603 4878 597 4854 584 4836 573 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4837 570 4827 568 4834 576 "]; - "UV main (91)" -> "UV do_list (101)" [style=dotted, pos="e,4272,473 5474,637 5197,635 3380,622 3361,603 3337,578 3337,550 3361,526 3372,515 3863,518 3877,518 4018,508 4181,486 4262,474", _draw_="S 6 -dotted c 5 -black B 13 5474 637 5197 635 3380 622 3361 603 3337 578 3337 550 3361 526 3372 515 3863 518 3877 518 4018 508 4\ -181 486 4262 474 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 4262 477 4272 473 4262 471 "]; -} diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/jsort.dot b/jscomp/build_tests/ocamlgraph/dgraph/examples/jsort.dot deleted file mode 100755 index ccfc7f76e1..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/jsort.dot +++ /dev/null @@ -1,150 +0,0 @@ -digraph prof { - size="6,4"; ratio = fill; - node [style=filled]; - start -> main [color="0.002 0.999 0.999"]; - start -> on_exit [color="0.649 0.701 0.701"]; - main -> sort [color="0.348 0.839 0.839"]; - main -> merge [color="0.515 0.762 0.762"]; - main -> term [color="0.647 0.702 0.702"]; - main -> signal [color="0.650 0.700 0.700"]; - main -> sbrk [color="0.650 0.700 0.700"]; - main -> unlink [color="0.650 0.700 0.700"]; - main -> newfile [color="0.650 0.700 0.700"]; - main -> fclose [color="0.650 0.700 0.700"]; - main -> close [color="0.650 0.700 0.700"]; - main -> brk [color="0.650 0.700 0.700"]; - main -> setbuf [color="0.650 0.700 0.700"]; - main -> copyproto [color="0.650 0.700 0.700"]; - main -> initree [color="0.650 0.700 0.700"]; - main -> safeoutfil [color="0.650 0.700 0.700"]; - main -> getpid [color="0.650 0.700 0.700"]; - main -> sprintf [color="0.650 0.700 0.700"]; - main -> creat [color="0.650 0.700 0.700"]; - main -> rem [color="0.650 0.700 0.700"]; - main -> oldfile [color="0.650 0.700 0.700"]; - sort -> msort [color="0.619 0.714 0.714"]; - sort -> filbuf [color="0.650 0.700 0.700"]; - sort -> newfile [color="0.650 0.700 0.700"]; - sort -> fclose [color="0.650 0.700 0.700"]; - sort -> setbuf [color="0.650 0.700 0.700"]; - sort -> setfil [color="0.650 0.700 0.700"]; - msort -> qsort [color="0.650 0.700 0.700"]; - msort -> insert [color="0.650 0.700 0.700"]; - msort -> wline [color="0.650 0.700 0.700"]; - msort -> div [color="0.650 0.700 0.700"]; - msort -> cmpsave [color="0.650 0.700 0.700"]; - merge -> insert [color="0.650 0.700 0.700"]; - merge -> rline [color="0.650 0.700 0.700"]; - merge -> wline [color="0.650 0.700 0.700"]; - merge -> unlink [color="0.650 0.700 0.700"]; - merge -> fopen [color="0.650 0.700 0.700"]; - merge -> fclose [color="0.650 0.700 0.700"]; - merge -> setfil [color="0.650 0.700 0.700"]; - merge -> mul [color="0.650 0.700 0.700"]; - merge -> setbuf [color="0.650 0.700 0.700"]; - merge -> cmpsave [color="0.650 0.700 0.700"]; - insert -> cmpa [color="0.650 0.700 0.700"]; - wline -> flsbuf [color="0.649 0.700 0.700"]; - qsort -> cmpa [color="0.650 0.700 0.700"]; - rline -> filbuf [color="0.649 0.700 0.700"]; - xflsbuf -> write [color="0.650 0.700 0.700"]; - flsbuf -> xflsbuf [color="0.649 0.700 0.700"]; - filbuf -> read [color="0.650 0.700 0.700"]; - term -> unlink [color="0.650 0.700 0.700"]; - term -> signal [color="0.650 0.700 0.700"]; - term -> setfil [color="0.650 0.700 0.700"]; - term -> exit [color="0.650 0.700 0.700"]; - endopen -> open [color="0.650 0.700 0.700"]; - fopen -> endopen [color="0.639 0.705 0.705"]; - fopen -> findiop [color="0.650 0.700 0.700"]; - newfile -> fopen [color="0.634 0.707 0.707"]; - newfile -> setfil [color="0.650 0.700 0.700"]; - fclose -> fflush [color="0.642 0.704 0.704"]; - fclose -> close [color="0.650 0.700 0.700"]; - fflush -> xflsbuf [color="0.635 0.707 0.707"]; - malloc -> morecore [color="0.325 0.850 0.850"]; - malloc -> demote [color="0.650 0.700 0.700"]; - morecore -> sbrk [color="0.650 0.700 0.700"]; - morecore -> getfreehdr [color="0.650 0.700 0.700"]; - morecore -> free [color="0.650 0.700 0.700"]; - morecore -> getpagesize [color="0.650 0.700 0.700"]; - morecore -> putfreehdr [color="0.650 0.700 0.700"]; - morecore -> udiv [color="0.650 0.700 0.700"]; - morecore -> umul [color="0.650 0.700 0.700"]; - on_exit -> malloc [color="0.325 0.850 0.850"]; - signal -> sigvec [color="0.650 0.700 0.700"]; - moncontrol -> profil [color="0.650 0.700 0.700"]; - getfreehdr -> sbrk [color="0.650 0.700 0.700"]; - free -> insert [color="0.650 0.700 0.700"]; - insert -> getfreehdr [color="0.650 0.700 0.700"]; - setfil -> div [color="0.650 0.700 0.700"]; - setfil -> rem [color="0.650 0.700 0.700"]; - sigvec -> sigblock [color="0.650 0.700 0.700"]; - sigvec -> sigsetmask [color="0.650 0.700 0.700"]; - doprnt -> urem [color="0.650 0.700 0.700"]; - doprnt -> udiv [color="0.650 0.700 0.700"]; - doprnt -> strlen [color="0.650 0.700 0.700"]; - doprnt -> localeconv [color="0.650 0.700 0.700"]; - sprintf -> doprnt [color="0.650 0.700 0.700"]; -cmpa [color="0.000 1.000 1.000"]; -wline [color="0.201 0.753 1.000"]; -insert [color="0.305 0.625 1.000"]; -rline [color="0.355 0.563 1.000"]; -sort [color="0.408 0.498 1.000"]; -qsort [color="0.449 0.447 1.000"]; -write [color="0.499 0.386 1.000"]; -read [color="0.578 0.289 1.000"]; -msort [color="0.590 0.273 1.000"]; -merge [color="0.603 0.258 1.000"]; -unlink [color="0.628 0.227 1.000"]; -filbuf [color="0.641 0.212 1.000"]; -open [color="0.641 0.212 1.000"]; -sbrk [color="0.647 0.204 1.000"]; -signal [color="0.647 0.204 1.000"]; -moncontrol [color="0.647 0.204 1.000"]; -xflsbuf [color="0.650 0.200 1.000"]; -flsbuf [color="0.650 0.200 1.000"]; -div [color="0.650 0.200 1.000"]; -cmpsave [color="0.650 0.200 1.000"]; -rem [color="0.650 0.200 1.000"]; -setfil [color="0.650 0.200 1.000"]; -close [color="0.650 0.200 1.000"]; -fclose [color="0.650 0.200 1.000"]; -fflush [color="0.650 0.200 1.000"]; -setbuf [color="0.650 0.200 1.000"]; -endopen [color="0.650 0.200 1.000"]; -findiop [color="0.650 0.200 1.000"]; -fopen [color="0.650 0.200 1.000"]; -mul [color="0.650 0.200 1.000"]; -newfile [color="0.650 0.200 1.000"]; -sigblock [color="0.650 0.200 1.000"]; -sigsetmask [color="0.650 0.200 1.000"]; -sigvec [color="0.650 0.200 1.000"]; -udiv [color="0.650 0.200 1.000"]; -urem [color="0.650 0.200 1.000"]; -brk [color="0.650 0.200 1.000"]; -getfreehdr [color="0.650 0.200 1.000"]; -strlen [color="0.650 0.200 1.000"]; -umul [color="0.650 0.200 1.000"]; -doprnt [color="0.650 0.200 1.000"]; -copyproto [color="0.650 0.200 1.000"]; -creat [color="0.650 0.200 1.000"]; -demote [color="0.650 0.200 1.000"]; -exit [color="0.650 0.200 1.000"]; -free [color="0.650 0.200 1.000"]; -getpagesize [color="0.650 0.200 1.000"]; -getpid [color="0.650 0.200 1.000"]; -initree [color="0.650 0.200 1.000"]; -insert [color="0.650 0.200 1.000"]; -localeconv [color="0.650 0.200 1.000"]; -main [color="0.650 0.200 1.000"]; -malloc [color="0.650 0.200 1.000"]; -morecore [color="0.650 0.200 1.000"]; -oldfile [color="0.650 0.200 1.000"]; -on_exit [color="0.650 0.200 1.000"]; -profil [color="0.650 0.200 1.000"]; -putfreehdr [color="0.650 0.200 1.000"]; -safeoutfil [color="0.650 0.200 1.000"]; -sprintf [color="0.650 0.200 1.000"]; -term [color="0.650 0.200 1.000"]; -} diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/pmpipe.gv b/jscomp/build_tests/ocamlgraph/dgraph/examples/pmpipe.gv deleted file mode 100755 index 6eea33e4d2..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/pmpipe.gv +++ /dev/null @@ -1,219 +0,0 @@ -digraph g { -graph [ -]; -node [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -shape = "box" -color = "black" -width = "0.5" -]; -edge [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -color = "black" -]; -"23296" [ -label = "23296\n?" -pname = "?" -kind = "proc" -]; -"182948-1" [ -label = "182948-1\n182949-1\npipe" -fontsize = "7" -fname = "pipe" -shape = "doublecircle" -subkind = "pipe" -kind = "file" -]; -"23310" [ -label = "23310\ncat" -pname = "cat" -kind = "proc" -]; -"182950-1" [ -label = "182950-1\n182951-1\npipe" -fontsize = "7" -fname = "pipe" -shape = "doublecircle" -subkind = "pipe" -kind = "file" -]; -"23311" [ -label = "23311\ncat" -pname = "cat" -kind = "proc" -]; -"182952-1" [ -label = "182952-1\n182953-1\npipe" -fontsize = "7" -fname = "pipe" -shape = "doublecircle" -subkind = "pipe" -kind = "file" -]; -"23312" [ -label = "23312\ncat" -pname = "cat" -kind = "proc" -]; -"182954-1" [ -label = "182954-1\n182955-1\npipe" -fontsize = "7" -fname = "pipe" -shape = "doublecircle" -subkind = "pipe" -kind = "file" -]; -"23313" [ -label = "23313\ncat" -pname = "cat" -kind = "proc" -]; -"79893+2568" [ -label = "79893+2568\n/usr/share/lib/termcap" -fname = "/usr/share/lib/termcap" -shape = "ellipse" -kind = "file" -]; -"85+2560" [ -label = "85+2560\n?" -fname = "?" -shape = "ellipse" -kind = "file" -]; -"23314" [ -label = "23314\ncat" -pname = "cat" -kind = "proc" -]; -"4151865284+0" [ -label = "4151865284+0\n/tmp/termcap" -fname = "/tmp/termcap" -shape = "ellipse" -kind = "file" -]; -"23296" -> "23310" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -color = "black" -]; -"23296" -> "23311" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -color = "black" -]; -"23311" -> "182948-1" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -dir = "back" -color = "black" -]; -"23310" -> "182948-1" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -dir = "forward" -color = "black" -]; -"23296" -> "23312" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -color = "black" -]; -"23312" -> "182952-1" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -dir = "forward" -color = "black" -]; -"23312" -> "182950-1" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -dir = "back" -color = "black" -]; -"23296" -> "23313" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -color = "black" -]; -"23313" -> "182954-1" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -dir = "forward" -color = "black" -]; -"23311" -> "182950-1" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -dir = "forward" -color = "black" -]; -"23310" -> "79893+2568" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -dir = "back" -color = "black" -]; -"23296" -> "85+2560" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -dir = "both" -color = "black" -]; -"23296" -> "23314" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -color = "black" -]; -"23314" -> "85+2560" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -dir = "both" -color = "black" -]; -"23314" -> "182954-1" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -dir = "back" -color = "black" -]; -"23296" -> "85+2560" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -dir = "both" -color = "black" -]; -"23314" -> "4151865284+0" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -dir = "forward" -color = "black" -]; -"23313" -> "182952-1" [ -fontsize = "14" -fontname = "Times-Roman" -fontcolor = "black" -dir = "back" -color = "black" -]; -} diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/polygonal.dot b/jscomp/build_tests/ocamlgraph/dgraph/examples/polygonal.dot deleted file mode 100755 index 92f60cce3e..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/polygonal.dot +++ /dev/null @@ -1,8 +0,0 @@ -digraph G { - a -> b -> c; - b -> d; - a [shape=polygon,sides=5,peripheries=3,color=lightblue,style=filled]; - c [shape=polygon,sides=4,skew=.4,label="hello world"] - d [shape=invtriangle]; - e [shape=polygon,sides=4,distortion=.7]; -} diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/polypoly.gv b/jscomp/build_tests/ocamlgraph/dgraph/examples/polypoly.gv deleted file mode 100755 index 9c84114ff8..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/polypoly.gv +++ /dev/null @@ -1,162 +0,0 @@ -digraph polypoly { - - size="7,9.5"; - page="8.5,11"; - ratio=fill; - node [shape=polygon]; - - { rank=same; - node [sides=0]; - node [peripheries=1]; - 0000 [label="M"]; - 0001 [label="MMMMMMMMMM"]; - 0002 [label="M\nM\nM\nM\nM\nM"]; - 0003 [label="MMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM"]; - node [peripheries=2]; - 0010 [label="M"]; - 0011 [label="MMMMMMMMMM"]; - 0012 [label="M\nM\nM\nM\nM\nM"]; - 0013 [label="MMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM"]; - node [distortion=-.3]; - 0110 [label="M"]; - 0111 [label="MMMMMMMMMM"]; - 0112 [label="M\nM\nM\nM\nM\nM"]; - 0113 [label="MMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM"]; - } - { rank=same; - node [sides=3]; - node [peripheries=1]; - node [orientation=0]; - 3000 [label="M"]; - 3001 [label="MMMMMMMMMM"]; - 3002 [label="M\nM\nM\nM\nM\nM"]; - 3003 [label="MMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM"]; - node [peripheries=2]; - node [orientation=60]; - 3110 [label="M"]; - 3111 [label="MMMMMMMMMM"]; - 3112 [label="M\nM\nM\nM\nM\nM"]; - 3113 [label="MMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM"]; - } - 3000->0000; - { rank=same; - node [sides=4]; - node [peripheries=1]; - node [orientation=0]; - 4000 [label="M"]; - 4001 [label="MMMMMMMMMM"]; - 4002 [label="M\nM\nM\nM\nM\nM"]; - 4003 [label="MMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM"]; - node [peripheries=2]; - node [orientation=45]; - 4110 [label="M"]; - 4111 [label="MMMMMMMMMM"]; - 4112 [label="M\nM\nM\nM\nM\nM"]; - 4113 [label="MMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM"]; - } - 4000->3000; - { rank=same; - node [sides=5]; - node [peripheries=1]; - node [orientation=0]; - 5000 [label="M"]; - 5001 [label="MMMMMMMMMM"]; - 5002 [label="M\nM\nM\nM\nM\nM"]; - 5003 [label="MMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM"]; - node [peripheries=2]; - node [orientation=36]; - 5110 [label="M"]; - 5111 [label="MMMMMMMMMM"]; - 5112 [label="M\nM\nM\nM\nM\nM"]; - 5113 [label="MMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM"]; - } - 5000->4000; - { rank=same; - node [sides=6]; - node [peripheries=1]; - node [orientation=0]; - 6000 [label="M"]; - 6001 [label="MMMMMMMMMM"]; - 6002 [label="M\nM\nM\nM\nM\nM"]; - 6003 [label="MMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM"]; - node [peripheries=2]; - node [orientation=30]; - 6110 [label="M"]; - 6111 [label="MMMMMMMMMM"]; - 6112 [label="M\nM\nM\nM\nM\nM"]; - 6113 [label="MMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM"]; - } - 6000->5000; - { rank=same; - node [sides=7]; - node [peripheries=1]; - node [orientation=0]; - 7000 [label="M"]; - 7001 [label="MMMMMMMMMM"]; - 7002 [label="M\nM\nM\nM\nM\nM"]; - 7003 [label="MMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM"]; - node [peripheries=2]; - node [orientation=25.7]; - 7110 [label="M"]; - 7111 [label="MMMMMMMMMM"]; - 7112 [label="M\nM\nM\nM\nM\nM"]; - 7113 [label="MMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM"]; - } - 7000->6000; - { rank=same; - node [sides=8]; - node [peripheries=1]; - node [orientation=0]; - 8000 [label="M"]; - 8001 [label="MMMMMMMMMM"]; - 8002 [label="M\nM\nM\nM\nM\nM"]; - 8003 [label="MMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM"]; - node [peripheries=2]; - node [orientation=22.5]; - 8110 [label="M"]; - 8111 [label="MMMMMMMMMM"]; - 8112 [label="M\nM\nM\nM\nM\nM"]; - 8113 [label="MMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM\nMMMMMMMMMM"]; - } - 8000->7000; - { rank=same; - node [sides=4]; - node [peripheries=1]; - node [regular=1]; - node [distortion=.5]; - node [orientation=0]; - 9000 [label="M"]; - node [orientation=45.]; - 9001 [label="M"]; - node [orientation=90.]; - 9002 [label="M"]; - node [orientation=135.]; - 9003 [label="M"]; - node [orientation=180.]; - 9004 [label="M"]; - node [orientation=225.]; - 9005 [label="M"]; - node [orientation=270.]; - 9006 [label="M"]; - node [orientation=315.]; - 9007 [label="M"]; - node [peripheries=2]; - node [orientation=0]; - 9010 [label="M"]; - node [orientation=45.]; - 9011 [label="M"]; - node [orientation=90.]; - 9012 [label="M"]; - node [orientation=135.]; - 9013 [label="M"]; - node [orientation=180.]; - 9014 [label="M"]; - node [orientation=225.]; - 9015 [label="M"]; - node [orientation=270.]; - 9016 [label="M"]; - node [orientation=315.]; - 9017 [label="M"]; - } - 9000->8000; -} diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/services.dot b/jscomp/build_tests/ocamlgraph/dgraph/examples/services.dot deleted file mode 100755 index b856d67978..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/services.dot +++ /dev/null @@ -1,255 +0,0 @@ -digraph G { - "unlzw (1)" [height=0.200000, width=0.200000, shape=box, color="#000080", - style=bold]; - "unzip (9)" [height=1.800000, width=1.800000, shape=box, color="#008000", - style=bold]; - "make_simple_name (1)" [height=0.200000, width=0.200000, shape=box, - color="#008080", style=bold]; - "treat_file (21)" [height=4.200000, width=4.200000, shape=box, - color="#800000", style=bold]; - "strlen (1)" [height=0.200000, width=0.200000, shape=box, color="#800080", - style=dotted]; - "treat_stdin (1)" [height=0.200000, width=0.200000, shape=box, - color="#808000", style=bold]; - "atoi (1)" [height=0.200000, width=0.200000, shape=box, color="#808080", - style=dotted]; - "unlzh (12)" [height=2.400000, width=2.400000, shape=box, color="#000040", - style=bold]; - "signal (1)" [height=0.200000, width=0.200000, shape=box, color="#0000C0", - style=dotted]; - "strcmp (1)" [height=0.200000, width=0.200000, shape=box, color="#008040", - style=dotted]; - "do_list (4)" [height=0.800000, width=0.800000, shape=box, color="#0080C0", - style=bold]; - "version (1)" [height=0.200000, width=0.200000, shape=box, color="#800040", - style=bold]; - "add_envopt (5)" [height=1.000000, width=1.000000, shape=box, - color="#8000C0", style=bold]; - "strcpy (1)" [height=0.200000, width=0.200000, shape=box, color="#808040", - style=dotted]; - "strncmp (1)" [height=0.200000, width=0.200000, shape=box, color="#8080C0", - style=dotted]; - "fprintf (1)" [height=0.200000, width=0.200000, shape=box, color="#004000", - style=dotted]; - "main (1)" [height=0.200000, width=0.200000, shape=box, color="#004080", - style=bold]; - "strncpy (1)" [height=0.200000, width=0.200000, shape=box, color="#00C000", - style=dotted]; - "basename (1)" [height=0.200000, width=0.200000, shape=box, - color="#00C080", style=bold]; - "lzw (1)" [height=0.200000, width=0.200000, shape=box, color="#804000", - style=bold]; - "zip (26)" [height=5.200000, width=5.200000, shape=box, color="#804080", - style=bold]; - "getopt_long (1)" [height=0.200000, width=0.200000, shape=box, - color="#80C000", style=dotted]; - "usage (1)" [height=0.200000, width=0.200000, shape=box, color="#80C080", - style=bold]; - "warn (1)" [height=0.200000, width=0.200000, shape=box, color="#004040", - style=bold]; - "copy (1)" [height=0.200000, width=0.200000, shape=box, color="#0040C0", - style=bold]; - "help (1)" [height=0.200000, width=0.200000, shape=box, color="#00C040", - style=bold]; - "unpack (3)" [height=0.600000, width=0.600000, shape=box, color="#00C0C0", - style=bold]; - "license (1)" [height=0.200000, width=0.200000, shape=box, color="#804040", - style=bold]; - "file_read (1)" [height=0.200000, width=0.200000, shape=box, - color="#8040C0", style=bold]; - "do_exit (2)" [height=0.400000, width=0.400000, shape=box, color="#80C040", - style=bold]; - "read (1)" [height=0.200000, width=0.200000, shape=box, color="#80C0C0", - style=dotted]; - "write_buf (2)" [height=0.400000, width=0.400000, shape=box, - color="#400000", style=bold]; - "read_error (1)" [height=0.200000, width=0.200000, shape=box, - color="#400080", style=bold]; - "get_method (3)" [height=0.600000, width=0.600000, shape=box, - color="#408000", style=bold]; - "fill_inbuf (1)" [height=0.200000, width=0.200000, shape=box, - color="#408080", style=bold]; - "error (1)" [height=0.200000, width=0.200000, shape=box, color="#C00000", - style=bold]; - "memset (1)" [height=0.200000, width=0.200000, shape=box, color="#C00080", - style=dotted]; - "memcpy (1)" [height=0.200000, width=0.200000, shape=box, color="#C08000", - style=dotted]; - "updcrc (1)" [height=0.200000, width=0.200000, shape=box, color="#C08080", - style=bold]; - "flush_window (1)" [height=0.200000, width=0.200000, shape=box, - color="#400040", style=bold]; - "strrchr (1)" [height=0.200000, width=0.200000, shape=box, color="#4000C0", - style=dotted]; - "clear_bufs (1)" [height=0.200000, width=0.200000, shape=box, - color="#408040", style=bold]; - "write_error (1)" [height=0.200000, width=0.200000, shape=box, - color="#4080C0", style=bold]; - "perror (1)" [height=0.200000, width=0.200000, shape=box, color="#C00040", - style=dotted]; - "display_ratio (2)" [height=0.400000, width=0.400000, shape=box, - color="#C000C0", style=bold]; - " (1)" [height=0.200000, width=0.200000, shape=box, - color="#C08040", style=bold]; - "fileno (1)" [height=0.200000, width=0.200000, shape=box, color="#C080C0", - style=dotted]; - "abort_gzip (1)" [height=0.200000, width=0.200000, shape=box, - color="#404000", style=bold]; - "close (1)" [height=0.200000, width=0.200000, shape=box, color="#404080", - style=dotted]; - "unlink (1)" [height=0.200000, width=0.200000, shape=box, color="#40C000", - style=dotted]; - "isatty (1)" [height=0.200000, width=0.200000, shape=box, color="#40C080", - style=dotted]; - "fstat (1)" [height=0.200000, width=0.200000, shape=box, color="#C04000", - style=dotted]; - "strcspn (1)" [height=0.200000, width=0.200000, shape=box, color="#C04080", - style=dotted]; - "free (1)" [height=0.200000, width=0.200000, shape=box, color="#C0C000", - style=dotted]; - "strlwr (1)" [height=0.200000, width=0.200000, shape=box, color="#C0C080", - style=bold]; - "__errno_location (1)" [height=0.200000, width=0.200000, shape=box, - color="#404040", style=dotted]; - "malloc (1)" [height=0.200000, width=0.200000, shape=box, color="#4040C0", - style=dotted]; - "__ctype_b_loc (1)" [height=0.200000, width=0.200000, shape=box, - color="#40C040", style=dotted]; - - - "unlzw (1)" -> "fprintf (1)"; - "unlzw (1)" -> "read (1)"; - "unlzw (1)" -> "write_buf (2)"; - "unlzw (1)" -> "read_error (1)"; - "unlzw (1)" -> "fill_inbuf (1)"; - "unlzw (1)" -> "error (1)"; - "unlzw (1)" -> "memset (1)"; - "unlzw (1)" -> "memcpy (1)"; - "unzip (9)" -> "fprintf (1)"; - "unzip (9)" -> "fill_inbuf (1)"; - "unzip (9)" -> "error (1)"; - "unzip (9)" -> "memset (1)"; - "unzip (9)" -> "memcpy (1)"; - "unzip (9)" -> "updcrc (1)"; - "unzip (9)" -> "flush_window (1)"; - "unzip (9)" -> "free (1)"; - "unzip (9)" -> "malloc (1)"; - "make_simple_name (1)" -> "strrchr (1)"; - "treat_file (21)" -> "strlen (1)"; - "treat_file (21)" -> "treat_stdin (1)"; - "treat_file (21)" -> "strcmp (1)"; - "treat_file (21)" -> "do_list (4)"; - "treat_file (21)" -> "strcpy (1)"; - "treat_file (21)" -> "fprintf (1)"; - "treat_file (21)" -> "get_method (3)"; - "treat_file (21)" -> "error (1)"; - "treat_file (21)" -> "strrchr (1)"; - "treat_file (21)" -> "clear_bufs (1)"; - "treat_file (21)" -> "write_error (1)"; - "treat_file (21)" -> "perror (1)"; - "treat_file (21)" -> "display_ratio (2)"; - "treat_file (21)" -> " (1)"; - "treat_file (21)" -> "fileno (1)"; - "treat_file (21)" -> "close (1)"; - "treat_file (21)" -> "unlink (1)"; - "treat_file (21)" -> "isatty (1)"; - "treat_file (21)" -> "fstat (1)"; - "treat_file (21)" -> "strcspn (1)"; - "treat_file (21)" -> "strlwr (1)"; - "treat_file (21)" -> "__errno_location (1)"; - "treat_file (21)" -> "__ctype_b_loc (1)"; - "treat_stdin (1)" -> "do_list (4)"; - "treat_stdin (1)" -> "strcpy (1)"; - "treat_stdin (1)" -> "fprintf (1)"; - "treat_stdin (1)" -> "do_exit (2)"; - "treat_stdin (1)" -> "get_method (3)"; - "treat_stdin (1)" -> "error (1)"; - "treat_stdin (1)" -> "clear_bufs (1)"; - "treat_stdin (1)" -> "display_ratio (2)"; - "treat_stdin (1)" -> " (1)"; - "treat_stdin (1)" -> "fileno (1)"; - "treat_stdin (1)" -> "isatty (1)"; - "treat_stdin (1)" -> "fstat (1)"; - "unlzh (12)" -> "write_buf (2)"; - "unlzh (12)" -> "fill_inbuf (1)"; - "unlzh (12)" -> "error (1)"; - "do_list (4)" -> "read (1)"; - "do_list (4)" -> "read_error (1)"; - "do_list (4)" -> "display_ratio (2)"; - "version (1)" -> "fprintf (1)"; - "add_envopt (5)" -> "strlen (1)"; - "add_envopt (5)" -> "strcpy (1)"; - "add_envopt (5)" -> "error (1)"; - "add_envopt (5)" -> "strcspn (1)"; - "add_envopt (5)" -> "free (1)"; - "add_envopt (5)" -> "malloc (1)"; - "main (1)" -> "treat_file (21)"; - "main (1)" -> "strlen (1)"; - "main (1)" -> "treat_stdin (1)"; - "main (1)" -> "atoi (1)"; - "main (1)" -> "signal (1)"; - "main (1)" -> "strcmp (1)"; - "main (1)" -> "do_list (4)"; - "main (1)" -> "version (1)"; - "main (1)" -> "add_envopt (5)"; - "main (1)" -> "strcpy (1)"; - "main (1)" -> "strncmp (1)"; - "main (1)" -> "fprintf (1)"; - "main (1)" -> "strncpy (1)"; - "main (1)" -> "basename (1)"; - "main (1)" -> "getopt_long (1)"; - "main (1)" -> "usage (1)"; - "main (1)" -> "help (1)"; - "main (1)" -> "license (1)"; - "main (1)" -> "do_exit (2)"; - "basename (1)" -> "strrchr (1)"; - "basename (1)" -> "strlwr (1)"; - "lzw (1)" -> "fprintf (1)"; - "zip (26)" -> "basename (1)"; - "zip (26)" -> "write_buf (2)"; - "zip (26)" -> "error (1)"; - "zip (26)" -> "memset (1)"; - "zip (26)" -> "memcpy (1)"; - "zip (26)" -> "updcrc (1)"; - "zip (26)" -> " (1)"; - "usage (1)" -> "fprintf (1)"; - "warn (1)" -> "fprintf (1)"; - "copy (1)" -> "read (1)"; - "copy (1)" -> "write_buf (2)"; - "copy (1)" -> "read_error (1)"; - "copy (1)" -> "__errno_location (1)"; - "help (1)" -> "fprintf (1)"; - "help (1)" -> "usage (1)"; - "unpack (3)" -> "fill_inbuf (1)"; - "unpack (3)" -> "error (1)"; - "unpack (3)" -> "flush_window (1)"; - "license (1)" -> "fprintf (1)"; - "file_read (1)" -> "read (1)"; - "file_read (1)" -> "updcrc (1)"; - "do_exit (2)" -> "free (1)"; - "write_buf (2)" -> "write_error (1)"; - "read_error (1)" -> "fprintf (1)"; - "read_error (1)" -> "perror (1)"; - "read_error (1)" -> "abort_gzip (1)"; - "read_error (1)" -> "__errno_location (1)"; - "get_method (3)" -> "fprintf (1)"; - "get_method (3)" -> "basename (1)"; - "get_method (3)" -> "fill_inbuf (1)"; - "get_method (3)" -> "error (1)"; - "fill_inbuf (1)" -> "read (1)"; - "fill_inbuf (1)" -> "read_error (1)"; - "fill_inbuf (1)" -> "__errno_location (1)"; - "error (1)" -> "fprintf (1)"; - "error (1)" -> "abort_gzip (1)"; - "flush_window (1)" -> "write_buf (2)"; - "flush_window (1)" -> "updcrc (1)"; - "write_error (1)" -> "fprintf (1)"; - "write_error (1)" -> "perror (1)"; - "write_error (1)" -> "abort_gzip (1)"; - "display_ratio (2)" -> "fprintf (1)"; - "abort_gzip (1)" -> "do_exit (2)"; - "abort_gzip (1)" -> "close (1)"; - "abort_gzip (1)" -> "unlink (1)"; - "strlwr (1)" -> "__ctype_b_loc (1)"; - - } \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/siblings.dot b/jscomp/build_tests/ocamlgraph/dgraph/examples/siblings.dot deleted file mode 100755 index 36aded3618..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/siblings.dot +++ /dev/null @@ -1,512 +0,0 @@ -/* -This is a graphviz-produced layout of the "family tree" of a fraternity and sorority. - -Each member in the graph was assigned a "big brother" from one organization and a "big sister" from the other. Blue icons represent Brothers from the fraternity, Pink represents Sisters from the sorority (Purple members are in both organizations - like honoraries.) - -Charter members (who can have no parent nodes) are outlined. - -... - -dot -Tgif -Goverlap=false -o siblings.gif siblings.dot - - -We're experimenting with different ways of coloring and graphing, but found this the easiest for now. When we have more people in, we might look at different shades depending on generation number -- earlier people would get lighter colors, more recent members darker. Thumbnail images would be an interesting alteration as well. - -from Japheth Cleaver -*/ - - -digraph sdsu { - size="36,36"; - node [color=grey, style=filled]; - node [fontname="Verdana", size="30,30"]; - graph [ fontname = "Arial", - fontsize = 36, - style = "bold", - label = "\nKappa Kappa Psi/Tau Beta Sigma\nSan Diego State University\nEta Mu and Zeta Xi Family Tree\n\nto date: November 30th, 2008\n", - ssize = "30,60" ]; -"Lori Brede" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=10"]; -"Michael Griffith" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=24"]; -"Amie Holston" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=30"]; -"Michael Griffith" -> "Lori Brede" -"Amie Holston" -> "Lori Brede" -"Casey Carter" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=11"]; -"Laura De'Armond" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=14"]; -"Laura De'Armond" -> "Casey Carter" -"Japheth Cleaver" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=12"]; -"Chuk Gawlik" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=22"]; -"Stacy Snyder" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=309"]; -"Chuk Gawlik" -> "Japheth Cleaver" -"Stacy Snyder" -> "Japheth Cleaver" -"Jillian Clifton" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=13"]; -"David Guthrie" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=25"]; -"David Guthrie" -> "Jillian Clifton" -"Japheth Cleaver" -> "Jillian Clifton" -"Tony Sacco" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=55"]; -"Heather Smith" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=59"]; -"Tony Sacco" -> "Laura De'Armond" -"Heather Smith" -> "Laura De'Armond" -"Kevin Decker" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=15"]; -"Alex Hansen" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=26"]; -"Wanda Livelsberger" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=53"]; -"Alex Hansen" -> "Kevin Decker" -"Wanda Livelsberger" -> "Kevin Decker" -"Patrick Doerr" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=16"]; -"Deanna Jagow" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=23"]; -"Alex Hansen" -> "Patrick Doerr" -"Deanna Jagow" -> "Patrick Doerr" -"Lori Asaro" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=178"]; -"Mark Pearson" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=169"]; -"Lori Ball" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=167"]; -"Mark Pearson" -> "Lori Asaro" -"Lori Ball" -> "Lori Asaro" -"Ryan Farris" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=18"]; -"Rob Reiner" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=51"]; -"Cindy Teel" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=62"]; -"Rob Reiner" -> "Ryan Farris" -"Cindy Teel" -> "Ryan Farris" -"Ginger Palmer" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=180"]; -"Mark Newton-John" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=46"]; -"Mark Newton-John" -> "Ginger Palmer" -"Matthew FitzGerald" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=19"]; -"Mervin Maniago" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=41"]; -"Mervin Maniago" -> "Matthew FitzGerald" -"Amie Holston" -> "Matthew FitzGerald" -"Tani Miller" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=195"]; -"Mark Pearson" -> "Tani Miller" -"Vienna McMurtry" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=196"]; -"Robert Walwick" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=153"]; -"Robert Walwick" -> "Vienna McMurtry" -"Ginger Palmer" -> "Vienna McMurtry" -"Chuck Foster" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=20"]; -"Karen Saye" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=56"]; -"Kevin Decker" -> "Chuck Foster" -"Karen Saye" -> "Chuck Foster" -"Gary Frampton" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=201"]; -"Ginger Palmer" -> "Gary Frampton" -"Pat Norris" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=207"]; -"Sean Tipps" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=204"]; -"Teresa Long" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=194"]; -"Sean Tipps" -> "Pat Norris" -"Teresa Long" -> "Pat Norris" -"Marc Martin-ez" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=208"]; -"Mark Pearson" -> "Marc Martin-ez" -"Tani Miller" -> "Marc Martin-ez" -"Kristen Villone" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=209"]; -"Kelly Erickson" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=199"]; -"Anna Pedroza" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=197"]; -"Kelly Erickson" -> "Kristen Villone" -"Anna Pedroza" -> "Kristen Villone" -"Geoff Frank" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=21"]; -"Chris Livelsberger" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=40"]; -"Amy Price" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=57"]; -"Chris Livelsberger" -> "Geoff Frank" -"Amy Price" -> "Geoff Frank" -"Tracy Murray" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=210"]; -"John FitzGibbon" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=92"]; -"Judy Dulcich" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=177"]; -"John FitzGibbon" -> "Tracy Murray" -"Judy Dulcich" -> "Tracy Murray" -"Ian McIntosh" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=215"]; -"Barbara Tollison" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=172"]; -"Robert Walwick" -> "Ian McIntosh" -"Barbara Tollison" -> "Ian McIntosh" -"Jayson Smith" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=58"]; -"Jayson Smith" -> "Chuk Gawlik" -"Heather Smith" -> "Chuk Gawlik" -"Kelly McKinney" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=222"]; -"Mark Nadeau" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=183"]; -"Mark Nadeau" -> "Kelly McKinney" -"Judy Dulcich" -> "Kelly McKinney" -"Chris Livelsberger" -> "Deanna Jagow" -"Amy Price" -> "Deanna Jagow" -"Renee Thompson" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=231"]; -"J. Angeles" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=3"]; -"Kelley Smith" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=223"]; -"J. Angeles" -> "Renee Thompson" -"Kelley Smith" -> "Renee Thompson" -"Steven Smith" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=233"]; -"John FitzGibbon" -> "Steven Smith" -"Charlene Andrews" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=234"]; -"Diane Reoch" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=227"]; -"Diane Reoch" -> "Charlene Andrews" -"Tonya Alexander" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=238"]; -"Gail Vasquez" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=225"]; -"Gail Vasquez" -> "Tonya Alexander" -"Spencer Caldwell" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=239"]; -"Becky Bernal" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=218"]; -"Becky Bernal" -> "Spencer Caldwell" -"Chuk Gawlik" -> "Michael Griffith" -"Wanda Livelsberger" -> "Michael Griffith" -"Russell Grant" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=242"]; -"Steven Smith" -> "Russell Grant" -"Tiffany Worthington" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=66"]; -"Chuck Foster" -> "David Guthrie" -"Tiffany Worthington" -> "David Guthrie" -"Jerry Maya" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=250"]; -"John FitzGibbon" -> "Jerry Maya" -"Melissa Schwartz" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=252"]; -"Russell Grant" -> "Melissa Schwartz" -"Delphy Shaulis" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=255"]; -"Renee Thompson" -> "Delphy Shaulis" -"Martin Naiman" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=45"]; -"Janean Angeles" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=86"]; -"Martin Naiman" -> "Alex Hansen" -"Janean Angeles" -> "Alex Hansen" -"Leslie Harlow" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=265"]; -"Dennis McColl" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=251"]; -"Denise Luna" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=236"]; -"Dennis McColl" -> "Leslie Harlow" -"Denise Luna" -> "Leslie Harlow" -"Jonathan Yudman" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=267"]; -"April Ortiz-cloninger" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=258"]; -"April Ortiz-cloninger" -> "Jonathan Yudman" -"Michael Elgo" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=268"]; -"Carol Kropp" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=254"]; -"Spencer Caldwell" -> "Michael Elgo" -"Carol Kropp" -> "Michael Elgo" -"Denmark Vea" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=269"]; -"Marc Martin-ez" -> "Denmark Vea" -"Kelley Smith" -> "Denmark Vea" -"Kathleen Hansen" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=27"]; -"Martin Naiman" -> "Kathleen Hansen" -"Heather Smith" -> "Kathleen Hansen" -"Laura Stegner" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=274"]; -"April Ortiz-cloninger" -> "Laura Stegner" -"Kathy Jones" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=28"]; -"J. Angeles" -> "Kathy Jones" -"Eric Gates" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=282"]; -"Erick Sugimura" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=280"]; -"Erick Sugimura" -> "Eric Gates" -"Laura Stegner" -> "Eric Gates" -"Jennifer Stoewe" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=288"]; -"Eric Gates" -> "Jennifer Stoewe" -"Karen Helbling" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=29"]; -"Regan Ashker" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=5"]; -"Kevin Decker" -> "Karen Helbling" -"Regan Ashker" -> "Karen Helbling" -"Scott Wood" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=295"]; -"Eric Gates" -> "Scott Wood" -"Greg Flood" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=200"]; -"Greg Flood" -> "J. Angeles" -"Ginger Palmer" -> "J. Angeles" -"Lynn Reeves" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=48"]; -"Chuk Gawlik" -> "Amie Holston" -"Lynn Reeves" -> "Amie Holston" -"Susan Colwell" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=302"]; -"Michael Elgo" -> "Susan Colwell" -"Christopher Jouan" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=306"]; -"Kevin Owens" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=245"]; -"Kevin Owens" -> "Christopher Jouan" -"Kristianna Reynante" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=308"]; -"Michael Elgo" -> "Kristianna Reynante" -"Janean Angeles" -> "Kristianna Reynante" -"Amy Berner" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=300"]; -"Amy Berner" -> "Stacy Snyder" -"Deanna Johnson" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=31"]; -"Alex Hansen" -> "Deanna Johnson" -"Laura De'Armond" -> "Deanna Johnson" -"Johnny Richardson" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=310"]; -"Russell Grant" -> "Johnny Richardson" -"Nathan Fellhauer" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=313"]; -"James Rowland" [color=thistle, URL="http://sdsu.kkytbs.net/members/profile.html?who=52"]; -"James Rowland" -> "Nathan Fellhauer" -"Kristianna Reynante" -> "Nathan Fellhauer" -"Brian Raneses" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=314"]; -"Sean McHenry" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=42"]; -"Sean McHenry" -> "Brian Raneses" -"Penny Lewis" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=315"]; -"Martin Naiman" -> "Penny Lewis" -"Becky Graham" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=316"]; -"Kristen Elgo" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=7"]; -"Kristen Elgo" -> "Becky Graham" -"Steven Gross" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=318"]; -"Rob Reiner" -> "Steven Gross" -"Stacy Snyder" -> "Steven Gross" -"Sedona Reynolds" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=32"]; -"Mark Newton-John" -> "Sedona Reynolds" -"Cindy Teel" -> "Sedona Reynolds" -"Klair Mayerchak" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=320"]; -"Nathan Fellhauer" -> "Klair Mayerchak" -"Becky Graham" -> "Klair Mayerchak" -"Shari VerBerkmoes" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=321"]; -"Sean McHenry" -> "Shari VerBerkmoes" -"Janean Angeles" -> "Shari VerBerkmoes" -"Anson Summers" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=326"]; -"James Rowland" -> "Anson Summers" -"Dusty Jolliff" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=33"]; -"Rob Reiner" -> "Dusty Jolliff" -"Stacy Snyder" -> "Dusty Jolliff" -"Jennifer Garman" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=331"]; -"James Rowland" -> "Jennifer Garman" -"Kelly Greenhill" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=333"]; -"Rob Reiner" -> "Kelly Greenhill" -"Kristen Elgo" -> "Kelly Greenhill" -"Lucinda Farless" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=334"]; -"J. Angeles" -> "Lucinda Farless" -"Susan Colwell" -> "Lucinda Farless" -"Alfredo Cardenas" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=335"]; -"Chuk Gawlik" -> "Alfredo Cardenas" -"Kathleen Hansen" -> "Alfredo Cardenas" -"Jennifer Jouan" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=34"]; -"Andrea Owens" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=276"]; -"Andrea Owens" -> "Jennifer Jouan" -"Tamara Scrivner" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=345"]; -"Joseph Butler" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=69"]; -"Sarah Maltese" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=83"]; -"Joseph Butler" -> "Tamara Scrivner" -"Sarah Maltese" -> "Tamara Scrivner" -"Bradley Stouse" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=346"]; -"Ryan Underwood" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=74"]; -"Ryan Underwood" -> "Bradley Stouse" -"Cindy Teel" -> "Bradley Stouse" -"Casondra Brimmage" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=347"]; -"Kristopher Lininger" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=85"]; -"Ilana Melcher" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=73"]; -"Kristopher Lininger" -> "Casondra Brimmage" -"Ilana Melcher" -> "Casondra Brimmage" -"Cassiopeia Guthrie" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=348"]; -"Jeremy Frazier" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=79"]; -"Christine Mount" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=76"]; -"Jeremy Frazier" -> "Cassiopeia Guthrie" -"Christine Mount" -> "Cassiopeia Guthrie" -"Kathleen Moran" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=349"]; -"Matthew FitzGerald" -> "Kathleen Moran" -"Lori Brede" -> "Kathleen Moran" -"Tiffany Kalland" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=35"]; -"Tony Sacco" -> "Tiffany Kalland" -"Karen Helbling" -> "Tiffany Kalland" -"Kristen Anderson" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=350"]; -"Jennie Bogart" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=78"]; -"David Guthrie" -> "Kristen Anderson" -"Jennie Bogart" -> "Kristen Anderson" -"Laura Simonette" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=351"]; -"Jon Weisel" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=89"]; -"Jon Weisel" -> "Laura Simonette" -"Japheth Cleaver" -> "Laura Simonette" -"Nathan Williams" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=352"]; -"David Guthrie" -> "Nathan Williams" -"Karen Helbling" -> "Nathan Williams" -"Rebecca Hippert" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=353"]; -"Ryan Underwood" -> "Rebecca Hippert" -"Tiffany Kalland" -> "Rebecca Hippert" -"Samuel Wallace" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=354"]; -"Joseph Butler" -> "Samuel Wallace" -"Deanna Jagow" -> "Samuel Wallace" -"Scott Gardner" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=355"]; -"Jeremy Frazier" -> "Scott Gardner" -"Christine Mount" -> "Scott Gardner" -"Alberto Ayon" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=356"]; -"Bradley Stouse" -> "Alberto Ayon" -"Jennie Bogart" -> "Alberto Ayon" -"Susannah Clayton" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=357"]; -"Nathan Williams" -> "Susannah Clayton" -"Karen Helbling" -> "Susannah Clayton" -"Lisa Gochnauer" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=358"]; -"Scott Gardner" -> "Lisa Gochnauer" -"Casondra Brimmage" -> "Lisa Gochnauer" -"Jamie Jackson" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=359"]; -"Samuel Wallace" -> "Jamie Jackson" -"Tamara Scrivner" -> "Jamie Jackson" -"Christina Kelly" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=36"]; -"Matthew FitzGerald" -> "Christina Kelly" -"Lori Brede" -> "Christina Kelly" -"Gara Thornton" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=360"]; -"Mark Newton-John" -> "Gara Thornton" -"Laura Simonette" -> "Gara Thornton" -"Robert Winebarger" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=361"]; -"Robin Ellison" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=90"]; -"Scott Gardner" -> "Robert Winebarger" -"Robin Ellison" -> "Robert Winebarger" -"Jeremy Kirchner" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=37"]; -"Rob Reiner" -> "Jeremy Kirchner" -"Sandy Konar" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=38"]; -"Jennifer Brandon" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=9"]; -"Jennifer Brandon" -> "Sandy Konar" -"Dan Kuhlman" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=39"]; -"Rob Reiner" -> "Dan Kuhlman" -"Dusty Jolliff" -> "Dan Kuhlman" -"Lindsay Arehart" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=4"]; -"Martin Naiman" -> "Lindsay Arehart" -"Jennifer Brandon" -> "Lindsay Arehart" -"J. Angeles" -> "Mervin Maniago" -"Kathy Jones" -> "Mervin Maniago" -"Jarrod Monroe" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=43"]; -"Jamie Fratacci" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=44"]; -"Mark Newton-John" -> "Jarrod Monroe" -"Jamie Fratacci" -> "Jarrod Monroe" -"Chuk Gawlik" -> "Jamie Fratacci" -"Tiffany Worthington" -> "Jamie Fratacci" -"Russell Grant" -> "Martin Naiman" -"Tonya Alexander" -> "Martin Naiman" -"Edward Givens" [color=lightblue, outline=bold, style=bold, URL="http://sdsu.kkytbs.net/members/profile.html?who=106"]; -"Edward Givens" -> "Mark Newton-John" -"Veronica Nickel" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=47"]; -"Regan Ashker" -> "Veronica Nickel" -"Wanda Livelsberger" -> "Lynn Reeves" -"Bryan Ransom" [color=thistle, URL="http://sdsu.kkytbs.net/members/profile.html?who=49"]; -"Jayson Smith" -> "Bryan Ransom" -"Tony Sacco" -> "Regan Ashker" -"Dusty Jolliff" -> "Regan Ashker" -"Jennifer Stout" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=50"]; -"Matthew FitzGerald" -> "Jennifer Stout" -"Deanna Jagow" -> "Jennifer Stout" -"Sean McHenry" -> "James Rowland" -"James Rowland" -> "Wanda Livelsberger" -"Janean Angeles" -> "Wanda Livelsberger" -"Melissa Roy" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=54"]; -"Mervin Maniago" -> "Melissa Roy" -"Christina Kelly" -> "Melissa Roy" -"Dennis McColl" -> "Tony Sacco" -"April Ortiz-cloninger" -> "Tony Sacco" -"Tony Sacco" -> "Karen Saye" -"Tony Sacco" -> "Amy Price" -"Kathleen Hansen" -> "Amy Price" -"James Rowland" -> "Jayson Smith" -"Brian Raneses" -> "Heather Smith" -"Kristen Elgo" -> "Heather Smith" -"Josh Atwood" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=6"]; -"David Guthrie" -> "Josh Atwood" -"Lori Brede" -> "Josh Atwood" -"Katie Browne" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=60"]; -"Patrick Doerr" -> "Katie Browne" -"Jamie Fratacci" -> "Katie Browne" -"Kristin Tang" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=61"]; -"James Rowland" -> "Kristin Tang" -"Heather Smith" -> "Kristin Tang" -"Mervin Maniago" -> "Cindy Teel" -"Veronica Nickel" -> "Cindy Teel" -"Mike Tulumello" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=63"]; -"Matthew FitzGerald" -> "Mike Tulumello" -"Katie Browne" -> "Mike Tulumello" -"Veronica Villanueva" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=64"]; -"Ryan Farris" -> "Veronica Villanueva" -"Sedona Reynolds" -> "Veronica Villanueva" -"Mervin Maniago" -> "Tiffany Worthington" -"Jennifer Jouan" -> "Tiffany Worthington" -"Scott Wright" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=67"]; -"James Rowland" -> "Scott Wright" -"Kristen Elgo" -> "Scott Wright" -"Jeremy Browne" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=68"]; -"Matthew FitzGerald" -> "Jeremy Browne" -"Japheth Cleaver" -> "Jeremy Browne" -"James Fogelman" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=688"]; -"Alberto Ayon" -> "James Fogelman" -"Susannah Clayton" -> "James Fogelman" -"Sandra Chase" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=689"]; -"David Guthrie" -> "Sandra Chase" -"Japheth Cleaver" -> "Sandra Chase" -"Patrick Doerr" -> "Joseph Butler" -"Deanna Jagow" -> "Joseph Butler" -"Laura Fisher" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=690"]; -"Nathan Williams" -> "Laura Fisher" -"Casondra Brimmage" -> "Laura Fisher" -"Katie Kozma" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=691"]; -"Scott Wright" -> "Katie Kozma" -"Robin Ellison" -> "Katie Kozma" -"Rachel Perkins" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=692"]; -"Joseph Butler" -> "Rachel Perkins" -"Cassiopeia Guthrie" -> "Rachel Perkins" -"Sarah Titilah" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=693"]; -"Robert Winebarger" -> "Sarah Titilah" -"Karen Helbling" -> "Sarah Titilah" -"Ashley Rehart" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=694"]; -"Laura Fisher" -> "Ashley Rehart" -"Cara Yancey" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=695"]; -"Katie Kozma" -> "Cara Yancey" -"Ashley Presley" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=698"]; -"Cara Yancey" -> "Ashley Presley" -"Leila Wilhelm" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=699"]; -"Robin Ellison" -> "Leila Wilhelm" -"Sean McHenry" -> "Kristen Elgo" -"Stacy Snyder" -> "Kristen Elgo" -"Greg Moody" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=70"]; -"Ryan Farris" -> "Greg Moody" -"Jennifer Stout" -> "Greg Moody" -"Lisa Fleck" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=700"]; -"Rachel Perkins" -> "Lisa Fleck" -"Christine Coyne" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=701"]; -"Rachel Perkins" -> "Christine Coyne" -"Jennifer Cooley" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=702"]; -"Laura Fisher" -> "Jennifer Cooley" -"Elizabeth Larios" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=703"]; -"Ashley Rehart" -> "Elizabeth Larios" -"Cate Threlkeld" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=707"]; -"Katie Kozma" -> "Cate Threlkeld" -"Erika Tapia" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=71"]; -"Patrick Doerr" -> "Erika Tapia" -"Melissa Roy" -> "Erika Tapia" -"Robbyn Rozelle" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=72"]; -"Jarrod Monroe" -> "Robbyn Rozelle" -"Tiffany Kalland" -> "Robbyn Rozelle" -"Ryan Farris" -> "Ilana Melcher" -"Veronica Villanueva" -> "Ilana Melcher" -"Greg Moody" -> "Ryan Underwood" -"Katie Browne" -> "Ryan Underwood" -"Cameron Brown" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=75"]; -"Joseph Butler" -> "Cameron Brown" -"Tiffany Kalland" -> "Cameron Brown" -"Ryan Underwood" -> "Christine Mount" -"Lori Brede" -> "Christine Mount" -"Janay Rabe" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=77"]; -"Greg Moody" -> "Janay Rabe" -"Cindy Teel" -> "Janay Rabe" -"Jeremy Browne" -> "Jennie Bogart" -"Tiffany Kalland" -> "Jennie Bogart" -"Ryan Farris" -> "Jeremy Frazier" -"Ilana Melcher" -> "Jeremy Frazier" -"Crystal Bozak" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=8"]; -"Patrick Doerr" -> "Crystal Bozak" -"Katie Browne" -> "Crystal Bozak" -"Kameka Smith" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=80"]; -"Matthew FitzGerald" -> "Kameka Smith" -"Ilana Melcher" -> "Kameka Smith" -"Kyra Sacco" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=81"]; -"Joseph Butler" -> "Kyra Sacco" -"Robbyn Rozelle" -> "Kyra Sacco" -"Samuel Behar" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=82"]; -"Ryan Underwood" -> "Samuel Behar" -"Lori Brede" -> "Samuel Behar" -"Patrick Doerr" -> "Sarah Maltese" -"Deanna Jagow" -> "Sarah Maltese" -"David Bronson" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=84"]; -"Kristin Alongi-Hutchins" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=87"]; -"Tony Sacco" -> "David Bronson" -"Kristin Alongi-Hutchins" -> "David Bronson" -"Cameron Brown" -> "Kristopher Lininger" -"Kameka Smith" -> "Kristopher Lininger" -"Rakan Abu-Rahma" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=852"]; -"Christine Coyne" -> "Rakan Abu-Rahma" -"Jennifer Berry" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=270"]; -"Jennifer Berry" -> "Janean Angeles" -"Penny Lewis" -> "Kristin Alongi-Hutchins" -"Melissa Bebak" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=88"]; -"Greg Moody" -> "Melissa Bebak" -"Sarah Maltese" -> "Melissa Bebak" -"Scott Wright" -> "Jennifer Brandon" -"Japheth Cleaver" -> "Jennifer Brandon" -"Samuel Behar" -> "Robin Ellison" -"Kyra Sacco" -> "Robin Ellison" -"Teresa Simms" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=91"]; -"Joseph Butler" -> "Teresa Simms" -"Janay Rabe" -> "Teresa Simms" -"Robert Schmidtke" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=188"]; -"Jean Newman" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=166"]; -"Robert Schmidtke" -> "John FitzGibbon" -"Jean Newman" -> "John FitzGibbon" -"Brittany DePew" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=928"]; -"Elizabeth Larios" -> "Brittany DePew" -"Kathleen Halberg" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=929"]; -"Ashley Rehart" -> "Kathleen Halberg" -"Terrance Hirsch" [color=lightblue, URL="http://sdsu.kkytbs.net/members/profile.html?who=96"]; -"J. Angeles" -> "Terrance Hirsch" -"Susan Colwell" -> "Terrance Hirsch" -"Monique Arellano" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=972"]; -"Ashley Presley" -> "Monique Arellano" -"Anthony Henderson" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=973"]; -"Jennifer Cooley" -> "Anthony Henderson" -"Amethyst Tagle" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=974"]; -"Cate Threlkeld" -> "Amethyst Tagle" -"Mallory Williams" [color=lightpink, URL="http://sdsu.kkytbs.net/members/profile.html?who=975"]; -"Lisa Fleck" -> "Mallory Williams" -} \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/switch.gv b/jscomp/build_tests/ocamlgraph/dgraph/examples/switch.gv deleted file mode 100755 index ee5489abab..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/switch.gv +++ /dev/null @@ -1,60 +0,0 @@ -digraph G { - graph [center=true rankdir=LR bgcolor="#808080"] - edge [dir=none] - node [width=0.3 height=0.3 label=""] - { node [shape=circle style=invis] - 1 2 3 4 5 6 7 8 10 20 30 40 50 60 70 80 - } - { node [shape=circle] - a b c d e f g h i j k l m n o p q r s t u v w x - } - { node [shape=diamond] - A B C D E F G H I J K L M N O P Q R S T U V W X - } - 1 -> a -> {A B} [color="#0000ff"] - 2 -> b -> {B A} [color="#ff0000"] - 3 -> c -> {C D} [color="#ffff00"] - 4 -> d -> {D C} [color="#00ff00"] - 5 -> e -> {E F} [color="#000000"] - 6 -> f -> {F E} [color="#00ffff"] - 7 -> g -> {G H} [color="#ffffff"] - 8 -> h -> {H G} [color="#ff00ff"] - { edge [color="#ff0000:#0000ff"] - A -> i -> {I K} - B -> j -> {J L} - } - { edge [color="#00ff00:#ffff00"] - C -> k -> {K I} - D -> l -> {L J} - } - { edge [color="#00ffff:#000000"] - E -> m -> {M O} - F -> n -> {N P} - } - { edge [color="#ff00ff:#ffffff"] - G -> o -> {O M} - H -> p -> {P N} - } - { edge [color="#00ff00:#ffff00:#ff0000:#0000ff"] - I -> q -> {Q U} - J -> r -> {R V} - K -> s -> {S W} - L -> t -> {T X} - } - { edge [color="#ff00ff:#ffffff:#00ffff:#000000"] - M -> u -> {U Q} - N -> v -> {V R} - O -> w -> {W S} - P -> x -> {X T} - } - { edge [color="#ff00ff:#ffffff:#00ffff:#000000:#00ff00:#ffff00:#ff0000:#0000ff"] - Q -> 10 - R -> 20 - S -> 30 - T -> 40 - U -> 50 - V -> 60 - W -> 70 - X -> 80 - } -} diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/unix2.gv b/jscomp/build_tests/ocamlgraph/dgraph/examples/unix2.gv deleted file mode 100755 index 25a74a5cf6..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/unix2.gv +++ /dev/null @@ -1,63 +0,0 @@ -/* Courtesy of Ian Darwin - * and Geoff Collyer - * Mildly updated by Ian Darwin in 2000. - */ -digraph unix { - size="6,6"; - node [color=lightblue2, style=filled]; - "5th Edition" -> "6th Edition"; - "5th Edition" -> "PWB 1.0"; - "6th Edition" -> "LSX"; - "6th Edition" -> "1 BSD"; - "6th Edition" -> "Mini Unix"; - "6th Edition" -> "Wollongong"; - "6th Edition" -> "Interdata"; - "Interdata" -> "Unix/TS 3.0"; - "Interdata" -> "PWB 2.0"; - "Interdata" -> "7th Edition"; - "7th Edition" -> "8th Edition"; - "7th Edition" -> "32V"; - "7th Edition" -> "V7M"; - "7th Edition" -> "Ultrix-11"; - "7th Edition" -> "Xenix"; - "7th Edition" -> "UniPlus+"; - "V7M" -> "Ultrix-11"; - "8th Edition" -> "9th Edition"; - "9th Edition" -> "10th Edition"; - "1 BSD" -> "2 BSD"; - "2 BSD" -> "2.8 BSD"; - "2.8 BSD" -> "Ultrix-11"; - "2.8 BSD" -> "2.9 BSD"; - "32V" -> "3 BSD"; - "3 BSD" -> "4 BSD"; - "4 BSD" -> "4.1 BSD"; - "4.1 BSD" -> "4.2 BSD"; - "4.1 BSD" -> "2.8 BSD"; - "4.1 BSD" -> "8th Edition"; - "4.2 BSD" -> "4.3 BSD"; - "4.2 BSD" -> "Ultrix-32"; - "4.3 BSD" -> "4.4 BSD"; - "4.4 BSD" -> "FreeBSD"; - "4.4 BSD" -> "NetBSD"; - "4.4 BSD" -> "OpenBSD"; - "PWB 1.0" -> "PWB 1.2"; - "PWB 1.0" -> "USG 1.0"; - "PWB 1.2" -> "PWB 2.0"; - "USG 1.0" -> "CB Unix 1"; - "USG 1.0" -> "USG 2.0"; - "CB Unix 1" -> "CB Unix 2"; - "CB Unix 2" -> "CB Unix 3"; - "CB Unix 3" -> "Unix/TS++"; - "CB Unix 3" -> "PDP-11 Sys V"; - "USG 2.0" -> "USG 3.0"; - "USG 3.0" -> "Unix/TS 3.0"; - "PWB 2.0" -> "Unix/TS 3.0"; - "Unix/TS 1.0" -> "Unix/TS 3.0"; - "Unix/TS 3.0" -> "TS 4.0"; - "Unix/TS++" -> "TS 4.0"; - "CB Unix 3" -> "TS 4.0"; - "TS 4.0" -> "System V.0"; - "System V.0" -> "System V.2"; - "System V.2" -> "System V.3"; - "System V.3" -> "System V.4"; -} diff --git a/jscomp/build_tests/ocamlgraph/dgraph/examples/viewfile.gv b/jscomp/build_tests/ocamlgraph/dgraph/examples/viewfile.gv deleted file mode 100755 index ec316d2632..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/examples/viewfile.gv +++ /dev/null @@ -1,64 +0,0 @@ -digraph Viewfile { -node [ style = filled ]; -atoi [color=green]; -chkmalloc [color=green]; -close [color=green]; -error [color=blue]; -exit [color=blue]; -fclose [color=green]; -fgets [color=red]; -fopen [color=green]; -fprintf [color=blue]; -free [color=blue]; -free_list [color=blue]; -fstat [color=green]; -getopt [color=green]; -init_list [color=green]; -insert_list [color=green]; -main [color=green]; -makeargs [color=blue]; -makepairs [color=green]; -malloc [color=green]; -open [color=green]; -printf [color=red]; -read [color=green]; -rewind [color=green]; -viewline [color=green]; -viewlines [color=green]; -walk_list [color=green]; -write [color=green]; -fclose -> close [color=green]; -fgets -> fstat [color=green]; -fgets -> read [color=green]; -fopen -> open [color=green]; -printf -> write [color=green]; -main -> fgets [color=blue]; -main -> getopt [color=green]; -main -> makeargs [color=blue]; -main -> makepairs [color=green]; -main -> chkmalloc [color=green]; -main -> error [color=blue]; -main -> viewlines [color=green]; -makeargs -> chkmalloc [color=blue]; -makepairs -> atoi [color=green]; -makepairs -> init_list [color=green]; -makepairs -> insert_list [color=green]; -makepairs -> chkmalloc [color=green]; -free_list -> free [color=blue]; -init_list -> chkmalloc [color=green]; -insert_list -> chkmalloc [color=green]; -walk_list -> error [color=blue]; -walk_list -> viewline [color=green]; -chkmalloc -> malloc [color=green]; -chkmalloc -> error [color=blue]; -error -> exit [color=blue]; -error -> fprintf [color=blue]; -error -> error [color=blue]; -viewline -> fgets [color=red]; -viewline -> printf [color=red]; -viewline -> rewind [color=green]; -viewlines -> fclose [color=green]; -viewlines -> fopen [color=green]; -viewlines -> walk_list [color=green]; -viewlines -> viewline [color=blue]; -} diff --git a/jscomp/build_tests/ocamlgraph/dgraph/headers/CEA_LGPL b/jscomp/build_tests/ocamlgraph/dgraph/headers/CEA_LGPL deleted file mode 100755 index 026b8a89d1..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/headers/CEA_LGPL +++ /dev/null @@ -1,22 +0,0 @@ - -This file is part of OcamlGraph. - -Copyright (C) 2009-2010 - CEA (Commissariat à l'Énergie Atomique) - -you can redistribute it and/or modify it under the terms of the GNU -Lesser General Public License as published by the Free Software -Foundation, version 2.1, with a linking exception. - -It is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Lesser General Public License for more details. - -See the file ../LICENSE for more details. - -Authors: - - Julien Signoles (Julien.Signoles@cea.fr) - - Jean-Denis Koeck (jdkoeck@gmail.com) - - Benoit Bataille (benoit.bataille@gmail.com) - diff --git a/jscomp/build_tests/ocamlgraph/dgraph/headers/headache_config.txt b/jscomp/build_tests/ocamlgraph/dgraph/headers/headache_config.txt deleted file mode 100755 index 73cf03e3a0..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/headers/headache_config.txt +++ /dev/null @@ -1,20 +0,0 @@ -# Objective Caml source -| ".*\\.mly" -> frame open:"/*" line:"*" close:"*/" -| ".*\\.ml[il4]?.*" -> frame open:"(*" line:"*" close:"*)" -# C source -| ".*\\.c" -> frame open:"/*" line:"*" close:"*/" -| ".*\\.ast" -> frame open:"//" line:" " close:" " -| ".*\\.cc" -> frame open:"/*" line:"*" close:"*/" -# Asm source -| ".*\\.S" -> frame open:"/*" line:"*" close:"*/" -# Configure -| "config\\.h\\.in" -> frame open:"/*" line:"*" close:"*/" -| "configure\\.in" -> frame open:"#" line:"#" close:"#" -# Makefile -| "Makefile" -> frame open:"#" line:"#" close:"#" -# Sh -| ".*\\.sh" -> frame open:"#" line:"#" close:"#" -# Misc -| "make_release" -> frame open:"#" line:"#" close:"#" -| "FAQ" -> frame open:"#" line:"#" close:"#" -| ".*\\.el" -> frame open: ";" line: ";" close:";" diff --git a/jscomp/build_tests/ocamlgraph/dgraph/headers/headers.sh b/jscomp/build_tests/ocamlgraph/dgraph/headers/headers.sh deleted file mode 100755 index 0ea52e68c5..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/headers/headers.sh +++ /dev/null @@ -1,2 +0,0 @@ -#! /bin/sh -headache -c headers/headache_config.txt -h headers/CEA_LGPL *.ml* *Makefile* diff --git a/jscomp/build_tests/ocamlgraph/dgraph/xDot.ml b/jscomp/build_tests/ocamlgraph/dgraph/xDot.ml deleted file mode 100755 index cfa540f9cf..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/xDot.ml +++ /dev/null @@ -1,375 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -(** Reading XDot files *) - -open Graph -open Dot_ast -open Printf - -(* Layout types *) -(* This file is responsible for converting the coordinates from dot coordinates - to GnomeCanvas world coordinates. - The matrix transformation to apply is: - (1 0) - (0 -1) - Care must be taken to exchange max and min values on the y axis. - Outside this module all coordinates are assumed to be in canvas - world coordinates. -*) -type pos = float * float (* coordinates *) -type bounding_box = pos * pos (* bounding box *) - -type node_layout = { - n_name : string; - n_pos : pos; - n_bbox : bounding_box; - n_draw : XDotDraw.operation list; - n_ldraw : XDotDraw.operation list; -} - -type cluster_layout = { - c_pos : pos; - c_bbox : bounding_box; - c_draw : XDotDraw.operation list; - c_ldraw : XDotDraw.operation list; -} - -type edge_layout = { - e_draw : XDotDraw.operation list; - e_ldraw : XDotDraw.operation list; - e_hdraw : XDotDraw.operation list; - e_tdraw : XDotDraw.operation list; - e_hldraw : XDotDraw.operation list; - e_tldraw : XDotDraw.operation list; -} - -let mk_node_layout ~name ~pos ~bbox ~draw ~ldraw = - { n_name = name; - n_pos = pos; - n_bbox = bbox; - n_draw = draw; - n_ldraw = ldraw } - -let mk_cluster_layout ~pos ~bbox ~draw ~ldraw = - { c_pos = pos; - c_bbox = bbox; - c_draw = draw; - c_ldraw = ldraw } - -let mk_edge_layout ~draw ~ldraw ~hdraw ~tdraw ~hldraw ~tldraw = - { e_draw = draw; - e_ldraw = ldraw; - e_hdraw = hdraw; - e_tdraw = tdraw; - e_hldraw = hldraw; - e_tldraw = tldraw; - } - -exception ParseError of string - -(* MISCELLANEOUS FUNCTIONS *) - -let suffix s i = try String.sub s i ((String.length s)-i) - with Invalid_argument("String.sub") -> "" - -let read_pos s = Scanf.sscanf s "%f,%f" (fun x y -> x, -.y) - -let bounding_box (x, y) w h = - let lower_left = x -. w , y -. h in - let upper_right = x+.w,y+.h in - lower_left,upper_right - -let get_dot_string = function - | Dot_ast.String s -> s - | Dot_ast.Ident s -> s - | Dot_ast.Number s -> s - | Dot_ast.Html s -> s - -(* READING VERTEX LAYOUTS *) - -(** Finds the attributes [pos], [width] and [height] of a node - in the attribute list *) -let read_common_layout mk_layout attr_list = - (* Iter on the attributes *) - (* shape, position, width, height, color, filled *) - let fold ((p,w,h, draw,ldraw) as attrs) = function - | (Dot_ast.Ident "pos"), Some (Dot_ast.String s) -> - (Some s), w, h, draw,ldraw - | (Dot_ast.Ident "width"), Some (Dot_ast.String s) -> - p, (Some s), h, draw,ldraw - | (Dot_ast.Ident "height"), Some (Dot_ast.String s) -> - p, w, (Some s), draw,ldraw - | (Dot_ast.Ident "_draw_"), Some (Dot_ast.String draw) -> - p,w,h, XDotDraw.parse draw, ldraw - | (Dot_ast.Ident "_ldraw_"), Some (Dot_ast.String ldraw) -> - p,w,h, draw, XDotDraw.parse ldraw - | _ -> attrs in - - let fold_attr acc attr_list = - List.fold_left fold acc attr_list in - let attrs = List.fold_left fold_attr (None, None, None, [], []) - attr_list in - - (* Check if we have position, width and height *) - match attrs with - | Some pos, Some w, Some h, draw,ldraw-> - let pos = read_pos pos in - let coord = bounding_box pos - (float_of_string w) (-.(float_of_string h)) in - (* Return the node model *) - mk_layout ~pos ~bbox:coord ~draw ~ldraw - | _,_,_, draw, ldraw -> - let pos = (0.,0.) in - let bbox = (0.,0.),(0.,0.) in - mk_layout ~pos ~bbox ~draw ~ldraw - -let read_node_layout (id,_) attrs = - let f = read_common_layout - (fun ~pos ~bbox ~draw ~ldraw -> mk_node_layout ~pos ~bbox ~draw ~ldraw) - attrs in - f ~name:(get_dot_string id) -let read_cluster_layout = read_common_layout mk_cluster_layout - -(* READING EDGE LAYOUTS *) - -(** Reads the spline control points of a curve in an xdot file - example : "c 5 -black B 4 65 296 65 288 65 279 65 270 " -*) - -(* The edge drawing operations are in the following attributes : - _hdraw_ Head arrowhead - _tdraw_ Tail arrowhead - _hldraw_ Head label - _tldraw_ Tail label -*) - -(** Gets the layout of an edge out of the dot ast *) -let read_edge_layout attr_list = - let draw = ref [] in - let ldraw = ref [] in - let hdraw = ref [] in - let tdraw = ref [] in - let hldraw = ref [] in - let tldraw = ref [] in - let fill_draw_ops = function - | (Dot_ast.Ident "_draw_"), Some (Dot_ast.String s) -> - draw := XDotDraw.parse s - | (Dot_ast.Ident "_ldraw_"), Some (Dot_ast.String s) -> - ldraw := XDotDraw.parse s - | (Dot_ast.Ident "_hdraw_"), Some (Dot_ast.String s) -> - hdraw := XDotDraw.parse s - | (Dot_ast.Ident "_tdraw_"), Some (Dot_ast.String s) -> - tdraw := XDotDraw.parse s - | (Dot_ast.Ident "_hldraw_"), Some (Dot_ast.String s) -> - hldraw := XDotDraw.parse s - | (Dot_ast.Ident "_tldraw_"), Some (Dot_ast.String s) -> - tldraw := XDotDraw.parse s - | _ -> () in - List.iter (List.iter fill_draw_ops) attr_list; - let draw, ldraw = !draw, !ldraw in - let hdraw, tdraw, hldraw, tldraw = !hdraw, !tdraw, !hldraw, !tldraw in - mk_edge_layout ~draw ~ldraw ~hdraw ~tdraw ~hldraw ~tldraw - -(* Computes the bounding box *) -let read_bounding_box str = - let x1,y1,x2,y2 = Scanf.sscanf str "%f,%f,%f,%f" (fun a b c d -> a,b,c,d) in - (* Convert coordinates to the world canvas coordinates *) - let lower_left = (x1, -.y2) and upper_right = x2, -.y1 in - lower_left,upper_right - -module Make(G : Graph.Graphviz.GraphWithDotAttrs) = struct - - module HV = Hashtbl.Make(G.V) - module HE = - Hashtbl.Make - (struct - type t = G.E.t - let equal x y = G.E.compare x y = 0 - let hash = Hashtbl.hash - end) - - module HT = - Hashtbl.Make - (Util.HTProduct - (Util.HTProduct(G.V)(G.V)) - (struct type t = string let equal = (=) let hash = Hashtbl.hash end)) - - type graph_layout = - { vertex_layouts : node_layout HV.t; - edge_layouts : edge_layout HE.t; - cluster_layouts : (string, cluster_layout) Hashtbl.t; - bbox : bounding_box } - - exception Found of string - - let get_edge_comment e = - let al = G.edge_attributes e in - try - List.iter (function `Comment c -> raise (Found c) | _ -> ()) al; - None - with Found c -> - Some c - - let get_dot_comment (al : Dot_ast.attr list) = - try - List.iter - (List.iter - (function - | Ident "comment", Some c -> raise (Found (get_dot_string c)) - | _ -> ())) - al; - "" - with Found c -> - c - - let strip_quotes = function - | "" -> "" - | s -> - let len = String.length s in - if s.[0] = '"' && s.[len -1] = '"' then String.sub s 1 (len - 2) - else s - - (* Parses the graph attribute named id, and converts it with conv *) - let parse_graph_attr id conv stmts = - let read_attr = function - | Ident ident , Some (String attr) when ident = id -> - raise (Found attr) - | _ -> () - in - let read_stmt = function - | Attr_graph attrs -> List.iter (List.iter read_attr) attrs - | _ -> () - in - try - List.iter read_stmt stmts; - failwith ("Could not find the graph attribute named " ^ id) - with Found attr -> - conv attr - - let parse_bounding_box = parse_graph_attr "bb" read_bounding_box - (*let parse_bgcolor = parse_graph_attr "bgcolor" XDotDraw.normalize_color*) - - let parse_layouts g stmts = - let name_to_vertex = Hashtbl.create 97 in - let vertices_comment_to_edge = HT.create 97 in - - let vertex_layouts = HV.create 97 in - let edge_layouts = HE.create 97 in - let cluster_layouts = Hashtbl.create 97 in - - G.iter_vertex - (fun v -> - let name = strip_quotes (G.vertex_name v) in - Hashtbl.add name_to_vertex name v) - g; - - G.iter_edges_e - (fun e -> - let comment = match get_edge_comment e with - | Some c -> strip_quotes c - | None -> "" - in - let vs = G.E.src e, G.E.dst e in - HT.add vertices_comment_to_edge (vs, comment) e) - g; - - let find_vertex (id,_) = - let name = get_dot_string id in - try Hashtbl.find name_to_vertex name - with Not_found -> failwith ("Could not find vertex named " ^ name) - in - - let find_edge v v' comment = - try HT.find vertices_comment_to_edge ((v, v'), comment) - with Not_found -> - (* Printf.printf "Did not find edge from %s to %s with comment %s\n" - (G.vertex_name v) (G.vertex_name v') - (match comment with Some c -> c | None -> "none");*) - raise Not_found - in - - let rec collect_layouts cluster stmt = - try - match stmt with - | Node_stmt (node_id, al) -> - let v = find_vertex node_id in - HV.add vertex_layouts v (read_node_layout node_id al) - | Edge_stmt (NodeId id, [NodeId id'], al) -> - let v = find_vertex id in - let v' = find_vertex id' in - let comment = get_dot_comment al in - let e = find_edge v v' comment in - HE.add edge_layouts e (read_edge_layout al) - | Subgraph (SubgraphDef (Some id, stmts)) -> - let cluster = get_dot_string id in - List.iter (collect_layouts (Some cluster)) stmts - (* Anonymous subgraph *) - | Subgraph (SubgraphDef (_, stmts)) -> - List.iter (collect_layouts cluster) stmts - | Attr_graph al -> - (match cluster with - | Some c -> Hashtbl.add cluster_layouts c (read_cluster_layout al) - | None -> ()) - | _ -> () - with Not_found -> - () - in - List.iter (collect_layouts None) stmts; - vertex_layouts, edge_layouts, cluster_layouts - - let parse g dot_ast = - let v_layouts, e_layouts, c_layouts = parse_layouts g dot_ast.stmts in - let bbox = parse_bounding_box dot_ast.stmts in - (* let bgcolor = parse_bgcolor dot_ast.stmts in*) - { vertex_layouts = v_layouts; - edge_layouts = e_layouts; - cluster_layouts = c_layouts; - bbox = bbox } - - exception DotError of string - - let layout_of_xdot ~xdot_file g = - let dot_ast = Dot.parse_dot_ast xdot_file in - parse g dot_ast - - let layout_of_dot ?(cmd="dot") ~dot_file g = - let base_name = - try Filename.basename (Filename.chop_extension dot_file) - with Invalid_argument _ -> dot_file - in - let xdot_file = Filename.temp_file base_name ".xdot" in - (* Run graphviz to get xdot file *) - let dot_cmd = sprintf "%s -Txdot %s > %s" cmd dot_file xdot_file in - match Sys.command dot_cmd with - | 0 -> - let l = layout_of_xdot ~xdot_file g in - Sys.remove xdot_file; - l - | _ -> - Sys.remove xdot_file; - raise (DotError "Error during dot execution") - -end diff --git a/jscomp/build_tests/ocamlgraph/dgraph/xDot.mli b/jscomp/build_tests/ocamlgraph/dgraph/xDot.mli deleted file mode 100755 index 67e3cf1907..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/xDot.mli +++ /dev/null @@ -1,147 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -(** Reads layout information from xdot ASTs *) - -open Graph - -(** Simple layout types *) - -(** 2D coordinates *) -type pos = float * float - -(** upper-left and bottom-right corners *) -type bounding_box = pos * pos - -(** - Layout informations are parsed from xdot files - (dot files with graphviz layout). - - Each node or edge layout thus contains several lists of - drawing operations. - - See http://www.graphviz.org/doc/info/output.html#d:xdot - to understand the details of the layout informations. - -*) - -(** Each node has at least a position and a bounding box. *) -type node_layout = { - n_name : string; (** Dot label *) - n_pos : pos; (** Center position *) - n_bbox : bounding_box; (** Bounding box *) - n_draw : XDotDraw.operation list; (** Shape drawing *) - n_ldraw : XDotDraw.operation list; (** Label drawing *) -} - - -type cluster_layout = { - c_pos : pos; - c_bbox : bounding_box; - c_draw : XDotDraw.operation list; - c_ldraw : XDotDraw.operation list; -} - -type edge_layout = { - e_draw : XDotDraw.operation list; (** Shapes and curves *) - e_ldraw : XDotDraw.operation list; (** Label drawing *) - e_hdraw : XDotDraw.operation list; (** Head arrowhead drawing *) - e_tdraw : XDotDraw.operation list; (** Tail arrowhead drawing *) - e_hldraw : XDotDraw.operation list; (** Head label drawing *) - e_tldraw : XDotDraw.operation list; (** Tail label drawing *) -} - -(** Creates a node layout *) -val mk_node_layout : - name:string -> - pos:pos -> - bbox:bounding_box -> - draw:XDotDraw.operation list -> - ldraw:XDotDraw.operation list -> - node_layout - -(** Creates a cluster layout *) -val mk_cluster_layout : - pos:pos -> - bbox:bounding_box -> - draw:XDotDraw.operation list -> - ldraw:XDotDraw.operation list -> - cluster_layout - -(** Creates an edge layout *) -val mk_edge_layout : - draw:XDotDraw.operation list -> - ldraw:XDotDraw.operation list -> - hdraw:XDotDraw.operation list -> - tdraw:XDotDraw.operation list -> - hldraw:XDotDraw.operation list -> - tldraw:XDotDraw.operation list -> - edge_layout - -(** Parsing and reading XDot *) - -exception ParseError of string - -(** Instantiates a module which creates graph layouts from xdot files *) -module Make(G : Graph.Graphviz.GraphWithDotAttrs) : sig - - module HV: Hashtbl.S with type key = G.V.t - module HE: Hashtbl.S with type key = G.E.t - - (** Main layout type *) - type graph_layout = - { vertex_layouts : node_layout HV.t; - edge_layouts : edge_layout HE.t; - cluster_layouts : (string, cluster_layout) Hashtbl.t; - bbox : bounding_box } - - exception DotError of string - - (** Extracts a layout of an xdot file *) - val layout_of_xdot: xdot_file:string -> G.t -> graph_layout - - (** Using the dot file and graphviz, - create an xdot and extracts its layout. *) - val layout_of_dot: ?cmd:string -> dot_file:string -> G.t -> graph_layout - -end - -(** Converts and reads various layout informations *) - -(** [bounding_box pos w h] converts a bounding box of center [pos], - width [w] and height [h] from a Dot file to a pair of corners - (lower left and upper right) in the world coordinate system. - @param pos position of the center of the node - @param w width of the node - @param h height of the node -*) -val bounding_box : (float * float) -> float -> float -> bounding_box - -val read_bounding_box : string -> bounding_box - -(** Reads xdot layouts from the dot ast *) -val read_node_layout : Dot_ast.node_id -> Dot_ast.attr list -> node_layout -val read_edge_layout : Dot_ast.attr list -> edge_layout -val read_cluster_layout : Dot_ast.attr list -> cluster_layout diff --git a/jscomp/build_tests/ocamlgraph/dgraph/xDotDraw.ml b/jscomp/build_tests/ocamlgraph/dgraph/xDotDraw.ml deleted file mode 100755 index 428064de27..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/xDotDraw.ml +++ /dev/null @@ -1,395 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -(* This module parses _draw_ attributes in XDot *) - -type pos = float * float -type width = float -type height = float -type size = int - -type align = Left | Center | Right - -type style_attr = - | Filled | Invisible | Diagonals | Rounded | Dashed | Dotted - | Solid | Bold | StyleString of string - -(* Drawing operations *) -type operation = - | Filled_ellipse of pos * width * height - | Unfilled_ellipse of pos * width * height - | Filled_polygon of pos array - | Unfilled_polygon of pos array - | Polyline of pos array - | Bspline of pos array - | Filled_bspline of pos array - | Text of pos * align * width * string - | Fill_color of string - | Pen_color of string - | Font of float * string - | Style of style_attr list - -(* Drawing state *) -type draw_state = { - mutable fill_color : string; - mutable pen_color : string; - mutable font : float * string; - mutable style : style_attr list -} - -let default_draw_state () = - { fill_color = "#FFFFFF"; - pen_color = "#000000"; - font = 0., ""; - style = [] } - -let set_fill_color st c = st.fill_color <- c -let set_pen_color st c = st.pen_color <- c -let set_font st c = st.font <- c -let set_style st s = st.style <- s - -(* STRING OPERATIONS *) - -let suffix s i = try String.sub s i ((String.length s)-i) - with Invalid_argument("String.sub") -> "" - -(** Splits a string with a separator - returns a list of strings *) -let split c s = - let rec split_from n = - try let p = String.index_from s n c - in (String.sub s n (p-n)) :: (split_from (p+1)) - with Not_found -> [ suffix s n ] - in if s="" then [] else split_from 0 ;; - - -let string_scale_size font size s = - let context = Gdk.Screen.get_pango_context () in - let font_description = Pango.Font.from_string font in - Pango.Font.modify font_description - ~size:(int_of_float (size *. (float Pango.scale))) - (); - Pango.Context.set_font_description context font_description; - let layout = Pango.Layout.create context in - Pango.Layout.set_text layout s; - let width, height = Pango.Layout.get_pixel_size layout in - let width = float width in - let linear_width = size*. (float (String.length s)) in - size*.width/.linear_width, - float height - - -(* HSV TO RGB CONVERSION *) - -(* If color string in hsv format, convert to hex *) -let normalize_color s = - try - let h,s,v = Scanf.sscanf s "%f %f %f"(fun a b c -> (a,b,c)) in - let h' = 360. *. h /. 60. in - let hi = truncate h' mod 6 in - let f = h' -. floor h' in - let p = v *. (1. -. s) in - let q = v *. (1. -. f*.s) in - let t = v *. (1. -. (1. -. f) *. s) in - let r,g,b = match hi with - | 0 -> v,t,p - | 1 -> q,v,p - | 2 -> p,v,t - | 3 -> p,q,v - | 4 -> t,p,v - | 5 -> v,p,q - | _ -> 1.,1.,1. in - let to_hex x = Printf.sprintf "%02X" (truncate (x *. 255.)) in - "#" ^ to_hex r ^ to_hex g ^ to_hex b - with Scanf.Scan_failure _ -> s - -(* PARSE STATE *) - -type state = { - mutable operations : operation list; - mutable cur : int; - str : string; -} - -exception ParseError of string -exception NoOperationId - -let mk_state s = { operations = []; cur = 0; str = s } - -let char state = state.str.[state.cur] - -let incr state = state.cur <- state.cur + 1 - -(* No more characters *) -let over state = state.cur >= String.length state.str - -let add_operation i state = - state.operations <- i :: state.operations - -(* GET TOKENS *) - -let get_n n st = - let s = String.sub st.str st.cur n in - st.cur <- st.cur + n; - s - -let is_space = function - | ' ' | '\t' | '\n' -> true - | _ -> false - -let is_token = function - | "E" | "e" | "P" | "p" | "L" | "B" | "b" | "T" | "C" | "c" | "F" - | "S" -> true - | _ -> false - -let skip_spaces state = - let rec loop () = - if not (over state) then - if is_space (char state) then begin - incr state; - loop () - end - in loop () - -(* Gets a word *) -let get_word state = - skip_spaces state; - let start = state.cur in - let rec get' () = - if over state then - if start = String.length state.str then - None - else - Some (String.sub state.str start (state.cur - start)) - else - if not (is_space (char state)) then begin - incr state; - get' () - end else - Some (String.sub state.str start (state.cur - start)) in - get' () - -(* Gets a rendering or attribute operation *) -let get_op_id state = - let tok = get_word state in - match tok with - | None -> - raise NoOperationId - | Some tok' -> - if is_token tok' then - tok' - else - raise NoOperationId - -let get_int state = - match get_word state with - | Some w -> begin - (*let w' = filter_int w in*) - try int_of_string w - with Failure "int_of_string" -> - raise (ParseError "Cannot parse int") - end - | None -> raise (ParseError "Cannot parse int") - -let get_float state = - match get_word state with - | Some w -> begin - try float_of_string w - with Failure "float_of_string" -> - raise (ParseError "Cannot parse float") - end - | None -> raise (ParseError "Cannot parse float") - -let get_pos state = - try - let x0 = get_float state in - let y0 = get_float state in - (x0, y0) - with ParseError _ -> raise (ParseError "Cannot parse point in position") - -(* PARSING *) - -let get_anchor state = - let i = get_int state in - match i with - | -1 -> Left - | 0 -> Center - | 1 -> Right - | _ -> raise (ParseError "Cannot parse anchor") - -let parse_bytes st = - skip_spaces st; - let n = get_int st in - skip_spaces st; - if char st <> '-' then - raise (ParseError "Cannot parse bytes") - else begin - incr st; - get_n n st - end - -let parse_ellipse constr state = - (* pos width height *) - let pos = get_pos state in - let w = get_float state in - let h = get_float state in - constr (pos, w, h) - -let invert_y_pos (x,y) = (x,-.y) - -let parse_filled_ellipse = - parse_ellipse (fun (p,w,h) -> Filled_ellipse (invert_y_pos p,w,h)) - -let parse_unfilled_ellipse = - parse_ellipse (fun (p,w,h) -> Unfilled_ellipse (invert_y_pos p,w,h)) - -let parse_points state = - let n = get_int state in - Array.init n (fun _ -> invert_y_pos (get_pos state)) - -let parse_filled_polygon state = - Filled_polygon (parse_points state) - -let parse_unfilled_polygon state = - Unfilled_polygon (parse_points state) - -let parse_polyline state = - Polyline (parse_points state) - -let parse_bspline state = - Bspline (parse_points state) - -let parse_filled_bspline state = - Filled_bspline (parse_points state) - -let parse_text state = - let pos = invert_y_pos (get_pos state) in - let anchor = get_anchor state in - let width = get_float state in - let str = parse_bytes state in - Text (pos, anchor, width, str) - -let parse_fill_color state = - Fill_color (normalize_color (parse_bytes state)) - -let parse_pen_color state = - Pen_color (normalize_color (parse_bytes state)) - -let parse_font state = - let size = get_float state in - let font = parse_bytes state in - Font (size, font) - -let parse_style state = - let read = function - | "filled" -> Filled - | "invisible" -> Invisible - | "diagonals" -> Diagonals - | "rounded" -> Rounded - | "dashed" -> Dashed - | "dotted" -> Dotted - | "solid" -> Solid - | "bold" -> Bold - | s -> StyleString s in - let str = parse_bytes state in - Style (List.map read (split ',' str)) - -let parse_operation state = - let operation () = match get_op_id state with - | "E" -> parse_filled_ellipse state - | "e" -> parse_unfilled_ellipse state - | "P" -> parse_filled_polygon state - | "p" -> parse_unfilled_polygon state - | "L" -> parse_polyline state - | "B" -> parse_bspline state - | "b" -> parse_filled_bspline state - | "T" -> parse_text state - | "C" -> parse_fill_color state - | "c" -> parse_pen_color state - | "F" -> parse_font state - | "S" -> parse_style state - | _ -> raise (ParseError "Cannot parse operation") in - try add_operation (operation ()) state - with NoOperationId -> () - -let parse_with_state state = - let rec loop () = - parse_operation state; - if over state then - state.operations - else loop () in - try List.rev (loop ()) - with NoOperationId -> List.rev state.operations - -(* Long drawing operation strings sometimes contain useless backslashes - We get rid of them to avoid problems with the parser *) -let remove_backslashes s = - let buf = Buffer.create 30 in - let rec loop i = - if i = String.length s then () - else - if s.[i] = '\\' && i < String.length s - 1 && s.[i+1] = '\n' then - loop (i+2) - else begin - Buffer.add_char buf s.[i]; - loop (i+1) - end in - loop 0; - Buffer.contents buf - -let parse s = - parse_with_state (mk_state (remove_backslashes s)) - -let draw_with (f : draw_state -> operation -> unit) operations = - let st = default_draw_state () in - let draw_op = function - (* The 4 following instructions modify the drawing state *) - | Fill_color c as op -> - set_fill_color st c; - f st op - | Pen_color c as op -> - set_pen_color st c; - f st op - | Font (sty,font) as op -> - set_font st (sty,font); - f st op - | Style stys as op -> - set_style st stys; - f st op - (* No state effects on the other operations *) - | op -> f st op - in List.iter draw_op operations - -(* let d1 = parse "c 5 -white C 5 -white P 4 0 0 0 409 228 409 228 0 " *) -(* let d2 = parse "S 6 -filled c 9 -lightgrey C 9 -lightgrey P 4 8 72 8 365 101 365 101 72 " *) -(* let d3 = parse "S 6 -filled c 5 -white C 5 -white E 65 314 27 18 " *) -(* let d4 = parse "F 14.000000 11 -Times-Roman c 5 -black T 39 109 0 35 4 -LR_0 " *) -(* let d5 = parse "S 6 -filled c 5 -white C 5 -white E 64 98 27 18 " *) -(* let d6 = parse "S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 69 270 65 260 62 270 " *) -(* let d7 = parse "S 6 -filled c 7 -salmon2 C 7 -salmon2 P 9 865 1177 877 1193 841 1200 760 1192 695 1178 700 1167 756 1161 810 1160 841 1165 " *) -(* let d8 = parse "F 14.000000 17 -Helvetica-Outline c 5 -black T 529 1005 0 65 9 -Mini Unix " *) -(* let d9 = parse "S 6 -filled c 11 -greenyellow C 11 -greenyellow P 10 1254 819 1263 834 1247 843 1197 841 1137 830 1110 817 1131 808 1177 805 121\ *) - (* 6 804 1238 809 " *) -(* let d10 = parse "S 6 -filled c 11 -greenyellow C 11 -greenyellow P 10 255 282 264 297 248 306 198 304 138 293 111 280 132 271 178 268 217 267 239\\\n 272 " *) diff --git a/jscomp/build_tests/ocamlgraph/dgraph/xDotDraw.mli b/jscomp/build_tests/ocamlgraph/dgraph/xDotDraw.mli deleted file mode 100755 index 3a8ee4fd2d..0000000000 --- a/jscomp/build_tests/ocamlgraph/dgraph/xDotDraw.mli +++ /dev/null @@ -1,103 +0,0 @@ -(**************************************************************************) -(* *) -(* This file is part of OcamlGraph. *) -(* *) -(* Copyright (C) 2009-2010 *) -(* CEA (Commissariat à l'Énergie Atomique) *) -(* *) -(* you can redistribute it and/or modify it under the terms of the GNU *) -(* Lesser General Public License as published by the Free Software *) -(* Foundation, version 2.1, with a linking exception. *) -(* *) -(* It is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *) -(* GNU Lesser General Public License for more details. *) -(* *) -(* See the file ../LICENSE for more details. *) -(* *) -(* Authors: *) -(* - Julien Signoles (Julien.Signoles@cea.fr) *) -(* - Jean-Denis Koeck (jdkoeck@gmail.com) *) -(* - Benoit Bataille (benoit.bataille@gmail.com) *) -(* *) -(**************************************************************************) - -(** Parses xdot drawing operations *) - -(** See {{:http://www.graphviz.org/doc/info/output.html#d:xdot}dot documentation} to understand the drawing operations *) - -(** {2 Types } *) - -(** Dot layout coordinates *) -type pos = float * float - -(** Dimensions *) -type width = float -type height = float -type size = int - -(** Text alignment *) -type align = Left | Center | Right - -(** Style attributes *) -type style_attr = - | Filled - | Invisible - | Diagonals - | Rounded - | Dashed - | Dotted - | Solid - | Bold - | StyleString of string - -(** Drawing operations *) -type operation = - | Filled_ellipse of pos * width * height - | Unfilled_ellipse of pos * width * height - | Filled_polygon of pos array - | Unfilled_polygon of pos array - | Polyline of pos array - | Bspline of pos array - | Filled_bspline of pos array - | Text of pos * align * width * string - | Fill_color of string - | Pen_color of string - | Font of float * string - | Style of style_attr list - - - -val string_scale_size: string -> float -> string -> width*height -(** [string_scale_size font font_size text]. - Interpolates the font metrics we have to use to draw the given [text] - with the given font but preserving the bounding box of the [text] even - with a proportional font. - For a fixed width font the result is [font_size*font_size]. *) - -(** {2 Parsing and drawing state } *) - -(** Parses an xdot drawing attribute *) - -val parse : string -> operation list - -(** Some drawing operations modify the following drawing state - (pen_color, font and style). -*) - -type draw_state = private { - mutable fill_color : string; - mutable pen_color : string; - mutable font : float * string; - mutable style : style_attr list; -} - -(** Iterates on the drawing operations - and updates the implicit drawing state *) -val draw_with : (draw_state -> operation -> unit) -> operation list -> unit - -(** {3 Miscellaneous} *) - -(** Reads the color string and converts to rgb if in an another format *) -val normalize_color : string -> string diff --git a/jscomp/build_tests/ocamlgraph/editor/dirTree.ml b/jscomp/build_tests/ocamlgraph/editor/dirTree.ml deleted file mode 100755 index df2fb2dca9..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/dirTree.ml +++ /dev/null @@ -1,72 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -open Unix ;; - -type t = { - id : int; - name : string ; - children : t list Lazy.t -} ;; -let id t = t.id - -let newid = let r = ref 0 in fun () -> incr r; !r - -type label = string ;; - -let children t = Lazy.force t.children ;; -let label t = t.name ;; -let string_of_label s = s ;; - -let is_dir path = - try (lstat path).st_kind = S_DIR - with Unix_error _ -> false ;; - -let less t1 t2 = t1.name <= t2.name ;; - -let rec tree_list_from_path path = - let opt_handle = - try Some(opendir path) - with Unix_error _ -> None in - match opt_handle with - | None -> [] - | Some handle -> - let list = Sort.list less (tree_list_from_handle path handle) in - closedir handle ; list - -and tree_list_from_handle path handle = - let opt_name = - try Some(readdir handle) - with End_of_file -> None in - match opt_name with - | None -> [] - | Some name -> - let path' = path ^ "/" ^ name in - if name <> "." && name <> ".." && is_dir path' then - { id = newid(); name = name ; children = lazy (tree_list_from_path path') } :: - tree_list_from_handle path handle - else - tree_list_from_handle path handle ;; - -let from_dir path name = - try - let path' = path ^ "/" ^ name in - if is_dir path' then - { id = newid(); name = name ; - children = lazy (tree_list_from_path path') } - else invalid_arg "DirTree.from_dir" - with _ -> failwith "DirTree.from_dir" ;; diff --git a/jscomp/build_tests/ocamlgraph/editor/dirTree.mli b/jscomp/build_tests/ocamlgraph/editor/dirTree.mli deleted file mode 100755 index 77f2362ff4..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/dirTree.mli +++ /dev/null @@ -1,27 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -type t -val id : t -> int - -type label - -val children : t -> t list ;; -val label : t -> label ;; -val string_of_label : label -> string ;; - -val from_dir : string -> string -> t ;; diff --git a/jscomp/build_tests/ocamlgraph/editor/ed_display.ml b/jscomp/build_tests/ocamlgraph/editor/ed_display.ml deleted file mode 100755 index 90807689b0..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/ed_display.ml +++ /dev/null @@ -1,414 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* This file is a contribution of Benjamin Vadon *) - -open Ed_hyper -open Ed_graph - -let debug = ref false - - -(* Original window size *) -let (w,h)= (600.,600.) - -(* light mode - (* differents definitions *) - let color_circle = "grey99" - - let color_intern_edge = "grey69" - let color_successor_edge = "black" (*"grey38"*) - let color_vertex = "grey75" - - let color_selected_intern_edge = "#9f1a1a" (* "#74885e"*) - let color_selected_successor_edge = "#9f1a1a" - let color_selected_vertex = "#9f1a1a" - - let color_focused_intern_edge = "#4d51a9" - let color_focused_successor_edge = "#4d51a9" - let color_focused_vertex = "#4d51a9" - - let color_selected_focused_intern_edge = "LightCoral" - let color_selected_focused_vertex ="LightCoral" - let color_selected_focused_successor_edge = "LightCoral" - - let color_text = "black" - - let width_successor_edge = 2 - let width_intern_edge = 2 - let point_size_text = 12.*) - -(* dark mode - (* differents definitions *) - let color_circle = "grey99" - - let color_intern_edge = "black" - let color_successor_edge ="black" - let color_vertex = "grey58" - - let color_selected_intern_edge = "OrangeRed4" - let color_selected_successor_edge = "OrangeRed4" - let color_selected_vertex = "OrangeRed4" - - let color_focused_intern_edge = "blue" - let color_focused_successor_edge = "blue" - let color_focused_vertex = "blue" - - let color_selected_focused_intern_edge = "dark magenta" - let color_selected_focused_vertex ="dark magenta" - let color_selected_focused_successor_edge = "dark magenta" - - let color_text = "white" - - let width_successor_edge = 2 - let width_intern_edge = 2 - let point_size_text = 12. -*) - - - -(* guizmode *) -(* differents definitions *) -let color_circle = "grey99" - -let color_intern_edge = "grey69" -let color_successor_edge = "black" (*"grey38"*) -let color_vertex = "grey75" - -let color_selected_intern_edge = "#9f1a1a" (* "#74885e"*) -let color_selected_successor_edge = "#9f1a1a" -let color_selected_vertex = "#9f1a1a" - -let color_focused_intern_edge = "#4d51a9" -let color_focused_successor_edge = "#4d51a9" -let color_focused_vertex = "#4d51a9" - -let color_selected_focused_intern_edge = "#e80000" -let color_selected_focused_vertex ="#e80000" -let color_selected_focused_successor_edge = "#e80000" - -let color_text = "black" - -let width_successor_edge = 2 -let width_intern_edge = 2 -let point_size_text = 12. - - -(* two tables for two types of edge : - successor_edges = edges with successor of root - intern_edges = edges between successors of root *) -let successor_edges = H2.create 97 -let intern_edges = H2.create 97 - - -(* table of all nodes *) -let nodes = H.create 97 - - - -(* GTK to hyperbolic coordinates *) -let to_turtle(x,y)= - let zx,zy as r = ((float x*.(2./.w) -. 1.),(1. -. float y *.(2./.h))) in - let zn = sqrt(zx*.zx +. zy*.zy) in - if zn > rlimit then - (rlimit*.zx/.zn, rlimit*.zy/.zn) - else - r - -(* Hyperbolic to GTK coordinates *) -let from_turtle (x,y) = - let xzoom = (w/.2.) - and yzoom = (h/.2.) in - (truncate (x*.xzoom +. xzoom), truncate(yzoom -. y*.yzoom)) - - -(* the middle of the screen used when init a graoh drawing *) -let start_point = to_turtle (truncate(w/.2.), truncate(h/.2.)) - -(* origine is a reference to the start point drawing for the graph in GTK coordinates *) -let origine = ref start_point - -(* Current point in Hyperbolic view with an initialization in center of hyperbolic circle *) -let current_point = ref (0,0) - -(* Change hyperbolic current point *) -let moveto_gtk x y = current_point := (x,y) - -(* Change hyperbolic current point with turtle coordinates *) -let tmoveto_gtk turtle = - let (x,y)= from_turtle turtle.pos in - moveto_gtk x y - -(* Create a turtle with origine's coordinates *) -let make_turtle_origine () = - let (x,y) = let (x,y) = !origine in (truncate x, truncate y) in - moveto_gtk x y; - make_turtle !origine 0.0 - -(* Append turtle coordinates to line, set current point and return the "new" line *) -let tlineto_gtk turtle line = - tmoveto_gtk turtle; - let (x,y) = !current_point in - List.append line [(float x); (float y) ] - - - -(* Set line points for a distance with a number of steps, - set current point to last line's point, by side-effect of tlineto_gtk, - and return the final turtle *) -let set_successor_edge turtle distance steps line = - let d = distance /. (float steps) in - let rec list_points turtle liste = function - | 0 -> (turtle,liste) - | n ->let turt = advance turtle d in - list_points turt (tlineto_gtk turt liste) (n-1) - in - let start = - let (x,y) = from_turtle turtle.pos in [(float x); (float y)] in - let _,lpoints = list_points turtle start steps in - let points = Array.of_list lpoints in - line#set [`POINTS points] - -type polaire = { radius : float; angle : float} -type cartesien = { x : float; y: float} - -let pol_to_cart p = - { - x = p.radius *. (cos p.angle); - y = p.radius *. (sin p.angle) - } - -let cart_to_pol p = - let radius = sqrt((p.x *. p.x) +.(p.y *. p.y)) in - { - radius = radius; - angle = 2. *. ath ((p.y /. radius) /. (1. +. p.x /. radius)) - } - - -(* Set Bpath between turtles tv and tw where line is a gtk widget *) -let set_intern_edge tv tw bpath line = - let (x,y) = let (x ,y ) = from_turtle tv.pos in ((float_of_int x),(float_of_int y)) in - let (x',y') = let (x',y') = from_turtle tw.pos in ((float_of_int x'),(float_of_int y')) in - let rate = 1.95 in - GnomeCanvas.PathDef.reset bpath; - GnomeCanvas.PathDef.moveto bpath x y ; - GnomeCanvas.PathDef.curveto bpath ((x+. x')/.rate) ((y +. y')/.rate) - ((x +.x')/.rate) ((y +. y')/.rate) - x' y'; - line#set [`BPATH bpath] - - - -(* Set ellipse coordinate to turtle's and set current point too *) -let tdraw_string_gtk v turtle = - let node,ellipse,texte = H.find nodes v in - tmoveto_gtk turtle; - let factor = (shrink_factor ((G.V.label v).turtle.pos)) in - let factor = if factor < 0.5 then 0.5 else factor in - let w = factor*. point_size_text in - texte#set [`SIZE_POINTS w ]; - let w = texte#text_width in - let h = texte#text_height in - ellipse#set [ `X1 (-.( w+.8.)/.2.); `X2 ((w+.8.)/.2.); - `Y1 (-.( h+.6.)/.2.); `Y2 ((h+.6.)/.2.)]; - let (x,y) = !current_point in - node#move ~x:(float x) ~y:(float y); - node#set [`X (float x); `Y (float y)]; - node - -let add_node canvas v = - let s = string_of_label v in - let node_group = GnoCanvas.group ~x:0.0 ~y:0.0 canvas in - let ellipse = GnoCanvas.ellipse - ~props:[ `FILL_COLOR color_vertex ; `OUTLINE_COLOR "black" ; - `WIDTH_PIXELS 0 ] node_group - in - let texte = GnoCanvas.text ~props:[`X 0.0; `Y 0.0 ; `TEXT s; - `FILL_COLOR color_text] node_group - in - node_group#hide(); - H.add nodes v (node_group,ellipse,texte) - -let init_nodes canvas = - H.clear nodes; - G.iter_vertex (add_node canvas) !graph - - - -(* change color for a vertex *) -let color_change_vertex item color n = - item#set [ `FILL_COLOR color ; `WIDTH_PIXELS n ] - -(* change color for a successor edge *) -let color_change_intern_edge (line:GnoCanvas.bpath) color = - line#set [`OUTLINE_COLOR color] - -(* change color for an intern edge *) -let color_change_successor_edge (line:GnoCanvas.line) color = - line#set [`FILL_COLOR color] - - - - - -(* draws but don't show intern edges, and return a couple bpath (gtk_object), and line (gtw_widget)*) -let draw_intern_edge vw edge tv tw canvas = - let bpath,line = - try - let _,_ as pl = H2.find intern_edges vw in - pl - with Not_found -> - let bpath = GnomeCanvas.PathDef.new_path () in - let line = GnoCanvas.bpath canvas - ~props:[ `BPATH bpath ; `WIDTH_PIXELS width_intern_edge ] - in - line#lower_to_bottom (); - H2.add intern_edges vw (bpath,line); - let v,w = vw in - if (is_selected w) || (is_selected v) - then edge.edge_mode <- Selected; - bpath,line - in - set_intern_edge tv tw bpath line; - bpath,line - - - - -let draw_successor_edge vw edge canvas = - let line = - try - H2.find successor_edges vw - with Not_found -> - let line = GnoCanvas.line canvas ~props:[ `FILL_COLOR color_successor_edge ; - `WIDTH_PIXELS width_successor_edge; `SMOOTH true] - in - line#lower_to_bottom (); - H2.add successor_edges vw line; - let v,w = vw in - if (is_selected w) || (is_selected v) - then edge.edge_mode <- Selected; - line - in - set_successor_edge edge.edge_turtle edge.edge_distance edge.edge_steps line; - line - - - - - - - -(* set origine to new mouse position and return associated turtle *) -let motion_turtle item ev = - let bounds = item#parent#get_bounds in - let z1 = to_turtle(truncate((bounds.(0)+. bounds.(2))/.2.), - truncate((bounds.(1)+. bounds.(3))/.2.)) in - let z2 = to_turtle (truncate (GdkEvent.Motion.x ev), - truncate (GdkEvent.Motion.y ev)) in - let (x,y) = drag_origin !origine z1 z2 in - origine := (x,y); - make_turtle !origine 0.0 - - -let hide_intern_edge vw = - try let _,line = H2.find intern_edges vw in line#hide () with Not_found -> () - -let hide_succesor_edge vw = - try let line = H2.find successor_edges vw in line#hide () with Not_found -> () - - - -(* graph drawing *) -let draw_graph _root canvas = - (* vertexes *) - G.iter_vertex - (fun v -> - let ( l : node_info) = G.V.label v in - if l.visible = Visible then - begin - let node = tdraw_string_gtk v l.turtle in - node#raise_to_top(); - node#show(); - let _,item,_=H.find nodes v in - match l.vertex_mode with - | Normal -> color_change_vertex item color_vertex 0; - | Selected -> color_change_vertex item color_selected_vertex 0; - | Focused -> color_change_vertex item color_focused_vertex 3; - | Selected_Focused -> color_change_vertex item color_selected_focused_vertex 3; - end - else - let node,_,_= H.find nodes v in - node#hide() - ) - !graph; - - (* edges *) - G.iter_edges_e - (fun e -> - let edge = G.E.label e in - let v = G.E.src e in - let w = G.E.dst e in - let vw = (v,w) in - if edge.visited - then - (* successor edge *) - begin - let line = draw_successor_edge vw edge canvas - in - begin - match edge.edge_mode with - | Normal -> color_change_successor_edge line color_successor_edge; - | Selected -> color_change_successor_edge line color_selected_successor_edge; - | Focused -> color_change_successor_edge line color_focused_successor_edge; - | Selected_Focused -> color_change_successor_edge line color_selected_focused_successor_edge; - end; - line#show (); - hide_intern_edge vw - end - else - (* intern edges *) - begin - hide_succesor_edge vw; - let labv = G.V.label v in - let labw = G.V.label w in - let turv = labv.turtle in - let turw = labw.turtle in - if labv.visible = Visible - && labw.visible = Visible - && v!=w - then begin - let _,line = draw_intern_edge vw edge turv turw canvas in - begin - match edge.edge_mode with - | Normal -> color_change_intern_edge line color_intern_edge; - | Selected -> color_change_intern_edge line color_selected_intern_edge; - | Focused -> color_change_intern_edge line color_focused_intern_edge; - | Selected_Focused -> color_change_intern_edge line color_selected_focused_intern_edge; - end; - line#show() - end else - hide_intern_edge vw - end) - !graph - - - - -let reset_display canvas = - init_nodes canvas diff --git a/jscomp/build_tests/ocamlgraph/editor/ed_draw.ml b/jscomp/build_tests/ocamlgraph/editor/ed_draw.ml deleted file mode 100755 index 5aadb5c2d0..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/ed_draw.ml +++ /dev/null @@ -1,156 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* This file is a contribution of Benjamin Vadon *) - -open Ed_hyper -open Ed_graph - -let make_subgraph l = - let gl = G.create () in - List.iter (fun v -> G.add_vertex gl v) l; - List.iter - (fun v -> - List.iter (fun w -> - if edge v w - then G.add_edge gl v w) - l) - l; - (* TODO: efficacite *) - gl - -let order_children l = - let gl = make_subgraph l in - let scc = Components.scc_list gl in - let order_component c = - let gc = make_subgraph c in - (* choose a vertex v of minimal out degree *) - let v = match c with - | v :: l -> - List.fold_left - (fun m v -> - if G.out_degree gc v < G.out_degree gc m - then v - else m) - v l - | [] -> - assert false - in - let l = ref [] in - Dfs.prefix_component (fun w -> l := w :: !l) gc v; - !l - in - let scc = List.map order_component scc in - List.flatten scc - - -(* Depth First Search drawing *) - -let rec draw_dfs depth node turtle = - let lab = G.V.label node in - lab.turtle <- turtle; - lab.depth <- depth; - if hspace_dist_sqr turtle <= rlimit_sqr then begin - lab.visible <- Visible; - let l = G.succ !graph node in - let l = List.filter (fun x -> (G.V.label x).visible = Hidden) l in - List.iter (fun w -> (G.V.label w).visible <- BorderNode) l; - let l = order_children l in - let n = List.length l in - if n > 0 then begin - let distance = step_from (if depth = 0 then max 3 n else 2 * max 3 n) - and angle = (if depth = 0 then 2. else 1.) *. pi /. (float_of_int n) in - let turtle = - if depth = 0 then turtle else turn_right turtle ((pi -. angle) /. 2.) - in - let _ = draw_edges_dfs node (depth+1) turtle distance angle l in - () - end - end - -and draw_edges_dfs node depth turtle distance angle = function - | [] -> - [] - | v :: l -> - let e = G.E.label (G.find_edge !graph node v) in - e.visited <- true; - e.edge_turtle <- turtle; - e.edge_distance <- distance; - let steps = 10 in - e.edge_steps <- steps; - let tv = advance_many turtle distance steps in - let turtle = turn_left turtle angle in - let l = (v,tv) :: draw_edges_dfs node depth turtle distance angle l in - draw_dfs depth v tv; - l - - - -(* Breadth First Search drawing *) - -let draw_bfs root turtle = - let q = Queue.create () in - let add v n t = - Queue.push v q; - let lab = G.V.label v in - lab.turtle <- t; - lab.depth <- n - in - add root 0 turtle; - while not (Queue.is_empty q) do - let v = Queue.pop q in - let lab = G.V.label v in - let depth = lab.depth in - let tv = lab.turtle in - let dist = hspace_dist_sqr tv in - (* Format.eprintf"le noeud : %s la val presente apres :%f \n@."lab.label dist;*) - if dist <= rlimit_sqr then begin - lab.visible <- Visible; - let l = try G.succ !graph v with Invalid_argument _ -> [] in - let l = List.filter (fun x -> (G.V.label x).visible = Hidden) l in - List.iter (fun w -> (G.V.label w).visible <- BorderNode) l; - let l = order_children l in - let n = List.length l in - if n > 0 then begin - let distance = step_from (if depth = 0 then max 3 n else 2 * max 3 n) - and angle = (if depth = 0 then 2. else 1.) *. pi /. (float_of_int n) in - let turtle = - ref (if depth = 0 then tv else turn_right tv ((pi -. angle) /. 2.)) - in - List.iter - (fun w -> - let e = G.E.label (G.find_edge !graph v w) in - e.visited <- true; - e.edge_turtle <- !turtle; - e.edge_distance <- distance; - let steps = 10 in - e.edge_steps <- steps; - let tw = advance_many !turtle distance steps in - add w (depth + 1) tw; - turtle := turn_left !turtle angle) - l - end - end - done - -(* Drawing graph function *) -let draw_graph root turtle = - G.iter_vertex (fun v -> let l = G.V.label v in l.visible <- Hidden) !graph; - G.iter_edges_e (fun e -> let l = G.E.label e in l.visited <- false) !graph; - (if !dfs then draw_dfs 0 else draw_bfs) root turtle - - diff --git a/jscomp/build_tests/ocamlgraph/editor/ed_graph.ml b/jscomp/build_tests/ocamlgraph/editor/ed_graph.ml deleted file mode 100755 index 2c38324eed..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/ed_graph.ml +++ /dev/null @@ -1,325 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* This file is a contribution of Benjamin Vadon *) - -open Graph -open Ed_hyper - -type visibility = Visible | BorderNode | Hidden - -type mode = Normal | Selected | Focused | Selected_Focused - -type node_info = - { - label : string; - mutable visible : visibility; - mutable depth : int; - mutable vertex_mode : mode; - mutable turtle : turtle; - } - -let make_node_info s = - { - label = s; - visible = Hidden; - depth = 0; - vertex_mode = Normal; - turtle = dummy_turtle - } - -type edge_info = - { - mutable visited : bool; - mutable edge_mode : mode; - mutable edge_turtle : turtle; - mutable edge_distance : float; - mutable edge_steps : int; - } - -let make_edge_info () = - { - visited = false; - edge_mode = Normal; - edge_turtle = dummy_turtle; - edge_distance = 0.; - edge_steps = 0; - } - -module EDGE = struct - type t = edge_info - let compare : t -> t -> int = Pervasives.compare - let default = make_edge_info () -end - -module G = - Imperative.Graph.AbstractLabeled(struct type t = node_info end)(EDGE) - -module B = Builder.I(G) - - - - -(* current graph *) -let graph = ref (G.create ()) - -type name = string option - -let graph_name = ref (None: name) - -(* useful functions for vertex and edge *) -let string_of_label x = (G.V.label x).label -let edge v w = G.mem_edge !graph v w || G.mem_edge !graph w v - - - - -(* two Parser modules *) -module GmlParser = - Gml.Parse - (B) - (struct - let node l = - make_node_info - (try - match List.assoc "id" l - with Gml.Int n -> string_of_int n | _ -> "" - with Not_found -> "") - let edge _ = make_edge_info () - end) - -module DotParser = - Dot.Parse - (B) - (struct - let node (id,_) _ = match id with - | Dot_ast.Ident s - | Dot_ast.Number s - | Dot_ast.String s - | Dot_ast.Html s -> make_node_info s - let edge _ = make_edge_info () - end) - - -(* a parsing file function *) -let parse_file f = - if Filename.check_suffix f ".gml" then - GmlParser.parse f - else - DotParser.parse f - - - -(* two Printer Modules *) -module GmlPrinter = - Gml.Print - (G) - (struct - let node (v: G.V.label) = ["label", Gml.Int (int_of_string v.label)] - let edge (_: G.E.label) = [] - end) - - -module DotPrinter = - Graphviz.Dot - ( struct - include G - let vertex_name vertex = string_of_label vertex - let graph_attributes _ = [] - let default_vertex_attributes _ = [] - let vertex_attributes _ = [] - let default_edge_attributes _ = [] - let edge_attributes _ = [] - let get_subgraph _ = None - end ) - - - - -(* two outputs functions, and a save graph function *) -let gml_output g f = - let c = open_out f in - let fmt = Format.formatter_of_out_channel c in - Format.fprintf fmt "%a@." GmlPrinter.print g; - close_out c - - -let dot_output g f = - let oc = open_out f in - DotPrinter.output_graph oc g; - close_out oc - -let save_graph name = - if Filename.check_suffix name "gml" - then ( gml_output !graph name; graph_name := Some name) - else if Filename.check_suffix name "dot" - then ( dot_output !graph name; graph_name := Some name) - else ( let name = name^".dot" in - dot_output !graph name; - graph_name := Some name ) - - -module Components = Components.Make(G) -module Dfs = Traverse.Dfs(G) - - - -exception Choose of G.V.t - -let choose_root () = - try - G.iter_vertex (fun v -> raise (Choose v)) !graph; - None - with Choose v -> - Some v - - -(* Parsing of the command line *) -let load_graph f = - graph := parse_file f; - graph_name := Some f - -let dfs = ref false - -let refresh_rate = ref 10 - -let aa = ref true - -let () = - Arg.parse - ["-dfs", Arg.Set dfs, "DFS drawing strategy"; - "-bfs", Arg.Clear dfs, "BFS drawing strategy"; - "-rr", Arg.Set_int refresh_rate, "set the refresh rate, must be greater than 0"; - "-aa", Arg.Clear aa, "turn off anti-aliased mode"; - ] - load_graph - "editor [options] " - - -(* successor edges *) - -module H2 = - Hashtbl.Make - (struct - type t = G.V.t * G.V.t - let hash (v,w) = Hashtbl.hash (G.V.hash v, G.V.hash w) - let equal (v1,w1) (v2,w2) = G.V.equal v1 v2 && G.V.equal w1 w2 - end) - - - -module H = Hashtbl.Make(G.V) - - -(* vertex select and unselect *) - -(* a counter for selected vertices *) -let nb_selected = ref 0 - -(* a belonging test to selection *) -let is_selected (x:G.V.t) = - let mode =(G.V.label x).vertex_mode in - mode = Selected || - mode = Selected_Focused - -type mode_select_list = - REMOVE_FROM of G.V.t - | ADD_FROM of G.V.t - | NONE - - -let selected_list mode = - let vertex_selection =ref [] in - G.iter_vertex (fun v -> - if (is_selected v) - && (match mode with - | ADD_FROM vertex -> not (edge v vertex) - | REMOVE_FROM vertex -> (edge v vertex) - | NONE -> true) - then vertex_selection := v::(!vertex_selection)) !graph; - let compare s1 s2 = String.compare (string_of_label s1) (string_of_label s2) in - List.sort compare !vertex_selection - - - - -type ed_event = Select | Unselect | Focus | Unfocus - -let update_vertex vertex event = - let vertex_info = G.V.label vertex in - begin - match vertex_info.vertex_mode, event with - | Normal, Select -> vertex_info.vertex_mode <- Selected; incr nb_selected - | Normal, Focus -> vertex_info.vertex_mode <- Focused - | Normal, _ -> () - | Selected, Focus -> vertex_info.vertex_mode <- Selected_Focused - | Selected, Unselect -> vertex_info.vertex_mode <- Normal; decr nb_selected - | Selected, _ -> () - | Focused, Select -> vertex_info.vertex_mode <- Selected_Focused; incr nb_selected - | Focused, Unfocus -> vertex_info.vertex_mode <- Normal - | Focused, _ -> () - | Selected_Focused, Unselect -> vertex_info.vertex_mode <- Focused; decr nb_selected - | Selected_Focused, Unfocus -> vertex_info.vertex_mode <- Selected - | Selected_Focused, _ -> () - end; - G.iter_succ_e - ( fun edge -> - let edge_info = G.E.label edge in - let dest_vertex = G.E.dst edge in - begin match edge_info.edge_mode, event with - | Normal, Select -> edge_info.edge_mode <- Selected - | Normal, Focus -> edge_info.edge_mode <- Focused - | Normal, _ -> () - | Selected, Focus -> edge_info.edge_mode <- Selected_Focused - | Selected, Unselect -> if not(is_selected dest_vertex) then edge_info.edge_mode <- Normal - | Selected, _ -> () - | Focused, Select -> edge_info.edge_mode <- Selected_Focused - | Focused, Unfocus -> edge_info.edge_mode <- Normal - | Focused, _ -> () - | Selected_Focused, Unselect -> if not(is_selected dest_vertex) then edge_info.edge_mode <- Focused; decr nb_selected - | Selected_Focused, Unfocus -> edge_info.edge_mode <- Selected - | Selected_Focused, _ -> () - end; - ) !graph vertex - - - -(* to select and unselect all vertices *) - -let select_all () = - G.iter_vertex (fun v -> - if not(is_selected v) - then begin - let v = G.V.label v in - v.vertex_mode <- Selected; - incr nb_selected - end - ) !graph; - G.iter_edges_e (fun e -> let e = G.E.label e in e.edge_mode <- Selected) !graph - - -let unselect_all () = - G.iter_vertex (fun v -> - if (is_selected v) - then begin - let l = G.V.label v in - l.vertex_mode <- Normal; - decr nb_selected - end - ) !graph; - G.iter_edges_e (fun e -> let e = G.E.label e in e.edge_mode <- Normal) !graph - diff --git a/jscomp/build_tests/ocamlgraph/editor/ed_hyper.ml b/jscomp/build_tests/ocamlgraph/editor/ed_hyper.ml deleted file mode 100755 index 87f6d4a7a2..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/ed_hyper.ml +++ /dev/null @@ -1,217 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* This code is from Alexandre Miquel's Htree - (http://www.pps.jussieu.fr/~miquel/soft.html) *) - -(*** Complex numbers *) - -let ( ~-& ) (x, y) = (-.x, -.y) -let ( ~& ) (x, y) = (x, -.y) - -let ( +& ) (x1, y1) (x2, y2) = - (x1 +. x2, y1 +. y2) - -let ( -& ) (x1, y1) (x2, y2) = - (x1 +. x2, y1 +. y2) - -let ( *& ) (x1, y1) (x2, y2) = - (x1*.x2 -. y1*.y2, x1*.y2 +. y1*.x2) - -let ( /& ) (x1, y1) (x2, y2) = - let n2 = x2*.x2 +. y2*.y2 in - ((x1*.x2 +. y1*.y2)/.n2, (-.x1*.y2 +. y1*.x2)/.n2) - -let ( *.& ) f (x, y) = - (f*.x, f*.y) - -let norm_sqr (x, y) = - x*.x +. y*.y - -let norm (x, y) = - sqrt(x*.x +. y*.y) - -let normalize (x, y) = - let n = sqrt(x*.x +. y*.y) in - (x/.n, y/.n) - -let expi t = - (cos t, sin t) - -(*** Hyperbolic geometry ***) - -let th t = - let ept = exp t - and emt = exp (-.t) in - (ept -. emt)/.(ept +. emt) - -let ath x = - 0.5*.log((1.0 +. x)/.(1.0 -. x)) - -let pi = 3.14159265358979323846 -let pi_over_2 = pi/.2.0 -let pi_over_4 = pi/.4.0 - -let one = (1.0, 0.0) - -let translate a z = - (a +& z)/&(one +& (~&a) *& z) - -let gamma a u t = - let utht = th t *.& u in - (a +& utht) /& (one +& (~&a) *& utht) - -let delta a u t = - let atht = th t *.& a - and utht = th t *.& u in - (u +& atht) /& (one +& (~&a) *& utht) - -(* solving a Cramer system *) -let cramer a1 a2 b1 b2 c1 c2 = - let cdet = a1*.b2 -. a2*.b1 - and xdet = c1*.b2 -. c2*.b1 - and ydet = a1*.c2 -. a2*.c1 in - (xdet/.cdet, ydet/.cdet) ;; - -let drag_origin (x0, y0) (x1, y1) (x2, y2) = - let (x1, y1) = translate (-.x0, -.y0) (x1, y1) in - let x3 = x1*.x2 -. y1*.y2 in - let y3 = x1*.y2 +. y1*.x2 in - cramer (1.0 -. x3) (-.y3) (-.y3) (1.0 +. x3) (x2 -. x1) (y2 -. y1) - -let shrink_factor (x, y) = - 1.0 -. (x*.x +. y*.y) - - - - -(*** Hyperbolic turtle ***) - -type coord = float * float - -type turtle = - { - pos : coord ; (* with |pos| < 1 *) - dir : coord (* with |dir| = 1 *) - } - -let make_turtle pos angle = - { - pos = pos ; - dir = expi angle - } - -let make_turtle_dir pos dir = - { - pos = pos ; - dir = dir - } - - -let dist tdep tdest = - let a = tdep.pos in - let b = tdest.pos in - ath (norm ( (a -& b) /& (one -& (~&a) *& b))) - -let dir_to tdep tdest t = - let a = tdep.pos in - let d = tdest.pos in - ((d -& a) /& (th t *.&( one -& (~&a) *& d))) - - - -(* return a turtle for a distance from original *) -let advance turtle step = - { pos = gamma turtle.pos turtle.dir step ; - dir = delta turtle.pos turtle.dir step } - -(* return a turtle for a distance d from original with steps *) -let advance_many turtle d steps = - let d = d /. (float steps) in - let rec adv t = function - | 0 -> t - | n -> adv (advance t d) (n-1) - in - adv turtle steps - -(* return a list of turtle along distance d from original turtle with steps *) -let list_advance_many turtle d steps = - let d = d /. (float steps) in - let rec adv t = function - | 0 -> [] - | n -> t :: adv (advance t d) (n-1) - in - adv turtle steps - -let turn turtle u = - { turtle with dir = turtle.dir *& u } - -let turn_left turtle angle = - turn turtle (expi angle) (*** a comprendre pourquoi je dois inverser + et - de l'angle ***) - -let turn_right turtle angle = - turn turtle (expi (-.angle)) (*** a comprendre pourquoi je dois inverser + et - de l'angle ***) - -let dummy_turtle = { pos = (0., 0.); dir = (0., 0.) } - - - - -(* [step_from n] computes the best `distance' for solving the - dictator's problem in the complex hyperbolic plane for [n] - dictators. In a half-plane, we have to use the distance - given by [step_from (2*n)] or, better, the distance given - by [step_from (2*max(3 n))]. *) -let step_from n = - ath (tan (pi_over_4 -. pi/.float(2*n))) - - -(* [hspace_dist_sqr turtle] computes the square of the distance - between the origin and the half-space in front of [turtle]. *) -let hspace_dist_sqr turtle = - let (ax, ay) = turtle.pos - and (dx, dy) = turtle.dir in - if ax*.dx +. ay*.dy < 0.0 - then begin - 0.0 - end else begin - let ux = dy and uy = -.dx in - let alpha = ax*.ax +. ay*.ay - and beta = 2.0*.(ax*.ux +. ay*.uy) in - if beta = 0.0 then - alpha - else - begin - let gamma = (1.0 +. alpha)/.beta in - let delta = gamma*.gamma -. 1.0 in - let sol = - if beta > 0.0 - then -.gamma +. sqrt(delta) - else -.gamma -. sqrt(delta) in - let (zx, zy) = translate (ax, ay) (ux*.sol, uy*.sol) in - let res = zx*.zx +. zy*.zy in - res - end - end - - - -(* Limit of visibility for nodes *) -let rlimit = 0.98 -let rlimit_sqr = rlimit *. rlimit - - diff --git a/jscomp/build_tests/ocamlgraph/editor/ed_icon.xpm b/jscomp/build_tests/ocamlgraph/editor/ed_icon.xpm deleted file mode 100755 index de82b0bbce..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/ed_icon.xpm +++ /dev/null @@ -1,1149 +0,0 @@ -/* XPM */ -static char * ed_icon_xpm[] = { -"128 128 1018 2", -" c None", -". c #CDCAC4", -"+ c #B4B1AD", -"@ c #9E9C98", -"# c #94928E", -"$ c #908E8B", -"% c #8E8C89", -"& c #8C8A87", -"* c #8B8986", -"= c #CFCBC6", -"- c #A3A09C", -"; c #8B8987", -"> c #8B8A88", -", c #8D8C8B", -"' c #9A9A9A", -") c #B2B2B2", -"! c #CCCCCC", -"~ c #E4E4E4", -"{ c #F0F0F0", -"] c #F4F4F4", -"^ c #F8F8F8", -"/ c #FAFAFA", -"( c #FCFCFC", -"_ c #D1CDC8", -": c #969390", -"< c #888785", -"[ c #90908F", -"} c #B0AFAF", -"| c #DEDEDE", -"1 c #F9F9F9", -"2 c #C2BFBA", -"3 c #8A8A89", -"4 c #AAAAAA", -"5 c #EBEBEB", -"6 c #D4D1CB", -"7 c #918F8C", -"8 c #8A8988", -"9 c #B8B8B8", -"0 c #F5F5F5", -"a c #B7B4AF", -"b c #848280", -"c c #A3A3A2", -"d c #ECECEC", -"e c #A5A29E", -"f c #848382", -"g c #C2C2C2", -"h c #FBFBFB", -"i c #A7A4A0", -"j c #858483", -"k c #D1D1D1", -"l c #B9B6B1", -"m c #82817F", -"n c #CECECE", -"o c #D7D3CE", -"p c #817F7D", -"q c #B9B9B9", -"r c #9B9995", -"s c #959494", -"t c #F6F6F6", -"u c #D0CCC7", -"v c #7F7E7C", -"w c #D5D5D5", -"x c #989797", -"y c #F7F7F7", -"z c #C5C5C5", -"A c #D2CFCA", -"B c #7E7D7B", -"C c #E8E8E8", -"D c #BDBAB5", -"E c #8C8C8B", -"F c #ABA8A4", -"G c #A0A09F", -"H c #9F9C99", -"I c #9A9794", -"J c #BBBBBB", -"K c #EFEFEF", -"L c #C9C9C9", -"M c #E0E0E0", -"N c #BFBFBF", -"O c #C4C4C4", -"P c #A6A6A6", -"Q c #ADADAD", -"R c #9F9D99", -"S c #BCBCBC", -"T c #DDDDDD", -"U c #D8D8D8", -"V c #ABAAAA", -"W c #A5A5A5", -"X c #A0A1A6", -"Y c #CCCDE4", -"Z c #F3F3F3", -"` c #DCDCDC", -" . c #DBDBDB", -".. c #D6D3D3", -"+. c #BD8383", -"@. c #807F7F", -"#. c #B9B9BA", -"$. c #BEBFD3", -"%. c #A9ABD5", -"&. c #DADAEC", -"*. c #BEBAB6", -"=. c #A0A0A0", -"-. c #E6E6E6", -";. c #D9D9D9", -">. c #D39A9A", -",. c #D8CACA", -"'. c #717171", -"). c #E8E8E9", -"!. c #CACBE4", -"~. c #ABADD5", -"{. c #E4E5F1", -"]. c #D3CFCA", -"^. c #8B8B8A", -"/. c #E2E2E2", -"(. c #F2F2F2", -"_. c #E5E5E5", -":. c #E0B8B8", -"<. c #E6C7C7", -"[. c #C0C0C0", -"}. c #8C8C8C", -"|. c #F9F9FB", -"1. c #BFC1DF", -"2. c #AEB0D7", -"3. c #ECEDF5", -"4. c #BEBEBE", -"5. c #AEAEAE", -"6. c #C1C1C1", -"7. c #DFDFDF", -"8. c #EEDADA", -"9. c #D8A5A5", -"0. c #949494", -"a. c #DADADA", -"b. c #F5F5F9", -"c. c #B7B9DB", -"d. c #B5B6DA", -"e. c #F3F3F8", -"f. c #B7B7B7", -"g. c #7E7E7E", -"h. c #9FA0A9", -"i. c #9D9FC4", -"j. c #B9BBD7", -"k. c #DDDDEB", -"l. c #F5F6F9", -"m. c #E1E1E1", -"n. c #F8F2F2", -"o. c #CF8F8F", -"p. c #FBFAFA", -"q. c #888888", -"r. c #E3E3E3", -"s. c #EFEFF6", -"t. c #B0B2D8", -"u. c #BEC0DF", -"v. c #F8F8FA", -"w. c #A4A19D", -"x. c #B9B0B0", -"y. c #ABA5A5", -"z. c #DADAE4", -"A. c #CCCDE5", -"B. c #B6B8DB", -"C. c #B1B2D8", -"D. c #D6D6EA", -"E. c #F4F4F8", -"F. c #D7D7D7", -"G. c #FCFBFB", -"H. c #D19292", -"I. c #F6EEEE", -"J. c #8F8F8F", -"K. c #D6D6D6", -"L. c #E5E5F1", -"M. c #ABADD6", -"N. c #CBCCE5", -"O. c #979696", -"P. c #C89292", -"Q. c #D5D0D0", -"R. c #8E8E8E", -"S. c #ABABAB", -"T. c #D7D8EA", -"U. c #B8BADC", -"V. c #E8E9F3", -"W. c #DBADAD", -"X. c #EBD2D2", -"Y. c #919191", -"Z. c #D8D9EB", -"`. c #DCDCED", -" + c #F1F1F1", -".+ c #DFDEDE", -"++ c #D39898", -"@+ c #787878", -"#+ c #F6F6F9", -"$+ c #E2E2EF", -"%+ c #C4C5E1", -"&+ c #A3A5CA", -"*+ c #A0A1C8", -"=+ c #ABADD2", -"-+ c #C2C4E1", -";+ c #DFE0EE", -">+ c #E9CFCF", -",+ c #DDB0B0", -"'+ c #E7E7E7", -")+ c #9E9E9E", -"!+ c #FAFAFB", -"~+ c #C7C8E3", -"{+ c #EDEEF5", -"]+ c #9A9894", -"^+ c #F1E2E2", -"/+ c #B3B3B3", -"(+ c #A2A2A2", -"_+ c #EAEAF3", -":+ c #CECFE6", -"<+ c #ABA5CB", -"[+ c #98769C", -"}+ c #D0D1E7", -"|+ c #EEEEF5", -"1+ c #EEEEEE", -"2+ c #E9E9E9", -"3+ c #B4B6DA", -"4+ c #BCBEDE", -"5+ c #D8A6A6", -"6+ c #F6EDED", -"7+ c #878787", -"8+ c #EDEDED", -"9+ c #FBF9F9", -"0+ c #CE8D8D", -"a+ c #F9F5F5", -"b+ c #F7F7FA", -"c+ c #DDDDED", -"d+ c #BDBFDD", -"e+ c #9FA1C6", -"f+ c #6D6E86", -"g+ c #A8AACD", -"h+ c #B5B6D6", -"i+ c #C8C9DB", -"j+ c #F1F1F7", -"k+ c #A9AAD4", -"l+ c #EAEAEA", -"m+ c #D39797", -"n+ c #D2D2D2", -"o+ c #A4A4A4", -"p+ c #D7A1A1", -"q+ c #EFDDDD", -"r+ c #E9E9EF", -"s+ c #C1C2D5", -"t+ c #BCBDDE", -"u+ c #AFB0D6", -"v+ c #A2A3C8", -"w+ c #C0C1DF", -"x+ c #EEEFF6", -"y+ c #FBFBFC", -"z+ c #EFF0F6", -"A+ c #B8B5B1", -"B+ c #F4E8E8", -"C+ c #DBABAB", -"D+ c #909090", -"E+ c #E4C1C1", -"F+ c #E2BDBD", -"G+ c #DADADB", -"H+ c #EAEAF2", -"I+ c #D5D6E9", -"J+ c #B2B4D9", -"K+ c #A7A9C6", -"L+ c #C7C8DA", -"M+ c #D1D2E8", -"N+ c #EBECF4", -"O+ c #B1B3D9", -"P+ c #C4C6E2", -"Q+ c #FAFBFB", -"R+ c #DCAFAF", -"S+ c #F2E4E4", -"T+ c #929292", -"U+ c #F1E1E1", -"V+ c #D59D9D", -"W+ c #A3A3A3", -"X+ c #D8D8DA", -"Y+ c #D0D1E1", -"Z+ c #C1C3E0", -"`+ c #B1B3D8", -" @ c #B4B5DA", -".@ c #C6C7E2", -"+@ c #E1E1EF", -"@@ c #F7F8FA", -"#@ c #DCDDED", -"$@ c #A8AAD4", -"%@ c #D7D7E4", -"&@ c #6B6B6D", -"*@ c #676769", -"=@ c #D3D3D3", -"-@ c #F9F4F4", -";@ c #C7C7C7", -">@ c #E7E7F2", -",@ c #B5B7DA", -"'@ c #4E4F6D", -")@ c #363977", -"!@ c #32356E", -"~@ c #7F7F80", -"{@ c #E2E1E1", -"]@ c #C29E9E", -"^@ c #EFE4E4", -"/@ c #A7A7A7", -"(@ c #E0E0EF", -"_@ c #BFC0DF", -":@ c #ADAFD6", -"<@ c #55485D", -"[@ c #3C3F83", -"}@ c #363876", -"|@ c #757576", -"1@ c #DEB4B4", -"2@ c #F0DFDF", -"3@ c #CBCBCB", -"4@ c #A8A8A8", -"5@ c #DEB2B2", -"6@ c #E4C8C8", -"7@ c #959595", -"8@ c #C7C9E3", -"9@ c #ECE2EA", -"0@ c #EE888A", -"a@ c #7D4879", -"b@ c #303145", -"c@ c #272840", -"d@ c #D4D5D9", -"e@ c #EBD3D3", -"f@ c #DBACAC", -"g@ c #F2F2F7", -"h@ c #D3D4E9", -"i@ c #B7B9DC", -"j@ c #ADAFD3", -"k@ c #AEAFC4", -"l@ c #FBFCFC", -"m@ c #F7B9B9", -"n@ c #E67C82", -"o@ c #8E82B9", -"p@ c #D69F9F", -"q@ c #EDEDF0", -"r@ c #C8C9D8", -"s@ c #BABCDD", -"t@ c #D9D9EB", -"u@ c #FAE7E7", -"v@ c #F38888", -"w@ c #DDA6B3", -"x@ c #A4A6D2", -"y@ c #A0A2D0", -"z@ c #F0F1F6", -"A@ c #848381", -"B@ c #E0B9B9", -"C@ c #FBF8F8", -"D@ c #CF8E8E", -"E@ c #F8F3F3", -"F@ c #CACACA", -"G@ c #F9FAFB", -"H@ c #C3C5E1", -"I@ c #B5B6CD", -"J@ c #E4E3E3", -"K@ c #F6ACAC", -"L@ c #F49292", -"M@ c #CCC3DB", -"N@ c #ECECF4", -"O@ c #F0F0F6", -"P@ c #CC9999", -"Q@ c #D49D9D", -"R@ c #A7A7A8", -"S@ c #E5E6F1", -"T@ c #B3B4D9", -"U@ c #9E9FC6", -"V@ c #E9E9F3", -"W@ c #FADDDD", -"X@ c #DC9393", -"Y@ c #E6BFC0", -"Z@ c #CDCEE6", -"`@ c #D2D3E8", -" # c #AFB0D7", -".# c #B3B5D9", -"+# c #D7D4D4", -"@# c #CFB1B1", -"## c #B5B5B5", -"$# c #C8C8C8", -"%# c #DCB5B5", -"&# c #CEACAC", -"*# c #C7C7D6", -"=# c #BEC0DD", -"-# c #757690", -";# c #ACADC2", -"># c #BBBCCA", -",# c #D8D8E3", -"'# c #FCF7F7", -")# c #F5A0A0", -"!# c #F49C9C", -"~# c #EFEBF1", -"{# c #9597C2", -"]# c #DBDBE7", -"^# c #B6B7DB", -"/# c #888786", -"(# c #E1BEBE", -"_# c #858585", -":# c #D8A4A4", -"<# c #B4B5CD", -"[# c #EBEBF4", -"}# c #939393", -"|# c #F9D1D1", -"1# c #F28383", -"2# c #F9D9D9", -"3# c #AAACD5", -"4# c #D7D7D8", -"5# c #ABACD2", -"6# c #F9F9FA", -"7# c #C3C4E1", -"8# c #E7E8F2", -"9# c #F1F2F7", -"0# c #A8A5AA", -"a# c #AC768A", -"b# c #B7B8DA", -"c# c #A6A7CD", -"d# c #A4A6CA", -"e# c #C0C2E0", -"f# c #CDCDCD", -"g# c #FBF4F4", -"h# c #F5A8A8", -"i# c #FCFAFA", -"j# c #C8CAE4", -"k# c #BABBDD", -"l# c #B3B5D8", -"m# c #D2D3D5", -"n# c #AFB1D7", -"o# c #E2E3F0", -"p# c #C8C9E3", -"q# c #A6A8CA", -"r# c #ADAFD5", -"s# c #B0B0D5", -"t# c #563B4B", -"u# c #D3D3E4", -"v# c #F7BFBF", -"w# c #F38585", -"x# c #E3BFBF", -"y# c #EAEBF4", -"z# c #B2B4D3", -"A# c #A9ABD1", -"B# c #B8B9DC", -"C# c #CACCE4", -"D# c #F0F0F4", -"E# c #DEDEDF", -"F# c #D6A1A1", -"G# c #CEBBBB", -"H# c #A1A1A1", -"I# c #9D9D9D", -"J# c #FBEAEA", -"K# c #E87E7E", -"L# c #EEB0B0", -"M# c #DEDFEE", -"N# c #E6E7F2", -"O# c #BFC0D1", -"P# c #C1C2E0", -"Q# c #EDEDF5", -"R# c #BBBCDD", -"S# c #D8D8EB", -"T# c #A582A1", -"U# c #B0B0D6", -"V# c #DBDCEC", -"W# c #DFDFE6", -"X# c #E0BABA", -"Y# c #E4C2C2", -"Z# c #C6C6C6", -"`# c #DAD9D9", -" $ c #F0B2B2", -".$ c #F38F8F", -"+$ c #F9EEEE", -"@$ c #A6A8D3", -"#$ c #E9EAF3", -"$$ c #BBBCD0", -"%$ c #E1E2EF", -"&$ c #BABABA", -"*$ c #E7E7EE", -"=$ c #DADBEC", -"-$ c #C2C3E0", -";$ c #B5B7DB", -">$ c #B2B3D9", -",$ c #D3D1E4", -"'$ c #CA979F", -")$ c #DFC8C8", -"!$ c #D2A0A0", -"~$ c #FADEDE", -"{$ c #F08787", -"]$ c #DCCFCF", -"^$ c #CDCDD8", -"/$ c #D9DAEC", -"($ c #D4D5E9", -"_$ c #E3E4F0", -":$ c #9F9F9F", -"<$ c #898AA8", -"[$ c #ADAFD4", -"}$ c #BEBFDE", -"|$ c #D3D3E8", -"1$ c #E2BCBC", -"2$ c #ECD6D6", -"3$ c #D19494", -"4$ c #F49B9B", -"5$ c #FCF6F6", -"6$ c #B9B9CD", -"7$ c #E2E2E4", -"8$ c #C9CAE4", -"9$ c #ACAED6", -"0$ c #A9A9A9", -"a$ c #7A7A7A", -"b$ c #747474", -"c$ c #8A8A8A", -"d$ c #F8CDCD", -"e$ c #F28484", -"f$ c #BDBEDE", -"g$ c #C9CBE4", -"h$ c #DFDFEE", -"i$ c #AFAFAF", -"j$ c #D4BABA", -"k$ c #BDABAB", -"l$ c #D4D4D4", -"m$ c #898989", -"n$ c #DEDCDC", -"o$ c #D0A6A6", -"p$ c #D19393", -"q$ c #F4E9E9", -"r$ c #E1D6D6", -"s$ c #F18C8C", -"t$ c #F6ADAD", -"u$ c #ABADD3", -"v$ c #DADADD", -"w$ c #E7C9C9", -"x$ c #D4B9B9", -"y$ c #8B8B8B", -"z$ c #979797", -"A$ c #DBB3B3", -"B$ c #E2D7D7", -"C$ c #D7A2A2", -"D$ c #EDD8D8", -"E$ c #BDBDBD", -"F$ c #F6B4B4", -"G$ c #E37B7B", -"H$ c #F7E7E7", -"I$ c #A7A9D3", -"J$ c #E8E8F2", -"K$ c #B1B2D6", -"L$ c #D7D7DA", -"M$ c #BABCD4", -"N$ c #EAD0D0", -"O$ c #E4C5C5", -"P$ c #734F4F", -"Q$ c #989898", -"R$ c #F38484", -"S$ c #F8C6C6", -"T$ c #B2B3CE", -"U$ c #AFB0C6", -"V$ c #D6D7EA", -"W$ c #E3C0C0", -"X$ c #F3E6E6", -"Y$ c #DAAAAA", -"Z$ c #ACACAC", -"`$ c #CDB5B5", -" % c #CCB6B6", -".% c #7B7B7B", -"+% c #F49797", -"@% c #F59D9D", -"#% c #A9ABCD", -"$% c #B3B5DA", -"%% c #8D8D8C", -"&% c #C18F8F", -"*% c #E6DCDC", -"=% c #D59C9C", -"-% c #848484", -";% c #DEA4A4", -">% c #F28585", -",% c #FAE4E4", -"'% c #A7A9D4", -")% c #E0E0E1", -"!% c #B0B1C7", -"~% c #AFB1D8", -"{% c #F3E5E5", -"]% c #DEB3B3", -"^% c #D29696", -"/% c #C3BABA", -"(% c #CF9191", -"_% c #F9DFDF", -":% c #8B5050", -"<% c #EEB5B5", -"[% c #E4E4E6", -"}% c #A9ABD0", -"|% c #C7C8E1", -"1% c #E4DFDF", -"2% c #835757", -"3% c #8A8787", -"4% c #9B9B9B", -"5% c #797979", -"6% c #DBD9D9", -"7% c #DFB6B6", -"8% c #D57F7F", -"9% c #A2A1A1", -"0% c #9EA0CA", -"a% c #DEDEEA", -"b% c #D7D8EB", -"c% c #F6ECEC", -"d% c #D49A9A", -"e% c #FAF7F7", -"f% c #FAF8F8", -"g% c #CC8B8B", -"h% c #DED5D5", -"i% c #F3E2E2", -"j% c #E3E3EC", -"k% c #A5A7D3", -"l% c #DEDEE4", -"m% c #DDDEED", -"n% c #F7F0F0", -"o% c #DAA8A8", -"p% c #E6E2E2", -"q% c #CC9494", -"r% c #F5F4F4", -"s% c #EEDFDF", -"t% c #E4BDBD", -"u% c #A05959", -"v% c #D2A5A5", -"w% c #BBBCCD", -"x% c #A0A2C9", -"y% c #BBBDDD", -"z% c #ADAFC6", -"A% c #D4C2C2", -"B% c #C38E8E", -"C% c #D4BDBD", -"D% c #E67F7F", -"E% c #F5ABAB", -"F% c #F9F6F6", -"G% c #D6D6D7", -"H% c #ACADC5", -"I% c #D4D4D8", -"J% c #BCBEDB", -"K% c #D5D5D8", -"L% c #D8A3A3", -"M% c #D29595", -"N% c #E6C8C8", -"O% c #7D7D7D", -"P% c #A6A5A5", -"Q% c #EC9A9A", -"R% c #F29393", -"S% c #DBD0D0", -"T% c #B9BADC", -"U% c #EEDBDB", -"V% c #E3BEBE", -"W% c #FCF9F9", -"X% c #F3ABAB", -"Y% c #C36F6F", -"Z% c #928E8E", -"`% c #CFCFCF", -" & c #DCDCE0", -".& c #B5B6C9", -"+& c #E6E6ED", -"@& c #F9F3F3", -"#& c #E8CDCD", -"$& c #F7C1C1", -"%& c #F8D0D0", -"&& c #8D8D8D", -"*& c #C3C3C3", -"=& c #A1A2BD", -"-& c #BBBCCC", -";& c #D4D5DA", -">& c #A3A4B8", -",& c #D59E9E", -"'& c #D8D4D4", -")& c #D49B9B", -"!& c #F9D3D3", -"~& c #F7BDBD", -"{& c #999999", -"]& c #9C9C9C", -"^& c #B0B0B0", -"/& c #C5C5C6", -"(& c #8081A5", -"_& c #C4C4C5", -":& c #8A8BAA", -"<& c #9B9CB2", -"[& c #B4B4BC", -"}& c #CEA5A5", -"|& c #EDD9D9", -"1& c #DECECE", -"2& c #C98C8C", -"3& c #DDC2C2", -"4& c #F18888", -"5& c #F6ABAB", -"6& c #F1E0E0", -"7& c #D9A6A6", -"8& c #B09D9D", -"9& c #ADADAE", -"0& c #7C7EA1", -"a& c #C2C2C4", -"b& c #B5B5B8", -"c& c #8A8CA8", -"d& c #9C9DB2", -"e& c #B6B6BF", -"f& c #BEB2B2", -"g& c #AC8686", -"h& c #A06969", -"i& c #9D6464", -"j& c #9A8989", -"k& c #F5EAEA", -"l& c #D09090", -"m& c #DCDADA", -"n& c #FAE8E8", -"o& c #F39090", -"p& c #F49F9F", -"q& c #DFD7D7", -"r& c #B1B1B1", -"s& c #C0C1D1", -"t& c #C4C5D6", -"u& c #C4AFC3", -"v& c #CC9DA5", -"w& c #D39999", -"x& c #DCAEAE", -"y& c #EDEAEA", -"z& c #DFB5B5", -"A& c #F8F1F1", -"B& c #CE8C8C", -"C& c #FBF1F1", -"D& c #F49595", -"E& c #F49696", -"F& c #FBEEEE", -"G& c #DBB1B1", -"H& c #C08484", -"I& c #CA9D9D", -"J& c #C0C1D6", -"K& c #C6C8E3", -"L& c #D8D8D9", -"M& c #D6A0A0", -"N& c #B795AB", -"O& c #E4D9E2", -"P& c #F7EFEF", -"Q& c #DED7D7", -"R& c #F59F9F", -"S& c #F38E8E", -"T& c #D6BCBC", -"U& c #C18787", -"V& c #CD9696", -"W& c #D1BFBF", -"X& c #969696", -"Y& c #DCDCE8", -"Z& c #ADAED3", -"`& c #E6E4E4", -" * c #E1CACA", -".* c #DAA9A9", -"+* c #D9A7A7", -"@* c #D69E9E", -"#* c #D09292", -"$* c #F3E7E7", -"%* c #F4A7A7", -"&* c #E47C7C", -"** c #FAE0E0", -"=* c #F5EBEB", -"-* c #868686", -";* c #9D9EC9", -">* c #EAEAEB", -",* c #E1BCBC", -"'* c #C08A95", -")* c #BF8690", -"!* c #CDAAAA", -"~* c #EBECF3", -"{* c #F0DEDE", -"]* c #E4A0A0", -"^* c #F6D3D3", -"/* c #808081", -"(* c #A2A4CF", -"_* c #E3E3E8", -":* c #EDECEC", -"<* c #E8CCCC", -"[* c #DDAFAF", -"}* c #ADACD2", -"|* c #C4C5DC", -"1* c #D0D0D4", -"2* c #CB9696", -"3* c #E4CCCC", -"4* c #F7BABA", -"5* c #F38787", -"6* c #E6BBBB", -"7* c #E5C5C5", -"8* c #ECD4D4", -"9* c #AEB0D6", -"0* c #878893", -"a* c #D9A8A8", -"b* c #C18888", -"c* c #D09C9C", -"d* c #E7CACA", -"e* c #F7F1F1", -"f* c #F7F7F9", -"g* c #ADAEC8", -"h* c #F4F5F8", -"i* c #E5C7C7", -"j* c #F8C4C4", -"k* c #F8C5C5", -"l* c #DDBFBF", -"m* c #C48B8B", -"n* c #E9CDCD", -"o* c #6F6F6F", -"p* c #D2CBDE", -"q* c #916060", -"r* c #B98080", -"s* c #E5C3C3", -"t* c #DFB7B7", -"u* c #F38686", -"v* c #F7BBBB", -"w* c #ECD5D5", -"x* c #CBAEAE", -"y* c #DEDBDB", -"z* c #907F7F", -"A* c #BB828F", -"B* c #BD848F", -"C* c #E3DADA", -"D* c #ADAFD7", -"E* c #D7A3A3", -"F* c #E9C6C6", -"G* c #F6B2B2", -"H* c #E1BBBB", -"I* c #858383", -"J* c #D3BFBF", -"K* c #E0B7B7", -"L* c #CB9191", -"M* c #C59090", -"N* c #956C6C", -"O* c #DCD9E8", -"P* c #B9BBDC", -"Q* c #E1BABA", -"R* c #F9DBDB", -"S* c #F28989", -"T* c #E19595", -"U* c #FBF7F7", -"V* c #D49C9C", -"W* c #E4D3D3", -"X* c #D4B2B2", -"Y* c #985F5F", -"Z* c #CF9898", -"`* c #DAB4B4", -" = c #DDCCCC", -".= c #DEDEE7", -"+= c #808080", -"@= c #BEBFDF", -"#= c #EDD7D7", -"$= c #FAE1E1", -"%= c #F38D8D", -"&= c #F4A1A1", -"*= c #E9CACA", -"== c #C28A8A", -"-= c #D19797", -";= c #ECEBEB", -">= c #DDD4D4", -",= c #C79F9F", -"'= c #ACADB2", -")= c #8C8EB9", -"!= c #838383", -"~= c #EEEFEF", -"{= c #DDB1B1", -"]= c #FAE6E6", -"^= c #E88181", -"/= c #D59595", -"(= c #EEEAEA", -"_= c #F2E3E3", -":= c #E6C6C6", -"<= c #D09797", -"[= c #C68D8D", -"}= c #D0A0A0", -"|= c #D1AEAE", -"1= c #B5B5BA", -"2= c #C5C6D4", -"3= c #C5C7E1", -"4= c #A8AACE", -"5= c #C09191", -"6= c #A95252", -"7= c #CE8080", -"8= c #F08B8B", -"9= c #D75252", -"0= c #D18989", -"a= c #E8CBCB", -"b= c #C18B8B", -"c= c #EAD1D1", -"d= c #E4E5ED", -"e= c #D3D3D5", -"f= c #BDBDCB", -"g= c #D1B9B9", -"h= c #921919", -"i= c #8A1717", -"j= c #AE2121", -"k= c #B33F3F", -"l= c #C67979", -"m= c #DDB2B2", -"n= c #F6F5F5", -"o= c #DBDBDC", -"p= c #B8B9D7", -"q= c #CBACAC", -"r= c #991919", -"s= c #8E1717", -"t= c #AD5A5A", -"u= c #B6B8D8", -"v= c #818181", -"w= c #B4B5D0", -"x= c #CFD0DD", -"y= c #D9D9DF", -"z= c #BDBFDE", -"A= c #BA8585", -"B= c #B47676", -"C= c #C57878", -"D= c #C3C4DF", -"E= c #BDBFD6", -"F= c #858696", -"G= c #D09191", -"H= c #E8CACA", -"I= c #E3C1C1", -"J= c #C69C9C", -"K= c #E2CACA", -"L= c #CFD0E7", -"M= c #C5C6E2", -"N= c #C3C4D0", -"O= c #C6C7E0", -"P= c #F7F5F5", -"Q= c #CFBDBD", -"R= c #EED9D9", -"S= c #FAF6F6", -"T= c #B6B6B6", -"U= c #D29797", -"V= c #E2BEBE", -"W= c #CB9F9F", -"X= c #CEA1A1", -"Y= c #E0E1EF", -"Z= c #D3D3D7", -"`= c #AEB0D5", -" - c #EEECEC", -".- c #EBD4D4", -"+- c #DBCBCB", -"@- c #C0C1E0", -"#- c #D1D2DC", -"$- c #F5ECEC", -"%- c #CDBBBB", -"&- c #D59F9F", -"*- c #CE9595", -"=- c #705151", -"-- c #C4AAAA", -";- c #EFE2E2", -">- c #A9ABD4", -",- c #EFDCDC", -"'- c #F0E7E7", -")- c #C4A7A7", -"!- c #CA9398", -"~- c #90729D", -"{- c #DAAFB1", -"]- c #CB9797", -"^- c #D5D5D9", -"/- c #D4CBCB", -"(- c #B4B4B4", -"_- c #C6AAAA", -":- c #A0A2CD", -"<- c #D6BBBB", -"[- c #C99696", -"}- c #D29898", -"|- c #827070", -"1- c #D0C1C1", -"2- c #D4C0C0", -"3- c #F6F0F0", -"4- c #DDB6B6", -"5- c #EFE0E0", -"6- c #C5A4A4", -"7- c #B2B3D8", -"8- c #E6E6F2", -"9- c #D19FA3", -"0- c #9D7FA4", -"a- c #E7C8C8", -"b- c #D8D9DA", -"c- c #B2B4D8", -"d- c #C39B9B", -"e- c #EDDDDD", -"f- c #EACFCF", -"g- c #CD9595", -"h- c #C4A8A8", -"i- c #D39B9B", -"j- c #F2E5E5", -"k- c #F5F2F2", -"l- c #AAAAAB", -"m- c #A5A5AB", -"n- c #D9A9A9", -"o- c #AF9D9D", -"p- c #E9CECE", -"q- c #D09999", -"r- c #D2BFBF", -"s- c #E1B9B9", -"t- c #C2A7A7", -"u- c #865C5C", -"v- c #C5C7E2", -"w- c #CCCEE5", -"x- c #F5F3F3", -"y- c #B28EA6", -"z- c #A9819D", -"A- c #E3E3F0", -"B- c #F6EDEE", -"C- c #E6D5D5", -"D- c #C19D9D", -"E- c #C9A6A6", -"F- c #AFB0BF", -"G- c #A6A7CA", -"H- c #D0D0D7", -"I- c #CF9090", -"J- c #F3E8E8", -"K- c #6E6E7A", -"L- c #E6C5C5", -"M- c #F2F2F5", -"N- c #D7CFCF", -"O- c #707176", -"P- c #9091BA", -"Q- c #CD8E8E", -"R- c #E8D4D4", -"S- c #C4C5E2", -"T- c #AD8E8E", -"U- c #7D7E8D", -"V- c #E1DFDF", -"W- c #D8ACAC", -"X- c #C58989", -"Y- c #EAD7D7", -"Z- c #727272", -"`- c #E0E0EC", -" ; c #E3E3E5", -".; c #D29A9A", -"+; c #BEB4B4", -"@; c #A1A2B4", -"#; c #D8D1D1", -"$; c #AB9999", -" . + @ # $ % & * * & % $ # @ + . ", -" = - ; > , ' ) ! ~ { ] ^ / ( ( / ^ ] { ~ ! ) ' , > ; - = ", -" _ : < [ } | 1 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 1 | } [ < : _ ", -" 2 * 3 4 5 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 5 4 3 * 2 ", -" 6 7 8 9 0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 0 9 8 7 6 ", -" a b c d ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( d c b a ", -" e f g h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h g f e ", -" i j k ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( k j i ", -" l m n ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( n m l ", -" o p q ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( q p o ", -" r s t ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( t s r ", -" u v w ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( w v u ", -" e x y ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( y x e ", -" b z ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( z b ", -" A B C ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( C B A ", -" D E y ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( y E D ", -" F G ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( G F ", -" H ) ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) H ", -" I J ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( K L M ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( J I ", -" I N ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( O P Q / ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( N I ", -" R S ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( y C T U V W X Y ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( S R ", -" F ) ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h Z ~ ` .M K C ..+.@.#.$.%.&.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) F ", -" *.=.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( / Z -.` .` ~ Z h ( y ;.C >.,.'.U M ).!.~.{.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( =.*. ", -" ].^.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( y | 1 ( ( ( ( ( ( ( 0 d /.T . .T ~ (.h ( ( ( ( ( _. .^ :.<.[.}.d _.| K |.1.2.3.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ^.]. ", -" B y ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4.5.6.K _.7.` . .` /.5 t h ( ( ( ( ( ( ( ( ( ] U d ( 8.9.y 0.4.y ;.( a.(.( b.c.d.e.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( y B ", -" b C ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h f.g.h.i.j.k.l.( ( ( ( ( ( ( ( ( ( ( ( ( ( h m.| / ( n.o.p.~ q.7.0 r.(.h U t ( ( s.t.u.v.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( C b ", -" w.z ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( x.y.g.w z.A.B.t.C.c.D.E.( ( ( ( ( ( ( ( { F.{ ( ( G.H.I.( a.J._.(./ .( / K.1 ( ( ( L.M.N.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( z w. ", -" u O.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( r.P.Q.R.S._.;.] ( ( b.T.U.t.t.B.N.V.h 1 T m.( ( ( ( W.X.( 1 .Y.C K ( ` 1 ( ^ F./ ( ( ( ( Z.%.`.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( O.u ", -" v y ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( +.+++` a.@+` 1 7.| 1 ( ( ( ( ( #+$+%+&+*+=+-+;+E.( >+,+( ( '+M )+5 d ( +~ ( ( ] ;.h ( ( ( ( !+~+2.{+( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( y v ", -" ]+w ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( / F.^+,+` { /+(+_.( ] a.-.( ( ( ( ( t ;.'+( !+_+:+U.<+[+d.}+|+a.z z 1+2+( ( ;.( ( ( { T ( ( ( ( ( ( E.3+4+|.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( w ]+ ", -" o s ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ` ] 5+6+` ( a.7+` d ( ( 8+U K ( ( r.` 1 ( ( ( ( ( 9+0+a+b+c+d+e+f+g+h+i+j+( -.K ( ( ( 5 m.( ( ( ( ( ( ( L.k+T.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( s o ", -" p t ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( l+-.( m+( ` ( m.n+o+ .(.( ( h ~ K.w K ( ( ( ( ( ( ( p+q+( ( ( 2+8+R.!+r+s+t+C.u+v+w+Z.x+h '+-.( ( ( ( ( ( ( y+N.2.z+( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( t p ", -" A+9 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( t a.( B+C+( ` ( ^ T D+d F.y ( ^ ` /.T M / ( ( ( ( ( E+F+( ( ( ( ./ J.( 0 /.( ( ( G+H+I+u.J+C.K+L+M+N+v.( ( ( ( ( e.O+P+Q+( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 9 A+ ", -" m h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h F.1 ( R+S+( ` ( ( a.l+T+1 F.r.a.y ( ( Z ;.C ( ( ( U+V+( ( ( ( h .C W+( y M ( ( ( Z /.( ( ( ( ( X+Y+Z+3+C.`+ @.@+@@@( #@$@%@&@*@8+( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h m ", -" i n ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 7. +( ( m+( ( T h ( l+5 o+L K.=@( ( ( ( ( ( 5 U +-@0+9+( ( ( ( d l+;@z ( 1 7.( ( ( ( a.( ( ( ( ( ( ;.] ( ( ( |.>@A.,@C.C.O+'@)@!@~@( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( n i ", -" f ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( l+_.( ( I.9.( ( | / ( h K.U @+^ 1+7.( ( ( ( ( ( h {@]@^@( ( ( ( ( .h /@~ ( h T ( ( ( ( -.K ( ( ( ( ( / F.^ ( ( ( ( ( b+(@_@:@<@[@}@|@( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( f ", -" e k ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( Z .( ( ( 1@2@( ( | 1 / T 3@0 k 4@( '+-.( ( ( ( ( ( 5@6@` m.h ( ( h .( 7@t ( ( ` ( ( ( ( h .( ( ( ( ( ( ^ F./ 3.8@t.t.,@A.9@0@a@b@c@d@( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( k e ", -" j ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ^ F.h ( ( ( ++G.( ( 7.M ;.t ] /.( T+l+( M 8+( ( ( ( e@f@( ( +U l+( 1+C ( D+( ( ( ` ( ( ( ( ( T ^ ( ( ( g@h@i@j@k@_@{.l@( ( m@n@o@$@2.$@,@( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( j ", -" a 6.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h F.y ( ( ( -@p@( h C L 8+( ( ( ;.( 8+Y.( ( .Z ( ( 6+H.h ( ( ( ( 2+;.K.1 ( J.( ( ( ` ( ( ( ( ( q@r@u.t.t.s@t@E.( { T ( ( u@v@w@x@y@Z.}+O+3+z@( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 6.a ", -" A@h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( a.Z ( ( ( ( B@8.d U d m.t ( ( ( _. +( (+` ( / F.^ C@D@E@( ( ( ( ( ( / F@` (.7@( ( ( ` G@L.H@t.t.B.I@|+( ( ( ( ( ( ( l+J@K@L@M@B.2.N@3+#+O+O@,@( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h A@ ", -" 6 (+( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( | 1+( ( ( ( ( P@U '+( ( /.t ( ( ( / .( y 7+( ( ^ F.Q@2@( ( ( ( ( ( ( { -.y f.R@S@%+T@U@T@~+V@( ( ( '+1+( ( ( ( ( ( ( W@X@Y@3+Z@!.`@( #( O+( .#g@( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (+6 ", -" 7 d ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( m.5 ( ( ( ( (.+#@#h ( ( ( r.0 ( ( ( ( ./ ( ##$#( ( %#&#( ( ( ( ( ( ( b.*#=#T@-#;#>#,#|.` ( ( ( ( ( ( / .( ( ( ( ( '#)#!#~#{#]#S@^#( N@_@( O+( g@ @( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( d 7 ", -" /#( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( r.C ( ( ( ] a./.(#e@( ( ( ( ~ Z ( ( ( ( K -.( h _#/ 8.:#8+M |.3.}+U.C.t.c.<#[#!+}#^ h '+;.K.( ( ( ( ( ( ( ` 1 ( ( ( |#1#2#;+3#e.4#5#6#( 7#8#( O+( ( @9#( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( /# ", -" 2 9 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( _.-.( ( y .7.1 ( ++h ( ( ( ( -.(.( ( ( ( ( ;.( ( L 0#a#b#O+c#d#e##@E.( ( Z r.( ( J.( ( ( / f#T / ( ( ( ( ( ] /.( g#L@h#i#j#k#h ( l#m#/ ( n#y+( d.6#( s.B.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 9 2 ", -" * 0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( -._.( y T T ^ ( ( -@p@( ( ( ( ( C { ( ( b.o#p#q#r#C.s#t#u#b.y+( 7.1+( ( ( ( T 1 ( / Y.( ( ( ( ` 0 ;._.h ( ( ( ( a.v#w#u@h i@}+( ( !.M+] a.6#J+( ( s@e.( ( J+e.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 0 * ", -" 8 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( '+~ 1 7.` t ( ( ( ( x#e@( ( b+y#`@z#A#C.`+B#C#L.D#E#( F#G#H#( ( ( ( a.] ( ( ( a.( ( 1+I#( ( ( ( ` ( ( 8+U 1+( ( J#K#L#G.v.:@M#( ( N#d.( ( 8+O#I+( ( P#Q#( ( [#R#( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 8 ", -" _ 4 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( C m.M .0 ( ( ( y+j+S#T#U#`+`+^#-+V#W#d ( ( ( ( ( ( a.X#Y#( }#C ( ( ( / F.1 ( Z r.( ( z Z#( ( ( ( ` ( ( ( h _.`# $.$+$` E.@$#$( ( @@@$|.( ( ( $$).( ( A.%$( ( ( 2.6#( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4 _ ", -" : l+( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( K &$q Z#;.*$=$-$;$`+`+>$4+,$'$( ( ( ( ( ( 8+l+( ( ( ( ( ( )$!$( ( ] q.( ( ( ( y F.h 7.y ( ( )+1+( ( ( ( ` ( ( ( ( ~${$]$7./ ^$@$E.( ( ( t.[#( ( ( l@n#` Z ( /$($( ( ( _$%+( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( l+: ", -" < ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( k :$)+<$[$}$|$N+b+( ( ( ( 1$2$( ( ( ( ( ( K 2+( ( ( ( ( B+3$a.( ( ( ##Z#( ( ( ( (.` a.( ( ( J.( ( ( ( ( ` h ( '#)#4$5$( ] 6$i.7$( ( ( 8$`@( ( ( ( [#w+/ F.1 S@p#( ( ( ( 9$y+( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( < ", -" [ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 7./+0$a$b$c$k M 8+1 ( ( ( m+G.( ( ( ( ( ( +'+( ( ( ( a+0+a+T ^ ( ( h _#y ( ( ( ( -.K.( ( ( J.( ( ( ( ( | / d$e$2#( ( l@P#H@5 3@{ ( S@^#( ( ( ( ( f$|+( t ;.{+w+( ( ( ( g$h$( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( [ ", -" = i$( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( j$k$l$` 6.Y.m$J T .` n$o$/ ( ( ( ( ( ( (.-.( ( ( G.p$q$( ] /.( ( ( U W+( ( ( ( 7.7.l+( +' ( ( ( ( ( r$s$t$G.( ( |.t.T.( ( /.a.a.u$!+( ( ( ( ( 2.( ( ( 1+v$B#( ( ( ( v.t.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( i$= ", -" - | ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( w$x$_.T +U '+q y$z$U A$B$T .` m.1+1 ( Z ~ ( ( ( C$D$( ( ( a.( ( ( ( T+l+( ( ( a.( T +f#E$( ( ( G.F$G$H$( ( ( j+I$J$( ( ( 1 ` K$L$M / ( ( ( E.B.( ( ( ( ~ M$( ( ( ( ( O+v.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( | - ", -" * 1 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( N$O$` 2+_.( -.a.t K 5.P$Q$ .h ( t 2+| .K.=@1+1 :.Y#( ( ( ( _. +( ( ( +y$( ( Z r.( h U I#'+( ( W@R$S$/.0 ( ( {.$@E.( ( ( ( ( T$($( (.U 2+( ( :+#@( ( ( ( ( U$] ( ( ( ( ($V$( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 1 * ", -" > ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( D$W$ .h m.8+( 1 T m.X$Y$K Z$c$P 0 ( ( ( 0 | 2+`$ % .7.1+/ ( 1 T ( ( ( ( 5.n ( | ^ ( ( 1 .%1 5$+%@%'#( r.] ( h@.#!+( ( ( ( ( _$#%l+( ( ( l+U +C.!+( ( ( ( ( n#K.h ( ( ( b+$%( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( > ", -" %%( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 2@B@8+2+( a.0 ( ( (.&%*%( ( ( | R.}# .( 0 /.q+=%( ( ^ l+T . .F@5 y ( ( h -%1 a.( ( ( ( c$;%>%,%( ( ( _.Z Z+H@( ( ( ( ( ( b.'%h a.( ( ( ( h )%!%y ( ( ( ( ( O+0 a.( ( ( ( ~%( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( %% ", -" ' ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( {%]%( a.( h F.1 ( G.^%-.a.t ( ( ( +S.y$Q$/%(%p.( ( ( ( ( ( ( 5 ;.M . .| E$:$~ ( ( ( _%:%<%.+( ( ( ( [%}%D.( ( ( ( ( ( y+:@s.( | ^ ( ( ( ( h$|%` /.h ( ( ( >$( l+_.( ( ( 4+s.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ' ", -". ) ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( q$R+( | ^ ( t U h X.W$( 1 T m.h ( ( ( ( 1%2%3%4%~ ( ( ( ( ( ( h a.( ( ( 1 K 5%n .6%7%8%9%( C -.( ( E.0%a%( ( ( ( ( ( ( 7#b%( ( (.r.( ( ( ( c.e.( +U l+( ( >$( ( M K ( ( %$N.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) . ", -"+ ! ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( c%f@( Z r.( ( { | d%e%( ( ( +U d ( ( f%g%h%( d (+y$W+2+( ( ( ( | y ( ( ( h 3@J.F$v@i%f.Q . .;@/.j%k%l%K ( ( ( ( ( ( m%f$( ( ( ( a.( ( ( ( 2.( ( ( ( 2+U (.O+( ( h U ^ ( v. @( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ! + ", -"@ ~ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( n%o%( ( a.( ( ( p%q%( ( ( ( ( ( -.a.r%^%s%M ( ( ( ( ~ I#y$S y ( t M ( ( ( 1+t%u%v%( ( W+2+( ( 1 w%x%G+k =@7.'+Z / ( j+3#y+( ( ( ( m.] ( ( s.y%( ( ( ( ( / M z%y ( ( ^ U h ( t.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ~ @ ", -"# { ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( n.5+( ( r.Z ( ( 1@A%K ( ( ( ( ( ( ^ B%C%y 7.( ( ( ( ( ( / L R.7@M a.( ( u@D%E%F%_#h ( 0.^ ( ( N.R#G%1 5 8+^ { _.| a.H%I%_.{ 1 ( ( y 7.( ( u.N@( ( ( ( ( ( ( J%K%r.h ( { 7.( J+!+( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( { # ", -"$ ] ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( a+L%( ( ^ | ( ( M%( ;.t ( ( ( ( ( ,+N% +K.;.( ( ( ( ( ( ( ( ( { W O%P%Q%R%S%( ( g J ( D+( ( t+A.( y F.5 d ( ( ( ( T%+@h Z C | ` .` F@l+] 2.( ( ( ( ( ( ( ( f$j+{ U 5 ( _.5 N.%$( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ] $ ", -"% ^ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( e%p+( ( ( a.( U%7%( / F./ ( ( ( V%B@( ( ^ n a.t ( ( ( ( ( ( ( ( W%X%Y%Z%_#q 1 ( ( 7+T J.!+J+t@( ( ( +`%5 ( ( ( }+8$( ( ( ( ( ( ( h r.r. &.& . .| ~ 1+y ( ( e#Q#( ( '+;.Z .+&_@( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ^ % ", -"& / ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 9+p@( ( ( C 8+V+@&( ( 0 ;.( ( #&Y$( ( ( 1 7.1 ` /.h ( ( ( ( G.$&w#%& ./ F.N &&7@;.*&##9 =&o#( ( ( ( ( r.| ( ( J$J+( ( ( ( ( ( ( ( ( 1 T N.;+( ( / ] 2+m.` .-&;&'+(.1 / M .! >&m.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( / & ", -"* ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( p.,&( ( ( h '&)&( ( ( ( 1+M D$,&( ( ( ( 1 | ( ( +U d ( ( !&w#~&G.( 8+_.T ( ( +Q {&5.]&^&Z#Z#Z#Z#Z#Z#J =.N /&(&_&Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#Z$:&Z#Z#Z#Z#Z#Z#Z#Z#Z#<&[&J ^&0$P P /@I#W+5./ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( * ", -"* ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h V+( ( ( ( }&|&( ( ( ( ( 1&2&G.( ( ( ( / | ( ( ( ( -.3&4&5&G.( ( ( h $#] ( ( 6&7&8&/+c$i$Z#Z#Z#Z#Z#Z#J 9 9&0&a&Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#b&c&Z#Z#Z#Z#Z#Z#Z#Z#Z#d&e&Z#Z#f&g&h&i&j&4%i$/ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( * ", -"& / ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h V+( ( ( ( 2&-.( ( ( ( k&l&m&{ ( ( ( ( / | ( ( ( n&o&p&q&M / ( ( ( ( L s%:#m+]%6+[.r&r&&&;@( ( ( ( ( 1+l+R#s&^ ( ( ( ( ( ( ( ( ( ( ( }+t&( ( ( ( ( ( ( ( a+u&v&w&d%x&8.y&F.L q m.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( / & ", -"% ^ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( p.,&( ( ( U%z&a.( ( ( A&B&a+h U y ( ( ( 1 | ( C&D&E&F&( ( (.U l+( -@G&H&I&I.( ( / -%7.R.h W 5.( ( ( ( 8+J&K&y U h ( ( ( ( ( ( ( ( ( ( t.L&( ( ( G.I.W$=%w&M&N&O&( ( h | /.-.2+` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ^ % ", -"$ ] ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 9+p@( ( ( ++f%7.t ( F%0+P&( ( 1 K./ ( ( 1 Q&R&S&n&( ( ( ( ( G.T&U&V&W&1 a.( ( ( r&3@( J.( ( N X&/ ( ( Y&Z&( ( (.` ( ( ( ( ( ( ( ( ( |.C.`& *.*)&)&+*2$9+( ( %+#$( { F.Z t . +-.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ] $ ", -"# { ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( e%p+( ( n.@*( 0 m.9+#*$*( ( ( ( ] a.( '#%*&***( ( ( ( ( =*Y$^%Y#F%T 3@1 r.(.( (.c$( ( X&t ( ( K.-*Z 9#;*>*( ( ( l+~ ( ( ( ( ( h X$,*'*)*Q@!*6+h ( ( ( ( ( ( P#~*7.m.h ( ;.1 ~ Z ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( { # ", -"@ ~ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( -@:#( ( ,+6&( ( ;.w&{*( ( ( ( ( ( y&]*v@^*7.( ( ( F%V%^%9.$*( ( ( C -.a.r.T ( 0.C ( ( 0$r.( ( ( C /*(*_*d ( ( ( ( m.:*n.<*9.d%)&[*8.}*!+( a.( ( ( ( ( ( ( ( |*1*(.( ( _.d ( ` h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ~ @ ", -"+ ! ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( A&7&( G.M%( ( ( 2*3*( ( ( ( ( ( 4*5*6*2+^ 7.p.7*++V+8*G.( ( ( ( ( a.h ( d F@`%=.( ( ( `%S ( ( ( ( 9*0**&8+( e%X.a*)&b*c*d*e*( ( ( f*J+( ( -.{ ( ( ( ( ( h 7.g*h*( ( t .( ( .( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ! + ", -". ) ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( I.Y$( >+E+( ( f@i*` ( ( ( G.j*w#k*( ( m&l*m*w&n*p.( ( ( ( ( ( ( t 7.( ( ( C o*F.y ( ( 1+I#( ( ( _@p*<*q*r*)&p@s*I.G./ K.1 ( ( ( ( g$(@( ( / ` ( ( ( ( +F. +$%!+( ( U / ( ( ` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) . ", -" ' ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( k&x&( ++f%( t*x#( .h ( d$u*v*i#G.w*)&)&x*y*( ( ( ( ( ( ( ( ( ( | y ( ( ( q Z$y ` m./ a+z*1$F#A*B*+*w$C*P%(+h ( ( ( ( y U h ( ( ( D*( ( ( ( .h ( h M M h ( O+( ( ~ 8+( ( ^ 7.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ' ", -" %%( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( {%5@6+E*( Y#]%( ( l+F*u*G*i#f%7%M%H*e%( 0 L / ( ( ( ( ( ( ( ( h a.( ( ( 0 I*J*K*V+L*m*M*N*U%O*c.( ( ( '+{ F@}.^ ( ( ( ( { | ( ( z+P*( ( ( ( _. + +F. +( ( ( O+( ] T ( ( ( d 5 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( %% ", -" > ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( q+Q*9.=*n*.*( ( R*S*T*U*<*V*w&8.( ( ( ( t a.a.( ( ( ( ( ( ( F%W*X*+*V+)&Y*Z*`* =p.( ( l+g..=9$y+( ( ( -.(.( m.+=d ( ( ( ( C -.( @=[#( ( ( ( y 3@M h ( ( ( ( O+( F./ ( ( ( 7.^ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( > ", -" * 1 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( w*W$m+#=p@G.$=%=&=*===-=<.e%( ( ( ( ( ( 0 /.;=>=#=Q*+*V*)&)&p+,=8*n%9+/.{&( h a.( ( ( ( '=)=X+y ( ( ( _.Z ( ( +!=;.( ( ( ( M ~=:@( ( ( ( { F.l$( ( ( ( ( ( O+m.{ ( ( ( ( .( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 1 * ", -" - | ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( <*3${=^%]=.$^=/=w&Y#(=_.( ( h e%_=:=f@)&<=[=,&}=|=q+n%( ( ( t M ( ( ( 7+0 ( ( T ^ ( ( v.{#1=y ` m./ ( r.] ( ( ( 1 0.[.( ( ( ( 2=3=( ( h | m.h r.Z ( ( ( ( ( 4=7.( ( ( ( h ` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( | - ", -" = i$( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h 5=6=7=8=9=0=5@e*{%a=R+b=V*)&=%M&1@c==*( ] ~ ( ( | { ( ( ( ( 7.t ( ( g q ( ( ( Z r.( y+%.d=X&( ( (.;.'+/.t ( ( ( ( ( Q o+( ( ( `+e=/ 1+U Z ( ( y 7.( ( ( ( / f=h ( ( ( ( { '+( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( i$= ", -" [ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( g=h=i=j=k=l=d%)&,&m=<*B+y*n=( ( ( ( ( ( ( Z _.( ( h U y ( ( h a.( ( t _#h ( ( ( ( a.y+O+_$( J.( ( ( ( d L 5 ( ( ( ( ( ( L }.t v.t.(.;@r.h ( ( ( ( a.( ( ( ( o=p=( ( ( ( ( | ^ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( [ ", -" < ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( q=r=s=t=#*B@$*p.( ( ( ( 0 M ( ( ( ( ( ( ( (.-.( ( ( 1 K./ ( 2+d ( ( :$` ( ( ( ( ( M u=Z.( ( J.( ( ( ( ( 7./.a.0 ( ( ( ( ( m.v=w=x=;.C M ( ( ( ( ( M 0 ( ( 5 y=z=( ( ( ( ( a.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( < ", -" : l+( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( n=A=B=C=V+2$x&)&d%5+w*p.( a.( ( ( ( ( ( ( { C ( ( ( ( ] a.( a.( ( -.7@( ( ( ( ( ( D=E=( ( ( W -.( ( ( ( T / 1 | T 1 ( ( ( ( 8+F=z ( ( _.2+( ( ( ( t M ( ^ ;.8#.@( ( ( ( K '+( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( l+: ", -" _ 4 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( d%c=G=H=( ( n%I=V*w&J=K==*( ( ( ( ( 1+l+( ( ( ( ( 1+;.m.( h -*0 ( ( ( ( ( L=M=a.( ( ( n E$( ( ( ( ` ( ( ( t a.r.h h /.N=O=}#O ( ( T +( ( ( ( a.h U ^ =$h@( ( ( ( a.h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4 _ ", -" 8 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( e%D@F%,*++P&( ( ( ( P=Q=Y$d%d%x&R=S=d 5 ( ( ( ( ( ( w ~ ( ;@T=( ( ( ( ( Z.y%( r.(.( ( Z Q$( ( ( ( ` ( ( ( ( ( { k n { O+#+h P ^&( h U y ( ( ( 7.T 1+( A.%$( ( ( ] M ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 8 ", -" * 0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( U+,&( 6+U=V=( ( ( ( .h ( ( $*1$p@W=X=Y#n%G.( ( / .7.d _#h ( ( ( ( Y=T@( ( ^ | ( ( h D+( ( ( ( ` ( ( ( ( t a._.l+Z=`=( ( ( &${&h ^ F.h ( ( '+K.( ( w+|+( ( ( a./ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 0 * ", -" 2 9 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( W$x#( ( N%#*B+( ( 2+d ( ( ( ( ( C -.-5+)&)&Y$+-y&( ]&z ( ( ( ( N#D*h ( ( ( a.( ( ( J.( ( ( ( ` ( ( / M ` 1 ( ( @-#-a.0 ( ( w -%{ ] .( y ;.a.( ( T%h*( ( { r.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 9 2 ", -" /#( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( V+^+( ( -@,&{=p./ .( ( ( ( ( -. +( ( ( h $-%-&-*-=---;-e%( 3.>-|.( ( ( ( -.{ ( ( 7@t ( ( ( ` ( '+;.Z ( ( ( ( 9$( 1 | | ^ ( d !=;.5 /.F.1 | 1 ( .#!+( ( U h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( /# ", -" 7 d ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 9+0+F%( ( ( w*o.,-` / ( ( ( ( ~ Z ( ( ( ( +~ ( =.m&'-)-,&!-~-{-8.S=( ( ( / ` ( ( r&a.( ( ( l$U d ( ( ( ( ( V$M+( ( ( 0 ./.h ^ X&q n ~ ( K '+( O+( ( -.d ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( d 7 ", -" 6 (+( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( X$w&( ( ( ( 9+Y$]--.( ( ( ( r.0 ( ( ( ( ./ 8+D+( ( (.^-@$E._=1$M&)&V*C$Y#/-h ( ` ^&( (.;.`%( ( ( ( ( ( ( 9$y+( ( ( ( ( +U C ( (-4%U ] h .( O+( 1 ;.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (+6 ", -" A@h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( w$7%( ( ( ( ( S+_-<*( ( ( /.t ( ( ( 1 ` ( Y.d ( ( v.:-y=( ( ( ( ( G.-@8*<-[-)&}-|-1-2-3-` ( ( ( ( ( ( V._@( ( ( ( ( ( ( ( 5 k ;.a.v=L 1 ` h O+( .y ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h A@ ", -" a 6.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( a*#=( ( ( ( ( T 4-++6+( m.y ( ( ( /.Z T =.( ( |.%.N@~ 2+( ( ( ( ( ( ( / ` t .I#5-1$5+6-)&)&9.F+R=n%7-E.( ( ( ( ( ( ( ( K | ~ a.-.O%&$5 l+O+8+_.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 6.a ", -" j ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( G.G=6+( ( ( ( ] m.P&>.7%M ^ ( ( h a.( -*0 ( y+2.8-( ( T { ( ( ( ( ( ( y L T ^ D+( ( ( ` ( ( A&8.V=9-0-)&)&V*Y$a-{%h ( (.a.( ( 1 7.;._###b-c-U ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( j ", -" e k ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( E@0+f%( ( ( ( a.( ( c=d-e-( ( 8+C q 6.( ( T@Y=( ( ( ( U 0 ( ( ( y T T C l+( {&Z ( ( ` ( ( ( ( ( _@V.( ( G.6+f-m==%g-h-i-E*{=#&j-k-a..%l-m- .( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( k e ", -" f ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( U+d%G.( ( ( /.Z ( ( T n-p+-@a. +q.h ( T%/$( ( ( ( ( / F.1 t T T y ( h .( Q 7.( ( ` ( ( ( ( h 9$( ( ( ( ( ( ( t F./ G.-@X$H=5@M&)&o-}#!=J ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( f ", -" i n ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( p-f@( ( ( y | ( ( T h $*q-r-Y.2+( 1.h@( ( ( ( ( ( ( { Z#T y ( ( ( ( .h n E$( h T ( ( ( ( L=Z.( ( ( ( ( ( y K.1 ( ( ( ( 1 C . .9 S.^&L ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( n i ", -" m h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( s-V%( ( ( a.( ( ` ( ( 7.t-u-,-v-w-( ( ( ( ( ( 0 .| 1+` ( ( ( ( ( K '+1+I#( 1 7.( ( ( ( 9$y+( ( ( ( ( y K.1 ( ( { 7.a.T 1+( -./.M 7.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h m ", -" A+9 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( C+a=( ( '+1+( ` ( h ;.7+x-y-z-6+( ( ( ( ] .7.1 ( ( 5 /.( ( ( ( ( a.( J.( y m.( ( ( A-%+( ( ( ( ( y K.(.~ . .'+^ ( ( ( /.-.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 9 A+ ", -" p t ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( G.M&#=( / ` ( ` ( '+##&$`@w+B-V+C+e%Z a.M 1 ( ( ( ( ( ~ 2+( ( ( ( T 1 J.( 0 r.( ( ( n#v.( ( ( ^ '+L U /.Z ( ( ( ( ( h | l+( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( t p ", -" o s ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( p.^%2@( .h ` ( ;.-%T.P*( ( ( C-D-E-1 ( ( ( ( ( ( ( ( | K ( ( ( +_.o+'+Z _.( ( s.c.t -.` .;.f#1 ( ( ( ( ( ( ( h ;.K ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( s o ", -" ]+w ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( p.#*S+8+2+` (.Q$F-3+( ( K a.r./ c=G=:=G.( ( ( ( ( ( h ;.0 ( ( ( a.`%S { ~ 8+M G-H-M +h 0 F./ ( ( ( ( ( ( ( y F.] ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( w ]+ ", -" v y ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( e%I-J-a.` K.K- #!+8+;._./ ( ( ( G.L-#*c=( ( ( ( ( ( / K.y y 8+`%k -*n+K.l+M-n#( ( ( ] F./ ( ( ( ( ( ( ( K U 1 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( y v ", -" u O.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( a+0+N-k O-P-l+U '+h ( ( ( ( ( ( ( p.Q*Q-R-2+m.` ` .U ;@M l+d /.D+2+1+( S-A-( ( Z U / ( ( ( ( ( ( ( m.M h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( O.u ", -" w.z ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( -@T-^&U-G%'+t +d _.M | ` ` .` ` ` V-W-X-Y-( ( ( ( (. .( ( a.J.-.(.( M.( ( +;.h ( ( ( ( ( ( (.F.K ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( z w. ", -" b C ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h T=Z-S.=@T /.-.d (.y 1 h ( ( ( ( ( ( ( e%R+m+6&( ( ( d /.( M J.T 0 ($`@( K .h ( ( ( ( ( ] .m.h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( C b ", -" B y ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( $#r&F@/.a.| (.( ( ( ( ( ( ( ( ( ( ( ( ( ( a+f@U=X$( ( _.2+0 H#/+y M.( 8+T ( ( ( ( ( K a.M ^ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( y B ", -" ].^.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( y ( ( ( ^ r.a.T 1+( ( ( ( ( ( ( ( ( ( ( ( ( a++*w&X$( | K L !=`-7#l+7.( ( ( t m.a.-.h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ^.]. ", -" *.=.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( / 2+ . .'+^ ( ( ( ( ( ( ( ( ( ( ( E@7&)&X$;.a.'.r# ;m.( y r.a.7.0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( =.*. ", -" F ) ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h K 7. .` '+0 h ( ( ( ( ( ( ( ( e*5+.;+;T+@;| r.a.7.(.( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) F ", -" R S ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h { /.T ` ` ` ` ` ` T T T T #;$;}#4@` Z ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( S R ", -" I N ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h h h h h h h $#S.(-h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( N I ", -" I J ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ^ K.1+( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( J I ", -" H ) ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) H ", -" F G ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( G F ", -" D E y ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( y E D ", -" A B C ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( C B A ", -" b z ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( z b ", -" e x y ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( y x e ", -" u v w ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( w v u ", -" r s t ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( t s r ", -" o p q ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( q p o ", -" l m n ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( n m l ", -" i j k ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( k j i ", -" e f g h ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( h g f e ", -" a b c d ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( d c b a ", -" 6 7 8 9 0 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 0 9 8 7 6 ", -" 2 * 3 4 5 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 5 4 3 * 2 ", -" _ : < [ } | 1 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 1 | } [ < : _ ", -" = - ; > , ' ) ! ~ { ] ^ / ( ( / ^ ] { ~ ! ) ' , > ; - = ", -" . + @ # $ % & * * & % $ # @ + . "}; diff --git a/jscomp/build_tests/ocamlgraph/editor/ed_main.ml b/jscomp/build_tests/ocamlgraph/editor/ed_main.ml deleted file mode 100755 index b7309cd4ec..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/ed_main.ml +++ /dev/null @@ -1,1067 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* This file is a contribution of Benjamin Vadon *) - -open Format - -open Ed_hyper -open Ed_graph -open Ed_display - -let debug = ref false -let trace f x = - try f x with e -> eprintf "TRACE: %s@." (Printexc.to_string e); raise e - -let _ = GMain.Main.init () - -(* Model for the treeview on the left *) - -module Model = struct - - open Gobject.Data - - let cols = new GTree.column_list - let name = cols#add string - let vertex = cols#add caml - let model = GTree.tree_store cols - let rows = H.create 97 - - - let find_row v = - try - H.find rows v - with Not_found -> - Format.eprintf "anomaly: no model row for %s@." (string_of_label v); - raise Not_found - - let add_vertex v = - let row = model#append () in - model#set ~row ~column:name (string_of_label v); - model#set ~row ~column:vertex v; - H.add rows v row; - row - - let add_edge_1 row_v w = - let row = model#append ~parent:row_v () in - model#set ~row ~column:name (string_of_label w); - model#set ~row ~column:vertex w - - let add_edge v w = - let row_v = find_row v in - add_edge_1 row_v w; - if not G.is_directed then - let row_w = find_row w in - add_edge_1 row_w v - - let find_children row_v w = - let nb_child = model#iter_n_children (Some row_v) in - let rec find n = - let child = model#iter_children ~nth:(n-1) (Some row_v) in - let child_vertex = model#get ~row:child ~column:vertex in - match n with - | 0 -> raise Not_found - | n -> - if (G.V.equal child_vertex w) - then child - else find (n-1) - in - find nb_child - - let remove_edge_1 row_v w = - ignore (model#remove (find_children row_v w)) - - let remove_edge v w = - let row_v = find_row v in - remove_edge_1 row_v w; - if not G.is_directed then - let row_w = find_row w in - remove_edge_1 row_w v - - let remove_vertex vertex = - G.iter_succ (fun w -> remove_edge w vertex) !graph vertex; - let row = find_row vertex in - model#remove row - - let reset () = - H.clear rows; - model#clear (); - G.iter_vertex - (fun v -> - let row = add_vertex v in - G.iter_succ (add_edge_1 row) !graph v) - !graph - -end - - - -let () = Model.reset () - -let ed_name = "Ocamlgraph's Editor" - - -(* Main GTK window *) -let window = GWindow.window ~border_width: 10 ~position: `CENTER () - - -(* usual function to change window title *) -let set_window_title () = - window#set_title - (match !graph_name with - | None -> ed_name - | Some name -> ed_name^" : "^(Filename.chop_extension (Filename.basename name))) - - -(* menu bar *) -let v_box = GPack.vbox ~homogeneous:false ~spacing:30 ~packing:window#add () -let menu_bar_box = GPack.vbox ~packing:v_box#pack () - -(* treeview on the left, canvas on the right *) -let h_box = GPack.hbox ~homogeneous:false ~spacing:30 ~packing:v_box#add () - -let sw = GBin.scrolled_window ~shadow_type:`ETCHED_IN ~hpolicy:`NEVER - ~vpolicy:`AUTOMATIC ~packing:h_box#add () - -let canvas = - GnoCanvas.canvas - ~aa:!aa - ~width:(truncate w) - ~height:(truncate h) - ~packing:h_box#add () - -(* unit circle as root of graph drawing *) -let canvas_root = - let circle_group = GnoCanvas.group ~x:300.0 ~y:300.0 canvas#root in - circle_group#lower_to_bottom (); - let w2 = 2. in - let circle = GnoCanvas.ellipse ~props:[ `X1 (-.w/.2. +.w2); `Y1 (-.h/.2. +.w2); - `X2 (w/.2. -.w2) ; `Y2 ( h/.2. -.w2) ; - `FILL_COLOR color_circle ; `OUTLINE_COLOR "black" ; - `WIDTH_PIXELS (truncate w2) ] circle_group - in - circle_group#lower_to_bottom (); - circle#show(); - let graph_root = GnoCanvas.group ~x:(-.300.0) ~y:(-.300.0) circle_group in - graph_root#raise_to_top (); - set_window_title (); - graph_root - - -(* current root used for drawing *) -let root = ref (choose_root ()) - - -let load_graph f = - Ed_graph.load_graph f; - Model.reset (); - set_window_title (); - root := choose_root () - - -(* refresh rate *) -let refresh = ref 0 -let do_refresh () = - !refresh mod !refresh_rate = 0 - - - -(* graph drawing *) -let draw tortue canvas = - match !root with - | None -> () - | Some root -> - Ed_draw.draw_graph root tortue; - Ed_display.draw_graph root canvas; - if do_refresh () then - canvas_root#canvas#update_now () - - -let refresh_draw () = - refresh := 0; - let tor = make_turtle !origine 0.0 in - draw tor canvas_root - -let refresh_display () = - Ed_display.draw_graph !root canvas_root - - - -let root_change vertex ()= - root := vertex; - origine := start_point; - let turtle = make_turtle_origine () in - draw turtle canvas_root - - - - -let node_selection ~(model : GTree.tree_store) path = - let row = model#get_iter path in - let vertex = model#get ~row ~column: Model.vertex in - root_change (Some vertex) () - - - - - -(* usual function ref, for vertex event *) -let set_vertex_event_fun = ref (fun _ -> ()) - -(* type to select nature of modification *) -type modification = Add | Remove - -(* add a vertex with no successor *) -let add_node () = - let window = GWindow.window - ~title: "Choose vertex label" - ~width: 300 - ~height: 50 - ~position: `MOUSE - () in - let vbox = GPack.vbox - ~packing: window#add () in - let entry = GEdit.entry - ~max_length: 50 - ~packing: vbox#add () in - entry#set_text "Label"; - entry#select_region - ~start:0 - ~stop:entry#text_length; - (*two check buttons allowing to add node to selection list and to choose this node as root*) - let hbox = GPack.hbox - ~packing: vbox#add () in - let is_in_selection = ref false in - let in_selection = GButton.check_button - ~label: "Add to selection" - ~active:!is_in_selection - ~packing: hbox#add () in - ignore (in_selection#connect#toggled - ~callback:(fun () ->is_in_selection := in_selection#active )); - let is_as_root = ref ((G.nb_vertex !graph)=0) in - let as_root = GButton.check_button - ~label:"Choose as root" - ~active:!is_as_root - ~packing:hbox#add () in - ignore (as_root#connect#toggled - ~callback:(fun () ->is_as_root := as_root#active )); - window#show (); - (*entry's callback*) - ignore( entry#connect#activate - ~callback: (fun () -> - let text = entry#text in - window#destroy (); - (* new vertex *) - let vertex = G.V.create (make_node_info text) in - G.add_vertex !graph vertex ; - ignore (Model.add_vertex vertex); - Ed_display.add_node canvas_root vertex; - !set_vertex_event_fun vertex; - if !is_as_root then root_change (Some vertex) () ; - if !is_in_selection then update_vertex vertex Select; - let tor = make_turtle !origine 0.0 in - draw tor canvas_root)) - - - - - - -(* add an edge between n1 and n2 , add link in column and re-draw *) -let add_edge n1 n2 ()= - if not (edge n1 n2) - then begin - G.add_edge_e !graph (G.E.create n1 (make_edge_info ()) n2); - Model.add_edge n1 n2; - let tor = make_turtle !origine 0.0 in - draw tor canvas_root; - end - - -let add_edge_no_refresh n1 n2 ()= - if not (edge n1 n2) - then begin - G.add_edge_e !graph (G.E.create n1 (make_edge_info ()) n2); - Model.add_edge n1 n2 - end - -(* remove an edge between n1 and n2 , add un-link in column and re-draw *) -let remove_edge n1 n2 ()= - if (edge n1 n2) - then begin - G.remove_edge !graph n1 n2; - Model.remove_edge n1 n2; - begin - try - let _,n = H2.find intern_edges (n1,n2) in - n#destroy (); - H2.remove intern_edges (n1,n2) - with Not_found -> () - end; - begin - try - let _,n = H2.find intern_edges (n2,n1) in - n#destroy (); - H2.remove intern_edges (n2,n1) - with Not_found -> () - end; - begin - try - let n = H2.find successor_edges (n1,n2) in - n#destroy (); - H2.remove successor_edges (n1,n2) - with Not_found -> () - end; - begin - try - let n = H2.find successor_edges (n2,n1) in - n#destroy (); - H2.remove successor_edges (n2,n1) - with Not_found -> () - end; - let tor = make_turtle !origine 0.0 in - draw tor canvas_root; - end - - -let remove_edge_no_refresh n1 n2 ()= - if (edge n1 n2) - then begin - G.remove_edge !graph n1 n2; - Model.remove_edge n1 n2 - end - - - -(* add successor node to selected node *) -let add_successor node () = - let window = GWindow.window - ~title: "Choose label name" - ~width: 300 - ~height: 50 - ~position: `MOUSE - () in - let vbox = GPack.vbox - ~packing: window#add - () in - let entry = GEdit.entry - ~max_length: 50 - ~packing: vbox#add - () in - entry#set_text "Label"; - entry#select_region - ~start:0 - ~stop:entry#text_length; - window#show (); - ignore (entry#connect#activate - ~callback:(fun () -> - let text = entry#text in - window#destroy (); - (* new vertex *) - let vertex = G.V.create (make_node_info text) in - G.add_vertex !graph vertex ; - ignore (Model.add_vertex vertex); - Ed_display.add_node canvas_root vertex; - !set_vertex_event_fun vertex; - (* new edge *) - G.add_edge_e !graph (G.E.create node (make_edge_info()) vertex); - Model.add_edge node vertex; - (* redraw *) - let tor = make_turtle !origine 0.0 in - draw tor canvas_root - ) - ) - -let remove_vertex vertex () = - G.iter_succ - (fun w -> - begin - try - let _,n = H2.find intern_edges (vertex,w) in - n#destroy (); - H2.remove intern_edges (vertex,w) - with Not_found -> () - end; - begin - try - let _,n = H2.find intern_edges (w,vertex) in - n#destroy (); - H2.remove intern_edges (w,vertex) - with Not_found -> () - end; - begin - try - let n = H2.find successor_edges (vertex,w) in - n#destroy (); - H2.remove successor_edges (vertex,w) - with Not_found -> () - end; - begin - try - let n = H2.find successor_edges (w,vertex) in - n#destroy (); - H2.remove successor_edges (w,vertex) - with Not_found -> () - end; - ) - !graph vertex; - let (n,_,_) = H.find nodes vertex in - n#destroy (); - H.remove nodes vertex; - ignore (Model.remove_vertex vertex); - G.remove_vertex !graph vertex; - begin match !root with - | None -> () - | Some root_v -> - if (G.V.equal root_v vertex) - then root := choose_root(); - end; - refresh_draw () - - - -let sub_edge_to modif_type vertex list = - let ll = List.length list in - let nb_sub_menu = (ll - 1)/10 + 1 in - let nb_edge = ll / nb_sub_menu -1 in - let menu = new GMenu.factory (GMenu.menu()) in - let sub_menu =ref (new GMenu.factory (GMenu.menu())) in - let add_menu_edge vertex v2 = - if not (G.V.equal v2 vertex) - then begin - match modif_type with - | Add -> ignore((!sub_menu)#add_item (string_of_label v2) - ~callback:( add_edge v2 vertex)); - | Remove -> ignore((!sub_menu)#add_item (string_of_label v2) - ~callback:(remove_edge v2 vertex)); - end; - in - let rec make_sub_menu vertex list nb = - match list with - | [] -> () - | v::list -> - match nb with - | 0 -> - begin - sub_menu :=new GMenu.factory (GMenu.menu()) ; - add_menu_edge vertex v; - let string = string_of_label v in - ignore (menu#add_item (String.sub string 0 (min (String.length string) 3)^"...") - ~submenu: !sub_menu#menu); - make_sub_menu vertex list (nb+1); - end - | n when n= nb_edge-> - begin - add_menu_edge vertex v; - make_sub_menu vertex list 0 - end - | _ -> - begin - add_menu_edge vertex v; - make_sub_menu vertex list (nb+1) - end - in - if ll > 10 - then begin - make_sub_menu vertex list 0; - menu - end - else begin - let rec make_sub_bis list = - match list with - | [] -> (); - | v::list ->add_menu_edge vertex v; make_sub_bis list - in - make_sub_bis list; - !sub_menu - end - - - -let edge_to modif_type vertex list = - (* add an edge between current vertex and one of selected vertex*) - sub_edge_to modif_type vertex list - - - -let all_edges (edge_menu :#GMenu.menu GMenu.factory) vertex list = - (*add all edges as possible from current vertex to selected vertices*) - begin - let add_all_edge vertex list () = - List.iter (fun v -> if not (G.V.equal v vertex) - then add_edge_no_refresh v vertex() - ) - list ; - refresh := 0; - let tor = make_turtle !origine 0.0 in - draw tor canvas_root - in - ignore (edge_menu#add_item "Add all edges" ~callback:( add_all_edge vertex list)) - end - - - -let contextual_menu vertex ev = - - let menu = new GMenu.factory (GMenu.menu ()) in - (* change root*) - ignore (menu#add_item "As root" ~callback:(root_change (Some vertex))); - - (*vertex menu*) - let vertex_menu = new GMenu.factory (GMenu.menu ()) in - begin - (* successor *) - ignore (vertex_menu#add_item "Add successor" ~callback:(add_successor vertex)); - ignore (vertex_menu#add_separator ()); - (* remove vertex *) - ignore(vertex_menu#add_item "Remove vertex" ~callback:(remove_vertex vertex)); - end; - ignore(menu#add_item "Vertex ops" ~submenu: vertex_menu#menu); - - (*edge menu*) - begin - let add_list = selected_list (ADD_FROM vertex) in - let rem_list = selected_list (REMOVE_FROM vertex) in - let al =List.length add_list in - let rl =List.length rem_list in - let isel = is_selected vertex in - let menu_bool = ref false in - let edge_menu = new GMenu.factory (GMenu.menu ()) in - begin - (* add menu *) - if isel && al=2 - || not isel && al=1 - then begin - ignore (edge_menu#add_item "Add edge with" ~submenu: (edge_to Add vertex add_list)#menu); - menu_bool := true; - end - else begin - if isel && al>2 || - not isel && al>1 - then begin - ignore (edge_menu#add_item "Add edge with" ~submenu: (edge_to Add vertex add_list)#menu); - all_edges edge_menu vertex add_list; - menu_bool := true; - end - end; - (* remove menu *) - if isel && rl>=2 || - not isel && rl>=1 - then begin - if !menu_bool then ignore (edge_menu#add_separator ()); - ignore (edge_menu#add_item "Remove edge with" ~submenu: (edge_to Remove vertex rem_list)#menu); - menu_bool := true; - end; - if !menu_bool then ignore(menu#add_item "Edge ops" ~submenu: edge_menu#menu); - end; - end; - menu#menu#popup ~button:3 ~time:(GdkEvent.Button.time ev) - - - -(* unit circle callback *) -let circle_event ev = - begin match ev with - | `BUTTON_PRESS ev -> - if (GdkEvent.Button.button ev) = 3 - then - begin - let menu = new GMenu.factory (GMenu.menu ()) in - ignore (menu#add_item " Add node" ~callback:(add_node)); - menu#menu#popup - ~button:3 - ~time:(GdkEvent.Button.time ev) - end - | _ ->() - end; - true - - - -(* event for each vertex of canvas *) -let vertex_event vertex item ellispe ev = - - (* let vertex_info = G.V.label vertex in*) - begin match ev with - | `ENTER_NOTIFY _ -> - item#grab_focus (); - update_vertex vertex Focus; - refresh_display () - - | `LEAVE_NOTIFY ev -> - if not (Gdk.Convert.test_modifier `BUTTON1 (GdkEvent.Crossing.state ev)) - then begin - update_vertex vertex Unfocus; - refresh_display () - end - - | `BUTTON_RELEASE ev -> - ellispe#parent#ungrab (GdkEvent.Button.time ev); - - | `MOTION_NOTIFY ev -> - incr refresh; - let state = GdkEvent.Motion.state ev in - if Gdk.Convert.test_modifier `BUTTON1 state then - begin - let curs = Gdk.Cursor.create `FLEUR in - ellispe#parent#grab [`POINTER_MOTION; `BUTTON_RELEASE] - curs (GdkEvent.Button.time ev); - if do_refresh () - then begin - let old_origin = !origine in - let turtle = motion_turtle ellispe ev in - if hspace_dist_sqr turtle <= rlimit_sqr then begin - draw turtle canvas_root - end else begin - origine := old_origin; - let turtle = { turtle with pos = old_origin } in - draw turtle canvas_root - end - end - end - - | `BUTTON_PRESS ev -> - if (GdkEvent.Button.button ev) = 3 - then - begin - contextual_menu vertex ev - end - - | `TWO_BUTTON_PRESS ev-> - if (GdkEvent.Button.button ev) = 1 - then begin - if (Gdk.Convert.test_modifier `CONTROL (GdkEvent.Button.state ev)) - then begin - if ( !nb_selected =0) - then begin - select_all (); - update_vertex vertex Focus - end - else begin - unselect_all (); - update_vertex vertex Focus - end - end - else begin - if (is_selected vertex) - then update_vertex vertex Unselect - else update_vertex vertex Select; - end; - refresh_draw (); - end; - - | _ -> - () - end; - true - - -let set_vertex_event vertex = - let item,ell,_ = H.find nodes vertex in - ignore (item#connect#event ~callback:(vertex_event vertex item ell)) - -let () = set_vertex_event_fun := set_vertex_event - -let set_canvas_event () = - (* circle event *) - ignore(canvas_root#parent#connect#event ~callback:(circle_event)); - (* vertex event *) - G.iter_vertex set_vertex_event !graph - - -(* treeview *) -let add_columns ~(view : GTree.view) ~model = - let renderer = GTree.cell_renderer_text [`XALIGN 0.] in - let vc = GTree.view_column ~title:"Nodes" ~renderer:(renderer, ["text", Model.name]) () - in - ignore (view#append_column vc); - vc#set_sizing `FIXED; - vc#set_fixed_width 100; - (* vc#set_resizable true;*) - vc#set_sizing `AUTOSIZE; - view#selection#connect#after#changed ~callback: - begin fun () -> - List.iter - (fun p -> node_selection ~model p) - view#selection#get_selected_rows; - end - - -let _ = window#connect#destroy~callback:GMain.Main.quit - - -let treeview = GTree.view ~model:Model.model ~packing:sw#add () -let () = treeview#set_rules_hint true -let () = treeview#selection#set_mode `MULTIPLE -let _ = add_columns ~view:treeview ~model:Model.model - - - - - -(* reset *) - -let reset_table_and_canvas () = - let l = canvas_root#get_items in - List.iter (fun v -> trace v#destroy ()) l; - H2.clear intern_edges; - H2.clear successor_edges; - reset_display canvas_root; - origine := start_point; - nb_selected:=0 - - - -(* menu action functions *) - -(* choose a file to load or save to *) -let ask_for_file (mode: [< `OPEN | `SAVE]) = - let default_file d = function - | None -> d - | Some v -> v - in - let all_files () = - let f = GFile.filter ~name:"All" () in - f#add_pattern "*" ; - f - in - let graph_filter () = - GFile.filter - ~name:"Fichier de graphes" - ~patterns:[ "*.dot"; "*.gml" ] () - in - let dialog = - begin match mode with - | `OPEN -> - let dialog = - GWindow.file_chooser_dialog - ~action: `OPEN - ~title:"Open graph file" - ~parent: window () in - dialog#add_button_stock `CANCEL `CANCEL ; - dialog#add_select_button_stock `OPEN `OPEN; - dialog - - | `SAVE -> - let dialog = - GWindow.file_chooser_dialog - ~action: `SAVE - ~title: "Save graph as..." - ~parent: window - () in - dialog#set_current_name "my_graph.dot"; - dialog#add_button_stock `CANCEL `CANCEL ; - dialog#add_select_button_stock `SAVE `SAVE; - dialog - end; - in - dialog#add_filter (graph_filter ()) ; - dialog#add_filter (all_files ()) ; - let f = match dialog#run () with - | `OPEN -> default_file "" dialog#filename - | `SAVE -> default_file "my_graph.dot" dialog#filename - | `DELETE_EVENT | `CANCEL -> "" - in - dialog#destroy (); - f - - -(* menu action new graph *) -let new_graph () = - let alert_window = GWindow.message_dialog - ~message:("Are you sure you want to start" - ^" a new graph and discard all" - ^" unsaved changes to :\n\n" - ^"\t" - ^(match !graph_name with - | None -> "unamed" - | Some name -> name) - ^"") - ~use_markup:true - ~title:"New graph ?" - ~message_type:`QUESTION - ~buttons:GWindow.Buttons.yes_no - ~parent:window - ~resizable:false - ~position:`CENTER_ON_PARENT - () - in - begin - match alert_window#run () with - | `YES -> - begin - graph := G.create (); - Model.reset(); - reset_table_and_canvas (); - graph_name := None; - set_window_title () - end - | `DELETE_EVENT | `NO -> () - end; - alert_window#destroy () - - - -(* menu action open graph *) -let open_graph () = - let file = ask_for_file `OPEN in - if file <> "" - then - begin - load_graph file; - reset_table_and_canvas (); - let turtle = make_turtle_origine () in - draw turtle canvas_root; - set_canvas_event () - end - -(* menu action save graph as *) -let save_graph_as () = - let file = ask_for_file `SAVE in - if file <> "" - then begin - save_graph file; - set_window_title () - end - -(* menu action save graph *) -let save_graph () = - match !graph_name with - | None -> () - | Some name -> - begin - save_graph name; - set_window_title () - end - -(* menu action quit *) -let quit () = - let alert_window = GWindow.message_dialog - ~message:("Are you sure you want to quit" - ^" and discard all" - ^" unsaved changes to :\n\n" - ^"\t" - ^(match !graph_name with - | None -> "unamed" - | Some name -> name) - ^"") - ~use_markup:true - ~title:"Quit ?" - ~message_type:`QUESTION - ~buttons:GWindow.Buttons.yes_no - ~parent:window - ~resizable:false - ~position:`CENTER_ON_PARENT - () - in - begin - match alert_window#run () with - | `YES -> window#destroy () - | `DELETE_EVENT | `NO -> () - end - -(* menu action about *) -let about () = - let dialog = GWindow.about_dialog - ~authors:["Ocamlgraph :"; - " Sylvain Conchon"; - " Jean-Christophe Filliatre"; - " Julien Signoles"; - ""; - ed_name^" :"; - " Vadon Benjamin"] - ~comments:" Ocamlgraph: a generic graph library for OCaml" - ~copyright:"Copyright (C) 2004-2007 -Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles" - ~license:" This software is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License version 2, with the special exception on linking -described in file LICENSE. - -This software is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - ~logo:(GdkPixbuf.from_file"ed_icon.xpm" ) - ~name:ed_name - ~version:"0.99" - ~website:"http://ocamlgraph.lri.fr/" - ~parent:window - ~title:"About" - ~resizable:false - ~position:`CENTER_ON_PARENT - () - in - try ignore( dialog#run ()) - with Not_found -> dialog#destroy () - - - -let handbook_text (view:GText.view) = - let buffer = view#buffer in - (* text's tags *) - ignore (buffer#create_tag ~name:"annotation" [`LEFT_MARGIN 10; `RIGHT_MARGIN 10; `SIZE (7*Pango.scale)]); - ignore (buffer#create_tag ~name:"center" [`JUSTIFICATION `CENTER]); - ignore (buffer#create_tag ~name:"heading" [`UNDERLINE `SINGLE; `WEIGHT `BOLD; `SIZE (14*Pango.scale)]); - ignore (buffer#create_tag ~name:"italic" [`LEFT_MARGIN 10; `RIGHT_MARGIN 10; `STYLE `ITALIC]); - ignore (buffer#create_tag ~name:"item" [`LEFT_MARGIN 20; `RIGHT_MARGIN 10]); - ignore (buffer#create_tag ~name:"subsection" [`LEFT_MARGIN 10; `RIGHT_MARGIN 10]); - ignore (buffer#create_tag ~name:"title" [`WEIGHT `BOLD; `SIZE (17*Pango.scale);`JUSTIFICATION `CENTER]); - ignore (buffer#create_tag ~name:"word_wrap" [`WRAP_MODE `WORD; `EDITABLE false]); - let iter = buffer#get_iter_at_char 0 in - (* title *) - buffer#insert ~iter ~tag_names:["title"] (ed_name^" Handbook\n"); - (* editor's icon *) - let image_anchor = buffer#create_child_anchor iter in - let image = GMisc.image - ~pixbuf:(GdkPixbuf.from_file_at_size "ed_icon.xpm" ~width:70 ~height:70) - () in - view#add_child_at_anchor image#coerce image_anchor; - buffer#insert ~iter "\n\n\n"; - let start,stop = buffer#bounds in - buffer#apply_tag_by_name "center" ~start ~stop ; - (* buffer's text *) - buffer#insert ~iter ~tag_names:["heading"] "First words\n"; - buffer#insert ~iter ~tag_names:["subsection"] - ("\tFirst of all, you have to know this is an experimental application. " - ^"If you find a bug, please report it to the developers. " - ^"This application has only basic functionalities on graphs, so if you want a new functionality, send it too.\n"); - buffer#insert ~iter ~tag_names:["subsection"] - (ed_name^" represents a graph in hyperbolic geometry, and specifically in Poincaré's disk representation.\n\n" - ^ed_name^" is organized in four parts :\n"); - buffer#insert ~iter ~tag_names:["item"] "- a menu bar\n"; - buffer#insert ~iter ~tag_names:["item"] "- a vertex list, on the left side\n"; - buffer#insert ~iter ~tag_names:["item"] "- the Poincaré's disk\n"; - buffer#insert ~iter ~tag_names:["item"] "- and an associated contextual menu\n\n"; - buffer#insert ~iter ~tag_names:["heading"] "Menu bar\n"; - buffer#insert ~iter ~tag_names:["subsection"] - "\t It provides standard functionalities. You can create a new graph, open and save graphs from/to the Gml and Dot formats.\n"; - buffer#insert ~iter ~tag_names:["italic"] - "Don't forget to save your changes before create or load a new graph.\n\n"; - buffer#insert ~iter ~tag_names:["heading"] "Vertex list\n"; - buffer#insert ~iter ~tag_names:["subsection"] - "\t You can change the root the of graph diagram by clicking on a vertex name. If you expand one, you can see its descendants.\n\n"; - buffer#insert ~iter ~tag_names:["heading"] "Poincaré's disk\n"; - buffer#insert ~iter ~tag_names:["subsection"] - ("\t The graph is displayed in a disk. You can drag vertex to move the whole graph around."); - buffer#insert ~iter ~tag_names:["annotation"] "[1]\n"; - buffer#insert ~iter ~tag_names:["subsection"] - ("By double-clicking on a node, you add/remove it to the current selection.\nWith a +double-click you select all nodes, or unselect all (if one or more node is already selected)" - ^"\n\n"); - buffer#insert ~iter ~tag_names:["heading"] "Contextual menu\n"; - buffer#insert ~iter ~tag_names:["subsection"] - ("\t This is the main way (and the only for the moment) to edit a graph. There are two different menus, but the distinction is transparent for the user.\n" - ^"The first is only composed by an 'adding node' menu, and appears when you click anywhere in the background of the disk.\n" - ^"The second menu appears when you click on a vertex." - ^" You can change root of the graph diagram, add a child node or remove the focused vertex." - ^" The remainder of the menu depends on which nodes are selected. You can add or remove an edge with one of them selected, or with all." - ^"\n\n"); - buffer#insert ~iter ~tag_names:["annotation"] "[1] :"; - buffer#insert ~iter ~tag_names:["subsection"] " a bug still remains, you can't drag root to much on the right-side, but on the left-side it is infinite"; - let start,stop = buffer#bounds in - buffer#apply_tag_by_name "word_wrap" ~start ~stop ; - () - - - -(* menu action handbook *) -let handbook () = - let dialog = GWindow.dialog - ~width:450 - ~height:450 - ~title:"Handbook" - () in - let view = GText.view () in - let sw = GBin.scrolled_window ~packing:dialog#vbox#add () - in - sw#add view#coerce; - handbook_text view; - dialog#add_button_stock `CLOSE `CLOSE; - match dialog#run () with - | `CLOSE | `DELETE_EVENT -> dialog#destroy () - -(* menu bar, based on ui_manager *) -let ui_info = "\ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - " - -(* choose right menu action *) -let activ_action ac = - let name = ac#name in - match name with - | "New graph" -> new_graph () - | "Open graph"-> open_graph () - | "Save graph" -> save_graph () - | "Save graph as..." -> save_graph_as () - | "Quit" -> quit () - | "About" -> about () - | "Handbook" -> handbook () - | _ -> Format.eprintf "%s menu is not yet implemented @." name - - -let setup_ui window = - let add_action = GAction.add_action in - let actions = GAction.action_group ~name:"Actions" () in - GAction.add_actions actions - [ add_action "FileMenu" ~label:"_File" ; - add_action "HelpMenu" ~label:"_Help" ; - - add_action "New graph" ~stock:`NEW ~tooltip:"Create a new graph" - ~callback:activ_action ; - add_action "Open graph" ~stock:`OPEN ~tooltip:"Open a graph file" - ~callback:activ_action ; - add_action "Save graph" ~stock:`SAVE ~tooltip:"Save current graph" - ~callback:activ_action ; - add_action "Save graph as..." ~stock:`SAVE_AS ~accel:"S" - ~tooltip:"Save current graph to specified file" - ~callback:activ_action ; - add_action "Quit" ~stock:`QUIT ~tooltip:"Quit" - ~callback:activ_action ; - add_action "About" ~label:"_About" ~tooltip:"Who build this" - ~callback:activ_action; - add_action "Handbook" ~label:"_Handbook" ~accel:"H" ~tooltip:"How to.." - ~callback:activ_action; - ] ; - let ui_m = GAction.ui_manager () in - ui_m#insert_action_group actions 0 ; - window#add_accel_group ui_m#get_accel_group ; - ignore (ui_m#add_ui_from_string ui_info) ; - menu_bar_box#pack (ui_m#get_widget "/MenuBar") - - - -let () = - reset_table_and_canvas (); - draw (make_turtle_origine ()) canvas_root; - set_canvas_event (); - canvas#set_scroll_region ~x1:0. ~y1:0. ~x2:w ~y2:h ; - setup_ui window; - ignore (window#show ()); - GMain.Main.main () - diff --git a/jscomp/build_tests/ocamlgraph/editor/editor.ml b/jscomp/build_tests/ocamlgraph/editor/editor.ml deleted file mode 100755 index 6df5797abc..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/editor.ml +++ /dev/null @@ -1,100 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -open Format - -let _ = GMain.Main.init () - - -let print msg () = () -(* print_endline msg; - flush stdout*) - - -let create_menu label menubar = - let item = GMenu.menu_item ~label ~packing:menubar#append () in - GMenu.menu ~packing:item#set_submenu () - -let main () = - - (* Initialisation du fichier de graph *) - - if Sys.argv.(1) = "--help" then - begin - printf "usage: %s file.gml # browse graph of file.gml@." Sys.argv.(0) ; - printf "@." ; - exit 0 - end ; -(* - if Array.length Sys.argv > 2 then - eprintf "%s: ignoring trailing arguments@." Sys.argv.(0) ; - *) - - - - - (* la Fenetre principale *) - let window = - GWindow.window ~border_width: 10 ~title:"Edit'OcamlGraph" () in - let _ = - window#connect#destroy~callback:GMain.Main.quit in - - - (* une Verticale Box pour contenir le menu de la fenetre principale *) - let v_box = - GPack.vbox ~homogeneous:false ~spacing:30 ~packing:window#add () in - - (* la barre de Menu ajoutée dans la V_box *) - let menu_bar = - GMenu.menu_bar ~packing:v_box#pack () in - - (* le menu file : la description puis l'ajout au menu_bar *) - let menu_files = - [ - `I ("_New Graph", print "todo new graph"); - `I ("_Open Graph", print "todo open graph"); - `I ("_Save Graph", print "todo save graph"); - `I ("Save Graph _As ...", print "todo save graph as..."); - `S; - `I ("_Quit", GMain.Main.quit ) - ] - - and menu = - create_menu "File" menu_bar in - - GToolbox.build_menu menu ~entries:menu_files ; - - - - (* la zone d'affichage du graph, le canvas *) - let canvas = - GnoCanvas.canvas ~aa:true ~width:800 ~height:600 ~packing:v_box#add () - in - let root = canvas#root in - - (* l'affichage de la fenetre principale *) - - - window#show (); - - - let _ = Gtree.show_tree root Gtree.T.root 640 480 in - - - GMain.Main.main () - -let _ = main () diff --git a/jscomp/build_tests/ocamlgraph/editor/gen.ml b/jscomp/build_tests/ocamlgraph/editor/gen.ml deleted file mode 100755 index 75f155de8c..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/gen.ml +++ /dev/null @@ -1,30 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -#load "../graph.cma";; -#directory "..";; -open Graph.Pack.Graph;; - -(* -let g = Rand.graph ~v:50 ~e:300 () -let () = print_gml_file g "tests/rand_50_300.gml";; -*) - -let g = Classic.full 30;; -let () = print_gml_file g "tests/full30.gml";; - - diff --git a/jscomp/build_tests/ocamlgraph/editor/graphEd.ml b/jscomp/build_tests/ocamlgraph/editor/graphEd.ml deleted file mode 100755 index 98576a8ae1..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/graphEd.ml +++ /dev/null @@ -1,226 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -open Graph.Pack.Graph -open Outils_math -open Outils_tort -open Format -open Graphics - -let graph = parse_gml_file Sys.argv.(1) - -exception Choose of V.t - -let grey = rgb 128 128 128 - - -let root = - try - iter_vertex (fun v -> raise (Choose v)) graph; - Format.eprintf "empty graph@."; exit 0 - with Choose v -> - v - -(* [step_from n] computes the best `distance' for solving the - dictator's problem in the complex hyperbolic plane for [n] - dictators. In a half-plane, we have to use the distance - given by [step_from (2*n)] or, better, the distance given - by [step_from (2*max(3 n))]. *) -let step_from n = - ath (tan (pi_over_4 -. pi/.float(2*n))) - -(* [hspace_dist_sqr turtle] computes the square of the distance - between the origin and the half-space in front of [turtle]. *) -let hspace_dist_sqr turtle = - let (ax, ay) = turtle.pos - and (dx, dy) = turtle.dir in - if ax*.dx +. ay*.dy < 0.0 then 0.0 else - begin - let ux = dy and uy = -.dx in - let alpha = ax*.ax +. ay*.ay - and beta = 2.0*.(ax*.ux +. ay*.uy) in - if beta = 0.0 then - alpha - else - begin - let gamma = (1.0 +. alpha)/.beta in - let delta = gamma*.gamma -. 1.0 in - let sol = - if beta > 0.0 - then -.gamma +. sqrt(delta) - else -.gamma -. sqrt(delta) in - let (zx, zy) = translate (ax, ay) (ux*.sol, uy*.sol) in - zx*.zx +. zy*.zy - end - end ;; - -let draw_label v = - draw_string (string_of_int (V.label v)) - -let edge v w = mem_edge graph v w || mem_edge graph w v - -let make_subgraph l = - let gl = create () in - List.iter (fun v -> add_vertex gl v) l; - List.iter - (fun v -> List.iter (fun w -> if edge v w then add_edge gl v w) l) - l; - (* TODO: efficacite *) - gl - -let order_children l = - let gl = make_subgraph l in - let scc = Components.scc_list gl in - let order_component c = - let gc = make_subgraph c in - let v = match c with - | v :: l -> - List.fold_left - (fun m v -> if out_degree gc v < out_degree gc m then v else m) - v l - | [] -> - assert false - in - let l = ref [] in - Dfs.prefix_component (fun w -> l := w :: !l) gc v; - !l - in - let scc = List.map order_component scc in - List.flatten scc - -let rlimit = 0.90 -let rlimit_sqr = rlimit *. rlimit - -module Vset = Set.Make(V) -let vset_of_list = List.fold_left (fun s x -> Vset.add x s) Vset.empty - - -module H = Hashtbl.Make(V) - -let pos = H.create 97 - -let rec draw_graph noeud tortue = - if hspace_dist_sqr tortue <= rlimit_sqr then - begin - H.add pos noeud (0,tortue); - tmoveto tortue; - draw_label noeud; - let l = succ graph noeud in - let l = List.filter (fun x -> not (H.mem pos x) ) l in - let l = order_children l in - let n = List.length l in - if n > 0 then - begin - let pas = step_from (max 3 n) - and angle = 2. *. pi /. (float n) in - let ll = draw_edges tortue pas angle l in - List.iter (fun (v,tv) -> H.add pos v (1,tv)) ll; - List.iter - (fun (w,tw) -> - let l = succ graph w in - let l = List.filter (fun x -> not (H.mem pos x)) l in - let n = List.length l in - if n > 0 then - begin - let pas = step_from (max 3 n) - and angle = pi /. (float n) in - let tw = turn_right tw ((pi -. angle) /. 2.) in - let l = draw_edges tw pas angle l in - List.iter (fun (v,tv) -> H.add pos v (2,tv)) l - end) - ll; - (* draw intern edges *) - set_color grey; - H.iter - (fun v (lv,tv) -> - List.iter - (fun w -> - try - let lw,tw = H.find pos w in - if abs (lw - lv) <> 1 then begin tmoveto tv; tlineto tw end - with Not_found -> - ()) - (succ graph v)) - pos; - set_color black - - end - end -and draw_edges t pas angle= function - | [] -> - [] - | v :: l -> - let tv = tdraw_edge t pas 10 in - if hspace_dist_sqr t <= rlimit_sqr - then (draw_label v; H.add pos v (1,t)); - - let t = turn_left t angle in - let list = (v,tv) :: draw_edges t pas angle l in - draw_graph v tv ; - list - -let draw origine tortue = - H.clear pos; - draw_graph root tortue - - - -let () = open_graph (sprintf " %dx%d" (truncate w) (truncate h)) - -let tortue = - let (x,y) = from_tortue !origine in - moveto x y; - make_turtle !origine 0.0 - -let old_xy = ref None -let flags = [Button_down; Button_up; Key_pressed; Mouse_motion] - - - -let rec boucle tortue = - let st = wait_next_event flags in - if st.button then begin match !old_xy with - | None -> - clear_graph (); - draw origine tortue; - old_xy := Some(st.mouse_x, st.mouse_y); - boucle tortue - | Some(x,y) -> - let z1 = to_tortue(x,y) - and z2 = to_tortue (st.mouse_x, st.mouse_y) in - clear_graph (); - origine := drag_origin !origine z1 z2 ; - let tort = make_turtle_dir !origine tortue.dir in - old_xy := Some(st.mouse_x, st.mouse_y); - draw origine tortue; - boucle tort - end - else - begin - match !old_xy with - | None -> - draw origine tortue; - boucle tortue - | Some(x,y) -> - clear_graph (); - draw origine tortue; - old_xy := None; - boucle tortue - end - -let () = boucle tortue - diff --git a/jscomp/build_tests/ocamlgraph/editor/graphEdGTK.ml b/jscomp/build_tests/ocamlgraph/editor/graphEdGTK.ml deleted file mode 100755 index 283576aa62..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/graphEdGTK.ml +++ /dev/null @@ -1,875 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -open Format -open Outils_tort -open Outils_math -open Graph - -(* graph data structure *) -module Gr = struct - module G = Imperative.Graph.Abstract(String) - module B = Builder.I(G) - module GmlParser = - Gml.Parse - (B) - (struct - let node l = - try - match List.assoc "id" l - with Gml.Int n -> string_of_int n | _ -> "" - with Not_found -> "" - let edge _ = () - end) - - module DotParser = - Dot.Parse - (B) - (struct - let node (id,_) _ = match id with - | Dot_ast.Ident s - | Dot_ast.Number s - | Dot_ast.String s - | Dot_ast.Html s -> s - let edge _ = () - end) - - let parse_file f = - if Filename.check_suffix f ".gml" then - GmlParser.parse f - else - DotParser.parse f - - module Components = Components.Make(G) - module Dfs = Traverse.Dfs(G) -end -open Gr -open Gr.G - -let debug_graphEdGTK = ref false -let trace f x = try f x with e -> eprintf "TRACE: %s@." (Printexc.to_string e); raise e - -let _ = GMain.Main.init () - -let graph = ref (Gr.parse_file Sys.argv.(1)) - -exception Choose of V.t - -type t = V.t -type label = V.t -let label x = x -let string_of_label x = V.label x -let label_of_string x = x - -(* [step_from n] computes the best `distance' for solving the - dictator's problem in the complex hyperbolic plane for [n] - dictators. In a half-plane, we have to use the distance - given by [step_from (2*n)] or, better, the distance given - by [step_from (2*max(3 n))]. *) -let step_from n = - ath (tan (pi_over_4 -. pi/.float(2*n))) - - -(* [hspace_dist_sqr turtle] computes the square of the distance - between the origin and the half-space in front of [turtle]. *) -let hspace_dist_sqr turtle = - let (ax, ay) = turtle.pos - and (dx, dy) = turtle.dir in - (* if ax*.dx +. ay*.dy < 0.0 then 0.0 else*) - begin - let ux = dy and uy = -.dx in - let alpha = ax*.ax +. ay*.ay - and beta = 2.0*.(ax*.ux +. ay*.uy) in - if beta = 0.0 then - alpha - else - begin - let gamma = (1.0 +. alpha)/.beta in - let delta = gamma*.gamma -. 1.0 in - let sol = - if beta > 0.0 - then -.gamma +. sqrt(delta) - else -.gamma -. sqrt(delta) in - let (zx, zy) = translate (ax, ay) (ux*.sol, uy*.sol) in - zx*.zx +. zy*.zy - end - end ;; - - - -let edge v w = mem_edge !graph v w || mem_edge !graph w v - -let make_subgraph l = - let gl = create () in - List.iter (fun v -> add_vertex gl v) l; - List.iter - (fun v -> List.iter (fun w -> if edge v w then add_edge gl v w) l) - l; - (* TODO: efficacite *) - gl - -let order_children l = - let gl = make_subgraph l in - let scc = Components.scc_list gl in - let order_component c = - let gc = make_subgraph c in - let v = match c with - | v :: l -> - List.fold_left - (fun m v -> if out_degree gc v < out_degree gc m then v else m) - v l - | [] -> - assert false - in - let l = ref [] in - Dfs.prefix_component (fun w -> l := w :: !l) gc v; - !l - in - let scc = List.map order_component scc in - List.flatten scc - - -let rlimit = 0.90 -let rlimit_sqr = rlimit *. rlimit - - - - -module Model = struct - - open Gobject.Data - let cols = new GTree.column_list - let name = cols#add string - let vertex = cols#add caml - - let model = GTree.tree_store cols - - let rows = Hashtbl.create 97 - - let add_vertex v = - let row = model#append () in - model#set ~row ~column:name (V.label v); - model#set ~row ~column:vertex v; - Hashtbl.add rows v row; - row - - let add_edge_1 row_v w = - let row = model#append ~parent:row_v () in - model#set ~row ~column:name (V.label w) - - let reset () = - Hashtbl.clear rows; - model#clear (); - iter_vertex - (fun v -> - let row = add_vertex v in - iter_succ (add_edge_1 row) !graph v) - !graph - - let add_edge v w = - let row_v = Hashtbl.find rows v in - add_edge_1 row_v w; - if not is_directed then - let row_w = Hashtbl.find rows w in - add_edge_1 row_w v - -end - -let () = Model.reset () -let model = ref Model.model - -open GtkTree - - - -(* Ouverture fenetre GTK *) -let window = GWindow.window ~border_width: 10 ~title:"GraphEd" ~position: `CENTER () -(* une Verticale Box pour contenir le menu de la fenetre principale *) -let v_box = GPack.vbox ~homogeneous:false ~spacing:30 ~packing:window#add () -(* la barre de Menu ajoutée dans la V_box *) -let menu_bar = GMenu.menu_bar ~packing:v_box#pack () -let h_box = GPack.hbox ~homogeneous:false ~spacing:30 ~packing:v_box#add () -let sw = GBin.scrolled_window ~shadow_type:`ETCHED_IN ~hpolicy:`NEVER - ~vpolicy:`AUTOMATIC ~packing:h_box#add () -let canvas = GnoCanvas.canvas ~aa:true ~width:(truncate w) ~height:(truncate h) ~packing:h_box#add () - -let canvas_root = canvas#root - - - -let choose_root () = - try - iter_vertex (fun v -> raise (Choose v)) !graph; - Format.eprintf "empty graph@."; exit 0 - with Choose v -> - v - -let root = ref (choose_root ()) - -let load_graph f = - graph := parse_file f; - Model.reset (); - root := choose_root () - -module Vset = Set.Make(V) -let vset_of_list = List.fold_left (fun s x -> Vset.add x s) Vset.empty - - - - -module H = Hashtbl.Make(V) - -(* table donnant pour chaque noeud sa profondeur et sa tortue *) -let pos = H.create 97 - -(* table des ellipses existantes *) -let ellipses = H.create 97 - -let tdraw_string_gtk v tor canvas = - let ellipse = - try - let item = H.find ellipses v in - item#parent#show(); - item - with Not_found -> - let s = string_of_label v in - let (w,h) = (40,20) in - let noeud = GnoCanvas.group ~x:0.0 ~y:0.0 canvas in - let ellipse = GnoCanvas.ellipse - ~props:[ `X1 ( float_of_int (-w/2)); `Y1 (float_of_int (-h/2)); - `X2 (float_of_int (w/2)) ; `Y2 ( float_of_int (h/2)) ; - `FILL_COLOR "grey" ; `OUTLINE_COLOR "black" ; - `WIDTH_PIXELS 0 ] noeud - in - let texte = GnoCanvas.text ~props:[`X 0.0; `Y 0.0 ; `TEXT s; - `FILL_COLOR "blue"] noeud - in - let w2 = texte#text_width in - if w2 > float_of_int w - then - ellipse#set [ `X1 (-.( w2+.6.)/.2.); `X2 ((w2+.6.)/.2.)]; - H.add ellipses v ellipse; - ellipse - in - tdraw_string_gtk tor ellipse; - ellipse - -module H2 = - Hashtbl.Make - (struct - type t = V.t * V.t - let hash (v,w) = Hashtbl.hash (V.hash v, V.hash w) - let equal (v1,w1) (v2,w2) = V.equal v1 v2 && V.equal w1 w2 - end) - -let grey_edges = H2.create 97 -let black_edges = H2.create 97 - -let draw_grey_edge vw tv tw canvas = - (* debug *) - if !debug_graphEdGTK - then - ( - let (v,w)= - let (v,w) = vw in - (string_of_label v, string_of_label w) in - eprintf "tortue %s \t tortue %s@." v w - ); - (* /debug *) - - let p,l = - try - let _,l as pl = H2.find grey_edges vw in - l#show(); - pl - with Not_found -> - let p = GnomeCanvas.PathDef.new_path () in - let l = GnoCanvas.bpath canvas - ~props:[ `BPATH p ; `OUTLINE_COLOR "SlateGrey" ; `WIDTH_PIXELS 1 ] in - l#lower_to_bottom (); - H2.add grey_edges vw (p,l); - p,l - in - - let (x,y) = let (x ,y ) = from_tortue tv.pos in ((float_of_int x),(float_of_int y)) in - let (x',y') = let (x',y') = from_tortue tw.pos in ((float_of_int x'),(float_of_int y')) in - let rapport = 1.95 in - GnomeCanvas.PathDef.reset p; - GnomeCanvas.PathDef.moveto p x y ; - GnomeCanvas.PathDef.curveto p ((x+. x')/.rapport) ((y +. y')/.rapport) - ((x +.x')/.rapport) ((y +. y')/.rapport) - x' y'; - l#set [`BPATH p] - - - - -let tdraw_edge_gtk vw t distance etapes canvas = - let line = - try - let l = H2.find black_edges vw in - l#show (); - l - with Not_found -> - let color = "black" in - let l = GnoCanvas.line canvas ~props:[ `FILL_COLOR color ; - `WIDTH_PIXELS 1; `SMOOTH true] - in - H2.add black_edges vw l; - l - in - tdraw_edge_gtk t distance etapes line - -let color_change_intern_edge color node = - iter_edges - (fun _ w -> - try - let _,n = H2.find grey_edges (node,w) in - n#set [`OUTLINE_COLOR color] - with Not_found -> - try - let _,n = H2.find grey_edges (w,node) in - n#set [`OUTLINE_COLOR color] - with Not_found -> - () - ) - !graph - - -let color_change_direct_edge color node = - iter_succ - (fun w -> - try - let n = H2.find black_edges (node,w) in - n#set [`FILL_COLOR color] - with Not_found -> - try - let n = H2.find black_edges (w,node) in - n#set [`FILL_COLOR color] - with Not_found -> - () - ) - !graph node - - - - -let select = ref None -let is_selected_node v = match !select with - | None -> false - | Some (w,_) -> V.equal v w - - -let step = ref 0 - - - - - -let rec draw_graph depth noeud tortue canvas = - if !debug_graphEdGTK - then - (let (x,y) = tortue.pos in - Format.eprintf " hspace : %f\t pos : %f %f \tnoeud : %s@." - ( hspace_dist_sqr tortue )x y(string_of_label noeud); - ); - if hspace_dist_sqr tortue <= rlimit_sqr then - begin - H.replace pos noeud (depth, Some tortue); - tmoveto_gtk tortue; - (* draw label *) - let ellipse = tdraw_string_gtk noeud tortue canvas in - let sigs = ellipse#parent#connect in - let _ = sigs#event (drag_label noeud ellipse) in - - let l = succ !graph noeud in - let l = List.filter (fun x -> not (H.mem pos x) ) l in - List.iter (fun w -> H.add pos w (depth+1, None)) l; - let l = order_children l in - let n = List.length l in - if n > 0 then - begin - let distance = step_from (max 3 n) - and angle = (if depth = 0 then 2. else 1.) *. pi /. (float_of_int n) in - let tortue = if depth = 0 then tortue else turn_right tortue ((pi -. angle) /. 2.) in - let _ = draw_edges noeud (depth+1) tortue distance angle canvas l in - () - end; - ellipse#parent#raise_to_top(); - end - else if noeud <> !root - then - try - let ellipse = tdraw_string_gtk noeud tortue canvas in - ellipse#parent#hide(); - iter_succ - (fun w -> - try - ignore (H.find pos w) - with Not_found -> - try - let n = H2.find black_edges (noeud,w) in - n#hide() - with Not_found -> - try - let n = H2.find black_edges (w,noeud) in - n#hide() - with Not_found -> - () - ) - !graph noeud - (* H.remove pos noeud*) - with Not_found -> Format.eprintf"je devrai pas etre la@." - -and draw_edges noeud depth t distance angle canvas= function - | [] -> - [] - | v :: l -> - let etapes = 10 in - let tv = tdraw_edge_gtk (noeud,v) t distance etapes canvas in - (*if hspace_dist_sqr t <= rlimit_sqr then H.add pos v (depth,tv);*) - let t = turn_left t angle in - let l = (v,tv) :: draw_edges noeud depth t distance angle canvas l in - draw_graph depth v tv canvas; - l - - -and drag_label noeud item ev = - begin match ev with - | `ENTER_NOTIFY _ -> - if not (is_selected_node noeud) - then begin - item#set [ `FILL_COLOR "steelblue" ]; - color_change_intern_edge "blue" noeud ; - color_change_direct_edge "blue" noeud - end; - | `LEAVE_NOTIFY ev -> - if not (is_selected_node noeud) - then begin - let state = GdkEvent.Crossing.state ev in - if not (Gdk.Convert.test_modifier `BUTTON1 state) - then item#set [ `FILL_COLOR "grey" ; ]; - color_change_intern_edge "SlateGrey" noeud ; - color_change_direct_edge "black" noeud; - begin match !select with - | None -> () - | Some (n,i) -> begin - color_change_intern_edge "red" n ; - color_change_direct_edge "red" n - end - end; - end - | `BUTTON_RELEASE ev -> - item#parent#ungrab (GdkEvent.Button.time ev) - | `MOTION_NOTIFY ev -> - incr step; - let state = GdkEvent.Motion.state ev in - if Gdk.Convert.test_modifier `BUTTON1 state && !step mod 10 = 0 then - begin - let curs = Gdk.Cursor.create `FLEUR in - item#parent#grab [`POINTER_MOTION; `BUTTON_RELEASE] curs (GdkEvent.Button.time ev); - let ibounds = item#parent#get_bounds in - let z1 = to_tortue(truncate((ibounds.(0)+.ibounds.(2))/.2.), - truncate((ibounds.(1)+. ibounds.(3))/.2.)) in - let mx = GdkEvent.Motion.x ev in - let my = GdkEvent.Motion.y ev in - let z2 = to_tortue (truncate mx, truncate my) in - let tmp = !origine in - let (x,y) = drag_origin !origine z1 z2 in - origine := (x,y); - let tor = make_turtle !origine 0.0 in - if hspace_dist_sqr tor <= rlimit_sqr - then begin - draw tor canvas_root; - if !step mod 15 = 0 then - canvas_root#canvas#update_now () - end else - origine := tmp - end - | `TWO_BUTTON_PRESS ev-> - if (GdkEvent.Button.button ev) = 1 - then selectionner_noeud noeud item; - | `BUTTON_PRESS ev -> - if (GdkEvent.Button.button ev) = 1 - then deselectionner_noeud noeud item ; - if (GdkEvent.Button.button ev) = 3 - then - begin - let loc_menu = GMenu.menu () in - let factory = - new GMenu.factory loc_menu in - ignore (factory#add_item " Ajouter un successeur" ~callback: (ajout_successeur noeud)); - begin match !select with - | None -> () - | Some (n,_) -> - if not(V.equal n noeud) - then begin - ignore (factory#add_item " Ajouter une arrête" ~callback: (ajout_arrete n noeud)); - end - end; - - loc_menu#popup - ~button:3 - ~time:(GdkEvent.Button.time ev); - end - | _ -> - () - end; - true - -and ajout_successeur noeud () = - let window = GWindow.window ~title: "Choix du nom du label" ~width: 300 ~height: 50 () in - let vbox = GPack.vbox ~packing: window#add () in - - let entry = GEdit.entry ~max_length: 50 ~packing: vbox#add () in - entry#set_text "Label"; - entry#select_region ~start:0 ~stop:entry#text_length; - window#show (); - let _ = entry#connect#activate - ~callback: (fun () -> - let text = entry#text in - let label = label_of_string text in - let vertex = V.create label in - add_vertex !graph vertex; - add_edge !graph noeud vertex; - window#destroy (); - ignore (Model.add_vertex vertex); - Model.add_edge noeud vertex; - let tor = make_turtle !origine 0.0 in - draw tor canvas_root) - in - () - -and ajout_arrete n1 n2 () = - if not( edge n1 n2) - then begin - add_edge !graph n1 n2; - Model.add_edge n1 n2; - let tor = make_turtle !origine 0.0 in - draw tor canvas_root - end - - - -and selectionner_noeud noeud item= - begin - begin match !select with - | None -> () - | Some (n,i) -> begin - i#set [ `FILL_COLOR "grey" ; ]; - color_change_intern_edge "SlateGrey" n ; - color_change_direct_edge "black" n - end - end; - select := Some (noeud, item); - item#set [ `FILL_COLOR "red" ]; - color_change_intern_edge "red" noeud ; - color_change_direct_edge "red" noeud - end - -and deselectionner_noeud noeud item = - begin - if is_selected_node noeud - then - begin - item#set [ `FILL_COLOR "steelblue" ]; - color_change_intern_edge "blue" noeud ; - color_change_direct_edge "blue" noeud - end - else - match !select with - | None -> () - | Some (n,i) -> - begin - i#set [ `FILL_COLOR "grey" ; ]; - color_change_intern_edge "SlateGrey" n ; - color_change_direct_edge "black" n; - (* - color_change_intern_edge "red" n ; - color_change_direct_edge "red" n - *) - end; - end; - select := None; - -and draw tortue canvas = - H.clear pos; - canvas#hide(); - draw_graph 0 !root tortue canvas; - - (* H.iter (fun v ev -> if not (H.mem pos v) then ev#parent#hide ()) ellipses; - *) - - (* draw intern edges *) - iter_edges - (fun v w -> - try - begin match H.find pos v, H.find pos w with - | (lv, Some tv), (lw, Some tw) -> - if abs (lw - lv) <> 1 && (lv <> 0 || lw <> 0) - then - begin - (* debug *) - if !debug_graphEdGTK - then - (Format.eprintf "tortue : %s\t\t\t tortue : %s@." (string_of_label v) (string_of_label w); - let (x ,y ) = from_tortue tv.pos - and (x',y') = from_tortue tw.pos in - Format.eprintf "pos x:%d y:%d \t pos x:%d y:%d@." x y x' y'; - ); - (* /debug *) - ignore(draw_grey_edge (v,w) tv tw canvas) - end - else - raise Not_found - | (_, None), _ | _, (_, None) -> - raise Not_found - end - with Not_found -> - begin - (* debug *) - if !debug_graphEdGTK then - Format.eprintf"Je vais tenter de détruire un edge@."; - (* /debug *) - try - let _,l = H2.find grey_edges (w,v) in l#hide(); - (* debug *) - if !debug_graphEdGTK then Format.eprintf"J'ai effacé un grey edge@."; - (* /debug *) - with Not_found -> (); - try - let _,l = H2.find grey_edges (v,w) in l#hide(); - (* debug *) - if !debug_graphEdGTK then Format.eprintf"J'ai effacé un grey edge@."; - (* /debug *) - with Not_found -> (); - end - ) - !graph; - canvas#show() - - -let ajout_noeud () = - let window = GWindow.window ~title: "Choix du nom du label" ~width: 300 ~height: 50 () in - let vbox = GPack.vbox ~packing: window#add () in - - let entry = GEdit.entry ~max_length: 50 ~packing: vbox#add () in - entry#set_text "Label"; - entry#select_region ~start:0 ~stop:entry#text_length; - window#show (); - let _ = entry#connect#activate - ~callback: (fun () -> - let text = entry#text in - let label = label_of_string text in - let vertex = V.create label in - add_vertex !graph vertex; - window#destroy (); - ignore (Model.add_vertex vertex); - let tor = make_turtle !origine 0.0 in - draw tor canvas_root) - in - () - - -let canvas_event ev = - (* Format.eprintf "toto suis-je empty ? : %b@." (is_empty !graph); - *) - begin match ev with - | `BUTTON_PRESS ev -> - if (GdkEvent.Button.button ev) = 1 - then begin - match !select with - | None -> () - | Some(noeud,item) -> - deselectionner_noeud noeud item ; - end; - - if (GdkEvent.Button.button ev) = 3 (* && (is_empty !graph)*) - then - begin - let loc_menu = GMenu.menu () in - let factory = - new GMenu.factory loc_menu in - ignore (factory#add_item " Ajouter un noeud" ~callback: ajout_noeud); - loc_menu#popup - ~button:3 - ~time:(GdkEvent.Button.time ev); - end - | _ -> - () - end; - true - -let _ = canvas#root#connect#event (canvas_event) - - - - - -let node_selection ~(model : GTree.tree_store) path = - let row = model#get_iter path in - let v = model#get ~row ~column: Model.vertex in - root := v; - let tortue = - origine := depart; - let (x,y) = from_tortue !origine in - moveto_gtk x y; - make_turtle !origine 0.0; - in - let l = canvas_root#get_items in - Format.eprintf "il y a %d elements dans le canvas @." (List.length l); - List.iter (fun v -> v#hide()) l; - draw tortue canvas_root - - -let add_columns ~(view : GTree.view) ~model = - let renderer = GTree.cell_renderer_text [`XALIGN 0.] in - let vc = - GTree.view_column ~title:"Nodes" ~renderer:(renderer, ["text", Model.name]) () - in - ignore (view#append_column vc); - vc#set_sizing `FIXED; - vc#set_fixed_width 100; - (* vc#set_resizable true;*) - vc#set_sizing `GROW_ONLY; - view#selection#connect#after#changed ~callback: - begin fun () -> - List.iter - (fun p -> node_selection ~model p) - view#selection#get_selected_rows; - end - - - -let _ = window#connect#destroy~callback:GMain.Main.quit - - -let treeview = GTree.view ~model:!model ~packing:sw#add () -let () = treeview#set_rules_hint true -let () = treeview#selection#set_mode `MULTIPLE -let _ = add_columns ~view:treeview ~model:!model -(*let _ = treeview#misc#connect#realize ~callback:treeview#expand_all*) - -let reset_table_and_canvas () = - let l = canvas_root#get_items in - List.iter (fun v -> trace v#destroy ()) l; - H2.clear grey_edges; - H2.clear black_edges; - H.clear ellipses; - H.clear pos; - origine := depart - - - -let open_graph() = - - let default d = function - | None -> d - | Some v -> v - in - let all_files () = - let f = GFile.filter ~name:"All" () in - f#add_pattern "*" ; - f - in - let graph_filter () = - GFile.filter - ~name:"Fichier de graphes" - ~patterns:[ "*.dot"; "*.gml" ] () - in - let ask_for_file parent = - let dialog = GWindow.file_chooser_dialog - ~action:`OPEN - ~title:"Ouvrir un fichier" - ~parent () in - dialog#add_button_stock `CANCEL `CANCEL ; - dialog#add_select_button_stock `OPEN `OPEN ; - dialog#add_filter (graph_filter ()) ; - dialog#add_filter (all_files ()) ; - let f = match dialog#run () with - | `OPEN ->default "" dialog#filename - | `DELETE_EVENT | `CANCEL -> "" - in - dialog#destroy (); - f - in - let fichier = ask_for_file window in - if fichier <> "" - then - begin - load_graph fichier; - reset_table_and_canvas (); - let tortue = - let (x,y) = from_tortue !origine in - moveto_gtk x y; - make_turtle !origine 0.0 - in - draw tortue canvas_root - end - -let new_graph () = - graph := create (); - model := Model.model; - Model.reset(); - reset_table_and_canvas () - - - -let create_menu label menubar = - let item = GMenu.menu_item ~label ~packing:menubar#append () in - GMenu.menu ~packing:item#set_submenu () - -let print msg () = - print_endline msg; - flush stdout - - -(* le menu file : la description puis l'ajout au menu_bar *) -let menu_files = - [ - `I ("_New Graph", new_graph); - `I ("_Open Graph", open_graph); - `I ("_Save Graph", print "todo save graph"); - `I ("Save Graph _As ...", print "todo save graph as..."); - `S; - `I ("_Quit", GMain.Main.quit ) - ] - -let menu = - create_menu "File" menu_bar - -let _ = GToolbox.build_menu menu ~entries:menu_files - - - -(* la zone d'affichage du graph, le canvas *) -let tortue = - let (x,y) = from_tortue !origine in - moveto_gtk x y; - make_turtle !origine 0.0 - -let () = canvas#set_scroll_region 0. 0. w h - - -(* l'affichage de la fenetre principale *) -let () = window#show () - - - -let _ = draw tortue canvas_root - -let () = GMain.Main.main () diff --git a/jscomp/build_tests/ocamlgraph/editor/gtree.ml b/jscomp/build_tests/ocamlgraph/editor/gtree.ml deleted file mode 100755 index fac060ba04..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/gtree.ml +++ /dev/null @@ -1,297 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - - -(* -module T = -struct - type t = DirTree.t - type label = DirTree.t - let id = DirTree.id - let edges = Hashtbl.create 97 - let children t = - let l = DirTree.children t in - List.iter (fun i -> Hashtbl.replace edges (DirTree.id t, DirTree.id i) ()) l; - l - let label x = x - let string_of_label x = DirTree.string_of_label (DirTree.label x) - - let root = DirTree.from_dir "" Sys.argv.(1) -end -*) - -let debug = ref false - - -type drag_box = - { - db_nom : string; - db_noeud : GnoCanvas.ellipse; - mutable db_x : float; - mutable db_y : float; - db_w : float; - db_h : float; - mutable db_viewable : bool; - } - -let drag_boxes = Hashtbl.create 97 - -module T = -struct - open Graph.Pack.Graph - - let g = parse_gml_file Sys.argv.(1) - - exception Choose of V.t - let root = - try - iter_vertex (fun v -> raise (Choose v)) g; - Format.eprintf "empty graph@."; exit 0 - with Choose v -> - v - - type t = V.t - type label = V.t - - module H = Hashtbl.Make(V) - let ids = H.create 97 - let id = - let r = ref 0 in - fun v -> try H.find ids v with Not_found -> incr r; H.add ids v !r; !r - - let edges = Hashtbl.create 97 - - let make_subgraph l = - let edge v w = mem_edge g v w || mem_edge g w v in - let gl = create () in - List.iter (fun v -> add_vertex gl v) l; - List.iter - (fun v -> List.iter (fun w -> if edge v w then add_edge gl v w) l) - l; - (* TODO: efficacite *) - gl - - let order_children l = - let gl = make_subgraph l in - let scc = Components.scc_list gl in - let order_component c = - let gc = make_subgraph c in - let v = match c with - | v :: l -> - List.fold_left - (fun m v -> if out_degree gc v < out_degree gc m then v else m) - v l - | [] -> - assert false - in - let l = ref [] in - Dfs.prefix_component (fun w -> l := w :: !l) gc v; - !l - in - let scc = List.map order_component scc in - List.flatten scc - - - let children v = - let l = succ g v in - List.iter (fun i -> Hashtbl.replace edges (id v, id i) ()) l; - let l = - List.filter - (fun w -> - try not (Hashtbl.find drag_boxes (id w)).db_viewable - with Not_found -> true) - l - in - let l = order_children l in - if !debug then - ( - Format.printf "children %d: " (V.label v); - List.iter (fun w -> Format.printf "%d " (V.label w)) l; - Format.printf "@."; - ); - l - - let label x = x - let string_of_label x = string_of_int (V.label x) -end - -module HT = Htree.Make(T) - -let step = ref 0 - -let lines = Hashtbl.create 97 - -let show_tree canvas t width height = - let rlimit = 0.98 in - let xzoom = float(width)/.2.0 - and yzoom = float(height)/.2.0 in - let origin = ref (-0.5,0.0) in - let xy2gtk x y = float x -. 300., float(height)/.2. -. float y +. 50. in - let gtk2xy gx gy = truncate (gx +. 300.), truncate ((float height)/.2. +. 50. -. gy) in - let xy2c (x, y) = - let zx = (float(x) -. xzoom)/.xzoom - and zy = (float(y) -. yzoom)/.yzoom in - let zn = sqrt(zx*.zx +. zy*.zy) in - if zn > rlimit then - (rlimit*.zx/.zn, rlimit*.zy/.zn) - else - (zx, zy) - in - let draw_edges () = - let draw_edge (i,j) () = - try - let dbi = Hashtbl.find drag_boxes i in - let dbj = Hashtbl.find drag_boxes j in - let l = - try - Hashtbl.find lines (i,j); - (* - if !debug - then Format.printf "find edge %s ---- %s@." (dbi.db_nom)(dbj.db_nom) - else (); -*) - with Not_found-> - try - Hashtbl.find lines (j,i); - (* if !debug - then Format.printf "find edge %s ---- %s@." (dbi.db_nom)(dbj.db_nom) - else (); - *) - with Not_found -> - let l = GnoCanvas.line canvas ~props:[ `FILL_COLOR "black" ;`WIDTH_PIXELS 1; `SMOOTH true] in - Hashtbl.add lines (i,j) l; - if !debug - then Format.printf "draw_edge %s ---- %s@." (dbi.db_nom)(dbj.db_nom) - else (); - l - in - let p = [| dbi.db_x; dbi.db_y; dbj.db_x; dbj.db_y |] in - l#set [`POINTS p]; - l#lower_to_bottom () - - with Not_found -> - try - let l= Hashtbl.find lines (i,j) in - l#destroy(); - Hashtbl.remove lines (i,j) - with Not_found -> - () - - in - Hashtbl.iter draw_edge T.edges - in - - let rec draw_label lab (zx,zy) facteur_reduction = - if !debug then - Format.printf "draw_label %d@." (T.id lab); - let x = truncate (zx*.xzoom +. xzoom) - and y = truncate (zy*.yzoom +. yzoom) in - let name = T.string_of_label lab in - let (w,h) = (40,15) in - let x0 = x - w/2 - and y0 = y - h/2 in - let fx,fy = xy2gtk x0 y0 in - try - let db = Hashtbl.find drag_boxes (T.id lab) in - db.db_x <- fx; - db.db_y <- fy; - db.db_viewable <- true; - db.db_noeud#parent#set [ `X fx; `Y fy; ]; - db.db_noeud#parent#move ~x:zx ~y:zy; - with Not_found -> - let noeud = GnoCanvas.group ~x:fx ~y:fy canvas in - let ellipse = GnoCanvas.ellipse - ~props:[ `X1 ( float (-w/2)); `Y1 (float (-h/2)); `X2 (float (w/2)) ; `Y2 ( float (h/2)) ; - `FILL_COLOR "grey" ; `OUTLINE_COLOR "black" ; `WIDTH_PIXELS 0 ] noeud - in - let _ = GnoCanvas.text ~props:[`X 0.0; `Y 0.0 ; `TEXT name; `FILL_COLOR "blue"] noeud in - let sigs = noeud#connect in - let db = { db_nom = name; db_noeud = ellipse; db_x = fx; db_y = fy; db_w = float w; db_h = float h; db_viewable = true } in - let _ = sigs#event (drag_label db) in - Hashtbl.add drag_boxes (T.id lab) db; - - and draw_drv = - { HT.rlimit = rlimit ; - HT.moveto = (fun _ -> ()); - HT.lineto = (fun _ -> ()); - HT.curveto = (fun _ _ _ -> ()); - HT.draw_label = draw_label ; - HT.init_edge_pass = (fun () -> ()); - HT.init_label_pass = (fun () -> ()); - HT.finalize = (fun () -> ()) - } - - and draw_linear_tree t c f = - - (* mettre toutes les boites à faux *) - Hashtbl.iter (fun _ db -> db.db_viewable <- false) drag_boxes; - - HT.draw_linear_tree draw_drv t c f; - - (* détruire toutes les boites restées à faux et les aretes correspondantes *) - let l = Hashtbl.fold - (fun i db acc -> - if not db.db_viewable - then - begin - db.db_noeud#parent#destroy (); - db.db_noeud#destroy (); - - i::acc - end - else acc) - drag_boxes [] - in - List.iter (fun i -> Hashtbl.remove drag_boxes i) l; - draw_edges () - - and drag_label db ev = - let item = db.db_noeud in - begin match ev with - | `ENTER_NOTIFY _ -> - item#set [ `FILL_COLOR "steelblue" ] - | `LEAVE_NOTIFY ev -> - let state = GdkEvent.Crossing.state ev in - if not (Gdk.Convert.test_modifier `BUTTON1 state) - then item#set [ `FILL_COLOR "grey" ; ] - | `BUTTON_RELEASE ev -> - item#parent#ungrab (GdkEvent.Button.time ev) - | `MOTION_NOTIFY ev -> - incr step; - let state = GdkEvent.Motion.state ev in - if Gdk.Convert.test_modifier `BUTTON1 state && !step mod 10=0 then - begin - let curs = Gdk.Cursor.create `FLEUR in - item#parent#grab [`POINTER_MOTION; `BUTTON_RELEASE] curs - (GdkEvent.Button.time ev); - let z1 = xy2c (gtk2xy db.db_x db.db_y) in - let mx = GdkEvent.Motion.x ev in - let my = GdkEvent.Motion.y ev in - let z2 = xy2c (gtk2xy mx my) in - item#parent#move ~x:mx ~y:my; - item#parent#set [`X mx; `Y my]; (* inutil ? *) - db.db_x <- mx; - db.db_y <- my; - origin := HT.drag_origin !origin z1 z2; - draw_linear_tree t !origin 0.0; - end - | _ -> - () - end; - true - in - draw_linear_tree t !origin 0.0 diff --git a/jscomp/build_tests/ocamlgraph/editor/gtree.mli b/jscomp/build_tests/ocamlgraph/editor/gtree.mli deleted file mode 100755 index d060ed3047..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/gtree.mli +++ /dev/null @@ -1,31 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* -module T : sig - type t = DirTree.t - val root : t -end -*) - -module T : sig - type t - val root : t -end - - -val show_tree : #GnoCanvas.group -> T.t -> int -> int -> unit diff --git a/jscomp/build_tests/ocamlgraph/editor/htree.ml b/jscomp/build_tests/ocamlgraph/editor/htree.ml deleted file mode 100755 index 709b314d30..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/htree.ml +++ /dev/null @@ -1,316 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(*** Signatures ***) - -module type TREE = sig - type t - type label - val children : t -> t list - val label : t -> label -end ;; - -module type HTREE = sig - type t - type label - val children : t -> t list - val label : t -> label - - type coord = float * float - - type driver = { - rlimit : float ; - moveto : coord -> unit ; - lineto : coord -> unit ; - curveto : coord -> coord -> coord -> unit ; - draw_label : label -> coord -> float -> unit ; - init_edge_pass : unit -> unit ; - init_label_pass : unit -> unit ; - finalize : unit -> unit ; - } - - val shrink_factor : coord -> float - val drag_origin : coord -> coord -> coord -> coord - - val draw_linear_tree : driver -> t -> coord -> float -> unit - val draw_curved_tree : driver -> t -> coord -> float -> unit -end ;; - -(*** Complex operators ***) - -let ( ~-& ) (x, y) = (-.x, -.y) ;; -let ( ~& ) (x, y) = (x, -.y) ;; - -let ( +& ) (x1, y1) (x2, y2) = - (x1 +. x2, y1 +. y2) ;; - -let ( -& ) (x1, y1) (x2, y2) = - (x1 +. x2, y1 +. y2) ;; - -let ( *& ) (x1, y1) (x2, y2) = - (x1*.x2 -. y1*.y2, x1*.y2 +. y1*.x2) ;; - -let ( /& ) (x1, y1) (x2, y2) = - let n2 = x2*.x2 +. y2*.y2 in - ((x1*.x2 +. y1*.y2)/.n2, (-.x1*.y2 +. y1*.x2)/.n2) ;; - -let ( *.& ) f (x, y) = - (f*.x, f*.y) ;; - -let norm_sqr (x, y) = - x*.x +. y*.y ;; - -let norm (x, y) = - sqrt(x*.x +. y*.y) ;; - -let normalize (x, y) = - let n = sqrt(x*.x +. y*.y) in - (x/.n, y/.n) ;; - -let expi t = - (cos t, sin t) ;; - -(*** Hyperbolic functions ***) - -let th t = - let ept = exp t - and emt = exp (-.t) in - (ept -. emt)/.(ept +. emt) ;; - -let ath x = - 0.5*.log((1.0 +. x)/.(1.0 -. x)) ;; - -let pi = 3.14159265358979323846 ;; -let pi_over_2 = pi/.2.0 ;; -let pi_over_4 = pi/.4.0 ;; - -let one = (1.0, 0.0) ;; - -let translate a z = - (a +& z)/&(one +& (~&a) *& z) ;; - -let gamma a u t = - let utht = th t *.& u in - (a +& utht) /& (one +& (~&a) *& utht) ;; - -let delta a u t = - let atht = th t *.& a - and utht = th t *.& u in - normalize ((u +& atht) /& (one +& (~&a) *& utht)) ;; - -(*** The hyperbolic turtle ***) - -type coord = float * float ;; - -type turtle = { - pos : coord ; (* with |pos| < 1 *) - dir : coord (* with |dir| = 1 *) -} ;; - -let make_turtle pos angle = - { pos = pos ; - dir = expi angle } ;; - -let advance turt step = - { pos = gamma turt.pos turt.dir step ; - dir = delta turt.pos turt.dir step } ;; - -let turn turtle u = - { pos = turtle.pos ; - dir = turtle.dir *& u } ;; - -let turn_left turtle angle = - turn turtle (expi angle) ;; - -let turn_right turtle angle = - turn turtle (expi (-.angle)) ;; - -(*** Tree-independent functions ***) - -let shrink_factor (x, y) = - 1.0 -. (x*.x +. y*.y) - -(* solving a Cramer system *) -let cramer a1 a2 b1 b2 c1 c2 = - let cdet = a1*.b2 -. a2*.b1 - and xdet = c1*.b2 -. c2*.b1 - and ydet = a1*.c2 -. a2*.c1 in - (xdet/.cdet, ydet/.cdet) ;; - -let drag_origin (x0, y0) (x1, y1) (x2, y2) = - let (x1, y1) = translate (-.x0, -.y0) (x1, y1) in - let x3 = x1*.x2 -. y1*.y2 in - let y3 = x1*.y2 +. y1*.x2 in - cramer (1.0 -. x3) (-.y3) (-.y3) (1.0 +. x3) (x2 -. x1) (y2 -. y1) - -(* [step_from n] computes the best `distance' for solving the - dictator's problem in the complex hyperbolic plane for [n] - dictators. In a half-plane, we have to use the distance - given by [step_from (2*n)] or, better, the distance given - by [step_from (2*max(3 n))]. *) -let step_from n = - ath (tan (pi_over_4 -. pi/.float(2*n))) - -(* [hspace_dist_sqr turtle] computes the square of the distance - between the origin and the half-space in front of [turtle]. *) -let hspace_dist_sqr turtle = - let (ax, ay) = turtle.pos - and (dx, dy) = turtle.dir in - if ax*.dx +. ay*.dy < 0.0 then 0.0 else - begin - let ux = dy and uy = -.dx in - let alpha = ax*.ax +. ay*.ay - and beta = 2.0*.(ax*.ux +. ay*.uy) in - if beta = 0.0 then - alpha - else - begin - let gamma = (1.0 +. alpha)/.beta in - let delta = gamma*.gamma -. 1.0 in - let sol = - if beta > 0.0 - then -.gamma +. sqrt(delta) - else -.gamma -. sqrt(delta) in - let (zx, zy) = translate (ax, ay) (ux*.sol, uy*.sol) in - zx*.zx +. zy*.zy - end - end ;; - -(*** The functor ***) - -module Make(T : TREE) = struct - type t = T.t - type label = T.label - let children = T.children - let label = T.label - - type coord = float * float - - type driver = { - rlimit : float ; - moveto : coord -> unit ; - lineto : coord -> unit ; - curveto : coord -> coord -> coord -> unit ; - draw_label : label -> coord -> float -> unit ; - init_edge_pass : unit -> unit ; - init_label_pass : unit -> unit ; - finalize : unit -> unit ; - } - - let shrink_factor = shrink_factor - let drag_origin = drag_origin - - let draw_linear_edges drv tree turtle = - let rlimit_sqr = drv.rlimit*.drv.rlimit in - let rec do_tree tur t = - if hspace_dist_sqr tur <= rlimit_sqr then - begin - let list = children t in - let num = List.length list in - if num > 0 then - begin - let step = step_from (2*(max 3 num)) - and angle = pi/.float(num) in - let tur' = turn_left tur (angle/.2.0 -. pi_over_2) in - do_list tur' step (expi angle) list - end - end - and do_list tur step u = function - | [] -> () - | t :: rest -> - drv.moveto tur.pos ; - let tur' = advance tur step in - drv.lineto tur'.pos ; - do_tree tur' t ; - do_list (turn tur u) step u rest in - do_tree turtle tree - - let draw_curved_edges drv tree turtle = - let rlimit_sqr = drv.rlimit*.drv.rlimit in - let rec do_tree tur t = - if hspace_dist_sqr tur <= rlimit_sqr then - begin - let list = children t in - let num = List.length list in - if num > 0 then - begin - let step = step_from (2*(max 3 num)) - and angle = pi/.float(num) in - let tur' = turn_left tur (angle/.2.0 -. pi_over_2) in - do_list tur' step (expi angle) list - end - end - and do_list tur step u = function - | [] -> () - | t :: rest -> - drv.moveto tur.pos ; - let tur' = advance tur step in - let (a0x, a0y) = tur.pos - and (u0x, u0y) = tur.dir - and (a3x, a3y) = tur'.pos - and (u3x, u3y) = tur'.dir in - let dx = a3x -. a0x - and dy = a3y -. a0y in - let k = sqrt(dx*.dx +. dy*.dy)/.3.0 in - let a1 = (a0x +. k*.u0x, a0y +. k*.u0y) - and a2 = (a3x -. k*.u3x, a3y -. k*.u3y) in - drv.moveto tur.pos ; - drv.curveto a1 a2 tur'.pos ; - do_tree tur' t ; - do_list (turn tur u) step u rest in - do_tree turtle tree - - let draw_labels drv tree turtle = - let rlimit_sqr = drv.rlimit*.drv.rlimit in - let rec do_tree tur t = - if hspace_dist_sqr tur <= rlimit_sqr then - begin - drv.draw_label (label t) tur.pos (shrink_factor tur.pos) ; - let list = children t in - let num = List.length list in - if num > 0 then - begin - let step = step_from (2*(max 3 num)) - and angle = pi/.float(num) in - let tur' = turn_left tur (angle/.2.0 -. pi_over_2) in - do_list tur' step (expi angle) list - end - end - and do_list tur step u = function - | [] -> () - | t :: rest -> - let tur' = advance tur step in - do_tree tur' t ; - do_list (turn tur u) step u rest in - do_tree turtle tree - - let draw_linear_tree drv tree start angle = - let turt = make_turtle start angle in - drv.init_edge_pass () ; - draw_linear_edges drv tree turt ; - drv.init_label_pass () ; - draw_labels drv tree turt ; - drv.finalize () - - let draw_curved_tree drv tree start angle = - let turt = make_turtle start angle in - drv.init_edge_pass () ; - draw_curved_edges drv tree turt ; - drv.init_label_pass () ; - draw_labels drv tree turt ; - drv.finalize () -end diff --git a/jscomp/build_tests/ocamlgraph/editor/htree.mli b/jscomp/build_tests/ocamlgraph/editor/htree.mli deleted file mode 100755 index b585e9ae02..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/htree.mli +++ /dev/null @@ -1,52 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -module type TREE = sig - type t - type label - val children : t -> t list - val label : t -> label -end ;; - -module type HTREE = sig - type t - type label - val children : t -> t list - val label : t -> label - - type coord = float * float - - type driver = { - rlimit : float ; - moveto : coord -> unit ; - lineto : coord -> unit ; - curveto : coord -> coord -> coord -> unit ; - draw_label : label -> coord -> float -> unit ; - init_edge_pass : unit -> unit ; - init_label_pass : unit -> unit ; - finalize : unit -> unit ; - } - - val shrink_factor : coord -> float - val drag_origin : coord -> coord -> coord -> coord - - val draw_linear_tree : driver -> t -> coord -> float -> unit - val draw_curved_tree : driver -> t -> coord -> float -> unit -end ;; - -module Make(T : TREE) : - HTREE with type t = T.t and type label = T.label ;; diff --git a/jscomp/build_tests/ocamlgraph/editor/outils_math.ml b/jscomp/build_tests/ocamlgraph/editor/outils_math.ml deleted file mode 100755 index d01d527ca0..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/outils_math.ml +++ /dev/null @@ -1,92 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(*** Operateurs Complex ***) - -let ( ~-& ) (x, y) = (-.x, -.y) -let ( ~& ) (x, y) = (x, -.y) - -let ( +& ) (x1, y1) (x2, y2) = - (x1 +. x2, y1 +. y2) - -let ( -& ) (x1, y1) (x2, y2) = - (x1 +. x2, y1 +. y2) - -let ( *& ) (x1, y1) (x2, y2) = - (x1*.x2 -. y1*.y2, x1*.y2 +. y1*.x2) - -let ( /& ) (x1, y1) (x2, y2) = - let n2 = x2*.x2 +. y2*.y2 in - ((x1*.x2 +. y1*.y2)/.n2, (-.x1*.y2 +. y1*.x2)/.n2) - -let ( *.& ) f (x, y) = - (f*.x, f*.y) - -let norm_sqr (x, y) = - x*.x +. y*.y - -let norm (x, y) = - sqrt(x*.x +. y*.y) - -let normalize (x, y) = - let n = sqrt(x*.x +. y*.y) in - (x/.n, y/.n) - -let expi t = - (cos t, sin t) - -(*** Fonctions Hyperboliques ***) - -let th t = - let ept = exp t - and emt = exp (-.t) in - (ept -. emt)/.(ept +. emt) - -let ath x = - 0.5*.log((1.0 +. x)/.(1.0 -. x)) - -let pi = 3.14159265358979323846 -let pi_over_2 = pi/.2.0 -let pi_over_4 = pi/.4.0 - -let one = (1.0, 0.0) - -let translate a z = - (a +& z)/&(one +& (~&a) *& z) - -let gamma a u t = - let utht = th t *.& u in - (a +& utht) /& (one +& (~&a) *& utht) - -let delta a u t = - let atht = th t *.& a - and utht = th t *.& u in - normalize ((u +& atht) /& (one +& (~&a) *& utht)) - -(* solving a Cramer system *) -let cramer a1 a2 b1 b2 c1 c2 = - let cdet = a1*.b2 -. a2*.b1 - and xdet = c1*.b2 -. c2*.b1 - and ydet = a1*.c2 -. a2*.c1 in - (xdet/.cdet, ydet/.cdet) ;; - -let drag_origin (x0, y0) (x1, y1) (x2, y2) = - let (x1, y1) = translate (-.x0, -.y0) (x1, y1) in - let x3 = x1*.x2 -. y1*.y2 in - let y3 = x1*.y2 +. y1*.x2 in - cramer (1.0 -. x3) (-.y3) (-.y3) (1.0 +. x3) (x2 -. x1) (y2 -. y1) - diff --git a/jscomp/build_tests/ocamlgraph/editor/outils_tort.ml b/jscomp/build_tests/ocamlgraph/editor/outils_tort.ml deleted file mode 100755 index 6fd77ceafd..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/outils_tort.ml +++ /dev/null @@ -1,129 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -open Graphics -open Outils_math - -let debug_outil_tort = ref false - -let (w,h)= (600.,600.) - -(*** Tortue Hyperbolique ***) - - -type coord = float * float - -type turtle = - { - pos : coord ; (* with |pos| < 1 *) - dir : coord (* with |dir| = 1 *) - } - -let make_turtle pos angle = - { - pos = pos ; - dir = expi angle - } - -let make_turtle_dir pos dir = - { - pos = pos ; - dir = dir - } - - -let advance turt step = - { pos = gamma turt.pos turt.dir step ; - dir = delta turt.pos turt.dir step } - - -let turn turtle u = - { turtle with dir = turtle.dir *& u } - -let turn_left turtle angle = - turn turtle (expi angle) (*** a comprendre pourquoi je dois inverser + et - de l'angle ***) - -let turn_right turtle angle = - turn turtle (expi (-.angle)) (*** a comprendre pourquoi je dois inverser + et - de l'angle ***) - -let to_tortue(x,y)= - ((float x*.(2./.w) -. 1.),(1. -. float y *.(2./.h))) -(* ((float x*.(2./.w) ),(float y *.(2./.h) ))*) - -let from_tortue (x,y) = - let xzoom = (w/.2.) - and yzoom = (h/.2.) in - (truncate (x*.xzoom +. xzoom), truncate(yzoom -. y*.yzoom)) - -let depart = to_tortue (truncate(w/.2.), truncate(h/.2.)) - -let origine =ref depart - - - - -(* GTK *) -let point_courant = ref (0,0) -(*let canvas = graphEdGTK.root *) - -let moveto_gtk x y = point_courant := (x,y) - -let tmoveto_gtk tor = - let (x,y)= from_tortue tor.pos in - point_courant := (x,y) - -let tlineto_gtk tor line = - let (x',y')= from_tortue tor.pos in - point_courant := (x',y'); - List.append line [(float x'); (float y') ] - - -let tdraw_string_gtk tor (ellipse : GnoCanvas.ellipse) = - let (x,y) = from_tortue tor.pos in - (* debug *) - if !debug_outil_tort then Format.eprintf "tdraw_string_gtk x=%d y=%d@." x y; - (* /debug *) - moveto_gtk x y; - ellipse#parent#move ~x:(float x) ~y:(float y); - ellipse#parent#set [`X (float x); `Y (float y)] - - -(* avance la tortue en traçant, d'une distance d, en un certain nombre d'etapes, - et retourne la nouvelle position de la tortue *) -let tdraw_edge_gtk tor d etapes line = - let d = d /. (float etapes) in - let rec list_points t liste = function - | 0 -> (t,liste) - | n ->let t = advance t d in - list_points t (tlineto_gtk t liste) (n-1) - in - let l = let (x,y) =from_tortue tor.pos in [(float x); (float y)] in - let t,lpoints = list_points tor l etapes in - - (* debug *) - if (!debug_outil_tort) - then - (let ltext= - let rec chaine = function - |[]->"" - |e::l->(string_of_float e)^" "^chaine l - in chaine lpoints in - Format.eprintf "taille %d %s @." (List.length lpoints) ltext); - (* /debug *) - let p = Array.of_list lpoints in - line#set [`POINTS p]; - t diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/biblio.bib b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/biblio.bib deleted file mode 100755 index d5e97b68fa..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/biblio.bib +++ /dev/null @@ -1,49 +0,0 @@ - -@InProceedings{miquel, - author = {Alexandre Miquel}, - title = {Affichage générique d'arbres à l'aide de la géométrie hyperbolique}, - booktitle = {Onzièmes journées francophones des langages applicatifs (JFLA'00)}, - year = 2000 -} - -@Misc{ocaml, - title = {{Le langage Objective Caml}}, - note = {\url{http://caml.inria.fr}} -} - - - - -@InProceedings{ocamlgraph, - author = {Sylvain Conchon and Jean-Christophe Filliâtre and Julien Signoles}, - title = {Designing a Generic Graph Library using ML Functors}, - booktitle = {Symposium on Trends in Functional Programming (TFP'07)}, - year = 2007, - note = {\url{http://ocamlgraph.lri.fr}} -} - - -@Misc{graphviz, - title = {Le monde de \graphviz\ et du format de fichier DOT}, - note = {\url{http://www.graphviz.org/}} -} - -@Misc{gml, - title = {Format de fichier GML}, - note = {\url {http://www.infosun.fim.uni-passau.de/Graphlet/GML/}} -} - -@Misc{gtk, - title = {GTK, The Gimp Tool Kit}, - note = {\url {http://www.gtk.org/}} -} - -@Misc{lablgtk, - title = {La librairie Lablgtk }, - note = {\url {http://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/lablgtk.html}} -} - -@Misc{emacs, - title = {La page de GNU Emacs }, - note = {\url {http://www.gnu.org/software/emacs/}} -} \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/db4_bfs.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/db4_bfs.eps deleted file mode 100755 index fc91cb228a..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/db4_bfs.eps +++ /dev/null @@ -1,3450 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner -%%Title: db4_bfs.eps -%%CreationDate: Thu Jun 7 15:20:00 2007 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 14 14 546 527 -%%EndComments -%%BeginProlog -% Use own dictionary to avoid conflicts -10 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -14.173228346456694 14.173228346456694 translate -% Translate to begin of first scanline -0 512.00137876062354 translate -531.63779527559063 -512.00137876062354 scale -% Image geometry -731 704 8 -% Transformation matrix -[ 731 0 0 704 0 0 ] -% Strings to hold RGB-samples per scanline -/rstr 731 string def -/gstr 731 string def -/bstr 731 string def -{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} -true 3 -%%BeginData: 196054 ASCII Bytes -colorimage -quD:2JN\QIJN\QIYW_maJ,~> -quD:/JNA?CJNA?CYWD[^J,~> -quD:,JN&-=JN&-=YW)I[J,~> -rW)s]JcC<$JcC<$JcDtSs#p>]J,~> -rW)sZJcC<$JcC<$JcDtSs#U,ZJ,~> -rW)sWJcC<$JcC<$JcDtSs#9oWJ,~> -rr<*`s8RZ=Ja\0YJa\0YYj_Vl!^-M`J,~> -rr<*]s8RZ:Ja@sSJa@sSYjDDi!]g;]J,~> -rr<*Zs8RZ4J`_OGJ`_OGYibuc!]L)ZJ,~> -!WYC`JaJ$UJaJ$UJaMUeo8ie9o8ie9o8ik;!nKL7J,~> -!WY:]Ja.gOJa.gOJa2C_o7Qr*o7Qr*o7R#,!mWh,J,~> -!WY1ZJ`D=AJ`D=AJ`GnQo5OTeo5OTeo5OZg!lHqsJ,~> -!WYC`Ja@sSJa@sSJaDRd!0?aO!K[9[li<+ -!WY:]J`q[KJ`q[KJ`u:\!/'nC!JCFOkQ$8,rrIcProa?7oD]#Is6/[l3WO[~> -!WY1ZJ`21=J`21=J`5eN!-%Q0!HA) -!BpI6l@J5Ol@J5OlK@F5O8nh="mV0KlAtu:m02d9s6>[FoBcbIO8nM1eieN~> -!BU73k(2ZGk(2ZGk3(k-KE(Q-"m1I;k(E^*klp4%s5nt6oB?JAKE()rc8pI~> -!B:%0hgs[9hgs[9hriktE<#Oi"lF;!hf/Veis"=Zs5.eqoA^&4E<"hQ_`*)~> -!BpJ\kl>etFTI3YJa%aMJa%aMJa*'r!K[9PlNQO6rooLDoBQSEO8eC)s7>O\l&Yi.l./"J~> -!BU8Yj8a8oGl`TWJ`MCCJ`MCCJ`Q^h!JCFDk69q!roA_3oB-;CXjFdHmjN]f:~> -!B:&Vg]2EgHi\iPJ_Yh3J_Yh3J_^.X!HA)1i1Rgi38Jgqu($~> -!BpJ\k5\'G0*+GsJ`hUI`97.#s6'C^J`hUI^?5NXs7>LZkE#T)O8nh:"m:sFkE#Z7l3?F4rTE@p -4b*~> -!BU8YiW*!N9*!Xridp+-ir9#Yir9"0idp+'iW4]3oAp/8KDje^s7>=Uie.3hKE(Q)#3(:6io86E -J,~> -!B:&Vg&PXUB`V,ZJ_G\/`7k4ks4[JQJ_G\/^=iU,s7>+Og2R#EE<#Oe"kmqog2R)`hZheRrS#uC -2h1~> -!BpJ\jpmm?j5oFelKmp,nac=$h1=^>k0rJh!;YdW!<;3]!<;3]!.j9`k/-6]O8nh8"m1mEk)]QA -kkP5XkQU+0rT91@roj@^rTO7]roaRKO8\5'eieN~> -!BU8Yi!u78j5oFelKmp,nFH4#f7Dk2i7$W\!;YRQ!<;!W!<;!W!.j'Zi54CQKE(Q("lP%2i.M(/ -jS8fTj9=Ior8<5-roF(ZrT*tYro=:AKDaZcc8pI~> -!B:&VfFFD0j5oIflKdj+nFH4!d"0i#f[JLL!;Y:I!<:^O!<:^O!.idRfYZ8AE<#Oc"k[elfPpli -h>%'Mh$)GMr7Gugrn[SSrS@JRrnRe2E;\A@_`*)~> -!BpJ\jURg@jQ>Xilg=-0o(2O(gk"Rk!;,CQ!;kmX!.j6_jhg*[O8nh7"m(gCjcBH@kP5,W -k69t.r8j">roa7\s6'@]roXLIO8S,$eieN~> -!BU8Yh[Z19jQ>Xilg=-0nalF&eq)_0hp^K_!;,1K!;k[R!.j$Yhnn7OKE(Q&"lFt1hh1t.iqWTR -iW\4lr83/,ro3nWs5O"Xro+.>KDaWac8pI~> -!B:&Vf++>1jQ>[jlg4'/nalF$c[j]!f@/@O!;+nC!;kCJ!.iaQf>?,?E<#Oa"kR_jf5Uchg\CjK -gBH2Jqq#fernIDPs4dMQrn@Y/E;S8=_`*)~> -!BpJ\jURgAjlbmnm-X93o(;X+gk"Rk!;Y^aJ/e\=OT5CCjT#;BquHcY%HD[Q"<;XGjlHIB -KGjrDjalOCjT1GBoB$5 -!BU8Yh[Z.:jlbjmm-a?4oCVa+eq)_0hp^K_!;YL[HlE27N;rt9hZ*Z6quHcS%Gc.G!ul@ -!B:&Vede52jlbjmm-a?4oCVa)c@OPtf$i4M!;Y1RG8^T/LB%>*ec5^$quHcJ%Ff>8!uc..f%'g$ -HPcj9eq)E%ecBaio@X;uE;J.)s8L[O!;kFL!<1XTeo:K:E<#miqZ-TJ#1dbif%._tJ,~> -!BpJ\j:7^Ak32*rmI'K7o_%s/gO\F:jO<2i!;baeJcJBjdRaE=jQ$:@jQ$:@rT"B2!+t"u!-mSc -!!$0TJ`MCCe)UOjs754RO8J"!s8M'Z!;kgW!<(s]O8J"!s8:sV!;kg\O8J#!eieN~> -!BU8Yh@?(;k32*rmI0Q8o_%s-eUcS.hUC?]!;bO_IK2m_bsqa6hVJ54hVJ54rS@s)!+XSi!-R/T -!!$'LJ_kt7e(t+Xs7>+OhLk[]KE(r.!!)oR!!*#U"l=n.hLkk+hu*QQhZhqiqVL)S3e.~> -!B:&Vede53k32*rmI'K7o_%s,c@OPtf$i4M!;b7WH2pCQ`C0b,f%'g$f%'g$rRMBr!+=)[!-$N? -!!#sAJ_#D'e(+P=s7=hGeo:H9E<#ph!!)oJ!!*#M"kIYgeo:ZefDP^If*9fFq:=-72h1~> -!BpJ\j:7^BkNV=!mdTc*!7'ZM!$((\ -!!(;qjFQC?j8k>AoA^#8O8J"!s8M$Y!;kdV!<2!^jH'3!O8o. -!BU8Yh@?(;kiqF"mdTcr9/o%jM%qVHl)rn[VTqq_;QrS@[0qVHl)r8.APqq_L/qVL)S3e.~> -!B:&VeIJ,3kNV=!mdTc -!BpJ\isqXCkj%O%n+#u@p@nB6g4A:8j4!&g!;b^d"9@B?j50h:j5U+>j5U+>rSn4f!9)tr!!M?B -!!%T1J`G/ -!BU8Yh%$"=kj%O&n+#u@p@nB4e:HG,h:(3[!;bL^!s%'2h:_i/h;&&2h;&&2rS7e_!8H>`!!D'5 -!!%T+J_e`0!JCFDg]cMdq;$]'rnIJRqqM/OrnI\5KDF>Us8CaM!<([Wh1POZh9J'3~> -!B:&Ve./&4kj%O%n+#u@p%S91b^n8peC2qI!;b1U!s$d!eBn6reC4HueC4HurR;/V!7KBF!!Ca# -!!%T"J^i)s!HA)1dfn6?pXF0^rmLiIqpPNFrmM&#E;.k$s8CFD!<(@Ne8Y03eAF4q~> -!BpJ\isq[El0Ia)nFH2Dp\=T9g4A:8j4!&g!;b^d*WX4?j2Cuuj5U+>j5U+>rSn5&!6sQJ!$(%Z -!!%T1J`G/ -!BU8Yh%$%?l0Ia)nF?,Cp\=T7e:HG,h:(3[!;bL^*<Pqq;#Mrn7P3KD=8Ts8LaO!<:dP!<1[Vh1PLYh9J'3~> -!B:&Ve./)6l0Ia)nFH2Dp\FZ6b^n8peC2qI!;b1U*!!P!e@5JYeC4HueC4HurR;/j!5I$t!#jA: -!!%T"J^i)s!HA)BDrm:o!E;%e#s8LFF!<:IG!<1@Me8Y-2eAF4q~> -!BpJ\iXVUFlg4'.nalDHq"afio8NPJ,~> -!BU8Yg^]q?lg4'/nalGIp\F]:dt-;*gsb'Y!;bI^I/ld\bXVX5gtVl0gtW;<^]*!qB`MVl@K:H( -g].>*gk"8.g]<'-rn7)Irn.J1KD4/Rs8L^I!<1XTgk5@VKE(r(rrE#NrrE&O#2Fk*gt^19J,~> -!B:&Vdgi#7lg4'.nalDHq"af9bCS,ne'leG!;b.UGQ:.K_aFJ)e'e9se'e^*\,Oh`AH6&\?3"ik -df9B!dt,uqdfFFfrm1B?rm(bsE:q\!s8L@?!<1:Jdr>!/E<#p`rrE#DrrE&E#1IPae'l2nJ,~> -!BpJ\iWa1GI!pElIf=isJ-(:Bg4A77imZo`!<1suI2`;6NW9(=iW&u):!K[9Ph?Do"pu7A7oA0Z1O8.^qs7>(OifEloimp8C~> -!BU8Yg]hM?H[L3hIK"]qIfb.=e:HD+gsb'T!<1aoH5Zl0M?!Y3g].?0gis;/!8QA^B,:XfE8'+& -!!%T*J_\Z.!JCFDf*0r^pY:E$o@F0$KD4/Rs7=hHgk5@Vgs.s2~> -!B:&VdfjB0H$Xd`rI"Wn!e+t0J^]2!e'n-nrmMm1)$;"7!!(Ks!!(KsEt&*Le'lWP('5=hdF6PE -!.iUMe'ZVFE<#OS"k.G_dr>?YbluR8o[@dZo?@KgE:hW._`*)~> -!BpJ\huML(ecFC[J`)+;J`)+;J`-F`!K[9Pg]cVspu%55o@sN-O8.Xos7>"Mi/dZki7:&A~> -!BU8Yg&TXpd/_jNg4@t/g4@t/gABS)KE(Po"knV&g4TFsecjc[p=b0!o@=-"KD+$Qc8pI~> -!B:&VciD5]`rX9-J^AtpJ^AtpJ^F;@!HA)1b6?73o?_IVo?. -!BpI6hLXO7hLXO7hWN_rO8nh+"l>=7hN.^.gBHGppYLu2o@jK+O8%MfeieN~> -!BU73fR_\+fR_\+f]UlfKE(Pm"k\J#fRs4qe-4KWp"4oso@*usKD!mLc8pI~> -!B:%0c@O8lc@O8lcKEIRE<#OO"jV)Xc>`gTaT]t/o$24So>q3^E:V<"_`*)~> -!BpI6h1=C5h1=C5h<*MnO7U^!O8&Y0!0?`u!K[!Sh#NN-ciK4%rnRV+4b*~> -!BU73eq)D'eq)D'f&kN`KCd.bKD#5p!/'ma!JC(Eec:?oa8pqdrmh+q3e.~> -!B:%0b^muhb^muhbi[+LE:^[BE:NqO!-%PA!H@T.bQ)VR])cm@rlbD\2h1~> -!BpI6gO\+1gO\+1gZI5jp[aFGp\ihHp[aFGp\ihHp[aFGp\ihIeieN~> -!BU73e:H,#e:H,#eE56\p%*e9p&3A?p%*e9p&3A?p%*e9p&3A@c8pI~> -!B:%0aaqQbaaqQbal^\Fnag]"nbpQ0nag]"nbpQ0nag]"nbpQ1_`*)~> -!BpI6fn%h-fn%h-g#^oYp\WY8p\WY8p\`\FeieN~> -!BU73dXfhtdXfhtdcJpKp&!2/p&!2/p&*5=c8pI~> -!B:%0a+;9^a+;9^a5tA5nb^Aunb^AunbgE._`*)~> -!BpI6eq)D'eq)D'eu@4#4b*~> -!BU73c@O8lc@O8lcDf(h3e.~> -!B:%0_h#^V_h#^V_l:NR2h1~> -!'Pn%JXV.YJXV.YW1!]LJ,~> -!'5[kJW>;AJW>;AW/^j=J,~> -!&oIVJUE#rJUE#rW-eS(J,~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpJTm=FVTm"+MSm"+NAm.BZGeieN~> -!BU8Ql%/&Lk^hrKk^hs9kk+*?c8pI~> -!B:&Nj+63@idp*?idp+-iq273_`*)~> -!BpJTm=FVTm"+MSm"+NAm.BZGeieN~> -!BU8Ql%/&Lk^hrKk^hs9kk+*?c8pI~> -!B:&Nj+63@idp*?idp+-iq273_`*)~> -!BpJTm=FVTm"+MSm"+NAm.BZGeieN~> -!BU8Ql%/#KkCMfIkCMg7kOe!>c8pI~> -!B:&Nj+60?iITs=iITt+iUl.2_`*)~> -!BpJTm=FSSl[eAQl[eB?lh'QFeieN~> -!BU8Ql%/#KkCMfIkCMg7kOe!>c8pI~> -!B:&Nj+60?iITs=iITt+iUl.2_`*)~> -!BpJTm=FSSl[eAQl[eB?lh'QFeieN~> -!BU8Ql%/#KkCMfIkCMg7kOe!>c8pI~> -!B:&Nj+6->i.9g;i.9h)i:Q%1_`*)~> -!BpJTm=FSSl[eAQl[eB?lh'QFeieN~> -!BU8Ql%.uJk(2ZGk(2[5k4Im=c8pI~> -!B:&Nj+6->i.9g;i.9h)i:Q%1_`*)~> -!BpJTmI0 -!BU8Ql0ma7!.j9`k(2ZGk(2[Hk4Im=c8pI~> -!B:&Nj6tk*!.j$Yhgs[9hgs\:ht5q0_`*)~> -!BpJTmIKNE!:&hLJa.gOJa.gOJa1kPo^)\14b*~> -!BU8Ql13p -!B:&Nj7;(0!8lZ6J_u%9J_u%9J`#):o]#ti2h1~> -!BpJTmJ,rD!<)-^!.jBcl%/)Ml%/*Nl1F?DeieN~> -!BU8Ql1jB -!B:&Nj7qL/!<(aS!.j!XhLXO7hLXP8hXoh/_`*)~> -!BpJTmJ,oG!;YjZ!.jBcl%/)Ml%/*Nl1F?DeieN~> -!BU8Ql1j<>!;Y[U!.j3^jFQBCjFQCDjRh[;c8pI~> -!B:&Nj7qI2!;YIO!.j!XhLXO7hLXP8hXoh/_`*)~> -!BpJTmJ,oG!;u'h!9r_Jl07>J'*qCiJa%aMJa%aMJa)(Vo^)\14b*~> -!BU8Ql1j<>!;tmc!9E2@jQ,98'*q@cJ`MCCJ`MCCJ`P_Lo]ZD%3e.~> -!B:&Nj7qF1!;tX\!8ZH2h;-du&dV.YJ_bn5J_bn5J_f5>o]#ti2h1~> -!BpJTmJ,lF!;u$g!9iVHkid1SceMT0J`q[KJ`q[KJ`u"To^)\14b*~> -!BU8Ql1j9=!;tjb!9<)>j5Y5Eb1BX!J`D=AJ`D=AJ`GYJo]ZD%3e.~> -!B:&Nj7qF1!;tX\!8ZH2h;*'5`R7[hJ_bn5J_bn5J_f5>o]#ti2h1~> -!BpJTmJ,oC!"A&kki`$1kT%P)kgL8tk^hrKk^hrKkhkUrm/bd$J,~> -!BU8Ql1j<:!"@lfj5U."iuGhoj3JEjj+66Aj+66Aj58nhklK'jJ,~> -!B:&Nj7qF-!"@W_gtVnbg`*fZgrL1\gk"73gk"73gu$oZirR%VJ,~> -!BpJTmJ,lF!;u$b!9iVHki`0J!!!%Nk^hrKk^hrKkhkUrm/bd$J,~> -!BU8Ql1j9=!;tj]!9<)>j5U:@!!!%Nj+66Aj+66Aj58nhklK'jJ,~> -!B:&Nj7q@/!;tRU!8H6.gY2i/!!!%NgO\+1gO\+1gY^cXirR%VJ,~> -!BpJTmJ,iE!;u!b!9`MFkN -!BU8Ql1j6GDo]ZD%3e.~> -!B:&Nj7q@/!;tRV!8H6.gY3UaJ_Pb1J_Pb1J_Sr6o]#ti2h1~> -!BpJTmJ,iE!;u!f!9`MFkN@(Wa5am0J`hUIJ`hUIJ`kqRo^)\14b*~> -!BU8Ql1j6SHo]ZD%3e.~> -!B:&Nj7q=.!;tOY!8?-,g=gR3][sM_J_G\/J_G\/J_K#8o]#ti2h1~> -!BpJTmJ,iE!;u!f!9`MFkNCrP*!IdZJ`hUIJ`hUIJ`kqRo^)\14b*~> -!BU8Ql1j3;!;td`!9)l:iSi[;)[%RSJ`21=J`21=J`5MFo]ZD%3e.~> -!B:&Nj7q=.!;tOY!8?-,g=k2#)[%LLJ_G\/J_G\/J_K#8o]#ti2h1~> -!BpJTm=FDNk(2ZGk(2[5k4J$AeieN~> -!BU8Ql%.fEiITs=iITt+iUl@8c8pI~> -!B:&Nj+5m7fn%h-fn%hpg%=;*_`*)~> -!BpJTm=FDNk(2ZGk(2[5k4J$AeieN~> -!BU8Ql%.cDi.9g;i.9h)i:Q77c8pI~> -!B:&Nj+5m7fn%h-fn%hpg%=;*_`*)~> -!BpJTm=FDNk(2ZGk(2[5k4J$AeieN~> -!BU8Ql%.cDi.9g;i.9h)i:Q77c8pI~> -!B:&Nj+5j6fR_\+fR_\nf_"2)_`*)~> -!BpJTm=FAMjalNEjalO3jn.p@eieN~> -!BU8Ql%.cDi.9g;i.9h)i:Q77c8pI~> -!B:&Nj+5j6fR_\+fR_\nf_"2)_`*)~> -!BpJTm=FAMjalNEjalO3jn.p@eieN~> -!BU8Ql%.`Chgs[9hgs\'ht6.6c8pI~> -!B:&Nj+5g5f7DP)f7DPlfC\)(_`*)~> -!BpJTm=F>LjFQBCjFQC1jRhg?eieN~> -!BU8Ql%.`Chgs[9hgs\'ht6.6c8pI~> -!B:&Nj+5g5f7DP)f7DPlfC\)(_`*)~> -!BpJTm=F>LjFQBCjFQC1jRhg?eieN~> -!BU8Ql%.]BhLXO7hLXP%hXp%5c8pI~> -!B:&Nj+5d4eq)D'eq)Djf(@u'_`*)~> -!BpJTm=EE2b(7]db(7^Rb4P'%eieN~> -!BU8Ql%-[%_1BFR_1BG@_=Zsmc8pI~> -!B:&Nj+4OfZ[oH6Z[oI$Zh38Y_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpJTmCK9Jm=FYUm=FYUmJcJReieN~> -!BU8Ql+3F:l%/)Ml%/)Ml2KoJc8pI~> -!B:&Nj1:2#j+66Aj+66Aj8S'>_`*)~> -!BpJTm/X,up&M(Cm=FZNm4[>7\Z20[IrA^q91(]o-m'3<&.JsO"TSN+#7:nO',DZ<0f_To -!BU8Qkl@9eoDkG5l%/*FkqCc,[\oRPI;N=k8jYKk-Qa*;%h/jN"TSN+#7:nN',DZ;0K;Bk -!B:&NirG%NnGnN!j+67:j"JrqZ(mV@H"pS^83f*e-6 -!BpJTm/a3[^$Pg!JaJ$Ug?f76f=[i5D-01Y)?\@e$3M2!6s+;]U:f+EJaJ$Ulg4`(4b*~> -!BU8QklI@I^$,NfJa%aMg?At.e%)*)CK -!B:&NirP,/^#K*OJ`D=Ag>`P"cEs'lBiIAL)$A7d$3M.s5u_QLS$^K#J`D=Alf/#`2h1~> -!BpJTm/a3[^$Pg!JaJ$UiU$m'\ -!BU8QklI@I^$,NfJa%aMiTUTt[?Yl8599n#!&"g52b-n\G(uc8pI~> -!B:&NirP,/^#K*OJ`D=AiSt0hY`Ws)4WOUu!&"g52b-n\G(u -!BpJTm/a3[^[2*SoVmE/JaM[g#3WjnF\=7gq#C^91/;VAT!Z]"qpGEMqr,`*Sr%5X1)9Tb"p?JM -Fe$>3JaJ$Uq<\464b*~> -!BU8QklI@I^ZbgKnXY6qJa)C_#3 -!B:&NirP,/^Z,C@m>QVVJ`GtS#2ZqVE(DJ^q#C^91/;VAT!Z]"qpGEMqr,`*Sr%5X1)9Tb"p?GI -E0\#kJ`D=Aq;VLn2h1~> -!BpJTm/a3[^[2*:ql,/6JaMmm#4'@#D+GfNqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#l -!BU8QklI@I^Zbg2qji<&Ja)Ue#3WsnCI]NKqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#l;CRN0) -Ja%aMs60R03e.~> -!B:&NirP,/^Z,C(q2BmbJ`H1Y#3!@_Bgj-FqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#i8BpHKm -J`D=As5O-t2h1~> -!BpJTm/a3[^[2*:ql,/6JaN'r"m`XW?S_rb!!WNR;0o"RmB-BmmD5QD;()PE!!NT`?]DP\JaJ-X -!S0Da~> -!BU8QklI@I^Zbg2qji<&Ja)dj"m<7M?8;c`!!WNR;0o"RmB-BmmD5QD;()PE!!NT_?Ac,QJa%jP -!R<`V~> -!B:&NirP,/^Z,C(q2BmbJ`H@^"lZ\@>;6B\!!WNR;0o"RmB-BmmD5QD;()PE!!NT^>DKHAJ`DFD -!Q-jH~> -!BpJTm/a3[^[2*:ql,/6JaN7""ma3o@P7o_!!OH?Lo]&'U&P;oe>nC$+8c*B"YX>Ma6Sp -4b*~> -!BU8QklI@I^Zbg2qji<&Ja)so"mnC$+8c*B"YO2H`92^9M -!B:&NirP,/^Z,C(q2BmbJ`HOc"l[4W?7cnC$+8c*B">*r@^Ysb(M;nWS -2h1~> -!BpJTm/a3[kNr6Lg?esUql,/6JaNC&"Qlk18-Sql"T^YkO2(7Nrrqu.O'apKr;Zs(89V/uJaJHa -!S0Da~> -!BU8QklI@IkNMsHg?A[Mqji<&Ja**s"QHJ(7g8hk"T^YkO2(7Nrrqu.O'apKr;Zs(7s(fkJa&0Y -!R<`V~> -!B:&NirP,/kMlOBg>`7Cq2BmbJ`H[g"Pfnp70NPh"T^YkO2(7Nrrqu.O'apKr;Zs'7<,6\J`DaM -!Q-jH~> -!BpJTm/a3[kNr6Lg?esUql,/6JaEX.g7rC<"oSE(*`S$4o8EVOo>$5_*rQ'A"Yshfg4AXRm/bd$ -J,~> -!BU8QklI@IkNMsHg?A[Mqji<&Ja!@&f:Zh4"oSE(*`S$4o8EVOo>$5_*rQ'A"Yj_af7E1KklK'j -J,~> -!B:&NirP,/kMlOBg>`7Cq2BmbJ`?pod@=f&"T8<'*`S$4o8EVOo>$5_*rQ'A">FGXd=L>?irR%V -J,~> -!BpJTm/a3[rp9ae6L=[ -!BU8QklI@IrojIa60S:3!!)TS!!(a;!kS9"Ja%jP"Q$"h.KTMK"9UN%YkWeL"Sf3A2$ -!B:&NirP,/ro4%[5N;Y%!!)TM!!(a5!k.o`J`DFD"PBDZ.09DJ"9UN%YkWeL"Sf3A2$ -!BpJTm/a3[rp9ae?!! -!BU8QklI@IrojIa;hk88!!)TS!!(a;!kS9"Ja%sS"1E>3"o\K)$:0-QoR[&?!! -!B:&NirP,/ro4%[;1ni-!!)TM!!(a5!k.o`J`DOG"0ll)"TAB($:0-QoR[&?!! -!BpJTm/a3[rp9dfh^-ACm2l>qmH.[`%:J>cmH.OX'n?;OmHSX)#Z9RJmAVK;*KKCO!l"Q2JaJB_ -"5&l8&,lP3"?:eDpjrJ8rri,3HoM9.!! -!BU8QklI@IrojLbgEjf;koToil/GnV%:8)Zl/PkP'n-/Il/ljs#Z':@l)#g3*/s.H!kS9"Ja&*W -"4WN0&,lP3"?:eDpjrJ8rri,3HoM9.!! -!B:&NirP,/ro4(\eg/$0iu\9]j4mcG$s_WKj5!]A'RKi?j5=\d#Yiq2j.[k'*/Nk>!k.o`J`D[K -"4*$%%fQG2"?:eDpjrJ8rri,3HoM9.!!<^)O3`C;SDsXf2h1~> -!BpJTm/a3[rp;$4mB\M1mHjo@m;#/DfKa?Am;>DHfgPo.m -!BU8QklI@Iroka0l*)l&l0/34l"NQ9e3@d6l"if>eO0E%l$#A -!B:&NirP,/ro5=*j/aljj5U."j(:X(cTQ"&j(Um-cU%Wlj)dH,f2Z,:it@d9aB@cf!k.o`J`DdN -"1E2&!r`0%12X;fJcG!7"7rd71B%7U!\\Q%J`EB_!Q-jH~> -!BpJTm/a3[rp:s2mHne1mHjo@m24%6mE$75m2=.8mE5Lsm2a:8mFW0@m2Ll/kNr>bql,/6P3iA8 -X^N(G!! -!BU8QklI@Irok[.l03#&l0/34knqJ*l,=P)ko%S,l,Negko@Y+l-pI4ko,9$kNN&Zqji<&P3E)0 -WaH\C!! -!B:&NirP,/ro57(j5Xiij5U."itoSmj1lMliu#\oj2(fViuGhoj3JG"iu3NjkMlWPq2BmbP2cZ% -VHk#;!! -!BpJTm/a3[rp:U(mHs'i[I!t]m/uY@mHFc@m/uY@mHFW -!BU8QklI@Irok=$l077^ZKVARkl^)4l/`'4kl^)4l/_p0klgqb#6F)R\OI2MT]t\B])/%Ll':K8 -i1F![rW!$BC:3ees4dPUpU+`XrW!$2 -!B:&NirP,/ro4msj5\uJY2]NBire6"j51""ire6"j50jsiro;\#6ElFZpbTGSE]&8[eYl5j-AX, -g7(tNrW!$BC:3ees4dPUpU+`XrW!$2;OcBkj/1i;_`*)~> -!BpJTm/a3[rp9[crp:NA-K+slm24(7mE-=6m2=.8mE>Rtm2ORMm/a1%l0SPdql,/6R-b"=Thc!o -!!=d#cMiCpec,aNc@%8C!! -!BU8QklI@IrojC_rok6:-/ARcknqM+l,FV*ko%S,l,Wkhko.qDklIXsl0/8\qji<&R-=_5SkTOj -!!=d#cMiCpec,aNc@%8C!! -!B:&NirP,/ro3tYro4g/,hE%VitoVnj1uSmiu#\oj21lWiu6,9irPkhl/MiRq2BmbR,\;)RS*td -!!=d#cMiCpec,aNc@%8C!! -!BpJTm/a3[rp9[crTtb`=9.aUBh6q16Yu/WDFiL77f_rDHpu9D_bogg<6==$'C"lc^AFm\m@3JL -kbqMk!!!$ZM;!O\c2S+(M)YM9!"Du-k^i-&m/bd$J,~> -!BU8QklI@IrojC_rTPJYGcLCe!%-70)T:H:5m:^ea4Z;T7^m''\W^])/%Ll'poD -jJGod!!!$ZM;!O\c2S+(M)YM9!"Dr*jFQQsklK'jJ,~> -!B:&NirP,/ro3tYrSo&P<<2(>AOXtl5\K-;BgpFr6ic9-G!a.)]1q>G:r(q\''\EX[eYl5j.#'8 -hk -!BpJTm/a3[rp9[crTtcp63-E?j]`-%?0:PAk#hs)J,o!(l[9cW.\5toR3Db^X6K!Q^AFm\m@EVG -[;-*J!!5$;j+76NrrV5?2?!RW$#?r"mB5gWeieN~> -!BU8QklI@IrojC_rTPKh5lg06iE?Wu>N4o3i`HI$IK8WskB\*O.@TMcQQcP[W9NOJ])/%Ll(.&? -Z>'^F!!5$;j+76NrrV5?2?!RW$#6bsl)s7Oc8pI~> -!B:&NirP,/ro3tYrSo'\560a(gK+dl=kr&tgf4UoHN<*diHH7E.$ioRP9C&UV!6n@[eYl5j.533 -Y%J(?!!5$;j+76NrrV5?2?!RW$"pDlj0%DC_`*)~> -!BpJTm/a3[^[2*:ql,/6T^;g,GTctc!\B#ZJcERd!o&AZrW!!BGgCs.Z0_SC4b*~> -!BU8QklI@I^Zbg2qji<&T]lO%Fs-ba!\B#ZJcERd!o&AZrW!!BG0GO%Z0;;73e.~> -!B:&NirP,/^Z,C(q2BmbT]6*oF!(A]!\B#ZJcERd!o&AZrW!!AF2rjlZ/Yl&2h1~> -!BpJTm/a3[^[2*:ql,/6U[8?HPWJmG!"jtRJcE@^#k!EZ!!!$]Pi@8][-[nF4b*~> -!BU8QklI@I^Zbg2qji<&UZi'@Ou`UD!"jtRJcE@^#k!EZ!!!$\P2:cS[-7V:3e.~> -!B:&NirP,/^Z,C(q2BmbUZ2X4N]@+?!"jtRJcE@^#k!EZ!!!$[NnApC[,V2)2h1~> -!BpJTm/a3[^[2*:ql,/6Vm^Q3$=$31&5?+baU[d=+H4b*~> -!BU8QklI@I^Zbg2qji<&V7(?1$=$31&5>If=L[cmh<3e.~> -!B:&NirP,/^Z,C(q2BmbV;hig=UG-/$=$31&5=gWb?[c7D+2h1~> -!BpJTm/a3[^[2*:ql,/6W9jZEN@k,0!]utEJcE"T!qVsErW!!ONSoBT\a9FK4b*~> -!BU8QklI@I^Zbg2qji<&W9FB=MCnf-!]utEJcE"T!qVsErW!!OMVNdI\`j.?3e.~> -!B:&NirP,/^Z,C(q2BmbW8ds2LF`?(!]utEJcE"T!qVsErW!!MLY%+;\`3_.2h1~> -!BpJTm/a3X^Zkm4ql,/6WpL&+>mLE1'm/,[s/Z/)flRr/!!llFJaL):!S0Da~> -!BU8QklI@F^ZGU-qON3%Wp'c#>6k3/'m/,[s/Z/)flRr/!!lf@Ja'f2!R<`V~> -!B:&NirP,,^Yf1"q2BmbWoF>n=U5!-'m/,[s/Z/)flRr/!!l`:J`FB&!Q-jH~> -!BpJTm/a3R^Z>OAn>V!+XmHDXRl(0G!C -!BU8QklI@@^Yo79m[\pnXm$,PQo"dC!C -!B:&NirP,&^Y8h.lAU;SXlB]EPVW:>!Cf732h1~> -!BpJTm/a3M^#&ghJaKZ.#M=8 -!BU8QklI@;^"WOXJa'B&#Lmo6!!!7Bk^ic-rs.b+#64`@G1;*-_!(mF3e.~> -!B:&NirP,!^"*1BJ`Ero#L@H-!!!7Bk^ic-rs.b+#64`?F3fEt^uGI52h1~> -!BpJTm/a3G^"ECbJaK`0#JX:B!!"U>on!.6rs/4c/H>bR -!BU8QklI@5^"*1SJa'H(#J3t=!!"U>on!.6rs/4c/H>bR -!B:&NirP+p^!Hbon!.6rs/4c/H>bR;R_5;_W([72h1~> -!BpJTmCK9JmBl6cm&N;M!!?*4JcD):#JO%;!!#3`m"+QCm/bd$J,~> -!BU8Ql+3F:l*T[[kbpWE!!?*4JcD):#JO%;!!#0\k^i!;klK'jJ,~> -!B:&Nj1:2#j0[hOihSX9!!?*4JcD):#JO%;!!#*Vidp./irR%VJ,~> -!BpJTm/X,urrB$LmC)Beka*e"!!n#BJcCr6#Om-I!!"O9k^i-Am/bd$J,~> -!BU8Qkl@9errAU@l*fg]jHM+o!!n#BJcCr6#Om-I!!"L5jFQR9klK'jJ,~> -!B:&NirG%NrrA"/j0mtQhiT>f!!n#BJcCr6#Om-I!!"I1hgsh.irR%VJ,~> -!BpJTm/X,urrB$LmC;Ngl&-/S!#pdaJcCf2#OmQh!!!Xil%/6Dm/bd$J,~> -!BU8Qkl@9errAU@l+#s_jbXQL!#pdaJcCf2#OmQh!!!Ufjal[ -!B:&NirG%NrrA"/j1++Shh;XB!#pdaJcCf2#OmQh!!!Ubhgsh0irR%VJ,~> -!BpJTm/X,urrB$LmCMZihg6":!%X];JcCZ.#PjuB!!![Zhgt1 -!BU8Qkl@9errAU@l+6*agNaD3!%X];JcCZ.#PjuB!!!XWgO\V4klK'jJ,~> -!B:&NirG%NrrA"/j1=7UeohZ+!%X];JcCZ.#PjuB!!!XTeq)l)irR%VJ,~> -!BpJTm/X,urrB$LmC_fkgiX,-!$@a1JcCN*#QC58!!!OPgk"k;m/bd$J,~> -!BU8Qkl@9errAU@l+H6cflIZ(!$@a1JcCN*#QC58!!!ONfn&D4klK'jJ,~> -!B:&NirG%NrrA"/j1OCWdr5cs!$@a1JcCN*#QC58!!!LJdt-Q(irR%VJ,~> -!BpJTm/X,urrB$LmCqrlg275t!(">Ms+11S^-M`!$?"RKmEb/#eieN~> -!BU8Qkl@9errAU@l+ZBdenbZn!(">Ms+11S^-M`!$>e:El-JSpc8pI~> -!B:&NirG%NrrA"/j1aOXctWmf!(">Ms+11S^-M`!$>Rq=j3Q`d_`*)~> -!BpJTm/X-`rrBjOrrB$LmD/)nh/Nf&!(b%Zs+14Krs$D4!!!CHh1=t@m/bd$J,~> -!BU8Qkl@:PrrBjOrrAU@l+lNfg2@?!!(b%Zs+14Krs$D4!!!CFg4AM9klK'jJ,~> -!B:&NirG&9rrBjOrrA"/j1s[Ze8,Km!(b%Zs+14Krs$D4!!!CCe:HZ-irR%VJ,~> -!BpJTm/X-`rrE,8_uB_9JaL>A#3't?!!$-VJcC<$q>UZS=9&=3HfBVDe*R1e4b*~> -!BU8Qkl@:PrrE,8_uB_-Ja(&9#2XV9!!$-VJcC<$q>UZS=9&=3H/=,:e*-nY3e.~> -!B:&NirG&9rrE,8_uB^qJ`FW-#2")/!!$-VJcC<$q>UZS=9&=2G1_B+e)LJH2h1~> -!BpJTm/X-`rrN07^r66QWIaHTm0;[)'*&##aFXABs7QBra@$".'8,CtmFCS)eieN~> -!BU8Qkl@:PrrN07^r66QSUp%Dkm$*t'*&##aFXABs7QBra@$".'7o+nl.,#!c8pI~> -!B:&NirG&9rrN07^r66QN.L$-is+7e'*&##aFXABs7QBra@$".'7S\ej43/j_`*)~> -!BpJTm/X-`rrW8:'Ys;>rW(RM!3(P:`pEurOVe&u426@HJcG9?#/<5"!#UjaJaM(V!S0Da~> -!BU8Qkl@:PrrW8:'Ys;>rW(RM!1e]*`p!]jNu.is426@HJcG9?#/<5"!#Ud[Ja(eN!R<`V~> -!B:&NirG&9rrW8:'Ys;>rW(RM!/uKh`o@9^M\c?n426@HJcG9?#/<5"!#LRPJ`GAB!Q-jH~> -!BpJTm/X-`rr`?%^_FTSrr<&NrrB$LmDnStW$q]H1:Dc6JcG-;"h$/d!%FjtmF^e,eieN~> -!BU8Qkl@:Prr`?%^_FTSrr<&NrrAU@l,W#lVC2EE1:Dc6JcG-;"h$/d!%=^ql.G5$c8pI~> -!B:&NirG&9rr`?%^_FTSrr<&NrrA"/j2^0`TdKg?1:Dc6JcG-;"h$/d!%4Ikj4NAm_`*)~> -!BpJTm/X-`rriE&s1f>ao)A[ifDbiMJaLSH#/<;$!$\??JcC<$li.1gV]l*@4hlR8g?epl4b*~> -!BU8Qkl@:PrriE&s1f>ao)A[ifDbiAJa(;@#.ltt!$\??JcC<$li.1gV]l*@4M-1/g?AX`3e.~> -!B:&NirG&9rriE&s1f>ao)A[ifDbi0J`Fl4#.HYo!$\??JcC<$li.1gV]l*@41Be$g>`4O2h1~> -!BpJTm/X-`rr<&urrR`Op%/1`!8%5NWIaH[m0:s;!< -!BU8Qkl@:Prr<&urrR`Op%/1`!8%5NSUp%Kkm#F3!< -!B:&NirG&9rr<&urrR`Op%/1`!8%5NN.L$4is*S%!< -!BpJTm/X-`rriE&s1f>ao)A[ifDbiMJaL_L#39q6!!m`8JcC<$j8T>OFU.sRG3"5AhX(?p4b*~> -!BU8Qkl@:PrriE&s1f>ao)A[ifDbiAJa(GD#2jS0!!m`8JcC<$j8T>OFU.sRFPq`7hWY'd3e.~> -!B:&NirG&9rriE&s1f>ao)A[ifDbi0J`G#8#24&'!!m`8JcC<$j8T>OFU.sRES?!(hW"XS2h1~> -!BpJTm/X-`rr`?%^_FTSrr<&NrrB$LmEY)&SK%V0DX`5WJcFX-"n6C0!$%P\mGI:3eieN~> -!BU8Qkl@:Prr`?%^_FTSrr<&NrrAU@l-AMsRi;>-DX`5WJcFX-"n6C0!#qDYl/1_+c8pI~> -!B:&NirG&9rr`?%^_FTSrr<&NrrA"/j3HZgQQ#o)DX`5WJcFX-"n6C0!#q8Uj58kt_`*)~> -!BpJTm/X-`rrW8:'Ys5 -!BU8Qkl@:PrrW8:'Ys5 -!B:&NirG&9rrW8:'Ys5 -!BpJTm/X-`rrN07_!h:'!8%5NWIaHbm0;W_!<CmGmR7eieN~> -!BU8Qkl@:PrrN07_!h:'!8%5NSUp%Rkm$'U!< -!B:&NirG&9rrN07_!h:'!8%5NN.L$;is+4G!< -!BpJTm/X-`rrE,8nGiCdg&D&OJaLtS#4.]l!!RB2JcC<$ec,jBE -!BU8Qkl@:PrrE,8nGiCdg&D&CJa(\K#3_ -!B:&NirG&9rrE,8nGiCdg&D&2J`G8?#3(aZ!!RB2JcC<$ec,jBE -!BpJTm/X-`rrBjOrrB$LmFCS-a?0G&2qW]]JcF-t"kYa6!'J>RmH3d:eieN~> -!BU8Qkl@:PrrBjOrrAU@l.,#%`B+&"2qW]]JcF-t"kYa6!'A/Nl/q42c8pI~> -!B:&NirG&9rrBjOrrA"/j43/n^cDGq2qW]]JcF-t"kYa6!'7oHj6#A&_`*)~> -!BpJTm/X,urrB$LmFU_0j`1P*'qkPWs+13rrs&Iq'`\GYjalg_m/bd$J,~> -!BU8Qkl@9errAU@l.>/(iG\r#'qkPWs+13rrs&Iq'`\DViIU7WklK'jJ,~> -!B:&NirG%NrrA"/j4E;qgMI)o'qkPWs+13rrs&Iq'`\DSgO\DKirR%VJ,~> -!BpJTm/X,urrB$LmF^e0^)m=VB'k0LJcEpn"mon'!$Aq+mHO!=eieN~> -!BU8Qkl@9errAU@l.G5(],gqRB'k0LJcEpn"mon'!$8b'l07F5c8pI~> -!B:&NirG%NrrA"/j4NAq[N,>LB'k0LJcEpn"mon'!$/M!j6>S)_`*)~> -!BpJTm/X,urrB$LmFpq2hHU']/]rYEJcEdj"j/Cs!F4K4mHa-?eieN~> -!BU8Qkl@9errAU@l.YA*g0+LW/]rYEJcEdj"j/Cs!F"3.l0IR7c8pI~> -!B:&NirG%NrrA"/j4`MseQ;hP/]rYEJcEdj"j/Cs!Edm'j6P_+_`*)~> -!BpJTm/X,urrB$LmG%"3UDNt:LAQQ%JcE^h"oF#[!#VJ^mHj3@eieN~> -!BU8Qkl@9errAU@l.bG+TGRY7LAQQ%JcE^h"oF#[!#VA[l0RX8c8pI~> -!B:&NirG%NrrA"/j4iStS/2/2LAQQ%JcE^h"oF#[!#M/Vj6Ye,_`*)~> -!BpJTm/X,urrB$LmG7.5fMDPJ4P55bJcERd"kYp;!)V=!mI'?BeieN~> -!BU8Qkl@9errAU@l.tS-e4ouD4P55bJcERd"kYp;!)D$pl0dd:c8pI~> -!B:&NirG%NrrA"/j5&`!cV+<=4P55bJcERd"kYp;!)1^ij6kq._`*)~> -!BpJTm/X,urrB$LmG@46S.Yf2PPp(4JcELb"oXVo!"tfQmI0ECeieN~> -!BU8Qkl@9errAU@l/(Y.R1TE.PPp(4JcELb"oXVo!"kWMl0mj;c8pI~> -!B:&NirG%NrrA"/j5/f"Pn=!*PPp(4JcELb"oXVo!"kKIj6u"/_`*)~> -!BpJTm/X,urrB$LmGR@8gJIqN6fWatJcE@^"lhrM!)_L%mIBQEeieN~> -!BU8Qkl@9errAU@l/:e0fM;JI6fWatJcE@^"lhrM!)M6ul1+!=c8pI~> -!B:&NirG%NrrA"/j5Ar$dS0]A6fWatJcE@^"lhrM!):mmj72.1_`*)~> -!BpJTm/X,umJs5;mG[F9W##FCRf7m -!BU8Qkl@9emJrf/l/Ck1VAB4ARf7mc8pI~> -!B:&NirG%NmJr2sj5K#%Tb[V;Rf7m -!BpJTm/X,umJs5;mGmR;iEcNb52LkjJcE.X"l;EC!FF`9mI]cHeieN~> -!BU8Qkl@9emJrf/l/V"3h-9s\52LkjJcE.X"l;EC!F4H3l1F3@c8pI~> -!B:&NirG%NmJr2sj5]/'f3/1T52LkjJcE.X"l;EC!F"*+j7M@4_`*)~> -!BpJTm/X,umJs5;mH!X-JcE(V"oXAc!$BF9mIfiIeieN~> -!BU8Qkl@9emJrf/l/_(4a;t-JcE(V"oXAc!$944l1O9Ac8pI~> -!B:&NirG%NmJr2sj5f5(_]8^_N;\>-JcE(V"oXAc!$/t.j7VF5_`*)~> -!BpJTm/X,umJs5;mH3d>l?EF31Y%'VJcDqR"k>C/"F03_mJ#uKeieN~> -!BU8Qkl@9emJrf/l/q46k&pk-1Y%'VJcDqR"k>C/"ErpYl1aECc8pI~> -!B:&NirG%NmJr2sj6#A*i,]#$1Y%'VJcDqR"k>C/"EWLPj7hR7_`*)~> -!BpJTm/X,umJs5;mH -!BU8Qkl@9emJrf/l0%:7c8Ye*Gl!!kJcDkP"o -!B:&NirG%NmJr2sj6,G+a>O#"Gl!!kJcDkP"o -!BpJTm/X-`mJsT1mJs5;mHEp?T+CuA]n-37s/H#$]c-q_T7QD*m/bd$J,~> -!BU8Qkl@:PmJsT1mJrf/l0.@7SIbc?]n-37s/H#$]c-q_SUp&$klK'jJ,~> -!B:&NirG&9mJsT1mJr2sj65M+R1B9:]n-37s/H#$]c-q^R=XDoirR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WIaI&m01T]!""qiJcC<$V>g_uPmIF?aarjWm/bd$J,~> -!BU8Qkl@:PmK*A%Zc)83SUp%kklo'U!""qiJcC<$V>g_uPmIF>`e!CPklK'jJ,~> -!B:&NirG&9mK*A%Zc)83N.L$Tis!4H!""qiJcC<$V>g_uPmIF=^k(PDirR%VJ,~> -!BpJTm/X-`mK3I)'=7;u"g(#p&m*i@mJs5;mHj3CS.#B -!BU8Qkl@:PmK3I)'=7;u"g(#p&m*i@mJrf/l0RX;R1''9eUdaOs.TGqeK"VuR=XW$klK'jJ,~> -!B:&NirG&9mK3I)'=7;u"g(#p&m*i@mJr2sj6Ye/PmdX5eUdaOs.TGqeK"VuQ%@uoirR%VJ,~> -!BpJTm/X-`mKJaMmm"m9=p!*\uFs+13Brrr!t!!$KkJaNL)!S0Da~> -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;Sna6G>#MJMFWIaI*m0(]g!!npBs+13>rreYo!&2]Lm/l\+4b*~> -!BU8Qkl@:PmKEUjs1f;Sna6G>#MJMFSUp%oklf0_!!npBs+13>rreYo!&)NHklU+p3e.~> -!B:&NirG&9mKEUjs1f;Sna6G>#MJMFN.L$Xirm@S!!npBs+13>rreYo!%u9Bir\8Y2h1~> -!BpJTm/X-`mJm7drrR`Ojmqg?UHI5t!3(P:nEg@a%fdj!JcC<$RK!E7,6/7[JaEKh4b*~> -!BU8Qkl@:PmJm7drrR`Ojmqg?UHI5t!1e]*nEC(Z%fdj!JcC<$RK!E7,6/7XJa!3\3e.~> -!B:&NirG&9mJm7drrR`Ojmqg?UHI5t!/uKhnDaYO%KI`uJcC<$RK!E7,6/4RJ`?dK2h1~> -!BpJTm/X-`mKEUjs1f;So'QRq+j8R,!3(P:o'HVIHia:=oR[$ns-N`hoLJr`I-cLQ!S0Da~> -!BU8Qkl@:PmKEUjs1f;So'QRq+j8R,!1e]*o'$>AH3+(;oR[$ns-N`hoLJr`HK^"G!R<`V~> -!B:&NirG&9mKEUjs1f;So'QRq+j8R,!/uKho&Bo5G6.b8oR[$ns-N`hoLJr`GN+88!Q-jH~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=78t!hC4CfBrX3!S0Da~> -!BU8Qkl@:PmK3I)'=78t!hC4CfBrX0Ja)gk"NMki&@I)hJcCl4"LSd@-c^r*!R<`V~> -!B:&NirG&9mK3I)'=78t!hC4CfBrWtJ`HC_"MuJc&@I)hJcCl4"LSd@-GkJs!Q-jH~> -!BpJTm/X-`mK*A%Zh!McKH/(amJs5;mIfiLYR:F]g4B9Ts,[0_g+*.2Y_MNGeieN~> -!BU8Qkl@:PmK*A%Zh!McKH/(amJrf/l1O9DXU>+Zg4B9Ts,[0_g+*.2XbQ'@c8pI~> -!B:&NirG&9mK*A%Zh!McKH/(amJr2sj7VF8W!`SUg4B9Ts,[0_g+*.2W.s=5_`*)~> -!BpJTm/X-`mK!,n4b*~> -!BU8Qkl@:PmK! -!B:&NirG&9mK!Z:*!ru9jJcC<$NW0.P;ZHoLLZ8EQ2h1~> -!BpJTm/X-`mJsT1mJs5;mJ-&Ok["5iO+I=^s,$aYNr]5ek_\[-eieN~> -!BU8Qkl@:PmJsT1mJrf/l1jKGjBV`dO+I=^s,$aYNr]5djGE+%c8pI~> -!B:&NirG&9mJsT1mJr2sj7qX;hc^!\O+I=^s,$aYNr]5ahhg@o_`*)~> -!BpJTm/X,umJs5;mJ6,PgcYWDWe(2$s+gUWWX/YggktJ"eieN~> -!BU8Qkl@9emJrf/l1sQHffT6@We(2$s+gUWWX/Yffo#"pc8pI~> -!B:&NirG%NmJr2sj8%^ -!BpJTm/X,umJs5;mJ?2Qas-m(b(9SDs+UIUar(1(b)>WfeieN~> -!BU8Qkl@9emJrf/l2'WI`ZkI$b(9SDs+UIUar(1(`f''^c8pI~> -!B:&NirG%NmJr2sj8.d=_'/jsb(9SDs+UIUar(1'_2I=S_`*)~> -!BpJTm/X,umJs5;mJH8RZNgIbj+75]s+C=Sj"UN=Z]+8PeieN~> -!BU8Qkl@9emJrf/l20]JYQk._j+75]s+C=Sj"UN=Y`.fIc8pI~> -!B:&NirG%NmJr2sj87j>Ws8VZj+75]s+C=Sj"UN=X,Q'>_`*)~> -!BpJTm/X,umJs5;mJQ>SRg/phoR[$ns+11QoM5GlRuQe9eieN~> -!BU8Qkl@9emJrf/l29cKQj*OdoR[$ns+11QoM5GkR#U>2c8pI~> -!B:&NirG%NmJr2sj8@p?PQh+`oR[$ns+11QoM5GkP`=](_`*)~> -!BpJTm/X,umJs5;mJZDTJH5airIP!"s+14Mrri:>!!.Y2m/bd$J,~> -!BU8Qkl@9emJrf/l2BiLIfTOgrIP!"s+14Mrri:>!!.S0klK'jJ,~> -!B:&NirG%NmJr2sj8J!@HN=+crIP!"s+14Mrri:>!!.G,irR%VJ,~> -!BpJTm/X,umJs5;mJlPVl=9krNe.4]s+14Irre>`!+bAVm/bd$J,~> -!BU8Qkl@9emJrf/l2TuNk$e;lNe.4]s+14Irre>`!+P)PklK'jJ,~> -!B:&NirG%NmJr2sj8\-Bi*ZNdNe.4]s+14Irre>`!+=`HirR%VJ,~> -!BpJTm/X,umJs5;m02n=9)o6tJcC<$JcGQG"KD_-9BD<'!S0Da~> -!BU8Qkl@9emJrf/klp>18cT-sJcC<$JcGQG"KD_-9&Yos!R<`V~> -!B:&NirG%NmJr2sis"Jt8,rpqJcC<$JcGQG"KD_-8DB9e!Q-jH~> -!BpJTm/X,urrB$Lm0)H)!#!/"s+13$s7cNr_@ci(j-&d1eieN~> -!BU8Qkl@9errAU@klflu!#!/"s+13$s7cNr_@ci'hid4)c8pI~> -!B:&NirG%NrrA"/irn$h!#!/"s+13$s7cNr_@ci&fok@r_`*)~> -!BpJTm/X,urrB$Mm0(ui!$0mHs+13$s7QBph&QJFes#J%eieN~> -!BU8Qkl@9errAUAklfE`!$0mHs+13$s7QBph&QJEdZ`nrc8pI~> -!B:&NirG%NrrA"0irmUT!$0mHs+13$s7QBph&QJDc'./g_`*)~> -!BpJTm/X,urrB$Nm0(]W!%R&\s+13$s7?6nj=1-PcBR\seieN~> -!BU8Qkl@9errAUBklf-O!%R&\s+13$s7?6nj=1-Pb*;,kc8pI~> -!B:&NirG%NrrA"1irm=C!%R&\s+13$s7?6nj=1-O`K]B`_`*)~> -!BpJTm/X,urrB$Om0(?E!&j1ps+13$s7-*llo"h\`0K]jeieN~> -!BU8Qkl@9errAUCkleg>!&j1ps+13$s7-*llo"h\_3O6cc8pI~> -!B:&NirG%NrrA"2irm"2!&j1ps+13$s7-*llo"h[]TqLX_`*)~> -!BpJTm/X,urrB$Pm0's3!(6=.s+13$s6osjnj -!BU8Qkl@9errAUDkleF+!(6=.s+13$s6osjnj -!B:&NirG%NrrA"3irlUu!(6=.s+13$s6osjnj -!BpJTm/X-`rrBjOrrB$Qm0'Wr!)`NBs+13$s6]ghpe_"oYa=_XeieN~> -!BU8Qkl@:PrrBjOrrAUEkle*k!)`NBs+13$s6]ghpe_"oXdA8Qc8pI~> -!B:&NirG&9rrBjOrrA"4irl:`!)`NBs+13$s6]ghpe_"oW0cNF_`*)~> -!BpJTm/X-`rrE,8_uB_9L[>5E#QRp'JcC<$JcG'9"T2:##ca9Z!S0Da~> -!BU8Qkl@:PrrE,8_uB_-LZnr>#QRp'JcC<$JcG'9"T2:##cF'S!R<`V~> -!B:&NirG&9rrE,8_uB^qLZ8N4#QRp'JcC<$JcG'9"T2:##c!dI!Q-jH~> -!BpJTm/X-`rrN07^r66QWJKpEV?[*9rdk*#s+147rri=9!!fBhm/bd$J,~> -!BU8Qkl@:PrrN07^r66QSVZM5UBU^5rdk*#s+147rri=9!!]3dklK'jJ,~> -!B:&NirG&9rrN07^r66QN/6KsT*>:1rdk*#s+147rri=9!!]'`irR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?"ggGu&m+/IrrB$Tm0'*e!,qjfs+13$s6'Cbrbhc@Tpk?LeieN~> -!BU8Qkl@:PrrW8:'Ys>?"ggGu&m+/IrrAUHkldR^!,qjfs+13$s6'Cbrbhc@SsnmEc8pI~> -!B:&NirG&9rrW8:'Ys>?"ggGu&m+/IrrA"7irkeS!,qjfs+13$s6'Cbrbhc?R[W7;_`*)~> -!BpJTm/X-`rr`?%^_FTVrrkcpnFD,jg&D&OMX:M9"9 -!BU8Qkl@:Prr`?%^_FTVrrkcpnFD,jg&D&CMWk53"9 -!B:&NirG&9rr`?%^_FTVrrkcpnFD,jg&D&2MW4f)"9 -!BpJTm/X-`rriE&s1f>anc&X`#hf4XWJg-GU&k=AJcC<$JcF^/"+("LU7CTOeieN~> -!BU8Qkl@:PrriE&s1f>anc&X`#hf4XSVu_7T)o">JcC<$JcF^/"+("LT:G-Hc8pI~> -!B:&NirG&9rriE&s1f>anc&X`#hf4XN/Q]uRfWS:JcC<$JcF^/"+("LS"/L>_`*)~> -!BpJTm/X-`rr<&urrR`Op%/1boS6)mrrB$Wm/rj\!.oe%JcC<$hu -!BU8Qkl@:Prr<&urrR`Op%/1boS6)mrrAUKkl[@V!.oe%JcC<$hu -!B:&NirG&9rr<&urrR`Op%/1boS6)mrrA":irbSL!.oe%JcC<$hu -!BpJTm/X-`rriE&s1f>aoDegj!>aGCrrB$Xm/s$b!.oe%JcC<$h>[S/!!K!em/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoDegj!>aGCrrAULkl[L[!.oe%JcC<$h>[S/!!JmbklK'jJ,~> -!B:&NirG&9rriE&s1f>aoDegj!>aGCrrA";irb_Q!.oe%JcC<$h>[S/!!Ja^irR%VJ,~> -!BpJTm/X-`rr`?%^_FTSrrVbD4k]i8WK-?JV?R$IJcC<$JcFL)"+("PVP!5VeieN~> -!BU8Qkl@:Prr`?%^_FTSrrVbD4k]i8SW;q:UBU^FJcC<$JcFL)"+("PUS$cOc8pI~> -!B:&NirG&9rr`?%^_FTSrrVbD4k]i8N/lp#T*54AJcC<$JcFL)"+("OT:b-E_`*)~> -!BpJTm/X-`rrW8:'Ys2;!VQcOrrB$Zm/s?n!-NkmJcC<$g&D.s!!fNsm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys2;!VQcOrrAUNkl[gf!-NkmJcC<$g&D.s!!]?oklK'jJ,~> -!B:&NirG&9rrW8:'Ys2;!VQcOrrA"=irc%\!-NkmJcC<$g&D.s!!]3kirR%VJ,~> -!BpJTm/X-`rrN07_".L/>LiW5E^8=X!3)(I"1/:5Dh7q>s+14%rr[0>#IL2l!S0Da~> -!BU8Qkl@:PrrN07_".L/>LiW5E^8=X!1f59"0i(2Dh7q>s+14%rr[0>#I0ue!R<`V~> -!B:&NirG&9rrN07_".L/>LiW5E^8=X!0!$""0;_-Dh7q>s+14%rr[0>#HXWZ!Q-jH~> -!BpJTm/X-`rrE,8nc&cm/d)qsl.Q(:WKHQN\I&=Ordk*#s+14%rri=9!"-92m/bd$J,~> -!BU8Qkl@:PrrE,8nc&cm/d)qsl.Q(:SWW.>[L*"Lrdk*#s+14%rri=9!"-0/klK'jJ,~> -!B:&NirG&9rrE,8nc&cm/d)qsl.Q(:N03-'YmLJGrdk*#s+14%rri=9!"-!*irR%VJ,~> -!BpJTm/X-`rrBjOrrB$]m/t9=!+(6VJcC<$e,KMV!"m/Em/bd$J,~> -!BU8Qkl@:PrrBjOrrAUQkl\a5!+(6VJcC<$e,KMV!"cuAklK'jJ,~> -!B:&NirG&9rrBjOrrA"@ircq*!+(6VJcC<$e,KMV!"cf -!BpJTm/X,urrB$^m0(]O!)`WEs+13$s3puNqb[>1cD9h.eieN~> -!BU8Qkl@9errAURklf-G!)`WEs+13$s3puNqb[>1b,"8&c8pI~> -!B:&NirG%NrrA"Airm=;!)`WEs+13$s3puNqb[>0`MDMp_`*)~> -!BpJTm/X,urrB$_m0(u_!(6O4s+13$s3^iLpd5$(etqa7eieN~> -!BU8Qkl@9errAUSklfEW!(6O4s+13$s3^iLpd5$(d\Z1/c8pI~> -!B:&NirG%NrrA"BirmUK!(6O4s+13$s3^iLpd5$'c)'G$_`*)~> -!BpJTm/X,urrB$`m0)5p!&jD!s+13$s3L]JnhpIth59Q?eieN~> -!BU8Qkl@9errAUTklf]h!&jD!s+13$s3L]JnhpIsg8=*8c8pI~> -!B:&NirG%NrrA"Cirmj[!&jD!s+13$s3L]JnhpIre>D7,_`*)~> -!BpJTm/X,urrB$am0)T,!%R>ds+13$s3:QHlm_uikGR\JeieN~> -!BU8Qkl@9errAUUklg'$!%R>ds+13$s3:QHlm_uhjJV5Cc8pI~> -!B:&NirG%NrrA"Dirn3l!%R>ds+13$s3:QHlm_ughP]B7_`*)~> -!BpJTm/X,urrB$bm0)]I!$:NYs+13$s3(EFm2c7#lDX(NeieN~> -!BU8Qkl@9errAUVklg-@!$:NYs+13$s3(EFm2c7"k,@MFc8pI~> -!B:&NirG%NrrA"Eirn:2!$:NYs+13$s3(EFm2c6ui2GZ:_`*)~> -!BpJTm/X,urrB$bm/pl!'%VX6JcC<$ao;Io&ccI@m/bd$J,~> -!BU8Qkl@9errAUVklYAp'%VX6JcC<$ao;Io&ccC>klK'jJ,~> -!B:&NirG%NrrA"Eir`Zh'%VX6JcC<$ao;Io&cc= -!BpJTm/X,urrB$cm/qn>#f;/mJcC<$a8Z7Y#QTFTm/bd$J,~> -!BU8Qkl@9errAUWklZD8#f;/mJcC<$a8Z7Y#QT@RklK'jJ,~> -!B:&NirG%NrrA"FiraW.#f;/mJcC<$a8Z7Y#QT4NirR%VJ,~> -!BpJTm/X,umJs5Sm/rgY!ighOJcC<$`W$%?!Wedjm/bd$J,~> -!BU8Qkl@9emJrfGkl[:R!ighOJcC<$`W$%?!We[gklK'jJ,~> -!B:&NirG%NmJr36irbMH!ighOJcC<$`W$%?!WeOcirR%VJ,~> -!BpJTm/X,umJs5Tm/sg%!02X1JcC<$_uBh!!!]p5m/bd$J,~> -!BU8Qkl@9emJrfHkl\9r!02X1JcC<$_uBh!!!Ta1klK'jJ,~> -!B:&NirG%NmJr37ircLh!02X1JcC<$_uBh!!!TU-irR%VJ,~> -!BpJTm/X,umJs5Um/tKB!-!MhJcC<$_>aUV!"d;Sm/bd$J,~> -!BU8Qkl@9emJrfIkl\p9!-!MhJcC<$_>aUV!"[)NklK'jJ,~> -!B:&NirG%NmJr38ird+.!-!MhJcC<$_>aUV!"ZoIirR%VJ,~> -!BpJTm/X,umJs5Vm/u,g!)\=IJcC<$^]+C5!$g:$m/bd$J,~> -!BU8Qkl@9emJrfJkl]T`!)\=IJcC<$^]+C5!$g1!klK'jJ,~> -!B:&NirG%NmJr39irdaS!)\=IJcC<$^]+C5!$]moirR%VJ,~> -!BpJTm/X,umJs5Wm0)W9!&=+ss+13$s1eR:oJ$>/kcX:ReieN~> -!BU8Qkl@9emJrfKklg'0!&=+ss+13$s1eR:oJ$>.jK@_Jc8pI~> -!B:&NirG%NmJr3:irn7$!&=+ss+13$s1eR:oJ$>-hlbu?_`*)~> -!BpJTm/X-`mJsT1mJs5Wm/pYp)<6;JJcC<$^&J2p)$"!Gm/bd$J,~> -!BU8Qkl@:PmJsT1mJrfKklY2k)<6;JJcC<$^&J2p)$!sFklK'jJ,~> -!B:&NirG&9mJsT1mJr3:ir`Hb)<6;JJcC<$^&J2p)$!jCirR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WLrP[Y5n[(JcC<$JcE:\"0)A&YH[BpeieN~> -!BU8Qkl@:PmK*A%Zc)83SY,-KX8r@%JcC<$JcE:\"0)A&XK^pic8pI~> -!B:&NirG&9mK*A%Zc)83N1],4VuZq!JcC<$JcE:\"0)A&W3G:__`*)~> -!BpJTm/X-`mK3I)'=75s!o"Unf^8a=T^;j)%fh34s+13$s0r"1JcH>)Z0_SC4b*~> -!BU8Qkl@:PmK3I)'=75s!o"Unf^8a1T]lR!%fh34s+13$s0r"1JcH>%Z0;;73e.~> -!B:&NirG&9mK3I)'=75s!o"Unf^8`uT]6-k%KM*3s+13$s0r"1JcH:tZ/Yl&2h1~> -!BpJTm/X-`mKWM/\^i[=e*rdk*#s+13Zrri="!%?j4m/bd$J,~> -!BU8Qkl@:PmKSY>9NhBr;%rdk*#s+13Zrri="!%6X/klK'jJ,~> -!B:&NirG&9mKN1o87fHpSsrdk*#s+13Zrri="!%-@(irR%VJ,~> -!BpJTm/X-`mKEUjs1f;So^2h'*p*ITmJs5\m0)cM!%[Vks+13$s0_k0nga]7m'H'[eieN~> -!BU8Qkl@:PmKEUjs1f;So^2h'*p*ITmJrfPklg3D!%[Vks+13$s0_k0nga]6kd0LSc8pI~> -!B:&NirG&9mKEUjs1f;So^2h'*p*ITmJr3?irn@6!%[Vks+13$s0_k0nga]4ij7YG_`*)~> -!BpJTm/X-`mJm7drrR`Ojn8$D7[ -!BU8Qkl@:PmJm7drrR`Ojn8$D7[ -!B:&NirG&9mJm7drrR`Ojn8$D7[l?"!"dk8s+13$s0M_-g(47.Zf;)(2h1~> -!BpJTm/X-`mKEUjs1f;Sp$Msd/aVm*f^8a=U[8/_!Woc\s+13$s0;S+[/pE/[-[nF4b*~> -!BU8Qkl@:PmKEUjs1f;Sp$Msd/aVm*f^8a1UZhlY!Woc\s+13$s0;S+[/pE-[-7V:3e.~> -!B:&NirG&9mKEUjs1f;Sp$Msd/aVm*f^8`uUZ2HN!Woc\s+13$s0;S+[/pE([,V2)2h1~> -!BpJTm/X-`mK)Emd:)-mJs5^m/toM!/,q'JcC<$YQ"]X!"[Ygm/bd$J,~> -!BU8Qkl@:PmK)Emd:)-mJrfRkl]?E!/,q'JcC<$YQ"]X!"[McklK'jJ,~> -!B:&NirG&9mK)Emd:)-mJr3AirdO9!/,q'JcC<$YQ"]X!"R8]irR%VJ,~> -!BpJTm/X-`mK3I)'=7;uqZ,=;!3)g^"QqH=8cF;@JcC<$YQ"b)8H:I-[d=+H4b*~> -!BU8Qkl@:PmK3I)'=7;uqZ,=;!1ftN"QM-88cF;@JcC<$YQ"b)8H:F([cmh<3e.~> -!B:&NirG&9mK3I)'=7;uqZ,=;!0!c7"Pk[18cF;@JcC<$YQ"b)8H:C![c7D+2h1~> -!BpJTm/X-`mK*A%ZgR5]!8-]>WMSta@K7YAJcC<$JcDkP"7IH7@^bY)eieN~> -!BU8Qkl@:PmK*A%ZgR5]!8-]>SYbQQ?iVG?JcC<$JcDkP"7IH7@(,;#c8pI~> -!B:&NirG&9mK*A%ZgR5]!8-]>N2>P:?2u5=JcC<$JcDkP"7IH7?FJkp_`*)~> -!BpJTm/X-`mK!\*X4I4b*~> -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT1mJs5am/tH=!1/9:JcC<$WW*'e!"?uZm/bd$J,~> -!BU8Qkl@:PmJsT1mJrfUkl\p6!1/9:JcC<$WW*'e!"?lWklK'jJ,~> -!B:&NirG&9mJsT1mJr3Dird(*!1/9:JcC<$WW*'e!"?ZQirR%VJ,~> -!BpJTm/X,umJs5bm/uE!!*XsRJcC<$VuHj&!%R'?m/bd$J,~> -!BU8Qkl@9emJrfVkl]im!*XsRJcC<$VuHj&!%Hj:klK'jJ,~> -!B:&NirG%NmJr3Eire!`!*XsRJcC<$VuHj&!%?R3irR%VJ,~> -!BpJTm/X,umJs5bm/pVo.J&,jJcC<$VuHkj.0*Yam/bd$J,~> -!BU8Qkl@9emJrfVklY,i.J&,jJcC<$VuHkj.0*S_klK'jJ,~> -!B:&NirG%NmJr3Eir`Ea.J&,jJcC<$VuHkj.0*M]irR%VJ,~> -!BpJTm/X,umJs5cm/rs\#1nG+JcC<$V>gYL"ot:,m/bd$J,~> -!BU8Qkl@9emJrfWkl[IV#1nG+JcC<$V>gYL"ot4*klK'jJ,~> -!B:&NirG%NmJr3Firb\L#1nG+JcC<$V>gYL"ot(&irR%VJ,~> -!BpJTm/X,umJs5dm/t`I!0r-8JcC<$U]1F]!"dPim/bd$J,~> -!BU8Qkl@9emJrfXkl]3B!0r-8JcC<$U]1F]!"dGfklK'jJ,~> -!B:&NirG%NmJr3Gird@5!0r-8JcC<$U]1F]!"[/_irR%VJ,~> -!BpJTm/X,umJs5em0)]6!)NTFs+13$s.fSsr_EMRlFcKbeieN~> -!BU8Qkl@9emJrfYklg-.!)NTFs+13$s.fSsr_EMRk.KpZc8pI~> -!B:&NirG%NmJr3Hirn9u!)NTFs+13$s.fSsr_EMPi4S(N_`*)~> -!BpJTm/X,umJs5em/qS5)s`(TJcC<$U&P5\)ZY,qm/bd$J,~> -!BU8Qkl@9emJrfYklZ)/)s`(TJcC<$U&P5\)ZY&oklK'jJ,~> -!B:&NirG%NmJr3Hira?&)s`(TJcC<$U&P5\)ZXrlirR%VJ,~> -!BpJTm/X,umJs5fm/sd"!kj0bJcC<$TDo#,!X,sFm/bd$J,~> -!BU8Qkl@9emJrfZkl\6p!kj0bJcC<$TDo#,!X,jCklK'jJ,~> -!B:&NirG%NmJr3IircIf!kj0bJcC<$TDo#,!X,^?irR%VJ,~> -!BpJTm/X,urrB%#m/u>g!-j(pJcC<$Sc8e:!$1(5m/bd$J,~> -!BU8Qkl@9errAUlkl]c^!-j(pJcC<$Sc8e:!$'k0klK'jJ,~> -!B:&NirG%NrrA"[irdpQ!-j(pJcC<$Sc8e:!#sS)irR%VJ,~> -!BpJTm/X,urrB%#m/pYp./JMpJcC<$Sc8fg-idSfm/bd$J,~> -!BU8Qkl@9errAUlklY/j./JMpJcC<$Sc8fg-idMdklK'jJ,~> -!B:&NirG%NrrA"[ir`Hb./JMpJcC<$Sc8fg-idGbirR%VJ,~> -!BpJTm/X,urrB%$m/s9f#h=M+JcC<$S,WT@#Q^m=m/bd$J,~> -!BU8Qkl@9errAUmkl[d`#h=M+JcC<$S,WT@#Q^g;klK'jJ,~> -!B:&NirG%NrrA"\irbtU#h=M+JcC<$S,WT@#Q^X6irR%VJ,~> -!BpJTm/X,urrB%%m/u)Z!/uL/JcC<$RK!AJ!#OD*m/bd$J,~> -!BU8Qkl@9errAUnkl]QS!/uL/JcC<$RK!AJ!#O;'klK'jJ,~> -!B:&NirG%NrrA"]ird^F!/uL/JcC<$RK!AJ!#F"uirR%VJ,~> -!BpJTm/X,urrB%%m/p2c55g'4JcC<$RK!Bf4oeHqm/bd$J,~> -!BU8Qkl@9errAUnklX]]55g'4JcC<$RK!Bf4oeBoklK'jJ,~> -!B:&NirG%NrrA"]ir`!U55g'4JcC<$RK!Bf4oe -!BpJTm/X-`rrBjOrrB%&m/rjY%Gl[9JcC<$Qi@0E%02p7m/bd$J,~> -!BU8Qkl@:PrrBjOrrAUokl[=R%Gl[9JcC<$Qi@0E%02g4klK'jJ,~> -!B:&NirG&9rrBjOrrA"^irbPH%Gl[9JcC<$Qi@0E%02[0irR%VJ,~> -!BpJTm/X-`rrE,8_uB_9Z0_YI&HJ8Ns+13$s- -!BU8Qkl@:PrrE,8_uB_-Z0;AB&-//Ms+13$s- -!B:&NirG&9rrE,8_uB^qZ/Yr6&-//Ms+13$s- -!BpJTm/X-`rrN07^r66QWNkgl:]Nt9s+13$s-*Ha7K?9%m/bd$J,~> -!BU8Qkl@:PrrN07^r66QS[%D\:&mb7s+13$s-*Ha7K?3#klK'jJ,~> -!B:&NirG&9rrN07^r66QN3VCE9E7P5s+13$s-*Ha7K?-!irR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?quGCL!3*9k"/>i*i.:oZs+136rr_0g!2II!!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?quGCL!1gF["/#W'i.:oZs+136rr_0g!2.6o!R<`V~> -!B:&NirG&9rrW8:'Ys>?quGCL!0"5D".T?#i.:oZs+136rr_0g!1^se!Q-jH~> -!BpJTm/X-`rr`?%^_FTVrr<&KrrB%)m/u2^!0`!6JcC<$OoGNI!#XS2m/bd$J,~> -!BU8Qkl@:Prr`?%^_FTVrr<&KrrAUrkl]WV!0`!6JcC<$OoGNI!#XG.klK'jJ,~> -!B:&NirG&9rr`?%^_FTVrr<&KrrA"airdgJ!0`!6JcC<$OoGNI!#O2(irR%VJ,~> -!BpJTm/X-`rriE&s1f>ap&>!leGfNJZg@j"!'L42s+13$s,m<`rB('b`9dTV4b*~> -!BU8Qkl@:PrriE&s1f>ap&>!leGfN>ZfqQq!'L42s+13$s,m<`rB('``9@ -!B:&NirG&9rriE&s1f>ap&>!leGfN-Zf;-i!'L42s+13$s,m<`rB('^`8^m92h1~> -!BpJTm/X-`rr<&urrR`Op%JCh!"oG^LA]a)!3*?m"0V_2fRa'Rs+132rr^mZ!O'K0!S0Da~> -!BU8Qkl@:Prr<&urrR`Op%JCh!"oG^LA]a)!1gL]"0;M/fRa'Rs+132rr^mZ!Na9)!R<`V~> -!B:&NirG&9rr<&urrR`Op%JCh!"oG^LA]a)!0";F"/l5+fRa'Rs+132rr^mZ!N -!BpJTm/X-`rriE&s1f>aoD\pjd6Va)rrB%+m/uMl!/?()JcC<$NW0*8!$17Bm/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoD\pjd6Va)rrAUtkl]rc!/?()JcC<$NW0*8!$(%=klK'jJ,~> -!B:&NirG&9rriE&s1f>aoD\pjd6Va)rrA"cire*V!/?()JcC<$NW0*8!#sb6irR%VJ,~> -!BpJTm/X-`rr`?%^_FTRrrM9og&D&O[I"':!&+>&s+13$s,I$\r\"7l`pEfX4b*~> -!BU8Qkl@:Prr`?%^_FTRrrM9og&D&C[HRd4!&+>&s+13$s,I$\r\"7j`p!NL3e.~> -!B:&NirG&9rr`?%^_FTRrrM9og&D&2[Gq@+!&+>&s+13$s,I$\r\"7g`o@*;2h1~> -!BpJTm/X-`rrW8:'Ys2;!U1*IrrB%,m/tE6!lffkJcC<$MuNn!!X?`dm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys2;!U1*IrrAUukl\m.!lffkJcC<$MuNn!!X6Q`klK'jJ,~> -!B:&NirG&9rrW8:'Ys2;!U1*IrrA"dird(#!lffkJcC<$MuNn!!X6B[irR%VJ,~> -!BpJTm/X-`rrN07_".L/=O[0'9Oc]T!3*Hp"7/,MAqBu5s+13,rrZj54RC/V!S0Da~> -!BU8Qkl@:PrrN07_".L/=O[0'9Oc]T!1gU`"6_fHAqBu5s+13,rrZj546XcM!R<`V~> -!B:&NirG&9rrN07_".L/=O[0'9Oc]T!0"DI"6)?AAqBu5s+13,rrZj53o\6@!Q-jH~> -!BpJTm/X-`rrE,8nc&cm/d*,5p=]HGWOM6sQiIlgJcC<$JcCT,"76g'R)nXqeieN~> -!BU8Qkl@:PrrE,8nc&cm/d*,5p=]HGS[[hcPlMQdJcC<$JcCT,"76g'Q,r1jc8pI~> -!B:&NirG&9rrE,8nc&cm/d*,5p=]HGN47gLOT6-`JcC<$JcCT,"76g'OiZP`_`*)~> -!BpJTm/X-`rrBjOrrB%.m/u/Z!2+oCJcC<$L]7IL!#=>3m/bd$J,~> -!BU8Qkl@:PrrBjOrrAV"kl]WS!2+oCJcC<$L]7IL!#=50klK'jJ,~> -!B:&NirG&9rrBjOrrA"firddF!2+oCJcC<$L]7IL!#3r)irR%VJ,~> -!BpJTm/X,urrB%.m/pbs5Q666JcC<$L]7JU56,-6m/bd$J,~> -!BU8Qkl@9errAV"klY;n5Q666JcC<$L]7JU56,*5klK'jJ,~> -!B:&NirG%NrrA"fir`Qe5Q666JcC<$L]7JU56,!2irR%VJ,~> -!BpJTm/X,urrB%/m/t0,!nW#'JcC<$L&V8,!X$9]m/bd$J,~> -!BU8Qkl@9errAV#kl\X%!nW#'JcC<$L&V8,!X$0ZklK'jJ,~> -!B:&NirG%NrrA"gircgo!nW#'JcC<$L&V8,!X$!UirR%VJ,~> -!BpJTm/X,urrB%/m/f -!BU8Qkl@9errAV#klNjFEIn.@s+13&rrR0?3QgRec8pI~> -!B:&NirG%NrrA"girV1?EIn.@s+13&rrR0?36L7^_`*)~> -!BpJTm/X,urrB%0m/rmZ(@QhSJcC<$KDu&B(''oKm/bd$J,~> -!BU8Qkl@9errAV$kl[CT(@QhSJcC<$KDu&B(''iIklK'jJ,~> -!B:&NirG%NrrA"hirbVJ(@QhSJcC<$KDu&B('']EirR%VJ,~> -!BpJTm/X,urrB%1m/uDh!1JK=JcC<$Jc>h@!$((Dm/bd$J,~> -!BU8Qkl@9errAV%kl]i_!1JK=JcC<$Jc>h@!#sk?klK'jJ,~> -!B:&NirG%NrrA"iire!S!1JK=JcC<$Jc>h@!#sY9irR%VJ,~> -!BpJTm/X,urrB%1m/qM31Aue(JcC<$Jc>iN1&uLAm/bd$J,~> -!BU8Qkl@9errAV%klZ#-1Aue(JcC<$Jc>iN1&uF?klK'jJ,~> -!B:&NirG%NrrA"iira9$1Aue(JcC<$Jc>iN1&u= -!BpJTm/X,urrB%2m/tiC!Q0KgJcC<$JcGcM"2b-EeBR@]eieN~> -!BU8Qkl@9errAV&kl]9;!Q0KgJcC<$JcGcM"2b-Ed*:eUc8pI~> -!B:&NirG%NrrA"jirdI0!Q0KgJcC<$JcGcM"2b-EbK]&J_`*)~> -!BpJTm/X,umJs6!m/g5e=b6U(s+13$s8Ds!=TDFGm/bd$J,~> -!BU8Qkl@9emJrfjklOc`=b6U(s+13$s8Ds!=TDCFklK'jJ,~> -!B:&NirG%NmJr3YirW'X=b6U(s+13$s8Ds!=TD=DirR%VJ,~> -!BpJTm/X,umJs6"m/t*)#iL:6JcC<$JcG]K"5jFd^Wu3IeieN~> -!BU8Qkl@9emJrfkkl\O!#iL:6JcC<$JcG]K"5jFd]?]XAc8pI~> -!B:&NirG%NmJr3Zircal#iL:6JcC<$JcG]K"5jFd\'F"7_`*)~> -!BpJTm/X,umJs6"m/fENFb0RDs+13$s82ftFT=SMm/bd$J,~> -!BU8Qkl@9emJrfkklNsIFb0RDs+13$s82ftFT=PLklK'jJ,~> -!B:&NirG%NmJr3ZirV:BFb0RDs+13$s82ftFT=MKirR%VJ,~> -!BpJTm/X,umJs6#m/s9e'CLGOJcC<$JcGWI"7?g&W6ai3eieN~> -!BU8Qkl@9emJrflkl[d_'CLGOJcC<$JcGWI"7?g&VU+K-c8pI~> -!B:&NirG%NmJr3[irbtT'CLGOJcC<$JcGWI"7?g&U!Ma"_`*)~> -!BpJTm/X,umJs6$m/uW&!02X1JcC<$JcGQG"-*@1lHno!eieN~> -!BU8Qkl@9emJrfmkl^&r!02X1JcC<$JcGQG"-*@0k0W>nc8pI~> -!B:&NirG%NmJr3\ire3e!02X1JcC<$JcGQG"-*@/i6^Kb_`*)~> -!BpJTm/X-`mJsT1mJs6$m/rIN,5?`hJcC<$JcGQG"8F&?OjNIreieN~> -!BU8Qkl@:PmJsT1mJrfmklZtH,5?`hJcC<$JcGQG"8F&?O3m+lc8pI~> -!B:&NirG&9mJsT1mJr3\irb2>,5?`hJcC<$JcGQG"8F&?MpUJb_`*)~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WPIm&K)d]Ys+13$s+14CrrOtVK@0&eeieN~> -!BU8Qkl@:PmK*A%Zc)83S\XIkJH.KWs+13$s+14CrrOtVJ^N]_c8pI~> -!B:&NirG&9mK*A%Zc)83N54HTIK20Ts+13$s+14CrrOtVIaR0V_`*)~> -!BpJTm/X-`mK3I)'=78t"N!J4)O/qC!3*g%"6'so[XnI0s+13$s7QBo[K%!#dd7(d4b*~> -!BU8Qkl@:PmK3I)'=78t"N!J4)O/qC!1gsj"5X[k[XnI0s+13$s7QBo[K$utdcgeX3e.~> -!B:&NirG&9mK3I)'=78t"N!J4)O/qC!0"bS"5"7e[XnI0s+13$s7QBo[K$undc1AG2h1~> -!BpJTm/X-`mK_c3JcC<$JcG?A!]pC/dd7(d4b*~> -!BU8Qkl@:PmKc3JcC<$JcG?A!]pC-dcgeX3e.~> -!B:&NirG&9mKc3JcC<$JcG?A!]pC*dc1AG2h1~> -!BpJTm/X-`mKEUjs1f;Sp$MiZQ.>:&WP\$)h%'M#JcC<$JcC<$oD\p-!"[o7m/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$MiZQ.>:&S\jUng(+1uJcC<$JcC<$oD\p-!"[f4klK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$MiZQ.>:&N5FTWe.)JnJcC<$JcC<$oD\p-!"RN-irR%VJ,~> -!BpJTm/X-`mJm7drrR`OjnA*G'n$l):Ysdm!3*j&!c\3.JcC<$JcC<$nc&YY!--KT!S0Da~> -!BU8Qkl@:PmJm7drrR`OjnA*G'n$l):Ysdm!1h!k!cJ',JcC<$JcC<$nc&YY!,p?N!R<`V~> -!B:&NirG&9mJm7drrR`OjnA*G'n$l):Ysdm!0"eT!c.j)JcC<$JcC<$nc&YY!,U-E!Q-jH~> -!BpJTm/X-`mKEUjs1f;Sp$Mtc>27q8;;(@;WPe**g'7W!JcC<$JcC<$nc&^4!!h6-m/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$Mtc>27q8;;(@;S\s[of*;;sJcC<$JcC<$nc&^4!!h-*klK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$Mtc>27q8;;(@;N5OZXd0BZmJcC<$JcC<$nc&^4!!gp$irR%VJ,~> -!BpJTm/X-`mK_sIMC!)8%EJcC<$JcG3=!_iZ4eEm:f4b*~> -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=7;u"ZYB,mbJ<)mJs6)m/u,P!6Xd1"6[hLkCNYas+13?rr_o=cLgQ)"3LTP -gstcmeieN~> -!BU8Qkl@:PmK3I)'=7;u"ZYB,mbJ<)mJrfrkl]TI!6Xd1"6[hLkCNYas+13?rr_o=cLgQ)"3LTP -g"# -!B:&NirG&9mK3I)'=7;u"ZYB,mbJ<)mJr3airda=!6Xd1"6[hLkCNYas+13?rr_o=cLgQ)"3LTP -e(*IZ_`*)~> -!BpJTm/X-`mK*A%Zh!MfP?Zo#>#X,B!3*p(!d+K6nc&pUDd%CANd+`Gj+75]s+13Drs/%4F+o6f -E:E>r!_<<6ea3Cg4b*~> -!BU8Qkl@:PmK*A%Zh!MfP?Zo#>#X,B!1h'm!cn?4nc&pUDd%CANd+`Gj+75]s+13Drs/%4F+o6f -E:E>r!_<<4e`d+[3e.~> -!B:&NirG&9mK*A%Zh!MfP?Zo#>#X,B!0"kV!cS-1nc&pUDd%CANd+`Gj+75]s+13Drs/%4F+o6f -E:E>r!_<<1e`-\J2h1~> -!BpJTm/X-`mK!`U*cb%fjQ>rr`"*CV9PY"2&DZpOW?qs+13GrrU_Q])B>E -\ldMPrr^1>&)Yt*!S0Da~> -!BU8Qkl@:PmK!rr`"*CV9PY"2&DZpOW?qs+13GrrU_Q])B>E -\ldMPrr^1>&)5\"!R<`V~> -!B:&NirG&9mK!E -\ldMPrr^1>%bB4k!Q-jH~> -!BpJTm/X-`mJsT1mJs6*m/hV761b*XoN8Kp^&kZDoR[$ns+13IrrVUf^&,MF]i=FhrrPIdHe.Qb -eieN~> -!BU8Qkl@:PmJsT1mJrfsklQ,161b*XoN8Kp^&kZDoR[$ns+13IrrVUf^&,MF]i=FhrrPIdH.M3\ -c8pI~> -!B:&NirG&9mJsT1mJr3birXB(61b*XoN8Kp^&kZDoR[$ns+13IrrVUf^&,MF]i=FhrrPIdG1P[S -_`*)~> -!BpJTm/X,umJs6+m/u>]!5A()!F)r(^&bTFJcC<$JcDVI!Go7@^&b]ZnG`U)!#+ADm/bd$J,~> -!BU8Qkl@9emJrftkl]cT!5A()!F)r(^&bTFJcC<$JcDVI!Go7@^&b]ZnG`U)!#"/?klK'jJ,~> -!B:&NirG%NmJr3cirdpH!5A()!F)r(^&bTFJcC<$JcDVI!Go7@^&b]ZnG`U)!#!r9irR%VJ,~> -!BpJTm/X,umJs6+m/hn?47iIQV3:Ga!Ks:1s+13$s/>qukAg71!HI;lrrP7^K@fJkeieN~> -!BU8Qkl@9emJrftklQD947iIQV3:Ga!Ks:1s+13$s/>qukAg71!HI;lrrP7^J_0,ec8pI~> -!B:&NirG%NmJr3cirXZ047iIQV3:Ga!Ks:1s+13$s/>qukAg71!HI;lrrP7^Ib3T\_`*)~> -!BpJTm/X,umJs6,m/uPk!4;@t!,2>FrrE&4r;ci2!,-r`JcC<$W;cm_W;XF8X"jbW^:pP1nG`Tt -!#t.Sm/bd$J,~> -!BU8Qkl@9emJrfukl]ub!4;@t!,2>FrrE&4r;ci2!,-r`JcC<$W;cm_W;XF8X"jbW^:pP1nG`Tt -!#jqNklK'jJ,~> -!B:&NirG%NmJr3dire0W!4;@t!,2>FrrE&4r;ci2!,-r`JcC<$W;cm_W;XF8X"jbW^:pP1nG`Tt -!#jbIirR%VJ,~> -!BpJTm/X,umJs6,m/r[T/,o2@!Uat*^&S04^&S01^&`6AJcC<$JcD_L!-8"O!]i3FrOr8PnG`Ui -.fbpgm/bd$J,~> -!BU8Qkl@9emJrfukl[.M/,o2@!Uat*^&S04^&S01^&`6AJcC<$JcD_L!-8"O!]i3FrOr8PnG`Ui -.fbgdklK'jJ,~> -!B:&NirG%NmJr3dirbDD/,o2@!Uat*^&S04^&S01^&`6AJcC<$JcD_L!-8"O!]i3FrOr8PnG`Ui -.fb^airR%VJ,~> -!BpJTm/X,umJs6-m/u]*!2&l_!R6Dt^&S04^&n?@'nQ@u!JepNs+13$s/H"uE;[EN#F#)"!-%E, -".oQDm+Lb,eieN~> -!BU8Qkl@9emJrg!kl^-!!2&l_!R6Dt^&S04^&n?@'nQ@u!JepNs+13$s/H"uE;[EN#F#)"!-%E, -".oQCkh52$c8pI~> -!B:&NirG%NmJr3eire9i!2&l_!R6Dt^&S04^&n?@'nQ@u!JepNs+13$s/H"uE;[EN#F#)"!-%E, -".oQBin<>m_`*)~> -!BpJTm/X,umJs6-m/sBh)u9+*!R6Dt^&S03^&kou&,s9DLWtDMJcC<$WW)s;r4W7:5R:Zp^&W-@ -rr`'9!3=f?!S0Da~> -!BU8Qkl@9emJrg!kl[ja)u9+*!R6Dt^&S03^&kou&,s9DLWtDMJcC<$WW)s;r4W7:5R:Zp^&W-@ -rr`'9!3"T8!R<`V~> -!B:&NirG%NmJr3eirc(W)u9+*!R6Dt^&S03^&kou&,s9DLWtDMJcC<$WW)s;r4W7:5R:Zp^&W-@ -rr`'9!2S<.!Q-jH~> -!BpJTm/X,umJs6-m/fHOM=UZImW&0=!!)u3!kX0srk8DQmXbChs+13Lrr@*;^&o^KQ3[E'!-7N- -!f6n@g$Jgk4b*~> -!BU8Qkl@9emJrg!klO!JM=UZImW&0=!!)u3!kX0srk8DQmXbChs+13Lrr@*;^&o^KQ3[E'!-7N- -!f6n?g$&O_3e.~> -!B:&NirG%NmJr3eirV:BM=UZImW&0=!!)u3!kX0srk8DQmXbChs+13Lrr@*;^&o^KQ3[E'!-7N- -!f6n=g#E+N2h1~> -!BpJTm/X,urrB%?m/t6+%e0#g!,2>FrW)u4rr<'8JH!7_A:ac3s+13KrrJ1ZrOrMr&dr*]^8R:a -rr_a#!5mOX!S0Da~> -!BU8Qkl@9errAV3kl\^$%e0#g!,2>FrW)u4rr<'8JH!7_AV'l4s+13KrrJ4[rOrMr&dr*]^8R:a -rr_a#!5R=Q!R<`V~> -!B:&NirG%NrrA#"ircmn%e0#g!,2>FrW)u4rr<'8JH!7_AV'l4s+13KrrJ4[rOrMr&dr*]^8R:a -rr_a#!5$tF!Q-jH~> -!BpJTm/X,urrB%?m/g;gF7B21V3:Ga"H?ELe,=jtJcC<$XoAM$GRRgN^&`6:mJd6/!*7h@!S0Da~> -!BU8Qkl@9errAV3klOibF7B21V3:Ga"HHfbf`$I%JcC<$XoAM%Hk'EU^&`6:mJd6/!*.b;!R<`V~> -!B:&NirG%NrrA#"irW*YF7B21V3:Ga"HI-!h>W!*JcC<$XoAM%J.GoZ^&`6:mJd6/!)hP2!Q-jH~> -!BpJTm/X,urrB%@m/tuG"5iSI!F)r(^'D"oBlT&]\F5"KJcC<$Z2Y%-OW"diCq'5S!Oln3rr_-\ -#M@eu!S0Da~> -!BU8Qkl@9errAV4kl]E>"5iSI!F)r(^'D"qGC>j=_"!!UJcC<$Z2Y%-PoUHsCq'5S!Oln3rr_-\ -#1VDl!R<`V~> -!B:&NirG%NrrA##irdU3"5iSI!F)r(^'D"sL5MguaRau_JcC<$Z2Y%-Qlcs&Cq'5S!Oln3rr_-\ -#1)&a!Q-jH~> -!BpJTm/X,urrB%@m/hM4;==GcoN8Kp^'h;Mo:&6`Ei",Qf)C7#JcC<$[JpMi%i^f5s6`k"qn<-F -<:9)P!`8rBg[,$m4b*~> -!BU8Qkl@9errAV4klQ#.;==GcoN8Kp^'h;Mo:Ad&IBSL*gAZ['JcC<$[JpMk&KR8 -!B:&NirG%NrrA##irX9%;==GcoN8Kp^'h;Mo:] -!BpJTm/X,urrB%Am/uPh!5@k#"8?;@]_fDF]PD$Orr37W6Y_.eNe4k4JcC<$JcE=]"ob;>%X\0Q -rrU_Q])B>E\ldMJrr]t8)!KcB!S0Da~> -!BU8Qkl@9errAV5kl]u`!5@k#"8?;@]_fDF]PD$Orr37Z9R2N9RukMYJcC<$JcE=]"ob>B%tFTW -rrU_Q])B>E\ldMJrr]t8)!'K:!R<`V~> -!B:&NirG%NrrA#$ire0T!5@k#"8?;@]_fDF]PD$Orr37^E\ldMJrr]t8(Z4$.!Q-jH~> -!BpJTm/X-`rrBjOrrB%Am/iaW/aE?Bj)8+GLkg4YDr^`p$N5lVBo:`HHCidgJcC<$JcEIa"LAaY -Jb]*A#Ol\RKnX)WnEBlR/HD9qm/bd$J,~> -!BU8Qkl@:PrrBjOrrAV5klR4P/aE?Bj)8+GLkg4YDr^`p$N?/gGa.0nM5f;0JcC<$JcEIa"LAd] -L&(TF#Ol\RKnX,XnEBlR/HD0nklK'jJ,~> -!B:&NirG&9rrBjOrrA#$irYGF/aE?Bj)8+GLkg4YDr^`p$N?;uLRmM>R'biOJcC<$JcEIa"LJmb -Mu*;M#Ol\RKnX2ZnEBlR/HD$jirR%VJ,~> -!BpJTm/X-`rrE,8_uB_9bO#?g!1N*N"6[hCkP"o_r-(_JU[lB_KY?u.s+13$s2+d=h)u*Zo(N(d -oZk6oo]Q5URK,5#m/bd$J,~> -!BU8Qkl@:PrrE,8_uB_-bNT'b!1N*N"6[hCkP"o_r-VFhXRs`)Oi6mCs+13$s2+d=h*29bo_/:f -oZk:)p?2GWRK,2"klK'jJ,~> -!B:&NirG&9rrE,8_uB^qbMrX[!1N*N"6[hCkP"o_r.873[.MeDT?HnYs+13$s2+d=h*DKmp%JCg -oZk:8pZMPXRK,/!irR%VJ,~> -!BpJTm/X-`rrN07^r66QWQa`3_Z1>Bf)H-J@SLaLqr+GuU"fQts+13$s2Y-BpM:15ipm$LP1o+! -"8*9,_qj\\eieN~> -!BU8Qkl@:PrrN07^r66QS]p=#^]5#?f)H*JB39SsqrP)=X5AL.JcC<$`r?2:D[TV,nc&W]hWOn@ -ob%8?h<=sc3e.~> -!B:&NirG&9rrN07^r66QN6L;a])WK:f)H*JD.AOEr91bZ[c;r=JcC<$`r?2:E=?+8nc&Wiiog=D -ob%8:h;\OR2h1~> -!BpJTm/X-`rrW8:'Ys>?qu?^,g&D&Obj>I;!-H]i$e7L>FN"+O_hs/_oR[$ns+13mrr]5//AU`S -!Na*!rrR9B?/=lKeieN~> -!BU8Qkl@:PrrW8:'Ys>?qu?^,g&D&Cbio15!-H]i$e@dPK?F/fb*S=3on!-os+13mrr]>30ZM\NEc8pI~> -!B:&NirG&9rrW8:'Ys>?qu?^,g&D&2bi8b-!-H]i$eJ$bOjX.&dA3G[p4<6ps+13mrr]D629>7d -!PcqBrrR9B=l&*=_`*)~> -!BpJTm/X-`rr`?%^_FTRrrJ:)g&D&Oc0YVk$N\r.rsPbJAUVc$s50YuUYUM$JcC<$cMn%4=U:5j -mf*=.VWRm\f`;K=hX(?p4b*~> -!BU8Qkl@:Prr`?%^_FTRrrJ:)g&D&Cc05>c$N\r.rsPkQF,SHFs5U;=Xl4j2JcC<$cMn%7?O<(u -mf*=4Yibrff`;K9hWY'd3e.~> -!B:&NirG&9rr`?%^_FTRrrJ:)g&D&2c/SoX$N\r.rsPnUJXY3is5pkY\)i2@JcC<$cMn%9AI=q+ -mf*=;]&s"pf`;K4hW"XS2h1~> -!BpJTm/X-`rriE&s1f>ao)Adf,imYY!3+61!f[1Gci4I4/44Q2df0:?_2!f^p4<6ps+14!rrhtl -/LB6>rrM):jo5BJ!0,k&!S0Da~> -!BU8Qkl@:PrriE&s1f>ao)Adf,imYY!1hC!!f?tDci4I4/5(YWfDkmFaH`%3pOW?qs+14!rri#" -1+(iDrrM5Kjo5BJ!/fXt!R<`V~> -!B:&NirG&9rriE&s1f>ao)Adf,imYY!0#1_!f$bAci4I4/Q.e'h#IELc_@/[pjrHrs+14!rri&+ -2^mMKrrM>[jo5BJ!/KFk!Q-jH~> -!BpJTm/X-`rr<&urrR`Op%/1aSmg:O!3+61!\FDMcMn+B>Uai?LY)P*"PohuV;Hk(JcC<$fDc$O -]knrqp?V_[qKDf!rrT(u/`,jqeieN~> -!BU8Qkl@:Prr<&urrR`Op%/1aSmg:O!1hC!!\FDMcMn+B>Uk>[Phc9<"Q?J=YN(36JcC<$fDc$O -`-EV1p?V_[qh>"2rrT(u/`,^mc8pI~> -!B:&NirG&9rr<&urrR`Op%/1aSmg:O!0#1_!\48KcMn+B>Utl#U>Z%N"Qd+Z\`SJCJcC<$fDc$P -b_@EGp?V_[qiq'ArrT(u/)K:e_`*)~> -!BpJTm/X-`rriE&s1f>aoD\mj.+[&N!3+92"2"UKprraBNt?YbG`CPYrrr&0Ko3eBJcC<$JcFO* -"oc_t@1SF_rrIo;k5PPY'`bo(m/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoD\mj.+[&N!1hF""1\CHprraBNt?etLRR3$rrr)8PF'GeJcC<$JcFL) -"O`BF&!,rS!L2j2rr`$2!4h"O!R<`V~> -!B:&NirG&9rriE&s1f>aoD\mj.+[&N!0#4`"1/%CprraBNt?r3QD`jDrrr,@TVU!1JcC<$JcFL) -"PB;`&!,rS!M\oBrr`$2!4:YD!Q-jH~> -!BpJTm/X-`rr`?%^_FTTrrK,ofDbiMcKt[=!-HB`#JqK9Jp;O)ir8r]rn=&kVr<4,JcC<$hu -!BU8Qkl@:Prr`?%^_FTTrrK,ofDbiAcKPC7!-HB`#JqK9LPCSWjo,2^hQ)I;jamG_s+14-rrq;J -CFgLCkPkRadH1B0F9#P&klK'jJ,~> -!B:&NirG&9rr`?%^_FTTrrK,ofDbi0cJnt/!-HB`#JqK9N0T^1kl(MaijP2ck^ibbs+14-rrqG[ -F=eNMkPkRkfB*#6F9#J$irR%VJ,~> -!BpJTm/X-`rrW8:'Ys8=!AVOErrB%Em/uJX!SPTp#l_%`0R@qfS*'\L"nTE\N5kXDs+13$s5a1a -l'km*19gc?rrKd;jo5G9!=IuIm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys8=!AVOErrAV9kl]oP!SPTp#l_%`0S"k4VWn'Z"n]`qREYJXs+13$s5a1a -l_\2A19gc?rrL$Kjo5G9!=IiEklK'jJ,~> -!B:&NirG&9rrW8:'Ys8=!AVOErrA#(ire'D!SPTp#l_%`0SPdXZL%Pi"ng'2VUP?ls+13$s5a1a -m]gXZ19gc?rrL<[jo5G9!=IW?irR%VJ,~> -!BpJTm/X-`rrN07_"%F*[Q<">!3+<3!gE[K`r?>DYVI,/G^,tKrVm'#fUdDhjFR>^s+146rs&(q -:),LfroF([esGIt!^6UKi9^Qr4b*~> -!BU8Qkl@:PrrN07_"%F*[Q<">!1hI#!g3OI`r?>DYVI,7LPMturVm'#go6.:kCNYas+146rs&,& - -!B:&NirG&9rrN07_"%F*[Q<">!0#7a!fd7E`r?>DYVI,=QBo#KrVm'#iO"ucl@Jtds+146rs&/1 -?l(Q%roF([hlc&?!^6UEi8XjU2h1~> -!BpJTm/X-`rrE,8nG`MOYh&gSWR'r53rkhhrs,)15^n')W:0Za"nB0TNl_$Is+13$s6]giq7:2o -'qO=`!UtKtrrS_k45fK,eieN~> -!BU8Qkl@:PrrE,8nG`MOYh&gSS^6O%3WP_grs,)16&:AQZLRkm"nTTlS'Lk]s+13$s6]giqSI;1 -'qO=`!V200rrS_k3oK6'c8pI~> -!B:&NirG&9rrE,8nG`MOYh&gSN6gMc3<5Vfrs,)16B[_%]^l"#"n]s.Vq(Wps+13$s6]giqoXFI -'qO=`!VDiArrS_k3T/ou_`*)~> -!BpJTm/X-`rrBjOrrB%Fm/tZ8$Lu"5#l9Z!>_.?KY4DMj"od)CH`Z@\s+13$s7-*nrlK@P'Tr7L -rrIN;jo5GQ$3AK3m/bd$J,~> -!BU8Qkl@:PrrBjOrrAV:kl]-1$Lu"5#l9Z!?B'r"\+KUu"od5RM7)T!s+13$s7-*nrm-3f'Tr7L -rrJ#Kjo5GQ$3AB0klK'jJ,~> -!B:&NirG&9rrBjOrrA#)ird=&$Lu"5#l9Z!?^[CL_"IX*"odDbR(hm;s+13$s7-*nrmd-)'p8@M -rrJP[jo5GQ$3A3+irR%VJ,~> -!BpJTm/X,urrB%Fm/hM4>JL1DltdG[ItDsQp&"amn$mn0b5-\hJcC<$p&>3KLf4t'm+q[BQIk3t -!a>YLiU$Zs4b*~> -!BU8Qkl@9errAV:klQ#.>JL1DltdG^NKAt/pA=jnn\C0Ud//CoJcC<$p&>3OQ!+l+c/ -!a>YJiTUBg3e.~> -!B:&NirG%NrrA#)irX9%>JL1DltdGbS">tbp\Xsoo>mH$f)($uJcC<$p&>3TU1"aPm+q[BXl/:? -!a>YGiSssV2h1~> -!BpJTm/X,urrB%Gm/u\t!4olD#h;H^P'i"1\bQ(%"oZo -!BU8Qkl@9errAV;kl^,l!4olD#h;H^QA^r`_>4!."od/NMR_u's+13$s7uZul(i218CcJp!P-/0 -rr]h4+R%hL!R<`V~> -!B:&NirG%NrrA#*ire9_!4olD#h;H^S!ft;anbi6"od>^RDJ9As+13$s7uZum'(^K8CcJp!Q*%@ -rr]h4+6);?!Q-jH~> -!BpJTm/X,urrB%Gm/s`r*W -!BU8Qkl@9errAV;kl\3k*W -!B:&NirG%NrrA#*ircFa*WA!Q-jH~> -!BpJTm/X,urrB%Gm/gSoH+Eq]lqfI\WHsDN`;KW7$0TIRkPW_oI'Msfs+13/rr_o=_=[X)#5GZS -Q7u/%f`)!6LZAC9GlV11m/bd$J,~> -!BU8Qkl@9errAV;klP,jH+Eq]lqfI^Z\b!-bP_A>$0TIRkP`u,Mn88+s+13/rr_o=_=[X)#5Q#k -ShO"-f`)!9Q/hlGGlV.0klK'jJ,~> -!B:&NirG%NrrA#*irWBaH+Eq]lqfI_]U5LbdJX"D$0TIRkPa/u7TGlV%-irR%VJ,~> -!BpJTm/X,urrB%Hm/uPb!7SFW(RZ#+l(*9[K!fN#G_h-">&WHfZ@/"ar.4m!s,mRF_B>r-%turr^^M''SBC!S0Da~> -!BU8Qkl@9errAV&WHh]8WH5r.4m!s,mr.Y%/rr^^M&`i!:!R<`V~> -!B:&NirG%NrrA#+ire0N!7SFW(RZ#+m^&@XT"f2IG_h-">&WHj`1!g^r.4m!s,mr07-?rr^^M&`;X/!Q-jH~> -!BpJTm/X,urrB%Hm/j3d/@GK`f.p1hhi0[,]_fDL]PD$Or6LXVZg<8CJcCu7!nCDarOrTL=OkuZ -PgWA`f@9g$MW3[r!\=>Mj6Zlu4b*~> -!BU8Qkl@9errAVKj66Ti3e.~> -!B:&NirG%NrrA#+irYnS/@GK`f.p1hk+tFV]_fDL]PD$Or7\9A`:/?XJcCu7!nCDarOrTL=Ol<( -XOp?)f@9g$V!-k=!\=>Fj5U0X2h1~> -!BpJTm/X,urrB%Hm/g;gKXCa_q/m:T=L@h:$FEq-s8VAgI$`7ZJcC<$R/[6U<5&1C#JEZWe@H67 -q:#?EV9%]s!e^PSj6Zlu4b*~> -!BU8Qkl@9errAV -!B:&NirG%NrrA#+irW*YKXCa_q/m:T=L@h:$FEq-s8VQ)R]bEDJcC<$R/[6U<5&1C#JE`rhRX;A -q:#?E\^][>!e^POj5U0X2h1~> -!BpJTm/X,umJs68m/uJ[!8FgZ!l#e`otCI6>Q+R*qot=S[I/VGJcD2=!Go7@^'(oU=VSWurrKm: -j8T59!"J)Om/bd$J,~> -!BU8Qkl@9emJrg,kl]oS!8FgZ!l#e`otCI6>Q+R*r6h3s^@6^RJcD2=!Go7@^'(oU=VSWurrL-J -j8T59!"IrKklK'jJ,~> -!B:&NirG%NmJr3pire'F!8FgZ!l#e`otCI6>Q+R*r7J'>`q"]\JcD2=!Go7@^'(oU=VSWurrLE[ -j8T59!"@ZDirR%VJ,~> -!BpJTm/X,umJs68m/is]26m/^V3:Ga!Ks;VrrqVhH^`F^JcC<$T)SiSEVI0K>&O&\rrLi;ir9'; -!28K@!S0Da~> -!BU8Qkl@9emJrg,klRFV26m/^V3:Ga!Ks;Vrrq\sMP\u)JcC<$T)SiSEVI0K>&O&\rrLuKir9'; -!1r99!R<`V~> -!B:&NirG%NmJr3pirYYL26m/^V3:Ga!Ks;Vrrqf*RBbTIJcC<$T)SiSEVI0K>&O&\rrM,[ir9'; -!1N!/!Q-jH~> -!BpJTm/X,umJs68m/g&`NNrK`B`5[F!<0_4!!*[Vrk8AGq>UWpb)h.`mt(Lis.KAmPc4Pprr<37 -GeUnjPgB@2oQgGrrrS/[:ZUmDeieN~> -!BU8Qkl@9emJrg,klOQZNNrK`B`5[F!<0_4!!*[Vrk8AGq>UWqd%-34nU^^ks.KAmPc4Pprr<37 -GeUnjPgB@1on_W-!f[1SjQQ]j3e.~> -!B:&NirG%NmJr3pirVjRNNrK`B`5[F!<0_4!!*[Vrk8AGq>UWqeu>4]o7?pms.KAmPc4Pprr<37 -GeUnjPgB@1p6Xe=!f[1QjPp9Y2h1~> -!BpJTm/X,umJs69m/uGV!9:Bb!Uat*^&S03^&l!,$i[j@EUNT$"m2n5SC[[js+13Frr@*:^&l!, -$i[j?EmF[cJ*u@s"60@fjlPk1eieN~> -!BU8Qkl@9emJrg-kl]lN!9:Bb!Uat*^&S03^&l!,$i[j@EUNT$"mNFOVqV-$s+13Frr@*:^&l!, -$i[j?EmF[cNUZ!."60@fiT9;)c8pI~> -!B:&NirG%NmJr3qire$B!9:Bb!Uat*^&S03^&l!,$i[j@EUNT$"m`miZJYY4s+13Frr@*:^&l!, -$i[j?EmF[cSFY_?"60@fgZ@Gr_`*)~> -!BpJTm/X,umJs69m/j!^33iJac%l52!!)r2!K\E&^&`l$p&>3kaGtk`nU^^ks/#_qE;I9LO<=J9 -!-$6`!L_ErrrP.[U?1bCeieN~> -!BU8Qkl@9emJrg-klRIW33iJac%l52!!)r2!K\E&^&`l%p&>3lcC9p4o7?pms/#_qE;I9LO<=J9 -!-$6`!N"H.rrP.[TB5; -!B:&NirG%NmJr3qirY\M33iJac%l52!!)r2!K\E&^&`o(p&>3le>Jn\oR[$ns/#_qE;I9LO<=J9 -!-$6`!O1D>rrP.[S)rZ2_`*)~> -!BpJTm/X-`mJsT1mJs69m/g;gM6[']c%l52!!)u3!WWCRrk8JeA$#4mrrqJ`HCidgJcC<$WW*"d -=8T]5!!RlO^&W,trrKL;ir9(:!*84K!S0Da~> -!BU8Qkl@:PmJsT1mJrg-klOibM6[']c%l52!!)u3!WWCRrk8JeDmf3/rrqSlM5f>1JcC<$WW*"f ->5Q#8!!RlO^&W,trrKdKir9(:!*/.F!R<`V~> -!B:&NirG&9mJsT1mJr3qirW*YM6[']c%l52!!)u3!WWCRrk8JfHbT.Errq]$R'biOJcC<$WW*"h ->l25:!!RlO^&W,trrL'[ir9(:!)hq=!Q-jH~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK!ZJcC<$ -XoALt\r'hk^&ks+$i[j?EmF[ce>_I-"53_cjQ>\-c8pI~> -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WR^A;XT0oUrr?a2^A\-4^Ae06%Uf:M#@bMtTr!+Fp[eCgiMUspg\ud( -JcE%U#5l;cWUc"HrP&:3"V+qS^8R:ArrMA;iVrs1!3PDN!S0Da~> -!BU8Qkl@:PmK*A%Zc)83S^ls+WW4TRrr?a2^A\-4^Ae06%Uf:M#@bc4X07Dqq"+LgjfsWBhgtfY -s0;S.r5af&o8T^I^Ae0:%Ud#bW0GU-!UGp-rrO_OWoiOHc8pI~> -!B:&NirG&9mK*A%Zc)83N7HqiV>r0Nrr?a2^A\-4^Ae06%Uf:M#@l)K[^hgHq"+Lgke!1ij+75] -s0;S.r6LhEoo5pK^Ae0:%Ud#bW0GU-!UcW>rrO_OVWQn>_`*)~> -!BpJTm/X-`mK3I)'=7;u"j9.;#sc\emJs6:m/g\rIBWYOV3:Ga$BSGN_6J?dU3sZMoD]!g_hj)^ -oR[$ns0hq5rm6=ekOu9$@J@J:ETbXI!r[<;ir9(.!+G$W!S0Da~> -!BU8Qkl@:PmK3I)'=7;u"j9.;#sc\emJrg.klP5mIBWYOV3:Ga$BS_caL[57Xc(-ooD]!hb*J72 -p4<6ps0_k3eWQcopUkf\pV$ZJkKa)/re:1-rrRTK@-6\Sc8pI~> -!B:&NirG&9mK3I)'=7;u"j9.;#sc\emJr3rirWKdIBWYOV3:Ga$B])$cbc'_\!kP -!BpJTm/X-`mKf'NS*(]_jarrH?2otCmB4R(IhH(gaUZ_)`bqssai -hkbUnh1>TWs1/.:hiNcMqnING4u9\D^&b]Zbl7^(hr=Y -!BU8Qkl@:PmK -!B:&NirG&9mKkMlT\2h1~> -!BpJTm/X-`mKEUjs1f;Sp$MtgkO.d$#MJMFWRgG<]DrnQrrVgp[.h9GZonh&]`%E8KnYD7\XJ)j -rUTslp;)N>_Y/Q\JcEIa%I9X;b5KJ6SZ -!BU8Qkl@:PmKEUjs1f;Sp$MtgkO.d$#MJMFS_!$,\H!SNrrVgp[.h9GZonh0_u95HPEM8m_534< -rUTslpW/VbaS18cJcEIa%IU6Wd/D=PW3$Y]lVtRp^&kuIm`b\3ZHM5,!ZM-MkNN#m3e.~> -!B:&NirG&9mKEUjs1f;Sp$MtgkO.d$#MJMFN7R"jZiD&IrrVgp[.h9GZonk^ -!BpJTm/X-`mJm7drrR`OjnA*G8pT@PG>$WW!3+Q:!d4QYXT&Cs@r&aS^(e4qA,!bO4bMeprnO8m -I"];#L!BVfrrrDWUNr]nJcC<$_Z(2>YC!nXeVTI -!BU8Qkl@:PmJm7drrR`OjnA*G8pT@PG>$WW!1h^*!d"EWXT&Cs@r&aS^(e4qA,!bO6'17/s5:#6 -MNPrQPLKO$rrh8^Lp,iis+13ert+n6MSo>FQCcZ>'>XYJeQBE]^&klJe][snb-U(,!bq^WkNN#m -3e.~> -!B:&NirG&9mJm7drrR`OjnA*G8pT@PG>$WW!0#Lh!c\3TXT&Cs@r&aS^(e4qA,!bO7\&`Cs5^YS -R@hd,T\086rrhDlQau70s+13ert+q@REPKaUoN*['>XYJeQBE]^&klJe][sndCnN=!bq^TkMlT\ -2h1~> -!BpJTm/X-`mKEUjs1f;Sp$N"6*<6'[f%KHkWRgG<0`\V]rs@_(>'PjYGZo%Grr3T#Af4gYqZ$Tg -_LZc]]o\-#rpg!loY6*;`:ni_JcEdj%/[bdXRkA6Lt'!XB(>j"#Ol\RKoKbbnB1b3h2gOp!jr"_ -kNr<$4b*~> -!BU8Qkl@:PmKEUjs1f;Sp$N"6*<6'[f%KHkS_!$,0EAM\rs@_(>'PjYGZo%Grr3Q"Af53mqu?]i -aH(t:`131HnG`[b`flb3pjrHrs2Y-Jr5FQ$p#D[0ft&8;nbrImn8NH&NbNJ%b5VM$SDjJL[/_oD -klK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$N"6*<6'[f%KHkN7R"j0*&D[rs@_(>'PjYGZo%Grr3Q"Af>X,qu?]j -c^g8mbGh;nnG`[cc(Ll[pjrHrs2Y-Jr6:YDp?/KOhRXe@nbrImn8NH&NbWP&b5VM(W8[aX[/_lC -irR%VJ,~> -!BpJTm/X-`mKfBi[m!X\Rurr_H,_<:Xo"M,U=IbXi$#MtV`J?Ffj -f^SnErn=#jVr<4,JcEpn%0"M'Sa#C1J][@m+1h:J"8'mQI)u -!BU8Qkl@:PmK+NjkCF -h=(@HhQ)I;jamG_s2t?Ldu^Npm&?&ln7EcRq>UQhcG5=YrrVtMro3q[p'CfMkii,n3e.~> -!B:&NirG&9mKUQhcGGphrrVt\ro3q[p'CfHki2]]2h1~> -!BpJTm/X-`mK3I)'=7;u"U=/XmcOi.mJs6NhXCIJo=]g9 -`qY,bJcF'r%,?l'h!h:j^AGJ`B(>Tp!rdB=aSu9nlJ_aE8cY.?m/bd$J,~> -!BU8Qkl@:PmK3I)'=7;u"U=/XmcOi.mJrg0klR%K8t#\_nR`\QZhXM!#P=sHLSp<.ipZmNoYcl[ -bkZhiJcF'r%,dSDi:=44`V[4gB(>Tp!rdoMaSu:'m,@sG8cY(=klK'jJ,~> -!B:&NirG&9mK3I)'=7;u"U=/XmcOi.mJr3tirY8A8t#\_nR`_]]_MI*#PPKeQEm-ajmW3Qouiu) -e+nRpJcF'r%-4=ajRg*Rbl#$oB(>Tp!reG\aSu:5n)=9J8cXq9irR%VJ,~> -!BpJTm/X-`mK*A%Zh!Mf/U-.1G:qS:!3+T;!`/l]Qi@3"*^k;&r;R#oU31U8I$is_rrrDSSpIEt -JcC<$e,Kj@S:]#Z[!T+PnR`lSoD\iKj2h6$S^??q!gE[]kj8E%4b*~> -!BU8Qkl@:PmK*A%Zh!Mf/U-.1G:qS:!1ha+!_r`[Qi@3"*_;% -!B:&NirG&9mK*A%Zh!Mf/U-.1G:qS:!0#Oi!_`TYQi@3"*__dRr;R#q\!3,PR]u&FrrrD\[$\Pl -JcC<$e,KjEZC]_D`L+R -!BpJTm/X-`mK!\oW*ARpV2-Sn,L*8B(>Hl!MR`YrrKU:iVs#:!"\>Ym/bd$J,~> -!BU8Qkl@:PmK!\osK[rq8S>tnc-<:B(>Hl!Na\irrKmKiVs#:!"\2UklK'jJ,~> -!B:&NirG&9mK!\p:cs>q9GG@oDcNHl!OgV$rrL0[iVs#:!"RoNirR%VJ,~> -!BpJTm/X-`mJsT1mJs6=m/j]r.?jc8]b4+dao;5<#NM/'RWih9l0eQTrmmTdXQG*6JcFO*%JdS^ -YOothSEU"IE"]kRrrK[;aSu:gSDaDK.0-g@m/bd$J,~> -!BU8Qkl@:PmJsT1mJrg1klS0k.?jc7]b44uchm_Ik+[s6L4c)`mf*Iig8Be9l%/kcs4mV`qSA'! -p!AeulMpTt'#!f7!PuIjrrL]Ki;Wj-!41qS!R<`V~> -!B:&NirG&9mJsT1mJr3uirZCa.?jc7]b4A2ebf@Ol)pV^Q'868mf*Iihm/Wal[f(es4mV`qT5/A -p=>h@mJlp"'#!f7!Qi=%rrLl[i;Wj-!3bYI!Q-jH~> -!BpJTm/X,umJs6=m/hJ3D3Fo&m8kZUQgO\M#M=rq["E@Ug[5"En$mn0b5-\hJcF^/%fOIuU$^Eg -Ol$- -!BU8Qkl@9emJrg1klPu-D3Fo&m8k]aU@8!Z#Mb]9]odl4hsLFIn\C0Ud//CoJcF^/%fXb5XRFl0 -S`9\Lcn&8cn,EF=W6"u>m#g6+!c7p[l0/5o3e.~> -!B:&NirG%NmJr3uirX6$D3Fo&m8k]lY4;Dh#N;MX`h/Bhj6cjMo>mH$f)($uJcF^/%fXtJ[di7N -Woa9\cn&8cn,EFCZcN.Im[rG;!c7pXl/Mf^2h1~> -!BpJTm/X,umJs6=m/f6IZ&nthUD@Kg_#=32$3&/#S'[49J&;$LrrrAMRM3QuW -P_[`fs8@fjU[A'^kD%(X!r[<;iVrta!''61!S0Da~> -!BU8Qkl@9emJrg1klNgEZ&nthUD@X%a8Z#:$3&A7VUh8gNQM%brrrDSV2DeKJcC<$jSo\CQD!@# -TU"10s8@fjU[A'^lBKBi!rdoLiVrta!''6-!R<`V~> -!B:&NirG%NmJr3uirV+=Z&nthUD@d8cMmbA$3&SKZ.l7?S'_'#rrrDXYaN>pJcC<$jSo\GUTE\B -XJ4PNs8@fjU[A'^m%MN#!reJ]iVrta!&j*%!Q-jH~> -!BpJTm/X,umJs6>m/u>O"RqKP"lMU+Jr]!jrsASL -l(3FHrVuoU5 -!BU8Qkl@9emJrg2kl]cG"RqKP"lMU+NLT20rsAVDMm;??K8$SnmJd@Z]oAZ4r.4m!s69Onk+J!m -m&?#jrr<#V5+c8pI~> -!B:&NirG%NmJr4!irdp:"RqKP"lMU,Q`'0HrsAVKR_.ghP*ETDmJd@\`LEp\r.4m!s69Onl)^W9 -m^/P8rr<#V5 -!BpJTm/X,umJs6>m/j3d30!qBrJDA?I(&qLrsJM-HaDk/G'T%cp[8%br6^jYZ0Ho?JcG-;#jn@9 -a7$$U^&%a."/?WhrTaC`L?Q_Y!N!lqrrP.[W9WaNeieN~> -!BU8Qkl@9emJrg2klR^^30!qBrJDACMn],drsJP6M7i)TKnu/@q!S.crRRa%]'Y(KJcG-;#k+mT -c182u`;BQ6"/?WhrTaC`PNp6h!O'f,rrP.[VX!CHc8pI~> -!B:&NirG%NmJr4!irYnS30!qBrJDAHR`>:&rsJP>R)J@"Q'\ArqBo -e+:8@bkqD>"/?WhrTaC`U$]r$!P-_ -!BpJTm/X,umJs6>m/h#&I#J".cn&(XLYqt.$Lk!A^ZV>:MKu,WmJd@UZ@/"ar.4m!s760qorreR -n[3_KpAY'om8kjckl1[SdE)=g^TQMp!dju_lKnW'4b*~> -!BU8Qkl@9emJrg2klPMuI#J".cn&(bQ/_Z?$M(K\`p0[_Q\_p,mJd@X]8NB4r.4m!s760qp:6'r -o=^!lp\t0pm8kjckl1[^f#[jl`jan+!dju]lKJ>p3e.~> -!B:&NirG%NmJr4!irWclI#J".cn&+mU?;=P$M1lucKr$,UmJ[TmJd@Z`1!g^r.4m!s760qpVN?> -oYm38q#:9qm8kjckl1[igW9Bqc+r9;!djuZlJho_2h1~> -!BpJTm/X,umJs6>m/ed<^P`$qpM^b9J$&MBrsS%\K$<>IJ"MFO_=d6r"oQ]3IC&9ks+14Drs8M: -I&cVMIAcQ4rr^"KE;/Pq!OTGZrrLc;i;Wkn!%[@%!S0Da~> -!BU8Qkl@9emJrg2klN=7^P`$qpM^b=NOJZZrsS+iOO<9jNN&,-aS,'%"oQlDN4eS0s+14Drs8PB -MmW#pMm;gNrr^"KE;/Pq!PH7irrLoKi;Wkn!%R9u!R<`V~> -!B:&NirG%NmJr4!irUY0^P`$qpM^b@S%ngrrsS5"T%E;7S@"rachHl-"oR)VR`+]Hs+14Drs8PI -R_A:;R_&(grr^"KE;/Pq!Q<+$rrM)\i;Wkn!%I3n!Q-jH~> -!BpJTm/X,umJs6?m/u/F$N#YZ"hkRjUk.+mrs[_FMq?pSKXIS#U>,\8rrq\lI$i=[JcC<$qu6s$ -c%;JLbCZ8IrVlurGnIdPrrL<;aSu;1I,P#,q[*A[lg4`(4b*~> -!BU8Qkl@9emJrg3kl]W?$N#YZ"hkRkY)h?5rsReVR,$euOhIlQXl&OG"midXUXoBps+14Hrs-u6 -Vs;ZkVs=6\"8[9T^?,@qdB1Li!V20,rr`-*!SZl(!R<`V~> -!B:&NirG%NmJr4"irdd3$N#YZ"hkRk[[l=OrsRqfV;UR?T>nC-\)ZlU"n0 -!BpJTm/X,urrB%Pm/j$_6&,CDl:X+NKVS29rsetUL6^fSP).;uMM8b7mf*Ifb`dOamXbChs8N$' -g5M*Ker#RFr;QlU3(rPtrrM,;a8Z0eo&0NL5ld\Gm/bd$J,~> -!BU8Qkl@9errAVDklRLX6&,CDl:X+QOfnBQrs[MDU#t:)Q-dX>P/R"\rrr>KT8gSSJcC<$rr35[ -R@E0iQ_!+5rr_+;9BtU -!B:&NirG%NrrA#3irY_N6&,CDl:X+UT=FUjrs[\VXm+oHUXmefTZd#rrrr>QX..-"JcC<$rr35_ -VPrV6UoEJRrr_+;9BtU -!BpJTm/X,urrB%Pm/h#&IYIe+rf@njY^Odlrso"IJ"l;]N/Z?GW-OudrpKdikcT9$eGXsuKDu2= -R=rrFP_[`brr]/7OT+;?!r-sMu4IK4-Km/bd$J,~> -!BU8Qkl@9errAVDklPQ!IYIe+rf@nk\W##5rso"ONNDR&R@2gjZA>L7rpKdilF2YIg&?R&KDu2@ -V39BiTU"1,rr]/7OT+;?!r7QLaSu:5hVeD8IK4*JklK'jJ,~> -!B:&NirG%NrrA#3irWfmIYIe+rf@nl_OB-Qrso"VS@A"GVP`86]9fn_rpKdimD,-phYr*+KDu2C -Yb9_6XJ4PJrr]/7OT+;?!rA2]aSu:Aio'h -!BpJTm/X,urrB%Pm/f$C]7^+fc6m&PMOO#0rsnk9H`ckdLm$Qga,Y_]n*^2ZqT=nM\F5"KL]7YL -VgZGFT7G#]r;Qlk@40@YrrI];aSu:B^u54o])XVPm/bd$J,~> -!BU8Qkl@9errAVDklNR>]7^+fc6m&TQ_j6JrsnnAMRW90Q(Hq0c'j^/na?D\qp:mo_"!!UL]7YN -Z&?]gWfGC(r;Qlk@40@YrrJ2KaSu:La5Ht!])XSOklK'jJ,~> -!B:&NirG%NrrA#3irUn7]7^+fc6m&WUp9LdrsnnIRDAONUT3DNe#/bXo'ZM]qpqa;aRau_L]7YP -]:.(4[%5_Gr;Qlk@40@YrrJ\[aSu:UcJ\^(])XPNirR%VJ,~> -!BpJTm/X,urrB%Qm/uAP"S76F#P;FPbdr2?rqZR)o -!BU8Qkl@9errAVEkl]fH"S76F#P;FPc,#:[rqZR)os]gpq9b>"jo=PPM5Ai&mf*IT[>Cg9rdk*. -rs8G7M7i2^MT#Dhrr^Oo@J&IW!MnGjrrL?Ki;WoN"9m]LklK'jJ,~> -!B:&NirG%NrrA#4irds;"S76F#P;FPc,lC$rqZR)p;!*BEmf*IV^6l4`rdk*. -rs8G?R)JF+REPL)rr^Oo@J&IW!O(A$rrLT[i;WoN"9dEEirR%VJ,~> -!BpJTm/X,urrB%Qm/jEj21bf-rs#A:OQ_gil1k8hm%T!LqSn&Vk5Y;$P('e(mf*IdaGtk`nU^_% -rs8P@IAQ/8Ha38@rr`7^(8p!g!O'5YrrM#;hu -!BU8Qkl@9errAVEklRmc21bf-rs#A:OQrC.lhLJjm];Dlqok)!l2UY.SrC>Mmf*IecC0j3o7?q' -rs8SGN3DQ]M7WEXrr`7^(8p!g!P$+irrM,KhuJN!R<`V~> -!B:&NirG%NrrA#4irZ+Y21bf-rs#A:OR9'JmeHemn@+q:qpV+Bli6k6Wggrrmf*Iee>Jn\oR[%( -rs8SNR^qh*R)8Uprr`7^(8p!g!Q!%%rrM8[hu -!BpJTm/X-`rrBjOrrB%Qm/hG2Ee48irs.C?9Bj?A]);@'&EB%1de^b-U?_dYl*,Q#cMR&0"lu\0 -T%O$ns-3NgdY4%I_0r3LqYpZ_9/te`rrL09GQ-P#!ce9am-Oi)4b*~> -!BU8Qkl@:PrrBjOrrAVEklPr,Ee48irs.C?9BjTV_Ys90&E][NfDEUIXmQ/gla_qIe,8Y6"m<4K -WSRQ)s-3Ngf9;ukaG[:mqYpZ_9/te`rrLBLaSu>:LAp-2!ce9_m-+Pr3e.~> -!B:&NirG&9rrBjOrrA#4irX3#Ee48irs.C?9Bjilb5M,8&F$;Q2]_A!ce9\m,J,a2h1~> -!BpJTm/X-`rrE,8_uB_9g[,&,!3^tRrVm-!GnS!^R>U"urt*e?OPT]DI&HE4s8:30I';c%rrr2: -MhJe8JcD,;#N(Z%f?Ai9k5##Z_@h.jg]%<1ON7A%Ja;7o!j;Sgm-Oi)4b*~> -!BU8Qkl@:PrrE,8_uB_-gZ\c'!3^tRrVm-!GnS!`V3g<rrr5B -R$#>ZJcD,;#NMABgX2+[l1t>]_@h.jg]%<5SB(X1O7(s+!j;Sfm-+Pr3e.~> -!B:&NirG&9rrE,8_uB^qgZ&>t!3^tRrVm-!GnS!bYb^LWrt++bWTF!!RCi%is8:TRRDJ:Yrrr5H -V4Ys(JcD,;#Ni%_i7FR*m.pY`_@h.jg]%<9WQ5#>SabS;!j;Sdm,J,a2h1~> -!BpJTm/X-`rrN07^r66QWSHkClOEpWJcGWI#JUh7s35tsq=ssrrlftakk;E2Xn)Jk"mr^IOidFe -rrqAZH(j!lJcD;@#O7n3b1;K4h>%!OPRtU_rrMb;a8Z1/dbt--jo>nWmHjr*4b*~> -!BU8Qkl@:PrrN07^r66QS_WH3k7.LSJcGWI#JUh7s3ck;qY:'srm?h*lM%uK[e'Lu"n0-aS^70# -rrhDfLo]Eas.')omAZ/ngR+Miq#:D[&AQou!VV>irrK"Ki;WoA!"S2ZklK'jJ,~> -!B:&NirG&9rrN07^r66QN83Fqi=,eLJcGWI#JUh7s4EdWqtU0trn!aImJ+Yf^\.U+"nBR%Wn%"7 -rrhPtQaYq*s.')on$JY:hkd=6q#:D[&AQou!V_r$rrKC[i;WoA!"IoSirR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?"RfD"'S"d8!3+c@!lk9^JcGQG#MgtDq=LG8g@tURqnINWnFNi1ZM"4s -"oZo>HE6,prrr/7M2&e;JcDGD#kP-F^"ns/df0(B"8QO\h:MZ-I.>;X!OTDprrO5Aa6i6peieN~> -!BU8Qkl@:PrrW8:'Ys>?"RfD"'S"d8!1hp0!lP'[JcGQG#MgtDq=UkPhY7$Vr5OZ#o(BML]Cu7( -"o[)NM6uI6rrr2?QBT>^JcDGD#PGN_`8[JTfD,@Jq.;57fDbl0o>pq4]YWM*!Zh?[mHFYs3e.~> -!B:&NirG&9rrW8:'Ys>?"RfD"'S"d8!0#^n!l"^VJcGQG#MgtDq=_:iiqNHZr6CbCoCg"f`:s92 -"o[8^R(hkRrrr2FUnQ*.JcDGD#PPp#bN5k#h"^mOq.;57fDbl?oZ7%5`6$p:!Zh?VmGe5b2h1~> -!BpJTm/X-`rr`?%^_FTVrrlP5mHn2Ng&D&Oh!G0.!*"OLq#:Wk:d+(Ceq'amp\tQnZ[9(Rn#C`F -q#13rn@F41`V8g#"Q-&$UYUM$V>ghs]6g^>T7Fu\q#:H\4](b$rrJ>;aSu:cT\obN;ui3Nm/bd$ -J,~> -!BU8Qkl@:Prr`?%^_FTVrrlP5mHn2Ng&D&Ch!"m(!*"OLq#:Wk:d+(Cg5iN5p\tQo]SX;rn["+g -q>Lght_MYh`WfG@&q#:H\4](b$rrJbKaSu:hX5EpY;ui-LklK'j -J,~> -!B:&NirG&9rr`?%^_FTVrrlP5mHn2Ng&D&2guAHs!*"OLq#:Wk:d+(ChjqCSp\tQp`0eLL2"Qm7]\)i2@V>ghub*g'.[@GbFq#:H\4](b$rrK1[aSu:n[GUuc;ui!HirR%V -J,~> -!BpJTm/X-`rriE&s1f>ap&>1(mf3=S4PB`7WSHkB@K;::s7cO!rI#g7s7i[FdJ!SHn>C]Mqs:/- -^A@g."od/HH)BKerrr,4LPNb?JcDbM#lVkqT\let]_V=%"4&* -!BU8Qkl@:PrriE&s1f>ap&>1(mf3=S4PB`7S_WH2?iZ(8s7cO!rI#g7s7s*_f(T+Mo!++nr9gbH -`V]W6"od;WLp5q-rrr/ -!B:&NirG&9rriE&s1f>ap&>1(mf3=S4PB`7N83Fp?3#k6s7cO!rI#g7s7sF"g\1XRo=LI:r:%7c -c27J>"odJgQb)>Irrr2DU8$!/JcDbM#l`AF[HG8lbPV&6"4&* -!BpJTm/X-`rr<&urrR`Op%JCh$h"&pm1@tN!3+c@!\XPhJcGEC#c\Z?s8Ur2T(2OS$0Re0bl6gu -J&M9_rrr#.L5<\ -!BU8Qkl@:Prr<&urrR`Op%JCh$h"&pm1@tN!1hp0!\OJgJcGEC#c\Z?s8V)CWUoi`$0nCLdf/O3 -NQV1srrr&6PEj5_mf*FJXba1@JcDkP#MYQ:hnFrXp@eLfWYVV`rrL3KaSu>>K`'d.!l+dgmHFYs -3e.~> -!B:&NirG&9rr<&urrR`Op%JCh$h"&pm1@tN!0#^n!\FDfJcGEC#c\Z?s8V2T[.O(l$1+pgf`(9F -SC.94rrr)?Tqfs.mf*FN\!OYfJcDkP#N2DYil7A&p\+UgWYVV`rrLH[aSu>>Pl0J>!l+dfmGe5b -2h1~> -!BpJTm/X-`rriE&s1f>ap&>1pA+&bn"PNeTWSQqDjokkYJcGBB$-s`BrVuc&I)u<\rs@MCMqJ'i -R=`QZr;R!#gnT.hg]$[A"n]Q`Lr8t -!BU8Qkl@:PrriE&s1f>ap&>1pA+&bn"PNeTS_`N4iWTGUJcGBB#gXWArVuf0MpD"q$/qDAh#HN5 -OO*q'rrh8_LofM%rrr)8PEj;cJcE%U#NqhGf><9GnFlkarI#g7df0@(TZ@'5QKR3+"7lTuipQ%3 -c8pI~> -!B:&NirG&9rriE&s1f>ap&>1pA+&bn"PNeTN8AU[$e;"7lTth!X2' -_`*)~> -!BpJTm/X-`rr`?%^_FTVrrq^c#oA.0g&D&Ohcrm?Idj8[u# -LPl-]M3n9r@W!M[cprrOeQ\aJhc -eieN~> -!BU8Qkl@:Prr`?%^_FTVrrq^c#oA.0g&D&Ch<>!L!%rj&o)B$\4](bMs66#Hme-Sderuijs5K]9 -eGf@F"o$-*P/Qt[rrh5\Lp5ojs0hq4n?.boc]G$gp&>-c:d+'jrrM\La8Z1AdGOs*/c`?JklK'j -J,~> -!B:&NirG&9rr`?%^_FTVrrq^c#oA.0g&D&2h;\RA!%rj&o)B$\4](bMs6HSbnFcefgS(b6s5g>U -gA_!L"o-H?TZd#rrrhAjQb)=1s0hq4o!k1:eXj&4p&>-c:d+'jrrM_[a8Z1LfAHT0/c`0EirR%V -J,~> -!BpJTm/X-`rrW8:'Ys2;!M3HIrrB%Sm/i7I?\/7IrsJR6/`$I,rP*]nrV$6trPa8\mJkh!Mq.Y' -"lZD*T%YprrQO-NUH07eieN~> -!BU8Qkl@:PrrW8:'Ys2;!M3HIrrAVGklQ_B?\/7IrsJR6/`$I,rl0i7rq??urQL8'n,M45R+_<8 -"lutFWS@F@rrr)7PEs>bJcE@^#PYfe^X\XAiUm-Ph(<77ci4$$pW3@8_Rn_*!abqbmcabt3e.~> -!B:&NirG&9rrW8:'Ys2;!M3HIrrA#6irXu9?\/7IrsJR6/`$I,rm$qVrq??urR.1Enc.RGV;D%J -"mERb[,:lOrrr,@Tqp'1JcE@^#Pc3)a4d>hjn/QTh(<77ci4$3prNI9b/<-:!abq_mc+>c2h1~> -!BpJTm/X-`rrN07_".L/@,^g_*nT*F!3+fA!abqgJcG3=!gF;6rr3)eQAt#!rsAM3H`m#?du'4? -q>UWna,Y_\n*g8[rnF/mV;Hk(^]+Q9^jN-0ObqW[rrU%LPg04/O5J%Y!S!OprrS5]?gd:^eieN~> -!BU8Qkl@:PrrN07_".L/@,^g_*nT*F!1hs1!aYkfJcG3=!gF;6rr3)gU71<=rsAPUWoc'sd0na?D[hlMX;idq-Ers/JBMmM',QJ(m0!l>P6c2Rg6ilM-#fqdO*!fm=fmcabt3e.~> -!B:&NirG&9rrN07_".L/@,^g_*nT*F!0#ao!a>YcJcG3=!gF;6rr3)iXf(LXrsAPDRDAOrh5%"/ -q>UWoe#/bXo'ZM\j0tAck(3QIrs/JIR_7FUUu(_C!l>P6c2RgCk/dQ'hQYo;!fm=cmc+>c2h1~> -!BpJTm/X-`rrE,8nc&`\)%&dWf`(rNh -!BU8Qkl@:PrrE,8nc&`\)%&dWf`(rBh<=tr!5F*bmf*@*&XiUt"4)n=qt9sqosTapqYns-U#YqJ -"mECOV:Y\7rrr)8Pa9DbJcEXf#Leg4f;=YWrq$-kR1[<[rrK@LaSu;0No0j<^Ap%WklK'jJ,~> -!B:&NirG&9rrE,8nc&`\)%&dWf`(r1h;\Pk!5F*bmf*@*&XiUt"4`jZr:U'rp:m$ -!BpJTm/X-`rrBjOrrB%Tm/uV[!UbO=mJd:C.;o(_rr_haL>DM%$1":7a8PtXJXYZprrr8BPCBk( -n,ERjgnK(jh1>UHrs.;=Nm=DJ_Yj$*"8m$cgWTTt]s,TX!rdH -!BU8Qkl@:PrrBjOrrAVHkl^&S!UbO=mJd:C.;o(_rr_kmPi;97$1=jRc2IUdO/D+8rrr;IT8^GM -mf*FJXba1>JcEdj#N(u=e?4bOr:Bpjr,*t -!B:&NirG&9rrBjOrrA#7ire3G!UbO=mJd:C.;o(_rr_r$U#kqH$1PBne,B6qS[%JTrrr;OX..&r -mf*FN\!OYeJcEdj#NM_[fsmKsr:Bpjr,*t -!BpJTm/X,urrB%Tm/k?/++aIXrr_a\8+?KW"4D_#p[nIlig#;Is80]`T]u4N"mN:?Q-K3prrr&1 -LPN_=JcEso#O%Y0`iONtq""Fen4-" -!BU8Qkl@9errAVHklSg(++aIXrr_a\8+?KW"4rR@q"4Rmje7pjs89uuX6]N["migYU!rr.rrr,: -Pa0>`JcEso#O81KbdNDEq==Ofn4-" -!B:&NirG%NrrA#7ir[!r++aIXrr_a\8+?KW"5KE\q=O[nkcLT7s8:65[I3eh"n'6rXk -!BpJTm/X,urrB%Tm/idX:P&Q2rr`1:.GOh$"88[EeareIf8>^Is7s?UVX=-X"oQ`6I';`%rs&JX -UNrWjrdk*srs/(mI(Zk6YOh;a"5>8Br5ns>l[m1W!NhGeieN~> -!BU8Qkl@9errAVHklR7Q:P&Q2rr`1:.GOh$"8B*^g@P=NgR"Jjs8'ZlYj_>d"oQoFMR_s>rrh8_ -Lp#]fs3UcNo -!B:&NirG%NrrA#7irYJG:P&Q2rr`1:.GOh$"8KO"hXgaRi2!C7s81$/](,Op"oR)WRDJ7XrrhDm -Qal..s3UcNoXpX9`L+L8nc&^G.;o(*rrMS[a8Z1QdGOs*:B6[KirR%VJ,~> -!BpJTm/X,urrB%Tm/h2+It@X`rrST*^AS!5gOu -!BU8Qkl@9errAVHklP]%It@X`rrST*^AS!5hib)6o`#9td>t6ls7j?d[IX%k"n00bS^70$rrr,: -Q'B>_JcF:##Pl,k\\j?/nF6GZ^)39YrrW1RqT/[;agBt*!e12en*'ku3e.~> -!B:&NirG%NrrA#7irWrqIt@X`rrST*^AS!5j.NmTo`#9tf:B88s7s^'^@_.!"nBU&WR^k6rrr/B -U8#s-JcF:##PuK._TSCYo'lY\^)39YrrW1aqoJd -!BpJTm/X,urrB%Tm/ffYX+C<6rrTnORJd'eqQYImoD]0p^O3!Ls7ERCYk7Yh"oZr?HE6)orrq5S -H)'0oJcFI(#Q;VjUVDAMkO8EPR2EZWrrJ#;aSu:qP2H9@WrP]Zm/bd$J,~> -!BU8Qkl@9errAVHklO?TX+C<6rrTnORJd'eqmqa6oD]0p`f%.ns7X$\\b5[r"o[,OM6uF5rrh;` -LooTds4RDWrQC/%`fI%_n,EHW(r!uh!LMrirrM#Khu -!B:&NirG%NrrA#7irVXLX+C<6rrTnORJd'eqnnlSoD]0qc'l<;s7aEu_Y3^'"o[;_R(hhQrrhGn -Qac%,s4RDWrR.1Fc(20,n,EHW(r!uh!Mnu$rrM/[hu -!BpJTm/X,urrB%Tm/eF2e:IY^rr_")DZ'G4"65<-mdpGcp9K%Pp]'cbHa`\Arrqo'JrI\Cn,ERa -_2*i\oR[%urs$r,QGA -!BU8Qkl@9errAVHklN".e:IY^rr_")DZ'G4"6PuHnFQYepUc9qq#BrnMSAlYrrqu0OI=;en,ERb -aH`"0p4<8"rs%,?U;rOkipZmLr,*t<`;]k=d`DFhon_N*!n72nn*'ku3e.~> -!B:&NirG%NrrA#7irU>'e:IY^rr_")DZ'G4"6lYdo(2kgpr&Q=q#C!#RE#$prrr#9Su0s3n,ERc -c_I2ZpOWA#rs%;QXj3]Bk3r -!BpJTm/X,urrB%Um/uJQ"SmWKjo5GP7n<(Hrri83I)>mSrsJ4mIDPj]mA>9Dq=Xakrn*igVVghA -"l?)$U>5a!s5O%_i0&u3OG_WWrr_a\8+=Fr!P#PXrrIT;i;WoT"9[fUm/bd$J,~> -!BU8Qkl@9errAVIkl]oI"SmWKjo5GP7n<(Hrri;*N -"QHV@Xl+d1iVs,CSsREdQeLm-"7SfNnAG8,^qIeg!K?R,rr`'""6/h7!R<`V~> -!B:&NirG%NrrA#8ire'="SmWKjo5GP7n<(Hrri;DRF(s)rsJA/Ra:p3n[b14qXsjlro(8O]&rG\ -"Qd1\\)`,?iVs,FWhdn=Uu1V?"7SfNnAG8,aMl4"!LrZ -!BpJTm/X,urrB%Um/k-)."VEYrr`1:.GOb""6u)3kjn`\k*gqIrr;5VI_u!Srrr#.L58Br5/I7d%8;X!LMBprrOSK_XQpneieN~> -!BU8Qkl@9errAVIklSU"."VEYrr`1:.GOb""72YNlLOr^l)'Tkrr;>cN6(qhrrr)7PEj2^n,ERc -ad/.1on!/*rs.tmNkhHQdf/\7"5>8Br5/I7eZ$Uh!MeE,rrOSK^[UIgc8pI~> -!B:&NirG%NrrA#8irZdl."VEYrr`1:.GOb""7N:imIL8am'328rr;DpS'V$)rrr,@Tqfp-n,ERd -d%d;Zp4<8+rs/&$S]J%-f`(=="5>8Br5/I7g9ep#!Nt>;rrOSK]("_\_`*)~> -!BpJTm/X,umJs6Dm/idX;1\c+rrST#_Ya?9rl'8qr:9jpglIEHs8V2MJB.W\rs&JXUj8]grpTjj -hkbUmg\ud(li.4`Vg5P@I`)*NrrU%LRDAh'jbUtW!O'5prrQ$tSFGnHeieN~> -!BU8Qkl@9emJrg8klR7Q;1\c+rrST#_YX97bDO.6o)B'TS=/45s6->?c2I86"Q6G=XPWCF"QHV@ -XP\U/lMh+`Z&#ulN62"brrU%LRDAh'k`s3g!P$,+rrQ$tRIKGAc8pI~> -!B:&NirG%NmJr4'irYJG;1\c+rrST#_YX97d[A5To)B'XW2APRs6Hq\e,An<"Q[(Z\)QiU"Qm7] -\)W&>lMh+a\sL=CS'_*#rrU%LRDAh'l_DN#!Q!";rrQ$tQ13f7_`*)~> -!BpJTm/X,umJs6Dm/hD1H@c+SrrU%LRJQpcn!f0mo)B*sd=mqJs8V)FKZj>crrr,6MM/Y5n,ERb -_hj)]o7?r1rs/A1H`3ih](kXl!gsY;^]+B3FoBD]!QV(prrRKHFn"c!eieN~> -!BU8Qkl@9emJrg8klPo+H@c+SrrU%LRJQpcnYVW5nc&sIPG@=@s5fu;dJib;"o$-*P/Hn[rrr/= -QBT;\JcG3=#Pu8nZE];'q<\+_R1[ -!B:&NirG%NmJr4'irX0"H@c+SrrU%LRJQpco -!BpJTm/X,umJs6Dm/g&`UOiI&rr_")DZ'A2"3uA!q==Onr5=)[mJm4AP)%E`o)AmPW-OrbrU9ai -hkk[mgAZ['o`#0p`IFM]Ha*//rr`1:.GMQ9!J9XYrrLr;hu -!BU8Qkl@9emJrg8klOQZUOiI&rr_")DZ'A2"4W:>qXXXnrQC2&n,NFGSs7dqrrqJhLoB)-n,EON -Y_]@:JcG?A#Q;i*WjR\op$D\\r,*t<^&J+pm`>D/iLJg*!i#`inEBu!3e.~> -!B:&NirG%NmJr4'irVjRUOiI&rr_")DZ'A2"500[qXXXnrR%+Dnc/XMWhS5;rrqW!Qa>TKn,EOQ -\sKkbJcG?A#Q<)?[D/*Fp?_e]r,*t<^&J,)nAtV1jf./;!i#`gnDaPe2h1~> -!BpJTm/X,umJs6Dm/eg=b(9TLrr_a\8+?BT"8&FBf^\tLppkaTo`+sDNf) -!BU8Qkl@9emJrg8klNC9b(9TLrr_a\8+?BT"88p\h=:LPq7qltp&G'IS!Vdtrrr5CRub>Rn,ERd -b*S:1oR[&:rs%& -!B:&NirG%NmJr4'irU_2b(9TLrr_a\8+?BT"8B?uiUQpTqT,)@pAb0OVki/=rrr8KVk(m!n,ERd -dA3GZon!/;rs%5NXhgI;o'?;Xn4-"<]`/#9hoPfup6X\:!m1KnnDaPe2h1~> -!BpJTm/X,umJs6Dm/d[rm=G;nrr`1:.GO[u"4r.%p$r%ho;m;Nq>^HCMN6?YrrqMdH^W=[n,ERL -Vg4rhrdk+Irs%8>N3Rr)kj&0MgF7%<]Dho6^rQHUI.H4q!posrnEg8-4b*~> -!BU8Qkl@9emJrg8klM7nm=G;nrr`1:.GO[u"5K!Bp@8.ioX9XpqZ$TJQ^ce"rrqVpMPSl&n,EOO -Z&#I;JcGWI#2ku=\rWfTlMgt@.;o'qrrKULa8Z0toAKWMm/RRaklK'jJ,~> -!B:&NirG%NmJr4'irTVhm=G;nrr`1:.GO[u"5oc^p[S7jotQp -!BpJTm/X-`mJsT1mJs6Em/kr@&V9u9rrST*^A7d2po]+nnG`j]TQ[sHs8LB#P2,R,"o?H,I^AA/ -rrr/8MhJe7Jc>uTk*gq,LQp`]rrTnORCW=u`2^lX!Ku3prrNc4g%"G1eieN~> -!BU8Qkl@:PmJsT1mJrg9klTB8&V9u9rrST*^A7d2q6u@6nG`j_X+eFis8UW6T&B,<"oH]>N4eQH -rrr2?R$,D[Jc>uTl(sNQQ([1%rrTnORCW=ub-T.g!M83+rrNc4ea_l)c8pI~> -!B:&NirG&9mJsT1mJr4(ir[O,&V9u9rrST*^A7d2qS8TSnG`ja[?\o6s8UfIWoW[L"oHoPS&Fda -rrr2FV4c$)Jc>uTl`m(uU9*PBrrTnORCW=udCmU#!NP2;rrNc4cgg#r_`*)~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -n,ERT]9fqbre:@Vo"(:)W28G9rrST*^:=1DiiC-"!PHh;rrP"WYjp`S_`*)~> -!BpJTm/X-`mK*A%Zc)83WSm.FQiL3=s4I>RgF7%UTq[sZ3pnG`jIMic`os89ogS)j&<"oQ`6 -I';`%rrr/9MhJb6M>mhSZ$WF8K['M\rr`1:.GM?3!UtNXrrKp;hu -!BU8Qkl@:PmK*A%Zc)83S`&`6PlOm:s4I>RgF7%UQp^P^8(rsIPKSDaGIrQUD#kO8ESr7.R" -\E`P_"o-9.Oi-gJrs/;0M6`kc8pI~> -!B:&NirG&9mK*A%Zc)83N8W^tOT8I6s4I>RgF7%UQpa-kEFrsI\\WT=*ZrR7=BlL4`Vr7\:R(TSof`(.8"8m$cgUI1`o:!`"!RAL -!BpJTm/X-`mK3I)'=78trW)ob"mp1<&9.$qmJs6Em/hJ3H@c+Jrr_a\8+? -!BU8Qkl@:PmK3I)'=78trW)ob"mp1<&9.$qmJrg9klPu-H@c+Jrr_a\8+? -!B:&NirG&9mK3I)'=78trW)ob"mp1<&9.$qmJr4(irX6$H@c+Jrr_a\8+?brn*jJ -li7"_d$qE0mf*I\`gj$YqX=Ffke!1giVnl;#Q)`5\$MROrTO7`n4-"<[Jp8nprNI9i3(u;!dXie -n`'Yf2h1~> -!BpJTm/X-`mK -!BU8Qkl@:PmKBMT#J_rsSbG -N3DaNs8']mY3kZW"od2NLU6(1rrr5BR?>DYP5bddc]=p(MSf5Qrr_")DZ$mA!L`#irrMSKhu -!B:&NirG&9mKIREPQursSbN -R^r"hs81'0\F8kc"odA^Qb;PNrrr5HVOu')P5bddeX`qRREGBhrr_")DZ$mA!N,)%rrMY\hu -!BpJTm/X-`mKEUjs1f;So'QJXrU'hHYjUq`2rX0)WSm.F2up[Ds4%&MR1[C3rr_YUN9'I-$i%/W -Yk7tqpptjOmd:#Xn@O@2_Y!@G51"q!knXo -na-A.4b*~> -!BU8Qkl@:PmKEUjs1f;So'QJXrU'hHYjUq`2rX0)S`&`62up[Ds4%&MR1[C3rr__bRHO&=$i.Po -\b?('q8%ronEp5Zo#$WWaS,*&"m*(HW7q6:rs%/BSZdm]p?)AV`"AECrrK7LaSu>@L&'[,!knXo -n`^)"3e.~> -!B:&NirG&9mKEUjs1f;So'QJXrU'hHYjUq`2rX0)N8W^t2?:IBs4%&MR1[C3rr_epVX!XM$i.i1 -_>"!0q8o&:o'QG\oZNo'chHo."mEUcZetbJrs%>TWO\D5pZDJW`"AECrrKU\aSu>@Q20A -!BpJTm/X-`mJm7drrR`Ojn%m?!<)PPpAY6;IC&e=rsSD! -Hb9+Rs7WjIXRY]X#6*APH(ipjnG`[ea,bb[m[F.[i0/tpI&HGprrT>8_Qj+A\[BKX!K5sqrrUpT -+7\_!eieN~> -!BU8Qkl@:PmJm7drrR`Ojn%m?!<)PPpAY6AMnJrUrsSJ, -MSf5is7a3`[I`bb"lHJ=XPNmFrrr5CRuY8QRfZ16rU!j3-PZ2Xj?]uU-RR-!9+!o!\r -n`^)"3e.~> -!B:&NirG&9mJm7drrR`Ojn%m?!<)PPpAY6GR`,*lrsSM6 -REGC+s7jR#^@^dl"lm+Z[c7;Urrr8KW1D!"Rf -!BpJTm/X-`mKEUjs1f;So'QJXrU'gjm-a<."6&YJWT!4HlNRCaJcF0u!mV^SpAY6dTnV:irsS.d -J&VBds7 -!BU8Qkl@:PmKEUjs1f;So'QJXrU'gjm-a<."6&YJS`/f8k61n\JcF0u!mV^SpAY6eX-;K0rsS4q -NQhA$s7Ns[\b5=h"o$0-OMUJUrrqVpMPSi%TDo,^WK49DWU&XF!h:1SYl=aRWlP,?XjQ),"8;g" -kORj -!B:&NirG&9mKEUjs1f;So'QJXrU'gjm-a<."6&YJN8`e!i<98VJcF0u!mV^SpAY6f[\2^LrsS;( -SC7B9s7X -!BpJTm/X-`mKjk"4Me#p[8%hj-GDG -rr<#gXF%AKli..KX*^8^r:'^iqok:QZKe4b#4\^@UkP&lj8T19,29=$!T]*XrrK[;hu<`m!8$f/ -!S0Da~> -!BU8Qkl@:PmKjk"5&X?q!S.ak+\'i -rr3,m[Y_]lli..N[>C^1r:'^iqpM-r]Bl -!B:&NirG&9mKjk"5TN]q!S.al)gW5 -rr3,n^R3"8li..Q^6l.Zr:'^ir7J*>_saB##5#Ts\=fqej8T19,29=$!U?K$rrL6\hu<`m!7(/q -!Q-jH~> -!BpJTm/X-`mK3I)'=72r!!)uc"ZrlG*?d%0(o!\sbg -o'HJ/4b*~> -!BU8Qkl@:PmK3I)'=72r!!)uc"Z -!B:&NirG&9mK3I)'=72r!!)uc"Z -!BpJTm/X-`mK*A%Zg[;^!<)=1m-bb!3+rE!hoZiJcF$q"7A9Xqt9skgkDElmf*Fhc@hVI -rr3,eUj]uQlMh%R[""4[q=+Cfr6^pZXlZYa#Q)8`SrecVro="\qd)DQXT& -!BU8Qkl@:PmK*A%Zg[;^!<)=1m-bb!1i*5!hTHfJcF$q"7A9Xqt9ski0156mJd:;P,.=@ -rrh_lMoGPXrrqf&NLeDlnG`[jete23kcFdgqo4MnS<_^crr`.)4RTLhu -!B:&NirG&9mK*A%Zg[;^!<)=1m-bb!0#ms!h00bJcF$q"7A9Xqt9skjIipRmJd:ATWmb] -rrhf#R`tZorrql0S#Y$8nG`[jgT[*\l`C*jr6C_;W2&/-rr`.)4RT -!Q-jH~> -!BpJTm/X-`mK!-kZ[L!`rri8;I\Z<0 -rrhPXJ&;*JrrrANS9h-ln,ERZ[t0R[pp'i(rQ0VTOb:jUir9,R9MG,[rrJJ;G5gG"!c%dk -o'HJ/4b*~> -!BU8Qkl@:PmK!s3:QGoh8'Pp&>-k]Sk/(rri;CN3;XK -rrhVeNQM+`rrrASVhq_?n,ER\^Q4l/q6Br)rm-XuSWV>!ir9,R9MG,[rrJkKaSu;;L#;n3CB0(Z -klK'jJ,~> -!B:&NirG&9mK!-l`1#9Erri;JS%/"f -rrh_sS'_)urrrAXZC&;fn,ER^a.9-Xq6Br)rmdR@Wh7oBir9,R9MG,[rrK:\aSu;;Pi)KBCB/qV -irR%VJ,~> -!BpJTm/X-`mJsT1mJs6Fm/h,)LOoKLrr`.)4RVkA"6>E-mHsoVppkaSoD\amjI:_@r9=4bn[sR4 -_"@-r"o[#CH)TZ/rs/POLQ7UL`Ve]p"7A9Xql9YsXMMsW!IsRrrrRrUD=[&peieN~> -!BU8Qkl@:PmJsT1mJrg:klPW#LOoKLrr`.)4RVkA"6Z)In*U,Xq7qlsp&=sokGF?`W -a7\s%"od8TLpH*Krs%)?S"PebrSdbYmQ=hQWrE+.aN+;]NUbs,!f$bko'$2#3e.~> -!B:&NirG&9mJsT1mJr4)irWopLOoKLrr`.)4RVkA"6ubdna6>ZqT,)?pAY'plEQo/rTX=coZNo& -cM$c-"odDcQb2Ffrs%8QVlZE:rSdbYmQ=hQWrE+7cc?%dS+GS -!BpJTm/X,umJs6Fm/gAiSq6pbrr`7@/`lX)"T?#]_#<[#"S8aB\bQ1("Q5W"b5LT)#6*DRH(`gh -nG`[_]nM<[ost),gQ./VID5R9rr_@7ErN' -!BU8Qkl@9emJrg:klOlcSq6pbrr`7@/`lX)"T?8ra8YK+"SB0\_>4*1"QZ>?d/N8/"lQP>X53dE -rrr#4P*X5`\c2lkS<]h,`V\Tn"6D+Tri,nuagB+g!MA9-rrSblJUc8pI~> -!B:&NirG%NmJr4)irW0[Sq6pbrr`7@/`lX)"T?Q4cMm52"SKQuanl#:"Quq[f)Fn5"m!1[[Gh,S -rrr)=TVTs/\c2loW1pG`c26H!"6D+Tri,nud([R#!NY8=rrSbl<:]&M_`*)~> -!BpJTm/X,umJs6Fm/fZU["88!rrRs"g[kFIl]dImm/I4TU4:,Zrr3,VPD@K`kl1h[`/K;YmdU5\ -rnF/mUYGd^rs%POJsUhopYYuPgEMENrrLc;a8Z1 -!BU8Qkl@9emJrg:klO0O["88!rrRs"g[kFIm@]s5m/I4VXc:L%rr3,ZT9Rk)kl1h\bF+I-nF-A[ -hlV^:hnB$okG+-5MST#ErrUq!LSt.Qh4_mh!O9o-rrTP-6Ls@Ac8pI~> -!B:&NirG%NmJr4)irVLH["88!rrRs"g[kFIn#WJSm/I4X\!teDrr3,^X.n>Ikl1h]dAEMVo'cS] -j0tAaj1YHslE?e^RE53]rrUq!LSt.QiN:0#!P6e=rrTP-61X%:_`*)~> -!BpJTm/X,umJs6Fm/em?bCT]7rrS]/cL_&=rl9Dqr9XFdjHtYIrr2p#fT1p=roa:bjK*]qd/Aco\TTLc5N4MrrMS -!BU8Qkl@9emJrg:klNI;bCT]7rrS]/cLUu;c&9@7m/I1NUQX.*rr_&GQe:I#"m<=OUt,D4rrr,; -QBK2Y_Z'i-XGip2](Oq[!mV^SVZ-\eNQ;&"_n4k,!m:Qro'$2#3e.~> -!B:&NirG%NmJr4)irUb3bCT]7rrS]/cLUu;e!e>Tm/I1QYFsVJrr_5YUtt25"mWjjYM9!Errr/C -UnGs)_Z'i/[[O@d_Y2jd!mV^SVZ-\fS&bO0bJW9 -!BpJTm/X,umJs6Fm/e1+iIV$LrrT>8`:Ep1n=>Bmli.(@NfDclrri>NMiQEOrrr;EP^K_!n,ERL -Vg4lbrQ"pBnZ.#&H`QYlrrU+NY,2."rc\(XrrLK -!BU8Qkl@9emJrg:klM_&iIV$LrrT>8`:Ep1nu.i6li.(DR[W+3rr^rAS)!0+"oH`@Mn/-ArrqJg -LoK/.a8ZA8[#(N7[.<&Q!lP\RV#LILq8iR:eZ%L,!oX+so'$2#3e.~> -!B:&NirG%NmJr4)irU(uiIV$LrrT>8`:Ep1oWt=Tli.(HVl/PQrr_,SVr6_;"oR#SR_eC[rrqSt -QaGZLa8ZA9^6u*j^@^7]!lP\RV#LI\q8iR:g9ff -!BpJTm/X,umJs6Gm/u\Z!;D'E`r?+Y&[:g*"42P"q!A"`rm6@cj8T&]rm6F`gu\P>la2/'aS>9) -"o-,uJ[k-krs&2(H^&oRm+hUBYS"gKrrJ&;aSu;%MW"L:pAbEaoBcS04b*~> -!BU8Qkl@9emJrg;kl^,R!;D'E`r?+Y&[:g*"4`C?q5R,uEh!U#g-rr_uq#3b[C!R<`V~> -!B:&NirG%NmJr4*ire9F!;D'E`r?+Y&[:g*"5B<\qWn.`g7YV5rVluRU8m;9rrqo2S>k$7nG`[f -e#/bXo#q%;pr&Q$RCMbArrTD:`2!>5V -!BpJTm/X,umJs6Gm/l,E%Y=YurrUF`TCMp`oqm>mli.+c`IFWJrr3-"bCl2>jo5M_eX^uai:$[L -jfEfsdJVAk#5Z&]Oa`nbg]%>I)U5#V!MR`YrrVt=ro!eX%KPAWm/bd$J,~> -!BU8Qkl@9emJrg;klTQ=%Y=YurrUF`TCMp`p99Y5li.+dbDiUkrr3-#d?:6ajo5M_fr0_4j7!!O -kdHAEf)I)U5#V!Na_jrrMqLhu<`f!8@&/!R<`V~> -!B:&NirG%NmJr4*ir[a2%Y=YurrUF`TCMp`pUZsSli.+dd[R`8rr3-#f:]8/jo5M_hQrQ\kO8ES -lbAjlg\oM!#5cW5WggB^g]%>I)U5#V!OgY%rrMq\hu<`f!7g]$!Q-jH~> -!BpJTm/X,umJs6Gm/kE1,_?!5rrUjrN:?iLfn6*mli.+`\pLOMrr3-!a+9]?jSoDS]nM9Xo^Mka -qTP.OZKfs>#5uSmNI[>TgA_55+PEIg!OoMXrrIQ;i;Wj(!6Xp#!S0Da~> -!BU8Qkl@9emJrg;klSj),_?!5rrUjrN:?iLh3"l6li.+a_2>\nrr3-"c&\abjSoDT`06J,p$htb -qpD$p]C",J#5uf,RZ=-)gA_55+PEIg!Pc@hrrJ)Li;Wj(!64Wp!R<`V~> -!B:&NirG%NmJr4*ir[$s,_?!5rrUjrN:?iLih*aTli.+aadKp:rr3-"e=El0jSoDVbb1`Vp@/(c -qq%m;`:)4U#6!#@VjsmRgA_55+PEIg!QW4#rrJS\i;Wj(!5\9e!Q-jH~> -!BpJTm/X,urrB%Xm/jfu2hD"Grr_:2H2d@6"8T-LcKbE4oWNVOq#:9rqnmoUkiDaJrnXDrT@a)3 -rrq\mI?_tQg&D9Ud"[@.PMFml"9*Qqj.QDQc(N,W!Ku6rrrP+Z\b#1heieN~> -!BU8Qkl@9errAVLklS9n2hD"Grr_:2H2d@6"8]Nde*?r9osfmpq>UBsr5jqulJqmJiNJ';h#?gC -"migYT[N_irrpr:QB7`sgA_9SGq.jIrrLTLa8Z13i8FV:2ZU;XklK'jJ,~> -!B:&NirG%NrrA#;irZIc2hD"Grr_:2H2d@6"8]j'g$8S?p;*0UBsr6Uq?mGn3Mjgg_ci;W6G -"n0?tXP!I'rrq/NURnOIgA_9SGq.jIrrLc[a8Z1?jP^%>2ZU,SirR%VJ,~> -!BpJTm/X,urrB%Xm/j9f7tL]Vrr_UGB)M/u"6#*+n*9oUmA,0Jr;Q^!q7_9Plf8!KpVi,C\*ibc -"oQc8H`cGcrrq)9K7]3 -!BU8Qkl@9errAVLklRa_7tL]Vrr_UGB)M/u"6>cFn`p,Wn#hVkr;Q^!qSeAqmGn3Mprf+e^[Uam -"o[#JMRVj*rrq5IOcZ*hg&D0PAiB"JrrM8Ka8Z1EcJ\^(7f]IYklK'jJ,~> -!B:&NirG%NrrA#;irYtU7tL]Vrr_UGB)M/u"6cPcoBQ>Yn[P%7r;Q^!qotS>n)OEOpsQ(2a7Aa" -"o[2ZRDA.DrrqD[T:W%Ag&D0PAiB"JrrMA[a8Z1OeDU?.7f]=UirR%VJ,~> -!BpJTm/X,urrB%Xm/idXt_"T5fX`;]'%"Qc&)c2R_B"SfQTVs`RE"m)k5R*bd# -rrqi!J<.bGiVs)BQ@FOGf%C!)pf'ZQT)SleG5fS_!P5VqrrQ4$SFc+KeieN~> -!BU8Qkl@9errAVLklR:Rt_"T6)nbPpf,"R)\Ee,K@H"SoolZ1-cQ"mECPUXf;3 -rrqo,Ngn;hiVs)EU5b8&g=ZE-pf'ZQT)SlfL&T0n!Q)M-rrQ4$Re,bEc8pI~> -!B:&NirG%NrrA#;irYMHt_"T6B0dJiG2"RE:af`(mM"Sp3.]COt]"m`pkYM/pD -rrqu6SZ('7iVs)HXdboZhq7r2pf'ZQT)SlgQ2\l)!Qr@=rrQ4$QLj,;_`*)~> -!BpJTm/X,urrB%Xm/i:JAqBusrr`$q7.]mI"6bi0l083MglIEHrVm#rX`gc6ir92Zc'<[Zl1"]V -rRRNbW8Zk<#3_Y+K8J%Uf`)'F6r`rOrrIZqPAcRk_m/bd$J,~> -!BU8Qkl@9errAVLklQbCAqBusrr`$q7.]mI"7)MLm-4NPi1$.irVm#s[tV3Zir92Ze"MZ.lgXoX -rn=<,ZK1-I"mW(EOdF\Orr_j\<; -!B:&NirG%NrrA#;irY#:AqBusrr`$q7.]mI"7<(fmcj`RjJ\s7rVm#s^m)S)ir92[fWCRWmdU5[ -rnk&K]]eJW"mr[bT;:8orr_j\<; -!BpJTm/X,urrB%Xm/hb;G(K\-rr`122XKo4"TH;d]DUso"THf'Q/_cB"SB!HXmtBM"mraKN5P>X -rrqu+KSRJ=lMh(TV0[cKcMlGq"7.pXr1!]eQ.X1X!T&prrrR?DJ+N%.eieN~> -!BU8Qkl@9errAVLklQ85G(K\-rr`122XKo4"THN#_u8j""4i[0jo,2^ot-'ioAT]Qn%XmNb4b?) -"nTWpPf`[brs%npLlmqOrn%/Plo&JRS,WM_grTKriges,!d4QloB?;$3e.~> -!B:&NirG%NrrA#;irXK+G(K\-rr`122XKo4"THc9bPg]*"5BNOkl(Map;E?6o\ofRn].2tdJ*/1 -"ng'3U -!BpJTm/X-`rrBjOrrB%Xm/h2+L4TB[li$hdo<gheK?O5Err_:2H2a94!NX)YrrMS -!BU8Qkl@:PrrBjOrrAVLklP]%L4TB -!B:&NirG&9rrBjOrrA#;irWrqL4TBQ -[c%/SrrqGiPdfZOn,EUa^6bIafDaA$"61kVrgNif^ -!BpJTm/X-`rrE,8_uB_9ip?eT!1&39]Dhqk+PH/^"3c1uq<@n^q7D$To)8RknZ@/Do\f`Qp;DuA -[Hm>^"nfckK":=@rs&,#H%U[hrRLoLfcZ6@rrL!?FSt+t!gWgooBcS04b*~> -!BU8Qkl@:PrrE,8_uB_-iopMO!1&39]Dhqk+PH/^"4E.>qW\"_qSS2uoDS[lo='Rgp#,iRpWK"c -^@(Lj"np'*OMUGXrs&2.LQRYCrRLoLfcZ6@rrL3KaSu>@KDa^.!gWgnoB?;$3e.~> -!B:&NirG&9rrE,8_uB^qio:)F!1&39]Dhqk+PH/^"5''[qs"+`qobDAp&4mnoY?j4p>GrSpsH"1 -`piKt"o$B?T#pQprs&58QCj_trRLoLfcZ6@rrLH[aSu>@PPjD>!gWgkoA]kh2h1~> -!BpJTm/X-`rrN07^r66QWT*:H;ui_Fs1843T,PuArr_keK\P_j"SApF[eKb#"RiC<[J&MX"m3%; -PKN^jrrqGaH^N1Wq#:Qm\9W[T`;J-b!mMXUQi@* -!BU8Qkl@:PrrN07^r66QS`8l8;ZNVEs1843T,PuArr_qrP2GL'"STB_^A.[,"S&jU^%^Fa"mNRU -T@!H(rrqPmMPJ`"q#:Qn^ke,3b5Bch!mMXUQi@*AU -!B:&NirG&9rrN07^r66QN8ik!;#mDCs1843T,PuArr_u(T]>89"S]d#`qfT5"S9?p`VA?j"mj'o -X4I.:rrqZ$RBP?Bq#:QoaHrKfdJVMo!mMXUQi@*EXiLGBT((_=!i,fnoA]kh2h1~> -!BpJTm/X-`rrW8:'Ys;>rW)lrrW(jU!3+uF!_WNrJcE:\!jE9Tq#:N;H>n4W`r#cKRsCphnG`[hc'<[Zjo#,_qS.B/I),X.rrU1PYa5:im=<7W -!L2'9CqNOeieN~> -!BU8Qkl@:PrrW8:'Ys;>rW)lrrW(jU!1i-6!_NHqJcE:\!jE9Tq#:N;H>n4W`r#c'9(V9Jc8pI~> -!B:&NirG&9rrW8:'Ys;>rW)lrrW(jU!0#pt!_<n4W`r#crrT>'8FtjB_`*)~> -!BpJTm/X-`rr`?%^_FTSrr<&qrr<&VrrB%Xm/fWT[t4RhrrU+NYl"G,jBI5K^:q73>NG_^"8JsI -dHCN3k*ghIr;QodVL5uMlMh+/mkM -`qfW9^CnGLrrW1Bq8iR:V9.]r!k/.soBcS04b*~> -!BU8Qkl@:Prr`?%^_FTSrr<&qrr<&VrrAVLklO0O[t4RhrrU+NYl"G,jBI5K^:q73>NG_^"8T?a -f'!&8l)'Kkr;QofY_pmkM -`qfW9^CnGKrrIfLaSu:Ecf+m*[fAbdklK'jJ,~> -!B:&NirG&9rr`?%^_FTSrr<&qrr<&VrrA#;irVIG[t4RhrrU+NYl"G,jBI5K^:q73>NG_^"8T[# -gZSS=m'3)8r;Qoh\s^_:lMh+/U7od&nG`pe`gs$Uq#/X0SX@Xui;Wu#H>mkM -`qfW9^CnGKrrJA]aSu:Oe`$N0[fA\birR%VJ,~> -!BpJTm/X-`rriE&s1f>ao)A[iqYpNqhu<\Uip?e-!5X6d\,QNS)P@!.!kqgLqn<-D=hae5"5ej( -nE9fRk)YDMr;QobUOBiOmf*@dItRX4!eZ"#r;QrXW-Xo[r:0dmrn!ccG'ePJpu)/YjBI5K^:q73 ->NG_^!l#McPQ(Z?jiIH&[^b;r!l4jsoBcS04b*~> -!BU8Qkl@:PrriE&s1f>ao)A[iqYpNqhu<\IiopM(!5X6d\,QNS)P@!.!kqgLqn<-D=hae5"65TD -o&p#Tl'n$nr;QoeY)C6pmf*@dItRX4!eZ"#r;Qr\ZAGF/r:0dmrnON-Ko(Z(q;D8ZjBI5K^:q73 ->NG_^!l#McPQ(ZLkfEc)^;/_-!l4jroB?;$3e.~> -!B:&NirG&9rriE&s1f>ao)A[iqYpNqhu<\8io:)!!5X6d\,QNS)P@!.!kqgLqn<-D=hae5"6Q;` -o]Q5Vm&6`:r;Qog\=1YNG_^!l#McPQ(ZYlcB),`lR-=!l4jqoA]kh2h1~> -!BpJTm/X-`rr<&urrR`Op%/1`!;c]q!8meVWT*:H0`]@Is0hq3fcZ7Rs3YQT^&_rqqu6fr[X?'n -kPkY5M3?`nrrhPZID>XJrrI#2q7Zm'DYjA:q9,"MYN>BU#l`8*HZadi]C=eZ!kqgLqn<-D=han8 -!l#McP5bQQdE)=gaJRqr!m1KtoBcS04b*~> -!BU8Qkl@:Prr<&urrR`Op%/1`!;c]q!8meVS`8l80EB7Hs0hq3fcZ7Rs3YQT^&_rqqu6cr^P^7t -rr^o>T&T\J"RE+I`r#9*!H+V,^&apFqYp`qd@cE-kjn`Yf91uEN02!JiVrtn=hFRF!kVULrr3&7 -(;H%4!N4MirrLELiVru%!&4$/!R<`V~> -!B:&NirG&9rr<&urrR`Op%/1`!;c]q!8meVN8ik!0*'.Gs0hq3fcZ7Rs3YQT^&_rqqu6cra-kB< -rr_)PWoa0Y"RWXdcMR,2!H+V,^&apFqYp`rf;tFWlgk&\gn:%!S"IjpiVrtn=hFRF!kVULrr3&7 -(;H%4!OCJ$rrLW\iVru%!&*s(!Q-jH~> -!BpJTm/X-`rriE&s1f>ao)A[iqYpNqhu<\Uip?dq!7QN![JpEj.XCho^%]5B]j(@0rr_GGPNh91 -"T?JpS*'YK"Ql;*_Y`s)!LAuE^&aIaq#:Na[XjCTp@nRqfSOp"]_MNcWd:)\r8mqZd:r?h"_lBa -^D=SHrrK@ -!BU8Qkl@:PrriE&s1f>ao)A[iqYpNqhu<\IiopLl!7QN![JpEj.XCho^%]5B]j(@0rr_PVTBtb@ -"THc0VWn$Y"R2nFant]0!LAuE^&aIaq#:Nc^5n])p\4[rgm3eQ_tj>o[#(X1r8mqZd:r?h"_lBa -^D=SHrrK[LaSu:sU#H"Qdf:ceklK'jJ,~> -!B:&NirG&9rriE&s1f>ao)A[iqYpNqhu<\8io:(e!7QN![JpEj.XCho^%]5B]j(@0rr_VeX7#0N -"THuDZ0V>f"REFad/ -!BpJTm/X-`rr`?%^_FTSrr<&qrr<&VrrB%Xm/e@0h1>U5rr_UG7%s:f!MPMKrri>=I(K7=rri58 -IAH9.rrhDQJAhBZrrM;!otCHCkP+u\rn*rjU"KABrrq8=G^6prr;QrrbERFZkii$JqHLZ-^'),R -],&/CrrL';aSu;+K]2q4h#JPgm/bd$J,~> -!BU8Qkl@:Prr`?%^_FTSrr<&qrr<&VrrAVLklMq,h1>U5rr_UG7%s:f!MPMKrri>CMSf>Trri8@ -N3;XIrrhM_Nm%@orrM;!otCHCkP+u\rnXZ3XPEgQrrqDNLPWkDr;Qrsd@cE.lKJ6LqHLZ-^'),R -],&/CrrL -!B:&NirG&9rr`?%^_FTSrr<&qrr<&VrrA#;irU8%h1>U5rr_UG7%s:f!MPMKrri>JREGKkrri8G -R^hncrrhVmS^IB/rrM;!otCHCkP+u\ro(>Q[c.5`rrqM^QC#ekr;Qrtf;tFWmHFQOqHLZ-^'),R -],&/CrrLN[aSu;0T],nPh#JMfirR%VJ,~> -!BpJTm/X-`rrW8:'Ys5LK#dfarrI)HotCI7E:j/=p;Dr@[HmkRPBM2_q"Odlla2/&a8#!#!KEfG^&jrJ^Q8BqfTjPX -!rI*=ir9)B!#P7o!S0Da~> -!BU8Qkl@:PrrW8:'Ys5 -!B:&NirG&9rrW8:'Ys50!KEfG^&jrJ^Q8BqiN:3$ -!rS8]ir9)B!#G1d!Q-jH~> -!BpJTm/X-`rrN07_!h:'!;c]q!8meVWT*:H'*. -!BU8Qkl@:PrrN07_!h:'!;c]q!8meVS`8l8'*.PjK]!Uc#hrrJ#Lir9)F -!#+tg!R<`V~> -!B:&NirG&9rrN07_!h:'!;c]q!8meVN8ik!'*.PjK]!UuZ#rrJP\ir9)F -!#+ta!Q-jH~> -!BpJTm/X-`rrE,8nGiCdrr;lriVrnWip?dY!:GF`-3Xc@VYn..DY=#3oqm>mjo5JO -VL?5Vr;QoUP_I?[rVlncUA_e.Qqe"hqn<**R.C7^lC2p=L3ffUnG`[`^PITWnaZV[Y*JUm!L9gK -rrW.@qoJd -!BU8Qkl@:PrrE,8nGiCdrr;lriVrnKiopLT!:GF`-3Xc@VYn..DY=#3p99Y5jo5JQ -Y`$Nur;QoYTTdh'rVlncUA_e.Qqe"hqn<**R.C7^m&#GhP_l^*nG`[a`g)b+oC;h]Y*JUm!L9gK -rrW.Pr5em=Qg!H/!q$%!oB?;$3e.~> -!B:&NirG&9rrE,8nGiCdrr;lriVrn:io:(N!:GF`-3Xc@VYn..DY=#3pUZsSjo5JS -\sgqBr;Qo]XJ"5FrVlncUA_e.Qqe"hqn<**R.C7^n$/(@TpWISnG`[bcD.&Uo^Vq^Y*JUm!L9gK -rrW._r5em=V!I%?!q$%!oA]kh2h1~> -!BpJTm/X-`rrBjOrrB%Xm/d^snU^_Hrr?d3^'Aj!LUOXG/[G>h!,;')"5/@&oB#uTkFI1GrVZ[# -gQI?ZHCWI^o`"o/rOrJt6Os;BD8#k] -!,dhs!JTdZrrJJ -!BU8Qkl@:PrrBjOrrAVLklM:onU^_Hrr?d3^'Aj!LUOXG/[G>h!,;')"5T*Ap#Z2VlDTcirqud$ -hk$(^rr<":r4W7T?C_)m^&W*Drs\=oK8.5 -!B:&NirG&9rrBjOrrA#;irTVhnU^_Hrr?d3^'Aj!LUOXG/[G>h!,;')"6,r^p>u;Wm'E85rqud$ -j/Sj-rr<":r4W7T?C_)m^&W*Drs\D'PEj8ds7FO/U!*)trrqSuR'PQHo`"o/rOrJt6Os;BD8#k] -!,dhs!MJl%rrK:\ir9)M!"AJZ!Q-jH~> -!BpJTm/X,urrB%Xm/dUpoR[%LrrM\0rOr:PQ2SDtP@+:&!H@W$rr`)%IEU^O"Q5N"df01E"k\lm -dJdhT^&S00^&Vj?rrqh`F*>+hqu6iWW-Xo[r:0djq8neKZK_)_!,;DG"opHE\t1N^r4W/FNrK-J -e]@akV97ft!qZI"oBcS04b*~> -!BU8Qkl@9errAVLklM1loR[%LrrM\0rOr:PQ2SDtP@+:&!H@W$rr`,/N7$_d"66&=fDGROgmj\] -s(M5B!!)l0!,2*+"n8RFKu*T^rrqGgM5Jl%nc&dhc^p*-lh:>YC&PaM!&KnOSh=FK^&Vl-rrJqL -aSu:Ed,P',oDf6iklK'jJ,~> -!B:&NirG%NrrA#;irTPfoR[%LrrM\0rOr:PQ2SDtP@+:&!H@W$rr`/8Rb-X#"6Zb[h#%*TiM`R, -s(M5B!!)l0!,2*+"nK'bQ,rh!rrqPtR'GEDnc&dheZ,+Vme6Y\C&PaM!&KnOSh=FK^&Vl-rrK@\ -aSu:Of&H]2oDf6iirR%VJ,~> -!BpJTm/X,urrB%Xm/dLmpOW@OrrLi'rOr:7])B>D\L.9h!Irhnrr_;>R-iu7"4rHlg\_!Qer>.spL!N?Y.^&`3DO8f6^ -_8uWWZG#8t!qu["oBcS04b*~> -!BU8Qkl@9errAVLklM(ipOW@OrrLi'rOr:7])B>D\L.9h!Irhnrr_DNU[R:D"5B34hu!EUg7"(? -q7Zh/qRuuNnG3(fnu@=s_>.spL!N?Y.^&`3DO8f6h -aN4A^]>W_/!qu["oB?;$3e.~> -!B:&NirG%NrrA#;irTGcpOW@OrrLi'rOr:7])B>D\L.9h!Irhnrr_M^YOU]R"5p#Sj88iYhkur] -q7Zh/qRuuNnG3(foX'dHankc3"oHlPQbi"Wrrql0S#Y$8qYpTeE;dKO>.spL!N?Y.^&`3DO8f6q -ccH+e_oq'>!qu["oA]kh2h1~> -!BpJTm/X,urrB%Xm/dFkqLS[RrrL2trOr:NQ2SDtPm[K(!JY.SIft4,4^W["Ift445tc4qIfb(% -F8 -!BU8Qkl@9errAVLklM"gqLS[RrrL2trOr:NQ2SDtPm[K(!JY.SIft4/6t:]-Ift4785XF)IfWbq -q7Zh/qRuu\g&(dQoW*S!`;B-*"nfH]R)ejhrrrARVhhV^]jklK'jJ,~> -!B:&NirG%NrrA#;irT>`qLS[RrrL2trOr:NQ2SDtPm[K(!JY.SIft439P/b8Ift4::KDT7IfWku -q7Zh/qRuu\g&(dQosU$LbP^r2"noj"V9\c(rrrAWZBr2cr;QfOJ,$_YXpP$?!IrgarrLH\aSu:d -^uG@qq>^ZiirR%VJ,~> -!BpJTm/X,urrB%Xm/d=hrIP!UrrL2trOrM\)Mtr4M&QNp^'KEX=C5ZVF*W6-Ifjgc7WRR>"FX`D -:iuYc!G$r\^&S00^&`t!rI4ur:H:OEII;RhIVhtF9k\tFIgL@+6:5((It)!`pq?c29)QC(M9(bX -!S*UZrrLE=ir9)Y!!;cZ!S0Da~> -!BU8Qkl@9errAVLklLndrIP!UrrL2trOrM\)Mtr4M&QNp^'B?[?".JbFF*S/"*RL7F6%fRIUtuK -G5ZmkA;9oo!!)l0!JY.`Ig(-u5XT"/mXGFiDc];(C45W%$$frN8RcspIq4.r4W2gaH-?% -fqldi!Rn+/rrW-!!qYXWc8pI~> -!B:&NirG%NrrA#;irT8^rIP!UrrL2trOrM\)Mtr4M&QNp^'B?_@:j:oFaE\0"*[dEFl\#TIV;GZ -GQ!!lA;9oo!!)l0!JY.`Ig(1&85!QCmXGFiEEl.=D11r($$p/Z:hG$'Iq4.r4W2gaH-?% -hQY*$!SOp@rrW-!!qYFQ_`*)~> -!BpJTm/X,urrB%Xm/d=hrIP!UrrLi'r4WAd.gH5.H4Ttg)LS[#YG.;;HZO[qRAR=,cJ.RUrr<#t -aF(AljSoM]]R6aKs8U/sq7Zh/qS!8jA:K)T:cUXGId)=cHXo`3 -!BU8Qkl@9errAVLklLndrIP!UrrLi'r4WAd.gH5.H4Ttg&q%"'\?)BhM1^eUV6IVRe)0KbrVluF -MnJrJrs8J=MR2mRs2^&m^&S00^'TO)It)fF5XT%1l$ikaB2D!"EUeM`IV_qL9NFW:q7ZoV*O>UW -!K"mYrrMGLaSu:uTAokPr;ZojklK'jJ,~> -!B:&NirG%NrrA#;irT8^rIP!UrrLi'r4WAd.gH5.H4Ttg&q.74_7-P@R$4&;Ye%d!g#MJorVluM -R`,-brs8MFRD&7ms2^&m^&S00^'TO)It)fK85!TEl$ikaC0"#7F7F_bIVr7[;HuhJq7ZoV*O>UW -!K"mYrrMP\aSu;$X5a-\r;ZojirR%VJ,~> -!BpJTm/X,urrB%Xm/dFkqLS[RrrM\0pV$ZZ3W6YmE:Wo+(B!X]e]>A)Tp(4VEIa%:V5oK%]]/AV -k5PYZZ?rnNfmrn4!!)l0#CtM$TlPItroF(_m^e+-^$u%$&cV(Rd_rSmRZ)`;I#=5PIqX-(^&iZu -V#.k,J(ft`!rI*r47q>^]jm/bd$J,~> -!BU8Qkl@9errAVLklM"gqLS[RrrM\0pV$ZZ3W6YmE:Wo+(B!^bglfVQ_L(3F*[Vr!dkf[ -qn<)\g5l78r.P'krrMGLir9)V!!VuY!R<`V~> -!B:&NirG%NrrA#;irT>`qLS[RrrM\0pV$ZZ3W6YmE:Wo+(B!dghUTfb[]?*gOe&DS\\=l.bNSNp -k5PY\`0eL -!BpJTm/X,urrB%Xm/dLmpOW@Nrr?d.^&knpMuC?iC%)' -!BU8Qkl@9errAVLklM(ipOW@Nrr?d.^&knpMuC?iC$u!:nE&BM`4DXqMN3=DOdr;R]Z8FTkOSQ? -rrho!MR[[%^&S00^'&GLJr7h6rtbV,lJL(3YEXZqMhZbFS# -!B:&NirG%NrrA#;irTGcpOW@Nrr?d.^&knpMuC?iC$u!:o'"r\begKHR@KJ,T;]$,`6QunlLXrC -rrhr+RD3b;^&S00^'&GVP*se[rtbV-m,QdF\Y51QR[&u-Vm="We)'<[rVZZriG&2'!d,6OqRuuL -nrE_NSaji%!Vi#@rrVop#P6sV_`*)~> -!BpJTm/X,umJs6Gm/dUpoR[%Krr?s8^'6KS[^M8O?2VD:DWh$@pT&ekpZp_ca1JOMQ]$?7H%_0D -T;f-/`Qm)olLXrPrrVJY;>Ip+!;aD2:OL7QruD%4mcN?Ubf%,rU6UR`EdNS+TrkoGcaf6bW87IE -rr?d2^&i*eU\VV(BoW,nPM=1Y!Hn4urrVfm$M3WceieN~> -!BU8Qkl@9emJrg;klM1loR[%Krr?s8^'6KS[^M8O?2VD:DWh$@ppH+4q!R1pc,7&nU6ppmLln.# -WjB=TbLG>.m.L>UrrVPf<;F6.!;aD2;N&ihru1\%l/C=Db/1WhTpCUgMNsj8[_^2<^n6IhiU[!K -C&G[HC_rlB^&Vl,rrJbLaSu9oqW%SWoDf6iklK'jJ,~> -!B:&NirG%NmJr4*irTPfoR[%Krr?s8^'6KS[^M8O?2VD:DWh$@q7`BRq=*P&eB>\;Y,.VOQ_11Y -[CjE#db3RBn+Q_YrrVYs -!BpJTm/X,umJs6Gm/d^snU^_HrrK9frk8Pg.0L#7LA\adQ*06K"5\g(nFuqtp?U\icc3Z)WhGc> -Km[oaJ;KGYTi:d$!!)l0,$N^Qf[nU!bK%N8]!e]9S!/_\H#\(ZM3==&X0f[eg#_f(p\tEd^5.HQ -mIgJZDZ.9N@iD6>^&W&1rrJt -!BU8Qkl@9emJrg;klM:onU^_HrrK9frk8Pg.0L#7LA\adQ*06K"6,TEo(W/!p[.(ueBGkDZ`Bjj -P)=jFNg?96XB,/2!!)l0,$a!\gtUK3dETeQ_S3I]VOs39Lk1>AQCaqT[CsW/h<=J0p\tEf`KcS$ -n+H\\DZ.9N@iD6>^&W&1rrK=LaSu:&n)OELnGj$iklK'jJ,~> -!B:&NirG%NmJr4*irTVhnU^_HrrK9frk8Pg.0L#7LA\adQ*06K"6H8`oCr8"q![G*g=+6`]sb)A -TUCt.S>3*h[TWF?!!)l0,%'?giS`PGf@80lb/V3+Z)a[kQ][T)UoL]/^;\CMip6::p\tEhbbLfO -nb)n^DZ.9N@iD6>^&W&1rrK[\aSu:4n`0WNnGj!hirR%VJ,~> -!BpJTm/X,umJs6Gm/dh!mXbDErrN"$o=b6:qrIb[qmUslrp'Lgq![A$eBWE8rP&+.rk9,A?^6tE -R%0eEW3!52\\lV>gu[qsroX4aj/m]nanYZ2!Nq^e^A7g0ZMqQ=Q*-,H!OfJYrrJ,=j8T2K!"ebh -!S0Da~> -!BU8Qkl@9emJrg;klM@qmXbDErrN"$o=b6:qrIbZr4e-5l2M"an`f#cdse%i^A7j/^(d;RTq\(^&aM%NW9$naSu:0jl?@BmJmdhklK'j -J,~> -!B:&NirG%NmJr4*irT_kmXbDErrN"$o=b6:qrIbZr5Y5Rl2M"boBYMpfn,ss^A7j/^(d;XXfeh1 -ZF.3S^V[t3d+@+7lgac3rrqZ%RB4s7q#:AtQ2\Mo!!'>(^&aM%NW9%!aSu:=ki;[EmJmdhirR%V -J,~> -!BpJTm/X,umJs6Gm/dq$l@JuArrTqUT_6#"ToJ%2"6bi0l/hpGnSIg2!aCrOdJjFKd[YTYgA_!L -!W-I"^&^amNW0%#VTAc -!BU8Qkl@9emJrg;klMLul@JuArrTqUT_6#"ToJ%2"6uGKlfJ-InSIg2!aVJ_dJjFKf;FG-hZ!EP -!W-I"^&^amNW0%)YfQhFU>4f/!pTb!oB?;$3e.~> -!B:&NirG%NmJr4*irTkol@JuArrTqUT_6#"ToJ%2"7<(fmcFHLnSIg2!ahtndJjFKgp39Vir8iT -!W-I"^&^amNW0%0]#amPY2SF@!pTb!oA]kh2h1~> -!BpJTm/X,umJs6Gm/e((k(3Q>rrg(P]3DuC^&kuPqV_AVrkj,pr9""[E4,AQ"gr9aI\,]Krrr#2 -N.JA$r;QeWU%Q,%T/\XnNrK.6PfWk*T[)Tt!p0J!oBcS04b*~> -!BU8Qkl@9emJrg;klMY$k(3Q>rrg(P]3DuC^&kuPqV_AVrlL&6rT=+\E4,AQ"gr9hN2c'grrr): -R?,&Jr;QeWU%Q,%T/e^oNrK.:TZI-6X4620!p0J!oB?;$3e.~> -!B:&NirG%NmJr4*irTtrk(3Q>rrg(P]3DuC^&kuPqV_AVrm7(TrT=+\E4,AQ"gr9oS$_M.rrr,B -VOb]pr;QeWU%Q,%TK4prNrK.>XN:DB[FsU?!p0IuoA]kh2h1~> -!BpJTm/X-`mJsT1mJs6Gm/e@0h1>U6rrp.Q^]2\qpV$ZBdG=g)n!]*kkPkSGD"YLID!1io^ODg; -ci4@7Z$qeRpAb0h>J9dF#/+$23?#R.OT,@JK#mrmWl=#u!o3huoBcS04b*~> -!BU8Qkl@:PmJsT1mJrg;klMq,h1>U6rrp.Q^]2\qpV$ZBdG=g)nYVW5kPkSGD"YLID!1ip`f-q^ -ci4@:\r<0'p](9i>J9dF#/+'=5T@N;OT,@LON@G&ZchD/!o3huoB?;$3e.~> -!B:&NirG&9mJsT1mJr4*irU8%h1>U6rrp.Q^]2\qpV$ZBdG=g)o!,"RkPkSGD"YLID!1iqcC;3, -ci4@<_OIOQq#CBj>J9dF#/+*G7ifSIOT,@NT#gp4^!bs@!o3htoA]kh2h1~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK!Ho;rrW._rQ5'?`673@!n.,roA]kh2h1~> -!BpJTm/X-`mK*A%Zc)83WT*:H0`]@Is0r"0^D=T^rs@ajK"Sh3]RjAKf`)'HVLmCbrri>MKKPk% -^&jj*q"t'oq7h?Mk0Eu3p;N,BZ)h*?qn<-D=hak7#+l`qJ;qM@PlCc7m`GJ0^9Q_u!m1KtoBcS0 -4b*~> -!BU8Qkl@:PmK*A%Zc)83S`8l80EB7Hs0r"0^D=T^rs@ajK"Sh3]RjAKf`)'IY`RW)rr^l86([nd -!hNNiqu6fq`f-q^cMn.DbaaX'Y$&C6^&koL^A\'9T, -!B:&NirG&9mK*A%Zc)83N8ik!0*'.Gs0r"0^D=T^rs@ajK"Sh3]RjAKf`)'J\t7gErr_)L8"TOj -!hNTkqu6frc'l',cMn.Ed]&_QYZ\U8^&koL^A\'9T,=2kVpY:(rrJ\]ao;Cc_rLauaoF*dirR%V -J,~> -!BpJTm/X-`mK3I)'=78trW)ob"g(#p&m*iHmJs6Gm/f9J_1DWrrrU(N^\Rm5`d2TDHH+J7"58F& -oC)\arQB\3NSo;=qn<5dGbTW'qtpBrq7_9MkKX#8lEl+k:P-6n^:]&%jSSr_YS"e*Tm -!BU8Qkl@:PmK3I)'=78trW)ob"g(#p&m*iHmJrg;klNgE_1DWrrrU(N^\Rm5`d2TDHH+J7"5]0B -p$_ncrQpOURcAmMqn<5dGcZkFr;6KsqSeDolHT>;m(JI::kH?o^:]&%jSSr_YS"e.XGEq4rg3Wc -T&@`j!R7n0rrU":3:lA8c8pI~> -!B:&NirG&9mK3I)'=78trW)ob"g(#p&m*iHmJr4*irV.>_1DWrrrU(N^\Rm5`d2TDHH+J7"6,r^ -p@&"drRRL%VWNA\qn<5dH+'0fr;6KsqotS;m*5P=n&:i_;1cHp^:]&%jSSr_YS"e3[[4G\rg3Wc -WoV;%!S"aArrU":2tQ&1_`*)~> -!BpJTm/X-`mKQ9qnmc& -OQ?E@%`VO`KT9bI`rH)$RY&]\qu6fp^3u^ -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;So'QJXq(NWT*:H9)u,Gs1843T,Ptjrr_;?QgOMH"o5BDFd(n_ -rr`2HdJWnA"5]2g`;9K:q7_9Nkfj&1prSbDZ/PHW!mMXUrr3/aY^M\Vpmh?b[^aHZ!SWdurrT>' -9CqNOeieN~> -!BU8Qkl@:PmKEUjs1f;So'QJXq(NS`8l88cZ#Fs1843T,Ptjrr_DOU[RpV"o>c^KV.H( -rr`2HdJWnA"6,o0bPM5AqSeDolHK83q9P^f]&i\d!mMXUrr3/d\W!-+q4.Hc^;.kj!T'L0rrT>' -9(V9Jc8pI~> -!B:&NirG&9mKEUjs1f;So'QJXq(NN8ik!8-#fDs1843T,Ptjrr_M_Y4;5c"o?&uPcO*G -rr`2HdJWnA"6HPNdJEkGqTPD:mEGS6q:2R3_W^ao!mMXUrr3/g_O@LTqOIQd`lQ:%!TL3@rrT>' -8FtjB_`*)~> -!BpJTm/X-`mJm7drrR`Ojn%m?!;Z$`UHIN'!3+uF!`T/qJcE@^!fS8T^]+H8^3dWnqYp`eXEA]P -jQumKc%1r0qYp]o]mZU -!BU8Qkl@:PmJm7drrR`Ojn%m?!;Z$`UHIN'!1i-6!`K)pJcE@^!fS8T^]+H8`JV\7qYp`g[Y9F/ -kNr3NduU!TqYp]p`/C_^bPqb@`/BksnG3(cfcZ7PrrrARW/.\9T)Si:YfZnGkEt<0!i,fpoB?;$ -3e.~> -!B:&NirG&9mJm7drrR`Ojn%m?!;Z$`UHIN'!0#pt!`8rnJcE@^!fS8T^]+H8baHcUqYp`i^Qatb -lKnNQfU\u#qYp]pbaQ!-bPqbAbaP6Jo(i:efcZ7PrrrAWZ^88aT)Si@]#jsQlD -!BpJTm/X-`mKEUjs1f;So'QJXqX+F$+j8j4!3+uF!al"oJcEF`"9*Qqj1PBol]mJ"rVm&^TltXI -jQZ[Irm$4_i;3HVpq;*MkfWo/i2_6ha7oK2"61kVrqud"o=p-8]'l?m!SWd[rrMP=j8T1H!+>Ec -!S0Da~> -!BU8Qkl@:PmKEUjs1f;So'QJXqX+F$+j8j4!1i-6!abqnJcEF`"9*Qqj1PBom\-*@rVm&aX+c;( -kNW!LrmR()jSJlZq8A2mlcT52j0ac:c1q29"61kVrqud"oZ!2Z_==6!!T'KkrrMVMj8T1H!+5?^ -!R<`V~> -!B:&NirG&9mKEUjs1f;So'QJXqX+F$+j8j4!0#pt!aG_kJcEF`"9*Qqj1PBon?&V\rVm&d[[!,] -lKS -!BpJTm/X-`mKSDZWT*:HDZGNCs1\L8r+7kR\c2uXH*[4tQ$@A>jQ6CE -rPsJ[k5,)\pq;*MkfWo0r6q6_T[`o -!BU8Qkl@:PmKSDZS`8l8D#f -!B:&NirG&9mKSDZN8ik!C&j!>s1\L8r+7kR\c2udQc&^ZXd5-TlK/$K -rR@CEm/$_bqTG>:mE5G5r8"`H[GLl\rr_UGB)MN*"mE[gY1WZJrrMS]ao;D:QfJ)IL&bu[irR%V -J,~> -!BpJTm/X-`mK3I)'=72r!!)rb!hC4ChsLKDip?es!-Wqn^]+E2<(->ers%tTF*`)&k2H=CqnRWT -lh^Vapq2$Ll,ir/p;W8CXl99Z"7no[q"apnqp(RUX5TrU!Vpo\rrN%=j8T1(!.XV-!S0Da~> -!BU8Qkl@:PmK3I)'=72r!!)rb!hC4ChsLK8iopMm!-Wqn^]+E2<(->ers&%bK8GA_l/DXFqo=Yu -meZqdq88,mlcK/1pWT4e[cRMg"7no[q"apnqp_Bt[,e+a!W%MlrrN(Mj8T1(!.FJ'!R<`V~> -!B:&NirG&9mK3I)'=72r!!)rb!hC4ChsLK'io:)c!-Wqn^]+E2<(->ers&(oPF.ZBlf%jHr6Cb@ -nG<.fqTG>:m`GJ4psZ73^Zb[s"7no[q"apnr7S9@^?DHo!W&&&rrN(]j8T1(!."1r!Q-jH~> -!BpJTm/X-`mK*A%Zg[;^!<) -!BU8Qkl@:PmK*A%Zg[;^!<) -!B:&NirG&9mK*A%Zg[;^!<)5fPq8o&< -o_SRjqTG>:m`>D8nB%>sb45N,<(-?Prrr#:TVKd)W;cmbpW -!BpJTm/X-`mK!Ogdep0G!Jom[rrIB -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT1mJs6Gm/j9f7tL]Wrr_:2H2bDT#3Vk/NI%SkrVlu\NKrebrrhhlHb&qJrri,/ -I&#uIrs/JNT6[&>.HC(#"o-3'IBVe8rrJJ -!BU8Qkl@:PmJsT1mJrg;klRa_7tL]Wrr_:2H2bDT#3rFKRY\<=rVlu_R\B-)rrho"MST&arri/8 -MluEers/JSWedZf.c^1$"o6K:Mn&#RrrJnMao;C$o&TfP7f]IYklK'jJ,~> -!B:&NirG&9mJsT1mJr4*irYtU7tL]Wrr_:2H2bDT#4/pfVO+scrVlubVlfFDrrhu.RE54#rri/@ -R^hh,rs/JX[$S.6.c^1$"o?cMR_e -!BpJTm/X,umJs6Gm/jfu2hD"HrrUjrN4T#ngmNSQH*$K2rri;9Hb943rrh\aIDGaVrri,/I&-&I -rrr,9P!g)$o)AmZ[=O=Tos"GsVT?mZ!JKe"rrP+Z\b#1heieN~> -!BU8Qkl@9emJrg;klS9n2hD"HrrUjrN4T#ni2)@&LpljMrri>AMSf>JrrhbmMoY_krri/7MluEd -rrr/@SkU$ -!B:&NirG%NmJr4*irZIc2hD"HrrUjrN4T#njKP)QQbW+frri>HREGKarrhi$Ra1j-rri/?R^hh+ -rrr2HW`9nUo)Am_`gs$TpTXYu]%+q&!MJoBrrP+ZZ1HuV_`*)~> -!BpJTm/X,umJs6Gm/kE1,_?!6rrUF`T=k1/r61+PP^BY)pAY6_RYftXrrhMUJB.Wbrri)-I&-&H -rrqe3%W&`DoD]$ofV3YbfDW&U!O]J[rrJ#=jSo9,!6Xp#!S0Da~> -!BU8Qkl@9emJrg;klSj),_?!6rrUF`T=k1/rR.*rTo$>OpAY6aV3^/srrhVcNm7P!rri,6MluHd -rrqk:%sGhYoD]$oh5lF5g]"PZ!PZClrrJJMjSo9,!64Wp!R<`V~> -!B:&NirG%NmJr4*ir[$s,_?!6rrUF`T=k1/rRe!>XI-irpAY6cZ)$R/^i;U(_!QN7'rrJq]jSo9,!5\9e!Q-jH~> -!BpJTm/X,umJs6Gm/l,E%Y=Z!rrU+NYeC&Ap:Z!7!S0Da~> -!BU8Qkl@9emJrg;klTQ=%Y=Z!rrU+NYeC&ApV`)_UkubWo)AgANOJW;rrhDWP10F,rri,6MQcEd -rs#\ -!B:&NirG%NmJr4*ir[a2%Y=Z!rrU+NYeC&Aprf2,YF*9%o)AgFS%ndSrrhPfT\08?rri/?RCVe* -rs#\ -!BpJTm/X,umJs6Gm/u\Z!;D'Ea8Z4D&]DE`#OAI;SXXu7p$_n_p8EMig]%B0O,DK`rri)-I&6/K -rs6OTXOEeeT@Ef1rrqVkIuhSB\GlTZR`YR1Q.k@""8;d"m.9TFeieN~> -!BU8Qkl@9emJrg;kl^,R!;D'Ea8Z4D&]DE`#OSsVW2>Hep@&"`pTfh2g]%B4Sc8pI~> -!B:&NirG%NmJr4*ire9F!;D'Ea8Z4D&]DE`#OfEpZa#q=p[A+apq30Qg]%B8W2/;Grri/>RCVe+ -rs6OTXPL7M[GLlRrrqf-S#Fd1\GlTdZ-!"HXlAIB"8;d"iq)12_`*)~> -!BpJTm/X,umJs6Fm/e1+iIV$MrrS]/cG0AagmibkS:%pBli.(BL7[nhrr^`,OPBU2"S]HSV -!BU8Qkl@9emJrg:klM_&iIV$MrrS]/cG0Aai2;L=W/JOfli.(FPc=6.rr^o>S_s8C"SffjYO0C1 -$-jHZs7aa/Mmh^ -!B:&NirG%NmJr4)irU(uiIV$MrrS]/cG0AajKb5eZC8r2li.(JTsXFGrr_)QWT3gS"Sp0-\aRT= -$-jHZs7k'CR_S(Xrs&J[[?n>[rk&12l(uN%!O:JBrrV-Z)=leg_`*)~> -!BpJTm/X,umJs6Fm/em?bCT]8rrRs"gVNmqr6:1T[@D][puq_\qmUskrnRMVrlp+_iq`TWpUP[K -lcB)-gEMFPrrqf#Knd2+oD]!f`/]>Qke6usnpJRZ!MRg#rrU@D0(SB1eieN~> -!BU8Qkl@9emJrg:klNI;bCT]8rrRs"gVNmqrR.*u]r-h.q<7h]r4e-3rnRMVrmHt)jn\oZpq_il -mE#;/gEMFPrrql-PEWlPoD]!gbF=L'lb3 -!B:&NirG%NmJr4)irUb3bCT]8rrRs"gVNmqrRe!@`Nu&XqWRq^r5Y5QrnRMVrn*mHkkY5]prSr8 -n&YM1gEMFPrrqr7TV9NuoD]!hdANMQmCiN#opX#&!Og\CrrU@D/Fqg%_`*)~> -!BpJTm/X,umJs6Fm/fZU["88#rr`7@/`jkL#kkr^Q+rc<_>30l"6bo0k1fn=r5F2XkkY5]pUP[K -lcK//jXkNPrVm&ZXF-5Pp@J:fkd#]!`V.+I!rd<>b5VL?aQ -!BU8Qkl@9emJrg:klO0O["88#rr`7@/`jkL#ku8tTuX$jaSOut"7)PLl.c4@rQL;$lM:G_pqVck -m`GJ2jXkNPrVm&^[>LU$p[eCglar.GbP/gP!rdiMb5VLIcK5'-ZiEG`klK'jJ,~> -!B:&NirG%NmJr4)irVLH["88#rr`7@/`jkL#l)W7Xj42Achlf'"7<+fm+_OCrR.4CmJ6bbprJl7 -nB(\4jXkNPrVm&a^6u%Oq"+LhmDGEldeLWX!reD]b5VLRe`Hf4ZiED_irR%VJ,~> -!BpJTm/X,urrB%Wm/gAiSq6pcrr`.)4RU,e#j\U=V8njP`;ANn"THDg[JS_Y"T#l]V="*Y"S]EQ -VX;P+"7A9Xqu$Hur6q9`T@Ef2rs&GQTm -!BU8Qkl@9errAVKklOlcSq6pcrr`.)4RU,e#jo'WYK`c%bP^;u"3c\:qqM,Rqo4Ptn+ltdpqVck -n&kY4mQ=hQr;R!!fW'b-g&:RC#6*AXLo];0_Z'XtnB1b3[*.S2!hKBmo'$2#3e.~> -!B:&NirG%NrrA#:irW0[Sq6pcrr`.)4RU,e#k,Nq\^R[OdJVr&"4N^Xr7h5SqotS?nbN1fprJl7 -n]Lk6mQ=hQr;R!!h6`NVhYm*H#6*MgQaYfN_Z'Y-o#gt5^ -!BpJTm/X,urrB%Wm/h,)LOoKMrr_pf9_H@(#i2&![*+Pcao'up"7`";gY2Z1pU>LNnbN1fp:5RH -lHB20oh8'PqYp`ma-(hOiUd'Qp;N)BZKT7,!KH'\rrK7=jo5C;!,_;o!S0Da~> -!BU8Qkl@9errAVKklPW#LOoKMrr_pf9_H@(#iV_>^!WC7ci)]""7rOVhqJ)5pqM]ooD/ChpV;Zh -m*#D2oh8'PqYp`nc(9j%jR`BTpWK%c]BdE8!Li,mrrKRMjo5C;!,M/i!R<`V~> -!B:&NirG%NrrA#:irWopLOoKMrr_pf9_H@(#j&C\`R_#^ec">("8'!oj4aM9q8\o;o_JLiprJl5 -n&t_5oh8'PqYp`oe#JkOkk"fXpsQ+1_sPDB!N5/(rrKm]jo5C;!,;#a!Q-jH~> -!BpJTm/X,urrB%Wm/i%CCOuN2rr_[O?MhbB$2i&+L;_;oMpM@Trr^c%VY/[C"SApFZM"%n"S]KT -UZfr%"8cCemeHecmC@pu^%_-u"mN=BNl:Y3rrJP=b5VLG^ubRtCB0.\m/bd$J,~> -!BU8Qkl@9errAVKklQP=COuN2rr_[O?MhbB$2r>?PKVCAR+2,grr^r8YkHfN"SK<^]Cu(#"Sfil -Xm=42"8cCemeHecn%k3G`;&s("m`d[S'1QHrrJqLb5VLPa6!=&CB0(ZklK'jJ,~> -!B:&NirG%NrrA#:irXc3COuN2rr_[O?MhbB$2rMQU!_JgV:tq%rr_,K](aqY"ST^"`:s*-"Sp3/ -\*_E>"8cCemeHecn]@Gmbk^l1"n'=!VpY:[rrK@]b5VLYcK5'-CB/qVirR%VJ,~> -!BpJTm/X,urrB%Wm/j!^:4`Gkrr_@7ErO,Z$1ti[Pg[[.OOa?]rr`&!Ia-RG"RrF=](l+$"SfWX -U$']#"9* -!BU8Qkl@9errAVKklRIW:4`Gkrr_@7ErO,Z#kl/rT\.SSS_DWo"8TEbdb4X'o!=4jq>($nq88,l -lHT>2rc0UPpAY -!B:&NirG%NrrA#:irY\M:4`Gkrr_@7ErO,Z#kuN4XPMF#WSZ2*"8Ta%f\-9-o=^R7qYC-oq9,58 -m*5P4rc0UPpAY -!BpJTm/X,urrB%Wm/jp#14fJPrrUq!LWBE#kG`a(iPU55gX6$'iJO#ig&D3@U4'lTq>UTm]mZO8 -c2Rj#,2;ej#5m#GH(<4Wo`#*g`K,MRkfj&-Z+eB\!OTK#rrOqU]^kFjeieN~> -!BU8Qkl@9errAVKklSBq14fJPrrUq!LWBE#lEc;NjNUTn`/L_\ -c2Rj#,2;ej#6!8WLo8c"o`#*hbaa[(lHK8/]#Dhl!PH>3rrOqU\antcc8pI~> -!B:&NirG%NrrA#:irZRf14fJPrrUq!LWBE#m(A[rkL#j'j3dl/kbPEPg&D3D\!kY@q>UTobaPs* -c2Rj#,2;ej#6!DfQa5?Bo`#*id\rYQmEGS2_Tg7'!Q<1CrrOqU[.<5X_`*)~> -!BpJTm/X-`rrBjOrrB%Wm/kl>'nQD4rrUIaSB:d;rmd?b\a7"YSDhcn"T?#\^AZab"Ql5*aSkr7 -"Sof]T&n8t!h:1SoD]$ibEmLOg&:RC"mN@DNl:V:rrKg -!BU8Qkl@:PrrBjOrrAVKklT<6'nQD4rrUIaSB:d;rn=*+_=,=$VrZ/'"T?8r`VnKi"R2hFcMdS= -"T$,sWT_Y-!h:1SoD]$jdA)N%h>['H"m`g]R`b?MrrL'Lb5VLV^ubRt'`c_RklK'jJ,~> -!B:&NirG&9rrBjOrrA#:ir[L+'nQD4rrUIaSB:d;rnafIamdNDZKTU6"T?Q4c2H>q"RE@aec#=D -"T$B4[-Q$;!h:1SoD]$jf<1IOir8TM"n'=!VpY7brrL?]b5VL^aQ -!BpJTm/X-`rrE,8_uB_9iU$a5"p+ILs3puL_@`rnrsAJWGrrT>8_X[X0o"^67YiPHV#6!/JH(WXcdf0?iVTSo>\[LZ#"8;g#lgjEDeieN~> -!BU8Qkl@:PrrE,8_uB_-iTUI-"Te@Ks3puL_@`rnrsAMCPFBnj^P]/Xb5VS3U6t)qrr_;TPLTC- -"T$/uW92G+!j3-Pnc&daa-r!ukOecYrnOT2WnRF"rrLHMb5VLY^?5FtpAkH\o'$2#3e.~> -!B:&NirG&9rrE,8_uB^qiSt%!"Te@Ks3puL_@`rnrsAPKTVpE7a-jF'b5VS5Y,1C8rr_GdU"];A -"T-K6Zg#g9!j3-Pnc&dccDR/KlLb)\rnt8P[GLl1rrLZ]b5VLa`od:'pAkHVo&Bbg2h1~> -!BpJTm/X-`rrN07^r66QWSm.F*rt&Hs4%&MR1[B\rsA(sH_90bY^<>7`r?.bIBWFurr^r7Mq7\' -"T#ucS)Vfp!lP\=n,ERU[=a7HmI^D^p;W2CZ00X:!S*X]rrKa=k5PM;!$Cau!S0Da~> -!BU8Qkl@:PrrN07^r66QS`&`6*WXrGs4%&MR1[B\rsA/)M5oS,\V[W[`r?.gN4A]9rr_)HR+h?8 -"T-<$VWH2)!lP\=n,ERW^6+\tn+?V`pWT.d]'@fF!SO -!B:&NirG&9rrN07^r66QN8W^t*<=iFs4%&MR1[B\rsA53R'l&J_O/"*`r?.mR_ejQrr_8YV;M(J -"T-Q9Z09R7!lP\=n,ERZ`h0!JnauhbpsZ43_sGnQ!T(*(rrL<]k5PM;!$1Ui!Q-jH~> -!BpJTm/X-`rrW8:'Ys;>rW)os"ggGu&m+/QrrB%Vm/f6I^4H=8rr`1:.GN)H$/D(uZL7+[HEZeT -rr_niK%ATS"THi*P25p5"T-)eRc)Tn"5>8Br9sXirnjc(P/[+drrqYoJ<%P?fDbm1NlqA&^9Qi# -!knXona-A.4b*~> -!BU8Qkl@:PrrW8:'Ys;>rW)os"ggGu&m+/QrrAVJklNgE^4H=8rr`1:.GN)H$/hb>]C>9rM7E)n -rr_qtOP8=d"4rg0iVLR"p@S@gm(A@Ib4aHe!T]`mrrL*Mk5PLs -!''N5!R<`V~> -!B:&NirG&9rrW8:'Ys;>rW)os"ggGu&m+/QrrA#9irV+=^4H=8rr`1:.GN)H$08F\_t*?2R)/C3 -rr_u*T&80""5KZOjnSiYr6_(?kL';3gF7% -!BpJTm/X-`rr`?%^_FTSrr<&trrkcpnFD,jiVrnWi9^SI!1e]@fDbsB7n<'orsJYFMhf:IkbWX6 -o=t;-g4Z0jf`)*QbCc2Bq#:Ko`IXE6df0F=7n<(9rs&DNTm<0Tqt9snrRdiiT@NnorrMM=b5VLX -YNGidSH)a]m/bd$J,~> -!BU8Qkl@:Prr`?%^_FTSrr<&trrkcpnFD,jiVrnKi9:;D!1e]@fDbsB7n<'orsJ\MR$>ejl`Z2Z -otUM/hNFr3f`)*Rd?16eq#:KpbE&IZdf0F=7n<(9rs>X,*\(qt9snrnOW3WnRF*rrMSMb5VL_ -\E -!B:&NirG&9rr`?%^_FTSrr<&trrkcpnFD,jiVrn:i8Xl;!1e]@fDbsB7n<'orsJ\SV4uE7mCAY( -p:pV0ih3aQf`)*Rf:T82q#:Kpd[dT(df0F=7n<(9rs&GY[[4;Rr:U'oro(>Q[,1c8rrMY]b5VLf -_<1b!SH)UYirR%VJ,~> -!BpJTm/X-`rriE&s1f>ao)A[iq>UKh#iYd`WSm.FG5ur?s4I>RgF7% -!BU8Qkl@:PrriE&s1f>ao)A[iq>UKh#iYd`S`&`6FT?`=s4I>RgF7%_t^nE -"8f`hc.Dsur6()'o(`4fr6:=tiR@f/r,*t -!B:&NirG&9rriE&s1f>ao)A[iq>UKh#iYd`N8W^tEWCE:s4I>RgF7% -!BpJTm/X-`rr<&urrR`Op%/1`!;c]soS6)urrB%Vm/iXT=+UD)rrTnOREtm?j/%(&l2TS,JAV,l -rr_ADPNg^!"T?;bVnQ/'jg!gsn>l2LqW^Pm]Jjn/QVlEl)$_t;gc!Hn4]rrL'=k5PKa -!1< -!BU8Qkl@:Prr<&urrR`Op%/1`!;c]soS6)urrAVJklR+M=+UD)rrTnOREtm?k-'WKli5q>Nl_(, -rr_JSTBt20"THT#YO;2c"T?W.U#=E"!gsn>l2LqY`gMjukk+lYm(JFJanFTk!JL -!B:&NirG&9rr<&urrR`Op%/1`!;c]soS6)urrA#9irY>C=+UD)rrTnOREtm?l+*1qmf2CPS^72C -rr_ScX7"U>"THi9\a]Co"T?iBXlRt2!gsn>l2LqZcDI,Klh(2\n&:iqd.cDs!L3K)rrLN]k5PKa -!0Qg3!Q-jH~> -!BpJTm/X-`rriE&s1f>ao)A[iqu?Zr!>aGKrrB%Vm/jct1kG\\rrST*^ -!BU8Qkl@:PrriE&s1f>ao)A[iqu?Zr!>aGKrrAVJklS6m1kG\\rrST*^ -!B:&NirG&9rriE&s1f>ao)A[iqu?Zr!>aGKrrA#9irZFb1kG\\rrST*^ -[JpC/d$_rPfDc!LaI0a5q#:KqeY'#(eGfTa(n'Re"ms:#UW`6$rs&J]\!OJYrSdbWSasu(!Rn^D -rrP"WYjp`S_`*)~> -!BpJTm/X-`rr`?%^_FTSrr<&qrrVbD4lQD@WSm.Ff`2V8s4mVVr,*t1;Z"SK*JYOhPh"T?MuP1eCc"5>8Br9+(arnXT$PK3Cirrr/;OaXIrj8T.:jidZ)`N&)# -!YGFcna-A.4b*~> -!BU8Qkl@:Prr`?%^_FTSrr<&qrrVbD4lQD@S`&`6eGp24s4mVVr,*t -!B:&NirG&9rr`?%^_FTSrr<&qrrVbD4lQD@N8W^tcN"Q.s4mVVr,*t -!BpJTm/X-`rrW8:'Ys5"-$fe+0VrdsU`IsE*riQ2& -e:FIgf)GmDY'[PLq#:Kqb_M>5f)GjA7n<(1rs&DMTR!*Uqt9smlEu2%_Y!!j!Ku9^rrL*=kPkVN -!"AAa!S0Da~> -!BU8Qkl@:PrrW8:'Ys5"-$KeRKZ0;5bb`SLNXT&CU -O0A6-rrhu'M7iTXrri>LPb$U\rr_a\8+>X?#5m,SLoAo%p&>3_]oST'p#c8TT&Ilm!R%k5rrVQf% -.NK^c8pI~> -!B:&NirG&9rrW8:'Ys5"-$L,-g]BfLpd\!PsXT&CZ -S[nIFrri#1R)Jdprri>RU8m2'rr_a\8+>X?#5m;bQa>HEp&>3a`LWmQp?)AUWo_G(!Re[ErrVQf% -.N9X_`*)~> -!BpJTm/X-`rrN07_!h:'!<)p$>LiW5E^8U`!3+lC!\=>oJcFX-"5>8Br71fTr6CFU^%D@!^42U. -WW*+rY^OXmf)GmAW-l2Oq#:KrcA7P4fDbsNDCO?#rs&5>Q$TC`rq??rrn4&lT%*]&rrJS=bPqU] -X69KaaoF!^m/bd$J,~> -!BU8Qkl@:PrrN07_!h:'!<)p$>LiW5E^8U`!1i$3!\=>oJcFX-"5>8Br71fTrR@C!`:j6+`JpbS -WW*(r\VnearrhktMS],`rri>MQ(6U\rr`1:.GNn_#5HN -!B:&NirG&9rrN07_!h:'!<)p$>LiW5E^8U`!0#gq!\48nJcFX-"5>8Br71fTrRn3AbkM/5baYm! -WW*(s_OB$*rrho*RE>:"rri>SUT!)%rr`1:.GNn_#5QfOR(MDXpAY?rijb>^hYl^=!O:M)rrLN] -kPkV+!%[R!!Q-jH~> -!BpJTm/X-`rrE,8nGiCds8N8&/d)qsl/DXBWSd(E:B7/@s5K+l.,e:l_AmCqY:'orm6L^ec+5$!gsY;iVs)N^PdWJjn8WWpW&GFYiY3N!Mdl^rrL'=kPkUY -!)N+O!S0Da~> -!BU8Qkl@:PrrE,8nGiCds8N8&/d)qsl/DXBS_rZ59`Ur>s5 -!B:&NirG&9rrBjOrrA#8irX0"H@c+TrrST#_Ue_pkdZtmm/R+V^R2b*UAkAqd$_oOec,d>[%,PA -q#:KrgSC_&f`)#i&XhPV"mj0uUs/E&rrql2SYja,mf*=%dEDOjdD"fD!dXicnDaPe2h1~> -!BpJTm/X,urrB%Um/idX;1\c-rr`1:.GNMT%/e>1K>7-[s6$5*Zgs^f"7Vq:g=6-*j-bM@rV6Br -rmHa`df.u#"5>8Br87MYrnXT$PfNLkrs&JVUNrEZr:0df[(FN]!Q2#%rrQ$tSFGnHeieN~> -!BU8Qkl@9errAVIklR7Q;1\c-rr`1:.GNMT%/ePCOiI.qs6?eF]_%fq"7iIThUMQ.k,"0crV- -!B:&NirG%NrrA#8irYJG;1\c-rr`1:.GNMT%/ebVT?[02s6R:a`:]`%"8&snimdu2l*-c0rV-]h>QmD!Q<.(rrLK]kPkT\!1!'6!Q-jH~> -!BpJTm/X,urrB%Um/k-)."VEZrr_a\8+>43%.UfUQdl$7s59Dr]_@lp"4`"!o@3dChirl@rqQKs -rmZpbd/Mf""7SfNnD4*Kr6h3_T$mN0rrr/ -!BU8Qkl@9errAVIklSU"."VEZrr_a\8+>43%.h5mU=oPGs5U#9_t]]#"58j>p!j!Eih2LarqHEq -fp\8XrnIGTn4-"[]Wf;aY+fDP@B"o-B7Mn&!BrrL'MbPqUb[cdYl-ih$OklK'jJ,~> -!B:&NirG%NrrA#8irZdl."VEZrr_a\8+>43%.qT0Y290Xs6$\WbP7P+"5]WZp=0*Fk,b90rqHEq -hP[1(rnIGTn4-"[]WgpEETh#-mG"o6ZJR_e=]rrL<\bPqUi^ZYUu-igjJirR%VJ,~> -!BpJTm/X,urrB%Um/uJQ"SmWKk5PP<.;o(;rrh5RHE69/rrgrprs&5=P^B@arq??qlaDA&_=RC#!QD(^rrL!=kl1b\"9[fUm/bd$J,~> -!BU8Qkl@9errAVIkl]oI"SmWKk5PP<.;o(;rrhA`M7)[Krrh,MONRHerr`,/MpBfO"5]Q7f_5=J -g7+DXrnRMUr,*t -!B:&NirG%NrrA#8ire'="SmWKk5PP<.;o(;rrhJnR(hterrh8]T$dG%rr`,8Rafgd"6-8Th=gjO -hPd4&rnRMUr,*t.NjSnlQ"n0I%V9el/rrLQ]bPqUh_!(e#q#gfTnDaPe2h1~> -!BpJTm/X,urrB%Tm/eF2e:IY_rrTnORG7`NqoXnP_>"!0rQpL[bl*b*"6GT,kgTP6eVfI?pAY9I -OGD*Zh#@GD(r"]'"n00_J[=M4rs&JVUj8N[r;$?nc(W>\!Ptr&rrU[M+n+e!eieN~> -!BU8Qkl@9errAVHklN".e:IY_rrTnORG7`Nr6UmqaS>f8rmdF&df#C0"6c8HlI5b8fpJ8apAY9M -S<_S&h#@GD(r"]'"nBQuO1a`Nrs&JZY)'%/rV?Hoe#^am!Q_b6rrU[M+n+Xrc8pI~> -!B:&NirG%NrrA#7irU>'e:IY_rrTnORG7`Nr77d=chRP?rn=6Ff_q$6"7)ncmF2(;hPI./pAY9R -WM8&Eh#@GD(r"]'"nTs6S]'mgrs&J^\ -!BpJTm/X,urrB%Tm/ffYX+C<7rrST*^>/_tn$RS2f)G^Lqo=DPec([1"TH>e[JJDQ"TH`%PMPs4 -"PAllbl-At!koM>fDc$:Z@RnIn+QbbprJYIYN5T\!S3[^rrKs=kl1^b!(cSG!S0Da~> -!BU8Qkl@9errAVHklO?TX+C<7rrST*^>/_sn\'jVgA_-Pr6:CqfoQ.9rlU,3qpYQIe[Pj(n'"U"mNX[Qc8Lgrrr5DT8U5Bqu6]OUs&c=aLCC5!il;kn*'ku3e.~> -!B:&NirG%NrrA#7irVXLX+C<7rrST*^>/_so>R0%hurm@.QqpYQIg7bS/pAY9S -WhJ&Dh>[Pj(n'"U"mj0uUs/H(rrr5KX.$liqu6]SYfm%IcbScE!il;in)FGd2h1~> -!BpJTm/X,urrB%Tm/h2+It@Xbrr`1:.GN\Y"Po_tXm5oc"Sf`]RG<`#"7`%;f[Kj'rQ9b[iqEBT -g6765rSIPVgF7% -!BU8Qkl@9errAVHklP]%It@Xbrr`1:.GN\Y"Q?D<\*X+o"Sp&sUu712"7rRVh:)B,rm6e'jnA]W -hOg"YrSIPVgF7% -!B:&NirG%NrrA#7irWrqIt@Xbrr`1:.GN\Y"Qd%Y_!h:&"T$B5YiL`B"8'!oiR@f0rmm^Fkk>#Z -iiAa'rSIPVgF7% -!BpJTm/X,urrB%Tm/idX:P&Q3rr_a\8+>F9"o?;uL;Wfcrrhu&I%fVVrr^i(U[ln6"T65hS`]YG -"P]/oao(&r"7SfNnC@OCqpD!\T@3Z3rs8VYV0STZr8rjZrrKp=kl1][!1`NF!S0Da~> -!BU8Qkl@9errAVHklR7Q:P&Q3rr_a\8+>F9"oHT4Pf`b#rri#0MQGurrr_#;Xn:*B"T?N(W9O$U -"Q,l8ci)c$"7SfNnC@OCr77j'Wn71Crs8V]YDB+.rTTWkrrL0Mkl1][!1E -!B:&NirG%NrrA#7irYJG:P&Q3rr_a\8+>F9"oHiHU!WW7rri&9RC;C9rr_/M\+S5M"T?c=Zg@Dc -"QQSVec"D*"7SfNnC@OCr7eTF[+tTRrs8Va\X0VWrTg9&rrLE]kl1][!1!$5!Q-jH~> -!BpJTm/X,umJs6Cm/k?/++aIYrr_")DZ&Gm"n&[DRb7W=rri)(GH0t^rri/'I)l68rri57IA6$# -rrh/DHG]X=rr`1:.GN>O#56*%H`Gp$p\tElach+KJBRrn^Tcr%!ZqE`n*L/,4b*~> -!BU8Qkl@9emJrg7klSg(++aIYrr_")DZ&Gm"Rs$]VVM.M"SfZbZgEGG"8]Wfc-lUpqo=YtmIpP_ -iM)1Mro!eYr,*t -!B:&NirG%NmJr4&ir[!r++aIYrr_")DZ&Gm"S0L"Z/PZ]"Sp$&^$gXS"8g$*e'e7!r6Cb?n+Qba -jfOorro!eYr,*t -!BpJTm/X,umJs6Cm/uV[!UbO=mf*@*&XhSW"P]MpYNu/e"QlM(\G:^U"TRVGP3:9n"SfTVVsa9Y -"Q,St`;AKm!gsY;dJjC=]nq?Jkk>#[m'(Mf_"5kO!PGc'rr_Zi$0q!H!S0Da~> -!BU8Qkl@9emJrg7kl^&S!UbO=mf*@*&XhSW"Q-28\F0=q"R3(D_"rW^"TR_VT'Fc("SoolZ1.Je -"QH2;bP^;u!gsY;dJjC?`0QLtlLt5]m^Rk8a7R[W!Q2S7rr_Zi$0L^@!R<`V~> -!B:&NirG%NmJr4&ire3G!UbO=mf*@*&XhSW"QQkV_=7F'"RER`aSLJf"TReeWpJ16"T$9/]CP[q -"QlnYdJVr&!gsY;dJjC@bG:`JmIpP`nA16_cLoK_!R&FGrr_Zi$/k:4!Q-jH~> -!BpJTm/X,umJs6Bm/f'D^OcFRrrSDs_W(S!q8S8I`VKK4"PfGq^%[*XrVm$"`I,&hdf0ID[ -!BU8Qkl@9emJrg6klNU?^OcFRrrSDs_W(S!qTP7jbPM2;"Q6,9`;"o`rVm$"bDX%1df0IE^59;i -pAY9VVN/apiVrtr&X:WA"mERYR)\^lrs/7Shlhj6fDO%r!PuM7rrTq81@FB-c8pI~> -!B:&NirG%NmJr4%irUq8^OcFRrrSDs_W(S!qpV@9de`qB"QZhWbP6YgrVm$"d[J,Odf0IF`gFO5 -pAY9ZZ(0/;iVrtr&X:WA"ma'sV9SZ-rs/:cj11M^h#,S"!Qi@GrrTq81%+'&_`*)~> -!BpJTm/X,umJs6Bm/gVpO+I?$rr`(//`#Ie"mrRASD*uArrrDMO+kXOJcGQG"7i.=f?sU$o< -!BU8Qkl@9emJrg6klP/kO+I?$rr`(//`#Ie"RipZVr%CP"od,DPKj#Vs7uZso;n)0dJj@B\V[ok -pAY9YW/S^lir9,:/S=h)rs&J[Z&,1#q"t'tqh5"Lq9P^l\*)6?!PcG7rrS5]?LI%Yc8pI~> -!B:&NirG%NmJr4%irWEbO+I?$rr`(//`#Ie"S'?sZJti_"od;UT[Wgis7uZsosULNdJj@C_O/78 -pAY9\Z^]59ir9,:/S=h)rs&J_]9o_Nq>:0uqiq-\qUM[9_!9DK!QW:GrrS5]>OLMP_`*)~> -!BpJTm/X,umJs6Bm/i7I?\/7Jrr_LK;"NfK"od2FI'N);rrr;@L6'a]JcGEC"4r4#o$RI?n>goF -p\+Uik+R48pZ)8Uo2%U7c2S"Fd@GQUe,94F!rd3=rVm&g\:TURo%*gA[(GT&!abqemd1&+4b*~> -!BU8Qkl@9emJrg6klQ_B?\/7Jrr_LK;"NcJ"Pou5]'oUt"oQZ1S(@Ris7QBogl\]0dJj@?[#2Wn -pAY9[X,Fmjj8T5Q:d+'frs&AOW/.M,r;HWqJc,NOn%b$Oa7Rs_!PH>7rrQO-MXK^0c8pI~> -!B:&NirG%NmJr4%irXu9?\/7Jrr_LK;"NcJ"QH_T_t!^*"oQlDW8%<&s7QBoi1ILOdJj@A^7!%: -pAY9][[PD8j8T5Q:d+'frs&DUZ^8)Ur;HWqOo54_n]7;tcLocg!Q<1GrrQO-L[O1'_`*)~> -!BpJTm/X-`mJsT1mJs6Bm/jfu/qO&orr^RiIJr=."o-#kMT>Pkrri)1J!o&Bs7-*lqQtXhrmC`K -mA>9Eq=agkkbEO9p>l5UrI#g7bPqnB`fkeMhZ!Otq>:0rrnOArSC.8frrKC=l2Lf;!4hOb!S0Da~> -!BU8Qkl@:PmJsT1mJrg6klS9n/qO&orr^RiIJr=."o6?,Qd,C*rri,9NMPH_s7-*lqn.j2rmC`K -n$%_gqY'pll`Q,\pZ2>VrI#g7bPqnCbb'd"irB%3qYL3qi38$8f)45$!P687rrOeQ[dNA\c8pI~> -!B:&NirG&9mJsT1mJr4%irZIc/qO&orr^RiIJr=."o?W@Uso5>rri/AS?V%)s7-*lqo"rOrmC`K -n[b14qY'plmC8S*puMGWrI#g7bPqnDe#SnMjo>@Fqtg -!BpJTm/X-`mK! -!BU8Qkl@:PmK!%$"U"@Is7QBnWYVVsrrh`!M5fG2rrhr*MQQ)ns6]ggl(+C0d/O78 -X,P-tpAY9_Y_p0gjSo:](95LV#4TNrOM-JDq#:Nnd%H9)k1fn:\B!n7"7lTuipQ%3c8pI~> -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WSHkB0*&e=s7cNqrI#g7kl1hcf:%)nmem(flDT$2mXbE'rri>@I'WRp -rrhGRJ]I]^rrh_gHa<8)rr^RiIJq7e"luq/M88ZUrrqf#K8IA6hZ!VX_s77'^]6%Tm/bd$J,~> -!BU8Qkl@:PmK*A%Zc)83S_WH2/c`\ -!B:&NirG&9mK*A%Zc)83N83Fp/HES;s7cNqrI#g7kPk\CZ'rW%r;Qog]U6M*JcG$8"THl=`;@p] -"RE@ae,B"?"S'-l`:`6l"4&* -!BpJTm/X-`mK3I)'=78trW)i`!o"Uni9gTEh!G/P!/c@-q#:Hf:d+(-rrr/6L5X1Nr;QoYSp\'? -JcFm4"7i1=f$F@!i0T,@rV$6on#Ul?n`KiRkrhl7a8Z?sbGTZQb4tc3#6*DTH(34ZiVrqY`TmI) -M?%,Qm/bd$J,~> -!BU8Qkl@:PmK3I)'=78trW)i`!o"Uni9gT9h!"lJ!/c@-q#:Hf:d+(-rrr2>PF0\nr;Qo\WJeRc -JcFm4"8&^XgX#m&jJ%gbrq??pn[44aoB-&Tkrhl7a8Z@,d'8G%d/!G9"lQV@VUk\(rrKIMlMgpC -!+>3Y!R<`V~> -!B:&NirG&9mK3I)'=78trW)i`!o"Uni9gT(guAHB!/c@-q#:Hf:d+(-rrr5FTr$<;r;Qo`[$o)1 -JcFm4"80-qhp;<*kH:K0rq??po"LL-o]H/Ukrhl7a8Z@9f".6Of(o(?"m!7]Z.o38rrKg]lMgpC -!+,'Q!Q-jH~> -!BpJTm/X-`mK"RrU@XmbHQ"8QO\h8oU&MWOm8d%#BTebo4B"o6<+I&uAgrrK%= -lMgob!0us=!S0Da~> -!BU8Qkl@:PmK0c\;@ZakPkY[AhDi[rs>%Us81?ELof;.q#:Nod%Q?*k2ZIBZ-MY7 -!`T/`mHFYs3e.~> -!B:&NirG&9mKjJo!0p&>0e_3i"/kPkY[AhDi[rs>Les8:TVQaYcLq#:Noeub@Tl/VdE]%-*G -!`T/\mGe5b2h1~> -!BpJTm/X-`mKEUjs1f;So'QJXr9a[/*p*I\mJs6Am/k<.*eF@frrTqHPjA>QrR7*VZ1e+q"oZZ& -MTu*Ns53hZqR(Uirm1THf8P[>p&>0cZ$WM -!BU8Qkl@:PmKEUjs1f;So'QJXr9a[/*p*I\mJrg5klSd'*eF@frrTqHPjA>Qrn*s!](c.&"oZl9 -QdYh`s53hYqn7g2cMn"$R@2e%rrhu*M6ua7rrSDr^WHKVS)jPJ"np03MRDI -!B:&NirG&9mKEUjs1f;So'QJXr9a[/*p*I\mJr4$irZsq*eF@frrTqHPjA>QrnX`A_YF'/"o[)L -UtGWss53hYqo+oOcMn")VP`8Drri#4R(`%QrrSDr^WHKVW9=-Z"o$HFRD.hXrrqr7T;0[(k5PIl -fBWA;*WWtBirR%VJ,~> -!BpJTm/X-`mJm7drrR`Ojn%m?!;u6e7[KM36Qcrrhu$H`-2nrr^+NH2>_a!L)=8rrqf%LP*&"q#:Qth5>Oe -d/3)-!M[j)rr_B`%dWNL!S0Da~> -!BU8Qkl@:PmJm7drrR`Ojn%m?!;u6e7[ -!B:&NirG&9mJm7drrR`Ojn%m?!;u6e7[ -!BpJTm/X-`mKEUjs1f;So'QJXrU'fl/aVm*i9gTEg[,&,!3^tRrr3)W3(rQ(rrhAZH)BX!rrhu' -I%K;Js4@8RrlKSlps8sCrlg(^i:[*Qp:,LGl083Ml:X+nbl7^.g\:^OjKO,n_".:#"o6?,H`Z5m -rrJb=li.$i!'fi;!S0Da~> -!BU8Qkl@:PmKEUjs1f;So'QJXrU'fl/aVm*i9gT9gZ\c'!3^tRrr3)W3(rQ(rrhJgLp6%=rri#0 -MlGcgs472Pc]#C0ci4.IdZU?cp&>0h^l#;]l2LkN9/tePrrJeMp\tE[\W*&uoD&=hqU)!o[H6`S -!NO]9rrTA(54%M7c8pI~> -!B:&NirG&9mKEUjs1f;So'QJXrU'fl/aVm*i9gT(gZ&>t!3^tRrr3)W3(rQ(rrhStQb)GYrri&9 -R^D:0s472PeXF>Mci4.IfV#A0p&>0iaI0R+l2LkN9/tePrrK4]p\tE^_4.@Jp%\OjqU_j;^?Fn_ -!OUVIrrTA(4RD)/_`*)~> -!BpJTm/X-`mK)Emd:)5mJs6@m/hG2Ee48jrr]/7OT+_K"oQT+K"^gRrrh_k -HE$1\s3puMoV[5dcMn%H^Nc4-p&>0h]6p=7lMgtcO;=b=rrJJ=p&>6pfqs%^bP:l4"n&pSLq`EI -rrJY=li.$,!-[_r!S0Da~> -!BU8Qkl@:PmK)Emd:)5mJrg4klPr,Ee48jrr]/7OT+_K"oQf=OMphhrrhf! -M6lT#s3puMp9BY.cMn%H`eUDQp&>0i_MbM[lMgtcO;=b=rrJkMp&>6qh6;^1dJ -!B:&NirG&9mK)Emd:)5mJr4#irX3#Ee48jrr]/7OT+_K"oR#PT$-j)rrhl, -R(Vm=s3puMpUd!NcMn%Hc'P^"p&>0jb*od*lMgtcO;=b=rrK:]p&>6qijtJ[fD>:B"nKd.UWrH! -rrKF]li.$,!-.Ac!Q-jH~> -!BpJTm/X-`mK3I)'=72r!!)ucqZ,UC!3+`?!j2M\Jc>iE@40@hrrql!I@&F]qu6f\U3j6;JcF'r -"5Sg%m*>V6qnmoTk4S`WpqD0JjQcaIc6m&mci4$6f(/hFqTkXVU=K2;rs&JYVg=fYqsj[eRapa( -!]9t\m-Oi)4b*~> -!BU8Qkl@:PmK3I)'=72r!!)ucqZ,UC!1hm/!il;YJc>iE@40@hrrqr,N2"u(qu6f_Xbsd_JcF'r -"6#QAm`th8r5t"ul1P&Zq8J;lkN`'Lc6m&mci4$Ag[b@Kqp_L!XP3XJrrqAdM5Ac#nc&Wdg?\b? -2#s]DklK'jJ,~> -!B:&NirG&9mK3I)'=72r!!)ucqZ,UC!0#[m!iH#UJc>iE@40@hrrr#6R]bKGqu6fb\!b2-JcF'r -"6H;^nBV%:r6_%Am.LA]qTPD8lK\BOc6m&mci4$Mht$dOqqA -!BpJTm/X-`mK*A%Zg[;^!;Z$_!9!8FWS?eBiroSWKDu&!-XlZ:rrh,LH`cQ/rrh)DJ%kZ.s31KG -r4RHhr6GXPj*Rrrr5BQ$]RjrVlulcGB/M -rrJG=m/I1Z"9miPm/bd$J,~> -!BU8Qkl@:PmK*A%Zg[;^!;Z$_!9!8FS_NB2hZX/SKDu&!-XlZ:rrh8[M72aHrrh5TNQ([Ds31KG -rPXT1r6G -!B:&NirG&9mK*A%Zg[;^!;Z$_!9!8FN8*@pf`VHLKDu&!-XlZ:rrhDiR(r(crrhAcSBUe[s31KG -rQL\Pr6Gme-S_qp(_;kj/6NoO0,md/O-OhXCIJpX-"0^ZYCl"oHoRRD.n`rr_o=_=[X) -!NkAJrr_iq"PN/%!Q-jH~> -!BpJTm/X-`mK!0l_h"65li.'b(6JODrrJ\=m/I7V\qYmHlM1Afm^e+-^>j0RKnFGcnGW@f -P25L)!kSFflg4`(4b*~> -!BU8Qkl@:PmK!DN.c2RqB_i(bep&>0lb)`@Yli.'b(6JODrrK(Mm/I7X_3C+tm.gShnA19Q`T;&[KnFGcnGW@f -T&K&9!kSFelfeGq3e.~> -!B:&NirG&9mK!`5g!5!sb"9+AtVt'cjqU216dJ<\>"od8SU"0'ls2b3B -o!5"Mc2RqCbF6$3p&>0md@IN(li.'b(6JODrrKI]m/I7Zae>BJn+cnko#[Q!biWkcKnFGcnGW@f -Wo`UI!kSFdlf/#`2h1~> -!BpJTm/X-`mJsT1mJs6?m/h#&IYRk)l:X+no)AmYYBukprql^!qo=DPdf+gt`;]qgJYht_rri)+ -H`?K,rri8>JsP3Yrr_+;9Bt"+!M7^'rrqGdIZD;9q>UTsh2b+ -!BU8Qkl@:PmJsT1mJrg3klPQ!IYRk)l:X+no)Aj[\;@3AqYp`rc'+[Lrdk*frr^o7YP$0?"Sfci -Zgm_g"T6K*U>YD<"5Z"1lI5b6WRg>6"m3=RS&k6srr_5G9"Ou8!kMLarr3"gjQumJIK4*JklK'j -J,~> -!B:&NirG&9mJsT1mJr4"irWfmIYRk)l:X+no)Aj]_3hUhqYp`se"E\qrdk*frr_)J\b=;J"Sg'+ -]^kaq"T6`?XlSjK"5Z"1lI5b6[+jjF"mNjmVpG&2rr_AS9Y12:!kMLarr3"skj8 -!BpJTm/X,umJs6?m/j$_6&5IB^(GYeo`#*oeX1cln,!%ep:PmDh1>UArri,%I)l62rri#%H`ci2 -rri8AKp13Wrr`+C&\ccp!MRg%rs&GSV0SHPq"t'mmSpms^';8Mmf3 -!BU8Qkl@9emJrg3klRLX6&5IB^(GYeo`#*ofqXJ=nbW7gpVVueiIV$Erri//Mp;7Grri&.M73$K -rri;HP+URtrr`+C&\ccp!NX`5rs&JXYDB"&q>:0nmSpms^';8Mmf3 -!B:&NirG%NmJr4"irY_N6&5IB^(GYeo`#*ohQNBeo(r@hprf/3jamHIrri28Ra_8\rri)7R(r:d -rri;NTW@)>rr`+C&\ccp!Og\Ers&J]\X0MPqYU9omSpms^';8Mmf3<_lhCD]kK:X(qYpU_!1`B8 -!Q-jH~> -!BpJTm/X,umJs6?m/u/F$N#_\"8?aI^\%O0otH'=bPV/9"Rr[CV<3@/]`/)rOHASJrrhqtHa328 -rri;ELQL*Srr^"KE;.r`!Mdm"rs&;ERX([ZrVlftCq'5S"h/=Js+]e7rs@_(>'Pj`GZo%Grr3)t -$3AuKm/bd$J,~> -!BU8Qkl@9emJrg3kl]W?$N#_\"8?aI^\%O0p;N/`dJWk@"S0-\YN^W<]`/)uSXeofrrhu)M7WBQ -rri>LPapLqrr^"KE;.r`!Njf2rs&>KVMMA/rVlftCq'5S"h/=Js-)gGrs@_(>'Pj`GZo%Grr3)t -$3AlHklK'jJ,~> -!B:&NirG%NmJr4"irdd3$N#_\"8?aI^\%O0pW]>.fDPLF"SBU!\a4nI]`/*"WN#4-rri#2R)8Ri -rri>RU8d&;rr^"KE;.r`!Op_Brs&ARZ'VrWrVlftCq'5S"h/=Js.SlWrs@_(>'Pj`GZo%Grr3)t -$3AZBirR%VJ,~> -!BpJTm/X,umJs6>m/ed<^Pi*ocn&8cp&>0UVg5,tq>UT^Vg>Q7JcE:\"THGiYkZHB"RrL>[J':n -"oci)Nmn!rrr_Xi/C<#K!N!rtrs/26OF=7ikAg71"D>@DK'iL9"8?;@]_fDJ]PD$Os1\OalKnW' -4b*~> -!BU8Qkl@9emJrg2klN=7^Pi*ocn&8cp&>0XZ&#UFq>UT`Z&-![JcE7["3lb7q98jAo!XCgp\"Oh -rm[7&f^AbAm8kjcfDblTd,G!0ou`e_[cHUkpV$cD_#'5^r;Qln@r&aS^'D;dA,$# -!B:&NirG%NmJr4!irUY0^Pi*ocn&8cp&>0[]9g(lq>UTc\sU>)JcE7["4WdVqTSsBoY6d4q"=Xi -rn=0Gh -!BpJTm/X,umJs6>m/h#&I#\..rJDAcpAY -!BU8Qkl@9emJrg2klPMuI#\..rJDAcpAYH%M7rW!05^:pOVM1s[^rrVgp[.h9 -!B:&NirG%NmJr4!irWclI#\..rJDAcpAY -!BpJTm/X,umJs6>m/j3d30+"@i'0Hap\tEd[XOLirVHNtrmd3b`;5&bZ2Xp]LR[\SrrhYaI(f@K -rrrDPNeu'[nG`UK5I=(;"LMAm!3#2M!S0Da~> -!BU8Qkl@9emJrg2klR^^30+"@i'0Hap\tEf^Pnl()^'SiMKp%\=o)Dq$otCR9>;uV[lKJ>p3e.~> -!B:&NirG%NmJr4!irYnS30+"@i'0Hap\tEha.'3drqZQshQ*9rqgndPrr_>VZ16$;"RrsjbPLl2 -"Q$&Og&CL@"5lC.i7e23][PX8!,MGF!G>()^'SiNPb4\noD`%%otCR9>;uVVlJho_2h1~> -!BpJTm/X,umJs6>m/u>O"RqNQ"/?WhrV6Bqh4T(qkkY5^r5skScM`=oY5\Y&]6h6hbPq_0TmjfS -o`#'GObV'Xnc&^iMADuArrK1=jo5DG]nuT8!)<=(!@Ed)^'J]XG50soH>&H4^&sN/"leh7!S0Da~> -!BU8Qkl@9emJrg2kl]cG"RqNQ"/?WhrV6BqiN%gClhUParQpjte,FpuY5\Y&_huD2bPq_2X,P*r -o`#'LSWhJ"nc&^iMADuArrKLMjo5DG]nuT8!)<=(!@Ed)^'J]XL&0f8M/SOJ^&sN/"lAP/!R<`V~> -!B:&NirG%NmJr4!irdp:"RqNQ"/?WhrV6BqjgCJimJ6bcrRRa?g&?R&Y5\Y&bF-QPbPq_5[[YS? -o`#'PWhJ&Cnc&^iMADuArrKj]jo5DG]nuT8!)<=(!@Ed)^'J]XQ29XUR!"P_^&sN/"PE#"!Q-jH~> -!BpJTm/X,umJs6=m/f6IZ',+hm8kjcq>UWoa,5Yip\FglpqVHGfRa(%rr_YWLu$5R"Qc2)`;K9- -"PT)naSbT."4/T#mG7dCX2O?($0]'[BKcb15%oHCJ,i=@^&k&A]DfMG7"91TIfYg>rP&:3rOr<, -!r]h6/NE"^!S0Da~> -!BU8Qkl@9emJrg1klNgEZ',+hm8kjcq>UWpc'O[:q"apmq8\Pih1>U*rr__dQ/Tmc"R)eEbP_#4 -"Q#f6cMd;5"4/T#mG7dC[*.e8$0]'[BKcb15%oHCJ,i=@^&k&A]DfMG7"9adIfYjArP&:3rOr<, -!r]h6/NE"Z!R<`V~> -!B:&NirG%NmJr3uirV+=Z',+hm8kjcq>UWpe"i_bq>($nqTbY6iIV$.rr_erUZKYu"RECadJWY: -"QHMTec#%<"4/T#mG7dC^ -!BpJTm/X,urrB%Nm/hJ3D3Ou%]b5;YqYp`bY^;qorqZQsoj+76,rr^Z!VtA.3"QPo%aSkc2 -"PoDr`V]6+"8?aI^#&biWl=Q/%/eedM.f'[$9i-\^$,4j!-7tN!F\b%^&h&ZE;k=f(Kp[M!!)u3 -!CHkc^&_8Ql0SN&4b*~> -!BU8Qkl@9errAVBklPu-D3Ou%]b5;YqYp]c\Vd?Aq#:Ki^5AuRJcDSH"4iL;oud:;k,"0brUg*m -iM)FWr:9jipM^bYhZ!V`bOYZAr7SK7BKcb15%ohekkG)WEr3QO@8?d8!`"5qrdOqb=o>u6!<'V4 -6NI)!!EO(%klK'jJ,~> -!B:&NirG%NrrA#1irX6$D3Ou%]b5;YqYp]e_3qXhq#:Kj`gO7!JcDSH"5BBXp<*Cu6!<'V4 -6NI)!!ENt"irR%VJ,~> -!BpJTm/X,urrB%Nm/j]r.@'o8nR`HKqu6j!esUolmeHebm&PH4l[f)1rri,#IE;E1rrh5EL!9Mf -rrh8KJAV0Rrr]tKB(=gZ!NO-5rsRSACe,cR,=lX.^$,"d!L0P\^&]@;rk8K5PkfM%rrLAsr4W.2 -rk8H)&HMdD!I^-qm/bd$J,~> -!BU8Qkl@9errAVBklS0k.@'o8nR`HKqu6j!g80_?nG*"dm^7nYm=G;3rr`),MpBHE"QH,=antZ/"25F\n_jEJZcr1D$ep\X80\6^88O0skjeZRPc4Mo!?dI&^&t -!B:&NirG%NrrA#1irZCa.@'o8nR`HKqu6j!hlrQfo(`4fn@k:'mt(M5rr`)5RaoO["QlhZfDbFB -"R!%\d/3D6"25F\n_jEJ^!cZT$ep\X80\6^88O0skjeZRPc4Mo!?dI&^&t -!BpJTm/X,urrB%Nm/uS`!8a(B"1fRdnbiCjp:l9?b5:u6"QZ8([ISnKT)SoRO-8YIrrh)>LX?%m -rrhAQJ%tgNrr_e'+1gG2!NF*9rs@GL>T=5YM7)%7li."KEVI0QETd"@s7PEOK`&Oa!<0\64_=]m -^&`Yol0SN&4b*~> -!BU8Qkl@9errAVBkl^#X!8a(B"1fRdnbiCjpVr>ad/3V<"QukD^%?mUT)SoUS=\uerr_/MQ.>L+ -"QlYB`qo<,"7]tF]&EYiZcr=H$/:qS*"H51[FtKDrrM;&pV$oQkOsc4p?&K1r4W.2rk8FsAcVeD -!I_KBklK'jJ,~> -!B:&NirG%NrrA#1ire0K!8a(B"1fRdnbiCjps,M0f)5=C"R#5= -"R37^cMI/4"7]tF]&EYi][QcX$/:qS*"H51[FtKDrrM;&pV$oQkP(ADpZ\r:r4W.2rk8FsAcVeD -!I_<=irR%VJ,~> -!BpJTm/X,urrB%Mm/g)aPaVORnR`lSr;Qo]W-P/rp\tBMQ[ljGJcD5>"THAfZMDWB"P8Zke,K"> -"Qc8(^%h4!"1fRdn`0WWW5nr -!BU8Qkl@9errAVAklOT[PaVORnR`lSr;Qo`ZA>[Ep\tBQUQ3@iJcD5>"THT&]DBYL"5KB4f^o+G -kc0T[q=FUg\fYPSj8TLmc2[guO'E/7>asL/rrHrFq7[0E>IL;YLPV=fCAbdG!<0_2!<0\5?J=Z. -!R<`V~> -!B:&NirG%NrrA#0irVmSPaVORnR`lSr;Qoc]U-.kp\tBUY+"THi<_tqLT"5p)Qh=LXL -la<2)q=FUg\fYPSj8TM"e,TI&O'E/7>asL/rrHrFq7[0E?,*S+QC"GFCAbdG!<0_2!<0\5?I\6" -!Q-jH~> -!BpJTm/X,urrB%Mm/iOQ8uDUjoZk;Fq>UQ.+(k'Brrr>GP(:.8q#:Nrc]!Y$r.4m7rr_heK%.pB -"THl.Nn`[XtrrV7X^&,MJ]h,!8`dd^]rr?a2 -^A\-2^&S03^&V!nm/bd$J,~> -!BU8Qkl@9errAVAklR%K8uDUjoZk;Fq>UQ.+(k'BrrrANSrU\[q#:NseUQhcGB/Brs+s?>T=5YO5&Um!p3@nqn<9J9!$+XNVEGP!,2>F -rW)o2!!)u3!)MhC!R<`V~> -!B:&NirG%NrrA#0irY8A8uDUjoZk;Fq>UQ.+(k'BrrrASWh%<*q#:Nsg8:Upr.4m7rr_r(T&.Qg -"5TfOi:HsOmC/P+q"4RgnR`lSq>UQhcGB/Brs,6K>T=5YO5&Um!pF -rW)o2!!)u3!)Db -!BpJTm/X-`rrBjOrrB%Mm/tuB$21@u#Ol\RKnFGcnGW@hnR`lSrr3/l\:9ajrV6Brqo+5NeGb%! -PQ(a=L7RbSrri>JLQ^E`rrhV`Ha`V>rr]hSB(>j"#Ol\RKnFGcnFlkeqitCs&kJMHjSoV[j3bWC -RYc66G"fLG^';/>a8c2(LAh,QV3:Ga!Jug"m/bd$J,~> -!BU8Qkl@:PrrBjOrrAVAkl]E:$21@u#Ol\RKnFGcnGW@hnR`lSrr3/n^l>#RqK?S(m$($hi`6`jVb1 -L5:CU])B>I\k:*Es6GmIrrJsZo=b6^Ms0C+c8pI~> -!B:&NirG&9rrBjOrrA#0irdU/$21@u#Ol\RKnFGcnGW@hnR`lSrr3/oaIB9crV6Bqr6h7RqNBS(m$($hro?c+gNZ -QC!P+])B>I\kL -!BpJTm/X-`rrE,8_uB_9f'NMn!4Aj,!nCDarOrfR=OmHO^_:>Ms8UrLHE66'rri&,I@T2Gs,[0_ -qmh'frQ5'BrQKt\ht-jNm&59E\ldMYrs-SW&P%r;Vo\0'*q\I=^T -!BU8Qkl@:PrrE,8_uB_-f'*5i!4Aj,!nCDarOrfR=OmHO^_:>Ms8V)[M6uRBrri)5Ml5Tds,[0_ -r5"90rQ5'BrmHt'iq*0Qm]q\^p%A=jnR`HMs8UVO])B>E\ldMYrs-SW&P%r;Z-MY7*qeXF`jVb1 -L5D:r\B*=dq#CB`E-$_oF)\Ois8V8Lr;Qe%[.V-6ZmOu#!R<`V~> -!B:&NirG&9rrE,8_uB^qf&Hfb!4Aj,!nCDarOrfR=OmHO^_:>Ms8V2hR(hq]rri,>R^2(,s,[0_ -r5kAOrQ5'Brn*mGk4ATUn@P(+p@\FknR`HMs8UVO])B>E\ldMYrs-SW&P%r;]@?-G*qngPc+gNY -QC+MT_9^s'q#CB`E-$_oF)\e%s8VA\r;Qe%[.V-6ZmOtr!Q-jH~> -!BpJTm/X-`rrN07^r66QWRgGaGYeip\4[jm]Ll6k^iblrr_SS -MVlMT"T?DnRH!i<"R`=;Z1@Sf"hYFtlVtRp^&kuImf!.hjG,-3LZJI7!N4$0rt"_\d(ZTMM0F9) -T!6)\jnJHJ$M;W[o`+]8jT",!r;Qij=L@h:!jj.kkNr<$4b*~> -!BU8Qkl@:PrrN07^r66QS_!$,F9$'VrrVUf^&,MP]i=Up"hYFtlVtRp^&kuImf!.hjG,-3LZJI7!O9r@rt"eae]"qmQA16a -WO^+&kkOiN$M;W[o`+`GkPsS4r;Qij=L@h:!jj.ikNN#m3e.~> -!B:&NirG&9rrN07^r66QN7R"jE<'aSrrVUf^&,MP]i=8kbq"Odko"^X(m=G:qrr_bo -Uuobu"T?lBYit]Y"S09o_Y*U%"hYFtlVtRp^&kuImf!.hjG,-3LZJI7!P6hPrt"hegWdI;UQq4D -[)()ElhU5R$M;W[o`+cWlMp"Gr;Qij=L@h:!jj.fkMlT\2h1~> -!BpJTm/X-`rrW8:'Ys;>rW)osquG[T!3+Q:!k\LPX8`3:\,!`E[kgA6m'1o-f`(XF"QZ>)ZLEGF -L]7J&J>i.^rri8a]]\Y_eieN~> -!BU8Qkl@:PrrW8:'Ys;>rW)osquG[T!1h^*!kA:MX8`3:\,!`D[kgA6m^e:Rh"LaNkH0WRnq$gr -rr^c2ZM)B>"T6H'W9EjQ"S0$Y\+97m"6W!,\,!`D[qu*DR7@j%a8>l;Yg<1G&,#&7`O2P-L5D=t -\]NOgpuhY[b+o!nU&4ilpLA!Oqn<3GCD[&^kNN#m3e.~> -!B:&NirG&9rrW8:'Ys;>rW)osquG[T!0#Lh!jhqHX8`3:\,!`D[kgA6nA:U!iV*9SlF32!oR[$t -rr^uF]_BMI"T6Z;Zg75_"S9Er_"7:""6W!,\,!`D[qu*DR7@j%a8>l;]%-ZW&,,5@beC?WQ'eGU -_9h')q<.b\dB -!BpJTm/X-`rr`?%^_FTSrr<&trr<&SrrB%Lm/uYk!7%_H!U"Is^'/)aRXDF.pAY9KQ[lgEJcCE' -"S]$Hb5TK^"T-#aU$;1K"S/gEX7#`^!T[hd^'/J.,!2+fq>V#&_VrkUX-n`dH]4Q#_UR`ChuUl`Dd%CAO)7p9\,[B3kNr<$4b*~> -!BU8Qkl@:Prr`?%^_FTSrr<&trr<&SrrAV@kl^)c!7%_H!U"Is^'/)eVM`"SpAY9OUQ3=gJcCE' -"8K?ad)Z.hqoF_slgt,Zo=BdcnFuq`jCS)""`T)<4-od>rt)EVjOM5WV3QakRAma=g$/=irri:a -inC7)rs[q+>'PjaDH:\c!#Xn^klK'jJ,~> -!B:&NirG&9rr`?%^_FTSrr<&trr<&SrrA#/ire6V!7%_H!U"Is^'/)iZ'iN"pAY9TY+3c4JcCE' -"8Ta$f#Rdnr6Lk@mdpG]otm*1o(W.bjCS)""`T)<4-od>rt)cfkh=7pYbIDMVR44ehWt!prri:n -k2*B=rs[q+>'PjaDcUed!#OVWirR%VJ,~> -!BpJTm/X-`rriE&s1f>ao)A[irVlith#@ARea3EH!.D!L!L0P]^AS'3^&t<9ankc3"oZ`*LroRG -s+11Qs5T-'kf<]+q7V0Olgt,Zo<`kCm.pY^Pc4Mo!MTYp^&k5raSu2Nrq#*p]rRQVEd*M7Yf##R -pt#HIcB$>EpAYE]b0$*is*XlUk3W3#4b*~> -!BU8Qkl@:PrriE&s1f>ao)A[irVlith#@AFe`d-C!.D!L!L0P]^AS'3^&t<@chmJ:"oZoL75*Pak>qS -f)Gj%S(4P4rs7f1b+ZuXI/m[;klK'jJ,~> -!B:&NirG&9rriE&s1f>ao)A[irVlith#@A5e`-^:!.D!L!L0P]^AS'3^&tpQD_+,d,+-b -f)Gj*W8"]Qrs7f1b,NegI/mR8irR%VJ,~> -!BpJTm/X-`rr<&urrR`Op%/1`!<)p$!"oG^LA^$1!3+N9!j)GRXoABAr4W.2qn<&Np\tEm_Le!% -rdk*#s8Ds#rPNunrQ"p@pUP[MmdpG]osT4DlMLS]Er3QO6NI)!%V!,PR>5s4NM!Jne`NUKci4+H -MQilIrrpK=s""/Pk3W3#4b*~> -!BU8Qkl@:Prr<&urrR`Op%/1`!<)p$!"oG^LA^$1!1h[)!ic5OXoABAr4W.2qn<&Np\tBmacN.K -JcC<$r;Qp!b)*t5a8Z;;_2>PfoD\se^P]5]qu6Y:qn<(u!<'VAAAkjNP_G!`Wk-@+l)`7Xrr`7e -\ZYQ("jX:N/-)^4klK'jJ,~> -!B:&NirG&9rr<&urrR`Op%/1`!<)p$!"oG^LA^$1!0#Ig!i>rKXoABAr4W.2qn<&Np\tBmd%7;p -JcC<$r;Qp!d?r&Sa8Z; -!BpJTm/X-`rriE&s1f>ao)A[iqu6crd6Va1rrB%Km/uP`!8=UU!-%kM!rrTAJc<@`E;BM:oi)> -"mCZo!"eAVm/bd$J,~> -!BU8Qkl@:PrriE&s1f>ao)A[iqu6crd6Va1rrAV?kl]uW!8=UU!-%kM!rrTAJc<@`E;BM:otQEa -jFR>^s7lTrqRDX?`r?29]ns/foD\sg_2GG\rVlk:r4W6'&HMdD"^/FZg?SM1rrK7McMmsuNjA9V -"mV9)!"\/QklK'jJ,~> -!B:&NirG&9rriE&s1f>ao)A[iqu6crd6Va1rrA#.ire0L!8=UU!-%kM!rrTAJc<@`E;BM:p;`W/ -kCNYas7lTrqSAc[`r?2:`L+C3oD\sgadT^+rVlk:r4W6'&HMdD"^JplhX(+8rrKU]cMmt%S@eCm -"mqu:!"[uLirR%VJ,~> -!BpJTm/X-`rr`?%^_FTSrr<&prrM9oiVrnWeEm<1H]khFUJh$(!^1,qrOr8Np&>&ccd)OlrdgL/rri:DL]CK;m/bd$ -J,~> -!BU8Qkl@:Prr`?%^_FTSrr<&prrM9oiVrnKeEI$7!/[lY!-%hL!kX$prk8ALqu6fe[#)-VJcC<$ -o`#$MPGdoirri#+M7N9Mrs/A9MOqSrY#bJ7!^1,qrOr8Np&>&neBS!oO/2CI"TF+3!*/.F!R<`V~> -!B:&NirG&9rr`?%^_FTSrr<&prrM9oiVrn:eDgU.!/[lY!-%hL!kX$prk8ALqu6fg^6lV&JcC<$ -o`#$QTsF7/rri&4R)/Iers/AAR&e9H\68aD!^1,qrOr8Np&>'#g -!BpJTm/X-`rrW8:'Ys5]TYKC?T7"' -!BU8Qkl@:PrrW8:'Ys5klRIW33N8]Er3QP]7pgp^'RMpX2a/XWf"O_JcC<$ -nc&ai_MZ;1`r?25[u%ckr;R9#kL[ecWLA`uP*:Ta_.`b\r;ci2!-7c4!N=VprrTK_rq$-lRn*OO -jllfk3e.~> -!B:&NirG&9rrW8:'Ys5 -!BpJTm/X-`rrN07_!h:'!<)p$=O[0'9Ocu\!3+K8"6Bghj0/I`Pc4Pprrrr_YWLYToL)#iNcGF#.pLj+-%S?9NPiU[!Js8'T_?` -!BU8Qkl@:PrrN07_!h:'!<)p$=O[0'9Ocu\!1hX("5sOdj0/I`Pc4PprrV_ne>jllfk3e.~> -!B:&NirG&9rrN07_!h:'!<)p$=O[0'9Ocu\!0#Ff"5=+^j0/I`Pc4Pprr -!BpJTm/X-`rrE,8nGiCds8N8&/d*,5p>Q#OWRL59:B6BYrrVn3>5,`AETG9!Mp;(T^S$.)R^q)E -JcC<$o)Ag?JY_k`rt,(ng;pb#P_4(,O.(oLV;V+?rrW)(AbWn?>&O'-rrJJ=c2RmOX+U?BrrRa= -:ZUmDeieN~> -!BU8Qkl@:PrrE,8nGiCds8N8&/d*,5p>Q#OS^Zg)9`U0WrrVn3>5,`AETPQ5R*tfi`iG/XV8:s] -JcC<$o)AgDO08-%rt,+qhTim?TTOkcS>MU,YN5KNrrW,/B(s"@>&O'-rrJnMc2RmX[#t=ZrrS!N -:#tO>c8pI~> -!B:&NirG&9rrE,8nGiCds8N8&/d*,5p>Q#ON76eg9)ssUrrVn3>5,`AETPcIV:bY,cF'42Z,tu" -JcC<$o)AgIS[e@>rt,+siml)\XIk]GW3N+`\``e\rrW,4B_T4B>&O'-rrK:]c2Rm`^7YArrrS3^ -9B>+6_`*)~> -!BpJTm/X-`rrBjOrrB%Im/is]26m/a^D'g^\,!`A[on6If`(dJ$1ZHLP]qn[`T@&Ls+14Drri/' -I)Q$XMrrHoEq7[!@AQ]_^p\t8YgWfa#XhpIEo`"t[ -=J=gC!S0Da~> -!BU8Qkl@:PrrBjOrrAV=klRFV26m/a^D'g^\,!`@[p+leh"q$Wo@LUIL6Spdkl$)4JcGHD"T#`g -bPp5q&GYMCb.F^EN.[7cYeSK?mJQq_"RN4K`r#B-!Gf1?^'(oV=VSXFrrJeMc2RmSaeR)PrrPZ$ -T&f,:c8pI~> -!B:&NirG&9rrBjOrrA#,irYYL26m/a^D'g^\,!`@[p>Q,iVNQ\o\@BdQD1t=lhuD7JcGHD"T$$) -dJhl"&GbYKdDNDkS!0JG]#W@\n,3.a"RiggcMR55!Gf1?^'(oV=VSXFrrK4]c2Rm\d'(mirrPf4 -RcNK0_`*)~> -!BpJTm/X,urrB%Im/uJ[!8Fm\#PiKS])V1t^&,MG]g\:Ko`#6rji+*PGE]>\nU^^ks7lTrkECqc -jSohko&7s0Xdk8oGDMZf^!5I(rq$-mk+7(?qt9sjmSpms^'D>Nmf0j1Fntk5!Kl6`rrf:@jb!I) -rr_![CZXXE!S0Da~> -!BU8Qkl@9errAV=kl]oS!8Fm\#PiKS])V1t^&,MG]gndZo`#6skfg8rL7c*0o7?pms7lTrlCXO, -j8T\_jOM5XVjE3oQ)1k+e)KrtoD\sXWK#'up&>*]<5&1C#JF+)s1/ebq>($kS`7oo"L?;9OT"nQ -"5='-iT05(c8pI~> -!B:&NirG%NrrA#,ire'F!8Fm\#PiKS])V1t^&,MG]h#3ho`#6sldEA=QE.sZoR[$ns7lTrm&R&J -j8T\`kh=:rZD*]<5&1C#JF+)s1/ebq>($kWo_M*"M<1LT)JB_ -"5=' -!BpJTm/X,urrB%Hm/g;gKXLg^f.p1hrr3&M=M"IF!kM.ImJdLdfX[GtJY9d7qLSZts8;m"rlT\k -p?qqlr9`:^\YtjKFaT1?YeniLp#uDYjI1Y?r:^-leQBE]^&klJec,RNlqfIhqYpSViQ_B*UWib& -bkD&=KE,iAjR!!!4b*~> -!BU8Qkl@9errAVC, -mf*jsn)2R/ZD*P9MjgWUaOfVKkl1eKVN9"#pAY3E=M"IF!kMLarr3)e:bpZ!rrJVMc2RpKdf5uf -pAY5J!.*>ZklK'jJ,~> -!B:&NirG%NrrA#+irW*YKXLg^f.p1hrr3&M=M"IF!kM4OmJdLfiQ8?mS[Hc)qgncus82fuesjDK -mf*jsn`89C]<7fkR]!O/ceRg[kl1eNZ(9ABpAY3E=M"IF!kMLarr3)e:bpZ!rrK%]c2RpUf`/&) -pAY5J!/K.dirR%VJ,~> -!BpJTm/X,urrB%Hm/j3d/@PQ[R2).ers/%4Dh3FSD=Hch$NBA8XH%I`XN^#0JcC<$s8N5qWdi7l -q>V'+o&8!4Yb7).Ee0CK[E$n`q;2,Si0T,>rV-m8L""XG'`T6CeeieN~> -!BU8Qkl@9errAV#k2eSJ;J/?OOsF1!gsdkqu6\akKX#0WRh+)QM1=\ -/-(XLjQQ]j3e.~> -!B:&NirG%NrrA#+irYnS/@PQ[R2).ers/%4E.WXXD=H`g#k-B[Vj40pfC+:jJcG`L"8KR!fD,@X -rq5L0cbd)hS3[+kW=V"Xfj -/-(sVjPp9Y2h1~> -!BpJTm/X,urrB%Hm/uPb!7SLY"7/i>fDGRPrmR!YT$$]arsAS[^S$.)RCUuDJcC<$']G"8hrN;* -[%ih;FF9% -!BU8Qkl@9errAVfDGRPrn*d#Us&DhrsAS^`iG/XV8:s]JcC<$']b[Tj6,+< -]WRlhK8Z.r[`-_TnGUl:"Q5o:eGf4B$1qkCo`*R4QIPp5rr^k.;!e/\!L;rprro4Qs8SA=q#:KG -!"l9DjQQ]j3e.~> -!B:&NirG%NrrA#+ire0N!7SLY"7/i>fDGRPrnXTBWQXqmrsAVccF'42YfYl!JcC<$'^2EqkN^pO -`42k?PFAAT^WbBmo)7)<"QZVWg&CaG$1qkCo`*aFUtYhIrr^k.;!e/\!Mf#+rroXas8ShOq#:KG -!"lNOjPp9Y2h1~> -!BpJTm/X,urrB%Gm/gSoH+O"XTFl>Br;Qrta+fW$rRq2Wn^=_-GDE'7jSaZ0N;jLbkh!k`VNusX -EI=.R]?AspqoSj@fT1p -!BU8Qkl@9errAV;klP,jH+O"XTFl>Br;Qruc'4^Jrn7;Xo@LUIL6SpdkP]u3N;jLclJ0Y!YbI>6 -JW$>2_U79/qoSj?h40h`p](8CrVm5ZSWqP$s8Vn;&YT.'!L)lprro(Qs8UBBq#:JB!+!.=jQQ]j -3e.~> -!B:&NirG%NrrA#*irWBaH+O"XTFl>Br;Qrue=ieprn7;Xo\@BdQD1t=lMZ;6N;jLcmGQL7\uhZi -OdWGeb1G\Cr5ns@iM`R-p](8CrVm5^WM8#Ds8Vn;&YT.'!MJo+rroLas8UTSq#:JB!*[(DjPp9Y -2h1~> -!BpJTm/X,urrB%Gm/s`r*W<\O"4]pY^\n*7p:PmCgX?*.rT2"qLNerfdd_ngRK"#ojjqJ^W18]i -GDDN_\&d4cq!t23e&)+eeVoIUJTEVobFfoq-3r;Zf3(J**VK'gh_#*7^Bs7q$0qYp`t*< -!BU8Qkl@9errAV;kl\3k*W<\O"4]pY^\n*7pVVuehpVN2rohS1Q%kpCfCORnRK"#qkhF@tZDX"E -L6SI<^WtX#q=C_MfY[Xjg6nA_q>UJTEVobFh4KkVrVuo4(J**VORLHo#+O]Rs8%WBqYp`t*< -!B:&NirG%NrrA#*ircFa*W<\O"4]pY^\n*7prf/2j3mr6rp/"DU6_juh"60tRK"#rleg45]X"?" -Q(kFma40)8qXq=hh890ohPR1-q>UJTEVobFiiAa&rVuo4(J**VT(1)*#,p_bs8/5TqYp`t*<<7] -XlSLC_`*)~> -!BpJTm/X,urrB%Gm/u\t!4orF"RKq?Oo#%V"RiRAV<5u$$23#^RX9UX^Y\gr1r9iIh_6K_u -KQVQsR&@C4eE-Dtrr^u0SF+5o"THf*OP9U3!NB&orsRVJK#[`gqN2P0G4 -!BU8Qkl@9errAV;kl^,l!4orF"RKq?Oo#%V"S'$ZYNa71$2<8lV2C>6`o?lHs/>r1rUAjtaL\LG -P(\XWUTqSXg$&2(rr_,BVshM&"4id/hY[ -!B:&NirG%NrrA#*ire9_!4orF"RKq?Oo#%V"S0Br\a7N>$2EK$Z'h/jcK4qSs/>r1rUT+*cbm5m -TTke -!BpJTm/X,umJs65m/hM4>J^=BqN2P0m/?qek,!F/n&>;6rp.e0NcpD`bj,1Ys0hq?pZU;Q];qH] -IWL%#Suo]MgZnV$rri83Hb93nrri>GL6UNmrrL,!p\tTXR=W9Qs6OP0Mu(a!!JTh -!BU8Qkl@9emJrg)klQ#.>J^=BqN2P0m/?qel*#rSn\kG5mF&G3KpoHtm=G;Frt>+mh9a$HVj`Qs -Ngm#W`7!Q1qX"4br5+?/r58O;rmR((iVicW`]3_m$KIqCb5;5*C^c6ucMmp.m/I"cj-KQA"^:tM -l-#[ZklK'jJ,~> -!B:&NirG%NmJr3mirX9%>J^=BqN2P0m/?qela`D"o>LY7n(>CQQ)DCKmt(MHrt>.pimu8dZDX1U -S>`g1bh1tEqs==cr5tGNr58O;rn*pGjo,2[`]3_m$KeR`dJX%2C^l@"cMmp -!BpJTm/X,umJs65m/tZ8$Lu%6".^2uec#LNgR3Q)p:gP5qqo/]JU -!BU8Qkl@9emJrg)kl]-1$Lu%6".^2uec#LNhkZ7MpV-Y6qr5VrO,BdMh"QC"`;^MFle^(/\ZMNg -JVKA^Y.Vp/jmrE0rr__ePi'@X#lW)3UZDITiZ.Xk$0A(Ea85gV72DH?rrJ/MrVlnYmem(hnHo<@ -l-#[ZklK'jJ,~> -!B:&NirG%NmJr3mird=&$Lu%6".^2uec#LNj05#rpqHb7r8u;4SXH_(iV8!(`;^MGmGcdC_7-M> -Od2WB\AZeMkk+l5rr_erU>s,j#lW;GYNZ#diZ.Xk$0\[bcMRWj7M_Q@rrJ\]rVlnhnGN:jnHo<; -j3+C^irR%VJ,~> -!BpJTm/X,umJs64m/f?LS]:[4rie-tTDniorQpRZaSWIH$1ZHLP]qn[_W:]Is4%&_rpo.$aL\IE -OFhV"L6SF:^eieN~> -!BU8Qkl@9emJrg(klNmGS]:[4rie-tTDniormdI%cMY0O$1lc\TSA]8aQNPRs4%&_rq,C.cGI#h -SWJM[Pb>.h`Rb`A[bqZcrirsIqgN5^MIT,]VjrmLfIMY6rJ!OBlGrs#"o -3pGnGVr[(Cc8pI~> -!B:&NirG%NmJr3lirV4@S]:[4rie-tTDniorn=9DeGQfU$2!#kXHoTlcg(L\s4%&_rq5R6e]PY6 -WLf?@Trb`?c.M%DpsoBHh4D.L_Z'l>d[d]/qZcrirsJ%uR`q&nT,]VjrmLfIRJ-UZ!P?bWrs#"o -3TK/ -!BpJTm/X,umJs64m/iLP503a5rie.5Yl=\&qS\&Le,HWP$3'&+Xb_.`Yg;]fs5O%mp?LJ]_mZM4 -N.5kqMO:9J_U.0+q9&^?q6PIdrPJRL -!BU8Qkl@9emJrg(klR"J503a5rie.5Yl=\&qob+mf`&/U$3'/4\!;Z=\^^)!s5O%mp[$kib.k6Z -R>lfVQ_^juajoD=qTAg@qRh^.rke[=r5jqu)WL>f$L+XB_"do51,?*5eGfQ'qYgEpcE@*F#!N$M -l05X]jQQ]j3e.~> -!B:&NirG%NmJr3lirY5@503a5rie.5Yl=\&qpD%9h>X\Z$3'8>^n[0p_:nF1s5O%mq![>!dDro) -VONa;Up%AJd+d[Oqo\pAqS\fLrke[=r6Uq?)WL>f$LG3_anbq?1,?*5eGfQ7qYgEpe[YPW#!N$I -j5[b\jPp9Y2h1~> -!BpJTm/X,umJs64m/uJX!SPWq$c3o>Yl=\&oXTC@hl6V^ptEBOIsmftf_0mroD]U(nDr6F^Ts`) -N.?"pKoqt.\Am%Wn,:!#"6bu/iPGNsq7[etlLOr^rc"Z\\G#p+1*+6^rrI0>rVloYN;`b]f`;HB -mHp+WjR!!!4b*~> -!BU8Qkl@9emJrg(kl]oP!SPWq$c3o>Yl=\&p:uTbii2qaq;0#fNJj[Mh"QC"oD]U)o&nfU`k/IN -R>uoTP+AS[^s(Knnc$9&"6uPJjh^s"qSaM1mIC2_J?FdFp\qBP*Q$A,!J17KrrM8MrVm,U!=IiN -l(5uWklK'jJ,~> -!B:&NirG%NmJr3lire'D!SPWq$c3o>Yl=\&pW/f0k,J@eq;TT(S!pV(iV8!(oD]U)o]kDec,7,s -VO`p;TW5B5aOB#0oDZK("7<1fke[9%qop=Fn+$DaOLU_"q#7KQ*Q$A,!KmB[rrMA]rVm,U!=IWB -j/:#[irR%VJ,~> -!BpJTm/X-`mJsT1mJs63m/gPnFNa[cNt@l]rrh_kHDp)&rsA/AZBTTgV8M9iK`;kfoBG)[`OW(B -PD=L+IYsJeYeA00ipQ]Lrri>EI]N1Yrrc2HI&HB(rsSaGs6HS0[.OBh& -!BU8Qkl@:PmJsT1mJrg'klP&hFNa[cNt@l]rrhf!M6cKBrsA5H]:aqCYKGu)KDu_[lf$L?_7$A9 -P_k!NQ_LXn`6[0!nGBKj"4<(7pVHk4;Ls_1n+?VfrIY(;Z&66fs.'^^fDbmLKDb`Mn;dJI#BTrM -l07AcioK>)c8pI~> -!B:&NirG&9mJsT1mJr3kirW?`FNa[cNt@l]rrhl,R(Md\rsA;O_lT/t\^BX=KDu_\mcE9QahP6a -U6q+5Uoq5DbLPM6o),cm"4s$Vpqct5;MLUNnauhhrK@3M\s^P2s.'^^fDbmLPPkF]nt#aZ#BTrK -j5]*`hW3\t_`*)~> -!BpJTm/X-`mK!:SrsJI)1>r34j.Uh,nso^erT;2"MKY&`c0P@pru(e,l.se/ -]s4H(OG/%%H\RZPWO9UhgZ\;/V>g\lX+&7k_uBp\NV9f-X75i_!Vpp -!BU8Qkl@:PmK!:SrsJI)1>r34k,aHQo:5geroq_6Q\Cs=dd<>")#j3oiRcAn -]!/'&PDOjJPF\SW^<+m^lLgtQ"8B3^dDGnfEK0_,MR;sJrrMtMrr38m[#)Bdi%eR2g&D*IM#@8R -o8EVJ#P]#6\`r@jU>tJ=c8pI~> -!B:&NirG&9mK!:SrsJI)1>r34l*d"uopl$grp/(HUm7mof^G+*)#j6sjkSA/ -_n*+PTU:k0TrPB1`mEH"mIm@U"8KU"f>@OlEK0b5RD/:drrN"]rr38o]pQ_1i%eR2g&D*JQi-ja -opYm[#P]#6[,^2]X5i4@_`*)~> -!BpJTm/X-`mK*A%Zc)83WQjf3/HD]prs@U=>k\0LQ@QaFQ2_0dgqKD3H^V@ooV_^-q!R7udE'#+ -VON[$H?+@eOdr>T^<"d[l1FtArr_8?PN]sb#``j's7EUDYO_Jg!VUg:rs/"pHEZO;1>pmd!V(X: -rrM5 -!BU8Qkl@:PmK*A%Zc)83S^$C#/HD]prs@U=>k\3QU5m7hQ2_0ei5M^WM57o@p8@p/q=*V*f$;4F -YbmtTM1UVLSYra)`Qm,qm.UFFrr_AOTBaAp#``j's7X']\FfRr!V_EJrs/)&M7DeT1>pmd!V;9J -rrM>Lrr35$!%mI"jGMIIklK'jJ,~> -!B:&NirG&9mK*A%Zc)83N6UAa.fcKnrs@U=>k\3VXe!c5Q2_0ejNY'&R'=WgpS\$0q=pmd!VDlZ -rrMG]rr35$!%[*ihjDmQirR%VJ,~> -!BpJTm/X-`mK3I)'=78trW)la"N!J4)O04K!3+61!f[1Gd/OB]&"d`K83XJ2)CKm[rcJVo\_Vm=%Xe)0E^re^XXrPX)hq8WF8Y###r"S/aCZLn"n!V:^8 -rs&"tH`Vr5\D.#am">69!Qh&7rrtahNU?+sWT*:GeieN~> -!BU8Qkl@:PmK3I)'=78trW)la"N!J4)O04K!1hC!!f?tDd/OB]&5C(g]% -!B:&NirG&9mK3I)'=78trW)la"N!J4)O04K!0#1_!f$bAd/OB]& -!BpJTm/X-`mKE>s4ID\i9[.rm,IC5eieN~> -!BU8Qkl@:PmKc$N\r0rs.IZ(;@kNT\G8%$3'8:[$cW: -[F"9druUt*l/LFGbJ_'$XehPPMh-SBQCk(Z\\ZG:gZ.YmrIP"Err_nrO4_MQ!R<@qrrho"MSAi_ -rrM\Mq#:Qj]8;=Y;;g:1!U>sJrsPdOs8UaQ$f'sFQg!Gn!R<`V~> -!B:&NirG&9mKB^8@0n -^=M_uruV",m,d-Wd`]SC\$2j*RZWl*UoUf4_9(*WhrjG#rIP"Err_r(S__?d!R<@qrrhr-RE#%" -rrM_\q#:Qk`0cT#;;g:1!UQTZrsQ0`s8UaQ$eOCBU>k1m!Q-jH~> -!BpJTm/X-`mKEUjs1f;So'QJXrU'\bQ/1j.WQa`2>l\usrs/=P'Rm96T]1P&$NKt[^nHC+QaP?6 -jo6ItmcN?Uc,@9$X.l&GM1KqmG^tX5RA-^e]>VqDhs'_2JcFs6"5AU"mE,A/mLT-n"RW+7](l:) -!UYL4rs&,'GZGH1pu)/SkHeserr3AlI/*aAF9#V3Q]^Ljm/bd$J,~> -!BU8Qkl@:PmKEUjs1f;So'QJXrU'\bQ/1j.S]p=">6&cqrs/=P'S!WMX6"p4$NL"_a/kDZU;#=Q -jo6IunEJocd`]P@[&p0rQB-iQLQ7[kV6%&9_ogE]j6Q@:JcFs6"5f??n&bS1mLT-n"RiUQ_YO32 -!Ul-Drs&22L0G=Epu)/SkI,Nrrr3AoMY[;PF9#P-TUY$$klK'jJ,~> -!B:&NirG&9mKEUjs1f;So'QJXrU'\bQ/1j.N6L;`=TEQors/=P'S!od[HN2A$NL"ccF0@3Y/]>k -jo6Iuo'>Dof[7m\^:1AIUn*j7QCXeNYd_Zpu)/SkI?$)rr3AqRJHm_F9#J&Wi"\4irR%VJ,~> -!BpJTm/X-`mJm7drrR`Ojn%m?!<)WkK:s1p&>5e'hXa;X6Y?: -q>Ucme[CikJtTm7q>UC>rV#[Ahq6>u_Rd%RUR[R.L4=DeG_(^6RA-^e]>VqDh<"(urdk+$rri84 -Hb93urrEYuq#:TaUOBlPs6>=1rrr,,D);osp&>-dcGB/FrtOL3>'Pg^GZo%GU::1&ob%83JYD>d -m/bd$J,~> -!BU8Qkl@:PmJm7drrR`Ojn%m?!<)WkK:s1p&>5e'hb*S[I/VG -q>Ucog:j>=OK6C[qYpL?rV,gGj4r53aMPQrY,@q]PDt-dcGB/FrtOL3>'Pj_GZo%GXM=f8ob%84NiD1! -klK'jJ,~> -!B:&NirG&9mJm7drrR`Ojn%m?!<)WkK:s1p&>5e'hkKl^@6^R -q>UcphSuadT!cl*qu6U@rV5sMk2G(FccX/>\?`36Tpq=/QCXeNYd_s6lWQrrr2=L,p!=p&>-dcGB/FrtOL3>'Pj_GZo%G\&\OKob%82S$:i/ -irR%VJ,~> -!BpJTm/X-`mKEUjs1f;So'QJXrU'gk>27q8;;ppCWQXZ12#s*1rs@_(>'Pj`GZo%Gqu6p#YVI); -I(/]us8N$GqXa+:i7cZ(`kT*iToakMEHH>EEd<4lOI)Q9XgPj\bgY;*l1"KIJcE[g"7D\6g<9Ks -0@':k"mDS._W6LCrs&50>7rNlrqcX"n8NH&K6)#$q#:Hj@r&aS^'_Me3q<7MRKZ] -!BU8Qkl@:PmKEUjs1f;So'QJXrU'gk>27q8;;ppCS]g7!1]X!0rs@_(>'Pj`GZo%Gqu6p#YVI)C -Mneq9s8N$Fqt9FBj5/G:bf7K1X.59,JV/W-Jr#JQS>3'f\%T`&dFd=;m.0t's24j=n>DN-bPqSr -cM%8AlDfibkEYW<#5H)I'/$NgqYpfiE-$_cF)^XDrr`"*CV9PY$G:(;o)J`Y#$m)3hWY'd3e.~> -!B:&NirG&9mKEUjs1f;So'QJXrU'gk>27q8;;ppCN6C5_1B'Pj`GZo%Gqu6p#YVI)K -R`G,Qs8N$FqtBRHkMk=Me'?(P[Afa`Ocu#mP*_`7WNNV>^r=LEfA5HMme$=+s24j=o!4tKbPqSr -cM%8AmBrG0lD!kL#5QG]'J?WhqYpfiE-$_cF)^XDrr`"*CV9PY$G:(?oDeiZ#A'7IhW"XS2h1~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=72r!!)uc"ZYB,mbJ<1mJs60m/uPh!5@n$!q]U%pV$s@=S&aO'iU(:rMKTF -qt0=?iS)f+a2#9mXJVVXP)P*EG]InQJV]APS>)sc[CsK"d+7%6lL=QHm/ICbf=@>tKUoa-pOW@S -rri/)I)Gp/rrI%uo)Aj8G_=-:nc&sm_G:^oYl=[j<5&1C!khS$qu6\$[.V-:Zr)9Y/EkmV!S0Da~> -!BU8Qkl@:PmK3I)'=72r!!)uc"ZYB,mbJ<1mJrg$kl]u`!5@n$!q]U%pV$s@=S&aO(0d3VrMKTF -r:]XFjPJS=c,[Z5[]ld-Ssbe%LOt2:O-Q3.Vl[26^;S1?e_B'Gm.0rNm/ICcgq]bDP,Q:SpjrIT -rri22MTPkDrrI%uo)Aj=LQTp]nc&snaB'!+Yl=[j<5&1C!khS$qu6\$[.V-:Zr2ft0BCpQ!R<`V~> -!B:&NirG&9mK3I)'=72r!!)uc"ZYB,mbJ<1mJr3hire0T!5@n$!q]U%pV$s@=S&aO(1a;qrMKTF -r:fdLki1IOeBZ1S^UghWWhuGZQ]dQ#SYN-cZF@K_`llc[gY_,Xn+?GTm/ICdi5i0kTX2i#pjrIT -rri5;RF(rZrrI%uo)AjDQCl_+nc&sncX7DgmI!Q-jH~> -!BpJTm/X-`mK*A%Zg[;^!<)#XDJ!3+-.!dF]Bmf*;l[.V-:ZlgYtQeK"M/,Af(kMb.F -cH!c4Z`U*tR?NSaIsH'VH\$s4PaeDGYI2$\ajAVoj6H..rR(WOld)i#GD)^*h=uR$]DhusP`4SJ -rrJWpo)ApNOkl7Uc2R85#Q)DA*Z(>_\,!`=[qu!B!MttN^&sB_!-m8c!S0Da~> -!BU8Qkl@:PmK*A%Zg[;^!<)#XDJ!1h9s!d4Q@mf*;l[.V-:Zlg])U>EH\/,Jo,lK$gT -e'5tN]XG&FV4X0>NJN. -!B:&NirG&9mK*A%Zg[;^!<)#XDJ!0#(\!cn?=mf*;l[.V-:Zlgc5Y2["l/,Jr/m-*Hc -g!n?j`4rmkYcFXpS -!BpJTm/X-`mK!kbr5ETd<#!,2>FrrE&4rr<'4DZ7?O/dL%`m/bd$J,~> -!BU8Qkl@:PmK!VQ&gfVJ;&oCQ(+JEXKf7J_o^6Sg>M,[nb<$lrsJbjd'fHuQE\Nmr.4m^rr^]/[.i#K -!S\Ubrs.GSs8UrHQIbR*"T6MI%p\kC!HI<$rr?a2^Ae34^Ae06&oR]_!\O],gZ\aa3e.~> -!B:&NirG&9mK!obL"enhrO%ioD& -!BpJTm/X-`mJsT1mJs6.m/g;gF7B20B`5[F!<0_4!;sP2B]f=Jqt0@Aj5&>7b/M-+ZE0psRZrhh -Jp_c_FaJ[pNK]d&V5pl1^;S.?f%]0ImIU/QSGrrojMn-VG)`NCjo'c1_Z'c4XFA=ke,KFgg[kFG -fU)R:"4iHjeaWS?rHP:>^'nof$ZEbnW0E[!Is5E#^&S03^&l!/"oc4:<`%N;!S0Da~> -!BU8Qkl@:PmJsT1mJrg"klOibF7B20B`5[F!<0_4!;sP2B]f=IqtBRGk2G(Gd*'GE]=+rEVP'EE -OGejEKSkhUR\-FVYI1sV`QHNWg>D#Wn+HOHrsJ_fbd*UiR^CB(rIP!crr`#'N6p#Q!?BkcrrLrM -rVluSR[MjurrW.GW;XF=D[Qqk^:pP1R"'U0A,O%@!<'V5]oN?r^&_81g?AX`3e.~> -!B:&NirG&9mJsT1mJr3firW*YF7B20B`5[F!<0_4!;sP2B]f=Ir:fdMl/gjXf$_ga`4rmlZ)jju -Sskq,PaS):VlR&/\\>r$bgFtphrEqfnb2jLrsJ_ie%DNBVnLXHrIP!crr`&1S(?$f!?BkcrrM)] -rVluWVl&>?rrW.JW;XF=D[Qqk^:pP1R"'U0A,O%@!<'V5]oN?r^&_8/g>`4O2h1~> -!BpJTm/X,umJs6.m/t6+%e0&h!Uat*^&S03^&S02^,'css8W#jn*8uif[A!_^q-kSVkKWGO,8O< -GB.eOJ;0#GR%C+RYdV6_aj/Gki9'Ftq#5jEs8NE%hnl1EG*/uPl%/lQrr_;APNUHq!F2,crrLZ= -r;Qp!dYa+ -!BU8Qkl@9emJrg"kl\^$%e0&h!Uat*^&S03^&S02^,'css8W#kna,Gtgt0rta2,EtZ)jjsSPsFs8NE&j2nHgKq5a%m",2Trr_DPTBar+!F2,crrLfM -qu6cMQ^ln%rr@*;^&nY/QjNc+"Y(C>IqF<1^&S02^&a69rk8D]S(d*-c8pI~> -!B:&NirG%NmJr3fircmn%e0&h!Uat*^&S03^&S02^,'css8W#loC(u+iS<&5cH4#?]=,#IW2-&S -QB@AuSY;p\YI(gQ_T'dGe_/g>kNqa3qYl'Gs8NE&k0UW4Q)_[QmXbDVrr_M`X6e@9!F2,crrLu] -qu6cRUo<8Brr@*;^&nY/QjNc+"Y(C>IqF<1^&S02^&a69rk8D]QJ1@"_`*)~> -!BpJTm/X,umJs6-m/fHOM=UZIc%l52!!)u3!!)r2)hM[HEH?DTKo;+\SYN0f[Ca;scI:M*jm2L3 -rIP".rsJPU^7U.)PH`>I'WS!rrJTooD\j -!BU8Qkl@9emJrg!klO!JM=UZIc%l52!!)u3!!)r2)hW-cJV/cEMnAi:rrJTooD\jAWqu_urm[1)i:HsKE;[EP*gi9:rk8A3 -rr3#DL]"jd!<'V5LDHBY^&`_qg?AX`3e.~> -!B:&NirG%NmJr3eirV:BM=UZIc%l52!!)u3!!)r2)hWR*Ocu-%TV\ZkZadZa`ll]Xg"kZNlgXTC -rdk+/rsJV_bdF.1X23HVrdk*krri>KR`#!QrrJTooD\jG[/0e*rn4!GjR`BOE;[EP*gi9:rk8A3 -rr3#DL]"jd!<'V5LDHBY^&`_mg>`4O2h1~> -!BpJTm/X,umJs6-m/sBh)u9+*!R6Dt^&S03^&S02^&s,+p\oaD`W$;Tkl$)4bl7e: -V1I(HrrLjooD\j8U\OilrQ9e[i:[*ME;[EPIKTe(rk8AOrr3#eEW!NN!<0\6C_W?:^&_p'g?epl -4b*~> -!BU8Qkl@9emJrg!kl[ja)u9+*!R6Dt^&S03^&S02^&s,-q#5jE`W$;=h8H=ULS)*(lMcA7bl7e; -YE.;errLjooD\j=Y5&#"rm6e%j7WEPE;[EPIKTe(rk8AOrr3#eEW!NN!<0\6C_W?:^&_p$g?AX` -3e.~> -!B:&NirG%NmJr3eirc(W)u9+*!R6Dt^&S03^&S02^&s,.q#5jE`W$;>ilea%QE.jRmJ_\:bl7e< -\XhO-rrLjooD\jC\G6(,rmm^EkOniTE;[EPIKTe(rk8AOrr3#eEW!NN!<0\6C_W?:^&_lrg>`4O -2h1~> -!BpJTm/X,umJs6-m/u]*!2&l_!Uat*^&S03^&S02^&`6AJcEIa$MN2fTnR]RXifi*JcF'r"5J[# -m+D==*8C,c!QV/4rri8?JXYWnrr@*;^&n_/QOEf,!-8&FrW)u4r;ci2!+adM!S0Da~> -!BU8Qkl@9emJrg!kl^-!!2&l_!Uat*^&S03^&S02^&`6AJcEIa$MWDrX-/4/\'XF>JcF'r"5oH@ -mb%O?*8C,c!R7qDrri;FO/D(6rr@*;^&n_/QOEf,!-8&FrW)u4r;ci2!+X^H!R<`V~> -!B:&NirG%NmJr3eire9i!2&l_!Uat*^&S03^&S02^&`6AJcEIa$M`W)[\/qd^t.lOJcF'r"6?2] -nC[aA*8C,c!S"aTrri;MS[%GRrr@*;^&n_/QOEf,!-8&FrW)u4r;ci2!+OXA!Q-jH~> -!BpJTm/X,umJs6,m/r[T/,o/?!,2>FrW)u4rW)o2!,-r`\Glp1gV9J:GEArKk5Bl2e,KRK]mI?f -gA_1YS+Q^]_lWM1"T-)dT'#kK!L0P]^'@[G$ -!BU8Qkl@9emJrfukl[.M/,o/?!,2>FrW)u4rW)o2!,-r`\Glp2ho;a]L7Pd!l2?25e,KRL`/;D/ -gA_1YS+Q^]agUjA"T6E%WTj6Y!L0P]^'@[G$ -!B:&NirG%NmJr3dirbDD/,o/?!,2>FrW)u4rW)o2!,-r`\Glp2j3>'+Q)VOKlhuD7e,KRLbF-KM -gA_1YS+Q^]d(f5Q"T6Z;[-[Vg!L0P]^'@[G$ -!BpJTm/X,umJs6,m/uPk!4;@t!MttN^&aCnJcE(V$MW>jUPUc -!PYi0rri25IA6!'rrM;&pV$ZJkPY>\>I=(;!OPkZm/bd$J,~> -!BU8Qkl@9emJrfukl]ub!4;@t!MttN^&aCnJcE(V$M`Q!Xd"O/ZchD*JcF=$"7W7Qh:qr1Rp>Uc -!QDY@rri5=N3)CCrrM;&pV$ZJkPY>\>I=(;!OPhYklK'jJ,~> -!B:&NirG%NmJr3dire0W!4;@t!MttN^&aCnJcE(V$Mic.\"T(b^!c*@JcF=$"7idlinOJ6Rp>Uc -!R8LPrri5ER^__^rrM;&pV$ZJkPY>\>I=(;!OPeXirR%VJ,~> -!BpJTm/X,umJs6+m/hn?47`CP>I=(;!OQ'^s/l;.ptioeNHU&N^"Dq-s4RDSeUjOch>[N1*;'73 -]!_&-"SfTVVX46\!Go7@^&b]Zqu6`i=L@h:!jk/Of^/^j4b*~> -!BU8Qkl@9emJrftklQD947`CP>I=(;!OQ'^s/l;.q;TQ&RY@!-`8(!9s4RDSfoW<,h>[N1*;'73 -_7oF="SornYjVGh!Go7@^&b]Zqu6`i=L@h:!jk,Jf]`F^3e.~> -!B:&NirG%NmJr3cirXZ047`CP>I=(;!OQ'^s/l;.qW6,:Vj*mabi/5Gs4RDShO_4Kh>[N1*;'73 -ai -!BpJTm/X,urrB%]!5A()!q]U%pV$^9=S.1EW;d8(k0'unH@MBkd-L[^s5*bYq6bUerSIPT -*8C/d!O]N,rri)+H`HQ6rrVUf^&,MF]i=Frrr`"*CV9PY"2%bOgXkfneieN~> -!BU8Qkl@9errAV0kl]cT!5A()!q]U%pV$^9=S.1EW;d5'l-[&7M2e@Fea7qfh>[WS]o'o1hZ!Tr -g\(RI]u'4;"SfciZgn%p!q'%$qn<-F<:9V_"8?;@]_fDF]NH!$fBE=]3e.~> -!B:&NirG%NrrA"tirdpH!5A()!q]U%pV$^9=S.1EW;d5'ldrtSR%(A"g[B^nh>[WT`L5'OhZ!Tr -g\(RI`QIWK"Sg'+^%21&!q'%$qn<-F<:9V_"8?;@]_fDF]NGusfAcnL2h1~> -!BpJTm/X,urrB%;m/hV761Y$XpLA!Oqn<0FCLd*is.TH"maJ\9JTm9ZaPm,Ls5Et[l'71bhu<^^ -S+Zd^YeTQ)$2(ZPXmuGkeQBE]^&klJebB(Nj)8+GLlZda2$&'Tm/bd$J,~> -!BU8Qkl@9errAV/klQ,161Y$XpLA!Oqn<0FCLd*is.TH"nCYOSO+s77cK5%Vs5Et[l_0^,hu<^^ -S+Zd^\]4"9$22#g[e'P!eQBE]^&klJebB(Nj)8+GLlZda2$&!RklK'jJ,~> -!B:&NirG%NrrA"sirXB(61Y$XpLA!Oqn<0FCLd*is.TH"o%hBmSX$4ie`d!`s5Et[m]E>Khu<^^ -S+Zd^_ThHI$2;B*^\%R+eQBE]^&klJebB(Nj)8+GLlZda2$%mOirR%VJ,~> -!BpJTm/X,urrB%;m/u5V!6"F-$0,r-G_h0#>&WGPs-irqpY3KZNcTuL]$p'GJcFj3"3l=pp#5oO -Rp>Xd!Na3(rseS(Ha32Bn8NH&O)m(RoD]'Yb0&nc!"[u -!BU8Qkl@9errAV/kl]ZN!6"F-$0,r-G_h0#>&WGPs-irppts,pRY$d)_V"=.s5a1^dZ(U,iVrqJ ->kS*t[E@e7%J72f](Q*mE-$_oF#'Wars.`0b3-\C&)5\"!R<`V~> -!B:&NirG%NrrA"sirdjB!6"F-$0,r-G_h0#>&WGPs-irpq;]c1Vimd_b2)T=s5a1^fUKPJiVrqJ ->kS*t^ -!BpJTm/X,urrB%:m/hD18FHK[kK:X(JcCo5$iK/2ZC-5fOK-7Tp4<8.rri(uIEDKKrrLjop&>&j -aQWX4n>puEpAad1_=Xrerr)j!kK:X(q#:Cd!-QiZ!S0Da~> -!BU8Qkl@9errAV.klPo+8FHK[kK:X(JcCo5$iK8;];:OCS[?PupOWA/rr`&)N6gM`!S\UerrKCM -kl2(^[>DTks7FUQoWU+MrVlu_b/*99rrP^kF4KLUc8pI~> -!B:&NirG%NrrA"rirX0"8FHK[kK:X(JcCo5$iK>C`3>btWP-^@pjrJ0rr`&2RapEt!S\UerrKa] -kl2(`^6ln7s7FUQoWU+MrVlu_b/*99rrP^kE7NtL_`*)~> -!BpJTm/X,urrB%:m/u,P!6TlmJcGHD$hiAnWK27SR^C?&r.4n8rr_;AP31g)!?BkfrrJn=k5PSP -W-c)Lrr3H,19:H8Dd%CANd+`Gj8AoZaoDk*ea3Cg4b*~> -!BU8Qkl@9errAV.kl]TI!6TlmJcGHD$hrT$Z^cc2VS(CCrIP"9rr_DQT'>;8!?BkfrrK7Lk5PSR -ZAQKnrr3H,19:H8Dd%CANd+`Gj8AoZaoDk'e`d+[3e.~> -!B:&NirG%NrrA"rirda=!6TlmJcGHD$i&f0]Vq-eZ,G;]rIP"9rr_M`WpJdG!?BkfrrKU\k5PST -]:$e:rr3H,19:H8Dd%CANd+`Gj8AoZaoDk!e`-\J2h1~> -!BpJTm/X,urrB%9m/h/*9nE=qs7-*trp8(DT8%BFU:Serri>?I'NJ.rrHAopAY/bd,b37 -l_T!Bq>^K<&l*5Tqn<0FCLd, -!BU8Qkl@9errAV-klPZ$9nE=qs7-*trpJCSWfr%&Xhr]Vrdk+?rri>FMn8`GrrHAopAY/me`?`< -m]VPeqZ$T=&l*5Tqn<0FCLd, -!B:&NirG%NrrA"qirWrq9nE=qs7-*trp\^b[%WY[\'!Lprdk+?rri>LR_np_rrHAopAY0#gZ8AB -n@>"2qZ$T=&l*5Tqn<0FCLd, -!BpJTm/X,urrB%9m/u&I!6B`kJcG*:%0#8/ZC?JhMP@]1l2?25pAY6dV1I%VrrJlipAY/^e`-T6 -l(NRAqt*OgpV$m>=S2X7!!h6-m/bd$J,~> -!BU8Qkl@9errAV-kl]NB!6B`kJcG*:%0#A8];C^DQ`S'Um/;M8pAY6eYE.8srrJlipAY/ig#E#: -l`5ubqt*OgpV$m>=S2X7!!h-*klK'jJ,~> -!B:&NirG%NrrA"qird[6!6B`kJcG*:%0#JA`3Gr!UpnM%meq_:pAY6f\XhL;rrJlipAY/uhW"P? -m^AV1r:EXhpV$m>=S2X7!!gp$irR%VJ,~> -!BpJTm/X,urrB%8m/h8-7"PAhs5s=iq;]Z)S:l'CTt8Y9rIP"Frr_&5RHs):!q?fkp\t8Zg#2l5 -jdgoq[.V-:Zs3Pu!--KT!S0Da~> -!BU8Qkl@9errAV,klPc'7"PAhs5s=iqW?2 -!B:&NirG%NrrA"pirX#s7"PAhs5s=iqru_NZCdAW[`R:lrIP"Frr_>WYjglV!q?fkp\t8rio'h> -la**W[.V-:Zs3Pu!,U-E!Q-jH~> -!BpJTm/X,urrB%8m/u/T!5F*bJcF^/%/T#.[%)ejM4_6$j84E-s8N6"^3dEfl2LcZU\FchP25!p -!L&Q8^''UK!"[o7m/bd$J,~> -!BU8Qkl@9errAV,kl]WM!5F*bJcF^/%/]27]VgpEQE%^Kk50`0s8N6#`JVM0l2LcZU\FchT&JQ+ -!L8`;^''UK!"[f4klK'jJ,~> -!B:&NirG%NrrA"pirdd@!5F*bJcF^/%/];@`3Q&!Up\7ql26,4s8N6#baHTNl2LcZU\FchWo`+; -!LJl=^''UK!"RN-irR%VJ,~> -!BpJTm/X,urrB%7m/hV74+[E_s4dP_rT);5TSdiAQ`S*Xn,A"?"7Me7f]rJ;UJCR`!KH*qrr?a2 -^Ae34^&tDk!s&>7!]pC/dd7(d4b*~> -!BU8Qkl@9errAV+klQ,14+[E_s4dP^ro_eGX-\L"U:/2"nUpiDnYhZ-lMgm[:A=bhRcWE+!,2>F -rrE&4"040Z!<0\63rjQSklK'jJ,~> -!B:&NirG%NrrA"oirXB(4+[E_s4dP^rp&4X[A9"WY.r?Cnq6rEo!>"JlMgm[:A=bhVs*";!,2>F -rrE&4"040Z!<0\63rjHPirR%VJ,~> -!BpJTm/X,urrB%7m/u>]!4IIYJcF=$%K>bH_5ifMGDr9,cK4kXrr^i)U%%FK!q?fkq#:AOk261> -mW&0=!!*#4!]i3FrOr>6'&q@,!S0Da~> -!BU8Qkl@9errAV+kl]cU!4IIYJcF=$%K>hNaL%V"L7,-YeEHabrr^u;X7GWW!q?fkq#:A\l/2LA -mW&0=!!*#4!]i3FrOr>6'&M($!R<`V~> -!B:&NirG%NrrA"oirdpI!4IIYJcF=$%K>nUcb?KMQ);%3g$ANkrr_/N[e/qd!q?fkq#:Aim,.gD -mW&0=!!*#4!]i3FrOr>6'%kXm!Q-jH~> -!BpJTm/X,urrB%6m/hn?1P,RWs3L]SpYj?(T8@ZARB49VlMZbC"T#NR_>Wd$!D]BarrIf=hu<`% -L]"jd!<0\5#F#)"!I\\0m/bd$J,~> -!BU8Qkl@9errAV*klQD91P,RWs3L]SpuTo:Wg8="Upe@umJ`.G"T,ojaSkN+!D]BarrJ;Mhu<`% -L]"jd!<0\5#F#)"!I\Y/klK'jJ,~> -!B:&NirG%NrrA"nirXZ01P,RWs3L]Sq<6GL[%ihVYeSNAn,A@I"T-3,ci*82!D]BarrJe]hu<`% -L]"jd!<0\5#F#)"!I\P,irR%VJ,~> -!BpJTm/X,urrB%6m/uMe!2kDJJcEmm%fYeF_Q9,WFG6-b_q48RPQ(aLQAaYgrrTG\rqZQpJFDCq -!R6Dt^&S04^&nO(#[RGD!IhW-m/bd$J,~> -!BU8Qkl@9errAV*kl]r]!2kDJJcEjl%IVul[\Jt;P,5Y0h!Y0*rr_V^R,dW7!jON[q>UJUn_a?I -c%l52!!*#4!sLpq?2hP=I^d_h!R<`V~> -!B:&NirG%NrrA"nire*P!2kDJJcEjl%Ii9$^TX8nTWl5Yi:-`0rr_\kV<74G!jON[q>UJcoABQK -c%l52!!*#4!sLpq?2hP=I^7A]!Q-jH~> -!BpJTm/X,urrB%5m/rIN,5?`hJcE[g%fGSA^oNcPFG?6f`7aSXR/[96J#N#/rrW0TYke;"Hh?4q -!Uat*^&S04^&o^KQ3[E'!G:08m/bd$J,~> -!BU8Qkl@9errAV)klZtH,5?`hJcE[g%fGYGa0_S%KTr@DbMD[eR/[9;NO&9IrrW0TYke;"MY5m, -!Uat*^&S04^&o^KQ3[E'!G1!4klK'jJ,~> -!B:&NirG%NrrA"mirb2>,5?`hJcE[g%fGbOcG$EOPG,7tdGj`rR/[9AS@nUcrrW0TYke;"RJ,P< -!Uat*^&S04^&o^KQ3[E'!G0d.irR%VJ,~> -!BpJTm/X,urrB%5m/uW&!02X1JcEF`%f>J=^8[BJEf6Ej_q+)MT)SrfXaS:inc&Zp1B..M!I+=q -rr?a2^A\-4^&s?-$XitJ!+XCC!S0Da~> -!BU8Qkl@9errAV)kl^&r!02X1JcEF`%f>PD`Nu7uJXE=EakH+[T)Sof[uAW%rrTD[rqcWqLAB^+ -!,2>FrW)u4"-!p$@/dk?@aO??c8pI~> -!B:&NirG%NrrA"mire3e!02X1JcEF`%fG_Mc+L0LOeo>!d,49iT)Sog^m`gCrrTD[rqcWqQ29A; -!,2>FrW)u4"-!p$@/dk?@F4$8_`*)~> -!BpJTm/X,urrB%4m/s9e'CLGOJcE4Z%fYP;^T3`TFFf[T][,X3U]1GWO-/SqrrW0TYknA#ErFkp -!MttN^&a:`d-Ukb4b*~> -!BU8Qkl@9errAV(kl[d_'CLGOJcE4Z%fYYC`jMS)K9)\2_pmiCU]1GZS=Sp8rrW0TYknA#K)OR+ -!MttN^&a:^d-1SV3e.~> -!B:&NirG%NrrA"lirbtT'CLGOJcE4Z%fYbKcG$KTPF\eebM)4UU]1G]W2f1SrrW0TYknA#P5X8; -!MttN^&a:Zd,P/E2h1~> -!BpJTm/X,urrB%3m/fENFb0RDs02M6rU&:XZCZu!H]Ff-aP?7`WrE5$`dG#coD\lr1B.4O!W@&o -rrH?2otCI6 -!BU8Qkl@9errAV'klNsIFb0RDs02M6rU8Rd];_0QM41NZcJ\6lWrE5$b_s%-oD\lr1B.4O!W@W* -rrH?2otCI6 -!B:&NirG%NrrA"kirV:BFb0RDs02M6rUJmr_mH8+R&@C3e`??$WrE5$e!e/LoD\lr1B.4O!WA2: -rrH?2otCI6<6sS*_`*)~> -!BpJTm/X,urrB%3m/t*)#iL:6JcD_L%eJW'\YYI=EJU$`^ -!BU8Qkl@9errAV'kl\O!#iL:6JcD_L%e\l1_69GiJX*(>`RX,EYQ"^tY`@9+rrW0TZ2FV&q1d]) -!q]U%pV$^98`.kY!R<`V~> -!B:&NirG%NrrA"kircal#iL:6JcD_L%ef) -!BpJTm/X,urrB%2m/g5e=b6U(s.]N(roVbKYap\sG`&#p_UIZB[Jp?bM4!W%rrK&cr;QfiHe\Q& -pLA!Oqn<0F=XrRZm/bd$J,~> -!BU8Qkl@9errAV&klOc`=b6U(s.TH&l.O1hW0i?qQ`%@7f]i4>rr_5GV![jT!N8B`rrMeMg]%BM -@r&aS^&u#N.cSb -!B:&NirG%NrrA"jirW'X=b6U(s.TH&m,$+*Z_`tRUp@h_h -!BpJTm/X,urrB%2m/tiC!Q0KgJcD5>&,,)3^TDd%CAO*FMG#Lq#c!S0Da~> -!BU8Qkl@9errAV&kl]9;!Q0KgJcD5>&,58<`jVb0Ko2>!]?Asqqn2q3rPaZ0qtL*lq%qc`rrMYM -g&DE>Dd%CAO*FMG#LL`[!R<`V~> -!B:&NirG%NrrA"jirdI0!Q0KgJcD5>&,>GEcG-WZQ'nPX_p[K2r4N%4rQUbOr:g3mq%qc`rrM_] -g&DE>Dd%CAO*FMG#KtBP!Q-jH~> -!BpJTm/X,urrB%1m/qM31Aue(JcD#8&H;:ZcFg-CKlhg,UUA1smJOj$"7Mh8f_>FGG5_FAl\*jh -#3X.OjY?gZbj>G^4b*~> -!BU8Qkl@9errAV%klZ#-1Aue(JcCu7&+nr4_m?,$KT2P)^ -!B:&NirG%NrrA"iira9$1Aue(JcCu7&,#,=bIk!NPFJS]`mj# -!BpJTm/X,urrB%1m/uDh!1JK=JcC`0&H;.SbIOL7JTQL.VRan+n,CE."4i-unG3(cg)'SarrM8= -e,KN=!$((Dm/bd$J,~> -!BU8Qkl@9errAV%kl]i_!1JK=JcC`0&H;4YdD2uZO+WOeYee`Gnc$W0"5As=o(i:eg)'SarrMAM -e,KN=!#sk?klK'jJ,~> -!B:&NirG%NrrA"iire!S!1JK=JcC`0&H;:_f>tP)SWfYH]#iRcoDZi2"5f`YoD/Cfg)'SarrMJ] -e,KN=!#sY9irR%VJ,~> -!BpJTm/X,urrB%0m/rmZ(@QhSJcCK)&,beJaL.e)IrpC2Wk?X9o?R@=qR1derVHNp6`9q`!TK*g -rr_^*!1h=#!S0Da~> -!BU8Qkl@9errAV$kl[CT(@QhSJcCK)&,kqQcFp?NNJ*LjZbt;RoZmI>qnJ$/rVHNp6`9q`!Tfd" -rr_^*!1V0r!R<`V~> -!B:&NirG%NrrA"hirbVJ(@QhSJcCK)&,l"WeA\nrS!0MJ^!#*mp!3R?qo>,MrVHNp6`9q`!U-H2 -rr_^*!11mh!Q-jH~> -!BpJTm/X,urrB%/m/fOteNI,c'R]X?Lj7Lk$"6u51hu!EY_Bo!WkGNFb -ec,\j!'89i!S0Da~> -!BU8Qkl@9errAV#klNjFEIn.@s+14Lrt#"mgWR4/RYl`_VRFLmk4[=)"72bKiqr`\_Bo!WkGs$o -ec,\j!'/3d!R<`V~> -!B:&NirG%NrrA"girV1?EIn.@s+14Lrt#%qi6fHMVjWaDZ+nT:l1`^-"7NCgk55/`_Bo!WkH9U' -ec,\j!'&-]!Q-jH~> -!BpJTm/X,urrB%/m/t0,!nW#'JcC<$p\tg%jjV&HSVqc;M41N[cf+Hog]%B$J>`&;rs;7h>'PgW -GZo%Gg&D0+!X$9]m/bd$J,~> -!BU8Qkl@9errAV#kl\X%!nW#'JcC<$p\td$kh*taW0iBqQDM".eE$8Urr^c2Z1e+q#t[`mG__#u ->&WHSrr^jS"2;qB!R<`V~> -!B:&NirG%NrrA"gircgo!nW#'JcC<$p\td%leTn$Z_a"SUTqPWg?A4`rr^rE]D)7'#t[`mG_h*! ->&WHSrr^jS"1cS7!Q-jH~> -!BpJTm/X,urrB%.m/pbs5Q666JcC<$nGa'ojj_/OT8e5AL7#!Qc/8$iir9>ZYC4Lks7^#;]_fDF -]PD$Oh#@KU56,-6m/bd$J,~> -!BU8Qkl@9errAV"klY;n5Q666JcC<$nGa'pkh4(gWg\g!PbYS&e)Krtir9>[\;SZ4s7^#;]_fDF -]PD$Oh#@KU56,*5klK'jJ,~> -!B:&NirG%NrrA"fir`Qe5Q666JcC<$nGa'qle^"*[&9=VTs)/Qf]Mf)ir9>\_4&mRs7^#;]_fDF -]PD$Oh#@KU56,!2irR%VJ,~> -!BpJTm/X,urrB%.m/u/Z!2+oCJcC<$kl24ikgm\XToXYEKU/OHbM;Oakl1hIOHA4![.h99ZrltV -rr\no(#@"!!S0Da~> -!BU8Qkl@9errAV"kl]WS!2+oCJcC<$kl24jlJ'LoXIP6&P+o4tdGXNmkl1hLS=SM=[.h99ZrltV -rr\no(#$do!R<`V~> -!B:&NirG%NrrA"firddF!2+oCJcC<$kl24jmGH=0[]#[ZTWPiJfAuN$kl1hOWN"iY[.h99ZrltV -rr\no'\(7b!Q-jH~> -!BpJTm/X,urrB%-m/r^U(%$SPJcC<$iVsJdlIa.bUQU.LJs<+?akH+Zn,ELha#UO"^&bTFhZ!]F -'`aWBm/bd$J,~> -!BU8Qkl@9errAV!kl[1N(%$SPJcC<$iVsJdm+oq"Xe(Q*OJ&elcee*fn,ELhbrrH,^&bTFhZ!]F -'`aN?klK'jJ,~> -!B:&NirG%NrrA"eirbDD(%$SPJcC<$iVsJen);a7\#Q!_SufKCe`-)rn,ELhdm:A6^&bTFhZ!]F -'`aB;irR%VJ,~> -!BpJTm/X,urrB%-m/u];!+pf^JcC<$g&DW]m+TRjV3HRRJ -!BU8Qkl@9errAV!kl^-2!+pf^JcC<$g&DW^mbZ:)YFpu0Nh3Adc.q[_pAY/iP4QBgP,7(9"(hNp -kfDuhc8pI~> -!B:&NirG%NrrA"eire:%!+pf^JcC<$g&DW^nD`!=\ZDBdS>s';e)BcnpAY/iP4QBgP,7(9"(hNo -ilL-\_`*)~> -!BpJTm/X,urrB%,m/tE6!lffkJcC<$df0mWmbH!sVj -!BU8Qkl@9errAUukl\m.!lffkJcC<$df0mXnDM^1Z(dD7N1?r\bM)7Xrr2t3rP&:3rk8Jm&J:$% -^&Vj)rr^7B"i\OH!R<`V~> -!B:&NirG%NrrA"dird(#!lffkJcC<$df0mXo&SEE]<.`iR]*[5dGO?frr2t3rP&:3rk8Jm&J:$% -^&Vj)rr^7B"i/1=!Q-jH~> -!BpJTm/X,urrB%+m/qA/0E-P&JcC<$bPr"MnDDL&WgJNaI#XA(r4W.2rk8I\Jq>?K^&`6Air9,[ -0*$%4m/bd$J,~> -!BU8Qkl@9errAUtklYl)0E-P&JcC<$bPr"Mo&A-9Z_Wh>MOL,Or4W.2rk8I\Jq>?K^&`6Air9,[ -0*#t2klK'jJ,~> -!B:&NirG%NrrA"cira,u0E-P&JcC<$bPr"Mo]FfL]s",oRA[!!r4W.2rk8I\Jq>?K^&`6Air9,[ -0*#k/irR%VJ,~> -!BpJTm/X,urrB%+m/uMl!/?()JcC<$_uBl=oAQU#r4W.2rk8I<\@;_A^&a#6ir9+8!$17Bm/bd$ -J,~> -!BU8Qkl@9errAUtkl]rc!/?()JcC<$_Z'`1jK!t3^&S04^&nPK\-;lG!JeqZrr[uU*95''!R<`V~> -!B:&NirG%NrrA"cire*V!/?()JcC<$_Z'`2kc]^<^&S04^&nPK\-;lG!JeqZrr[uU)r8No!Q-jH~> -!BpJTm/X,urrB%*m/sNm#hX_.JcC<$_>aP\L]"jd!<0\7"h;&Grk8Dgc/\g+fE_M]`U*]W4b*~> -!BU8Qkl@9errAUskl\!f#hX_.JcC<$_>aP\L]"jd!<0\7"h;&Grk8Dgc/\g+fE_MZ`T[EK3e.~> -!B:&NirG%NrrA"birc4\#hX_.JcC<$_>aP\L]"jd!<0\7"h;&Grk8Dgc/\g+fE_MV`T%!:2h1~> -!BpJTm/X,urrB%)m/pSn4T0j2JcC<$_Z'Z)EW!NN!<0\7-%^^qrk8DQmc=BMrB('b`9dTV4b*~> -!BU8Qkl@9errAUrklY)h4T0j2JcC<$_Z'Z)EW!NN!<0\7-%^^qrk8DQmc=BMrB('``9@ -!B:&NirG%NrrA"air`B`4T0j2JcC<$_Z'Z)EW!NN!<0\7-%^^qrk8DQmc=BMrB('^`8^m92h1~> -!BpJTm/X,urrB%)m/u2^!0`!6JcC<$_>aLKrP&72s1SSn&J:!$^&Vj,rr\Gb(uE3u!S0Da~> -!BU8Qkl@9errAUrkl]WV!0`!6JcC<$_>aLKrP&72s1SSn&J:!$^&Vj,rr\Gb(tupm!R<`V~> -!B:&NirG%NrrA"airdgJ!0`!6JcC<$_>aLKrP&72s1SSn&J:!$^&Vj,rr\Gb(Y-Ia!Q-jH~> -!BpJTm/X,urrB%(m/s*`%H)g;JcC<$_Z'Y5P4QBgP,77>"5jUgUVlI"eieN~> -!BU8Qkl@9errAUqkl[RY%H)g;JcC<$_Z'Y5P4QBgP,77>"5jUgTYp!pc8pI~> -!B:&NirG%NrrA"`irbeO%H)g;JcC<$_Z'Y5P4QBgP,77>"5jUgSAX@f_`*)~> -!BpJTm/X,urrB%'m/g)a7Y1Sjs+13drrH?2otCI6>N>_b7K?9%m/bd$J,~> -!BU8Qkl@9errAUpklOT[7Y1Sjs+13drrH?2otCI6>N>_b7K?3#klK'jJ,~> -!B:&NirG%NrrA"_irVmS7Y1Sjs+13drrH?2otCI6>N>_b7K?-!irR%VJ,~> -!BpJTm/X,urrB%'m/u&S!1JK=JcC<$_Z']0=L@h:!jl)%jSo=N!"mr%m/bd$J,~> -!BU8Qkl@9errAUpkl]NK!1JK=JcC<$_Z']0=L@h:!jl)%jSo=N!"dc!klK'jJ,~> -!B:&NirG%NrrA"_ird[?!1JK=JcC<$_Z']0=L@h:!jl)%jSo=N!"dPpirR%VJ,~> -!BpJTm/X,urrB%&m/rjY%Gl[9JcC<$_Z'`4@r&aS^&u#`A,#'a"5XIeSAFRneieN~> -!BU8Qkl@9errAUokl[=R%Gl[9JcC<$_Z'`4@r&aS^&u#`A,#'a"5XIeRDJ+gc8pI~> -!B:&NirG%NrrA"^irbPH%Gl[9JcC<$_Z'`4@r&aS^&u#`A,#'a"5XIeQ,2J]_`*)~> -!BpJTm/X,urrB%%m/p2c55g'4JcC<$_>ai%Dd%CAO*FiHj5^.ArB:3Y_!M0R4b*~> -!BU8Qkl@9errAUnklX]]55g'4JcC<$_>ai%Dd%CAO*FiHj5^.ArB:3W_!(mF3e.~> -!B:&NirG%NrrA"]ir`!U55g'4JcC<$_>ai%Dd%CAO*FiHj5^.ArB:3U^uGI52h1~> -!BpJTm/X,urrB%%m/u)Z!/uL/JcC<$^Ae;ub/*9!rr\2[(Ycam!S0Da~> -!BU8Qkl@9errAUnkl]QS!/uL/JcC<$^Ae;ub/*9!rr\2[(YHOf!R<`V~> -!B:&NirG%NrrA"]ird^F!/uL/JcC<$^Ae;ub/*9!rr\2[(=L"Y!Q-jH~> -!BpJTm/X,urrB%$m/s9f#h=M+JcC<$S,WT@#Q^m=m/bd$J,~> -!BU8Qkl@9errAUmkl[d`#h=M+JcC<$S,WT@#Q^g;klK'jJ,~> -!B:&NirG%NrrA"\irbtU#h=M+JcC<$S,WT@#Q^X6irR%VJ,~> -!BpJTm/X,urrB%#m/pYp./JMpJcC<$Sc8fg-idSfm/bd$J,~> -!BU8Qkl@9errAUlklY/j./JMpJcC<$Sc8fg-idMdklK'jJ,~> -!B:&NirG%NrrA"[ir`Hb./JMpJcC<$Sc8fg-idGbirR%VJ,~> -!BpJTm/X,urrB%#m/u>g!-j(pJcC<$Sc8e:!$1(5m/bd$J,~> -!BU8Qkl@9errAUlkl]c^!-j(pJcC<$Sc8e:!$'k0klK'jJ,~> -!B:&NirG%NrrA"[irdpQ!-j(pJcC<$Sc8e:!#sS)irR%VJ,~> -!BpJTm/X,urrB%"m/sd"!kj0bJcC<$TDo#,!X,sFm/bd$J,~> -!BU8Qkl@9errAUkkl\6p!kj0bJcC<$TDo#,!X,jCklK'jJ,~> -!B:&NirG%NrrA"ZircIf!kj0bJcC<$TDo#,!X,^?irR%VJ,~> -!BpJTm/X,urrB%!m/qS5)s`(TJcC<$U&P5\)ZY,qm/bd$J,~> -!BU8Qkl@9errAUjklZ)/)s`(TJcC<$U&P5\)ZY&oklK'jJ,~> -!B:&NirG%NrrA"Yira?&)s`(TJcC<$U&P5\)ZXrlirR%VJ,~> -!BpJTm/X,urrB%!m0)]6!)NTFs+13$s.fSsr_EMRlFcKbeieN~> -!BU8Qkl@9errAUjklg-.!)NTFs+13$s.fSsr_EMRk.KpZc8pI~> -!B:&NirG%NrrA"Yirn9u!)NTFs+13$s.fSsr_EMPi4S(N_`*)~> -!BpJTm/X,urrB$um/t`I!0r-8JcC<$U]1F]!"dPim/bd$J,~> -!BU8Qkl@9errAUikl]3B!0r-8JcC<$U]1F]!"dGfklK'jJ,~> -!B:&NirG%NrrA"Xird@5!0r-8JcC<$U]1F]!"[/_irR%VJ,~> -!BpJTm/X,urrB$tm/rs\#1nG+JcC<$V>gYL"ot:,m/bd$J,~> -!BU8Qkl@9errAUhkl[IV#1nG+JcC<$V>gYL"ot4*klK'jJ,~> -!B:&NirG%NrrA"Wirb\L#1nG+JcC<$V>gYL"ot(&irR%VJ,~> -!BpJTm/X,urrB$sm/pVo.J&,jJcC<$VuHkj.0*Yam/bd$J,~> -!BU8Qkl@9errAUgklY,i.J&,jJcC<$VuHkj.0*S_klK'jJ,~> -!B:&NirG%NrrA"Vir`Ea.J&,jJcC<$VuHkj.0*M]irR%VJ,~> -!BpJTm/X,urrB$sm/uE!!*XsRJcC<$VuHj&!%R'?m/bd$J,~> -!BU8Qkl@9errAUgkl]im!*XsRJcC<$VuHj&!%Hj:klK'jJ,~> -!B:&NirG%NrrA"Vire!`!*XsRJcC<$VuHj&!%?R3irR%VJ,~> -!BpJTm/X,urrB$rm/tH=!1/9:JcC<$WW*'e!"?uZm/bd$J,~> -!BU8Qkl@9errAUfkl\p6!1/9:JcC<$WW*'e!"?lWklK'jJ,~> -!B:&NirG%NrrA"Uird(*!1/9:JcC<$WW*'e!"?ZQirR%VJ,~> -!BpJTm/X,urrB$qm/rjY#gIr#JcC<$X8`:H#QUC(m/bd$J,~> -!BU8Qkl@9errAUekl[=R#gIr#JcC<$X8`:H#QU:%klK'jJ,~> -!B:&NirG%NrrA"TirbPH#gIr#JcC<$X8`:H#QU.!irR%VJ,~> -!BpJTm/X,urrB$pm/pet,O^3`JcC<$XoALl,622]m/bd$J,~> -!BU8Qkl@9errAUdklY;n,O^3`JcC<$XoALl,62,[klK'jJ,~> -!B:&NirG%NrrA"Sir`Tf,O^3`JcC<$XoALl,62&YirR%VJ,~> -!BpJTm/X,urrB$pm0)T+!(m0@s+13$s0)G*r^d)DkI0aYeieN~> -!BU8Qkl@9errAUdklg$"!(m0@s+13$s0)G*r^d)Cj0n1Qc8pI~> -!B:&NirG%NrrA"Sirn0j!(m0@s+13$s0)G*r^d)Bh6u>E_`*)~> -!BpJTm/X,urrB$om/toM!/,q'JcC<$YQ"]X!"[Ygm/bd$J,~> -!BU8Qkl@9errAUckl]?E!/,q'JcC<$YQ"]X!"[McklK'jJ,~> -!B:&NirG%NrrA"RirdO9!/,q'JcC<$YQ"]X!"R8]irR%VJ,~> -!BpJTm/X,urrB$nm/s -!BU8Qkl@9errAUbkl[gb!k!UZJcC<$Z2Xp6!Wo:,klK'jJ,~> -!B:&NirG%NrrA"Qirc"W!k!UZJcC<$Z2Xp6!Wo+'irR%VJ,~> -!BpJTm/X,urrB$mm/q_9&DD^8JcC<$Zi:-]&-.*am/bd$J,~> -!BU8Qkl@9errAUaklZ53&DD^8JcC<$Zi:-]&-.$_klK'jJ,~> -!B:&NirG%NrrA"PiraK*&DD^8JcC<$Zi:-]&--p\irR%VJ,~> -!BpJTm/X,urrB$mm0)cM!%[Vks+13$s0_k0nga]7m'H'[eieN~> -!BU8Qkl@9errAUaklg3D!%[Vks+13$s0_k0nga]6kd0LSc8pI~> -!B:&NirG%NrrA"Pirn@6!%[Vks+13$s0_k0nga]4ij7YG_`*)~> -!BpJTm/X,urrB$lm0)Ds!)rlJs+13$s0r"2r_ieFij.qPeieN~> -!BU8Qkl@9errAU`klfij!)rlJs+13$s0r"2r_ieEhQlAHc8pI~> -!B:&NirG%NrrA"Oirn!]!)rlJs+13$s0r"2r_ieDfWsN<_`*)~> -!BpJTm/X,urrB$km/tNB!.oe%JcC<$\,QP^!"[8Xm/bd$J,~> -!BU8Qkl@9errAU_kl\s:!.oe%JcC<$\,QP^!"[,TklK'jJ,~> -!B:&NirG%NrrA"Nird..!.oe%JcC<$\,QP^!"QlNirR%VJ,~> -!BpJTm/X,urrB$jm/sNm!NL_NJcC<$\c2c3! -!BU8Qkl@9errAU^kl\!f!NL_NJcC<$\c2c3! -!B:&NirG%NrrA"Mirc4\!NL_NJcC<$\c2c3! -!BpJTm/X,urrB$im/r"A$-Ii!JcC<$]DhuU#loX^m/bd$J,~> -!BU8Qkl@9errAU]klZM;$-Ii!JcC<$]DhuU#loR\klK'jJ,~> -!B:&NirG%NrrA"Lirac2$-Ii!JcC<$]DhuU#loIYirR%VJ,~> -!BpJTm/X,urrB$hm/pYp)<6;JJcC<$^&J2p)$"!Gm/bd$J,~> -!BU8Qkl@9errAU\klY2k)<6;JJcC<$^&J2p)$!sFklK'jJ,~> -!B:&NirG%NrrA"Kir`Hb)<6;JJcC<$^&J2p)$!jCirR%VJ,~> -!BpJTm/X,urrB$hm0)W9!&=+ss+13$s1eR:oJ$>/kcX:ReieN~> -!BU8Qkl@9errAU\klg'0!&=+ss+13$s1eR:oJ$>.jK@_Jc8pI~> -!B:&NirG%NrrA"Kirn7$!&=+ss+13$s1eR:oJ$>-hlbu?_`*)~> -!BpJTm/X,urrB$gm/u,g!)\=IJcC<$^]+C5!$g:$m/bd$J,~> -!BU8Qkl@9errAU[kl]T`!)\=IJcC<$^]+C5!$g1!klK'jJ,~> -!B:&NirG%NrrA"JirdaS!)\=IJcC<$^]+C5!$]moirR%VJ,~> -!BpJTm/X,urrB$fm/tKB!-!MhJcC<$_>aUV!"d;Sm/bd$J,~> -!BU8Qkl@9errAUZkl\p9!-!MhJcC<$_>aUV!"[)NklK'jJ,~> -!B:&NirG%NrrA"Iird+.!-!MhJcC<$_>aUV!"ZoIirR%VJ,~> -!BpJTm/X,urrB$em/sg%!02X1JcC<$_uBh!!!]p5m/bd$J,~> -!BU8Qkl@9errAUYkl\9r!02X1JcC<$_uBh!!!Ta1klK'jJ,~> -!B:&NirG%NrrA"HircLh!02X1JcC<$_uBh!!!TU-irR%VJ,~> -!BpJTm/X,urrB$dm/rgY!ighOJcC<$`W$%?!Wedjm/bd$J,~> -!BU8Qkl@9errAUXkl[:R!ighOJcC<$`W$%?!We[gklK'jJ,~> -!B:&NirG%NrrA"GirbMH!ighOJcC<$`W$%?!WeOcirR%VJ,~> -!BpJTm/X,urrB$cm/qn>#f;/mJcC<$a8Z7Y#QTFTm/bd$J,~> -!BU8Qkl@9errAUWklZD8#f;/mJcC<$a8Z7Y#QT@RklK'jJ,~> -!B:&NirG%NrrA"FiraW.#f;/mJcC<$a8Z7Y#QT4NirR%VJ,~> -!BpJTm/X,urrB$bm/pl!'%VX6JcC<$ao;Io&ccI@m/bd$J,~> -!BU8Qkl@9errAUVklYAp'%VX6JcC<$ao;Io&ccC>klK'jJ,~> -!B:&NirG%NrrA"Eir`Zh'%VX6JcC<$ao;Io&cc= -!BpJTm/X,urrB$bm0)]I!$:NYs+13$s3(EFm2c7#lDX(NeieN~> -!BU8Qkl@9errAUVklg-@!$:NYs+13$s3(EFm2c7"k,@MFc8pI~> -!B:&NirG%NrrA"Eirn:2!$:NYs+13$s3(EFm2c6ui2GZ:_`*)~> -!BpJTm/X,urrB$am0)T,!%R>ds+13$s3:QHlm_uikGR\JeieN~> -!BU8Qkl@9errAUUklg'$!%R>ds+13$s3:QHlm_uhjJV5Cc8pI~> -!B:&NirG%NrrA"Dirn3l!%R>ds+13$s3:QHlm_ughP]B7_`*)~> -!BpJTm/X,urrB$`m0)5p!&jD!s+13$s3L]JnhpIth59Q?eieN~> -!BU8Qkl@9errAUTklf]h!&jD!s+13$s3L]JnhpIsg8=*8c8pI~> -!B:&NirG%NrrA"Cirmj[!&jD!s+13$s3L]JnhpIre>D7,_`*)~> -!BpJTm/X,urrB$_m0(u_!(6O4s+13$s3^iLpd5$(etqa7eieN~> -!BU8Qkl@9errAUSklfEW!(6O4s+13$s3^iLpd5$(d\Z1/c8pI~> -!B:&NirG%NrrA"BirmUK!(6O4s+13$s3^iLpd5$'c)'G$_`*)~> -!BpJTm/X,urrB$^m0(]O!)`WEs+13$s3puNqb[>1cD9h.eieN~> -!BU8Qkl@9errAURklf-G!)`WEs+13$s3puNqb[>1b,"8&c8pI~> -!B:&NirG%NrrA"Airm=;!)`WEs+13$s3puNqb[>0`MDMp_`*)~> -!BpJTm/X,urrB$]m/t9=!+(6VJcC<$e,KMV!"m/Em/bd$J,~> -!BU8Qkl@9errAUQkl\a5!+(6VJcC<$e,KMV!"cuAklK'jJ,~> -!B:&NirG%NrrA"@ircq*!+(6VJcC<$e,KMV!"cf -!BpJTm/X,urrB$\m0's,!,DLas+13$s4@8Rrb;E?\YAHleieN~> -!BU8Qkl@9errAUPkleF%!,DLas+13$s4@8Rrb;E?[\E!ec8pI~> -!B:&NirG%NrrA"?irlUo!,DLas+13$s4@8Rrb;E?Z(g7Z_`*)~> -!BpJTm/X,urrB$[m/s^#!,mGgJcC<$fDbqk!!fm)m/bd$J,~> -!BU8Qkl@9errAUOkl\0q!,mGgJcC<$fDbqk!!fd&klK'jJ,~> -!B:&NirG%NrrA">irc@f!,mGgJcC<$fDbqk!!fU!irR%VJ,~> -!BpJTm/X,urrB$Zm/s?n!-NkmJcC<$g&D.s!!fNsm/bd$J,~> -!BU8Qkl@9errAUNkl[gf!-NkmJcC<$g&D.s!!]?oklK'jJ,~> -!B:&NirG%NrrA"=irc%\!-NkmJcC<$g&D.s!!]3kirR%VJ,~> -!BpJTm/X,urrB$Ym/s3i!.0:sJcC<$g]%A&!!] -!BU8Qkl@9errAUMkl[[b!.0:sJcC<$g]%A&!!]3jklK'jJ,~> -!B:&NirG%NrrA" -!BpJTm/X,urrB$Xm/s$b!.oe%JcC<$h>[S/!!K!em/bd$J,~> -!BU8Qkl@9errAULkl[L[!.oe%JcC<$h>[S/!!JmbklK'jJ,~> -!B:&NirG%NrrA";irb_Q!.oe%JcC<$h>[S/!!Ja^irR%VJ,~> -!BpJTm/X,urrB$Wm/rj\!.oe%JcC<$hu -!BU8Qkl@9errAUKkl[@V!.oe%JcC<$hu -!B:&NirG%NrrA":irbSL!.oe%JcC<$hu -!BpJTm/X,urrB$Vm/s'a!.0:sJcC<$iVs",!!8mbm/bd$J,~> -!BU8Qkl@9errAUJkl[OZ!.0:sJcC<$iVs",!!8d_klK'jJ,~> -!B:&NirG%NrrA"9irbbP!.0:sJcC<$iVs",!!8X[irR%VJ,~> -!BpJTm/X,urrB$Um/rj]!-NkmJcC<$j8T4(!!Jg]m/bd$J,~> -!BU8Qkl@9errAUIkl[@W!-NkmJcC<$j8T4(!!Ja[klK'jJ,~> -!B:&NirG%NrrA"8irbSM!-NkmJcC<$j8T4(!!JUWirR%VJ,~> -!BpJTm/X,urrB$Tm0'*e!,qjfs+13$s6'Cbrbhc@Tpk?LeieN~> -!BU8Qkl@9errAUHkldR^!,qjfs+13$s6'Cbrbhc@SsnmEc8pI~> -!B:&NirG%NrrA"7irkeS!,qjfs+13$s6'Cbrbhc?R[W7;_`*)~> -!BpJTm/X,urrB$Sm0'9k!,DLas+13$s69Odrb;E -!BU8Qkl@9errAUGkldac!,DLas+13$s69Odrb;E;URC?Ic8pI~> -!B:&NirG%NrrA"6irktY!,DLas+13$s69Odrb;E;T:+^?_`*)~> -!BpJTm/X,urrB$Rm0'Ep!*9#Ks+13$s6K[fr)Ne'WgN/SeieN~> -!BU8Qkl@9errAUFkldmi!*9#Ks+13$s6K[fr)Ne'VjQ]Lc8pI~> -!B:&NirG%NrrA"5irl+_!*9#Ks+13$s6K[fr)Ne'UR:'B_`*)~> -!BpJTm/X,urrB$Qm0'Wr!)`NBs+13$s6]ghpe_"oYa=_XeieN~> -!BU8Qkl@9errAUEkle*k!)`NBs+13$s6]ghpe_"oXdA8Qc8pI~> -!B:&NirG%NrrA"4irl:`!)`NBs+13$s6]ghpe_"oW0cNF_`*)~> -!BpJTm/X,urrB$Pm0's3!(6=.s+13$s6osjnj -!BU8Qkl@9errAUDkleF+!(6=.s+13$s6osjnj -!B:&NirG%NrrA"3irlUu!(6=.s+13$s6osjnj -!BpJTm/X,urrB$Om0(?E!&j1ps+13$s7-*llo"h\`0K]jeieN~> -!BU8Qkl@9errAUCkleg>!&j1ps+13$s7-*llo"h\_3O6cc8pI~> -!B:&NirG%NrrA"2irm"2!&j1ps+13$s7-*llo"h[]TqLX_`*)~> -!BpJTm/X,urrB$Nm0(]W!%R&\s+13$s7?6nj=1-PcBR\seieN~> -!BU8Qkl@9errAUBklf-O!%R&\s+13$s7?6nj=1-Pb*;,kc8pI~> -!B:&NirG%NrrA"1irm=C!%R&\s+13$s7?6nj=1-O`K]B`_`*)~> -!BpJTm/X,urrB$Mm0(ui!$0mHs+13$s7QBph&QJFes#J%eieN~> -!BU8Qkl@9errAUAklfE`!$0mHs+13$s7QBph&QJEdZ`nrc8pI~> -!B:&NirG%NrrA"0irmUT!$0mHs+13$s7QBph&QJDc'./g_`*)~> -!BpJTm/X,urrB$Lm0)H)!#!/"s+13$s7cNr_@ci(j-&d1eieN~> -!BU8Qkl@9errAU@klflu!#!/"s+13$s7cNr_@ci'hid4)c8pI~> -!B:&NirG%NrrA"/irn$h!#!/"s+13$s7cNr_@ci&fok@r_`*)~> -!BpJTm/X,urrB$Lm02n=9)o6tJcC<$JcGQG"KD_-9BD<'!S0Da~> -!BU8Qkl@9errAU@klp>18cT-sJcC<$JcGQG"KD_-9&Yos!R<`V~> -!B:&NirG%NrrA"/is"Jt8,rpqJcC<$JcGQG"KD_-8DB9e!Q-jH~> -!BpJTm/X,urrB$LmJlPVl=9krNe.4]s+14Irre>`!+bAVm/bd$J,~> -!BU8Qkl@9errAU@l2TuNk$e;lNe.4]s+14Irre>`!+P)PklK'jJ,~> -!B:&NirG%NrrA"/j8\-Bi*ZNdNe.4]s+14Irre>`!+=`HirR%VJ,~> -!BpJTm/X,urrB$LmJZDTJH5airIP!"s+14Mrri:>!!.Y2m/bd$J,~> -!BU8Qkl@9errAU@l2BiLIfTOgrIP!"s+14Mrri:>!!.S0klK'jJ,~> -!B:&NirG%NrrA"/j8J!@HN=+crIP!"s+14Mrri:>!!.G,irR%VJ,~> -!BpJTm/X,urrB$LmJQ>SRg/phoR[$ns+11QoM5GlRuQe9eieN~> -!BU8Qkl@9errAU@l29cKQj*OdoR[$ns+11QoM5GkR#U>2c8pI~> -!B:&NirG%NrrA"/j8@p?PQh+`oR[$ns+11QoM5GkP`=](_`*)~> -!BpJTm/X,urrB$LmJH8RZNgIbj+75]s+C=Sj"UN=Z]+8PeieN~> -!BU8Qkl@9errAU@l20]JYQk._j+75]s+C=Sj"UN=Y`.fIc8pI~> -!B:&NirG%NrrA"/j87j>Ws8VZj+75]s+C=Sj"UN=X,Q'>_`*)~> -!BpJTm/X,urrB$LmJ?2Qas-m(b(9SDs+UIUar(1(b)>WfeieN~> -!BU8Qkl@9errAU@l2'WI`ZkI$b(9SDs+UIUar(1(`f''^c8pI~> -!B:&NirG%NrrA"/j8.d=_'/jsb(9SDs+UIUar(1'_2I=S_`*)~> -!BpJTm/X,urrB$LmJ6,PgcYWDWe(2$s+gUWWX/YggktJ"eieN~> -!BU8Qkl@9errAU@l1sQHffT6@We(2$s+gUWWX/Yffo#"pc8pI~> -!B:&NirG%NrrA"/j8%^ -!BpJTm/X,urrB$LmJ-&Ok["5iO+I=^s,$aYNr]5ek_\[-eieN~> -!BU8Qkl@9errAU@l1jKGjBV`dO+I=^s,$aYNr]5djGE+%c8pI~> -!B:&NirG%NrrA"/j7qX;hc^!\O+I=^s,$aYNr]5ahhg@o_`*)~> -!BpJTm/X,urrB$LmIooMKED3Qnq$gls,I$]nl#MjKSSpqeieN~> -!BU8Qkl@9errAU@l1X?EJcc!Onq$gls,I$]nl#MjJqrRkc8pI~> -!B:&NirG%NrrA"/j7_L9Iff[Lnq$gls,I$]nl#MjIu!%b_`*)~> -!BpJTm/X,urrB$LmIfiLYR:F]g4B9Ts,[0_g+*.2Y_MNGeieN~> -!BU8Qkl@9errAU@l1O9DXU>+Zg4B9Ts,[0_g+*.2XbQ'@c8pI~> -!B:&NirG%NrrA"/j7VF8W!`SUg4B9Ts,[0_g+*.2W.s=5_`*)~> -!BpJTm/X,urrB$LmI]cKb:!?%[=S@/s,m -!BU8Qkl@9errAU@l1F3Ca!Uiu[=S@/s,m -!B:&NirG%NrrA"/j7M@7_Bo6o[=S@/s,m -!BpJTm/X,urrB$LmIT]Ki_9CSK`6Q&JcD#8"oa/V!);I+m/bd$J,~> -!BU8Qkl@9errAU@l1=-ChFmnNK`6Q&JcD#8"oa/V!)27&klK'jJ,~> -!B:&NirG%NrrA"/j7D:7fLc,FK`6Q&JcD#8"oa/V!(tmsirR%VJ,~> -!BpJTm/X,urrB$LmIKWJm!Jj78G%K5JcD):"nY=c!ds?em/bd$J,~> -!BU8Qkl@9errAU@l14'Bk^!:18G%K5JcD):"nY=c!da'_klK'jJ,~> -!B:&NirG%NrrA"/j7;46icbG(8G%K5JcD):"nY=c!dEXVirR%VJ,~> -!BpJTm/X,urrB$LmI9KGZ4?p[c%5nGs-`libp*3!Z@VBDeieN~> -!BU8Qkl@9errAU@l1!p?Y7CUXc%5nGs-`libp*3!YCYp=c8pI~> -!B:&NirG%NrrA"/j7)(3WX]"Rc%5nGs-`libp*2uWe'12_`*)~> -!BpJTm/X,urrB$LmI0EFc7f5(Q\#0fs-s#kQO!RFc@P?amFFFN~> -!BU8Qkl@9errAU@l0mj>b:`i$Q\#0fs-s#kQO!REbCSmZl-;>?~> -!B:&NirG%NrrA"/j6u"2`\%5sQ\#0fs-s#kQO!RD`e!.Oj23g+~> -!BpJTm/X,urrB$LmI'?Fk@+Dk>4[=FJcDAB"nPmt!+P,BmJlPSeieN~> -!BU8Qkl@9errAU@l0dd>j'Vie>4[=FJcDAB"nPmt!+=i -!B:&NirG%NrrA"/j6kq2h-L']>4[=FJcDAB"nPmt!++K4j8\-?_`*)~> -!BpJTm/X,urrB$LmHj3CS.#B -!BU8Qkl@9errAU@l0RX;R1''9eUdaOs.TGqeK"VuR=XW$klK'jJ,~> -!B:&NirG%NrrA"/j6Ye/PmdX5eUdaOs.TGqeK"VuQ%@uoirR%VJ,~> -!BpJTm/X,urrB$LmHa-CaXR8sQ2Z@7JcDSH"oabn!%Q*AmJQ>PeieN~> -!BU8Qkl@9errAU@l0IR;`[LloQ2Z@7JcDSH"oabn!%Gp=l29cHc8pI~> -!B:&NirG%NrrA"/j6P_/^aK0hQ2Z@7JcDSH"oabn!%>X6j8@p<_`*)~> -!BpJTm/X,urrB$LmHX'Bl>ck):[ -!BU8Qkl@9errAU@l0@L:k&:;#:[ -!B:&NirG%NrrA"/j6GY.i,&Go:[ -!BpJTm/X,urrB$LmHEp?T+CuA]n-37s/H#$]c-q_T7QD*m/bd$J,~> -!BU8Qkl@9errAU@l0.@7SIbc?]n-37s/H#$]c-q_SUp&$klK'jJ,~> -!B:&NirG%NrrA"/j65M+R1B9:]n-37s/H#$]c-q^R=XDoirR%VJ,~> -!BpJTm/X,urrB$LmH -!BU8Qkl@9errAU@l0%:7c8Ye*Gl!!kJcDkP"o -!B:&NirG%NrrA"/j6,G+a>O#"Gl!!kJcDkP"o -!BpJTm/X,urrB$LmH3d>l?EF31Y%'VJcDqR"k>C/"F03_mJ#uKeieN~> -!BU8Qkl@9errAU@l/q46k&pk-1Y%'VJcDqR"k>C/"ErpYl1aECc8pI~> -!B:&NirG%NrrA"/j6#A*i,]#$1Y%'VJcDqR"k>C/"EWLPj7hR7_`*)~> -!BpJTm/X,urrB$LmH!X-JcE(V"oXAc!$BF9mIfiIeieN~> -!BU8Qkl@9errAU@l/_(4a;t-JcE(V"oXAc!$944l1O9Ac8pI~> -!B:&NirG%NrrA"/j5f5(_]8^_N;\>-JcE(V"oXAc!$/t.j7VF5_`*)~> -!BpJTm/X,urrB$LmGmR;iEcNb52LkjJcE.X"l;EC!FF`9mI]cHeieN~> -!BU8Qkl@9errAU@l/V"3h-9s\52LkjJcE.X"l;EC!F4H3l1F3@c8pI~> -!B:&NirG%NrrA"/j5]/'f3/1T52LkjJcE.X"l;EC!F"*+j7M@4_`*)~> -!BpJTm/X,urrB$LmG[F9W##FCRf7m -!BU8Qkl@9errAU@l/Ck1VAB4ARf7mc8pI~> -!B:&NirG%NrrA"/j5K#%Tb[V;Rf7m -!BpJTm/X,urrB$LmGR@8gJIqN6fWatJcE@^"lhrM!)_L%mIBQEeieN~> -!BU8Qkl@9errAU@l/:e0fM;JI6fWatJcE@^"lhrM!)M6ul1+!=c8pI~> -!B:&NirG%NrrA"/j5Ar$dS0]A6fWatJcE@^"lhrM!):mmj72.1_`*)~> -!BpJTm/X,urrB$LmG@46S.Yf2PPp(4JcELb"oXVo!"tfQmI0ECeieN~> -!BU8Qkl@9errAU@l/(Y.R1TE.PPp(4JcELb"oXVo!"kWMl0mj;c8pI~> -!B:&NirG%NrrA"/j5/f"Pn=!*PPp(4JcELb"oXVo!"kKIj6u"/_`*)~> -!BpJTm/X,urrB$LmG7.5fMDPJ4P55bJcERd"kYp;!)V=!mI'?BeieN~> -!BU8Qkl@9errAU@l.tS-e4ouD4P55bJcERd"kYp;!)D$pl0dd:c8pI~> -!B:&NirG%NrrA"/j5&`!cV+<=4P55bJcERd"kYp;!)1^ij6kq._`*)~> -!BpJTm/X,urrB$LmG%"3UDNt:LAQQ%JcE^h"oF#[!#VJ^mHj3@eieN~> -!BU8Qkl@9errAU@l.bG+TGRY7LAQQ%JcE^h"oF#[!#VA[l0RX8c8pI~> -!B:&NirG%NrrA"/j4iStS/2/2LAQQ%JcE^h"oF#[!#M/Vj6Ye,_`*)~> -!BpJTm/X,urrB$LmFpq2hHU']/]rYEJcEdj"j/Cs!F4K4mHa-?eieN~> -!BU8Qkl@9errAU@l.YA*g0+LW/]rYEJcEdj"j/Cs!F"3.l0IR7c8pI~> -!B:&NirG%NrrA"/j4`MseQ;hP/]rYEJcEdj"j/Cs!Edm'j6P_+_`*)~> -!BpJTm/X,urrB$LmF^e0^)m=VB'k0LJcEpn"mon'!$Aq+mHO!=eieN~> -!BU8Qkl@9errAU@l.G5(],gqRB'k0LJcEpn"mon'!$8b'l07F5c8pI~> -!B:&NirG%NrrA"/j4NAq[N,>LB'k0LJcEpn"mon'!$/M!j6>S)_`*)~> -!BpJTm/X,urrB$LmFU_0j`1P*'qkPWs+13rrs&Iq'`\GYjalg_m/bd$J,~> -!BU8Qkl@9errAU@l.>/(iG\r#'qkPWs+13rrs&Iq'`\DViIU7WklK'jJ,~> -!B:&NirG%NrrA"/j4E;qgMI)o'qkPWs+13rrs&Iq'`\DSgO\DKirR%VJ,~> -!BpJTm/X,urrB$LmFCS-a?0G&2qW]]JcF-t"kYa6!'J>RmH3d:eieN~> -!BU8Qkl@9errAU@l.,#%`B+&"2qW]]JcF-t"kYa6!'A/Nl/q42c8pI~> -!B:&NirG%NrrA"/j43/n^cDGq2qW]]JcF-t"kYa6!'7oHj6#A&_`*)~> -!BpJTm/X,urrB$LmF:M-m$JLf"`a!^s+14#rs%q3"TT:)m"+Qcm/bd$J,~> -!BU8Qkl@9errAU@l."r%k`lk_"`a!^s+14#rs%q3"TT:&k^i![klK'jJ,~> -!B:&NirG%NrrA"/j4*)nifOoT"`a!^s+14#rs%q3"TT7!idp.OirR%VJ,~> -!BpJTm/X,urrB$LmF(A+jCJ>l(7P2Qs+14'rs&Fj('"AHjFQ^Ym/bd$J,~> -!BU8Qkl@9errAU@l-ef#i*ucf(7P2Qs+14'rs&Fj('"AFi.:.QklK'jJ,~> -!B:&NirG%NrrA"/j3lrlg0k!^(7P2Qs+14'rs&Fj('"ADg4A;EirR%VJ,~> -!BpJTm/X,urrB$LmEk5(_)_Pr1;e\CJcFL)"iE(q!'7rImG[F5eieN~> -!BU8Qkl@9errAU@l-SYu^,Z/n1;e\CJcFL)"iE(q!'.cEl/Ck-c8pI~> -!B:&NirG%NrrA"/j3Zfi\MsQh1;e\CJcFL)"iE(q!'%N?j5K#!_`*)~> -!BpJTm/X,urrB$LmEY)&SK%V0DX`5WJcFX-"n6C0!$%P\mGI:3eieN~> -!BU8Qkl@9errAU@l-AMsRi;>-DX`5WJcFX-"n6C0!#qDYl/1_+c8pI~> -!B:&NirG%NrrA"/j3HZgQQ#o)DX`5WJcFX-"n6C0!#q8Uj58kt_`*)~> -!BpJTm/X,urrB$LmEP#&jE:h0#^,Qds+141rs%n6#QP0SjFQ^Tm/bd$J,~> -!BU8Qkl@9errAU@l-8Gsi,f8*#^,Qds+141rs%n6#QP0Qi.:.LklK'jJ,~> -!B:&NirG%NrrA"/j3?Tgg2RE!#^,Qds+141rs%n6#QP0Ng4A;@irR%VJ,~> -!BpJTm/X,urrB$LmE=l$d8U,H'9;j=s+145rs&7Y'*&&4d=L]?m/bd$J,~> -!BU8Qkl@9errAU@l-&;qc;O`D'9;j=s+145rs&7Y'*&&3c@P68klK'jJ,~> -!B:&NirG%NrrA"/j3-HeaADs<'9;j=s+145rs&7Y'*&&1aFWC,irR%VJ,~> -!BpJTm/X,urrB$LmE+`"^HDPs,,bEks+149rs&J#+ohU+^Obe+m/bd$J,~> -!BU8Qkl@9errAU@l,i/o]0$&n,,bEks+149rs&J#+ohU*]7K5#klK'jJ,~> -!B:&NirG%NrrA"/j2p -!BpJTm/X,urrB$LmDnStW$q]H1:Dc6JcG-;"h$/d!%FjtmF^e,eieN~> -!BU8Qkl@9errAU@l,W#lVC2EE1:Dc6JcG-;"h$/d!%=^ql.G5$c8pI~> -!B:&NirG%NrrA"/j2^0`TdKg?1:Dc6JcG-;"h$/d!%4Ikj4NAm_`*)~> -!BpJTm/X,urrB$LmDeMtl]E"a!'@rHs+14?rs$5"!!!jul[eHTm/bd$J,~> -!BU8Qkl@9errAU@l,MrlkDpG[!'@rHs+14?rs$5"!!!jskCMmLklK'jJ,~> -!B:&NirG%NrrA"/j2U*`iJSKP!'@rHs+14?rs$5"!!!gniIU%@irR%VJ,~> -!BpJTm/X,urrB$LmDSArjb"3H!(=nZs+14Crs$P4!!![bjalgLm/bd$J,~> -!BU8Qkl@9errAU@l,;fjiIMXB!(=nZs+14Crs$P4!!![`iIU7DklK'jJ,~> -!B:&NirG%NrrA"/j2Bs^gO9e9!(=nZs+14Crs$P4!!![]gO\D8irR%VJ,~> -!BpJTm/X,urrB$LmDA5pid219!*J$-s+14Grs%7\!!!OVidpLGm/bd$J,~> -!BU8Qkl@9errAU@l,)ZhhK]V3!*J$-s+14Grs%7\!!!OThLXq?klK'jJ,~> -!B:&NirG%NrrA"/j20g\fQI`)!*J$-s+14Grs%7\!!!LPfR`)3irR%VJ,~> -!BpJTm/X,urrB$LmD/)nh/Nf&!(b%Zs+14Krs$D4!!!CHh1=t@m/bd$J,~> -!BU8Qkl@9errAU@l+lNfg2@?!!(b%Zs+14Krs$D4!!!CFg4AM9klK'jJ,~> -!B:&NirG%NrrA"/j1s[Ze8,Km!(b%Zs+14Krs$D4!!!CCe:HZ-irR%VJ,~> -!BpJTm/X,urrB$LmCqrlg275t!(">Ms+11S^-M`!$?"RKmEb/#eieN~> -!BU8Qkl@9errAU@l+ZBdenbZn!(">Ms+11S^-M`!$>e:El-JSpc8pI~> -!B:&NirG%NrrA"/j1aOXctWmf!(">Ms+11S^-M`!$>Rq=j3Q`d_`*)~> -!BpJTm/X,urrB$LmC_fkgiX,-!$@a1JcCN*#QC58!!!OPgk"k;m/bd$J,~> -!BU8Qkl@9errAU@l+H6cflIZ(!$@a1JcCN*#QC58!!!ONfn&D4klK'jJ,~> -!B:&NirG%NrrA"/j1OCWdr5cs!$@a1JcCN*#QC58!!!LJdt-Q(irR%VJ,~> -!BpJTm/X,urrB$LmCMZihg6":!%X];JcCZ.#PjuB!!![Zhgt1 -!BU8Qkl@9errAU@l+6*agNaD3!%X];JcCZ.#PjuB!!!XWgO\V4klK'jJ,~> -!B:&NirG%NrrA"/j1=7UeohZ+!%X];JcCZ.#PjuB!!!XTeq)l)irR%VJ,~> -!BpJTm/X,urrB$LmC;Ngl&-/S!#pdaJcCf2#OmQh!!!Xil%/6Dm/bd$J,~> -!BU8Qkl@9errAU@l+#s_jbXQL!#pdaJcCf2#OmQh!!!Ufjal[ -!B:&NirG%NrrA"/j1++Shh;XB!#pdaJcCf2#OmQh!!!Ubhgsh0irR%VJ,~> -!BpJTm/X,urrB$LmC)Beka*e"!!n#BJcCr6#Om-I!!"O9k^i-Am/bd$J,~> -!BU8Qkl@9errAU@l*fg]jHM+o!!n#BJcCr6#Om-I!!"L5jFQR9klK'jJ,~> -!B:&NirG%NrrA"/j0mtQhiT>f!!n#BJcCr6#Om-I!!"I1hgsh.irR%VJ,~> -!BpJTm/X,urrB$LmBl6cm&N;M!!?*4JcD):#JO%;!!#3`m"+QCm/bd$J,~> -!BU8Qkl@9errAU@l*T[[kbpWE!!?*4JcD):#JO%;!!#0\k^i!;klK'jJ,~> -!B:&NirG%NrrA"/j0[hOihSX9!!?*4JcD):#JO%;!!#*Vidp./irR%VJ,~> -!BpJTm/X,urrB$LmBQ$`^K(I;!%jZ4JcD;@#PFN;!!!.&^Obdhm/bd$J,~> -!BU8Qkl@9errAU@l*9IX]2\t6!%jZ4JcD;@#PFN;!!!.%]7K4`klK'jJ,~> -!B:&NirG%NrrA"/j0@VL[o*>/!%jZ4JcD;@#PFN;!!!."[t3SVirR%VJ,~> -!BpJTm/X,urrB$LmB>m^fQ\55!!dH+JcDGD#O$(2!!!j\fR`G*m/bd$J,~> -!BU8Qkl@9errAU@l*'=Ve92Z/!!dH+JcDGD#O$(2!!!jZe:Hl"klK'jJ,~> -!B:&NirG%NrrA"/j0.JJcZ9m&!!dH+JcDGD#O$(2!!!gVc[k,lirR%VJ,~> -!BpJTm/X,urrB$LmB,a]kaOF0!!,B`pjrICrs8Ct5lgrc24Nf\mCqrgeieN~> -!BU8Qkl@9errAU@l)j1UjHqb(!!,B`pjrICrs8Ct5lgrc1mm?Tl+ZB_c8pI~> -!B:&NirG%NrrA"/j/q>Ihions!!,B`pjrICrs8Ct5lgrc1R-dJj1aOS_`*)~> -!BpJTm/X,urrB$LmAfOY^Kh*F!#9V/JcDeN#MF26!!!:1^Obdam/bd$J,~> -!BU8Qkl@9errAU@l)NtQ]3>O@!#9V/JcDeN#MF26!!!:/]7K4YklK'jJ,~> -!B:&NirG%NrrA"/j/V,E[oit:!#9V/JcDeN#MF26!!!:-[t3SOirR%VJ,~> -!BpJTm/X,urrB$LmATCRi/K>f!!56Qo7?qHrrVe_48o3]/WJ\>mCDTbeieN~> -!BU8Qkl@9errAU@l)7l+-$Zc8pI~> -!B:&NirG%NrrA"/j/Cu>f7tmU!!56Qo7?qHrrVe_48o3].u2`-j141N_`*)~> -!BpJTm/X,urrB$LmA91U]NkjE!")rArIP!Xrs8S7>7(?1$=1;qmC)B_eieN~> -!BU8Qkl@9errAU@l)!VM\Q]C@!")rArIP!Xrs8S7>7(?1$ -!B:&NirG%NrrA"/j/(cAZrm_9!")rArIP!Xrs8S7>7(?1$ -!BpJTm/X,urrB$LmA'%SiflM*!!!UcmXbDMrs8%I&HDe34-\`UmBl6]eieN~> -!BU8Qkl@9errAU@l(dJKhNBo#!!!UcmXbDMrs8%I&HDe33g/?Nl*T[Uc8pI~> -!B:&NirG%NrrA"/j.kW?fT%rm!!!UcmXbDMrs8%I&HDe33KDaCj0[hI_`*)~> -!BpJTm/X,urrB$Lm@`hJcZgT3!!4^)gO]C@rrUr./H,VN+F)4`mBQ$ZeieN~> -!BU8Qkl@9errAU@l(I8Bb]Y-.!!4^)gO]C@rrUr./H,VN+Ekt[l*9IRc8pI~> -!B:&NirG%NrrA"/j.PE6a)`@%!!4^)gO]C@rrUr./H,VN+*5JRj0@VF_`*)~> -!BpJTm/X,urrB$Lm@EVG[;-*J!!5$;j+76NrrV5?2?!RW$#?r"mB5gWeieN~> -!BU8Qkl@9errAU@l(.&?Z>'^F!!5$;j+76NrrV5?2?!RW$#6bsl)s7Oc8pI~> -!B:&NirG%NrrA"/j.533Y%J(?!!5$;j+76NrrV5?2?!RW$"pDlj0%DC_`*)~> -!BpJTm/X,urrB$Lm@3JLkbqMk!!!$ZM;!O\c2S+(M)YM9!"Du-k^i-&m/bd$J,~> -!BU8Qkl@9errAU@l'poDjJGod!!!$ZM;!O\c2S+(M)YM9!"Dr*jFQQsklK'jJ,~> -!B:&NirG%NrrA"/j.#'8hk -!BpJTm/X,urrB$Lm?m8CkFkZXrW!$OIEqhCs4.,Orm#pCrW!$,:SHs&mA]IReieN~> -!BU8Qkl@9errAU@l'U];j.8sOrW!$OIEqhCs4.,Orm#pCrW!$,9qLBrl)EnJc8pI~> -!B:&NirG%NrrA"/j-\j/h3ptCrW!$OIEqhCs4.,Orm#pCrW!$,9:F[fj/M&>_`*)~> -!BpJTm/X,urrB$Lm?R&@jJ#ZdrW!$BC:3ees4dPUpU+`XrW!$3 -!BU8Qkl@9errAU@l':K8i1F![rW!$BC:3ees4dPUpU+`XrW!$2 -!B:&NirG%NrrA"/j-AX,g7(tNrW!$BC:3ees4dPUpU+`XrW!$2;OcBkj/1i;_`*)~> -!BpJTm/X,urrB$Lm?6i=kcJ81rW!$,8sJ1`s5Et[hNUV=rW!$;@BJaEmA'%LeieN~> -!BU8Qkl@9errAU@l&t95jJlT)rW!$,8sJ1`s5Et[hNUV=rW!$;@&i:=l(dJDc8pI~> -!B:&NirG%NrrA"/j-&F)hkjZqrW!$,8sJ1`s5Et[hNUV=rW!$:?)HM1j.kW8_`*)~> -!BpJTm/X,urrB$Lm>gQ9^3244rW!$UD6`\`s69Oco -!BU8Qkl@9errAU@l&P!1]6#_.rW!$UD6`\`s69Oco -!B:&NirG%NrrA"/j,W.%[W*r%rW!$UD6`\`s69Oco -!BpJTm/X,urrB$Lm>L?6fTf8DrW!'(3./L9JcG9?"Sf`Z3!B3\!tS4nfR`F[m/bd$J,~> -!BU8Qkl@9errAU@l&4d.e< -!B:&NirG%NrrA"/j,;q"c]:a0rW!'(3./L9JcG9?"Sf`Z3!B3\!tJ"cc[k,HirR%VJ,~> -!BpJTm/X,urrB$Lm>('2\T^":rW!'.6%6H -!BU8Qkl@9errAU@l%eL*[WOP5rW!'.6%6H -!B:&NirG%NrrA"/j+lXsZ#V`*rW!'.6%6H -!BpJTm/X,urrB$Lm=aj0ii$TB!WE'%"#Y,'pjrGJponcr"9&9'!@qo`idpK^m/bd$J,~> -!BU8Qkl@9errAU@l%J:(hPOs9!WE'%"#Y,'pjrGJponcr"9&9'!@hc[hLXpVklK'jJ,~> -!B:&NirG%NrrA"/j+QFqfV)k*!WE'%"#Y,'pjrGJponcr"9&9'!@_TRfR`(JirR%VJ,~> -!BpJTm/X,urrB$Lm=FX.mFn=M1'RUV" -!BU8Qkl@9errAU@l%/(&l.;SB0a7LU" -!B:&NirG%NrrA"/j+64oj3aB/0Eh=S" -!BpJTm/X,urrB$Lm=F[&m0)RSG";f8!!NBa?]VtmQ2_$Y^Q2__!Wk(2oZm/bd$J,~> -!BU8Qkl@9errAU@l%/*sklg"HF@QN5!!NBa?]VtmQ2_$Y^Q2__!W -!B:&NirG%NrrA"/j+67girn/8ECC$/!!NBa?]VtmQ2_$Y^Q2__!W -!BpJTm/X,urrB$Lm=F["m02grQ!uBMqu?mB:Pc($r1X,or7%d':ETK7"U-PgQ,i3Am>:32eieN~> -!BU8Qkl@9errAU@l%/*oklp7gP@-!Hqu?mB:Pc($r1X,or7%d':ETK7"U-MdPJlX8l&"X*c8pI~> -!B:&NirG%NrrA"/j+67cis"DVO'XC@qu?mB:Pc($r1X,or7%d':ETK7"U$D`O2'Y)j,)ds_`*)~> -!BpJTm/X,urrB$Lm=FZrm02gbNF+IHqu?p'-rG;c_ -!BU8Qkl@9errAU@l%/*jklp7WMI&%Cqu?p'-rG;c_ -!B:&NirG%NrrA"/j+67^is"DGLKcJ -!BpJTm/X,urrB$Lm=FZmm0;mtS8Ce?!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHI88Xm -!BU8Qkl@9errAU@l%/*ekm$=iR;5;9!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHI7r+O3kCMlK -l2TuKc8pI~> -!B:&NirG%NrrA"/j+67Yis+JXQ"`Z0!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHH7;8%&iIU$? -j8\-?_`*)~> -!BpJTm/X,urrB$Lm=FZgm0;ajS97IU"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQW96HcA -kCN#OmJ6,MeieN~> -!BU8Qkl@9errAU@l%/*_km$4`R<(tO"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQW8opE8 -jFQQHl1sQEc8pI~> -!B:&NirG%NrrA"/j+67Sis+AOQ#K8E"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQV88sj* -hLX^ -!BpJTm/X,urrB$Lm=FZ`m0D=SR!2Us*s20:0+KNl7oj5FL6eR:\&$59h<4(knauSPrVcTeo^VA7 -kM=V0_7-SAQA0Qp<_#)"%efr.!Zs[/GF5nnJaJ$Uo'HJ/4b*~> -!BU8Qkl@9errAU@l%/*Xkm,bHQ$$+l*Wl'90+KNl7oj5FL6eR:\&$59h<4(knauSPrVcTeo^VA7 -kM=V0_7-SAQA0Qp<_#)"%efr.!ZjR,Fd9AbJa%aMo'$2#3e.~> -!B:&NirG%NrrA"/j+67Lis3o7O`FA`* -!BpJTm/X,urrB$Lm=FZYm0`43]V:0u=@=b["47)U!u`d[=D`hf][uM$m=FZjm/bd$J,~> -!BU8Qkl@9errAU@l%/*QkmHY'\Y"Rk<^JDV"47)U!uW^X -!B:&NirG%NrrA"/j+67EisOek[$uV\<'`&Q"47)U!uWXU<,$oQ[*IZ^j+67VirR%VJ,~> -!BpJTm/X,urrB$Lm=FZNm4[>7\Z20[IrA^q91(]o-m'3<&.JsO"TSN+#7:nO',DZ<0f_To -!BU8Qkl@9errAU@l%/*FkqCc,[\oRPI;N=k8jYKk-Qa*;%h/jN"TSN+#7:nN',DZ;0K;Bk -!B:&NirG%NrrA"/j+67:j"JrqZ(mV@H"pS^83f*e-6 -!BpJTmCK9Jm=FYUm=FYUmJcJReieN~> -!BU8Ql+3F:l%/)Ml%/)Ml2KoJc8pI~> -!B:&Nj1:2#j+66Aj+66Aj8S'>_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6eq)D'eq)D'eu@4#4b*~> -!BU73c@O8lc@O8lcDf(h3e.~> -!B:%0_h#^V_h#^V_l:NR2h1~> -JN\QIJN\QIJN]knJ,~> -JNA?CJNA?CJNBYhJ,~> -JN&-=JN&-=JN'GbJ,~> -%%EndData -showpage -%%Trailer -end -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/db4_dfs.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/db4_dfs.eps deleted file mode 100755 index f2fef786f3..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/db4_dfs.eps +++ /dev/null @@ -1,2801 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner -%%Title: db4_dfs.eps -%%CreationDate: Thu Jun 7 15:18:51 2007 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 14 14 546 527 -%%EndComments -%%BeginProlog -% Use own dictionary to avoid conflicts -10 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -14.173228346456694 14.173228346456694 translate -% Translate to begin of first scanline -0 512.00137876062354 translate -531.63779527559063 -512.00137876062354 scale -% Image geometry -731 704 8 -% Transformation matrix -[ 731 0 0 704 0 0 ] -% Strings to hold RGB-samples per scanline -/rstr 731 string def -/gstr 731 string def -/bstr 731 string def -{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} -true 3 -%%BeginData: 148922 ASCII Bytes -colorimage -quD:2JN\QIJN\QIYW_maJ,~> -quD:/JNA?CJNA?CYWD[^J,~> -quD:,JN&-=JN&-=YW)I[J,~> -rW)s]JcC<$JcC<$JcDtSs#p>]J,~> -rW)sZJcC<$JcC<$JcDtSs#U,ZJ,~> -rW)sWJcC<$JcC<$JcDtSs#9oWJ,~> -rr<*`s8RZ=Ja\0YJa\0YYj_Vl!^-M`J,~> -rr<*]s8RZ:Ja@sSJa@sSYjDDi!]g;]J,~> -rr<*Zs8RZ4J`_OGJ`_OGYibuc!]L)ZJ,~> -!WYC`JaJ$UJaJ$UJaMUeo8ie9o8ie9o8ik;!nKL7J,~> -!WY:]Ja.gOJa.gOJa2C_o7Qr*o7Qr*o7R#,!mWh,J,~> -!WY1ZJ`D=AJ`D=AJ`GnQo5OTeo5OTeo5OZg!lHqsJ,~> -!WYC`Ja@sSJa@sSJaDRd!0?aO!K[9[li<+ -!WY:]J`q[KJ`q[KJ`u:\!/'nC!JCFOkQ$8,rrIcProa?7oD]#Is6/[l3WO[~> -!WY1ZJ`21=J`21=J`5eN!-%Q0!HA) -!BpI6l@J5Ol@J5OlK@F5O8nh="mV0KlAtu:m02d9s6>[FoBcbIO8nM1eieN~> -!BU73k(2ZGk(2ZGk3(k-KE(Q-"m1I;k(E^*klp4%s5nt6oB?JAKE()rc8pI~> -!B:%0hgs[9hgs[9hriktE<#Oi"lF;!hf/Veis"=Zs5.eqoA^&4E<"hQ_`*)~> -!BpJ\kl>etFTI3YJa%aMJa%aMJa*'r!K[9PlNQO6rooLDoBQSEO8eC)s7>O\l&Yi.l./"J~> -!BU8Yj8a8oGl`TWJ`MCCJ`MCCJ`Q^h!JCFDk69q!roA_3oB-;CXjFdHmjN]f:~> -!B:&Vg]2EgHi\iPJ_Yh3J_Yh3J_^.X!HA)1i1Rgi38Jgqu($~> -!BpJ\k5\'G0*+GsJ`hUI`97.#s6'C^J`hUI^?5NXs7>LZkE#T)O8nh:"m:sFkE#Z7l3?F4rTE@p -4b*~> -!BU8YiW*!N9*!Xridp+-ir9#Yir9"0idp+'iW4]3oAp/8KDje^s7>=Uie.3hKE(Q)#3(:6io86E -J,~> -!B:&Vg&PXUB`V,ZJ_G\/`7k4ks4[JQJ_G\/^=iU,s7>+Og2R#EE<#Oe"kmqog2R)`hZheRrS#uC -2h1~> -!BpJ\jpmm?j5oFelKmp,nac=$h1=^>k0rJh!;YdW!<;3]!<;3]!.j9`k/-6]O8nh8"m1mEk)]QA -kkP5XkQU+0rT91@roj@^rTO7]roaRKO8\5'eieN~> -!BU8Yi!u78j5oFelKmp,nFH4#f7Dk2i7$W\!;YRQ!<;!W!<;!W!.j'Zi54CQKE(Q("lP%2i.M(/ -jS8fTj9=Ior8<5-roF(ZrT*tYro=:AKDaZcc8pI~> -!B:&VfFFD0j5oIflKdj+nFH4!d"0i#f[JLL!;Y:I!<:^O!<:^O!.idRfYZ8AE<#Oc"k[elfPpli -h>%'Mh$)GMr7Gugrn[SSrS@JRrnRe2E;\A@_`*)~> -!BpJ\jURg@jQ>Xilg=-0o(2O(gk"Rk!;,CQ!;kmX!.j6_jhg*[O8nh7"m(gCjcBH@kP5,W -k69t.r8j">roa7\s6'@]roXLIO8S,$eieN~> -!BU8Yh[Z19jQ>Xilg=-0nalF&eq)_0hp^K_!;,1K!;k[R!.j$Yhnn7OKE(Q&"lFt1hh1t.iqWTR -iW\4lr83/,ro3nWs5O"Xro+.>KDaWac8pI~> -!B:&Vf++>1jQ>[jlg4'/nalF$c[j]!f@/@O!;+nC!;kCJ!.iaQf>?,?E<#Oa"kR_jf5Uchg\CjK -gBH2Jqq#fernIDPs4dMQrn@Y/E;S8=_`*)~> -!BpJ\jURgAjlbmnm-X93o(;X+gk"Rk!;Y^aJ/e\=OT5CCjT#;BquHcY%HD[Q"<;XGjlHIB -KGjrDjalOCjT1GBoB$5 -!BU8Yh[Z.:jlbjmm-a?4oCVa+eq)_0hp^K_!;YL[HlE27N;rt9hZ*Z6quHcS%Gc.G!ul@ -!B:&Vede52jlbjmm-a?4oCVa)c@OPtf$i4M!;Y1RG8^T/LB%>*ec5^$quHcJ%Ff>8!uc..f%'g$ -HPcj9eq)E%ecBaio@X;uE;J.)s8L[O!;kFL!<1XTeo:K:E<#miqZ-TJ#1dbif%._tJ,~> -!BpJ\j:7^Ak32*rmI'K7o_%s/gO\F:jO<2i!;baeJcJBjdRaE=jQ$:@jQ$:@rT"B2!+t"u!-mSc -!!$0TJ`MCCe)UOjs754RO8J"!s8M'Z!;kgW!<(s]O8J"!s8:sV!;kg\O8J#!eieN~> -!BU8Yh@?(;k32*rmI0Q8o_%s-eUcS.hUC?]!;bO_IK2m_bsqa6hVJ54hVJ54rS@s)!+XSi!-R/T -!!$'LJ_kt7e(t+Xs7>+OhLk[]KE(r.!!)oR!!*#U"l=n.hLkk+hu*QQhZhqiqVL)S3e.~> -!B:&Vede53k32*rmI'K7o_%s,c@OPtf$i4M!;b7WH2pCQ`C0b,f%'g$f%'g$rRMBr!+=)[!-$N? -!!#sAJ_#D'e(+P=s7=hGeo:H9E<#ph!!)oJ!!*#M"kIYgeo:ZefDP^If*9fFq:=-72h1~> -!BpJ\j:7^BkNV=!mdTc*!7'ZM!$((\ -!!(;qjFQC?j8k>AoA^#8O8J"!s8M$Y!;kdV!<2!^jH'3!O8o. -!BU8Yh@?(;kiqF"mdTcr9/o%jM%qVHl)rn[VTqq_;QrS@[0qVHl)r8.APqq_L/qVL)S3e.~> -!B:&VeIJ,3kNV=!mdTc -!BpJ\isqXCkj%O%n+#u@p@nB6g4A:8j4!&g!;b^d"9@B?j50h:j5U+>j5U+>rSn4f!9)tr!!M?B -!!%T1J`G/ -!BU8Yh%$"=kj%O&n+#u@p@nB4e:HG,h:(3[!;bL^!s%'2h:_i/h;&&2h;&&2rS7e_!8H>`!!D'5 -!!%T+J_e`0!JCFDg]cMdq;$]'rnIJRqqM/OrnI\5KDF>Us8CaM!<([Wh1POZh9J'3~> -!B:&Ve./&4kj%O%n+#u@p%S91b^n8peC2qI!;b1U!s$d!eBn6reC4HueC4HurR;/V!7KBF!!Ca# -!!%T"J^i)s!HA)1dfn6?pXF0^rmLiIqpPNFrmM&#E;.k$s8CFD!<(@Ne8Y03eAF4q~> -!BpJ\isq[El0Ia)nFH2Dp\=T9g4A:8j4!&g!;b^d*WX4?j2Cuuj5U+>j5U+>rSn5&!6sQJ!$(%Z -!!%T1J`G/ -!BU8Yh%$%?l0Ia)nF?,Cp\=T7e:HG,h:(3[!;bL^*<Pqq;#Mrn7P3KD=8Ts8LaO!<:dP!<1[Vh1PLYh9J'3~> -!B:&Ve./)6l0Ia)nFH2Dp\FZ6b^n8peC2qI!;b1U*!!P!e@5JYeC4HueC4HurR;/j!5I$t!#jA: -!!%T"J^i)s!HA)BDrm:o!E;%e#s8LFF!<:IG!<1@Me8Y-2eAF4q~> -!BpJ\iXVUFlg4'.nalDHq"afio8NPJ,~> -!BU8Yg^]q?lg4'/nalGIp\F]:dt-;*gsb'Y!;bI^I/ld\bXVX5gtVl0gtW;<^]*!qB`MVl@K:H( -g].>*gk"8.g]<'-rn7)Irn.J1KD4/Rs8L^I!<1XTgk5@VKE(r(rrE#NrrE&O#2Fk*gt^19J,~> -!B:&Vdgi#7lg4'.nalDHq"af9bCS,ne'leG!;b.UGQ:.K_aFJ)e'e9se'e^*\,Oh`AH6&\?3"ik -df9B!dt,uqdfFFfrm1B?rm(bsE:q\!s8L@?!<1:Jdr>!/E<#p`rrE#DrrE&E#1IPae'l2nJ,~> -!BpJ\iWa1GI!pElIf=isJ-(:Bg4A77imZo`!<1suI2`;6NW9(=iW&u):!K[9Ph?Do"pu7A7oA0Z1O8.^qs7>(OifEloimp8C~> -!BU8Yg]hM?H[L3hIK"]qIfb.=e:HD+gsb'T!<1aoH5Zl0M?!Y3g].?0gis;/!8QA^B,:XfE8'+& -!!%T*J_\Z.!JCFDf*0r^pY:E$o@F0$KD4/Rs7=hHgk5@Vgs.s2~> -!B:&VdfjB0H$Xd`rI"Wn!e+t0J^]2!e'n-nrmMm1)$;"7!!(Ks!!(KsEt&*Le'lWP('5=hdF6PE -!.iUMe'ZVFE<#OS"k.G_dr>?YbluR8o[@dZo?@KgE:hW._`*)~> -!BpJ\huML(ecFC[J`)+;J`)+;J`-F`!K[9Pg]cVspu%55o@sN-O8.Xos7>"Mi/dZki7:&A~> -!BU8Yg&TXpd/_jNg4@t/g4@t/gABS)KE(Po"knV&g4TFsecjc[p=b0!o@=-"KD+$Qc8pI~> -!B:&VciD5]`rX9-J^AtpJ^AtpJ^F;@!HA)1b6?73o?_IVo?. -!BpI6hLXO7hLXO7hWN_rO8nh+"l>=7hN.^.gBHGppYLu2o@jK+O8%MfeieN~> -!BU73fR_\+fR_\+f]UlfKE(Pm"k\J#fRs4qe-4KWp"4oso@*usKD!mLc8pI~> -!B:%0c@O8lc@O8lcKEIRE<#OO"jV)Xc>`gTaT]t/o$24So>q3^E:V<"_`*)~> -!BpI6h1=C5h1=C5h<*MnO7U^!O8&Y0!0?`u!K[!Sh#NN-ciK4%rnRV+4b*~> -!BU73eq)D'eq)D'f&kN`KCd.bKD#5p!/'ma!JC(Eec:?oa8pqdrmh+q3e.~> -!B:%0b^muhb^muhbi[+LE:^[BE:NqO!-%PA!H@T.bQ)VR])cm@rlbD\2h1~> -!BpI6gO\+1gO\+1gZI5jp[aFGp\ihHp[aFGp\ihHp[aFGp\ihIeieN~> -!BU73e:H,#e:H,#eE56\p%*e9p&3A?p%*e9p&3A?p%*e9p&3A@c8pI~> -!B:%0aaqQbaaqQbal^\Fnag]"nbpQ0nag]"nbpQ0nag]"nbpQ1_`*)~> -!BpI6fn%h-fn%h-g#^oYp\WY8p\WY8p\`\FeieN~> -!BU73dXfhtdXfhtdcJpKp&!2/p&!2/p&*5=c8pI~> -!B:%0a+;9^a+;9^a5tA5nb^Aunb^AunbgE._`*)~> -!BpI6eq)D'eq)D'eu@4#4b*~> -!BU73c@O8lc@O8lcDf(h3e.~> -!B:%0_h#^V_h#^V_l:NR2h1~> -!'Pn%JXV.YJXV.YW1!]LJ,~> -!'5[kJW>;AJW>;AW/^j=J,~> -!&oIVJUE#rJUE#rW-eS(J,~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpJTm=FVTm"+MSm"+NAm.BZGeieN~> -!BU8Ql%/&Lk^hrKk^hs9kk+*?c8pI~> -!B:&Nj+63@idp*?idp+-iq273_`*)~> -!BpJTm=FVTm"+MSm"+NAm.BZGeieN~> -!BU8Ql%/&Lk^hrKk^hs9kk+*?c8pI~> -!B:&Nj+63@idp*?idp+-iq273_`*)~> -!BpJTm=FVTm"+MSm"+NAm.BZGeieN~> -!BU8Ql%/#KkCMfIkCMg7kOe!>c8pI~> -!B:&Nj+60?iITs=iITt+iUl.2_`*)~> -!BpJTm=FSSl[eAQl[eB?lh'QFeieN~> -!BU8Ql%/#KkCMfIkCMg7kOe!>c8pI~> -!B:&Nj+60?iITs=iITt+iUl.2_`*)~> -!BpJTm=FSSl[eAQl[eB?lh'QFeieN~> -!BU8Ql%/#KkCMfIkCMg7kOe!>c8pI~> -!B:&Nj+6->i.9g;i.9h)i:Q%1_`*)~> -!BpJTm=FSSl[eAQl[eB?lh'QFeieN~> -!BU8Ql%.uJk(2ZGk(2[5k4Im=c8pI~> -!B:&Nj+6->i.9g;i.9h)i:Q%1_`*)~> -!BpJTmI0 -!BU8Ql0ma7!.j9`k(2ZGk(2[Hk4Im=c8pI~> -!B:&Nj6tk*!.j$Yhgs[9hgs\:ht5q0_`*)~> -!BpJTmIKNE!:&hLJa.gOJa.gOJa1kPo^)\14b*~> -!BU8Ql13p -!B:&Nj7;(0!8lZ6J_u%9J_u%9J`#):o]#ti2h1~> -!BpJTmJ,rD!<)-^!.jBcl%/)Ml%/*Nl1F?DeieN~> -!BU8Ql1jB -!B:&Nj7qL/!<(aS!.j!XhLXO7hLXP8hXoh/_`*)~> -!BpJTmJ,oG!;YjZ!.jBcl%/)Ml%/*Nl1F?DeieN~> -!BU8Ql1j<>!;Y[U!.j3^jFQBCjFQCDjRh[;c8pI~> -!B:&Nj7qI2!;YIO!.j!XhLXO7hLXP8hXoh/_`*)~> -!BpJTmJ,oG!;u'h!9r_Jl07>J'*qCiJa%aMJa%aMJa)(Vo^)\14b*~> -!BU8Ql1j<>!;tmc!9E2@jQ,98'*q@cJ`MCCJ`MCCJ`P_Lo]ZD%3e.~> -!B:&Nj7qF1!;tX\!8ZH2h;-du&dV.YJ_bn5J_bn5J_f5>o]#ti2h1~> -!BpJTmJ,lF!;u$g!9iVHkid1SceMT0J`q[KJ`q[KJ`u"To^)\14b*~> -!BU8Ql1j9=!;tjb!9<)>j5Y5Eb1BX!J`D=AJ`D=AJ`GYJo]ZD%3e.~> -!B:&Nj7qF1!;tX\!8ZH2h;*'5`R7[hJ_bn5J_bn5J_f5>o]#ti2h1~> -!BpJTmJ,oC!"A&kki`$1kT%P)kgL8tk^hrKk^hrKkhkUrm/bd$J,~> -!BU8Ql1j<:!"@lfj5U."iuGhoj3JEjj+66Aj+66Aj58nhklK'jJ,~> -!B:&Nj7qF-!"@W_gtVnbg`*fZgrL1\gk"73gk"73gu$oZirR%VJ,~> -!BpJTmJ,lF!;u$b!9iVHki`0J!!!%Nk^hrKk^hrKkhkUrm/bd$J,~> -!BU8Ql1j9=!;tj]!9<)>j5U:@!!!%Nj+66Aj+66Aj58nhklK'jJ,~> -!B:&Nj7q@/!;tRU!8H6.gY2i/!!!%NgO\+1gO\+1gY^cXirR%VJ,~> -!BpJTmJ,iE!;u!b!9`MFkN -!BU8Ql1j6GDo]ZD%3e.~> -!B:&Nj7q@/!;tRV!8H6.gY3UaJ_Pb1J_Pb1J_Sr6o]#ti2h1~> -!BpJTmJ,iE!;u!f!9`MFkN@(Wa5am0J`hUIJ`hUIJ`kqRo^)\14b*~> -!BU8Ql1j6SHo]ZD%3e.~> -!B:&Nj7q=.!;tOY!8?-,g=gR3][sM_J_G\/J_G\/J_K#8o]#ti2h1~> -!BpJTmJ,iE!;u!f!9`MFkNCrP*!IdZJ`hUIJ`hUIJ`kqRo^)\14b*~> -!BU8Ql1j3;!;td`!9)l:iSi[;)[%RSJ`21=J`21=J`5MFo]ZD%3e.~> -!B:&Nj7q=.!;tOY!8?-,g=k2#)[%LLJ_G\/J_G\/J_K#8o]#ti2h1~> -!BpJTm=FDNk(2ZGk(2[5k4J$AeieN~> -!BU8Ql%.fEiITs=iITt+iUl@8c8pI~> -!B:&Nj+5m7fn%h-fn%hpg%=;*_`*)~> -!BpJTm=FDNk(2ZGk(2[5k4J$AeieN~> -!BU8Ql%.cDi.9g;i.9h)i:Q77c8pI~> -!B:&Nj+5m7fn%h-fn%hpg%=;*_`*)~> -!BpJTm=FDNk(2ZGk(2[5k4J$AeieN~> -!BU8Ql%.cDi.9g;i.9h)i:Q77c8pI~> -!B:&Nj+5j6fR_\+fR_\nf_"2)_`*)~> -!BpJTm=FAMjalNEjalO3jn.p@eieN~> -!BU8Ql%.cDi.9g;i.9h)i:Q77c8pI~> -!B:&Nj+5j6fR_\+fR_\nf_"2)_`*)~> -!BpJTm=FAMjalNEjalO3jn.p@eieN~> -!BU8Ql%.`Chgs[9hgs\'ht6.6c8pI~> -!B:&Nj+5g5f7DP)f7DPlfC\)(_`*)~> -!BpJTm=F>LjFQBCjFQC1jRhg?eieN~> -!BU8Ql%.`Chgs[9hgs\'ht6.6c8pI~> -!B:&Nj+5g5f7DP)f7DPlfC\)(_`*)~> -!BpJTm=F>LjFQBCjFQC1jRhg?eieN~> -!BU8Ql%.]BhLXO7hLXP%hXp%5c8pI~> -!B:&Nj+5d4eq)D'eq)Djf(@u'_`*)~> -!BpJTm=EE2b(7]db(7^Rb4P'%eieN~> -!BU8Ql%-[%_1BFR_1BG@_=Zsmc8pI~> -!B:&Nj+4OfZ[oH6Z[oI$Zh38Y_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpJTmCK9Jm=FYUm=FYUmJcJReieN~> -!BU8Ql+3F:l%/)Ml%/)Ml2KoJc8pI~> -!B:&Nj1:2#j+66Aj+66Aj8S'>_`*)~> -!BpJTm/X,up&M(Cm=FZNm4[>7\Z20[IrA^q91(]o-m'3<&.JsO"TSN+#7:nO',DZ<0f_To -!BU8Qkl@9eoDkG5l%/*FkqCc,[\oRPI;N=k8jYKk-Qa*;%h/jN"TSN+#7:nN',DZ;0K;Bk -!B:&NirG%NnGnN!j+67:j"JrqZ(mV@H"pS^83f*e-6 -!BpJTm/a3[^$Pg!JaJ$Ug?f76f=[i5D-01Y)?\@e$3M2!6s+;]U:f+EJaJ$Ulg4`(4b*~> -!BU8QklI@I^$,NfJa%aMg?At.e%)*)CK -!B:&NirP,/^#K*OJ`D=Ag>`P"cEs'lBiIAL)$A7d$3M.s5u_QLS$^K#J`D=Alf/#`2h1~> -!BpJTm/a3[^$Pg!JaJ$UiU$m'\ -!BU8QklI@I^$,NfJa%aMiTUTt[?Yl8599n#!&"g52b-n\G(uc8pI~> -!B:&NirP,/^#K*OJ`D=AiSt0hY`Ws)4WOUu!&"g52b-n\G(u -!BpJTm/a3[^[2*SoVmE/JaM[g#3WjnF\=7gq#C^91/;VAT!Z]"qpGEMqr,`*Sr%5X1)9Tb"p?JM -Fe$>3JaJ$Uq<\464b*~> -!BU8QklI@I^ZbgKnXY6qJa)C_#3 -!B:&NirP,/^Z,C@m>QVVJ`GtS#2ZqVE(DJ^q#C^91/;VAT!Z]"qpGEMqr,`*Sr%5X1)9Tb"p?GI -E0\#kJ`D=Aq;VLn2h1~> -!BpJTm/a3[^[2*:ql,/6JaMmm#4'@#D+GfNqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#l -!BU8QklI@I^Zbg2qji<&Ja)Ue#3WsnCI]NKqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#l;CRN0) -Ja%aMs60R03e.~> -!B:&NirP,/^Z,C(q2BmbJ`H1Y#3!@_Bgj-FqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#i8BpHKm -J`D=As5O-t2h1~> -!BpJTm/a3[^[2*:ql,/6JaN'r"m`XW?S_rb!!WNR;0o"RmB-BmmD5QD;()PE!!NT`?]DP\JaJ-X -!S0Da~> -!BU8QklI@I^Zbg2qji<&Ja)dj"m<7M?8;c`!!WNR;0o"RmB-BmmD5QD;()PE!!NT_?Ac,QJa%jP -!R<`V~> -!B:&NirP,/^Z,C(q2BmbJ`H@^"lZ\@>;6B\!!WNR;0o"RmB-BmmD5QD;()PE!!NT^>DKHAJ`DFD -!Q-jH~> -!BpJTm/a3[^[2*:ql,/6JaN7""ma3o@P7o_!!OH?Lo]&'U&P;oe>nC$+8c*B"YX>Ma6Sp -4b*~> -!BU8QklI@I^Zbg2qji<&Ja)so"mnC$+8c*B"YO2H`92^9M -!B:&NirP,/^Z,C(q2BmbJ`HOc"l[4W?7cnC$+8c*B">*r@^Ysb(M;nWS -2h1~> -!BpJTm/a3[kNr6Lg?esUql,/6JaNC&"Qlk18-Sql"T^YkO2(7Nrrqu.O'apKr;Zs(89V/uJaJHa -!S0Da~> -!BU8QklI@IkNMsHg?A[Mqji<&Ja**s"QHJ(7g8hk"T^YkO2(7Nrrqu.O'apKr;Zs(7s(fkJa&0Y -!R<`V~> -!B:&NirP,/kMlOBg>`7Cq2BmbJ`H[g"Pfnp70NPh"T^YkO2(7Nrrqu.O'apKr;Zs'7<,6\J`DaM -!Q-jH~> -!BpJTm/a3[kNr6Lg?esUql,/6JaEX.g7rC<"oSE(*`S$4o8EVOo>$5_*rQ'A"Yshfg4AXRm/bd$ -J,~> -!BU8QklI@IkNMsHg?A[Mqji<&Ja!@&f:Zh4"oSE(*`S$4o8EVOo>$5_*rQ'A"Yj_af7E1KklK'j -J,~> -!B:&NirP,/kMlOBg>`7Cq2BmbJ`?pod@=f&"T8<'*`S$4o8EVOo>$5_*rQ'A">FGXd=L>?irR%V -J,~> -!BpJTm/a3[rp9ae6L=[ -!BU8QklI@IrojIa60S:3!!)TS!!(a;!kS9"Ja%jP"Q$"h.KTMK"9UN%YkWeL"Sf3A2$ -!B:&NirP,/ro4%[5N;Y%!!)TM!!(a5!k.o`J`DFD"PBDZ.09DJ"9UN%YkWeL"Sf3A2$ -!BpJTm/a3[rp9ae?!! -!BU8QklI@IrojIa;hk88!!)TS!!(a;!kS9"Ja%sS"1E>3"o\K)$:0-QoR[&?!! -!B:&NirP,/ro4%[;1ni-!!)TM!!(a5!k.o`J`DOG"0ll)"TAB($:0-QoR[&?!! -!BpJTm/a3[rp9dfh^-ACm2l>qmH.[`%:J>cmH.OX'n?;OmHSX)#Z9RJmAVK;*KKCO!l"Q2JaJB_ -"5&l8&,lP3"?:eDpjrJ8rri,3HoM9.!! -!BU8QklI@IrojLbgEjf;koToil/GnV%:8)Zl/PkP'n-/Il/ljs#Z':@l)#g3*/s.H!kS9"Ja&*W -"4WN0&,lP3"?:eDpjrJ8rri,3HoM9.!! -!B:&NirP,/ro4(\eg/$0iu\9]j4mcG$s_WKj5!]A'RKi?j5=\d#Yiq2j.[k'*/Nk>!k.o`J`D[K -"4*$%%fQG2"?:eDpjrJ8rri,3HoM9.!!<^)O3`C;SDsXf2h1~> -!BpJTm/a3[rp;$4mB\M1mHjo@m;#/DfKa?Am;>DHfgPo.m -!BU8QklI@Iroka0l*)l&l0/34l"NQ9e3@d6l"if>eO0E%l$#A -!B:&NirP,/ro5=*j/aljj5U."j(:X(cTQ"&j(Um-cU%Wlj)dH,f2Z,:it@d9aB@cf!k.o`J`DdN -"1E2&!r`0%12X;fJcG!7"7rd71B%7U!\\Q%J`EB_!Q-jH~> -!BpJTm/a3[rp:s2mHne1mHjo@m24%6mE$75m2=.8mE5Lsm2a:8mFW0@m2Ll/kNr>bql,/6P3iA8 -X^N(G!! -!BU8QklI@Irok[.l03#&l0/34knqJ*l,=P)ko%S,l,Negko@Y+l-pI4ko,9$kNN&Zqji<&P3E)0 -WaH\C!! -!B:&NirP,/ro57(j5Xiij5U."itoSmj1lMliu#\oj2(fViuGhoj3JG"iu3NjkMlWPq2BmbP2cZ% -VHk#;!! -!BpJTm/a3[rp:U(mHs'i[I!t]m/uY@mHFc@m/uY@mHFW -!BU8QklI@Irok=$l077^ZKVARkl^)4l/`'4kl^)4l/_p0klgqb#6F)R\OI2MT]t\B])/%Ll':K8 -i1F![rW!$BC:3ees4dPUpU+`XrW!$2 -!B:&NirP,/ro4msj5\uJY2]NBire6"j51""ire6"j50jsiro;\#6ElFZpbTGSE]&8[eYl5j-AX, -g7(tNrW!$BC:3ees4dPUpU+`XrW!$2;OcBkj/1i;_`*)~> -!BpJTm/a3[rp9[crp:NA-K+slm24(7mE-=6m2=.8mE>Rtm2ORMm/a1%l0SPdql,/6R-b"=Thc!o -!!=d#cMiCpec,aNc@%8C!! -!BU8QklI@IrojC_rok6:-/ARcknqM+l,FV*ko%S,l,Wkhko.qDklIXsl0/8\qji<&R-=_5SkTOj -!!=d#cMiCpec,aNc@%8C!! -!B:&NirP,/ro3tYro4g/,hE%VitoVnj1uSmiu#\oj21lWiu6,9irPkhl/MiRq2BmbR,\;)RS*td -!!=d#cMiCpec,aNc@%8C!! -!BpJTm/a3[rp9[crTtb`=9.aUBh6q16Yu/WDFiL77f_rDHpu9D_bogg<6==$'C"lc^AFm\m@3JL -kbqMk!!!$ZM;!O\c2S+(M)YM9!"Du-k^i-&m/bd$J,~> -!BU8QklI@IrojC_rTPJYGcLCe!%-70)T:H:5m:^ea4Z;T7^m''\W^])/%Ll'poD -jJGod!!!$ZM;!O\c2S+(M)YM9!"Dr*jFQQsklK'jJ,~> -!B:&NirP,/ro3tYrSo&P<<2(>AOXtl5\K-;BgpFr6ic9-G!a.)]1q>G:r(q\''\EX[eYl5j.#'8 -hk -!BpJTm/a3[rp9[crTtcp63-E?j]`-%?0:PAk#hs)J,o!(l[9cW.\5toR3Db^X6K!Q^AFm\m@EVG -[;-*J!!5$;j+76NrrV5?2?!RW$#?r"mB5gWeieN~> -!BU8QklI@IrojC_rTPKh5lg06iE?Wu>N4o3i`HI$IK8WskB\*O.@TMcQQcP[W9NOJ])/%Ll(.&? -Z>'^F!!5$;j+76NrrV5?2?!RW$#6bsl)s7Oc8pI~> -!B:&NirP,/ro3tYrSo'\560a(gK+dl=kr&tgf4UoHN<*diHH7E.$ioRP9C&UV!6n@[eYl5j.533 -Y%J(?!!5$;j+76NrrV5?2?!RW$"pDlj0%DC_`*)~> -!BpJTm/a3[^[2*:ql,/6T^;g,GTctc!\B#ZJcERd!o&AZrW!!BGgCs.Z0_SC4b*~> -!BU8QklI@I^Zbg2qji<&T]lO%Fs-ba!\B#ZJcERd!o&AZrW!!BG0GO%Z0;;73e.~> -!B:&NirP,/^Z,C(q2BmbT]6*oF!(A]!\B#ZJcERd!o&AZrW!!AF2rjlZ/Yl&2h1~> -!BpJTm/a3[^[2*:ql,/6U[8?HPWJmG!"jtRJcE@^#k!EZ!!!$]Pi@8][-[nF4b*~> -!BU8QklI@I^Zbg2qji<&UZi'@Ou`UD!"jtRJcE@^#k!EZ!!!$\P2:cS[-7V:3e.~> -!B:&NirP,/^Z,C(q2BmbUZ2X4N]@+?!"jtRJcE@^#k!EZ!!!$[NnApC[,V2)2h1~> -!BpJTm/a3[^[2*:ql,/6Vm^Q3$=$31&5?+baU[d=+H4b*~> -!BU8QklI@I^Zbg2qji<&V7(?1$=$31&5>If=L[cmh<3e.~> -!B:&NirP,/^Z,C(q2BmbV;hig=UG-/$=$31&5=gWb?[c7D+2h1~> -!BpJTm/a3[^[2*:ql,/6W9jZEN@k,0!]utEJcE"T!qVsErW!!ONSoBT\a9FK4b*~> -!BU8QklI@I^Zbg2qji<&W9FB=MCnf-!]utEJcE"T!qVsErW!!OMVNdI\`j.?3e.~> -!B:&NirP,/^Z,C(q2BmbW8ds2LF`?(!]utEJcE"T!qVsErW!!MLY%+;\`3_.2h1~> -!BpJTm/a3X^Zkm4ql,/6WpL&+>mLE1'm/,[s/Z/)flRr/!!llFJaL):!S0Da~> -!BU8QklI@F^ZGU-qON3%Wp'c#>6k3/'m/,[s/Z/)flRr/!!lf@Ja'f2!R<`V~> -!B:&NirP,,^Yf1"q2BmbWoF>n=U5!-'m/,[s/Z/)flRr/!!l`:J`FB&!Q-jH~> -!BpJTm/a3R^Z>OAn>V!+XmHDXRl(0G!C -!BU8QklI@@^Yo79m[\pnXm$,PQo"dC!C -!B:&NirP,&^Y8h.lAU;SXlB]EPVW:>!Cf732h1~> -!BpJTm/a3M^#&ghJaKZ.#M=8 -!BU8QklI@;^"WOXJa'B&#Lmo6!!!7Bk^ic-rs.b+#64`@G1;*-_!(mF3e.~> -!B:&NirP,!^"*1BJ`Ero#L@H-!!!7Bk^ic-rs.b+#64`?F3fEt^uGI52h1~> -!BpJTm/a3G^"ECbJaK`0#JX:B!!"U>on!.6rs/4c/H>bR -!BU8QklI@5^"*1SJa'H(#J3t=!!"U>on!.6rs/4c/H>bR -!B:&NirP+p^!Hbon!.6rs/4c/H>bR;R_5;_W([72h1~> -!BpJTmCK9JmBl6cm&N;M!!?*4JcD):#JO%;!!#3`m"+QCm/bd$J,~> -!BU8Ql+3F:l*T[[kbpWE!!?*4JcD):#JO%;!!#0\k^i!;klK'jJ,~> -!B:&Nj1:2#j0[hOihSX9!!?*4JcD):#JO%;!!#*Vidp./irR%VJ,~> -!BpJTm/X,urrB$LmC)Beka*e"!!n#BJcCr6#Om-I!!"O9k^i-Am/bd$J,~> -!BU8Qkl@9errAU@l*fg]jHM+o!!n#BJcCr6#Om-I!!"L5jFQR9klK'jJ,~> -!B:&NirG%NrrA"/j0mtQhiT>f!!n#BJcCr6#Om-I!!"I1hgsh.irR%VJ,~> -!BpJTm/X,urrB$LmC;Ngl&-/S!#pdaJcCf2#OmQh!!!Xil%/6Dm/bd$J,~> -!BU8Qkl@9errAU@l+#s_jbXQL!#pdaJcCf2#OmQh!!!Ufjal[ -!B:&NirG%NrrA"/j1++Shh;XB!#pdaJcCf2#OmQh!!!Ubhgsh0irR%VJ,~> -!BpJTm/X,urrB$LmCMZihg6":!%X];JcCZ.#PjuB!!![Zhgt1 -!BU8Qkl@9errAU@l+6*agNaD3!%X];JcCZ.#PjuB!!!XWgO\V4klK'jJ,~> -!B:&NirG%NrrA"/j1=7UeohZ+!%X];JcCZ.#PjuB!!!XTeq)l)irR%VJ,~> -!BpJTm/X,urrB$LmC_fkgiX,-!$@a1JcCN*#QC58!!!OPgk"k;m/bd$J,~> -!BU8Qkl@9errAU@l+H6cflIZ(!$@a1JcCN*#QC58!!!ONfn&D4klK'jJ,~> -!B:&NirG%NrrA"/j1OCWdr5cs!$@a1JcCN*#QC58!!!LJdt-Q(irR%VJ,~> -!BpJTm/X,urrB$LmCqrlg275t!(">Ms+11S^-M`!$?"RKmEb/#eieN~> -!BU8Qkl@9errAU@l+ZBdenbZn!(">Ms+11S^-M`!$>e:El-JSpc8pI~> -!B:&NirG%NrrA"/j1aOXctWmf!(">Ms+11S^-M`!$>Rq=j3Q`d_`*)~> -!BpJTm/X-`rrBjOrrB$LmD/)nh/Nf&!(b%Zs+14Krs$D4!!!CHh1=t@m/bd$J,~> -!BU8Qkl@:PrrBjOrrAU@l+lNfg2@?!!(b%Zs+14Krs$D4!!!CFg4AM9klK'jJ,~> -!B:&NirG&9rrBjOrrA"/j1s[Ze8,Km!(b%Zs+14Krs$D4!!!CCe:HZ-irR%VJ,~> -!BpJTm/X-`rrE,8_uB_9JaL>A#3't?!!$-VJcC<$q>UZS=9&=3HfBVDe*R1e4b*~> -!BU8Qkl@:PrrE,8_uB_-Ja(&9#2XV9!!$-VJcC<$q>UZS=9&=3H/=,:e*-nY3e.~> -!B:&NirG&9rrE,8_uB^qJ`FW-#2")/!!$-VJcC<$q>UZS=9&=2G1_B+e)LJH2h1~> -!BpJTm/X-`rrN07^r66QWIaHTm0;[)'*&##aFXABs7QBra@$".'8,CtmFCS)eieN~> -!BU8Qkl@:PrrN07^r66QSUp%Dkm$*t'*&##aFXABs7QBra@$".'7o+nl.,#!c8pI~> -!B:&NirG&9rrN07^r66QN.L$-is+7e'*&##aFXABs7QBra@$".'7S\ej43/j_`*)~> -!BpJTm/X-`rrW8:'Ys;>rW(RM!3(P:`pEurOVe&u426@HJcG9?#/<5"!#UjaJaM(V!S0Da~> -!BU8Qkl@:PrrW8:'Ys;>rW(RM!1e]*`p!]jNu.is426@HJcG9?#/<5"!#Ud[Ja(eN!R<`V~> -!B:&NirG&9rrW8:'Ys;>rW(RM!/uKh`o@9^M\c?n426@HJcG9?#/<5"!#LRPJ`GAB!Q-jH~> -!BpJTm/X-`rr`?%^_FTSrr<&NrrB$LmDnStW$q]H1:Dc6JcG-;"h$/d!%FjtmF^e,eieN~> -!BU8Qkl@:Prr`?%^_FTSrr<&NrrAU@l,W#lVC2EE1:Dc6JcG-;"h$/d!%=^ql.G5$c8pI~> -!B:&NirG&9rr`?%^_FTSrr<&NrrA"/j2^0`TdKg?1:Dc6JcG-;"h$/d!%4Ikj4NAm_`*)~> -!BpJTm/X-`rriE&s1f>ao)A[ifDbiMJaLSH#/<;$!$\??JcC<$li.1gV]l*@4hlR8g?epl4b*~> -!BU8Qkl@:PrriE&s1f>ao)A[ifDbiAJa(;@#.ltt!$\??JcC<$li.1gV]l*@4M-1/g?AX`3e.~> -!B:&NirG&9rriE&s1f>ao)A[ifDbi0J`Fl4#.HYo!$\??JcC<$li.1gV]l*@41Be$g>`4O2h1~> -!BpJTm/X-`rr<&urrR`Op%/1`!8%5NWIaH[m0:s;!< -!BU8Qkl@:Prr<&urrR`Op%/1`!8%5NSUp%Kkm#F3!< -!B:&NirG&9rr<&urrR`Op%/1`!8%5NN.L$4is*S%!< -!BpJTm/X-`rriE&s1f>ao)A[ifDbiMJaL_L#39q6!!m`8JcC<$j8T>OFU.sRG3"5AhX(?p4b*~> -!BU8Qkl@:PrriE&s1f>ao)A[ifDbiAJa(GD#2jS0!!m`8JcC<$j8T>OFU.sRFPq`7hWY'd3e.~> -!B:&NirG&9rriE&s1f>ao)A[ifDbi0J`G#8#24&'!!m`8JcC<$j8T>OFU.sRES?!(hW"XS2h1~> -!BpJTm/X-`rr`?%^_FTSrr<&NrrB$LmEY)&SK%V0DX`5WJcFX-"n6C0!$%P\mGI:3eieN~> -!BU8Qkl@:Prr`?%^_FTSrr<&NrrAU@l-AMsRi;>-DX`5WJcFX-"n6C0!#qDYl/1_+c8pI~> -!B:&NirG&9rr`?%^_FTSrr<&NrrA"/j3HZgQQ#o)DX`5WJcFX-"n6C0!#q8Uj58kt_`*)~> -!BpJTm/X-`rrW8:'Ys5 -!BU8Qkl@:PrrW8:'Ys5 -!B:&NirG&9rrW8:'Ys5 -!BpJTm/X-`rrN07_!h:'!8%5NWIaHbm0;W_!<CmGmR7eieN~> -!BU8Qkl@:PrrN07_!h:'!8%5NSUp%Rkm$'U!< -!B:&NirG&9rrN07_!h:'!8%5NN.L$;is+4G!< -!BpJTm/X-`rrE,8nGiCdg&D&OJaLtS#4.]l!!RB2JcC<$ec,jBE -!BU8Qkl@:PrrE,8nGiCdg&D&CJa(\K#3_ -!B:&NirG&9rrE,8nGiCdg&D&2J`G8?#3(aZ!!RB2JcC<$ec,jBE -!BpJTm/X-`rrBjOrrB$LmFCS-a?0G&2qW]]JcF-t"kYa6!'J>RmH3d:eieN~> -!BU8Qkl@:PrrBjOrrAU@l.,#%`B+&"2qW]]JcF-t"kYa6!'A/Nl/q42c8pI~> -!B:&NirG&9rrBjOrrA"/j43/n^cDGq2qW]]JcF-t"kYa6!'7oHj6#A&_`*)~> -!BpJTm/X,urrB$LmFU_0j`1P*'qkPWs+13rrs&Iq'`\GYjalg_m/bd$J,~> -!BU8Qkl@9errAU@l.>/(iG\r#'qkPWs+13rrs&Iq'`\DViIU7WklK'jJ,~> -!B:&NirG%NrrA"/j4E;qgMI)o'qkPWs+13rrs&Iq'`\DSgO\DKirR%VJ,~> -!BpJTm/X,urrB$LmF^e0^)m=VB'k0LJcEpn"mon'!$Aq+mHO!=eieN~> -!BU8Qkl@9errAU@l.G5(],gqRB'k0LJcEpn"mon'!$8b'l07F5c8pI~> -!B:&NirG%NrrA"/j4NAq[N,>LB'k0LJcEpn"mon'!$/M!j6>S)_`*)~> -!BpJTm/X,urrB$LmFpq2hHU']/]rYEJcEdj"j/Cs!F4K4mHa-?eieN~> -!BU8Qkl@9errAU@l.YA*g0+LW/]rYEJcEdj"j/Cs!F"3.l0IR7c8pI~> -!B:&NirG%NrrA"/j4`MseQ;hP/]rYEJcEdj"j/Cs!Edm'j6P_+_`*)~> -!BpJTm/X,urrB$LmG%"3UDNt:LAQQ%JcE^h"oF#[!#VJ^mHj3@eieN~> -!BU8Qkl@9errAU@l.bG+TGRY7LAQQ%JcE^h"oF#[!#VA[l0RX8c8pI~> -!B:&NirG%NrrA"/j4iStS/2/2LAQQ%JcE^h"oF#[!#M/Vj6Ye,_`*)~> -!BpJTm/X,urrB$LmG7.5fMDPJ4P55bJcERd"kYp;!)V=!mI'?BeieN~> -!BU8Qkl@9errAU@l.tS-e4ouD4P55bJcERd"kYp;!)D$pl0dd:c8pI~> -!B:&NirG%NrrA"/j5&`!cV+<=4P55bJcERd"kYp;!)1^ij6kq._`*)~> -!BpJTm/X,urrB$LmG@46S.Yf2PPp(4JcELb"oXVo!"tfQmI0ECeieN~> -!BU8Qkl@9errAU@l/(Y.R1TE.PPp(4JcELb"oXVo!"kWMl0mj;c8pI~> -!B:&NirG%NrrA"/j5/f"Pn=!*PPp(4JcELb"oXVo!"kKIj6u"/_`*)~> -!BpJTm/X,urrB$LmGR@8gJIqN6fWatJcE@^"lhrM!)_L%mIBQEeieN~> -!BU8Qkl@9errAU@l/:e0fM;JI6fWatJcE@^"lhrM!)M6ul1+!=c8pI~> -!B:&NirG%NrrA"/j5Ar$dS0]A6fWatJcE@^"lhrM!):mmj72.1_`*)~> -!BpJTm/X,umJs5;mG[F9W##FCRf7m -!BU8Qkl@9emJrf/l/Ck1VAB4ARf7mc8pI~> -!B:&NirG%NmJr2sj5K#%Tb[V;Rf7m -!BpJTm/X,umJs5;mGmR;iEcNb52LkjJcE.X"l;EC!FF`9mI]cHeieN~> -!BU8Qkl@9emJrf/l/V"3h-9s\52LkjJcE.X"l;EC!F4H3l1F3@c8pI~> -!B:&NirG%NmJr2sj5]/'f3/1T52LkjJcE.X"l;EC!F"*+j7M@4_`*)~> -!BpJTm/X,umJs5;mH!X-JcE(V"oXAc!$BF9mIfiIeieN~> -!BU8Qkl@9emJrf/l/_(4a;t-JcE(V"oXAc!$944l1O9Ac8pI~> -!B:&NirG%NmJr2sj5f5(_]8^_N;\>-JcE(V"oXAc!$/t.j7VF5_`*)~> -!BpJTm/X,umJs5;mH3d>l?EF31Y%'VJcDqR"k>C/"F03_mJ#uKeieN~> -!BU8Qkl@9emJrf/l/q46k&pk-1Y%'VJcDqR"k>C/"ErpYl1aECc8pI~> -!B:&NirG%NmJr2sj6#A*i,]#$1Y%'VJcDqR"k>C/"EWLPj7hR7_`*)~> -!BpJTm/X,umJs5;mH -!BU8Qkl@9emJrf/l0%:7c8Ye*Gl!!kJcDkP"o -!B:&NirG%NmJr2sj6,G+a>O#"Gl!!kJcDkP"o -!BpJTm/X-`mJsT1mJs5;mHEp?T+CuA]n-37s/H#$]c-q_T7QD*m/bd$J,~> -!BU8Qkl@:PmJsT1mJrf/l0.@7SIbc?]n-37s/H#$]c-q_SUp&$klK'jJ,~> -!B:&NirG&9mJsT1mJr2sj65M+R1B9:]n-37s/H#$]c-q^R=XDoirR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WIaI&m01T]!""qiJcC<$V>g_uPmIF?aarjWm/bd$J,~> -!BU8Qkl@:PmK*A%Zc)83SUp%kklo'U!""qiJcC<$V>g_uPmIF>`e!CPklK'jJ,~> -!B:&NirG&9mK*A%Zc)83N.L$Tis!4H!""qiJcC<$V>g_uPmIF=^k(PDirR%VJ,~> -!BpJTm/X-`mK3I)'=7;u"g(#p&m*i@mJs5;mHj3CS.#B -!BU8Qkl@:PmK3I)'=7;u"g(#p&m*i@mJrf/l0RX;R1''9eUdaOs.TGqeK"VuR=XW$klK'jJ,~> -!B:&NirG&9mK3I)'=7;u"g(#p&m*i@mJr2sj6Ye/PmdX5eUdaOs.TGqeK"VuQ%@uoirR%VJ,~> -!BpJTm/X-`mKJaMmm"m9=p!*\uFs+13Brrr!t!!$KkJaNL)!S0Da~> -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;Sna6G>#MJMFWIaI*m0(]g!!npBs+13>rreYo!&2]Lm/l\+4b*~> -!BU8Qkl@:PmKEUjs1f;Sna6G>#MJMFSUp%oklf0_!!npBs+13>rreYo!&)NHklU+p3e.~> -!B:&NirG&9mKEUjs1f;Sna6G>#MJMFN.L$Xirm@S!!npBs+13>rreYo!%u9Bir\8Y2h1~> -!BpJTm/X-`mJm7drrR`Ojmqg?UHI5t!3(P:nEg@a%fdj!JcC<$RK!E7,6/7[JaEKh4b*~> -!BU8Qkl@:PmJm7drrR`Ojmqg?UHI5t!1e]*nEC(Z%fdj!JcC<$RK!E7,6/7XJa!3\3e.~> -!B:&NirG&9mJm7drrR`Ojmqg?UHI5t!/uKhnDaYO%KI`uJcC<$RK!E7,6/4RJ`?dK2h1~> -!BpJTm/X-`mKEUjs1f;So'QRq+j8R,!3(P:o'HVIHia:=oR[$ns-N`hoLJr`I-cLQ!S0Da~> -!BU8Qkl@:PmKEUjs1f;So'QRq+j8R,!1e]*o'$>AH3+(;oR[$ns-N`hoLJr`HK^"G!R<`V~> -!B:&NirG&9mKEUjs1f;So'QRq+j8R,!/uKho&Bo5G6.b8oR[$ns-N`hoLJr`GN+88!Q-jH~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=78t!hC4CfBrX3!S0Da~> -!BU8Qkl@:PmK3I)'=78t!hC4CfBrX0Ja)gk"NMki&@I)hJcCl4"LSd@-c^r*!R<`V~> -!B:&NirG&9mK3I)'=78t!hC4CfBrWtJ`HC_"MuJc&@I)hJcCl4"LSd@-GkJs!Q-jH~> -!BpJTm/X-`mK*A%Zh!McKH/(amJs5;mIfiLYR:F]g4B9Ts,[0_g+*.2Y_MNGeieN~> -!BU8Qkl@:PmK*A%Zh!McKH/(amJrf/l1O9DXU>+Zg4B9Ts,[0_g+*.2XbQ'@c8pI~> -!B:&NirG&9mK*A%Zh!McKH/(amJr2sj7VF8W!`SUg4B9Ts,[0_g+*.2W.s=5_`*)~> -!BpJTm/X-`mK!,n4b*~> -!BU8Qkl@:PmK! -!B:&NirG&9mK!Z:*!ru9jJcC<$NW0.P;ZHoLLZ8EQ2h1~> -!BpJTm/X-`mJsT1mJs5;mJ-&Ok["5iO+I=^s,$aYNr]5ek_\[-eieN~> -!BU8Qkl@:PmJsT1mJrf/l1jKGjBV`dO+I=^s,$aYNr]5djGE+%c8pI~> -!B:&NirG&9mJsT1mJr2sj7qX;hc^!\O+I=^s,$aYNr]5ahhg@o_`*)~> -!BpJTm/X,umJs5;mJ6,PgcYWDWe(2$s+gUWWX/YggktJ"eieN~> -!BU8Qkl@9emJrf/l1sQHffT6@We(2$s+gUWWX/Yffo#"pc8pI~> -!B:&NirG%NmJr2sj8%^ -!BpJTm/X,umJs5;mJ?2Qas-m(b(9SDs+UIUar(1(b)>WfeieN~> -!BU8Qkl@9emJrf/l2'WI`ZkI$b(9SDs+UIUar(1(`f''^c8pI~> -!B:&NirG%NmJr2sj8.d=_'/jsb(9SDs+UIUar(1'_2I=S_`*)~> -!BpJTm/X,umJs5;mJH8RZNgIbj+75]s+C=Sj"UN=Z]+8PeieN~> -!BU8Qkl@9emJrf/l20]JYQk._j+75]s+C=Sj"UN=Y`.fIc8pI~> -!B:&NirG%NmJr2sj87j>Ws8VZj+75]s+C=Sj"UN=X,Q'>_`*)~> -!BpJTm/X,umJs5;mJQ>SRg/phoR[$ns+11QoM5GlRuQe9eieN~> -!BU8Qkl@9emJrf/l29cKQj*OdoR[$ns+11QoM5GkR#U>2c8pI~> -!B:&NirG%NmJr2sj8@p?PQh+`oR[$ns+11QoM5GkP`=](_`*)~> -!BpJTm/X,umJs5;mJZDTJH5airIP!"s+14Mrri:>!!.Y2m/bd$J,~> -!BU8Qkl@9emJrf/l2BiLIfTOgrIP!"s+14Mrri:>!!.S0klK'jJ,~> -!B:&NirG%NmJr2sj8J!@HN=+crIP!"s+14Mrri:>!!.G,irR%VJ,~> -!BpJTm/X,umJs5;mJlPVl=9krNe.4]s+14Irre>`!+bAVm/bd$J,~> -!BU8Qkl@9emJrf/l2TuNk$e;lNe.4]s+14Irre>`!+P)PklK'jJ,~> -!B:&NirG%NmJr2sj8\-Bi*ZNdNe.4]s+14Irre>`!+=`HirR%VJ,~> -!BpJTm/X,umJs5;m02n=9)o6tJcC<$JcGQG"KD_-9BD<'!S0Da~> -!BU8Qkl@9emJrf/klp>18cT-sJcC<$JcGQG"KD_-9&Yos!R<`V~> -!B:&NirG%NmJr2sis"Jt8,rpqJcC<$JcGQG"KD_-8DB9e!Q-jH~> -!BpJTm/X,urrB$Lm0)H)!#!/"s+13$s7cNr_@ci(j-&d1eieN~> -!BU8Qkl@9errAU@klflu!#!/"s+13$s7cNr_@ci'hid4)c8pI~> -!B:&NirG%NrrA"/irn$h!#!/"s+13$s7cNr_@ci&fok@r_`*)~> -!BpJTm/X,urrB$Mm0(ui!$0mHs+13$s7QBph&QJFes#J%eieN~> -!BU8Qkl@9errAUAklfE`!$0mHs+13$s7QBph&QJEdZ`nrc8pI~> -!B:&NirG%NrrA"0irmUT!$0mHs+13$s7QBph&QJDc'./g_`*)~> -!BpJTm/X,urrB$Nm0(]W!%R&\s+13$s7?6nj=1-PcBR\seieN~> -!BU8Qkl@9errAUBklf-O!%R&\s+13$s7?6nj=1-Pb*;,kc8pI~> -!B:&NirG%NrrA"1irm=C!%R&\s+13$s7?6nj=1-O`K]B`_`*)~> -!BpJTm/X,urrB$Om0(?E!&j1ps+13$s7-*llo"h\`0K]jeieN~> -!BU8Qkl@9errAUCkleg>!&j1ps+13$s7-*llo"h\_3O6cc8pI~> -!B:&NirG%NrrA"2irm"2!&j1ps+13$s7-*llo"h[]TqLX_`*)~> -!BpJTm/X,urrB$Pm0's3!(6=.s+13$s6osjnj -!BU8Qkl@9errAUDkleF+!(6=.s+13$s6osjnj -!B:&NirG%NrrA"3irlUu!(6=.s+13$s6osjnj -!BpJTm/X-`rrBjOrrB$Qm0'Wr!)`NBs+13$s6]ghpe_"oYa=_XeieN~> -!BU8Qkl@:PrrBjOrrAUEkle*k!)`NBs+13$s6]ghpe_"oXdA8Qc8pI~> -!B:&NirG&9rrBjOrrA"4irl:`!)`NBs+13$s6]ghpe_"oW0cNF_`*)~> -!BpJTm/X-`rrE,8_uB_9L[>5E#QRp'JcC<$JcG'9"T2:##ca9Z!S0Da~> -!BU8Qkl@:PrrE,8_uB_-LZnr>#QRp'JcC<$JcG'9"T2:##cF'S!R<`V~> -!B:&NirG&9rrE,8_uB^qLZ8N4#QRp'JcC<$JcG'9"T2:##c!dI!Q-jH~> -!BpJTm/X-`rrN07^r66QWJKpEV?[*9rdk*#s+147rri=9!!fBhm/bd$J,~> -!BU8Qkl@:PrrN07^r66QSVZM5UBU^5rdk*#s+147rri=9!!]3dklK'jJ,~> -!B:&NirG&9rrN07^r66QN/6KsT*>:1rdk*#s+147rri=9!!]'`irR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?"ggGu&m+/IrrB$Tm0'*e!,qjfs+13$s6'Cbrbhc@Tpk?LeieN~> -!BU8Qkl@:PrrW8:'Ys>?"ggGu&m+/IrrAUHkldR^!,qjfs+13$s6'Cbrbhc@SsnmEc8pI~> -!B:&NirG&9rrW8:'Ys>?"ggGu&m+/IrrA"7irkeS!,qjfs+13$s6'Cbrbhc?R[W7;_`*)~> -!BpJTm/X-`rr`?%^_FTVrrkcpnFD,jg&D&OMX:M9"9 -!BU8Qkl@:Prr`?%^_FTVrrkcpnFD,jg&D&CMWk53"9 -!B:&NirG&9rr`?%^_FTVrrkcpnFD,jg&D&2MW4f)"9 -!BpJTm/X-`rriE&s1f>anc&X`#hf4XWJg-GU&k=AJcC<$JcF^/"+("LU7CTOeieN~> -!BU8Qkl@:PrriE&s1f>anc&X`#hf4XSVu_7T)o">JcC<$JcF^/"+("LT:G-Hc8pI~> -!B:&NirG&9rriE&s1f>anc&X`#hf4XN/Q]uRfWS:JcC<$JcF^/"+("LS"/L>_`*)~> -!BpJTm/X-`rr<&urrR`Op%/1boS6)mrrB$Wm/rj\!.oe%JcC<$hu -!BU8Qkl@:Prr<&urrR`Op%/1boS6)mrrAUKkl[@V!.oe%JcC<$hu -!B:&NirG&9rr<&urrR`Op%/1boS6)mrrA":irbSL!.oe%JcC<$hu -!BpJTm/X-`rriE&s1f>aoDegj!>aGCrrB$Xm/s$b!.oe%JcC<$h>[S/!!K!em/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoDegj!>aGCrrAULkl[L[!.oe%JcC<$h>[S/!!JmbklK'jJ,~> -!B:&NirG&9rriE&s1f>aoDegj!>aGCrrA";irb_Q!.oe%JcC<$h>[S/!!Ja^irR%VJ,~> -!BpJTm/X-`rr`?%^_FTSrrVbD4k]i8WK-?JV?R$IJcC<$JcFL)"+("PVP!5VeieN~> -!BU8Qkl@:Prr`?%^_FTSrrVbD4k]i8SW;q:UBU^FJcC<$JcFL)"+("PUS$cOc8pI~> -!B:&NirG&9rr`?%^_FTSrrVbD4k]i8N/lp#T*54AJcC<$JcFL)"+("OT:b-E_`*)~> -!BpJTm/X-`rrW8:'Ys2;!VQcOrrB$Zm/s?n!-NkmJcC<$g&D.s!!fNsm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys2;!VQcOrrAUNkl[gf!-NkmJcC<$g&D.s!!]?oklK'jJ,~> -!B:&NirG&9rrW8:'Ys2;!VQcOrrA"=irc%\!-NkmJcC<$g&D.s!!]3kirR%VJ,~> -!BpJTm/X-`rrN07_".L/>LiW5E^8=X!3)(I"1/:5Dh7q>s+14%rr[0>#IL2l!S0Da~> -!BU8Qkl@:PrrN07_".L/>LiW5E^8=X!1f59"0i(2Dh7q>s+14%rr[0>#I0ue!R<`V~> -!B:&NirG&9rrN07_".L/>LiW5E^8=X!0!$""0;_-Dh7q>s+14%rr[0>#HXWZ!Q-jH~> -!BpJTm/X-`rrE,8nc&cm/d)qsl.Q(:WKHQN\I&=Ordk*#s+14%rri=9!"-92m/bd$J,~> -!BU8Qkl@:PrrE,8nc&cm/d)qsl.Q(:SWW.>[L*"Lrdk*#s+14%rri=9!"-0/klK'jJ,~> -!B:&NirG&9rrE,8nc&cm/d)qsl.Q(:N03-'YmLJGrdk*#s+14%rri=9!"-!*irR%VJ,~> -!BpJTm/X-`rrBjOrrB$]m/t9=!+(6VJcC<$e,KMV!"m/Em/bd$J,~> -!BU8Qkl@:PrrBjOrrAUQkl\a5!+(6VJcC<$e,KMV!"cuAklK'jJ,~> -!B:&NirG&9rrBjOrrA"@ircq*!+(6VJcC<$e,KMV!"cf -!BpJTm/X,urrB$^m0(]O!)`WEs+13$s3puNqb[>1cD9h.eieN~> -!BU8Qkl@9errAURklf-G!)`WEs+13$s3puNqb[>1b,"8&c8pI~> -!B:&NirG%NrrA"Airm=;!)`WEs+13$s3puNqb[>0`MDMp_`*)~> -!BpJTm/X,urrB$_m0(u_!(6O4s+13$s3^iLpd5$(etqa7eieN~> -!BU8Qkl@9errAUSklfEW!(6O4s+13$s3^iLpd5$(d\Z1/c8pI~> -!B:&NirG%NrrA"BirmUK!(6O4s+13$s3^iLpd5$'c)'G$_`*)~> -!BpJTm/X,urrB$`m0)5p!&jD!s+13$s3L]JnhpIth59Q?eieN~> -!BU8Qkl@9errAUTklf]h!&jD!s+13$s3L]JnhpIsg8=*8c8pI~> -!B:&NirG%NrrA"Cirmj[!&jD!s+13$s3L]JnhpIre>D7,_`*)~> -!BpJTm/X,urrB$am0)T,!%R>ds+13$s3:QHlm_uikGR\JeieN~> -!BU8Qkl@9errAUUklg'$!%R>ds+13$s3:QHlm_uhjJV5Cc8pI~> -!B:&NirG%NrrA"Dirn3l!%R>ds+13$s3:QHlm_ughP]B7_`*)~> -!BpJTm/X,urrB$bm0)]I!$:NYs+13$s3(EFm2c7#lDX(NeieN~> -!BU8Qkl@9errAUVklg-@!$:NYs+13$s3(EFm2c7"k,@MFc8pI~> -!B:&NirG%NrrA"Eirn:2!$:NYs+13$s3(EFm2c6ui2GZ:_`*)~> -!BpJTm/X,urrB$bm/pl!'%VX6JcC<$ao;Io&ccI@m/bd$J,~> -!BU8Qkl@9errAUVklYAp'%VX6JcC<$ao;Io&ccC>klK'jJ,~> -!B:&NirG%NrrA"Eir`Zh'%VX6JcC<$ao;Io&cc= -!BpJTm/X,urrB$cm/qn>#f;/mJcC<$a8Z7Y#QTFTm/bd$J,~> -!BU8Qkl@9errAUWklZD8#f;/mJcC<$a8Z7Y#QT@RklK'jJ,~> -!B:&NirG%NrrA"FiraW.#f;/mJcC<$a8Z7Y#QT4NirR%VJ,~> -!BpJTm/X,umJs5Sm/rgY!ighOJcC<$`W$%?!Wedjm/bd$J,~> -!BU8Qkl@9emJrfGkl[:R!ighOJcC<$`W$%?!We[gklK'jJ,~> -!B:&NirG%NmJr36irbMH!ighOJcC<$`W$%?!WeOcirR%VJ,~> -!BpJTm/X,umJs5Tm/sg%!02X1JcC<$_uBh!!!]p5m/bd$J,~> -!BU8Qkl@9emJrfHkl\9r!02X1JcC<$_uBh!!!Ta1klK'jJ,~> -!B:&NirG%NmJr37ircLh!02X1JcC<$_uBh!!!TU-irR%VJ,~> -!BpJTm/X,umJs5Um/tKB!-!MhJcC<$_>aUV!"d;Sm/bd$J,~> -!BU8Qkl@9emJrfIkl\p9!-!MhJcC<$_>aUV!"[)NklK'jJ,~> -!B:&NirG%NmJr38ird+.!-!MhJcC<$_>aUV!"ZoIirR%VJ,~> -!BpJTm/X,umJs5Vm/u,g!)\=IJcC<$^]+C5!$g:$m/bd$J,~> -!BU8Qkl@9emJrfJkl]T`!)\=IJcC<$^]+C5!$g1!klK'jJ,~> -!B:&NirG%NmJr39irdaS!)\=IJcC<$^]+C5!$]moirR%VJ,~> -!BpJTm/X,umJs5Wm0)W9!&=+ss+13$s1eR:oJ$>/kcX:ReieN~> -!BU8Qkl@9emJrfKklg'0!&=+ss+13$s1eR:oJ$>.jK@_Jc8pI~> -!B:&NirG%NmJr3:irn7$!&=+ss+13$s1eR:oJ$>-hlbu?_`*)~> -!BpJTm/X-`mJsT1mJs5Wm/pYp)<6;JJcC<$^&J2p)$"!Gm/bd$J,~> -!BU8Qkl@:PmJsT1mJrfKklY2k)<6;JJcC<$^&J2p)$!sFklK'jJ,~> -!B:&NirG&9mJsT1mJr3:ir`Hb)<6;JJcC<$^&J2p)$!jCirR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WLrP[Y5n[(JcC<$JcE:\"0)A&YH[BpeieN~> -!BU8Qkl@:PmK*A%Zc)83SY,-KX8r@%JcC<$JcE:\"0)A&XK^pic8pI~> -!B:&NirG&9mK*A%Zc)83N1],4VuZq!JcC<$JcE:\"0)A&W3G:__`*)~> -!BpJTm/X-`mK3I)'=75s!o"Unf^8a=T^;j)%fh34s+13$s0r"1JcH>)Z0_SC4b*~> -!BU8Qkl@:PmK3I)'=75s!o"Unf^8a1T]lR!%fh34s+13$s0r"1JcH>%Z0;;73e.~> -!B:&NirG&9mK3I)'=75s!o"Unf^8`uT]6-k%KM*3s+13$s0r"1JcH:tZ/Yl&2h1~> -!BpJTm/X-`mKWM/\^i[=e*rdk*#s+13Zrri="!%?j4m/bd$J,~> -!BU8Qkl@:PmKSY>9NhBr;%rdk*#s+13Zrri="!%6X/klK'jJ,~> -!B:&NirG&9mKN1o87fHpSsrdk*#s+13Zrri="!%-@(irR%VJ,~> -!BpJTm/X-`mKEUjs1f;So^2h'*p*ITmJs5\m0)cM!%[Vks+13$s0_k0nga]7m'H'[eieN~> -!BU8Qkl@:PmKEUjs1f;So^2h'*p*ITmJrfPklg3D!%[Vks+13$s0_k0nga]6kd0LSc8pI~> -!B:&NirG&9mKEUjs1f;So^2h'*p*ITmJr3?irn@6!%[Vks+13$s0_k0nga]4ij7YG_`*)~> -!BpJTm/X-`mJm7drrR`Ojn8$D7[ -!BU8Qkl@:PmJm7drrR`Ojn8$D7[ -!B:&NirG&9mJm7drrR`Ojn8$D7[l?"!"dk8s+13$s0M_-g(47.Zf;)(2h1~> -!BpJTm/X-`mKEUjs1f;Sp$Msd/aVm*f^8a=U[8/_!Woc\s+13$s0;S+[/pE/[-[nF4b*~> -!BU8Qkl@:PmKEUjs1f;Sp$Msd/aVm*f^8a1UZhlY!Woc\s+13$s0;S+[/pE-[-7V:3e.~> -!B:&NirG&9mKEUjs1f;Sp$Msd/aVm*f^8`uUZ2HN!Woc\s+13$s0;S+[/pE([,V2)2h1~> -!BpJTm/X-`mK)Emd:)-mJs5^m/toM!/,q'JcC<$YQ"]X!"[Ygm/bd$J,~> -!BU8Qkl@:PmK)Emd:)-mJrfRkl]?E!/,q'JcC<$YQ"]X!"[McklK'jJ,~> -!B:&NirG&9mK)Emd:)-mJr3AirdO9!/,q'JcC<$YQ"]X!"R8]irR%VJ,~> -!BpJTm/X-`mK3I)'=7;uqZ,=;!3)g^"QqH=8cF;@JcC<$YQ"b)8H:I-[d=+H4b*~> -!BU8Qkl@:PmK3I)'=7;uqZ,=;!1ftN"QM-88cF;@JcC<$YQ"b)8H:F([cmh<3e.~> -!B:&NirG&9mK3I)'=7;uqZ,=;!0!c7"Pk[18cF;@JcC<$YQ"b)8H:C![c7D+2h1~> -!BpJTm/X-`mK*A%ZgR5]!8-]>WMSta@K7YAJcC<$JcDkP"7IH7@^bY)eieN~> -!BU8Qkl@:PmK*A%ZgR5]!8-]>SYbQQ?iVG?JcC<$JcDkP"7IH7@(,;#c8pI~> -!B:&NirG&9mK*A%ZgR5]!8-]>N2>P:?2u5=JcC<$JcDkP"7IH7?FJkp_`*)~> -!BpJTm/X-`mK!\*X4I4b*~> -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT1mJs5am/tH=!1/9:JcC<$WW*'e!"?uZm/bd$J,~> -!BU8Qkl@:PmJsT1mJrfUkl\p6!1/9:JcC<$WW*'e!"?lWklK'jJ,~> -!B:&NirG&9mJsT1mJr3Dird(*!1/9:JcC<$WW*'e!"?ZQirR%VJ,~> -!BpJTm/X,umJs5bm/uE!!*XsRJcC<$VuHj&!%R'?m/bd$J,~> -!BU8Qkl@9emJrfVkl]im!*XsRJcC<$VuHj&!%Hj:klK'jJ,~> -!B:&NirG%NmJr3Eire!`!*XsRJcC<$VuHj&!%?R3irR%VJ,~> -!BpJTm/X,umJs5bm/pVo.J&,jJcC<$VuHkj.0*Yam/bd$J,~> -!BU8Qkl@9emJrfVklY,i.J&,jJcC<$VuHkj.0*S_klK'jJ,~> -!B:&NirG%NmJr3Eir`Ea.J&,jJcC<$VuHkj.0*M]irR%VJ,~> -!BpJTm/X,umJs5cm/rs\#1nG+JcC<$V>gYL"ot:,m/bd$J,~> -!BU8Qkl@9emJrfWkl[IV#1nG+JcC<$V>gYL"ot4*klK'jJ,~> -!B:&NirG%NmJr3Firb\L#1nG+JcC<$V>gYL"ot(&irR%VJ,~> -!BpJTm/X,umJs5dm/t`I!0r-8JcC<$U]1F]!"dPim/bd$J,~> -!BU8Qkl@9emJrfXkl]3B!0r-8JcC<$U]1F]!"dGfklK'jJ,~> -!B:&NirG%NmJr3Gird@5!0r-8JcC<$U]1F]!"[/_irR%VJ,~> -!BpJTm/X,umJs5em0)]6!)NTFs+13$s.fSsr_EMRlFcKbeieN~> -!BU8Qkl@9emJrfYklg-.!)NTFs+13$s.fSsr_EMRk.KpZc8pI~> -!B:&NirG%NmJr3Hirn9u!)NTFs+13$s.fSsr_EMPi4S(N_`*)~> -!BpJTm/X,umJs5em/qS5)s`(TJcC<$U&P5\)ZY,qm/bd$J,~> -!BU8Qkl@9emJrfYklZ)/)s`(TJcC<$U&P5\)ZY&oklK'jJ,~> -!B:&NirG%NmJr3Hira?&)s`(TJcC<$U&P5\)ZXrlirR%VJ,~> -!BpJTm/X,umJs5fm/sd"!kj0bJcC<$TDo#,!X,sFm/bd$J,~> -!BU8Qkl@9emJrfZkl\6p!kj0bJcC<$TDo#,!X,jCklK'jJ,~> -!B:&NirG%NmJr3IircIf!kj0bJcC<$TDo#,!X,^?irR%VJ,~> -!BpJTm/X,urrB%#m/u>g!-j(pJcC<$Sc8e:!$1(5m/bd$J,~> -!BU8Qkl@9errAUlkl]c^!-j(pJcC<$Sc8e:!$'k0klK'jJ,~> -!B:&NirG%NrrA"[irdpQ!-j(pJcC<$Sc8e:!#sS)irR%VJ,~> -!BpJTm/X,urrB%#m/pYp./JMpJcC<$Sc8fg-idSfm/bd$J,~> -!BU8Qkl@9errAUlklY/j./JMpJcC<$Sc8fg-idMdklK'jJ,~> -!B:&NirG%NrrA"[ir`Hb./JMpJcC<$Sc8fg-idGbirR%VJ,~> -!BpJTm/X,urrB%$m/s9f#h=M+JcC<$S,WT@#Q^m=m/bd$J,~> -!BU8Qkl@9errAUmkl[d`#h=M+JcC<$S,WT@#Q^g;klK'jJ,~> -!B:&NirG%NrrA"\irbtU#h=M+JcC<$S,WT@#Q^X6irR%VJ,~> -!BpJTm/X,urrB%%m/u)Z!/uL/JcC<$RK!AJ!#OD*m/bd$J,~> -!BU8Qkl@9errAUnkl]QS!/uL/JcC<$RK!AJ!#O;'klK'jJ,~> -!B:&NirG%NrrA"]ird^F!/uL/JcC<$RK!AJ!#F"uirR%VJ,~> -!BpJTm/X,urrB%%m/p2c55g'4JcC<$RK!Bf4oeHqm/bd$J,~> -!BU8Qkl@9errAUnklX]]55g'4JcC<$RK!Bf4oeBoklK'jJ,~> -!B:&NirG%NrrA"]ir`!U55g'4JcC<$RK!Bf4oe -!BpJTm/X-`rrBjOrrB%&m/rjY%Gl[9JcC<$Qi@0E%02p7m/bd$J,~> -!BU8Qkl@:PrrBjOrrAUokl[=R%Gl[9JcC<$Qi@0E%02g4klK'jJ,~> -!B:&NirG&9rrBjOrrA"^irbPH%Gl[9JcC<$Qi@0E%02[0irR%VJ,~> -!BpJTm/X-`rrE,8_uB_9Z0_YI&HJ8Ns+13$s- -!BU8Qkl@:PrrE,8_uB_-Z0;AB&-//Ms+13$s- -!B:&NirG&9rrE,8_uB^qZ/Yr6&-//Ms+13$s- -!BpJTm/X-`rrN07^r66QWNkgl:]Nt9s+13$s-*Ha7K?9%m/bd$J,~> -!BU8Qkl@:PrrN07^r66QS[%D\:&mb7s+13$s-*Ha7K?3#klK'jJ,~> -!B:&NirG&9rrN07^r66QN3VCE9E7P5s+13$s-*Ha7K?-!irR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?quGCL!3*9k"/>i*i.:oZs+136rr_0g!2II!!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?quGCL!1gF["/#W'i.:oZs+136rr_0g!2.6o!R<`V~> -!B:&NirG&9rrW8:'Ys>?quGCL!0"5D".T?#i.:oZs+136rr_0g!1^se!Q-jH~> -!BpJTm/X-`rr`?%^_FTVrr<&KrrB%)m/u2^!0`!6JcC<$OoGNI!#XS2m/bd$J,~> -!BU8Qkl@:Prr`?%^_FTVrr<&KrrAUrkl]WV!0`!6JcC<$OoGNI!#XG.klK'jJ,~> -!B:&NirG&9rr`?%^_FTVrr<&KrrA"airdgJ!0`!6JcC<$OoGNI!#O2(irR%VJ,~> -!BpJTm/X-`rriE&s1f>ap&>!leGfNJZg@j"!'L42s+13$s,m<`rB('b`9dTV4b*~> -!BU8Qkl@:PrriE&s1f>ap&>!leGfN>ZfqQq!'L42s+13$s,m<`rB('``9@ -!B:&NirG&9rriE&s1f>ap&>!leGfN-Zf;-i!'L42s+13$s,m<`rB('^`8^m92h1~> -!BpJTm/X-`rr<&urrR`Op%JCh!"oG^LA]a)!3*?m"0V_2fRa'Rs+132rr^mZ!O'K0!S0Da~> -!BU8Qkl@:Prr<&urrR`Op%JCh!"oG^LA]a)!1gL]"0;M/fRa'Rs+132rr^mZ!Na9)!R<`V~> -!B:&NirG&9rr<&urrR`Op%JCh!"oG^LA]a)!0";F"/l5+fRa'Rs+132rr^mZ!N -!BpJTm/X-`rriE&s1f>aoD\pjd6Va)rrB%+m/uMl!/?()JcC<$NW0*8!$17Bm/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoD\pjd6Va)rrAUtkl]rc!/?()JcC<$NW0*8!$(%=klK'jJ,~> -!B:&NirG&9rriE&s1f>aoD\pjd6Va)rrA"cire*V!/?()JcC<$NW0*8!#sb6irR%VJ,~> -!BpJTm/X-`rr`?%^_FTRrrM9og&D&O[I"':!&+>&s+13$s,I$\r\"7l`pEfX4b*~> -!BU8Qkl@:Prr`?%^_FTRrrM9og&D&C[HRd4!&+>&s+13$s,I$\r\"7j`p!NL3e.~> -!B:&NirG&9rr`?%^_FTRrrM9og&D&2[Gq@+!&+>&s+13$s,I$\r\"7g`o@*;2h1~> -!BpJTm/X-`rrW8:'Ys2;!U1*IrrB%,m/tE6!lffkJcC<$MuNn!!X?`dm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys2;!U1*IrrAUukl\m.!lffkJcC<$MuNn!!X6Q`klK'jJ,~> -!B:&NirG&9rrW8:'Ys2;!U1*IrrA"dird(#!lffkJcC<$MuNn!!X6B[irR%VJ,~> -!BpJTm/X-`rrN07_".L/=O[0'9Oc]T!3*Hp"7/,MAqBu5s+13,rrZj54RC/V!S0Da~> -!BU8Qkl@:PrrN07_".L/=O[0'9Oc]T!1gU`"6_fHAqBu5s+13,rrZj546XcM!R<`V~> -!B:&NirG&9rrN07_".L/=O[0'9Oc]T!0"DI"6)?AAqBu5s+13,rrZj53o\6@!Q-jH~> -!BpJTm/X-`rrE,8nc&cm/d*,5p=]HGWOM6sQiIlgJcC<$JcCT,"76g'R)nXqeieN~> -!BU8Qkl@:PrrE,8nc&cm/d*,5p=]HGS[[hcPlMQdJcC<$JcCT,"76g'Q,r1jc8pI~> -!B:&NirG&9rrE,8nc&cm/d*,5p=]HGN47gLOT6-`JcC<$JcCT,"76g'OiZP`_`*)~> -!BpJTm/X-`rrBjOrrB%.m/u/Z!2+oCJcC<$L]7IL!#=>3m/bd$J,~> -!BU8Qkl@:PrrBjOrrAV"kl]WS!2+oCJcC<$L]7IL!#=50klK'jJ,~> -!B:&NirG&9rrBjOrrA"firddF!2+oCJcC<$L]7IL!#3r)irR%VJ,~> -!BpJTm/X,urrB%.m/pbs5Q666JcC<$L]7JU56,-6m/bd$J,~> -!BU8Qkl@9errAV"klY;n5Q666JcC<$L]7JU56,*5klK'jJ,~> -!B:&NirG%NrrA"fir`Qe5Q666JcC<$L]7JU56,!2irR%VJ,~> -!BpJTm/X,urrB%/m/t0,!nW#'JcC<$L&V8,!X$9]m/bd$J,~> -!BU8Qkl@9errAV#kl\X%!nW#'JcC<$L&V8,!X$0ZklK'jJ,~> -!B:&NirG%NrrA"gircgo!nW#'JcC<$L&V8,!X$!UirR%VJ,~> -!BpJTm/X,urrB%/m/f -!BU8Qkl@9errAV#klNjFEIn.@s+13&rrR0?3QgRec8pI~> -!B:&NirG%NrrA"girV1?EIn.@s+13&rrR0?36L7^_`*)~> -!BpJTm/X,urrB%0m/rmZ(@QhSJcC<$KDu&B(''oKm/bd$J,~> -!BU8Qkl@9errAV$kl[CT(@QhSJcC<$KDu&B(''iIklK'jJ,~> -!B:&NirG%NrrA"hirbVJ(@QhSJcC<$KDu&B('']EirR%VJ,~> -!BpJTm/X,urrB%1m/uDh!1JK=JcC<$Jc>h@!$((Dm/bd$J,~> -!BU8Qkl@9errAV%kl]i_!1JK=JcC<$Jc>h@!#sk?klK'jJ,~> -!B:&NirG%NrrA"iire!S!1JK=JcC<$Jc>h@!#sY9irR%VJ,~> -!BpJTm/X,urrB%1m/qM31Aue(JcC<$Jc>iN1&uLAm/bd$J,~> -!BU8Qkl@9errAV%klZ#-1Aue(JcC<$Jc>iN1&uF?klK'jJ,~> -!B:&NirG%NrrA"iira9$1Aue(JcC<$Jc>iN1&u= -!BpJTm/X,urrB%2m/tiC!Q0KgJcC<$JcGcM"2b-EeBR@]eieN~> -!BU8Qkl@9errAV&kl]9;!Q0KgJcC<$JcGcM"2b-Ed*:eUc8pI~> -!B:&NirG%NrrA"jirdI0!Q0KgJcC<$JcGcM"2b-EbK]&J_`*)~> -!BpJTm/X,umJs6!m/g5e=b6U(s+13$s8Ds!=TDFGm/bd$J,~> -!BU8Qkl@9emJrfjklOc`=b6U(s+13$s8Ds!=TDCFklK'jJ,~> -!B:&NirG%NmJr3YirW'X=b6U(s+13$s8Ds!=TD=DirR%VJ,~> -!BpJTm/X,umJs6"m/t*)#iL:6JcC<$JcG]K"5jFd^Wu3IeieN~> -!BU8Qkl@9emJrfkkl\O!#iL:6JcC<$JcG]K"5jFd]?]XAc8pI~> -!B:&NirG%NmJr3Zircal#iL:6JcC<$JcG]K"5jFd\'F"7_`*)~> -!BpJTm/X,umJs6"m/fENFb0RDs+13$s82ftFT=SMm/bd$J,~> -!BU8Qkl@9emJrfkklNsIFb0RDs+13$s82ftFT=PLklK'jJ,~> -!B:&NirG%NmJr3ZirV:BFb0RDs+13$s82ftFT=MKirR%VJ,~> -!BpJTm/X,umJs6#m/s9e'CLGOJcC<$JcGWI"7?g&W6ai3eieN~> -!BU8Qkl@9emJrflkl[d_'CLGOJcC<$JcGWI"7?g&VU+K-c8pI~> -!B:&NirG%NmJr3[irbtT'CLGOJcC<$JcGWI"7?g&U!Ma"_`*)~> -!BpJTm/X,umJs6$m/uW&!02X1JcC<$JcGQG"-*@1lHno!eieN~> -!BU8Qkl@9emJrfmkl^&r!02X1JcC<$JcGQG"-*@0k0W>nc8pI~> -!B:&NirG%NmJr3\ire3e!02X1JcC<$JcGQG"-*@/i6^Kb_`*)~> -!BpJTm/X-`mJsT1mJs6$m/rIN,5?`hJcC<$JcGQG"8F&?OjNIreieN~> -!BU8Qkl@:PmJsT1mJrfmklZtH,5?`hJcC<$JcGQG"8F&?O3m+lc8pI~> -!B:&NirG&9mJsT1mJr3\irb2>,5?`hJcC<$JcGQG"8F&?MpUJb_`*)~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WPIm&K)d]Ys+13$s+14CrrOtVK@0&eeieN~> -!BU8Qkl@:PmK*A%Zc)83S\XIkJH.KWs+13$s+14CrrOtVJ^N]_c8pI~> -!B:&NirG&9mK*A%Zc)83N54HTIK20Ts+13$s+14CrrOtVIaR0V_`*)~> -!BpJTm/X-`mK3I)'=78t"N!J4)O/qC!3*g%"6'so[XnI0s+13$s7QBo[K%!#dd7(d4b*~> -!BU8Qkl@:PmK3I)'=78t"N!J4)O/qC!1gsj"5X[k[XnI0s+13$s7QBo[K$utdcgeX3e.~> -!B:&NirG&9mK3I)'=78t"N!J4)O/qC!0"bS"5"7e[XnI0s+13$s7QBo[K$undc1AG2h1~> -!BpJTm/X-`mK_c3JcC<$JcG?A!]pC/dd7(d4b*~> -!BU8Qkl@:PmKc3JcC<$JcG?A!]pC-dcgeX3e.~> -!B:&NirG&9mKc3JcC<$JcG?A!]pC*dc1AG2h1~> -!BpJTm/X-`mKEUjs1f;Sp$MiZQ.>:&WP\$)h%'M#JcC<$JcC<$oD\p-!"[o7m/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$MiZQ.>:&S\jUng(+1uJcC<$JcC<$oD\p-!"[f4klK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$MiZQ.>:&N5FTWe.)JnJcC<$JcC<$oD\p-!"RN-irR%VJ,~> -!BpJTm/X-`mJm7drrR`OjnA*G'n$l):Ysdm!3*j&!c\3.JcC<$JcC<$nc&YY!--KT!S0Da~> -!BU8Qkl@:PmJm7drrR`OjnA*G'n$l):Ysdm!1h!k!cJ',JcC<$JcC<$nc&YY!,p?N!R<`V~> -!B:&NirG&9mJm7drrR`OjnA*G'n$l):Ysdm!0"eT!c.j)JcC<$JcC<$nc&YY!,U-E!Q-jH~> -!BpJTm/X-`mKEUjs1f;Sp$Mtc>27q8;;(@;WPe**g'7W!JcC<$JcC<$nc&^4!!h6-m/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$Mtc>27q8;;(@;S\s[of*;;sJcC<$JcC<$nc&^4!!h-*klK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$Mtc>27q8;;(@;N5OZXd0BZmJcC<$JcC<$nc&^4!!gp$irR%VJ,~> -!BpJTm/X-`mK_sIMC!)8%EJcC<$JcG3=!_iZ4eEm:f4b*~> -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=7;u"ZYB,mbJ<)mJs6)m/u,P!6TlmJcC<$JcG3="3LTPgstcmeieN~> -!BU8Qkl@:PmK3I)'=7;u"ZYB,mbJ<)mJrfrkl]TI!6TlmJcC<$JcG3="3LTPg"# -!B:&NirG&9mK3I)'=7;u"ZYB,mbJ<)mJr3airda=!6TlmJcC<$JcG3="3LTPe(*IZ_`*)~> -!BpJTm/X-`mK*A%Zh!MfP?Zo#>#X,B!3*p(!d+K6JcC<$JcC<$mJd5Y!-QiZ!S0Da~> -!BU8Qkl@:PmK*A%Zh!MfP?Zo#>#X,B!1h'm!cn?4JcC<$JcC<$mJd5Y!-?]T!R<`V~> -!B:&NirG&9mK*A%Zh!MfP?Zo#>#X,B!0"kV!cS-1JcC<$JcC<$mJd5Y!-$KK!Q-jH~> -!BpJTm/X-`mK!`U*cb%fjP!s+13$s+14;rr^1>&)Yt*!S0Da~> -!BU8Qkl@:PmK!&)5\"!R<`V~> -!B:&NirG&9mK!%bB4k!Q-jH~> -!BpJTm/X-`mJsT1mJs6*m/hV76%T&es+13$s6K[d5lc8_m/bd$J,~> -!BU8Qkl@:PmJsT1mJrfsklQ,16%T&es+13$s6K[d5lc2]klK'jJ,~> -!B:&NirG&9mJsT1mJr3birXB(6%T&es+13$s6K[d5lc)ZirR%VJ,~> -!BpJTm/X,umJs6+m/u>]!5=$aJcC<$JcG'9"24aKin*PueieN~> -!BU8Qkl@9emJrftkl]cT!5=$aJcC<$JcG'9"24aJhUgumc8pI~> -!B:&NirG%NmJr3cirdpH!5=$aJcC<$JcG'9"24aJf[o-a_`*)~> -!BpJTm/X,umJs6+m/hn?4+[E_s+13$s69Ob3rjobm/bd$J,~> -!BU8Qkl@9emJrftklQD94+[E_s+13$s69Ob3rji`klK'jJ,~> -!B:&NirG%NmJr3cirXZ04+[E_s+13$s69Ob3rj`]irR%VJ,~> -!BpJTm/X,umJs6,m/uPk!47=WJcC<$JcG!7"1/%Ikh,8'eieN~> -!BU8Qkl@9emJrfukl]ub!47=WJcC<$JcG!7"1/%HjOi\tc8pI~> -!B:&NirG%NmJr3dire0W!47=WJcC<$JcG!7"1/%Hhq6ri_`*)~> -!BpJTm/X,umJs6,m/r[T/,k,"JcC<$JcG!7"9'eNQe:[+eieN~> -!BU8Qkl@9emJrfukl[.M/,k,"JcC<$JcG!7"9'eNPh>4$c8pI~> -!B:&NirG%NmJr3dirbDD/,k,"JcC<$JcG!7"9'eNOkA[p_`*)~> -!BpJTm/X,umJs6-m/u]*!2"iBJcC<$JcFp5".oQDm+Lb,eieN~> -!BU8Qkl@9emJrg!kl^-!!2"iBJcC<$JcFp5".oQCkh52$c8pI~> -!B:&NirG%NmJr3eire9i!2"iBJcC<$JcFp5".oQBin<>m_`*)~> -!BpJTm/X,umJs6-m/sBh)u5'bJcC<$JcFp5"8Nl9X4ck@eieN~> -!BU8Qkl@9emJrg!kl[ja)u5'bJcC<$JcFp5"8Nl9W7gD9c8pI~> -!B:&NirG%NmJr3eirc(W)u5'bJcC<$JcFp5"8Nl9UtOc/_`*)~> -!BpJTm/X,umJs6-m/fHOM1P\Xs+13$s5j7^M#]`mm/bd$J,~> -!BU8Qkl@9emJrg!klO!JM1P\Xs+13$s5j7^M#]]lklK'jJ,~> -!B:&NirG%NmJr3eirV:BM1P\Xs+13$s5j7^M#]WjirR%VJ,~> -!BpJTm/X,urrB%?m/t6+%e,&LJcC<$JcFj3"7Qd#_qOJYeieN~> -!BU8Qkl@9errAV3kl\^$%e,&LJcC<$JcFj3"7Qd#^tS#Rc8pI~> -!B:&NirG%NrrA#"ircmn%e,&LJcC<$JcFj3"7Qd#]@u9G_`*)~> -!BpJTm/X,urrB%?m/g;gF+O@Bs+13$s5X+\Er]7pm/bd$J,~> -!BU8Qkl@9errAV3klOibF+O@Bs+13$s5X+\Er]4oklK'jJ,~> -!B:&NirG%NrrA#"irW*YF+O@Bs+13$s5X+\Er]+lirR%VJ,~> -!BpJTm/X,urrB%@m/tuG"5e\0JcC<$JcFd1"5a1cf\>coeieN~> -!BU8Qkl@9errAV4kl]E>"5e\0JcC<$JcFd1"5a1beD'3gc8pI~> -!B:&NirG%NrrA##irdU3"5e\0JcC<$JcFd1"5a1bceII\_`*)~> -!BpJTm/X,urrB%@m/hM4;1\aus+13$s5EtZ;#kjqm/bd$J,~> -!BU8Qkl@9errAV4klQ#.;1\aus+13$s5EtZ;#kdoklK'jJ,~> -!B:&NirG%NrrA##irX9%;1\aus+13$s5EtZ;#k[lirR%VJ,~> -!BpJTm/X,urrB%Am/uPh!5=$aJcC<$JcF^/"24aPkhPP+eieN~> -!BU8Qkl@9errAV5kl]u`!5=$aJcC<$JcF^/"24aPjP8u#c8pI~> -!B:&NirG%NrrA#$ire0T!5=$aJcC<$JcF^/"24aOhq[5m_`*)~> -!BpJTm/X-`rrBjOrrB%Am/iaW/V3qQs+13$s53hX/HD9qm/bd$J,~> -!BU8Qkl@:PrrBjOrrAV5klR4P/V3qQs+13$s53hX/HD0nklK'jJ,~> -!B:&NirG&9rrBjOrrA#$irYGF/V3qQs+13$s53hX/HD$jirR%VJ,~> -!BpJTm/X-`rrE,8_uB_9bO#?g!1JK=JcC<$JcFX-!h'*Hh!G-n4b*~> -!BU8Qkl@:PrrE,8_uB_-bNT'b!1JK=JcC<$JcFX-!h'*Gh!"jb3e.~> -!B:&NirG&9rrE,8_uB^qbMrX[!1JK=JcC<$JcFX-!h'*FguAFQ2h1~> -!BpJTm/X-`rrN07^r66QWQa`3_Z1>BJcC<$JcC<$hu -!BU8Qkl@:PrrN07^r66QS]p=#^]5#?JcC<$JcC<$hu -!B:&NirG&9rrN07^r66QN6L;a])WK:JcC<$JcC<$hu -!BpJTm/X-`rrW8:'Ys>?qu?^,g&D&Obj>I;!-EelJcC<$JcFR+!d"EJh -!BU8Qkl@:PrrW8:'Ys>?qu?^,g&D&Cbio15!-EelJcC<$JcFR+!d"EHh<=sc3e.~> -!B:&NirG&9rrW8:'Ys>?qu?^,g&D&2bi8b-!-EelJcC<$JcFR+!d"EFh;\OR2h1~> -!BpJTm/X-`rr`?%^_FTRrrJ:)g&D&Oc0YVk$N\q3s+13$s+14+rr^pT$fKn/!S0Da~> -!BU8Qkl@:Prr`?%^_FTRrrJ:)g&D&Cc05>c$N\q3s+13$s+14+rr^pT$f'V'!R<`V~> -!B:&NirG&9rr`?%^_FTRrrJ:)g&D&2c/SoX$N\q3s+13$s+14+rr^pT$eO7q!Q-jH~> -!BpJTm/X-`rriE&s1f>ao)Adf,imYY!3+61!f[1GJcC<$JcC<$g]%=@!0,k&!S0Da~> -!BU8Qkl@:PrriE&s1f>ao)Adf,imYY!1hC!!f?tDJcC<$JcC<$g]%=@!/fXt!R<`V~> -!B:&NirG&9rriE&s1f>ao)Adf,imYY!0#1_!f$bAJcC<$JcC<$g]%=@!/KFk!Q-jH~> -!BpJTm/X-`rr<&urrR`Op%/1aSmg:O!3+61!\FDMJcC<$JcC<$g]%>Q!%m'p!S0Da~> -!BU8Qkl@:Prr<&urrR`Op%/1aSmg:O!1hC!!\FDMJcC<$JcC<$g]%>Q!%m'l!R<`V~> -!B:&NirG&9rr<&urrR`Op%/1aSmg:O!0#1_!\48KJcC<$JcC<$g]%>Q!%Zpd!Q-jH~> -!BpJTm/X-`rriE&s1f>aoD\mj.+[&N!3+92"2"UKpjrHrs+13$s4dPUp_ -!BU8Qkl@:PrriE&s1f>aoD\mj.+[&N!1hF""1\CHpjrHrs+13$s4dPUp_hrt0e3e.~> -!B:&NirG&9rriE&s1f>aoD\mj.+[&N!0#4`"1/%CpjrHrs+13$s4dPUp_ -!BpJTm/X-`rr`?%^_FTTrrK,ofDbiMcKt[=!-EelJcC<$JcFF'!d"EJhsCHq4b*~> -!BU8Qkl@:Prr`?%^_FTTrrK,ofDbiAcKPC7!-EelJcC<$JcFF'!d"EHhrt0e3e.~> -!B:&NirG&9rr`?%^_FTTrrK,ofDbi0cJnt/!-EelJcC<$JcFF'!d"EFhr=aT2h1~> -!BpJTm/X-`rrW8:'Ys8=!AVOErrB%Em/uJX!SN&(JcC<$JcFF'"5*\^k2>V-eieN~> -!BU8Qkl@:PrrW8:'Ys8=!AVOErrAV9kl]oP!SN&(JcC<$JcFF'"5*\^io'&%c8pI~> -!B:&NirG&9rrW8:'Ys8=!AVOErrA#(ire'D!SN&(JcC<$JcFF'"5*\^gu.2n_`*)~> -!BpJTm/X-`rrN07_"%F*[Q<">!3+<3!gE[KJcC<$JcC<$fDbn9!0lF/!S0Da~> -!BU8Qkl@:PrrN07_"%F*[Q<">!1hI#!g3OIJcC<$JcC<$fDbn9!0Z:)!R<`V~> -!B:&NirG&9rrN07_"%F*[Q<">!0#7a!fd7EJcC<$JcC<$fDbn9!06!t!Q-jH~> -!BpJTm/X-`rrE,8nG`MOYh&gSWR'r53rkh&s+13$s+14%rrS_k45fK,eieN~> -!BU8Qkl@:PrrE,8nG`MOYh&gSS^6O%3WP_%s+13$s+14%rrS_k3oK6'c8pI~> -!B:&NirG&9rrE,8nG`MOYh&gSN6gMc3<5V$s+13$s+14%rrS_k3T/ou_`*)~> -!BpJTm/X-`rrBjOrrB%Fm/tZ8$Lr]IJcC<$JcF@%"7Z^!cf+6leieN~> -!BU8Qkl@:PrrBjOrrAV:kl]-1$Lr]IJcC<$JcF@%"7Z^!bi.dec8pI~> -!B:&NirG&9rrBjOrrA#)ird=&$Lr]IJcC<$JcF@%"7Z^!a5Q%Z_`*)~> -!BpJTm/X,urrB%Fm/hM4>Clg*s+13$s4.,N>6&p,m/bd$J,~> -!BU8Qkl@9errAV:klQ#.>Clg*s+13$s4.,N>6&j*klK'jJ,~> -!B:&NirG%NrrA#)irX9%>Clg*s+13$s4.,N>6&a'irR%VJ,~> -!BpJTm/X,urrB%Gm/u\t!4ma]JcC<$JcF:#"1eITm,IC5eieN~> -!BU8Qkl@9errAV;kl^,l!4ma]JcC<$JcF:#"1eITki1h-c8pI~> -!B:&NirG%NrrA#*ire9_!4ma]JcC<$JcF:#"1eISio8u!_`*)~> -!BpJTm/X,urrB%Gm/s`r*W:QhJcC<$JcF:#"8s5?[GpQSeieN~> -!BU8Qkl@9errAV;kl\3k*W:QhJcC<$JcF:#"8s5?ZJt*Lc8pI~> -!B:&NirG%NrrA#*ircFa*W:QhJcC<$JcF:#"8s5?Y2\IB_`*)~> -!BpJTm/X,urrB%Gm/gSoH*%#JkK:s1JcC<$JcDhO!dOcPip?ct4b*~> -!BU8Qkl@9errAV;klP,jH*%#JkK:s1JcC<$JcDhO!dOcOiopKh3e.~> -!B:&NirG%NrrA#*irWBaH*%#JkK:s1JcC<$JcDhO!dOcLio:'W2h1~> -!BpJTm/X,urrB%Hm/uPb!7S.O$0,r-G_h-">&WGPs+13$s0)G)df:$Ej6Zlu4b*~> -!BU8Qkl@9errAV&WGPs+13$s0)G)df:!@j66Ti3e.~> -!B:&NirG%NrrA#+ire0N!7S.O$0,r-G_h-">&WGPs+13$s0)G)df:!;j5U0X2h1~> -!BpJTm/X,urrB%Hm/j3d/?o-VpLA!Oqn<0FCLd*is+13$s02M)/-)X/m/bd$J,~> -!BU8Qkl@9errAV -!B:&NirG%NrrA#+irYnS/?o-VpLA!Oqn<0FCLd*is+13$s02M)/-)C(irR%VJ,~> -!BpJTm/X,urrB%Hm/g;gKX(OYoN8Kp^&kZDoR[$ns+13TrrRiR -!BU8Qkl@9errAV -!B:&NirG%NrrA#+irW*YKX(OYoN8Kp^&kZDoR[$ns+13TrrRiR;WHd<_`*)~> -!BpJTm/X,umJs68m/uJ[!8FdY!F)r(^&bTFJcC<$JcE"T"5 -!BU8Qkl@9emJrg,kl]oS!8FdY!F)r(^&bTFJcC<$JcE"T"5)c8pI~> -!B:&NirG%NmJr3pire'F!8FdY!F)r(^&bTFJcC<$JcE"T"5 -!BpJTm/X,umJs68m/is]26m/^V3:Ga!Ks:1s+13$s0;S*2#s?2m/bd$J,~> -!BU8Qkl@9emJrg,klRFV26m/^V3:Ga!Ks:1s+13$s0;S*2#s6/klK'jJ,~> -!B:&NirG%NmJr3pirYYL26m/^V3:Ga!Ks:1s+13$s0;S*2#s*+irR%VJ,~> -!BpJTm/X,umJs68m/g&`NNrK`B`5[F!<0_4!!*[Vrk8AGJcC<$JcE"T!f[1UjR!!!4b*~> -!BU8Qkl@9emJrg,klOQZNNrK`B`5[F!<0_4!!*[Vrk8AGJcC<$JcE"T!f[1SjQQ]j3e.~> -!B:&NirG%NmJr3pirVjRNNrK`B`5[F!<0_4!!*[Vrk8AGJcC<$JcE"T!f[1QjPp9Y2h1~> -!BpJTm/X,umJs69m/uGV!9:Bb!Uat*^&S03^&l!,$i[j@EUJDXJcC<$ZMt$e!"%cKm/bd$J,~> -!BU8Qkl@9emJrg-kl]lN!9:Bb!Uat*^&S03^&l!,$i[j@EUJDXJcC<$ZMt$e!"%WGklK'jJ,~> -!B:&NirG%NmJr3qire$B!9:Bb!Uat*^&S03^&l!,$i[j@EUJDXJcC<$ZMt$e!"%EAirR%VJ,~> -!BpJTm/X,umJs69m/j!^33iJac%l52!!)r2!K\E&^&a#6JcC<$JcE"T!]U1Sjm<*"4b*~> -!BU8Qkl@9emJrg-klRIW33iJac%l52!!)r2!K\E&^&a#6JcC<$JcE"T!]U1Pjllfk3e.~> -!B:&NirG%NmJr3qirY\M33iJac%l52!!)r2!K\E&^&a#6JcC<$JcE"T!]U1Ljl6BZ2h1~> -!BpJTm/X-`mJsT1mJs69m/g;gM6[']c%l52!!)u3!WWCRrk8Dgc%5nGs+13TrrS#W -!BU8Qkl@:PmJsT1mJrg-klOibM6[']c%l52!!)u3!WWCRrk8Dgc%5nGs+13TrrS#W -!B:&NirG&9mJsT1mJr3qirW*YM6[']c%l52!!)u3!WWCRrk8Dgc%5nGs+13TrrS#W;WZp>_`*)~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WR^A;XT0oUrr?a2^A\-4^Ae06%Uf:M!,-r`JcC<$YQ"YT!3PDN!S0Da~> -!BU8Qkl@:PmK*A%Zc)83S^ls+WW4TRrr?a2^A\-4^Ae06%Uf:M!,-r`JcC<$YQ"YT!352G!R<`V~> -!B:&NirG&9mK*A%Zc)83N7HqiV>r0Nrr?a2^A\-4^Ae06%Uf:M!,-r`JcC<$YQ"YT!2eo=!Q-jH~> -!BpJTm/X-`mK3I)'=7;u"j9.;#sc\emJs6:m/g\rIBWYOV3:Ga!Ks:1s+13$s0)G(I/m^ -!BU8Qkl@:PmK3I)'=7;u"j9.;#sc\emJrg.klP5mIBWYOV3:Ga!Ks:1s+13$s0)G(I/m[;klK'j -J,~> -!B:&NirG&9mK3I)'=7;u"j9.;#sc\emJr3rirWKdIBWYOV3:Ga!Ks:1s+13$s0)G(I/mR8irR%V -J,~> -!BpJTm/X-`mKf'NS*(]_jarrH?2otCI6 -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;Sp$MtgkO.d$#MJMFWRgG<]DrnQrrVgp[.h9:Zonu5JcC<$JcDnQ!ZM-P -kNr<$4b*~> -!BU8Qkl@:PmKEUjs1f;Sp$MtgkO.d$#MJMFS_!$,\H!SNrrVgp[.h9:Zonu5JcC<$JcDnQ!ZM-M -kNN#m3e.~> -!B:&NirG&9mKEUjs1f;Sp$MtgkO.d$#MJMFN7R"jZiD&IrrVgp[.h9:Zonu5JcC<$JcDnQ!ZM-H -kMlT\2h1~> -!BpJTm/X-`mJm7drrR`OjnA*G8pT@PG>$WW!3+Q:!d4QYXT&Cs@r&aS^'D;dA,!bPB(:HPJcC<$ -Yl=c>!-[Pm!S0Da~> -!BU8Qkl@:PmJm7drrR`OjnA*G8pT@PG>$WW!1h^*!d"EWXT&Cs@r&aS^'D;dA,!bPB(:HPJcC<$ -Yl=c>!-IDg!R<`V~> -!B:&NirG&9mJm7drrR`OjnA*G8pT@PG>$WW!0#Lh!c\3TXT&Cs@r&aS^'D;dA,!bPB(:HPJcC<$ -Yl=c>!-.2^!Q-jH~> -!BpJTm/X-`mKEUjs1f;Sp$N"6*<6'[f%KHkWRgG<0`\V]rs@_(>'P^TGZo%Grr3)jAfnU8s+13$ -s0;S*[/_rEm/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$N"6*<6'[f%KHkS_!$,0EAM\rs@_(>'PaUGZo%Grr3)jAfnU8s+13$ -s0;S*[/_oDklK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$N"6*<6'[f%KHkN7R"j0*&D[rs@_(>'PdVGZo%Grr3)jAfnU8s+13$ -s0;S*[/_lCirR%VJ,~> -!BpJTm/X-`mKfBi[m!X\Rurr_Fn\EE\f"1fRdnU^^ks+13Vrr_s$ -!nc`(!S0Da~> -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=7;u"U=/XmcOi.mJs6 -!BU8Qkl@:PmK3I)'=7;u"U=/XmcOi.mJrg0klR%K8u;OgK_tND"7]tF\q0m4s+13VrrPdmPN_63 -c8pI~> -!B:&NirG&9mK3I)'=7;u"U=/XmcOi.mJr3tirY8A8u;OgPPb+S"7]tF\q0m4s+13VrrPdmO6GU) -_`*)~> -!BpJTm/X-`mK*A%Zh!Mf/U-.1G:qS:!3+T;!`/l]VZ-\qEqKA6\fYPSJcC<$JcE.X!gE[]kj8E% -4b*~> -!BU8Qkl@:PmK*A%Zh!Mf/U-.1G:qS:!1ha+!_r`[VZ-\qK(T'F\fYPSJcC<$JcE.X!gE[[kii,n -3e.~> -!B:&NirG&9mK*A%Zh!Mf/U-.1G:qS:!0#Oi!_`TYVZ-\qP4\bV\fYPSJcC<$JcE.X!gE[Yki2]] -2h1~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT1mJs6=m/j]r.Ad%Fmsss."2,=dpOW?qs+13ZrrOVL[d!/[eieN~> -!BU8Qkl@:PmJsT1mJrg1klS0k.Ad%FnW*/>"2,=dpOW?qs+13ZrrOVLZg$]Tc8pI~> -!B:&NirG&9mJsT1mJr3uirZCa.Ad%Fnt#=N"2,=dpOW?qs+13ZrrOVLYNb'J_`*)~> -!BpJTm/X,umJs6=m/hJ3D5I75k_J[-"79/@d"24Js+13[rrR$;GNnJqeieN~> -!BU8Qkl@9emJrg1klPu-D5I75lBUl="79/@d"24Js+13[rrR$;Fm8,kc8pI~> -!B:&NirG%NmJr3uirX6$D5I75m@s+M"79/@d"24Js+13[rrR$;Ep;Tb_`*)~> -!BpJTm/X,umJs6=m/f6IZ).I$iK!@+"/?WhrIP!"s+13]rrTG*39ff2eieN~> -!BU8Qkl@9emJrg1klNgEZ).I$jI>T;"/?WhrIP!"s+13]rrTG*39fZ.c8pI~> -!B:&NirG%NmJr3uirV+=Z).I$kbmkK"/?WhrIP!"s+13]rrTG*2X06&_`*)~> -!BpJTm/X,umJs6>m/u>O"Rr8f!SWh+rr_1D5N%+mJcC<$]Di!&"9mfMm/bd$J,~> -!BU8Qkl@9emJrg2kl]cG"Rr8f!T'O;rr_1D5N%+mJcC<$]Di!&"9mZIklK'jJ,~> -!B:&NirG%NmJr4!irdp:"Rr8f!TL6Krr_1D5N%+mJcC<$]Di!&"9dBBirR%VJ,~> -!BpJTm/X,umJs6>m/j3d32HQTd[]\("9")mUOiGrs+13^rrP.[W9WaNeieN~> -!BU8Qkl@9emJrg2klR^^32HQTf;J!8"9")mUOiGrs+13^rrP.[VX!CHc8pI~> -!B:&NirG%NmJr4!irYnS32HQTgp6;H"9")mUOiGrs+13^rrP.[U$CY=_`*)~> -!BpJTm/X,umJs6>m/h#&I&-cCbbOJ'"4/T#m=G:gs+13`rrRQJC?k0eeieN~> -!BU8Qkl@9emJrg2klPMuI&-cCdB;d7"4/T#m=G:gs+13`rrRQJB^4g_c8pI~> -!B:&NirG%NmJr4!irWclI&-cCf=:,G"4/T#m=G:gs+13`rrRQJAa8:V_`*)~> -!BpJTm/X,umJs6>m/ed<^SLl1`2`)%"8?aI^OcE9s+13arrTq8/*cL&eieN~> -!BU8Qkl@9emJrg2klN=7^SLl1bI$O6"8?aI^OcE9s+13arrTq8.dH7!c8pI~> -!B:&NirG%NmJr4!irUY0^SLl1dCnfE"8?aI^OcE9s+13arrTq8.I,po_`*)~> -!BpJTm/X,umJs6?m/u/F$N$Y!!PYi%rr]tIH2<*lJcC<$_#FN6$3AuKm/bd$J,~> -!BU8Qkl@9emJrg3kl]W?$N$Y!!QDY5rr]tIH2<*lJcC<$_#FN6$3AlHklK'jJ,~> -!B:&NirG%NmJr4"irdd3$N$Y!!R/IErr]tIH2<*lJcC<$_#FN6$3AZBirR%VJ,~> -!BpJTm/X,urrB%Pm/j$_6)4G\[^kQ#"6rN=hLY]Xs+13crrPIdU[.:JeieN~> -!BU8Qkl@9errAVDklRLX6)4G\^;/n2"6rN=hLY]Xs+13crrPIdT^1hCc8pI~> -!B:&NirG%NrrA#3irY_N6)4G\`lR -!BpJTm/X,urrB%Pm/h#&I\ZoDYJB9""9+AtVh+l!s+13drrRWLC?t6feieN~> -!BU8Qkl@9errAVDklPQ!I\ZoD\B!_2"9+AtVh+l!s+13drrRWLC$Y!ac8pI~> -!B:&NirG%NrrA#3irWfmI\ZoD_9V0B"9+AtVh+l!s+13drrRWLB'\IX_`*)~> -!BpJTm/X,urrB%Pm/f$C];,B,W5mru"3r9&oR[$ns+13frrTe41@+<.eieN~> -!BU8Qkl@9errAVDklNR>];,B,ZH_G0"3r9&oR[$ns+13frrTe41$e')c8pI~> -!B:&NirG%NrrA#3irUn7];,B,]@5g?"3r9&oR[$ns+13frrTe40^Ia"_`*)~> -!BpJTm/X,urrB%Qm/uAP"S8Dg!MRfurr_n%-dI;CJcC<$`;]r2"9miPm/bd$J,~> -!BU8Qkl@9errAVEkl]fH"S8Dg!Nac0rr_n%-dI;CJcC<$`;]r2"9m]LklK'jJ,~> -!B:&NirG%NrrA#4irds;"S8Dg!Og\@rr_n%-dI;CJcC<$`;]r2"9dEEirR%VJ,~> -!BpJTm/X,urrB%Qm/jEj25:*ORap?r"/corrdk*#s+13hrrP%XY3bNVeieN~> -!BU8Qkl@9errAVEklRmc25:*OV:sl-"/corrdk*#s+13hrrP%XX6f'Oc8pI~> -!B:&NirG%NrrA#4irZ+Y25:*OZ/4F="/corrdk*#s+13hrrP%XVsNFE_`*)~> -!BpJTm/X-`rrBjOrrB%Qm/hG2Eh`R7PMG'q"5Z"1l@Jtds+13irrR3@G3nSseieN~> -!BU8Qkl@:PrrBjOrrAVEklPr,Eh`R7TA\W,"5Z"1l@Jtds+13irrR3@FR85mc8pI~> -!B:&NirG&9rrBjOrrA#4irX3#Eh`R7X5r1<"5Z"1l@Jtds+13irrR3@EU;]d_`*)~> -!BpJTm/X-`rrE,8_uB_9g[,&,!3`-s!K?'qrr`+C'#K5"JcC<$a8Z4E!'fi;!S0Da~> -!BU8Qkl@:PrrE,8_uB_-gZ\c'!3`-s!L`*,rr`+C'#K5"JcC<$a8Z4E!']c6!R<`V~> -!B:&NirG&9rrE,8_uB^qgZ&>t!3`-s!N,, -!BpJTm/X-`rrN07^r66QWSHkClOEpWUAk7JlJ2C@^CZW\s+13$s2b3Bjo>nWmHjr*4b*~> -!BU8Qkl@:PrrN07^r66QS_WH3k7.LSUAk7Xm+hUB^CZW\s+13$s2b3Bjo>nSmHFYs3e.~> -!B:&NirG&9rrN07^r66QN83Fqi=,eLUAk7en(dpE^CZW\s+13$s2b3Bjo>kLmGe5b2h1~> -!BpJTm/X-`rrW8:'Ys>?"RfD"'S"d8!3+c@!lk9^U&P.Bn_='Gh(<77JcC<$JcEjl!Zh?^mHjr* -4b*~> -!BU8Qkl@:PrrW8:'Ys>?"RfD"'S"d8!1hp0!lP'[U&P.Po@s9Ih(<77JcC<$JcEjl!Zh?[mHFYs -3e.~> -!B:&NirG&9rrW8:'Ys>?"RfD"'S"d8!0#^n!l"^VU&P._o\9BJh(<77JcC<$JcEjl!Zh?VmGe5b -2h1~> -!BpJTm/X-`rr`?%^_FTVrrlP5mHn2Ng&D&Oh!G0.!*#Zl!I+=mrr_jh4m@OtJcC<$b5VNB!0us= -!S0Da~> -!BU8Qkl@:Prr`?%^_FTVrrlP5mHn2Ng&D&Ch!"m(!*#Zl!J^F(rr_jh4m@OtJcC<$b5VNB!0cg7 -!R<`V~> -!B:&NirG&9rr`?%^_FTVrrlP5mHn2Ng&D&2guAHs!*#Zl!L -!BpJTm/X-`rriE&s1f>ap&>1(mf3=S4PB`7WSHkB@K;:[rrW1?rn7;RrI#g7JcC<$JcEpn!f?te -mHjr*4b*~> -!BU8Qkl@:PrriE&s1f>ap&>1(mf3=S4PB`7S_WH2?iZ(YrrW1Nrn7;RrI#g7JcC<$JcEpn!f?tc -mHFYs3e.~> -!B:&NirG&9rriE&s1f>ap&>1(mf3=S4PB`7N83Fp?3#kWrrW1^rn7;RrI#g7JcC<$JcEpn!f?ta -mGe5b2h1~> -!BpJTm/X-`rr<&urrR`Op%JCh$h"&pm1@tN!3+c@!\XPhUAk8hGLlcqWYVUcs+13$s31KE^]6%T -m/bd$J,~> -!BU8Qkl@:Prr<&urrR`Op%JCh$h"&pm1@tN!1hp0!\OJgUAk8iL=ZA+WYVUcs+13$s31KE^]6"S -klK'jJ,~> -!B:&NirG&9rr<&urrR`Op%JCh$h"&pm1@tN!0#^n!\FDfUAk8iQ.Gs:WYVUcs+13$s31KE^]5tR -irR%VJ,~> -!BpJTm/X-`rriE&s1f>ap&>1pA+&bn"PNeTWSQqDjokkYUAk8aIb"H#cQIZ7JcC<$JcF$q"7lTu -k3hU;eieN~> -!BU8Qkl@:PrriE&s1f>ap&>1pA+&bn"PNeTS_`N4iWTGUUAk8cN7Iq1cQIZ7JcC<$JcF$q"7lTu -ipQ%3c8pI~> -!B:&NirG&9rriE&s1f>ap&>1pA+&bn"PNeTN8 -!BpJTm/X-`rr`?%^_FTVrrq^c#oA.0g&D&OhBgrr_LK;"K8 -!BU8Qkl@:Prr`?%^_FTVrrq^c#oA.0g&D&Ch<>!L!%suF!UQ!!rr_LK;"K8 -!B:&NirG&9rr`?%^_FTVrrq^c#oA.0g&D&2h;\RA!%suF!Ul]2rr_LK;"K8 -!BpJTm/X-`rrW8:'Ys2;!M3HIrrB%Sm/i7I?_RK#j,DIe"8QO\h1>TWs+13rrrQO-NUH07eieN~> -!BU8Qkl@:PrrW8:'Ys2;!M3HIrrAVGklQ_B?_RK#k*a]u"8QO\h1>TWs+13rrrQO-MXK^0c8pI~> -!B:&NirG&9rrW8:'Ys2;!M3HIrrA#6irXu9?_RK#l))r0"8QO\h1>TWs+13rrrQO-L[O1'_`*)~> -!BpJTm/X-`rrN07_".L/@,^g_*nT*F!3+fA!abqgU&P/KPL9C3PS(c`s+13$s3UcINrWPTm/bd$ -J,~> -!BU8Qkl@:PrrN07_".L/@,^g_*nT*F!1hs1!aYkfU&P/OT@*Z?PS(c`s+13$s3UcINrWMSklK'j -J,~> -!B:&NirG&9rrN07_".L/@,^g_*nT*F!0#ao!a>YcU&P/SX3pqKPS(c`s+13$s3UcINrWDPirR%V -J,~> -!BpJTm/X-`rrE,8nc&`\)%&dWf`(rNh -!BU8Qkl@:PrrE,8nc&`\)%&dWf`(rBh<=tr!5G6-!SXBsrrU%LR=YBhs+13trrTq81@FB-c8pI~> -!B:&NirG&9rrE,8nc&`\)%&dWf`(r1h;\Pk!5G6-!T(*.rrU%LR=YBhs+13trrTq81%+'&_`*)~> -!BpJTm/X-`rrBjOrrB%Tm/uV[!UcZ]!R@Cbrr_")DZ#(cJcC<$e,KO -!BU8Qkl@:PrrBjOrrAVHkl^&S!UcZ]!Rn-rrr_")DZ#(cJcC<$e,KO -!B:&NirG&9rrBjOrrA#7ire3G!UcZ]!SOp-rr_")DZ#(cJcC<$e,KO -!BpJTm/X,urrB%Tm/k?/+/&W7a/I;`"7SfNn:CUjs+14!rrO8BaRAKseieN~> -!BU8Qkl@9errAVHklSg(+/&W7c*GXp"7SfNn:CUjs+14!rrO8B`UE$lc8pI~> -!B:&NirG%NrrA#7ir[!r+/&W7e@X$+"7SfNn:CUjs+14!rrO8B_!g:a_`*)~> -!BpJTm/X,urrB%Tm/idX:S@^g^ou#_"8m$cgO]BUs+14"rrPsrSF>hGeieN~> -!BU8Qkl@9errAVHklR7Q:S@^ga10Co"8m$cgO]BUs+14"rrPsrRIBA@c8pI~> -!B:&NirG%NrrA#7irYJG:S@^gcG@d*"8m$cgO]BUs+14"rrPsrQ1*`6_`*)~> -!BpJTm/X,urrB%Tm/h2+J"ZfB\[K]]!gsn>JcC<$JcF:#!e12gn*L/,4b*~> -!BU8Qkl@9errAVHklP]%J"ZfB^qS"l!gsn>JcC<$JcF:#!e12en*'ku3e.~> -!B:&NirG%NrrA#7irWrqJ"ZfBaMuF'!gsn>JcC<$JcF:#!e12bn)FGd2h1~> -!BpJTm/X,urrB%Tm/ffYX.]InZ+eB\!koM>JcC<$JcF=$!il;ln*L/,4b*~> -!BU8Qkl@9errAVHklO?TX.]In]#Dhl!koM>JcC<$JcF=$!il;kn*'ku3e.~> -!B:&NirG%NrrA#7irVXLX.]In_p$:'!koM>JcC<$JcF=$!il;in)FGd2h1~> -!BpJTm/X,urrB%Tm/eF2e=cgBWl3$Z"5>8Br.4m!s+14&rrU[M+n+e!eieN~> -!BU8Qkl@9errAVHklN".e=cgB[*-Sk"5>8Br.4m!s+14&rrU[M+n+Xrc8pI~> -!B:&NirG%NrrA#7irU>'e=cgB^!Xt%"5>8Br.4m!s+14&rrU[M+Re=k_`*)~> -!BpJTm/X,urrB%Um/uJQ"Sn_j!Mdl[rr_a\8+;*0JcC<$g&D0M"9[fUm/bd$J,~> -!BU8Qkl@9errAVIkl]oI"Sn_j!Nshkrr_a\8+;*0JcC<$g&D0M"9[ZQklK'jJ,~> -!B:&NirG%NrrA#8ire'="Sn_j!P$b&rr_a\8+;*0JcC<$g&D0M"9[HKirR%VJ,~> -!BpJTm/X,urrB%Um/k-).%gM?SC5IX"8m$cgO]BUs+14'rrOSK_XQpneieN~> -!BU8Qkl@9errAVIklSU".%gM?Vq8uh"8m$cgO]BUs+14'rrOSK^[UIgc8pI~> -!B:&NirG%NrrA#8irZdl.%gM?ZJ -!BpJTm/X,umJs6Dm/idX;4mjhQ.j4W!gsY;JcC<$JcFI(!`8rfnEg8-4b*~> -!BU8Qkl@9emJrg8klR7Q;4mjhU#*cg!gsY;JcC<$JcFI(!`8rcnEBu!3e.~> -!B:&NirG%NmJr4'irYJG;4mjhXl@>"!gsY;JcC<$JcFI(!`8r_nDaPe2h1~> -!BpJTm/X,umJs6Dm/hD1HCt3P;JcC<$JcFL)!dXihnEg8-4b*~> -!BU8Qkl@9emJrg8klPo+HCt3P;JcC<$JcFL)!dXifnEBu!3e.~> -!B:&NirG%NmJr4'irX0"HCt3P;JcC<$JcFL)!dXicnDaPe2h1~> -!BpJTm/X,umJs6Dm/g&`US%PeLZlYU"5>8Br.4m!s+14+rrSqq:[m`PeieN~> -!BU8Qkl@9emJrg8klOQZUS%PeQ0Q9e"5>8Br.4m!s+14+rrSqq:%7BJc8pI~> -!B:&NirG%NmJr4'irVjRUS%PeU@#ku"5>8Br.4m!s+14+rrSqq9CUsB_`*)~> -!BpJTm/X,umJs6Dm/eg=b+J\7JFCAT"7SfNn:CUjs+14,rrU=C/F`$-eieN~> -!BU8Qkl@9emJrg8klNC9b+J\7Nq(!d"7SfNn:CUjs+14,rrU=C/F_m)c8pI~> -!B:&NirG%NmJr4'irU_2b+J\7SasYt"7SfNn:CUjs+14,rrU=C/+DR"_`*)~> -!BpJTm/X,umJs6Dm/d[rm@XCZH1o)S"8m$cgO]BUs+14-rrVQf%.NWbeieN~> -!BU8Qkl@9emJrg8klM7nm@XCZM"eac"8m$cgO]BUs+14-rrVQf%.NK^c8pI~> -!B:&NirG%NmJr4'irTVhm@XCZQh\Ds"8m$cgO]BUs+14-rrVQf%.N9X_`*)~> -!BpJTm/X-`mJsT1mJs6Em/kr@&YB"'Er<]P!gsn>JcC<$JcFX-!YGFcna-A.4b*~> -!BU8Qkl@:PmJsT1mJrg9klTB8&YB"'K)NIa!gsn>JcC<$JcFX-!YGF_n`^)"3e.~> -!B:&NirG&9mJsT1mJr4(ir[O,&YB"'P5W/q!gsn>JcC<$JcFX-!YGFYn`'Yf2h1~> -!BpJTm/X-`mK!J!W-uPrrTnOR=YBhs+14.rrP"W\FJqeeieN~> -!BU8Qkl@:PmK!J!W.P`rrTnOR=YBhs+14.rrP"W[INJ^c8pI~> -!B:&NirG&9mK!J!W8.prrTnOR=YBhs+14.rrP"WYjp`S_`*)~> -!BpJTm/X-`mK*A%Zc)83WSm.FQiL3[rrM_=]`/)g.;o'7s+13$s5O%[ -!BU8Qkl@:PmK*A%Zc)83S`&`6PlOmXrrMeM]`/)g.;o'7s+13$s5O%[ -!B:&NirG&9mK*A%Zc)83N8W^tOT8ITrrMh]]`/)g.;o'7s+13$s5O%[ -!BpJTm/X-`mK3I)'=78trW)ob"mp1<&9.$qmJs6Em/hJ3HCt3 -!BU8Qkl@:PmK3I)'=78trW)ob"mp1<&9.$qmJrg9klPu-HCt3'\"7SfNn:CUjs+141rrRKH -Fn+\sc8pI~> -!B:&NirG&9mK3I)'=78trW)ob"mp1<&9.$qmJr4(irX6$HCt3 -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;So'QJXrU'hHYjUq`2rX0)WSm.F2up[brrLu<\GlVu&]B8#JcC<$jo5Cr -!''N9!S0Da~> -!BU8Qkl@:PmKEUjs1f;So'QJXrU'hHYjUq`2rX0)S`&`62up[brrM,M\GlVu&]B8#JcC<$jo5Cr -!''N5!R<`V~> -!B:&NirG&9mKEUjs1f;So'QJXrU'hHYjUq`2rX0)N8W^t2?:I`rrM5\\GlVu&]B8#JcC<$jo5Cr -!&jB-!Q-jH~> -!BpJTm/X-`mJm7drrR`Ojn%m?!<)cm/bd$J,~> -!BU8Qkl@:PmJm7drrR`Ojn%m?!<) -!B:&NirG&9mJm7drrR`Ojn%m?!<) -!BpJTm/X-`mKEUjs1f;So'QJXrU'gjm-a<."6&YJWT!4HlNRCaTDnr=T!nY#c5N4(s+13$s6'Ca -pAkKao'HJ/4b*~> -!BU8Qkl@:PmKEUjs1f;So'QJXrU'gjm-a<."6&YJS`/f8k61n\TDnrBWODg.c5N4(s+13$s6'Ca -pAkH\o'$2#3e.~> -!B:&NirG&9mKEUjs1f;So'QJXrU'gjm-a<."6&YJN8`e!i<98VTDnrH['ou9c5N4(s+13$s6'Ca -pAkHVo&Bbg2h1~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=72r!!)uc"Z -!BU8Qkl@:PmK3I)'=72r!!)uc"Z -!B:&NirG&9mK3I)'=72r!!)uc"Z -!BpJTm/X-`mK*A%Zg[;^!<)=1m-bb!3+rE!hoZiT)Si'['Tc7mQ=hQJcC<$JcG$8!_r`i -o'HJ/4b*~> -!BU8Qkl@:PmK*A%Zg[;^!<)=1m-bb!1i*5!hTHfT)Si/]X.V?mQ=hQJcC<$JcG$8!_r`f -o'$2#3e.~> -!B:&NirG&9mK*A%Zg[;^!<)=1m-bb!0#ms!h00bT)Si7`3]IGmQ=hQJcC<$JcG$8!_r`b -o&Bbg2h1~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT1mJs6Fm/h,)LS"MHXhq@C"8cCemXbChs+14:rrRrUD=[&peieN~> -!BU8Qkl@:PmJsT1mJrg:klPW#LS"MH[`PfS"8cCemXbChs+14:rrRrUC\$]jc8pI~> -!B:&NirG&9mJsT1mJr4)irWopLS"MH^X07c"8cCemXbChs+14:rrRrUC%C9b_`*)~> -!BpJTm/X,umJs6Fm/gAiSt>r_VTH(B"9* -!BU8Qkl@9emJrg:klOlcSt>r_Yg9QR"9*JUc8pI~> -!B:&NirG%NmJr4)irW0[St>r_]%+%b"9* -!BpJTm/X,umJs6Fm/fZU[%@9uT?sb@!f%uSJcC<$JcG0 -!BU8Qkl@9emJrg:klO0O[%@9uWn"9P!f%uSJcC<$JcG0 -!B:&NirG%NmJr4)irVLH[%@9u[+hb`!f%uSJcC<$JcG0 -!BpJTm/X,umJs6Fm/em?bF\_7R+JJ?!h:1SJcC<$JcG3=!m:Qro'HJ/4b*~> -!BU8Qkl@9emJrg:klNI;bF\_7UYN!O!h:1SJcC<$JcG3=!m:Qro'$2#3e.~> -!B:&NirG%NmJr4)irUb3bF\_7YMcP_!h:1SJcC<$JcG3=!m:Qpo&Bbg2h1~> -!BpJTm/X,umJs6Fm/e1+iL^&MOP[)=!j3-RJcC<$JcG6>!oX+to'HJ/4b*~> -!BU8Qkl@9emJrg:klM_&iL^&MS`6aN!j3-RJcC<$JcG6>!oX+so'$2#3e.~> -!B:&NirG%NmJr4)irU(uiL^&MWTC5]!j3-RJcC<$JcG6>!oX+so&Bbg2h1~> -!BpJTm/X,umJs6Gm/u\Z!;E)b!K-!>rrU+NY^uh*s+14?rr_uq#41sK!S0Da~> -!BU8Qkl@9emJrg;kl^,R!;E)b!LN#NrrU+NY^uh*s+14?rr_uq#3b[C!R<`V~> -!B:&NirG%NmJr4*ire9F!;E)b!Mo%^rrU+NY^uh*s+14?rr_uq#3,77!Q-jH~> -!BpJTm/X,umJs6Gm/l,E%\ -!BU8Qkl@9emJrg;klTQ=%\ -!B:&NirG%NmJr4*ir[a2%\ -!BpJTm/X,umJs6Gm/kE1,b=r9I.O?;!ne]TJcC<$JcG<@![IcgoBcS04b*~> -!BU8Qkl@9emJrg;klSj),b=r9MY3tK!ne]TJcC<$JcG<@![IccoB?;$3e.~> -!B:&NirG%NmJr4*ir[$s,b=r9RJ*W[!ne]TJcC<$JcG<@![Ic^oA]kh2h1~> -!BpJTm/X,urrB%Xm/jfu2kBsLFS_s9"61kVrdk*#s+14BrrP+Z\b#1heieN~> -!BU8Qkl@9errAVLklS9n2kBsLK_q_J"61kVrdk*#s+14BrrP+Z[e&_ac8pI~> -!B:&NirG%NrrA#;irZIc2kBsLPP_ -!BpJTm/X,urrB%Xm/j9f8"T_]rGne8"7.pXr.4m!s+14CrrP[jWq5TYeieN~> -!BU8Qkl@9errAVLklRa_8"T_]rIUpH"7.pXr.4m!s+14CrrP[jVt9-Rc8pI~> -!B:&NirG%NrrA#;irYtU8"T_]rK=&X"7.pXr.4m!s+14CrrP[jU\!LH_`*)~> -!BpJTm/X,urrB%Xm/idX -!BU8Qkl@9errAVLklR:R[G"7no[pjrHrs+14DrrQ4$Re,bEc8pI~> -!B:&NirG%NrrA#;irYMH -!BpJTm/X,urrB%Xm/i:JAtK#'msq56"8Gh`o7?pms+14ErrQd4Nq;W=eieN~> -!BU8Qkl@9errAVLklQbCAtK#'nW'FF"8Gh`o7?pms+14ErrQd4Mt?06c8pI~> -!B:&NirG%NrrA#;irY#:AtK#'nsuTV"8Gh`o7?pms+14ErrQd4M"BX-_`*)~> -!BpJTm/X,urrB%Xm/hb;G+S^7k_Gr5"8lahm",1fs+14FrrR?DJ+N%.eieN~> -!BU8Qkl@9errAVLklQ85G+S^7lBS.E"8lahm",1fs+14FrrR?DIIl\(c8pI~> -!B:&NirG%NrrA#;irXK+G+S^7m@pBU"8lahm",1fs+14FrrR?DH1U%s_`*)~> -!BpJTm/X-`rrBjOrrB%Xm/h2+L7\DGiJsZ4"9*Qqj+75]s+14GrrRoTDtE>seieN~> -!BU8Qkl@:PrrBjOrrAVLklP]%L7\DGjI;nD"9*Qqj+75]s+14GrrRoTD=cumc8pI~> -!B:&NirG&9rrBjOrrA#;irWrqL7\DGkbk0T"9*Qqj+75]s+14GrrRoTC@gHd_`*)~> -!BpJTm/X-`rrE,8_uB_9ip?eT!1'5V!SWg3rrS-%fn'0Ss+14HrrSJd@.WadeieN~> -!BU8Qkl@:PrrE,8_uB_-iopMO!1'5V!T'NCrrS-%fn'0Ss+14HrrSJd?h -!B:&NirG&9rrE,8_uB^qio:)F!1'5V!TL5SrrS-%fn'0Ss+14HrrSJd>k?tV_`*)~> -!BpJTm/X-`rrN07^r66QWT*:H;ui_crrLT=TDntb)U3j5JcC<$qu6_n!*&RW!S0Da~> -!BU8Qkl@:PrrN07^r66QS`8l8;ZNVbrrLcMTDntb)U3j5JcC<$qu6_n!)rLR!R<`V~> -!B:&NirG&9rrN07^r66QN8ik!;#mD`rrLr]TDntb)U3j5JcC<$qu6_n!)`@J!Q-jH~> -!BpJTm/X-`rrW8:'Ys;>rW)lrrW(jU!3+uF!_WNrT)Si8URqJeYS"hKrrpDgE-loN[Jp@,dF%lC -s+14)rrT>'9CqNOeieN~> -!BU8Qkl@:PrrW8:'Ys;>rW)lrrW(jU!1i-6!_NHqT)Si=Y+GXpYS"hKrrpDgE-loN[Jp@,dF%lC -s+14)rrT>'9(V9Jc8pI~> -!B:&NirG&9rrW8:'Ys;>rW)lrrW(jU!0#pt!_<'8FtjB_`*)~> -!BpJTm/X-`rr`?%^_FTSrr<&qrr<&VrrB%Xm/fWT\"CsN%^:]&%jLP9q -``?f,JSA0)\Gl`PH>mkM`e"/krrTY06hB[GeieN~> -!BU8Qkl@:Prr`?%^_FTSrr<&qrr<&VrrAVLklO0O\"CsN%^:]&%jLP9q -``?f,JSA0)\Gl`PH>mkM`e"/krrTY06M'FBc8pI~> -!B:&NirG&9rr`?%^_FTSrr<&qrr<&VrrA#;irVIG\"CsN%^:]&%jLP9q -``?f,JSA0)\Gl`PH>mkM`e"/krrTY05kF":_`*)~> -!BpJTm/X-`rriE&s1f>ao)A[iqYpNqhu<\Uip?e-!5Y9,!PPe/rrUF`TDeck^0/)F^&koL^:aII -r-s@r^&iq:r4N%9jBI5K^:q73>NCA8Y5\R>!'0Z -!BU8Qkl@:PrriE&s1f>ao)A[iqYpNqhu<\IiopM(!5Y9,!Q;U?rrUF`TDeck^0/)F^&koL^:aII -r-s@r^&iq:r4N%9jBI5K^:q73>NCA8Y5\R>!''T7!R<`V~> -!B:&NirG&9rriE&s1f>ao)A[iqYpNqhu<\8io:)!!5Y9,!R&BNrrUF`TDeck^0/)F^&koL^:aII -r-s@r^&iq:r4N%9jBI5K^:q73>NCA8Y5\R>!&sN0!Q-jH~> -!BpJTm/X-`rr<&urrR`Op%/1`!;c]q!8meVWT*:H0`]@frrKL -!BU8Qkl@:Prr<&urrR`Op%/1`!;c]q!8meVS`8l80EB7errKgMS,W]G+H6@#d:r?h!GTrprrI#2 -q7Zm'DS?&O^0/)F^&koL^4H -!B:&NirG&9rr<&urrR`Op%/1`!;c]q!8meVN8ik!0*'.drrL*]S,W]G+H6@#d:r?h!GTrprrI#2 -q7Zm'DS?&O^0/)F^&koL^4H -!BpJTm/X-`rriE&s1f>ao)A[iqYpNqhu<\Uip?dq!7RP>!Na2-rrqF4H21[XpV$^B>Pc,7!LAuE -^&aIa^]+>^C%o=BC!hM3Yl=dR!%@I+!S0Da~> -!BU8Qkl@:PrriE&s1f>ao)A[iqYpNqhu<\IiopLl!7RP>!Og+=rrqF4H21[XpV$^B>Pc,7!LAuE -^&aIa^]+>^C%o=BC!hM3Yl=dR!%7C&!R<`V~> -!B:&NirG&9rriE&s1f>ao)A[iqYpNqhu<\8io:(e!7RP>!Pd!MrrqF4H21[XpV$^B>Pc,7!LAuE -^&aIa^]+>^C%o=BC!hM3Yl=dR!%. -!BpJTm/X-`rr`?%^_FTSrr<&qrr<&VrrB%Xm/e@0h4FWIV955+"7.p6U%Q,#ToHkf!U":l^&`'5 -_>aT5>J9dF!khh7JcE"T!o3huoBcS04b*~> -!BU8Qkl@:Prr`?%^_FTSrr<&qrr<&VrrAVLklMq,h4FWIYL&^;"7.p6U%Q,#ToHkf!U":l^&`'5 -_>aT5>J9dF!khh7JcE"T!o3huoB?;$3e.~> -!B:&NirG&9rr`?%^_FTSrr<&qrr<&VrrA#;irU8%h4FWI\^m2K"7.p6U%Q,#ToHkf!U":l^&`'5 -_>aT5>J9dF!khh7JcE"T!o3htoA]kh2h1~> -!BpJTm/X-`rrW8:'Ys5 -!BU8Qkl@:PrrW8:'Ys5 -!B:&NirG&9rrW8:'Ys5 -!BpJTm/X-`rrN07_!h:'!;c]q!8meVWT*:H'*. -!BU8Qkl@:PrrN07_!h:'!;c]q!8meVS`8l8'*. -!B:&NirG&9rrN07_!h:'!;c]q!8meVN8ik!'*. -!BpJTm/X-`rrE,8nGiCdrr;lriVrnWip?dY!:HHY!K?'+rr?s7^'/s4"UdMkr4W/K_Z'Y(UA_e. -Qqe"hqn<**R)Aq)Y*JUm!L9g=s0DY+mJmgim/bd$J,~> -!BU8Qkl@:PrrE,8nGiCdrr;lriVrnKiopLT!:HHY!L`);rr?s7^'/s4"UdMkr4W/K_Z'Y(UA_e. -Qqe"hqn<**R)Aq)Y*JUm!L9g=s0DY+mJmdhklK'jJ,~> -!B:&NirG&9rrE,8nGiCdrr;lriVrn:io:(N!:HHY!N,+Krr?s7^'/s4"UdMkr4W/K_Z'Y(UA_e. -Qqe"hqn<**R)Aq)Y*JUm!L9g=s0DY+mJmdhirR%VJ,~> -!BpJTm/X-`rrBjOrrB%Xm/d^snXfa]L$G'*!,;DG#Bq#?[^LoBZMhK;Bu9lMDu@ -!BU8Qkl@:PrrBjOrrAVLklM:onXfa]P3nY:!,;DG#Bq#?[^LoBZMhK;Bu9lMDu@ -!B:&NirG&9rrBjOrrA#;irTVhnXfa]T^S9J!,;DG#Bq#?[^LoBZMhK;Bu9lMDu@ -!BpJTm/X,urrB%Xm/dUpoUc'`II`g+!V14.^&]4=rOr;r?i@\>E:UpH!,22B!!)l0!,0:M!,;DG -"opHE\t1N^r4W/FJcE%U!qZI"oBcS04b*~> -!BU8Qkl@9errAVLklM1loUc'`MtEG;!V14.^&]4=rOr;r?i@\>E:UpH!,22B!!)l0!,0:M!,;DG -"opHE\t1N^r4W/FJcE%U!qZI"oB?;$3e.~> -!B:&NirG%NrrA#;irTPfoUc'`Re<*K!V14.^&]4=rOr;r?i@\>E:UpH!,22B!!)l0!,0:M!,;DG -"opHE\t1N^r4W/FJcE%U!qZI"oA]kh2h1~> -!BpJTm/X,urrB%Xm/dLmpR_BcFS_F*!SW&%^&\>IrOr.spL!N?Y.^&`3DJcE(V!qu["oBcS04b*~> -!BU8Qkl@9errAVLklM(ipR_BcK_q2;!SW&%^&\>IrOr.spL!N?Y.^&`3DJcE(V!qu["oB?;$3e.~> -!B:&NirG%NrrA#;irTGcpR_BcPP^dJ!SW&%^&\>IrOr.spL!N?Y.^&`3DJcE(V!qu["oA]kh2h1~> -!BpJTm/X,urrB%Xm/dFkqOdcgr,\8*!Q^,r^&].;rOr;t$N7[>L1J5P!GluU^&S00^&`c;`W#tm -J,$_YXpP$?!IrgSs0M_,q>^]jm/bd$J,~> -!BU8Qkl@9errAVLklM"gqOdcgr.CC:!Q^,r^&].;rOr;t$N7[>L1J5P!GluU^&S00^&`c;`W#tm -J,$_YXpP$?!IrgSs0M_,q>^]jklK'jJ,~> -!B:&NirG%NrrA#;irT>`qOdcgr0*NJ!Q^,r^&].;rOr;t$N7[>L1J5P!GluU^&S00^&`c;`W#tm -J,$_YXpP$?!IrgSs0M_,q>^ZiirR%VJ,~> -!BpJTm/X,urrB%Xm/d=hrLa)joQuu*!Q^,r^'Aj#M79sN)ZouP#_bNG?Y4+qH%*qd!G$r\^&S00 -^&`t!`I@o!LA8I`=A&M*!K"mKs0M_,r;Zojm/bd$J,~> -!BU8Qkl@9errAVLklLndrLa)jono.:!Q^,r^'Aj#M79sN)ZouP#DGQO@VBY$HHL^ -!B:&NirG%NrrA#;irT8^rLa)jp6h -!BpJTm/X,urrB%Xm/d=hrLa)jm":]*!SW&$^'9-=#6cW(&,j3UI'()cU6UL\F+9.:VR++agZ\>0 -f)GclM>=jc!;aD1L1JJW#C^o;C1CL9L&&FaH6' -!BU8Qkl@9errAVLklLndrLa)jmZEn:!SW&$^'9-=#6cW(&,j3TI'U]#XJ(o9K8l:qYe8'+hs:!d -rrL2tq7Zh/qRuubABTH-IX-!OAme,_q7ZoV*O>UW!K"mKs0M_,r;ZojklK'jJ,~> -!B:&NirG%NrrA#;irT8^rLa)jn=Q*J!SW&$^'9-=#6cW(&,j3TICID9\#lBlPFSMS]#;qJj6cTk -rrL2tq7Zh/qRuubABTH-IX6*SC1Kqjq7ZoV*O>UW!K"mKs0M_,r;ZojirR%VJ,~> -!BpJTm/X,urrB%Xm/dFkqOdcgjGTE*!V14(^&`dFrOr;Oo)&G&r9r[raLeRJPD4@&J;otnZ+eB3 -ipQ^&rrLf'q7Zh/qRuu\g"$*7rp&Fi`3uV5N.5nrMO:9JVL86S!dkf[qn<)\g4B:1rrW#s"nV*^ -eieN~> -!BU8Qkl@9errAVLklM"gqOdcgkEqY:!V14(^&`dFrOr;Oo)&G&r:/q'cGR,lT9P._NgcfJ]#E%N -jm`3,rrLf'q7Zh/qRuu\g!p$5mGumB^9XW(NIm(TUp.P6I/:PYHl&UU^&``;JcE(V!r;m#oB?;$ -3e.~> -!B:&NirG%NrrA#;irT>`qOdcglD9mJ!V14(^&`dFrOr;Oo)&G&r:B10e]Yb:X.blBSYr^&_p$]h -kjnZ1rrLf'q7Zh/qRuu\g!p$5n)rKR`k/LQS!'59YI_]YI/:PYHl&UU^&``;JcE(V!r;m"oA]kh -2h1~> -!BpJTm/X,urrB%Xm/dLmpRhHdgln*)!,;5B!kTk=rOr8Gn,F4'mc)d=]s4E%N.H(pK9)M"ZbXf; -jRE*7rrMV0q7Zh/qRuuNnDXB_rq#=-cGHufS -!BU8Qkl@9errAVLklM(ipRhHdi1HA9!,;5B!kTk=rOr8Gmf+'ljkA&!]!%otO+W1LS>NR(a3i]* -o).nT!Ut.*^&S00^&`9DiVs\mp$1G`aM"mWS<8PVP+/AV^s(Kno)8Ld!V14,^&iElU&)J(E:SS[ -Zi:+$!!i,[!R<`V~> -!B:&NirG%NrrA#;irTGcpRhHdjK"XI!,;5B!kTk=rOr8Gmf+'nkhak6_RZnJSWfA3W3NtQcI_%? -oDJ"U!Ut.*^&S00^&`9DiVs\mp?^hmcc*Q&WLoK -!BpJTm/X,umJs6Gm/dUpoUl-ae=2g)!,hbL"u_FK[ZE1Kr4W/Kj8U%lleg13]<@urMgoenKT2=j -WNs1UcI_%?oDJLc!,22B!!)l0!,1g#)?0Buk2"S3`4N1HQ&0p0H\[iZXh)O#hs:%-rrW2P -!BU8Qkl@9emJrg;klM1loUl-afqt,9!,hbL"u_FK[ZE1Kr4W/Kj8U%mmc2sE_mlhCR#Q`SOd`#E -Zb+,ueD0-Op&4df!,22B!!)l0!,1d")#3UbiRuZ%_RHV?QA^?PQ(Y1d_9CNjmJ-5O!SpiT^&i*e -U\VV(Bn?;irrVfm$M3K_c8pI~> -!B:&NirG%NmJr4*irTPfoUl-ahQ`FI!,hbL"u_FK[ZE1Kr4W/Kj8U%nnE/QVbJCZjV43[8T;Sj" -]Yhq@g#2)_pAOmg!,22B!!)l0!,1d")# -!BpJTm/X,umJs6Gm/d^snXog^bbLO)!Nq^e^'0-<":I#?r4W2sY1N[gp?U\icc3Z)WhGc>Km[oa -J;KGYTiV!'!!)l0,%]K\f[nU!bK%N8]!e]9S!/_\H#\(ZM3==&X0f[eg#_f(l2Lnab)2'^rOr>C -)Q*;D!,dAfZMt!r!"JPe!S0Da~> -!BU8Qkl@9emJrg;klM:onXog^d]Jl9!Nq^e^'0-<":I#?r4W2sY1N[gp[.(ueBGkDZ`BjjP)=jF -Ng?96XBGA5!!)l0,%f]fgtUK3dETeQ_S3I]VOs39Lk1>AQCaqT[CsW/h<=J0l2Lnad$L)+rOr>C -)Q*;D!,dAfZMt!r!"JPa!R<`V~> -!B:&NirG%NmJr4*irTVhnXog^fXI4I!Nq^e^'0-<":I#?r4W2sY1N[gq![G*g=+6`]sb)ATUCt. -S>3*h[TrXB!!)l0,%oooiS`PGf@80lb/V3+Z)a[kQ][T)UoL]/^;\CMip6::l2Lnaetf*MrOr>C -)Q*;D!,dAfZMt!r!"AJZ!Q-jH~> -!BpJTm/X,umJs6Gm/dh!m[sL[`2f7)!W-*m^&_gBaSuM?n)iHUc?l;a^A7j/^(mALQ'[i)S=cUU -XK]+C_opNajmDd@h>[`R]RQ:#j'n2N^A7g0ZMqQ=Q*,] -!BU8Qkl@9emJrg;klM@qm[sL[bI!W9!W-*m^&_gBaSuM@n`f#cdse%i^A7j/^(d;RTq\^N$rk8DuY(?VYrrVTg&+f#dc8pI~> -!B:&NirG%NmJr4*irT_km[sL[dCttI!W-*m^&_gBaSuMAoBYMpfn,ss^A7j/^(d;XXfeh1ZF.3S -^V[t3d+@+7lgac*rs/>BS?Ci8F-HU;q>^N$rk8DuY(?VYrrVTg&+ef^_`*)~> -!BpJTm/X,umJs6Gm/dq$lC\(W]X!n(!l#bKotCI#NPYVqnSIg2!Gq;LrsA%oHD]j&[XH;0o=b6: -qgndQrrVHc'D(SleieN~> -!BU8Qkl@9emJrg;klMLulC\(W_n298!l#bKotCI#NPYVqnSIg2!Gq;LrsA,%M6Q7C^PgHMo=b6: -qgndQrrVHc'D(Ghc8pI~> -!B:&NirG%NmJr4*irTkolC\(WbJ]bI!l#bKotCI#NPYVqnSIg2!Gq;LrsA20R(DV^a-tOio=b6: -qgndQrrVHc'D(5b_`*)~> -!BpJTm/X,umJs6Gm/e((k+DYS[(D_*"MY_a>J9dF!khh7_#FFS[Iq67[;a@i%,db*[.41XMjj29 -NM6$Z!MPL(s0;S*jo?4hm/bd$J,~> -!BU8Qkl@9emJrg;klMY$k+DYS]Y^'9"MY_a>J9dF!khh7_#FFS[Iq67[;a@i%-+@F]^u0eR&9KT -NM6$Z!MPL(s0;S*jo?4hklK'jJ,~> -!B:&NirG%NmJr4*irTtrk+DYS`6+JI"MY_a>J9dF!khh7_#FFS[Iq67[;a@i%-P!c`:X)qV6T[m -NM6$Z!MPL(s0;S*jo?1girR%VJ,~> -!BpJTm/X-`mJsT1mJs6Gm/e@0h4O]JXM^J+"hthfs3YQT^&_rq^]+>tD"YLCD!0.E$N8A6KZ!Wc -rO[I!rr3&r>J9dF!khh7JcE"T!o3huoBcS04b*~> -!BU8Qkl@:PmJsT1mJrg;klMq,h4O]J[E=p;"hthfs3YQT^&_rq^]+>tD"YLCD!0.E$NAVIOidJ" -rPFK=rr3&r>J9dF!khh7JcE"T!o3huoB?;$3e.~> -!B:&NirG&9mJsT1mJr4*irU8%h4O]J^tD"YLCD!0.E$NAeZT@!H7 -rQ:SZrr3&r>J9dF!khh7JcE"T!o3htoA]kh2h1~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WT*:H0`]@grrJY=S,WQ)(;KeI$05 -!BU8Qkl@:PmK*A%Zc)83S`8l80EB7frrK%MS,WQ)(;KeI$05q>UN1=hFRF!kVULJcDqR!m1KsoB?;$3e.~> -!B:&NirG&9mK*A%Zc)83N8ik!0*'.errKF]S,WQ)(;KeI$05UN1=hFRF!kVULJcDqR!m1KroA]kh2h1~> -!BpJTm/X-`mK3I)'=78trW)ob"g(#p&m*iHmJs6Gm/f9J_4U`.PhV`.!lGYcq>UWmkM`ju*N -r-s@r^&iq:r6tZKk,*I+li$hcl]RM"p\tQ\>CsN%^:]&%jFR?6rrU":3V2V=eieN~> -!BU8Qkl@:PmK3I)'=78trW)ob"g(#p&m*iHmJrg;klNgE_4U`.T\l:>!lGYcq>UWmkM`ju*N -r-s@r^&iq:r6tZKl*-#Qmf!.fm@L!>p\tQ\>CsN%^:]&%jFR?6rrU":3:lA8c8pI~> -!B:&NirG&9mK3I)'=78trW)ob"g(#p&m*iHmJr4*irV.>_4U`.XQ,iN!lGYcq>UWmkM`ju*N -r-s@r^&iq:r6tZKm(/S!nGW@hn#EJZp\tQ\>CsN%^:]&%jFR?6rrU":2tQ&1_`*)~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;So'QJXq(NWT*:H9)u,errIf=T)Ska)U5,Y"8pQor7(`Mr5snR -ao)):"7DG9l@Ju%rrT>'9CqNOeieN~> -!BU8Qkl@:PmKEUjs1f;So'QJXq(NS`8l88cZ#drrJ;MT)Ska)U5,Y"8pQor7(`Mr6Udr -ci!_@"7W"Tm",2'rrT>'9(V9Jc8pI~> -!B:&NirG&9mKEUjs1f;So'QJXq(NN8ik!8-#fbrrJe]T)Ska)U5,Y"8pQor7(`Mr77[> -ebo@F"7iRnmt(M*rrT>'8FtjB_`*)~> -!BpJTm/X-`mJm7drrR`Ojn%m?!;Z$`UHIN'!3+uF!`T/qTDnq>o:Q$aN$-f)s7QBqp:PmAf`(gK -"THGh^& -!BU8Qkl@:PmJm7drrR`Ojn%m?!;Z$`UHIN'!1i-6!`K)pTDnqMoUl-bN$-f)s7QBppVVuch"q$Q -c&0I=JcD&9!i,fpoB?;$3e.~> -!B:&NirG&9mJm7drrR`Ojn%m?!;Z$`UHIN'!0#pt!`8rnTDnq\oq26cN$-f)s7QBpprf21iVNQV -e="P[JcD&9!i,fnoA]kh2h1~> -!BpJTm/X-`mKEUjs1f;So'QJXqX+F$+j8j4!3+uF!al"oTDnq6qk=#lrcp!RJcGHD"RN7:V<.RR -"7V\;kCNYtrrSJd@.WadeieN~> -!BU8Qkl@:PmKEUjs1f;So'QJXqX+F$+j8j4!1i-6!abqnTDnqEqk=#lrcp!RJcGHD"R`aUYNYi_ -"7i7Vl@Ju"rrSJd?h -!B:&NirG&9mKEUjs1f;So'QJXqX+F$+j8j4!0#pt!aG_kTDnqUr1X,mrcp!RJcGHD"Rs3o\a0+l -"7r^om",2$rrSJd>k?tV_`*)~> -!BpJTm/X-`mKSDZWT*:HDZGNbrrN"=U&P5mAiB",s7cNri1GD(nG3(d -bC$l!JcCr6!ep\noBcS04b*~> -!BU8Qkl@:PmKSDZS`8l8D#f<`rrN"MU&P5mAiB",s7cNrj/S!Lo(i:f -d>Pj>JcCr6!ep\loB?;$3e.~> -!B:&NirG&9mKSDZN8ik!C&j!]rrN%]U&P5mAiB",s7cNrkHpYqo_JLh -f:'h[JcCr6!ep\ioA]kh2h1~> -!BpJTm/X-`mK3I)'=72r!!)rb!hC4ChsLKDip?es!-Y%8!V(T4rr`$q7.Z!0q>UWsdZK1!q"apl -nskTuJcCl4!d4QnoBcS04b*~> -!BU8Qkl@:PmK3I)'=72r!!)rb!hC4ChsLK8iopMm!-Y%8!V;8Err`$q7.Z!0q>UWtf:A&Gq>($m -oV\&=JcCl4!d4QloB?;$3e.~> -!B:&NirG&9mK3I)'=72r!!)rb!hC4ChsLK'io:)c!-Y%8!VDhTrr`$q7.Z!0q>UWtgo@!nqYC-n -os1CYJcCl4!d4QhoA]kh2h1~> -!BpJTm/X-`mK*A%Zg[;^!<) -!BU8Qkl@:PmK*A%Zg[;^!<) -!B:&NirG&9mK*A%Zg[;^!<) -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT1mJs6Gm/j9f8"fk_eX<96"61kVrdk+IrrhJ]HE?H+rr^`"Z29+PNW0&M!35YX -!S0Da~> -!BU8Qkl@:PmJsT1mJrg;klRa_8"fk_g81YG"61kVrdk+IrrhSjM72jGrr^o5]).'YNW0&M!2oGQ -!R<`V~> -!B:&NirG&9mJsT1mJr4*irYtU8"fk_hQWjV"61kVrdk+Irrh]"R(r.arr_)H_YeubNW0&M!2K/G -!Q-jH~> -!BpJTm/X,umJs6Gm/jfu2k^0ObbM'8!ne]TJcG]K"od2BJ%PCIrr_tjL#.C\MuNi;!4h^g!S0Da~> -!BU8Qkl@9emJrg;klS9n2k^0OdB0;G!ne]TJcGZJ"Pol5_Y3^'"8As]idq,frrP+Z[e&_ac8pI~> -!B:&NirG%NmJr4*irZIc2k^0Of=.XW!ne]TJcGZJ"QHVSb4kW0"8KC!jamGirrP+ZZ1HuV_`*)~> -!BpJTm/X,umJs6Gm/kE1,bY/<_lTd9!mMXUJcG`L"oQN#M95Yfrr^i&XndPJMZ3`'!6Xp#!S0Da~> -!BU8Qkl@9emJrg;klSj),bY/ -!B:&NirG%NmJr4*ir[$s,bY/ -!BpJTm/X,umJs6Gm/l,E%\Wh&\[AC9!lP\TJcGcM"n]EVQ.Q$.rr`"oK%kkVM#RMd!8d>7!S0Da~> -!BU8Qkl@9emJrg;klTQ=%\Wh&_7llJ!lP\TJcGcM"ST`mU"o;?"8K0`hgtf`rrNZ1g@OP0c8pI~> -!B:&NirG%NmJr4*ir[a2%\Wh&ai::Z!lP\TJcGcM"S^*/Xl/jO"8TR#j+75drrNZ1eaqf%_`*)~> -!BpJTm/X,umJs6Gm/u\Z!;E2e!O'8;rrT>8`.@pls66S1VrmUN"58@+pjrI$rr_uq#41sK!S0Da~> -!BU8Qkl@9emJrg;kl^,R!;E2e!P$.KrrT>8`.@pls6R+LZ0Cl["5]-Gq18R%rr_uq#3b[C!R<`V~> -!B:&NirG%NmJr4*ire9F!;E2e!Q!'\rrT>8`.@pls6dUg]'Jtf"6,obq18R%rr_uq#3,77!Q-jH~> -!BpJTm/X,umJs6Fm/e1+iM$8PVTGkl,RXM[9oD\pgXFSoRs+^OTi;aeem/bd$J,~> -!BU8Qkl@9emJrg:klM_&iM$8PYg9?L!h:1SJc>l0VMi4]oD\ph[>s$ns+^OTi;abdklK'jJ,~> -!B:&NirG%NmJr4)irU(uiM$8P]%*h\!h:1SJc>l4Z'r`+oD\ph^7F25s+^OTi;abdirR%VJ,~> -!BpJTm/X,umJs6Fm/em?bG"q:S^OS=!f%uSKDu,Pb)2"qqssahh1VWuJcCH(!m:Qro'HJ/4b*~> -!BU8Qkl@9emJrg:klNI;bG"q:W7S*M!f%uSKDu,Qd$L$BqssahiKCD=JcCH(!m:Qro'$2#3e.~> -!B:&NirG%NmJr4)irUb3bG"q:ZeVV]!f%uSKDu,Qetf(jr:9jije00ZJcCH(!m:Qpo&Bbg2h1~> -!BpJTm/X,umJs6Fm/fZU[%[L#PM<5>"9* -!BU8Qkl@9emJrg:klO0O[%[L#TAQdN"9* -!B:&NirG%NmJr4)irVLH[%[L#X5g>^"9* -!BpJTm/X,urrB%Wm/gAiStZ/bMWM#@"8cCemY1ZDkc&m,kOAKRiJ4-!JcC?%!hKBoo'HJ/4b*~> -!BU8Qkl@9errAVKklOlcStZ/bQftUP"8cCemY1ZDlEc>QlL=fUjHQb>JcC?%!hKBmo'$2#3e.~> -!B:&NirG%NrrA#:irW0[StZ/bV!G2`"8cCemY1ZDmC\gum-t#Wkb>N[JcC?%!hKBko&Bbg2h1~> -!BpJTm/X,urrB%Wm/h,)LS=_KJaT`A"8,>]onWPNrn*Wf\b#=j"8oNSd"24Jrr`:V!,_;o!S0Da~> -!BU8Qkl@9errAVKklPW#LS=_KO79@Q"8,>]onNJLh5$"Fp$ht`r4S'>JcC<$"94,VC\$]jc8pI~> -!B:&NirG%NrrA#:irWopLS=_KSarua"8,>]onNJLiNSfmp@/(ar5G,YJcC<$"94,VC%C9b_`*)~> -!BpJTm/X,urrB%Wm/i%CCSCb/GPA?A"7A9XqhY7UqoFVOantQ,"6>?1nq$gls8W*#CB0.\m/bd$ -J,~> -!BU8Qkl@9errAVKklQP=CSCb/LA8"Q"7A9XqhY7Uqp(Loci!83"6Z#LoR[$ns8W*#CB0(ZklK'j -J,~> -!B:&NirG%NrrA#:irXc3CSCb/QMIcb"7A9XqhY7Ur7.R -!BpJTm/X,urrB%Wm/j!^:87airH%tCrr_@7ErLpq"nT6PRG%T.rr`20I*@0AJcG]K!_r`io'HJ/ -4b*~> -!BU8Qkl@9errAVKklRIW:87ahrIV9R"6D+Tre^XXoY?E^h -!B:&NirG%NrrA#:irY\M:87ahrK=Db"6D+Tre^XXouNT+ipQgKrQ(GZJcC<$rVlpo!1WQ>!Q-jH~> -!BpJTm/X,urrB%Wm/jp#18=dLoR!kC!o"oSM>m_@Vg>B-mJd:PKphF]s+14JrrOqU]^kFjeieN~> -!BU8Qkl@9errAVKklSBq18=dLonp$S!o"oSM>m_CZ&,gQmJd:SPGRi$s+14JrrOqU\antcc8pI~> -!B:&NirG%NrrA#:irZRf18=dLp6i2c!o"oSM>m_F]9p;"mJd:UTWn'>s+14JrrOqU[.<5X_`*)~> -!BpJTm/X-`rrBjOrrB%Wm/kl>'r(^/l@cJC!mV^SMuNt[f9^uuo^2Y\rO[9eJcC<$qYpU3!8$f/ -!S0Da~> -!BU8Qkl@:PrrBjOrrAVKklT<6'r(^/m?4dT!mV^SMZ3h6UQ*.amJd:e_M6![s+14HrrNo8e+2`( -c8pI~> -!B:&NirG&9rrBjOrrA#:ir[L+'r(^/n"?ud!mV^SMZ3h;Y+*T.mJd:eb*L5%s+14HrrNo8cLTur -_`*)~> -!BpJTm/X-`rrE,8_uB_9iU$a5"p+InrrM)=Zi:*D&[%)m"o?8pMottarr_GDR.#V+JcGTH"8;g# -lgjEDeieN~> -!BU8Qkl@:PrrE,8_uB_-iTUI-"Te@mrrM2LZi:*D&[%)m"oHQ0R*bctrr_PTU[`p8JcGTH"8;g" -kORj -!B:&NirG&9rrE,8_uB^qiSt%!"Te@mrrM>]Zi:*D&[%)m"oHcCV:PS2rr_VcYO[8EJcGTH"8;g" -iUZ"0_`*)~> -!BpJTm/X-`rrN07^r66QWSm.F*rt&jrrLc=[/U2q&]B\/"S0!LS(m9/"T>r[a8UYiJcGQG!o!\s -na-A.4b*~> -!BU8Qkl@:PrrN07^r66QS`&`6*WXrirrLoM[/U2q&]B\/"S9?cVVg_>"9$,pc%5nGs7lTqgAi;b -klK'jJ,~> -!B:&NirG&9rrN07^r66QN8W^t*<=ihrrM)][/U2q&]B\/"SKd'Z/b0M"9$E2e:IXNs7lTqgAi8a -irR%VJ,~> -!BpJTm/X-`rrW8:'Ys;>rW)os"ggGu&m+/QrrB%Vm/f6I^8(]/cChWG"8m$cgQ)::jed@)lK\BO -kDknsJcC<$p\t -!BU8Qkl@:PrrW8:'Ys;>rW)os"ggGu&m+/QrrAVJklNgE^8(]/e>p%X"8m$cgQ)::kcfoOm-=TQ -lC+L;JcC<$p\t -!B:&NirG&9rrW8:'Ys;>rW)os"ggGu&m+/QrrA#9irV+=^8(]/fsS9g"8m$cgQ)::laiItn*9oT -m&.#WJcC<$p\t -!BpJTm/X-`rr`?%^_FTSrr<&trrkcpnFD,jiVrnWi9^SI!1fnb!QD(Jrr_a\8+;W?"od&;J@tR? -rri;4I)l5;s+14DrrS_k=7PYYeieN~> -!BU8Qkl@:Prr`?%^_FTSrr<&trrkcpnFD,jiVrnKi9:;D!1fnb!R%gYrr_a\8+;W?"od5LNl1SU -rr`5;MTp_PJcGEC!hB -!B:&NirG&9rr`?%^_FTSrr<&trrkcpnFD,jiVrn:i8Xl;!1fnb!ReZjrr_a\8+;W?"odA\SBLZl -rr`5CRF?`eJcGEC!hB -!BpJTm/X-`rriE&s1f>ao)A[iq>UKh#iYd`WSm.FG5urarrKd=\GlZc.;o'Grrr5;L5a@Sl2LkK -NgK0bs+14BrrRKHGOb&$eieN~> -!BU8Qkl@:PrriE&s1f>ao)A[iq>UKh#iYd`S`&`6FT?`_rrL$M\GlZc.;o'Grrr8BPF9ktl2LkN -R\TA's+14BrrRKHFn+\sc8pI~> -!B:&NirG&9rriE&s1f>ao)A[iq>UKh#iYd`N8W^tEWCE\rrL<]\GlZc.;o'Grrr;JTr-K@l2LkP -VloTAs+14BrrRKHEq//j_`*)~> -!BpJTm/X-`rr<&urrR`Op%/1`!;c]soS6)urrB%Vm/iXT=/5crZG!gK!koM>OoGRR[!\G"kl1ea -]R7d!JcC<$oD\kn!1< -!BU8Qkl@:Prr<&urrR`Op%/1`!;c]soS6)urrAVJklR+M=/5cr]>V8[!koM>OoGRT]o&cHkl1b` -_hu]is+14@rrQ7%Q1=)>c8pI~> -!B:&NirG&9rr<&urrR`Op%/1`!;c]soS6)urrA#9irY>C=/5cr_ooUj!koM>OoGRV`L4'nkl1b` -bF-h1s+14@rrQ7%On%H4_`*)~> -!BpJTm/X-`rriE&s1f>ao)A[iqu?Zr!>aGKrrB%Vm/jct1o('OW5cFK!gsn>P5b[GUjB0/kPkYJ -NgK0bs+14?rrP"W\FJqeeieN~> -!BU8Qkl@:PrriE&s1f>ao)A[iqu?Zr!>aGKrrAVJklS6m1o('OZHTo[!gsn>P5b[JY)0UTkPkYL -S"fD's+14?rrP"W[INJ^c8pI~> -!B:&NirG&9rriE&s1f>ao)A[iqu?Zr!>aGKrrA#9irZFb1o('O][OIl!gsn>P5b[M\ -!BpJTm/X-`rr`?%^_FTSrr<&qrrVbD4lQD@WSm.Ff`2VZrrJ\<]`/*3DCO>)rrrDMR=W*GkPk\` -]R7d!JcC<$nG`P%!86o0!S0Da~> -!BU8Qkl@:Prr`?%^_FTSrr<&qrrVbD4lQD@S`&`6eGp2VrrK(L]`/*3DCO>)rrrDRUlWLhkPkY_ -_hu]is+14=rrNc4ea_l)c8pI~> -!B:&NirG&9rr`?%^_FTSrr<&qrrVbD4lQD@N8W^tcN"QPrrKI\]`/*3DCO>)rrrDWYas#5kPkY_ -bF-h1s+14=rrNc4cgg#r_`*)~> -!BpJTm/X-`rrW8:'Ys5 -!BU8Qkl@:PrrW8:'Ys5 -!B:&NirG&9rrW8:'Ys5 -!BpJTm/X-`rrN07_!h:'!<)p$>LiW5E^8U`!3+lC!\=>oV#LINke@'!gF7% -!BU8Qkl@:PrrN07_!h:'!<)p$>LiW5E^8U`!1i$3!\=>oV#LI\lG!9#gF7% -!B:&NirG&9rrN07_!h:'!<)p$>LiW5E^8U`!0#gq!\48nV#LIimCrT&gF7% -!BpJTm/X-`rrE,8nGiCds8N8&/d)qsl/DXBWSd(E:B7/crrIN<^]+AP&Xf!c"od&=I_#%1rr_JF -QgTG)JcG*:!i#`knEg8-4b*~> -!BU8Qkl@:PrrE,8nGiCds8N8&/d)qsl/DXBS_rZ59`UrarrJ&M^]+AP&Xf!c"od2LN55)Hrr_PU -U@ -!B:&NirG&9rrE,8nGiCds8N8&/d)qsl/DXBN8NXs9)t`_rrJS]^]+AP&Xf!c"odA]S&k9`rr_Yd -Y4@/DJcG*:!i#`gnDaPe2h1~> -!BpJTm/X-`rrBjOrrB%Um/hD1HDUWCrcA%RrrST#_O1?,pV;HBbl$Q%"T?#]`r:PhJcG'9!dXih -nEg8-4b*~> -!BU8Qkl@:PrrBjOrrAVIklPo+HDUWCrdt*arrST#_O1?,prAPeder2+"9-5rb^oeFs6BUcH2r$U -klK'jJ,~> -!B:&NirG&9rrBjOrrA#8irX0"HDUWCrf[5qrrST#_O1?,ps,P1f_jh1"9-K3dt.OMs6BUcH2qpR -irR%VJ,~> -!BpJTm/X,urrB%Um/idX;5O9nom+CR"8m$cgR8'ElE#<+i8Xb=k`;%tJcC<$l2Lf^!1`QG!S0Da~> -!BU8Qkl@9errAVIklR7Q;5O9np5$Qb"8m$cgR8'Em'_bPj5U(@l^OX -!B:&NirG%NrrA#8irYJG;5O9npQr_r"8m$cgR8'En%Y7!kMlLDmAR/XJcC<$l2Lf^!1!'6!Q-jH~> -!BpJTm/X,urrB%Um/k-).&HqEl@m+T"7SfNn=0F]rn!Qd[IE2U"T?#]`VtGgJcFs6![n&cnEg8- -4b*~> -!BU8Qkl@9errAVIklSU".&HqEm#o6c"7SfNn='@[gSBbAo&BZOrks] -!B:&NirG%NrrA#8irZdl.&HqEn"@Pt"7SfNn='@[i38Zio]#lQrlgeYJcC<$kPkT3!4q[[!Q-jH~> -!BpJTm/X,urrB%Um/uJQ"Snqp!T0!Vrr_")DZ$%)"o,ugMokkTrr_JGQL9>(JcFp5"8N'%k4%a= -eieN~> -!BU8Qkl@9errAVIkl]oI"Snqp!TT]frr_")DZ$%)"o6<(R*YZgrr_SVU@ -!B:&NirG%NrrA#8ire'="Snqp!TpB!rr_")DZ$%)"o?W>V:GM&rr_YeXn%&CJcFp5"8N'%h!j>) -_`*)~> -!BpJTm/X,urrB%Tm/eF2e>E6He=+>U!koM>SGr`VXa$Ali;WrY]mRfuJcC<$k5PM4!$Ugu!S0Da~> -!BU8Qkl@9errAVHklN".e>E6Hfqu^f!koM>SGr`X[YLd>i;WoY`/;cis+143rrU[M+n+Xrc8pI~> -!B:&NirG%NrrA#7irU>'e>E6HhQb$!!koM>SGr`[^R)7fi;WoYbaHn1s+143rrU[M+Re=k_`*)~> -!BpJTm/X,urrB%Tm/ffYX/>mtaem&W!gsn>T)Sumd[#?in)+-Ik`;"rJcC<$jSo:^!(cSG!S0Da~> -!BU8Qkl@9errAVHklO?TX/>mtc`kCg!gsn>T)Sunf:n5 -!B:&NirG%NrrA#7irVXLX/>mte[ia"!gsn>T)Sungo['coABQMmAR/WJcC<$jSo:^!(HA:!Q-jH~> -!BpJTm/X,urrB%Tm/h2+J#<5H^9P`Y"8m$cgRnKLo=KR9c2?K!"T?&^`VtGgJcFd1!e12gn*L/, -4b*~> -!BU8Qkl@9errAVHklP]%J#<5H`Oa+i"8m$cgRnKLoYQZ[e,8,'"9-8sbCT\Es5O%[IfO?SklK'j -J,~> -!B:&NirG%NrrA#7irWrqJ#<5HbehF#"8m$cgRnKLou`i*f_jY,"9-N4dXhFLs5O%[IfO6PirR%V -J,~> -!BpJTm/X,urrB%Tm/idX:T"-mZG"?Z"7SfNn=]dai1kRrjPBh -!BU8Qkl@9errAVHklR7Q:T"-m]>Vej"7SfNn=]daj0"3DkM?.?l^X[;JcC<$iVrsT!1E -!B:&NirG%NrrA#7irYJG:T"-m_op.$"7SfNn=]dakI?kjlJ;IBm\m8XJcC<$iVrsT!1!$5!Q-jH~> -!BpJTm/X,umJs6Cm/k?/+/]&=Vo[!["5>8Br1a2pqT4\L^\6L`"T?&^`VtGgJcF[.!ZqE`n*L/, -4b*~> -!BU8Qkl@9emJrg7klSg(+/]&=Z-LJk"5>8Br1a2pqp1[n`qS -!B:&NirG%NmJr4&ir[!r+/]&=]@=t&"5>8Br1a2pqphR:cM65q"9-N4dXhFLs53hX*rs+FirR%V -J,~> -!BpJTm/X,umJs6Cm/uV[!Uclc!M%T\rrU%LRA0]bm'1r,fDaS*"6kl3m=G:gs53hYmK!XZn*L/, -4b*~> -!BU8Qkl@9emJrg7kl^&S!Uclc!N4PlrrU%LRA0]bm^e:Qg]$"."7)JNmt(Lis53hYmK!XVn*'ku -3e.~> -!B:&NirG%NmJr4&ire3G!Uclc!OCM'rrU%LRA0]bnAC[!i;VO3"7E+inU^^ks53hYmK!XPn)FGd -2h1~> -!BpJTm/X,umJs6Bm/f'D^Sh)4Okn4\!gF;6U]1JKRXDC-g]%ET^3mluJcC<$hZ!Yl!&O'1!S0Da~> -!BU8Qkl@9emJrg6klNU?^Sh)4S`.cl!gF;6U]1JOV2DkQg]%BT`JViis+14+rrTq81@FB-c8pI~> -!B:&NirG%NmJr4%irUq8^Sh)4Wo_G(!gF;6U]1JTZ'iN"g]%BTbaHk0s+14+rrTq81%+'&_`*)~> -!BpJTm/X,umJs6Bm/gVpO/N!YL?Zt_"8QO\h51,To"0L?ao'lm"6ko4m=G:gs4mVUNrWPTm/bd$ -J,~> -!BU8Qkl@9emJrg6klP/kO/N!YPO$Kn"8QO\h51,To>?ZbchuMs"7)JNmt(Lis4mVUNrWMSklK'j -J,~> -!B:&NirG%NmJr4%irWEbO/N!YU$g2*"8QO\h51,Touir0ebn/$"7E.jnU^^ks4mVUNrWDPirR%V -J,~> -!BpJTm/X,umJs6Bm/i7I?`3o)Hh>V`"6hsFo;DTlrnfJcFL)!abqemd1&+ -4b*~> -!BU8Qkl@9emJrg6klQ_B?`3o)M=o0o"6hsFo;;NjhPuC;k1Tb:rl'c -!B:&NirG%NmJr4%irXu9?`3o)R.ei*"6hsFo;;NjijG,cl.Q(=rlpkYJcC<$gA_4]!/L"&!Q-jH~> -!BpJTm/X-`mJsT1mJs6Bm/jfu/u\dOrH%q`rr^RiIJp,E"n]N_MT#8Arr_M>Q0j/&JcFF'!\OJ` -md1&+4b*~> -!BU8Qkl@:PmJsT1mJrg6klS9n/u\dOrdt-qrr^RiIJp,E"nfitQco0Vrr_VNU$mR4JcFF'!\OJ] -mcabt3e.~> -!B:&NirG&9mJsT1mJr4%irZIc/u\dOrf[9,rr^RiIJp,E"np36Us]"jrr_\^XmpuBJcFF'!\OJX -mc+>c2h1~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK!%$"U"@qrrMeLci4'H(94>5"Q6DRo)f0U -mcabt3e.~> -!B:&NirG&9mK!5"Q[%Y]'%]F"9$E0c%5nGs4I>Ro)f-N -mc+>c2h1~> -!BpJTm/X-`mK*A%Zc)83WSHkB0*&eerrMA=dJj=II3?k9rrr,4LPNb?f)Gj5N0s$as+14%rrTt9 -0CA--eieN~> -!BU8Qkl@:PmK*A%Zc)83S_WH2/c`\drrMGLdJj=II3?k9rrr/'s+14%rrTt9 -0(%m(c8pI~> -!B:&NirG&9mK*A%Zc)83N83Fp/HEScrrMP]dJj=II3?k9rrr2DU8$!/f)Gj;VQ]QAs+14%rrTt9 -/a_R!_`*)~> -!BpJTm/X-`mK3I)'=78trW)i`!o"Uni9gTEh!G/P!/dcU!Srmdrr_jh4mB$I"Q6,%UYXK#"8fKS -b(9SDs4.,NM?%,Qm/bd$J,~> -!BU8Qkl@:PmK3I)'=78trW)i`!o"Uni9gT9h!"lJ!/dcU!TBTtrr_jh4mB$I"QQ\AXl7h1"8oij -d"24Js4.,NM?%&OklK'jJ,~> -!B:&NirG&9mK3I)'=78trW)i`!o"Uni9gT(guAHB!/dcU!Tg?0rr_jh4mB$I"R!=^\)l0?"8p-, -eq*jPs4.,NM?$uMirR%VJ,~> -!BpJTm/X-`mKeieN~> -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;So'QJXr9a[/*p*I\mJs6Am/k<.*i]/?aJ[Pf!l#;2Y5\_*fV*Scg]#_& -"8T-Md"24Js3goK*WX7Jm/bd$J,~> -!BU8Qkl@:PmKEUjs1f;So'QJXr9a[/*p*I\mJrg5klSd'*i]/?cEYn!!l#;2Y5\\)goH76hp_T- -qRDO8JcC<$df0@i!6"9h!R<`V~> -!B:&NirG&9mKEUjs1f;So'QJXr9a[/*p*I\mJr4$irZsq*i]/?e@X61!l#;2Y5\\)iO5)_j4"#1 -qSAZUJcC<$df0@i!5Ip]!Q-jH~> -!BpJTm/X-`mJm7drrR`Ojn%m?!;u6e7[ -!BU8Qkl@:PmJm7drrR`Ojn%m?!;u6e7[ -!B:&NirG&9mJm7drrR`Ojn%m?!;u6e7[ -!BpJTm/X-`mKEUjs1f;So'QJXrU'fl/aVm*i9gTEg[,&,!3`F&!O';jrr_+;9Bre^"oHW4H`cAV -rr`"oJ_#DPJcF*s!j;Sgm-Oi)4b*~> -!BU8Qkl@:PmKEUjs1f;So'QJXrU'fl/aVm*i9gT9gZ\c'!3`F&!P$2%rr_+;9Bre^"oQlFMRM]q -rr`&%O5#6cJcF*s!j;Sfm-+Pr3e.~> -!B:&NirG&9mKEUjs1f;So'QJXrU'fl/aVm*i9gT(gZ&>t!3`F&!Q!(5rr_+;9Bre^"oR)WRD8%7 -rr`&/S_o"uJcF*s!j;Sdm,J,a2h1~> -!BpJTm/X-`mK)Emd:)5mJs6@m/hG2EiT-?U -!BU8Qkl@:PmK)Emd:)5mJrg4klPr,EiT-?XjYl%"/corrj)P-l*uVEe,.Ml -"5/^ApjrHrs3L]HEWC4JklK'jJ,~> -!B:&NirG&9mK)Emd:)5mJr4#irX3#EiT-?\(K@5"/corrj)P-lbT!kf_j+r -"5]T_q18Qss3L]HEWC+GirR%VJ,~> -!BpJTm/X-`mK3I)'=72r!!)ucqZ,UC!3+`?!j2M\WrE*bg"QH.oO0,mZi:4'`f>SXmEbe7oV.&p -JcC<$c2Ri&!3Y\U!S0Da~> -!BU8Qkl@:PmK3I)'=72r!!)ucqZ,UC!1hm/!il;YWrE*nh:hl2oO0,mZi:4(baXX,n'D"9orXD8 -JcC<$c2Ri&!3>JN!R<`V~> -!B:&NirG&9mK3I)'=72r!!)ucqZ,UC!0#[m!iH#UWrE+%inFD7oO0,mZi:4)e#/bVn^%4;p:$^U -JcC<$c2Ri&!2o2D!Q-jH~> -!BpJTm/X-`mK*A%Zg[;^!;Z$_!9!8FWS?eBiroSWjo5GGb0&njrrIu=g]%B$-XlYTrs&GSUNrK_ -rm(NGc@3%oJcC<$c2Rn;"9miPm/bd$J,~> -!BU8Qkl@:PmK*A%Zg[;^!;Z$_!9!8FS_NB2hZX/Sjo5GGb0&njrrJGMg]%B$-XlYTrs&JXXba"3 -rm(NGe;V!8JcC<$c2Rn;"9m]LklK'jJ,~> -!B:&NirG&9mK*A%Zg[;^!;Z$_!9!8FN8*@pf`VHLjo5GGb0&njrrJn\g]%B$-XlYTrs&J]\!OJZ -rm(NGfpfkUJcC<$c2Rn;"9dEEirR%VJ,~> -!BpJTm/X-`mK!&WHHrrIN[TVO;=b%rrqVl -Iu_G=c2Rn@S;H3Us+13nrrTe41@+<.eieN~> -!BU8Qkl@:PmK!&WHHrrJ&Mh>[TVO;=b%rrq]" -NLIu_c2RnAVj?Cps+13nrrTe41$e')c8pI~> -!B:&NirG&9mK!`5g!5%Ip$0,r-G_hB)>&WHHrrJS]h>[TVO;=b%rrqf. -S>Xa.c2RnAZD6W7s+13nrrTe40^Ia"_`*)~> -!BpJTm/X-`mJsT1mJs6?m/h#&Id6q8pLA!Oqn<0FCLd+drrW.?rSIPVl:X+n\,QX(_i92Pkfj&0 -rks/trdk*#s2t?CIK4-Km/bd$J,~> -!BU8Qkl@:PmJsT1mJrg3klPQ!Id6q8pLA!Oqn<0FCLd+drrW1OrndYWl:X+n\,QX)adS7%lcfA3 -rl^/;rdk*#s2t?CIK4*JklK'jJ,~> -!B:&NirG&9mJsT1mJr4"irWfmId6q8pLA!Oqn<0FCLd+drrW1_rndYWl:X+n\,QX*d&3DPmEGS5 -rm@+Wrdk*#s2t?CIK4!GirR%VJ,~> -!BpJTm/X,umJs6?m/j$_62UZakK:X(p&>*c=L@h:!jl)%df0@=I,=l*^(GYe\c2m3d[bZYf_s"n -"6bl0k^ibbs2b3A5ld\Gm/bd$J,~> -!BU8Qkl@9emJrg3klRLX62UZakK:X(p&>*c=L@h:!jl)%df0@?Mr+I9^(GYe\c2m3f;OM.h>YUt -"6uGJl@Jtds2b3A5ldSDklK'jJ,~> -!B:&NirG%NmJr4"irY_N62UZakK:X(p&>*c=L@h:!jl)%df0@@Rbn&H^(GYe\c2m3gp -!BpJTm/X,umJs6?m18"R$N'l'j)8+GLlQ^`Dr^Wm!F)r(^&bTFdf0@0M;\C9pM^b[\c2ilXF-8S -pr`U>qmUskrdk*#s2b3Bq[*A[lg4`(4b*~> -!BU8Qkl@9emJrg3kmuJK$N'l'j)8+GLlQ^`Dr^Wm!F)r(^&bTFdf0@3QJhcFpM^b[\c2ip[Yga( -q9&^?r4e-4rdk*#s2b3Bq[*AXlfeGq3e.~> -!B:&NirG%NmJr4"it'W?$N'l'j)8+GLlQ^`Dr^Wm!F)r(^&bTFdf0@6Uu;7TpM^b[\c2is^R;1R -q9&^?r5Y5Qrdk*#s2b3Bq[*ARlf/#`2h1~> -!BpJTm/X,umJs6>m05'@^\;5R]_fDF]PD$Oqu6\nP4QBgP,6Y-!SE^srr^V!=7*X""o6&dKXpKk -rr_,5Sa_41JcEai!l"^clKnW'4b*~> -!BU8Qkl@9emJrg2klrU;^\;5R]_fDF]PD$Oqu6\nP4QBgP,6Y-!SsL/rr^V!=7*X""o??$P/6V. -rr_8GW:GN>JcEai!l"^blKJ>p3e.~> -!B:&NirG%NmJr4!is$q4^\;5R]_fDF]PD$Oqu6\nP4QBgP,6Y-!TC0>rr^V!=7*X""oHZ:TZQ`F -rr_AWZh&bJJcEai!l"^alJho_2h1~> -!BpJTm/X,umJs6>m0%/(G?D6H^&kZDo_e^hB`5[F!<0_4!;sP2B[ct^bbF.t"9")mUV-U1ou<2< -Wnter"8AjGd=M=Ks2=p=HiRpHm/bd$J,~> -!BU8Qkl@9emJrg2klbZ"G?D6H^&kZDo_e^hB`5[F!<0_4!;sP2B[ct^d]MR0"9")mUV-U1p<9.^ -[,T.+"8K6_eq*jPs2=p=HiRjFklK'jJ,~> -!B:&NirG%NmJr4!irionG?D6H^&kZDo_e^hB`5[F!<0_4!;sP2B[ct^fXKo@"9")mUV-U1pX?1- -^#d<7"8KU#gO]BUs2=p=HiRaCirR%VJ,~> -!BpJTm/X,umJs6>m/s9e.(&Z]!OQ)0rrMP-r4W.2rOr73r4W2OmaV7;^TZ_u"5lC.i4f3qq9GLU -U!rqZrr^]"WqV)EJcEXf!]U1YlKnW'4b*~> -!BU8Qkl@9emJrg2kl[d_.(&Z]!OQ)0rrMP-r4W.2rOr73r4W2OmaV7;`jk+0"5lC.i4f3qqUDF! -X4[?irr^l5ZhT+OJcEXf!]U1WlKJ>p3e.~> -!B:&NirG%NmJr4!irbtT.(&Z]!OQ)0rrMP-r4W.2rOr73r4W2OmaV7;cGATA"5lC.i4f3qqq89A -[b^l$rr_&H^%d0YJcEXf!]U1RlJho_2h1~> -!BpJTm/X,umJs6>m/l8XM=\F^P,80X!R6Dt^&S03^&S02^&`gtrI4m*^$+5N!OBB"rr]#3MZ(?j -#6!/MH'lbL`W$&0Sqc'Ps+13err_`n"leh7!S0Da~> -!BU8Qkl@9emJrg2klT]PM=\F^P,80X!R6Dt^&S03^&S02^&`gtrI4m*^$+5N!P?82rr]#3MZ(?j -#6!>\Lni>m`W$&2WKc@ms+13err_`n"lAP/!R<`V~> -!B:&NirG%NmJr4!ir[jDM=\F^P,80X!R6Dt^&S03^&S02^&`gtrI4m*^$+5N!Q<1Crr]#3MZ(?j -#6!JjQ`o!9`W$&4[%ZT4s+13err_`n"PE#"!Q-jH~> -!BpJTm/X,umJs6=m/T3G^Ae33^&ar0rOrGKR"'TtK)E=_!<'V3!;sP3JnFt2#\ZC/$9i-\^$+GT -!N+!%rr_Xi/C;65#6*P_I?289`;]u>`I,,kJcC<$_>aSA!''61!S0Da~> -!BU8Qkl@9emJrg1kl -!B:&NirG%NmJr3uirD.=^Ae33^&ar0rOrGKR"'TtK)E=_!<'V3!;sP3JnFt2#\ZC/$9i-\^$+GT -!P6hErr_Xi/C;34"m -!BpJTm/X,urrB%Om/c$Qr4W.2rOr;"!<'V8=VlR;G@UQb!!)u3!!)r2!HIQ(rs\,)MJ,0\$9i-[ -[FtKArrJP -!BU8Qkl@9errAVCklKLIr4W.2rOr;"!<'V8=VlR;G@UQb!!)u3!!)r2!HIQ(rs\,)MJ,0\$9i-[ -[FtKArrJtMkl1au&odT^rrq`&Od*]M_Z'`(St5.ts+13brrR$;Fm8,kc8pI~> -!B:&NirG%NrrA#2irRY=r4W.2rOr;"!<'V8=VlR;G@UQb!!)u3!!)r2!HIQ(rs\,)MJ,0\$9i-[ -[FtKArrK@\kl1au&odT^rrqf0T;'Hs_Z'`+Wi>?9s+13brrR$;Ep;Tb_`*)~> -!BpJTm/X,urrB%Om/atTr4W.2rk8H)&HMdD!JAYrrr?a2^A\-4^A\-2^&VjDBa"nTEpJ$@tLrri;+H,KW4s+13arrOVL[d!/[eieN~> -!BU8Qkl@9errAVCklJDKr4W.2rk8H)&HMdD!JAYrrr?a2^A\-4^A\-2^&VjDBa"n]a.NOe2frri;4Ls#^Js+13arrOVLZg$]Tc8pI~> -!B:&NirG%NrrA#2irQWAr4W.2rk8H)&HMdD!JAYrrr?a2^A\-4^A\-2^&VjDBa"ng*CSAOO,rri; -!BpJTm/X,urrB%Om/atVr4W.2rk8FsAcVeD!Jer!rrJsZo=b6gV="9hr7SK7>Rh`YS(mK5!J'Y) -rr]hSB( -!BU8Qkl@9errAVCklJDNr4W.2rk8FsAcVeD!Jer!rrJsZo=b6gV="9hr7SK7>Rh`YS(mK5!KQ^9 -rr]hSB( -!B:&NirG%NrrA#2irQWDr4W.2rk8FsAcVeD!Jer!rrJsZo=b6gV="9hr7SK7>Rh`YS(mK5!M&`H -rr]hSB( -!BpJTm/X,urrB%Om/c$]r4W.2rkA=2rk8DQmf!.d>I=(;!OQ(nrs.;J>T=5YO5'C.!rd<=mJd:Y -AfnV(rsP'a+ZrP/@7ntUfeJcC<$]Dhqs!)VnH!S0Da~> -!BU8Qkl@9errAVCklKLVr4W.2rkA=2rk8DQmf!.d>I=(;!OQ(nrs.;J>T=5YO5'@-!JC=;rr_e' -+1fJl#4os.M6Yk7^]+E.Y)q=fs+13^rrSDb:?^pCc8pI~> -!B:&NirG%NrrA#2irRYIr4W.2rkA=2rk8DQmf!.d>I=(;!OQ(nrs.;J>T=5YO5'@-!L*HKrr_e' -+1fJl#5$9BR(M>U^]+E/\=VQ.s+13^rrSDb9^(L;_`*)~> -!BpJTm/X,urrB%Nm/U\q^A\-2^&S03^&VjErrVgp[.h99Zrlt[rs.;>>Rh`YS(mf>!VUg7rr_o= -_=[R'"1fRdn]:_7o>Qr?V:PRYrri>?I'WR!s+13]rrPdmQ0@T9eieN~> -!BU8Qkl@9errAVBkl>5l^A\-2^&S03^&VjErrVgp[.h99Zrlt[rs.;>>Rh`YS(mf>!V_EGrr_o= -_=[R'"1fRdn]:_7ouj"bYM/ogrri>FMnAh:s+13]rrPdmPN_63c8pI~> -!B:&NirG%NrrA#1irEQe^A\-2^&S03^&VjErrVgp[.h99Zrlt[rs.;>>Rh`YS(mf>!Vi#Wrr_o= -_=[R'"1fRdn]:_7p!rri>LR`,)Ss+13]rrPdmO6GU)_`*)~> -!BpJTm/X-`rrBjOrrB%Nm/`ZL8ppLA!Oqn<0FCLd+prs.;J>T=8ZQ2CR\!U5=8rs/%4 -F+o6fE:Ei+"7]tF]#jsVouNJFU=9"Prr_ADP3.>qJcE:\"83$&f]_]'eieN~> -!BU8Qkl@:PrrBjOrrAVBklI06o=b6gV>L8ppLA!Oqn<0FCLd+prs.;J>T=8ZQ2CR\!UQ$Irs/%4 -F+o6fE:Ei+"7]tF]#jsVp -!B:&NirG&9rrBjOrrA#1irPC,o=b6gV>L8ppLA!Oqn<0FCLd+prs.;J>T=8ZQ2CR\!UcWXrs/%4 -F+o6fE:Ei+"7]tF]#jsVpXH@4\)$tprr_ScWpG<:JcE:\"83$&cfjBi_`*)~> -!BpJTm/X-`rrE,8_uB_9fBiT>[.V-6Zs3>*$0,r-G_Lls>&WHQrs7A@7hKCSs4ie8rrU_Q])B>K -\ldM_s1f:[n]Uq:pWAnKT@!GHrri,$IE;D=s+13[rrTS.1$@p)eieN~> -!BU8Qkl@:PrrE,8_uB_-fBE<9[.V-6Zs3>*$0,r-G_Urt>&WHQrs7A@7hKCSs59LHrrU_Q])B>K -\ldM_s1f:[n]Uq:ps>jmWn%!Yrr`)-Mp?nRJcE4Z!jr"^kNN#m3e.~> -!B:&NirG&9rrE,8_uB^qfAcm2[.V-6Zs3>*$0,r-G_Urt>&WHQrs7A@7hKCSs5^3XrrU_Q])B>K -\ldM_s1f:[n]Uq:psu[9[G1Sjrr`,7RacogJcE4Z!jr"]kMlT\2h1~> -!BpJTm/X-`rrN07^r66QWRpM=j#aXB^&kZDo_&4dkBE`bdJjC2LF=QhNrAtZmSpms^'22Ll[KMZ -bl7nAb+!XHcM4sM"4Daso7?pms0hq/C&iG?m/bd$J,~> -!BU8Qkl@:PrrN07^r66QS_**-h`J4>^&kZDo_&4dkCBJndJjC2LF=QjR/R$dmSpms^'22Ll[KMZ -bl7nBd&)Sse+pQS"4rU;on!-os0hq/C&iA=klK'jJ,~> -!B:&NirG&9rrN07^r66QN7[(kffHM7^&kZDo_&4dkD?8&dJjC2LF=QmU&FummSpms^'22Ll[KMZ -bl7nBf!1RJg%r8Z"5KHXp4<6ps0hq/C&i8:irR%VJ,~> -!BpJTm/X-`rrW8:'Ys;>rW)osquG[T!3+Q:"1A_F]_fDF]PD$OoD\iSh9Gs*a%d"4RK!5&\,!`? -[kgA6cMn+@aI.:Dc1eaJ"7D\7gk#KVs0Ve-)Z[P6m/bd$J,~> -!BU8Qkl@:PrrW8:'Ys;>rW)osquG[T!1h^*"1&MC]_fDF]PD$OoD\i_iQ_B.a&*78RK!5&\,!`? -[kgA6cMn+BcD65odeL?P"7W4Qi.:oZs0Ve-)Z[G3klK'jJ,~> -!B:&NirG&9rrW8:'Ys;>rW)osquG[T!0#Lh"0N/>]_fDF]PD$OoD\ikjj!f2a&EL^s0Ve-)Z[8.irR%VJ,~> -!BpJTm/X-`rr`?%^_FTSrr<&trr<&SrrB%Lm0i4s!FT)ULlQ^`Dr^Bf!KQ-_s8TM1Q9-:CE;.'I -A`V5<#4oj$Gb<:V\,QU/^3dHhJcC<$[/U6R!#Y%bm/bd$J,~> -!BU8Qkl@:Prr`?%^_FTSrr<&trr<&SrrAV@kmQYk!FT)ULlQ^`Dr^Bf!Lr/ors$3NQ9-:CE;.'I -A`V5<#5$-6LT8l"\,QU0`JVP1JcC<$[/U6R!#Xn^klK'jJ,~> -!B:&NirG&9rr`?%^_FTSrr<&trr<&SrrA#/isXf^!FT)ULlQ^`Dr^Bf!N5/*rs$K^Q9-:CE;.'I -A`V5<#5-HJQaPNC\,QU0baHWOJcC<$[/U6R!#OVWirR%VJ,~> -!BpJTm/X-`rriE&s1f>ao)A[irVlith#@ARea3TM!.Fn1b0&o8rrJ#=bl7mI`W,tZ4fJ=nr;cl3 -!N;73rs&&4P^0"Nq6g5)h0bUUJcC<$ZMsuS!+G$W!S0Da~> -!BU8Qkl@:PrriE&s1f>ao)A[irVlith#@AFe`d*iJXN"JcC<$ZMsuS!+=sR!R<`V~> -!B:&NirG&9rriE&s1f>ao)A[irVlith#@A5e`-m?!.Fn1b0&o8rrJq]bl7m\df9?g4fJ=nr;cl3 -!N;73rs&/DXI$ENqmHG+jdNCBJcC<$ZMsuS!+"aI!Q-jH~> -!BpJTm/X-`rr<&urrR`Op%/1`!<)p$!"oG^LA^$1!3+N9!j)GRl2Ld=l-0/.S^RN;!-8"O!!)o1 -!-6Zj#4TKnHDAsd[/U7!UjL=:s+13SrrO_OXlf!OeieN~> -!BU8Qkl@:Prr<&urrR`Op%/1`!<)p$!"oG^LA^$1!1h[)!ic5Ol2LdKlcfA0W7V%K!-8"O!!)o1 -!-6Zj#4fj-M6>M.[/U7"Y):YYs+13SrrO_OWoiOHc8pI~> -!B:&NirG&9rr<&urrR`Op%/1`!<)p$!"oG^LA^$1!0#Ig!i>rKl2LdXm`b\3ZeYQ[!-8"O!!)o1 -!-6Zj#4p0AR(1uM[/U7$\=)!#s+13SrrO_OVWQn>_`*)~> -!BpJTm/X-`rriE&s1f>ao)A[iqu6crd6Va1rrB%Km/uP`!8?` -!BU8Qkl@:PrriE&s1f>ao)A[iqu6crd6Va1rrAV?kl]uW!8?` -!B:&NirG&9rriE&s1f>ao)A[iqu6crd6Va1rrA#.ire0L!8?`WL19Rr3QD+rQ^hLqLSZts02M*g&MZ@k2QK[2h1~> -!BpJTm/X-`rr`?%^_FTSrr<&prrM9oiVrnWeEm< -!BU8Qkl@:Prr`?%^_FTSrr<&prrM9oiVrnKeEI$7!/^"@!KHZorrJ5Mrr2t;qn<-DJe.jp!-$`n -#4TO%MR)%9Z2XpaQD -!B:&NirG&9rr`?%^_FTSrr<&prrM9oiVrn:eDgU.!/^"@!Lr`*rrJ_]rr2t;qn<-DJe.jp!-$`n -#4fs;RChDUZ2XpeUTX$9s+13QrrS#W;WZp>_`*)~> -!BpJTm/X-`rrW8:'Ys5S_!rd<]!2ATB!S0Da~> -!BU8Qkl@:PrrW8:'Ys5klRIW39pMEM>#0n!JL@Lrr@*:^&kp$%fX0BEo6m# -k.R%<[GS1f"7iRTeq*jPs/c5%2uoT4klK'jJ,~> -!B:&NirG&9rrW8:'Ys5lEs"8''ngO]BUs/c5%2uoH0irR%VJ,~> -!BpJTm/X-`rrN07_!h:'!<)p$=O[0'9Ocu\!3+K8"6Bghj6Q^GGPKG_!VLa:rrJ@_rP&:3"VuX& -^8R:Vrs/MXY(;;4i;Tq["T5u\[J>CRJcDhO"60@fjlPk1eieN~> -!BU8Qkl@:PrrN07_!h:'!<)p$=O[0'9Ocu\!1hX("5sOdj6Q^GLAB*o!VV?JrrJ@_rP&:3"VuX& -^8R:Vrs&J\[uZ`bjKALcrPaZ-qLSZts/c5&irBDEjllfk3e.~> -!B:&NirG&9rrN07_!h:'!<)p$=O[0'9Ocu\!0#Ff"5=+^j6Q^GQ28c*!V_rZrrJ@_rP&:3"VuX& -^8R:Vrs&J`^n%.:kH=gfrQUbLqgncus/c5&irBD?jl6BZ2h1~> -!BpJTm/X-`rrE,8nGiCds8N8&/d*,5p>Q#OWRL59:B6C?rrI3=c2Rh.L]7;Tp24(.^&`6:k5PY_ -eYdeR]'$0p"58Nul[f(es/Q)#N;uc8m/bd$J,~> -!BU8Qkl@:PrrE,8nGiCds8N8&/d*,5p>Q#OS^Zg)9`U1=rrI`Mc2Rh0PlC[ap24(.^&`6:k5PY` -g9HR(_m=G:gs/Q)#N;u]6klK'jJ,~> -!B:&NirG&9rrE,8nGiCds8N8&/d*,5p>Q#ON76eg9)st;rrJ;]c2Rh3UAk/op24(.^&`6:k5PY` -hRf5Ram?,/"6-&Zmt(Lis/Q)#N;uW4irR%VJ,~> -!BpJTm/X-`rrBjOrrB%Im/is]2=1>DrGp-^#hkRDs1]7NA[hKL!Oln/rs&8DTm;j;m]6?in">9] -JcC<$W;coV!28K@!S0Da~> -!BU8Qkl@:PrrBjOrrAV=klRFV2=1>Drdi;n#i;9Ts1]7NA[hKL!Oln/rs&;KX,*Cgn>lQknZ.c( -JcC<$W;coV!1r99!R<`V~> -!B:&NirG&9rrBjOrrA#,irYYL2=1>DrfPG)#i_uds1]7NA[hKL!Oln/rs&;P[[4&?nuMcmo -!BpJTm/X,urrB%Im/uJ[!8Ho@!Vpl^rs?oDq/m:\s6`k"qn<-F<:9)P#4op)GaZVDWrE5"]mI6b -JcC<$W;ctS!"J)Om/bd$J,~> -!BU8Qkl@9errAV=kl]oS!8Ho@!W%Jnrs@)Tq/m:\s6`k"qn<-F<:9)P#5-9, -JcC<$W;ctS!"IrKklK'jJ,~> -!B:&NirG%NrrA#,ire'F!8Ho@!W/,*rs@;dq/m:\s6`k"qn<-F<:9)P#56QOQE\m3WrE5"bF-EJ -JcC<$W;ctS!"@ZDirR%VJ,~> -!BpJTm/X,urrB%Hm/g;gK^Jd?p3Fm^"MU-V;!e2]!nCDarOr?E=Olg=#4B -!BU8Qkl@9errAV -!B:&NirG%NrrA#+irW*YK^Jd?pm95)"O3_t;!e2]!nCDarOr?E=Olg=#4g*@QaPNBW;ctVTWms; -s+13IrrRiR;WHd<_`*)~> -!BpJTm/X,urrB%Hm/j3d/FEH -!BU8Qkl@9errAVS9&qksGrlD'TuJcC<$ -V#LKI!2ef@!R<`V~> -!B:&NirG%NrrA#+irYnS/FEH$Pr29PsmB<8BJcC<$ -V#LKI!28H5!Q-jH~> -!BpJTm/X,urrB%Hm/uPb!7UB9!UYKarr_Ua+KYA<"8$5=o^Vqdro(2 -!BU8Qkl@9errAV -!B:&NirG%NrrA#+ire0N!7UB9!V)c,rr_Ua,e!LJ"8$5=o^Mkbkes0c^uPEkrri)3Ra:q`s+13G -rr^^M&`;X/!Q-jH~> -!BpJTm/X,urrB%Gm/gSoH1(\5k)%Fa"J??LOkTR0!IoXkrs/MVXFQ)6j8PnT"T?5dX7UuCJcDJE -!dOcPip?ct4b*~> -!BU8Qkl@9errAV;klP,jH1(\5l'BZq"J??LSDO#?!IoXkrs&GY[Z6Wdk+r"[rQ:&+p4<6ps.]Mp -GlV.0klK'jJ,~> -!B:&NirG%NrrA#*irWBaH1(\5m%_o,"J??LW8dRO!IoXkrs&G]^RV%;l(n=^rR%(JpOW?qs.]Mp -GlV%-irR%VJ,~> -!BpJTm/X,urrB%Gm/s`r*W>I,!T/scrs%"E(Vg!)kkG)XEK0\l#5ZfGH]Gc'UAk>KM3d:Ts+13D -rr`3?!4ChR!S0Da~> -!BU8Qkl@9errAV;kl\3k*W>I,!TT]trs%"E(Vg!7lhCD[EK0\l#5d&WMOVNMUAk>OQD3Vps+13D -rr`3?!4(VK!R<`V~> -!B:&NirG%NrrA#*ircFa*W>I,!Tp?.rs%"E(Vg!DmJ$V]EK0\l#5d5fRA\6rUAk>TUTNm6s+13D -rr`3?!3Y>A!Q-jH~> -!BpJTm/X,urrB%Gm/u\t!4qY!!SE^ers7t-(6SIns*483rrH)uq>UZnc(B6G_saip?ct4b*~> -!BU8Qkl@9errAV;kl^,l!4qY!!SsL!rs7t-(6SIns+g@CrrH)uq>UZod]/(raml))"7<"LfRa'R -s.B;n\c -!B:&NirG%NrrA#*ire9_!4qY!!TC00rs7t-(6SIns-NNTrrH)uq>UZofX.!Id.3n1"7NOgh1>TW -s.B;n\c -!BpJTm/X,umJs65m/hM4>OVRmd[eqg"T"5rD!_0$!W$s4rrG+!r;Qul`gD"@an28+"S]0J^&*B\ -JcD>A!a>YLiU$Zs4b*~> -!BU8Qkl@9emJrg)klQ#.>OVRmf;R7""T"5rD!_0$!W.QDrrG+!r;QunbbU#lch=%3"SfQc`;G2d -JcD>A!a>YJiTUBg3e.~> -!B:&NirG%NmJr3mirX9%>OVRmgp>Q2"T"5rD!_0$!W/,TrrG+!r;Quoe$#+Deb>a:"Sos'bl!%l -JcD>A!a>YGiSssV2h1~> -!BpJTm/X,umJs65m/tZ8$M!Wc!R%7hrr\f-8CdY -!BU8Qkl@9emJrg)kl]-1$M!Wc!R\($rr\f-8CdY -!B:&NirG%NmJr3mird=&$M!Wc!S=j4rr\f-8CdY -!BpJTm/X,umJs64m/f?LSacX[`2_Mj"TGV\*2!*-!T&q4rs8K+i4"YnWRq'=rr_PEP2h,nJcD5> -!hB -!BU8Qkl@9emJrg(klNmGSacX[bI#t&"TGV\*2!*-!TKXDrs8K+j1h"?ZePDKrr_YUT&tV(JcD5> -!hB -!B:&NirG%NmJr3lirV4@SacX[dCn65"TGV\*2!*-!Tg -!hB -!BpJTm/X,umJs64m/iLP54JRQ^9QGm"ob_]19gcRrrLN=q>UZtgS&52Z/D,O"6l>(c@Q"Hs-`lg -4ogi*m/bd$J,~> -!BU8Qkl@9emJrg(klR"J54JRQ`Oah("ob_]19gcRrrL]Mq>UZthl:d[]&T:["7)kDdt.OMs-`lg -4ogc(klK'jJ,~> -!B:&NirG%NmJr3lirY5@54JRQber38"ob_]19gcRrrLl]q>UZtj0O?/_WREg"7EI`fn'0Ss-`lg -4ogW$irR%VJ,~> -!BpJTm/X,umJs64m/uJX!SR#C!OfPorrg1Z19gcPrrL$=r;QusdA;2MSO&_E"S8[A^\`T^JcD/< -"5*\^k2>V-eieN~> -!BU8Qkl@9emJrg(kl]oP!SR#C!PcG*rrg1Z19gcPrrL6Lr;Quteusq!V*pdP"SB*[`r(DfJcD/< -"5*\^io'&%c8pI~> -!B:&NirG%NmJr3lire'D!SR#C!QW::rrg1Z19gcPrrLK\r;QutgUW]LX@J`Z"SKKtcMW7nJcD/< -"5*\^gu.2n_`*)~> -!BpJTm/X-`mJsT1mJs63m/gPnFRfA3YeT#o!fmn`o`#B-])Vg%aI@F@`:3f+<1NskqR_*Xon!-o -s-N`eF9#V(m/bd$J,~> -!BU8Qkl@:PmJsT1mJrg'klP&hFRfA3\]3J*!fmn`o`#B6_>jQ-cDHAlb4>S3<1Nskqnn<$p4<6p -s-N`eF9#P&klK'jJ,~> -!B:&NirG&9mJsT1mJr3kirW?`FRfA3_9Um:!fmn`o`#B>aoDD6e?P=BdI[C;<1NskqobDDpOW?q -s-N`eF9#J$irR%VJ,~> -!BpJTm/X-`mK!;"rrK+=huVb7/rs,I7^QNl8c1h2:!KD)jrri>EJY27Z -s+139rr`$2!5.4V!S0Da~> -!BU8Qkl@:PmK!;"rrKIMhuVb7/rs,gH`h&!ee+inA!KD)jrri>KO/hW! -s+139rr`$2!4h"O!R<`V~> -!B:&NirG&9mK!;"rrKd]huVb7/rs--Xc)R,QS[Is< -s+139rr`$2!4:YD!Q-jH~> -!BpJTm/X-`mK*A%Zc)83WQjf3/HD^>rrJk=i;Wo;10jPGrs/P^[ -!BU8Qkl@:PmK*A%Zc)83S^$C#/HD^>rrK7Mi;Wo;10jPFrs%SuL5E7kr;-EoDiUIi"5fN:idq,\ -s-3NbVZ8=*klK'jJ,~> -!B:&NirG&9mK*A%Zc)83N6UAa.fcL -!BpJTm/X-`mK3I)'=78trW)la"N!J4)O04K!3+61!f[1Go)A`\e)C<.\.F_prs/JSX+5r2L#Vk, -!DfklrrhPTK[B^Ls+136rrPIdNSa%'eieN~> -!BU8Qkl@:PmK3I)'=78trW)la"N!J4)O04K!1hC!!f?tDo)A`gf\ui3\.F_prs/MY[>pKaPNDQ= -!Dfklrr_SaOk#$_JcCo5!^QgDhWY'd3e.~> -!B:&NirG&9mK3I)'=78trW)la"N!J4)O04K!0#1_!f$bAo)A`rh;SA8\.F_prs/M]^7:n8T]l.M -!Dfklrr_YnTA"krJcCo5!^QgAhW"XS2h1~> -!BpJTm/X-`mK;&7%DrsJPIU3_p7 -l2Ud3nb<%a0@$?m"S8[A_#/c`JcCo5"5*\_i83i%eieN~> -!BU8Qkl@:PmKc$N\rPrrJbLj8T5>;&7%DrsJSOXbiRd -m/R*EoCr7c0@$?m"SB'Za8CMgJcCo5"5*\_gtq8rc8pI~> -!B:&NirG&9mK;&7%DrsJSU\!X/= -mf3Ng_`*)~> -!BpJTm/X-`mKEUjs1f;So'QJXrU'\bQ/1j.WQa`2>l]! -!BU8Qkl@:PmKEUjs1f;So'QJXrU'\bQ/1j.S]p=">6&d:rrJAMjo5JYKG9+7qYpckbbU#jbk(f5 -!r[cNp\t7)m\TpdqSJ*"p4<6ps,d6^F9#P$klK'jJ,~> -!B:&NirG&9mKEUjs1f;So'QJXrU'\bQ/1j.N6L;`=TER8rrJh\jo5JYKG9+7qYpcld]f%Ae+N\> -!r\>^p\t7)m\TpdqoY;BpOW?qs,d6^F9#J"irR%VJ,~> -!BpJTm/X-`mJm7drrR`Ojn%m?!<)#[ -qu6lb]oRK6d.mJ;!UtO3rrMNuVZ-eta+'iSJcC<$O8f=T&cfi*m/bd$J,~> -!BU8Qkl@:PmJm7drrR`Ojn%m?!<)#[ -qu6ld`12[debT(A!V23DrrMNuVZ-etc&JgrJcC<$O8f=T&cf`'klK'jJ,~> -!B:&NirG&9mJm7drrR`Ojn%m?!<)#[ -qu6lgbG^f;gA1UF!VDiTrrMNuVZ-ete"!o?JcC<$O8f=T&cfQ"irR%VJ,~> -!BpJTm/X-`mKEUjs1f;So'QJXrU'gk>27q8;;ppCWQXZ12#s*rqQKun8NH&K6)#$qYp]t -YVI3/rVm-%i3J)fXP*OGrrM/0<"mRrmHOdiIV#[s,I$[RK,5#m/bd$J,~> -!BU8Qkl@:PmKEUjs1f;So'QJXrU'gk>27q8;;ppCS]g7!1]X!;rrN%Mp\tKfE-$_cF)^XFrri>* -1*!k'rs/P`]9J>`h>R*J!TodDrrLCuVuHkNPbI2is+130rrSVh1u. -!B:&NirG&9mKEUjs1f;So'QJXrU'gk>27q8;;ppCN6C5_1B* -1*!k'rs/Pd`1`a9ir/WO!U6HTrrLCuVuHkSTrmO0s+130rrSVh1Yh!k_`*)~> -!BpJTm/X-`mKE\ldM\rskP< -19gcXs81BHIYkJlrq-3keX?13!No4trr_&;Mq -!BU8Qkl@:PmKE\ldM\rsbJ; -19gcXs8:WXN0_3>oD\jFV>'ujY"u%s"5o]:gk#KVs,6mY/HD0nklK'jJ,~> -!B:&NirG&9mKE\ldM\rsbJ; -19gcXs8:ceS"n!eoD\jJYkS.uY"u%s"6?DWi.:oZs,6mY/HD$jirR%VJ,~> -!BpJTm/X-`mK3I)'=72r!!)uc"ZYB,mbJ<1mJs60m/uPh!5A1,!T/t6rrVUf^&,MU]i=G"rie-s -SH&W_c(K?F^[(Ch!QV,4rrJ-uX8`=bRY/laJcC<$MuNmn!#XqTm/bd$J,~> -!BU8Qkl@:PmK3I)'=72r!!)uc"ZYB,mbJ<1mJrg$kl]u`!5A1,!TT[FrrVUf^&,MU]i=G"rie-s -SH&W`d]81q`pW?r!R7nDrrJ-uX8`=eV304*JcC<$MuNmn!#XePklK'jJ,~> -!B:&NirG&9mK3I)'=72r!!)uc"ZYB,mbJ<1mJr3hire0T!5A1,!Tp?VrrVUf^&,MU]i=G"rie-s -SH&WafX7'GcLC?'!S"^TrrJ-uX8`=gZ(K\JJcC<$MuNmn!#OPJirR%VJ,~> -!BpJTm/X-`mK*A%Zg[;^!<)#XDJ!3+-.!dF]BpAY0 -!BU8Qkl@:PmK*A%Zg[;^!<)#XDJ!1h9s!d4Q@pAY0AXSMksCq'5S%C^/D)`"Ysn]IS] -Vp=u&rrKsLp\t8!S?;eon?7elr.4m!s,$aW;#kdoklK'jJ,~> -!B:&NirG&9mK*A%Zg[;^!<)#XDJ!0#(\!cn?=pAY0G[e]q(Cq'5S%C^/D)`"Yso?j_- -ZIS[9rrL6\p\t8!S?;eoo!t48r.4m!s,$aW;#k[lirR%VJ,~> -!BpJTm/X-`mK!o9*o\rD'5deW2. -!NX-4rrF+oYQ"atYC!_QJcC<$M#RS7!sdK5m/bd$J,~> -!BU8Qkl@:PmK!o9*r_O?@cfD=e4 -!O^)ErrF+oYQ"b!\;@urJcC<$M#RS7!s[90klK'jJ,~> -!B:&NirG&9mK!o9*ub,:Z -!BpJTm/X-`mJsT1mJs6.m/g;gF8,\8VoJT5!L0P]^Ae0?&U;%(W,%' -!BU8Qkl@:PmJsT1mJrg"klOibF8,\8Z-<(E!L0P]^Ae0?&U;%(W,Ro]\)7/IrrK(Lq#:BL*3fGG -qSJ,toR[$ns+^OTEr]4oklK'jJ,~> -!B:&NirG&9mJsT1mJr3firW*YF8,\8]@6WV!L0P]^Ae0?&U;%(W-"](^uPCVrrKI\q#:BL*3fGG -qT>5?on!-os+^OTEr]+lirR%VJ,~> -!BpJTm/X,umJs6.m/t6+%e08n!L2:6rr@*:^&l!,$i[j@>iarF!Kc46rrJToZMt(+`IFTIJcC<$ -L&V8E%KOE#m/bd$J,~> -!BU8Qkl@9emJrg"kl\^$%e08n!MJ9Frr@*:^&l!,$i[j@?K^AK!M&0ErrJToZMt(+b`/^lJcC<$ -L&V8E%KO;uklK'jJ,~> -!B:&NirG%NmJr3fircmn%e08n!Nb;Wrr@*:^&l!,$i[j@@-ZeP!NG5VrrJToZMt(+d[[c8JcC<$ -L&V8E%KO,pirR%VJ,~> -!BpJTm/X,umJs6-m/fHOM>7)OIIR+5!-%eK!K\E&^&W-3rrI`=q#:A"S$`1urks/Mj+75]s+C=Q -M#]`mm/bd$J,~> -!BU8Qkl@9emJrg!klO!JM>7)OMt6`E!-%eK!K\E&^&W-3rrJ5Mq#:A"S$W+sb))kTJcC<$KDu"0 -!'T$"!R<`V~> -!B:&NirG%NmJr3eirV:BM>7)ORe-CU!-%eK!K\E&^&W-3rrJ_]q#:A"S$W+sd?q*$JcC<$KDu"0 -!'Alo!Q-jH~> -!BpJTm/X,umJs6-m/sBh)u9F3"8'mXFSYq:E;R?N!!RlO^&W-4rrW1AqY:'k*8@n$"4iE_g4B9T -s+:7Qq&9=7g$Jgk4b*~> -!BU8Qkl@9emJrg!kl[ja)u9F3"8'mYK),EHE;R?N!!RlO^&W-3rrIfMq#:@7gU7%`gR4/[JcC<$ -K)YrK)ZZhiklK'jJ,~> -!B:&NirG%NmJr3eirc(W)u9F3"8'mZOno"WE;R?N!!RlO^&W-3rrJ>\q#:@7gU7%`hkm")JcC<$ -K)YrK)ZZ\eirR%VJ,~> -!BpJTm/X,umJs6-m/u]*!2'8j#Ol\RKnF#WnGE4cEr3QP]Sm6t^&W36rrMh=q#:BL*4GkMh3*TA -rdk*#s+11PT)^D.g$Jgk4b*~> -!BU8Qkl@9emJrg!kl^-!!2'8j#Ol\RKnF&XnGE4cEr3QP]Sm6t^&W36rrMkMq#:BL*4GkLiLZ=c -JcC<$Jc>lQT)^A)g$&O_3e.~> -!B:&NirG%NmJr3eire9i!2'8j#Ol\RKnF)YnGE4cEr3QP]Sm6t^&W36rrMn]q#:BL*4GkLjf5*1 -JcC<$Jc>lQT)^>"g#E+N2h1~> -!BpJTm/X,umJs6,m0AsX/,oS!=M"IF!kMLar;Qe^W;XI1!!Nj?^:pP1j8T/DL\UlMRp -!BU8Qkl@9emJrfukm*FQ/,oS!=M"IF!kMLar;Qe^W;XI1!!Nj?^:pP1j8T/FPkb7ZRp -!B:&NirG%NmJr3dis1\H/,oS!=M"IF!kMLar;Qe^W;XI1!!Nj?^:pP1j8T/IUA4`hRp -!BpJTm/X,umJs6,m0;bn!4;/n^&,MF]i=G!rrS]->PGi4ETcB^!SWe5rrHAo])MotT7=fWJcC<$ -JcG`L"1/%Ikh,8'eieN~> -!BU8Qkl@9emJrfukm$2e!4;/n^&,MF]i=G!rrS]->PGi4ETcB^!T'LErrHAo])Mp!Wf>1!JcC<$ -JcG`L"1/%HjOi\tc8pI~> -!B:&NirG%NmJr3dis+BZ!4;/n^&,MF]i=G!rrS]->PGi4ETcB^!TL3UrrHAo])Mp$[@GYBJcC<$ -JcG`L"1/%Hhq6ri_`*)~> -!BpJTm/X,umJs6+m0&%A4)DD%^'M2as-t#IS8>\1^&b]Zir9&'UA4`h*8A.+"R`18^%m6ZJcC<$ -r;Qg[!/&nj!S0Da~> -!BU8Qkl@9emJrftklcP;4)DD%^'M2as-t#IS8>\1^&b]Zir9&-Xn_ns*8A.+"Rr[S`;5&bJcC<$ -r;Qg[!.ibd!R<`V~> -!B:&NirG%NmJr3cirjf24)DD%^'M2as-t#IS8>\1^&b]Zir9&3\+ot(*8A.+"S0-mbkltkJcC<$ -r;Qg[!.NP[!Q-jH~> -!BpJTm/X,urrB%]!,M>C#](CuSH&WW<5&1C!khFuir9%nYke;"gDmp,"S/[A[eG@QJcC<$ -qu6c4!#+ADm/bd$J,~> -!BU8Qkl@9errAV0kl]cT!,M>C#](CuSH&WW<5&1C!khJ!ir9%u\bZ7+gDmp,"SB0[^A*9ZJcC<$ -qu6c4!#"/?klK'jJ,~> -!B:&NirG%NrrA"tirdpH!,M>C#](CuSH&WW<5&1C!khJ!ir9&(_YO34gDmp,"SKQt`qY,bJcC<$ -qu6c4!#!r9irR%VJ,~> -!BpJTm/X,urrB%;m/hVGW;XF8X"jbW^:pOSr;QiK=M"IF"1hBRr8R_WYeKr5!Lm?/rri&&Ha!$l -s+13$s7uZr5lc8_m/bd$J,~> -!BU8Qkl@9errAV/klQ,AW;XF8X"jbW^:pOSr;QiK=M"IF"1hB]rSmhX\]+CE!Lm?/rri)0M7E2/ -s+13$s7uZr5lc2]klK'jJ,~> -!B:&NirG%NrrA"sirXB8W;XF8X"jbW^:pOSr;QiK=M"IF"1hEirSmhX_9MfU!Lm?/rri,9R)/HH -s+13$s7uZr5lc)ZirR%VJ,~> -!BpJTm/X,urrB%;m/c)lr4W4n27*7q!-7u:$1MnTKnFGcnUJ#S&,+-q7D$Qmt(Li -s+14Frr^1>&)Yt*!S0Da~> -!BU8Qkl@9errAV/klKNdr4W4n27*7q!-7u:$1MnTKnFGcn>4"]rrK7Mq>UJ#S&,+-qSS2rnU^^k -s+14Frr^1>&)5\"!R<`V~> -!B:&NirG%NrrA"sirR^Xr4W4n27*7q!-7u:$1MnTKnFGcn?C'prrKU]q>UJ#S&,+-qTG;=nq$gl -s+14Frr^1>%bB4k!Q-jH~> -!BpJTm/X,urrB%:m/TcV^&\J&r4W/Mq>U`mcGB/Qs6k@!j8T.EgA1aL*8AC2"THJhU$@4/JcC<$ -pAY1b!-QiZ!S0Da~> -!BU8Qkl@9errAV.kl=?R^&\J&r4W/Mq>U`mcGB/Qs7)!4j8T.QhYI0P*8AC2"TH]'XR(N -!B:&NirG%NrrA"rirD[K^&\J&r4W/Mq>U`mcGB/Qs72TFj8T.]iq`TT*8AC2"THr=[dSeIJcC<$ -pAY1b!-$KK!Q-jH~> -!BpJTm/X,urrB%:m/Ubr^&nO(#[RGD!-%N/!l^3!jSo78kkb;[gDn03"T68jU@*U4JcC<$p&>-: -!"@Z5m/bd$J,~> -!BU8Qkl@9errAV.kl>>n^&nO(#[RGD!-%N/!R$tmrrJALqYpTN*5qj[rQL>)n:CUjs+14Crr^CD% -,'1q!R<`V~> -!B:&NirG%NrrA"rirEWf^&nO(#[RGD!-%N/!Rdn+rrJh\qYpTN*5qj[rR7=Hnq$gls+14Crr^CD% -+Ebe!Q-jH~> -!BpJTm/X,urrB%:m/Uu#^&o^KQ3[E'!-7W0!L1@[rrIE=qYpSc>fQdHrQ0\Zi.:oZs+14ArrPmp -DUe%SeieN~> -!BU8Qkl@9errAV.kl>Ms^&o^KQ3[E'!-7W0!MIHnrrIrMqYpSc>fQdHrQgV$jFR>^s+14ArrPmp -Ct.\Mc8pI~> -!B:&NirG%NrrA"rirEfk^&o^KQ3[E'!-7W0!NaQ,rrJJ]qYpSc>fQdHrRIODkCNYas+14ArrPmp -C=M8E_`*)~> -!BpJTm/X,urrB%:m/`*CrOrMr&dr*]^8R:drrVS8l/r!HqK2Q5!D]E2rri;EKp:DEs+13$s760l -a8cJ!eEm:f4b*~> -!BU8Qkl@9errAV.klHX>rOrMr&dr*]^8R:drrVYHlfS3Jqh4eF!D]E2rri>LP+^cbs+13$s760l -a8cIseEI"Z3e.~> -!B:&NirG%NrrA"rirOn5rOrMr&dr*]^8R:drrV_YmcONMqigjU!D]E2rri>RTWI7+s+13$s760l -a8cImeDgSI2h1~> -!BpJTm/X,urrB%:m/bgWpV$ZJkOAKQ`/jl[rrMJ -!BU8Qkl@9errAV.klK7OpV$ZJkOAKQbFJRprrMPLqYpWe&+RgB"THo9T&5,!JcC<$nG`PX!,p?N -!R<`V~> -!B:&NirG%NrrA"rirRGDpV$ZJkOAKQdA['-rrMV\qYpWe&+RgB"TI,LWoJ[1JcC<$nG`PX!,U-E -!Q-jH~> -!BpJTm/X,urrB%9m/^k/q7Zm=D"%B*rft4\rrM#=qYpSk: -!BU8Qkl@9errAV-klGA)q7Zm=D!q<(TuH3p!TKXGrrJlib5VRqQ^cc]s+13$s6osi^Aneue*-nY -3e.~> -!B:&NirG%NrrA"qirNZ!q7Zm=D!q<(Xj#u.!TpBXrrJlib5VS!Uo<7's+13$s6osi^Anbne)LJH -2h1~> -!BpJTm/X,urrB%9m/l*A^&,MF]i=FfrrVS8kii$Id@U47!D]E6rr^f1N7ELZJcC<$mJd5L!.3/] -!S0Da~> -!BU8Qkl@9errAV-klTR9^&,MF]i=FfrrVYHlfe?LeuANG!D]E6rr^uCRG!/kJcC<$mJd5L!.!#W -!R<`V~> -!B:&NirG%NrrA"qir[_,^&,MF]i=FfrrV_YmHFQNgU-hW!D]E6rr_,TVVZn(JcC<$mJd5L!-ZfN -!Q-jH~> -!BpJTm/X,urrB%8m/k=-])B>E\ldMLrrU0#rTX=__lWb8!q?fkcMn%"O,; -!BU8Qkl@9errAV,klSe&])B>E\ldMLrrUE6rosF`agM$G!q?fkcMn"&S -!B:&NirG%NrrA"pirZto])B>E\ldMLrrUWIrosF`d(]DW!q?fkcMn"*W2/4"s+13$s6Taf[K$un -dc1AG2h1~> -!BpJTm/X,urrB%7m0DN@ -!BU8Qkl@9errAV+km,s8 -!B:&NirG%NrrA"ois4., -!BpJTm/X,urrB%6m0)Se!.XY)rrVh?k3DsIVo\f9!ras[dJj@+Q%dH\JcC<$JcG$8"/c,7kL&Yt -eieN~> -!BU8Qkl@9errAV*klg#]!.XY)rrVkNl0A9LZ-N:I!ras[dJj@/Tp!h&JcC<$JcG$8"/c,7j3d)l -c8pI~> -!B:&NirG%NrrA"nirn0P!.XY)rrVn^lg"KN]%$ZX!ras[dJj@2Xe=;FJcC<$JcG$8"/c,6h9k6` -_`*)~> -!BpJTm/X,urrB%5m/rIN,5C@$!mQJqli.!Rf)5OLYVQ4,rrh;JK#mnAs+13$s69Ocp`]^#d-Ukb -4b*~> -!BU8Qkl@9errAV)klZtH,5C@$!n*>0li.!]gALsPYVQ4,rrhDYOO!fUs+13$s69Ocp`]^!d-1SV -3e.~> -!B:&NirG%NrrA"mirb2>,5C@$!na4Dli.!ihu*KUYVQ4,rrhPhT%3djs+13$s69Ocp`]]rd,P/E -2h1~> -!BpJTm/X,urrB%5m/uW&!064A!Mua\rrJ& -!BU8Qkl@9errAV)kl^&r!064A!O&fprrJMLrVlru19f:."QuYBbl!%lJcC<$kPkXE!%@!VklK'j -J,~> -!B:&NirG%NrrA"mire3e!064A!P,l/rrJt\rVlru19f:."R<7_den[rJcC<$kPkXE!%6^OirR%V -J,~> -!BpJTm/X,urrB%4m/s9e'CP&`!r.Jrm/I*7nbrIhYVQ4/rrhJUJ&;)6s+13$s5s=`mLoT!cg:ba -4b*~> -!BU8Qkl@9errAV(kl[d_'CP&`!r8#0m/I*FoDS[jYVQ4/rrhScNQM*Ls+13$s5s=`mLoStcfkJU -3e.~> -!B:&NirG%NrrA"lirbtT'CP&`!r8MDm/I*To_ndkYVQ4/rrh\qSC%1bs+13$s5s=`mLoSocf5&D -2h1~> -!BpJTm/X,urrB%3m/fENFlr]*idL7_rrW.?rVlfur\C_0rrhS[ID>W0s+13$s5a1]FT=SMm/bd$ -J,~> -!BU8Qkl@9errAV'klNsIFlr]*jbrWrrrW1Prr2p!r\C_0rrhYhN5kaGs+13$s5a1]FT=PLklK'j -J,~> -!B:&NirG%NrrA"kirV:BFlr]*kaM)1rrW1`rr2p!r\C_0rrhbuRa1e]s+13$s5a1]FT=MKirR%V -J,~> -!BpJTm/X,urrB%3m/t*)#iOkF!kj`qn,EFYIJs0IYql=3rrhYaI(f?,s+13$s5X+]i!9D!cKtY` -4b*~> -!BU8Qkl@9errAV'kl\O!#iOkF!lUZ/n,EF[N;`bXYql=3rrh_mMo>ICs+13$s5X+]i!9CrcKPAT -3e.~> -!B:&NirG%NrrA"kircal#iOkF!mI\Dn,EF\Rf36fYql=3rrhf$R`kPYs+13$s5X+]i!9CncJnrC -2h1~> -!BpJTm/X,urrB%2m/g5e=loYaS#GfU!TT+:rrGKcgA_ -!BU8Qkl@9errAV&klOc`=loYaVR#[j!TodJrrGKcgA_ -!B:&NirG%NrrA"jirW'X=loYaZ+TQ*!U6HZrrGKcgA_ -!BpJTm/X,urrB%2m/tiC!Q4("!r.YfnG`O>RK!3fg)'S?rrhejHa`X!s+13$s5 -!BU8Qkl@9errAV&kl]9;!Q4("!r82&nG`OCV>gJrg)'S?rrhl!MSAh9s+13$s5 -!B:&NirG%NrrA"jirdI0!Q4("!rA_ -!BpJTm/X,urrB%1m/qM31B$A8!q1Wgnc&X2VuH_rG2<0$nZ@/DoR[$ns+14-rr`3T!-ZTR!S0Da~> -!BU8Qkl@9errAV%klZ#-1B$A8!qD9'nc&X8Z2Xe'G2<0$o='Rgp4<6ps+14-rr`3T!-HHL!R<`V~> -!B:&NirG%NrrA"iira9$1B$A8!qMl])Ma0G2<0$oY?j4pOW?qs+14-rr`3T!--6C!Q-jH~> -!BpJTm/X,urrB%1m/uDh!1N$L!o\Fdo)Ap*[K$:&(Y[dH"S8jEYk*GGJcC<$h>[SG!$((Dm/bd$ -J,~> -!BU8Qkl@9errAV%kl]i_!1N$L!p#1$o)Ap1^&S-.(Y[dH"SK<^\b(IQJcC<$h>[SG!#sk?klK'j -J,~> -!B:&NirG%NrrA"iire!S!1N$L!pH!:o)Ap9`W,u6(Y[dH"ST^"_=`BZJcC<$h>[SG!#sY9irR%V -J,~> -!BpJTm/X,urrB%0m/rmZ(@UAb!nVh\oD\up_uKb76f@tIosB(In:CUjs+14*rr_^*!1h=#!S0Da~> -!BU8Qkl@9errAV$kl[CT(@UAb!o/^soD]!%b5_L>6f@tIp:Q6jnq$gls+14*rr_^*!1V0r!R<`V~> -!B:&NirG%NrrA"hirbVJ(@UAb!oTO4oD]!.dJs6E6f@tIpV`H6oR[$ns+14*rr_^*!11mh!Q-jH~> -!BpJTm/X,urrB%/m/f -!BU8Qkl@9errAV#klNjFETI-$fSeqdrs.`0L;Nuc-,S[A"S]ZgZgiVHJcC<$gA_4o!'/3d!R<`V~> -!B:&NirG%NrrA"girV1?ETI-$h4!X&rs.`0O2h4p-,S[A"Sg$*^%-aSJcC<$gA_4o!'&-]!Q-jH~> -!BpJTm/X,urrB%/m/t0,!nZN5!nr"?qYpl^Dd%CANHJDs8`TgRpptgLm=G:gs+14'rr^jS"2W.I -!S0Da~> -!BU8Qkl@9errAV#kl\X%!nZN5!oAgXqYpl^Dd%CANHJDs8`TgRq8/#nmt(Lis+14'rr^jS"2;qB -!R<`V~> -!B:&NirG%NrrA"gircgo!nZN5!ofWrqYpl^Dd%CANHJDs8`TgRq9#,:nU^^ks+14'rr^jS"1cS7 -!Q-jH~> -!BpJTm/X,urrB%.m/pbs5Q9aD"6k<)q#:9qpLA!Oqn<0FBk-o#rri,0H_9_Ws+13$s4I>Rr]^Bk -amB,[4b*~> -!BU8Qkl@9errAV"klY;n5Q9aD"7(rDq>UBrpLA!Oqn<0FBk-o#rri/8MQ6/ss+13$s4I>Rr]^Bj -alriO3e.~> -!B:&NirG%NrrA"fir`Qe5Q9aD"7DY`q>UBrpLA!Oqn<0FBk-o#rri2ARC)O9s+13$s4I>Rr]^Bg -al2h1~> -!BpJTm/X,urrB%.m/u/Z!2/BP#Q(KNec58D[.h99Zrltcrri/2IA5tWs+13$s472PTE#__amB,[ -4b*~> -!BU8Qkl@9errAV"kl]WS!2/BP#Q1oggAgeI[.h99Zrltcrri2:Mll;rs+13$s472PTE#_\alriO -3e.~> -!B:&NirG%NrrA"firddF!2/BP#Q26)hZ*4M[.h99Zrltcrri2BR^_^9s+13$s472PTE#\Ual -2h1~> -!BpJTm/X,urrB%-m/r^U(%(#\"QG-#;mc53!OQ(trri/3IA,kUs+13$s4.,Om1fVgaR'#Z4b*~> -!BU8Qkl@9errAV!kl[1N(%(#\"Qbi@<4)>4!OQ(trri2;N3)>rs+13$s4.,Om1fVdaQW`N3e.~> -!B:&NirG%NrrA"eirbDD(%(#\"R)M\ -!BpJTm/X,urrB%-m/u];!+t3i!r[b3o=b6gV=4Eeq7h?NkCNYas+14!rrZj54RC/V!S0Da~> -!BU8Qkl@9errAV!kl^-2!+t3i!r[n7o=b6gV=4EeqSnJpl@Jtds+14!rrZj546XcM!R<`V~> -!B:&NirG%NrrA"eire:%!+t3i!r\%;o=b6gV=4EeqotS;m",1fs+14!rrZj53o\6@!Q-jH~> -!BpJTm/X,urrB%,m/tE6!lj4!!,2>FrrE&4",da'NW-WlB^u**q7hBNk(3P`s+13urr^7B#0=jP -!S0Da~> -!BU8Qkl@9errAUukl\m.!lj4!!,2>FrrE&4",da'NW-WlB^u**qSnJol%/kcs+13urr^7B"i\OH -!R<`V~> -!B:&NirG%NrrA"dird(#!lj4!!,2>FrrE&4",da'NW-WlB^u**qp(\=m",1fs+13urr^7B"i/1= -!Q-jH~> -!BpJTm/X,urrB%+m/qA/0E1#3!Uat*^&S04^&o[5JgUK2!HIQ"rri26J"GeRs+13$s3^iKr\"7l -`pEfX4b*~> -!BU8Qkl@9errAUtklYl)0E1#3!Uat*^&S04^&o[5JgUK2!HIQ"rri5>NN)/ns+13$s3^iKr\"7j -`p!NL3e.~> -!B:&NirG%NrrA"cira,u0E1#3!Uat*^&S04^&o[5JgUK2!HIQ"rri5ES$_L4s+13$s3^iKr\"7g -`o@*;2h1~> -!BpJTm/X,urrB%+m/uMl!/BP6!R6Dt^&S04^&nPK\-;lG!Jeqnrri59J"GbQs+13$s3L]IL&`7W -`pEfX4b*~> -!BU8Qkl@9errAUtkl]rc!/BP6!R6Dt^&S04^&nPK\-;lG!Jeqnrri5?NN),ms+13$s3L]IL&`4R -`p!NL3e.~> -!B:&NirG%NrrA"cire*V!/BP6!R6Dt^&S04^&nPK\-;lG!Jeqnrri8GS$_L4s+13$s3L]IL&`1K -`o@*;2h1~> -!BpJTm/X,urrB%*m/sNm#h\5YOs+13$s3CWHfE_M] -`U*]W4b*~> -!BU8Qkl@9errAUskl\!f#h\5 -!B:&NirG%NrrA"birc4\#h\5 -!BpJTm/X,urrB%)m/pSn4T4CA!Uat*^&S04^&o[5JgUK2!HIQ(rri5:J=P\Os+13$s3:QGrB('b -`9dTV4b*~> -!BU8Qkl@9errAUrklY)h4T4CA!Uat*^&S04^&o[5JgUK2!HIQ(rri8BNi2&ks+13$s3:QGrB('` -`9@ -!B:&NirG%NrrA"air`B`4T4CA!Uat*^&S04^&o[5JgUK2!HIQ(rri8IS?hF2s+13$s3:QGrB('^ -`8^m92h1~> -!BpJTm/X,urrB%)m/u2^!0cLD!,2>FrW)u4",da'N;gNkB`%f4qo"#Sj+75]s+13nrr\Gb(uE3u -!S0Da~> -!BU8Qkl@9errAUrkl]WV!0cLD!,2>FrW)u4",da'N;gNkB`%f4r5t%sk(3P`s+13nrr\Gb(tupm -!R<`V~> -!B:&NirG%NrrA"airdgJ!0cLD!,2>FrW)u4",da'N;gNkB`%f4r6_(?l%/kcs+13nrr\Gb(Y-Ia -!Q-jH~> -!BpJTm/X,urrB%(m/s*`%H-@J!MttN^&aCnrVm#u`IXK;JcC<$JcEmm"5jUgUVlI"eieN~> -!BU8Qkl@9errAUqkl[RY%H-@J!MttN^&aCnrVm#ubE&L]JcC<$JcEmm"5jUgTYp!pc8pI~> -!B:&NirG%NrrA"`irbeO%H-@J!MttN^&aCnrVm#ud[dZ,JcC<$JcEmm"5jUgSAX@f_`*)~> -!BpJTm/X,urrB%'m/g)a7caRM>I=(;!OQ)1rri8=JXPJJs+13$s2b3A7K?9%m/bd$J,~> -!BU8Qkl@9errAUpklOT[7caRM>I=(;!OQ)1rri8DO/:ogs+13$s2b3A7K?3#klK'jJ,~> -!B:&NirG%NrrA"_irVmS7caRM>I=(;!OQ)1rri8JSZq=/s+13$s2b3A7K?-!irR%VJ,~> -!BpJTm/X,urrB%'m/u&S!1N$L!q]U%pV$p?=S2Xka+B]:JcC<$JcEdj".B3%g;<4XeieN~> -!BU8Qkl@9errAUpkl]NK!1N$L!q]U%pV$p?=S2Xlc&ea^JcC<$JcEdj".B3$f>?bQc8pI~> -!B:&NirG%NrrA"_ird[?!1N$L!q]U%pV$p?=S2Xle"3c+JcC<$JcEdj".B3$dDFoE_`*)~> -!BpJTm/X,urrB%&m/rjY%Gp4H"6g\9]_fDK]PD$Or5aJVi.:oZs+13irr_*e!1^mm!S0Da~> -!BU8Qkl@9errAUokl[=R%Gp4H"6g\9]_fDK]PD$OrQ^M"j+75]s+13irr_*e!1C[f!R<`V~> -!B:&NirG%NrrA"^irbPH%Gp4H"6g\9]_fDK]PD$OrR@FAkCNYas+13irr_*e!0tC\!Q-jH~> -!BpJTm/X,urrB%%m/p2c55jXDs(2c$Dd%CALj3*Aj8I&OQf!AoJcC<$`W$&=4oeHqm/bd$J,~> -!BU8Qkl@9errAUnklX]]55jXDs(2c$Dd%CALj3*Aj8I8cU>gb(JcC<$`W$&=4oeBoklK'jJ,~> -!B:&NirG%NrrA"]ir`!U55jXDs(2c$Dd%CALj3*Aj8IN#Y3(<8JcC<$`W$&=4oe -!BpJTm/X,urrB%%m/u)Z!0$+@!l#iIrr3;fb/*9@rQ0_Xh1>TWs+13frr\2[(Ycam!S0Da~> -!BU8Qkl@9errAUnkl]QS!0$+@!l#iIrr3;fb/*9@rQgV"iIV#[s+13frr\2[(YHOf!R<`V~> -!B:&NirG%NrrA"]ird^F!0$+@!l#iIrr3;fb/*9@rRIOBjamG_s+13frr\2[(=L"Y!Q-jH~> -!BpJTm/X,urrB%$m/s9f#hA2>!l#AjqYp]sb(Q&9JcC<$JcEUe"4[YXW5%^#eieN~> -!BU8Qkl@9errAUmkl[d`#hA2>!l#AjqYp]sd#t*]JcC<$JcEUe"4[YXVSD?rc8pI~> -!B:&NirG%NrrA"\irbtU#hA2>!l#AjqYp]setB/,JcC<$JcEUe"4[YXTtfUg_`*)~> -!BpJTm/X,urrB%#m/pYp./N90!m;7lqu6ftbCu29JcC<$JcERd"8XDG?G>e-eieN~> -!BU8Qkl@9errAUlklY/j./N90!m;7lqu6fud?:0\JcC<$JcERd"8XDG>e]G'c8pI~> -!B:&NirG%NrrA"[ir`Hb./N90!m;7lqu6fuf:]5+JcC<$JcERd"8XDG>/'"t_`*)~> -!BpJTm/X,urrB%#m/u>g!-n/9"8'mTo_ndkr\CPPrri;EL6LACs+13$s1eR9GQ8cD^?ksP4b*~> -!BU8Qkl@9errAUlkl]c^!-n/9"8'mTo_ndkr\CPPrri>LPFp``s+13$s1eR9GQ8`?^?G[D3e.~> -!B:&NirG%NrrA"[irdpQ!-n/9"8'mTo_ndkr\CPPrri>RTr[4)s+13$s1eR9GQ8]8^>f732h1~> -!BpJTm/X,urrB%"m/sd"!kn@.%.J4WKnFGcnGiNh1B.:Q"T?T"P1kKeJcC<$^Ae;K!X,sFm/bd$ -J,~> -!BU8Qkl@9errAUkkl\6p!kn@.%.J4WKnFGcnGiNh1B.:Q"THi6T&,%uJcC<$^Ae;K!X,jCklK'j -J,~> -!B:&NirG%NrrA"ZircIf!kn@.%.J4WKnFGcnGiNh1B.:Q"TI&IWoAU0JcC<$^Ae;K!X,^?irR%V -J,~> -!BpJTm/X,urrB%!m/qS5)sd>"!nCDarOr]O=Ok/"bQ%VAcA.P9JcC<$JcEF`"7$m+GeEDEeieN~> -!BU8Qkl@9errAUjklZ)/)sd>"!nCDarOr]O=Ok/"bQ%VAe!-E[JcC<$JcEF`"7$m+G.d&?c8pI~> -!B:&NirG%NrrA"Yira?&)sd>"!nCDarOr]O=Ok/"bQ%VAfqPM+JcC<$JcEF`"7$m+F1gN6_`*)~> -!BpJTm/X,urrB%!m0)]6!)NUkrrVUf^&,MM]hT3Ts8L]^5aN4b*~> -!BU8Qkl@9errAUjklg-.!)NUkrrVUf^&,MM]hT3Ts8LN5S_\ksJcC<$]`/-6:B3B:]]fIB3e.~> -!B:&NirG%NrrA"Yirn9u!)NUkrrVUf^&,MM]hT3Ts8L]GWSrF.JcC<$]`/-6:B3<2]]0%12h1~> -!BpJTm/X,urrB$um/t`I!1!H]!Go7@^';&Frm6L_f7EsQs+13]rr\Md&CJ,W!S0Da~> -!BU8Qkl@9errAUikl]3B!1!H]!Go7@^';&Frmd=)gk#KVs+13]rr\Md&C.oP!R<`V~> -!B:&NirG%NrrA"Xird@5!1!H]!Go7@^';&Frn=-Gi.:oZs+13]rr\Md&'2BC!Q-jH~> -!BpJTm/X,urrB$tm/rs\#1rhR!U"Is^&r5"O4Ss_JcC<$\c2c`"ot:,m/bd$J,~> -!BU8Qkl@9errAUhkl[IV#1rhR!U"Is^&r5.S(iMoJcC<$\c2c`"ot4*klK'jJ,~> -!B:&NirG%NrrA"Wirb\L#1rhR!U"Is^&r8 -!BpJTm/X,urrB$sm/pVo.J*Q=!L0P\^&ar0rk8E3It@WNs+13[rr_jA!+!/&!S0Da~> -!BU8Qkl@9errAUgklY,i.J*Q=!L0P\^&ar0rk8E3JV!iPs+13[rr_jA!*d"u!R<`V~> -!B:&NirG%NrrA"Vir`Ea.J*Q=!L0P\^&ar0rk8E3K7X&Rs+13[rr_jA!*Qkm!Q-jH~> -!BpJTm/X,urrB$sm/uE!!*]C%!-7tN!CHkc^&W2)s+13$s1&(2=o^&5\a9FK4b*~> -!BU8Qkl@9errAUgkl]im!*]C%!-7tN!CHkc^&W2)s+13$s1&(2=o^#0\`j.?3e.~> -!B:&NirG%NrrA"Vire!`!*]C%!-7tN!CHkc^&W2)s+13$s1&(2=o]u)\`3_.2h1~> -!BpJTm/X,urrB$rm0:Z@!13`cE;[EOSIkl#^&W,'s+13$s1/.3QN.H9\Es=J4b*~> -!BU8Qkl@9errAUfkm#-9!13`cE;[EOSIkl#^&W,'s+13$s1/.3QN.H6\EO%>3e.~> -!B:&NirG%NrrA"Uis*:-!13`cE;[EOSIkl#^&W,'s+13$s1/.3QN.H0\DmV-2h1~> -!BpJTm/X,urrB$qm00![#gNBWr4W4qAcVeD!-!MhJcC<$])MlW#QUC(m/bd$J,~> -!BU8Qkl@9errAUeklmIT#gNBWr4W4qAcVeD!-!MhJcC<$])MlW#QU:%klK'jJ,~> -!B:&NirG%NrrA"Tirt\J#gNBWr4W4qAcVeD!-!MhJcC<$])MlW#QU.!irR%VJ,~> -!BpJTm/X,urrB$pm0$ku,BY=1^AS'2^&W2)s+13$s1A:5miqgA[d=+H4b*~> -!BU8Qkl@9errAUdklbAo,BY=1^AS'2^&W2)s+13$s1A:5miqg?[cmh<3e.~> -!B:&NirG%NrrA"SiriZg,BY=1^AS'2^&W2)s+13$s1A:5miqg=[c7D+2h1~> -!BpJTm/X,urrB$pm02Z,!$l]cqn<%1rk8E3P_&jcs+13_rri -!BU8Qkl@9errAUdklp*#!$l]cqn<%1rk8E3P_&jcs+13_rri -!B:&NirG%NrrA"Sis"6k!$l]cqn<%1rk8E3P_&jcs+13_rri -!BpJTm/X,urrB$om0(uN!-iMX^&`6:JcC<$JcEC_",$Xbf!XlGeieN~> -!BU8Qkl@9errAUcklfEF!-iMX^&`6:JcC<$JcEC_",$Xbd^A -!B:&NirG%NrrA"RirmU:!-iMX^&`6:JcC<$JcEC_",$Xac*cR4_`*)~> -!BpJTm/X,urrB$nm0'Bi!`lf+^&b]ZJcC<$JcEC_"1813WO2$neieN~> -!BU8Qkl@9errAUbkldmc!`lf+^&b]ZJcC<$JcEC_"1813VmP[hc8pI~> -!B:&NirG%NrrA"Qirl(X!`lf+^&b]ZJcC<$JcEC_"1813U9rq]_`*)~> -!BpJTm/X,urrB$mm0%e:%oBt:^&kuImXbChs+13`rr^sd!.;-?!S0Da~> -!BU8Qkl@9errAUaklc;4%oBt:^&kuImXbChs+13`rr^sd!.)!9!R<`V~> -!B:&NirG%NrrA"PirjQ+%oBt:^&kuImXbChs+13`rr^sd!-bd0!Q-jH~> -!BpJTm/X,urrB$mm02iN!%1gYrOr?E=Oi!&JcC<$^&J6+.f`<1Zg@eE4b*~> -!BU8Qkl@9errAUaklp9E!%1gYrOr?E=Oi!&JcC<$^&J6+.f`9,ZfqM93e.~> -!B:&NirG%NrrA"Pis"F7!%1gYrOr?E=Oi!&JcC<$^&J6+.f`3$Zf;)(2h1~> -!BpJTm/X,urrB$lm0_i$!)>F_KnXSen:CUjs+13`rri="!%?j4m/bd$J,~> -!BU8Qkl@9errAU`kmH8p!)>F_KnXSen:CUjs+13`rri="!%6X/klK'jJ,~> -!B:&NirG%NrrA"OisOEc!)>F_KnXSen:CUjs+13`rri="!%-@(irR%VJ,~> -!BpJTm/X,urrB$km0CfF!'n$=cLc\fJcC<$]Dhtb!"[8Xm/bd$J,~> -!BU8Qkl@9errAU_km,6>!'n$=cLc\fJcC<$]Dhtb!"[,TklK'jJ,~> -!B:&NirG%NrrA"Nis3F2!'n$=cLc\fJcC<$]Dhtb!"QlNirR%VJ,~> -!BpJTm/X,urrB$jm/sNm!NL_NJcC<$\c2c3! -!BU8Qkl@9errAU^kl\!f!NL_NJcC<$\c2c3! -!B:&NirG%NrrA"Mirc4\!NL_NJcC<$\c2c3! -!BpJTm/X,urrB$im/r"A$-Ii!JcC<$]DhuU#loX^m/bd$J,~> -!BU8Qkl@9errAU]klZM;$-Ii!JcC<$]DhuU#loR\klK'jJ,~> -!B:&NirG%NrrA"Lirac2$-Ii!JcC<$]DhuU#loIYirR%VJ,~> -!BpJTm/X,urrB$hm/pYp)<6;JJcC<$^&J2p)$"!Gm/bd$J,~> -!BU8Qkl@9errAU\klY2k)<6;JJcC<$^&J2p)$!sFklK'jJ,~> -!B:&NirG%NrrA"Kir`Hb)<6;JJcC<$^&J2p)$!jCirR%VJ,~> -!BpJTm/X,urrB$hm0)W9!&=+ss+13$s1eR:oJ$>/kcX:ReieN~> -!BU8Qkl@9errAU\klg'0!&=+ss+13$s1eR:oJ$>.jK@_Jc8pI~> -!B:&NirG%NrrA"Kirn7$!&=+ss+13$s1eR:oJ$>-hlbu?_`*)~> -!BpJTm/X,urrB$gm/u,g!)\=IJcC<$^]+C5!$g:$m/bd$J,~> -!BU8Qkl@9errAU[kl]T`!)\=IJcC<$^]+C5!$g1!klK'jJ,~> -!B:&NirG%NrrA"JirdaS!)\=IJcC<$^]+C5!$]moirR%VJ,~> -!BpJTm/X,urrB$fm/tKB!-!MhJcC<$_>aUV!"d;Sm/bd$J,~> -!BU8Qkl@9errAUZkl\p9!-!MhJcC<$_>aUV!"[)NklK'jJ,~> -!B:&NirG%NrrA"Iird+.!-!MhJcC<$_>aUV!"ZoIirR%VJ,~> -!BpJTm/X,urrB$em/sg%!02X1JcC<$_uBh!!!]p5m/bd$J,~> -!BU8Qkl@9errAUYkl\9r!02X1JcC<$_uBh!!!Ta1klK'jJ,~> -!B:&NirG%NrrA"HircLh!02X1JcC<$_uBh!!!TU-irR%VJ,~> -!BpJTm/X,urrB$dm/rgY!ighOJcC<$`W$%?!Wedjm/bd$J,~> -!BU8Qkl@9errAUXkl[:R!ighOJcC<$`W$%?!We[gklK'jJ,~> -!B:&NirG%NrrA"GirbMH!ighOJcC<$`W$%?!WeOcirR%VJ,~> -!BpJTm/X,urrB$cm/qn>#f;/mJcC<$a8Z7Y#QTFTm/bd$J,~> -!BU8Qkl@9errAUWklZD8#f;/mJcC<$a8Z7Y#QT@RklK'jJ,~> -!B:&NirG%NrrA"FiraW.#f;/mJcC<$a8Z7Y#QT4NirR%VJ,~> -!BpJTm/X,urrB$bm/pl!'%VX6JcC<$ao;Io&ccI@m/bd$J,~> -!BU8Qkl@9errAUVklYAp'%VX6JcC<$ao;Io&ccC>klK'jJ,~> -!B:&NirG%NrrA"Eir`Zh'%VX6JcC<$ao;Io&cc= -!BpJTm/X,urrB$bm0)]I!$:NYs+13$s3(EFm2c7#lDX(NeieN~> -!BU8Qkl@9errAUVklg-@!$:NYs+13$s3(EFm2c7"k,@MFc8pI~> -!B:&NirG%NrrA"Eirn:2!$:NYs+13$s3(EFm2c6ui2GZ:_`*)~> -!BpJTm/X,urrB$am0)T,!%R>ds+13$s3:QHlm_uikGR\JeieN~> -!BU8Qkl@9errAUUklg'$!%R>ds+13$s3:QHlm_uhjJV5Cc8pI~> -!B:&NirG%NrrA"Dirn3l!%R>ds+13$s3:QHlm_ughP]B7_`*)~> -!BpJTm/X,urrB$`m0)5p!&jD!s+13$s3L]JnhpIth59Q?eieN~> -!BU8Qkl@9errAUTklf]h!&jD!s+13$s3L]JnhpIsg8=*8c8pI~> -!B:&NirG%NrrA"Cirmj[!&jD!s+13$s3L]JnhpIre>D7,_`*)~> -!BpJTm/X,urrB$_m0(u_!(6O4s+13$s3^iLpd5$(etqa7eieN~> -!BU8Qkl@9errAUSklfEW!(6O4s+13$s3^iLpd5$(d\Z1/c8pI~> -!B:&NirG%NrrA"BirmUK!(6O4s+13$s3^iLpd5$'c)'G$_`*)~> -!BpJTm/X,urrB$^m0(]O!)`WEs+13$s3puNqb[>1cD9h.eieN~> -!BU8Qkl@9errAURklf-G!)`WEs+13$s3puNqb[>1b,"8&c8pI~> -!B:&NirG%NrrA"Airm=;!)`WEs+13$s3puNqb[>0`MDMp_`*)~> -!BpJTm/X,urrB$]m/t9=!+(6VJcC<$e,KMV!"m/Em/bd$J,~> -!BU8Qkl@9errAUQkl\a5!+(6VJcC<$e,KMV!"cuAklK'jJ,~> -!B:&NirG%NrrA"@ircq*!+(6VJcC<$e,KMV!"cf -!BpJTm/X,urrB$\m0's,!,DLas+13$s4@8Rrb;E?\YAHleieN~> -!BU8Qkl@9errAUPkleF%!,DLas+13$s4@8Rrb;E?[\E!ec8pI~> -!B:&NirG%NrrA"?irlUo!,DLas+13$s4@8Rrb;E?Z(g7Z_`*)~> -!BpJTm/X,urrB$[m/s^#!,mGgJcC<$fDbqk!!fm)m/bd$J,~> -!BU8Qkl@9errAUOkl\0q!,mGgJcC<$fDbqk!!fd&klK'jJ,~> -!B:&NirG%NrrA">irc@f!,mGgJcC<$fDbqk!!fU!irR%VJ,~> -!BpJTm/X,urrB$Zm/s?n!-NkmJcC<$g&D.s!!fNsm/bd$J,~> -!BU8Qkl@9errAUNkl[gf!-NkmJcC<$g&D.s!!]?oklK'jJ,~> -!B:&NirG%NrrA"=irc%\!-NkmJcC<$g&D.s!!]3kirR%VJ,~> -!BpJTm/X,urrB$Ym/s3i!.0:sJcC<$g]%A&!!] -!BU8Qkl@9errAUMkl[[b!.0:sJcC<$g]%A&!!]3jklK'jJ,~> -!B:&NirG%NrrA" -!BpJTm/X,urrB$Xm/s$b!.oe%JcC<$h>[S/!!K!em/bd$J,~> -!BU8Qkl@9errAULkl[L[!.oe%JcC<$h>[S/!!JmbklK'jJ,~> -!B:&NirG%NrrA";irb_Q!.oe%JcC<$h>[S/!!Ja^irR%VJ,~> -!BpJTm/X,urrB$Wm/rj\!.oe%JcC<$hu -!BU8Qkl@9errAUKkl[@V!.oe%JcC<$hu -!B:&NirG%NrrA":irbSL!.oe%JcC<$hu -!BpJTm/X,urrB$Vm/s'a!.0:sJcC<$iVs",!!8mbm/bd$J,~> -!BU8Qkl@9errAUJkl[OZ!.0:sJcC<$iVs",!!8d_klK'jJ,~> -!B:&NirG%NrrA"9irbbP!.0:sJcC<$iVs",!!8X[irR%VJ,~> -!BpJTm/X,urrB$Um/rj]!-NkmJcC<$j8T4(!!Jg]m/bd$J,~> -!BU8Qkl@9errAUIkl[@W!-NkmJcC<$j8T4(!!Ja[klK'jJ,~> -!B:&NirG%NrrA"8irbSM!-NkmJcC<$j8T4(!!JUWirR%VJ,~> -!BpJTm/X,urrB$Tm0'*e!,qjfs+13$s6'Cbrbhc@Tpk?LeieN~> -!BU8Qkl@9errAUHkldR^!,qjfs+13$s6'Cbrbhc@SsnmEc8pI~> -!B:&NirG%NrrA"7irkeS!,qjfs+13$s6'Cbrbhc?R[W7;_`*)~> -!BpJTm/X,urrB$Sm0'9k!,DLas+13$s69Odrb;E -!BU8Qkl@9errAUGkldac!,DLas+13$s69Odrb;E;URC?Ic8pI~> -!B:&NirG%NrrA"6irktY!,DLas+13$s69Odrb;E;T:+^?_`*)~> -!BpJTm/X,urrB$Rm0'Ep!*9#Ks+13$s6K[fr)Ne'WgN/SeieN~> -!BU8Qkl@9errAUFkldmi!*9#Ks+13$s6K[fr)Ne'VjQ]Lc8pI~> -!B:&NirG%NrrA"5irl+_!*9#Ks+13$s6K[fr)Ne'UR:'B_`*)~> -!BpJTm/X,urrB$Qm0'Wr!)`NBs+13$s6]ghpe_"oYa=_XeieN~> -!BU8Qkl@9errAUEkle*k!)`NBs+13$s6]ghpe_"oXdA8Qc8pI~> -!B:&NirG%NrrA"4irl:`!)`NBs+13$s6]ghpe_"oW0cNF_`*)~> -!BpJTm/X,urrB$Pm0's3!(6=.s+13$s6osjnj -!BU8Qkl@9errAUDkleF+!(6=.s+13$s6osjnj -!B:&NirG%NrrA"3irlUu!(6=.s+13$s6osjnj -!BpJTm/X,urrB$Om0(?E!&j1ps+13$s7-*llo"h\`0K]jeieN~> -!BU8Qkl@9errAUCkleg>!&j1ps+13$s7-*llo"h\_3O6cc8pI~> -!B:&NirG%NrrA"2irm"2!&j1ps+13$s7-*llo"h[]TqLX_`*)~> -!BpJTm/X,urrB$Nm0(]W!%R&\s+13$s7?6nj=1-PcBR\seieN~> -!BU8Qkl@9errAUBklf-O!%R&\s+13$s7?6nj=1-Pb*;,kc8pI~> -!B:&NirG%NrrA"1irm=C!%R&\s+13$s7?6nj=1-O`K]B`_`*)~> -!BpJTm/X,urrB$Mm0(ui!$0mHs+13$s7QBph&QJFes#J%eieN~> -!BU8Qkl@9errAUAklfE`!$0mHs+13$s7QBph&QJEdZ`nrc8pI~> -!B:&NirG%NrrA"0irmUT!$0mHs+13$s7QBph&QJDc'./g_`*)~> -!BpJTm/X,urrB$Lm0)H)!#!/"s+13$s7cNr_@ci(j-&d1eieN~> -!BU8Qkl@9errAU@klflu!#!/"s+13$s7cNr_@ci'hid4)c8pI~> -!B:&NirG%NrrA"/irn$h!#!/"s+13$s7cNr_@ci&fok@r_`*)~> -!BpJTm/X,urrB$Lm02n=9)o6tJcC<$JcGQG"KD_-9BD<'!S0Da~> -!BU8Qkl@9errAU@klp>18cT-sJcC<$JcGQG"KD_-9&Yos!R<`V~> -!B:&NirG%NrrA"/is"Jt8,rpqJcC<$JcGQG"KD_-8DB9e!Q-jH~> -!BpJTm/X,urrB$LmJlPVl=9krNe.4]s+14Irre>`!+bAVm/bd$J,~> -!BU8Qkl@9errAU@l2TuNk$e;lNe.4]s+14Irre>`!+P)PklK'jJ,~> -!B:&NirG%NrrA"/j8\-Bi*ZNdNe.4]s+14Irre>`!+=`HirR%VJ,~> -!BpJTm/X,urrB$LmJZDTJH5airIP!"s+14Mrri:>!!.Y2m/bd$J,~> -!BU8Qkl@9errAU@l2BiLIfTOgrIP!"s+14Mrri:>!!.S0klK'jJ,~> -!B:&NirG%NrrA"/j8J!@HN=+crIP!"s+14Mrri:>!!.G,irR%VJ,~> -!BpJTm/X,urrB$LmJQ>SRg/phoR[$ns+11QoM5GlRuQe9eieN~> -!BU8Qkl@9errAU@l29cKQj*OdoR[$ns+11QoM5GkR#U>2c8pI~> -!B:&NirG%NrrA"/j8@p?PQh+`oR[$ns+11QoM5GkP`=](_`*)~> -!BpJTm/X,urrB$LmJH8RZNgIbj+75]s+C=Sj"UN=Z]+8PeieN~> -!BU8Qkl@9errAU@l20]JYQk._j+75]s+C=Sj"UN=Y`.fIc8pI~> -!B:&NirG%NrrA"/j87j>Ws8VZj+75]s+C=Sj"UN=X,Q'>_`*)~> -!BpJTm/X,urrB$LmJ?2Qas-m(b(9SDs+UIUar(1(b)>WfeieN~> -!BU8Qkl@9errAU@l2'WI`ZkI$b(9SDs+UIUar(1(`f''^c8pI~> -!B:&NirG%NrrA"/j8.d=_'/jsb(9SDs+UIUar(1'_2I=S_`*)~> -!BpJTm/X,urrB$LmJ6,PgcYWDWe(2$s+gUWWX/YggktJ"eieN~> -!BU8Qkl@9errAU@l1sQHffT6@We(2$s+gUWWX/Yffo#"pc8pI~> -!B:&NirG%NrrA"/j8%^ -!BpJTm/X,urrB$LmJ-&Ok["5iO+I=^s,$aYNr]5ek_\[-eieN~> -!BU8Qkl@9errAU@l1jKGjBV`dO+I=^s,$aYNr]5djGE+%c8pI~> -!B:&NirG%NrrA"/j7qX;hc^!\O+I=^s,$aYNr]5ahhg@o_`*)~> -!BpJTm/X,urrB$LmIooMKED3Qnq$gls,I$]nl#MjKSSpqeieN~> -!BU8Qkl@9errAU@l1X?EJcc!Onq$gls,I$]nl#MjJqrRkc8pI~> -!B:&NirG%NrrA"/j7_L9Iff[Lnq$gls,I$]nl#MjIu!%b_`*)~> -!BpJTm/X,urrB$LmIfiLYR:F]g4B9Ts,[0_g+*.2Y_MNGeieN~> -!BU8Qkl@9errAU@l1O9DXU>+Zg4B9Ts,[0_g+*.2XbQ'@c8pI~> -!B:&NirG%NrrA"/j7VF8W!`SUg4B9Ts,[0_g+*.2W.s=5_`*)~> -!BpJTm/X,urrB$LmI]cKb:!?%[=S@/s,m -!BU8Qkl@9errAU@l1F3Ca!Uiu[=S@/s,m -!B:&NirG%NrrA"/j7M@7_Bo6o[=S@/s,m -!BpJTm/X,urrB$LmIT]Ki_9CSK`6Q&JcD#8"oa/V!);I+m/bd$J,~> -!BU8Qkl@9errAU@l1=-ChFmnNK`6Q&JcD#8"oa/V!)27&klK'jJ,~> -!B:&NirG%NrrA"/j7D:7fLc,FK`6Q&JcD#8"oa/V!(tmsirR%VJ,~> -!BpJTm/X,urrB$LmIKWJm!Jj78G%K5JcD):"nY=c!ds?em/bd$J,~> -!BU8Qkl@9errAU@l14'Bk^!:18G%K5JcD):"nY=c!da'_klK'jJ,~> -!B:&NirG%NrrA"/j7;46icbG(8G%K5JcD):"nY=c!dEXVirR%VJ,~> -!BpJTm/X,urrB$LmI9KGZ4?p[c%5nGs-`libp*3!Z@VBDeieN~> -!BU8Qkl@9errAU@l1!p?Y7CUXc%5nGs-`libp*3!YCYp=c8pI~> -!B:&NirG%NrrA"/j7)(3WX]"Rc%5nGs-`libp*2uWe'12_`*)~> -!BpJTm/X,urrB$LmI0EFc7f5(Q\#0fs-s#kQO!RFc@P?amFFFN~> -!BU8Qkl@9errAU@l0mj>b:`i$Q\#0fs-s#kQO!REbCSmZl-;>?~> -!B:&NirG%NrrA"/j6u"2`\%5sQ\#0fs-s#kQO!RD`e!.Oj23g+~> -!BpJTm/X,urrB$LmI'?Fk@+Dk>4[=FJcDAB"nPmt!+P,BmJlPSeieN~> -!BU8Qkl@9errAU@l0dd>j'Vie>4[=FJcDAB"nPmt!+=i -!B:&NirG%NrrA"/j6kq2h-L']>4[=FJcDAB"nPmt!++K4j8\-?_`*)~> -!BpJTm/X,urrB$LmHj3CS.#B -!BU8Qkl@9errAU@l0RX;R1''9eUdaOs.TGqeK"VuR=XW$klK'jJ,~> -!B:&NirG%NrrA"/j6Ye/PmdX5eUdaOs.TGqeK"VuQ%@uoirR%VJ,~> -!BpJTm/X,urrB$LmHa-CaXR8sQ2Z@7JcDSH"oabn!%Q*AmJQ>PeieN~> -!BU8Qkl@9errAU@l0IR;`[LloQ2Z@7JcDSH"oabn!%Gp=l29cHc8pI~> -!B:&NirG%NrrA"/j6P_/^aK0hQ2Z@7JcDSH"oabn!%>X6j8@p<_`*)~> -!BpJTm/X,urrB$LmHX'Bl>ck):[ -!BU8Qkl@9errAU@l0@L:k&:;#:[ -!B:&NirG%NrrA"/j6GY.i,&Go:[ -!BpJTm/X,urrB$LmHEp?T+CuA]n-37s/H#$]c-q_T7QD*m/bd$J,~> -!BU8Qkl@9errAU@l0.@7SIbc?]n-37s/H#$]c-q_SUp&$klK'jJ,~> -!B:&NirG%NrrA"/j65M+R1B9:]n-37s/H#$]c-q^R=XDoirR%VJ,~> -!BpJTm/X,urrB$LmH -!BU8Qkl@9errAU@l0%:7c8Ye*Gl!!kJcDkP"o -!B:&NirG%NrrA"/j6,G+a>O#"Gl!!kJcDkP"o -!BpJTm/X,urrB$LmH3d>l?EF31Y%'VJcDqR"k>C/"F03_mJ#uKeieN~> -!BU8Qkl@9errAU@l/q46k&pk-1Y%'VJcDqR"k>C/"ErpYl1aECc8pI~> -!B:&NirG%NrrA"/j6#A*i,]#$1Y%'VJcDqR"k>C/"EWLPj7hR7_`*)~> -!BpJTm/X,urrB$LmH!X-JcE(V"oXAc!$BF9mIfiIeieN~> -!BU8Qkl@9errAU@l/_(4a;t-JcE(V"oXAc!$944l1O9Ac8pI~> -!B:&NirG%NrrA"/j5f5(_]8^_N;\>-JcE(V"oXAc!$/t.j7VF5_`*)~> -!BpJTm/X,urrB$LmGmR;iEcNb52LkjJcE.X"l;EC!FF`9mI]cHeieN~> -!BU8Qkl@9errAU@l/V"3h-9s\52LkjJcE.X"l;EC!F4H3l1F3@c8pI~> -!B:&NirG%NrrA"/j5]/'f3/1T52LkjJcE.X"l;EC!F"*+j7M@4_`*)~> -!BpJTm/X,urrB$LmG[F9W##FCRf7m -!BU8Qkl@9errAU@l/Ck1VAB4ARf7mc8pI~> -!B:&NirG%NrrA"/j5K#%Tb[V;Rf7m -!BpJTm/X,urrB$LmGR@8gJIqN6fWatJcE@^"lhrM!)_L%mIBQEeieN~> -!BU8Qkl@9errAU@l/:e0fM;JI6fWatJcE@^"lhrM!)M6ul1+!=c8pI~> -!B:&NirG%NrrA"/j5Ar$dS0]A6fWatJcE@^"lhrM!):mmj72.1_`*)~> -!BpJTm/X,urrB$LmG@46S.Yf2PPp(4JcELb"oXVo!"tfQmI0ECeieN~> -!BU8Qkl@9errAU@l/(Y.R1TE.PPp(4JcELb"oXVo!"kWMl0mj;c8pI~> -!B:&NirG%NrrA"/j5/f"Pn=!*PPp(4JcELb"oXVo!"kKIj6u"/_`*)~> -!BpJTm/X,urrB$LmG7.5fMDPJ4P55bJcERd"kYp;!)V=!mI'?BeieN~> -!BU8Qkl@9errAU@l.tS-e4ouD4P55bJcERd"kYp;!)D$pl0dd:c8pI~> -!B:&NirG%NrrA"/j5&`!cV+<=4P55bJcERd"kYp;!)1^ij6kq._`*)~> -!BpJTm/X,urrB$LmG%"3UDNt:LAQQ%JcE^h"oF#[!#VJ^mHj3@eieN~> -!BU8Qkl@9errAU@l.bG+TGRY7LAQQ%JcE^h"oF#[!#VA[l0RX8c8pI~> -!B:&NirG%NrrA"/j4iStS/2/2LAQQ%JcE^h"oF#[!#M/Vj6Ye,_`*)~> -!BpJTm/X,urrB$LmFpq2hHU']/]rYEJcEdj"j/Cs!F4K4mHa-?eieN~> -!BU8Qkl@9errAU@l.YA*g0+LW/]rYEJcEdj"j/Cs!F"3.l0IR7c8pI~> -!B:&NirG%NrrA"/j4`MseQ;hP/]rYEJcEdj"j/Cs!Edm'j6P_+_`*)~> -!BpJTm/X,urrB$LmF^e0^)m=VB'k0LJcEpn"mon'!$Aq+mHO!=eieN~> -!BU8Qkl@9errAU@l.G5(],gqRB'k0LJcEpn"mon'!$8b'l07F5c8pI~> -!B:&NirG%NrrA"/j4NAq[N,>LB'k0LJcEpn"mon'!$/M!j6>S)_`*)~> -!BpJTm/X,urrB$LmFU_0j`1P*'qkPWs+13rrs&Iq'`\GYjalg_m/bd$J,~> -!BU8Qkl@9errAU@l.>/(iG\r#'qkPWs+13rrs&Iq'`\DViIU7WklK'jJ,~> -!B:&NirG%NrrA"/j4E;qgMI)o'qkPWs+13rrs&Iq'`\DSgO\DKirR%VJ,~> -!BpJTm/X,urrB$LmFCS-a?0G&2qW]]JcF-t"kYa6!'J>RmH3d:eieN~> -!BU8Qkl@9errAU@l.,#%`B+&"2qW]]JcF-t"kYa6!'A/Nl/q42c8pI~> -!B:&NirG%NrrA"/j43/n^cDGq2qW]]JcF-t"kYa6!'7oHj6#A&_`*)~> -!BpJTm/X,urrB$LmF:M-m$JLf"`a!^s+14#rs%q3"TT:)m"+Qcm/bd$J,~> -!BU8Qkl@9errAU@l."r%k`lk_"`a!^s+14#rs%q3"TT:&k^i![klK'jJ,~> -!B:&NirG%NrrA"/j4*)nifOoT"`a!^s+14#rs%q3"TT7!idp.OirR%VJ,~> -!BpJTm/X,urrB$LmF(A+jCJ>l(7P2Qs+14'rs&Fj('"AHjFQ^Ym/bd$J,~> -!BU8Qkl@9errAU@l-ef#i*ucf(7P2Qs+14'rs&Fj('"AFi.:.QklK'jJ,~> -!B:&NirG%NrrA"/j3lrlg0k!^(7P2Qs+14'rs&Fj('"ADg4A;EirR%VJ,~> -!BpJTm/X,urrB$LmEk5(_)_Pr1;e\CJcFL)"iE(q!'7rImG[F5eieN~> -!BU8Qkl@9errAU@l-SYu^,Z/n1;e\CJcFL)"iE(q!'.cEl/Ck-c8pI~> -!B:&NirG%NrrA"/j3Zfi\MsQh1;e\CJcFL)"iE(q!'%N?j5K#!_`*)~> -!BpJTm/X,urrB$LmEY)&SK%V0DX`5WJcFX-"n6C0!$%P\mGI:3eieN~> -!BU8Qkl@9errAU@l-AMsRi;>-DX`5WJcFX-"n6C0!#qDYl/1_+c8pI~> -!B:&NirG%NrrA"/j3HZgQQ#o)DX`5WJcFX-"n6C0!#q8Uj58kt_`*)~> -!BpJTm/X,urrB$LmEP#&jE:h0#^,Qds+141rs%n6#QP0SjFQ^Tm/bd$J,~> -!BU8Qkl@9errAU@l-8Gsi,f8*#^,Qds+141rs%n6#QP0Qi.:.LklK'jJ,~> -!B:&NirG%NrrA"/j3?Tgg2RE!#^,Qds+141rs%n6#QP0Ng4A;@irR%VJ,~> -!BpJTm/X,urrB$LmE=l$d8U,H'9;j=s+145rs&7Y'*&&4d=L]?m/bd$J,~> -!BU8Qkl@9errAU@l-&;qc;O`D'9;j=s+145rs&7Y'*&&3c@P68klK'jJ,~> -!B:&NirG%NrrA"/j3-HeaADs<'9;j=s+145rs&7Y'*&&1aFWC,irR%VJ,~> -!BpJTm/X,urrB$LmE+`"^HDPs,,bEks+149rs&J#+ohU+^Obe+m/bd$J,~> -!BU8Qkl@9errAU@l,i/o]0$&n,,bEks+149rs&J#+ohU*]7K5#klK'jJ,~> -!B:&NirG%NrrA"/j2p -!BpJTm/X,urrB$LmDnStW$q]H1:Dc6JcG-;"h$/d!%FjtmF^e,eieN~> -!BU8Qkl@9errAU@l,W#lVC2EE1:Dc6JcG-;"h$/d!%=^ql.G5$c8pI~> -!B:&NirG%NrrA"/j2^0`TdKg?1:Dc6JcG-;"h$/d!%4Ikj4NAm_`*)~> -!BpJTm/X,urrB$LmDeMtl]E"a!'@rHs+14?rs$5"!!!jul[eHTm/bd$J,~> -!BU8Qkl@9errAU@l,MrlkDpG[!'@rHs+14?rs$5"!!!jskCMmLklK'jJ,~> -!B:&NirG%NrrA"/j2U*`iJSKP!'@rHs+14?rs$5"!!!gniIU%@irR%VJ,~> -!BpJTm/X,urrB$LmDSArjb"3H!(=nZs+14Crs$P4!!![bjalgLm/bd$J,~> -!BU8Qkl@9errAU@l,;fjiIMXB!(=nZs+14Crs$P4!!![`iIU7DklK'jJ,~> -!B:&NirG%NrrA"/j2Bs^gO9e9!(=nZs+14Crs$P4!!![]gO\D8irR%VJ,~> -!BpJTm/X,urrB$LmDA5pid219!*J$-s+14Grs%7\!!!OVidpLGm/bd$J,~> -!BU8Qkl@9errAU@l,)ZhhK]V3!*J$-s+14Grs%7\!!!OThLXq?klK'jJ,~> -!B:&NirG%NrrA"/j20g\fQI`)!*J$-s+14Grs%7\!!!LPfR`)3irR%VJ,~> -!BpJTm/X,urrB$LmD/)nh/Nf&!(b%Zs+14Krs$D4!!!CHh1=t@m/bd$J,~> -!BU8Qkl@9errAU@l+lNfg2@?!!(b%Zs+14Krs$D4!!!CFg4AM9klK'jJ,~> -!B:&NirG%NrrA"/j1s[Ze8,Km!(b%Zs+14Krs$D4!!!CCe:HZ-irR%VJ,~> -!BpJTm/X,urrB$LmCqrlg275t!(">Ms+11S^-M`!$?"RKmEb/#eieN~> -!BU8Qkl@9errAU@l+ZBdenbZn!(">Ms+11S^-M`!$>e:El-JSpc8pI~> -!B:&NirG%NrrA"/j1aOXctWmf!(">Ms+11S^-M`!$>Rq=j3Q`d_`*)~> -!BpJTm/X,urrB$LmC_fkgiX,-!$@a1JcCN*#QC58!!!OPgk"k;m/bd$J,~> -!BU8Qkl@9errAU@l+H6cflIZ(!$@a1JcCN*#QC58!!!ONfn&D4klK'jJ,~> -!B:&NirG%NrrA"/j1OCWdr5cs!$@a1JcCN*#QC58!!!LJdt-Q(irR%VJ,~> -!BpJTm/X,urrB$LmCMZihg6":!%X];JcCZ.#PjuB!!![Zhgt1 -!BU8Qkl@9errAU@l+6*agNaD3!%X];JcCZ.#PjuB!!!XWgO\V4klK'jJ,~> -!B:&NirG%NrrA"/j1=7UeohZ+!%X];JcCZ.#PjuB!!!XTeq)l)irR%VJ,~> -!BpJTm/X,urrB$LmC;Ngl&-/S!#pdaJcCf2#OmQh!!!Xil%/6Dm/bd$J,~> -!BU8Qkl@9errAU@l+#s_jbXQL!#pdaJcCf2#OmQh!!!Ufjal[ -!B:&NirG%NrrA"/j1++Shh;XB!#pdaJcCf2#OmQh!!!Ubhgsh0irR%VJ,~> -!BpJTm/X,urrB$LmC)Beka*e"!!n#BJcCr6#Om-I!!"O9k^i-Am/bd$J,~> -!BU8Qkl@9errAU@l*fg]jHM+o!!n#BJcCr6#Om-I!!"L5jFQR9klK'jJ,~> -!B:&NirG%NrrA"/j0mtQhiT>f!!n#BJcCr6#Om-I!!"I1hgsh.irR%VJ,~> -!BpJTm/X,urrB$LmBl6cm&N;M!!?*4JcD):#JO%;!!#3`m"+QCm/bd$J,~> -!BU8Qkl@9errAU@l*T[[kbpWE!!?*4JcD):#JO%;!!#0\k^i!;klK'jJ,~> -!B:&NirG%NrrA"/j0[hOihSX9!!?*4JcD):#JO%;!!#*Vidp./irR%VJ,~> -!BpJTm/X,urrB$LmBQ$`^K(I;!%jZ4JcD;@#PFN;!!!.&^Obdhm/bd$J,~> -!BU8Qkl@9errAU@l*9IX]2\t6!%jZ4JcD;@#PFN;!!!.%]7K4`klK'jJ,~> -!B:&NirG%NrrA"/j0@VL[o*>/!%jZ4JcD;@#PFN;!!!."[t3SVirR%VJ,~> -!BpJTm/X,urrB$LmB>m^fQ\55!!dH+JcDGD#O$(2!!!j\fR`G*m/bd$J,~> -!BU8Qkl@9errAU@l*'=Ve92Z/!!dH+JcDGD#O$(2!!!jZe:Hl"klK'jJ,~> -!B:&NirG%NrrA"/j0.JJcZ9m&!!dH+JcDGD#O$(2!!!gVc[k,lirR%VJ,~> -!BpJTm/X,urrB$LmB,a]kaOF0!!,B`pjrICrs8Ct5lgrc24Nf\mCqrgeieN~> -!BU8Qkl@9errAU@l)j1UjHqb(!!,B`pjrICrs8Ct5lgrc1mm?Tl+ZB_c8pI~> -!B:&NirG%NrrA"/j/q>Ihions!!,B`pjrICrs8Ct5lgrc1R-dJj1aOS_`*)~> -!BpJTm/X,urrB$LmAfOY^Kh*F!#9V/JcDeN#MF26!!!:1^Obdam/bd$J,~> -!BU8Qkl@9errAU@l)NtQ]3>O@!#9V/JcDeN#MF26!!!:/]7K4YklK'jJ,~> -!B:&NirG%NrrA"/j/V,E[oit:!#9V/JcDeN#MF26!!!:-[t3SOirR%VJ,~> -!BpJTm/X,urrB$LmATCRi/K>f!!56Qo7?qHrrVe_48o3]/WJ\>mCDTbeieN~> -!BU8Qkl@9errAU@l)7l+-$Zc8pI~> -!B:&NirG%NrrA"/j/Cu>f7tmU!!56Qo7?qHrrVe_48o3].u2`-j141N_`*)~> -!BpJTm/X,urrB$LmA91U]NkjE!")rArIP!Xrs8S7>7(?1$=1;qmC)B_eieN~> -!BU8Qkl@9errAU@l)!VM\Q]C@!")rArIP!Xrs8S7>7(?1$ -!B:&NirG%NrrA"/j/(cAZrm_9!")rArIP!Xrs8S7>7(?1$ -!BpJTm/X,urrB$LmA'%SiflM*!!!UcmXbDMrs8%I&HDe34-\`UmBl6]eieN~> -!BU8Qkl@9errAU@l(dJKhNBo#!!!UcmXbDMrs8%I&HDe33g/?Nl*T[Uc8pI~> -!B:&NirG%NrrA"/j.kW?fT%rm!!!UcmXbDMrs8%I&HDe33KDaCj0[hI_`*)~> -!BpJTm/X,urrB$Lm@`hJcZgT3!!4^)gO]C@rrUr./H,VN+F)4`mBQ$ZeieN~> -!BU8Qkl@9errAU@l(I8Bb]Y-.!!4^)gO]C@rrUr./H,VN+Ekt[l*9IRc8pI~> -!B:&NirG%NrrA"/j.PE6a)`@%!!4^)gO]C@rrUr./H,VN+*5JRj0@VF_`*)~> -!BpJTm/X,urrB$Lm@EVG[;-*J!!5$;j+76NrrV5?2?!RW$#?r"mB5gWeieN~> -!BU8Qkl@9errAU@l(.&?Z>'^F!!5$;j+76NrrV5?2?!RW$#6bsl)s7Oc8pI~> -!B:&NirG%NrrA"/j.533Y%J(?!!5$;j+76NrrV5?2?!RW$"pDlj0%DC_`*)~> -!BpJTm/X,urrB$Lm@3JLkbqMk!!!$ZM;!O\c2S+(M)YM9!"Du-k^i-&m/bd$J,~> -!BU8Qkl@9errAU@l'poDjJGod!!!$ZM;!O\c2S+(M)YM9!"Dr*jFQQsklK'jJ,~> -!B:&NirG%NrrA"/j.#'8hk -!BpJTm/X,urrB$Lm?m8CkFkZXrW!$OIEqhCs4.,Orm#pCrW!$,:SHs&mA]IReieN~> -!BU8Qkl@9errAU@l'U];j.8sOrW!$OIEqhCs4.,Orm#pCrW!$,9qLBrl)EnJc8pI~> -!B:&NirG%NrrA"/j-\j/h3ptCrW!$OIEqhCs4.,Orm#pCrW!$,9:F[fj/M&>_`*)~> -!BpJTm/X,urrB$Lm?R&@jJ#ZdrW!$BC:3ees4dPUpU+`XrW!$3 -!BU8Qkl@9errAU@l':K8i1F![rW!$BC:3ees4dPUpU+`XrW!$2 -!B:&NirG%NrrA"/j-AX,g7(tNrW!$BC:3ees4dPUpU+`XrW!$2;OcBkj/1i;_`*)~> -!BpJTm/X,urrB$Lm?6i=kcJ81rW!$,8sJ1`s5Et[hNUV=rW!$;@BJaEmA'%LeieN~> -!BU8Qkl@9errAU@l&t95jJlT)rW!$,8sJ1`s5Et[hNUV=rW!$;@&i:=l(dJDc8pI~> -!B:&NirG%NrrA"/j-&F)hkjZqrW!$,8sJ1`s5Et[hNUV=rW!$:?)HM1j.kW8_`*)~> -!BpJTm/X,urrB$Lm>gQ9^3244rW!$UD6`\`s69Oco -!BU8Qkl@9errAU@l&P!1]6#_.rW!$UD6`\`s69Oco -!B:&NirG%NrrA"/j,W.%[W*r%rW!$UD6`\`s69Oco -!BpJTm/X,urrB$Lm>L?6fTf8DrW!'(3./L9JcG9?"Sf`Z3!B3\!tS4nfR`F[m/bd$J,~> -!BU8Qkl@9errAU@l&4d.e< -!B:&NirG%NrrA"/j,;q"c]:a0rW!'(3./L9JcG9?"Sf`Z3!B3\!tJ"cc[k,HirR%VJ,~> -!BpJTm/X,urrB$Lm>('2\T^":rW!'.6%6H -!BU8Qkl@9errAU@l%eL*[WOP5rW!'.6%6H -!B:&NirG%NrrA"/j+lXsZ#V`*rW!'.6%6H -!BpJTm/X,urrB$Lm=aj0ii$TB!WE'%"#Y,'pjrGJponcr"9&9'!@qo`idpK^m/bd$J,~> -!BU8Qkl@9errAU@l%J:(hPOs9!WE'%"#Y,'pjrGJponcr"9&9'!@hc[hLXpVklK'jJ,~> -!B:&NirG%NrrA"/j+QFqfV)k*!WE'%"#Y,'pjrGJponcr"9&9'!@_TRfR`(JirR%VJ,~> -!BpJTm/X,urrB$Lm=FX.mFn=M1'RUV" -!BU8Qkl@9errAU@l%/(&l.;SB0a7LU" -!B:&NirG%NrrA"/j+64oj3aB/0Eh=S" -!BpJTm/X,urrB$Lm=F[&m0)RSG";f8!!NBa?]VtmQ2_$Y^Q2__!Wk(2oZm/bd$J,~> -!BU8Qkl@9errAU@l%/*sklg"HF@QN5!!NBa?]VtmQ2_$Y^Q2__!W -!B:&NirG%NrrA"/j+67girn/8ECC$/!!NBa?]VtmQ2_$Y^Q2__!W -!BpJTm/X,urrB$Lm=F["m02grQ!uBMqu?mB:Pc($r1X,or7%d':ETK7"U-PgQ,i3Am>:32eieN~> -!BU8Qkl@9errAU@l%/*oklp7gP@-!Hqu?mB:Pc($r1X,or7%d':ETK7"U-MdPJlX8l&"X*c8pI~> -!B:&NirG%NrrA"/j+67cis"DVO'XC@qu?mB:Pc($r1X,or7%d':ETK7"U$D`O2'Y)j,)ds_`*)~> -!BpJTm/X,urrB$Lm=FZrm02gbNF+IHqu?p'-rG;c_ -!BU8Qkl@9errAU@l%/*jklp7WMI&%Cqu?p'-rG;c_ -!B:&NirG%NrrA"/j+67^is"DGLKcJ -!BpJTm/X,urrB$Lm=FZmm0;mtS8Ce?!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHI88Xm -!BU8Qkl@9errAU@l%/*ekm$=iR;5;9!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHI7r+O3kCMlK -l2TuKc8pI~> -!B:&NirG%NrrA"/j+67Yis+JXQ"`Z0!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHH7;8%&iIU$? -j8\-?_`*)~> -!BpJTm/X,urrB$Lm=FZgm0;ajS97IU"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQW96HcA -kCN#OmJ6,MeieN~> -!BU8Qkl@9errAU@l%/*_km$4`R<(tO"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQW8opE8 -jFQQHl1sQEc8pI~> -!B:&NirG%NrrA"/j+67Sis+AOQ#K8E"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQV88sj* -hLX^ -!BpJTm/X,urrB$Lm=FZ`m0D=SR!2Us*s20:0+KNl7oj5FL6eR:\&$59h<4(knauSPrVcTeo^VA7 -kM=V0_7-SAQA0Qp<_#)"%efr.!Zs[/GF5nnJaJ$Uo'HJ/4b*~> -!BU8Qkl@9errAU@l%/*Xkm,bHQ$$+l*Wl'90+KNl7oj5FL6eR:\&$59h<4(knauSPrVcTeo^VA7 -kM=V0_7-SAQA0Qp<_#)"%efr.!ZjR,Fd9AbJa%aMo'$2#3e.~> -!B:&NirG%NrrA"/j+67Lis3o7O`FA`* -!BpJTm/X,urrB$Lm=FZYm0`43]V:0u=@=b["47)U!u`d[=D`hf][uM$m=FZjm/bd$J,~> -!BU8Qkl@9errAU@l%/*QkmHY'\Y"Rk<^JDV"47)U!uW^X -!B:&NirG%NrrA"/j+67EisOek[$uV\<'`&Q"47)U!uWXU<,$oQ[*IZ^j+67VirR%VJ,~> -!BpJTm/X,urrB$Lm=FZNm4[>7\Z20[IrA^q91(]o-m'3<&.JsO"TSN+#7:nO',DZ<0f_To -!BU8Qkl@9errAU@l%/*FkqCc,[\oRPI;N=k8jYKk-Qa*;%h/jN"TSN+#7:nN',DZ;0K;Bk -!B:&NirG%NrrA"/j+67:j"JrqZ(mV@H"pS^83f*e-6 -!BpJTmCK9Jm=FYUm=FYUmJcJReieN~> -!BU8Ql+3F:l%/)Ml%/)Ml2KoJc8pI~> -!B:&Nj1:2#j+66Aj+66Aj8S'>_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6eq)D'eq)D'eu@4#4b*~> -!BU73c@O8lc@O8lcDf(h3e.~> -!B:%0_h#^V_h#^V_l:NR2h1~> -JN\QIJN\QIJN]knJ,~> -JNA?CJNA?CJNBYhJ,~> -JN&-=JN&-=JN'GbJ,~> -%%EndData -showpage -%%Trailer -end -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/htree.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/htree.eps deleted file mode 100755 index a3e170fdb1..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/htree.eps +++ /dev/null @@ -1,2679 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Creator: EpsTree -%%BoundingBox: 0 0 640 640 -%%DocumentFonts: Helvetica-Bold -%%EndComments -/m { moveto } def -/l { lineto stroke } def -/c { curveto stroke } def -/t { - /text exch def /y exch def /x exch def - text stringwidth pop - /width exch def /height 12 def - 0 0 1 setrgbcolor - x width 2 div sub 2 sub - y height 2 div sub 2 sub moveto - width 4 add 0 rlineto - 0 height 4 add rlineto - width 4 add neg 0 rlineto - closepath fill - 1 setgray - x width 2 div sub - y height 2 div sub moveto - text show -} def -/Helvetica-Bold findfont 12 scalefont setfont -0 setgray -0.4 setlinewidth -267.734 20.3125 m -267.734 20.3125 m -268.083 15.2087 267.85 10.0325 267.044 4.9807 c -267.734 20.3125 m -267.734 20.3125 m -268.786 15.2503 268.932 9.91963 268.16 4.8073 c -267.734 20.3125 m -267.734 20.3125 m -269.492 15.3649 270.047 9.83731 269.307 4.63898 c -267.734 20.3125 m -267.734 20.3125 m -270.2 15.5544 271.206 9.7868 270.497 4.47485 c -267.734 20.3125 m -267.734 20.3125 m -270.905 15.821 272.422 9.77035 271.745 4.31429 c -267.734 20.3125 m -267.734 20.3125 m -271.605 16.1679 273.71 9.79152 273.067 4.15698 c -267.734 20.3125 m -267.734 20.3125 m -272.298 16.5994 275.089 9.85549 274.484 4.00298 c -267.734 20.3125 m -267.734 20.3125 m -272.982 17.121 276.582 9.96968 276.02 3.85296 c -267.734 20.3125 m -267.734 20.3125 m -273.656 17.7403 278.218 10.1446 277.707 3.70842 c -267.734 20.3125 m -267.734 20.3125 m -274.318 18.4678 280.034 10.395 279.588 3.57228 c -267.734 20.3125 m -267.734 20.3125 m -274.968 19.3183 282.079 10.7426 281.716 3.44977 c -267.734 20.3125 m -267.734 20.3125 m -275.607 20.3125 284.418 11.219 284.169 3.3501 c -267.734 20.3125 m -267.734 20.3125 m -276.237 21.4813 287.143 11.8724 287.054 3.28962 c -267.734 20.3125 m -267.734 20.3125 m -276.864 22.8707 290.385 12.7788 290.53 3.29815 c -267.734 20.3125 m -267.734 20.3125 m -277.496 24.5529 294.338 14.0638 294.837 3.43218 c -267.734 20.3125 m -267.734 20.3125 m -278.149 26.6461 299.297 15.9478 300.365 3.80508 c -267.734 20.3125 m -267.734 20.3125 m -278.85 29.3562 305.738 18.8473 307.775 4.66257 c -267.734 20.3125 m -267.734 20.3125 m -279.651 33.0722 314.451 23.6295 318.283 6.59632 c -318.283 6.59632 m -318.283 6.59632 m -316.071 5.67195 314.225 3.26783 313.903 0.892329 c -318.283 6.59632 m -318.283 6.59632 m -316.679 5.11685 315.584 2.8979 315.387 0.724443 c -318.283 6.59632 m -318.283 6.59632 m -317.338 4.7665 316.775 2.68951 316.667 0.632813 c -318.283 6.59632 m -318.283 6.59632 m -318.028 4.60581 317.882 2.59814 317.847 0.591585 c -318.283 6.59632 m -318.283 6.59632 m -318.726 4.62952 318.968 2.6069 319.002 0.591208 c -318.283 6.59632 m -318.283 6.59632 m -319.411 4.83863 320.093 2.71822 320.203 0.63281 c -318.283 6.59632 m -318.283 6.59632 m -320.061 5.24097 321.327 2.95513 321.532 0.72896 c -318.283 6.59632 m -318.283 6.59632 m -320.656 5.85645 322.764 3.37311 323.108 0.911743 c -318.283 6.59632 m -318.283 6.59632 m -321.175 6.7317 324.558 4.09506 325.132 1.25812 c -267.734 20.3125 m -267.734 20.3125 m -280.652 38.6125 326.759 32.342 334.32 11.257 c -334.32 11.257 m -334.32 11.257 m -330.733 9.41116 327.952 5.14566 327.711 1.11868 c -334.32 11.257 m -334.32 11.257 m -331.541 8.7338 329.717 4.78459 329.598 1.03224 c -334.32 11.257 m -334.32 11.257 m -332.39 8.25767 331.291 4.56736 331.268 1.00039 c -334.32 11.257 m -334.32 11.257 m -333.266 7.96829 332.748 4.46104 332.805 1.00805 c -334.32 11.257 m -334.32 11.257 m -334.156 7.85803 334.139 4.44875 334.27 1.04836 c -334.32 11.257 m -334.32 11.257 m -335.043 7.92342 335.511 4.52455 335.716 1.1198 c -334.32 11.257 m -334.32 11.257 m -335.912 8.16415 336.906 4.69168 337.192 1.22525 c -334.32 11.257 m -334.32 11.257 m -336.747 8.58327 338.37 4.96311 338.752 1.37256 c -334.32 11.257 m -334.32 11.257 m -337.533 9.18856 339.959 5.36471 340.461 1.5766 c -334.32 11.257 m -334.32 11.257 m -338.255 9.99578 341.746 5.94245 342.409 1.86412 c -334.32 11.257 m -334.32 11.257 m -338.897 11.0354 343.838 6.77793 344.733 2.28457 c -334.32 11.257 m -334.32 11.257 m -339.441 12.3668 346.402 8.02308 347.656 2.93565 c -267.734 20.3125 m -267.734 20.3125 m -282.065 47.9697 344.442 50.654 361.096 24.3301 c -267.734 20.3125 m -267.734 20.3125 m -284.245 66.7696 363.612 96.1979 406.419 71.7352 c -406.419 71.7352 m -406.419 71.7352 m -409.994 58.6244 413.86 45.5894 418.012 32.6494 c -418.012 32.6494 m -418.012 32.6494 m -410.901 30.1191 405.488 20.0076 407.325 12.6871 c -418.012 32.6494 m -418.012 32.6494 m -411.279 29.7653 406.485 20.0308 408.304 12.9353 c -418.012 32.6494 m -418.012 32.6494 m -411.654 29.4397 407.425 20.0643 409.226 13.1741 c -418.012 32.6494 m -418.012 32.6494 m -412.029 29.1407 408.314 20.1069 410.098 13.4042 c -418.012 32.6494 m -418.012 32.6494 m -412.401 28.8668 409.157 20.1578 410.926 13.6265 c -418.012 32.6494 m -418.012 32.6494 m -412.773 28.6166 409.96 20.216 411.714 13.8417 c -418.012 32.6494 m -418.012 32.6494 m -413.143 28.3892 410.726 20.2811 412.467 14.0504 c -418.012 32.6494 m -418.012 32.6494 m -413.513 28.1834 411.459 20.3524 413.188 14.2533 c -418.012 32.6494 m -418.012 32.6494 m -413.881 27.9986 412.163 20.4295 413.881 14.451 c -418.012 32.6494 m -418.012 32.6494 m -414.248 27.8339 412.839 20.5122 414.547 14.6439 c -418.012 32.6494 m -418.012 32.6494 m -414.614 27.6888 413.492 20.6001 415.192 14.8325 c -418.012 32.6494 m -418.012 32.6494 m -414.978 27.5626 414.122 20.6931 415.815 15.0174 c -418.012 32.6494 m -418.012 32.6494 m -415.341 27.4549 414.733 20.7909 416.42 15.199 c -418.012 32.6494 m -418.012 32.6494 m -415.702 27.3652 415.326 20.8936 417.009 15.3776 c -418.012 32.6494 m -418.012 32.6494 m -416.061 27.2932 415.903 21.0009 417.583 15.5536 c -418.012 32.6494 m -418.012 32.6494 m -416.418 27.2384 416.466 21.1129 418.144 15.7275 c -418.012 32.6494 m -418.012 32.6494 m -416.773 27.2006 417.016 21.2296 418.693 15.8995 c -418.012 32.6494 m -418.012 32.6494 m -417.125 27.1794 417.554 21.3511 419.232 16.07 c -418.012 32.6494 m -418.012 32.6494 m -417.474 27.1747 418.082 21.4773 419.763 16.2394 c -418.012 32.6494 m -418.012 32.6494 m -417.82 27.1861 418.601 21.6085 420.285 16.4079 c -418.012 32.6494 m -418.012 32.6494 m -418.162 27.2135 419.112 21.7446 420.801 16.5759 c -418.012 32.6494 m -418.012 32.6494 m -418.501 27.2567 419.616 21.8859 421.312 16.7437 c -418.012 32.6494 m -418.012 32.6494 m -418.836 27.3155 420.114 22.0326 421.819 16.9116 c -418.012 32.6494 m -418.012 32.6494 m -419.167 27.3897 420.608 22.1848 422.322 17.0799 c -418.012 32.6494 m -418.012 32.6494 m -419.493 27.4792 421.098 22.3428 422.824 17.249 c -418.012 32.6494 m -418.012 32.6494 m -419.814 27.5838 421.585 22.5069 423.324 17.4191 c -418.012 32.6494 m -418.012 32.6494 m -420.13 27.7036 422.07 22.6773 423.823 17.5905 c -418.012 32.6494 m -418.012 32.6494 m -420.441 27.8382 422.554 22.8544 424.324 17.7638 c -418.012 32.6494 m -418.012 32.6494 m -420.745 27.9878 423.038 23.0387 424.826 17.9391 c -418.012 32.6494 m -418.012 32.6494 m -421.044 28.1522 423.523 23.2304 425.331 18.1168 c -418.012 32.6494 m -418.012 32.6494 m -421.336 28.3313 424.009 23.43 425.839 18.2975 c -418.012 32.6494 m -418.012 32.6494 m -421.621 28.5251 424.498 23.6382 426.353 18.4814 c -418.012 32.6494 m -418.012 32.6494 m -421.899 28.7337 424.99 23.8553 426.872 18.669 c -418.012 32.6494 m -418.012 32.6494 m -422.169 28.957 425.487 24.0822 427.398 18.8608 c -418.012 32.6494 m -418.012 32.6494 m -422.431 29.195 425.99 24.3193 427.933 19.0573 c -418.012 32.6494 m -418.012 32.6494 m -422.685 29.4479 426.5 24.5676 428.477 19.2591 c -418.012 32.6494 m -418.012 32.6494 m -422.931 29.7156 427.017 24.8279 429.032 19.4668 c -418.012 32.6494 m -418.012 32.6494 m -423.167 29.9984 427.543 25.1011 429.599 19.681 c -418.012 32.6494 m -418.012 32.6494 m -423.394 30.2965 428.08 25.3882 430.18 19.9025 c -418.012 32.6494 m -418.012 32.6494 m -423.611 30.6099 428.628 25.6906 430.777 20.132 c -418.012 32.6494 m -418.012 32.6494 m -423.818 30.939 429.19 26.0094 431.391 20.3706 c -418.012 32.6494 m -418.012 32.6494 m -424.015 31.2842 429.766 26.3462 432.025 20.6192 c -418.012 32.6494 m -418.012 32.6494 m -424.2 31.6457 430.36 26.7027 432.68 20.8788 c -418.012 32.6494 m -418.012 32.6494 m -424.374 32.0242 430.972 27.0807 433.359 21.1509 c -418.012 32.6494 m -418.012 32.6494 m -424.535 32.4201 431.605 27.4824 434.066 21.4369 c -418.012 32.6494 m -418.012 32.6494 m -424.684 32.8343 432.261 27.9103 434.802 21.7383 c -418.012 32.6494 m -418.012 32.6494 m -424.82 33.2674 432.943 28.3672 435.572 22.0571 c -418.012 32.6494 m -418.012 32.6494 m -424.941 33.7206 433.654 28.8563 436.379 22.3955 c -418.012 32.6494 m -418.012 32.6494 m -425.049 34.1949 434.398 29.3813 437.228 22.7559 c -418.012 32.6494 m -418.012 32.6494 m -425.141 34.6918 435.178 29.9466 438.125 23.1413 c -406.419 71.7352 m -406.419 71.7352 m -423.428 76.3736 443.985 72.9831 458.604 63.1285 c -458.604 63.1285 m -458.604 63.1285 m -455.739 54.8006 455.783 45.0096 458.723 36.7079 c -458.604 63.1285 m -458.604 63.1285 m -460.167 55.0984 462.754 47.2042 466.246 39.806 c -458.604 63.1285 m -458.604 63.1285 m -463.945 56.9878 468.745 50.3329 472.888 43.3275 c -458.604 63.1285 m -458.604 63.1285 m -466.797 60.3098 474.412 54.7015 479.534 47.7128 c -458.604 63.1285 m -458.604 63.1285 m -468.379 65.0315 480.221 61.2023 487.032 53.936 c -458.604 63.1285 m -458.604 63.1285 m -468.145 71.4268 486.382 72.1032 496.512 64.5346 c -496.512 64.5346 m -496.512 64.5346 m -494.326 61.4284 494.201 56.3542 496.23 53.1438 c -496.512 64.5346 m -496.512 64.5346 m -494.545 61.3703 494.57 56.5024 496.568 53.3582 c -496.512 64.5346 m -496.512 64.5346 m -494.761 61.322 494.924 56.6485 496.894 53.5655 c -496.512 64.5346 m -496.512 64.5346 m -494.974 61.283 495.264 56.793 497.207 53.7663 c -496.512 64.5346 m -496.512 64.5346 m -495.183 61.2532 495.591 56.936 497.51 53.9613 c -496.512 64.5346 m -496.512 64.5346 m -495.39 61.2322 495.906 57.0778 497.804 54.1511 c -496.512 64.5346 m -496.512 64.5346 m -495.593 61.2197 496.211 57.2187 498.088 54.336 c -496.512 64.5346 m -496.512 64.5346 m -495.793 61.2156 496.506 57.3588 498.365 54.5167 c -496.512 64.5346 m -496.512 64.5346 m -495.99 61.2196 496.793 57.4984 498.635 54.6935 c -496.512 64.5346 m -496.512 64.5346 m -496.183 61.2315 497.071 57.6376 498.898 54.8668 c -496.512 64.5346 m -496.512 64.5346 m -496.374 61.2512 497.341 57.7768 499.156 55.037 c -496.512 64.5346 m -496.512 64.5346 m -496.561 61.2785 497.605 57.9161 499.408 55.2044 c -496.512 64.5346 m -496.512 64.5346 m -496.745 61.3132 497.862 58.0557 499.656 55.3695 c -496.512 64.5346 m -496.512 64.5346 m -496.925 61.3552 498.114 58.1958 499.899 55.5324 c -496.512 64.5346 m -496.512 64.5346 m -497.102 61.4044 498.361 58.3365 500.139 55.6935 c -496.512 64.5346 m -496.512 64.5346 m -497.276 61.4606 498.603 58.4782 500.376 55.8531 c -496.512 64.5346 m -496.512 64.5346 m -497.446 61.5237 498.841 58.6209 500.61 56.0114 c -496.512 64.5346 m -496.512 64.5346 m -497.612 61.5935 499.076 58.765 500.842 56.1687 c -496.512 64.5346 m -496.512 64.5346 m -497.774 61.6701 499.307 58.9105 501.072 56.3254 c -496.512 64.5346 m -496.512 64.5346 m -497.932 61.7532 499.535 59.0578 501.3 56.4815 c -496.512 64.5346 m -496.512 64.5346 m -498.086 61.8428 499.76 59.207 501.527 56.6375 c -496.512 64.5346 m -496.512 64.5346 m -498.236 61.9389 499.984 59.3583 501.754 56.7935 c -496.512 64.5346 m -496.512 64.5346 m -498.382 62.0412 500.205 59.512 501.98 56.9498 c -496.512 64.5346 m -496.512 64.5346 m -498.523 62.1497 500.425 59.6683 502.206 57.1067 c -496.512 64.5346 m -496.512 64.5346 m -498.66 62.2644 500.644 59.8276 502.432 57.2643 c -496.512 64.5346 m -496.512 64.5346 m -498.792 62.3851 500.862 59.99 502.659 57.4231 c -496.512 64.5346 m -496.512 64.5346 m -498.919 62.5119 501.08 60.1558 502.888 57.5832 c -496.512 64.5346 m -496.512 64.5346 m -499.041 62.6446 501.297 60.3253 503.117 57.7449 c -496.512 64.5346 m -496.512 64.5346 m -499.158 62.7832 501.515 60.499 503.349 57.9085 c -496.512 64.5346 m -496.512 64.5346 m -499.27 62.9276 501.734 60.677 503.583 58.0744 c -496.512 64.5346 m -496.512 64.5346 m -499.377 63.0778 501.953 60.8599 503.819 58.2428 c -496.512 64.5346 m -496.512 64.5346 m -499.478 63.2339 502.174 61.0479 504.059 58.414 c -496.512 64.5346 m -496.512 64.5346 m -499.574 63.3957 502.396 61.2415 504.302 58.5885 c -496.512 64.5346 m -496.512 64.5346 m -499.663 63.5632 502.62 61.4412 504.55 58.7667 c -496.512 64.5346 m -496.512 64.5346 m -499.747 63.7365 502.847 61.6475 504.802 58.9488 c -496.512 64.5346 m -496.512 64.5346 m -499.824 63.9155 503.077 61.8609 505.059 59.1355 c -496.512 64.5346 m -496.512 64.5346 m -499.895 64.1004 503.31 62.082 505.322 59.3271 c -496.512 64.5346 m -496.512 64.5346 m -499.96 64.2911 503.547 62.3116 505.591 59.5241 c -496.512 64.5346 m -496.512 64.5346 m -500.018 64.4876 503.788 62.5503 505.868 59.7272 c -496.512 64.5346 m -496.512 64.5346 m -500.068 64.6902 504.034 62.7989 506.152 59.937 c -496.512 64.5346 m -496.512 64.5346 m -500.112 64.8989 504.286 63.0583 506.444 60.1542 c -496.512 64.5346 m -496.512 64.5346 m -500.148 65.1138 504.543 63.3295 506.747 60.3795 c -496.512 64.5346 m -496.512 64.5346 m -500.176 65.3352 504.808 63.6136 507.06 60.6138 c -496.512 64.5346 m -496.512 64.5346 m -500.197 65.5632 505.08 63.9119 507.384 60.8579 c -496.512 64.5346 m -496.512 64.5346 m -500.208 65.7981 505.36 64.2256 507.721 61.1131 c -496.512 64.5346 m -496.512 64.5346 m -500.212 66.0401 505.65 64.5564 508.073 61.3805 c -496.512 64.5346 m -496.512 64.5346 m -500.206 66.2898 505.95 64.9061 508.44 61.6614 c -496.512 64.5346 m -496.512 64.5346 m -500.19 66.5475 506.262 65.2766 508.825 61.9574 c -496.512 64.5346 m -496.512 64.5346 m -500.165 66.8137 506.587 65.6701 509.229 62.2702 c -496.512 64.5346 m -496.512 64.5346 m -500.128 67.089 506.926 66.0894 509.654 62.6019 c -496.512 64.5346 m -496.512 64.5346 m -500.081 67.3743 507.281 66.5375 510.103 62.9549 c -496.512 64.5346 m -496.512 64.5346 m -500.021 67.6703 507.653 67.0177 510.58 63.3317 c -496.512 64.5346 m -496.512 64.5346 m -499.949 67.9782 508.046 67.5343 511.087 63.7356 c -496.512 64.5346 m -496.512 64.5346 m -499.863 68.2991 508.461 68.0919 511.628 64.1704 c -496.512 64.5346 m -496.512 64.5346 m -499.762 68.6346 508.902 68.6962 512.207 64.6405 c -267.734 20.3125 m -267.734 20.3125 m -284.524 101.112 322.916 179.858 376.231 242.85 c -376.231 242.85 m -376.231 242.85 m -433.5 208.107 488.177 168.688 539.236 125.332 c -539.236 125.332 m -539.236 125.332 m -544.165 121.147 549.063 116.923 553.928 112.662 c -553.928 112.662 m -553.928 112.662 m -554.056 110.73 554.754 108.768 555.875 107.189 c -553.928 112.662 m -553.928 112.662 m -555.864 112.79 557.909 112.347 559.618 111.428 c -376.231 242.85 m -376.231 242.85 m -443.287 227.069 508.754 201.721 568.953 168.23 c -376.231 242.85 m -376.231 242.85 m -447.95 248.818 522.079 240.867 590.901 219.824 c -376.231 242.85 m -376.231 242.85 m -446.613 272.373 525.838 285.74 602.011 280.943 c -602.011 280.943 m -602.011 280.943 m -601.323 265.239 614.72 246.979 629.907 242.921 c -602.011 280.943 m -602.011 280.943 m -601.927 265.488 615.285 248.078 630.234 244.159 c -602.011 280.943 m -602.011 280.943 m -602.511 265.746 615.821 249.147 630.546 245.357 c -602.011 280.943 m -602.011 280.943 m -603.075 266.013 616.331 250.187 630.842 246.519 c -602.011 280.943 m -602.011 280.943 m -603.622 266.288 616.816 251.199 631.124 247.647 c -602.011 280.943 m -602.011 280.943 m -604.151 266.571 617.277 252.186 631.394 248.743 c -602.011 280.943 m -602.011 280.943 m -604.662 266.861 617.718 253.149 631.652 249.809 c -602.011 280.943 m -602.011 280.943 m -605.157 267.159 618.137 254.089 631.899 250.848 c -602.011 280.943 m -602.011 280.943 m -605.636 267.464 618.538 255.009 632.135 251.86 c -602.011 280.943 m -602.011 280.943 m -606.099 267.777 618.92 255.909 632.362 252.848 c -602.011 280.943 m -602.011 280.943 m -606.546 268.096 619.285 256.79 632.58 253.814 c -602.011 280.943 m -602.011 280.943 m -606.978 268.422 619.635 257.654 632.79 254.758 c -602.011 280.943 m -602.011 280.943 m -607.395 268.754 619.969 258.502 632.992 255.682 c -602.011 280.943 m -602.011 280.943 m -607.798 269.093 620.288 259.335 633.186 256.587 c -602.011 280.943 m -602.011 280.943 m -608.186 269.438 620.594 260.153 633.374 257.474 c -602.011 280.943 m -602.011 280.943 m -608.56 269.789 620.887 260.958 633.555 258.346 c -602.011 280.943 m -602.011 280.943 m -608.92 270.146 621.168 261.751 633.73 259.202 c -602.011 280.943 m -602.011 280.943 m -609.266 270.508 621.436 262.532 633.899 260.043 c -602.011 280.943 m -602.011 280.943 m -609.598 270.876 621.694 263.302 634.063 260.871 c -602.011 280.943 m -602.011 280.943 m -609.917 271.249 621.94 264.061 634.222 261.687 c -602.011 280.943 m -602.011 280.943 m -610.223 271.627 622.177 264.812 634.376 262.491 c -602.011 280.943 m -602.011 280.943 m -610.515 272.01 622.403 265.553 634.526 263.284 c -602.011 280.943 m -602.011 280.943 m -610.794 272.397 622.62 266.287 634.672 264.067 c -602.011 280.943 m -602.011 280.943 m -611.06 272.79 622.828 267.013 634.813 264.84 c -602.011 280.943 m -602.011 280.943 m -611.313 273.186 623.027 267.732 634.951 265.605 c -602.011 280.943 m -602.011 280.943 m -611.553 273.587 623.217 268.445 635.084 266.363 c -602.011 280.943 m -602.011 280.943 m -611.78 273.992 623.4 269.152 635.215 267.112 c -602.011 280.943 m -602.011 280.943 m -611.994 274.4 623.574 269.854 635.342 267.856 c -602.011 280.943 m -602.011 280.943 m -612.196 274.813 623.741 270.551 635.466 268.593 c -602.011 280.943 m -602.011 280.943 m -612.384 275.229 623.901 271.244 635.588 269.325 c -602.011 280.943 m -602.011 280.943 m -612.56 275.648 624.053 271.933 635.706 270.052 c -602.011 280.943 m -602.011 280.943 m -612.724 276.07 624.198 272.619 635.822 270.775 c -602.011 280.943 m -602.011 280.943 m -612.874 276.496 624.337 273.303 635.935 271.494 c -602.011 280.943 m -602.011 280.943 m -613.012 276.924 624.468 273.984 636.045 272.21 c -602.011 280.943 m -602.011 280.943 m -613.137 277.355 624.593 274.664 636.154 272.923 c -602.011 280.943 m -602.011 280.943 m -613.25 277.788 624.712 275.342 636.26 273.634 c -602.011 280.943 m -602.011 280.943 m -613.35 278.224 624.825 276.02 636.364 274.344 c -602.011 280.943 m -602.011 280.943 m -613.437 278.662 624.931 276.697 636.466 275.052 c -602.011 280.943 m -602.011 280.943 m -613.512 279.102 625.031 277.375 636.566 275.76 c -602.011 280.943 m -602.011 280.943 m -613.573 279.544 625.125 278.053 636.664 276.468 c -602.011 280.943 m -602.011 280.943 m -613.623 279.988 625.214 278.732 636.761 277.177 c -602.011 280.943 m -602.011 280.943 m -613.659 280.433 625.296 279.412 636.855 277.886 c -602.011 280.943 m -602.011 280.943 m -613.683 280.879 625.372 280.095 636.948 278.597 c -602.011 280.943 m -602.011 280.943 m -613.693 281.327 625.443 280.78 637.039 279.311 c -602.011 280.943 m -602.011 280.943 m -613.691 281.776 625.508 281.467 637.129 280.026 c -602.011 280.943 m -602.011 280.943 m -613.676 282.225 625.567 282.159 637.217 280.745 c -602.011 280.943 m -602.011 280.943 m -613.648 282.676 625.62 282.854 637.304 281.467 c -602.011 280.943 m -602.011 280.943 m -613.607 283.127 625.667 283.553 637.389 282.194 c -602.011 280.943 m -602.011 280.943 m -613.553 283.578 625.709 284.257 637.473 282.925 c -602.011 280.943 m -602.011 280.943 m -613.486 284.029 625.744 284.967 637.555 283.662 c -602.011 280.943 m -602.011 280.943 m -613.405 284.481 625.774 285.683 637.636 284.404 c -602.011 280.943 m -602.011 280.943 m -613.311 284.932 625.797 286.405 637.716 285.154 c -602.011 280.943 m -602.011 280.943 m -613.204 285.384 625.815 287.134 637.794 285.91 c -602.011 280.943 m -602.011 280.943 m -613.084 285.835 625.825 287.871 637.871 286.674 c -602.011 280.943 m -602.011 280.943 m -612.949 286.285 625.83 288.616 637.947 287.447 c -602.011 280.943 m -602.011 280.943 m -612.801 286.735 625.828 289.371 638.021 288.229 c -602.011 280.943 m -602.011 280.943 m -612.639 287.184 625.819 290.134 638.094 289.021 c -602.011 280.943 m -602.011 280.943 m -612.464 287.632 625.804 290.909 638.166 289.824 c -602.011 280.943 m -602.011 280.943 m -612.274 288.079 625.781 291.694 638.236 290.638 c -602.011 280.943 m -602.011 280.943 m -612.07 288.524 625.751 292.491 638.305 291.465 c -602.011 280.943 m -602.011 280.943 m -611.851 288.969 625.713 293.3 638.373 292.305 c -602.011 280.943 m -602.011 280.943 m -611.618 289.412 625.667 294.123 638.438 293.16 c -602.011 280.943 m -602.011 280.943 m -611.37 289.853 625.614 294.961 638.503 294.029 c -602.011 280.943 m -602.011 280.943 m -611.107 290.292 625.552 295.814 638.565 294.915 c -602.011 280.943 m -602.011 280.943 m -610.829 290.73 625.48 296.683 638.626 295.819 c -602.011 280.943 m -602.011 280.943 m -610.535 291.166 625.4 297.569 638.685 296.741 c -602.011 280.943 m -602.011 280.943 m -610.226 291.599 625.31 298.474 638.742 297.683 c -602.011 280.943 m -602.011 280.943 m -609.9 292.031 625.21 299.398 638.797 298.646 c -602.011 280.943 m -602.011 280.943 m -609.558 292.46 625.099 300.344 638.85 299.632 c -602.011 280.943 m -602.011 280.943 m -609.199 292.886 624.977 301.311 638.901 300.642 c -602.011 280.943 m -602.011 280.943 m -608.823 293.31 624.842 302.303 638.948 301.678 c -602.011 280.943 m -602.011 280.943 m -608.43 293.732 624.695 303.32 638.993 302.742 c -602.011 280.943 m -602.011 280.943 m -608.018 294.151 624.535 304.363 639.035 303.835 c -602.011 280.943 m -602.011 280.943 m -607.588 294.567 624.36 305.435 639.074 304.96 c -602.011 280.943 m -602.011 280.943 m -607.138 294.98 624.17 306.538 639.109 306.118 c -602.011 280.943 m -602.011 280.943 m -606.669 295.391 623.964 307.674 639.14 307.313 c -602.011 280.943 m -602.011 280.943 m -606.18 295.798 623.74 308.844 639.167 308.547 c -602.011 280.943 m -602.011 280.943 m -605.669 296.203 623.498 310.052 639.188 309.823 c -602.011 280.943 m -602.011 280.943 m -605.136 296.604 623.235 311.3 639.204 311.143 c -602.011 280.943 m -602.011 280.943 m -604.581 297.003 622.95 312.59 639.214 312.512 c -602.011 280.943 m -602.011 280.943 m -604.001 297.398 622.642 313.927 639.218 313.932 c -602.011 280.943 m -602.011 280.943 m -603.396 297.791 622.309 315.312 639.213 315.409 c -376.231 242.85 m -376.231 242.85 m -438.374 296.408 516.685 334.973 597.024 351.58 c -597.024 351.58 m -597.024 351.58 m -600.919 333.624 621.223 316.923 639.593 316.564 c -597.024 351.58 m -597.024 351.58 m -601.232 333.858 621.395 317.643 639.607 317.334 c -597.024 351.58 m -597.024 351.58 m -601.539 334.092 621.56 318.351 639.619 318.091 c -597.024 351.58 m -597.024 351.58 m -601.839 334.328 621.719 319.049 639.629 318.836 c -597.024 351.58 m -597.024 351.58 m -602.132 334.564 621.872 319.736 639.636 319.568 c -597.024 351.58 m -597.024 351.58 m -602.42 334.802 622.019 320.412 639.642 320.288 c -597.024 351.58 m -597.024 351.58 m -602.702 335.041 622.16 321.079 639.646 320.998 c -597.024 351.58 m -597.024 351.58 m -602.977 335.281 622.297 321.736 639.649 321.696 c -597.024 351.58 m -597.024 351.58 m -603.247 335.521 622.428 322.384 639.65 322.383 c -597.024 351.58 m -597.024 351.58 m -603.511 335.763 622.554 323.022 639.649 323.061 c -597.024 351.58 m -597.024 351.58 m -603.77 336.006 622.675 323.652 639.647 323.729 c -597.024 351.58 m -597.024 351.58 m -604.022 336.25 622.792 324.274 639.643 324.387 c -597.024 351.58 m -597.024 351.58 m -604.27 336.495 622.904 324.887 639.638 325.036 c -597.024 351.58 m -597.024 351.58 m -604.511 336.74 623.011 325.493 639.632 325.676 c -597.024 351.58 m -597.024 351.58 m -604.748 336.987 623.115 326.091 639.624 326.307 c -597.024 351.58 m -597.024 351.58 m -604.979 337.234 623.214 326.681 639.615 326.93 c -597.024 351.58 m -597.024 351.58 m -605.205 337.483 623.309 327.264 639.605 327.545 c -597.024 351.58 m -597.024 351.58 m -605.425 337.732 623.4 327.84 639.594 328.153 c -597.024 351.58 m -597.024 351.58 m -605.641 337.982 623.488 328.41 639.582 328.753 c -597.024 351.58 m -597.024 351.58 m -605.852 338.233 623.572 328.973 639.569 329.345 c -597.024 351.58 m -597.024 351.58 m -606.057 338.485 623.652 329.529 639.554 329.931 c -597.024 351.58 m -597.024 351.58 m -606.258 338.738 623.729 330.08 639.539 330.51 c -597.024 351.58 m -597.024 351.58 m -606.453 338.992 623.802 330.624 639.523 331.082 c -597.024 351.58 m -597.024 351.58 m -606.644 339.246 623.872 331.163 639.506 331.648 c -597.024 351.58 m -597.024 351.58 m -606.83 339.501 623.939 331.696 639.488 332.207 c -597.024 351.58 m -597.024 351.58 m -607.011 339.757 624.002 332.224 639.47 332.761 c -597.024 351.58 m -597.024 351.58 m -607.188 340.013 624.063 332.746 639.45 333.309 c -597.024 351.58 m -597.024 351.58 m -607.36 340.271 624.12 333.264 639.43 333.852 c -597.024 351.58 m -597.024 351.58 m -607.527 340.529 624.175 333.776 639.409 334.389 c -597.024 351.58 m -597.024 351.58 m -607.69 340.787 624.227 334.284 639.387 334.921 c -597.024 351.58 m -597.024 351.58 m -607.848 341.046 624.275 334.787 639.364 335.448 c -597.024 351.58 m -597.024 351.58 m -608.001 341.306 624.322 335.286 639.341 335.97 c -597.024 351.58 m -597.024 351.58 m -608.15 341.567 624.365 335.78 639.317 336.487 c -597.024 351.58 m -597.024 351.58 m -608.295 341.828 624.406 336.271 639.292 337 c -597.024 351.58 m -597.024 351.58 m -608.435 342.09 624.444 336.757 639.267 337.508 c -597.024 351.58 m -597.024 351.58 m -608.571 342.352 624.48 337.239 639.241 338.012 c -597.024 351.58 m -597.024 351.58 m -608.702 342.615 624.513 337.717 639.214 338.512 c -597.024 351.58 m -597.024 351.58 m -608.829 342.878 624.544 338.192 639.187 339.008 c -597.024 351.58 m -597.024 351.58 m -608.952 343.142 624.572 338.664 639.159 339.501 c -597.024 351.58 m -597.024 351.58 m -609.07 343.406 624.598 339.131 639.131 339.989 c -597.024 351.58 m -597.024 351.58 m -609.184 343.67 624.622 339.596 639.102 340.474 c -597.024 351.58 m -597.024 351.58 m -609.294 343.936 624.644 340.057 639.072 340.956 c -597.024 351.58 m -597.024 351.58 m -609.4 344.201 624.663 340.516 639.042 341.434 c -597.024 351.58 m -597.024 351.58 m -609.501 344.467 624.68 340.971 639.011 341.91 c -597.024 351.58 m -597.024 351.58 m -609.598 344.733 624.695 341.423 638.98 342.382 c -597.024 351.58 m -597.024 351.58 m -609.691 344.999 624.707 341.873 638.948 342.851 c -597.024 351.58 m -597.024 351.58 m -609.78 345.266 624.718 342.32 638.916 343.317 c -597.024 351.58 m -597.024 351.58 m -609.865 345.533 624.726 342.764 638.883 343.781 c -597.024 351.58 m -597.024 351.58 m -609.945 345.801 624.733 343.206 638.849 344.242 c -597.024 351.58 m -597.024 351.58 m -610.022 346.068 624.737 343.646 638.815 344.701 c -597.024 351.58 m -597.024 351.58 m -610.094 346.336 624.739 344.083 638.781 345.157 c -597.024 351.58 m -597.024 351.58 m -610.162 346.604 624.739 344.519 638.746 345.611 c -597.024 351.58 m -597.024 351.58 m -610.227 346.872 624.738 344.952 638.71 346.062 c -597.024 351.58 m -597.024 351.58 m -610.287 347.14 624.734 345.383 638.674 346.512 c -597.024 351.58 m -597.024 351.58 m -610.343 347.409 624.728 345.812 638.637 346.96 c -597.024 351.58 m -597.024 351.58 m -610.395 347.677 624.721 346.239 638.6 347.406 c -597.024 351.58 m -597.024 351.58 m -610.443 347.946 624.711 346.665 638.563 347.85 c -597.024 351.58 m -597.024 351.58 m -610.487 348.214 624.7 347.088 638.524 348.292 c -597.024 351.58 m -597.024 351.58 m -610.527 348.483 624.687 347.511 638.486 348.732 c -597.024 351.58 m -597.024 351.58 m -610.563 348.752 624.671 347.931 638.446 349.172 c -597.024 351.58 m -597.024 351.58 m -610.595 349.02 624.654 348.351 638.407 349.609 c -597.024 351.58 m -597.024 351.58 m -610.623 349.289 624.636 348.769 638.366 350.046 c -597.024 351.58 m -597.024 351.58 m -610.647 349.557 624.615 349.186 638.326 350.481 c -597.024 351.58 m -597.024 351.58 m -610.667 349.826 624.592 349.601 638.284 350.915 c -597.024 351.58 m -597.024 351.58 m -610.683 350.094 624.568 350.016 638.243 351.348 c -597.024 351.58 m -597.024 351.58 m -610.696 350.362 624.541 350.429 638.2 351.78 c -597.024 351.58 m -597.024 351.58 m -610.704 350.63 624.513 350.841 638.157 352.211 c -597.024 351.58 m -597.024 351.58 m -610.708 350.897 624.483 351.253 638.114 352.641 c -597.024 351.58 m -597.024 351.58 m -610.709 351.165 624.451 351.664 638.07 353.07 c -597.024 351.58 m -597.024 351.58 m -610.705 351.432 624.418 352.074 638.025 353.499 c -597.024 351.58 m -597.024 351.58 m -610.698 351.699 624.382 352.483 637.98 353.927 c -597.024 351.58 m -597.024 351.58 m -610.687 351.966 624.345 352.892 637.934 354.355 c -597.024 351.58 m -597.024 351.58 m -610.672 352.232 624.306 353.3 637.888 354.782 c -597.024 351.58 m -597.024 351.58 m -610.653 352.498 624.265 353.708 637.841 355.209 c -597.024 351.58 m -597.024 351.58 m -610.63 352.763 624.222 354.115 637.794 355.635 c -597.024 351.58 m -597.024 351.58 m -610.603 353.028 624.177 354.522 637.746 356.062 c -597.024 351.58 m -597.024 351.58 m -610.572 353.293 624.13 354.929 637.697 356.488 c -597.024 351.58 m -597.024 351.58 m -610.538 353.557 624.082 355.336 637.648 356.915 c -597.024 351.58 m -597.024 351.58 m -610.499 353.821 624.031 355.742 637.598 357.341 c -597.024 351.58 m -597.024 351.58 m -610.457 354.084 623.979 356.149 637.547 357.767 c -597.024 351.58 m -597.024 351.58 m -610.411 354.347 623.925 356.556 637.496 358.194 c -597.024 351.58 m -597.024 351.58 m -610.361 354.609 623.869 356.962 637.444 358.621 c -597.024 351.58 m -597.024 351.58 m -610.307 354.871 623.811 357.369 637.391 359.049 c -597.024 351.58 m -597.024 351.58 m -610.249 355.132 623.751 357.776 637.338 359.477 c -597.024 351.58 m -597.024 351.58 m -610.187 355.392 623.689 358.184 637.284 359.905 c -597.024 351.58 m -597.024 351.58 m -610.122 355.652 623.625 358.592 637.23 360.334 c -597.024 351.58 m -597.024 351.58 m -610.052 355.91 623.559 359 637.174 360.764 c -597.024 351.58 m -597.024 351.58 m -609.979 356.169 623.491 359.409 637.118 361.194 c -597.024 351.58 m -597.024 351.58 m -609.902 356.426 623.421 359.818 637.061 361.626 c -597.024 351.58 m -597.024 351.58 m -609.821 356.683 623.349 360.229 637.004 362.058 c -597.024 351.58 m -597.024 351.58 m -609.736 356.939 623.275 360.64 636.945 362.492 c -597.024 351.58 m -597.024 351.58 m -609.647 357.194 623.199 361.051 636.886 362.926 c -597.024 351.58 m -597.024 351.58 m -609.555 357.448 623.121 361.464 636.826 363.362 c -597.024 351.58 m -597.024 351.58 m -609.458 357.702 623.04 361.878 636.765 363.799 c -597.024 351.58 m -597.024 351.58 m -609.358 357.954 622.957 362.292 636.704 364.237 c -597.024 351.58 m -597.024 351.58 m -609.253 358.206 622.872 362.708 636.641 364.677 c -597.024 351.58 m -597.024 351.58 m -609.145 358.456 622.785 363.125 636.577 365.119 c -597.024 351.58 m -597.024 351.58 m -609.033 358.706 622.696 363.544 636.513 365.562 c -597.024 351.58 m -597.024 351.58 m -608.917 358.954 622.604 363.963 636.448 366.007 c -597.024 351.58 m -597.024 351.58 m -608.797 359.202 622.51 364.385 636.381 366.454 c -597.024 351.58 m -597.024 351.58 m -608.673 359.449 622.414 364.807 636.314 366.902 c -597.024 351.58 m -597.024 351.58 m -608.545 359.694 622.315 365.232 636.246 367.353 c -597.024 351.58 m -597.024 351.58 m -608.413 359.938 622.214 365.658 636.177 367.806 c -597.024 351.58 m -597.024 351.58 m -608.278 360.182 622.11 366.086 636.106 368.261 c -597.024 351.58 m -597.024 351.58 m -608.138 360.424 622.004 366.515 636.035 368.718 c -597.024 351.58 m -597.024 351.58 m -607.994 360.665 621.895 366.947 635.962 369.178 c -597.024 351.58 m -597.024 351.58 m -607.847 360.904 621.783 367.381 635.889 369.64 c -597.024 351.58 m -597.024 351.58 m -607.695 361.143 621.669 367.816 635.814 370.105 c -597.024 351.58 m -597.024 351.58 m -607.539 361.38 621.552 368.255 635.738 370.573 c -597.024 351.58 m -597.024 351.58 m -607.38 361.616 621.432 368.695 635.66 371.044 c -597.024 351.58 m -597.024 351.58 m -607.216 361.85 621.31 369.138 635.582 371.518 c -597.024 351.58 m -597.024 351.58 m -607.048 362.083 621.184 369.583 635.502 371.994 c -597.024 351.58 m -597.024 351.58 m -606.877 362.315 621.056 370.031 635.42 372.474 c -597.024 351.58 m -597.024 351.58 m -606.701 362.546 620.924 370.482 635.338 372.958 c -597.024 351.58 m -597.024 351.58 m -606.521 362.775 620.79 370.935 635.254 373.445 c -597.024 351.58 m -597.024 351.58 m -606.337 363.002 620.652 371.392 635.168 373.935 c -597.024 351.58 m -597.024 351.58 m -606.149 363.228 620.511 371.851 635.081 374.429 c -597.024 351.58 m -597.024 351.58 m -605.956 363.453 620.367 372.314 634.993 374.927 c -597.024 351.58 m -597.024 351.58 m -605.76 363.676 620.219 372.78 634.903 375.429 c -597.024 351.58 m -597.024 351.58 m -605.559 363.897 620.068 373.249 634.811 375.936 c -597.024 351.58 m -597.024 351.58 m -605.354 364.117 619.914 373.722 634.717 376.446 c -597.024 351.58 m -597.024 351.58 m -605.145 364.335 619.756 374.199 634.622 376.961 c -597.024 351.58 m -597.024 351.58 m -604.931 364.552 619.594 374.679 634.525 377.481 c -597.024 351.58 m -597.024 351.58 m -604.714 364.767 619.428 375.163 634.426 378.005 c -597.024 351.58 m -597.024 351.58 m -604.491 364.98 619.258 375.651 634.325 378.535 c -597.024 351.58 m -597.024 351.58 m -604.265 365.192 619.085 376.144 634.223 379.069 c -597.024 351.58 m -597.024 351.58 m -604.034 365.401 618.907 376.64 634.118 379.609 c -597.024 351.58 m -597.024 351.58 m -603.799 365.609 618.725 377.141 634.011 380.154 c -597.024 351.58 m -597.024 351.58 m -603.559 365.816 618.539 377.647 633.902 380.705 c -597.024 351.58 m -597.024 351.58 m -603.314 366.02 618.349 378.157 633.79 381.262 c -597.024 351.58 m -597.024 351.58 m -603.066 366.222 618.153 378.673 633.677 381.824 c -597.024 351.58 m -597.024 351.58 m -602.812 366.423 617.954 379.193 633.56 382.393 c -597.024 351.58 m -597.024 351.58 m -602.554 366.622 617.749 379.719 633.442 382.969 c -597.024 351.58 m -597.024 351.58 m -602.291 366.818 617.539 380.25 633.321 383.551 c -597.024 351.58 m -597.024 351.58 m -602.023 367.013 617.324 380.786 633.197 384.14 c -597.024 351.58 m -597.024 351.58 m -601.751 367.206 617.104 381.329 633.07 384.736 c -597.024 351.58 m -597.024 351.58 m -601.474 367.397 616.879 381.877 632.941 385.34 c -597.024 351.58 m -597.024 351.58 m -601.192 367.585 616.648 382.431 632.808 385.951 c -597.024 351.58 m -597.024 351.58 m -600.904 367.772 616.411 382.992 632.673 386.57 c -597.024 351.58 m -597.024 351.58 m -600.612 367.956 616.169 383.56 632.534 387.197 c -597.024 351.58 m -597.024 351.58 m -600.315 368.138 615.92 384.134 632.392 387.833 c -597.024 351.58 m -597.024 351.58 m -600.013 368.319 615.665 384.715 632.247 388.477 c -597.024 351.58 m -597.024 351.58 m -599.705 368.496 615.403 385.303 632.098 389.131 c -597.024 351.58 m -597.024 351.58 m -599.392 368.672 615.135 385.899 631.945 389.793 c -597.024 351.58 m -597.024 351.58 m -599.073 368.845 614.859 386.503 631.788 390.466 c -597.024 351.58 m -597.024 351.58 m -598.749 369.016 614.577 387.115 631.628 391.148 c -597.024 351.58 m -597.024 351.58 m -598.42 369.185 614.287 387.734 631.463 391.841 c -597.024 351.58 m -597.024 351.58 m -598.084 369.351 613.989 388.363 631.294 392.544 c -597.024 351.58 m -597.024 351.58 m -597.743 369.515 613.683 389 631.12 393.259 c -597.024 351.58 m -597.024 351.58 m -597.396 369.676 613.369 389.646 630.942 393.985 c -597.024 351.58 m -597.024 351.58 m -597.043 369.835 613.047 390.302 630.759 394.723 c -597.024 351.58 m -597.024 351.58 m -596.684 369.992 612.715 390.967 630.571 395.473 c -597.024 351.58 m -597.024 351.58 m -596.319 370.145 612.375 391.643 630.377 396.236 c -597.024 351.58 m -597.024 351.58 m -595.947 370.297 612.024 392.329 630.178 397.013 c -597.024 351.58 m -597.024 351.58 m -595.569 370.445 611.664 393.026 629.973 397.803 c -597.024 351.58 m -597.024 351.58 m -595.184 370.591 611.294 393.733 629.762 398.607 c -597.024 351.58 m -597.024 351.58 m -594.792 370.734 610.913 394.453 629.544 399.426 c -597.024 351.58 m -597.024 351.58 m -594.393 370.874 610.52 395.184 629.32 400.261 c -597.024 351.58 m -597.024 351.58 m -593.987 371.012 610.116 395.928 629.089 401.112 c -597.024 351.58 m -597.024 351.58 m -593.573 371.147 609.7 396.684 628.851 401.979 c -597.024 351.58 m -597.024 351.58 m -593.152 371.279 609.271 397.454 628.605 402.863 c -376.231 242.85 m -376.231 242.85 m -422.421 318.989 490.461 385.025 567.947 428.919 c -567.947 428.919 m -567.947 428.919 m -578.173 434.712 588.599 440.167 599.188 445.267 c -376.231 242.85 m -376.231 242.85 m -398.441 337.222 443.601 428.631 505.057 503.613 c -505.057 503.613 m -505.057 503.613 m -523.938 494.207 549.62 494.428 568.336 504.157 c -505.057 503.613 m -505.057 503.613 m -523.79 503.362 543.407 509.326 558.83 519.96 c -505.057 503.613 m -505.057 503.613 m -521.009 511.033 536.081 520.723 549.455 532.154 c -505.057 503.613 m -505.057 503.613 m -516.065 517.043 527.625 530.038 539.682 542.534 c -539.682 542.534 m -539.682 542.534 m -542.021 541.122 545.616 541.219 547.876 542.755 c -539.682 542.534 m -539.682 542.534 m -542.054 542.31 544.67 543.09 546.531 544.578 c -539.682 542.534 m -539.682 542.534 m -541.752 543.301 543.709 544.488 545.344 545.972 c -539.682 542.534 m -539.682 542.534 m -541.179 544.086 542.684 545.63 544.196 547.167 c -539.682 542.534 m -539.682 542.534 m -540.375 544.636 541.519 546.635 542.98 548.298 c -539.682 542.534 m -539.682 542.534 m -539.371 544.909 540.091 547.576 541.556 549.472 c -539.682 542.534 m -539.682 542.534 m -538.173 544.842 538.174 548.498 539.684 550.805 c -505.057 503.613 m -505.057 503.613 m -509.295 521.098 517.543 538.02 528.705 552.129 c -505.057 503.613 m -505.057 503.613 m -500.946 522.809 504.832 544.971 515.231 561.622 c -515.231 561.622 m -515.231 561.622 m -518.336 560.674 522.285 561.47 524.78 563.548 c -515.231 561.622 m -515.231 561.622 m -518.014 562.266 520.706 563.767 522.716 565.798 c -515.231 561.622 m -515.231 561.622 m -517.213 563.472 519.087 565.444 520.834 567.517 c -515.231 561.622 m -515.231 561.622 m -516.035 564.256 517.289 566.789 518.896 569.026 c -515.231 561.622 m -515.231 561.622 m -514.555 564.546 515.086 567.938 516.622 570.516 c -515.231 561.622 m -515.231 561.622 m -512.807 564.221 512.041 568.909 513.513 572.143 c -505.057 503.613 m -505.057 503.613 m -491.105 521.597 487.578 550.594 496.811 571.399 c -376.231 242.85 m -376.231 242.85 m -367.558 347.083 376.659 454.227 402.788 555.503 c -376.231 242.85 m -376.231 242.85 m -333.674 344.305 298.937 449.401 272.65 556.234 c -272.65 556.234 m -272.65 556.234 m -307.505 565.014 339.378 602.929 342.038 638.774 c -272.65 556.234 m -272.65 556.234 m -307.232 565.352 338.574 603.168 341.116 638.841 c -272.65 556.234 m -272.65 556.234 m -306.959 565.686 337.776 603.401 340.202 638.905 c -272.65 556.234 m -272.65 556.234 m -306.685 566.015 336.985 603.628 339.297 638.965 c -272.65 556.234 m -272.65 556.234 m -306.41 566.34 336.201 603.851 338.4 639.023 c -272.65 556.234 m -272.65 556.234 m -306.135 566.662 335.423 604.068 337.513 639.077 c -272.65 556.234 m -272.65 556.234 m -305.86 566.979 334.651 604.279 336.633 639.128 c -272.65 556.234 m -272.65 556.234 m -305.584 567.292 333.885 604.486 335.762 639.176 c -272.65 556.234 m -272.65 556.234 m -305.308 567.601 333.126 604.688 334.898 639.222 c -272.65 556.234 m -272.65 556.234 m -305.031 567.907 332.372 604.884 334.042 639.265 c -272.65 556.234 m -272.65 556.234 m -304.754 568.208 331.624 605.076 333.194 639.305 c -272.65 556.234 m -272.65 556.234 m -304.476 568.506 330.883 605.264 332.354 639.342 c -272.65 556.234 m -272.65 556.234 m -304.198 568.8 330.146 605.446 331.521 639.377 c -272.65 556.234 m -272.65 556.234 m -303.919 569.09 329.416 605.625 330.695 639.409 c -272.65 556.234 m -272.65 556.234 m -303.64 569.377 328.69 605.798 329.877 639.439 c -272.65 556.234 m -272.65 556.234 m -303.361 569.659 327.971 605.968 329.065 639.467 c -272.65 556.234 m -272.65 556.234 m -303.081 569.938 327.256 606.133 328.261 639.492 c -272.65 556.234 m -272.65 556.234 m -302.8 570.214 326.547 606.294 327.463 639.515 c -272.65 556.234 m -272.65 556.234 m -302.519 570.486 325.843 606.451 326.671 639.536 c -272.65 556.234 m -272.65 556.234 m -302.238 570.754 325.144 606.604 325.886 639.555 c -272.65 556.234 m -272.65 556.234 m -301.956 571.019 324.45 606.753 325.108 639.571 c -272.65 556.234 m -272.65 556.234 m -301.674 571.28 323.761 606.899 324.336 639.586 c -272.65 556.234 m -272.65 556.234 m -301.391 571.538 323.077 607.04 323.57 639.598 c -272.65 556.234 m -272.65 556.234 m -301.108 571.792 322.397 607.178 322.81 639.609 c -272.65 556.234 m -272.65 556.234 m -300.825 572.043 321.722 607.312 322.055 639.618 c -272.65 556.234 m -272.65 556.234 m -300.541 572.291 321.052 607.443 321.307 639.624 c -272.65 556.234 m -272.65 556.234 m -300.257 572.535 320.386 607.57 320.565 639.629 c -272.65 556.234 m -272.65 556.234 m -299.972 572.775 319.725 607.694 319.828 639.633 c -272.65 556.234 m -272.65 556.234 m -299.687 573.013 319.068 607.814 319.096 639.634 c -272.65 556.234 m -272.65 556.234 m -299.402 573.247 318.415 607.931 318.37 639.634 c -272.65 556.234 m -272.65 556.234 m -299.116 573.478 317.767 608.044 317.649 639.632 c -272.65 556.234 m -272.65 556.234 m -298.83 573.706 317.123 608.155 316.934 639.629 c -272.65 556.234 m -272.65 556.234 m -298.543 573.93 316.483 608.262 316.223 639.624 c -272.65 556.234 m -272.65 556.234 m -298.256 574.151 315.847 608.366 315.518 639.617 c -272.65 556.234 m -272.65 556.234 m -297.969 574.369 315.214 608.467 314.817 639.609 c -272.65 556.234 m -272.65 556.234 m -297.681 574.584 314.586 608.566 314.122 639.599 c -272.65 556.234 m -272.65 556.234 m -297.393 574.796 313.962 608.661 313.431 639.588 c -272.65 556.234 m -272.65 556.234 m -297.105 575.004 313.341 608.753 312.744 639.575 c -272.65 556.234 m -272.65 556.234 m -296.817 575.21 312.724 608.843 312.063 639.562 c -272.65 556.234 m -272.65 556.234 m -296.528 575.412 312.111 608.929 311.386 639.546 c -272.65 556.234 m -272.65 556.234 m -296.238 575.611 311.502 609.013 310.713 639.53 c -272.65 556.234 m -272.65 556.234 m -295.949 575.807 310.896 609.094 310.045 639.512 c -272.65 556.234 m -272.65 556.234 m -295.659 576.001 310.293 609.173 309.381 639.492 c -272.65 556.234 m -272.65 556.234 m -295.369 576.191 309.694 609.248 308.721 639.472 c -272.65 556.234 m -272.65 556.234 m -295.078 576.378 309.098 609.321 308.065 639.45 c -272.65 556.234 m -272.65 556.234 m -294.787 576.562 308.506 609.392 307.413 639.427 c -272.65 556.234 m -272.65 556.234 m -294.496 576.743 307.917 609.46 306.766 639.403 c -272.65 556.234 m -272.65 556.234 m -294.205 576.921 307.331 609.526 306.122 639.377 c -272.65 556.234 m -272.65 556.234 m -293.913 577.096 306.748 609.589 305.482 639.351 c -272.65 556.234 m -272.65 556.234 m -293.621 577.269 306.168 609.65 304.846 639.323 c -272.65 556.234 m -272.65 556.234 m -293.329 577.438 305.592 609.708 304.213 639.294 c -272.65 556.234 m -272.65 556.234 m -293.037 577.605 305.018 609.764 303.584 639.264 c -272.65 556.234 m -272.65 556.234 m -292.744 577.768 304.448 609.817 302.959 639.233 c -272.65 556.234 m -272.65 556.234 m -292.451 577.929 303.88 609.869 302.337 639.201 c -272.65 556.234 m -272.65 556.234 m -292.158 578.087 303.315 609.918 301.718 639.168 c -272.65 556.234 m -272.65 556.234 m -291.865 578.242 302.753 609.965 301.103 639.134 c -272.65 556.234 m -272.65 556.234 m -291.571 578.394 302.194 610.009 300.492 639.099 c -272.65 556.234 m -272.65 556.234 m -291.278 578.543 301.637 610.052 299.883 639.062 c -272.65 556.234 m -272.65 556.234 m -290.984 578.69 301.084 610.092 299.278 639.025 c -272.65 556.234 m -272.65 556.234 m -290.689 578.833 300.532 610.13 298.676 638.987 c -272.65 556.234 m -272.65 556.234 m -290.395 578.974 299.984 610.166 298.077 638.948 c -272.65 556.234 m -272.65 556.234 m -290.101 579.112 299.438 610.2 297.481 638.908 c -272.65 556.234 m -272.65 556.234 m -289.806 579.248 298.894 610.232 296.888 638.867 c -272.65 556.234 m -272.65 556.234 m -289.511 579.38 298.353 610.262 296.298 638.825 c -272.65 556.234 m -272.65 556.234 m -289.216 579.51 297.815 610.29 295.71 638.782 c -272.65 556.234 m -272.65 556.234 m -288.921 579.637 297.278 610.316 295.126 638.738 c -272.65 556.234 m -272.65 556.234 m -288.626 579.762 296.744 610.34 294.544 638.694 c -272.65 556.234 m -272.65 556.234 m -288.33 579.883 296.213 610.362 293.965 638.648 c -272.65 556.234 m -272.65 556.234 m -288.035 580.002 295.684 610.382 293.389 638.602 c -272.65 556.234 m -272.65 556.234 m -287.739 580.119 295.156 610.4 292.815 638.555 c -272.65 556.234 m -272.65 556.234 m -287.443 580.232 294.632 610.417 292.244 638.507 c -272.65 556.234 m -272.65 556.234 m -287.147 580.343 294.109 610.431 291.675 638.458 c -272.65 556.234 m -272.65 556.234 m -286.851 580.451 293.588 610.444 291.109 638.408 c -272.65 556.234 m -272.65 556.234 m -286.555 580.557 293.07 610.455 290.545 638.358 c -272.65 556.234 m -272.65 556.234 m -286.259 580.66 292.553 610.464 289.983 638.306 c -272.65 556.234 m -272.65 556.234 m -285.962 580.76 292.039 610.471 289.424 638.254 c -272.65 556.234 m -272.65 556.234 m -285.666 580.858 291.526 610.476 288.867 638.201 c -272.65 556.234 m -272.65 556.234 m -285.37 580.953 291.016 610.48 288.313 638.148 c -272.65 556.234 m -272.65 556.234 m -285.073 581.045 290.507 610.482 287.76 638.093 c -272.65 556.234 m -272.65 556.234 m -284.777 581.135 290 610.482 287.21 638.038 c -272.65 556.234 m -272.65 556.234 m -284.48 581.222 289.495 610.481 286.661 637.982 c -272.65 556.234 m -272.65 556.234 m -284.184 581.306 288.992 610.478 286.115 637.925 c -272.65 556.234 m -272.65 556.234 m -283.887 581.388 288.49 610.473 285.571 637.868 c -272.65 556.234 m -272.65 556.234 m -283.59 581.467 287.991 610.466 285.029 637.809 c -272.65 556.234 m -272.65 556.234 m -283.294 581.544 287.493 610.458 284.488 637.75 c -272.65 556.234 m -272.65 556.234 m -282.997 581.618 286.997 610.448 283.95 637.691 c -272.65 556.234 m -272.65 556.234 m -282.701 581.69 286.502 610.437 283.413 637.63 c -272.65 556.234 m -272.65 556.234 m -282.404 581.759 286.009 610.424 282.879 637.569 c -272.65 556.234 m -272.65 556.234 m -282.107 581.825 285.517 610.409 282.346 637.507 c -272.65 556.234 m -272.65 556.234 m -281.811 581.889 285.027 610.393 281.814 637.444 c -272.65 556.234 m -272.65 556.234 m -281.515 581.951 284.539 610.375 281.285 637.381 c -272.65 556.234 m -272.65 556.234 m -281.218 582.01 284.052 610.355 280.757 637.317 c -272.65 556.234 m -272.65 556.234 m -280.922 582.066 283.567 610.334 280.231 637.252 c -272.65 556.234 m -272.65 556.234 m -280.625 582.12 283.083 610.311 279.706 637.187 c -272.65 556.234 m -272.65 556.234 m -280.329 582.171 282.6 610.287 279.183 637.121 c -272.65 556.234 m -272.65 556.234 m -280.033 582.22 282.119 610.262 278.661 637.054 c -272.65 556.234 m -272.65 556.234 m -279.737 582.266 281.639 610.234 278.141 636.986 c -272.65 556.234 m -272.65 556.234 m -279.441 582.31 281.16 610.205 277.622 636.918 c -272.65 556.234 m -272.65 556.234 m -279.145 582.351 280.683 610.175 277.105 636.849 c -272.65 556.234 m -272.65 556.234 m -278.85 582.39 280.207 610.143 276.589 636.779 c -272.65 556.234 m -272.65 556.234 m -278.554 582.426 279.732 610.11 276.074 636.709 c -272.65 556.234 m -272.65 556.234 m -278.259 582.46 279.258 610.075 275.561 636.638 c -272.65 556.234 m -272.65 556.234 m -277.963 582.491 278.786 610.039 275.048 636.566 c -272.65 556.234 m -272.65 556.234 m -277.668 582.52 278.315 610.001 274.538 636.494 c -272.65 556.234 m -272.65 556.234 m -277.373 582.546 277.844 609.962 274.028 636.421 c -272.65 556.234 m -272.65 556.234 m -277.079 582.57 277.375 609.921 273.519 636.347 c -272.65 556.234 m -272.65 556.234 m -276.784 582.591 276.907 609.878 273.012 636.272 c -272.65 556.234 m -272.65 556.234 m -276.489 582.61 276.44 609.835 272.506 636.197 c -272.65 556.234 m -272.65 556.234 m -276.195 582.627 275.974 609.79 272.001 636.121 c -272.65 556.234 m -272.65 556.234 m -275.901 582.641 275.509 609.743 271.496 636.045 c -272.65 556.234 m -272.65 556.234 m -275.607 582.653 275.045 609.695 270.993 635.968 c -272.65 556.234 m -272.65 556.234 m -275.314 582.662 274.582 609.645 270.491 635.89 c -272.65 556.234 m -272.65 556.234 m -275.02 582.668 274.12 609.594 269.99 635.811 c -272.65 556.234 m -272.65 556.234 m -274.727 582.673 273.659 609.542 269.489 635.732 c -272.65 556.234 m -272.65 556.234 m -274.434 582.675 273.199 609.488 268.99 635.652 c -272.65 556.234 m -272.65 556.234 m -274.142 582.674 272.739 609.432 268.491 635.571 c -272.65 556.234 m -272.65 556.234 m -273.85 582.671 272.28 609.375 267.993 635.49 c -272.65 556.234 m -272.65 556.234 m -273.557 582.666 271.823 609.317 267.496 635.408 c -272.65 556.234 m -272.65 556.234 m -273.266 582.658 271.365 609.257 267 635.325 c -272.65 556.234 m -272.65 556.234 m -272.974 582.648 270.909 609.196 266.504 635.242 c -272.65 556.234 m -272.65 556.234 m -272.683 582.635 270.453 609.134 266.01 635.158 c -272.65 556.234 m -272.65 556.234 m -272.392 582.62 269.998 609.07 265.515 635.073 c -272.65 556.234 m -272.65 556.234 m -272.102 582.602 269.544 609.004 265.022 634.988 c -272.65 556.234 m -272.65 556.234 m -271.811 582.582 269.091 608.937 264.529 634.901 c -272.65 556.234 m -272.65 556.234 m -271.521 582.56 268.638 608.869 264.037 634.815 c -272.65 556.234 m -272.65 556.234 m -271.232 582.536 268.185 608.799 263.545 634.727 c -272.65 556.234 m -272.65 556.234 m -270.943 582.508 267.733 608.728 263.053 634.639 c -272.65 556.234 m -272.65 556.234 m -270.654 582.479 267.282 608.655 262.563 634.55 c -272.65 556.234 m -272.65 556.234 m -270.365 582.447 266.832 608.581 262.072 634.46 c -272.65 556.234 m -272.65 556.234 m -270.077 582.413 266.381 608.506 261.582 634.369 c -272.65 556.234 m -272.65 556.234 m -269.79 582.376 265.932 608.429 261.093 634.278 c -272.65 556.234 m -272.65 556.234 m -269.502 582.337 265.482 608.35 260.604 634.186 c -272.65 556.234 m -272.65 556.234 m -269.215 582.296 265.034 608.27 260.115 634.093 c -272.65 556.234 m -272.65 556.234 m -268.929 582.252 264.585 608.189 259.627 634 c -272.65 556.234 m -272.65 556.234 m -268.643 582.206 264.137 608.106 259.139 633.906 c -272.65 556.234 m -272.65 556.234 m -268.357 582.158 263.69 608.022 258.651 633.811 c -272.65 556.234 m -272.65 556.234 m -268.072 582.107 263.243 607.936 258.163 633.715 c -272.65 556.234 m -272.65 556.234 m -267.788 582.053 262.796 607.849 257.676 633.619 c -272.65 556.234 m -272.65 556.234 m -267.503 581.998 262.349 607.76 257.188 633.521 c -272.65 556.234 m -272.65 556.234 m -267.22 581.94 261.903 607.67 256.701 633.424 c -272.65 556.234 m -272.65 556.234 m -266.936 581.88 261.457 607.579 256.214 633.325 c -272.65 556.234 m -272.65 556.234 m -266.654 581.817 261.012 607.486 255.728 633.225 c -272.65 556.234 m -272.65 556.234 m -266.371 581.752 260.566 607.391 255.241 633.125 c -272.65 556.234 m -272.65 556.234 m -266.089 581.684 260.121 607.295 254.754 633.024 c -272.65 556.234 m -272.65 556.234 m -265.808 581.615 259.676 607.197 254.267 632.922 c -272.65 556.234 m -272.65 556.234 m -265.528 581.543 259.231 607.098 253.781 632.819 c -272.65 556.234 m -272.65 556.234 m -265.247 581.468 258.786 606.998 253.294 632.716 c -272.65 556.234 m -272.65 556.234 m -264.968 581.391 258.342 606.896 252.807 632.611 c -272.65 556.234 m -272.65 556.234 m -264.689 581.312 257.897 606.792 252.32 632.506 c -272.65 556.234 m -272.65 556.234 m -264.41 581.231 257.453 606.687 251.833 632.4 c -272.65 556.234 m -272.65 556.234 m -264.132 581.147 257.008 606.58 251.346 632.293 c -272.65 556.234 m -272.65 556.234 m -263.855 581.061 256.564 606.472 250.859 632.185 c -272.65 556.234 m -272.65 556.234 m -263.578 580.972 256.12 606.362 250.371 632.077 c -272.65 556.234 m -272.65 556.234 m -263.302 580.881 255.675 606.251 249.883 631.967 c -272.65 556.234 m -272.65 556.234 m -263.026 580.788 255.231 606.138 249.395 631.857 c -272.65 556.234 m -272.65 556.234 m -262.751 580.692 254.787 606.024 248.907 631.746 c -272.65 556.234 m -272.65 556.234 m -262.477 580.594 254.342 605.908 248.418 631.634 c -272.65 556.234 m -272.65 556.234 m -262.203 580.494 253.897 605.79 247.929 631.521 c -272.65 556.234 m -272.65 556.234 m -261.93 580.392 253.453 605.671 247.44 631.407 c -272.65 556.234 m -272.65 556.234 m -261.658 580.287 253.008 605.55 246.95 631.292 c -272.65 556.234 m -272.65 556.234 m -261.386 580.179 252.563 605.427 246.46 631.176 c -272.65 556.234 m -272.65 556.234 m -261.115 580.07 252.118 605.303 245.969 631.059 c -272.65 556.234 m -272.65 556.234 m -260.845 579.958 251.673 605.177 245.478 630.942 c -272.65 556.234 m -272.65 556.234 m -260.576 579.843 251.227 605.05 244.987 630.823 c -272.65 556.234 m -272.65 556.234 m -260.307 579.727 250.781 604.921 244.494 630.704 c -272.65 556.234 m -272.65 556.234 m -260.038 579.608 250.335 604.79 244.002 630.583 c -272.65 556.234 m -272.65 556.234 m -259.771 579.486 249.889 604.658 243.508 630.461 c -272.65 556.234 m -272.65 556.234 m -259.504 579.363 249.442 604.523 243.014 630.339 c -272.65 556.234 m -272.65 556.234 m -259.238 579.237 248.995 604.387 242.52 630.215 c -272.65 556.234 m -272.65 556.234 m -258.973 579.108 248.548 604.25 242.024 630.091 c -272.65 556.234 m -272.65 556.234 m -258.709 578.978 248.1 604.11 241.528 629.965 c -272.65 556.234 m -272.65 556.234 m -258.445 578.845 247.652 603.969 241.031 629.838 c -272.65 556.234 m -272.65 556.234 m -258.182 578.709 247.203 603.826 240.534 629.71 c -272.65 556.234 m -272.65 556.234 m -257.92 578.572 246.754 603.682 240.035 629.582 c -272.65 556.234 m -272.65 556.234 m -257.658 578.432 246.305 603.535 239.536 629.452 c -272.65 556.234 m -272.65 556.234 m -257.398 578.289 245.855 603.387 239.036 629.321 c -272.65 556.234 m -272.65 556.234 m -257.138 578.144 245.405 603.237 238.535 629.188 c -272.65 556.234 m -272.65 556.234 m -256.879 577.997 244.954 603.085 238.033 629.055 c -272.65 556.234 m -272.65 556.234 m -256.621 577.848 244.502 602.931 237.53 628.921 c -272.65 556.234 m -272.65 556.234 m -256.364 577.696 244.05 602.775 237.026 628.785 c -272.65 556.234 m -272.65 556.234 m -256.108 577.542 243.597 602.617 236.522 628.648 c -272.65 556.234 m -272.65 556.234 m -255.852 577.386 243.144 602.458 236.016 628.51 c -272.65 556.234 m -272.65 556.234 m -255.598 577.227 242.69 602.296 235.509 628.371 c -272.65 556.234 m -272.65 556.234 m -255.344 577.066 242.236 602.133 235 628.231 c -272.65 556.234 m -272.65 556.234 m -255.091 576.902 241.78 601.967 234.491 628.089 c -272.65 556.234 m -272.65 556.234 m -254.84 576.736 241.324 601.8 233.981 627.946 c -272.65 556.234 m -272.65 556.234 m -254.589 576.568 240.868 601.631 233.469 627.802 c -272.65 556.234 m -272.65 556.234 m -254.339 576.397 240.41 601.459 232.956 627.656 c -272.65 556.234 m -272.65 556.234 m -254.09 576.224 239.952 601.286 232.442 627.51 c -272.65 556.234 m -272.65 556.234 m -253.841 576.049 239.493 601.11 231.926 627.362 c -272.65 556.234 m -272.65 556.234 m -253.594 575.871 239.033 600.932 231.409 627.212 c -272.65 556.234 m -272.65 556.234 m -253.348 575.691 238.572 600.753 230.891 627.061 c -272.65 556.234 m -272.65 556.234 m -253.103 575.509 238.11 600.571 230.371 626.909 c -272.65 556.234 m -272.65 556.234 m -252.859 575.324 237.648 600.387 229.85 626.755 c -272.65 556.234 m -272.65 556.234 m -252.615 575.137 237.184 600.2 229.328 626.6 c -272.65 556.234 m -272.65 556.234 m -252.373 574.947 236.72 600.012 228.804 626.444 c -272.65 556.234 m -272.65 556.234 m -252.132 574.755 236.255 599.821 228.278 626.286 c -272.65 556.234 m -272.65 556.234 m -251.892 574.561 235.788 599.628 227.75 626.126 c -272.65 556.234 m -272.65 556.234 m -251.653 574.364 235.321 599.433 227.222 625.966 c -272.65 556.234 m -272.65 556.234 m -251.415 574.165 234.852 599.235 226.691 625.803 c -272.65 556.234 m -272.65 556.234 m -251.177 573.963 234.383 599.035 226.159 625.639 c -272.65 556.234 m -272.65 556.234 m -250.942 573.759 233.912 598.833 225.625 625.473 c -272.65 556.234 m -272.65 556.234 m -250.707 573.553 233.44 598.628 225.089 625.306 c -272.65 556.234 m -272.65 556.234 m -250.473 573.344 232.967 598.421 224.551 625.137 c -272.65 556.234 m -272.65 556.234 m -250.24 573.133 232.493 598.212 224.011 624.967 c -272.65 556.234 m -272.65 556.234 m -250.009 572.919 232.018 598 223.47 624.795 c -272.65 556.234 m -272.65 556.234 m -249.778 572.703 231.541 597.785 222.927 624.621 c -272.65 556.234 m -272.65 556.234 m -249.549 572.484 231.063 597.568 222.381 624.445 c -272.65 556.234 m -272.65 556.234 m -249.321 572.263 230.584 597.348 221.834 624.268 c -272.65 556.234 m -272.65 556.234 m -249.093 572.04 230.103 597.126 221.284 624.089 c -272.65 556.234 m -272.65 556.234 m -248.868 571.814 229.621 596.901 220.733 623.908 c -272.65 556.234 m -272.65 556.234 m -248.643 571.586 229.138 596.674 220.179 623.725 c -272.65 556.234 m -272.65 556.234 m -248.419 571.355 228.654 596.443 219.623 623.54 c -272.65 556.234 m -272.65 556.234 m -248.197 571.122 228.167 596.21 219.065 623.353 c -272.65 556.234 m -272.65 556.234 m -247.976 570.886 227.68 595.975 218.505 623.165 c -272.65 556.234 m -272.65 556.234 m -247.756 570.648 227.191 595.736 217.942 622.974 c -272.65 556.234 m -272.65 556.234 m -247.537 570.407 226.7 595.495 217.377 622.782 c -272.65 556.234 m -272.65 556.234 m -247.32 570.164 226.208 595.25 216.809 622.587 c -272.65 556.234 m -272.65 556.234 m -247.104 569.918 225.714 595.003 216.239 622.391 c -272.65 556.234 m -272.65 556.234 m -246.889 569.67 225.219 594.753 215.666 622.192 c -272.65 556.234 m -272.65 556.234 m -246.675 569.42 224.722 594.499 215.091 621.991 c -272.65 556.234 m -272.65 556.234 m -246.463 569.166 224.224 594.243 214.514 621.788 c -272.65 556.234 m -272.65 556.234 m -246.252 568.911 223.723 593.984 213.933 621.583 c -272.65 556.234 m -272.65 556.234 m -246.042 568.652 223.221 593.721 213.35 621.376 c -272.65 556.234 m -272.65 556.234 m -245.833 568.391 222.717 593.455 212.764 621.166 c -272.65 556.234 m -272.65 556.234 m -245.626 568.128 222.212 593.186 212.176 620.954 c -272.65 556.234 m -272.65 556.234 m -245.42 567.862 221.704 592.914 211.584 620.739 c -272.65 556.234 m -272.65 556.234 m -245.216 567.593 221.195 592.638 210.99 620.522 c -272.65 556.234 m -272.65 556.234 m -245.013 567.322 220.684 592.359 210.392 620.303 c -272.65 556.234 m -272.65 556.234 m -244.811 567.048 220.17 592.077 209.792 620.081 c -272.65 556.234 m -272.65 556.234 m -244.611 566.772 219.655 591.791 209.188 619.857 c -272.65 556.234 m -272.65 556.234 m -244.412 566.493 219.138 591.501 208.582 619.63 c -272.65 556.234 m -272.65 556.234 m -244.214 566.211 218.619 591.208 207.972 619.4 c -272.65 556.234 m -272.65 556.234 m -244.018 565.927 218.098 590.912 207.359 619.168 c -272.65 556.234 m -272.65 556.234 m -243.823 565.64 217.574 590.611 206.742 618.933 c -272.65 556.234 m -272.65 556.234 m -243.63 565.35 217.049 590.307 206.122 618.695 c -272.65 556.234 m -272.65 556.234 m -243.438 565.058 216.521 589.999 205.499 618.454 c -272.65 556.234 m -272.65 556.234 m -243.248 564.763 215.991 589.687 204.872 618.211 c -272.65 556.234 m -272.65 556.234 m -243.059 564.465 215.459 589.372 204.242 617.964 c -272.65 556.234 m -272.65 556.234 m -242.872 564.165 214.924 589.052 203.608 617.715 c -272.65 556.234 m -272.65 556.234 m -242.686 563.862 214.388 588.728 202.971 617.462 c -272.65 556.234 m -272.65 556.234 m -242.502 563.556 213.848 588.4 202.329 617.207 c -272.65 556.234 m -272.65 556.234 m -242.319 563.247 213.307 588.068 201.684 616.948 c -272.65 556.234 m -272.65 556.234 m -242.138 562.935 212.763 587.731 201.035 616.686 c -272.65 556.234 m -272.65 556.234 m -241.958 562.621 212.216 587.391 200.382 616.421 c -272.65 556.234 m -272.65 556.234 m -241.78 562.304 211.667 587.045 199.725 616.152 c -272.65 556.234 m -272.65 556.234 m -241.604 561.984 211.116 586.696 199.064 615.88 c -272.65 556.234 m -272.65 556.234 m -241.429 561.661 210.562 586.342 198.398 615.604 c -272.65 556.234 m -272.65 556.234 m -241.255 561.335 210.005 585.983 197.729 615.325 c -272.65 556.234 m -272.65 556.234 m -241.084 561.007 209.445 585.619 197.055 615.042 c -272.65 556.234 m -272.65 556.234 m -240.914 560.675 208.883 585.251 196.377 614.755 c -272.65 556.234 m -272.65 556.234 m -240.745 560.341 208.318 584.878 195.694 614.465 c -272.65 556.234 m -272.65 556.234 m -240.578 560.003 207.75 584.499 195.007 614.171 c -272.65 556.234 m -272.65 556.234 m -240.413 559.663 207.18 584.116 194.315 613.873 c -272.65 556.234 m -272.65 556.234 m -240.25 559.319 206.606 583.728 193.618 613.57 c -272.65 556.234 m -272.65 556.234 m -240.088 558.973 206.029 583.334 192.916 613.264 c -272.65 556.234 m -272.65 556.234 m -239.928 558.623 205.45 582.935 192.21 612.954 c -272.65 556.234 m -272.65 556.234 m -239.77 558.271 204.867 582.53 191.499 612.639 c -272.65 556.234 m -272.65 556.234 m -239.614 557.915 204.282 582.121 190.782 612.32 c -272.65 556.234 m -272.65 556.234 m -239.459 557.557 203.693 581.705 190.061 611.996 c -272.65 556.234 m -272.65 556.234 m -239.306 557.195 203.101 581.284 189.334 611.668 c -272.65 556.234 m -272.65 556.234 m -239.155 556.83 202.506 580.857 188.602 611.335 c -272.65 556.234 m -272.65 556.234 m -239.006 556.461 201.907 580.423 187.864 610.997 c -272.65 556.234 m -272.65 556.234 m -238.859 556.09 201.305 579.984 187.121 610.655 c -272.65 556.234 m -272.65 556.234 m -238.713 555.715 200.7 579.539 186.372 610.307 c -272.65 556.234 m -272.65 556.234 m -238.57 555.337 200.092 579.087 185.617 609.955 c -272.65 556.234 m -272.65 556.234 m -238.428 554.956 199.48 578.629 184.857 609.597 c -272.65 556.234 m -272.65 556.234 m -238.288 554.571 198.864 578.165 184.091 609.234 c -272.65 556.234 m -272.65 556.234 m -238.15 554.183 198.245 577.694 183.318 608.865 c -272.65 556.234 m -272.65 556.234 m -238.014 553.791 197.622 577.216 182.54 608.491 c -272.65 556.234 m -272.65 556.234 m -237.88 553.396 196.996 576.731 181.755 608.111 c -272.65 556.234 m -272.65 556.234 m -237.748 552.998 196.366 576.239 180.964 607.726 c -272.65 556.234 m -272.65 556.234 m -237.618 552.596 195.732 575.739 180.166 607.334 c -272.65 556.234 m -272.65 556.234 m -237.49 552.191 195.094 575.233 179.362 606.936 c -272.65 556.234 m -272.65 556.234 m -237.364 551.781 194.452 574.719 178.551 606.533 c -272.65 556.234 m -272.65 556.234 m -237.24 551.369 193.807 574.197 177.733 606.122 c -272.65 556.234 m -272.65 556.234 m -237.118 550.952 193.157 573.668 176.909 605.705 c -272.65 556.234 m -272.65 556.234 m -236.998 550.532 192.503 573.13 176.077 605.282 c -272.65 556.234 m -272.65 556.234 m -236.881 550.108 191.846 572.585 175.237 604.852 c -272.65 556.234 m -272.65 556.234 m -236.765 549.68 191.184 572.031 174.391 604.414 c -272.65 556.234 m -272.65 556.234 m -236.652 549.249 190.517 571.468 173.537 603.97 c -272.65 556.234 m -272.65 556.234 m -236.54 548.813 189.847 570.897 172.675 603.518 c -272.65 556.234 m -272.65 556.234 m -236.432 548.374 189.172 570.318 171.806 603.059 c -272.65 556.234 m -272.65 556.234 m -236.325 547.93 188.493 569.729 170.928 602.591 c -272.65 556.234 m -272.65 556.234 m -236.22 547.483 187.81 569.13 170.043 602.116 c -376.231 242.85 m -376.231 242.85 m -303.633 327.085 228.664 409.332 151.498 489.402 c -151.498 489.402 m -151.498 489.402 m -161.412 512.141 162.475 540.35 154.298 563.77 c -154.298 563.77 m -154.298 563.77 m -165.535 568.901 172.604 586.827 167.893 598.246 c -154.298 563.77 m -154.298 563.77 m -163.456 570.213 167.751 585.985 163.124 596.182 c -154.298 563.77 m -154.298 563.77 m -161.502 571.156 163.732 585.064 159.199 594.332 c -154.298 563.77 m -154.298 563.77 m -159.646 571.791 160.313 584.097 155.863 592.648 c -154.298 563.77 m -154.298 563.77 m -157.876 572.157 157.337 583.098 152.951 591.092 c -154.298 563.77 m -154.298 563.77 m -156.188 572.283 154.693 582.07 150.347 589.629 c -154.298 563.77 m -154.298 563.77 m -154.582 572.188 152.299 581.009 147.967 588.232 c -154.298 563.77 m -154.298 563.77 m -153.062 571.889 150.096 579.908 145.751 586.876 c -154.298 563.77 m -154.298 563.77 m -151.635 571.397 148.034 578.757 143.647 585.54 c -154.298 563.77 m -154.298 563.77 m -150.31 570.724 146.077 577.543 141.615 584.203 c -154.298 563.77 m -154.298 563.77 m -149.096 569.877 144.191 576.25 139.619 582.842 c -154.298 563.77 m -154.298 563.77 m -148.005 568.865 142.348 574.858 137.625 581.435 c -154.298 563.77 m -154.298 563.77 m -147.047 567.691 140.52 573.341 135.601 579.955 c -154.298 563.77 m -154.298 563.77 m -146.236 566.361 138.682 571.667 133.511 578.372 c -154.298 563.77 m -154.298 563.77 m -145.586 564.875 136.806 569.793 131.315 576.646 c -154.298 563.77 m -154.298 563.77 m -145.114 563.231 134.863 567.663 128.966 574.724 c -154.298 563.77 m -154.298 563.77 m -144.84 561.421 132.819 565.198 126.406 572.536 c -151.498 489.402 m -151.498 489.402 m -143.662 509.353 133.019 528.408 120.142 545.544 c -120.142 545.544 m -120.142 545.544 m -120.834 550.422 120 555.716 117.841 560.146 c -120.142 545.544 m -120.142 545.544 m -115.408 546.216 110.714 548.118 106.848 550.932 c -151.498 489.402 m -151.498 489.402 m -131.904 497.945 113.24 509.03 96.3625 522.148 c -96.3625 522.148 m -96.3625 522.148 m -100.503 528.633 99.7581 539.327 94.7576 545.174 c -96.3625 522.148 m -96.3625 522.148 m -99.0454 528.797 97.4372 537.993 92.6567 543.336 c -96.3625 522.148 m -96.3625 522.148 m -97.6983 528.781 95.4528 536.729 90.8435 541.682 c -96.3625 522.148 m -96.3625 522.148 m -96.4524 528.605 93.7202 535.513 89.2386 540.162 c -96.3625 522.148 m -96.3625 522.148 m -95.3039 528.283 92.179 534.327 87.7859 538.738 c -96.3625 522.148 m -96.3625 522.148 m -94.2525 527.828 90.7848 533.154 86.444 537.381 c -96.3625 522.148 m -96.3625 522.148 m -93.3005 527.251 89.5041 531.976 85.1807 536.065 c -96.3625 522.148 m -96.3625 522.148 m -92.4518 526.56 88.3103 530.777 83.9702 534.767 c -96.3625 522.148 m -96.3625 522.148 m -91.7117 525.763 87.1822 529.54 82.7902 533.465 c -96.3625 522.148 m -96.3625 522.148 m -91.0863 524.868 86.1021 528.245 81.6206 532.138 c -96.3625 522.148 m -96.3625 522.148 m -90.5828 523.88 85.0543 526.871 80.4423 530.761 c -96.3625 522.148 m -96.3625 522.148 m -90.2096 522.805 84.025 525.39 79.2353 529.308 c -96.3625 522.148 m -96.3625 522.148 m -89.9763 521.646 83.0009 523.77 77.978 527.745 c -96.3625 522.148 m -96.3625 522.148 m -89.8947 520.405 81.9691 521.966 76.6454 526.031 c -96.3625 522.148 m -96.3625 522.148 m -89.9795 519.08 80.9169 519.92 75.2069 524.11 c -96.3625 522.148 m -96.3625 522.148 m -90.2506 517.665 79.8314 517.552 73.6241 521.903 c -96.3625 522.148 m -96.3625 522.148 m -90.7357 516.146 78.7003 514.746 71.8459 519.296 c -151.498 489.402 m -151.498 489.402 m -128.613 480.414 100.788 480.157 77.7415 488.721 c -77.7415 488.721 m -77.7415 488.721 m -75.1678 494.339 71.4934 499.562 67.0763 503.883 c -67.0763 503.883 m -67.0763 503.883 m -67.0547 505.85 66.3344 507.903 65.122 509.452 c -67.0763 503.883 m -67.0763 503.883 m -65.2145 503.863 63.3022 504.284 61.6212 505.085 c -77.7415 488.721 m -77.7415 488.721 m -71.5716 485.894 64.0043 485.264 57.4518 487.031 c -57.4518 487.031 m -57.4518 487.031 m -57.4566 489.931 56.0608 493.044 53.8923 494.97 c -57.4518 487.031 m -57.4518 487.031 m -56.1438 489.305 54.3262 491.347 52.2189 492.91 c -57.4518 487.031 m -57.4518 487.031 m -55.2458 488.31 53.062 489.627 50.9025 490.983 c -57.4518 487.031 m -57.4518 487.031 m -54.7998 487.035 52.077 487.707 49.7274 488.937 c -57.4518 487.031 m -57.4518 487.031 m -54.8788 485.551 51.3101 485.317 48.5659 486.449 c -57.4518 487.031 m -57.4518 487.031 m -55.6264 483.881 50.8623 481.924 47.3497 482.88 c -267.734 20.3125 m -267.734 20.3125 m -272.122 84.4568 220.107 160.362 158.703 179.422 c -158.703 179.422 m -158.703 179.422 m -174.885 260.815 129.107 364.319 58.0008 407.105 c -58.0008 407.105 m -58.0008 407.105 m -48.9507 412.551 39.4757 417.345 29.7275 421.411 c -158.703 179.422 m -158.703 179.422 m -157.787 248.946 98.2019 326.051 31.1565 344.473 c -158.703 179.422 m -158.703 179.422 m -145.522 237.65 82.4157 291.882 22.8677 296.156 c -22.8677 296.156 m -22.8677 296.156 m -22.1885 305.686 12.7192 315.774 3.25097 317.055 c -22.8677 296.156 m -22.8677 296.156 m -19.9163 304.075 11.0686 310.765 2.64518 311.448 c -22.8677 296.156 m -22.8677 296.156 m -18.247 302.332 10.0834 306.613 2.37585 306.903 c -22.8677 296.156 m -22.8677 296.156 m -17.084 300.488 9.52772 303.006 2.30166 303.01 c -22.8677 296.156 m -22.8677 296.156 m -16.3774 298.579 9.28175 299.74 2.35777 299.514 c -22.8677 296.156 m -22.8677 296.156 m -16.1012 296.642 9.2862 296.668 2.51613 296.235 c -22.8677 296.156 m -22.8677 296.156 m -16.2426 294.717 9.51948 293.672 2.77003 293.033 c -22.8677 296.156 m -22.8677 296.156 m -16.7982 292.844 9.98929 290.644 3.12927 289.778 c -22.8677 296.156 m -22.8677 296.156 m -17.7736 291.064 10.7336 287.472 3.62163 286.335 c -22.8677 296.156 m -22.8677 296.156 m -19.1873 289.42 11.8313 284.023 4.30117 282.534 c -22.8677 296.156 m -22.8677 296.156 m -21.081 287.953 13.4278 280.117 5.26872 278.137 c -158.703 179.422 m -158.703 179.422 m -136.729 227.077 75.2814 263.17 22.9582 259.157 c -158.703 179.422 m -158.703 179.422 m -130.524 217.151 73.0986 239.289 26.8854 230.238 c -158.703 179.422 m -158.703 179.422 m -126.351 207.789 73.8436 219.273 32.6035 207.003 c -32.6035 207.003 m -32.6035 207.003 m -30.9165 212.049 23.4744 215.859 18.3942 214.276 c -32.6035 207.003 m -32.6035 207.003 m -30.6507 211.761 23.5294 215.09 18.6262 213.538 c -32.6035 207.003 m -32.6035 207.003 m -30.4081 211.475 23.5897 214.372 18.8466 212.847 c -32.6035 207.003 m -32.6035 207.003 m -30.1872 211.192 23.6547 213.698 19.0566 212.198 c -32.6035 207.003 m -32.6035 207.003 m -29.9865 210.911 23.7237 213.063 19.2573 211.587 c -32.6035 207.003 m -32.6035 207.003 m -29.8048 210.632 23.7963 212.462 19.4497 211.008 c -32.6035 207.003 m -32.6035 207.003 m -29.6412 210.355 23.8723 211.892 19.6346 210.458 c -32.6035 207.003 m -32.6035 207.003 m -29.4948 210.08 23.9515 211.35 19.813 209.934 c -32.6035 207.003 m -32.6035 207.003 m -29.3648 209.806 24.0336 210.833 19.9854 209.433 c -32.6035 207.003 m -32.6035 207.003 m -29.2506 209.534 24.1185 210.337 20.1524 208.952 c -32.6035 207.003 m -32.6035 207.003 m -29.1516 209.263 24.2061 209.861 20.3148 208.49 c -32.6035 207.003 m -32.6035 207.003 m -29.0674 208.994 24.2965 209.403 20.4729 208.043 c -32.6035 207.003 m -32.6035 207.003 m -28.9974 208.727 24.3896 208.961 20.6274 207.611 c -32.6035 207.003 m -32.6035 207.003 m -28.9414 208.462 24.4853 208.533 20.7785 207.192 c -32.6035 207.003 m -32.6035 207.003 m -28.899 208.199 24.5838 208.118 20.9268 206.784 c -32.6035 207.003 m -32.6035 207.003 m -28.8698 207.938 24.6851 207.714 21.0727 206.385 c -32.6035 207.003 m -32.6035 207.003 m -28.8537 207.68 24.7893 207.321 21.2164 205.996 c -32.6035 207.003 m -32.6035 207.003 m -28.8503 207.424 24.8964 206.936 21.3584 205.615 c -32.6035 207.003 m -32.6035 207.003 m -28.8594 207.171 25.0067 206.56 21.499 205.24 c -32.6035 207.003 m -32.6035 207.003 m -28.8809 206.922 25.1202 206.19 21.6385 204.87 c -32.6035 207.003 m -32.6035 207.003 m -28.9145 206.675 25.2371 205.827 21.7772 204.506 c -32.6035 207.003 m -32.6035 207.003 m -28.9601 206.432 25.3576 205.468 21.9154 204.145 c -32.6035 207.003 m -32.6035 207.003 m -29.0176 206.192 25.4819 205.114 22.0534 203.787 c -32.6035 207.003 m -32.6035 207.003 m -29.0867 205.956 25.6102 204.764 22.1916 203.431 c -32.6035 207.003 m -32.6035 207.003 m -29.1675 205.725 25.7428 204.416 22.3302 203.077 c -32.6035 207.003 m -32.6035 207.003 m -29.2597 205.498 25.8798 204.071 22.4695 202.723 c -32.6035 207.003 m -32.6035 207.003 m -29.3632 205.276 26.0217 203.726 22.6099 202.369 c -32.6035 207.003 m -32.6035 207.003 m -29.4781 205.058 26.1688 203.382 22.7516 202.014 c -32.6035 207.003 m -32.6035 207.003 m -29.6041 204.846 26.3214 203.038 22.8951 201.657 c -32.6035 207.003 m -32.6035 207.003 m -29.7413 204.639 26.4799 202.694 23.0405 201.297 c -32.6035 207.003 m -32.6035 207.003 m -29.8897 204.438 26.6447 202.347 23.1884 200.934 c -32.6035 207.003 m -32.6035 207.003 m -30.0491 204.243 26.8164 201.998 23.3391 200.567 c -32.6035 207.003 m -32.6035 207.003 m -30.2196 204.055 26.9955 201.645 23.4931 200.194 c -32.6035 207.003 m -32.6035 207.003 m -30.4012 203.873 27.1825 201.289 23.6506 199.815 c -32.6035 207.003 m -32.6035 207.003 m -30.5939 203.698 27.3782 200.927 23.8124 199.429 c -32.6035 207.003 m -32.6035 207.003 m -30.7978 203.53 27.5833 200.56 23.9788 199.034 c -32.6035 207.003 m -32.6035 207.003 m -31.013 203.37 27.7986 200.186 24.1506 198.63 c -32.6035 207.003 m -32.6035 207.003 m -31.2397 203.217 28.025 199.804 24.3282 198.215 c -32.6035 207.003 m -32.6035 207.003 m -31.4779 203.073 28.2635 199.412 24.5125 197.788 c -32.6035 207.003 m -32.6035 207.003 m -31.728 202.938 28.5154 199.011 24.7042 197.347 c -32.6035 207.003 m -32.6035 207.003 m -31.9902 202.811 28.7819 198.597 24.9043 196.89 c -32.6035 207.003 m -32.6035 207.003 m -32.2648 202.693 29.0646 198.17 25.1137 196.417 c -32.6035 207.003 m -32.6035 207.003 m -32.5523 202.586 29.3652 197.729 25.3337 195.923 c -32.6035 207.003 m -32.6035 207.003 m -32.8532 202.488 29.6855 197.27 25.5655 195.408 c -32.6035 207.003 m -32.6035 207.003 m -33.168 202.402 30.0279 196.792 25.8106 194.868 c -32.6035 207.003 m -32.6035 207.003 m -33.4977 202.326 30.395 196.293 26.0709 194.301 c -32.6035 207.003 m -32.6035 207.003 m -33.843 202.263 30.7897 195.77 26.3482 193.702 c -158.703 179.422 m -158.703 179.422 m -123.854 198.934 76.4073 202.261 39.1764 187.802 c -158.703 179.422 m -158.703 179.422 m -122.793 190.569 80.176 187.571 46.1796 171.507 c -158.703 179.422 m -158.703 179.422 m -123 182.699 84.8114 174.687 53.4364 157.337 c -53.4364 157.337 m -53.4364 157.337 m -51.4744 159.659 47.4576 160.707 44.6111 159.639 c -53.4364 157.337 m -53.4364 157.337 m -51.0773 158.555 47.8944 158.639 45.4741 157.548 c -53.4364 157.337 m -53.4364 157.337 m -51.0072 157.541 48.43 157.03 46.2628 155.913 c -53.4364 157.337 m -53.4364 157.337 m -51.2117 156.627 49.0507 155.675 47.0257 154.512 c -53.4364 157.337 m -53.4364 157.337 m -51.66 155.836 49.7766 154.454 47.8125 153.209 c -53.4364 157.337 m -53.4364 157.337 m -52.3322 155.198 50.6549 153.281 48.682 151.903 c -53.4364 157.337 m -53.4364 157.337 m -53.2188 154.75 51.7716 152.084 49.7208 150.493 c -53.4364 157.337 m -53.4364 157.337 m -54.3291 154.538 53.2885 150.784 51.0824 148.845 c -158.703 179.422 m -158.703 179.422 m -124.351 175.353 90.1358 163.218 60.897 144.733 c -158.703 179.422 m -158.703 179.422 m -126.748 168.571 96.07 152.867 68.5828 133.287 c -158.703 179.422 m -158.703 179.422 m -130.107 162.406 102.602 143.41 76.5611 122.693 c -76.5611 122.693 m -76.5611 122.693 m -74.5826 124.506 70.8753 124.904 68.5571 123.553 c -76.5611 122.693 m -76.5611 122.693 m -74.3827 123.686 71.4123 123.473 69.398 122.179 c -76.5611 122.693 m -76.5611 122.693 m -74.3662 122.943 71.9494 122.335 70.1342 121.076 c -76.5611 122.693 m -76.5611 122.693 m -74.505 122.275 72.4974 121.38 70.8113 120.132 c -76.5611 122.693 m -76.5611 122.693 m -74.7809 121.686 73.0722 120.54 71.4642 119.276 c -76.5611 122.693 m -76.5611 122.693 m -75.1803 121.186 73.6944 119.769 72.1236 118.461 c -76.5611 122.693 m -76.5611 122.693 m -75.693 120.788 74.3918 119.032 72.822 117.647 c -76.5611 122.693 m -76.5611 122.693 m -76.3121 120.507 75.2041 118.299 73.5997 116.792 c -76.5611 122.693 m -76.5611 122.693 m -77.0359 120.36 76.1929 117.54 74.5157 115.85 c -76.5611 122.693 m -76.5611 122.693 m -77.8725 120.376 77.4613 116.723 75.6674 114.755 c -158.703 179.422 m -158.703 179.422 m -134.361 156.916 109.768 134.677 84.9351 112.713 c -84.9351 112.713 m -84.9351 112.713 m -82.984 113.862 80.153 113.938 78.1436 112.893 c -84.9351 112.713 m -84.9351 112.713 m -83.0056 112.527 81.0667 111.809 79.4818 110.693 c -84.9351 112.713 m -84.9351 112.713 m -83.5518 111.489 82.1677 110.267 80.7829 109.045 c -84.9351 112.713 m -84.9351 112.713 m -84.5151 110.819 83.5623 108.982 82.2568 107.548 c -84.9351 112.713 m -84.9351 112.713 m -85.8387 110.634 85.5638 107.81 84.2762 105.944 c -158.703 179.422 m -158.703 179.422 m -139.445 152.167 117.652 126.541 93.8443 103.155 c -158.703 179.422 m -158.703 179.422 m -145.306 148.232 126.38 118.915 103.471 93.8655 c -103.471 93.8655 m -103.471 93.8655 m -102.336 92.6237 101.19 91.3912 100.034 90.1683 c -267.734 20.3125 (/) t -318.283 6.59632 (sys) t -334.32 11.257 (tmp) t -361.096 24.3301 (tmpsim) t -406.419 71.7352 (users) t -418.012 32.6494 (demons) t -458.604 63.1285 (homepc4-80) t -496.512 64.5346 (stoulsn) t -376.231 242.85 (usr) t -539.236 125.332 (X11R6) t -553.928 112.662 (lib) t -568.953 168.23 (bin) t -590.901 219.824 (games) t -602.011 280.943 (include) t -597.024 351.58 (lib) t -567.947 428.919 (lib32) t -599.188 445.267 (nvidia) t -505.057 503.613 (local) t -568.336 504.157 (bin) t -558.83 519.96 (games) t -549.455 532.154 (include) t -539.682 542.534 (lib) t -528.705 552.129 (sbin) t -515.231 561.622 (share) t -496.811 571.399 (src) t -402.788 555.503 (sbin) t -272.65 556.234 (share) t -151.498 489.402 (src) t -154.298 563.77 (linux-headers-2.6.17-10) t -120.142 545.544 (linux-headers-2.6.17-10-generic) t -96.3625 522.148 (linux-headers-2.6.17-11) t -77.7415 488.721 (linux-headers-2.6.17-11-generic) t -67.0763 503.883 (include) t -57.4518 487.031 (scripts) t -158.703 179.422 (var) t -58.0008 407.105 (autofs) t -29.7275 421.411 (misc) t -31.1565 344.473 (backups) t -22.8677 296.156 (cache) t -22.9582 259.157 (crash) t -26.8854 230.238 (games) t -32.6035 207.003 (lib) t -39.1764 187.802 (local) t -46.1796 171.507 (lock) t -53.4364 157.337 (log) t -60.897 144.733 (mail) t -68.5828 133.287 (opt) t -76.5611 122.693 (run) t -84.9351 112.713 (spool) t -93.8443 103.155 (tmp) t -103.471 93.8655 (yp) t diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/composantes.dia b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/composantes.dia deleted file mode 100755 index a6074b43dc..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/composantes.dia and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/composantes.jpg b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/composantes.jpg deleted file mode 100755 index 13ab359508..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/composantes.jpg and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/db4_bfs.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/db4_bfs.eps deleted file mode 100755 index fc91cb228a..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/db4_bfs.eps +++ /dev/null @@ -1,3450 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner -%%Title: db4_bfs.eps -%%CreationDate: Thu Jun 7 15:20:00 2007 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 14 14 546 527 -%%EndComments -%%BeginProlog -% Use own dictionary to avoid conflicts -10 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -14.173228346456694 14.173228346456694 translate -% Translate to begin of first scanline -0 512.00137876062354 translate -531.63779527559063 -512.00137876062354 scale -% Image geometry -731 704 8 -% Transformation matrix -[ 731 0 0 704 0 0 ] -% Strings to hold RGB-samples per scanline -/rstr 731 string def -/gstr 731 string def -/bstr 731 string def -{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} -true 3 -%%BeginData: 196054 ASCII Bytes -colorimage -quD:2JN\QIJN\QIYW_maJ,~> -quD:/JNA?CJNA?CYWD[^J,~> -quD:,JN&-=JN&-=YW)I[J,~> -rW)s]JcC<$JcC<$JcDtSs#p>]J,~> -rW)sZJcC<$JcC<$JcDtSs#U,ZJ,~> -rW)sWJcC<$JcC<$JcDtSs#9oWJ,~> -rr<*`s8RZ=Ja\0YJa\0YYj_Vl!^-M`J,~> -rr<*]s8RZ:Ja@sSJa@sSYjDDi!]g;]J,~> -rr<*Zs8RZ4J`_OGJ`_OGYibuc!]L)ZJ,~> -!WYC`JaJ$UJaJ$UJaMUeo8ie9o8ie9o8ik;!nKL7J,~> -!WY:]Ja.gOJa.gOJa2C_o7Qr*o7Qr*o7R#,!mWh,J,~> -!WY1ZJ`D=AJ`D=AJ`GnQo5OTeo5OTeo5OZg!lHqsJ,~> -!WYC`Ja@sSJa@sSJaDRd!0?aO!K[9[li<+ -!WY:]J`q[KJ`q[KJ`u:\!/'nC!JCFOkQ$8,rrIcProa?7oD]#Is6/[l3WO[~> -!WY1ZJ`21=J`21=J`5eN!-%Q0!HA) -!BpI6l@J5Ol@J5OlK@F5O8nh="mV0KlAtu:m02d9s6>[FoBcbIO8nM1eieN~> -!BU73k(2ZGk(2ZGk3(k-KE(Q-"m1I;k(E^*klp4%s5nt6oB?JAKE()rc8pI~> -!B:%0hgs[9hgs[9hriktE<#Oi"lF;!hf/Veis"=Zs5.eqoA^&4E<"hQ_`*)~> -!BpJ\kl>etFTI3YJa%aMJa%aMJa*'r!K[9PlNQO6rooLDoBQSEO8eC)s7>O\l&Yi.l./"J~> -!BU8Yj8a8oGl`TWJ`MCCJ`MCCJ`Q^h!JCFDk69q!roA_3oB-;CXjFdHmjN]f:~> -!B:&Vg]2EgHi\iPJ_Yh3J_Yh3J_^.X!HA)1i1Rgi38Jgqu($~> -!BpJ\k5\'G0*+GsJ`hUI`97.#s6'C^J`hUI^?5NXs7>LZkE#T)O8nh:"m:sFkE#Z7l3?F4rTE@p -4b*~> -!BU8YiW*!N9*!Xridp+-ir9#Yir9"0idp+'iW4]3oAp/8KDje^s7>=Uie.3hKE(Q)#3(:6io86E -J,~> -!B:&Vg&PXUB`V,ZJ_G\/`7k4ks4[JQJ_G\/^=iU,s7>+Og2R#EE<#Oe"kmqog2R)`hZheRrS#uC -2h1~> -!BpJ\jpmm?j5oFelKmp,nac=$h1=^>k0rJh!;YdW!<;3]!<;3]!.j9`k/-6]O8nh8"m1mEk)]QA -kkP5XkQU+0rT91@roj@^rTO7]roaRKO8\5'eieN~> -!BU8Yi!u78j5oFelKmp,nFH4#f7Dk2i7$W\!;YRQ!<;!W!<;!W!.j'Zi54CQKE(Q("lP%2i.M(/ -jS8fTj9=Ior8<5-roF(ZrT*tYro=:AKDaZcc8pI~> -!B:&VfFFD0j5oIflKdj+nFH4!d"0i#f[JLL!;Y:I!<:^O!<:^O!.idRfYZ8AE<#Oc"k[elfPpli -h>%'Mh$)GMr7Gugrn[SSrS@JRrnRe2E;\A@_`*)~> -!BpJ\jURg@jQ>Xilg=-0o(2O(gk"Rk!;,CQ!;kmX!.j6_jhg*[O8nh7"m(gCjcBH@kP5,W -k69t.r8j">roa7\s6'@]roXLIO8S,$eieN~> -!BU8Yh[Z19jQ>Xilg=-0nalF&eq)_0hp^K_!;,1K!;k[R!.j$Yhnn7OKE(Q&"lFt1hh1t.iqWTR -iW\4lr83/,ro3nWs5O"Xro+.>KDaWac8pI~> -!B:&Vf++>1jQ>[jlg4'/nalF$c[j]!f@/@O!;+nC!;kCJ!.iaQf>?,?E<#Oa"kR_jf5Uchg\CjK -gBH2Jqq#fernIDPs4dMQrn@Y/E;S8=_`*)~> -!BpJ\jURgAjlbmnm-X93o(;X+gk"Rk!;Y^aJ/e\=OT5CCjT#;BquHcY%HD[Q"<;XGjlHIB -KGjrDjalOCjT1GBoB$5 -!BU8Yh[Z.:jlbjmm-a?4oCVa+eq)_0hp^K_!;YL[HlE27N;rt9hZ*Z6quHcS%Gc.G!ul@ -!B:&Vede52jlbjmm-a?4oCVa)c@OPtf$i4M!;Y1RG8^T/LB%>*ec5^$quHcJ%Ff>8!uc..f%'g$ -HPcj9eq)E%ecBaio@X;uE;J.)s8L[O!;kFL!<1XTeo:K:E<#miqZ-TJ#1dbif%._tJ,~> -!BpJ\j:7^Ak32*rmI'K7o_%s/gO\F:jO<2i!;baeJcJBjdRaE=jQ$:@jQ$:@rT"B2!+t"u!-mSc -!!$0TJ`MCCe)UOjs754RO8J"!s8M'Z!;kgW!<(s]O8J"!s8:sV!;kg\O8J#!eieN~> -!BU8Yh@?(;k32*rmI0Q8o_%s-eUcS.hUC?]!;bO_IK2m_bsqa6hVJ54hVJ54rS@s)!+XSi!-R/T -!!$'LJ_kt7e(t+Xs7>+OhLk[]KE(r.!!)oR!!*#U"l=n.hLkk+hu*QQhZhqiqVL)S3e.~> -!B:&Vede53k32*rmI'K7o_%s,c@OPtf$i4M!;b7WH2pCQ`C0b,f%'g$f%'g$rRMBr!+=)[!-$N? -!!#sAJ_#D'e(+P=s7=hGeo:H9E<#ph!!)oJ!!*#M"kIYgeo:ZefDP^If*9fFq:=-72h1~> -!BpJ\j:7^BkNV=!mdTc*!7'ZM!$((\ -!!(;qjFQC?j8k>AoA^#8O8J"!s8M$Y!;kdV!<2!^jH'3!O8o. -!BU8Yh@?(;kiqF"mdTcr9/o%jM%qVHl)rn[VTqq_;QrS@[0qVHl)r8.APqq_L/qVL)S3e.~> -!B:&VeIJ,3kNV=!mdTc -!BpJ\isqXCkj%O%n+#u@p@nB6g4A:8j4!&g!;b^d"9@B?j50h:j5U+>j5U+>rSn4f!9)tr!!M?B -!!%T1J`G/ -!BU8Yh%$"=kj%O&n+#u@p@nB4e:HG,h:(3[!;bL^!s%'2h:_i/h;&&2h;&&2rS7e_!8H>`!!D'5 -!!%T+J_e`0!JCFDg]cMdq;$]'rnIJRqqM/OrnI\5KDF>Us8CaM!<([Wh1POZh9J'3~> -!B:&Ve./&4kj%O%n+#u@p%S91b^n8peC2qI!;b1U!s$d!eBn6reC4HueC4HurR;/V!7KBF!!Ca# -!!%T"J^i)s!HA)1dfn6?pXF0^rmLiIqpPNFrmM&#E;.k$s8CFD!<(@Ne8Y03eAF4q~> -!BpJ\isq[El0Ia)nFH2Dp\=T9g4A:8j4!&g!;b^d*WX4?j2Cuuj5U+>j5U+>rSn5&!6sQJ!$(%Z -!!%T1J`G/ -!BU8Yh%$%?l0Ia)nF?,Cp\=T7e:HG,h:(3[!;bL^*<Pqq;#Mrn7P3KD=8Ts8LaO!<:dP!<1[Vh1PLYh9J'3~> -!B:&Ve./)6l0Ia)nFH2Dp\FZ6b^n8peC2qI!;b1U*!!P!e@5JYeC4HueC4HurR;/j!5I$t!#jA: -!!%T"J^i)s!HA)BDrm:o!E;%e#s8LFF!<:IG!<1@Me8Y-2eAF4q~> -!BpJ\iXVUFlg4'.nalDHq"afio8NPJ,~> -!BU8Yg^]q?lg4'/nalGIp\F]:dt-;*gsb'Y!;bI^I/ld\bXVX5gtVl0gtW;<^]*!qB`MVl@K:H( -g].>*gk"8.g]<'-rn7)Irn.J1KD4/Rs8L^I!<1XTgk5@VKE(r(rrE#NrrE&O#2Fk*gt^19J,~> -!B:&Vdgi#7lg4'.nalDHq"af9bCS,ne'leG!;b.UGQ:.K_aFJ)e'e9se'e^*\,Oh`AH6&\?3"ik -df9B!dt,uqdfFFfrm1B?rm(bsE:q\!s8L@?!<1:Jdr>!/E<#p`rrE#DrrE&E#1IPae'l2nJ,~> -!BpJ\iWa1GI!pElIf=isJ-(:Bg4A77imZo`!<1suI2`;6NW9(=iW&u):!K[9Ph?Do"pu7A7oA0Z1O8.^qs7>(OifEloimp8C~> -!BU8Yg]hM?H[L3hIK"]qIfb.=e:HD+gsb'T!<1aoH5Zl0M?!Y3g].?0gis;/!8QA^B,:XfE8'+& -!!%T*J_\Z.!JCFDf*0r^pY:E$o@F0$KD4/Rs7=hHgk5@Vgs.s2~> -!B:&VdfjB0H$Xd`rI"Wn!e+t0J^]2!e'n-nrmMm1)$;"7!!(Ks!!(KsEt&*Le'lWP('5=hdF6PE -!.iUMe'ZVFE<#OS"k.G_dr>?YbluR8o[@dZo?@KgE:hW._`*)~> -!BpJ\huML(ecFC[J`)+;J`)+;J`-F`!K[9Pg]cVspu%55o@sN-O8.Xos7>"Mi/dZki7:&A~> -!BU8Yg&TXpd/_jNg4@t/g4@t/gABS)KE(Po"knV&g4TFsecjc[p=b0!o@=-"KD+$Qc8pI~> -!B:&VciD5]`rX9-J^AtpJ^AtpJ^F;@!HA)1b6?73o?_IVo?. -!BpI6hLXO7hLXO7hWN_rO8nh+"l>=7hN.^.gBHGppYLu2o@jK+O8%MfeieN~> -!BU73fR_\+fR_\+f]UlfKE(Pm"k\J#fRs4qe-4KWp"4oso@*usKD!mLc8pI~> -!B:%0c@O8lc@O8lcKEIRE<#OO"jV)Xc>`gTaT]t/o$24So>q3^E:V<"_`*)~> -!BpI6h1=C5h1=C5h<*MnO7U^!O8&Y0!0?`u!K[!Sh#NN-ciK4%rnRV+4b*~> -!BU73eq)D'eq)D'f&kN`KCd.bKD#5p!/'ma!JC(Eec:?oa8pqdrmh+q3e.~> -!B:%0b^muhb^muhbi[+LE:^[BE:NqO!-%PA!H@T.bQ)VR])cm@rlbD\2h1~> -!BpI6gO\+1gO\+1gZI5jp[aFGp\ihHp[aFGp\ihHp[aFGp\ihIeieN~> -!BU73e:H,#e:H,#eE56\p%*e9p&3A?p%*e9p&3A?p%*e9p&3A@c8pI~> -!B:%0aaqQbaaqQbal^\Fnag]"nbpQ0nag]"nbpQ0nag]"nbpQ1_`*)~> -!BpI6fn%h-fn%h-g#^oYp\WY8p\WY8p\`\FeieN~> -!BU73dXfhtdXfhtdcJpKp&!2/p&!2/p&*5=c8pI~> -!B:%0a+;9^a+;9^a5tA5nb^Aunb^AunbgE._`*)~> -!BpI6eq)D'eq)D'eu@4#4b*~> -!BU73c@O8lc@O8lcDf(h3e.~> -!B:%0_h#^V_h#^V_l:NR2h1~> -!'Pn%JXV.YJXV.YW1!]LJ,~> -!'5[kJW>;AJW>;AW/^j=J,~> -!&oIVJUE#rJUE#rW-eS(J,~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpJTm=FVTm"+MSm"+NAm.BZGeieN~> -!BU8Ql%/&Lk^hrKk^hs9kk+*?c8pI~> -!B:&Nj+63@idp*?idp+-iq273_`*)~> -!BpJTm=FVTm"+MSm"+NAm.BZGeieN~> -!BU8Ql%/&Lk^hrKk^hs9kk+*?c8pI~> -!B:&Nj+63@idp*?idp+-iq273_`*)~> -!BpJTm=FVTm"+MSm"+NAm.BZGeieN~> -!BU8Ql%/#KkCMfIkCMg7kOe!>c8pI~> -!B:&Nj+60?iITs=iITt+iUl.2_`*)~> -!BpJTm=FSSl[eAQl[eB?lh'QFeieN~> -!BU8Ql%/#KkCMfIkCMg7kOe!>c8pI~> -!B:&Nj+60?iITs=iITt+iUl.2_`*)~> -!BpJTm=FSSl[eAQl[eB?lh'QFeieN~> -!BU8Ql%/#KkCMfIkCMg7kOe!>c8pI~> -!B:&Nj+6->i.9g;i.9h)i:Q%1_`*)~> -!BpJTm=FSSl[eAQl[eB?lh'QFeieN~> -!BU8Ql%.uJk(2ZGk(2[5k4Im=c8pI~> -!B:&Nj+6->i.9g;i.9h)i:Q%1_`*)~> -!BpJTmI0 -!BU8Ql0ma7!.j9`k(2ZGk(2[Hk4Im=c8pI~> -!B:&Nj6tk*!.j$Yhgs[9hgs\:ht5q0_`*)~> -!BpJTmIKNE!:&hLJa.gOJa.gOJa1kPo^)\14b*~> -!BU8Ql13p -!B:&Nj7;(0!8lZ6J_u%9J_u%9J`#):o]#ti2h1~> -!BpJTmJ,rD!<)-^!.jBcl%/)Ml%/*Nl1F?DeieN~> -!BU8Ql1jB -!B:&Nj7qL/!<(aS!.j!XhLXO7hLXP8hXoh/_`*)~> -!BpJTmJ,oG!;YjZ!.jBcl%/)Ml%/*Nl1F?DeieN~> -!BU8Ql1j<>!;Y[U!.j3^jFQBCjFQCDjRh[;c8pI~> -!B:&Nj7qI2!;YIO!.j!XhLXO7hLXP8hXoh/_`*)~> -!BpJTmJ,oG!;u'h!9r_Jl07>J'*qCiJa%aMJa%aMJa)(Vo^)\14b*~> -!BU8Ql1j<>!;tmc!9E2@jQ,98'*q@cJ`MCCJ`MCCJ`P_Lo]ZD%3e.~> -!B:&Nj7qF1!;tX\!8ZH2h;-du&dV.YJ_bn5J_bn5J_f5>o]#ti2h1~> -!BpJTmJ,lF!;u$g!9iVHkid1SceMT0J`q[KJ`q[KJ`u"To^)\14b*~> -!BU8Ql1j9=!;tjb!9<)>j5Y5Eb1BX!J`D=AJ`D=AJ`GYJo]ZD%3e.~> -!B:&Nj7qF1!;tX\!8ZH2h;*'5`R7[hJ_bn5J_bn5J_f5>o]#ti2h1~> -!BpJTmJ,oC!"A&kki`$1kT%P)kgL8tk^hrKk^hrKkhkUrm/bd$J,~> -!BU8Ql1j<:!"@lfj5U."iuGhoj3JEjj+66Aj+66Aj58nhklK'jJ,~> -!B:&Nj7qF-!"@W_gtVnbg`*fZgrL1\gk"73gk"73gu$oZirR%VJ,~> -!BpJTmJ,lF!;u$b!9iVHki`0J!!!%Nk^hrKk^hrKkhkUrm/bd$J,~> -!BU8Ql1j9=!;tj]!9<)>j5U:@!!!%Nj+66Aj+66Aj58nhklK'jJ,~> -!B:&Nj7q@/!;tRU!8H6.gY2i/!!!%NgO\+1gO\+1gY^cXirR%VJ,~> -!BpJTmJ,iE!;u!b!9`MFkN -!BU8Ql1j6GDo]ZD%3e.~> -!B:&Nj7q@/!;tRV!8H6.gY3UaJ_Pb1J_Pb1J_Sr6o]#ti2h1~> -!BpJTmJ,iE!;u!f!9`MFkN@(Wa5am0J`hUIJ`hUIJ`kqRo^)\14b*~> -!BU8Ql1j6SHo]ZD%3e.~> -!B:&Nj7q=.!;tOY!8?-,g=gR3][sM_J_G\/J_G\/J_K#8o]#ti2h1~> -!BpJTmJ,iE!;u!f!9`MFkNCrP*!IdZJ`hUIJ`hUIJ`kqRo^)\14b*~> -!BU8Ql1j3;!;td`!9)l:iSi[;)[%RSJ`21=J`21=J`5MFo]ZD%3e.~> -!B:&Nj7q=.!;tOY!8?-,g=k2#)[%LLJ_G\/J_G\/J_K#8o]#ti2h1~> -!BpJTm=FDNk(2ZGk(2[5k4J$AeieN~> -!BU8Ql%.fEiITs=iITt+iUl@8c8pI~> -!B:&Nj+5m7fn%h-fn%hpg%=;*_`*)~> -!BpJTm=FDNk(2ZGk(2[5k4J$AeieN~> -!BU8Ql%.cDi.9g;i.9h)i:Q77c8pI~> -!B:&Nj+5m7fn%h-fn%hpg%=;*_`*)~> -!BpJTm=FDNk(2ZGk(2[5k4J$AeieN~> -!BU8Ql%.cDi.9g;i.9h)i:Q77c8pI~> -!B:&Nj+5j6fR_\+fR_\nf_"2)_`*)~> -!BpJTm=FAMjalNEjalO3jn.p@eieN~> -!BU8Ql%.cDi.9g;i.9h)i:Q77c8pI~> -!B:&Nj+5j6fR_\+fR_\nf_"2)_`*)~> -!BpJTm=FAMjalNEjalO3jn.p@eieN~> -!BU8Ql%.`Chgs[9hgs\'ht6.6c8pI~> -!B:&Nj+5g5f7DP)f7DPlfC\)(_`*)~> -!BpJTm=F>LjFQBCjFQC1jRhg?eieN~> -!BU8Ql%.`Chgs[9hgs\'ht6.6c8pI~> -!B:&Nj+5g5f7DP)f7DPlfC\)(_`*)~> -!BpJTm=F>LjFQBCjFQC1jRhg?eieN~> -!BU8Ql%.]BhLXO7hLXP%hXp%5c8pI~> -!B:&Nj+5d4eq)D'eq)Djf(@u'_`*)~> -!BpJTm=EE2b(7]db(7^Rb4P'%eieN~> -!BU8Ql%-[%_1BFR_1BG@_=Zsmc8pI~> -!B:&Nj+4OfZ[oH6Z[oI$Zh38Y_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpJTmCK9Jm=FYUm=FYUmJcJReieN~> -!BU8Ql+3F:l%/)Ml%/)Ml2KoJc8pI~> -!B:&Nj1:2#j+66Aj+66Aj8S'>_`*)~> -!BpJTm/X,up&M(Cm=FZNm4[>7\Z20[IrA^q91(]o-m'3<&.JsO"TSN+#7:nO',DZ<0f_To -!BU8Qkl@9eoDkG5l%/*FkqCc,[\oRPI;N=k8jYKk-Qa*;%h/jN"TSN+#7:nN',DZ;0K;Bk -!B:&NirG%NnGnN!j+67:j"JrqZ(mV@H"pS^83f*e-6 -!BpJTm/a3[^$Pg!JaJ$Ug?f76f=[i5D-01Y)?\@e$3M2!6s+;]U:f+EJaJ$Ulg4`(4b*~> -!BU8QklI@I^$,NfJa%aMg?At.e%)*)CK -!B:&NirP,/^#K*OJ`D=Ag>`P"cEs'lBiIAL)$A7d$3M.s5u_QLS$^K#J`D=Alf/#`2h1~> -!BpJTm/a3[^$Pg!JaJ$UiU$m'\ -!BU8QklI@I^$,NfJa%aMiTUTt[?Yl8599n#!&"g52b-n\G(uc8pI~> -!B:&NirP,/^#K*OJ`D=AiSt0hY`Ws)4WOUu!&"g52b-n\G(u -!BpJTm/a3[^[2*SoVmE/JaM[g#3WjnF\=7gq#C^91/;VAT!Z]"qpGEMqr,`*Sr%5X1)9Tb"p?JM -Fe$>3JaJ$Uq<\464b*~> -!BU8QklI@I^ZbgKnXY6qJa)C_#3 -!B:&NirP,/^Z,C@m>QVVJ`GtS#2ZqVE(DJ^q#C^91/;VAT!Z]"qpGEMqr,`*Sr%5X1)9Tb"p?GI -E0\#kJ`D=Aq;VLn2h1~> -!BpJTm/a3[^[2*:ql,/6JaMmm#4'@#D+GfNqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#l -!BU8QklI@I^Zbg2qji<&Ja)Ue#3WsnCI]NKqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#l;CRN0) -Ja%aMs60R03e.~> -!B:&NirP,/^Z,C(q2BmbJ`H1Y#3!@_Bgj-FqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#i8BpHKm -J`D=As5O-t2h1~> -!BpJTm/a3[^[2*:ql,/6JaN'r"m`XW?S_rb!!WNR;0o"RmB-BmmD5QD;()PE!!NT`?]DP\JaJ-X -!S0Da~> -!BU8QklI@I^Zbg2qji<&Ja)dj"m<7M?8;c`!!WNR;0o"RmB-BmmD5QD;()PE!!NT_?Ac,QJa%jP -!R<`V~> -!B:&NirP,/^Z,C(q2BmbJ`H@^"lZ\@>;6B\!!WNR;0o"RmB-BmmD5QD;()PE!!NT^>DKHAJ`DFD -!Q-jH~> -!BpJTm/a3[^[2*:ql,/6JaN7""ma3o@P7o_!!OH?Lo]&'U&P;oe>nC$+8c*B"YX>Ma6Sp -4b*~> -!BU8QklI@I^Zbg2qji<&Ja)so"mnC$+8c*B"YO2H`92^9M -!B:&NirP,/^Z,C(q2BmbJ`HOc"l[4W?7cnC$+8c*B">*r@^Ysb(M;nWS -2h1~> -!BpJTm/a3[kNr6Lg?esUql,/6JaNC&"Qlk18-Sql"T^YkO2(7Nrrqu.O'apKr;Zs(89V/uJaJHa -!S0Da~> -!BU8QklI@IkNMsHg?A[Mqji<&Ja**s"QHJ(7g8hk"T^YkO2(7Nrrqu.O'apKr;Zs(7s(fkJa&0Y -!R<`V~> -!B:&NirP,/kMlOBg>`7Cq2BmbJ`H[g"Pfnp70NPh"T^YkO2(7Nrrqu.O'apKr;Zs'7<,6\J`DaM -!Q-jH~> -!BpJTm/a3[kNr6Lg?esUql,/6JaEX.g7rC<"oSE(*`S$4o8EVOo>$5_*rQ'A"Yshfg4AXRm/bd$ -J,~> -!BU8QklI@IkNMsHg?A[Mqji<&Ja!@&f:Zh4"oSE(*`S$4o8EVOo>$5_*rQ'A"Yj_af7E1KklK'j -J,~> -!B:&NirP,/kMlOBg>`7Cq2BmbJ`?pod@=f&"T8<'*`S$4o8EVOo>$5_*rQ'A">FGXd=L>?irR%V -J,~> -!BpJTm/a3[rp9ae6L=[ -!BU8QklI@IrojIa60S:3!!)TS!!(a;!kS9"Ja%jP"Q$"h.KTMK"9UN%YkWeL"Sf3A2$ -!B:&NirP,/ro4%[5N;Y%!!)TM!!(a5!k.o`J`DFD"PBDZ.09DJ"9UN%YkWeL"Sf3A2$ -!BpJTm/a3[rp9ae?!! -!BU8QklI@IrojIa;hk88!!)TS!!(a;!kS9"Ja%sS"1E>3"o\K)$:0-QoR[&?!! -!B:&NirP,/ro4%[;1ni-!!)TM!!(a5!k.o`J`DOG"0ll)"TAB($:0-QoR[&?!! -!BpJTm/a3[rp9dfh^-ACm2l>qmH.[`%:J>cmH.OX'n?;OmHSX)#Z9RJmAVK;*KKCO!l"Q2JaJB_ -"5&l8&,lP3"?:eDpjrJ8rri,3HoM9.!! -!BU8QklI@IrojLbgEjf;koToil/GnV%:8)Zl/PkP'n-/Il/ljs#Z':@l)#g3*/s.H!kS9"Ja&*W -"4WN0&,lP3"?:eDpjrJ8rri,3HoM9.!! -!B:&NirP,/ro4(\eg/$0iu\9]j4mcG$s_WKj5!]A'RKi?j5=\d#Yiq2j.[k'*/Nk>!k.o`J`D[K -"4*$%%fQG2"?:eDpjrJ8rri,3HoM9.!!<^)O3`C;SDsXf2h1~> -!BpJTm/a3[rp;$4mB\M1mHjo@m;#/DfKa?Am;>DHfgPo.m -!BU8QklI@Iroka0l*)l&l0/34l"NQ9e3@d6l"if>eO0E%l$#A -!B:&NirP,/ro5=*j/aljj5U."j(:X(cTQ"&j(Um-cU%Wlj)dH,f2Z,:it@d9aB@cf!k.o`J`DdN -"1E2&!r`0%12X;fJcG!7"7rd71B%7U!\\Q%J`EB_!Q-jH~> -!BpJTm/a3[rp:s2mHne1mHjo@m24%6mE$75m2=.8mE5Lsm2a:8mFW0@m2Ll/kNr>bql,/6P3iA8 -X^N(G!! -!BU8QklI@Irok[.l03#&l0/34knqJ*l,=P)ko%S,l,Negko@Y+l-pI4ko,9$kNN&Zqji<&P3E)0 -WaH\C!! -!B:&NirP,/ro57(j5Xiij5U."itoSmj1lMliu#\oj2(fViuGhoj3JG"iu3NjkMlWPq2BmbP2cZ% -VHk#;!! -!BpJTm/a3[rp:U(mHs'i[I!t]m/uY@mHFc@m/uY@mHFW -!BU8QklI@Irok=$l077^ZKVARkl^)4l/`'4kl^)4l/_p0klgqb#6F)R\OI2MT]t\B])/%Ll':K8 -i1F![rW!$BC:3ees4dPUpU+`XrW!$2 -!B:&NirP,/ro4msj5\uJY2]NBire6"j51""ire6"j50jsiro;\#6ElFZpbTGSE]&8[eYl5j-AX, -g7(tNrW!$BC:3ees4dPUpU+`XrW!$2;OcBkj/1i;_`*)~> -!BpJTm/a3[rp9[crp:NA-K+slm24(7mE-=6m2=.8mE>Rtm2ORMm/a1%l0SPdql,/6R-b"=Thc!o -!!=d#cMiCpec,aNc@%8C!! -!BU8QklI@IrojC_rok6:-/ARcknqM+l,FV*ko%S,l,Wkhko.qDklIXsl0/8\qji<&R-=_5SkTOj -!!=d#cMiCpec,aNc@%8C!! -!B:&NirP,/ro3tYro4g/,hE%VitoVnj1uSmiu#\oj21lWiu6,9irPkhl/MiRq2BmbR,\;)RS*td -!!=d#cMiCpec,aNc@%8C!! -!BpJTm/a3[rp9[crTtb`=9.aUBh6q16Yu/WDFiL77f_rDHpu9D_bogg<6==$'C"lc^AFm\m@3JL -kbqMk!!!$ZM;!O\c2S+(M)YM9!"Du-k^i-&m/bd$J,~> -!BU8QklI@IrojC_rTPJYGcLCe!%-70)T:H:5m:^ea4Z;T7^m''\W^])/%Ll'poD -jJGod!!!$ZM;!O\c2S+(M)YM9!"Dr*jFQQsklK'jJ,~> -!B:&NirP,/ro3tYrSo&P<<2(>AOXtl5\K-;BgpFr6ic9-G!a.)]1q>G:r(q\''\EX[eYl5j.#'8 -hk -!BpJTm/a3[rp9[crTtcp63-E?j]`-%?0:PAk#hs)J,o!(l[9cW.\5toR3Db^X6K!Q^AFm\m@EVG -[;-*J!!5$;j+76NrrV5?2?!RW$#?r"mB5gWeieN~> -!BU8QklI@IrojC_rTPKh5lg06iE?Wu>N4o3i`HI$IK8WskB\*O.@TMcQQcP[W9NOJ])/%Ll(.&? -Z>'^F!!5$;j+76NrrV5?2?!RW$#6bsl)s7Oc8pI~> -!B:&NirP,/ro3tYrSo'\560a(gK+dl=kr&tgf4UoHN<*diHH7E.$ioRP9C&UV!6n@[eYl5j.533 -Y%J(?!!5$;j+76NrrV5?2?!RW$"pDlj0%DC_`*)~> -!BpJTm/a3[^[2*:ql,/6T^;g,GTctc!\B#ZJcERd!o&AZrW!!BGgCs.Z0_SC4b*~> -!BU8QklI@I^Zbg2qji<&T]lO%Fs-ba!\B#ZJcERd!o&AZrW!!BG0GO%Z0;;73e.~> -!B:&NirP,/^Z,C(q2BmbT]6*oF!(A]!\B#ZJcERd!o&AZrW!!AF2rjlZ/Yl&2h1~> -!BpJTm/a3[^[2*:ql,/6U[8?HPWJmG!"jtRJcE@^#k!EZ!!!$]Pi@8][-[nF4b*~> -!BU8QklI@I^Zbg2qji<&UZi'@Ou`UD!"jtRJcE@^#k!EZ!!!$\P2:cS[-7V:3e.~> -!B:&NirP,/^Z,C(q2BmbUZ2X4N]@+?!"jtRJcE@^#k!EZ!!!$[NnApC[,V2)2h1~> -!BpJTm/a3[^[2*:ql,/6Vm^Q3$=$31&5?+baU[d=+H4b*~> -!BU8QklI@I^Zbg2qji<&V7(?1$=$31&5>If=L[cmh<3e.~> -!B:&NirP,/^Z,C(q2BmbV;hig=UG-/$=$31&5=gWb?[c7D+2h1~> -!BpJTm/a3[^[2*:ql,/6W9jZEN@k,0!]utEJcE"T!qVsErW!!ONSoBT\a9FK4b*~> -!BU8QklI@I^Zbg2qji<&W9FB=MCnf-!]utEJcE"T!qVsErW!!OMVNdI\`j.?3e.~> -!B:&NirP,/^Z,C(q2BmbW8ds2LF`?(!]utEJcE"T!qVsErW!!MLY%+;\`3_.2h1~> -!BpJTm/a3X^Zkm4ql,/6WpL&+>mLE1'm/,[s/Z/)flRr/!!llFJaL):!S0Da~> -!BU8QklI@F^ZGU-qON3%Wp'c#>6k3/'m/,[s/Z/)flRr/!!lf@Ja'f2!R<`V~> -!B:&NirP,,^Yf1"q2BmbWoF>n=U5!-'m/,[s/Z/)flRr/!!l`:J`FB&!Q-jH~> -!BpJTm/a3R^Z>OAn>V!+XmHDXRl(0G!C -!BU8QklI@@^Yo79m[\pnXm$,PQo"dC!C -!B:&NirP,&^Y8h.lAU;SXlB]EPVW:>!Cf732h1~> -!BpJTm/a3M^#&ghJaKZ.#M=8 -!BU8QklI@;^"WOXJa'B&#Lmo6!!!7Bk^ic-rs.b+#64`@G1;*-_!(mF3e.~> -!B:&NirP,!^"*1BJ`Ero#L@H-!!!7Bk^ic-rs.b+#64`?F3fEt^uGI52h1~> -!BpJTm/a3G^"ECbJaK`0#JX:B!!"U>on!.6rs/4c/H>bR -!BU8QklI@5^"*1SJa'H(#J3t=!!"U>on!.6rs/4c/H>bR -!B:&NirP+p^!Hbon!.6rs/4c/H>bR;R_5;_W([72h1~> -!BpJTmCK9JmBl6cm&N;M!!?*4JcD):#JO%;!!#3`m"+QCm/bd$J,~> -!BU8Ql+3F:l*T[[kbpWE!!?*4JcD):#JO%;!!#0\k^i!;klK'jJ,~> -!B:&Nj1:2#j0[hOihSX9!!?*4JcD):#JO%;!!#*Vidp./irR%VJ,~> -!BpJTm/X,urrB$LmC)Beka*e"!!n#BJcCr6#Om-I!!"O9k^i-Am/bd$J,~> -!BU8Qkl@9errAU@l*fg]jHM+o!!n#BJcCr6#Om-I!!"L5jFQR9klK'jJ,~> -!B:&NirG%NrrA"/j0mtQhiT>f!!n#BJcCr6#Om-I!!"I1hgsh.irR%VJ,~> -!BpJTm/X,urrB$LmC;Ngl&-/S!#pdaJcCf2#OmQh!!!Xil%/6Dm/bd$J,~> -!BU8Qkl@9errAU@l+#s_jbXQL!#pdaJcCf2#OmQh!!!Ufjal[ -!B:&NirG%NrrA"/j1++Shh;XB!#pdaJcCf2#OmQh!!!Ubhgsh0irR%VJ,~> -!BpJTm/X,urrB$LmCMZihg6":!%X];JcCZ.#PjuB!!![Zhgt1 -!BU8Qkl@9errAU@l+6*agNaD3!%X];JcCZ.#PjuB!!!XWgO\V4klK'jJ,~> -!B:&NirG%NrrA"/j1=7UeohZ+!%X];JcCZ.#PjuB!!!XTeq)l)irR%VJ,~> -!BpJTm/X,urrB$LmC_fkgiX,-!$@a1JcCN*#QC58!!!OPgk"k;m/bd$J,~> -!BU8Qkl@9errAU@l+H6cflIZ(!$@a1JcCN*#QC58!!!ONfn&D4klK'jJ,~> -!B:&NirG%NrrA"/j1OCWdr5cs!$@a1JcCN*#QC58!!!LJdt-Q(irR%VJ,~> -!BpJTm/X,urrB$LmCqrlg275t!(">Ms+11S^-M`!$?"RKmEb/#eieN~> -!BU8Qkl@9errAU@l+ZBdenbZn!(">Ms+11S^-M`!$>e:El-JSpc8pI~> -!B:&NirG%NrrA"/j1aOXctWmf!(">Ms+11S^-M`!$>Rq=j3Q`d_`*)~> -!BpJTm/X-`rrBjOrrB$LmD/)nh/Nf&!(b%Zs+14Krs$D4!!!CHh1=t@m/bd$J,~> -!BU8Qkl@:PrrBjOrrAU@l+lNfg2@?!!(b%Zs+14Krs$D4!!!CFg4AM9klK'jJ,~> -!B:&NirG&9rrBjOrrA"/j1s[Ze8,Km!(b%Zs+14Krs$D4!!!CCe:HZ-irR%VJ,~> -!BpJTm/X-`rrE,8_uB_9JaL>A#3't?!!$-VJcC<$q>UZS=9&=3HfBVDe*R1e4b*~> -!BU8Qkl@:PrrE,8_uB_-Ja(&9#2XV9!!$-VJcC<$q>UZS=9&=3H/=,:e*-nY3e.~> -!B:&NirG&9rrE,8_uB^qJ`FW-#2")/!!$-VJcC<$q>UZS=9&=2G1_B+e)LJH2h1~> -!BpJTm/X-`rrN07^r66QWIaHTm0;[)'*&##aFXABs7QBra@$".'8,CtmFCS)eieN~> -!BU8Qkl@:PrrN07^r66QSUp%Dkm$*t'*&##aFXABs7QBra@$".'7o+nl.,#!c8pI~> -!B:&NirG&9rrN07^r66QN.L$-is+7e'*&##aFXABs7QBra@$".'7S\ej43/j_`*)~> -!BpJTm/X-`rrW8:'Ys;>rW(RM!3(P:`pEurOVe&u426@HJcG9?#/<5"!#UjaJaM(V!S0Da~> -!BU8Qkl@:PrrW8:'Ys;>rW(RM!1e]*`p!]jNu.is426@HJcG9?#/<5"!#Ud[Ja(eN!R<`V~> -!B:&NirG&9rrW8:'Ys;>rW(RM!/uKh`o@9^M\c?n426@HJcG9?#/<5"!#LRPJ`GAB!Q-jH~> -!BpJTm/X-`rr`?%^_FTSrr<&NrrB$LmDnStW$q]H1:Dc6JcG-;"h$/d!%FjtmF^e,eieN~> -!BU8Qkl@:Prr`?%^_FTSrr<&NrrAU@l,W#lVC2EE1:Dc6JcG-;"h$/d!%=^ql.G5$c8pI~> -!B:&NirG&9rr`?%^_FTSrr<&NrrA"/j2^0`TdKg?1:Dc6JcG-;"h$/d!%4Ikj4NAm_`*)~> -!BpJTm/X-`rriE&s1f>ao)A[ifDbiMJaLSH#/<;$!$\??JcC<$li.1gV]l*@4hlR8g?epl4b*~> -!BU8Qkl@:PrriE&s1f>ao)A[ifDbiAJa(;@#.ltt!$\??JcC<$li.1gV]l*@4M-1/g?AX`3e.~> -!B:&NirG&9rriE&s1f>ao)A[ifDbi0J`Fl4#.HYo!$\??JcC<$li.1gV]l*@41Be$g>`4O2h1~> -!BpJTm/X-`rr<&urrR`Op%/1`!8%5NWIaH[m0:s;!< -!BU8Qkl@:Prr<&urrR`Op%/1`!8%5NSUp%Kkm#F3!< -!B:&NirG&9rr<&urrR`Op%/1`!8%5NN.L$4is*S%!< -!BpJTm/X-`rriE&s1f>ao)A[ifDbiMJaL_L#39q6!!m`8JcC<$j8T>OFU.sRG3"5AhX(?p4b*~> -!BU8Qkl@:PrriE&s1f>ao)A[ifDbiAJa(GD#2jS0!!m`8JcC<$j8T>OFU.sRFPq`7hWY'd3e.~> -!B:&NirG&9rriE&s1f>ao)A[ifDbi0J`G#8#24&'!!m`8JcC<$j8T>OFU.sRES?!(hW"XS2h1~> -!BpJTm/X-`rr`?%^_FTSrr<&NrrB$LmEY)&SK%V0DX`5WJcFX-"n6C0!$%P\mGI:3eieN~> -!BU8Qkl@:Prr`?%^_FTSrr<&NrrAU@l-AMsRi;>-DX`5WJcFX-"n6C0!#qDYl/1_+c8pI~> -!B:&NirG&9rr`?%^_FTSrr<&NrrA"/j3HZgQQ#o)DX`5WJcFX-"n6C0!#q8Uj58kt_`*)~> -!BpJTm/X-`rrW8:'Ys5 -!BU8Qkl@:PrrW8:'Ys5 -!B:&NirG&9rrW8:'Ys5 -!BpJTm/X-`rrN07_!h:'!8%5NWIaHbm0;W_!<CmGmR7eieN~> -!BU8Qkl@:PrrN07_!h:'!8%5NSUp%Rkm$'U!< -!B:&NirG&9rrN07_!h:'!8%5NN.L$;is+4G!< -!BpJTm/X-`rrE,8nGiCdg&D&OJaLtS#4.]l!!RB2JcC<$ec,jBE -!BU8Qkl@:PrrE,8nGiCdg&D&CJa(\K#3_ -!B:&NirG&9rrE,8nGiCdg&D&2J`G8?#3(aZ!!RB2JcC<$ec,jBE -!BpJTm/X-`rrBjOrrB$LmFCS-a?0G&2qW]]JcF-t"kYa6!'J>RmH3d:eieN~> -!BU8Qkl@:PrrBjOrrAU@l.,#%`B+&"2qW]]JcF-t"kYa6!'A/Nl/q42c8pI~> -!B:&NirG&9rrBjOrrA"/j43/n^cDGq2qW]]JcF-t"kYa6!'7oHj6#A&_`*)~> -!BpJTm/X,urrB$LmFU_0j`1P*'qkPWs+13rrs&Iq'`\GYjalg_m/bd$J,~> -!BU8Qkl@9errAU@l.>/(iG\r#'qkPWs+13rrs&Iq'`\DViIU7WklK'jJ,~> -!B:&NirG%NrrA"/j4E;qgMI)o'qkPWs+13rrs&Iq'`\DSgO\DKirR%VJ,~> -!BpJTm/X,urrB$LmF^e0^)m=VB'k0LJcEpn"mon'!$Aq+mHO!=eieN~> -!BU8Qkl@9errAU@l.G5(],gqRB'k0LJcEpn"mon'!$8b'l07F5c8pI~> -!B:&NirG%NrrA"/j4NAq[N,>LB'k0LJcEpn"mon'!$/M!j6>S)_`*)~> -!BpJTm/X,urrB$LmFpq2hHU']/]rYEJcEdj"j/Cs!F4K4mHa-?eieN~> -!BU8Qkl@9errAU@l.YA*g0+LW/]rYEJcEdj"j/Cs!F"3.l0IR7c8pI~> -!B:&NirG%NrrA"/j4`MseQ;hP/]rYEJcEdj"j/Cs!Edm'j6P_+_`*)~> -!BpJTm/X,urrB$LmG%"3UDNt:LAQQ%JcE^h"oF#[!#VJ^mHj3@eieN~> -!BU8Qkl@9errAU@l.bG+TGRY7LAQQ%JcE^h"oF#[!#VA[l0RX8c8pI~> -!B:&NirG%NrrA"/j4iStS/2/2LAQQ%JcE^h"oF#[!#M/Vj6Ye,_`*)~> -!BpJTm/X,urrB$LmG7.5fMDPJ4P55bJcERd"kYp;!)V=!mI'?BeieN~> -!BU8Qkl@9errAU@l.tS-e4ouD4P55bJcERd"kYp;!)D$pl0dd:c8pI~> -!B:&NirG%NrrA"/j5&`!cV+<=4P55bJcERd"kYp;!)1^ij6kq._`*)~> -!BpJTm/X,urrB$LmG@46S.Yf2PPp(4JcELb"oXVo!"tfQmI0ECeieN~> -!BU8Qkl@9errAU@l/(Y.R1TE.PPp(4JcELb"oXVo!"kWMl0mj;c8pI~> -!B:&NirG%NrrA"/j5/f"Pn=!*PPp(4JcELb"oXVo!"kKIj6u"/_`*)~> -!BpJTm/X,urrB$LmGR@8gJIqN6fWatJcE@^"lhrM!)_L%mIBQEeieN~> -!BU8Qkl@9errAU@l/:e0fM;JI6fWatJcE@^"lhrM!)M6ul1+!=c8pI~> -!B:&NirG%NrrA"/j5Ar$dS0]A6fWatJcE@^"lhrM!):mmj72.1_`*)~> -!BpJTm/X,umJs5;mG[F9W##FCRf7m -!BU8Qkl@9emJrf/l/Ck1VAB4ARf7mc8pI~> -!B:&NirG%NmJr2sj5K#%Tb[V;Rf7m -!BpJTm/X,umJs5;mGmR;iEcNb52LkjJcE.X"l;EC!FF`9mI]cHeieN~> -!BU8Qkl@9emJrf/l/V"3h-9s\52LkjJcE.X"l;EC!F4H3l1F3@c8pI~> -!B:&NirG%NmJr2sj5]/'f3/1T52LkjJcE.X"l;EC!F"*+j7M@4_`*)~> -!BpJTm/X,umJs5;mH!X-JcE(V"oXAc!$BF9mIfiIeieN~> -!BU8Qkl@9emJrf/l/_(4a;t-JcE(V"oXAc!$944l1O9Ac8pI~> -!B:&NirG%NmJr2sj5f5(_]8^_N;\>-JcE(V"oXAc!$/t.j7VF5_`*)~> -!BpJTm/X,umJs5;mH3d>l?EF31Y%'VJcDqR"k>C/"F03_mJ#uKeieN~> -!BU8Qkl@9emJrf/l/q46k&pk-1Y%'VJcDqR"k>C/"ErpYl1aECc8pI~> -!B:&NirG%NmJr2sj6#A*i,]#$1Y%'VJcDqR"k>C/"EWLPj7hR7_`*)~> -!BpJTm/X,umJs5;mH -!BU8Qkl@9emJrf/l0%:7c8Ye*Gl!!kJcDkP"o -!B:&NirG%NmJr2sj6,G+a>O#"Gl!!kJcDkP"o -!BpJTm/X-`mJsT1mJs5;mHEp?T+CuA]n-37s/H#$]c-q_T7QD*m/bd$J,~> -!BU8Qkl@:PmJsT1mJrf/l0.@7SIbc?]n-37s/H#$]c-q_SUp&$klK'jJ,~> -!B:&NirG&9mJsT1mJr2sj65M+R1B9:]n-37s/H#$]c-q^R=XDoirR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WIaI&m01T]!""qiJcC<$V>g_uPmIF?aarjWm/bd$J,~> -!BU8Qkl@:PmK*A%Zc)83SUp%kklo'U!""qiJcC<$V>g_uPmIF>`e!CPklK'jJ,~> -!B:&NirG&9mK*A%Zc)83N.L$Tis!4H!""qiJcC<$V>g_uPmIF=^k(PDirR%VJ,~> -!BpJTm/X-`mK3I)'=7;u"g(#p&m*i@mJs5;mHj3CS.#B -!BU8Qkl@:PmK3I)'=7;u"g(#p&m*i@mJrf/l0RX;R1''9eUdaOs.TGqeK"VuR=XW$klK'jJ,~> -!B:&NirG&9mK3I)'=7;u"g(#p&m*i@mJr2sj6Ye/PmdX5eUdaOs.TGqeK"VuQ%@uoirR%VJ,~> -!BpJTm/X-`mKJaMmm"m9=p!*\uFs+13Brrr!t!!$KkJaNL)!S0Da~> -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;Sna6G>#MJMFWIaI*m0(]g!!npBs+13>rreYo!&2]Lm/l\+4b*~> -!BU8Qkl@:PmKEUjs1f;Sna6G>#MJMFSUp%oklf0_!!npBs+13>rreYo!&)NHklU+p3e.~> -!B:&NirG&9mKEUjs1f;Sna6G>#MJMFN.L$Xirm@S!!npBs+13>rreYo!%u9Bir\8Y2h1~> -!BpJTm/X-`mJm7drrR`Ojmqg?UHI5t!3(P:nEg@a%fdj!JcC<$RK!E7,6/7[JaEKh4b*~> -!BU8Qkl@:PmJm7drrR`Ojmqg?UHI5t!1e]*nEC(Z%fdj!JcC<$RK!E7,6/7XJa!3\3e.~> -!B:&NirG&9mJm7drrR`Ojmqg?UHI5t!/uKhnDaYO%KI`uJcC<$RK!E7,6/4RJ`?dK2h1~> -!BpJTm/X-`mKEUjs1f;So'QRq+j8R,!3(P:o'HVIHia:=oR[$ns-N`hoLJr`I-cLQ!S0Da~> -!BU8Qkl@:PmKEUjs1f;So'QRq+j8R,!1e]*o'$>AH3+(;oR[$ns-N`hoLJr`HK^"G!R<`V~> -!B:&NirG&9mKEUjs1f;So'QRq+j8R,!/uKho&Bo5G6.b8oR[$ns-N`hoLJr`GN+88!Q-jH~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=78t!hC4CfBrX3!S0Da~> -!BU8Qkl@:PmK3I)'=78t!hC4CfBrX0Ja)gk"NMki&@I)hJcCl4"LSd@-c^r*!R<`V~> -!B:&NirG&9mK3I)'=78t!hC4CfBrWtJ`HC_"MuJc&@I)hJcCl4"LSd@-GkJs!Q-jH~> -!BpJTm/X-`mK*A%Zh!McKH/(amJs5;mIfiLYR:F]g4B9Ts,[0_g+*.2Y_MNGeieN~> -!BU8Qkl@:PmK*A%Zh!McKH/(amJrf/l1O9DXU>+Zg4B9Ts,[0_g+*.2XbQ'@c8pI~> -!B:&NirG&9mK*A%Zh!McKH/(amJr2sj7VF8W!`SUg4B9Ts,[0_g+*.2W.s=5_`*)~> -!BpJTm/X-`mK!,n4b*~> -!BU8Qkl@:PmK! -!B:&NirG&9mK!Z:*!ru9jJcC<$NW0.P;ZHoLLZ8EQ2h1~> -!BpJTm/X-`mJsT1mJs5;mJ-&Ok["5iO+I=^s,$aYNr]5ek_\[-eieN~> -!BU8Qkl@:PmJsT1mJrf/l1jKGjBV`dO+I=^s,$aYNr]5djGE+%c8pI~> -!B:&NirG&9mJsT1mJr2sj7qX;hc^!\O+I=^s,$aYNr]5ahhg@o_`*)~> -!BpJTm/X,umJs5;mJ6,PgcYWDWe(2$s+gUWWX/YggktJ"eieN~> -!BU8Qkl@9emJrf/l1sQHffT6@We(2$s+gUWWX/Yffo#"pc8pI~> -!B:&NirG%NmJr2sj8%^ -!BpJTm/X,umJs5;mJ?2Qas-m(b(9SDs+UIUar(1(b)>WfeieN~> -!BU8Qkl@9emJrf/l2'WI`ZkI$b(9SDs+UIUar(1(`f''^c8pI~> -!B:&NirG%NmJr2sj8.d=_'/jsb(9SDs+UIUar(1'_2I=S_`*)~> -!BpJTm/X,umJs5;mJH8RZNgIbj+75]s+C=Sj"UN=Z]+8PeieN~> -!BU8Qkl@9emJrf/l20]JYQk._j+75]s+C=Sj"UN=Y`.fIc8pI~> -!B:&NirG%NmJr2sj87j>Ws8VZj+75]s+C=Sj"UN=X,Q'>_`*)~> -!BpJTm/X,umJs5;mJQ>SRg/phoR[$ns+11QoM5GlRuQe9eieN~> -!BU8Qkl@9emJrf/l29cKQj*OdoR[$ns+11QoM5GkR#U>2c8pI~> -!B:&NirG%NmJr2sj8@p?PQh+`oR[$ns+11QoM5GkP`=](_`*)~> -!BpJTm/X,umJs5;mJZDTJH5airIP!"s+14Mrri:>!!.Y2m/bd$J,~> -!BU8Qkl@9emJrf/l2BiLIfTOgrIP!"s+14Mrri:>!!.S0klK'jJ,~> -!B:&NirG%NmJr2sj8J!@HN=+crIP!"s+14Mrri:>!!.G,irR%VJ,~> -!BpJTm/X,umJs5;mJlPVl=9krNe.4]s+14Irre>`!+bAVm/bd$J,~> -!BU8Qkl@9emJrf/l2TuNk$e;lNe.4]s+14Irre>`!+P)PklK'jJ,~> -!B:&NirG%NmJr2sj8\-Bi*ZNdNe.4]s+14Irre>`!+=`HirR%VJ,~> -!BpJTm/X,umJs5;m02n=9)o6tJcC<$JcGQG"KD_-9BD<'!S0Da~> -!BU8Qkl@9emJrf/klp>18cT-sJcC<$JcGQG"KD_-9&Yos!R<`V~> -!B:&NirG%NmJr2sis"Jt8,rpqJcC<$JcGQG"KD_-8DB9e!Q-jH~> -!BpJTm/X,urrB$Lm0)H)!#!/"s+13$s7cNr_@ci(j-&d1eieN~> -!BU8Qkl@9errAU@klflu!#!/"s+13$s7cNr_@ci'hid4)c8pI~> -!B:&NirG%NrrA"/irn$h!#!/"s+13$s7cNr_@ci&fok@r_`*)~> -!BpJTm/X,urrB$Mm0(ui!$0mHs+13$s7QBph&QJFes#J%eieN~> -!BU8Qkl@9errAUAklfE`!$0mHs+13$s7QBph&QJEdZ`nrc8pI~> -!B:&NirG%NrrA"0irmUT!$0mHs+13$s7QBph&QJDc'./g_`*)~> -!BpJTm/X,urrB$Nm0(]W!%R&\s+13$s7?6nj=1-PcBR\seieN~> -!BU8Qkl@9errAUBklf-O!%R&\s+13$s7?6nj=1-Pb*;,kc8pI~> -!B:&NirG%NrrA"1irm=C!%R&\s+13$s7?6nj=1-O`K]B`_`*)~> -!BpJTm/X,urrB$Om0(?E!&j1ps+13$s7-*llo"h\`0K]jeieN~> -!BU8Qkl@9errAUCkleg>!&j1ps+13$s7-*llo"h\_3O6cc8pI~> -!B:&NirG%NrrA"2irm"2!&j1ps+13$s7-*llo"h[]TqLX_`*)~> -!BpJTm/X,urrB$Pm0's3!(6=.s+13$s6osjnj -!BU8Qkl@9errAUDkleF+!(6=.s+13$s6osjnj -!B:&NirG%NrrA"3irlUu!(6=.s+13$s6osjnj -!BpJTm/X-`rrBjOrrB$Qm0'Wr!)`NBs+13$s6]ghpe_"oYa=_XeieN~> -!BU8Qkl@:PrrBjOrrAUEkle*k!)`NBs+13$s6]ghpe_"oXdA8Qc8pI~> -!B:&NirG&9rrBjOrrA"4irl:`!)`NBs+13$s6]ghpe_"oW0cNF_`*)~> -!BpJTm/X-`rrE,8_uB_9L[>5E#QRp'JcC<$JcG'9"T2:##ca9Z!S0Da~> -!BU8Qkl@:PrrE,8_uB_-LZnr>#QRp'JcC<$JcG'9"T2:##cF'S!R<`V~> -!B:&NirG&9rrE,8_uB^qLZ8N4#QRp'JcC<$JcG'9"T2:##c!dI!Q-jH~> -!BpJTm/X-`rrN07^r66QWJKpEV?[*9rdk*#s+147rri=9!!fBhm/bd$J,~> -!BU8Qkl@:PrrN07^r66QSVZM5UBU^5rdk*#s+147rri=9!!]3dklK'jJ,~> -!B:&NirG&9rrN07^r66QN/6KsT*>:1rdk*#s+147rri=9!!]'`irR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?"ggGu&m+/IrrB$Tm0'*e!,qjfs+13$s6'Cbrbhc@Tpk?LeieN~> -!BU8Qkl@:PrrW8:'Ys>?"ggGu&m+/IrrAUHkldR^!,qjfs+13$s6'Cbrbhc@SsnmEc8pI~> -!B:&NirG&9rrW8:'Ys>?"ggGu&m+/IrrA"7irkeS!,qjfs+13$s6'Cbrbhc?R[W7;_`*)~> -!BpJTm/X-`rr`?%^_FTVrrkcpnFD,jg&D&OMX:M9"9 -!BU8Qkl@:Prr`?%^_FTVrrkcpnFD,jg&D&CMWk53"9 -!B:&NirG&9rr`?%^_FTVrrkcpnFD,jg&D&2MW4f)"9 -!BpJTm/X-`rriE&s1f>anc&X`#hf4XWJg-GU&k=AJcC<$JcF^/"+("LU7CTOeieN~> -!BU8Qkl@:PrriE&s1f>anc&X`#hf4XSVu_7T)o">JcC<$JcF^/"+("LT:G-Hc8pI~> -!B:&NirG&9rriE&s1f>anc&X`#hf4XN/Q]uRfWS:JcC<$JcF^/"+("LS"/L>_`*)~> -!BpJTm/X-`rr<&urrR`Op%/1boS6)mrrB$Wm/rj\!.oe%JcC<$hu -!BU8Qkl@:Prr<&urrR`Op%/1boS6)mrrAUKkl[@V!.oe%JcC<$hu -!B:&NirG&9rr<&urrR`Op%/1boS6)mrrA":irbSL!.oe%JcC<$hu -!BpJTm/X-`rriE&s1f>aoDegj!>aGCrrB$Xm/s$b!.oe%JcC<$h>[S/!!K!em/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoDegj!>aGCrrAULkl[L[!.oe%JcC<$h>[S/!!JmbklK'jJ,~> -!B:&NirG&9rriE&s1f>aoDegj!>aGCrrA";irb_Q!.oe%JcC<$h>[S/!!Ja^irR%VJ,~> -!BpJTm/X-`rr`?%^_FTSrrVbD4k]i8WK-?JV?R$IJcC<$JcFL)"+("PVP!5VeieN~> -!BU8Qkl@:Prr`?%^_FTSrrVbD4k]i8SW;q:UBU^FJcC<$JcFL)"+("PUS$cOc8pI~> -!B:&NirG&9rr`?%^_FTSrrVbD4k]i8N/lp#T*54AJcC<$JcFL)"+("OT:b-E_`*)~> -!BpJTm/X-`rrW8:'Ys2;!VQcOrrB$Zm/s?n!-NkmJcC<$g&D.s!!fNsm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys2;!VQcOrrAUNkl[gf!-NkmJcC<$g&D.s!!]?oklK'jJ,~> -!B:&NirG&9rrW8:'Ys2;!VQcOrrA"=irc%\!-NkmJcC<$g&D.s!!]3kirR%VJ,~> -!BpJTm/X-`rrN07_".L/>LiW5E^8=X!3)(I"1/:5Dh7q>s+14%rr[0>#IL2l!S0Da~> -!BU8Qkl@:PrrN07_".L/>LiW5E^8=X!1f59"0i(2Dh7q>s+14%rr[0>#I0ue!R<`V~> -!B:&NirG&9rrN07_".L/>LiW5E^8=X!0!$""0;_-Dh7q>s+14%rr[0>#HXWZ!Q-jH~> -!BpJTm/X-`rrE,8nc&cm/d)qsl.Q(:WKHQN\I&=Ordk*#s+14%rri=9!"-92m/bd$J,~> -!BU8Qkl@:PrrE,8nc&cm/d)qsl.Q(:SWW.>[L*"Lrdk*#s+14%rri=9!"-0/klK'jJ,~> -!B:&NirG&9rrE,8nc&cm/d)qsl.Q(:N03-'YmLJGrdk*#s+14%rri=9!"-!*irR%VJ,~> -!BpJTm/X-`rrBjOrrB$]m/t9=!+(6VJcC<$e,KMV!"m/Em/bd$J,~> -!BU8Qkl@:PrrBjOrrAUQkl\a5!+(6VJcC<$e,KMV!"cuAklK'jJ,~> -!B:&NirG&9rrBjOrrA"@ircq*!+(6VJcC<$e,KMV!"cf -!BpJTm/X,urrB$^m0(]O!)`WEs+13$s3puNqb[>1cD9h.eieN~> -!BU8Qkl@9errAURklf-G!)`WEs+13$s3puNqb[>1b,"8&c8pI~> -!B:&NirG%NrrA"Airm=;!)`WEs+13$s3puNqb[>0`MDMp_`*)~> -!BpJTm/X,urrB$_m0(u_!(6O4s+13$s3^iLpd5$(etqa7eieN~> -!BU8Qkl@9errAUSklfEW!(6O4s+13$s3^iLpd5$(d\Z1/c8pI~> -!B:&NirG%NrrA"BirmUK!(6O4s+13$s3^iLpd5$'c)'G$_`*)~> -!BpJTm/X,urrB$`m0)5p!&jD!s+13$s3L]JnhpIth59Q?eieN~> -!BU8Qkl@9errAUTklf]h!&jD!s+13$s3L]JnhpIsg8=*8c8pI~> -!B:&NirG%NrrA"Cirmj[!&jD!s+13$s3L]JnhpIre>D7,_`*)~> -!BpJTm/X,urrB$am0)T,!%R>ds+13$s3:QHlm_uikGR\JeieN~> -!BU8Qkl@9errAUUklg'$!%R>ds+13$s3:QHlm_uhjJV5Cc8pI~> -!B:&NirG%NrrA"Dirn3l!%R>ds+13$s3:QHlm_ughP]B7_`*)~> -!BpJTm/X,urrB$bm0)]I!$:NYs+13$s3(EFm2c7#lDX(NeieN~> -!BU8Qkl@9errAUVklg-@!$:NYs+13$s3(EFm2c7"k,@MFc8pI~> -!B:&NirG%NrrA"Eirn:2!$:NYs+13$s3(EFm2c6ui2GZ:_`*)~> -!BpJTm/X,urrB$bm/pl!'%VX6JcC<$ao;Io&ccI@m/bd$J,~> -!BU8Qkl@9errAUVklYAp'%VX6JcC<$ao;Io&ccC>klK'jJ,~> -!B:&NirG%NrrA"Eir`Zh'%VX6JcC<$ao;Io&cc= -!BpJTm/X,urrB$cm/qn>#f;/mJcC<$a8Z7Y#QTFTm/bd$J,~> -!BU8Qkl@9errAUWklZD8#f;/mJcC<$a8Z7Y#QT@RklK'jJ,~> -!B:&NirG%NrrA"FiraW.#f;/mJcC<$a8Z7Y#QT4NirR%VJ,~> -!BpJTm/X,umJs5Sm/rgY!ighOJcC<$`W$%?!Wedjm/bd$J,~> -!BU8Qkl@9emJrfGkl[:R!ighOJcC<$`W$%?!We[gklK'jJ,~> -!B:&NirG%NmJr36irbMH!ighOJcC<$`W$%?!WeOcirR%VJ,~> -!BpJTm/X,umJs5Tm/sg%!02X1JcC<$_uBh!!!]p5m/bd$J,~> -!BU8Qkl@9emJrfHkl\9r!02X1JcC<$_uBh!!!Ta1klK'jJ,~> -!B:&NirG%NmJr37ircLh!02X1JcC<$_uBh!!!TU-irR%VJ,~> -!BpJTm/X,umJs5Um/tKB!-!MhJcC<$_>aUV!"d;Sm/bd$J,~> -!BU8Qkl@9emJrfIkl\p9!-!MhJcC<$_>aUV!"[)NklK'jJ,~> -!B:&NirG%NmJr38ird+.!-!MhJcC<$_>aUV!"ZoIirR%VJ,~> -!BpJTm/X,umJs5Vm/u,g!)\=IJcC<$^]+C5!$g:$m/bd$J,~> -!BU8Qkl@9emJrfJkl]T`!)\=IJcC<$^]+C5!$g1!klK'jJ,~> -!B:&NirG%NmJr39irdaS!)\=IJcC<$^]+C5!$]moirR%VJ,~> -!BpJTm/X,umJs5Wm0)W9!&=+ss+13$s1eR:oJ$>/kcX:ReieN~> -!BU8Qkl@9emJrfKklg'0!&=+ss+13$s1eR:oJ$>.jK@_Jc8pI~> -!B:&NirG%NmJr3:irn7$!&=+ss+13$s1eR:oJ$>-hlbu?_`*)~> -!BpJTm/X-`mJsT1mJs5Wm/pYp)<6;JJcC<$^&J2p)$"!Gm/bd$J,~> -!BU8Qkl@:PmJsT1mJrfKklY2k)<6;JJcC<$^&J2p)$!sFklK'jJ,~> -!B:&NirG&9mJsT1mJr3:ir`Hb)<6;JJcC<$^&J2p)$!jCirR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WLrP[Y5n[(JcC<$JcE:\"0)A&YH[BpeieN~> -!BU8Qkl@:PmK*A%Zc)83SY,-KX8r@%JcC<$JcE:\"0)A&XK^pic8pI~> -!B:&NirG&9mK*A%Zc)83N1],4VuZq!JcC<$JcE:\"0)A&W3G:__`*)~> -!BpJTm/X-`mK3I)'=75s!o"Unf^8a=T^;j)%fh34s+13$s0r"1JcH>)Z0_SC4b*~> -!BU8Qkl@:PmK3I)'=75s!o"Unf^8a1T]lR!%fh34s+13$s0r"1JcH>%Z0;;73e.~> -!B:&NirG&9mK3I)'=75s!o"Unf^8`uT]6-k%KM*3s+13$s0r"1JcH:tZ/Yl&2h1~> -!BpJTm/X-`mKWM/\^i[=e*rdk*#s+13Zrri="!%?j4m/bd$J,~> -!BU8Qkl@:PmKSY>9NhBr;%rdk*#s+13Zrri="!%6X/klK'jJ,~> -!B:&NirG&9mKN1o87fHpSsrdk*#s+13Zrri="!%-@(irR%VJ,~> -!BpJTm/X-`mKEUjs1f;So^2h'*p*ITmJs5\m0)cM!%[Vks+13$s0_k0nga]7m'H'[eieN~> -!BU8Qkl@:PmKEUjs1f;So^2h'*p*ITmJrfPklg3D!%[Vks+13$s0_k0nga]6kd0LSc8pI~> -!B:&NirG&9mKEUjs1f;So^2h'*p*ITmJr3?irn@6!%[Vks+13$s0_k0nga]4ij7YG_`*)~> -!BpJTm/X-`mJm7drrR`Ojn8$D7[ -!BU8Qkl@:PmJm7drrR`Ojn8$D7[ -!B:&NirG&9mJm7drrR`Ojn8$D7[l?"!"dk8s+13$s0M_-g(47.Zf;)(2h1~> -!BpJTm/X-`mKEUjs1f;Sp$Msd/aVm*f^8a=U[8/_!Woc\s+13$s0;S+[/pE/[-[nF4b*~> -!BU8Qkl@:PmKEUjs1f;Sp$Msd/aVm*f^8a1UZhlY!Woc\s+13$s0;S+[/pE-[-7V:3e.~> -!B:&NirG&9mKEUjs1f;Sp$Msd/aVm*f^8`uUZ2HN!Woc\s+13$s0;S+[/pE([,V2)2h1~> -!BpJTm/X-`mK)Emd:)-mJs5^m/toM!/,q'JcC<$YQ"]X!"[Ygm/bd$J,~> -!BU8Qkl@:PmK)Emd:)-mJrfRkl]?E!/,q'JcC<$YQ"]X!"[McklK'jJ,~> -!B:&NirG&9mK)Emd:)-mJr3AirdO9!/,q'JcC<$YQ"]X!"R8]irR%VJ,~> -!BpJTm/X-`mK3I)'=7;uqZ,=;!3)g^"QqH=8cF;@JcC<$YQ"b)8H:I-[d=+H4b*~> -!BU8Qkl@:PmK3I)'=7;uqZ,=;!1ftN"QM-88cF;@JcC<$YQ"b)8H:F([cmh<3e.~> -!B:&NirG&9mK3I)'=7;uqZ,=;!0!c7"Pk[18cF;@JcC<$YQ"b)8H:C![c7D+2h1~> -!BpJTm/X-`mK*A%ZgR5]!8-]>WMSta@K7YAJcC<$JcDkP"7IH7@^bY)eieN~> -!BU8Qkl@:PmK*A%ZgR5]!8-]>SYbQQ?iVG?JcC<$JcDkP"7IH7@(,;#c8pI~> -!B:&NirG&9mK*A%ZgR5]!8-]>N2>P:?2u5=JcC<$JcDkP"7IH7?FJkp_`*)~> -!BpJTm/X-`mK!\*X4I4b*~> -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT1mJs5am/tH=!1/9:JcC<$WW*'e!"?uZm/bd$J,~> -!BU8Qkl@:PmJsT1mJrfUkl\p6!1/9:JcC<$WW*'e!"?lWklK'jJ,~> -!B:&NirG&9mJsT1mJr3Dird(*!1/9:JcC<$WW*'e!"?ZQirR%VJ,~> -!BpJTm/X,umJs5bm/uE!!*XsRJcC<$VuHj&!%R'?m/bd$J,~> -!BU8Qkl@9emJrfVkl]im!*XsRJcC<$VuHj&!%Hj:klK'jJ,~> -!B:&NirG%NmJr3Eire!`!*XsRJcC<$VuHj&!%?R3irR%VJ,~> -!BpJTm/X,umJs5bm/pVo.J&,jJcC<$VuHkj.0*Yam/bd$J,~> -!BU8Qkl@9emJrfVklY,i.J&,jJcC<$VuHkj.0*S_klK'jJ,~> -!B:&NirG%NmJr3Eir`Ea.J&,jJcC<$VuHkj.0*M]irR%VJ,~> -!BpJTm/X,umJs5cm/rs\#1nG+JcC<$V>gYL"ot:,m/bd$J,~> -!BU8Qkl@9emJrfWkl[IV#1nG+JcC<$V>gYL"ot4*klK'jJ,~> -!B:&NirG%NmJr3Firb\L#1nG+JcC<$V>gYL"ot(&irR%VJ,~> -!BpJTm/X,umJs5dm/t`I!0r-8JcC<$U]1F]!"dPim/bd$J,~> -!BU8Qkl@9emJrfXkl]3B!0r-8JcC<$U]1F]!"dGfklK'jJ,~> -!B:&NirG%NmJr3Gird@5!0r-8JcC<$U]1F]!"[/_irR%VJ,~> -!BpJTm/X,umJs5em0)]6!)NTFs+13$s.fSsr_EMRlFcKbeieN~> -!BU8Qkl@9emJrfYklg-.!)NTFs+13$s.fSsr_EMRk.KpZc8pI~> -!B:&NirG%NmJr3Hirn9u!)NTFs+13$s.fSsr_EMPi4S(N_`*)~> -!BpJTm/X,umJs5em/qS5)s`(TJcC<$U&P5\)ZY,qm/bd$J,~> -!BU8Qkl@9emJrfYklZ)/)s`(TJcC<$U&P5\)ZY&oklK'jJ,~> -!B:&NirG%NmJr3Hira?&)s`(TJcC<$U&P5\)ZXrlirR%VJ,~> -!BpJTm/X,umJs5fm/sd"!kj0bJcC<$TDo#,!X,sFm/bd$J,~> -!BU8Qkl@9emJrfZkl\6p!kj0bJcC<$TDo#,!X,jCklK'jJ,~> -!B:&NirG%NmJr3IircIf!kj0bJcC<$TDo#,!X,^?irR%VJ,~> -!BpJTm/X,urrB%#m/u>g!-j(pJcC<$Sc8e:!$1(5m/bd$J,~> -!BU8Qkl@9errAUlkl]c^!-j(pJcC<$Sc8e:!$'k0klK'jJ,~> -!B:&NirG%NrrA"[irdpQ!-j(pJcC<$Sc8e:!#sS)irR%VJ,~> -!BpJTm/X,urrB%#m/pYp./JMpJcC<$Sc8fg-idSfm/bd$J,~> -!BU8Qkl@9errAUlklY/j./JMpJcC<$Sc8fg-idMdklK'jJ,~> -!B:&NirG%NrrA"[ir`Hb./JMpJcC<$Sc8fg-idGbirR%VJ,~> -!BpJTm/X,urrB%$m/s9f#h=M+JcC<$S,WT@#Q^m=m/bd$J,~> -!BU8Qkl@9errAUmkl[d`#h=M+JcC<$S,WT@#Q^g;klK'jJ,~> -!B:&NirG%NrrA"\irbtU#h=M+JcC<$S,WT@#Q^X6irR%VJ,~> -!BpJTm/X,urrB%%m/u)Z!/uL/JcC<$RK!AJ!#OD*m/bd$J,~> -!BU8Qkl@9errAUnkl]QS!/uL/JcC<$RK!AJ!#O;'klK'jJ,~> -!B:&NirG%NrrA"]ird^F!/uL/JcC<$RK!AJ!#F"uirR%VJ,~> -!BpJTm/X,urrB%%m/p2c55g'4JcC<$RK!Bf4oeHqm/bd$J,~> -!BU8Qkl@9errAUnklX]]55g'4JcC<$RK!Bf4oeBoklK'jJ,~> -!B:&NirG%NrrA"]ir`!U55g'4JcC<$RK!Bf4oe -!BpJTm/X-`rrBjOrrB%&m/rjY%Gl[9JcC<$Qi@0E%02p7m/bd$J,~> -!BU8Qkl@:PrrBjOrrAUokl[=R%Gl[9JcC<$Qi@0E%02g4klK'jJ,~> -!B:&NirG&9rrBjOrrA"^irbPH%Gl[9JcC<$Qi@0E%02[0irR%VJ,~> -!BpJTm/X-`rrE,8_uB_9Z0_YI&HJ8Ns+13$s- -!BU8Qkl@:PrrE,8_uB_-Z0;AB&-//Ms+13$s- -!B:&NirG&9rrE,8_uB^qZ/Yr6&-//Ms+13$s- -!BpJTm/X-`rrN07^r66QWNkgl:]Nt9s+13$s-*Ha7K?9%m/bd$J,~> -!BU8Qkl@:PrrN07^r66QS[%D\:&mb7s+13$s-*Ha7K?3#klK'jJ,~> -!B:&NirG&9rrN07^r66QN3VCE9E7P5s+13$s-*Ha7K?-!irR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?quGCL!3*9k"/>i*i.:oZs+136rr_0g!2II!!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?quGCL!1gF["/#W'i.:oZs+136rr_0g!2.6o!R<`V~> -!B:&NirG&9rrW8:'Ys>?quGCL!0"5D".T?#i.:oZs+136rr_0g!1^se!Q-jH~> -!BpJTm/X-`rr`?%^_FTVrr<&KrrB%)m/u2^!0`!6JcC<$OoGNI!#XS2m/bd$J,~> -!BU8Qkl@:Prr`?%^_FTVrr<&KrrAUrkl]WV!0`!6JcC<$OoGNI!#XG.klK'jJ,~> -!B:&NirG&9rr`?%^_FTVrr<&KrrA"airdgJ!0`!6JcC<$OoGNI!#O2(irR%VJ,~> -!BpJTm/X-`rriE&s1f>ap&>!leGfNJZg@j"!'L42s+13$s,m<`rB('b`9dTV4b*~> -!BU8Qkl@:PrriE&s1f>ap&>!leGfN>ZfqQq!'L42s+13$s,m<`rB('``9@ -!B:&NirG&9rriE&s1f>ap&>!leGfN-Zf;-i!'L42s+13$s,m<`rB('^`8^m92h1~> -!BpJTm/X-`rr<&urrR`Op%JCh!"oG^LA]a)!3*?m"0V_2fRa'Rs+132rr^mZ!O'K0!S0Da~> -!BU8Qkl@:Prr<&urrR`Op%JCh!"oG^LA]a)!1gL]"0;M/fRa'Rs+132rr^mZ!Na9)!R<`V~> -!B:&NirG&9rr<&urrR`Op%JCh!"oG^LA]a)!0";F"/l5+fRa'Rs+132rr^mZ!N -!BpJTm/X-`rriE&s1f>aoD\pjd6Va)rrB%+m/uMl!/?()JcC<$NW0*8!$17Bm/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoD\pjd6Va)rrAUtkl]rc!/?()JcC<$NW0*8!$(%=klK'jJ,~> -!B:&NirG&9rriE&s1f>aoD\pjd6Va)rrA"cire*V!/?()JcC<$NW0*8!#sb6irR%VJ,~> -!BpJTm/X-`rr`?%^_FTRrrM9og&D&O[I"':!&+>&s+13$s,I$\r\"7l`pEfX4b*~> -!BU8Qkl@:Prr`?%^_FTRrrM9og&D&C[HRd4!&+>&s+13$s,I$\r\"7j`p!NL3e.~> -!B:&NirG&9rr`?%^_FTRrrM9og&D&2[Gq@+!&+>&s+13$s,I$\r\"7g`o@*;2h1~> -!BpJTm/X-`rrW8:'Ys2;!U1*IrrB%,m/tE6!lffkJcC<$MuNn!!X?`dm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys2;!U1*IrrAUukl\m.!lffkJcC<$MuNn!!X6Q`klK'jJ,~> -!B:&NirG&9rrW8:'Ys2;!U1*IrrA"dird(#!lffkJcC<$MuNn!!X6B[irR%VJ,~> -!BpJTm/X-`rrN07_".L/=O[0'9Oc]T!3*Hp"7/,MAqBu5s+13,rrZj54RC/V!S0Da~> -!BU8Qkl@:PrrN07_".L/=O[0'9Oc]T!1gU`"6_fHAqBu5s+13,rrZj546XcM!R<`V~> -!B:&NirG&9rrN07_".L/=O[0'9Oc]T!0"DI"6)?AAqBu5s+13,rrZj53o\6@!Q-jH~> -!BpJTm/X-`rrE,8nc&cm/d*,5p=]HGWOM6sQiIlgJcC<$JcCT,"76g'R)nXqeieN~> -!BU8Qkl@:PrrE,8nc&cm/d*,5p=]HGS[[hcPlMQdJcC<$JcCT,"76g'Q,r1jc8pI~> -!B:&NirG&9rrE,8nc&cm/d*,5p=]HGN47gLOT6-`JcC<$JcCT,"76g'OiZP`_`*)~> -!BpJTm/X-`rrBjOrrB%.m/u/Z!2+oCJcC<$L]7IL!#=>3m/bd$J,~> -!BU8Qkl@:PrrBjOrrAV"kl]WS!2+oCJcC<$L]7IL!#=50klK'jJ,~> -!B:&NirG&9rrBjOrrA"firddF!2+oCJcC<$L]7IL!#3r)irR%VJ,~> -!BpJTm/X,urrB%.m/pbs5Q666JcC<$L]7JU56,-6m/bd$J,~> -!BU8Qkl@9errAV"klY;n5Q666JcC<$L]7JU56,*5klK'jJ,~> -!B:&NirG%NrrA"fir`Qe5Q666JcC<$L]7JU56,!2irR%VJ,~> -!BpJTm/X,urrB%/m/t0,!nW#'JcC<$L&V8,!X$9]m/bd$J,~> -!BU8Qkl@9errAV#kl\X%!nW#'JcC<$L&V8,!X$0ZklK'jJ,~> -!B:&NirG%NrrA"gircgo!nW#'JcC<$L&V8,!X$!UirR%VJ,~> -!BpJTm/X,urrB%/m/f -!BU8Qkl@9errAV#klNjFEIn.@s+13&rrR0?3QgRec8pI~> -!B:&NirG%NrrA"girV1?EIn.@s+13&rrR0?36L7^_`*)~> -!BpJTm/X,urrB%0m/rmZ(@QhSJcC<$KDu&B(''oKm/bd$J,~> -!BU8Qkl@9errAV$kl[CT(@QhSJcC<$KDu&B(''iIklK'jJ,~> -!B:&NirG%NrrA"hirbVJ(@QhSJcC<$KDu&B('']EirR%VJ,~> -!BpJTm/X,urrB%1m/uDh!1JK=JcC<$Jc>h@!$((Dm/bd$J,~> -!BU8Qkl@9errAV%kl]i_!1JK=JcC<$Jc>h@!#sk?klK'jJ,~> -!B:&NirG%NrrA"iire!S!1JK=JcC<$Jc>h@!#sY9irR%VJ,~> -!BpJTm/X,urrB%1m/qM31Aue(JcC<$Jc>iN1&uLAm/bd$J,~> -!BU8Qkl@9errAV%klZ#-1Aue(JcC<$Jc>iN1&uF?klK'jJ,~> -!B:&NirG%NrrA"iira9$1Aue(JcC<$Jc>iN1&u= -!BpJTm/X,urrB%2m/tiC!Q0KgJcC<$JcGcM"2b-EeBR@]eieN~> -!BU8Qkl@9errAV&kl]9;!Q0KgJcC<$JcGcM"2b-Ed*:eUc8pI~> -!B:&NirG%NrrA"jirdI0!Q0KgJcC<$JcGcM"2b-EbK]&J_`*)~> -!BpJTm/X,umJs6!m/g5e=b6U(s+13$s8Ds!=TDFGm/bd$J,~> -!BU8Qkl@9emJrfjklOc`=b6U(s+13$s8Ds!=TDCFklK'jJ,~> -!B:&NirG%NmJr3YirW'X=b6U(s+13$s8Ds!=TD=DirR%VJ,~> -!BpJTm/X,umJs6"m/t*)#iL:6JcC<$JcG]K"5jFd^Wu3IeieN~> -!BU8Qkl@9emJrfkkl\O!#iL:6JcC<$JcG]K"5jFd]?]XAc8pI~> -!B:&NirG%NmJr3Zircal#iL:6JcC<$JcG]K"5jFd\'F"7_`*)~> -!BpJTm/X,umJs6"m/fENFb0RDs+13$s82ftFT=SMm/bd$J,~> -!BU8Qkl@9emJrfkklNsIFb0RDs+13$s82ftFT=PLklK'jJ,~> -!B:&NirG%NmJr3ZirV:BFb0RDs+13$s82ftFT=MKirR%VJ,~> -!BpJTm/X,umJs6#m/s9e'CLGOJcC<$JcGWI"7?g&W6ai3eieN~> -!BU8Qkl@9emJrflkl[d_'CLGOJcC<$JcGWI"7?g&VU+K-c8pI~> -!B:&NirG%NmJr3[irbtT'CLGOJcC<$JcGWI"7?g&U!Ma"_`*)~> -!BpJTm/X,umJs6$m/uW&!02X1JcC<$JcGQG"-*@1lHno!eieN~> -!BU8Qkl@9emJrfmkl^&r!02X1JcC<$JcGQG"-*@0k0W>nc8pI~> -!B:&NirG%NmJr3\ire3e!02X1JcC<$JcGQG"-*@/i6^Kb_`*)~> -!BpJTm/X-`mJsT1mJs6$m/rIN,5?`hJcC<$JcGQG"8F&?OjNIreieN~> -!BU8Qkl@:PmJsT1mJrfmklZtH,5?`hJcC<$JcGQG"8F&?O3m+lc8pI~> -!B:&NirG&9mJsT1mJr3\irb2>,5?`hJcC<$JcGQG"8F&?MpUJb_`*)~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WPIm&K)d]Ys+13$s+14CrrOtVK@0&eeieN~> -!BU8Qkl@:PmK*A%Zc)83S\XIkJH.KWs+13$s+14CrrOtVJ^N]_c8pI~> -!B:&NirG&9mK*A%Zc)83N54HTIK20Ts+13$s+14CrrOtVIaR0V_`*)~> -!BpJTm/X-`mK3I)'=78t"N!J4)O/qC!3*g%"6'so[XnI0s+13$s7QBo[K%!#dd7(d4b*~> -!BU8Qkl@:PmK3I)'=78t"N!J4)O/qC!1gsj"5X[k[XnI0s+13$s7QBo[K$utdcgeX3e.~> -!B:&NirG&9mK3I)'=78t"N!J4)O/qC!0"bS"5"7e[XnI0s+13$s7QBo[K$undc1AG2h1~> -!BpJTm/X-`mK_c3JcC<$JcG?A!]pC/dd7(d4b*~> -!BU8Qkl@:PmKc3JcC<$JcG?A!]pC-dcgeX3e.~> -!B:&NirG&9mKc3JcC<$JcG?A!]pC*dc1AG2h1~> -!BpJTm/X-`mKEUjs1f;Sp$MiZQ.>:&WP\$)h%'M#JcC<$JcC<$oD\p-!"[o7m/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$MiZQ.>:&S\jUng(+1uJcC<$JcC<$oD\p-!"[f4klK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$MiZQ.>:&N5FTWe.)JnJcC<$JcC<$oD\p-!"RN-irR%VJ,~> -!BpJTm/X-`mJm7drrR`OjnA*G'n$l):Ysdm!3*j&!c\3.JcC<$JcC<$nc&YY!--KT!S0Da~> -!BU8Qkl@:PmJm7drrR`OjnA*G'n$l):Ysdm!1h!k!cJ',JcC<$JcC<$nc&YY!,p?N!R<`V~> -!B:&NirG&9mJm7drrR`OjnA*G'n$l):Ysdm!0"eT!c.j)JcC<$JcC<$nc&YY!,U-E!Q-jH~> -!BpJTm/X-`mKEUjs1f;Sp$Mtc>27q8;;(@;WPe**g'7W!JcC<$JcC<$nc&^4!!h6-m/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$Mtc>27q8;;(@;S\s[of*;;sJcC<$JcC<$nc&^4!!h-*klK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$Mtc>27q8;;(@;N5OZXd0BZmJcC<$JcC<$nc&^4!!gp$irR%VJ,~> -!BpJTm/X-`mK_sIMC!)8%EJcC<$JcG3=!_iZ4eEm:f4b*~> -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=7;u"ZYB,mbJ<)mJs6)m/u,P!6Xd1"6[hLkCNYas+13?rr_o=cLgQ)"3LTP -gstcmeieN~> -!BU8Qkl@:PmK3I)'=7;u"ZYB,mbJ<)mJrfrkl]TI!6Xd1"6[hLkCNYas+13?rr_o=cLgQ)"3LTP -g"# -!B:&NirG&9mK3I)'=7;u"ZYB,mbJ<)mJr3airda=!6Xd1"6[hLkCNYas+13?rr_o=cLgQ)"3LTP -e(*IZ_`*)~> -!BpJTm/X-`mK*A%Zh!MfP?Zo#>#X,B!3*p(!d+K6nc&pUDd%CANd+`Gj+75]s+13Drs/%4F+o6f -E:E>r!_<<6ea3Cg4b*~> -!BU8Qkl@:PmK*A%Zh!MfP?Zo#>#X,B!1h'm!cn?4nc&pUDd%CANd+`Gj+75]s+13Drs/%4F+o6f -E:E>r!_<<4e`d+[3e.~> -!B:&NirG&9mK*A%Zh!MfP?Zo#>#X,B!0"kV!cS-1nc&pUDd%CANd+`Gj+75]s+13Drs/%4F+o6f -E:E>r!_<<1e`-\J2h1~> -!BpJTm/X-`mK!`U*cb%fjQ>rr`"*CV9PY"2&DZpOW?qs+13GrrU_Q])B>E -\ldMPrr^1>&)Yt*!S0Da~> -!BU8Qkl@:PmK!rr`"*CV9PY"2&DZpOW?qs+13GrrU_Q])B>E -\ldMPrr^1>&)5\"!R<`V~> -!B:&NirG&9mK!E -\ldMPrr^1>%bB4k!Q-jH~> -!BpJTm/X-`mJsT1mJs6*m/hV761b*XoN8Kp^&kZDoR[$ns+13IrrVUf^&,MF]i=FhrrPIdHe.Qb -eieN~> -!BU8Qkl@:PmJsT1mJrfsklQ,161b*XoN8Kp^&kZDoR[$ns+13IrrVUf^&,MF]i=FhrrPIdH.M3\ -c8pI~> -!B:&NirG&9mJsT1mJr3birXB(61b*XoN8Kp^&kZDoR[$ns+13IrrVUf^&,MF]i=FhrrPIdG1P[S -_`*)~> -!BpJTm/X,umJs6+m/u>]!5A()!F)r(^&bTFJcC<$JcDVI!Go7@^&b]ZnG`U)!#+ADm/bd$J,~> -!BU8Qkl@9emJrftkl]cT!5A()!F)r(^&bTFJcC<$JcDVI!Go7@^&b]ZnG`U)!#"/?klK'jJ,~> -!B:&NirG%NmJr3cirdpH!5A()!F)r(^&bTFJcC<$JcDVI!Go7@^&b]ZnG`U)!#!r9irR%VJ,~> -!BpJTm/X,umJs6+m/hn?47iIQV3:Ga!Ks:1s+13$s/>qukAg71!HI;lrrP7^K@fJkeieN~> -!BU8Qkl@9emJrftklQD947iIQV3:Ga!Ks:1s+13$s/>qukAg71!HI;lrrP7^J_0,ec8pI~> -!B:&NirG%NmJr3cirXZ047iIQV3:Ga!Ks:1s+13$s/>qukAg71!HI;lrrP7^Ib3T\_`*)~> -!BpJTm/X,umJs6,m/uPk!4;@t!,2>FrrE&4r;ci2!,-r`JcC<$W;cm_W;XF8X"jbW^:pP1nG`Tt -!#t.Sm/bd$J,~> -!BU8Qkl@9emJrfukl]ub!4;@t!,2>FrrE&4r;ci2!,-r`JcC<$W;cm_W;XF8X"jbW^:pP1nG`Tt -!#jqNklK'jJ,~> -!B:&NirG%NmJr3dire0W!4;@t!,2>FrrE&4r;ci2!,-r`JcC<$W;cm_W;XF8X"jbW^:pP1nG`Tt -!#jbIirR%VJ,~> -!BpJTm/X,umJs6,m/r[T/,o2@!Uat*^&S04^&S01^&`6AJcC<$JcD_L!-8"O!]i3FrOr8PnG`Ui -.fbpgm/bd$J,~> -!BU8Qkl@9emJrfukl[.M/,o2@!Uat*^&S04^&S01^&`6AJcC<$JcD_L!-8"O!]i3FrOr8PnG`Ui -.fbgdklK'jJ,~> -!B:&NirG%NmJr3dirbDD/,o2@!Uat*^&S04^&S01^&`6AJcC<$JcD_L!-8"O!]i3FrOr8PnG`Ui -.fb^airR%VJ,~> -!BpJTm/X,umJs6-m/u]*!2&l_!R6Dt^&S04^&n?@'nQ@u!JepNs+13$s/H"uE;[EN#F#)"!-%E, -".oQDm+Lb,eieN~> -!BU8Qkl@9emJrg!kl^-!!2&l_!R6Dt^&S04^&n?@'nQ@u!JepNs+13$s/H"uE;[EN#F#)"!-%E, -".oQCkh52$c8pI~> -!B:&NirG%NmJr3eire9i!2&l_!R6Dt^&S04^&n?@'nQ@u!JepNs+13$s/H"uE;[EN#F#)"!-%E, -".oQBin<>m_`*)~> -!BpJTm/X,umJs6-m/sBh)u9+*!R6Dt^&S03^&kou&,s9DLWtDMJcC<$WW)s;r4W7:5R:Zp^&W-@ -rr`'9!3=f?!S0Da~> -!BU8Qkl@9emJrg!kl[ja)u9+*!R6Dt^&S03^&kou&,s9DLWtDMJcC<$WW)s;r4W7:5R:Zp^&W-@ -rr`'9!3"T8!R<`V~> -!B:&NirG%NmJr3eirc(W)u9+*!R6Dt^&S03^&kou&,s9DLWtDMJcC<$WW)s;r4W7:5R:Zp^&W-@ -rr`'9!2S<.!Q-jH~> -!BpJTm/X,umJs6-m/fHOM=UZImW&0=!!)u3!kX0srk8DQmXbChs+13Lrr@*;^&o^KQ3[E'!-7N- -!f6n@g$Jgk4b*~> -!BU8Qkl@9emJrg!klO!JM=UZImW&0=!!)u3!kX0srk8DQmXbChs+13Lrr@*;^&o^KQ3[E'!-7N- -!f6n?g$&O_3e.~> -!B:&NirG%NmJr3eirV:BM=UZImW&0=!!)u3!kX0srk8DQmXbChs+13Lrr@*;^&o^KQ3[E'!-7N- -!f6n=g#E+N2h1~> -!BpJTm/X,urrB%?m/t6+%e0#g!,2>FrW)u4rr<'8JH!7_A:ac3s+13KrrJ1ZrOrMr&dr*]^8R:a -rr_a#!5mOX!S0Da~> -!BU8Qkl@9errAV3kl\^$%e0#g!,2>FrW)u4rr<'8JH!7_AV'l4s+13KrrJ4[rOrMr&dr*]^8R:a -rr_a#!5R=Q!R<`V~> -!B:&NirG%NrrA#"ircmn%e0#g!,2>FrW)u4rr<'8JH!7_AV'l4s+13KrrJ4[rOrMr&dr*]^8R:a -rr_a#!5$tF!Q-jH~> -!BpJTm/X,urrB%?m/g;gF7B21V3:Ga"H?ELe,=jtJcC<$XoAM$GRRgN^&`6:mJd6/!*7h@!S0Da~> -!BU8Qkl@9errAV3klOibF7B21V3:Ga"HHfbf`$I%JcC<$XoAM%Hk'EU^&`6:mJd6/!*.b;!R<`V~> -!B:&NirG%NrrA#"irW*YF7B21V3:Ga"HI-!h>W!*JcC<$XoAM%J.GoZ^&`6:mJd6/!)hP2!Q-jH~> -!BpJTm/X,urrB%@m/tuG"5iSI!F)r(^'D"oBlT&]\F5"KJcC<$Z2Y%-OW"diCq'5S!Oln3rr_-\ -#M@eu!S0Da~> -!BU8Qkl@9errAV4kl]E>"5iSI!F)r(^'D"qGC>j=_"!!UJcC<$Z2Y%-PoUHsCq'5S!Oln3rr_-\ -#1VDl!R<`V~> -!B:&NirG%NrrA##irdU3"5iSI!F)r(^'D"sL5MguaRau_JcC<$Z2Y%-Qlcs&Cq'5S!Oln3rr_-\ -#1)&a!Q-jH~> -!BpJTm/X,urrB%@m/hM4;==GcoN8Kp^'h;Mo:&6`Ei",Qf)C7#JcC<$[JpMi%i^f5s6`k"qn<-F -<:9)P!`8rBg[,$m4b*~> -!BU8Qkl@9errAV4klQ#.;==GcoN8Kp^'h;Mo:Ad&IBSL*gAZ['JcC<$[JpMk&KR8 -!B:&NirG%NrrA##irX9%;==GcoN8Kp^'h;Mo:] -!BpJTm/X,urrB%Am/uPh!5@k#"8?;@]_fDF]PD$Orr37W6Y_.eNe4k4JcC<$JcE=]"ob;>%X\0Q -rrU_Q])B>E\ldMJrr]t8)!KcB!S0Da~> -!BU8Qkl@9errAV5kl]u`!5@k#"8?;@]_fDF]PD$Orr37Z9R2N9RukMYJcC<$JcE=]"ob>B%tFTW -rrU_Q])B>E\ldMJrr]t8)!'K:!R<`V~> -!B:&NirG%NrrA#$ire0T!5@k#"8?;@]_fDF]PD$Orr37^E\ldMJrr]t8(Z4$.!Q-jH~> -!BpJTm/X-`rrBjOrrB%Am/iaW/aE?Bj)8+GLkg4YDr^`p$N5lVBo:`HHCidgJcC<$JcEIa"LAaY -Jb]*A#Ol\RKnX)WnEBlR/HD9qm/bd$J,~> -!BU8Qkl@:PrrBjOrrAV5klR4P/aE?Bj)8+GLkg4YDr^`p$N?/gGa.0nM5f;0JcC<$JcEIa"LAd] -L&(TF#Ol\RKnX,XnEBlR/HD0nklK'jJ,~> -!B:&NirG&9rrBjOrrA#$irYGF/aE?Bj)8+GLkg4YDr^`p$N?;uLRmM>R'biOJcC<$JcEIa"LJmb -Mu*;M#Ol\RKnX2ZnEBlR/HD$jirR%VJ,~> -!BpJTm/X-`rrE,8_uB_9bO#?g!1N*N"6[hCkP"o_r-(_JU[lB_KY?u.s+13$s2+d=h)u*Zo(N(d -oZk6oo]Q5URK,5#m/bd$J,~> -!BU8Qkl@:PrrE,8_uB_-bNT'b!1N*N"6[hCkP"o_r-VFhXRs`)Oi6mCs+13$s2+d=h*29bo_/:f -oZk:)p?2GWRK,2"klK'jJ,~> -!B:&NirG&9rrE,8_uB^qbMrX[!1N*N"6[hCkP"o_r.873[.MeDT?HnYs+13$s2+d=h*DKmp%JCg -oZk:8pZMPXRK,/!irR%VJ,~> -!BpJTm/X-`rrN07^r66QWQa`3_Z1>Bf)H-J@SLaLqr+GuU"fQts+13$s2Y-BpM:15ipm$LP1o+! -"8*9,_qj\\eieN~> -!BU8Qkl@:PrrN07^r66QS]p=#^]5#?f)H*JB39SsqrP)=X5AL.JcC<$`r?2:D[TV,nc&W]hWOn@ -ob%8?h<=sc3e.~> -!B:&NirG&9rrN07^r66QN6L;a])WK:f)H*JD.AOEr91bZ[c;r=JcC<$`r?2:E=?+8nc&Wiiog=D -ob%8:h;\OR2h1~> -!BpJTm/X-`rrW8:'Ys>?qu?^,g&D&Obj>I;!-H]i$e7L>FN"+O_hs/_oR[$ns+13mrr]5//AU`S -!Na*!rrR9B?/=lKeieN~> -!BU8Qkl@:PrrW8:'Ys>?qu?^,g&D&Cbio15!-H]i$e@dPK?F/fb*S=3on!-os+13mrr]>30ZM\NEc8pI~> -!B:&NirG&9rrW8:'Ys>?qu?^,g&D&2bi8b-!-H]i$eJ$bOjX.&dA3G[p4<6ps+13mrr]D629>7d -!PcqBrrR9B=l&*=_`*)~> -!BpJTm/X-`rr`?%^_FTRrrJ:)g&D&Oc0YVk$N\r.rsPbJAUVc$s50YuUYUM$JcC<$cMn%4=U:5j -mf*=.VWRm\f`;K=hX(?p4b*~> -!BU8Qkl@:Prr`?%^_FTRrrJ:)g&D&Cc05>c$N\r.rsPkQF,SHFs5U;=Xl4j2JcC<$cMn%7?O<(u -mf*=4Yibrff`;K9hWY'd3e.~> -!B:&NirG&9rr`?%^_FTRrrJ:)g&D&2c/SoX$N\r.rsPnUJXY3is5pkY\)i2@JcC<$cMn%9AI=q+ -mf*=;]&s"pf`;K4hW"XS2h1~> -!BpJTm/X-`rriE&s1f>ao)Adf,imYY!3+61!f[1Gci4I4/44Q2df0:?_2!f^p4<6ps+14!rrhtl -/LB6>rrM):jo5BJ!0,k&!S0Da~> -!BU8Qkl@:PrriE&s1f>ao)Adf,imYY!1hC!!f?tDci4I4/5(YWfDkmFaH`%3pOW?qs+14!rri#" -1+(iDrrM5Kjo5BJ!/fXt!R<`V~> -!B:&NirG&9rriE&s1f>ao)Adf,imYY!0#1_!f$bAci4I4/Q.e'h#IELc_@/[pjrHrs+14!rri&+ -2^mMKrrM>[jo5BJ!/KFk!Q-jH~> -!BpJTm/X-`rr<&urrR`Op%/1aSmg:O!3+61!\FDMcMn+B>Uai?LY)P*"PohuV;Hk(JcC<$fDc$O -]knrqp?V_[qKDf!rrT(u/`,jqeieN~> -!BU8Qkl@:Prr<&urrR`Op%/1aSmg:O!1hC!!\FDMcMn+B>Uk>[Phc9<"Q?J=YN(36JcC<$fDc$O -`-EV1p?V_[qh>"2rrT(u/`,^mc8pI~> -!B:&NirG&9rr<&urrR`Op%/1aSmg:O!0#1_!\48KcMn+B>Utl#U>Z%N"Qd+Z\`SJCJcC<$fDc$P -b_@EGp?V_[qiq'ArrT(u/)K:e_`*)~> -!BpJTm/X-`rriE&s1f>aoD\mj.+[&N!3+92"2"UKprraBNt?YbG`CPYrrr&0Ko3eBJcC<$JcFO* -"oc_t@1SF_rrIo;k5PPY'`bo(m/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoD\mj.+[&N!1hF""1\CHprraBNt?etLRR3$rrr)8PF'GeJcC<$JcFL) -"O`BF&!,rS!L2j2rr`$2!4h"O!R<`V~> -!B:&NirG&9rriE&s1f>aoD\mj.+[&N!0#4`"1/%CprraBNt?r3QD`jDrrr,@TVU!1JcC<$JcFL) -"PB;`&!,rS!M\oBrr`$2!4:YD!Q-jH~> -!BpJTm/X-`rr`?%^_FTTrrK,ofDbiMcKt[=!-HB`#JqK9Jp;O)ir8r]rn=&kVr<4,JcC<$hu -!BU8Qkl@:Prr`?%^_FTTrrK,ofDbiAcKPC7!-HB`#JqK9LPCSWjo,2^hQ)I;jamG_s+14-rrq;J -CFgLCkPkRadH1B0F9#P&klK'jJ,~> -!B:&NirG&9rr`?%^_FTTrrK,ofDbi0cJnt/!-HB`#JqK9N0T^1kl(MaijP2ck^ibbs+14-rrqG[ -F=eNMkPkRkfB*#6F9#J$irR%VJ,~> -!BpJTm/X-`rrW8:'Ys8=!AVOErrB%Em/uJX!SPTp#l_%`0R@qfS*'\L"nTE\N5kXDs+13$s5a1a -l'km*19gc?rrKd;jo5G9!=IuIm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys8=!AVOErrAV9kl]oP!SPTp#l_%`0S"k4VWn'Z"n]`qREYJXs+13$s5a1a -l_\2A19gc?rrL$Kjo5G9!=IiEklK'jJ,~> -!B:&NirG&9rrW8:'Ys8=!AVOErrA#(ire'D!SPTp#l_%`0SPdXZL%Pi"ng'2VUP?ls+13$s5a1a -m]gXZ19gc?rrL<[jo5G9!=IW?irR%VJ,~> -!BpJTm/X-`rrN07_"%F*[Q<">!3+<3!gE[K`r?>DYVI,/G^,tKrVm'#fUdDhjFR>^s+146rs&(q -:),LfroF([esGIt!^6UKi9^Qr4b*~> -!BU8Qkl@:PrrN07_"%F*[Q<">!1hI#!g3OI`r?>DYVI,7LPMturVm'#go6.:kCNYas+146rs&,& - -!B:&NirG&9rrN07_"%F*[Q<">!0#7a!fd7E`r?>DYVI,=QBo#KrVm'#iO"ucl@Jtds+146rs&/1 -?l(Q%roF([hlc&?!^6UEi8XjU2h1~> -!BpJTm/X-`rrE,8nG`MOYh&gSWR'r53rkhhrs,)15^n')W:0Za"nB0TNl_$Is+13$s6]giq7:2o -'qO=`!UtKtrrS_k45fK,eieN~> -!BU8Qkl@:PrrE,8nG`MOYh&gSS^6O%3WP_grs,)16&:AQZLRkm"nTTlS'Lk]s+13$s6]giqSI;1 -'qO=`!V200rrS_k3oK6'c8pI~> -!B:&NirG&9rrE,8nG`MOYh&gSN6gMc3<5Vfrs,)16B[_%]^l"#"n]s.Vq(Wps+13$s6]giqoXFI -'qO=`!VDiArrS_k3T/ou_`*)~> -!BpJTm/X-`rrBjOrrB%Fm/tZ8$Lu"5#l9Z!>_.?KY4DMj"od)CH`Z@\s+13$s7-*nrlK@P'Tr7L -rrIN;jo5GQ$3AK3m/bd$J,~> -!BU8Qkl@:PrrBjOrrAV:kl]-1$Lu"5#l9Z!?B'r"\+KUu"od5RM7)T!s+13$s7-*nrm-3f'Tr7L -rrJ#Kjo5GQ$3AB0klK'jJ,~> -!B:&NirG&9rrBjOrrA#)ird=&$Lu"5#l9Z!?^[CL_"IX*"odDbR(hm;s+13$s7-*nrmd-)'p8@M -rrJP[jo5GQ$3A3+irR%VJ,~> -!BpJTm/X,urrB%Fm/hM4>JL1DltdG[ItDsQp&"amn$mn0b5-\hJcC<$p&>3KLf4t'm+q[BQIk3t -!a>YLiU$Zs4b*~> -!BU8Qkl@9errAV:klQ#.>JL1DltdG^NKAt/pA=jnn\C0Ud//CoJcC<$p&>3OQ!+l+c/ -!a>YJiTUBg3e.~> -!B:&NirG%NrrA#)irX9%>JL1DltdGbS">tbp\Xsoo>mH$f)($uJcC<$p&>3TU1"aPm+q[BXl/:? -!a>YGiSssV2h1~> -!BpJTm/X,urrB%Gm/u\t!4olD#h;H^P'i"1\bQ(%"oZo -!BU8Qkl@9errAV;kl^,l!4olD#h;H^QA^r`_>4!."od/NMR_u's+13$s7uZul(i218CcJp!P-/0 -rr]h4+R%hL!R<`V~> -!B:&NirG%NrrA#*ire9_!4olD#h;H^S!ft;anbi6"od>^RDJ9As+13$s7uZum'(^K8CcJp!Q*%@ -rr]h4+6);?!Q-jH~> -!BpJTm/X,urrB%Gm/s`r*W -!BU8Qkl@9errAV;kl\3k*W -!B:&NirG%NrrA#*ircFa*WA!Q-jH~> -!BpJTm/X,urrB%Gm/gSoH+Eq]lqfI\WHsDN`;KW7$0TIRkPW_oI'Msfs+13/rr_o=_=[X)#5GZS -Q7u/%f`)!6LZAC9GlV11m/bd$J,~> -!BU8Qkl@9errAV;klP,jH+Eq]lqfI^Z\b!-bP_A>$0TIRkP`u,Mn88+s+13/rr_o=_=[X)#5Q#k -ShO"-f`)!9Q/hlGGlV.0klK'jJ,~> -!B:&NirG%NrrA#*irWBaH+Eq]lqfI_]U5LbdJX"D$0TIRkPa/u7TGlV%-irR%VJ,~> -!BpJTm/X,urrB%Hm/uPb!7SFW(RZ#+l(*9[K!fN#G_h-">&WHfZ@/"ar.4m!s,mRF_B>r-%turr^^M''SBC!S0Da~> -!BU8Qkl@9errAV&WHh]8WH5r.4m!s,mr.Y%/rr^^M&`i!:!R<`V~> -!B:&NirG%NrrA#+ire0N!7SFW(RZ#+m^&@XT"f2IG_h-">&WHj`1!g^r.4m!s,mr07-?rr^^M&`;X/!Q-jH~> -!BpJTm/X,urrB%Hm/j3d/@GK`f.p1hhi0[,]_fDL]PD$Or6LXVZg<8CJcCu7!nCDarOrTL=OkuZ -PgWA`f@9g$MW3[r!\=>Mj6Zlu4b*~> -!BU8Qkl@9errAVKj66Ti3e.~> -!B:&NirG%NrrA#+irYnS/@GK`f.p1hk+tFV]_fDL]PD$Or7\9A`:/?XJcCu7!nCDarOrTL=Ol<( -XOp?)f@9g$V!-k=!\=>Fj5U0X2h1~> -!BpJTm/X,urrB%Hm/g;gKXCa_q/m:T=L@h:$FEq-s8VAgI$`7ZJcC<$R/[6U<5&1C#JEZWe@H67 -q:#?EV9%]s!e^PSj6Zlu4b*~> -!BU8Qkl@9errAV -!B:&NirG%NrrA#+irW*YKXCa_q/m:T=L@h:$FEq-s8VQ)R]bEDJcC<$R/[6U<5&1C#JE`rhRX;A -q:#?E\^][>!e^POj5U0X2h1~> -!BpJTm/X,umJs68m/uJ[!8FgZ!l#e`otCI6>Q+R*qot=S[I/VGJcD2=!Go7@^'(oU=VSWurrKm: -j8T59!"J)Om/bd$J,~> -!BU8Qkl@9emJrg,kl]oS!8FgZ!l#e`otCI6>Q+R*r6h3s^@6^RJcD2=!Go7@^'(oU=VSWurrL-J -j8T59!"IrKklK'jJ,~> -!B:&NirG%NmJr3pire'F!8FgZ!l#e`otCI6>Q+R*r7J'>`q"]\JcD2=!Go7@^'(oU=VSWurrLE[ -j8T59!"@ZDirR%VJ,~> -!BpJTm/X,umJs68m/is]26m/^V3:Ga!Ks;VrrqVhH^`F^JcC<$T)SiSEVI0K>&O&\rrLi;ir9'; -!28K@!S0Da~> -!BU8Qkl@9emJrg,klRFV26m/^V3:Ga!Ks;Vrrq\sMP\u)JcC<$T)SiSEVI0K>&O&\rrLuKir9'; -!1r99!R<`V~> -!B:&NirG%NmJr3pirYYL26m/^V3:Ga!Ks;Vrrqf*RBbTIJcC<$T)SiSEVI0K>&O&\rrM,[ir9'; -!1N!/!Q-jH~> -!BpJTm/X,umJs68m/g&`NNrK`B`5[F!<0_4!!*[Vrk8AGq>UWpb)h.`mt(Lis.KAmPc4Pprr<37 -GeUnjPgB@2oQgGrrrS/[:ZUmDeieN~> -!BU8Qkl@9emJrg,klOQZNNrK`B`5[F!<0_4!!*[Vrk8AGq>UWqd%-34nU^^ks.KAmPc4Pprr<37 -GeUnjPgB@1on_W-!f[1SjQQ]j3e.~> -!B:&NirG%NmJr3pirVjRNNrK`B`5[F!<0_4!!*[Vrk8AGq>UWqeu>4]o7?pms.KAmPc4Pprr<37 -GeUnjPgB@1p6Xe=!f[1QjPp9Y2h1~> -!BpJTm/X,umJs69m/uGV!9:Bb!Uat*^&S03^&l!,$i[j@EUNT$"m2n5SC[[js+13Frr@*:^&l!, -$i[j?EmF[cJ*u@s"60@fjlPk1eieN~> -!BU8Qkl@9emJrg-kl]lN!9:Bb!Uat*^&S03^&l!,$i[j@EUNT$"mNFOVqV-$s+13Frr@*:^&l!, -$i[j?EmF[cNUZ!."60@fiT9;)c8pI~> -!B:&NirG%NmJr3qire$B!9:Bb!Uat*^&S03^&l!,$i[j@EUNT$"m`miZJYY4s+13Frr@*:^&l!, -$i[j?EmF[cSFY_?"60@fgZ@Gr_`*)~> -!BpJTm/X,umJs69m/j!^33iJac%l52!!)r2!K\E&^&`l$p&>3kaGtk`nU^^ks/#_qE;I9LO<=J9 -!-$6`!L_ErrrP.[U?1bCeieN~> -!BU8Qkl@9emJrg-klRIW33iJac%l52!!)r2!K\E&^&`l%p&>3lcC9p4o7?pms/#_qE;I9LO<=J9 -!-$6`!N"H.rrP.[TB5; -!B:&NirG%NmJr3qirY\M33iJac%l52!!)r2!K\E&^&`o(p&>3le>Jn\oR[$ns/#_qE;I9LO<=J9 -!-$6`!O1D>rrP.[S)rZ2_`*)~> -!BpJTm/X-`mJsT1mJs69m/g;gM6[']c%l52!!)u3!WWCRrk8JeA$#4mrrqJ`HCidgJcC<$WW*"d -=8T]5!!RlO^&W,trrKL;ir9(:!*84K!S0Da~> -!BU8Qkl@:PmJsT1mJrg-klOibM6[']c%l52!!)u3!WWCRrk8JeDmf3/rrqSlM5f>1JcC<$WW*"f ->5Q#8!!RlO^&W,trrKdKir9(:!*/.F!R<`V~> -!B:&NirG&9mJsT1mJr3qirW*YM6[']c%l52!!)u3!WWCRrk8JfHbT.Errq]$R'biOJcC<$WW*"h ->l25:!!RlO^&W,trrL'[ir9(:!)hq=!Q-jH~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK!ZJcC<$ -XoALt\r'hk^&ks+$i[j?EmF[ce>_I-"53_cjQ>\-c8pI~> -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WR^A;XT0oUrr?a2^A\-4^Ae06%Uf:M#@bMtTr!+Fp[eCgiMUspg\ud( -JcE%U#5l;cWUc"HrP&:3"V+qS^8R:ArrMA;iVrs1!3PDN!S0Da~> -!BU8Qkl@:PmK*A%Zc)83S^ls+WW4TRrr?a2^A\-4^Ae06%Uf:M#@bc4X07Dqq"+LgjfsWBhgtfY -s0;S.r5af&o8T^I^Ae0:%Ud#bW0GU-!UGp-rrO_OWoiOHc8pI~> -!B:&NirG&9mK*A%Zc)83N7HqiV>r0Nrr?a2^A\-4^Ae06%Uf:M#@l)K[^hgHq"+Lgke!1ij+75] -s0;S.r6LhEoo5pK^Ae0:%Ud#bW0GU-!UcW>rrO_OVWQn>_`*)~> -!BpJTm/X-`mK3I)'=7;u"j9.;#sc\emJs6:m/g\rIBWYOV3:Ga$BSGN_6J?dU3sZMoD]!g_hj)^ -oR[$ns0hq5rm6=ekOu9$@J@J:ETbXI!r[<;ir9(.!+G$W!S0Da~> -!BU8Qkl@:PmK3I)'=7;u"j9.;#sc\emJrg.klP5mIBWYOV3:Ga$BS_caL[57Xc(-ooD]!hb*J72 -p4<6ps0_k3eWQcopUkf\pV$ZJkKa)/re:1-rrRTK@-6\Sc8pI~> -!B:&NirG&9mK3I)'=7;u"j9.;#sc\emJr3rirWKdIBWYOV3:Ga$B])$cbc'_\!kP -!BpJTm/X-`mKf'NS*(]_jarrH?2otCmB4R(IhH(gaUZ_)`bqssai -hkbUnh1>TWs1/.:hiNcMqnING4u9\D^&b]Zbl7^(hr=Y -!BU8Qkl@:PmK -!B:&NirG&9mKkMlT\2h1~> -!BpJTm/X-`mKEUjs1f;Sp$MtgkO.d$#MJMFWRgG<]DrnQrrVgp[.h9GZonh&]`%E8KnYD7\XJ)j -rUTslp;)N>_Y/Q\JcEIa%I9X;b5KJ6SZ -!BU8Qkl@:PmKEUjs1f;Sp$MtgkO.d$#MJMFS_!$,\H!SNrrVgp[.h9GZonh0_u95HPEM8m_534< -rUTslpW/VbaS18cJcEIa%IU6Wd/D=PW3$Y]lVtRp^&kuIm`b\3ZHM5,!ZM-MkNN#m3e.~> -!B:&NirG&9mKEUjs1f;Sp$MtgkO.d$#MJMFN7R"jZiD&IrrVgp[.h9GZonk^ -!BpJTm/X-`mJm7drrR`OjnA*G8pT@PG>$WW!3+Q:!d4QYXT&Cs@r&aS^(e4qA,!bO4bMeprnO8m -I"];#L!BVfrrrDWUNr]nJcC<$_Z(2>YC!nXeVTI -!BU8Qkl@:PmJm7drrR`OjnA*G8pT@PG>$WW!1h^*!d"EWXT&Cs@r&aS^(e4qA,!bO6'17/s5:#6 -MNPrQPLKO$rrh8^Lp,iis+13ert+n6MSo>FQCcZ>'>XYJeQBE]^&klJe][snb-U(,!bq^WkNN#m -3e.~> -!B:&NirG&9mJm7drrR`OjnA*G8pT@PG>$WW!0#Lh!c\3TXT&Cs@r&aS^(e4qA,!bO7\&`Cs5^YS -R@hd,T\086rrhDlQau70s+13ert+q@REPKaUoN*['>XYJeQBE]^&klJe][sndCnN=!bq^TkMlT\ -2h1~> -!BpJTm/X-`mKEUjs1f;Sp$N"6*<6'[f%KHkWRgG<0`\V]rs@_(>'PjYGZo%Grr3T#Af4gYqZ$Tg -_LZc]]o\-#rpg!loY6*;`:ni_JcEdj%/[bdXRkA6Lt'!XB(>j"#Ol\RKoKbbnB1b3h2gOp!jr"_ -kNr<$4b*~> -!BU8Qkl@:PmKEUjs1f;Sp$N"6*<6'[f%KHkS_!$,0EAM\rs@_(>'PjYGZo%Grr3Q"Af53mqu?]i -aH(t:`131HnG`[b`flb3pjrHrs2Y-Jr5FQ$p#D[0ft&8;nbrImn8NH&NbNJ%b5VM$SDjJL[/_oD -klK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$N"6*<6'[f%KHkN7R"j0*&D[rs@_(>'PjYGZo%Grr3Q"Af>X,qu?]j -c^g8mbGh;nnG`[cc(Ll[pjrHrs2Y-Jr6:YDp?/KOhRXe@nbrImn8NH&NbWP&b5VM(W8[aX[/_lC -irR%VJ,~> -!BpJTm/X-`mKfBi[m!X\Rurr_H,_<:Xo"M,U=IbXi$#MtV`J?Ffj -f^SnErn=#jVr<4,JcEpn%0"M'Sa#C1J][@m+1h:J"8'mQI)u -!BU8Qkl@:PmK+NjkCF -h=(@HhQ)I;jamG_s2t?Ldu^Npm&?&ln7EcRq>UQhcG5=YrrVtMro3q[p'CfMkii,n3e.~> -!B:&NirG&9mKUQhcGGphrrVt\ro3q[p'CfHki2]]2h1~> -!BpJTm/X-`mK3I)'=7;u"U=/XmcOi.mJs6NhXCIJo=]g9 -`qY,bJcF'r%,?l'h!h:j^AGJ`B(>Tp!rdB=aSu9nlJ_aE8cY.?m/bd$J,~> -!BU8Qkl@:PmK3I)'=7;u"U=/XmcOi.mJrg0klR%K8t#\_nR`\QZhXM!#P=sHLSp<.ipZmNoYcl[ -bkZhiJcF'r%,dSDi:=44`V[4gB(>Tp!rdoMaSu:'m,@sG8cY(=klK'jJ,~> -!B:&NirG&9mK3I)'=7;u"U=/XmcOi.mJr3tirY8A8t#\_nR`_]]_MI*#PPKeQEm-ajmW3Qouiu) -e+nRpJcF'r%-4=ajRg*Rbl#$oB(>Tp!reG\aSu:5n)=9J8cXq9irR%VJ,~> -!BpJTm/X-`mK*A%Zh!Mf/U-.1G:qS:!3+T;!`/l]Qi@3"*^k;&r;R#oU31U8I$is_rrrDSSpIEt -JcC<$e,Kj@S:]#Z[!T+PnR`lSoD\iKj2h6$S^??q!gE[]kj8E%4b*~> -!BU8Qkl@:PmK*A%Zh!Mf/U-.1G:qS:!1ha+!_r`[Qi@3"*_;% -!B:&NirG&9mK*A%Zh!Mf/U-.1G:qS:!0#Oi!_`TYQi@3"*__dRr;R#q\!3,PR]u&FrrrD\[$\Pl -JcC<$e,KjEZC]_D`L+R -!BpJTm/X-`mK!\oW*ARpV2-Sn,L*8B(>Hl!MR`YrrKU:iVs#:!"\>Ym/bd$J,~> -!BU8Qkl@:PmK!\osK[rq8S>tnc-<:B(>Hl!Na\irrKmKiVs#:!"\2UklK'jJ,~> -!B:&NirG&9mK!\p:cs>q9GG@oDcNHl!OgV$rrL0[iVs#:!"RoNirR%VJ,~> -!BpJTm/X-`mJsT1mJs6=m/j]r.?jc8]b4+dao;5<#NM/'RWih9l0eQTrmmTdXQG*6JcFO*%JdS^ -YOothSEU"IE"]kRrrK[;aSu:gSDaDK.0-g@m/bd$J,~> -!BU8Qkl@:PmJsT1mJrg1klS0k.?jc7]b44uchm_Ik+[s6L4c)`mf*Iig8Be9l%/kcs4mV`qSA'! -p!AeulMpTt'#!f7!PuIjrrL]Ki;Wj-!41qS!R<`V~> -!B:&NirG&9mJsT1mJr3uirZCa.?jc7]b4A2ebf@Ol)pV^Q'868mf*Iihm/Wal[f(es4mV`qT5/A -p=>h@mJlp"'#!f7!Qi=%rrLl[i;Wj-!3bYI!Q-jH~> -!BpJTm/X,umJs6=m/hJ3D3Fo&m8kZUQgO\M#M=rq["E@Ug[5"En$mn0b5-\hJcF^/%fOIuU$^Eg -Ol$- -!BU8Qkl@9emJrg1klPu-D3Fo&m8k]aU@8!Z#Mb]9]odl4hsLFIn\C0Ud//CoJcF^/%fXb5XRFl0 -S`9\Lcn&8cn,EF=W6"u>m#g6+!c7p[l0/5o3e.~> -!B:&NirG%NmJr3uirX6$D3Fo&m8k]lY4;Dh#N;MX`h/Bhj6cjMo>mH$f)($uJcF^/%fXtJ[di7N -Woa9\cn&8cn,EFCZcN.Im[rG;!c7pXl/Mf^2h1~> -!BpJTm/X,umJs6=m/f6IZ&nthUD@Kg_#=32$3&/#S'[49J&;$LrrrAMRM3QuW -P_[`fs8@fjU[A'^kD%(X!r[<;iVrta!''61!S0Da~> -!BU8Qkl@9emJrg1klNgEZ&nthUD@X%a8Z#:$3&A7VUh8gNQM%brrrDSV2DeKJcC<$jSo\CQD!@# -TU"10s8@fjU[A'^lBKBi!rdoLiVrta!''6-!R<`V~> -!B:&NirG%NmJr3uirV+=Z&nthUD@d8cMmbA$3&SKZ.l7?S'_'#rrrDXYaN>pJcC<$jSo\GUTE\B -XJ4PNs8@fjU[A'^m%MN#!reJ]iVrta!&j*%!Q-jH~> -!BpJTm/X,umJs6>m/u>O"RqKP"lMU+Jr]!jrsASL -l(3FHrVuoU5 -!BU8Qkl@9emJrg2kl]cG"RqKP"lMU+NLT20rsAVDMm;??K8$SnmJd@Z]oAZ4r.4m!s69Onk+J!m -m&?#jrr<#V5+c8pI~> -!B:&NirG%NmJr4!irdp:"RqKP"lMU,Q`'0HrsAVKR_.ghP*ETDmJd@\`LEp\r.4m!s69Onl)^W9 -m^/P8rr<#V5 -!BpJTm/X,umJs6>m/j3d30!qBrJDA?I(&qLrsJM-HaDk/G'T%cp[8%br6^jYZ0Ho?JcG-;#jn@9 -a7$$U^&%a."/?WhrTaC`L?Q_Y!N!lqrrP.[W9WaNeieN~> -!BU8Qkl@9emJrg2klR^^30!qBrJDACMn],drsJP6M7i)TKnu/@q!S.crRRa%]'Y(KJcG-;#k+mT -c182u`;BQ6"/?WhrTaC`PNp6h!O'f,rrP.[VX!CHc8pI~> -!B:&NirG%NmJr4!irYnS30!qBrJDAHR`>:&rsJP>R)J@"Q'\ArqBo -e+:8@bkqD>"/?WhrTaC`U$]r$!P-_ -!BpJTm/X,umJs6>m/h#&I#J".cn&(XLYqt.$Lk!A^ZV>:MKu,WmJd@UZ@/"ar.4m!s760qorreR -n[3_KpAY'om8kjckl1[SdE)=g^TQMp!dju_lKnW'4b*~> -!BU8Qkl@9emJrg2klPMuI#J".cn&(bQ/_Z?$M(K\`p0[_Q\_p,mJd@X]8NB4r.4m!s760qp:6'r -o=^!lp\t0pm8kjckl1[^f#[jl`jan+!dju]lKJ>p3e.~> -!B:&NirG%NmJr4!irWclI#J".cn&+mU?;=P$M1lucKr$,UmJ[TmJd@Z`1!g^r.4m!s760qpVN?> -oYm38q#:9qm8kjckl1[igW9Bqc+r9;!djuZlJho_2h1~> -!BpJTm/X,umJs6>m/ed<^P`$qpM^b9J$&MBrsS%\K$<>IJ"MFO_=d6r"oQ]3IC&9ks+14Drs8M: -I&cVMIAcQ4rr^"KE;/Pq!OTGZrrLc;i;Wkn!%[@%!S0Da~> -!BU8Qkl@9emJrg2klN=7^P`$qpM^b=NOJZZrsS+iOO<9jNN&,-aS,'%"oQlDN4eS0s+14Drs8PB -MmW#pMm;gNrr^"KE;/Pq!PH7irrLoKi;Wkn!%R9u!R<`V~> -!B:&NirG%NmJr4!irUY0^P`$qpM^b@S%ngrrsS5"T%E;7S@"rachHl-"oR)VR`+]Hs+14Drs8PI -R_A:;R_&(grr^"KE;/Pq!Q<+$rrM)\i;Wkn!%I3n!Q-jH~> -!BpJTm/X,umJs6?m/u/F$N#YZ"hkRjUk.+mrs[_FMq?pSKXIS#U>,\8rrq\lI$i=[JcC<$qu6s$ -c%;JLbCZ8IrVlurGnIdPrrL<;aSu;1I,P#,q[*A[lg4`(4b*~> -!BU8Qkl@9emJrg3kl]W?$N#YZ"hkRkY)h?5rsReVR,$euOhIlQXl&OG"midXUXoBps+14Hrs-u6 -Vs;ZkVs=6\"8[9T^?,@qdB1Li!V20,rr`-*!SZl(!R<`V~> -!B:&NirG%NmJr4"irdd3$N#YZ"hkRk[[l=OrsRqfV;UR?T>nC-\)ZlU"n0 -!BpJTm/X,urrB%Pm/j$_6&,CDl:X+NKVS29rsetUL6^fSP).;uMM8b7mf*Ifb`dOamXbChs8N$' -g5M*Ker#RFr;QlU3(rPtrrM,;a8Z0eo&0NL5ld\Gm/bd$J,~> -!BU8Qkl@9errAVDklRLX6&,CDl:X+QOfnBQrs[MDU#t:)Q-dX>P/R"\rrr>KT8gSSJcC<$rr35[ -R@E0iQ_!+5rr_+;9BtU -!B:&NirG%NrrA#3irY_N6&,CDl:X+UT=FUjrs[\VXm+oHUXmefTZd#rrrr>QX..-"JcC<$rr35_ -VPrV6UoEJRrr_+;9BtU -!BpJTm/X,urrB%Pm/h#&IYIe+rf@njY^Odlrso"IJ"l;]N/Z?GW-OudrpKdikcT9$eGXsuKDu2= -R=rrFP_[`brr]/7OT+;?!r-sMu4IK4-Km/bd$J,~> -!BU8Qkl@9errAVDklPQ!IYIe+rf@nk\W##5rso"ONNDR&R@2gjZA>L7rpKdilF2YIg&?R&KDu2@ -V39BiTU"1,rr]/7OT+;?!r7QLaSu:5hVeD8IK4*JklK'jJ,~> -!B:&NirG%NrrA#3irWfmIYIe+rf@nl_OB-Qrso"VS@A"GVP`86]9fn_rpKdimD,-phYr*+KDu2C -Yb9_6XJ4PJrr]/7OT+;?!rA2]aSu:Aio'h -!BpJTm/X,urrB%Pm/f$C]7^+fc6m&PMOO#0rsnk9H`ckdLm$Qga,Y_]n*^2ZqT=nM\F5"KL]7YL -VgZGFT7G#]r;Qlk@40@YrrI];aSu:B^u54o])XVPm/bd$J,~> -!BU8Qkl@9errAVDklNR>]7^+fc6m&TQ_j6JrsnnAMRW90Q(Hq0c'j^/na?D\qp:mo_"!!UL]7YN -Z&?]gWfGC(r;Qlk@40@YrrJ2KaSu:La5Ht!])XSOklK'jJ,~> -!B:&NirG%NrrA#3irUn7]7^+fc6m&WUp9LdrsnnIRDAONUT3DNe#/bXo'ZM]qpqa;aRau_L]7YP -]:.(4[%5_Gr;Qlk@40@YrrJ\[aSu:UcJ\^(])XPNirR%VJ,~> -!BpJTm/X,urrB%Qm/uAP"S76F#P;FPbdr2?rqZR)o -!BU8Qkl@9errAVEkl]fH"S76F#P;FPc,#:[rqZR)os]gpq9b>"jo=PPM5Ai&mf*IT[>Cg9rdk*. -rs8G7M7i2^MT#Dhrr^Oo@J&IW!MnGjrrL?Ki;WoN"9m]LklK'jJ,~> -!B:&NirG%NrrA#4irds;"S76F#P;FPc,lC$rqZR)p;!*BEmf*IV^6l4`rdk*. -rs8G?R)JF+REPL)rr^Oo@J&IW!O(A$rrLT[i;WoN"9dEEirR%VJ,~> -!BpJTm/X,urrB%Qm/jEj21bf-rs#A:OQ_gil1k8hm%T!LqSn&Vk5Y;$P('e(mf*IdaGtk`nU^_% -rs8P@IAQ/8Ha38@rr`7^(8p!g!O'5YrrM#;hu -!BU8Qkl@9errAVEklRmc21bf-rs#A:OQrC.lhLJjm];Dlqok)!l2UY.SrC>Mmf*IecC0j3o7?q' -rs8SGN3DQ]M7WEXrr`7^(8p!g!P$+irrM,KhuJN!R<`V~> -!B:&NirG%NrrA#4irZ+Y21bf-rs#A:OR9'JmeHemn@+q:qpV+Bli6k6Wggrrmf*Iee>Jn\oR[%( -rs8SNR^qh*R)8Uprr`7^(8p!g!Q!%%rrM8[hu -!BpJTm/X-`rrBjOrrB%Qm/hG2Ee48irs.C?9Bj?A]);@'&EB%1de^b-U?_dYl*,Q#cMR&0"lu\0 -T%O$ns-3NgdY4%I_0r3LqYpZ_9/te`rrL09GQ-P#!ce9am-Oi)4b*~> -!BU8Qkl@:PrrBjOrrAVEklPr,Ee48irs.C?9BjTV_Ys90&E][NfDEUIXmQ/gla_qIe,8Y6"m<4K -WSRQ)s-3Ngf9;ukaG[:mqYpZ_9/te`rrLBLaSu>:LAp-2!ce9_m-+Pr3e.~> -!B:&NirG&9rrBjOrrA#4irX3#Ee48irs.C?9Bjilb5M,8&F$;Q2]_A!ce9\m,J,a2h1~> -!BpJTm/X-`rrE,8_uB_9g[,&,!3^tRrVm-!GnS!^R>U"urt*e?OPT]DI&HE4s8:30I';c%rrr2: -MhJe8JcD,;#N(Z%f?Ai9k5##Z_@h.jg]%<1ON7A%Ja;7o!j;Sgm-Oi)4b*~> -!BU8Qkl@:PrrE,8_uB_-gZ\c'!3^tRrVm-!GnS!`V3g<rrr5B -R$#>ZJcD,;#NMABgX2+[l1t>]_@h.jg]%<5SB(X1O7(s+!j;Sfm-+Pr3e.~> -!B:&NirG&9rrE,8_uB^qgZ&>t!3^tRrVm-!GnS!bYb^LWrt++bWTF!!RCi%is8:TRRDJ:Yrrr5H -V4Ys(JcD,;#Ni%_i7FR*m.pY`_@h.jg]%<9WQ5#>SabS;!j;Sdm,J,a2h1~> -!BpJTm/X-`rrN07^r66QWSHkClOEpWJcGWI#JUh7s35tsq=ssrrlftakk;E2Xn)Jk"mr^IOidFe -rrqAZH(j!lJcD;@#O7n3b1;K4h>%!OPRtU_rrMb;a8Z1/dbt--jo>nWmHjr*4b*~> -!BU8Qkl@:PrrN07^r66QS_WH3k7.LSJcGWI#JUh7s3ck;qY:'srm?h*lM%uK[e'Lu"n0-aS^70# -rrhDfLo]Eas.')omAZ/ngR+Miq#:D[&AQou!VV>irrK"Ki;WoA!"S2ZklK'jJ,~> -!B:&NirG&9rrN07^r66QN83Fqi=,eLJcGWI#JUh7s4EdWqtU0trn!aImJ+Yf^\.U+"nBR%Wn%"7 -rrhPtQaYq*s.')on$JY:hkd=6q#:D[&AQou!V_r$rrKC[i;WoA!"IoSirR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?"RfD"'S"d8!3+c@!lk9^JcGQG#MgtDq=LG8g@tURqnINWnFNi1ZM"4s -"oZo>HE6,prrr/7M2&e;JcDGD#kP-F^"ns/df0(B"8QO\h:MZ-I.>;X!OTDprrO5Aa6i6peieN~> -!BU8Qkl@:PrrW8:'Ys>?"RfD"'S"d8!1hp0!lP'[JcGQG#MgtDq=UkPhY7$Vr5OZ#o(BML]Cu7( -"o[)NM6uI6rrr2?QBT>^JcDGD#PGN_`8[JTfD,@Jq.;57fDbl0o>pq4]YWM*!Zh?[mHFYs3e.~> -!B:&NirG&9rrW8:'Ys>?"RfD"'S"d8!0#^n!l"^VJcGQG#MgtDq=_:iiqNHZr6CbCoCg"f`:s92 -"o[8^R(hkRrrr2FUnQ*.JcDGD#PPp#bN5k#h"^mOq.;57fDbl?oZ7%5`6$p:!Zh?VmGe5b2h1~> -!BpJTm/X-`rr`?%^_FTVrrlP5mHn2Ng&D&Oh!G0.!*"OLq#:Wk:d+(Ceq'amp\tQnZ[9(Rn#C`F -q#13rn@F41`V8g#"Q-&$UYUM$V>ghs]6g^>T7Fu\q#:H\4](b$rrJ>;aSu:cT\obN;ui3Nm/bd$ -J,~> -!BU8Qkl@:Prr`?%^_FTVrrlP5mHn2Ng&D&Ch!"m(!*"OLq#:Wk:d+(Cg5iN5p\tQo]SX;rn["+g -q>Lght_MYh`WfG@&q#:H\4](b$rrJbKaSu:hX5EpY;ui-LklK'j -J,~> -!B:&NirG&9rr`?%^_FTVrrlP5mHn2Ng&D&2guAHs!*"OLq#:Wk:d+(ChjqCSp\tQp`0eLL2"Qm7]\)i2@V>ghub*g'.[@GbFq#:H\4](b$rrK1[aSu:n[GUuc;ui!HirR%V -J,~> -!BpJTm/X-`rriE&s1f>ap&>1(mf3=S4PB`7WSHkB@K;::s7cO!rI#g7s7i[FdJ!SHn>C]Mqs:/- -^A@g."od/HH)BKerrr,4LPNb?JcDbM#lVkqT\let]_V=%"4&* -!BU8Qkl@:PrriE&s1f>ap&>1(mf3=S4PB`7S_WH2?iZ(8s7cO!rI#g7s7s*_f(T+Mo!++nr9gbH -`V]W6"od;WLp5q-rrr/ -!B:&NirG&9rriE&s1f>ap&>1(mf3=S4PB`7N83Fp?3#k6s7cO!rI#g7s7sF"g\1XRo=LI:r:%7c -c27J>"odJgQb)>Irrr2DU8$!/JcDbM#l`AF[HG8lbPV&6"4&* -!BpJTm/X-`rr<&urrR`Op%JCh$h"&pm1@tN!3+c@!\XPhJcGEC#c\Z?s8Ur2T(2OS$0Re0bl6gu -J&M9_rrr#.L5<\ -!BU8Qkl@:Prr<&urrR`Op%JCh$h"&pm1@tN!1hp0!\OJgJcGEC#c\Z?s8V)CWUoi`$0nCLdf/O3 -NQV1srrr&6PEj5_mf*FJXba1@JcDkP#MYQ:hnFrXp@eLfWYVV`rrL3KaSu>>K`'d.!l+dgmHFYs -3e.~> -!B:&NirG&9rr<&urrR`Op%JCh$h"&pm1@tN!0#^n!\FDfJcGEC#c\Z?s8V2T[.O(l$1+pgf`(9F -SC.94rrr)?Tqfs.mf*FN\!OYfJcDkP#N2DYil7A&p\+UgWYVV`rrLH[aSu>>Pl0J>!l+dfmGe5b -2h1~> -!BpJTm/X-`rriE&s1f>ap&>1pA+&bn"PNeTWSQqDjokkYJcGBB$-s`BrVuc&I)u<\rs@MCMqJ'i -R=`QZr;R!#gnT.hg]$[A"n]Q`Lr8t -!BU8Qkl@:PrriE&s1f>ap&>1pA+&bn"PNeTS_`N4iWTGUJcGBB#gXWArVuf0MpD"q$/qDAh#HN5 -OO*q'rrh8_LofM%rrr)8PEj;cJcE%U#NqhGf><9GnFlkarI#g7df0@(TZ@'5QKR3+"7lTuipQ%3 -c8pI~> -!B:&NirG&9rriE&s1f>ap&>1pA+&bn"PNeTN8AU[$e;"7lTth!X2' -_`*)~> -!BpJTm/X-`rr`?%^_FTVrrq^c#oA.0g&D&Ohcrm?Idj8[u# -LPl-]M3n9r@W!M[cprrOeQ\aJhc -eieN~> -!BU8Qkl@:Prr`?%^_FTVrrq^c#oA.0g&D&Ch<>!L!%rj&o)B$\4](bMs66#Hme-Sderuijs5K]9 -eGf@F"o$-*P/Qt[rrh5\Lp5ojs0hq4n?.boc]G$gp&>-c:d+'jrrM\La8Z1AdGOs*/c`?JklK'j -J,~> -!B:&NirG&9rr`?%^_FTVrrq^c#oA.0g&D&2h;\RA!%rj&o)B$\4](bMs6HSbnFcefgS(b6s5g>U -gA_!L"o-H?TZd#rrrhAjQb)=1s0hq4o!k1:eXj&4p&>-c:d+'jrrM_[a8Z1LfAHT0/c`0EirR%V -J,~> -!BpJTm/X-`rrW8:'Ys2;!M3HIrrB%Sm/i7I?\/7IrsJR6/`$I,rP*]nrV$6trPa8\mJkh!Mq.Y' -"lZD*T%YprrQO-NUH07eieN~> -!BU8Qkl@:PrrW8:'Ys2;!M3HIrrAVGklQ_B?\/7IrsJR6/`$I,rl0i7rq??urQL8'n,M45R+_<8 -"lutFWS@F@rrr)7PEs>bJcE@^#PYfe^X\XAiUm-Ph(<77ci4$$pW3@8_Rn_*!abqbmcabt3e.~> -!B:&NirG&9rrW8:'Ys2;!M3HIrrA#6irXu9?\/7IrsJR6/`$I,rm$qVrq??urR.1Enc.RGV;D%J -"mERb[,:lOrrr,@Tqp'1JcE@^#Pc3)a4d>hjn/QTh(<77ci4$3prNI9b/<-:!abq_mc+>c2h1~> -!BpJTm/X-`rrN07_".L/@,^g_*nT*F!3+fA!abqgJcG3=!gF;6rr3)eQAt#!rsAM3H`m#?du'4? -q>UWna,Y_\n*g8[rnF/mV;Hk(^]+Q9^jN-0ObqW[rrU%LPg04/O5J%Y!S!OprrS5]?gd:^eieN~> -!BU8Qkl@:PrrN07_".L/@,^g_*nT*F!1hs1!aYkfJcG3=!gF;6rr3)gU71<=rsAPUWoc'sd0na?D[hlMX;idq-Ers/JBMmM',QJ(m0!l>P6c2Rg6ilM-#fqdO*!fm=fmcabt3e.~> -!B:&NirG&9rrN07_".L/@,^g_*nT*F!0#ao!a>YcJcG3=!gF;6rr3)iXf(LXrsAPDRDAOrh5%"/ -q>UWoe#/bXo'ZM\j0tAck(3QIrs/JIR_7FUUu(_C!l>P6c2RgCk/dQ'hQYo;!fm=cmc+>c2h1~> -!BpJTm/X-`rrE,8nc&`\)%&dWf`(rNh -!BU8Qkl@:PrrE,8nc&`\)%&dWf`(rBh<=tr!5F*bmf*@*&XiUt"4)n=qt9sqosTapqYns-U#YqJ -"mECOV:Y\7rrr)8Pa9DbJcEXf#Leg4f;=YWrq$-kR1[<[rrK@LaSu;0No0j<^Ap%WklK'jJ,~> -!B:&NirG&9rrE,8nc&`\)%&dWf`(r1h;\Pk!5F*bmf*@*&XiUt"4`jZr:U'rp:m$ -!BpJTm/X-`rrBjOrrB%Tm/uV[!UbO=mJd:C.;o(_rr_haL>DM%$1":7a8PtXJXYZprrr8BPCBk( -n,ERjgnK(jh1>UHrs.;=Nm=DJ_Yj$*"8m$cgWTTt]s,TX!rdH -!BU8Qkl@:PrrBjOrrAVHkl^&S!UbO=mJd:C.;o(_rr_kmPi;97$1=jRc2IUdO/D+8rrr;IT8^GM -mf*FJXba1>JcEdj#N(u=e?4bOr:Bpjr,*t -!B:&NirG&9rrBjOrrA#7ire3G!UbO=mJd:C.;o(_rr_r$U#kqH$1PBne,B6qS[%JTrrr;OX..&r -mf*FN\!OYeJcEdj#NM_[fsmKsr:Bpjr,*t -!BpJTm/X,urrB%Tm/k?/++aIXrr_a\8+?KW"4D_#p[nIlig#;Is80]`T]u4N"mN:?Q-K3prrr&1 -LPN_=JcEso#O%Y0`iONtq""Fen4-" -!BU8Qkl@9errAVHklSg(++aIXrr_a\8+?KW"4rR@q"4Rmje7pjs89uuX6]N["migYU!rr.rrr,: -Pa0>`JcEso#O81KbdNDEq==Ofn4-" -!B:&NirG%NrrA#7ir[!r++aIXrr_a\8+?KW"5KE\q=O[nkcLT7s8:65[I3eh"n'6rXk -!BpJTm/X,urrB%Tm/idX:P&Q2rr`1:.GOh$"88[EeareIf8>^Is7s?UVX=-X"oQ`6I';`%rs&JX -UNrWjrdk*srs/(mI(Zk6YOh;a"5>8Br5ns>l[m1W!NhGeieN~> -!BU8Qkl@9errAVHklR7Q:P&Q2rr`1:.GOh$"8B*^g@P=NgR"Jjs8'ZlYj_>d"oQoFMR_s>rrh8_ -Lp#]fs3UcNo -!B:&NirG%NrrA#7irYJG:P&Q2rr`1:.GOh$"8KO"hXgaRi2!C7s81$/](,Op"oR)WRDJ7XrrhDm -Qal..s3UcNoXpX9`L+L8nc&^G.;o(*rrMS[a8Z1QdGOs*:B6[KirR%VJ,~> -!BpJTm/X,urrB%Tm/h2+It@X`rrST*^AS!5gOu -!BU8Qkl@9errAVHklP]%It@X`rrST*^AS!5hib)6o`#9td>t6ls7j?d[IX%k"n00bS^70$rrr,: -Q'B>_JcF:##Pl,k\\j?/nF6GZ^)39YrrW1RqT/[;agBt*!e12en*'ku3e.~> -!B:&NirG%NrrA#7irWrqIt@X`rrST*^AS!5j.NmTo`#9tf:B88s7s^'^@_.!"nBU&WR^k6rrr/B -U8#s-JcF:##PuK._TSCYo'lY\^)39YrrW1aqoJd -!BpJTm/X,urrB%Tm/ffYX+C<6rrTnORJd'eqQYImoD]0p^O3!Ls7ERCYk7Yh"oZr?HE6)orrq5S -H)'0oJcFI(#Q;VjUVDAMkO8EPR2EZWrrJ#;aSu:qP2H9@WrP]Zm/bd$J,~> -!BU8Qkl@9errAVHklO?TX+C<6rrTnORJd'eqmqa6oD]0p`f%.ns7X$\\b5[r"o[,OM6uF5rrh;` -LooTds4RDWrQC/%`fI%_n,EHW(r!uh!LMrirrM#Khu -!B:&NirG%NrrA#7irVXLX+C<6rrTnORJd'eqnnlSoD]0qc'l<;s7aEu_Y3^'"o[;_R(hhQrrhGn -Qac%,s4RDWrR.1Fc(20,n,EHW(r!uh!Mnu$rrM/[hu -!BpJTm/X,urrB%Tm/eF2e:IY^rr_")DZ'G4"65<-mdpGcp9K%Pp]'cbHa`\Arrqo'JrI\Cn,ERa -_2*i\oR[%urs$r,QGA -!BU8Qkl@9errAVHklN".e:IY^rr_")DZ'G4"6PuHnFQYepUc9qq#BrnMSAlYrrqu0OI=;en,ERb -aH`"0p4<8"rs%,?U;rOkipZmLr,*t<`;]k=d`DFhon_N*!n72nn*'ku3e.~> -!B:&NirG%NrrA#7irU>'e:IY^rr_")DZ'G4"6lYdo(2kgpr&Q=q#C!#RE#$prrr#9Su0s3n,ERc -c_I2ZpOWA#rs%;QXj3]Bk3r -!BpJTm/X,urrB%Um/uJQ"SmWKjo5GP7n<(Hrri83I)>mSrsJ4mIDPj]mA>9Dq=Xakrn*igVVghA -"l?)$U>5a!s5O%_i0&u3OG_WWrr_a\8+=Fr!P#PXrrIT;i;WoT"9[fUm/bd$J,~> -!BU8Qkl@9errAVIkl]oI"SmWKjo5GP7n<(Hrri;*N -"QHV@Xl+d1iVs,CSsREdQeLm-"7SfNnAG8,^qIeg!K?R,rr`'""6/h7!R<`V~> -!B:&NirG%NrrA#8ire'="SmWKjo5GP7n<(Hrri;DRF(s)rsJA/Ra:p3n[b14qXsjlro(8O]&rG\ -"Qd1\\)`,?iVs,FWhdn=Uu1V?"7SfNnAG8,aMl4"!LrZ -!BpJTm/X,urrB%Um/k-)."VEYrr`1:.GOb""6u)3kjn`\k*gqIrr;5VI_u!Srrr#.L58Br5/I7d%8;X!LMBprrOSK_XQpneieN~> -!BU8Qkl@9errAVIklSU"."VEYrr`1:.GOb""72YNlLOr^l)'Tkrr;>cN6(qhrrr)7PEj2^n,ERc -ad/.1on!/*rs.tmNkhHQdf/\7"5>8Br5/I7eZ$Uh!MeE,rrOSK^[UIgc8pI~> -!B:&NirG%NrrA#8irZdl."VEYrr`1:.GOb""7N:imIL8am'328rr;DpS'V$)rrr,@Tqfp-n,ERd -d%d;Zp4<8+rs/&$S]J%-f`(=="5>8Br5/I7g9ep#!Nt>;rrOSK]("_\_`*)~> -!BpJTm/X,umJs6Dm/idX;1\c+rrST#_Ya?9rl'8qr:9jpglIEHs8V2MJB.W\rs&JXUj8]grpTjj -hkbUmg\ud(li.4`Vg5P@I`)*NrrU%LRDAh'jbUtW!O'5prrQ$tSFGnHeieN~> -!BU8Qkl@9emJrg8klR7Q;1\c+rrST#_YX97bDO.6o)B'TS=/45s6->?c2I86"Q6G=XPWCF"QHV@ -XP\U/lMh+`Z&#ulN62"brrU%LRDAh'k`s3g!P$,+rrQ$tRIKGAc8pI~> -!B:&NirG%NmJr4'irYJG;1\c+rrST#_YX97d[A5To)B'XW2APRs6Hq\e,An<"Q[(Z\)QiU"Qm7] -\)W&>lMh+a\sL=CS'_*#rrU%LRDAh'l_DN#!Q!";rrQ$tQ13f7_`*)~> -!BpJTm/X,umJs6Dm/hD1H@c+SrrU%LRJQpcn!f0mo)B*sd=mqJs8V)FKZj>crrr,6MM/Y5n,ERb -_hj)]o7?r1rs/A1H`3ih](kXl!gsY;^]+B3FoBD]!QV(prrRKHFn"c!eieN~> -!BU8Qkl@9emJrg8klPo+H@c+SrrU%LRJQpcnYVW5nc&sIPG@=@s5fu;dJib;"o$-*P/Hn[rrr/= -QBT;\JcG3=#Pu8nZE];'q<\+_R1[ -!B:&NirG%NmJr4'irX0"H@c+SrrU%LRJQpco -!BpJTm/X,umJs6Dm/g&`UOiI&rr_")DZ'A2"3uA!q==Onr5=)[mJm4AP)%E`o)AmPW-OrbrU9ai -hkk[mgAZ['o`#0p`IFM]Ha*//rr`1:.GMQ9!J9XYrrLr;hu -!BU8Qkl@9emJrg8klOQZUOiI&rr_")DZ'A2"4W:>qXXXnrQC2&n,NFGSs7dqrrqJhLoB)-n,EON -Y_]@:JcG?A#Q;i*WjR\op$D\\r,*t<^&J+pm`>D/iLJg*!i#`inEBu!3e.~> -!B:&NirG%NmJr4'irVjRUOiI&rr_")DZ'A2"500[qXXXnrR%+Dnc/XMWhS5;rrqW!Qa>TKn,EOQ -\sKkbJcG?A#Q<)?[D/*Fp?_e]r,*t<^&J,)nAtV1jf./;!i#`gnDaPe2h1~> -!BpJTm/X,umJs6Dm/eg=b(9TLrr_a\8+?BT"8&FBf^\tLppkaTo`+sDNf) -!BU8Qkl@9emJrg8klNC9b(9TLrr_a\8+?BT"88p\h=:LPq7qltp&G'IS!Vdtrrr5CRub>Rn,ERd -b*S:1oR[&:rs%& -!B:&NirG%NmJr4'irU_2b(9TLrr_a\8+?BT"8B?uiUQpTqT,)@pAb0OVki/=rrr8KVk(m!n,ERd -dA3GZon!/;rs%5NXhgI;o'?;Xn4-"<]`/#9hoPfup6X\:!m1KnnDaPe2h1~> -!BpJTm/X,umJs6Dm/d[rm=G;nrr`1:.GO[u"4r.%p$r%ho;m;Nq>^HCMN6?YrrqMdH^W=[n,ERL -Vg4rhrdk+Irs%8>N3Rr)kj&0MgF7%<]Dho6^rQHUI.H4q!posrnEg8-4b*~> -!BU8Qkl@9emJrg8klM7nm=G;nrr`1:.GO[u"5K!Bp@8.ioX9XpqZ$TJQ^ce"rrqVpMPSl&n,EOO -Z&#I;JcGWI#2ku=\rWfTlMgt@.;o'qrrKULa8Z0toAKWMm/RRaklK'jJ,~> -!B:&NirG%NmJr4'irTVhm=G;nrr`1:.GO[u"5oc^p[S7jotQp -!BpJTm/X-`mJsT1mJs6Em/kr@&V9u9rrST*^A7d2po]+nnG`j]TQ[sHs8LB#P2,R,"o?H,I^AA/ -rrr/8MhJe7Jc>uTk*gq,LQp`]rrTnORCW=u`2^lX!Ku3prrNc4g%"G1eieN~> -!BU8Qkl@:PmJsT1mJrg9klTB8&V9u9rrST*^A7d2q6u@6nG`j_X+eFis8UW6T&B,<"oH]>N4eQH -rrr2?R$,D[Jc>uTl(sNQQ([1%rrTnORCW=ub-T.g!M83+rrNc4ea_l)c8pI~> -!B:&NirG&9mJsT1mJr4(ir[O,&V9u9rrST*^A7d2qS8TSnG`ja[?\o6s8UfIWoW[L"oHoPS&Fda -rrr2FV4c$)Jc>uTl`m(uU9*PBrrTnORCW=udCmU#!NP2;rrNc4cgg#r_`*)~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -n,ERT]9fqbre:@Vo"(:)W28G9rrST*^:=1DiiC-"!PHh;rrP"WYjp`S_`*)~> -!BpJTm/X-`mK*A%Zc)83WSm.FQiL3=s4I>RgF7%UTq[sZ3pnG`jIMic`os89ogS)j&<"oQ`6 -I';`%rrr/9MhJb6M>mhSZ$WF8K['M\rr`1:.GM?3!UtNXrrKp;hu -!BU8Qkl@:PmK*A%Zc)83S`&`6PlOm:s4I>RgF7%UQp^P^8(rsIPKSDaGIrQUD#kO8ESr7.R" -\E`P_"o-9.Oi-gJrs/;0M6`kc8pI~> -!B:&NirG&9mK*A%Zc)83N8W^tOT8I6s4I>RgF7%UQpa-kEFrsI\\WT=*ZrR7=BlL4`Vr7\:R(TSof`(.8"8m$cgUI1`o:!`"!RAL -!BpJTm/X-`mK3I)'=78trW)ob"mp1<&9.$qmJs6Em/hJ3H@c+Jrr_a\8+? -!BU8Qkl@:PmK3I)'=78trW)ob"mp1<&9.$qmJrg9klPu-H@c+Jrr_a\8+? -!B:&NirG&9mK3I)'=78trW)ob"mp1<&9.$qmJr4(irX6$H@c+Jrr_a\8+?brn*jJ -li7"_d$qE0mf*I\`gj$YqX=Ffke!1giVnl;#Q)`5\$MROrTO7`n4-"<[Jp8nprNI9i3(u;!dXie -n`'Yf2h1~> -!BpJTm/X-`mK -!BU8Qkl@:PmKBMT#J_rsSbG -N3DaNs8']mY3kZW"od2NLU6(1rrr5BR?>DYP5bddc]=p(MSf5Qrr_")DZ$mA!L`#irrMSKhu -!B:&NirG&9mKIREPQursSbN -R^r"hs81'0\F8kc"odA^Qb;PNrrr5HVOu')P5bddeX`qRREGBhrr_")DZ$mA!N,)%rrMY\hu -!BpJTm/X-`mKEUjs1f;So'QJXrU'hHYjUq`2rX0)WSm.F2up[Ds4%&MR1[C3rr_YUN9'I-$i%/W -Yk7tqpptjOmd:#Xn@O@2_Y!@G51"q!knXo -na-A.4b*~> -!BU8Qkl@:PmKEUjs1f;So'QJXrU'hHYjUq`2rX0)S`&`62up[Ds4%&MR1[C3rr__bRHO&=$i.Po -\b?('q8%ronEp5Zo#$WWaS,*&"m*(HW7q6:rs%/BSZdm]p?)AV`"AECrrK7LaSu>@L&'[,!knXo -n`^)"3e.~> -!B:&NirG&9mKEUjs1f;So'QJXrU'hHYjUq`2rX0)N8W^t2?:IBs4%&MR1[C3rr_epVX!XM$i.i1 -_>"!0q8o&:o'QG\oZNo'chHo."mEUcZetbJrs%>TWO\D5pZDJW`"AECrrKU\aSu>@Q20A -!BpJTm/X-`mJm7drrR`Ojn%m?!<)PPpAY6;IC&e=rsSD! -Hb9+Rs7WjIXRY]X#6*APH(ipjnG`[ea,bb[m[F.[i0/tpI&HGprrT>8_Qj+A\[BKX!K5sqrrUpT -+7\_!eieN~> -!BU8Qkl@:PmJm7drrR`Ojn%m?!<)PPpAY6AMnJrUrsSJ, -MSf5is7a3`[I`bb"lHJ=XPNmFrrr5CRuY8QRfZ16rU!j3-PZ2Xj?]uU-RR-!9+!o!\r -n`^)"3e.~> -!B:&NirG&9mJm7drrR`Ojn%m?!<)PPpAY6GR`,*lrsSM6 -REGC+s7jR#^@^dl"lm+Z[c7;Urrr8KW1D!"Rf -!BpJTm/X-`mKEUjs1f;So'QJXrU'gjm-a<."6&YJWT!4HlNRCaJcF0u!mV^SpAY6dTnV:irsS.d -J&VBds7 -!BU8Qkl@:PmKEUjs1f;So'QJXrU'gjm-a<."6&YJS`/f8k61n\JcF0u!mV^SpAY6eX-;K0rsS4q -NQhA$s7Ns[\b5=h"o$0-OMUJUrrqVpMPSi%TDo,^WK49DWU&XF!h:1SYl=aRWlP,?XjQ),"8;g" -kORj -!B:&NirG&9mKEUjs1f;So'QJXrU'gjm-a<."6&YJN8`e!i<98VJcF0u!mV^SpAY6f[\2^LrsS;( -SC7B9s7X -!BpJTm/X-`mKjk"4Me#p[8%hj-GDG -rr<#gXF%AKli..KX*^8^r:'^iqok:QZKe4b#4\^@UkP&lj8T19,29=$!T]*XrrK[;hu<`m!8$f/ -!S0Da~> -!BU8Qkl@:PmKjk"5&X?q!S.ak+\'i -rr3,m[Y_]lli..N[>C^1r:'^iqpM-r]Bl -!B:&NirG&9mKjk"5TN]q!S.al)gW5 -rr3,n^R3"8li..Q^6l.Zr:'^ir7J*>_saB##5#Ts\=fqej8T19,29=$!U?K$rrL6\hu<`m!7(/q -!Q-jH~> -!BpJTm/X-`mK3I)'=72r!!)uc"ZrlG*?d%0(o!\sbg -o'HJ/4b*~> -!BU8Qkl@:PmK3I)'=72r!!)uc"Z -!B:&NirG&9mK3I)'=72r!!)uc"Z -!BpJTm/X-`mK*A%Zg[;^!<)=1m-bb!3+rE!hoZiJcF$q"7A9Xqt9skgkDElmf*Fhc@hVI -rr3,eUj]uQlMh%R[""4[q=+Cfr6^pZXlZYa#Q)8`SrecVro="\qd)DQXT& -!BU8Qkl@:PmK*A%Zg[;^!<)=1m-bb!1i*5!hTHfJcF$q"7A9Xqt9ski0156mJd:;P,.=@ -rrh_lMoGPXrrqf&NLeDlnG`[jete23kcFdgqo4MnS<_^crr`.)4RTLhu -!B:&NirG&9mK*A%Zg[;^!<)=1m-bb!0#ms!h00bJcF$q"7A9Xqt9skjIipRmJd:ATWmb] -rrhf#R`tZorrql0S#Y$8nG`[jgT[*\l`C*jr6C_;W2&/-rr`.)4RT -!Q-jH~> -!BpJTm/X-`mK!-kZ[L!`rri8;I\Z<0 -rrhPXJ&;*JrrrANS9h-ln,ERZ[t0R[pp'i(rQ0VTOb:jUir9,R9MG,[rrJJ;G5gG"!c%dk -o'HJ/4b*~> -!BU8Qkl@:PmK!s3:QGoh8'Pp&>-k]Sk/(rri;CN3;XK -rrhVeNQM+`rrrASVhq_?n,ER\^Q4l/q6Br)rm-XuSWV>!ir9,R9MG,[rrJkKaSu;;L#;n3CB0(Z -klK'jJ,~> -!B:&NirG&9mK!-l`1#9Erri;JS%/"f -rrh_sS'_)urrrAXZC&;fn,ER^a.9-Xq6Br)rmdR@Wh7oBir9,R9MG,[rrK:\aSu;;Pi)KBCB/qV -irR%VJ,~> -!BpJTm/X-`mJsT1mJs6Fm/h,)LOoKLrr`.)4RVkA"6>E-mHsoVppkaSoD\amjI:_@r9=4bn[sR4 -_"@-r"o[#CH)TZ/rs/POLQ7UL`Ve]p"7A9Xql9YsXMMsW!IsRrrrRrUD=[&peieN~> -!BU8Qkl@:PmJsT1mJrg:klPW#LOoKLrr`.)4RVkA"6Z)In*U,Xq7qlsp&=sokGF?`W -a7\s%"od8TLpH*Krs%)?S"PebrSdbYmQ=hQWrE+.aN+;]NUbs,!f$bko'$2#3e.~> -!B:&NirG&9mJsT1mJr4)irWopLOoKLrr`.)4RVkA"6ubdna6>ZqT,)?pAY'plEQo/rTX=coZNo& -cM$c-"odDcQb2Ffrs%8QVlZE:rSdbYmQ=hQWrE+7cc?%dS+GS -!BpJTm/X,umJs6Fm/gAiSq6pbrr`7@/`lX)"T?#]_#<[#"S8aB\bQ1("Q5W"b5LT)#6*DRH(`gh -nG`[_]nM<[ost),gQ./VID5R9rr_@7ErN' -!BU8Qkl@9emJrg:klOlcSq6pbrr`7@/`lX)"T?8ra8YK+"SB0\_>4*1"QZ>?d/N8/"lQP>X53dE -rrr#4P*X5`\c2lkS<]h,`V\Tn"6D+Tri,nuagB+g!MA9-rrSblJUc8pI~> -!B:&NirG%NmJr4)irW0[Sq6pbrr`7@/`lX)"T?Q4cMm52"SKQuanl#:"Quq[f)Fn5"m!1[[Gh,S -rrr)=TVTs/\c2loW1pG`c26H!"6D+Tri,nud([R#!NY8=rrSbl<:]&M_`*)~> -!BpJTm/X,umJs6Fm/fZU["88!rrRs"g[kFIl]dImm/I4TU4:,Zrr3,VPD@K`kl1h[`/K;YmdU5\ -rnF/mUYGd^rs%POJsUhopYYuPgEMENrrLc;a8Z1 -!BU8Qkl@9emJrg:klO0O["88!rrRs"g[kFIm@]s5m/I4VXc:L%rr3,ZT9Rk)kl1h\bF+I-nF-A[ -hlV^:hnB$okG+-5MST#ErrUq!LSt.Qh4_mh!O9o-rrTP-6Ls@Ac8pI~> -!B:&NirG%NmJr4)irVLH["88!rrRs"g[kFIn#WJSm/I4X\!teDrr3,^X.n>Ikl1h]dAEMVo'cS] -j0tAaj1YHslE?e^RE53]rrUq!LSt.QiN:0#!P6e=rrTP-61X%:_`*)~> -!BpJTm/X,umJs6Fm/em?bCT]7rrS]/cL_&=rl9Dqr9XFdjHtYIrr2p#fT1p=roa:bjK*]qd/Aco\TTLc5N4MrrMS -!BU8Qkl@9emJrg:klNI;bCT]7rrS]/cLUu;c&9@7m/I1NUQX.*rr_&GQe:I#"m<=OUt,D4rrr,; -QBK2Y_Z'i-XGip2](Oq[!mV^SVZ-\eNQ;&"_n4k,!m:Qro'$2#3e.~> -!B:&NirG%NmJr4)irUb3bCT]7rrS]/cLUu;e!e>Tm/I1QYFsVJrr_5YUtt25"mWjjYM9!Errr/C -UnGs)_Z'i/[[O@d_Y2jd!mV^SVZ-\fS&bO0bJW9 -!BpJTm/X,umJs6Fm/e1+iIV$LrrT>8`:Ep1n=>Bmli.(@NfDclrri>NMiQEOrrr;EP^K_!n,ERL -Vg4lbrQ"pBnZ.#&H`QYlrrU+NY,2."rc\(XrrLK -!BU8Qkl@9emJrg:klM_&iIV$LrrT>8`:Ep1nu.i6li.(DR[W+3rr^rAS)!0+"oH`@Mn/-ArrqJg -LoK/.a8ZA8[#(N7[.<&Q!lP\RV#LILq8iR:eZ%L,!oX+so'$2#3e.~> -!B:&NirG%NmJr4)irU(uiIV$LrrT>8`:Ep1oWt=Tli.(HVl/PQrr_,SVr6_;"oR#SR_eC[rrqSt -QaGZLa8ZA9^6u*j^@^7]!lP\RV#LI\q8iR:g9ff -!BpJTm/X,umJs6Gm/u\Z!;D'E`r?+Y&[:g*"42P"q!A"`rm6@cj8T&]rm6F`gu\P>la2/'aS>9) -"o-,uJ[k-krs&2(H^&oRm+hUBYS"gKrrJ&;aSu;%MW"L:pAbEaoBcS04b*~> -!BU8Qkl@9emJrg;kl^,R!;D'E`r?+Y&[:g*"4`C?q5R,uEh!U#g-rr_uq#3b[C!R<`V~> -!B:&NirG%NmJr4*ire9F!;D'E`r?+Y&[:g*"5B<\qWn.`g7YV5rVluRU8m;9rrqo2S>k$7nG`[f -e#/bXo#q%;pr&Q$RCMbArrTD:`2!>5V -!BpJTm/X,umJs6Gm/l,E%Y=YurrUF`TCMp`oqm>mli.+c`IFWJrr3-"bCl2>jo5M_eX^uai:$[L -jfEfsdJVAk#5Z&]Oa`nbg]%>I)U5#V!MR`YrrVt=ro!eX%KPAWm/bd$J,~> -!BU8Qkl@9emJrg;klTQ=%Y=YurrUF`TCMp`p99Y5li.+dbDiUkrr3-#d?:6ajo5M_fr0_4j7!!O -kdHAEf)I)U5#V!Na_jrrMqLhu<`f!8@&/!R<`V~> -!B:&NirG%NmJr4*ir[a2%Y=YurrUF`TCMp`pUZsSli.+dd[R`8rr3-#f:]8/jo5M_hQrQ\kO8ES -lbAjlg\oM!#5cW5WggB^g]%>I)U5#V!OgY%rrMq\hu<`f!7g]$!Q-jH~> -!BpJTm/X,umJs6Gm/kE1,_?!5rrUjrN:?iLfn6*mli.+`\pLOMrr3-!a+9]?jSoDS]nM9Xo^Mka -qTP.OZKfs>#5uSmNI[>TgA_55+PEIg!OoMXrrIQ;i;Wj(!6Xp#!S0Da~> -!BU8Qkl@9emJrg;klSj),_?!5rrUjrN:?iLh3"l6li.+a_2>\nrr3-"c&\abjSoDT`06J,p$htb -qpD$p]C",J#5uf,RZ=-)gA_55+PEIg!Pc@hrrJ)Li;Wj(!64Wp!R<`V~> -!B:&NirG%NmJr4*ir[$s,_?!5rrUjrN:?iLih*aTli.+aadKp:rr3-"e=El0jSoDVbb1`Vp@/(c -qq%m;`:)4U#6!#@VjsmRgA_55+PEIg!QW4#rrJS\i;Wj(!5\9e!Q-jH~> -!BpJTm/X,urrB%Xm/jfu2hD"Grr_:2H2d@6"8T-LcKbE4oWNVOq#:9rqnmoUkiDaJrnXDrT@a)3 -rrq\mI?_tQg&D9Ud"[@.PMFml"9*Qqj.QDQc(N,W!Ku6rrrP+Z\b#1heieN~> -!BU8Qkl@9errAVLklS9n2hD"Grr_:2H2d@6"8]Nde*?r9osfmpq>UBsr5jqulJqmJiNJ';h#?gC -"migYT[N_irrpr:QB7`sgA_9SGq.jIrrLTLa8Z13i8FV:2ZU;XklK'jJ,~> -!B:&NirG%NrrA#;irZIc2hD"Grr_:2H2d@6"8]j'g$8S?p;*0UBsr6Uq?mGn3Mjgg_ci;W6G -"n0?tXP!I'rrq/NURnOIgA_9SGq.jIrrLc[a8Z1?jP^%>2ZU,SirR%VJ,~> -!BpJTm/X,urrB%Xm/j9f7tL]Vrr_UGB)M/u"6#*+n*9oUmA,0Jr;Q^!q7_9Plf8!KpVi,C\*ibc -"oQc8H`cGcrrq)9K7]3 -!BU8Qkl@9errAVLklRa_7tL]Vrr_UGB)M/u"6>cFn`p,Wn#hVkr;Q^!qSeAqmGn3Mprf+e^[Uam -"o[#JMRVj*rrq5IOcZ*hg&D0PAiB"JrrM8Ka8Z1EcJ\^(7f]IYklK'jJ,~> -!B:&NirG%NrrA#;irYtU7tL]Vrr_UGB)M/u"6cPcoBQ>Yn[P%7r;Q^!qotS>n)OEOpsQ(2a7Aa" -"o[2ZRDA.DrrqD[T:W%Ag&D0PAiB"JrrMA[a8Z1OeDU?.7f]=UirR%VJ,~> -!BpJTm/X,urrB%Xm/idXt_"T5fX`;]'%"Qc&)c2R_B"SfQTVs`RE"m)k5R*bd# -rrqi!J<.bGiVs)BQ@FOGf%C!)pf'ZQT)SleG5fS_!P5VqrrQ4$SFc+KeieN~> -!BU8Qkl@9errAVLklR:Rt_"T6)nbPpf,"R)\Ee,K@H"SoolZ1-cQ"mECPUXf;3 -rrqo,Ngn;hiVs)EU5b8&g=ZE-pf'ZQT)SlfL&T0n!Q)M-rrQ4$Re,bEc8pI~> -!B:&NirG%NrrA#;irYMHt_"T6B0dJiG2"RE:af`(mM"Sp3.]COt]"m`pkYM/pD -rrqu6SZ('7iVs)HXdboZhq7r2pf'ZQT)SlgQ2\l)!Qr@=rrQ4$QLj,;_`*)~> -!BpJTm/X,urrB%Xm/i:JAqBusrr`$q7.]mI"6bi0l083MglIEHrVm#rX`gc6ir92Zc'<[Zl1"]V -rRRNbW8Zk<#3_Y+K8J%Uf`)'F6r`rOrrIZqPAcRk_m/bd$J,~> -!BU8Qkl@9errAVLklQbCAqBusrr`$q7.]mI"7)MLm-4NPi1$.irVm#s[tV3Zir92Ze"MZ.lgXoX -rn=<,ZK1-I"mW(EOdF\Orr_j\<; -!B:&NirG%NrrA#;irY#:AqBusrr`$q7.]mI"7<(fmcj`RjJ\s7rVm#s^m)S)ir92[fWCRWmdU5[ -rnk&K]]eJW"mr[bT;:8orr_j\<; -!BpJTm/X,urrB%Xm/hb;G(K\-rr`122XKo4"TH;d]DUso"THf'Q/_cB"SB!HXmtBM"mraKN5P>X -rrqu+KSRJ=lMh(TV0[cKcMlGq"7.pXr1!]eQ.X1X!T&prrrR?DJ+N%.eieN~> -!BU8Qkl@9errAVLklQ85G(K\-rr`122XKo4"THN#_u8j""4i[0jo,2^ot-'ioAT]Qn%XmNb4b?) -"nTWpPf`[brs%npLlmqOrn%/Plo&JRS,WM_grTKriges,!d4QloB?;$3e.~> -!B:&NirG%NrrA#;irXK+G(K\-rr`122XKo4"THc9bPg]*"5BNOkl(Map;E?6o\ofRn].2tdJ*/1 -"ng'3U -!BpJTm/X-`rrBjOrrB%Xm/h2+L4TB[li$hdo<gheK?O5Err_:2H2a94!NX)YrrMS -!BU8Qkl@:PrrBjOrrAVLklP]%L4TB -!B:&NirG&9rrBjOrrA#;irWrqL4TBQ -[c%/SrrqGiPdfZOn,EUa^6bIafDaA$"61kVrgNif^ -!BpJTm/X-`rrE,8_uB_9ip?eT!1&39]Dhqk+PH/^"3c1uq<@n^q7D$To)8RknZ@/Do\f`Qp;DuA -[Hm>^"nfckK":=@rs&,#H%U[hrRLoLfcZ6@rrL!?FSt+t!gWgooBcS04b*~> -!BU8Qkl@:PrrE,8_uB_-iopMO!1&39]Dhqk+PH/^"4E.>qW\"_qSS2uoDS[lo='Rgp#,iRpWK"c -^@(Lj"np'*OMUGXrs&2.LQRYCrRLoLfcZ6@rrL3KaSu>@KDa^.!gWgnoB?;$3e.~> -!B:&NirG&9rrE,8_uB^qio:)F!1&39]Dhqk+PH/^"5''[qs"+`qobDAp&4mnoY?j4p>GrSpsH"1 -`piKt"o$B?T#pQprs&58QCj_trRLoLfcZ6@rrLH[aSu>@PPjD>!gWgkoA]kh2h1~> -!BpJTm/X-`rrN07^r66QWT*:H;ui_Fs1843T,PuArr_keK\P_j"SApF[eKb#"RiC<[J&MX"m3%; -PKN^jrrqGaH^N1Wq#:Qm\9W[T`;J-b!mMXUQi@* -!BU8Qkl@:PrrN07^r66QS`8l8;ZNVEs1843T,PuArr_qrP2GL'"STB_^A.[,"S&jU^%^Fa"mNRU -T@!H(rrqPmMPJ`"q#:Qn^ke,3b5Bch!mMXUQi@*AU -!B:&NirG&9rrN07^r66QN8ik!;#mDCs1843T,PuArr_u(T]>89"S]d#`qfT5"S9?p`VA?j"mj'o -X4I.:rrqZ$RBP?Bq#:QoaHrKfdJVMo!mMXUQi@*EXiLGBT((_=!i,fnoA]kh2h1~> -!BpJTm/X-`rrW8:'Ys;>rW)lrrW(jU!3+uF!_WNrJcE:\!jE9Tq#:N;H>n4W`r#cKRsCphnG`[hc'<[Zjo#,_qS.B/I),X.rrU1PYa5:im=<7W -!L2'9CqNOeieN~> -!BU8Qkl@:PrrW8:'Ys;>rW)lrrW(jU!1i-6!_NHqJcE:\!jE9Tq#:N;H>n4W`r#c'9(V9Jc8pI~> -!B:&NirG&9rrW8:'Ys;>rW)lrrW(jU!0#pt!_<n4W`r#crrT>'8FtjB_`*)~> -!BpJTm/X-`rr`?%^_FTSrr<&qrr<&VrrB%Xm/fWT[t4RhrrU+NYl"G,jBI5K^:q73>NG_^"8JsI -dHCN3k*ghIr;QodVL5uMlMh+/mkM -`qfW9^CnGLrrW1Bq8iR:V9.]r!k/.soBcS04b*~> -!BU8Qkl@:Prr`?%^_FTSrr<&qrr<&VrrAVLklO0O[t4RhrrU+NYl"G,jBI5K^:q73>NG_^"8T?a -f'!&8l)'Kkr;QofY_pmkM -`qfW9^CnGKrrIfLaSu:Ecf+m*[fAbdklK'jJ,~> -!B:&NirG&9rr`?%^_FTSrr<&qrr<&VrrA#;irVIG[t4RhrrU+NYl"G,jBI5K^:q73>NG_^"8T[# -gZSS=m'3)8r;Qoh\s^_:lMh+/U7od&nG`pe`gs$Uq#/X0SX@Xui;Wu#H>mkM -`qfW9^CnGKrrJA]aSu:Oe`$N0[fA\birR%VJ,~> -!BpJTm/X-`rriE&s1f>ao)A[iqYpNqhu<\Uip?e-!5X6d\,QNS)P@!.!kqgLqn<-D=hae5"5ej( -nE9fRk)YDMr;QobUOBiOmf*@dItRX4!eZ"#r;QrXW-Xo[r:0dmrn!ccG'ePJpu)/YjBI5K^:q73 ->NG_^!l#McPQ(Z?jiIH&[^b;r!l4jsoBcS04b*~> -!BU8Qkl@:PrriE&s1f>ao)A[iqYpNqhu<\IiopM(!5X6d\,QNS)P@!.!kqgLqn<-D=hae5"65TD -o&p#Tl'n$nr;QoeY)C6pmf*@dItRX4!eZ"#r;Qr\ZAGF/r:0dmrnON-Ko(Z(q;D8ZjBI5K^:q73 ->NG_^!l#McPQ(ZLkfEc)^;/_-!l4jroB?;$3e.~> -!B:&NirG&9rriE&s1f>ao)A[iqYpNqhu<\8io:)!!5X6d\,QNS)P@!.!kqgLqn<-D=hae5"6Q;` -o]Q5Vm&6`:r;Qog\=1YNG_^!l#McPQ(ZYlcB),`lR-=!l4jqoA]kh2h1~> -!BpJTm/X-`rr<&urrR`Op%/1`!;c]q!8meVWT*:H0`]@Is0hq3fcZ7Rs3YQT^&_rqqu6fr[X?'n -kPkY5M3?`nrrhPZID>XJrrI#2q7Zm'DYjA:q9,"MYN>BU#l`8*HZadi]C=eZ!kqgLqn<-D=han8 -!l#McP5bQQdE)=gaJRqr!m1KtoBcS04b*~> -!BU8Qkl@:Prr<&urrR`Op%/1`!;c]q!8meVS`8l80EB7Hs0hq3fcZ7Rs3YQT^&_rqqu6cr^P^7t -rr^o>T&T\J"RE+I`r#9*!H+V,^&apFqYp`qd@cE-kjn`Yf91uEN02!JiVrtn=hFRF!kVULrr3&7 -(;H%4!N4MirrLELiVru%!&4$/!R<`V~> -!B:&NirG&9rr<&urrR`Op%/1`!;c]q!8meVN8ik!0*'.Gs0hq3fcZ7Rs3YQT^&_rqqu6cra-kB< -rr_)PWoa0Y"RWXdcMR,2!H+V,^&apFqYp`rf;tFWlgk&\gn:%!S"IjpiVrtn=hFRF!kVULrr3&7 -(;H%4!OCJ$rrLW\iVru%!&*s(!Q-jH~> -!BpJTm/X-`rriE&s1f>ao)A[iqYpNqhu<\Uip?dq!7QN![JpEj.XCho^%]5B]j(@0rr_GGPNh91 -"T?JpS*'YK"Ql;*_Y`s)!LAuE^&aIaq#:Na[XjCTp@nRqfSOp"]_MNcWd:)\r8mqZd:r?h"_lBa -^D=SHrrK@ -!BU8Qkl@:PrriE&s1f>ao)A[iqYpNqhu<\IiopLl!7QN![JpEj.XCho^%]5B]j(@0rr_PVTBtb@ -"THc0VWn$Y"R2nFant]0!LAuE^&aIaq#:Nc^5n])p\4[rgm3eQ_tj>o[#(X1r8mqZd:r?h"_lBa -^D=SHrrK[LaSu:sU#H"Qdf:ceklK'jJ,~> -!B:&NirG&9rriE&s1f>ao)A[iqYpNqhu<\8io:(e!7QN![JpEj.XCho^%]5B]j(@0rr_VeX7#0N -"THuDZ0V>f"REFad/ -!BpJTm/X-`rr`?%^_FTSrr<&qrr<&VrrB%Xm/e@0h1>U5rr_UG7%s:f!MPMKrri>=I(K7=rri58 -IAH9.rrhDQJAhBZrrM;!otCHCkP+u\rn*rjU"KABrrq8=G^6prr;QrrbERFZkii$JqHLZ-^'),R -],&/CrrL';aSu;+K]2q4h#JPgm/bd$J,~> -!BU8Qkl@:Prr`?%^_FTSrr<&qrr<&VrrAVLklMq,h1>U5rr_UG7%s:f!MPMKrri>CMSf>Trri8@ -N3;XIrrhM_Nm%@orrM;!otCHCkP+u\rnXZ3XPEgQrrqDNLPWkDr;Qrsd@cE.lKJ6LqHLZ-^'),R -],&/CrrL -!B:&NirG&9rr`?%^_FTSrr<&qrr<&VrrA#;irU8%h1>U5rr_UG7%s:f!MPMKrri>JREGKkrri8G -R^hncrrhVmS^IB/rrM;!otCHCkP+u\ro(>Q[c.5`rrqM^QC#ekr;Qrtf;tFWmHFQOqHLZ-^'),R -],&/CrrLN[aSu;0T],nPh#JMfirR%VJ,~> -!BpJTm/X-`rrW8:'Ys5LK#dfarrI)HotCI7E:j/=p;Dr@[HmkRPBM2_q"Odlla2/&a8#!#!KEfG^&jrJ^Q8BqfTjPX -!rI*=ir9)B!#P7o!S0Da~> -!BU8Qkl@:PrrW8:'Ys5 -!B:&NirG&9rrW8:'Ys50!KEfG^&jrJ^Q8BqiN:3$ -!rS8]ir9)B!#G1d!Q-jH~> -!BpJTm/X-`rrN07_!h:'!;c]q!8meVWT*:H'*. -!BU8Qkl@:PrrN07_!h:'!;c]q!8meVS`8l8'*.PjK]!Uc#hrrJ#Lir9)F -!#+tg!R<`V~> -!B:&NirG&9rrN07_!h:'!;c]q!8meVN8ik!'*.PjK]!UuZ#rrJP\ir9)F -!#+ta!Q-jH~> -!BpJTm/X-`rrE,8nGiCdrr;lriVrnWip?dY!:GF`-3Xc@VYn..DY=#3oqm>mjo5JO -VL?5Vr;QoUP_I?[rVlncUA_e.Qqe"hqn<**R.C7^lC2p=L3ffUnG`[`^PITWnaZV[Y*JUm!L9gK -rrW.@qoJd -!BU8Qkl@:PrrE,8nGiCdrr;lriVrnKiopLT!:GF`-3Xc@VYn..DY=#3p99Y5jo5JQ -Y`$Nur;QoYTTdh'rVlncUA_e.Qqe"hqn<**R.C7^m&#GhP_l^*nG`[a`g)b+oC;h]Y*JUm!L9gK -rrW.Pr5em=Qg!H/!q$%!oB?;$3e.~> -!B:&NirG&9rrE,8nGiCdrr;lriVrn:io:(N!:GF`-3Xc@VYn..DY=#3pUZsSjo5JS -\sgqBr;Qo]XJ"5FrVlncUA_e.Qqe"hqn<**R.C7^n$/(@TpWISnG`[bcD.&Uo^Vq^Y*JUm!L9gK -rrW._r5em=V!I%?!q$%!oA]kh2h1~> -!BpJTm/X-`rrBjOrrB%Xm/d^snU^_Hrr?d3^'Aj!LUOXG/[G>h!,;')"5/@&oB#uTkFI1GrVZ[# -gQI?ZHCWI^o`"o/rOrJt6Os;BD8#k] -!,dhs!JTdZrrJJ -!BU8Qkl@:PrrBjOrrAVLklM:onU^_Hrr?d3^'Aj!LUOXG/[G>h!,;')"5T*Ap#Z2VlDTcirqud$ -hk$(^rr<":r4W7T?C_)m^&W*Drs\=oK8.5 -!B:&NirG&9rrBjOrrA#;irTVhnU^_Hrr?d3^'Aj!LUOXG/[G>h!,;')"6,r^p>u;Wm'E85rqud$ -j/Sj-rr<":r4W7T?C_)m^&W*Drs\D'PEj8ds7FO/U!*)trrqSuR'PQHo`"o/rOrJt6Os;BD8#k] -!,dhs!MJl%rrK:\ir9)M!"AJZ!Q-jH~> -!BpJTm/X,urrB%Xm/dUpoR[%LrrM\0rOr:PQ2SDtP@+:&!H@W$rr`)%IEU^O"Q5N"df01E"k\lm -dJdhT^&S00^&Vj?rrqh`F*>+hqu6iWW-Xo[r:0djq8neKZK_)_!,;DG"opHE\t1N^r4W/FNrK-J -e]@akV97ft!qZI"oBcS04b*~> -!BU8Qkl@9errAVLklM1loR[%LrrM\0rOr:PQ2SDtP@+:&!H@W$rr`,/N7$_d"66&=fDGROgmj\] -s(M5B!!)l0!,2*+"n8RFKu*T^rrqGgM5Jl%nc&dhc^p*-lh:>YC&PaM!&KnOSh=FK^&Vl-rrJqL -aSu:Ed,P',oDf6iklK'jJ,~> -!B:&NirG%NrrA#;irTPfoR[%LrrM\0rOr:PQ2SDtP@+:&!H@W$rr`/8Rb-X#"6Zb[h#%*TiM`R, -s(M5B!!)l0!,2*+"nK'bQ,rh!rrqPtR'GEDnc&dheZ,+Vme6Y\C&PaM!&KnOSh=FK^&Vl-rrK@\ -aSu:Of&H]2oDf6iirR%VJ,~> -!BpJTm/X,urrB%Xm/dLmpOW@OrrLi'rOr:7])B>D\L.9h!Irhnrr_;>R-iu7"4rHlg\_!Qer>.spL!N?Y.^&`3DO8f6^ -_8uWWZG#8t!qu["oBcS04b*~> -!BU8Qkl@9errAVLklM(ipOW@OrrLi'rOr:7])B>D\L.9h!Irhnrr_DNU[R:D"5B34hu!EUg7"(? -q7Zh/qRuuNnG3(fnu@=s_>.spL!N?Y.^&`3DO8f6h -aN4A^]>W_/!qu["oB?;$3e.~> -!B:&NirG%NrrA#;irTGcpOW@OrrLi'rOr:7])B>D\L.9h!Irhnrr_M^YOU]R"5p#Sj88iYhkur] -q7Zh/qRuuNnG3(foX'dHankc3"oHlPQbi"Wrrql0S#Y$8qYpTeE;dKO>.spL!N?Y.^&`3DO8f6q -ccH+e_oq'>!qu["oA]kh2h1~> -!BpJTm/X,urrB%Xm/dFkqLS[RrrL2trOr:NQ2SDtPm[K(!JY.SIft4,4^W["Ift445tc4qIfb(% -F8 -!BU8Qkl@9errAVLklM"gqLS[RrrL2trOr:NQ2SDtPm[K(!JY.SIft4/6t:]-Ift4785XF)IfWbq -q7Zh/qRuu\g&(dQoW*S!`;B-*"nfH]R)ejhrrrARVhhV^]jklK'jJ,~> -!B:&NirG%NrrA#;irT>`qLS[RrrL2trOr:NQ2SDtPm[K(!JY.SIft439P/b8Ift4::KDT7IfWku -q7Zh/qRuu\g&(dQosU$LbP^r2"noj"V9\c(rrrAWZBr2cr;QfOJ,$_YXpP$?!IrgarrLH\aSu:d -^uG@qq>^ZiirR%VJ,~> -!BpJTm/X,urrB%Xm/d=hrIP!UrrL2trOrM\)Mtr4M&QNp^'KEX=C5ZVF*W6-Ifjgc7WRR>"FX`D -:iuYc!G$r\^&S00^&`t!rI4ur:H:OEII;RhIVhtF9k\tFIgL@+6:5((It)!`pq?c29)QC(M9(bX -!S*UZrrLE=ir9)Y!!;cZ!S0Da~> -!BU8Qkl@9errAVLklLndrIP!UrrL2trOrM\)Mtr4M&QNp^'B?[?".JbFF*S/"*RL7F6%fRIUtuK -G5ZmkA;9oo!!)l0!JY.`Ig(-u5XT"/mXGFiDc];(C45W%$$frN8RcspIq4.r4W2gaH-?% -fqldi!Rn+/rrW-!!qYXWc8pI~> -!B:&NirG%NrrA#;irT8^rIP!UrrL2trOrM\)Mtr4M&QNp^'B?_@:j:oFaE\0"*[dEFl\#TIV;GZ -GQ!!lA;9oo!!)l0!JY.`Ig(1&85!QCmXGFiEEl.=D11r($$p/Z:hG$'Iq4.r4W2gaH-?% -hQY*$!SOp@rrW-!!qYFQ_`*)~> -!BpJTm/X,urrB%Xm/d=hrIP!UrrLi'r4WAd.gH5.H4Ttg)LS[#YG.;;HZO[qRAR=,cJ.RUrr<#t -aF(AljSoM]]R6aKs8U/sq7Zh/qS!8jA:K)T:cUXGId)=cHXo`3 -!BU8Qkl@9errAVLklLndrIP!UrrLi'r4WAd.gH5.H4Ttg&q%"'\?)BhM1^eUV6IVRe)0KbrVluF -MnJrJrs8J=MR2mRs2^&m^&S00^'TO)It)fF5XT%1l$ikaB2D!"EUeM`IV_qL9NFW:q7ZoV*O>UW -!K"mYrrMGLaSu:uTAokPr;ZojklK'jJ,~> -!B:&NirG%NrrA#;irT8^rIP!UrrLi'r4WAd.gH5.H4Ttg&q.74_7-P@R$4&;Ye%d!g#MJorVluM -R`,-brs8MFRD&7ms2^&m^&S00^'TO)It)fK85!TEl$ikaC0"#7F7F_bIVr7[;HuhJq7ZoV*O>UW -!K"mYrrMP\aSu;$X5a-\r;ZojirR%VJ,~> -!BpJTm/X,urrB%Xm/dFkqLS[RrrM\0pV$ZZ3W6YmE:Wo+(B!X]e]>A)Tp(4VEIa%:V5oK%]]/AV -k5PYZZ?rnNfmrn4!!)l0#CtM$TlPItroF(_m^e+-^$u%$&cV(Rd_rSmRZ)`;I#=5PIqX-(^&iZu -V#.k,J(ft`!rI*r47q>^]jm/bd$J,~> -!BU8Qkl@9errAVLklM"gqLS[RrrM\0pV$ZZ3W6YmE:Wo+(B!^bglfVQ_L(3F*[Vr!dkf[ -qn<)\g5l78r.P'krrMGLir9)V!!VuY!R<`V~> -!B:&NirG%NrrA#;irT>`qLS[RrrM\0pV$ZZ3W6YmE:Wo+(B!dghUTfb[]?*gOe&DS\\=l.bNSNp -k5PY\`0eL -!BpJTm/X,urrB%Xm/dLmpOW@Nrr?d.^&knpMuC?iC%)' -!BU8Qkl@9errAVLklM(ipOW@Nrr?d.^&knpMuC?iC$u!:nE&BM`4DXqMN3=DOdr;R]Z8FTkOSQ? -rrho!MR[[%^&S00^'&GLJr7h6rtbV,lJL(3YEXZqMhZbFS# -!B:&NirG%NrrA#;irTGcpOW@Nrr?d.^&knpMuC?iC$u!:o'"r\begKHR@KJ,T;]$,`6QunlLXrC -rrhr+RD3b;^&S00^'&GVP*se[rtbV-m,QdF\Y51QR[&u-Vm="We)'<[rVZZriG&2'!d,6OqRuuL -nrE_NSaji%!Vi#@rrVop#P6sV_`*)~> -!BpJTm/X,umJs6Gm/dUpoR[%Krr?s8^'6KS[^M8O?2VD:DWh$@pT&ekpZp_ca1JOMQ]$?7H%_0D -T;f-/`Qm)olLXrPrrVJY;>Ip+!;aD2:OL7QruD%4mcN?Ubf%,rU6UR`EdNS+TrkoGcaf6bW87IE -rr?d2^&i*eU\VV(BoW,nPM=1Y!Hn4urrVfm$M3WceieN~> -!BU8Qkl@9emJrg;klM1loR[%Krr?s8^'6KS[^M8O?2VD:DWh$@ppH+4q!R1pc,7&nU6ppmLln.# -WjB=TbLG>.m.L>UrrVPf<;F6.!;aD2;N&ihru1\%l/C=Db/1WhTpCUgMNsj8[_^2<^n6IhiU[!K -C&G[HC_rlB^&Vl,rrJbLaSu9oqW%SWoDf6iklK'jJ,~> -!B:&NirG%NmJr4*irTPfoR[%Krr?s8^'6KS[^M8O?2VD:DWh$@q7`BRq=*P&eB>\;Y,.VOQ_11Y -[CjE#db3RBn+Q_YrrVYs -!BpJTm/X,umJs6Gm/d^snU^_HrrK9frk8Pg.0L#7LA\adQ*06K"5\g(nFuqtp?U\icc3Z)WhGc> -Km[oaJ;KGYTi:d$!!)l0,$N^Qf[nU!bK%N8]!e]9S!/_\H#\(ZM3==&X0f[eg#_f(p\tEd^5.HQ -mIgJZDZ.9N@iD6>^&W&1rrJt -!BU8Qkl@9emJrg;klM:onU^_HrrK9frk8Pg.0L#7LA\adQ*06K"6,TEo(W/!p[.(ueBGkDZ`Bjj -P)=jFNg?96XB,/2!!)l0,$a!\gtUK3dETeQ_S3I]VOs39Lk1>AQCaqT[CsW/h<=J0p\tEf`KcS$ -n+H\\DZ.9N@iD6>^&W&1rrK=LaSu:&n)OELnGj$iklK'jJ,~> -!B:&NirG%NmJr4*irTVhnU^_HrrK9frk8Pg.0L#7LA\adQ*06K"6H8`oCr8"q![G*g=+6`]sb)A -TUCt.S>3*h[TWF?!!)l0,%'?giS`PGf@80lb/V3+Z)a[kQ][T)UoL]/^;\CMip6::p\tEhbbLfO -nb)n^DZ.9N@iD6>^&W&1rrK[\aSu:4n`0WNnGj!hirR%VJ,~> -!BpJTm/X,umJs6Gm/dh!mXbDErrN"$o=b6:qrIb[qmUslrp'Lgq![A$eBWE8rP&+.rk9,A?^6tE -R%0eEW3!52\\lV>gu[qsroX4aj/m]nanYZ2!Nq^e^A7g0ZMqQ=Q*-,H!OfJYrrJ,=j8T2K!"ebh -!S0Da~> -!BU8Qkl@9emJrg;klM@qmXbDErrN"$o=b6:qrIbZr4e-5l2M"an`f#cdse%i^A7j/^(d;RTq\(^&aM%NW9$naSu:0jl?@BmJmdhklK'j -J,~> -!B:&NirG%NmJr4*irT_kmXbDErrN"$o=b6:qrIbZr5Y5Rl2M"boBYMpfn,ss^A7j/^(d;XXfeh1 -ZF.3S^V[t3d+@+7lgac3rrqZ%RB4s7q#:AtQ2\Mo!!'>(^&aM%NW9%!aSu:=ki;[EmJmdhirR%V -J,~> -!BpJTm/X,umJs6Gm/dq$l@JuArrTqUT_6#"ToJ%2"6bi0l/hpGnSIg2!aCrOdJjFKd[YTYgA_!L -!W-I"^&^amNW0%#VTAc -!BU8Qkl@9emJrg;klMLul@JuArrTqUT_6#"ToJ%2"6uGKlfJ-InSIg2!aVJ_dJjFKf;FG-hZ!EP -!W-I"^&^amNW0%)YfQhFU>4f/!pTb!oB?;$3e.~> -!B:&NirG%NmJr4*irTkol@JuArrTqUT_6#"ToJ%2"7<(fmcFHLnSIg2!ahtndJjFKgp39Vir8iT -!W-I"^&^amNW0%0]#amPY2SF@!pTb!oA]kh2h1~> -!BpJTm/X,umJs6Gm/e((k(3Q>rrg(P]3DuC^&kuPqV_AVrkj,pr9""[E4,AQ"gr9aI\,]Krrr#2 -N.JA$r;QeWU%Q,%T/\XnNrK.6PfWk*T[)Tt!p0J!oBcS04b*~> -!BU8Qkl@9emJrg;klMY$k(3Q>rrg(P]3DuC^&kuPqV_AVrlL&6rT=+\E4,AQ"gr9hN2c'grrr): -R?,&Jr;QeWU%Q,%T/e^oNrK.:TZI-6X4620!p0J!oB?;$3e.~> -!B:&NirG%NmJr4*irTtrk(3Q>rrg(P]3DuC^&kuPqV_AVrm7(TrT=+\E4,AQ"gr9oS$_M.rrr,B -VOb]pr;QeWU%Q,%TK4prNrK.>XN:DB[FsU?!p0IuoA]kh2h1~> -!BpJTm/X-`mJsT1mJs6Gm/e@0h1>U6rrp.Q^]2\qpV$ZBdG=g)n!]*kkPkSGD"YLID!1io^ODg; -ci4@7Z$qeRpAb0h>J9dF#/+$23?#R.OT,@JK#mrmWl=#u!o3huoBcS04b*~> -!BU8Qkl@:PmJsT1mJrg;klMq,h1>U6rrp.Q^]2\qpV$ZBdG=g)nYVW5kPkSGD"YLID!1ip`f-q^ -ci4@:\r<0'p](9i>J9dF#/+'=5T@N;OT,@LON@G&ZchD/!o3huoB?;$3e.~> -!B:&NirG&9mJsT1mJr4*irU8%h1>U6rrp.Q^]2\qpV$ZBdG=g)o!,"RkPkSGD"YLID!1iqcC;3, -ci4@<_OIOQq#CBj>J9dF#/+*G7ifSIOT,@NT#gp4^!bs@!o3htoA]kh2h1~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK!Ho;rrW._rQ5'?`673@!n.,roA]kh2h1~> -!BpJTm/X-`mK*A%Zc)83WT*:H0`]@Is0r"0^D=T^rs@ajK"Sh3]RjAKf`)'HVLmCbrri>MKKPk% -^&jj*q"t'oq7h?Mk0Eu3p;N,BZ)h*?qn<-D=hak7#+l`qJ;qM@PlCc7m`GJ0^9Q_u!m1KtoBcS0 -4b*~> -!BU8Qkl@:PmK*A%Zc)83S`8l80EB7Hs0r"0^D=T^rs@ajK"Sh3]RjAKf`)'IY`RW)rr^l86([nd -!hNNiqu6fq`f-q^cMn.DbaaX'Y$&C6^&koL^A\'9T, -!B:&NirG&9mK*A%Zc)83N8ik!0*'.Gs0r"0^D=T^rs@ajK"Sh3]RjAKf`)'J\t7gErr_)L8"TOj -!hNTkqu6frc'l',cMn.Ed]&_QYZ\U8^&koL^A\'9T,=2kVpY:(rrJ\]ao;Cc_rLauaoF*dirR%V -J,~> -!BpJTm/X-`mK3I)'=78trW)ob"g(#p&m*iHmJs6Gm/f9J_1DWrrrU(N^\Rm5`d2TDHH+J7"58F& -oC)\arQB\3NSo;=qn<5dGbTW'qtpBrq7_9MkKX#8lEl+k:P-6n^:]&%jSSr_YS"e*Tm -!BU8Qkl@:PmK3I)'=78trW)ob"g(#p&m*iHmJrg;klNgE_1DWrrrU(N^\Rm5`d2TDHH+J7"5]0B -p$_ncrQpOURcAmMqn<5dGcZkFr;6KsqSeDolHT>;m(JI::kH?o^:]&%jSSr_YS"e.XGEq4rg3Wc -T&@`j!R7n0rrU":3:lA8c8pI~> -!B:&NirG&9mK3I)'=78trW)ob"g(#p&m*iHmJr4*irV.>_1DWrrrU(N^\Rm5`d2TDHH+J7"6,r^ -p@&"drRRL%VWNA\qn<5dH+'0fr;6KsqotS;m*5P=n&:i_;1cHp^:]&%jSSr_YS"e3[[4G\rg3Wc -WoV;%!S"aArrU":2tQ&1_`*)~> -!BpJTm/X-`mKQ9qnmc& -OQ?E@%`VO`KT9bI`rH)$RY&]\qu6fp^3u^ -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;So'QJXq(NWT*:H9)u,Gs1843T,Ptjrr_;?QgOMH"o5BDFd(n_ -rr`2HdJWnA"5]2g`;9K:q7_9Nkfj&1prSbDZ/PHW!mMXUrr3/aY^M\Vpmh?b[^aHZ!SWdurrT>' -9CqNOeieN~> -!BU8Qkl@:PmKEUjs1f;So'QJXq(NS`8l88cZ#Fs1843T,Ptjrr_DOU[RpV"o>c^KV.H( -rr`2HdJWnA"6,o0bPM5AqSeDolHK83q9P^f]&i\d!mMXUrr3/d\W!-+q4.Hc^;.kj!T'L0rrT>' -9(V9Jc8pI~> -!B:&NirG&9mKEUjs1f;So'QJXq(NN8ik!8-#fDs1843T,Ptjrr_M_Y4;5c"o?&uPcO*G -rr`2HdJWnA"6HPNdJEkGqTPD:mEGS6q:2R3_W^ao!mMXUrr3/g_O@LTqOIQd`lQ:%!TL3@rrT>' -8FtjB_`*)~> -!BpJTm/X-`mJm7drrR`Ojn%m?!;Z$`UHIN'!3+uF!`T/qJcE@^!fS8T^]+H8^3dWnqYp`eXEA]P -jQumKc%1r0qYp]o]mZU -!BU8Qkl@:PmJm7drrR`Ojn%m?!;Z$`UHIN'!1i-6!`K)pJcE@^!fS8T^]+H8`JV\7qYp`g[Y9F/ -kNr3NduU!TqYp]p`/C_^bPqb@`/BksnG3(cfcZ7PrrrARW/.\9T)Si:YfZnGkEt<0!i,fpoB?;$ -3e.~> -!B:&NirG&9mJm7drrR`Ojn%m?!;Z$`UHIN'!0#pt!`8rnJcE@^!fS8T^]+H8baHcUqYp`i^Qatb -lKnNQfU\u#qYp]pbaQ!-bPqbAbaP6Jo(i:efcZ7PrrrAWZ^88aT)Si@]#jsQlD -!BpJTm/X-`mKEUjs1f;So'QJXqX+F$+j8j4!3+uF!al"oJcEF`"9*Qqj1PBol]mJ"rVm&^TltXI -jQZ[Irm$4_i;3HVpq;*MkfWo/i2_6ha7oK2"61kVrqud"o=p-8]'l?m!SWd[rrMP=j8T1H!+>Ec -!S0Da~> -!BU8Qkl@:PmKEUjs1f;So'QJXqX+F$+j8j4!1i-6!abqnJcEF`"9*Qqj1PBom\-*@rVm&aX+c;( -kNW!LrmR()jSJlZq8A2mlcT52j0ac:c1q29"61kVrqud"oZ!2Z_==6!!T'KkrrMVMj8T1H!+5?^ -!R<`V~> -!B:&NirG&9mKEUjs1f;So'QJXqX+F$+j8j4!0#pt!aG_kJcEF`"9*Qqj1PBon?&V\rVm&d[[!,] -lKS -!BpJTm/X-`mKSDZWT*:HDZGNCs1\L8r+7kR\c2uXH*[4tQ$@A>jQ6CE -rPsJ[k5,)\pq;*MkfWo0r6q6_T[`o -!BU8Qkl@:PmKSDZS`8l8D#f -!B:&NirG&9mKSDZN8ik!C&j!>s1\L8r+7kR\c2udQc&^ZXd5-TlK/$K -rR@CEm/$_bqTG>:mE5G5r8"`H[GLl\rr_UGB)MN*"mE[gY1WZJrrMS]ao;D:QfJ)IL&bu[irR%V -J,~> -!BpJTm/X-`mK3I)'=72r!!)rb!hC4ChsLKDip?es!-Wqn^]+E2<(->ers%tTF*`)&k2H=CqnRWT -lh^Vapq2$Ll,ir/p;W8CXl99Z"7no[q"apnqp(RUX5TrU!Vpo\rrN%=j8T1(!.XV-!S0Da~> -!BU8Qkl@:PmK3I)'=72r!!)rb!hC4ChsLK8iopMm!-Wqn^]+E2<(->ers&%bK8GA_l/DXFqo=Yu -meZqdq88,mlcK/1pWT4e[cRMg"7no[q"apnqp_Bt[,e+a!W%MlrrN(Mj8T1(!.FJ'!R<`V~> -!B:&NirG&9mK3I)'=72r!!)rb!hC4ChsLK'io:)c!-Wqn^]+E2<(->ers&(oPF.ZBlf%jHr6Cb@ -nG<.fqTG>:m`GJ4psZ73^Zb[s"7no[q"apnr7S9@^?DHo!W&&&rrN(]j8T1(!."1r!Q-jH~> -!BpJTm/X-`mK*A%Zg[;^!<) -!BU8Qkl@:PmK*A%Zg[;^!<) -!B:&NirG&9mK*A%Zg[;^!<)5fPq8o&< -o_SRjqTG>:m`>D8nB%>sb45N,<(-?Prrr#:TVKd)W;cmbpW -!BpJTm/X-`mK!Ogdep0G!Jom[rrIB -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT1mJs6Gm/j9f7tL]Wrr_:2H2bDT#3Vk/NI%SkrVlu\NKrebrrhhlHb&qJrri,/ -I&#uIrs/JNT6[&>.HC(#"o-3'IBVe8rrJJ -!BU8Qkl@:PmJsT1mJrg;klRa_7tL]Wrr_:2H2bDT#3rFKRY\<=rVlu_R\B-)rrho"MST&arri/8 -MluEers/JSWedZf.c^1$"o6K:Mn&#RrrJnMao;C$o&TfP7f]IYklK'jJ,~> -!B:&NirG&9mJsT1mJr4*irYtU7tL]Wrr_:2H2bDT#4/pfVO+scrVlubVlfFDrrhu.RE54#rri/@ -R^hh,rs/JX[$S.6.c^1$"o?cMR_e -!BpJTm/X,umJs6Gm/jfu2hD"HrrUjrN4T#ngmNSQH*$K2rri;9Hb943rrh\aIDGaVrri,/I&-&I -rrr,9P!g)$o)AmZ[=O=Tos"GsVT?mZ!JKe"rrP+Z\b#1heieN~> -!BU8Qkl@9emJrg;klS9n2hD"HrrUjrN4T#ni2)@&LpljMrri>AMSf>JrrhbmMoY_krri/7MluEd -rrr/@SkU$ -!B:&NirG%NmJr4*irZIc2hD"HrrUjrN4T#njKP)QQbW+frri>HREGKarrhi$Ra1j-rri/?R^hh+ -rrr2HW`9nUo)Am_`gs$TpTXYu]%+q&!MJoBrrP+ZZ1HuV_`*)~> -!BpJTm/X,umJs6Gm/kE1,_?!6rrUF`T=k1/r61+PP^BY)pAY6_RYftXrrhMUJB.Wbrri)-I&-&H -rrqe3%W&`DoD]$ofV3YbfDW&U!O]J[rrJ#=jSo9,!6Xp#!S0Da~> -!BU8Qkl@9emJrg;klSj),_?!6rrUF`T=k1/rR.*rTo$>OpAY6aV3^/srrhVcNm7P!rri,6MluHd -rrqk:%sGhYoD]$oh5lF5g]"PZ!PZClrrJJMjSo9,!64Wp!R<`V~> -!B:&NirG%NmJr4*ir[$s,_?!6rrUF`T=k1/rRe!>XI-irpAY6cZ)$R/^i;U(_!QN7'rrJq]jSo9,!5\9e!Q-jH~> -!BpJTm/X,umJs6Gm/l,E%Y=Z!rrU+NYeC&Ap:Z!7!S0Da~> -!BU8Qkl@9emJrg;klTQ=%Y=Z!rrU+NYeC&ApV`)_UkubWo)AgANOJW;rrhDWP10F,rri,6MQcEd -rs#\ -!B:&NirG%NmJr4*ir[a2%Y=Z!rrU+NYeC&Aprf2,YF*9%o)AgFS%ndSrrhPfT\08?rri/?RCVe* -rs#\ -!BpJTm/X,umJs6Gm/u\Z!;D'Ea8Z4D&]DE`#OAI;SXXu7p$_n_p8EMig]%B0O,DK`rri)-I&6/K -rs6OTXOEeeT@Ef1rrqVkIuhSB\GlTZR`YR1Q.k@""8;d"m.9TFeieN~> -!BU8Qkl@9emJrg;kl^,R!;D'Ea8Z4D&]DE`#OSsVW2>Hep@&"`pTfh2g]%B4Sc8pI~> -!B:&NirG%NmJr4*ire9F!;D'Ea8Z4D&]DE`#OfEpZa#q=p[A+apq30Qg]%B8W2/;Grri/>RCVe+ -rs6OTXPL7M[GLlRrrqf-S#Fd1\GlTdZ-!"HXlAIB"8;d"iq)12_`*)~> -!BpJTm/X,umJs6Fm/e1+iIV$MrrS]/cG0AagmibkS:%pBli.(BL7[nhrr^`,OPBU2"S]HSV -!BU8Qkl@9emJrg:klM_&iIV$MrrS]/cG0Aai2;L=W/JOfli.(FPc=6.rr^o>S_s8C"SffjYO0C1 -$-jHZs7aa/Mmh^ -!B:&NirG%NmJr4)irU(uiIV$MrrS]/cG0AajKb5eZC8r2li.(JTsXFGrr_)QWT3gS"Sp0-\aRT= -$-jHZs7k'CR_S(Xrs&J[[?n>[rk&12l(uN%!O:JBrrV-Z)=leg_`*)~> -!BpJTm/X,umJs6Fm/em?bCT]8rrRs"gVNmqr6:1T[@D][puq_\qmUskrnRMVrlp+_iq`TWpUP[K -lcB)-gEMFPrrqf#Knd2+oD]!f`/]>Qke6usnpJRZ!MRg#rrU@D0(SB1eieN~> -!BU8Qkl@9emJrg:klNI;bCT]8rrRs"gVNmqrR.*u]r-h.q<7h]r4e-3rnRMVrmHt)jn\oZpq_il -mE#;/gEMFPrrql-PEWlPoD]!gbF=L'lb3 -!B:&NirG%NmJr4)irUb3bCT]8rrRs"gVNmqrRe!@`Nu&XqWRq^r5Y5QrnRMVrn*mHkkY5]prSr8 -n&YM1gEMFPrrqr7TV9NuoD]!hdANMQmCiN#opX#&!Og\CrrU@D/Fqg%_`*)~> -!BpJTm/X,umJs6Fm/fZU["88#rr`7@/`jkL#kkr^Q+rc<_>30l"6bo0k1fn=r5F2XkkY5]pUP[K -lcK//jXkNPrVm&ZXF-5Pp@J:fkd#]!`V.+I!rd<>b5VL?aQ -!BU8Qkl@9emJrg:klO0O["88#rr`7@/`jkL#ku8tTuX$jaSOut"7)PLl.c4@rQL;$lM:G_pqVck -m`GJ2jXkNPrVm&^[>LU$p[eCglar.GbP/gP!rdiMb5VLIcK5'-ZiEG`klK'jJ,~> -!B:&NirG%NmJr4)irVLH["88#rr`7@/`jkL#l)W7Xj42Achlf'"7<+fm+_OCrR.4CmJ6bbprJl7 -nB(\4jXkNPrVm&a^6u%Oq"+LhmDGEldeLWX!reD]b5VLRe`Hf4ZiED_irR%VJ,~> -!BpJTm/X,urrB%Wm/gAiSq6pcrr`.)4RU,e#j\U=V8njP`;ANn"THDg[JS_Y"T#l]V="*Y"S]EQ -VX;P+"7A9Xqu$Hur6q9`T@Ef2rs&GQTm -!BU8Qkl@9errAVKklOlcSq6pcrr`.)4RU,e#jo'WYK`c%bP^;u"3c\:qqM,Rqo4Ptn+ltdpqVck -n&kY4mQ=hQr;R!!fW'b-g&:RC#6*AXLo];0_Z'XtnB1b3[*.S2!hKBmo'$2#3e.~> -!B:&NirG%NrrA#:irW0[Sq6pcrr`.)4RU,e#k,Nq\^R[OdJVr&"4N^Xr7h5SqotS?nbN1fprJl7 -n]Lk6mQ=hQr;R!!h6`NVhYm*H#6*MgQaYfN_Z'Y-o#gt5^ -!BpJTm/X,urrB%Wm/h,)LOoKMrr_pf9_H@(#i2&![*+Pcao'up"7`";gY2Z1pU>LNnbN1fp:5RH -lHB20oh8'PqYp`ma-(hOiUd'Qp;N)BZKT7,!KH'\rrK7=jo5C;!,_;o!S0Da~> -!BU8Qkl@9errAVKklPW#LOoKMrr_pf9_H@(#iV_>^!WC7ci)]""7rOVhqJ)5pqM]ooD/ChpV;Zh -m*#D2oh8'PqYp`nc(9j%jR`BTpWK%c]BdE8!Li,mrrKRMjo5C;!,M/i!R<`V~> -!B:&NirG%NrrA#:irWopLOoKMrr_pf9_H@(#j&C\`R_#^ec">("8'!oj4aM9q8\o;o_JLiprJl5 -n&t_5oh8'PqYp`oe#JkOkk"fXpsQ+1_sPDB!N5/(rrKm]jo5C;!,;#a!Q-jH~> -!BpJTm/X,urrB%Wm/i%CCOuN2rr_[O?MhbB$2i&+L;_;oMpM@Trr^c%VY/[C"SApFZM"%n"S]KT -UZfr%"8cCemeHecmC@pu^%_-u"mN=BNl:Y3rrJP=b5VLG^ubRtCB0.\m/bd$J,~> -!BU8Qkl@9errAVKklQP=COuN2rr_[O?MhbB$2r>?PKVCAR+2,grr^r8YkHfN"SK<^]Cu(#"Sfil -Xm=42"8cCemeHecn%k3G`;&s("m`d[S'1QHrrJqLb5VLPa6!=&CB0(ZklK'jJ,~> -!B:&NirG%NrrA#:irXc3COuN2rr_[O?MhbB$2rMQU!_JgV:tq%rr_,K](aqY"ST^"`:s*-"Sp3/ -\*_E>"8cCemeHecn]@Gmbk^l1"n'=!VpY:[rrK@]b5VLYcK5'-CB/qVirR%VJ,~> -!BpJTm/X,urrB%Wm/j!^:4`Gkrr_@7ErO,Z$1ti[Pg[[.OOa?]rr`&!Ia-RG"RrF=](l+$"SfWX -U$']#"9* -!BU8Qkl@9errAVKklRIW:4`Gkrr_@7ErO,Z#kl/rT\.SSS_DWo"8TEbdb4X'o!=4jq>($nq88,l -lHT>2rc0UPpAY -!B:&NirG%NrrA#:irY\M:4`Gkrr_@7ErO,Z#kuN4XPMF#WSZ2*"8Ta%f\-9-o=^R7qYC-oq9,58 -m*5P4rc0UPpAY -!BpJTm/X,urrB%Wm/jp#14fJPrrUq!LWBE#kG`a(iPU55gX6$'iJO#ig&D3@U4'lTq>UTm]mZO8 -c2Rj#,2;ej#5m#GH(<4Wo`#*g`K,MRkfj&-Z+eB\!OTK#rrOqU]^kFjeieN~> -!BU8Qkl@9errAVKklSBq14fJPrrUq!LWBE#lEc;NjNUTn`/L_\ -c2Rj#,2;ej#6!8WLo8c"o`#*hbaa[(lHK8/]#Dhl!PH>3rrOqU\antcc8pI~> -!B:&NirG%NrrA#:irZRf14fJPrrUq!LWBE#m(A[rkL#j'j3dl/kbPEPg&D3D\!kY@q>UTobaPs* -c2Rj#,2;ej#6!DfQa5?Bo`#*id\rYQmEGS2_Tg7'!Q<1CrrOqU[.<5X_`*)~> -!BpJTm/X-`rrBjOrrB%Wm/kl>'nQD4rrUIaSB:d;rmd?b\a7"YSDhcn"T?#\^AZab"Ql5*aSkr7 -"Sof]T&n8t!h:1SoD]$ibEmLOg&:RC"mN@DNl:V:rrKg -!BU8Qkl@:PrrBjOrrAVKklT<6'nQD4rrUIaSB:d;rn=*+_=,=$VrZ/'"T?8r`VnKi"R2hFcMdS= -"T$,sWT_Y-!h:1SoD]$jdA)N%h>['H"m`g]R`b?MrrL'Lb5VLV^ubRt'`c_RklK'jJ,~> -!B:&NirG&9rrBjOrrA#:ir[L+'nQD4rrUIaSB:d;rnafIamdNDZKTU6"T?Q4c2H>q"RE@aec#=D -"T$B4[-Q$;!h:1SoD]$jf<1IOir8TM"n'=!VpY7brrL?]b5VL^aQ -!BpJTm/X-`rrE,8_uB_9iU$a5"p+ILs3puL_@`rnrsAJWGrrT>8_X[X0o"^67YiPHV#6!/JH(WXcdf0?iVTSo>\[LZ#"8;g#lgjEDeieN~> -!BU8Qkl@:PrrE,8_uB_-iTUI-"Te@Ks3puL_@`rnrsAMCPFBnj^P]/Xb5VS3U6t)qrr_;TPLTC- -"T$/uW92G+!j3-Pnc&daa-r!ukOecYrnOT2WnRF"rrLHMb5VLY^?5FtpAkH\o'$2#3e.~> -!B:&NirG&9rrE,8_uB^qiSt%!"Te@Ks3puL_@`rnrsAPKTVpE7a-jF'b5VS5Y,1C8rr_GdU"];A -"T-K6Zg#g9!j3-Pnc&dccDR/KlLb)\rnt8P[GLl1rrLZ]b5VLa`od:'pAkHVo&Bbg2h1~> -!BpJTm/X-`rrN07^r66QWSm.F*rt&Hs4%&MR1[B\rsA(sH_90bY^<>7`r?.bIBWFurr^r7Mq7\' -"T#ucS)Vfp!lP\=n,ERU[=a7HmI^D^p;W2CZ00X:!S*X]rrKa=k5PM;!$Cau!S0Da~> -!BU8Qkl@:PrrN07^r66QS`&`6*WXrGs4%&MR1[B\rsA/)M5oS,\V[W[`r?.gN4A]9rr_)HR+h?8 -"T-<$VWH2)!lP\=n,ERW^6+\tn+?V`pWT.d]'@fF!SO -!B:&NirG&9rrN07^r66QN8W^t*<=iFs4%&MR1[B\rsA53R'l&J_O/"*`r?.mR_ejQrr_8YV;M(J -"T-Q9Z09R7!lP\=n,ERZ`h0!JnauhbpsZ43_sGnQ!T(*(rrL<]k5PM;!$1Ui!Q-jH~> -!BpJTm/X-`rrW8:'Ys;>rW)os"ggGu&m+/QrrB%Vm/f6I^4H=8rr`1:.GN)H$/D(uZL7+[HEZeT -rr_niK%ATS"THi*P25p5"T-)eRc)Tn"5>8Br9sXirnjc(P/[+drrqYoJ<%P?fDbm1NlqA&^9Qi# -!knXona-A.4b*~> -!BU8Qkl@:PrrW8:'Ys;>rW)os"ggGu&m+/QrrAVJklNgE^4H=8rr`1:.GN)H$/hb>]C>9rM7E)n -rr_qtOP8=d"4rg0iVLR"p@S@gm(A@Ib4aHe!T]`mrrL*Mk5PLs -!''N5!R<`V~> -!B:&NirG&9rrW8:'Ys;>rW)os"ggGu&m+/QrrA#9irV+=^4H=8rr`1:.GN)H$08F\_t*?2R)/C3 -rr_u*T&80""5KZOjnSiYr6_(?kL';3gF7% -!BpJTm/X-`rr`?%^_FTSrr<&trrkcpnFD,jiVrnWi9^SI!1e]@fDbsB7n<'orsJYFMhf:IkbWX6 -o=t;-g4Z0jf`)*QbCc2Bq#:Ko`IXE6df0F=7n<(9rs&DNTm<0Tqt9snrRdiiT@NnorrMM=b5VLX -YNGidSH)a]m/bd$J,~> -!BU8Qkl@:Prr`?%^_FTSrr<&trrkcpnFD,jiVrnKi9:;D!1e]@fDbsB7n<'orsJ\MR$>ejl`Z2Z -otUM/hNFr3f`)*Rd?16eq#:KpbE&IZdf0F=7n<(9rs>X,*\(qt9snrnOW3WnRF*rrMSMb5VL_ -\E -!B:&NirG&9rr`?%^_FTSrr<&trrkcpnFD,jiVrn:i8Xl;!1e]@fDbsB7n<'orsJ\SV4uE7mCAY( -p:pV0ih3aQf`)*Rf:T82q#:Kpd[dT(df0F=7n<(9rs&GY[[4;Rr:U'oro(>Q[,1c8rrMY]b5VLf -_<1b!SH)UYirR%VJ,~> -!BpJTm/X-`rriE&s1f>ao)A[iq>UKh#iYd`WSm.FG5ur?s4I>RgF7% -!BU8Qkl@:PrriE&s1f>ao)A[iq>UKh#iYd`S`&`6FT?`=s4I>RgF7%_t^nE -"8f`hc.Dsur6()'o(`4fr6:=tiR@f/r,*t -!B:&NirG&9rriE&s1f>ao)A[iq>UKh#iYd`N8W^tEWCE:s4I>RgF7% -!BpJTm/X-`rr<&urrR`Op%/1`!;c]soS6)urrB%Vm/iXT=+UD)rrTnOREtm?j/%(&l2TS,JAV,l -rr_ADPNg^!"T?;bVnQ/'jg!gsn>l2LqW^Pm]Jjn/QVlEl)$_t;gc!Hn4]rrL'=k5PKa -!1< -!BU8Qkl@:Prr<&urrR`Op%/1`!;c]soS6)urrAVJklR+M=+UD)rrTnOREtm?k-'WKli5q>Nl_(, -rr_JSTBt20"THT#YO;2c"T?W.U#=E"!gsn>l2LqY`gMjukk+lYm(JFJanFTk!JL -!B:&NirG&9rr<&urrR`Op%/1`!;c]soS6)urrA#9irY>C=+UD)rrTnOREtm?l+*1qmf2CPS^72C -rr_ScX7"U>"THi9\a]Co"T?iBXlRt2!gsn>l2LqZcDI,Klh(2\n&:iqd.cDs!L3K)rrLN]k5PKa -!0Qg3!Q-jH~> -!BpJTm/X-`rriE&s1f>ao)A[iqu?Zr!>aGKrrB%Vm/jct1kG\\rrST*^ -!BU8Qkl@:PrriE&s1f>ao)A[iqu?Zr!>aGKrrAVJklS6m1kG\\rrST*^ -!B:&NirG&9rriE&s1f>ao)A[iqu?Zr!>aGKrrA#9irZFb1kG\\rrST*^ -[JpC/d$_rPfDc!LaI0a5q#:KqeY'#(eGfTa(n'Re"ms:#UW`6$rs&J]\!OJYrSdbWSasu(!Rn^D -rrP"WYjp`S_`*)~> -!BpJTm/X-`rr`?%^_FTSrr<&qrrVbD4lQD@WSm.Ff`2V8s4mVVr,*t1;Z"SK*JYOhPh"T?MuP1eCc"5>8Br9+(arnXT$PK3Cirrr/;OaXIrj8T.:jidZ)`N&)# -!YGFcna-A.4b*~> -!BU8Qkl@:Prr`?%^_FTSrr<&qrrVbD4lQD@S`&`6eGp24s4mVVr,*t -!B:&NirG&9rr`?%^_FTSrr<&qrrVbD4lQD@N8W^tcN"Q.s4mVVr,*t -!BpJTm/X-`rrW8:'Ys5"-$fe+0VrdsU`IsE*riQ2& -e:FIgf)GmDY'[PLq#:Kqb_M>5f)GjA7n<(1rs&DMTR!*Uqt9smlEu2%_Y!!j!Ku9^rrL*=kPkVN -!"AAa!S0Da~> -!BU8Qkl@:PrrW8:'Ys5"-$KeRKZ0;5bb`SLNXT&CU -O0A6-rrhu'M7iTXrri>LPb$U\rr_a\8+>X?#5m,SLoAo%p&>3_]oST'p#c8TT&Ilm!R%k5rrVQf% -.NK^c8pI~> -!B:&NirG&9rrW8:'Ys5"-$L,-g]BfLpd\!PsXT&CZ -S[nIFrri#1R)Jdprri>RU8m2'rr_a\8+>X?#5m;bQa>HEp&>3a`LWmQp?)AUWo_G(!Re[ErrVQf% -.N9X_`*)~> -!BpJTm/X-`rrN07_!h:'!<)p$>LiW5E^8U`!3+lC!\=>oJcFX-"5>8Br71fTr6CFU^%D@!^42U. -WW*+rY^OXmf)GmAW-l2Oq#:KrcA7P4fDbsNDCO?#rs&5>Q$TC`rq??rrn4&lT%*]&rrJS=bPqU] -X69KaaoF!^m/bd$J,~> -!BU8Qkl@:PrrN07_!h:'!<)p$>LiW5E^8U`!1i$3!\=>oJcFX-"5>8Br71fTrR@C!`:j6+`JpbS -WW*(r\VnearrhktMS],`rri>MQ(6U\rr`1:.GNn_#5HN -!B:&NirG&9rrN07_!h:'!<)p$>LiW5E^8U`!0#gq!\48nJcFX-"5>8Br71fTrRn3AbkM/5baYm! -WW*(s_OB$*rrho*RE>:"rri>SUT!)%rr`1:.GNn_#5QfOR(MDXpAY?rijb>^hYl^=!O:M)rrLN] -kPkV+!%[R!!Q-jH~> -!BpJTm/X-`rrE,8nGiCds8N8&/d)qsl/DXBWSd(E:B7/@s5K+l.,e:l_AmCqY:'orm6L^ec+5$!gsY;iVs)N^PdWJjn8WWpW&GFYiY3N!Mdl^rrL'=kPkUY -!)N+O!S0Da~> -!BU8Qkl@:PrrE,8nGiCds8N8&/d)qsl/DXBS_rZ59`Ur>s5 -!B:&NirG&9rrBjOrrA#8irX0"H@c+TrrST#_Ue_pkdZtmm/R+V^R2b*UAkAqd$_oOec,d>[%,PA -q#:KrgSC_&f`)#i&XhPV"mj0uUs/E&rrql2SYja,mf*=%dEDOjdD"fD!dXicnDaPe2h1~> -!BpJTm/X,urrB%Um/idX;1\c-rr`1:.GNMT%/e>1K>7-[s6$5*Zgs^f"7Vq:g=6-*j-bM@rV6Br -rmHa`df.u#"5>8Br87MYrnXT$PfNLkrs&JVUNrEZr:0df[(FN]!Q2#%rrQ$tSFGnHeieN~> -!BU8Qkl@9errAVIklR7Q;1\c-rr`1:.GNMT%/ePCOiI.qs6?eF]_%fq"7iIThUMQ.k,"0crV- -!B:&NirG%NrrA#8irYJG;1\c-rr`1:.GNMT%/ebVT?[02s6R:a`:]`%"8&snimdu2l*-c0rV-]h>QmD!Q<.(rrLK]kPkT\!1!'6!Q-jH~> -!BpJTm/X,urrB%Um/k-)."VEZrr_a\8+>43%.UfUQdl$7s59Dr]_@lp"4`"!o@3dChirl@rqQKs -rmZpbd/Mf""7SfNnD4*Kr6h3_T$mN0rrr/ -!BU8Qkl@9errAVIklSU"."VEZrr_a\8+>43%.h5mU=oPGs5U#9_t]]#"58j>p!j!Eih2LarqHEq -fp\8XrnIGTn4-"[]Wf;aY+fDP@B"o-B7Mn&!BrrL'MbPqUb[cdYl-ih$OklK'jJ,~> -!B:&NirG%NrrA#8irZdl."VEZrr_a\8+>43%.qT0Y290Xs6$\WbP7P+"5]WZp=0*Fk,b90rqHEq -hP[1(rnIGTn4-"[]WgpEETh#-mG"o6ZJR_e=]rrL<\bPqUi^ZYUu-igjJirR%VJ,~> -!BpJTm/X,urrB%Um/uJQ"SmWKk5PP<.;o(;rrh5RHE69/rrgrprs&5=P^B@arq??qlaDA&_=RC#!QD(^rrL!=kl1b\"9[fUm/bd$J,~> -!BU8Qkl@9errAVIkl]oI"SmWKk5PP<.;o(;rrhA`M7)[Krrh,MONRHerr`,/MpBfO"5]Q7f_5=J -g7+DXrnRMUr,*t -!B:&NirG%NrrA#8ire'="SmWKk5PP<.;o(;rrhJnR(hterrh8]T$dG%rr`,8Rafgd"6-8Th=gjO -hPd4&rnRMUr,*t.NjSnlQ"n0I%V9el/rrLQ]bPqUh_!(e#q#gfTnDaPe2h1~> -!BpJTm/X,urrB%Tm/eF2e:IY_rrTnORG7`NqoXnP_>"!0rQpL[bl*b*"6GT,kgTP6eVfI?pAY9I -OGD*Zh#@GD(r"]'"n00_J[=M4rs&JVUj8N[r;$?nc(W>\!Ptr&rrU[M+n+e!eieN~> -!BU8Qkl@9errAVHklN".e:IY_rrTnORG7`Nr6UmqaS>f8rmdF&df#C0"6c8HlI5b8fpJ8apAY9M -S<_S&h#@GD(r"]'"nBQuO1a`Nrs&JZY)'%/rV?Hoe#^am!Q_b6rrU[M+n+Xrc8pI~> -!B:&NirG%NrrA#7irU>'e:IY_rrTnORG7`Nr77d=chRP?rn=6Ff_q$6"7)ncmF2(;hPI./pAY9R -WM8&Eh#@GD(r"]'"nTs6S]'mgrs&J^\ -!BpJTm/X,urrB%Tm/ffYX+C<7rrST*^>/_tn$RS2f)G^Lqo=DPec([1"TH>e[JJDQ"TH`%PMPs4 -"PAllbl-At!koM>fDc$:Z@RnIn+QbbprJYIYN5T\!S3[^rrKs=kl1^b!(cSG!S0Da~> -!BU8Qkl@9errAVHklO?TX+C<7rrST*^>/_sn\'jVgA_-Pr6:CqfoQ.9rlU,3qpYQIe[Pj(n'"U"mNX[Qc8Lgrrr5DT8U5Bqu6]OUs&c=aLCC5!il;kn*'ku3e.~> -!B:&NirG%NrrA#7irVXLX+C<7rrST*^>/_so>R0%hurm@.QqpYQIg7bS/pAY9S -WhJ&Dh>[Pj(n'"U"mj0uUs/H(rrr5KX.$liqu6]SYfm%IcbScE!il;in)FGd2h1~> -!BpJTm/X,urrB%Tm/h2+It@Xbrr`1:.GN\Y"Po_tXm5oc"Sf`]RG<`#"7`%;f[Kj'rQ9b[iqEBT -g6765rSIPVgF7% -!BU8Qkl@9errAVHklP]%It@Xbrr`1:.GN\Y"Q?D<\*X+o"Sp&sUu712"7rRVh:)B,rm6e'jnA]W -hOg"YrSIPVgF7% -!B:&NirG%NrrA#7irWrqIt@Xbrr`1:.GN\Y"Qd%Y_!h:&"T$B5YiL`B"8'!oiR@f0rmm^Fkk>#Z -iiAa'rSIPVgF7% -!BpJTm/X,urrB%Tm/idX:P&Q3rr_a\8+>F9"o?;uL;Wfcrrhu&I%fVVrr^i(U[ln6"T65hS`]YG -"P]/oao(&r"7SfNnC@OCqpD!\T@3Z3rs8VYV0STZr8rjZrrKp=kl1][!1`NF!S0Da~> -!BU8Qkl@9errAVHklR7Q:P&Q3rr_a\8+>F9"oHT4Pf`b#rri#0MQGurrr_#;Xn:*B"T?N(W9O$U -"Q,l8ci)c$"7SfNnC@OCr77j'Wn71Crs8V]YDB+.rTTWkrrL0Mkl1][!1E -!B:&NirG%NrrA#7irYJG:P&Q3rr_a\8+>F9"oHiHU!WW7rri&9RC;C9rr_/M\+S5M"T?c=Zg@Dc -"QQSVec"D*"7SfNnC@OCr7eTF[+tTRrs8Va\X0VWrTg9&rrLE]kl1][!1!$5!Q-jH~> -!BpJTm/X,umJs6Cm/k?/++aIYrr_")DZ&Gm"n&[DRb7W=rri)(GH0t^rri/'I)l68rri57IA6$# -rrh/DHG]X=rr`1:.GN>O#56*%H`Gp$p\tElach+KJBRrn^Tcr%!ZqE`n*L/,4b*~> -!BU8Qkl@9emJrg7klSg(++aIYrr_")DZ&Gm"Rs$]VVM.M"SfZbZgEGG"8]Wfc-lUpqo=YtmIpP_ -iM)1Mro!eYr,*t -!B:&NirG%NmJr4&ir[!r++aIYrr_")DZ&Gm"S0L"Z/PZ]"Sp$&^$gXS"8g$*e'e7!r6Cb?n+Qba -jfOorro!eYr,*t -!BpJTm/X,umJs6Cm/uV[!UbO=mf*@*&XhSW"P]MpYNu/e"QlM(\G:^U"TRVGP3:9n"SfTVVsa9Y -"Q,St`;AKm!gsY;dJjC=]nq?Jkk>#[m'(Mf_"5kO!PGc'rr_Zi$0q!H!S0Da~> -!BU8Qkl@9emJrg7kl^&S!UbO=mf*@*&XhSW"Q-28\F0=q"R3(D_"rW^"TR_VT'Fc("SoolZ1.Je -"QH2;bP^;u!gsY;dJjC?`0QLtlLt5]m^Rk8a7R[W!Q2S7rr_Zi$0L^@!R<`V~> -!B:&NirG%NmJr4&ire3G!UbO=mf*@*&XhSW"QQkV_=7F'"RER`aSLJf"TReeWpJ16"T$9/]CP[q -"QlnYdJVr&!gsY;dJjC@bG:`JmIpP`nA16_cLoK_!R&FGrr_Zi$/k:4!Q-jH~> -!BpJTm/X,umJs6Bm/f'D^OcFRrrSDs_W(S!q8S8I`VKK4"PfGq^%[*XrVm$"`I,&hdf0ID[ -!BU8Qkl@9emJrg6klNU?^OcFRrrSDs_W(S!qTP7jbPM2;"Q6,9`;"o`rVm$"bDX%1df0IE^59;i -pAY9VVN/apiVrtr&X:WA"mERYR)\^lrs/7Shlhj6fDO%r!PuM7rrTq81@FB-c8pI~> -!B:&NirG%NmJr4%irUq8^OcFRrrSDs_W(S!qpV@9de`qB"QZhWbP6YgrVm$"d[J,Odf0IF`gFO5 -pAY9ZZ(0/;iVrtr&X:WA"ma'sV9SZ-rs/:cj11M^h#,S"!Qi@GrrTq81%+'&_`*)~> -!BpJTm/X,umJs6Bm/gVpO+I?$rr`(//`#Ie"mrRASD*uArrrDMO+kXOJcGQG"7i.=f?sU$o< -!BU8Qkl@9emJrg6klP/kO+I?$rr`(//`#Ie"RipZVr%CP"od,DPKj#Vs7uZso;n)0dJj@B\V[ok -pAY9YW/S^lir9,:/S=h)rs&J[Z&,1#q"t'tqh5"Lq9P^l\*)6?!PcG7rrS5]?LI%Yc8pI~> -!B:&NirG%NmJr4%irWEbO+I?$rr`(//`#Ie"S'?sZJti_"od;UT[Wgis7uZsosULNdJj@C_O/78 -pAY9\Z^]59ir9,:/S=h)rs&J_]9o_Nq>:0uqiq-\qUM[9_!9DK!QW:GrrS5]>OLMP_`*)~> -!BpJTm/X,umJs6Bm/i7I?\/7Jrr_LK;"NfK"od2FI'N);rrr;@L6'a]JcGEC"4r4#o$RI?n>goF -p\+Uik+R48pZ)8Uo2%U7c2S"Fd@GQUe,94F!rd3=rVm&g\:TURo%*gA[(GT&!abqemd1&+4b*~> -!BU8Qkl@9emJrg6klQ_B?\/7Jrr_LK;"NcJ"Pou5]'oUt"oQZ1S(@Ris7QBogl\]0dJj@?[#2Wn -pAY9[X,Fmjj8T5Q:d+'frs&AOW/.M,r;HWqJc,NOn%b$Oa7Rs_!PH>7rrQO-MXK^0c8pI~> -!B:&NirG%NmJr4%irXu9?\/7Jrr_LK;"NcJ"QH_T_t!^*"oQlDW8%<&s7QBoi1ILOdJj@A^7!%: -pAY9][[PD8j8T5Q:d+'frs&DUZ^8)Ur;HWqOo54_n]7;tcLocg!Q<1GrrQO-L[O1'_`*)~> -!BpJTm/X-`mJsT1mJs6Bm/jfu/qO&orr^RiIJr=."o-#kMT>Pkrri)1J!o&Bs7-*lqQtXhrmC`K -mA>9Eq=agkkbEO9p>l5UrI#g7bPqnB`fkeMhZ!Otq>:0rrnOArSC.8frrKC=l2Lf;!4hOb!S0Da~> -!BU8Qkl@:PmJsT1mJrg6klS9n/qO&orr^RiIJr=."o6?,Qd,C*rri,9NMPH_s7-*lqn.j2rmC`K -n$%_gqY'pll`Q,\pZ2>VrI#g7bPqnCbb'd"irB%3qYL3qi38$8f)45$!P687rrOeQ[dNA\c8pI~> -!B:&NirG&9mJsT1mJr4%irZIc/qO&orr^RiIJr=."o?W@Uso5>rri/AS?V%)s7-*lqo"rOrmC`K -n[b14qY'plmC8S*puMGWrI#g7bPqnDe#SnMjo>@Fqtg -!BpJTm/X-`mK! -!BU8Qkl@:PmK!%$"U"@Is7QBnWYVVsrrh`!M5fG2rrhr*MQQ)ns6]ggl(+C0d/O78 -X,P-tpAY9_Y_p0gjSo:](95LV#4TNrOM-JDq#:Nnd%H9)k1fn:\B!n7"7lTuipQ%3c8pI~> -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WSHkB0*&e=s7cNqrI#g7kl1hcf:%)nmem(flDT$2mXbE'rri>@I'WRp -rrhGRJ]I]^rrh_gHa<8)rr^RiIJq7e"luq/M88ZUrrqf#K8IA6hZ!VX_s77'^]6%Tm/bd$J,~> -!BU8Qkl@:PmK*A%Zc)83S_WH2/c`\ -!B:&NirG&9mK*A%Zc)83N83Fp/HES;s7cNqrI#g7kPk\CZ'rW%r;Qog]U6M*JcG$8"THl=`;@p] -"RE@ae,B"?"S'-l`:`6l"4&* -!BpJTm/X-`mK3I)'=78trW)i`!o"Uni9gTEh!G/P!/c@-q#:Hf:d+(-rrr/6L5X1Nr;QoYSp\'? -JcFm4"7i1=f$F@!i0T,@rV$6on#Ul?n`KiRkrhl7a8Z?sbGTZQb4tc3#6*DTH(34ZiVrqY`TmI) -M?%,Qm/bd$J,~> -!BU8Qkl@:PmK3I)'=78trW)i`!o"Uni9gT9h!"lJ!/c@-q#:Hf:d+(-rrr2>PF0\nr;Qo\WJeRc -JcFm4"8&^XgX#m&jJ%gbrq??pn[44aoB-&Tkrhl7a8Z@,d'8G%d/!G9"lQV@VUk\(rrKIMlMgpC -!+>3Y!R<`V~> -!B:&NirG&9mK3I)'=78trW)i`!o"Uni9gT(guAHB!/c@-q#:Hf:d+(-rrr5FTr$<;r;Qo`[$o)1 -JcFm4"80-qhp;<*kH:K0rq??po"LL-o]H/Ukrhl7a8Z@9f".6Of(o(?"m!7]Z.o38rrKg]lMgpC -!+,'Q!Q-jH~> -!BpJTm/X-`mK"RrU@XmbHQ"8QO\h8oU&MWOm8d%#BTebo4B"o6<+I&uAgrrK%= -lMgob!0us=!S0Da~> -!BU8Qkl@:PmK0c\;@ZakPkY[AhDi[rs>%Us81?ELof;.q#:Nod%Q?*k2ZIBZ-MY7 -!`T/`mHFYs3e.~> -!B:&NirG&9mKjJo!0p&>0e_3i"/kPkY[AhDi[rs>Les8:TVQaYcLq#:Noeub@Tl/VdE]%-*G -!`T/\mGe5b2h1~> -!BpJTm/X-`mKEUjs1f;So'QJXr9a[/*p*I\mJs6Am/k<.*eF@frrTqHPjA>QrR7*VZ1e+q"oZZ& -MTu*Ns53hZqR(Uirm1THf8P[>p&>0cZ$WM -!BU8Qkl@:PmKEUjs1f;So'QJXr9a[/*p*I\mJrg5klSd'*eF@frrTqHPjA>Qrn*s!](c.&"oZl9 -QdYh`s53hYqn7g2cMn"$R@2e%rrhu*M6ua7rrSDr^WHKVS)jPJ"np03MRDI -!B:&NirG&9mKEUjs1f;So'QJXr9a[/*p*I\mJr4$irZsq*eF@frrTqHPjA>QrnX`A_YF'/"o[)L -UtGWss53hYqo+oOcMn")VP`8Drri#4R(`%QrrSDr^WHKVW9=-Z"o$HFRD.hXrrqr7T;0[(k5PIl -fBWA;*WWtBirR%VJ,~> -!BpJTm/X-`mJm7drrR`Ojn%m?!;u6e7[KM36Qcrrhu$H`-2nrr^+NH2>_a!L)=8rrqf%LP*&"q#:Qth5>Oe -d/3)-!M[j)rr_B`%dWNL!S0Da~> -!BU8Qkl@:PmJm7drrR`Ojn%m?!;u6e7[ -!B:&NirG&9mJm7drrR`Ojn%m?!;u6e7[ -!BpJTm/X-`mKEUjs1f;So'QJXrU'fl/aVm*i9gTEg[,&,!3^tRrr3)W3(rQ(rrhAZH)BX!rrhu' -I%K;Js4@8RrlKSlps8sCrlg(^i:[*Qp:,LGl083Ml:X+nbl7^.g\:^OjKO,n_".:#"o6?,H`Z5m -rrJb=li.$i!'fi;!S0Da~> -!BU8Qkl@:PmKEUjs1f;So'QJXrU'fl/aVm*i9gT9gZ\c'!3^tRrr3)W3(rQ(rrhJgLp6%=rri#0 -MlGcgs472Pc]#C0ci4.IdZU?cp&>0h^l#;]l2LkN9/tePrrJeMp\tE[\W*&uoD&=hqU)!o[H6`S -!NO]9rrTA(54%M7c8pI~> -!B:&NirG&9mKEUjs1f;So'QJXrU'fl/aVm*i9gT(gZ&>t!3^tRrr3)W3(rQ(rrhStQb)GYrri&9 -R^D:0s472PeXF>Mci4.IfV#A0p&>0iaI0R+l2LkN9/tePrrK4]p\tE^_4.@Jp%\OjqU_j;^?Fn_ -!OUVIrrTA(4RD)/_`*)~> -!BpJTm/X-`mK)Emd:)5mJs6@m/hG2Ee48jrr]/7OT+_K"oQT+K"^gRrrh_k -HE$1\s3puMoV[5dcMn%H^Nc4-p&>0h]6p=7lMgtcO;=b=rrJJ=p&>6pfqs%^bP:l4"n&pSLq`EI -rrJY=li.$,!-[_r!S0Da~> -!BU8Qkl@:PmK)Emd:)5mJrg4klPr,Ee48jrr]/7OT+_K"oQf=OMphhrrhf! -M6lT#s3puMp9BY.cMn%H`eUDQp&>0i_MbM[lMgtcO;=b=rrJkMp&>6qh6;^1dJ -!B:&NirG&9mK)Emd:)5mJr4#irX3#Ee48jrr]/7OT+_K"oR#PT$-j)rrhl, -R(Vm=s3puMpUd!NcMn%Hc'P^"p&>0jb*od*lMgtcO;=b=rrK:]p&>6qijtJ[fD>:B"nKd.UWrH! -rrKF]li.$,!-.Ac!Q-jH~> -!BpJTm/X-`mK3I)'=72r!!)ucqZ,UC!3+`?!j2M\Jc>iE@40@hrrql!I@&F]qu6f\U3j6;JcF'r -"5Sg%m*>V6qnmoTk4S`WpqD0JjQcaIc6m&mci4$6f(/hFqTkXVU=K2;rs&JYVg=fYqsj[eRapa( -!]9t\m-Oi)4b*~> -!BU8Qkl@:PmK3I)'=72r!!)ucqZ,UC!1hm/!il;YJc>iE@40@hrrqr,N2"u(qu6f_Xbsd_JcF'r -"6#QAm`th8r5t"ul1P&Zq8J;lkN`'Lc6m&mci4$Ag[b@Kqp_L!XP3XJrrqAdM5Ac#nc&Wdg?\b? -2#s]DklK'jJ,~> -!B:&NirG&9mK3I)'=72r!!)ucqZ,UC!0#[m!iH#UJc>iE@40@hrrr#6R]bKGqu6fb\!b2-JcF'r -"6H;^nBV%:r6_%Am.LA]qTPD8lK\BOc6m&mci4$Mht$dOqqA -!BpJTm/X-`mK*A%Zg[;^!;Z$_!9!8FWS?eBiroSWKDu&!-XlZ:rrh,LH`cQ/rrh)DJ%kZ.s31KG -r4RHhr6GXPj*Rrrr5BQ$]RjrVlulcGB/M -rrJG=m/I1Z"9miPm/bd$J,~> -!BU8Qkl@:PmK*A%Zg[;^!;Z$_!9!8FS_NB2hZX/SKDu&!-XlZ:rrh8[M72aHrrh5TNQ([Ds31KG -rPXT1r6G -!B:&NirG&9mK*A%Zg[;^!;Z$_!9!8FN8*@pf`VHLKDu&!-XlZ:rrhDiR(r(crrhAcSBUe[s31KG -rQL\Pr6Gme-S_qp(_;kj/6NoO0,md/O-OhXCIJpX-"0^ZYCl"oHoRRD.n`rr_o=_=[X) -!NkAJrr_iq"PN/%!Q-jH~> -!BpJTm/X-`mK!0l_h"65li.'b(6JODrrJ\=m/I7V\qYmHlM1Afm^e+-^>j0RKnFGcnGW@f -P25L)!kSFflg4`(4b*~> -!BU8Qkl@:PmK!DN.c2RqB_i(bep&>0lb)`@Yli.'b(6JODrrK(Mm/I7X_3C+tm.gShnA19Q`T;&[KnFGcnGW@f -T&K&9!kSFelfeGq3e.~> -!B:&NirG&9mK!`5g!5!sb"9+AtVt'cjqU216dJ<\>"od8SU"0'ls2b3B -o!5"Mc2RqCbF6$3p&>0md@IN(li.'b(6JODrrKI]m/I7Zae>BJn+cnko#[Q!biWkcKnFGcnGW@f -Wo`UI!kSFdlf/#`2h1~> -!BpJTm/X-`mJsT1mJs6?m/h#&IYRk)l:X+no)AmYYBukprql^!qo=DPdf+gt`;]qgJYht_rri)+ -H`?K,rri8>JsP3Yrr_+;9Bt"+!M7^'rrqGdIZD;9q>UTsh2b+ -!BU8Qkl@:PmJsT1mJrg3klPQ!IYRk)l:X+no)Aj[\;@3AqYp`rc'+[Lrdk*frr^o7YP$0?"Sfci -Zgm_g"T6K*U>YD<"5Z"1lI5b6WRg>6"m3=RS&k6srr_5G9"Ou8!kMLarr3"gjQumJIK4*JklK'j -J,~> -!B:&NirG&9mJsT1mJr4"irWfmIYRk)l:X+no)Aj]_3hUhqYp`se"E\qrdk*frr_)J\b=;J"Sg'+ -]^kaq"T6`?XlSjK"5Z"1lI5b6[+jjF"mNjmVpG&2rr_AS9Y12:!kMLarr3"skj8 -!BpJTm/X,umJs6?m/j$_6&5IB^(GYeo`#*oeX1cln,!%ep:PmDh1>UArri,%I)l62rri#%H`ci2 -rri8AKp13Wrr`+C&\ccp!MRg%rs&GSV0SHPq"t'mmSpms^';8Mmf3 -!BU8Qkl@9emJrg3klRLX6&5IB^(GYeo`#*ofqXJ=nbW7gpVVueiIV$Erri//Mp;7Grri&.M73$K -rri;HP+URtrr`+C&\ccp!NX`5rs&JXYDB"&q>:0nmSpms^';8Mmf3 -!B:&NirG%NmJr4"irY_N6&5IB^(GYeo`#*ohQNBeo(r@hprf/3jamHIrri28Ra_8\rri)7R(r:d -rri;NTW@)>rr`+C&\ccp!Og\Ers&J]\X0MPqYU9omSpms^';8Mmf3<_lhCD]kK:X(qYpU_!1`B8 -!Q-jH~> -!BpJTm/X,umJs6?m/u/F$N#_\"8?aI^\%O0otH'=bPV/9"Rr[CV<3@/]`/)rOHASJrrhqtHa328 -rri;ELQL*Srr^"KE;.r`!Mdm"rs&;ERX([ZrVlftCq'5S"h/=Js+]e7rs@_(>'Pj`GZo%Grr3)t -$3AuKm/bd$J,~> -!BU8Qkl@9emJrg3kl]W?$N#_\"8?aI^\%O0p;N/`dJWk@"S0-\YN^W<]`/)uSXeofrrhu)M7WBQ -rri>LPapLqrr^"KE;.r`!Njf2rs&>KVMMA/rVlftCq'5S"h/=Js-)gGrs@_(>'Pj`GZo%Grr3)t -$3AlHklK'jJ,~> -!B:&NirG%NmJr4"irdd3$N#_\"8?aI^\%O0pW]>.fDPLF"SBU!\a4nI]`/*"WN#4-rri#2R)8Ri -rri>RU8d&;rr^"KE;.r`!Op_Brs&ARZ'VrWrVlftCq'5S"h/=Js.SlWrs@_(>'Pj`GZo%Grr3)t -$3AZBirR%VJ,~> -!BpJTm/X,umJs6>m/ed<^Pi*ocn&8cp&>0UVg5,tq>UT^Vg>Q7JcE:\"THGiYkZHB"RrL>[J':n -"oci)Nmn!rrr_Xi/C<#K!N!rtrs/26OF=7ikAg71"D>@DK'iL9"8?;@]_fDJ]PD$Os1\OalKnW' -4b*~> -!BU8Qkl@9emJrg2klN=7^Pi*ocn&8cp&>0XZ&#UFq>UT`Z&-![JcE7["3lb7q98jAo!XCgp\"Oh -rm[7&f^AbAm8kjcfDblTd,G!0ou`e_[cHUkpV$cD_#'5^r;Qln@r&aS^'D;dA,$# -!B:&NirG%NmJr4!irUY0^Pi*ocn&8cp&>0[]9g(lq>UTc\sU>)JcE7["4WdVqTSsBoY6d4q"=Xi -rn=0Gh -!BpJTm/X,umJs6>m/h#&I#\..rJDAcpAY -!BU8Qkl@9emJrg2klPMuI#\..rJDAcpAYH%M7rW!05^:pOVM1s[^rrVgp[.h9 -!B:&NirG%NmJr4!irWclI#\..rJDAcpAY -!BpJTm/X,umJs6>m/j3d30+"@i'0Hap\tEd[XOLirVHNtrmd3b`;5&bZ2Xp]LR[\SrrhYaI(f@K -rrrDPNeu'[nG`UK5I=(;"LMAm!3#2M!S0Da~> -!BU8Qkl@9emJrg2klR^^30+"@i'0Hap\tEf^Pnl()^'SiMKp%\=o)Dq$otCR9>;uV[lKJ>p3e.~> -!B:&NirG%NmJr4!irYnS30+"@i'0Hap\tEha.'3drqZQshQ*9rqgndPrr_>VZ16$;"RrsjbPLl2 -"Q$&Og&CL@"5lC.i7e23][PX8!,MGF!G>()^'SiNPb4\noD`%%otCR9>;uVVlJho_2h1~> -!BpJTm/X,umJs6>m/u>O"RqNQ"/?WhrV6Bqh4T(qkkY5^r5skScM`=oY5\Y&]6h6hbPq_0TmjfS -o`#'GObV'Xnc&^iMADuArrK1=jo5DG]nuT8!)<=(!@Ed)^'J]XG50soH>&H4^&sN/"leh7!S0Da~> -!BU8Qkl@9emJrg2kl]cG"RqNQ"/?WhrV6BqiN%gClhUParQpjte,FpuY5\Y&_huD2bPq_2X,P*r -o`#'LSWhJ"nc&^iMADuArrKLMjo5DG]nuT8!)<=(!@Ed)^'J]XL&0f8M/SOJ^&sN/"lAP/!R<`V~> -!B:&NirG%NmJr4!irdp:"RqNQ"/?WhrV6BqjgCJimJ6bcrRRa?g&?R&Y5\Y&bF-QPbPq_5[[YS? -o`#'PWhJ&Cnc&^iMADuArrKj]jo5DG]nuT8!)<=(!@Ed)^'J]XQ29XUR!"P_^&sN/"PE#"!Q-jH~> -!BpJTm/X,umJs6=m/f6IZ',+hm8kjcq>UWoa,5Yip\FglpqVHGfRa(%rr_YWLu$5R"Qc2)`;K9- -"PT)naSbT."4/T#mG7dCX2O?($0]'[BKcb15%oHCJ,i=@^&k&A]DfMG7"91TIfYg>rP&:3rOr<, -!r]h6/NE"^!S0Da~> -!BU8Qkl@9emJrg1klNgEZ',+hm8kjcq>UWpc'O[:q"apmq8\Pih1>U*rr__dQ/Tmc"R)eEbP_#4 -"Q#f6cMd;5"4/T#mG7dC[*.e8$0]'[BKcb15%oHCJ,i=@^&k&A]DfMG7"9adIfYjArP&:3rOr<, -!r]h6/NE"Z!R<`V~> -!B:&NirG%NmJr3uirV+=Z',+hm8kjcq>UWpe"i_bq>($nqTbY6iIV$.rr_erUZKYu"RECadJWY: -"QHMTec#%<"4/T#mG7dC^ -!BpJTm/X,urrB%Nm/hJ3D3Ou%]b5;YqYp`bY^;qorqZQsoj+76,rr^Z!VtA.3"QPo%aSkc2 -"PoDr`V]6+"8?aI^#&biWl=Q/%/eedM.f'[$9i-\^$,4j!-7tN!F\b%^&h&ZE;k=f(Kp[M!!)u3 -!CHkc^&_8Ql0SN&4b*~> -!BU8Qkl@9errAVBklPu-D3Ou%]b5;YqYp]c\Vd?Aq#:Ki^5AuRJcDSH"4iL;oud:;k,"0brUg*m -iM)FWr:9jipM^bYhZ!V`bOYZAr7SK7BKcb15%ohekkG)WEr3QO@8?d8!`"5qrdOqb=o>u6!<'V4 -6NI)!!EO(%klK'jJ,~> -!B:&NirG%NrrA#1irX6$D3Ou%]b5;YqYp]e_3qXhq#:Kj`gO7!JcDSH"5BBXp<*Cu6!<'V4 -6NI)!!ENt"irR%VJ,~> -!BpJTm/X,urrB%Nm/j]r.@'o8nR`HKqu6j!esUolmeHebm&PH4l[f)1rri,#IE;E1rrh5EL!9Mf -rrh8KJAV0Rrr]tKB(=gZ!NO-5rsRSACe,cR,=lX.^$,"d!L0P\^&]@;rk8K5PkfM%rrLAsr4W.2 -rk8H)&HMdD!I^-qm/bd$J,~> -!BU8Qkl@9errAVBklS0k.@'o8nR`HKqu6j!g80_?nG*"dm^7nYm=G;3rr`),MpBHE"QH,=antZ/"25F\n_jEJZcr1D$ep\X80\6^88O0skjeZRPc4Mo!?dI&^&t -!B:&NirG%NrrA#1irZCa.@'o8nR`HKqu6j!hlrQfo(`4fn@k:'mt(M5rr`)5RaoO["QlhZfDbFB -"R!%\d/3D6"25F\n_jEJ^!cZT$ep\X80\6^88O0skjeZRPc4Mo!?dI&^&t -!BpJTm/X,urrB%Nm/uS`!8a(B"1fRdnbiCjp:l9?b5:u6"QZ8([ISnKT)SoRO-8YIrrh)>LX?%m -rrhAQJ%tgNrr_e'+1gG2!NF*9rs@GL>T=5YM7)%7li."KEVI0QETd"@s7PEOK`&Oa!<0\64_=]m -^&`Yol0SN&4b*~> -!BU8Qkl@9errAVBkl^#X!8a(B"1fRdnbiCjpVr>ad/3V<"QukD^%?mUT)SoUS=\uerr_/MQ.>L+ -"QlYB`qo<,"7]tF]&EYiZcr=H$/:qS*"H51[FtKDrrM;&pV$oQkOsc4p?&K1r4W.2rk8FsAcVeD -!I_KBklK'jJ,~> -!B:&NirG%NrrA#1ire0K!8a(B"1fRdnbiCjps,M0f)5=C"R#5= -"R37^cMI/4"7]tF]&EYi][QcX$/:qS*"H51[FtKDrrM;&pV$oQkP(ADpZ\r:r4W.2rk8FsAcVeD -!I_<=irR%VJ,~> -!BpJTm/X,urrB%Mm/g)aPaVORnR`lSr;Qo]W-P/rp\tBMQ[ljGJcD5>"THAfZMDWB"P8Zke,K"> -"Qc8(^%h4!"1fRdn`0WWW5nr -!BU8Qkl@9errAVAklOT[PaVORnR`lSr;Qo`ZA>[Ep\tBQUQ3@iJcD5>"THT&]DBYL"5KB4f^o+G -kc0T[q=FUg\fYPSj8TLmc2[guO'E/7>asL/rrHrFq7[0E>IL;YLPV=fCAbdG!<0_2!<0\5?J=Z. -!R<`V~> -!B:&NirG%NrrA#0irVmSPaVORnR`lSr;Qoc]U-.kp\tBUY+"THi<_tqLT"5p)Qh=LXL -la<2)q=FUg\fYPSj8TM"e,TI&O'E/7>asL/rrHrFq7[0E?,*S+QC"GFCAbdG!<0_2!<0\5?I\6" -!Q-jH~> -!BpJTm/X,urrB%Mm/iOQ8uDUjoZk;Fq>UQ.+(k'Brrr>GP(:.8q#:Nrc]!Y$r.4m7rr_heK%.pB -"THl.Nn`[XtrrV7X^&,MJ]h,!8`dd^]rr?a2 -^A\-2^&S03^&V!nm/bd$J,~> -!BU8Qkl@9errAVAklR%K8uDUjoZk;Fq>UQ.+(k'BrrrANSrU\[q#:NseUQhcGB/Brs+s?>T=5YO5&Um!p3@nqn<9J9!$+XNVEGP!,2>F -rW)o2!!)u3!)MhC!R<`V~> -!B:&NirG%NrrA#0irY8A8uDUjoZk;Fq>UQ.+(k'BrrrASWh%<*q#:Nsg8:Upr.4m7rr_r(T&.Qg -"5TfOi:HsOmC/P+q"4RgnR`lSq>UQhcGB/Brs,6K>T=5YO5&Um!pF -rW)o2!!)u3!)Db -!BpJTm/X-`rrBjOrrB%Mm/tuB$21@u#Ol\RKnFGcnGW@hnR`lSrr3/l\:9ajrV6Brqo+5NeGb%! -PQ(a=L7RbSrri>JLQ^E`rrhV`Ha`V>rr]hSB(>j"#Ol\RKnFGcnFlkeqitCs&kJMHjSoV[j3bWC -RYc66G"fLG^';/>a8c2(LAh,QV3:Ga!Jug"m/bd$J,~> -!BU8Qkl@:PrrBjOrrAVAkl]E:$21@u#Ol\RKnFGcnGW@hnR`lSrr3/n^l>#RqK?S(m$($hi`6`jVb1 -L5:CU])B>I\k:*Es6GmIrrJsZo=b6^Ms0C+c8pI~> -!B:&NirG&9rrBjOrrA#0irdU/$21@u#Ol\RKnFGcnGW@hnR`lSrr3/oaIB9crV6Bqr6h7RqNBS(m$($hro?c+gNZ -QC!P+])B>I\kL -!BpJTm/X-`rrE,8_uB_9f'NMn!4Aj,!nCDarOrfR=OmHO^_:>Ms8UrLHE66'rri&,I@T2Gs,[0_ -qmh'frQ5'BrQKt\ht-jNm&59E\ldMYrs-SW&P%r;Vo\0'*q\I=^T -!BU8Qkl@:PrrE,8_uB_-f'*5i!4Aj,!nCDarOrfR=OmHO^_:>Ms8V)[M6uRBrri)5Ml5Tds,[0_ -r5"90rQ5'BrmHt'iq*0Qm]q\^p%A=jnR`HMs8UVO])B>E\ldMYrs-SW&P%r;Z-MY7*qeXF`jVb1 -L5D:r\B*=dq#CB`E-$_oF)\Ois8V8Lr;Qe%[.V-6ZmOu#!R<`V~> -!B:&NirG&9rrE,8_uB^qf&Hfb!4Aj,!nCDarOrfR=OmHO^_:>Ms8V2hR(hq]rri,>R^2(,s,[0_ -r5kAOrQ5'Brn*mGk4ATUn@P(+p@\FknR`HMs8UVO])B>E\ldMYrs-SW&P%r;]@?-G*qngPc+gNY -QC+MT_9^s'q#CB`E-$_oF)\e%s8VA\r;Qe%[.V-6ZmOtr!Q-jH~> -!BpJTm/X-`rrN07^r66QWRgGaGYeip\4[jm]Ll6k^iblrr_SS -MVlMT"T?DnRH!i<"R`=;Z1@Sf"hYFtlVtRp^&kuImf!.hjG,-3LZJI7!N4$0rt"_\d(ZTMM0F9) -T!6)\jnJHJ$M;W[o`+]8jT",!r;Qij=L@h:!jj.kkNr<$4b*~> -!BU8Qkl@:PrrN07^r66QS_!$,F9$'VrrVUf^&,MP]i=Up"hYFtlVtRp^&kuImf!.hjG,-3LZJI7!O9r@rt"eae]"qmQA16a -WO^+&kkOiN$M;W[o`+`GkPsS4r;Qij=L@h:!jj.ikNN#m3e.~> -!B:&NirG&9rrN07^r66QN7R"jE<'aSrrVUf^&,MP]i=8kbq"Odko"^X(m=G:qrr_bo -Uuobu"T?lBYit]Y"S09o_Y*U%"hYFtlVtRp^&kuImf!.hjG,-3LZJI7!P6hPrt"hegWdI;UQq4D -[)()ElhU5R$M;W[o`+cWlMp"Gr;Qij=L@h:!jj.fkMlT\2h1~> -!BpJTm/X-`rrW8:'Ys;>rW)osquG[T!3+Q:!k\LPX8`3:\,!`E[kgA6m'1o-f`(XF"QZ>)ZLEGF -L]7J&J>i.^rri8a]]\Y_eieN~> -!BU8Qkl@:PrrW8:'Ys;>rW)osquG[T!1h^*!kA:MX8`3:\,!`D[kgA6m^e:Rh"LaNkH0WRnq$gr -rr^c2ZM)B>"T6H'W9EjQ"S0$Y\+97m"6W!,\,!`D[qu*DR7@j%a8>l;Yg<1G&,#&7`O2P-L5D=t -\]NOgpuhY[b+o!nU&4ilpLA!Oqn<3GCD[&^kNN#m3e.~> -!B:&NirG&9rrW8:'Ys;>rW)osquG[T!0#Lh!jhqHX8`3:\,!`D[kgA6nA:U!iV*9SlF32!oR[$t -rr^uF]_BMI"T6Z;Zg75_"S9Er_"7:""6W!,\,!`D[qu*DR7@j%a8>l;]%-ZW&,,5@beC?WQ'eGU -_9h')q<.b\dB -!BpJTm/X-`rr`?%^_FTSrr<&trr<&SrrB%Lm/uYk!7%_H!U"Is^'/)aRXDF.pAY9KQ[lgEJcCE' -"S]$Hb5TK^"T-#aU$;1K"S/gEX7#`^!T[hd^'/J.,!2+fq>V#&_VrkUX-n`dH]4Q#_UR`ChuUl`Dd%CAO)7p9\,[B3kNr<$4b*~> -!BU8Qkl@:Prr`?%^_FTSrr<&trr<&SrrAV@kl^)c!7%_H!U"Is^'/)eVM`"SpAY9OUQ3=gJcCE' -"8K?ad)Z.hqoF_slgt,Zo=BdcnFuq`jCS)""`T)<4-od>rt)EVjOM5WV3QakRAma=g$/=irri:a -inC7)rs[q+>'PjaDH:\c!#Xn^klK'jJ,~> -!B:&NirG&9rr`?%^_FTSrr<&trr<&SrrA#/ire6V!7%_H!U"Is^'/)iZ'iN"pAY9TY+3c4JcCE' -"8Ta$f#Rdnr6Lk@mdpG]otm*1o(W.bjCS)""`T)<4-od>rt)cfkh=7pYbIDMVR44ehWt!prri:n -k2*B=rs[q+>'PjaDcUed!#OVWirR%VJ,~> -!BpJTm/X-`rriE&s1f>ao)A[irVlith#@ARea3EH!.D!L!L0P]^AS'3^&t<9ankc3"oZ`*LroRG -s+11Qs5T-'kf<]+q7V0Olgt,Zo<`kCm.pY^Pc4Mo!MTYp^&k5raSu2Nrq#*p]rRQVEd*M7Yf##R -pt#HIcB$>EpAYE]b0$*is*XlUk3W3#4b*~> -!BU8Qkl@:PrriE&s1f>ao)A[irVlith#@AFe`d-C!.D!L!L0P]^AS'3^&t<@chmJ:"oZoL75*Pak>qS -f)Gj%S(4P4rs7f1b+ZuXI/m[;klK'jJ,~> -!B:&NirG&9rriE&s1f>ao)A[irVlith#@A5e`-^:!.D!L!L0P]^AS'3^&tpQD_+,d,+-b -f)Gj*W8"]Qrs7f1b,NegI/mR8irR%VJ,~> -!BpJTm/X-`rr<&urrR`Op%/1`!<)p$!"oG^LA^$1!3+N9!j)GRXoABAr4W.2qn<&Np\tEm_Le!% -rdk*#s8Ds#rPNunrQ"p@pUP[MmdpG]osT4DlMLS]Er3QO6NI)!%V!,PR>5s4NM!Jne`NUKci4+H -MQilIrrpK=s""/Pk3W3#4b*~> -!BU8Qkl@:Prr<&urrR`Op%/1`!<)p$!"oG^LA^$1!1h[)!ic5OXoABAr4W.2qn<&Np\tBmacN.K -JcC<$r;Qp!b)*t5a8Z;;_2>PfoD\se^P]5]qu6Y:qn<(u!<'VAAAkjNP_G!`Wk-@+l)`7Xrr`7e -\ZYQ("jX:N/-)^4klK'jJ,~> -!B:&NirG&9rr<&urrR`Op%/1`!<)p$!"oG^LA^$1!0#Ig!i>rKXoABAr4W.2qn<&Np\tBmd%7;p -JcC<$r;Qp!d?r&Sa8Z; -!BpJTm/X-`rriE&s1f>ao)A[iqu6crd6Va1rrB%Km/uP`!8=UU!-%kM!rrTAJc<@`E;BM:oi)> -"mCZo!"eAVm/bd$J,~> -!BU8Qkl@:PrriE&s1f>ao)A[iqu6crd6Va1rrAV?kl]uW!8=UU!-%kM!rrTAJc<@`E;BM:otQEa -jFR>^s7lTrqRDX?`r?29]ns/foD\sg_2GG\rVlk:r4W6'&HMdD"^/FZg?SM1rrK7McMmsuNjA9V -"mV9)!"\/QklK'jJ,~> -!B:&NirG&9rriE&s1f>ao)A[iqu6crd6Va1rrA#.ire0L!8=UU!-%kM!rrTAJc<@`E;BM:p;`W/ -kCNYas7lTrqSAc[`r?2:`L+C3oD\sgadT^+rVlk:r4W6'&HMdD"^JplhX(+8rrKU]cMmt%S@eCm -"mqu:!"[uLirR%VJ,~> -!BpJTm/X-`rr`?%^_FTSrr<&prrM9oiVrnWeEm<1H]khFUJh$(!^1,qrOr8Np&>&ccd)OlrdgL/rri:DL]CK;m/bd$ -J,~> -!BU8Qkl@:Prr`?%^_FTSrr<&prrM9oiVrnKeEI$7!/[lY!-%hL!kX$prk8ALqu6fe[#)-VJcC<$ -o`#$MPGdoirri#+M7N9Mrs/A9MOqSrY#bJ7!^1,qrOr8Np&>&neBS!oO/2CI"TF+3!*/.F!R<`V~> -!B:&NirG&9rr`?%^_FTSrr<&prrM9oiVrn:eDgU.!/[lY!-%hL!kX$prk8ALqu6fg^6lV&JcC<$ -o`#$QTsF7/rri&4R)/Iers/AAR&e9H\68aD!^1,qrOr8Np&>'#g -!BpJTm/X-`rrW8:'Ys5]TYKC?T7"' -!BU8Qkl@:PrrW8:'Ys5klRIW33N8]Er3QP]7pgp^'RMpX2a/XWf"O_JcC<$ -nc&ai_MZ;1`r?25[u%ckr;R9#kL[ecWLA`uP*:Ta_.`b\r;ci2!-7c4!N=VprrTK_rq$-lRn*OO -jllfk3e.~> -!B:&NirG&9rrW8:'Ys5 -!BpJTm/X-`rrN07_!h:'!<)p$=O[0'9Ocu\!3+K8"6Bghj0/I`Pc4Pprrrr_YWLYToL)#iNcGF#.pLj+-%S?9NPiU[!Js8'T_?` -!BU8Qkl@:PrrN07_!h:'!<)p$=O[0'9Ocu\!1hX("5sOdj0/I`Pc4PprrV_ne>jllfk3e.~> -!B:&NirG&9rrN07_!h:'!<)p$=O[0'9Ocu\!0#Ff"5=+^j0/I`Pc4Pprr -!BpJTm/X-`rrE,8nGiCds8N8&/d*,5p>Q#OWRL59:B6BYrrVn3>5,`AETG9!Mp;(T^S$.)R^q)E -JcC<$o)Ag?JY_k`rt,(ng;pb#P_4(,O.(oLV;V+?rrW)(AbWn?>&O'-rrJJ=c2RmOX+U?BrrRa= -:ZUmDeieN~> -!BU8Qkl@:PrrE,8nGiCds8N8&/d*,5p>Q#OS^Zg)9`U0WrrVn3>5,`AETPQ5R*tfi`iG/XV8:s] -JcC<$o)AgDO08-%rt,+qhTim?TTOkcS>MU,YN5KNrrW,/B(s"@>&O'-rrJnMc2RmX[#t=ZrrS!N -:#tO>c8pI~> -!B:&NirG&9rrE,8nGiCds8N8&/d*,5p>Q#ON76eg9)ssUrrVn3>5,`AETPcIV:bY,cF'42Z,tu" -JcC<$o)AgIS[e@>rt,+siml)\XIk]GW3N+`\``e\rrW,4B_T4B>&O'-rrK:]c2Rm`^7YArrrS3^ -9B>+6_`*)~> -!BpJTm/X-`rrBjOrrB%Im/is]26m/a^D'g^\,!`A[on6If`(dJ$1ZHLP]qn[`T@&Ls+14Drri/' -I)Q$XMrrHoEq7[!@AQ]_^p\t8YgWfa#XhpIEo`"t[ -=J=gC!S0Da~> -!BU8Qkl@:PrrBjOrrAV=klRFV26m/a^D'g^\,!`@[p+leh"q$Wo@LUIL6Spdkl$)4JcGHD"T#`g -bPp5q&GYMCb.F^EN.[7cYeSK?mJQq_"RN4K`r#B-!Gf1?^'(oV=VSXFrrJeMc2RmSaeR)PrrPZ$ -T&f,:c8pI~> -!B:&NirG&9rrBjOrrA#,irYYL26m/a^D'g^\,!`@[p>Q,iVNQ\o\@BdQD1t=lhuD7JcGHD"T$$) -dJhl"&GbYKdDNDkS!0JG]#W@\n,3.a"RiggcMR55!Gf1?^'(oV=VSXFrrK4]c2Rm\d'(mirrPf4 -RcNK0_`*)~> -!BpJTm/X,urrB%Im/uJ[!8Fm\#PiKS])V1t^&,MG]g\:Ko`#6rji+*PGE]>\nU^^ks7lTrkECqc -jSohko&7s0Xdk8oGDMZf^!5I(rq$-mk+7(?qt9sjmSpms^'D>Nmf0j1Fntk5!Kl6`rrf:@jb!I) -rr_![CZXXE!S0Da~> -!BU8Qkl@9errAV=kl]oS!8Fm\#PiKS])V1t^&,MG]gndZo`#6skfg8rL7c*0o7?pms7lTrlCXO, -j8T\_jOM5XVjE3oQ)1k+e)KrtoD\sXWK#'up&>*]<5&1C#JF+)s1/ebq>($kS`7oo"L?;9OT"nQ -"5='-iT05(c8pI~> -!B:&NirG%NrrA#,ire'F!8Fm\#PiKS])V1t^&,MG]h#3ho`#6sldEA=QE.sZoR[$ns7lTrm&R&J -j8T\`kh=:rZD*]<5&1C#JF+)s1/ebq>($kWo_M*"M<1LT)JB_ -"5=' -!BpJTm/X,urrB%Hm/g;gKXLg^f.p1hrr3&M=M"IF!kM.ImJdLdfX[GtJY9d7qLSZts8;m"rlT\k -p?qqlr9`:^\YtjKFaT1?YeniLp#uDYjI1Y?r:^-leQBE]^&klJec,RNlqfIhqYpSViQ_B*UWib& -bkD&=KE,iAjR!!!4b*~> -!BU8Qkl@9errAVC, -mf*jsn)2R/ZD*P9MjgWUaOfVKkl1eKVN9"#pAY3E=M"IF!kMLarr3)e:bpZ!rrJVMc2RpKdf5uf -pAY5J!.*>ZklK'jJ,~> -!B:&NirG%NrrA#+irW*YKXLg^f.p1hrr3&M=M"IF!kM4OmJdLfiQ8?mS[Hc)qgncus82fuesjDK -mf*jsn`89C]<7fkR]!O/ceRg[kl1eNZ(9ABpAY3E=M"IF!kMLarr3)e:bpZ!rrK%]c2RpUf`/&) -pAY5J!/K.dirR%VJ,~> -!BpJTm/X,urrB%Hm/j3d/@PQ[R2).ers/%4Dh3FSD=Hch$NBA8XH%I`XN^#0JcC<$s8N5qWdi7l -q>V'+o&8!4Yb7).Ee0CK[E$n`q;2,Si0T,>rV-m8L""XG'`T6CeeieN~> -!BU8Qkl@9errAV#k2eSJ;J/?OOsF1!gsdkqu6\akKX#0WRh+)QM1=\ -/-(XLjQQ]j3e.~> -!B:&NirG%NrrA#+irYnS/@PQ[R2).ers/%4E.WXXD=H`g#k-B[Vj40pfC+:jJcG`L"8KR!fD,@X -rq5L0cbd)hS3[+kW=V"Xfj -/-(sVjPp9Y2h1~> -!BpJTm/X,urrB%Hm/uPb!7SLY"7/i>fDGRPrmR!YT$$]arsAS[^S$.)RCUuDJcC<$']G"8hrN;* -[%ih;FF9% -!BU8Qkl@9errAVfDGRPrn*d#Us&DhrsAS^`iG/XV8:s]JcC<$']b[Tj6,+< -]WRlhK8Z.r[`-_TnGUl:"Q5o:eGf4B$1qkCo`*R4QIPp5rr^k.;!e/\!L;rprro4Qs8SA=q#:KG -!"l9DjQQ]j3e.~> -!B:&NirG%NrrA#+ire0N!7SLY"7/i>fDGRPrnXTBWQXqmrsAVccF'42YfYl!JcC<$'^2EqkN^pO -`42k?PFAAT^WbBmo)7)<"QZVWg&CaG$1qkCo`*aFUtYhIrr^k.;!e/\!Mf#+rroXas8ShOq#:KG -!"lNOjPp9Y2h1~> -!BpJTm/X,urrB%Gm/gSoH+O"XTFl>Br;Qrta+fW$rRq2Wn^=_-GDE'7jSaZ0N;jLbkh!k`VNusX -EI=.R]?AspqoSj@fT1p -!BU8Qkl@9errAV;klP,jH+O"XTFl>Br;Qruc'4^Jrn7;Xo@LUIL6SpdkP]u3N;jLclJ0Y!YbI>6 -JW$>2_U79/qoSj?h40h`p](8CrVm5ZSWqP$s8Vn;&YT.'!L)lprro(Qs8UBBq#:JB!+!.=jQQ]j -3e.~> -!B:&NirG%NrrA#*irWBaH+O"XTFl>Br;Qrue=ieprn7;Xo\@BdQD1t=lMZ;6N;jLcmGQL7\uhZi -OdWGeb1G\Cr5ns@iM`R-p](8CrVm5^WM8#Ds8Vn;&YT.'!MJo+rroLas8UTSq#:JB!*[(DjPp9Y -2h1~> -!BpJTm/X,urrB%Gm/s`r*W<\O"4]pY^\n*7p:PmCgX?*.rT2"qLNerfdd_ngRK"#ojjqJ^W18]i -GDDN_\&d4cq!t23e&)+eeVoIUJTEVobFfoq-3r;Zf3(J**VK'gh_#*7^Bs7q$0qYp`t*< -!BU8Qkl@9errAV;kl\3k*W<\O"4]pY^\n*7pVVuehpVN2rohS1Q%kpCfCORnRK"#qkhF@tZDX"E -L6SI<^WtX#q=C_MfY[Xjg6nA_q>UJTEVobFh4KkVrVuo4(J**VORLHo#+O]Rs8%WBqYp`t*< -!B:&NirG%NrrA#*ircFa*W<\O"4]pY^\n*7prf/2j3mr6rp/"DU6_juh"60tRK"#rleg45]X"?" -Q(kFma40)8qXq=hh890ohPR1-q>UJTEVobFiiAa&rVuo4(J**VT(1)*#,p_bs8/5TqYp`t*<<7] -XlSLC_`*)~> -!BpJTm/X,urrB%Gm/u\t!4orF"RKq?Oo#%V"RiRAV<5u$$23#^RX9UX^Y\gr1r9iIh_6K_u -KQVQsR&@C4eE-Dtrr^u0SF+5o"THf*OP9U3!NB&orsRVJK#[`gqN2P0G4 -!BU8Qkl@9errAV;kl^,l!4orF"RKq?Oo#%V"S'$ZYNa71$2<8lV2C>6`o?lHs/>r1rUAjtaL\LG -P(\XWUTqSXg$&2(rr_,BVshM&"4id/hY[ -!B:&NirG%NrrA#*ire9_!4orF"RKq?Oo#%V"S0Br\a7N>$2EK$Z'h/jcK4qSs/>r1rUT+*cbm5m -TTke -!BpJTm/X,umJs65m/hM4>J^=BqN2P0m/?qek,!F/n&>;6rp.e0NcpD`bj,1Ys0hq?pZU;Q];qH] -IWL%#Suo]MgZnV$rri83Hb93nrri>GL6UNmrrL,!p\tTXR=W9Qs6OP0Mu(a!!JTh -!BU8Qkl@9emJrg)klQ#.>J^=BqN2P0m/?qel*#rSn\kG5mF&G3KpoHtm=G;Frt>+mh9a$HVj`Qs -Ngm#W`7!Q1qX"4br5+?/r58O;rmR((iVicW`]3_m$KIqCb5;5*C^c6ucMmp.m/I"cj-KQA"^:tM -l-#[ZklK'jJ,~> -!B:&NirG%NmJr3mirX9%>J^=BqN2P0m/?qela`D"o>LY7n(>CQQ)DCKmt(MHrt>.pimu8dZDX1U -S>`g1bh1tEqs==cr5tGNr58O;rn*pGjo,2[`]3_m$KeR`dJX%2C^l@"cMmp -!BpJTm/X,umJs65m/tZ8$Lu%6".^2uec#LNgR3Q)p:gP5qqo/]JU -!BU8Qkl@9emJrg)kl]-1$Lu%6".^2uec#LNhkZ7MpV-Y6qr5VrO,BdMh"QC"`;^MFle^(/\ZMNg -JVKA^Y.Vp/jmrE0rr__ePi'@X#lW)3UZDITiZ.Xk$0A(Ea85gV72DH?rrJ/MrVlnYmem(hnHo<@ -l-#[ZklK'jJ,~> -!B:&NirG%NmJr3mird=&$Lu%6".^2uec#LNj05#rpqHb7r8u;4SXH_(iV8!(`;^MGmGcdC_7-M> -Od2WB\AZeMkk+l5rr_erU>s,j#lW;GYNZ#diZ.Xk$0\[bcMRWj7M_Q@rrJ\]rVlnhnGN:jnHo<; -j3+C^irR%VJ,~> -!BpJTm/X,umJs64m/f?LS]:[4rie-tTDniorQpRZaSWIH$1ZHLP]qn[_W:]Is4%&_rpo.$aL\IE -OFhV"L6SF:^eieN~> -!BU8Qkl@9emJrg(klNmGS]:[4rie-tTDniormdI%cMY0O$1lc\TSA]8aQNPRs4%&_rq,C.cGI#h -SWJM[Pb>.h`Rb`A[bqZcrirsIqgN5^MIT,]VjrmLfIMY6rJ!OBlGrs#"o -3pGnGVr[(Cc8pI~> -!B:&NirG%NmJr3lirV4@S]:[4rie-tTDniorn=9DeGQfU$2!#kXHoTlcg(L\s4%&_rq5R6e]PY6 -WLf?@Trb`?c.M%DpsoBHh4D.L_Z'l>d[d]/qZcrirsJ%uR`q&nT,]VjrmLfIRJ-UZ!P?bWrs#"o -3TK/ -!BpJTm/X,umJs64m/iLP503a5rie.5Yl=\&qS\&Le,HWP$3'&+Xb_.`Yg;]fs5O%mp?LJ]_mZM4 -N.5kqMO:9J_U.0+q9&^?q6PIdrPJRL -!BU8Qkl@9emJrg(klR"J503a5rie.5Yl=\&qob+mf`&/U$3'/4\!;Z=\^^)!s5O%mp[$kib.k6Z -R>lfVQ_^juajoD=qTAg@qRh^.rke[=r5jqu)WL>f$L+XB_"do51,?*5eGfQ'qYgEpcE@*F#!N$M -l05X]jQQ]j3e.~> -!B:&NirG%NmJr3lirY5@503a5rie.5Yl=\&qpD%9h>X\Z$3'8>^n[0p_:nF1s5O%mq![>!dDro) -VONa;Up%AJd+d[Oqo\pAqS\fLrke[=r6Uq?)WL>f$LG3_anbq?1,?*5eGfQ7qYgEpe[YPW#!N$I -j5[b\jPp9Y2h1~> -!BpJTm/X,umJs64m/uJX!SPWq$c3o>Yl=\&oXTC@hl6V^ptEBOIsmftf_0mroD]U(nDr6F^Ts`) -N.?"pKoqt.\Am%Wn,:!#"6bu/iPGNsq7[etlLOr^rc"Z\\G#p+1*+6^rrI0>rVloYN;`b]f`;HB -mHp+WjR!!!4b*~> -!BU8Qkl@9emJrg(kl]oP!SPWq$c3o>Yl=\&p:uTbii2qaq;0#fNJj[Mh"QC"oD]U)o&nfU`k/IN -R>uoTP+AS[^s(Knnc$9&"6uPJjh^s"qSaM1mIC2_J?FdFp\qBP*Q$A,!J17KrrM8MrVm,U!=IiN -l(5uWklK'jJ,~> -!B:&NirG%NmJr3lire'D!SPWq$c3o>Yl=\&pW/f0k,J@eq;TT(S!pV(iV8!(oD]U)o]kDec,7,s -VO`p;TW5B5aOB#0oDZK("7<1fke[9%qop=Fn+$DaOLU_"q#7KQ*Q$A,!KmB[rrMA]rVm,U!=IWB -j/:#[irR%VJ,~> -!BpJTm/X-`mJsT1mJs63m/gPnFNa[cNt@l]rrh_kHDp)&rsA/AZBTTgV8M9iK`;kfoBG)[`OW(B -PD=L+IYsJeYeA00ipQ]Lrri>EI]N1Yrrc2HI&HB(rsSaGs6HS0[.OBh& -!BU8Qkl@:PmJsT1mJrg'klP&hFNa[cNt@l]rrhf!M6cKBrsA5H]:aqCYKGu)KDu_[lf$L?_7$A9 -P_k!NQ_LXn`6[0!nGBKj"4<(7pVHk4;Ls_1n+?VfrIY(;Z&66fs.'^^fDbmLKDb`Mn;dJI#BTrM -l07AcioK>)c8pI~> -!B:&NirG&9mJsT1mJr3kirW?`FNa[cNt@l]rrhl,R(Md\rsA;O_lT/t\^BX=KDu_\mcE9QahP6a -U6q+5Uoq5DbLPM6o),cm"4s$Vpqct5;MLUNnauhhrK@3M\s^P2s.'^^fDbmLPPkF]nt#aZ#BTrK -j5]*`hW3\t_`*)~> -!BpJTm/X-`mK!:SrsJI)1>r34j.Uh,nso^erT;2"MKY&`c0P@pru(e,l.se/ -]s4H(OG/%%H\RZPWO9UhgZ\;/V>g\lX+&7k_uBp\NV9f-X75i_!Vpp -!BU8Qkl@:PmK!:SrsJI)1>r34k,aHQo:5geroq_6Q\Cs=dd<>")#j3oiRcAn -]!/'&PDOjJPF\SW^<+m^lLgtQ"8B3^dDGnfEK0_,MR;sJrrMtMrr38m[#)Bdi%eR2g&D*IM#@8R -o8EVJ#P]#6\`r@jU>tJ=c8pI~> -!B:&NirG&9mK!:SrsJI)1>r34l*d"uopl$grp/(HUm7mof^G+*)#j6sjkSA/ -_n*+PTU:k0TrPB1`mEH"mIm@U"8KU"f>@OlEK0b5RD/:drrN"]rr38o]pQ_1i%eR2g&D*JQi-ja -opYm[#P]#6[,^2]X5i4@_`*)~> -!BpJTm/X-`mK*A%Zc)83WQjf3/HD]prs@U=>k\0LQ@QaFQ2_0dgqKD3H^V@ooV_^-q!R7udE'#+ -VON[$H?+@eOdr>T^<"d[l1FtArr_8?PN]sb#``j's7EUDYO_Jg!VUg:rs/"pHEZO;1>pmd!V(X: -rrM5 -!BU8Qkl@:PmK*A%Zc)83S^$C#/HD]prs@U=>k\3QU5m7hQ2_0ei5M^WM57o@p8@p/q=*V*f$;4F -YbmtTM1UVLSYra)`Qm,qm.UFFrr_AOTBaAp#``j's7X']\FfRr!V_EJrs/)&M7DeT1>pmd!V;9J -rrM>Lrr35$!%mI"jGMIIklK'jJ,~> -!B:&NirG&9mK*A%Zc)83N6UAa.fcKnrs@U=>k\3VXe!c5Q2_0ejNY'&R'=WgpS\$0q=pmd!VDlZ -rrMG]rr35$!%[*ihjDmQirR%VJ,~> -!BpJTm/X-`mK3I)'=78trW)la"N!J4)O04K!3+61!f[1Gd/OB]&"d`K83XJ2)CKm[rcJVo\_Vm=%Xe)0E^re^XXrPX)hq8WF8Y###r"S/aCZLn"n!V:^8 -rs&"tH`Vr5\D.#am">69!Qh&7rrtahNU?+sWT*:GeieN~> -!BU8Qkl@:PmK3I)'=78trW)la"N!J4)O04K!1hC!!f?tDd/OB]&5C(g]% -!B:&NirG&9mK3I)'=78trW)la"N!J4)O04K!0#1_!f$bAd/OB]& -!BpJTm/X-`mKE>s4ID\i9[.rm,IC5eieN~> -!BU8Qkl@:PmKc$N\r0rs.IZ(;@kNT\G8%$3'8:[$cW: -[F"9druUt*l/LFGbJ_'$XehPPMh-SBQCk(Z\\ZG:gZ.YmrIP"Err_nrO4_MQ!R<@qrrho"MSAi_ -rrM\Mq#:Qj]8;=Y;;g:1!U>sJrsPdOs8UaQ$f'sFQg!Gn!R<`V~> -!B:&NirG&9mKB^8@0n -^=M_uruV",m,d-Wd`]SC\$2j*RZWl*UoUf4_9(*WhrjG#rIP"Err_r(S__?d!R<@qrrhr-RE#%" -rrM_\q#:Qk`0cT#;;g:1!UQTZrsQ0`s8UaQ$eOCBU>k1m!Q-jH~> -!BpJTm/X-`mKEUjs1f;So'QJXrU'\bQ/1j.WQa`2>l\usrs/=P'Rm96T]1P&$NKt[^nHC+QaP?6 -jo6ItmcN?Uc,@9$X.l&GM1KqmG^tX5RA-^e]>VqDhs'_2JcFs6"5AU"mE,A/mLT-n"RW+7](l:) -!UYL4rs&,'GZGH1pu)/SkHeserr3AlI/*aAF9#V3Q]^Ljm/bd$J,~> -!BU8Qkl@:PmKEUjs1f;So'QJXrU'\bQ/1j.S]p=">6&cqrs/=P'S!WMX6"p4$NL"_a/kDZU;#=Q -jo6IunEJocd`]P@[&p0rQB-iQLQ7[kV6%&9_ogE]j6Q@:JcFs6"5f??n&bS1mLT-n"RiUQ_YO32 -!Ul-Drs&22L0G=Epu)/SkI,Nrrr3AoMY[;PF9#P-TUY$$klK'jJ,~> -!B:&NirG&9mKEUjs1f;So'QJXrU'\bQ/1j.N6L;`=TEQors/=P'S!od[HN2A$NL"ccF0@3Y/]>k -jo6Iuo'>Dof[7m\^:1AIUn*j7QCXeNYd_Zpu)/SkI?$)rr3AqRJHm_F9#J&Wi"\4irR%VJ,~> -!BpJTm/X-`mJm7drrR`Ojn%m?!<)WkK:s1p&>5e'hXa;X6Y?: -q>Ucme[CikJtTm7q>UC>rV#[Ahq6>u_Rd%RUR[R.L4=DeG_(^6RA-^e]>VqDh<"(urdk+$rri84 -Hb93urrEYuq#:TaUOBlPs6>=1rrr,,D);osp&>-dcGB/FrtOL3>'Pg^GZo%GU::1&ob%83JYD>d -m/bd$J,~> -!BU8Qkl@:PmJm7drrR`Ojn%m?!<)WkK:s1p&>5e'hb*S[I/VG -q>Ucog:j>=OK6C[qYpL?rV,gGj4r53aMPQrY,@q]PDt-dcGB/FrtOL3>'Pj_GZo%GXM=f8ob%84NiD1! -klK'jJ,~> -!B:&NirG&9mJm7drrR`Ojn%m?!<)WkK:s1p&>5e'hkKl^@6^R -q>UcphSuadT!cl*qu6U@rV5sMk2G(FccX/>\?`36Tpq=/QCXeNYd_s6lWQrrr2=L,p!=p&>-dcGB/FrtOL3>'Pj_GZo%G\&\OKob%82S$:i/ -irR%VJ,~> -!BpJTm/X-`mKEUjs1f;So'QJXrU'gk>27q8;;ppCWQXZ12#s*1rs@_(>'Pj`GZo%Gqu6p#YVI); -I(/]us8N$GqXa+:i7cZ(`kT*iToakMEHH>EEd<4lOI)Q9XgPj\bgY;*l1"KIJcE[g"7D\6g<9Ks -0@':k"mDS._W6LCrs&50>7rNlrqcX"n8NH&K6)#$q#:Hj@r&aS^'_Me3q<7MRKZ] -!BU8Qkl@:PmKEUjs1f;So'QJXrU'gk>27q8;;ppCS]g7!1]X!0rs@_(>'Pj`GZo%Gqu6p#YVI)C -Mneq9s8N$Fqt9FBj5/G:bf7K1X.59,JV/W-Jr#JQS>3'f\%T`&dFd=;m.0t's24j=n>DN-bPqSr -cM%8AlDfibkEYW<#5H)I'/$NgqYpfiE-$_cF)^XDrr`"*CV9PY$G:(;o)J`Y#$m)3hWY'd3e.~> -!B:&NirG&9mKEUjs1f;So'QJXrU'gk>27q8;;ppCN6C5_1B'Pj`GZo%Gqu6p#YVI)K -R`G,Qs8N$FqtBRHkMk=Me'?(P[Afa`Ocu#mP*_`7WNNV>^r=LEfA5HMme$=+s24j=o!4tKbPqSr -cM%8AmBrG0lD!kL#5QG]'J?WhqYpfiE-$_cF)^XDrr`"*CV9PY$G:(?oDeiZ#A'7IhW"XS2h1~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=72r!!)uc"ZYB,mbJ<1mJs60m/uPh!5@n$!q]U%pV$s@=S&aO'iU(:rMKTF -qt0=?iS)f+a2#9mXJVVXP)P*EG]InQJV]APS>)sc[CsK"d+7%6lL=QHm/ICbf=@>tKUoa-pOW@S -rri/)I)Gp/rrI%uo)Aj8G_=-:nc&sm_G:^oYl=[j<5&1C!khS$qu6\$[.V-:Zr)9Y/EkmV!S0Da~> -!BU8Qkl@:PmK3I)'=72r!!)uc"ZYB,mbJ<1mJrg$kl]u`!5@n$!q]U%pV$s@=S&aO(0d3VrMKTF -r:]XFjPJS=c,[Z5[]ld-Ssbe%LOt2:O-Q3.Vl[26^;S1?e_B'Gm.0rNm/ICcgq]bDP,Q:SpjrIT -rri22MTPkDrrI%uo)Aj=LQTp]nc&snaB'!+Yl=[j<5&1C!khS$qu6\$[.V-:Zr2ft0BCpQ!R<`V~> -!B:&NirG&9mK3I)'=72r!!)uc"ZYB,mbJ<1mJr3hire0T!5@n$!q]U%pV$s@=S&aO(1a;qrMKTF -r:fdLki1IOeBZ1S^UghWWhuGZQ]dQ#SYN-cZF@K_`llc[gY_,Xn+?GTm/ICdi5i0kTX2i#pjrIT -rri5;RF(rZrrI%uo)AjDQCl_+nc&sncX7DgmI!Q-jH~> -!BpJTm/X-`mK*A%Zg[;^!<)#XDJ!3+-.!dF]Bmf*;l[.V-:ZlgYtQeK"M/,Af(kMb.F -cH!c4Z`U*tR?NSaIsH'VH\$s4PaeDGYI2$\ajAVoj6H..rR(WOld)i#GD)^*h=uR$]DhusP`4SJ -rrJWpo)ApNOkl7Uc2R85#Q)DA*Z(>_\,!`=[qu!B!MttN^&sB_!-m8c!S0Da~> -!BU8Qkl@:PmK*A%Zg[;^!<)#XDJ!1h9s!d4Q@mf*;l[.V-:Zlg])U>EH\/,Jo,lK$gT -e'5tN]XG&FV4X0>NJN. -!B:&NirG&9mK*A%Zg[;^!<)#XDJ!0#(\!cn?=mf*;l[.V-:Zlgc5Y2["l/,Jr/m-*Hc -g!n?j`4rmkYcFXpS -!BpJTm/X-`mK!kbr5ETd<#!,2>FrrE&4rr<'4DZ7?O/dL%`m/bd$J,~> -!BU8Qkl@:PmK!VQ&gfVJ;&oCQ(+JEXKf7J_o^6Sg>M,[nb<$lrsJbjd'fHuQE\Nmr.4m^rr^]/[.i#K -!S\Ubrs.GSs8UrHQIbR*"T6MI%p\kC!HI<$rr?a2^Ae34^Ae06&oR]_!\O],gZ\aa3e.~> -!B:&NirG&9mK!obL"enhrO%ioD& -!BpJTm/X-`mJsT1mJs6.m/g;gF7B20B`5[F!<0_4!;sP2B]f=Jqt0@Aj5&>7b/M-+ZE0psRZrhh -Jp_c_FaJ[pNK]d&V5pl1^;S.?f%]0ImIU/QSGrrojMn-VG)`NCjo'c1_Z'c4XFA=ke,KFgg[kFG -fU)R:"4iHjeaWS?rHP:>^'nof$ZEbnW0E[!Is5E#^&S03^&l!/"oc4:<`%N;!S0Da~> -!BU8Qkl@:PmJsT1mJrg"klOibF7B20B`5[F!<0_4!;sP2B]f=IqtBRGk2G(Gd*'GE]=+rEVP'EE -OGejEKSkhUR\-FVYI1sV`QHNWg>D#Wn+HOHrsJ_fbd*UiR^CB(rIP!crr`#'N6p#Q!?BkcrrLrM -rVluSR[MjurrW.GW;XF=D[Qqk^:pP1R"'U0A,O%@!<'V5]oN?r^&_81g?AX`3e.~> -!B:&NirG&9mJsT1mJr3firW*YF7B20B`5[F!<0_4!;sP2B]f=Ir:fdMl/gjXf$_ga`4rmlZ)jju -Sskq,PaS):VlR&/\\>r$bgFtphrEqfnb2jLrsJ_ie%DNBVnLXHrIP!crr`&1S(?$f!?BkcrrM)] -rVluWVl&>?rrW.JW;XF=D[Qqk^:pP1R"'U0A,O%@!<'V5]oN?r^&_8/g>`4O2h1~> -!BpJTm/X,umJs6.m/t6+%e0&h!Uat*^&S03^&S02^,'css8W#jn*8uif[A!_^q-kSVkKWGO,8O< -GB.eOJ;0#GR%C+RYdV6_aj/Gki9'Ftq#5jEs8NE%hnl1EG*/uPl%/lQrr_;APNUHq!F2,crrLZ= -r;Qp!dYa+ -!BU8Qkl@9emJrg"kl\^$%e0&h!Uat*^&S03^&S02^,'css8W#kna,Gtgt0rta2,EtZ)jjsSPsFs8NE&j2nHgKq5a%m",2Trr_DPTBar+!F2,crrLfM -qu6cMQ^ln%rr@*;^&nY/QjNc+"Y(C>IqF<1^&S02^&a69rk8D]S(d*-c8pI~> -!B:&NirG%NmJr3fircmn%e0&h!Uat*^&S03^&S02^,'css8W#loC(u+iS<&5cH4#?]=,#IW2-&S -QB@AuSY;p\YI(gQ_T'dGe_/g>kNqa3qYl'Gs8NE&k0UW4Q)_[QmXbDVrr_M`X6e@9!F2,crrLu] -qu6cRUo<8Brr@*;^&nY/QjNc+"Y(C>IqF<1^&S02^&a69rk8D]QJ1@"_`*)~> -!BpJTm/X,umJs6-m/fHOM=UZIc%l52!!)u3!!)r2)hM[HEH?DTKo;+\SYN0f[Ca;scI:M*jm2L3 -rIP".rsJPU^7U.)PH`>I'WS!rrJTooD\j -!BU8Qkl@9emJrg!klO!JM=UZIc%l52!!)u3!!)r2)hW-cJV/cEMnAi:rrJTooD\jAWqu_urm[1)i:HsKE;[EP*gi9:rk8A3 -rr3#DL]"jd!<'V5LDHBY^&`_qg?AX`3e.~> -!B:&NirG%NmJr3eirV:BM=UZIc%l52!!)u3!!)r2)hWR*Ocu-%TV\ZkZadZa`ll]Xg"kZNlgXTC -rdk+/rsJV_bdF.1X23HVrdk*krri>KR`#!QrrJTooD\jG[/0e*rn4!GjR`BOE;[EP*gi9:rk8A3 -rr3#DL]"jd!<'V5LDHBY^&`_mg>`4O2h1~> -!BpJTm/X,umJs6-m/sBh)u9+*!R6Dt^&S03^&S02^&s,+p\oaD`W$;Tkl$)4bl7e: -V1I(HrrLjooD\j8U\OilrQ9e[i:[*ME;[EPIKTe(rk8AOrr3#eEW!NN!<0\6C_W?:^&_p'g?epl -4b*~> -!BU8Qkl@9emJrg!kl[ja)u9+*!R6Dt^&S03^&S02^&s,-q#5jE`W$;=h8H=ULS)*(lMcA7bl7e; -YE.;errLjooD\j=Y5&#"rm6e%j7WEPE;[EPIKTe(rk8AOrr3#eEW!NN!<0\6C_W?:^&_p$g?AX` -3e.~> -!B:&NirG%NmJr3eirc(W)u9+*!R6Dt^&S03^&S02^&s,.q#5jE`W$;>ilea%QE.jRmJ_\:bl7e< -\XhO-rrLjooD\jC\G6(,rmm^EkOniTE;[EPIKTe(rk8AOrr3#eEW!NN!<0\6C_W?:^&_lrg>`4O -2h1~> -!BpJTm/X,umJs6-m/u]*!2&l_!Uat*^&S03^&S02^&`6AJcEIa$MN2fTnR]RXifi*JcF'r"5J[# -m+D==*8C,c!QV/4rri8?JXYWnrr@*;^&n_/QOEf,!-8&FrW)u4r;ci2!+adM!S0Da~> -!BU8Qkl@9emJrg!kl^-!!2&l_!Uat*^&S03^&S02^&`6AJcEIa$MWDrX-/4/\'XF>JcF'r"5oH@ -mb%O?*8C,c!R7qDrri;FO/D(6rr@*;^&n_/QOEf,!-8&FrW)u4r;ci2!+X^H!R<`V~> -!B:&NirG%NmJr3eire9i!2&l_!Uat*^&S03^&S02^&`6AJcEIa$M`W)[\/qd^t.lOJcF'r"6?2] -nC[aA*8C,c!S"aTrri;MS[%GRrr@*;^&n_/QOEf,!-8&FrW)u4r;ci2!+OXA!Q-jH~> -!BpJTm/X,umJs6,m/r[T/,o/?!,2>FrW)u4rW)o2!,-r`\Glp1gV9J:GEArKk5Bl2e,KRK]mI?f -gA_1YS+Q^]_lWM1"T-)dT'#kK!L0P]^'@[G$ -!BU8Qkl@9emJrfukl[.M/,o/?!,2>FrW)u4rW)o2!,-r`\Glp2ho;a]L7Pd!l2?25e,KRL`/;D/ -gA_1YS+Q^]agUjA"T6E%WTj6Y!L0P]^'@[G$ -!B:&NirG%NmJr3dirbDD/,o/?!,2>FrW)u4rW)o2!,-r`\Glp2j3>'+Q)VOKlhuD7e,KRLbF-KM -gA_1YS+Q^]d(f5Q"T6Z;[-[Vg!L0P]^'@[G$ -!BpJTm/X,umJs6,m/uPk!4;@t!MttN^&aCnJcE(V$MW>jUPUc -!PYi0rri25IA6!'rrM;&pV$ZJkPY>\>I=(;!OPkZm/bd$J,~> -!BU8Qkl@9emJrfukl]ub!4;@t!MttN^&aCnJcE(V$M`Q!Xd"O/ZchD*JcF=$"7W7Qh:qr1Rp>Uc -!QDY@rri5=N3)CCrrM;&pV$ZJkPY>\>I=(;!OPhYklK'jJ,~> -!B:&NirG%NmJr3dire0W!4;@t!MttN^&aCnJcE(V$Mic.\"T(b^!c*@JcF=$"7idlinOJ6Rp>Uc -!R8LPrri5ER^__^rrM;&pV$ZJkPY>\>I=(;!OPeXirR%VJ,~> -!BpJTm/X,umJs6+m/hn?47`CP>I=(;!OQ'^s/l;.ptioeNHU&N^"Dq-s4RDSeUjOch>[N1*;'73 -]!_&-"SfTVVX46\!Go7@^&b]Zqu6`i=L@h:!jk/Of^/^j4b*~> -!BU8Qkl@9emJrftklQD947`CP>I=(;!OQ'^s/l;.q;TQ&RY@!-`8(!9s4RDSfoW<,h>[N1*;'73 -_7oF="SornYjVGh!Go7@^&b]Zqu6`i=L@h:!jk,Jf]`F^3e.~> -!B:&NirG%NmJr3cirXZ047`CP>I=(;!OQ'^s/l;.qW6,:Vj*mabi/5Gs4RDShO_4Kh>[N1*;'73 -ai -!BpJTm/X,urrB%]!5A()!q]U%pV$^9=S.1EW;d8(k0'unH@MBkd-L[^s5*bYq6bUerSIPT -*8C/d!O]N,rri)+H`HQ6rrVUf^&,MF]i=Frrr`"*CV9PY"2%bOgXkfneieN~> -!BU8Qkl@9errAV0kl]cT!5A()!q]U%pV$^9=S.1EW;d5'l-[&7M2e@Fea7qfh>[WS]o'o1hZ!Tr -g\(RI]u'4;"SfciZgn%p!q'%$qn<-F<:9V_"8?;@]_fDF]NH!$fBE=]3e.~> -!B:&NirG%NrrA"tirdpH!5A()!q]U%pV$^9=S.1EW;d5'ldrtSR%(A"g[B^nh>[WT`L5'OhZ!Tr -g\(RI`QIWK"Sg'+^%21&!q'%$qn<-F<:9V_"8?;@]_fDF]NGusfAcnL2h1~> -!BpJTm/X,urrB%;m/hV761Y$XpLA!Oqn<0FCLd*is.TH"maJ\9JTm9ZaPm,Ls5Et[l'71bhu<^^ -S+Zd^YeTQ)$2(ZPXmuGkeQBE]^&klJebB(Nj)8+GLlZda2$&'Tm/bd$J,~> -!BU8Qkl@9errAV/klQ,161Y$XpLA!Oqn<0FCLd*is.TH"nCYOSO+s77cK5%Vs5Et[l_0^,hu<^^ -S+Zd^\]4"9$22#g[e'P!eQBE]^&klJebB(Nj)8+GLlZda2$&!RklK'jJ,~> -!B:&NirG%NrrA"sirXB(61Y$XpLA!Oqn<0FCLd*is.TH"o%hBmSX$4ie`d!`s5Et[m]E>Khu<^^ -S+Zd^_ThHI$2;B*^\%R+eQBE]^&klJebB(Nj)8+GLlZda2$%mOirR%VJ,~> -!BpJTm/X,urrB%;m/u5V!6"F-$0,r-G_h0#>&WGPs-irqpY3KZNcTuL]$p'GJcFj3"3l=pp#5oO -Rp>Xd!Na3(rseS(Ha32Bn8NH&O)m(RoD]'Yb0&nc!"[u -!BU8Qkl@9errAV/kl]ZN!6"F-$0,r-G_h0#>&WGPs-irppts,pRY$d)_V"=.s5a1^dZ(U,iVrqJ ->kS*t[E@e7%J72f](Q*mE-$_oF#'Wars.`0b3-\C&)5\"!R<`V~> -!B:&NirG%NrrA"sirdjB!6"F-$0,r-G_h0#>&WGPs-irpq;]c1Vimd_b2)T=s5a1^fUKPJiVrqJ ->kS*t^ -!BpJTm/X,urrB%:m/hD18FHK[kK:X(JcCo5$iK/2ZC-5fOK-7Tp4<8.rri(uIEDKKrrLjop&>&j -aQWX4n>puEpAad1_=Xrerr)j!kK:X(q#:Cd!-QiZ!S0Da~> -!BU8Qkl@9errAV.klPo+8FHK[kK:X(JcCo5$iK8;];:OCS[?PupOWA/rr`&)N6gM`!S\UerrKCM -kl2(^[>DTks7FUQoWU+MrVlu_b/*99rrP^kF4KLUc8pI~> -!B:&NirG%NrrA"rirX0"8FHK[kK:X(JcCo5$iK>C`3>btWP-^@pjrJ0rr`&2RapEt!S\UerrKa] -kl2(`^6ln7s7FUQoWU+MrVlu_b/*99rrP^kE7NtL_`*)~> -!BpJTm/X,urrB%:m/u,P!6TlmJcGHD$hiAnWK27SR^C?&r.4n8rr_;AP31g)!?BkfrrJn=k5PSP -W-c)Lrr3H,19:H8Dd%CANd+`Gj8AoZaoDk*ea3Cg4b*~> -!BU8Qkl@9errAV.kl]TI!6TlmJcGHD$hrT$Z^cc2VS(CCrIP"9rr_DQT'>;8!?BkfrrK7Lk5PSR -ZAQKnrr3H,19:H8Dd%CANd+`Gj8AoZaoDk'e`d+[3e.~> -!B:&NirG%NrrA"rirda=!6TlmJcGHD$i&f0]Vq-eZ,G;]rIP"9rr_M`WpJdG!?BkfrrKU\k5PST -]:$e:rr3H,19:H8Dd%CANd+`Gj8AoZaoDk!e`-\J2h1~> -!BpJTm/X,urrB%9m/h/*9nE=qs7-*trp8(DT8%BFU:Serri>?I'NJ.rrHAopAY/bd,b37 -l_T!Bq>^K<&l*5Tqn<0FCLd, -!BU8Qkl@9errAV-klPZ$9nE=qs7-*trpJCSWfr%&Xhr]Vrdk+?rri>FMn8`GrrHAopAY/me`?`< -m]VPeqZ$T=&l*5Tqn<0FCLd, -!B:&NirG%NrrA"qirWrq9nE=qs7-*trp\^b[%WY[\'!Lprdk+?rri>LR_np_rrHAopAY0#gZ8AB -n@>"2qZ$T=&l*5Tqn<0FCLd, -!BpJTm/X,urrB%9m/u&I!6B`kJcG*:%0#8/ZC?JhMP@]1l2?25pAY6dV1I%VrrJlipAY/^e`-T6 -l(NRAqt*OgpV$m>=S2X7!!h6-m/bd$J,~> -!BU8Qkl@9errAV-kl]NB!6B`kJcG*:%0#A8];C^DQ`S'Um/;M8pAY6eYE.8srrJlipAY/ig#E#: -l`5ubqt*OgpV$m>=S2X7!!h-*klK'jJ,~> -!B:&NirG%NrrA"qird[6!6B`kJcG*:%0#JA`3Gr!UpnM%meq_:pAY6f\XhL;rrJlipAY/uhW"P? -m^AV1r:EXhpV$m>=S2X7!!gp$irR%VJ,~> -!BpJTm/X,urrB%8m/h8-7"PAhs5s=iq;]Z)S:l'CTt8Y9rIP"Frr_&5RHs):!q?fkp\t8Zg#2l5 -jdgoq[.V-:Zs3Pu!--KT!S0Da~> -!BU8Qkl@9errAV,klPc'7"PAhs5s=iqW?2 -!B:&NirG%NrrA"pirX#s7"PAhs5s=iqru_NZCdAW[`R:lrIP"Frr_>WYjglV!q?fkp\t8rio'h> -la**W[.V-:Zs3Pu!,U-E!Q-jH~> -!BpJTm/X,urrB%8m/u/T!5F*bJcF^/%/T#.[%)ejM4_6$j84E-s8N6"^3dEfl2LcZU\FchP25!p -!L&Q8^''UK!"[o7m/bd$J,~> -!BU8Qkl@9errAV,kl]WM!5F*bJcF^/%/]27]VgpEQE%^Kk50`0s8N6#`JVM0l2LcZU\FchT&JQ+ -!L8`;^''UK!"[f4klK'jJ,~> -!B:&NirG%NrrA"pirdd@!5F*bJcF^/%/];@`3Q&!Up\7ql26,4s8N6#baHTNl2LcZU\FchWo`+; -!LJl=^''UK!"RN-irR%VJ,~> -!BpJTm/X,urrB%7m/hV74+[E_s4dP_rT);5TSdiAQ`S*Xn,A"?"7Me7f]rJ;UJCR`!KH*qrr?a2 -^Ae34^&tDk!s&>7!]pC/dd7(d4b*~> -!BU8Qkl@9errAV+klQ,14+[E_s4dP^ro_eGX-\L"U:/2"nUpiDnYhZ-lMgm[:A=bhRcWE+!,2>F -rrE&4"040Z!<0\63rjQSklK'jJ,~> -!B:&NirG%NrrA"oirXB(4+[E_s4dP^rp&4X[A9"WY.r?Cnq6rEo!>"JlMgm[:A=bhVs*";!,2>F -rrE&4"040Z!<0\63rjHPirR%VJ,~> -!BpJTm/X,urrB%7m/u>]!4IIYJcF=$%K>bH_5ifMGDr9,cK4kXrr^i)U%%FK!q?fkq#:AOk261> -mW&0=!!*#4!]i3FrOr>6'&q@,!S0Da~> -!BU8Qkl@9errAV+kl]cU!4IIYJcF=$%K>hNaL%V"L7,-YeEHabrr^u;X7GWW!q?fkq#:A\l/2LA -mW&0=!!*#4!]i3FrOr>6'&M($!R<`V~> -!B:&NirG%NrrA"oirdpI!4IIYJcF=$%K>nUcb?KMQ);%3g$ANkrr_/N[e/qd!q?fkq#:Aim,.gD -mW&0=!!*#4!]i3FrOr>6'%kXm!Q-jH~> -!BpJTm/X,urrB%6m/hn?1P,RWs3L]SpYj?(T8@ZARB49VlMZbC"T#NR_>Wd$!D]BarrIf=hu<`% -L]"jd!<0\5#F#)"!I\\0m/bd$J,~> -!BU8Qkl@9errAV*klQD91P,RWs3L]SpuTo:Wg8="Upe@umJ`.G"T,ojaSkN+!D]BarrJ;Mhu<`% -L]"jd!<0\5#F#)"!I\Y/klK'jJ,~> -!B:&NirG%NrrA"nirXZ01P,RWs3L]Sq<6GL[%ihVYeSNAn,A@I"T-3,ci*82!D]BarrJe]hu<`% -L]"jd!<0\5#F#)"!I\P,irR%VJ,~> -!BpJTm/X,urrB%6m/uMe!2kDJJcEmm%fYeF_Q9,WFG6-b_q48RPQ(aLQAaYgrrTG\rqZQpJFDCq -!R6Dt^&S04^&nO(#[RGD!IhW-m/bd$J,~> -!BU8Qkl@9errAV*kl]r]!2kDJJcEjl%IVul[\Jt;P,5Y0h!Y0*rr_V^R,dW7!jON[q>UJUn_a?I -c%l52!!*#4!sLpq?2hP=I^d_h!R<`V~> -!B:&NirG%NrrA"nire*P!2kDJJcEjl%Ii9$^TX8nTWl5Yi:-`0rr_\kV<74G!jON[q>UJcoABQK -c%l52!!*#4!sLpq?2hP=I^7A]!Q-jH~> -!BpJTm/X,urrB%5m/rIN,5?`hJcE[g%fGSA^oNcPFG?6f`7aSXR/[96J#N#/rrW0TYke;"Hh?4q -!Uat*^&S04^&o^KQ3[E'!G:08m/bd$J,~> -!BU8Qkl@9errAV)klZtH,5?`hJcE[g%fGYGa0_S%KTr@DbMD[eR/[9;NO&9IrrW0TYke;"MY5m, -!Uat*^&S04^&o^KQ3[E'!G1!4klK'jJ,~> -!B:&NirG%NrrA"mirb2>,5?`hJcE[g%fGbOcG$EOPG,7tdGj`rR/[9AS@nUcrrW0TYke;"RJ,P< -!Uat*^&S04^&o^KQ3[E'!G0d.irR%VJ,~> -!BpJTm/X,urrB%5m/uW&!02X1JcEF`%f>J=^8[BJEf6Ej_q+)MT)SrfXaS:inc&Zp1B..M!I+=q -rr?a2^A\-4^&s?-$XitJ!+XCC!S0Da~> -!BU8Qkl@9errAV)kl^&r!02X1JcEF`%f>PD`Nu7uJXE=EakH+[T)Sof[uAW%rrTD[rqcWqLAB^+ -!,2>FrW)u4"-!p$@/dk?@aO??c8pI~> -!B:&NirG%NrrA"mire3e!02X1JcEF`%fG_Mc+L0LOeo>!d,49iT)Sog^m`gCrrTD[rqcWqQ29A; -!,2>FrW)u4"-!p$@/dk?@F4$8_`*)~> -!BpJTm/X,urrB%4m/s9e'CLGOJcE4Z%fYP;^T3`TFFf[T][,X3U]1GWO-/SqrrW0TYknA#ErFkp -!MttN^&a:`d-Ukb4b*~> -!BU8Qkl@9errAV(kl[d_'CLGOJcE4Z%fYYC`jMS)K9)\2_pmiCU]1GZS=Sp8rrW0TYknA#K)OR+ -!MttN^&a:^d-1SV3e.~> -!B:&NirG%NrrA"lirbtT'CLGOJcE4Z%fYbKcG$KTPF\eebM)4UU]1G]W2f1SrrW0TYknA#P5X8; -!MttN^&a:Zd,P/E2h1~> -!BpJTm/X,urrB%3m/fENFb0RDs02M6rU&:XZCZu!H]Ff-aP?7`WrE5$`dG#coD\lr1B.4O!W@&o -rrH?2otCI6 -!BU8Qkl@9errAV'klNsIFb0RDs02M6rU8Rd];_0QM41NZcJ\6lWrE5$b_s%-oD\lr1B.4O!W@W* -rrH?2otCI6 -!B:&NirG%NrrA"kirV:BFb0RDs02M6rUJmr_mH8+R&@C3e`??$WrE5$e!e/LoD\lr1B.4O!WA2: -rrH?2otCI6<6sS*_`*)~> -!BpJTm/X,urrB%3m/t*)#iL:6JcD_L%eJW'\YYI=EJU$`^ -!BU8Qkl@9errAV'kl\O!#iL:6JcD_L%e\l1_69GiJX*(>`RX,EYQ"^tY`@9+rrW0TZ2FV&q1d]) -!q]U%pV$^98`.kY!R<`V~> -!B:&NirG%NrrA"kircal#iL:6JcD_L%ef) -!BpJTm/X,urrB%2m/g5e=b6U(s.]N(roVbKYap\sG`&#p_UIZB[Jp?bM4!W%rrK&cr;QfiHe\Q& -pLA!Oqn<0F=XrRZm/bd$J,~> -!BU8Qkl@9errAV&klOc`=b6U(s.TH&l.O1hW0i?qQ`%@7f]i4>rr_5GV![jT!N8B`rrMeMg]%BM -@r&aS^&u#N.cSb -!B:&NirG%NrrA"jirW'X=b6U(s.TH&m,$+*Z_`tRUp@h_h -!BpJTm/X,urrB%2m/tiC!Q0KgJcD5>&,,)3^TDd%CAO*FMG#Lq#c!S0Da~> -!BU8Qkl@9errAV&kl]9;!Q0KgJcD5>&,58<`jVb0Ko2>!]?Asqqn2q3rPaZ0qtL*lq%qc`rrMYM -g&DE>Dd%CAO*FMG#LL`[!R<`V~> -!B:&NirG%NrrA"jirdI0!Q0KgJcD5>&,>GEcG-WZQ'nPX_p[K2r4N%4rQUbOr:g3mq%qc`rrM_] -g&DE>Dd%CAO*FMG#KtBP!Q-jH~> -!BpJTm/X,urrB%1m/qM31Aue(JcD#8&H;:ZcFg-CKlhg,UUA1smJOj$"7Mh8f_>FGG5_FAl\*jh -#3X.OjY?gZbj>G^4b*~> -!BU8Qkl@9errAV%klZ#-1Aue(JcCu7&+nr4_m?,$KT2P)^ -!B:&NirG%NrrA"iira9$1Aue(JcCu7&,#,=bIk!NPFJS]`mj# -!BpJTm/X,urrB%1m/uDh!1JK=JcC`0&H;.SbIOL7JTQL.VRan+n,CE."4i-unG3(cg)'SarrM8= -e,KN=!$((Dm/bd$J,~> -!BU8Qkl@9errAV%kl]i_!1JK=JcC`0&H;4YdD2uZO+WOeYee`Gnc$W0"5As=o(i:eg)'SarrMAM -e,KN=!#sk?klK'jJ,~> -!B:&NirG%NrrA"iire!S!1JK=JcC`0&H;:_f>tP)SWfYH]#iRcoDZi2"5f`YoD/Cfg)'SarrMJ] -e,KN=!#sY9irR%VJ,~> -!BpJTm/X,urrB%0m/rmZ(@QhSJcCK)&,beJaL.e)IrpC2Wk?X9o?R@=qR1derVHNp6`9q`!TK*g -rr_^*!1h=#!S0Da~> -!BU8Qkl@9errAV$kl[CT(@QhSJcCK)&,kqQcFp?NNJ*LjZbt;RoZmI>qnJ$/rVHNp6`9q`!Tfd" -rr_^*!1V0r!R<`V~> -!B:&NirG%NrrA"hirbVJ(@QhSJcCK)&,l"WeA\nrS!0MJ^!#*mp!3R?qo>,MrVHNp6`9q`!U-H2 -rr_^*!11mh!Q-jH~> -!BpJTm/X,urrB%/m/fOteNI,c'R]X?Lj7Lk$"6u51hu!EY_Bo!WkGNFb -ec,\j!'89i!S0Da~> -!BU8Qkl@9errAV#klNjFEIn.@s+14Lrt#"mgWR4/RYl`_VRFLmk4[=)"72bKiqr`\_Bo!WkGs$o -ec,\j!'/3d!R<`V~> -!B:&NirG%NrrA"girV1?EIn.@s+14Lrt#%qi6fHMVjWaDZ+nT:l1`^-"7NCgk55/`_Bo!WkH9U' -ec,\j!'&-]!Q-jH~> -!BpJTm/X,urrB%/m/t0,!nW#'JcC<$p\tg%jjV&HSVqc;M41N[cf+Hog]%B$J>`&;rs;7h>'PgW -GZo%Gg&D0+!X$9]m/bd$J,~> -!BU8Qkl@9errAV#kl\X%!nW#'JcC<$p\td$kh*taW0iBqQDM".eE$8Urr^c2Z1e+q#t[`mG__#u ->&WHSrr^jS"2;qB!R<`V~> -!B:&NirG%NrrA"gircgo!nW#'JcC<$p\td%leTn$Z_a"SUTqPWg?A4`rr^rE]D)7'#t[`mG_h*! ->&WHSrr^jS"1cS7!Q-jH~> -!BpJTm/X,urrB%.m/pbs5Q666JcC<$nGa'ojj_/OT8e5AL7#!Qc/8$iir9>ZYC4Lks7^#;]_fDF -]PD$Oh#@KU56,-6m/bd$J,~> -!BU8Qkl@9errAV"klY;n5Q666JcC<$nGa'pkh4(gWg\g!PbYS&e)Krtir9>[\;SZ4s7^#;]_fDF -]PD$Oh#@KU56,*5klK'jJ,~> -!B:&NirG%NrrA"fir`Qe5Q666JcC<$nGa'qle^"*[&9=VTs)/Qf]Mf)ir9>\_4&mRs7^#;]_fDF -]PD$Oh#@KU56,!2irR%VJ,~> -!BpJTm/X,urrB%.m/u/Z!2+oCJcC<$kl24ikgm\XToXYEKU/OHbM;Oakl1hIOHA4![.h99ZrltV -rr\no(#@"!!S0Da~> -!BU8Qkl@9errAV"kl]WS!2+oCJcC<$kl24jlJ'LoXIP6&P+o4tdGXNmkl1hLS=SM=[.h99ZrltV -rr\no(#$do!R<`V~> -!B:&NirG%NrrA"firddF!2+oCJcC<$kl24jmGH=0[]#[ZTWPiJfAuN$kl1hOWN"iY[.h99ZrltV -rr\no'\(7b!Q-jH~> -!BpJTm/X,urrB%-m/r^U(%$SPJcC<$iVsJdlIa.bUQU.LJs<+?akH+Zn,ELha#UO"^&bTFhZ!]F -'`aWBm/bd$J,~> -!BU8Qkl@9errAV!kl[1N(%$SPJcC<$iVsJdm+oq"Xe(Q*OJ&elcee*fn,ELhbrrH,^&bTFhZ!]F -'`aN?klK'jJ,~> -!B:&NirG%NrrA"eirbDD(%$SPJcC<$iVsJen);a7\#Q!_SufKCe`-)rn,ELhdm:A6^&bTFhZ!]F -'`aB;irR%VJ,~> -!BpJTm/X,urrB%-m/u];!+pf^JcC<$g&DW]m+TRjV3HRRJ -!BU8Qkl@9errAV!kl^-2!+pf^JcC<$g&DW^mbZ:)YFpu0Nh3Adc.q[_pAY/iP4QBgP,7(9"(hNp -kfDuhc8pI~> -!B:&NirG%NrrA"eire:%!+pf^JcC<$g&DW^nD`!=\ZDBdS>s';e)BcnpAY/iP4QBgP,7(9"(hNo -ilL-\_`*)~> -!BpJTm/X,urrB%,m/tE6!lffkJcC<$df0mWmbH!sVj -!BU8Qkl@9errAUukl\m.!lffkJcC<$df0mXnDM^1Z(dD7N1?r\bM)7Xrr2t3rP&:3rk8Jm&J:$% -^&Vj)rr^7B"i\OH!R<`V~> -!B:&NirG%NrrA"dird(#!lffkJcC<$df0mXo&SEE]<.`iR]*[5dGO?frr2t3rP&:3rk8Jm&J:$% -^&Vj)rr^7B"i/1=!Q-jH~> -!BpJTm/X,urrB%+m/qA/0E-P&JcC<$bPr"MnDDL&WgJNaI#XA(r4W.2rk8I\Jq>?K^&`6Air9,[ -0*$%4m/bd$J,~> -!BU8Qkl@9errAUtklYl)0E-P&JcC<$bPr"Mo&A-9Z_Wh>MOL,Or4W.2rk8I\Jq>?K^&`6Air9,[ -0*#t2klK'jJ,~> -!B:&NirG%NrrA"cira,u0E-P&JcC<$bPr"Mo]FfL]s",oRA[!!r4W.2rk8I\Jq>?K^&`6Air9,[ -0*#k/irR%VJ,~> -!BpJTm/X,urrB%+m/uMl!/?()JcC<$_uBl=oAQU#r4W.2rk8I<\@;_A^&a#6ir9+8!$17Bm/bd$ -J,~> -!BU8Qkl@9errAUtkl]rc!/?()JcC<$_Z'`1jK!t3^&S04^&nPK\-;lG!JeqZrr[uU*95''!R<`V~> -!B:&NirG%NrrA"cire*V!/?()JcC<$_Z'`2kc]^<^&S04^&nPK\-;lG!JeqZrr[uU)r8No!Q-jH~> -!BpJTm/X,urrB%*m/sNm#hX_.JcC<$_>aP\L]"jd!<0\7"h;&Grk8Dgc/\g+fE_M]`U*]W4b*~> -!BU8Qkl@9errAUskl\!f#hX_.JcC<$_>aP\L]"jd!<0\7"h;&Grk8Dgc/\g+fE_MZ`T[EK3e.~> -!B:&NirG%NrrA"birc4\#hX_.JcC<$_>aP\L]"jd!<0\7"h;&Grk8Dgc/\g+fE_MV`T%!:2h1~> -!BpJTm/X,urrB%)m/pSn4T0j2JcC<$_Z'Z)EW!NN!<0\7-%^^qrk8DQmc=BMrB('b`9dTV4b*~> -!BU8Qkl@9errAUrklY)h4T0j2JcC<$_Z'Z)EW!NN!<0\7-%^^qrk8DQmc=BMrB('``9@ -!B:&NirG%NrrA"air`B`4T0j2JcC<$_Z'Z)EW!NN!<0\7-%^^qrk8DQmc=BMrB('^`8^m92h1~> -!BpJTm/X,urrB%)m/u2^!0`!6JcC<$_>aLKrP&72s1SSn&J:!$^&Vj,rr\Gb(uE3u!S0Da~> -!BU8Qkl@9errAUrkl]WV!0`!6JcC<$_>aLKrP&72s1SSn&J:!$^&Vj,rr\Gb(tupm!R<`V~> -!B:&NirG%NrrA"airdgJ!0`!6JcC<$_>aLKrP&72s1SSn&J:!$^&Vj,rr\Gb(Y-Ia!Q-jH~> -!BpJTm/X,urrB%(m/s*`%H)g;JcC<$_Z'Y5P4QBgP,77>"5jUgUVlI"eieN~> -!BU8Qkl@9errAUqkl[RY%H)g;JcC<$_Z'Y5P4QBgP,77>"5jUgTYp!pc8pI~> -!B:&NirG%NrrA"`irbeO%H)g;JcC<$_Z'Y5P4QBgP,77>"5jUgSAX@f_`*)~> -!BpJTm/X,urrB%'m/g)a7Y1Sjs+13drrH?2otCI6>N>_b7K?9%m/bd$J,~> -!BU8Qkl@9errAUpklOT[7Y1Sjs+13drrH?2otCI6>N>_b7K?3#klK'jJ,~> -!B:&NirG%NrrA"_irVmS7Y1Sjs+13drrH?2otCI6>N>_b7K?-!irR%VJ,~> -!BpJTm/X,urrB%'m/u&S!1JK=JcC<$_Z']0=L@h:!jl)%jSo=N!"mr%m/bd$J,~> -!BU8Qkl@9errAUpkl]NK!1JK=JcC<$_Z']0=L@h:!jl)%jSo=N!"dc!klK'jJ,~> -!B:&NirG%NrrA"_ird[?!1JK=JcC<$_Z']0=L@h:!jl)%jSo=N!"dPpirR%VJ,~> -!BpJTm/X,urrB%&m/rjY%Gl[9JcC<$_Z'`4@r&aS^&u#`A,#'a"5XIeSAFRneieN~> -!BU8Qkl@9errAUokl[=R%Gl[9JcC<$_Z'`4@r&aS^&u#`A,#'a"5XIeRDJ+gc8pI~> -!B:&NirG%NrrA"^irbPH%Gl[9JcC<$_Z'`4@r&aS^&u#`A,#'a"5XIeQ,2J]_`*)~> -!BpJTm/X,urrB%%m/p2c55g'4JcC<$_>ai%Dd%CAO*FiHj5^.ArB:3Y_!M0R4b*~> -!BU8Qkl@9errAUnklX]]55g'4JcC<$_>ai%Dd%CAO*FiHj5^.ArB:3W_!(mF3e.~> -!B:&NirG%NrrA"]ir`!U55g'4JcC<$_>ai%Dd%CAO*FiHj5^.ArB:3U^uGI52h1~> -!BpJTm/X,urrB%%m/u)Z!/uL/JcC<$^Ae;ub/*9!rr\2[(Ycam!S0Da~> -!BU8Qkl@9errAUnkl]QS!/uL/JcC<$^Ae;ub/*9!rr\2[(YHOf!R<`V~> -!B:&NirG%NrrA"]ird^F!/uL/JcC<$^Ae;ub/*9!rr\2[(=L"Y!Q-jH~> -!BpJTm/X,urrB%$m/s9f#h=M+JcC<$S,WT@#Q^m=m/bd$J,~> -!BU8Qkl@9errAUmkl[d`#h=M+JcC<$S,WT@#Q^g;klK'jJ,~> -!B:&NirG%NrrA"\irbtU#h=M+JcC<$S,WT@#Q^X6irR%VJ,~> -!BpJTm/X,urrB%#m/pYp./JMpJcC<$Sc8fg-idSfm/bd$J,~> -!BU8Qkl@9errAUlklY/j./JMpJcC<$Sc8fg-idMdklK'jJ,~> -!B:&NirG%NrrA"[ir`Hb./JMpJcC<$Sc8fg-idGbirR%VJ,~> -!BpJTm/X,urrB%#m/u>g!-j(pJcC<$Sc8e:!$1(5m/bd$J,~> -!BU8Qkl@9errAUlkl]c^!-j(pJcC<$Sc8e:!$'k0klK'jJ,~> -!B:&NirG%NrrA"[irdpQ!-j(pJcC<$Sc8e:!#sS)irR%VJ,~> -!BpJTm/X,urrB%"m/sd"!kj0bJcC<$TDo#,!X,sFm/bd$J,~> -!BU8Qkl@9errAUkkl\6p!kj0bJcC<$TDo#,!X,jCklK'jJ,~> -!B:&NirG%NrrA"ZircIf!kj0bJcC<$TDo#,!X,^?irR%VJ,~> -!BpJTm/X,urrB%!m/qS5)s`(TJcC<$U&P5\)ZY,qm/bd$J,~> -!BU8Qkl@9errAUjklZ)/)s`(TJcC<$U&P5\)ZY&oklK'jJ,~> -!B:&NirG%NrrA"Yira?&)s`(TJcC<$U&P5\)ZXrlirR%VJ,~> -!BpJTm/X,urrB%!m0)]6!)NTFs+13$s.fSsr_EMRlFcKbeieN~> -!BU8Qkl@9errAUjklg-.!)NTFs+13$s.fSsr_EMRk.KpZc8pI~> -!B:&NirG%NrrA"Yirn9u!)NTFs+13$s.fSsr_EMPi4S(N_`*)~> -!BpJTm/X,urrB$um/t`I!0r-8JcC<$U]1F]!"dPim/bd$J,~> -!BU8Qkl@9errAUikl]3B!0r-8JcC<$U]1F]!"dGfklK'jJ,~> -!B:&NirG%NrrA"Xird@5!0r-8JcC<$U]1F]!"[/_irR%VJ,~> -!BpJTm/X,urrB$tm/rs\#1nG+JcC<$V>gYL"ot:,m/bd$J,~> -!BU8Qkl@9errAUhkl[IV#1nG+JcC<$V>gYL"ot4*klK'jJ,~> -!B:&NirG%NrrA"Wirb\L#1nG+JcC<$V>gYL"ot(&irR%VJ,~> -!BpJTm/X,urrB$sm/pVo.J&,jJcC<$VuHkj.0*Yam/bd$J,~> -!BU8Qkl@9errAUgklY,i.J&,jJcC<$VuHkj.0*S_klK'jJ,~> -!B:&NirG%NrrA"Vir`Ea.J&,jJcC<$VuHkj.0*M]irR%VJ,~> -!BpJTm/X,urrB$sm/uE!!*XsRJcC<$VuHj&!%R'?m/bd$J,~> -!BU8Qkl@9errAUgkl]im!*XsRJcC<$VuHj&!%Hj:klK'jJ,~> -!B:&NirG%NrrA"Vire!`!*XsRJcC<$VuHj&!%?R3irR%VJ,~> -!BpJTm/X,urrB$rm/tH=!1/9:JcC<$WW*'e!"?uZm/bd$J,~> -!BU8Qkl@9errAUfkl\p6!1/9:JcC<$WW*'e!"?lWklK'jJ,~> -!B:&NirG%NrrA"Uird(*!1/9:JcC<$WW*'e!"?ZQirR%VJ,~> -!BpJTm/X,urrB$qm/rjY#gIr#JcC<$X8`:H#QUC(m/bd$J,~> -!BU8Qkl@9errAUekl[=R#gIr#JcC<$X8`:H#QU:%klK'jJ,~> -!B:&NirG%NrrA"TirbPH#gIr#JcC<$X8`:H#QU.!irR%VJ,~> -!BpJTm/X,urrB$pm/pet,O^3`JcC<$XoALl,622]m/bd$J,~> -!BU8Qkl@9errAUdklY;n,O^3`JcC<$XoALl,62,[klK'jJ,~> -!B:&NirG%NrrA"Sir`Tf,O^3`JcC<$XoALl,62&YirR%VJ,~> -!BpJTm/X,urrB$pm0)T+!(m0@s+13$s0)G*r^d)DkI0aYeieN~> -!BU8Qkl@9errAUdklg$"!(m0@s+13$s0)G*r^d)Cj0n1Qc8pI~> -!B:&NirG%NrrA"Sirn0j!(m0@s+13$s0)G*r^d)Bh6u>E_`*)~> -!BpJTm/X,urrB$om/toM!/,q'JcC<$YQ"]X!"[Ygm/bd$J,~> -!BU8Qkl@9errAUckl]?E!/,q'JcC<$YQ"]X!"[McklK'jJ,~> -!B:&NirG%NrrA"RirdO9!/,q'JcC<$YQ"]X!"R8]irR%VJ,~> -!BpJTm/X,urrB$nm/s -!BU8Qkl@9errAUbkl[gb!k!UZJcC<$Z2Xp6!Wo:,klK'jJ,~> -!B:&NirG%NrrA"Qirc"W!k!UZJcC<$Z2Xp6!Wo+'irR%VJ,~> -!BpJTm/X,urrB$mm/q_9&DD^8JcC<$Zi:-]&-.*am/bd$J,~> -!BU8Qkl@9errAUaklZ53&DD^8JcC<$Zi:-]&-.$_klK'jJ,~> -!B:&NirG%NrrA"PiraK*&DD^8JcC<$Zi:-]&--p\irR%VJ,~> -!BpJTm/X,urrB$mm0)cM!%[Vks+13$s0_k0nga]7m'H'[eieN~> -!BU8Qkl@9errAUaklg3D!%[Vks+13$s0_k0nga]6kd0LSc8pI~> -!B:&NirG%NrrA"Pirn@6!%[Vks+13$s0_k0nga]4ij7YG_`*)~> -!BpJTm/X,urrB$lm0)Ds!)rlJs+13$s0r"2r_ieFij.qPeieN~> -!BU8Qkl@9errAU`klfij!)rlJs+13$s0r"2r_ieEhQlAHc8pI~> -!B:&NirG%NrrA"Oirn!]!)rlJs+13$s0r"2r_ieDfWsN<_`*)~> -!BpJTm/X,urrB$km/tNB!.oe%JcC<$\,QP^!"[8Xm/bd$J,~> -!BU8Qkl@9errAU_kl\s:!.oe%JcC<$\,QP^!"[,TklK'jJ,~> -!B:&NirG%NrrA"Nird..!.oe%JcC<$\,QP^!"QlNirR%VJ,~> -!BpJTm/X,urrB$jm/sNm!NL_NJcC<$\c2c3! -!BU8Qkl@9errAU^kl\!f!NL_NJcC<$\c2c3! -!B:&NirG%NrrA"Mirc4\!NL_NJcC<$\c2c3! -!BpJTm/X,urrB$im/r"A$-Ii!JcC<$]DhuU#loX^m/bd$J,~> -!BU8Qkl@9errAU]klZM;$-Ii!JcC<$]DhuU#loR\klK'jJ,~> -!B:&NirG%NrrA"Lirac2$-Ii!JcC<$]DhuU#loIYirR%VJ,~> -!BpJTm/X,urrB$hm/pYp)<6;JJcC<$^&J2p)$"!Gm/bd$J,~> -!BU8Qkl@9errAU\klY2k)<6;JJcC<$^&J2p)$!sFklK'jJ,~> -!B:&NirG%NrrA"Kir`Hb)<6;JJcC<$^&J2p)$!jCirR%VJ,~> -!BpJTm/X,urrB$hm0)W9!&=+ss+13$s1eR:oJ$>/kcX:ReieN~> -!BU8Qkl@9errAU\klg'0!&=+ss+13$s1eR:oJ$>.jK@_Jc8pI~> -!B:&NirG%NrrA"Kirn7$!&=+ss+13$s1eR:oJ$>-hlbu?_`*)~> -!BpJTm/X,urrB$gm/u,g!)\=IJcC<$^]+C5!$g:$m/bd$J,~> -!BU8Qkl@9errAU[kl]T`!)\=IJcC<$^]+C5!$g1!klK'jJ,~> -!B:&NirG%NrrA"JirdaS!)\=IJcC<$^]+C5!$]moirR%VJ,~> -!BpJTm/X,urrB$fm/tKB!-!MhJcC<$_>aUV!"d;Sm/bd$J,~> -!BU8Qkl@9errAUZkl\p9!-!MhJcC<$_>aUV!"[)NklK'jJ,~> -!B:&NirG%NrrA"Iird+.!-!MhJcC<$_>aUV!"ZoIirR%VJ,~> -!BpJTm/X,urrB$em/sg%!02X1JcC<$_uBh!!!]p5m/bd$J,~> -!BU8Qkl@9errAUYkl\9r!02X1JcC<$_uBh!!!Ta1klK'jJ,~> -!B:&NirG%NrrA"HircLh!02X1JcC<$_uBh!!!TU-irR%VJ,~> -!BpJTm/X,urrB$dm/rgY!ighOJcC<$`W$%?!Wedjm/bd$J,~> -!BU8Qkl@9errAUXkl[:R!ighOJcC<$`W$%?!We[gklK'jJ,~> -!B:&NirG%NrrA"GirbMH!ighOJcC<$`W$%?!WeOcirR%VJ,~> -!BpJTm/X,urrB$cm/qn>#f;/mJcC<$a8Z7Y#QTFTm/bd$J,~> -!BU8Qkl@9errAUWklZD8#f;/mJcC<$a8Z7Y#QT@RklK'jJ,~> -!B:&NirG%NrrA"FiraW.#f;/mJcC<$a8Z7Y#QT4NirR%VJ,~> -!BpJTm/X,urrB$bm/pl!'%VX6JcC<$ao;Io&ccI@m/bd$J,~> -!BU8Qkl@9errAUVklYAp'%VX6JcC<$ao;Io&ccC>klK'jJ,~> -!B:&NirG%NrrA"Eir`Zh'%VX6JcC<$ao;Io&cc= -!BpJTm/X,urrB$bm0)]I!$:NYs+13$s3(EFm2c7#lDX(NeieN~> -!BU8Qkl@9errAUVklg-@!$:NYs+13$s3(EFm2c7"k,@MFc8pI~> -!B:&NirG%NrrA"Eirn:2!$:NYs+13$s3(EFm2c6ui2GZ:_`*)~> -!BpJTm/X,urrB$am0)T,!%R>ds+13$s3:QHlm_uikGR\JeieN~> -!BU8Qkl@9errAUUklg'$!%R>ds+13$s3:QHlm_uhjJV5Cc8pI~> -!B:&NirG%NrrA"Dirn3l!%R>ds+13$s3:QHlm_ughP]B7_`*)~> -!BpJTm/X,urrB$`m0)5p!&jD!s+13$s3L]JnhpIth59Q?eieN~> -!BU8Qkl@9errAUTklf]h!&jD!s+13$s3L]JnhpIsg8=*8c8pI~> -!B:&NirG%NrrA"Cirmj[!&jD!s+13$s3L]JnhpIre>D7,_`*)~> -!BpJTm/X,urrB$_m0(u_!(6O4s+13$s3^iLpd5$(etqa7eieN~> -!BU8Qkl@9errAUSklfEW!(6O4s+13$s3^iLpd5$(d\Z1/c8pI~> -!B:&NirG%NrrA"BirmUK!(6O4s+13$s3^iLpd5$'c)'G$_`*)~> -!BpJTm/X,urrB$^m0(]O!)`WEs+13$s3puNqb[>1cD9h.eieN~> -!BU8Qkl@9errAURklf-G!)`WEs+13$s3puNqb[>1b,"8&c8pI~> -!B:&NirG%NrrA"Airm=;!)`WEs+13$s3puNqb[>0`MDMp_`*)~> -!BpJTm/X,urrB$]m/t9=!+(6VJcC<$e,KMV!"m/Em/bd$J,~> -!BU8Qkl@9errAUQkl\a5!+(6VJcC<$e,KMV!"cuAklK'jJ,~> -!B:&NirG%NrrA"@ircq*!+(6VJcC<$e,KMV!"cf -!BpJTm/X,urrB$\m0's,!,DLas+13$s4@8Rrb;E?\YAHleieN~> -!BU8Qkl@9errAUPkleF%!,DLas+13$s4@8Rrb;E?[\E!ec8pI~> -!B:&NirG%NrrA"?irlUo!,DLas+13$s4@8Rrb;E?Z(g7Z_`*)~> -!BpJTm/X,urrB$[m/s^#!,mGgJcC<$fDbqk!!fm)m/bd$J,~> -!BU8Qkl@9errAUOkl\0q!,mGgJcC<$fDbqk!!fd&klK'jJ,~> -!B:&NirG%NrrA">irc@f!,mGgJcC<$fDbqk!!fU!irR%VJ,~> -!BpJTm/X,urrB$Zm/s?n!-NkmJcC<$g&D.s!!fNsm/bd$J,~> -!BU8Qkl@9errAUNkl[gf!-NkmJcC<$g&D.s!!]?oklK'jJ,~> -!B:&NirG%NrrA"=irc%\!-NkmJcC<$g&D.s!!]3kirR%VJ,~> -!BpJTm/X,urrB$Ym/s3i!.0:sJcC<$g]%A&!!] -!BU8Qkl@9errAUMkl[[b!.0:sJcC<$g]%A&!!]3jklK'jJ,~> -!B:&NirG%NrrA" -!BpJTm/X,urrB$Xm/s$b!.oe%JcC<$h>[S/!!K!em/bd$J,~> -!BU8Qkl@9errAULkl[L[!.oe%JcC<$h>[S/!!JmbklK'jJ,~> -!B:&NirG%NrrA";irb_Q!.oe%JcC<$h>[S/!!Ja^irR%VJ,~> -!BpJTm/X,urrB$Wm/rj\!.oe%JcC<$hu -!BU8Qkl@9errAUKkl[@V!.oe%JcC<$hu -!B:&NirG%NrrA":irbSL!.oe%JcC<$hu -!BpJTm/X,urrB$Vm/s'a!.0:sJcC<$iVs",!!8mbm/bd$J,~> -!BU8Qkl@9errAUJkl[OZ!.0:sJcC<$iVs",!!8d_klK'jJ,~> -!B:&NirG%NrrA"9irbbP!.0:sJcC<$iVs",!!8X[irR%VJ,~> -!BpJTm/X,urrB$Um/rj]!-NkmJcC<$j8T4(!!Jg]m/bd$J,~> -!BU8Qkl@9errAUIkl[@W!-NkmJcC<$j8T4(!!Ja[klK'jJ,~> -!B:&NirG%NrrA"8irbSM!-NkmJcC<$j8T4(!!JUWirR%VJ,~> -!BpJTm/X,urrB$Tm0'*e!,qjfs+13$s6'Cbrbhc@Tpk?LeieN~> -!BU8Qkl@9errAUHkldR^!,qjfs+13$s6'Cbrbhc@SsnmEc8pI~> -!B:&NirG%NrrA"7irkeS!,qjfs+13$s6'Cbrbhc?R[W7;_`*)~> -!BpJTm/X,urrB$Sm0'9k!,DLas+13$s69Odrb;E -!BU8Qkl@9errAUGkldac!,DLas+13$s69Odrb;E;URC?Ic8pI~> -!B:&NirG%NrrA"6irktY!,DLas+13$s69Odrb;E;T:+^?_`*)~> -!BpJTm/X,urrB$Rm0'Ep!*9#Ks+13$s6K[fr)Ne'WgN/SeieN~> -!BU8Qkl@9errAUFkldmi!*9#Ks+13$s6K[fr)Ne'VjQ]Lc8pI~> -!B:&NirG%NrrA"5irl+_!*9#Ks+13$s6K[fr)Ne'UR:'B_`*)~> -!BpJTm/X,urrB$Qm0'Wr!)`NBs+13$s6]ghpe_"oYa=_XeieN~> -!BU8Qkl@9errAUEkle*k!)`NBs+13$s6]ghpe_"oXdA8Qc8pI~> -!B:&NirG%NrrA"4irl:`!)`NBs+13$s6]ghpe_"oW0cNF_`*)~> -!BpJTm/X,urrB$Pm0's3!(6=.s+13$s6osjnj -!BU8Qkl@9errAUDkleF+!(6=.s+13$s6osjnj -!B:&NirG%NrrA"3irlUu!(6=.s+13$s6osjnj -!BpJTm/X,urrB$Om0(?E!&j1ps+13$s7-*llo"h\`0K]jeieN~> -!BU8Qkl@9errAUCkleg>!&j1ps+13$s7-*llo"h\_3O6cc8pI~> -!B:&NirG%NrrA"2irm"2!&j1ps+13$s7-*llo"h[]TqLX_`*)~> -!BpJTm/X,urrB$Nm0(]W!%R&\s+13$s7?6nj=1-PcBR\seieN~> -!BU8Qkl@9errAUBklf-O!%R&\s+13$s7?6nj=1-Pb*;,kc8pI~> -!B:&NirG%NrrA"1irm=C!%R&\s+13$s7?6nj=1-O`K]B`_`*)~> -!BpJTm/X,urrB$Mm0(ui!$0mHs+13$s7QBph&QJFes#J%eieN~> -!BU8Qkl@9errAUAklfE`!$0mHs+13$s7QBph&QJEdZ`nrc8pI~> -!B:&NirG%NrrA"0irmUT!$0mHs+13$s7QBph&QJDc'./g_`*)~> -!BpJTm/X,urrB$Lm0)H)!#!/"s+13$s7cNr_@ci(j-&d1eieN~> -!BU8Qkl@9errAU@klflu!#!/"s+13$s7cNr_@ci'hid4)c8pI~> -!B:&NirG%NrrA"/irn$h!#!/"s+13$s7cNr_@ci&fok@r_`*)~> -!BpJTm/X,urrB$Lm02n=9)o6tJcC<$JcGQG"KD_-9BD<'!S0Da~> -!BU8Qkl@9errAU@klp>18cT-sJcC<$JcGQG"KD_-9&Yos!R<`V~> -!B:&NirG%NrrA"/is"Jt8,rpqJcC<$JcGQG"KD_-8DB9e!Q-jH~> -!BpJTm/X,urrB$LmJlPVl=9krNe.4]s+14Irre>`!+bAVm/bd$J,~> -!BU8Qkl@9errAU@l2TuNk$e;lNe.4]s+14Irre>`!+P)PklK'jJ,~> -!B:&NirG%NrrA"/j8\-Bi*ZNdNe.4]s+14Irre>`!+=`HirR%VJ,~> -!BpJTm/X,urrB$LmJZDTJH5airIP!"s+14Mrri:>!!.Y2m/bd$J,~> -!BU8Qkl@9errAU@l2BiLIfTOgrIP!"s+14Mrri:>!!.S0klK'jJ,~> -!B:&NirG%NrrA"/j8J!@HN=+crIP!"s+14Mrri:>!!.G,irR%VJ,~> -!BpJTm/X,urrB$LmJQ>SRg/phoR[$ns+11QoM5GlRuQe9eieN~> -!BU8Qkl@9errAU@l29cKQj*OdoR[$ns+11QoM5GkR#U>2c8pI~> -!B:&NirG%NrrA"/j8@p?PQh+`oR[$ns+11QoM5GkP`=](_`*)~> -!BpJTm/X,urrB$LmJH8RZNgIbj+75]s+C=Sj"UN=Z]+8PeieN~> -!BU8Qkl@9errAU@l20]JYQk._j+75]s+C=Sj"UN=Y`.fIc8pI~> -!B:&NirG%NrrA"/j87j>Ws8VZj+75]s+C=Sj"UN=X,Q'>_`*)~> -!BpJTm/X,urrB$LmJ?2Qas-m(b(9SDs+UIUar(1(b)>WfeieN~> -!BU8Qkl@9errAU@l2'WI`ZkI$b(9SDs+UIUar(1(`f''^c8pI~> -!B:&NirG%NrrA"/j8.d=_'/jsb(9SDs+UIUar(1'_2I=S_`*)~> -!BpJTm/X,urrB$LmJ6,PgcYWDWe(2$s+gUWWX/YggktJ"eieN~> -!BU8Qkl@9errAU@l1sQHffT6@We(2$s+gUWWX/Yffo#"pc8pI~> -!B:&NirG%NrrA"/j8%^ -!BpJTm/X,urrB$LmJ-&Ok["5iO+I=^s,$aYNr]5ek_\[-eieN~> -!BU8Qkl@9errAU@l1jKGjBV`dO+I=^s,$aYNr]5djGE+%c8pI~> -!B:&NirG%NrrA"/j7qX;hc^!\O+I=^s,$aYNr]5ahhg@o_`*)~> -!BpJTm/X,urrB$LmIooMKED3Qnq$gls,I$]nl#MjKSSpqeieN~> -!BU8Qkl@9errAU@l1X?EJcc!Onq$gls,I$]nl#MjJqrRkc8pI~> -!B:&NirG%NrrA"/j7_L9Iff[Lnq$gls,I$]nl#MjIu!%b_`*)~> -!BpJTm/X,urrB$LmIfiLYR:F]g4B9Ts,[0_g+*.2Y_MNGeieN~> -!BU8Qkl@9errAU@l1O9DXU>+Zg4B9Ts,[0_g+*.2XbQ'@c8pI~> -!B:&NirG%NrrA"/j7VF8W!`SUg4B9Ts,[0_g+*.2W.s=5_`*)~> -!BpJTm/X,urrB$LmI]cKb:!?%[=S@/s,m -!BU8Qkl@9errAU@l1F3Ca!Uiu[=S@/s,m -!B:&NirG%NrrA"/j7M@7_Bo6o[=S@/s,m -!BpJTm/X,urrB$LmIT]Ki_9CSK`6Q&JcD#8"oa/V!);I+m/bd$J,~> -!BU8Qkl@9errAU@l1=-ChFmnNK`6Q&JcD#8"oa/V!)27&klK'jJ,~> -!B:&NirG%NrrA"/j7D:7fLc,FK`6Q&JcD#8"oa/V!(tmsirR%VJ,~> -!BpJTm/X,urrB$LmIKWJm!Jj78G%K5JcD):"nY=c!ds?em/bd$J,~> -!BU8Qkl@9errAU@l14'Bk^!:18G%K5JcD):"nY=c!da'_klK'jJ,~> -!B:&NirG%NrrA"/j7;46icbG(8G%K5JcD):"nY=c!dEXVirR%VJ,~> -!BpJTm/X,urrB$LmI9KGZ4?p[c%5nGs-`libp*3!Z@VBDeieN~> -!BU8Qkl@9errAU@l1!p?Y7CUXc%5nGs-`libp*3!YCYp=c8pI~> -!B:&NirG%NrrA"/j7)(3WX]"Rc%5nGs-`libp*2uWe'12_`*)~> -!BpJTm/X,urrB$LmI0EFc7f5(Q\#0fs-s#kQO!RFc@P?amFFFN~> -!BU8Qkl@9errAU@l0mj>b:`i$Q\#0fs-s#kQO!REbCSmZl-;>?~> -!B:&NirG%NrrA"/j6u"2`\%5sQ\#0fs-s#kQO!RD`e!.Oj23g+~> -!BpJTm/X,urrB$LmI'?Fk@+Dk>4[=FJcDAB"nPmt!+P,BmJlPSeieN~> -!BU8Qkl@9errAU@l0dd>j'Vie>4[=FJcDAB"nPmt!+=i -!B:&NirG%NrrA"/j6kq2h-L']>4[=FJcDAB"nPmt!++K4j8\-?_`*)~> -!BpJTm/X,urrB$LmHj3CS.#B -!BU8Qkl@9errAU@l0RX;R1''9eUdaOs.TGqeK"VuR=XW$klK'jJ,~> -!B:&NirG%NrrA"/j6Ye/PmdX5eUdaOs.TGqeK"VuQ%@uoirR%VJ,~> -!BpJTm/X,urrB$LmHa-CaXR8sQ2Z@7JcDSH"oabn!%Q*AmJQ>PeieN~> -!BU8Qkl@9errAU@l0IR;`[LloQ2Z@7JcDSH"oabn!%Gp=l29cHc8pI~> -!B:&NirG%NrrA"/j6P_/^aK0hQ2Z@7JcDSH"oabn!%>X6j8@p<_`*)~> -!BpJTm/X,urrB$LmHX'Bl>ck):[ -!BU8Qkl@9errAU@l0@L:k&:;#:[ -!B:&NirG%NrrA"/j6GY.i,&Go:[ -!BpJTm/X,urrB$LmHEp?T+CuA]n-37s/H#$]c-q_T7QD*m/bd$J,~> -!BU8Qkl@9errAU@l0.@7SIbc?]n-37s/H#$]c-q_SUp&$klK'jJ,~> -!B:&NirG%NrrA"/j65M+R1B9:]n-37s/H#$]c-q^R=XDoirR%VJ,~> -!BpJTm/X,urrB$LmH -!BU8Qkl@9errAU@l0%:7c8Ye*Gl!!kJcDkP"o -!B:&NirG%NrrA"/j6,G+a>O#"Gl!!kJcDkP"o -!BpJTm/X,urrB$LmH3d>l?EF31Y%'VJcDqR"k>C/"F03_mJ#uKeieN~> -!BU8Qkl@9errAU@l/q46k&pk-1Y%'VJcDqR"k>C/"ErpYl1aECc8pI~> -!B:&NirG%NrrA"/j6#A*i,]#$1Y%'VJcDqR"k>C/"EWLPj7hR7_`*)~> -!BpJTm/X,urrB$LmH!X-JcE(V"oXAc!$BF9mIfiIeieN~> -!BU8Qkl@9errAU@l/_(4a;t-JcE(V"oXAc!$944l1O9Ac8pI~> -!B:&NirG%NrrA"/j5f5(_]8^_N;\>-JcE(V"oXAc!$/t.j7VF5_`*)~> -!BpJTm/X,urrB$LmGmR;iEcNb52LkjJcE.X"l;EC!FF`9mI]cHeieN~> -!BU8Qkl@9errAU@l/V"3h-9s\52LkjJcE.X"l;EC!F4H3l1F3@c8pI~> -!B:&NirG%NrrA"/j5]/'f3/1T52LkjJcE.X"l;EC!F"*+j7M@4_`*)~> -!BpJTm/X,urrB$LmG[F9W##FCRf7m -!BU8Qkl@9errAU@l/Ck1VAB4ARf7mc8pI~> -!B:&NirG%NrrA"/j5K#%Tb[V;Rf7m -!BpJTm/X,urrB$LmGR@8gJIqN6fWatJcE@^"lhrM!)_L%mIBQEeieN~> -!BU8Qkl@9errAU@l/:e0fM;JI6fWatJcE@^"lhrM!)M6ul1+!=c8pI~> -!B:&NirG%NrrA"/j5Ar$dS0]A6fWatJcE@^"lhrM!):mmj72.1_`*)~> -!BpJTm/X,urrB$LmG@46S.Yf2PPp(4JcELb"oXVo!"tfQmI0ECeieN~> -!BU8Qkl@9errAU@l/(Y.R1TE.PPp(4JcELb"oXVo!"kWMl0mj;c8pI~> -!B:&NirG%NrrA"/j5/f"Pn=!*PPp(4JcELb"oXVo!"kKIj6u"/_`*)~> -!BpJTm/X,urrB$LmG7.5fMDPJ4P55bJcERd"kYp;!)V=!mI'?BeieN~> -!BU8Qkl@9errAU@l.tS-e4ouD4P55bJcERd"kYp;!)D$pl0dd:c8pI~> -!B:&NirG%NrrA"/j5&`!cV+<=4P55bJcERd"kYp;!)1^ij6kq._`*)~> -!BpJTm/X,urrB$LmG%"3UDNt:LAQQ%JcE^h"oF#[!#VJ^mHj3@eieN~> -!BU8Qkl@9errAU@l.bG+TGRY7LAQQ%JcE^h"oF#[!#VA[l0RX8c8pI~> -!B:&NirG%NrrA"/j4iStS/2/2LAQQ%JcE^h"oF#[!#M/Vj6Ye,_`*)~> -!BpJTm/X,urrB$LmFpq2hHU']/]rYEJcEdj"j/Cs!F4K4mHa-?eieN~> -!BU8Qkl@9errAU@l.YA*g0+LW/]rYEJcEdj"j/Cs!F"3.l0IR7c8pI~> -!B:&NirG%NrrA"/j4`MseQ;hP/]rYEJcEdj"j/Cs!Edm'j6P_+_`*)~> -!BpJTm/X,urrB$LmF^e0^)m=VB'k0LJcEpn"mon'!$Aq+mHO!=eieN~> -!BU8Qkl@9errAU@l.G5(],gqRB'k0LJcEpn"mon'!$8b'l07F5c8pI~> -!B:&NirG%NrrA"/j4NAq[N,>LB'k0LJcEpn"mon'!$/M!j6>S)_`*)~> -!BpJTm/X,urrB$LmFU_0j`1P*'qkPWs+13rrs&Iq'`\GYjalg_m/bd$J,~> -!BU8Qkl@9errAU@l.>/(iG\r#'qkPWs+13rrs&Iq'`\DViIU7WklK'jJ,~> -!B:&NirG%NrrA"/j4E;qgMI)o'qkPWs+13rrs&Iq'`\DSgO\DKirR%VJ,~> -!BpJTm/X,urrB$LmFCS-a?0G&2qW]]JcF-t"kYa6!'J>RmH3d:eieN~> -!BU8Qkl@9errAU@l.,#%`B+&"2qW]]JcF-t"kYa6!'A/Nl/q42c8pI~> -!B:&NirG%NrrA"/j43/n^cDGq2qW]]JcF-t"kYa6!'7oHj6#A&_`*)~> -!BpJTm/X,urrB$LmF:M-m$JLf"`a!^s+14#rs%q3"TT:)m"+Qcm/bd$J,~> -!BU8Qkl@9errAU@l."r%k`lk_"`a!^s+14#rs%q3"TT:&k^i![klK'jJ,~> -!B:&NirG%NrrA"/j4*)nifOoT"`a!^s+14#rs%q3"TT7!idp.OirR%VJ,~> -!BpJTm/X,urrB$LmF(A+jCJ>l(7P2Qs+14'rs&Fj('"AHjFQ^Ym/bd$J,~> -!BU8Qkl@9errAU@l-ef#i*ucf(7P2Qs+14'rs&Fj('"AFi.:.QklK'jJ,~> -!B:&NirG%NrrA"/j3lrlg0k!^(7P2Qs+14'rs&Fj('"ADg4A;EirR%VJ,~> -!BpJTm/X,urrB$LmEk5(_)_Pr1;e\CJcFL)"iE(q!'7rImG[F5eieN~> -!BU8Qkl@9errAU@l-SYu^,Z/n1;e\CJcFL)"iE(q!'.cEl/Ck-c8pI~> -!B:&NirG%NrrA"/j3Zfi\MsQh1;e\CJcFL)"iE(q!'%N?j5K#!_`*)~> -!BpJTm/X,urrB$LmEY)&SK%V0DX`5WJcFX-"n6C0!$%P\mGI:3eieN~> -!BU8Qkl@9errAU@l-AMsRi;>-DX`5WJcFX-"n6C0!#qDYl/1_+c8pI~> -!B:&NirG%NrrA"/j3HZgQQ#o)DX`5WJcFX-"n6C0!#q8Uj58kt_`*)~> -!BpJTm/X,urrB$LmEP#&jE:h0#^,Qds+141rs%n6#QP0SjFQ^Tm/bd$J,~> -!BU8Qkl@9errAU@l-8Gsi,f8*#^,Qds+141rs%n6#QP0Qi.:.LklK'jJ,~> -!B:&NirG%NrrA"/j3?Tgg2RE!#^,Qds+141rs%n6#QP0Ng4A;@irR%VJ,~> -!BpJTm/X,urrB$LmE=l$d8U,H'9;j=s+145rs&7Y'*&&4d=L]?m/bd$J,~> -!BU8Qkl@9errAU@l-&;qc;O`D'9;j=s+145rs&7Y'*&&3c@P68klK'jJ,~> -!B:&NirG%NrrA"/j3-HeaADs<'9;j=s+145rs&7Y'*&&1aFWC,irR%VJ,~> -!BpJTm/X,urrB$LmE+`"^HDPs,,bEks+149rs&J#+ohU+^Obe+m/bd$J,~> -!BU8Qkl@9errAU@l,i/o]0$&n,,bEks+149rs&J#+ohU*]7K5#klK'jJ,~> -!B:&NirG%NrrA"/j2p -!BpJTm/X,urrB$LmDnStW$q]H1:Dc6JcG-;"h$/d!%FjtmF^e,eieN~> -!BU8Qkl@9errAU@l,W#lVC2EE1:Dc6JcG-;"h$/d!%=^ql.G5$c8pI~> -!B:&NirG%NrrA"/j2^0`TdKg?1:Dc6JcG-;"h$/d!%4Ikj4NAm_`*)~> -!BpJTm/X,urrB$LmDeMtl]E"a!'@rHs+14?rs$5"!!!jul[eHTm/bd$J,~> -!BU8Qkl@9errAU@l,MrlkDpG[!'@rHs+14?rs$5"!!!jskCMmLklK'jJ,~> -!B:&NirG%NrrA"/j2U*`iJSKP!'@rHs+14?rs$5"!!!gniIU%@irR%VJ,~> -!BpJTm/X,urrB$LmDSArjb"3H!(=nZs+14Crs$P4!!![bjalgLm/bd$J,~> -!BU8Qkl@9errAU@l,;fjiIMXB!(=nZs+14Crs$P4!!![`iIU7DklK'jJ,~> -!B:&NirG%NrrA"/j2Bs^gO9e9!(=nZs+14Crs$P4!!![]gO\D8irR%VJ,~> -!BpJTm/X,urrB$LmDA5pid219!*J$-s+14Grs%7\!!!OVidpLGm/bd$J,~> -!BU8Qkl@9errAU@l,)ZhhK]V3!*J$-s+14Grs%7\!!!OThLXq?klK'jJ,~> -!B:&NirG%NrrA"/j20g\fQI`)!*J$-s+14Grs%7\!!!LPfR`)3irR%VJ,~> -!BpJTm/X,urrB$LmD/)nh/Nf&!(b%Zs+14Krs$D4!!!CHh1=t@m/bd$J,~> -!BU8Qkl@9errAU@l+lNfg2@?!!(b%Zs+14Krs$D4!!!CFg4AM9klK'jJ,~> -!B:&NirG%NrrA"/j1s[Ze8,Km!(b%Zs+14Krs$D4!!!CCe:HZ-irR%VJ,~> -!BpJTm/X,urrB$LmCqrlg275t!(">Ms+11S^-M`!$?"RKmEb/#eieN~> -!BU8Qkl@9errAU@l+ZBdenbZn!(">Ms+11S^-M`!$>e:El-JSpc8pI~> -!B:&NirG%NrrA"/j1aOXctWmf!(">Ms+11S^-M`!$>Rq=j3Q`d_`*)~> -!BpJTm/X,urrB$LmC_fkgiX,-!$@a1JcCN*#QC58!!!OPgk"k;m/bd$J,~> -!BU8Qkl@9errAU@l+H6cflIZ(!$@a1JcCN*#QC58!!!ONfn&D4klK'jJ,~> -!B:&NirG%NrrA"/j1OCWdr5cs!$@a1JcCN*#QC58!!!LJdt-Q(irR%VJ,~> -!BpJTm/X,urrB$LmCMZihg6":!%X];JcCZ.#PjuB!!![Zhgt1 -!BU8Qkl@9errAU@l+6*agNaD3!%X];JcCZ.#PjuB!!!XWgO\V4klK'jJ,~> -!B:&NirG%NrrA"/j1=7UeohZ+!%X];JcCZ.#PjuB!!!XTeq)l)irR%VJ,~> -!BpJTm/X,urrB$LmC;Ngl&-/S!#pdaJcCf2#OmQh!!!Xil%/6Dm/bd$J,~> -!BU8Qkl@9errAU@l+#s_jbXQL!#pdaJcCf2#OmQh!!!Ufjal[ -!B:&NirG%NrrA"/j1++Shh;XB!#pdaJcCf2#OmQh!!!Ubhgsh0irR%VJ,~> -!BpJTm/X,urrB$LmC)Beka*e"!!n#BJcCr6#Om-I!!"O9k^i-Am/bd$J,~> -!BU8Qkl@9errAU@l*fg]jHM+o!!n#BJcCr6#Om-I!!"L5jFQR9klK'jJ,~> -!B:&NirG%NrrA"/j0mtQhiT>f!!n#BJcCr6#Om-I!!"I1hgsh.irR%VJ,~> -!BpJTm/X,urrB$LmBl6cm&N;M!!?*4JcD):#JO%;!!#3`m"+QCm/bd$J,~> -!BU8Qkl@9errAU@l*T[[kbpWE!!?*4JcD):#JO%;!!#0\k^i!;klK'jJ,~> -!B:&NirG%NrrA"/j0[hOihSX9!!?*4JcD):#JO%;!!#*Vidp./irR%VJ,~> -!BpJTm/X,urrB$LmBQ$`^K(I;!%jZ4JcD;@#PFN;!!!.&^Obdhm/bd$J,~> -!BU8Qkl@9errAU@l*9IX]2\t6!%jZ4JcD;@#PFN;!!!.%]7K4`klK'jJ,~> -!B:&NirG%NrrA"/j0@VL[o*>/!%jZ4JcD;@#PFN;!!!."[t3SVirR%VJ,~> -!BpJTm/X,urrB$LmB>m^fQ\55!!dH+JcDGD#O$(2!!!j\fR`G*m/bd$J,~> -!BU8Qkl@9errAU@l*'=Ve92Z/!!dH+JcDGD#O$(2!!!jZe:Hl"klK'jJ,~> -!B:&NirG%NrrA"/j0.JJcZ9m&!!dH+JcDGD#O$(2!!!gVc[k,lirR%VJ,~> -!BpJTm/X,urrB$LmB,a]kaOF0!!,B`pjrICrs8Ct5lgrc24Nf\mCqrgeieN~> -!BU8Qkl@9errAU@l)j1UjHqb(!!,B`pjrICrs8Ct5lgrc1mm?Tl+ZB_c8pI~> -!B:&NirG%NrrA"/j/q>Ihions!!,B`pjrICrs8Ct5lgrc1R-dJj1aOS_`*)~> -!BpJTm/X,urrB$LmAfOY^Kh*F!#9V/JcDeN#MF26!!!:1^Obdam/bd$J,~> -!BU8Qkl@9errAU@l)NtQ]3>O@!#9V/JcDeN#MF26!!!:/]7K4YklK'jJ,~> -!B:&NirG%NrrA"/j/V,E[oit:!#9V/JcDeN#MF26!!!:-[t3SOirR%VJ,~> -!BpJTm/X,urrB$LmATCRi/K>f!!56Qo7?qHrrVe_48o3]/WJ\>mCDTbeieN~> -!BU8Qkl@9errAU@l)7l+-$Zc8pI~> -!B:&NirG%NrrA"/j/Cu>f7tmU!!56Qo7?qHrrVe_48o3].u2`-j141N_`*)~> -!BpJTm/X,urrB$LmA91U]NkjE!")rArIP!Xrs8S7>7(?1$=1;qmC)B_eieN~> -!BU8Qkl@9errAU@l)!VM\Q]C@!")rArIP!Xrs8S7>7(?1$ -!B:&NirG%NrrA"/j/(cAZrm_9!")rArIP!Xrs8S7>7(?1$ -!BpJTm/X,urrB$LmA'%SiflM*!!!UcmXbDMrs8%I&HDe34-\`UmBl6]eieN~> -!BU8Qkl@9errAU@l(dJKhNBo#!!!UcmXbDMrs8%I&HDe33g/?Nl*T[Uc8pI~> -!B:&NirG%NrrA"/j.kW?fT%rm!!!UcmXbDMrs8%I&HDe33KDaCj0[hI_`*)~> -!BpJTm/X,urrB$Lm@`hJcZgT3!!4^)gO]C@rrUr./H,VN+F)4`mBQ$ZeieN~> -!BU8Qkl@9errAU@l(I8Bb]Y-.!!4^)gO]C@rrUr./H,VN+Ekt[l*9IRc8pI~> -!B:&NirG%NrrA"/j.PE6a)`@%!!4^)gO]C@rrUr./H,VN+*5JRj0@VF_`*)~> -!BpJTm/X,urrB$Lm@EVG[;-*J!!5$;j+76NrrV5?2?!RW$#?r"mB5gWeieN~> -!BU8Qkl@9errAU@l(.&?Z>'^F!!5$;j+76NrrV5?2?!RW$#6bsl)s7Oc8pI~> -!B:&NirG%NrrA"/j.533Y%J(?!!5$;j+76NrrV5?2?!RW$"pDlj0%DC_`*)~> -!BpJTm/X,urrB$Lm@3JLkbqMk!!!$ZM;!O\c2S+(M)YM9!"Du-k^i-&m/bd$J,~> -!BU8Qkl@9errAU@l'poDjJGod!!!$ZM;!O\c2S+(M)YM9!"Dr*jFQQsklK'jJ,~> -!B:&NirG%NrrA"/j.#'8hk -!BpJTm/X,urrB$Lm?m8CkFkZXrW!$OIEqhCs4.,Orm#pCrW!$,:SHs&mA]IReieN~> -!BU8Qkl@9errAU@l'U];j.8sOrW!$OIEqhCs4.,Orm#pCrW!$,9qLBrl)EnJc8pI~> -!B:&NirG%NrrA"/j-\j/h3ptCrW!$OIEqhCs4.,Orm#pCrW!$,9:F[fj/M&>_`*)~> -!BpJTm/X,urrB$Lm?R&@jJ#ZdrW!$BC:3ees4dPUpU+`XrW!$3 -!BU8Qkl@9errAU@l':K8i1F![rW!$BC:3ees4dPUpU+`XrW!$2 -!B:&NirG%NrrA"/j-AX,g7(tNrW!$BC:3ees4dPUpU+`XrW!$2;OcBkj/1i;_`*)~> -!BpJTm/X,urrB$Lm?6i=kcJ81rW!$,8sJ1`s5Et[hNUV=rW!$;@BJaEmA'%LeieN~> -!BU8Qkl@9errAU@l&t95jJlT)rW!$,8sJ1`s5Et[hNUV=rW!$;@&i:=l(dJDc8pI~> -!B:&NirG%NrrA"/j-&F)hkjZqrW!$,8sJ1`s5Et[hNUV=rW!$:?)HM1j.kW8_`*)~> -!BpJTm/X,urrB$Lm>gQ9^3244rW!$UD6`\`s69Oco -!BU8Qkl@9errAU@l&P!1]6#_.rW!$UD6`\`s69Oco -!B:&NirG%NrrA"/j,W.%[W*r%rW!$UD6`\`s69Oco -!BpJTm/X,urrB$Lm>L?6fTf8DrW!'(3./L9JcG9?"Sf`Z3!B3\!tS4nfR`F[m/bd$J,~> -!BU8Qkl@9errAU@l&4d.e< -!B:&NirG%NrrA"/j,;q"c]:a0rW!'(3./L9JcG9?"Sf`Z3!B3\!tJ"cc[k,HirR%VJ,~> -!BpJTm/X,urrB$Lm>('2\T^":rW!'.6%6H -!BU8Qkl@9errAU@l%eL*[WOP5rW!'.6%6H -!B:&NirG%NrrA"/j+lXsZ#V`*rW!'.6%6H -!BpJTm/X,urrB$Lm=aj0ii$TB!WE'%"#Y,'pjrGJponcr"9&9'!@qo`idpK^m/bd$J,~> -!BU8Qkl@9errAU@l%J:(hPOs9!WE'%"#Y,'pjrGJponcr"9&9'!@hc[hLXpVklK'jJ,~> -!B:&NirG%NrrA"/j+QFqfV)k*!WE'%"#Y,'pjrGJponcr"9&9'!@_TRfR`(JirR%VJ,~> -!BpJTm/X,urrB$Lm=FX.mFn=M1'RUV" -!BU8Qkl@9errAU@l%/(&l.;SB0a7LU" -!B:&NirG%NrrA"/j+64oj3aB/0Eh=S" -!BpJTm/X,urrB$Lm=F[&m0)RSG";f8!!NBa?]VtmQ2_$Y^Q2__!Wk(2oZm/bd$J,~> -!BU8Qkl@9errAU@l%/*sklg"HF@QN5!!NBa?]VtmQ2_$Y^Q2__!W -!B:&NirG%NrrA"/j+67girn/8ECC$/!!NBa?]VtmQ2_$Y^Q2__!W -!BpJTm/X,urrB$Lm=F["m02grQ!uBMqu?mB:Pc($r1X,or7%d':ETK7"U-PgQ,i3Am>:32eieN~> -!BU8Qkl@9errAU@l%/*oklp7gP@-!Hqu?mB:Pc($r1X,or7%d':ETK7"U-MdPJlX8l&"X*c8pI~> -!B:&NirG%NrrA"/j+67cis"DVO'XC@qu?mB:Pc($r1X,or7%d':ETK7"U$D`O2'Y)j,)ds_`*)~> -!BpJTm/X,urrB$Lm=FZrm02gbNF+IHqu?p'-rG;c_ -!BU8Qkl@9errAU@l%/*jklp7WMI&%Cqu?p'-rG;c_ -!B:&NirG%NrrA"/j+67^is"DGLKcJ -!BpJTm/X,urrB$Lm=FZmm0;mtS8Ce?!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHI88Xm -!BU8Qkl@9errAU@l%/*ekm$=iR;5;9!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHI7r+O3kCMlK -l2TuKc8pI~> -!B:&NirG%NrrA"/j+67Yis+JXQ"`Z0!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHH7;8%&iIU$? -j8\-?_`*)~> -!BpJTm/X,urrB$Lm=FZgm0;ajS97IU"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQW96HcA -kCN#OmJ6,MeieN~> -!BU8Qkl@9errAU@l%/*_km$4`R<(tO"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQW8opE8 -jFQQHl1sQEc8pI~> -!B:&NirG%NrrA"/j+67Sis+AOQ#K8E"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQV88sj* -hLX^ -!BpJTm/X,urrB$Lm=FZ`m0D=SR!2Us*s20:0+KNl7oj5FL6eR:\&$59h<4(knauSPrVcTeo^VA7 -kM=V0_7-SAQA0Qp<_#)"%efr.!Zs[/GF5nnJaJ$Uo'HJ/4b*~> -!BU8Qkl@9errAU@l%/*Xkm,bHQ$$+l*Wl'90+KNl7oj5FL6eR:\&$59h<4(knauSPrVcTeo^VA7 -kM=V0_7-SAQA0Qp<_#)"%efr.!ZjR,Fd9AbJa%aMo'$2#3e.~> -!B:&NirG%NrrA"/j+67Lis3o7O`FA`* -!BpJTm/X,urrB$Lm=FZYm0`43]V:0u=@=b["47)U!u`d[=D`hf][uM$m=FZjm/bd$J,~> -!BU8Qkl@9errAU@l%/*QkmHY'\Y"Rk<^JDV"47)U!uW^X -!B:&NirG%NrrA"/j+67EisOek[$uV\<'`&Q"47)U!uWXU<,$oQ[*IZ^j+67VirR%VJ,~> -!BpJTm/X,urrB$Lm=FZNm4[>7\Z20[IrA^q91(]o-m'3<&.JsO"TSN+#7:nO',DZ<0f_To -!BU8Qkl@9errAU@l%/*FkqCc,[\oRPI;N=k8jYKk-Qa*;%h/jN"TSN+#7:nN',DZ;0K;Bk -!B:&NirG%NrrA"/j+67:j"JrqZ(mV@H"pS^83f*e-6 -!BpJTmCK9Jm=FYUm=FYUmJcJReieN~> -!BU8Ql+3F:l%/)Ml%/)Ml2KoJc8pI~> -!B:&Nj1:2#j+66Aj+66Aj8S'>_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6eq)D'eq)D'eu@4#4b*~> -!BU73c@O8lc@O8lcDf(h3e.~> -!B:%0_h#^V_h#^V_l:NR2h1~> -JN\QIJN\QIJN]knJ,~> -JNA?CJNA?CJNBYhJ,~> -JN&-=JN&-=JN'GbJ,~> -%%EndData -showpage -%%Trailer -end -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/db4_dfs.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/db4_dfs.eps deleted file mode 100755 index f2fef786f3..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/db4_dfs.eps +++ /dev/null @@ -1,2801 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner -%%Title: db4_dfs.eps -%%CreationDate: Thu Jun 7 15:18:51 2007 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 14 14 546 527 -%%EndComments -%%BeginProlog -% Use own dictionary to avoid conflicts -10 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -14.173228346456694 14.173228346456694 translate -% Translate to begin of first scanline -0 512.00137876062354 translate -531.63779527559063 -512.00137876062354 scale -% Image geometry -731 704 8 -% Transformation matrix -[ 731 0 0 704 0 0 ] -% Strings to hold RGB-samples per scanline -/rstr 731 string def -/gstr 731 string def -/bstr 731 string def -{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} -true 3 -%%BeginData: 148922 ASCII Bytes -colorimage -quD:2JN\QIJN\QIYW_maJ,~> -quD:/JNA?CJNA?CYWD[^J,~> -quD:,JN&-=JN&-=YW)I[J,~> -rW)s]JcC<$JcC<$JcDtSs#p>]J,~> -rW)sZJcC<$JcC<$JcDtSs#U,ZJ,~> -rW)sWJcC<$JcC<$JcDtSs#9oWJ,~> -rr<*`s8RZ=Ja\0YJa\0YYj_Vl!^-M`J,~> -rr<*]s8RZ:Ja@sSJa@sSYjDDi!]g;]J,~> -rr<*Zs8RZ4J`_OGJ`_OGYibuc!]L)ZJ,~> -!WYC`JaJ$UJaJ$UJaMUeo8ie9o8ie9o8ik;!nKL7J,~> -!WY:]Ja.gOJa.gOJa2C_o7Qr*o7Qr*o7R#,!mWh,J,~> -!WY1ZJ`D=AJ`D=AJ`GnQo5OTeo5OTeo5OZg!lHqsJ,~> -!WYC`Ja@sSJa@sSJaDRd!0?aO!K[9[li<+ -!WY:]J`q[KJ`q[KJ`u:\!/'nC!JCFOkQ$8,rrIcProa?7oD]#Is6/[l3WO[~> -!WY1ZJ`21=J`21=J`5eN!-%Q0!HA) -!BpI6l@J5Ol@J5OlK@F5O8nh="mV0KlAtu:m02d9s6>[FoBcbIO8nM1eieN~> -!BU73k(2ZGk(2ZGk3(k-KE(Q-"m1I;k(E^*klp4%s5nt6oB?JAKE()rc8pI~> -!B:%0hgs[9hgs[9hriktE<#Oi"lF;!hf/Veis"=Zs5.eqoA^&4E<"hQ_`*)~> -!BpJ\kl>etFTI3YJa%aMJa%aMJa*'r!K[9PlNQO6rooLDoBQSEO8eC)s7>O\l&Yi.l./"J~> -!BU8Yj8a8oGl`TWJ`MCCJ`MCCJ`Q^h!JCFDk69q!roA_3oB-;CXjFdHmjN]f:~> -!B:&Vg]2EgHi\iPJ_Yh3J_Yh3J_^.X!HA)1i1Rgi38Jgqu($~> -!BpJ\k5\'G0*+GsJ`hUI`97.#s6'C^J`hUI^?5NXs7>LZkE#T)O8nh:"m:sFkE#Z7l3?F4rTE@p -4b*~> -!BU8YiW*!N9*!Xridp+-ir9#Yir9"0idp+'iW4]3oAp/8KDje^s7>=Uie.3hKE(Q)#3(:6io86E -J,~> -!B:&Vg&PXUB`V,ZJ_G\/`7k4ks4[JQJ_G\/^=iU,s7>+Og2R#EE<#Oe"kmqog2R)`hZheRrS#uC -2h1~> -!BpJ\jpmm?j5oFelKmp,nac=$h1=^>k0rJh!;YdW!<;3]!<;3]!.j9`k/-6]O8nh8"m1mEk)]QA -kkP5XkQU+0rT91@roj@^rTO7]roaRKO8\5'eieN~> -!BU8Yi!u78j5oFelKmp,nFH4#f7Dk2i7$W\!;YRQ!<;!W!<;!W!.j'Zi54CQKE(Q("lP%2i.M(/ -jS8fTj9=Ior8<5-roF(ZrT*tYro=:AKDaZcc8pI~> -!B:&VfFFD0j5oIflKdj+nFH4!d"0i#f[JLL!;Y:I!<:^O!<:^O!.idRfYZ8AE<#Oc"k[elfPpli -h>%'Mh$)GMr7Gugrn[SSrS@JRrnRe2E;\A@_`*)~> -!BpJ\jURg@jQ>Xilg=-0o(2O(gk"Rk!;,CQ!;kmX!.j6_jhg*[O8nh7"m(gCjcBH@kP5,W -k69t.r8j">roa7\s6'@]roXLIO8S,$eieN~> -!BU8Yh[Z19jQ>Xilg=-0nalF&eq)_0hp^K_!;,1K!;k[R!.j$Yhnn7OKE(Q&"lFt1hh1t.iqWTR -iW\4lr83/,ro3nWs5O"Xro+.>KDaWac8pI~> -!B:&Vf++>1jQ>[jlg4'/nalF$c[j]!f@/@O!;+nC!;kCJ!.iaQf>?,?E<#Oa"kR_jf5Uchg\CjK -gBH2Jqq#fernIDPs4dMQrn@Y/E;S8=_`*)~> -!BpJ\jURgAjlbmnm-X93o(;X+gk"Rk!;Y^aJ/e\=OT5CCjT#;BquHcY%HD[Q"<;XGjlHIB -KGjrDjalOCjT1GBoB$5 -!BU8Yh[Z.:jlbjmm-a?4oCVa+eq)_0hp^K_!;YL[HlE27N;rt9hZ*Z6quHcS%Gc.G!ul@ -!B:&Vede52jlbjmm-a?4oCVa)c@OPtf$i4M!;Y1RG8^T/LB%>*ec5^$quHcJ%Ff>8!uc..f%'g$ -HPcj9eq)E%ecBaio@X;uE;J.)s8L[O!;kFL!<1XTeo:K:E<#miqZ-TJ#1dbif%._tJ,~> -!BpJ\j:7^Ak32*rmI'K7o_%s/gO\F:jO<2i!;baeJcJBjdRaE=jQ$:@jQ$:@rT"B2!+t"u!-mSc -!!$0TJ`MCCe)UOjs754RO8J"!s8M'Z!;kgW!<(s]O8J"!s8:sV!;kg\O8J#!eieN~> -!BU8Yh@?(;k32*rmI0Q8o_%s-eUcS.hUC?]!;bO_IK2m_bsqa6hVJ54hVJ54rS@s)!+XSi!-R/T -!!$'LJ_kt7e(t+Xs7>+OhLk[]KE(r.!!)oR!!*#U"l=n.hLkk+hu*QQhZhqiqVL)S3e.~> -!B:&Vede53k32*rmI'K7o_%s,c@OPtf$i4M!;b7WH2pCQ`C0b,f%'g$f%'g$rRMBr!+=)[!-$N? -!!#sAJ_#D'e(+P=s7=hGeo:H9E<#ph!!)oJ!!*#M"kIYgeo:ZefDP^If*9fFq:=-72h1~> -!BpJ\j:7^BkNV=!mdTc*!7'ZM!$((\ -!!(;qjFQC?j8k>AoA^#8O8J"!s8M$Y!;kdV!<2!^jH'3!O8o. -!BU8Yh@?(;kiqF"mdTcr9/o%jM%qVHl)rn[VTqq_;QrS@[0qVHl)r8.APqq_L/qVL)S3e.~> -!B:&VeIJ,3kNV=!mdTc -!BpJ\isqXCkj%O%n+#u@p@nB6g4A:8j4!&g!;b^d"9@B?j50h:j5U+>j5U+>rSn4f!9)tr!!M?B -!!%T1J`G/ -!BU8Yh%$"=kj%O&n+#u@p@nB4e:HG,h:(3[!;bL^!s%'2h:_i/h;&&2h;&&2rS7e_!8H>`!!D'5 -!!%T+J_e`0!JCFDg]cMdq;$]'rnIJRqqM/OrnI\5KDF>Us8CaM!<([Wh1POZh9J'3~> -!B:&Ve./&4kj%O%n+#u@p%S91b^n8peC2qI!;b1U!s$d!eBn6reC4HueC4HurR;/V!7KBF!!Ca# -!!%T"J^i)s!HA)1dfn6?pXF0^rmLiIqpPNFrmM&#E;.k$s8CFD!<(@Ne8Y03eAF4q~> -!BpJ\isq[El0Ia)nFH2Dp\=T9g4A:8j4!&g!;b^d*WX4?j2Cuuj5U+>j5U+>rSn5&!6sQJ!$(%Z -!!%T1J`G/ -!BU8Yh%$%?l0Ia)nF?,Cp\=T7e:HG,h:(3[!;bL^*<Pqq;#Mrn7P3KD=8Ts8LaO!<:dP!<1[Vh1PLYh9J'3~> -!B:&Ve./)6l0Ia)nFH2Dp\FZ6b^n8peC2qI!;b1U*!!P!e@5JYeC4HueC4HurR;/j!5I$t!#jA: -!!%T"J^i)s!HA)BDrm:o!E;%e#s8LFF!<:IG!<1@Me8Y-2eAF4q~> -!BpJ\iXVUFlg4'.nalDHq"afio8NPJ,~> -!BU8Yg^]q?lg4'/nalGIp\F]:dt-;*gsb'Y!;bI^I/ld\bXVX5gtVl0gtW;<^]*!qB`MVl@K:H( -g].>*gk"8.g]<'-rn7)Irn.J1KD4/Rs8L^I!<1XTgk5@VKE(r(rrE#NrrE&O#2Fk*gt^19J,~> -!B:&Vdgi#7lg4'.nalDHq"af9bCS,ne'leG!;b.UGQ:.K_aFJ)e'e9se'e^*\,Oh`AH6&\?3"ik -df9B!dt,uqdfFFfrm1B?rm(bsE:q\!s8L@?!<1:Jdr>!/E<#p`rrE#DrrE&E#1IPae'l2nJ,~> -!BpJ\iWa1GI!pElIf=isJ-(:Bg4A77imZo`!<1suI2`;6NW9(=iW&u):!K[9Ph?Do"pu7A7oA0Z1O8.^qs7>(OifEloimp8C~> -!BU8Yg]hM?H[L3hIK"]qIfb.=e:HD+gsb'T!<1aoH5Zl0M?!Y3g].?0gis;/!8QA^B,:XfE8'+& -!!%T*J_\Z.!JCFDf*0r^pY:E$o@F0$KD4/Rs7=hHgk5@Vgs.s2~> -!B:&VdfjB0H$Xd`rI"Wn!e+t0J^]2!e'n-nrmMm1)$;"7!!(Ks!!(KsEt&*Le'lWP('5=hdF6PE -!.iUMe'ZVFE<#OS"k.G_dr>?YbluR8o[@dZo?@KgE:hW._`*)~> -!BpJ\huML(ecFC[J`)+;J`)+;J`-F`!K[9Pg]cVspu%55o@sN-O8.Xos7>"Mi/dZki7:&A~> -!BU8Yg&TXpd/_jNg4@t/g4@t/gABS)KE(Po"knV&g4TFsecjc[p=b0!o@=-"KD+$Qc8pI~> -!B:&VciD5]`rX9-J^AtpJ^AtpJ^F;@!HA)1b6?73o?_IVo?. -!BpI6hLXO7hLXO7hWN_rO8nh+"l>=7hN.^.gBHGppYLu2o@jK+O8%MfeieN~> -!BU73fR_\+fR_\+f]UlfKE(Pm"k\J#fRs4qe-4KWp"4oso@*usKD!mLc8pI~> -!B:%0c@O8lc@O8lcKEIRE<#OO"jV)Xc>`gTaT]t/o$24So>q3^E:V<"_`*)~> -!BpI6h1=C5h1=C5h<*MnO7U^!O8&Y0!0?`u!K[!Sh#NN-ciK4%rnRV+4b*~> -!BU73eq)D'eq)D'f&kN`KCd.bKD#5p!/'ma!JC(Eec:?oa8pqdrmh+q3e.~> -!B:%0b^muhb^muhbi[+LE:^[BE:NqO!-%PA!H@T.bQ)VR])cm@rlbD\2h1~> -!BpI6gO\+1gO\+1gZI5jp[aFGp\ihHp[aFGp\ihHp[aFGp\ihIeieN~> -!BU73e:H,#e:H,#eE56\p%*e9p&3A?p%*e9p&3A?p%*e9p&3A@c8pI~> -!B:%0aaqQbaaqQbal^\Fnag]"nbpQ0nag]"nbpQ0nag]"nbpQ1_`*)~> -!BpI6fn%h-fn%h-g#^oYp\WY8p\WY8p\`\FeieN~> -!BU73dXfhtdXfhtdcJpKp&!2/p&!2/p&*5=c8pI~> -!B:%0a+;9^a+;9^a5tA5nb^Aunb^AunbgE._`*)~> -!BpI6eq)D'eq)D'eu@4#4b*~> -!BU73c@O8lc@O8lcDf(h3e.~> -!B:%0_h#^V_h#^V_l:NR2h1~> -!'Pn%JXV.YJXV.YW1!]LJ,~> -!'5[kJW>;AJW>;AW/^j=J,~> -!&oIVJUE#rJUE#rW-eS(J,~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpJTm=FVTm"+MSm"+NAm.BZGeieN~> -!BU8Ql%/&Lk^hrKk^hs9kk+*?c8pI~> -!B:&Nj+63@idp*?idp+-iq273_`*)~> -!BpJTm=FVTm"+MSm"+NAm.BZGeieN~> -!BU8Ql%/&Lk^hrKk^hs9kk+*?c8pI~> -!B:&Nj+63@idp*?idp+-iq273_`*)~> -!BpJTm=FVTm"+MSm"+NAm.BZGeieN~> -!BU8Ql%/#KkCMfIkCMg7kOe!>c8pI~> -!B:&Nj+60?iITs=iITt+iUl.2_`*)~> -!BpJTm=FSSl[eAQl[eB?lh'QFeieN~> -!BU8Ql%/#KkCMfIkCMg7kOe!>c8pI~> -!B:&Nj+60?iITs=iITt+iUl.2_`*)~> -!BpJTm=FSSl[eAQl[eB?lh'QFeieN~> -!BU8Ql%/#KkCMfIkCMg7kOe!>c8pI~> -!B:&Nj+6->i.9g;i.9h)i:Q%1_`*)~> -!BpJTm=FSSl[eAQl[eB?lh'QFeieN~> -!BU8Ql%.uJk(2ZGk(2[5k4Im=c8pI~> -!B:&Nj+6->i.9g;i.9h)i:Q%1_`*)~> -!BpJTmI0 -!BU8Ql0ma7!.j9`k(2ZGk(2[Hk4Im=c8pI~> -!B:&Nj6tk*!.j$Yhgs[9hgs\:ht5q0_`*)~> -!BpJTmIKNE!:&hLJa.gOJa.gOJa1kPo^)\14b*~> -!BU8Ql13p -!B:&Nj7;(0!8lZ6J_u%9J_u%9J`#):o]#ti2h1~> -!BpJTmJ,rD!<)-^!.jBcl%/)Ml%/*Nl1F?DeieN~> -!BU8Ql1jB -!B:&Nj7qL/!<(aS!.j!XhLXO7hLXP8hXoh/_`*)~> -!BpJTmJ,oG!;YjZ!.jBcl%/)Ml%/*Nl1F?DeieN~> -!BU8Ql1j<>!;Y[U!.j3^jFQBCjFQCDjRh[;c8pI~> -!B:&Nj7qI2!;YIO!.j!XhLXO7hLXP8hXoh/_`*)~> -!BpJTmJ,oG!;u'h!9r_Jl07>J'*qCiJa%aMJa%aMJa)(Vo^)\14b*~> -!BU8Ql1j<>!;tmc!9E2@jQ,98'*q@cJ`MCCJ`MCCJ`P_Lo]ZD%3e.~> -!B:&Nj7qF1!;tX\!8ZH2h;-du&dV.YJ_bn5J_bn5J_f5>o]#ti2h1~> -!BpJTmJ,lF!;u$g!9iVHkid1SceMT0J`q[KJ`q[KJ`u"To^)\14b*~> -!BU8Ql1j9=!;tjb!9<)>j5Y5Eb1BX!J`D=AJ`D=AJ`GYJo]ZD%3e.~> -!B:&Nj7qF1!;tX\!8ZH2h;*'5`R7[hJ_bn5J_bn5J_f5>o]#ti2h1~> -!BpJTmJ,oC!"A&kki`$1kT%P)kgL8tk^hrKk^hrKkhkUrm/bd$J,~> -!BU8Ql1j<:!"@lfj5U."iuGhoj3JEjj+66Aj+66Aj58nhklK'jJ,~> -!B:&Nj7qF-!"@W_gtVnbg`*fZgrL1\gk"73gk"73gu$oZirR%VJ,~> -!BpJTmJ,lF!;u$b!9iVHki`0J!!!%Nk^hrKk^hrKkhkUrm/bd$J,~> -!BU8Ql1j9=!;tj]!9<)>j5U:@!!!%Nj+66Aj+66Aj58nhklK'jJ,~> -!B:&Nj7q@/!;tRU!8H6.gY2i/!!!%NgO\+1gO\+1gY^cXirR%VJ,~> -!BpJTmJ,iE!;u!b!9`MFkN -!BU8Ql1j6GDo]ZD%3e.~> -!B:&Nj7q@/!;tRV!8H6.gY3UaJ_Pb1J_Pb1J_Sr6o]#ti2h1~> -!BpJTmJ,iE!;u!f!9`MFkN@(Wa5am0J`hUIJ`hUIJ`kqRo^)\14b*~> -!BU8Ql1j6SHo]ZD%3e.~> -!B:&Nj7q=.!;tOY!8?-,g=gR3][sM_J_G\/J_G\/J_K#8o]#ti2h1~> -!BpJTmJ,iE!;u!f!9`MFkNCrP*!IdZJ`hUIJ`hUIJ`kqRo^)\14b*~> -!BU8Ql1j3;!;td`!9)l:iSi[;)[%RSJ`21=J`21=J`5MFo]ZD%3e.~> -!B:&Nj7q=.!;tOY!8?-,g=k2#)[%LLJ_G\/J_G\/J_K#8o]#ti2h1~> -!BpJTm=FDNk(2ZGk(2[5k4J$AeieN~> -!BU8Ql%.fEiITs=iITt+iUl@8c8pI~> -!B:&Nj+5m7fn%h-fn%hpg%=;*_`*)~> -!BpJTm=FDNk(2ZGk(2[5k4J$AeieN~> -!BU8Ql%.cDi.9g;i.9h)i:Q77c8pI~> -!B:&Nj+5m7fn%h-fn%hpg%=;*_`*)~> -!BpJTm=FDNk(2ZGk(2[5k4J$AeieN~> -!BU8Ql%.cDi.9g;i.9h)i:Q77c8pI~> -!B:&Nj+5j6fR_\+fR_\nf_"2)_`*)~> -!BpJTm=FAMjalNEjalO3jn.p@eieN~> -!BU8Ql%.cDi.9g;i.9h)i:Q77c8pI~> -!B:&Nj+5j6fR_\+fR_\nf_"2)_`*)~> -!BpJTm=FAMjalNEjalO3jn.p@eieN~> -!BU8Ql%.`Chgs[9hgs\'ht6.6c8pI~> -!B:&Nj+5g5f7DP)f7DPlfC\)(_`*)~> -!BpJTm=F>LjFQBCjFQC1jRhg?eieN~> -!BU8Ql%.`Chgs[9hgs\'ht6.6c8pI~> -!B:&Nj+5g5f7DP)f7DPlfC\)(_`*)~> -!BpJTm=F>LjFQBCjFQC1jRhg?eieN~> -!BU8Ql%.]BhLXO7hLXP%hXp%5c8pI~> -!B:&Nj+5d4eq)D'eq)Djf(@u'_`*)~> -!BpJTm=EE2b(7]db(7^Rb4P'%eieN~> -!BU8Ql%-[%_1BFR_1BG@_=Zsmc8pI~> -!B:&Nj+4OfZ[oH6Z[oI$Zh38Y_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpJTmCK9Jm=FYUm=FYUmJcJReieN~> -!BU8Ql+3F:l%/)Ml%/)Ml2KoJc8pI~> -!B:&Nj1:2#j+66Aj+66Aj8S'>_`*)~> -!BpJTm/X,up&M(Cm=FZNm4[>7\Z20[IrA^q91(]o-m'3<&.JsO"TSN+#7:nO',DZ<0f_To -!BU8Qkl@9eoDkG5l%/*FkqCc,[\oRPI;N=k8jYKk-Qa*;%h/jN"TSN+#7:nN',DZ;0K;Bk -!B:&NirG%NnGnN!j+67:j"JrqZ(mV@H"pS^83f*e-6 -!BpJTm/a3[^$Pg!JaJ$Ug?f76f=[i5D-01Y)?\@e$3M2!6s+;]U:f+EJaJ$Ulg4`(4b*~> -!BU8QklI@I^$,NfJa%aMg?At.e%)*)CK -!B:&NirP,/^#K*OJ`D=Ag>`P"cEs'lBiIAL)$A7d$3M.s5u_QLS$^K#J`D=Alf/#`2h1~> -!BpJTm/a3[^$Pg!JaJ$UiU$m'\ -!BU8QklI@I^$,NfJa%aMiTUTt[?Yl8599n#!&"g52b-n\G(uc8pI~> -!B:&NirP,/^#K*OJ`D=AiSt0hY`Ws)4WOUu!&"g52b-n\G(u -!BpJTm/a3[^[2*SoVmE/JaM[g#3WjnF\=7gq#C^91/;VAT!Z]"qpGEMqr,`*Sr%5X1)9Tb"p?JM -Fe$>3JaJ$Uq<\464b*~> -!BU8QklI@I^ZbgKnXY6qJa)C_#3 -!B:&NirP,/^Z,C@m>QVVJ`GtS#2ZqVE(DJ^q#C^91/;VAT!Z]"qpGEMqr,`*Sr%5X1)9Tb"p?GI -E0\#kJ`D=Aq;VLn2h1~> -!BpJTm/a3[^[2*:ql,/6JaMmm#4'@#D+GfNqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#l -!BU8QklI@I^Zbg2qji<&Ja)Ue#3WsnCI]NKqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#l;CRN0) -Ja%aMs60R03e.~> -!B:&NirP,/^Z,C(q2BmbJ`H1Y#3!@_Bgj-FqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#i8BpHKm -J`D=As5O-t2h1~> -!BpJTm/a3[^[2*:ql,/6JaN'r"m`XW?S_rb!!WNR;0o"RmB-BmmD5QD;()PE!!NT`?]DP\JaJ-X -!S0Da~> -!BU8QklI@I^Zbg2qji<&Ja)dj"m<7M?8;c`!!WNR;0o"RmB-BmmD5QD;()PE!!NT_?Ac,QJa%jP -!R<`V~> -!B:&NirP,/^Z,C(q2BmbJ`H@^"lZ\@>;6B\!!WNR;0o"RmB-BmmD5QD;()PE!!NT^>DKHAJ`DFD -!Q-jH~> -!BpJTm/a3[^[2*:ql,/6JaN7""ma3o@P7o_!!OH?Lo]&'U&P;oe>nC$+8c*B"YX>Ma6Sp -4b*~> -!BU8QklI@I^Zbg2qji<&Ja)so"mnC$+8c*B"YO2H`92^9M -!B:&NirP,/^Z,C(q2BmbJ`HOc"l[4W?7cnC$+8c*B">*r@^Ysb(M;nWS -2h1~> -!BpJTm/a3[kNr6Lg?esUql,/6JaNC&"Qlk18-Sql"T^YkO2(7Nrrqu.O'apKr;Zs(89V/uJaJHa -!S0Da~> -!BU8QklI@IkNMsHg?A[Mqji<&Ja**s"QHJ(7g8hk"T^YkO2(7Nrrqu.O'apKr;Zs(7s(fkJa&0Y -!R<`V~> -!B:&NirP,/kMlOBg>`7Cq2BmbJ`H[g"Pfnp70NPh"T^YkO2(7Nrrqu.O'apKr;Zs'7<,6\J`DaM -!Q-jH~> -!BpJTm/a3[kNr6Lg?esUql,/6JaEX.g7rC<"oSE(*`S$4o8EVOo>$5_*rQ'A"Yshfg4AXRm/bd$ -J,~> -!BU8QklI@IkNMsHg?A[Mqji<&Ja!@&f:Zh4"oSE(*`S$4o8EVOo>$5_*rQ'A"Yj_af7E1KklK'j -J,~> -!B:&NirP,/kMlOBg>`7Cq2BmbJ`?pod@=f&"T8<'*`S$4o8EVOo>$5_*rQ'A">FGXd=L>?irR%V -J,~> -!BpJTm/a3[rp9ae6L=[ -!BU8QklI@IrojIa60S:3!!)TS!!(a;!kS9"Ja%jP"Q$"h.KTMK"9UN%YkWeL"Sf3A2$ -!B:&NirP,/ro4%[5N;Y%!!)TM!!(a5!k.o`J`DFD"PBDZ.09DJ"9UN%YkWeL"Sf3A2$ -!BpJTm/a3[rp9ae?!! -!BU8QklI@IrojIa;hk88!!)TS!!(a;!kS9"Ja%sS"1E>3"o\K)$:0-QoR[&?!! -!B:&NirP,/ro4%[;1ni-!!)TM!!(a5!k.o`J`DOG"0ll)"TAB($:0-QoR[&?!! -!BpJTm/a3[rp9dfh^-ACm2l>qmH.[`%:J>cmH.OX'n?;OmHSX)#Z9RJmAVK;*KKCO!l"Q2JaJB_ -"5&l8&,lP3"?:eDpjrJ8rri,3HoM9.!! -!BU8QklI@IrojLbgEjf;koToil/GnV%:8)Zl/PkP'n-/Il/ljs#Z':@l)#g3*/s.H!kS9"Ja&*W -"4WN0&,lP3"?:eDpjrJ8rri,3HoM9.!! -!B:&NirP,/ro4(\eg/$0iu\9]j4mcG$s_WKj5!]A'RKi?j5=\d#Yiq2j.[k'*/Nk>!k.o`J`D[K -"4*$%%fQG2"?:eDpjrJ8rri,3HoM9.!!<^)O3`C;SDsXf2h1~> -!BpJTm/a3[rp;$4mB\M1mHjo@m;#/DfKa?Am;>DHfgPo.m -!BU8QklI@Iroka0l*)l&l0/34l"NQ9e3@d6l"if>eO0E%l$#A -!B:&NirP,/ro5=*j/aljj5U."j(:X(cTQ"&j(Um-cU%Wlj)dH,f2Z,:it@d9aB@cf!k.o`J`DdN -"1E2&!r`0%12X;fJcG!7"7rd71B%7U!\\Q%J`EB_!Q-jH~> -!BpJTm/a3[rp:s2mHne1mHjo@m24%6mE$75m2=.8mE5Lsm2a:8mFW0@m2Ll/kNr>bql,/6P3iA8 -X^N(G!! -!BU8QklI@Irok[.l03#&l0/34knqJ*l,=P)ko%S,l,Negko@Y+l-pI4ko,9$kNN&Zqji<&P3E)0 -WaH\C!! -!B:&NirP,/ro57(j5Xiij5U."itoSmj1lMliu#\oj2(fViuGhoj3JG"iu3NjkMlWPq2BmbP2cZ% -VHk#;!! -!BpJTm/a3[rp:U(mHs'i[I!t]m/uY@mHFc@m/uY@mHFW -!BU8QklI@Irok=$l077^ZKVARkl^)4l/`'4kl^)4l/_p0klgqb#6F)R\OI2MT]t\B])/%Ll':K8 -i1F![rW!$BC:3ees4dPUpU+`XrW!$2 -!B:&NirP,/ro4msj5\uJY2]NBire6"j51""ire6"j50jsiro;\#6ElFZpbTGSE]&8[eYl5j-AX, -g7(tNrW!$BC:3ees4dPUpU+`XrW!$2;OcBkj/1i;_`*)~> -!BpJTm/a3[rp9[crp:NA-K+slm24(7mE-=6m2=.8mE>Rtm2ORMm/a1%l0SPdql,/6R-b"=Thc!o -!!=d#cMiCpec,aNc@%8C!! -!BU8QklI@IrojC_rok6:-/ARcknqM+l,FV*ko%S,l,Wkhko.qDklIXsl0/8\qji<&R-=_5SkTOj -!!=d#cMiCpec,aNc@%8C!! -!B:&NirP,/ro3tYro4g/,hE%VitoVnj1uSmiu#\oj21lWiu6,9irPkhl/MiRq2BmbR,\;)RS*td -!!=d#cMiCpec,aNc@%8C!! -!BpJTm/a3[rp9[crTtb`=9.aUBh6q16Yu/WDFiL77f_rDHpu9D_bogg<6==$'C"lc^AFm\m@3JL -kbqMk!!!$ZM;!O\c2S+(M)YM9!"Du-k^i-&m/bd$J,~> -!BU8QklI@IrojC_rTPJYGcLCe!%-70)T:H:5m:^ea4Z;T7^m''\W^])/%Ll'poD -jJGod!!!$ZM;!O\c2S+(M)YM9!"Dr*jFQQsklK'jJ,~> -!B:&NirP,/ro3tYrSo&P<<2(>AOXtl5\K-;BgpFr6ic9-G!a.)]1q>G:r(q\''\EX[eYl5j.#'8 -hk -!BpJTm/a3[rp9[crTtcp63-E?j]`-%?0:PAk#hs)J,o!(l[9cW.\5toR3Db^X6K!Q^AFm\m@EVG -[;-*J!!5$;j+76NrrV5?2?!RW$#?r"mB5gWeieN~> -!BU8QklI@IrojC_rTPKh5lg06iE?Wu>N4o3i`HI$IK8WskB\*O.@TMcQQcP[W9NOJ])/%Ll(.&? -Z>'^F!!5$;j+76NrrV5?2?!RW$#6bsl)s7Oc8pI~> -!B:&NirP,/ro3tYrSo'\560a(gK+dl=kr&tgf4UoHN<*diHH7E.$ioRP9C&UV!6n@[eYl5j.533 -Y%J(?!!5$;j+76NrrV5?2?!RW$"pDlj0%DC_`*)~> -!BpJTm/a3[^[2*:ql,/6T^;g,GTctc!\B#ZJcERd!o&AZrW!!BGgCs.Z0_SC4b*~> -!BU8QklI@I^Zbg2qji<&T]lO%Fs-ba!\B#ZJcERd!o&AZrW!!BG0GO%Z0;;73e.~> -!B:&NirP,/^Z,C(q2BmbT]6*oF!(A]!\B#ZJcERd!o&AZrW!!AF2rjlZ/Yl&2h1~> -!BpJTm/a3[^[2*:ql,/6U[8?HPWJmG!"jtRJcE@^#k!EZ!!!$]Pi@8][-[nF4b*~> -!BU8QklI@I^Zbg2qji<&UZi'@Ou`UD!"jtRJcE@^#k!EZ!!!$\P2:cS[-7V:3e.~> -!B:&NirP,/^Z,C(q2BmbUZ2X4N]@+?!"jtRJcE@^#k!EZ!!!$[NnApC[,V2)2h1~> -!BpJTm/a3[^[2*:ql,/6Vm^Q3$=$31&5?+baU[d=+H4b*~> -!BU8QklI@I^Zbg2qji<&V7(?1$=$31&5>If=L[cmh<3e.~> -!B:&NirP,/^Z,C(q2BmbV;hig=UG-/$=$31&5=gWb?[c7D+2h1~> -!BpJTm/a3[^[2*:ql,/6W9jZEN@k,0!]utEJcE"T!qVsErW!!ONSoBT\a9FK4b*~> -!BU8QklI@I^Zbg2qji<&W9FB=MCnf-!]utEJcE"T!qVsErW!!OMVNdI\`j.?3e.~> -!B:&NirP,/^Z,C(q2BmbW8ds2LF`?(!]utEJcE"T!qVsErW!!MLY%+;\`3_.2h1~> -!BpJTm/a3X^Zkm4ql,/6WpL&+>mLE1'm/,[s/Z/)flRr/!!llFJaL):!S0Da~> -!BU8QklI@F^ZGU-qON3%Wp'c#>6k3/'m/,[s/Z/)flRr/!!lf@Ja'f2!R<`V~> -!B:&NirP,,^Yf1"q2BmbWoF>n=U5!-'m/,[s/Z/)flRr/!!l`:J`FB&!Q-jH~> -!BpJTm/a3R^Z>OAn>V!+XmHDXRl(0G!C -!BU8QklI@@^Yo79m[\pnXm$,PQo"dC!C -!B:&NirP,&^Y8h.lAU;SXlB]EPVW:>!Cf732h1~> -!BpJTm/a3M^#&ghJaKZ.#M=8 -!BU8QklI@;^"WOXJa'B&#Lmo6!!!7Bk^ic-rs.b+#64`@G1;*-_!(mF3e.~> -!B:&NirP,!^"*1BJ`Ero#L@H-!!!7Bk^ic-rs.b+#64`?F3fEt^uGI52h1~> -!BpJTm/a3G^"ECbJaK`0#JX:B!!"U>on!.6rs/4c/H>bR -!BU8QklI@5^"*1SJa'H(#J3t=!!"U>on!.6rs/4c/H>bR -!B:&NirP+p^!Hbon!.6rs/4c/H>bR;R_5;_W([72h1~> -!BpJTmCK9JmBl6cm&N;M!!?*4JcD):#JO%;!!#3`m"+QCm/bd$J,~> -!BU8Ql+3F:l*T[[kbpWE!!?*4JcD):#JO%;!!#0\k^i!;klK'jJ,~> -!B:&Nj1:2#j0[hOihSX9!!?*4JcD):#JO%;!!#*Vidp./irR%VJ,~> -!BpJTm/X,urrB$LmC)Beka*e"!!n#BJcCr6#Om-I!!"O9k^i-Am/bd$J,~> -!BU8Qkl@9errAU@l*fg]jHM+o!!n#BJcCr6#Om-I!!"L5jFQR9klK'jJ,~> -!B:&NirG%NrrA"/j0mtQhiT>f!!n#BJcCr6#Om-I!!"I1hgsh.irR%VJ,~> -!BpJTm/X,urrB$LmC;Ngl&-/S!#pdaJcCf2#OmQh!!!Xil%/6Dm/bd$J,~> -!BU8Qkl@9errAU@l+#s_jbXQL!#pdaJcCf2#OmQh!!!Ufjal[ -!B:&NirG%NrrA"/j1++Shh;XB!#pdaJcCf2#OmQh!!!Ubhgsh0irR%VJ,~> -!BpJTm/X,urrB$LmCMZihg6":!%X];JcCZ.#PjuB!!![Zhgt1 -!BU8Qkl@9errAU@l+6*agNaD3!%X];JcCZ.#PjuB!!!XWgO\V4klK'jJ,~> -!B:&NirG%NrrA"/j1=7UeohZ+!%X];JcCZ.#PjuB!!!XTeq)l)irR%VJ,~> -!BpJTm/X,urrB$LmC_fkgiX,-!$@a1JcCN*#QC58!!!OPgk"k;m/bd$J,~> -!BU8Qkl@9errAU@l+H6cflIZ(!$@a1JcCN*#QC58!!!ONfn&D4klK'jJ,~> -!B:&NirG%NrrA"/j1OCWdr5cs!$@a1JcCN*#QC58!!!LJdt-Q(irR%VJ,~> -!BpJTm/X,urrB$LmCqrlg275t!(">Ms+11S^-M`!$?"RKmEb/#eieN~> -!BU8Qkl@9errAU@l+ZBdenbZn!(">Ms+11S^-M`!$>e:El-JSpc8pI~> -!B:&NirG%NrrA"/j1aOXctWmf!(">Ms+11S^-M`!$>Rq=j3Q`d_`*)~> -!BpJTm/X-`rrBjOrrB$LmD/)nh/Nf&!(b%Zs+14Krs$D4!!!CHh1=t@m/bd$J,~> -!BU8Qkl@:PrrBjOrrAU@l+lNfg2@?!!(b%Zs+14Krs$D4!!!CFg4AM9klK'jJ,~> -!B:&NirG&9rrBjOrrA"/j1s[Ze8,Km!(b%Zs+14Krs$D4!!!CCe:HZ-irR%VJ,~> -!BpJTm/X-`rrE,8_uB_9JaL>A#3't?!!$-VJcC<$q>UZS=9&=3HfBVDe*R1e4b*~> -!BU8Qkl@:PrrE,8_uB_-Ja(&9#2XV9!!$-VJcC<$q>UZS=9&=3H/=,:e*-nY3e.~> -!B:&NirG&9rrE,8_uB^qJ`FW-#2")/!!$-VJcC<$q>UZS=9&=2G1_B+e)LJH2h1~> -!BpJTm/X-`rrN07^r66QWIaHTm0;[)'*&##aFXABs7QBra@$".'8,CtmFCS)eieN~> -!BU8Qkl@:PrrN07^r66QSUp%Dkm$*t'*&##aFXABs7QBra@$".'7o+nl.,#!c8pI~> -!B:&NirG&9rrN07^r66QN.L$-is+7e'*&##aFXABs7QBra@$".'7S\ej43/j_`*)~> -!BpJTm/X-`rrW8:'Ys;>rW(RM!3(P:`pEurOVe&u426@HJcG9?#/<5"!#UjaJaM(V!S0Da~> -!BU8Qkl@:PrrW8:'Ys;>rW(RM!1e]*`p!]jNu.is426@HJcG9?#/<5"!#Ud[Ja(eN!R<`V~> -!B:&NirG&9rrW8:'Ys;>rW(RM!/uKh`o@9^M\c?n426@HJcG9?#/<5"!#LRPJ`GAB!Q-jH~> -!BpJTm/X-`rr`?%^_FTSrr<&NrrB$LmDnStW$q]H1:Dc6JcG-;"h$/d!%FjtmF^e,eieN~> -!BU8Qkl@:Prr`?%^_FTSrr<&NrrAU@l,W#lVC2EE1:Dc6JcG-;"h$/d!%=^ql.G5$c8pI~> -!B:&NirG&9rr`?%^_FTSrr<&NrrA"/j2^0`TdKg?1:Dc6JcG-;"h$/d!%4Ikj4NAm_`*)~> -!BpJTm/X-`rriE&s1f>ao)A[ifDbiMJaLSH#/<;$!$\??JcC<$li.1gV]l*@4hlR8g?epl4b*~> -!BU8Qkl@:PrriE&s1f>ao)A[ifDbiAJa(;@#.ltt!$\??JcC<$li.1gV]l*@4M-1/g?AX`3e.~> -!B:&NirG&9rriE&s1f>ao)A[ifDbi0J`Fl4#.HYo!$\??JcC<$li.1gV]l*@41Be$g>`4O2h1~> -!BpJTm/X-`rr<&urrR`Op%/1`!8%5NWIaH[m0:s;!< -!BU8Qkl@:Prr<&urrR`Op%/1`!8%5NSUp%Kkm#F3!< -!B:&NirG&9rr<&urrR`Op%/1`!8%5NN.L$4is*S%!< -!BpJTm/X-`rriE&s1f>ao)A[ifDbiMJaL_L#39q6!!m`8JcC<$j8T>OFU.sRG3"5AhX(?p4b*~> -!BU8Qkl@:PrriE&s1f>ao)A[ifDbiAJa(GD#2jS0!!m`8JcC<$j8T>OFU.sRFPq`7hWY'd3e.~> -!B:&NirG&9rriE&s1f>ao)A[ifDbi0J`G#8#24&'!!m`8JcC<$j8T>OFU.sRES?!(hW"XS2h1~> -!BpJTm/X-`rr`?%^_FTSrr<&NrrB$LmEY)&SK%V0DX`5WJcFX-"n6C0!$%P\mGI:3eieN~> -!BU8Qkl@:Prr`?%^_FTSrr<&NrrAU@l-AMsRi;>-DX`5WJcFX-"n6C0!#qDYl/1_+c8pI~> -!B:&NirG&9rr`?%^_FTSrr<&NrrA"/j3HZgQQ#o)DX`5WJcFX-"n6C0!#q8Uj58kt_`*)~> -!BpJTm/X-`rrW8:'Ys5 -!BU8Qkl@:PrrW8:'Ys5 -!B:&NirG&9rrW8:'Ys5 -!BpJTm/X-`rrN07_!h:'!8%5NWIaHbm0;W_!<CmGmR7eieN~> -!BU8Qkl@:PrrN07_!h:'!8%5NSUp%Rkm$'U!< -!B:&NirG&9rrN07_!h:'!8%5NN.L$;is+4G!< -!BpJTm/X-`rrE,8nGiCdg&D&OJaLtS#4.]l!!RB2JcC<$ec,jBE -!BU8Qkl@:PrrE,8nGiCdg&D&CJa(\K#3_ -!B:&NirG&9rrE,8nGiCdg&D&2J`G8?#3(aZ!!RB2JcC<$ec,jBE -!BpJTm/X-`rrBjOrrB$LmFCS-a?0G&2qW]]JcF-t"kYa6!'J>RmH3d:eieN~> -!BU8Qkl@:PrrBjOrrAU@l.,#%`B+&"2qW]]JcF-t"kYa6!'A/Nl/q42c8pI~> -!B:&NirG&9rrBjOrrA"/j43/n^cDGq2qW]]JcF-t"kYa6!'7oHj6#A&_`*)~> -!BpJTm/X,urrB$LmFU_0j`1P*'qkPWs+13rrs&Iq'`\GYjalg_m/bd$J,~> -!BU8Qkl@9errAU@l.>/(iG\r#'qkPWs+13rrs&Iq'`\DViIU7WklK'jJ,~> -!B:&NirG%NrrA"/j4E;qgMI)o'qkPWs+13rrs&Iq'`\DSgO\DKirR%VJ,~> -!BpJTm/X,urrB$LmF^e0^)m=VB'k0LJcEpn"mon'!$Aq+mHO!=eieN~> -!BU8Qkl@9errAU@l.G5(],gqRB'k0LJcEpn"mon'!$8b'l07F5c8pI~> -!B:&NirG%NrrA"/j4NAq[N,>LB'k0LJcEpn"mon'!$/M!j6>S)_`*)~> -!BpJTm/X,urrB$LmFpq2hHU']/]rYEJcEdj"j/Cs!F4K4mHa-?eieN~> -!BU8Qkl@9errAU@l.YA*g0+LW/]rYEJcEdj"j/Cs!F"3.l0IR7c8pI~> -!B:&NirG%NrrA"/j4`MseQ;hP/]rYEJcEdj"j/Cs!Edm'j6P_+_`*)~> -!BpJTm/X,urrB$LmG%"3UDNt:LAQQ%JcE^h"oF#[!#VJ^mHj3@eieN~> -!BU8Qkl@9errAU@l.bG+TGRY7LAQQ%JcE^h"oF#[!#VA[l0RX8c8pI~> -!B:&NirG%NrrA"/j4iStS/2/2LAQQ%JcE^h"oF#[!#M/Vj6Ye,_`*)~> -!BpJTm/X,urrB$LmG7.5fMDPJ4P55bJcERd"kYp;!)V=!mI'?BeieN~> -!BU8Qkl@9errAU@l.tS-e4ouD4P55bJcERd"kYp;!)D$pl0dd:c8pI~> -!B:&NirG%NrrA"/j5&`!cV+<=4P55bJcERd"kYp;!)1^ij6kq._`*)~> -!BpJTm/X,urrB$LmG@46S.Yf2PPp(4JcELb"oXVo!"tfQmI0ECeieN~> -!BU8Qkl@9errAU@l/(Y.R1TE.PPp(4JcELb"oXVo!"kWMl0mj;c8pI~> -!B:&NirG%NrrA"/j5/f"Pn=!*PPp(4JcELb"oXVo!"kKIj6u"/_`*)~> -!BpJTm/X,urrB$LmGR@8gJIqN6fWatJcE@^"lhrM!)_L%mIBQEeieN~> -!BU8Qkl@9errAU@l/:e0fM;JI6fWatJcE@^"lhrM!)M6ul1+!=c8pI~> -!B:&NirG%NrrA"/j5Ar$dS0]A6fWatJcE@^"lhrM!):mmj72.1_`*)~> -!BpJTm/X,umJs5;mG[F9W##FCRf7m -!BU8Qkl@9emJrf/l/Ck1VAB4ARf7mc8pI~> -!B:&NirG%NmJr2sj5K#%Tb[V;Rf7m -!BpJTm/X,umJs5;mGmR;iEcNb52LkjJcE.X"l;EC!FF`9mI]cHeieN~> -!BU8Qkl@9emJrf/l/V"3h-9s\52LkjJcE.X"l;EC!F4H3l1F3@c8pI~> -!B:&NirG%NmJr2sj5]/'f3/1T52LkjJcE.X"l;EC!F"*+j7M@4_`*)~> -!BpJTm/X,umJs5;mH!X-JcE(V"oXAc!$BF9mIfiIeieN~> -!BU8Qkl@9emJrf/l/_(4a;t-JcE(V"oXAc!$944l1O9Ac8pI~> -!B:&NirG%NmJr2sj5f5(_]8^_N;\>-JcE(V"oXAc!$/t.j7VF5_`*)~> -!BpJTm/X,umJs5;mH3d>l?EF31Y%'VJcDqR"k>C/"F03_mJ#uKeieN~> -!BU8Qkl@9emJrf/l/q46k&pk-1Y%'VJcDqR"k>C/"ErpYl1aECc8pI~> -!B:&NirG%NmJr2sj6#A*i,]#$1Y%'VJcDqR"k>C/"EWLPj7hR7_`*)~> -!BpJTm/X,umJs5;mH -!BU8Qkl@9emJrf/l0%:7c8Ye*Gl!!kJcDkP"o -!B:&NirG%NmJr2sj6,G+a>O#"Gl!!kJcDkP"o -!BpJTm/X-`mJsT1mJs5;mHEp?T+CuA]n-37s/H#$]c-q_T7QD*m/bd$J,~> -!BU8Qkl@:PmJsT1mJrf/l0.@7SIbc?]n-37s/H#$]c-q_SUp&$klK'jJ,~> -!B:&NirG&9mJsT1mJr2sj65M+R1B9:]n-37s/H#$]c-q^R=XDoirR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WIaI&m01T]!""qiJcC<$V>g_uPmIF?aarjWm/bd$J,~> -!BU8Qkl@:PmK*A%Zc)83SUp%kklo'U!""qiJcC<$V>g_uPmIF>`e!CPklK'jJ,~> -!B:&NirG&9mK*A%Zc)83N.L$Tis!4H!""qiJcC<$V>g_uPmIF=^k(PDirR%VJ,~> -!BpJTm/X-`mK3I)'=7;u"g(#p&m*i@mJs5;mHj3CS.#B -!BU8Qkl@:PmK3I)'=7;u"g(#p&m*i@mJrf/l0RX;R1''9eUdaOs.TGqeK"VuR=XW$klK'jJ,~> -!B:&NirG&9mK3I)'=7;u"g(#p&m*i@mJr2sj6Ye/PmdX5eUdaOs.TGqeK"VuQ%@uoirR%VJ,~> -!BpJTm/X-`mKJaMmm"m9=p!*\uFs+13Brrr!t!!$KkJaNL)!S0Da~> -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;Sna6G>#MJMFWIaI*m0(]g!!npBs+13>rreYo!&2]Lm/l\+4b*~> -!BU8Qkl@:PmKEUjs1f;Sna6G>#MJMFSUp%oklf0_!!npBs+13>rreYo!&)NHklU+p3e.~> -!B:&NirG&9mKEUjs1f;Sna6G>#MJMFN.L$Xirm@S!!npBs+13>rreYo!%u9Bir\8Y2h1~> -!BpJTm/X-`mJm7drrR`Ojmqg?UHI5t!3(P:nEg@a%fdj!JcC<$RK!E7,6/7[JaEKh4b*~> -!BU8Qkl@:PmJm7drrR`Ojmqg?UHI5t!1e]*nEC(Z%fdj!JcC<$RK!E7,6/7XJa!3\3e.~> -!B:&NirG&9mJm7drrR`Ojmqg?UHI5t!/uKhnDaYO%KI`uJcC<$RK!E7,6/4RJ`?dK2h1~> -!BpJTm/X-`mKEUjs1f;So'QRq+j8R,!3(P:o'HVIHia:=oR[$ns-N`hoLJr`I-cLQ!S0Da~> -!BU8Qkl@:PmKEUjs1f;So'QRq+j8R,!1e]*o'$>AH3+(;oR[$ns-N`hoLJr`HK^"G!R<`V~> -!B:&NirG&9mKEUjs1f;So'QRq+j8R,!/uKho&Bo5G6.b8oR[$ns-N`hoLJr`GN+88!Q-jH~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=78t!hC4CfBrX3!S0Da~> -!BU8Qkl@:PmK3I)'=78t!hC4CfBrX0Ja)gk"NMki&@I)hJcCl4"LSd@-c^r*!R<`V~> -!B:&NirG&9mK3I)'=78t!hC4CfBrWtJ`HC_"MuJc&@I)hJcCl4"LSd@-GkJs!Q-jH~> -!BpJTm/X-`mK*A%Zh!McKH/(amJs5;mIfiLYR:F]g4B9Ts,[0_g+*.2Y_MNGeieN~> -!BU8Qkl@:PmK*A%Zh!McKH/(amJrf/l1O9DXU>+Zg4B9Ts,[0_g+*.2XbQ'@c8pI~> -!B:&NirG&9mK*A%Zh!McKH/(amJr2sj7VF8W!`SUg4B9Ts,[0_g+*.2W.s=5_`*)~> -!BpJTm/X-`mK!,n4b*~> -!BU8Qkl@:PmK! -!B:&NirG&9mK!Z:*!ru9jJcC<$NW0.P;ZHoLLZ8EQ2h1~> -!BpJTm/X-`mJsT1mJs5;mJ-&Ok["5iO+I=^s,$aYNr]5ek_\[-eieN~> -!BU8Qkl@:PmJsT1mJrf/l1jKGjBV`dO+I=^s,$aYNr]5djGE+%c8pI~> -!B:&NirG&9mJsT1mJr2sj7qX;hc^!\O+I=^s,$aYNr]5ahhg@o_`*)~> -!BpJTm/X,umJs5;mJ6,PgcYWDWe(2$s+gUWWX/YggktJ"eieN~> -!BU8Qkl@9emJrf/l1sQHffT6@We(2$s+gUWWX/Yffo#"pc8pI~> -!B:&NirG%NmJr2sj8%^ -!BpJTm/X,umJs5;mJ?2Qas-m(b(9SDs+UIUar(1(b)>WfeieN~> -!BU8Qkl@9emJrf/l2'WI`ZkI$b(9SDs+UIUar(1(`f''^c8pI~> -!B:&NirG%NmJr2sj8.d=_'/jsb(9SDs+UIUar(1'_2I=S_`*)~> -!BpJTm/X,umJs5;mJH8RZNgIbj+75]s+C=Sj"UN=Z]+8PeieN~> -!BU8Qkl@9emJrf/l20]JYQk._j+75]s+C=Sj"UN=Y`.fIc8pI~> -!B:&NirG%NmJr2sj87j>Ws8VZj+75]s+C=Sj"UN=X,Q'>_`*)~> -!BpJTm/X,umJs5;mJQ>SRg/phoR[$ns+11QoM5GlRuQe9eieN~> -!BU8Qkl@9emJrf/l29cKQj*OdoR[$ns+11QoM5GkR#U>2c8pI~> -!B:&NirG%NmJr2sj8@p?PQh+`oR[$ns+11QoM5GkP`=](_`*)~> -!BpJTm/X,umJs5;mJZDTJH5airIP!"s+14Mrri:>!!.Y2m/bd$J,~> -!BU8Qkl@9emJrf/l2BiLIfTOgrIP!"s+14Mrri:>!!.S0klK'jJ,~> -!B:&NirG%NmJr2sj8J!@HN=+crIP!"s+14Mrri:>!!.G,irR%VJ,~> -!BpJTm/X,umJs5;mJlPVl=9krNe.4]s+14Irre>`!+bAVm/bd$J,~> -!BU8Qkl@9emJrf/l2TuNk$e;lNe.4]s+14Irre>`!+P)PklK'jJ,~> -!B:&NirG%NmJr2sj8\-Bi*ZNdNe.4]s+14Irre>`!+=`HirR%VJ,~> -!BpJTm/X,umJs5;m02n=9)o6tJcC<$JcGQG"KD_-9BD<'!S0Da~> -!BU8Qkl@9emJrf/klp>18cT-sJcC<$JcGQG"KD_-9&Yos!R<`V~> -!B:&NirG%NmJr2sis"Jt8,rpqJcC<$JcGQG"KD_-8DB9e!Q-jH~> -!BpJTm/X,urrB$Lm0)H)!#!/"s+13$s7cNr_@ci(j-&d1eieN~> -!BU8Qkl@9errAU@klflu!#!/"s+13$s7cNr_@ci'hid4)c8pI~> -!B:&NirG%NrrA"/irn$h!#!/"s+13$s7cNr_@ci&fok@r_`*)~> -!BpJTm/X,urrB$Mm0(ui!$0mHs+13$s7QBph&QJFes#J%eieN~> -!BU8Qkl@9errAUAklfE`!$0mHs+13$s7QBph&QJEdZ`nrc8pI~> -!B:&NirG%NrrA"0irmUT!$0mHs+13$s7QBph&QJDc'./g_`*)~> -!BpJTm/X,urrB$Nm0(]W!%R&\s+13$s7?6nj=1-PcBR\seieN~> -!BU8Qkl@9errAUBklf-O!%R&\s+13$s7?6nj=1-Pb*;,kc8pI~> -!B:&NirG%NrrA"1irm=C!%R&\s+13$s7?6nj=1-O`K]B`_`*)~> -!BpJTm/X,urrB$Om0(?E!&j1ps+13$s7-*llo"h\`0K]jeieN~> -!BU8Qkl@9errAUCkleg>!&j1ps+13$s7-*llo"h\_3O6cc8pI~> -!B:&NirG%NrrA"2irm"2!&j1ps+13$s7-*llo"h[]TqLX_`*)~> -!BpJTm/X,urrB$Pm0's3!(6=.s+13$s6osjnj -!BU8Qkl@9errAUDkleF+!(6=.s+13$s6osjnj -!B:&NirG%NrrA"3irlUu!(6=.s+13$s6osjnj -!BpJTm/X-`rrBjOrrB$Qm0'Wr!)`NBs+13$s6]ghpe_"oYa=_XeieN~> -!BU8Qkl@:PrrBjOrrAUEkle*k!)`NBs+13$s6]ghpe_"oXdA8Qc8pI~> -!B:&NirG&9rrBjOrrA"4irl:`!)`NBs+13$s6]ghpe_"oW0cNF_`*)~> -!BpJTm/X-`rrE,8_uB_9L[>5E#QRp'JcC<$JcG'9"T2:##ca9Z!S0Da~> -!BU8Qkl@:PrrE,8_uB_-LZnr>#QRp'JcC<$JcG'9"T2:##cF'S!R<`V~> -!B:&NirG&9rrE,8_uB^qLZ8N4#QRp'JcC<$JcG'9"T2:##c!dI!Q-jH~> -!BpJTm/X-`rrN07^r66QWJKpEV?[*9rdk*#s+147rri=9!!fBhm/bd$J,~> -!BU8Qkl@:PrrN07^r66QSVZM5UBU^5rdk*#s+147rri=9!!]3dklK'jJ,~> -!B:&NirG&9rrN07^r66QN/6KsT*>:1rdk*#s+147rri=9!!]'`irR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?"ggGu&m+/IrrB$Tm0'*e!,qjfs+13$s6'Cbrbhc@Tpk?LeieN~> -!BU8Qkl@:PrrW8:'Ys>?"ggGu&m+/IrrAUHkldR^!,qjfs+13$s6'Cbrbhc@SsnmEc8pI~> -!B:&NirG&9rrW8:'Ys>?"ggGu&m+/IrrA"7irkeS!,qjfs+13$s6'Cbrbhc?R[W7;_`*)~> -!BpJTm/X-`rr`?%^_FTVrrkcpnFD,jg&D&OMX:M9"9 -!BU8Qkl@:Prr`?%^_FTVrrkcpnFD,jg&D&CMWk53"9 -!B:&NirG&9rr`?%^_FTVrrkcpnFD,jg&D&2MW4f)"9 -!BpJTm/X-`rriE&s1f>anc&X`#hf4XWJg-GU&k=AJcC<$JcF^/"+("LU7CTOeieN~> -!BU8Qkl@:PrriE&s1f>anc&X`#hf4XSVu_7T)o">JcC<$JcF^/"+("LT:G-Hc8pI~> -!B:&NirG&9rriE&s1f>anc&X`#hf4XN/Q]uRfWS:JcC<$JcF^/"+("LS"/L>_`*)~> -!BpJTm/X-`rr<&urrR`Op%/1boS6)mrrB$Wm/rj\!.oe%JcC<$hu -!BU8Qkl@:Prr<&urrR`Op%/1boS6)mrrAUKkl[@V!.oe%JcC<$hu -!B:&NirG&9rr<&urrR`Op%/1boS6)mrrA":irbSL!.oe%JcC<$hu -!BpJTm/X-`rriE&s1f>aoDegj!>aGCrrB$Xm/s$b!.oe%JcC<$h>[S/!!K!em/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoDegj!>aGCrrAULkl[L[!.oe%JcC<$h>[S/!!JmbklK'jJ,~> -!B:&NirG&9rriE&s1f>aoDegj!>aGCrrA";irb_Q!.oe%JcC<$h>[S/!!Ja^irR%VJ,~> -!BpJTm/X-`rr`?%^_FTSrrVbD4k]i8WK-?JV?R$IJcC<$JcFL)"+("PVP!5VeieN~> -!BU8Qkl@:Prr`?%^_FTSrrVbD4k]i8SW;q:UBU^FJcC<$JcFL)"+("PUS$cOc8pI~> -!B:&NirG&9rr`?%^_FTSrrVbD4k]i8N/lp#T*54AJcC<$JcFL)"+("OT:b-E_`*)~> -!BpJTm/X-`rrW8:'Ys2;!VQcOrrB$Zm/s?n!-NkmJcC<$g&D.s!!fNsm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys2;!VQcOrrAUNkl[gf!-NkmJcC<$g&D.s!!]?oklK'jJ,~> -!B:&NirG&9rrW8:'Ys2;!VQcOrrA"=irc%\!-NkmJcC<$g&D.s!!]3kirR%VJ,~> -!BpJTm/X-`rrN07_".L/>LiW5E^8=X!3)(I"1/:5Dh7q>s+14%rr[0>#IL2l!S0Da~> -!BU8Qkl@:PrrN07_".L/>LiW5E^8=X!1f59"0i(2Dh7q>s+14%rr[0>#I0ue!R<`V~> -!B:&NirG&9rrN07_".L/>LiW5E^8=X!0!$""0;_-Dh7q>s+14%rr[0>#HXWZ!Q-jH~> -!BpJTm/X-`rrE,8nc&cm/d)qsl.Q(:WKHQN\I&=Ordk*#s+14%rri=9!"-92m/bd$J,~> -!BU8Qkl@:PrrE,8nc&cm/d)qsl.Q(:SWW.>[L*"Lrdk*#s+14%rri=9!"-0/klK'jJ,~> -!B:&NirG&9rrE,8nc&cm/d)qsl.Q(:N03-'YmLJGrdk*#s+14%rri=9!"-!*irR%VJ,~> -!BpJTm/X-`rrBjOrrB$]m/t9=!+(6VJcC<$e,KMV!"m/Em/bd$J,~> -!BU8Qkl@:PrrBjOrrAUQkl\a5!+(6VJcC<$e,KMV!"cuAklK'jJ,~> -!B:&NirG&9rrBjOrrA"@ircq*!+(6VJcC<$e,KMV!"cf -!BpJTm/X,urrB$^m0(]O!)`WEs+13$s3puNqb[>1cD9h.eieN~> -!BU8Qkl@9errAURklf-G!)`WEs+13$s3puNqb[>1b,"8&c8pI~> -!B:&NirG%NrrA"Airm=;!)`WEs+13$s3puNqb[>0`MDMp_`*)~> -!BpJTm/X,urrB$_m0(u_!(6O4s+13$s3^iLpd5$(etqa7eieN~> -!BU8Qkl@9errAUSklfEW!(6O4s+13$s3^iLpd5$(d\Z1/c8pI~> -!B:&NirG%NrrA"BirmUK!(6O4s+13$s3^iLpd5$'c)'G$_`*)~> -!BpJTm/X,urrB$`m0)5p!&jD!s+13$s3L]JnhpIth59Q?eieN~> -!BU8Qkl@9errAUTklf]h!&jD!s+13$s3L]JnhpIsg8=*8c8pI~> -!B:&NirG%NrrA"Cirmj[!&jD!s+13$s3L]JnhpIre>D7,_`*)~> -!BpJTm/X,urrB$am0)T,!%R>ds+13$s3:QHlm_uikGR\JeieN~> -!BU8Qkl@9errAUUklg'$!%R>ds+13$s3:QHlm_uhjJV5Cc8pI~> -!B:&NirG%NrrA"Dirn3l!%R>ds+13$s3:QHlm_ughP]B7_`*)~> -!BpJTm/X,urrB$bm0)]I!$:NYs+13$s3(EFm2c7#lDX(NeieN~> -!BU8Qkl@9errAUVklg-@!$:NYs+13$s3(EFm2c7"k,@MFc8pI~> -!B:&NirG%NrrA"Eirn:2!$:NYs+13$s3(EFm2c6ui2GZ:_`*)~> -!BpJTm/X,urrB$bm/pl!'%VX6JcC<$ao;Io&ccI@m/bd$J,~> -!BU8Qkl@9errAUVklYAp'%VX6JcC<$ao;Io&ccC>klK'jJ,~> -!B:&NirG%NrrA"Eir`Zh'%VX6JcC<$ao;Io&cc= -!BpJTm/X,urrB$cm/qn>#f;/mJcC<$a8Z7Y#QTFTm/bd$J,~> -!BU8Qkl@9errAUWklZD8#f;/mJcC<$a8Z7Y#QT@RklK'jJ,~> -!B:&NirG%NrrA"FiraW.#f;/mJcC<$a8Z7Y#QT4NirR%VJ,~> -!BpJTm/X,umJs5Sm/rgY!ighOJcC<$`W$%?!Wedjm/bd$J,~> -!BU8Qkl@9emJrfGkl[:R!ighOJcC<$`W$%?!We[gklK'jJ,~> -!B:&NirG%NmJr36irbMH!ighOJcC<$`W$%?!WeOcirR%VJ,~> -!BpJTm/X,umJs5Tm/sg%!02X1JcC<$_uBh!!!]p5m/bd$J,~> -!BU8Qkl@9emJrfHkl\9r!02X1JcC<$_uBh!!!Ta1klK'jJ,~> -!B:&NirG%NmJr37ircLh!02X1JcC<$_uBh!!!TU-irR%VJ,~> -!BpJTm/X,umJs5Um/tKB!-!MhJcC<$_>aUV!"d;Sm/bd$J,~> -!BU8Qkl@9emJrfIkl\p9!-!MhJcC<$_>aUV!"[)NklK'jJ,~> -!B:&NirG%NmJr38ird+.!-!MhJcC<$_>aUV!"ZoIirR%VJ,~> -!BpJTm/X,umJs5Vm/u,g!)\=IJcC<$^]+C5!$g:$m/bd$J,~> -!BU8Qkl@9emJrfJkl]T`!)\=IJcC<$^]+C5!$g1!klK'jJ,~> -!B:&NirG%NmJr39irdaS!)\=IJcC<$^]+C5!$]moirR%VJ,~> -!BpJTm/X,umJs5Wm0)W9!&=+ss+13$s1eR:oJ$>/kcX:ReieN~> -!BU8Qkl@9emJrfKklg'0!&=+ss+13$s1eR:oJ$>.jK@_Jc8pI~> -!B:&NirG%NmJr3:irn7$!&=+ss+13$s1eR:oJ$>-hlbu?_`*)~> -!BpJTm/X-`mJsT1mJs5Wm/pYp)<6;JJcC<$^&J2p)$"!Gm/bd$J,~> -!BU8Qkl@:PmJsT1mJrfKklY2k)<6;JJcC<$^&J2p)$!sFklK'jJ,~> -!B:&NirG&9mJsT1mJr3:ir`Hb)<6;JJcC<$^&J2p)$!jCirR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WLrP[Y5n[(JcC<$JcE:\"0)A&YH[BpeieN~> -!BU8Qkl@:PmK*A%Zc)83SY,-KX8r@%JcC<$JcE:\"0)A&XK^pic8pI~> -!B:&NirG&9mK*A%Zc)83N1],4VuZq!JcC<$JcE:\"0)A&W3G:__`*)~> -!BpJTm/X-`mK3I)'=75s!o"Unf^8a=T^;j)%fh34s+13$s0r"1JcH>)Z0_SC4b*~> -!BU8Qkl@:PmK3I)'=75s!o"Unf^8a1T]lR!%fh34s+13$s0r"1JcH>%Z0;;73e.~> -!B:&NirG&9mK3I)'=75s!o"Unf^8`uT]6-k%KM*3s+13$s0r"1JcH:tZ/Yl&2h1~> -!BpJTm/X-`mKWM/\^i[=e*rdk*#s+13Zrri="!%?j4m/bd$J,~> -!BU8Qkl@:PmKSY>9NhBr;%rdk*#s+13Zrri="!%6X/klK'jJ,~> -!B:&NirG&9mKN1o87fHpSsrdk*#s+13Zrri="!%-@(irR%VJ,~> -!BpJTm/X-`mKEUjs1f;So^2h'*p*ITmJs5\m0)cM!%[Vks+13$s0_k0nga]7m'H'[eieN~> -!BU8Qkl@:PmKEUjs1f;So^2h'*p*ITmJrfPklg3D!%[Vks+13$s0_k0nga]6kd0LSc8pI~> -!B:&NirG&9mKEUjs1f;So^2h'*p*ITmJr3?irn@6!%[Vks+13$s0_k0nga]4ij7YG_`*)~> -!BpJTm/X-`mJm7drrR`Ojn8$D7[ -!BU8Qkl@:PmJm7drrR`Ojn8$D7[ -!B:&NirG&9mJm7drrR`Ojn8$D7[l?"!"dk8s+13$s0M_-g(47.Zf;)(2h1~> -!BpJTm/X-`mKEUjs1f;Sp$Msd/aVm*f^8a=U[8/_!Woc\s+13$s0;S+[/pE/[-[nF4b*~> -!BU8Qkl@:PmKEUjs1f;Sp$Msd/aVm*f^8a1UZhlY!Woc\s+13$s0;S+[/pE-[-7V:3e.~> -!B:&NirG&9mKEUjs1f;Sp$Msd/aVm*f^8`uUZ2HN!Woc\s+13$s0;S+[/pE([,V2)2h1~> -!BpJTm/X-`mK)Emd:)-mJs5^m/toM!/,q'JcC<$YQ"]X!"[Ygm/bd$J,~> -!BU8Qkl@:PmK)Emd:)-mJrfRkl]?E!/,q'JcC<$YQ"]X!"[McklK'jJ,~> -!B:&NirG&9mK)Emd:)-mJr3AirdO9!/,q'JcC<$YQ"]X!"R8]irR%VJ,~> -!BpJTm/X-`mK3I)'=7;uqZ,=;!3)g^"QqH=8cF;@JcC<$YQ"b)8H:I-[d=+H4b*~> -!BU8Qkl@:PmK3I)'=7;uqZ,=;!1ftN"QM-88cF;@JcC<$YQ"b)8H:F([cmh<3e.~> -!B:&NirG&9mK3I)'=7;uqZ,=;!0!c7"Pk[18cF;@JcC<$YQ"b)8H:C![c7D+2h1~> -!BpJTm/X-`mK*A%ZgR5]!8-]>WMSta@K7YAJcC<$JcDkP"7IH7@^bY)eieN~> -!BU8Qkl@:PmK*A%ZgR5]!8-]>SYbQQ?iVG?JcC<$JcDkP"7IH7@(,;#c8pI~> -!B:&NirG&9mK*A%ZgR5]!8-]>N2>P:?2u5=JcC<$JcDkP"7IH7?FJkp_`*)~> -!BpJTm/X-`mK!\*X4I4b*~> -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT1mJs5am/tH=!1/9:JcC<$WW*'e!"?uZm/bd$J,~> -!BU8Qkl@:PmJsT1mJrfUkl\p6!1/9:JcC<$WW*'e!"?lWklK'jJ,~> -!B:&NirG&9mJsT1mJr3Dird(*!1/9:JcC<$WW*'e!"?ZQirR%VJ,~> -!BpJTm/X,umJs5bm/uE!!*XsRJcC<$VuHj&!%R'?m/bd$J,~> -!BU8Qkl@9emJrfVkl]im!*XsRJcC<$VuHj&!%Hj:klK'jJ,~> -!B:&NirG%NmJr3Eire!`!*XsRJcC<$VuHj&!%?R3irR%VJ,~> -!BpJTm/X,umJs5bm/pVo.J&,jJcC<$VuHkj.0*Yam/bd$J,~> -!BU8Qkl@9emJrfVklY,i.J&,jJcC<$VuHkj.0*S_klK'jJ,~> -!B:&NirG%NmJr3Eir`Ea.J&,jJcC<$VuHkj.0*M]irR%VJ,~> -!BpJTm/X,umJs5cm/rs\#1nG+JcC<$V>gYL"ot:,m/bd$J,~> -!BU8Qkl@9emJrfWkl[IV#1nG+JcC<$V>gYL"ot4*klK'jJ,~> -!B:&NirG%NmJr3Firb\L#1nG+JcC<$V>gYL"ot(&irR%VJ,~> -!BpJTm/X,umJs5dm/t`I!0r-8JcC<$U]1F]!"dPim/bd$J,~> -!BU8Qkl@9emJrfXkl]3B!0r-8JcC<$U]1F]!"dGfklK'jJ,~> -!B:&NirG%NmJr3Gird@5!0r-8JcC<$U]1F]!"[/_irR%VJ,~> -!BpJTm/X,umJs5em0)]6!)NTFs+13$s.fSsr_EMRlFcKbeieN~> -!BU8Qkl@9emJrfYklg-.!)NTFs+13$s.fSsr_EMRk.KpZc8pI~> -!B:&NirG%NmJr3Hirn9u!)NTFs+13$s.fSsr_EMPi4S(N_`*)~> -!BpJTm/X,umJs5em/qS5)s`(TJcC<$U&P5\)ZY,qm/bd$J,~> -!BU8Qkl@9emJrfYklZ)/)s`(TJcC<$U&P5\)ZY&oklK'jJ,~> -!B:&NirG%NmJr3Hira?&)s`(TJcC<$U&P5\)ZXrlirR%VJ,~> -!BpJTm/X,umJs5fm/sd"!kj0bJcC<$TDo#,!X,sFm/bd$J,~> -!BU8Qkl@9emJrfZkl\6p!kj0bJcC<$TDo#,!X,jCklK'jJ,~> -!B:&NirG%NmJr3IircIf!kj0bJcC<$TDo#,!X,^?irR%VJ,~> -!BpJTm/X,urrB%#m/u>g!-j(pJcC<$Sc8e:!$1(5m/bd$J,~> -!BU8Qkl@9errAUlkl]c^!-j(pJcC<$Sc8e:!$'k0klK'jJ,~> -!B:&NirG%NrrA"[irdpQ!-j(pJcC<$Sc8e:!#sS)irR%VJ,~> -!BpJTm/X,urrB%#m/pYp./JMpJcC<$Sc8fg-idSfm/bd$J,~> -!BU8Qkl@9errAUlklY/j./JMpJcC<$Sc8fg-idMdklK'jJ,~> -!B:&NirG%NrrA"[ir`Hb./JMpJcC<$Sc8fg-idGbirR%VJ,~> -!BpJTm/X,urrB%$m/s9f#h=M+JcC<$S,WT@#Q^m=m/bd$J,~> -!BU8Qkl@9errAUmkl[d`#h=M+JcC<$S,WT@#Q^g;klK'jJ,~> -!B:&NirG%NrrA"\irbtU#h=M+JcC<$S,WT@#Q^X6irR%VJ,~> -!BpJTm/X,urrB%%m/u)Z!/uL/JcC<$RK!AJ!#OD*m/bd$J,~> -!BU8Qkl@9errAUnkl]QS!/uL/JcC<$RK!AJ!#O;'klK'jJ,~> -!B:&NirG%NrrA"]ird^F!/uL/JcC<$RK!AJ!#F"uirR%VJ,~> -!BpJTm/X,urrB%%m/p2c55g'4JcC<$RK!Bf4oeHqm/bd$J,~> -!BU8Qkl@9errAUnklX]]55g'4JcC<$RK!Bf4oeBoklK'jJ,~> -!B:&NirG%NrrA"]ir`!U55g'4JcC<$RK!Bf4oe -!BpJTm/X-`rrBjOrrB%&m/rjY%Gl[9JcC<$Qi@0E%02p7m/bd$J,~> -!BU8Qkl@:PrrBjOrrAUokl[=R%Gl[9JcC<$Qi@0E%02g4klK'jJ,~> -!B:&NirG&9rrBjOrrA"^irbPH%Gl[9JcC<$Qi@0E%02[0irR%VJ,~> -!BpJTm/X-`rrE,8_uB_9Z0_YI&HJ8Ns+13$s- -!BU8Qkl@:PrrE,8_uB_-Z0;AB&-//Ms+13$s- -!B:&NirG&9rrE,8_uB^qZ/Yr6&-//Ms+13$s- -!BpJTm/X-`rrN07^r66QWNkgl:]Nt9s+13$s-*Ha7K?9%m/bd$J,~> -!BU8Qkl@:PrrN07^r66QS[%D\:&mb7s+13$s-*Ha7K?3#klK'jJ,~> -!B:&NirG&9rrN07^r66QN3VCE9E7P5s+13$s-*Ha7K?-!irR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?quGCL!3*9k"/>i*i.:oZs+136rr_0g!2II!!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?quGCL!1gF["/#W'i.:oZs+136rr_0g!2.6o!R<`V~> -!B:&NirG&9rrW8:'Ys>?quGCL!0"5D".T?#i.:oZs+136rr_0g!1^se!Q-jH~> -!BpJTm/X-`rr`?%^_FTVrr<&KrrB%)m/u2^!0`!6JcC<$OoGNI!#XS2m/bd$J,~> -!BU8Qkl@:Prr`?%^_FTVrr<&KrrAUrkl]WV!0`!6JcC<$OoGNI!#XG.klK'jJ,~> -!B:&NirG&9rr`?%^_FTVrr<&KrrA"airdgJ!0`!6JcC<$OoGNI!#O2(irR%VJ,~> -!BpJTm/X-`rriE&s1f>ap&>!leGfNJZg@j"!'L42s+13$s,m<`rB('b`9dTV4b*~> -!BU8Qkl@:PrriE&s1f>ap&>!leGfN>ZfqQq!'L42s+13$s,m<`rB('``9@ -!B:&NirG&9rriE&s1f>ap&>!leGfN-Zf;-i!'L42s+13$s,m<`rB('^`8^m92h1~> -!BpJTm/X-`rr<&urrR`Op%JCh!"oG^LA]a)!3*?m"0V_2fRa'Rs+132rr^mZ!O'K0!S0Da~> -!BU8Qkl@:Prr<&urrR`Op%JCh!"oG^LA]a)!1gL]"0;M/fRa'Rs+132rr^mZ!Na9)!R<`V~> -!B:&NirG&9rr<&urrR`Op%JCh!"oG^LA]a)!0";F"/l5+fRa'Rs+132rr^mZ!N -!BpJTm/X-`rriE&s1f>aoD\pjd6Va)rrB%+m/uMl!/?()JcC<$NW0*8!$17Bm/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoD\pjd6Va)rrAUtkl]rc!/?()JcC<$NW0*8!$(%=klK'jJ,~> -!B:&NirG&9rriE&s1f>aoD\pjd6Va)rrA"cire*V!/?()JcC<$NW0*8!#sb6irR%VJ,~> -!BpJTm/X-`rr`?%^_FTRrrM9og&D&O[I"':!&+>&s+13$s,I$\r\"7l`pEfX4b*~> -!BU8Qkl@:Prr`?%^_FTRrrM9og&D&C[HRd4!&+>&s+13$s,I$\r\"7j`p!NL3e.~> -!B:&NirG&9rr`?%^_FTRrrM9og&D&2[Gq@+!&+>&s+13$s,I$\r\"7g`o@*;2h1~> -!BpJTm/X-`rrW8:'Ys2;!U1*IrrB%,m/tE6!lffkJcC<$MuNn!!X?`dm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys2;!U1*IrrAUukl\m.!lffkJcC<$MuNn!!X6Q`klK'jJ,~> -!B:&NirG&9rrW8:'Ys2;!U1*IrrA"dird(#!lffkJcC<$MuNn!!X6B[irR%VJ,~> -!BpJTm/X-`rrN07_".L/=O[0'9Oc]T!3*Hp"7/,MAqBu5s+13,rrZj54RC/V!S0Da~> -!BU8Qkl@:PrrN07_".L/=O[0'9Oc]T!1gU`"6_fHAqBu5s+13,rrZj546XcM!R<`V~> -!B:&NirG&9rrN07_".L/=O[0'9Oc]T!0"DI"6)?AAqBu5s+13,rrZj53o\6@!Q-jH~> -!BpJTm/X-`rrE,8nc&cm/d*,5p=]HGWOM6sQiIlgJcC<$JcCT,"76g'R)nXqeieN~> -!BU8Qkl@:PrrE,8nc&cm/d*,5p=]HGS[[hcPlMQdJcC<$JcCT,"76g'Q,r1jc8pI~> -!B:&NirG&9rrE,8nc&cm/d*,5p=]HGN47gLOT6-`JcC<$JcCT,"76g'OiZP`_`*)~> -!BpJTm/X-`rrBjOrrB%.m/u/Z!2+oCJcC<$L]7IL!#=>3m/bd$J,~> -!BU8Qkl@:PrrBjOrrAV"kl]WS!2+oCJcC<$L]7IL!#=50klK'jJ,~> -!B:&NirG&9rrBjOrrA"firddF!2+oCJcC<$L]7IL!#3r)irR%VJ,~> -!BpJTm/X,urrB%.m/pbs5Q666JcC<$L]7JU56,-6m/bd$J,~> -!BU8Qkl@9errAV"klY;n5Q666JcC<$L]7JU56,*5klK'jJ,~> -!B:&NirG%NrrA"fir`Qe5Q666JcC<$L]7JU56,!2irR%VJ,~> -!BpJTm/X,urrB%/m/t0,!nW#'JcC<$L&V8,!X$9]m/bd$J,~> -!BU8Qkl@9errAV#kl\X%!nW#'JcC<$L&V8,!X$0ZklK'jJ,~> -!B:&NirG%NrrA"gircgo!nW#'JcC<$L&V8,!X$!UirR%VJ,~> -!BpJTm/X,urrB%/m/f -!BU8Qkl@9errAV#klNjFEIn.@s+13&rrR0?3QgRec8pI~> -!B:&NirG%NrrA"girV1?EIn.@s+13&rrR0?36L7^_`*)~> -!BpJTm/X,urrB%0m/rmZ(@QhSJcC<$KDu&B(''oKm/bd$J,~> -!BU8Qkl@9errAV$kl[CT(@QhSJcC<$KDu&B(''iIklK'jJ,~> -!B:&NirG%NrrA"hirbVJ(@QhSJcC<$KDu&B('']EirR%VJ,~> -!BpJTm/X,urrB%1m/uDh!1JK=JcC<$Jc>h@!$((Dm/bd$J,~> -!BU8Qkl@9errAV%kl]i_!1JK=JcC<$Jc>h@!#sk?klK'jJ,~> -!B:&NirG%NrrA"iire!S!1JK=JcC<$Jc>h@!#sY9irR%VJ,~> -!BpJTm/X,urrB%1m/qM31Aue(JcC<$Jc>iN1&uLAm/bd$J,~> -!BU8Qkl@9errAV%klZ#-1Aue(JcC<$Jc>iN1&uF?klK'jJ,~> -!B:&NirG%NrrA"iira9$1Aue(JcC<$Jc>iN1&u= -!BpJTm/X,urrB%2m/tiC!Q0KgJcC<$JcGcM"2b-EeBR@]eieN~> -!BU8Qkl@9errAV&kl]9;!Q0KgJcC<$JcGcM"2b-Ed*:eUc8pI~> -!B:&NirG%NrrA"jirdI0!Q0KgJcC<$JcGcM"2b-EbK]&J_`*)~> -!BpJTm/X,umJs6!m/g5e=b6U(s+13$s8Ds!=TDFGm/bd$J,~> -!BU8Qkl@9emJrfjklOc`=b6U(s+13$s8Ds!=TDCFklK'jJ,~> -!B:&NirG%NmJr3YirW'X=b6U(s+13$s8Ds!=TD=DirR%VJ,~> -!BpJTm/X,umJs6"m/t*)#iL:6JcC<$JcG]K"5jFd^Wu3IeieN~> -!BU8Qkl@9emJrfkkl\O!#iL:6JcC<$JcG]K"5jFd]?]XAc8pI~> -!B:&NirG%NmJr3Zircal#iL:6JcC<$JcG]K"5jFd\'F"7_`*)~> -!BpJTm/X,umJs6"m/fENFb0RDs+13$s82ftFT=SMm/bd$J,~> -!BU8Qkl@9emJrfkklNsIFb0RDs+13$s82ftFT=PLklK'jJ,~> -!B:&NirG%NmJr3ZirV:BFb0RDs+13$s82ftFT=MKirR%VJ,~> -!BpJTm/X,umJs6#m/s9e'CLGOJcC<$JcGWI"7?g&W6ai3eieN~> -!BU8Qkl@9emJrflkl[d_'CLGOJcC<$JcGWI"7?g&VU+K-c8pI~> -!B:&NirG%NmJr3[irbtT'CLGOJcC<$JcGWI"7?g&U!Ma"_`*)~> -!BpJTm/X,umJs6$m/uW&!02X1JcC<$JcGQG"-*@1lHno!eieN~> -!BU8Qkl@9emJrfmkl^&r!02X1JcC<$JcGQG"-*@0k0W>nc8pI~> -!B:&NirG%NmJr3\ire3e!02X1JcC<$JcGQG"-*@/i6^Kb_`*)~> -!BpJTm/X-`mJsT1mJs6$m/rIN,5?`hJcC<$JcGQG"8F&?OjNIreieN~> -!BU8Qkl@:PmJsT1mJrfmklZtH,5?`hJcC<$JcGQG"8F&?O3m+lc8pI~> -!B:&NirG&9mJsT1mJr3\irb2>,5?`hJcC<$JcGQG"8F&?MpUJb_`*)~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WPIm&K)d]Ys+13$s+14CrrOtVK@0&eeieN~> -!BU8Qkl@:PmK*A%Zc)83S\XIkJH.KWs+13$s+14CrrOtVJ^N]_c8pI~> -!B:&NirG&9mK*A%Zc)83N54HTIK20Ts+13$s+14CrrOtVIaR0V_`*)~> -!BpJTm/X-`mK3I)'=78t"N!J4)O/qC!3*g%"6'so[XnI0s+13$s7QBo[K%!#dd7(d4b*~> -!BU8Qkl@:PmK3I)'=78t"N!J4)O/qC!1gsj"5X[k[XnI0s+13$s7QBo[K$utdcgeX3e.~> -!B:&NirG&9mK3I)'=78t"N!J4)O/qC!0"bS"5"7e[XnI0s+13$s7QBo[K$undc1AG2h1~> -!BpJTm/X-`mK_c3JcC<$JcG?A!]pC/dd7(d4b*~> -!BU8Qkl@:PmKc3JcC<$JcG?A!]pC-dcgeX3e.~> -!B:&NirG&9mKc3JcC<$JcG?A!]pC*dc1AG2h1~> -!BpJTm/X-`mKEUjs1f;Sp$MiZQ.>:&WP\$)h%'M#JcC<$JcC<$oD\p-!"[o7m/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$MiZQ.>:&S\jUng(+1uJcC<$JcC<$oD\p-!"[f4klK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$MiZQ.>:&N5FTWe.)JnJcC<$JcC<$oD\p-!"RN-irR%VJ,~> -!BpJTm/X-`mJm7drrR`OjnA*G'n$l):Ysdm!3*j&!c\3.JcC<$JcC<$nc&YY!--KT!S0Da~> -!BU8Qkl@:PmJm7drrR`OjnA*G'n$l):Ysdm!1h!k!cJ',JcC<$JcC<$nc&YY!,p?N!R<`V~> -!B:&NirG&9mJm7drrR`OjnA*G'n$l):Ysdm!0"eT!c.j)JcC<$JcC<$nc&YY!,U-E!Q-jH~> -!BpJTm/X-`mKEUjs1f;Sp$Mtc>27q8;;(@;WPe**g'7W!JcC<$JcC<$nc&^4!!h6-m/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$Mtc>27q8;;(@;S\s[of*;;sJcC<$JcC<$nc&^4!!h-*klK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$Mtc>27q8;;(@;N5OZXd0BZmJcC<$JcC<$nc&^4!!gp$irR%VJ,~> -!BpJTm/X-`mK_sIMC!)8%EJcC<$JcG3=!_iZ4eEm:f4b*~> -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=7;u"ZYB,mbJ<)mJs6)m/u,P!6TlmJcC<$JcG3="3LTPgstcmeieN~> -!BU8Qkl@:PmK3I)'=7;u"ZYB,mbJ<)mJrfrkl]TI!6TlmJcC<$JcG3="3LTPg"# -!B:&NirG&9mK3I)'=7;u"ZYB,mbJ<)mJr3airda=!6TlmJcC<$JcG3="3LTPe(*IZ_`*)~> -!BpJTm/X-`mK*A%Zh!MfP?Zo#>#X,B!3*p(!d+K6JcC<$JcC<$mJd5Y!-QiZ!S0Da~> -!BU8Qkl@:PmK*A%Zh!MfP?Zo#>#X,B!1h'm!cn?4JcC<$JcC<$mJd5Y!-?]T!R<`V~> -!B:&NirG&9mK*A%Zh!MfP?Zo#>#X,B!0"kV!cS-1JcC<$JcC<$mJd5Y!-$KK!Q-jH~> -!BpJTm/X-`mK!`U*cb%fjP!s+13$s+14;rr^1>&)Yt*!S0Da~> -!BU8Qkl@:PmK!&)5\"!R<`V~> -!B:&NirG&9mK!%bB4k!Q-jH~> -!BpJTm/X-`mJsT1mJs6*m/hV76%T&es+13$s6K[d5lc8_m/bd$J,~> -!BU8Qkl@:PmJsT1mJrfsklQ,16%T&es+13$s6K[d5lc2]klK'jJ,~> -!B:&NirG&9mJsT1mJr3birXB(6%T&es+13$s6K[d5lc)ZirR%VJ,~> -!BpJTm/X,umJs6+m/u>]!5=$aJcC<$JcG'9"24aKin*PueieN~> -!BU8Qkl@9emJrftkl]cT!5=$aJcC<$JcG'9"24aJhUgumc8pI~> -!B:&NirG%NmJr3cirdpH!5=$aJcC<$JcG'9"24aJf[o-a_`*)~> -!BpJTm/X,umJs6+m/hn?4+[E_s+13$s69Ob3rjobm/bd$J,~> -!BU8Qkl@9emJrftklQD94+[E_s+13$s69Ob3rji`klK'jJ,~> -!B:&NirG%NmJr3cirXZ04+[E_s+13$s69Ob3rj`]irR%VJ,~> -!BpJTm/X,umJs6,m/uPk!47=WJcC<$JcG!7"1/%Ikh,8'eieN~> -!BU8Qkl@9emJrfukl]ub!47=WJcC<$JcG!7"1/%HjOi\tc8pI~> -!B:&NirG%NmJr3dire0W!47=WJcC<$JcG!7"1/%Hhq6ri_`*)~> -!BpJTm/X,umJs6,m/r[T/,k,"JcC<$JcG!7"9'eNQe:[+eieN~> -!BU8Qkl@9emJrfukl[.M/,k,"JcC<$JcG!7"9'eNPh>4$c8pI~> -!B:&NirG%NmJr3dirbDD/,k,"JcC<$JcG!7"9'eNOkA[p_`*)~> -!BpJTm/X,umJs6-m/u]*!2"iBJcC<$JcFp5".oQDm+Lb,eieN~> -!BU8Qkl@9emJrg!kl^-!!2"iBJcC<$JcFp5".oQCkh52$c8pI~> -!B:&NirG%NmJr3eire9i!2"iBJcC<$JcFp5".oQBin<>m_`*)~> -!BpJTm/X,umJs6-m/sBh)u5'bJcC<$JcFp5"8Nl9X4ck@eieN~> -!BU8Qkl@9emJrg!kl[ja)u5'bJcC<$JcFp5"8Nl9W7gD9c8pI~> -!B:&NirG%NmJr3eirc(W)u5'bJcC<$JcFp5"8Nl9UtOc/_`*)~> -!BpJTm/X,umJs6-m/fHOM1P\Xs+13$s5j7^M#]`mm/bd$J,~> -!BU8Qkl@9emJrg!klO!JM1P\Xs+13$s5j7^M#]]lklK'jJ,~> -!B:&NirG%NmJr3eirV:BM1P\Xs+13$s5j7^M#]WjirR%VJ,~> -!BpJTm/X,urrB%?m/t6+%e,&LJcC<$JcFj3"7Qd#_qOJYeieN~> -!BU8Qkl@9errAV3kl\^$%e,&LJcC<$JcFj3"7Qd#^tS#Rc8pI~> -!B:&NirG%NrrA#"ircmn%e,&LJcC<$JcFj3"7Qd#]@u9G_`*)~> -!BpJTm/X,urrB%?m/g;gF+O@Bs+13$s5X+\Er]7pm/bd$J,~> -!BU8Qkl@9errAV3klOibF+O@Bs+13$s5X+\Er]4oklK'jJ,~> -!B:&NirG%NrrA#"irW*YF+O@Bs+13$s5X+\Er]+lirR%VJ,~> -!BpJTm/X,urrB%@m/tuG"5e\0JcC<$JcFd1"5a1cf\>coeieN~> -!BU8Qkl@9errAV4kl]E>"5e\0JcC<$JcFd1"5a1beD'3gc8pI~> -!B:&NirG%NrrA##irdU3"5e\0JcC<$JcFd1"5a1bceII\_`*)~> -!BpJTm/X,urrB%@m/hM4;1\aus+13$s5EtZ;#kjqm/bd$J,~> -!BU8Qkl@9errAV4klQ#.;1\aus+13$s5EtZ;#kdoklK'jJ,~> -!B:&NirG%NrrA##irX9%;1\aus+13$s5EtZ;#k[lirR%VJ,~> -!BpJTm/X,urrB%Am/uPh!5=$aJcC<$JcF^/"24aPkhPP+eieN~> -!BU8Qkl@9errAV5kl]u`!5=$aJcC<$JcF^/"24aPjP8u#c8pI~> -!B:&NirG%NrrA#$ire0T!5=$aJcC<$JcF^/"24aOhq[5m_`*)~> -!BpJTm/X-`rrBjOrrB%Am/iaW/V3qQs+13$s53hX/HD9qm/bd$J,~> -!BU8Qkl@:PrrBjOrrAV5klR4P/V3qQs+13$s53hX/HD0nklK'jJ,~> -!B:&NirG&9rrBjOrrA#$irYGF/V3qQs+13$s53hX/HD$jirR%VJ,~> -!BpJTm/X-`rrE,8_uB_9bO#?g!1JK=JcC<$JcFX-!h'*Hh!G-n4b*~> -!BU8Qkl@:PrrE,8_uB_-bNT'b!1JK=JcC<$JcFX-!h'*Gh!"jb3e.~> -!B:&NirG&9rrE,8_uB^qbMrX[!1JK=JcC<$JcFX-!h'*FguAFQ2h1~> -!BpJTm/X-`rrN07^r66QWQa`3_Z1>BJcC<$JcC<$hu -!BU8Qkl@:PrrN07^r66QS]p=#^]5#?JcC<$JcC<$hu -!B:&NirG&9rrN07^r66QN6L;a])WK:JcC<$JcC<$hu -!BpJTm/X-`rrW8:'Ys>?qu?^,g&D&Obj>I;!-EelJcC<$JcFR+!d"EJh -!BU8Qkl@:PrrW8:'Ys>?qu?^,g&D&Cbio15!-EelJcC<$JcFR+!d"EHh<=sc3e.~> -!B:&NirG&9rrW8:'Ys>?qu?^,g&D&2bi8b-!-EelJcC<$JcFR+!d"EFh;\OR2h1~> -!BpJTm/X-`rr`?%^_FTRrrJ:)g&D&Oc0YVk$N\q3s+13$s+14+rr^pT$fKn/!S0Da~> -!BU8Qkl@:Prr`?%^_FTRrrJ:)g&D&Cc05>c$N\q3s+13$s+14+rr^pT$f'V'!R<`V~> -!B:&NirG&9rr`?%^_FTRrrJ:)g&D&2c/SoX$N\q3s+13$s+14+rr^pT$eO7q!Q-jH~> -!BpJTm/X-`rriE&s1f>ao)Adf,imYY!3+61!f[1GJcC<$JcC<$g]%=@!0,k&!S0Da~> -!BU8Qkl@:PrriE&s1f>ao)Adf,imYY!1hC!!f?tDJcC<$JcC<$g]%=@!/fXt!R<`V~> -!B:&NirG&9rriE&s1f>ao)Adf,imYY!0#1_!f$bAJcC<$JcC<$g]%=@!/KFk!Q-jH~> -!BpJTm/X-`rr<&urrR`Op%/1aSmg:O!3+61!\FDMJcC<$JcC<$g]%>Q!%m'p!S0Da~> -!BU8Qkl@:Prr<&urrR`Op%/1aSmg:O!1hC!!\FDMJcC<$JcC<$g]%>Q!%m'l!R<`V~> -!B:&NirG&9rr<&urrR`Op%/1aSmg:O!0#1_!\48KJcC<$JcC<$g]%>Q!%Zpd!Q-jH~> -!BpJTm/X-`rriE&s1f>aoD\mj.+[&N!3+92"2"UKpjrHrs+13$s4dPUp_ -!BU8Qkl@:PrriE&s1f>aoD\mj.+[&N!1hF""1\CHpjrHrs+13$s4dPUp_hrt0e3e.~> -!B:&NirG&9rriE&s1f>aoD\mj.+[&N!0#4`"1/%CpjrHrs+13$s4dPUp_ -!BpJTm/X-`rr`?%^_FTTrrK,ofDbiMcKt[=!-EelJcC<$JcFF'!d"EJhsCHq4b*~> -!BU8Qkl@:Prr`?%^_FTTrrK,ofDbiAcKPC7!-EelJcC<$JcFF'!d"EHhrt0e3e.~> -!B:&NirG&9rr`?%^_FTTrrK,ofDbi0cJnt/!-EelJcC<$JcFF'!d"EFhr=aT2h1~> -!BpJTm/X-`rrW8:'Ys8=!AVOErrB%Em/uJX!SN&(JcC<$JcFF'"5*\^k2>V-eieN~> -!BU8Qkl@:PrrW8:'Ys8=!AVOErrAV9kl]oP!SN&(JcC<$JcFF'"5*\^io'&%c8pI~> -!B:&NirG&9rrW8:'Ys8=!AVOErrA#(ire'D!SN&(JcC<$JcFF'"5*\^gu.2n_`*)~> -!BpJTm/X-`rrN07_"%F*[Q<">!3+<3!gE[KJcC<$JcC<$fDbn9!0lF/!S0Da~> -!BU8Qkl@:PrrN07_"%F*[Q<">!1hI#!g3OIJcC<$JcC<$fDbn9!0Z:)!R<`V~> -!B:&NirG&9rrN07_"%F*[Q<">!0#7a!fd7EJcC<$JcC<$fDbn9!06!t!Q-jH~> -!BpJTm/X-`rrE,8nG`MOYh&gSWR'r53rkh&s+13$s+14%rrS_k45fK,eieN~> -!BU8Qkl@:PrrE,8nG`MOYh&gSS^6O%3WP_%s+13$s+14%rrS_k3oK6'c8pI~> -!B:&NirG&9rrE,8nG`MOYh&gSN6gMc3<5V$s+13$s+14%rrS_k3T/ou_`*)~> -!BpJTm/X-`rrBjOrrB%Fm/tZ8$Lr]IJcC<$JcF@%"7Z^!cf+6leieN~> -!BU8Qkl@:PrrBjOrrAV:kl]-1$Lr]IJcC<$JcF@%"7Z^!bi.dec8pI~> -!B:&NirG&9rrBjOrrA#)ird=&$Lr]IJcC<$JcF@%"7Z^!a5Q%Z_`*)~> -!BpJTm/X,urrB%Fm/hM4>Clg*s+13$s4.,N>6&p,m/bd$J,~> -!BU8Qkl@9errAV:klQ#.>Clg*s+13$s4.,N>6&j*klK'jJ,~> -!B:&NirG%NrrA#)irX9%>Clg*s+13$s4.,N>6&a'irR%VJ,~> -!BpJTm/X,urrB%Gm/u\t!4ma]JcC<$JcF:#"1eITm,IC5eieN~> -!BU8Qkl@9errAV;kl^,l!4ma]JcC<$JcF:#"1eITki1h-c8pI~> -!B:&NirG%NrrA#*ire9_!4ma]JcC<$JcF:#"1eISio8u!_`*)~> -!BpJTm/X,urrB%Gm/s`r*W:QhJcC<$JcF:#"8s5?[GpQSeieN~> -!BU8Qkl@9errAV;kl\3k*W:QhJcC<$JcF:#"8s5?ZJt*Lc8pI~> -!B:&NirG%NrrA#*ircFa*W:QhJcC<$JcF:#"8s5?Y2\IB_`*)~> -!BpJTm/X,urrB%Gm/gSoH*%#JkK:s1JcC<$JcDhO!dOcPip?ct4b*~> -!BU8Qkl@9errAV;klP,jH*%#JkK:s1JcC<$JcDhO!dOcOiopKh3e.~> -!B:&NirG%NrrA#*irWBaH*%#JkK:s1JcC<$JcDhO!dOcLio:'W2h1~> -!BpJTm/X,urrB%Hm/uPb!7S.O$0,r-G_h-">&WGPs+13$s0)G)df:$Ej6Zlu4b*~> -!BU8Qkl@9errAV&WGPs+13$s0)G)df:!@j66Ti3e.~> -!B:&NirG%NrrA#+ire0N!7S.O$0,r-G_h-">&WGPs+13$s0)G)df:!;j5U0X2h1~> -!BpJTm/X,urrB%Hm/j3d/?o-VpLA!Oqn<0FCLd*is+13$s02M)/-)X/m/bd$J,~> -!BU8Qkl@9errAV -!B:&NirG%NrrA#+irYnS/?o-VpLA!Oqn<0FCLd*is+13$s02M)/-)C(irR%VJ,~> -!BpJTm/X,urrB%Hm/g;gKX(OYoN8Kp^&kZDoR[$ns+13TrrRiR -!BU8Qkl@9errAV -!B:&NirG%NrrA#+irW*YKX(OYoN8Kp^&kZDoR[$ns+13TrrRiR;WHd<_`*)~> -!BpJTm/X,umJs68m/uJ[!8FdY!F)r(^&bTFJcC<$JcE"T"5 -!BU8Qkl@9emJrg,kl]oS!8FdY!F)r(^&bTFJcC<$JcE"T"5)c8pI~> -!B:&NirG%NmJr3pire'F!8FdY!F)r(^&bTFJcC<$JcE"T"5 -!BpJTm/X,umJs68m/is]26m/^V3:Ga!Ks:1s+13$s0;S*2#s?2m/bd$J,~> -!BU8Qkl@9emJrg,klRFV26m/^V3:Ga!Ks:1s+13$s0;S*2#s6/klK'jJ,~> -!B:&NirG%NmJr3pirYYL26m/^V3:Ga!Ks:1s+13$s0;S*2#s*+irR%VJ,~> -!BpJTm/X,umJs68m/g&`NNrK`B`5[F!<0_4!!*[Vrk8AGJcC<$JcE"T!f[1UjR!!!4b*~> -!BU8Qkl@9emJrg,klOQZNNrK`B`5[F!<0_4!!*[Vrk8AGJcC<$JcE"T!f[1SjQQ]j3e.~> -!B:&NirG%NmJr3pirVjRNNrK`B`5[F!<0_4!!*[Vrk8AGJcC<$JcE"T!f[1QjPp9Y2h1~> -!BpJTm/X,umJs69m/uGV!9:Bb!Uat*^&S03^&l!,$i[j@EUJDXJcC<$ZMt$e!"%cKm/bd$J,~> -!BU8Qkl@9emJrg-kl]lN!9:Bb!Uat*^&S03^&l!,$i[j@EUJDXJcC<$ZMt$e!"%WGklK'jJ,~> -!B:&NirG%NmJr3qire$B!9:Bb!Uat*^&S03^&l!,$i[j@EUJDXJcC<$ZMt$e!"%EAirR%VJ,~> -!BpJTm/X,umJs69m/j!^33iJac%l52!!)r2!K\E&^&a#6JcC<$JcE"T!]U1Sjm<*"4b*~> -!BU8Qkl@9emJrg-klRIW33iJac%l52!!)r2!K\E&^&a#6JcC<$JcE"T!]U1Pjllfk3e.~> -!B:&NirG%NmJr3qirY\M33iJac%l52!!)r2!K\E&^&a#6JcC<$JcE"T!]U1Ljl6BZ2h1~> -!BpJTm/X-`mJsT1mJs69m/g;gM6[']c%l52!!)u3!WWCRrk8Dgc%5nGs+13TrrS#W -!BU8Qkl@:PmJsT1mJrg-klOibM6[']c%l52!!)u3!WWCRrk8Dgc%5nGs+13TrrS#W -!B:&NirG&9mJsT1mJr3qirW*YM6[']c%l52!!)u3!WWCRrk8Dgc%5nGs+13TrrS#W;WZp>_`*)~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WR^A;XT0oUrr?a2^A\-4^Ae06%Uf:M!,-r`JcC<$YQ"YT!3PDN!S0Da~> -!BU8Qkl@:PmK*A%Zc)83S^ls+WW4TRrr?a2^A\-4^Ae06%Uf:M!,-r`JcC<$YQ"YT!352G!R<`V~> -!B:&NirG&9mK*A%Zc)83N7HqiV>r0Nrr?a2^A\-4^Ae06%Uf:M!,-r`JcC<$YQ"YT!2eo=!Q-jH~> -!BpJTm/X-`mK3I)'=7;u"j9.;#sc\emJs6:m/g\rIBWYOV3:Ga!Ks:1s+13$s0)G(I/m^ -!BU8Qkl@:PmK3I)'=7;u"j9.;#sc\emJrg.klP5mIBWYOV3:Ga!Ks:1s+13$s0)G(I/m[;klK'j -J,~> -!B:&NirG&9mK3I)'=7;u"j9.;#sc\emJr3rirWKdIBWYOV3:Ga!Ks:1s+13$s0)G(I/mR8irR%V -J,~> -!BpJTm/X-`mKf'NS*(]_jarrH?2otCI6 -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;Sp$MtgkO.d$#MJMFWRgG<]DrnQrrVgp[.h9:Zonu5JcC<$JcDnQ!ZM-P -kNr<$4b*~> -!BU8Qkl@:PmKEUjs1f;Sp$MtgkO.d$#MJMFS_!$,\H!SNrrVgp[.h9:Zonu5JcC<$JcDnQ!ZM-M -kNN#m3e.~> -!B:&NirG&9mKEUjs1f;Sp$MtgkO.d$#MJMFN7R"jZiD&IrrVgp[.h9:Zonu5JcC<$JcDnQ!ZM-H -kMlT\2h1~> -!BpJTm/X-`mJm7drrR`OjnA*G8pT@PG>$WW!3+Q:!d4QYXT&Cs@r&aS^'D;dA,!bPB(:HPJcC<$ -Yl=c>!-[Pm!S0Da~> -!BU8Qkl@:PmJm7drrR`OjnA*G8pT@PG>$WW!1h^*!d"EWXT&Cs@r&aS^'D;dA,!bPB(:HPJcC<$ -Yl=c>!-IDg!R<`V~> -!B:&NirG&9mJm7drrR`OjnA*G8pT@PG>$WW!0#Lh!c\3TXT&Cs@r&aS^'D;dA,!bPB(:HPJcC<$ -Yl=c>!-.2^!Q-jH~> -!BpJTm/X-`mKEUjs1f;Sp$N"6*<6'[f%KHkWRgG<0`\V]rs@_(>'P^TGZo%Grr3)jAfnU8s+13$ -s0;S*[/_rEm/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$N"6*<6'[f%KHkS_!$,0EAM\rs@_(>'PaUGZo%Grr3)jAfnU8s+13$ -s0;S*[/_oDklK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$N"6*<6'[f%KHkN7R"j0*&D[rs@_(>'PdVGZo%Grr3)jAfnU8s+13$ -s0;S*[/_lCirR%VJ,~> -!BpJTm/X-`mKfBi[m!X\Rurr_Fn\EE\f"1fRdnU^^ks+13Vrr_s$ -!nc`(!S0Da~> -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=7;u"U=/XmcOi.mJs6 -!BU8Qkl@:PmK3I)'=7;u"U=/XmcOi.mJrg0klR%K8u;OgK_tND"7]tF\q0m4s+13VrrPdmPN_63 -c8pI~> -!B:&NirG&9mK3I)'=7;u"U=/XmcOi.mJr3tirY8A8u;OgPPb+S"7]tF\q0m4s+13VrrPdmO6GU) -_`*)~> -!BpJTm/X-`mK*A%Zh!Mf/U-.1G:qS:!3+T;!`/l]VZ-\qEqKA6\fYPSJcC<$JcE.X!gE[]kj8E% -4b*~> -!BU8Qkl@:PmK*A%Zh!Mf/U-.1G:qS:!1ha+!_r`[VZ-\qK(T'F\fYPSJcC<$JcE.X!gE[[kii,n -3e.~> -!B:&NirG&9mK*A%Zh!Mf/U-.1G:qS:!0#Oi!_`TYVZ-\qP4\bV\fYPSJcC<$JcE.X!gE[Yki2]] -2h1~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT1mJs6=m/j]r.Ad%Fmsss."2,=dpOW?qs+13ZrrOVL[d!/[eieN~> -!BU8Qkl@:PmJsT1mJrg1klS0k.Ad%FnW*/>"2,=dpOW?qs+13ZrrOVLZg$]Tc8pI~> -!B:&NirG&9mJsT1mJr3uirZCa.Ad%Fnt#=N"2,=dpOW?qs+13ZrrOVLYNb'J_`*)~> -!BpJTm/X,umJs6=m/hJ3D5I75k_J[-"79/@d"24Js+13[rrR$;GNnJqeieN~> -!BU8Qkl@9emJrg1klPu-D5I75lBUl="79/@d"24Js+13[rrR$;Fm8,kc8pI~> -!B:&NirG%NmJr3uirX6$D5I75m@s+M"79/@d"24Js+13[rrR$;Ep;Tb_`*)~> -!BpJTm/X,umJs6=m/f6IZ).I$iK!@+"/?WhrIP!"s+13]rrTG*39ff2eieN~> -!BU8Qkl@9emJrg1klNgEZ).I$jI>T;"/?WhrIP!"s+13]rrTG*39fZ.c8pI~> -!B:&NirG%NmJr3uirV+=Z).I$kbmkK"/?WhrIP!"s+13]rrTG*2X06&_`*)~> -!BpJTm/X,umJs6>m/u>O"Rr8f!SWh+rr_1D5N%+mJcC<$]Di!&"9mfMm/bd$J,~> -!BU8Qkl@9emJrg2kl]cG"Rr8f!T'O;rr_1D5N%+mJcC<$]Di!&"9mZIklK'jJ,~> -!B:&NirG%NmJr4!irdp:"Rr8f!TL6Krr_1D5N%+mJcC<$]Di!&"9dBBirR%VJ,~> -!BpJTm/X,umJs6>m/j3d32HQTd[]\("9")mUOiGrs+13^rrP.[W9WaNeieN~> -!BU8Qkl@9emJrg2klR^^32HQTf;J!8"9")mUOiGrs+13^rrP.[VX!CHc8pI~> -!B:&NirG%NmJr4!irYnS32HQTgp6;H"9")mUOiGrs+13^rrP.[U$CY=_`*)~> -!BpJTm/X,umJs6>m/h#&I&-cCbbOJ'"4/T#m=G:gs+13`rrRQJC?k0eeieN~> -!BU8Qkl@9emJrg2klPMuI&-cCdB;d7"4/T#m=G:gs+13`rrRQJB^4g_c8pI~> -!B:&NirG%NmJr4!irWclI&-cCf=:,G"4/T#m=G:gs+13`rrRQJAa8:V_`*)~> -!BpJTm/X,umJs6>m/ed<^SLl1`2`)%"8?aI^OcE9s+13arrTq8/*cL&eieN~> -!BU8Qkl@9emJrg2klN=7^SLl1bI$O6"8?aI^OcE9s+13arrTq8.dH7!c8pI~> -!B:&NirG%NmJr4!irUY0^SLl1dCnfE"8?aI^OcE9s+13arrTq8.I,po_`*)~> -!BpJTm/X,umJs6?m/u/F$N$Y!!PYi%rr]tIH2<*lJcC<$_#FN6$3AuKm/bd$J,~> -!BU8Qkl@9emJrg3kl]W?$N$Y!!QDY5rr]tIH2<*lJcC<$_#FN6$3AlHklK'jJ,~> -!B:&NirG%NmJr4"irdd3$N$Y!!R/IErr]tIH2<*lJcC<$_#FN6$3AZBirR%VJ,~> -!BpJTm/X,urrB%Pm/j$_6)4G\[^kQ#"6rN=hLY]Xs+13crrPIdU[.:JeieN~> -!BU8Qkl@9errAVDklRLX6)4G\^;/n2"6rN=hLY]Xs+13crrPIdT^1hCc8pI~> -!B:&NirG%NrrA#3irY_N6)4G\`lR -!BpJTm/X,urrB%Pm/h#&I\ZoDYJB9""9+AtVh+l!s+13drrRWLC?t6feieN~> -!BU8Qkl@9errAVDklPQ!I\ZoD\B!_2"9+AtVh+l!s+13drrRWLC$Y!ac8pI~> -!B:&NirG%NrrA#3irWfmI\ZoD_9V0B"9+AtVh+l!s+13drrRWLB'\IX_`*)~> -!BpJTm/X,urrB%Pm/f$C];,B,W5mru"3r9&oR[$ns+13frrTe41@+<.eieN~> -!BU8Qkl@9errAVDklNR>];,B,ZH_G0"3r9&oR[$ns+13frrTe41$e')c8pI~> -!B:&NirG%NrrA#3irUn7];,B,]@5g?"3r9&oR[$ns+13frrTe40^Ia"_`*)~> -!BpJTm/X,urrB%Qm/uAP"S8Dg!MRfurr_n%-dI;CJcC<$`;]r2"9miPm/bd$J,~> -!BU8Qkl@9errAVEkl]fH"S8Dg!Nac0rr_n%-dI;CJcC<$`;]r2"9m]LklK'jJ,~> -!B:&NirG%NrrA#4irds;"S8Dg!Og\@rr_n%-dI;CJcC<$`;]r2"9dEEirR%VJ,~> -!BpJTm/X,urrB%Qm/jEj25:*ORap?r"/corrdk*#s+13hrrP%XY3bNVeieN~> -!BU8Qkl@9errAVEklRmc25:*OV:sl-"/corrdk*#s+13hrrP%XX6f'Oc8pI~> -!B:&NirG%NrrA#4irZ+Y25:*OZ/4F="/corrdk*#s+13hrrP%XVsNFE_`*)~> -!BpJTm/X-`rrBjOrrB%Qm/hG2Eh`R7PMG'q"5Z"1l@Jtds+13irrR3@G3nSseieN~> -!BU8Qkl@:PrrBjOrrAVEklPr,Eh`R7TA\W,"5Z"1l@Jtds+13irrR3@FR85mc8pI~> -!B:&NirG&9rrBjOrrA#4irX3#Eh`R7X5r1<"5Z"1l@Jtds+13irrR3@EU;]d_`*)~> -!BpJTm/X-`rrE,8_uB_9g[,&,!3`-s!K?'qrr`+C'#K5"JcC<$a8Z4E!'fi;!S0Da~> -!BU8Qkl@:PrrE,8_uB_-gZ\c'!3`-s!L`*,rr`+C'#K5"JcC<$a8Z4E!']c6!R<`V~> -!B:&NirG&9rrE,8_uB^qgZ&>t!3`-s!N,, -!BpJTm/X-`rrN07^r66QWSHkClOEpWUAk7JlJ2C@^CZW\s+13$s2b3Bjo>nWmHjr*4b*~> -!BU8Qkl@:PrrN07^r66QS_WH3k7.LSUAk7Xm+hUB^CZW\s+13$s2b3Bjo>nSmHFYs3e.~> -!B:&NirG&9rrN07^r66QN83Fqi=,eLUAk7en(dpE^CZW\s+13$s2b3Bjo>kLmGe5b2h1~> -!BpJTm/X-`rrW8:'Ys>?"RfD"'S"d8!3+c@!lk9^U&P.Bn_='Gh(<77JcC<$JcEjl!Zh?^mHjr* -4b*~> -!BU8Qkl@:PrrW8:'Ys>?"RfD"'S"d8!1hp0!lP'[U&P.Po@s9Ih(<77JcC<$JcEjl!Zh?[mHFYs -3e.~> -!B:&NirG&9rrW8:'Ys>?"RfD"'S"d8!0#^n!l"^VU&P._o\9BJh(<77JcC<$JcEjl!Zh?VmGe5b -2h1~> -!BpJTm/X-`rr`?%^_FTVrrlP5mHn2Ng&D&Oh!G0.!*#Zl!I+=mrr_jh4m@OtJcC<$b5VNB!0us= -!S0Da~> -!BU8Qkl@:Prr`?%^_FTVrrlP5mHn2Ng&D&Ch!"m(!*#Zl!J^F(rr_jh4m@OtJcC<$b5VNB!0cg7 -!R<`V~> -!B:&NirG&9rr`?%^_FTVrrlP5mHn2Ng&D&2guAHs!*#Zl!L -!BpJTm/X-`rriE&s1f>ap&>1(mf3=S4PB`7WSHkB@K;:[rrW1?rn7;RrI#g7JcC<$JcEpn!f?te -mHjr*4b*~> -!BU8Qkl@:PrriE&s1f>ap&>1(mf3=S4PB`7S_WH2?iZ(YrrW1Nrn7;RrI#g7JcC<$JcEpn!f?tc -mHFYs3e.~> -!B:&NirG&9rriE&s1f>ap&>1(mf3=S4PB`7N83Fp?3#kWrrW1^rn7;RrI#g7JcC<$JcEpn!f?ta -mGe5b2h1~> -!BpJTm/X-`rr<&urrR`Op%JCh$h"&pm1@tN!3+c@!\XPhUAk8hGLlcqWYVUcs+13$s31KE^]6%T -m/bd$J,~> -!BU8Qkl@:Prr<&urrR`Op%JCh$h"&pm1@tN!1hp0!\OJgUAk8iL=ZA+WYVUcs+13$s31KE^]6"S -klK'jJ,~> -!B:&NirG&9rr<&urrR`Op%JCh$h"&pm1@tN!0#^n!\FDfUAk8iQ.Gs:WYVUcs+13$s31KE^]5tR -irR%VJ,~> -!BpJTm/X-`rriE&s1f>ap&>1pA+&bn"PNeTWSQqDjokkYUAk8aIb"H#cQIZ7JcC<$JcF$q"7lTu -k3hU;eieN~> -!BU8Qkl@:PrriE&s1f>ap&>1pA+&bn"PNeTS_`N4iWTGUUAk8cN7Iq1cQIZ7JcC<$JcF$q"7lTu -ipQ%3c8pI~> -!B:&NirG&9rriE&s1f>ap&>1pA+&bn"PNeTN8 -!BpJTm/X-`rr`?%^_FTVrrq^c#oA.0g&D&OhBgrr_LK;"K8 -!BU8Qkl@:Prr`?%^_FTVrrq^c#oA.0g&D&Ch<>!L!%suF!UQ!!rr_LK;"K8 -!B:&NirG&9rr`?%^_FTVrrq^c#oA.0g&D&2h;\RA!%suF!Ul]2rr_LK;"K8 -!BpJTm/X-`rrW8:'Ys2;!M3HIrrB%Sm/i7I?_RK#j,DIe"8QO\h1>TWs+13rrrQO-NUH07eieN~> -!BU8Qkl@:PrrW8:'Ys2;!M3HIrrAVGklQ_B?_RK#k*a]u"8QO\h1>TWs+13rrrQO-MXK^0c8pI~> -!B:&NirG&9rrW8:'Ys2;!M3HIrrA#6irXu9?_RK#l))r0"8QO\h1>TWs+13rrrQO-L[O1'_`*)~> -!BpJTm/X-`rrN07_".L/@,^g_*nT*F!3+fA!abqgU&P/KPL9C3PS(c`s+13$s3UcINrWPTm/bd$ -J,~> -!BU8Qkl@:PrrN07_".L/@,^g_*nT*F!1hs1!aYkfU&P/OT@*Z?PS(c`s+13$s3UcINrWMSklK'j -J,~> -!B:&NirG&9rrN07_".L/@,^g_*nT*F!0#ao!a>YcU&P/SX3pqKPS(c`s+13$s3UcINrWDPirR%V -J,~> -!BpJTm/X-`rrE,8nc&`\)%&dWf`(rNh -!BU8Qkl@:PrrE,8nc&`\)%&dWf`(rBh<=tr!5G6-!SXBsrrU%LR=YBhs+13trrTq81@FB-c8pI~> -!B:&NirG&9rrE,8nc&`\)%&dWf`(r1h;\Pk!5G6-!T(*.rrU%LR=YBhs+13trrTq81%+'&_`*)~> -!BpJTm/X-`rrBjOrrB%Tm/uV[!UcZ]!R@Cbrr_")DZ#(cJcC<$e,KO -!BU8Qkl@:PrrBjOrrAVHkl^&S!UcZ]!Rn-rrr_")DZ#(cJcC<$e,KO -!B:&NirG&9rrBjOrrA#7ire3G!UcZ]!SOp-rr_")DZ#(cJcC<$e,KO -!BpJTm/X,urrB%Tm/k?/+/&W7a/I;`"7SfNn:CUjs+14!rrO8BaRAKseieN~> -!BU8Qkl@9errAVHklSg(+/&W7c*GXp"7SfNn:CUjs+14!rrO8B`UE$lc8pI~> -!B:&NirG%NrrA#7ir[!r+/&W7e@X$+"7SfNn:CUjs+14!rrO8B_!g:a_`*)~> -!BpJTm/X,urrB%Tm/idX:S@^g^ou#_"8m$cgO]BUs+14"rrPsrSF>hGeieN~> -!BU8Qkl@9errAVHklR7Q:S@^ga10Co"8m$cgO]BUs+14"rrPsrRIBA@c8pI~> -!B:&NirG%NrrA#7irYJG:S@^gcG@d*"8m$cgO]BUs+14"rrPsrQ1*`6_`*)~> -!BpJTm/X,urrB%Tm/h2+J"ZfB\[K]]!gsn>JcC<$JcF:#!e12gn*L/,4b*~> -!BU8Qkl@9errAVHklP]%J"ZfB^qS"l!gsn>JcC<$JcF:#!e12en*'ku3e.~> -!B:&NirG%NrrA#7irWrqJ"ZfBaMuF'!gsn>JcC<$JcF:#!e12bn)FGd2h1~> -!BpJTm/X,urrB%Tm/ffYX.]InZ+eB\!koM>JcC<$JcF=$!il;ln*L/,4b*~> -!BU8Qkl@9errAVHklO?TX.]In]#Dhl!koM>JcC<$JcF=$!il;kn*'ku3e.~> -!B:&NirG%NrrA#7irVXLX.]In_p$:'!koM>JcC<$JcF=$!il;in)FGd2h1~> -!BpJTm/X,urrB%Tm/eF2e=cgBWl3$Z"5>8Br.4m!s+14&rrU[M+n+e!eieN~> -!BU8Qkl@9errAVHklN".e=cgB[*-Sk"5>8Br.4m!s+14&rrU[M+n+Xrc8pI~> -!B:&NirG%NrrA#7irU>'e=cgB^!Xt%"5>8Br.4m!s+14&rrU[M+Re=k_`*)~> -!BpJTm/X,urrB%Um/uJQ"Sn_j!Mdl[rr_a\8+;*0JcC<$g&D0M"9[fUm/bd$J,~> -!BU8Qkl@9errAVIkl]oI"Sn_j!Nshkrr_a\8+;*0JcC<$g&D0M"9[ZQklK'jJ,~> -!B:&NirG%NrrA#8ire'="Sn_j!P$b&rr_a\8+;*0JcC<$g&D0M"9[HKirR%VJ,~> -!BpJTm/X,urrB%Um/k-).%gM?SC5IX"8m$cgO]BUs+14'rrOSK_XQpneieN~> -!BU8Qkl@9errAVIklSU".%gM?Vq8uh"8m$cgO]BUs+14'rrOSK^[UIgc8pI~> -!B:&NirG%NrrA#8irZdl.%gM?ZJ -!BpJTm/X,umJs6Dm/idX;4mjhQ.j4W!gsY;JcC<$JcFI(!`8rfnEg8-4b*~> -!BU8Qkl@9emJrg8klR7Q;4mjhU#*cg!gsY;JcC<$JcFI(!`8rcnEBu!3e.~> -!B:&NirG%NmJr4'irYJG;4mjhXl@>"!gsY;JcC<$JcFI(!`8r_nDaPe2h1~> -!BpJTm/X,umJs6Dm/hD1HCt3P;JcC<$JcFL)!dXihnEg8-4b*~> -!BU8Qkl@9emJrg8klPo+HCt3P;JcC<$JcFL)!dXifnEBu!3e.~> -!B:&NirG%NmJr4'irX0"HCt3P;JcC<$JcFL)!dXicnDaPe2h1~> -!BpJTm/X,umJs6Dm/g&`US%PeLZlYU"5>8Br.4m!s+14+rrSqq:[m`PeieN~> -!BU8Qkl@9emJrg8klOQZUS%PeQ0Q9e"5>8Br.4m!s+14+rrSqq:%7BJc8pI~> -!B:&NirG%NmJr4'irVjRUS%PeU@#ku"5>8Br.4m!s+14+rrSqq9CUsB_`*)~> -!BpJTm/X,umJs6Dm/eg=b+J\7JFCAT"7SfNn:CUjs+14,rrU=C/F`$-eieN~> -!BU8Qkl@9emJrg8klNC9b+J\7Nq(!d"7SfNn:CUjs+14,rrU=C/F_m)c8pI~> -!B:&NirG%NmJr4'irU_2b+J\7SasYt"7SfNn:CUjs+14,rrU=C/+DR"_`*)~> -!BpJTm/X,umJs6Dm/d[rm@XCZH1o)S"8m$cgO]BUs+14-rrVQf%.NWbeieN~> -!BU8Qkl@9emJrg8klM7nm@XCZM"eac"8m$cgO]BUs+14-rrVQf%.NK^c8pI~> -!B:&NirG%NmJr4'irTVhm@XCZQh\Ds"8m$cgO]BUs+14-rrVQf%.N9X_`*)~> -!BpJTm/X-`mJsT1mJs6Em/kr@&YB"'Er<]P!gsn>JcC<$JcFX-!YGFcna-A.4b*~> -!BU8Qkl@:PmJsT1mJrg9klTB8&YB"'K)NIa!gsn>JcC<$JcFX-!YGF_n`^)"3e.~> -!B:&NirG&9mJsT1mJr4(ir[O,&YB"'P5W/q!gsn>JcC<$JcFX-!YGFYn`'Yf2h1~> -!BpJTm/X-`mK!J!W-uPrrTnOR=YBhs+14.rrP"W\FJqeeieN~> -!BU8Qkl@:PmK!J!W.P`rrTnOR=YBhs+14.rrP"W[INJ^c8pI~> -!B:&NirG&9mK!J!W8.prrTnOR=YBhs+14.rrP"WYjp`S_`*)~> -!BpJTm/X-`mK*A%Zc)83WSm.FQiL3[rrM_=]`/)g.;o'7s+13$s5O%[ -!BU8Qkl@:PmK*A%Zc)83S`&`6PlOmXrrMeM]`/)g.;o'7s+13$s5O%[ -!B:&NirG&9mK*A%Zc)83N8W^tOT8ITrrMh]]`/)g.;o'7s+13$s5O%[ -!BpJTm/X-`mK3I)'=78trW)ob"mp1<&9.$qmJs6Em/hJ3HCt3 -!BU8Qkl@:PmK3I)'=78trW)ob"mp1<&9.$qmJrg9klPu-HCt3'\"7SfNn:CUjs+141rrRKH -Fn+\sc8pI~> -!B:&NirG&9mK3I)'=78trW)ob"mp1<&9.$qmJr4(irX6$HCt3 -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;So'QJXrU'hHYjUq`2rX0)WSm.F2up[brrLu<\GlVu&]B8#JcC<$jo5Cr -!''N9!S0Da~> -!BU8Qkl@:PmKEUjs1f;So'QJXrU'hHYjUq`2rX0)S`&`62up[brrM,M\GlVu&]B8#JcC<$jo5Cr -!''N5!R<`V~> -!B:&NirG&9mKEUjs1f;So'QJXrU'hHYjUq`2rX0)N8W^t2?:I`rrM5\\GlVu&]B8#JcC<$jo5Cr -!&jB-!Q-jH~> -!BpJTm/X-`mJm7drrR`Ojn%m?!<)cm/bd$J,~> -!BU8Qkl@:PmJm7drrR`Ojn%m?!<) -!B:&NirG&9mJm7drrR`Ojn%m?!<) -!BpJTm/X-`mKEUjs1f;So'QJXrU'gjm-a<."6&YJWT!4HlNRCaTDnr=T!nY#c5N4(s+13$s6'Ca -pAkKao'HJ/4b*~> -!BU8Qkl@:PmKEUjs1f;So'QJXrU'gjm-a<."6&YJS`/f8k61n\TDnrBWODg.c5N4(s+13$s6'Ca -pAkH\o'$2#3e.~> -!B:&NirG&9mKEUjs1f;So'QJXrU'gjm-a<."6&YJN8`e!i<98VTDnrH['ou9c5N4(s+13$s6'Ca -pAkHVo&Bbg2h1~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=72r!!)uc"Z -!BU8Qkl@:PmK3I)'=72r!!)uc"Z -!B:&NirG&9mK3I)'=72r!!)uc"Z -!BpJTm/X-`mK*A%Zg[;^!<)=1m-bb!3+rE!hoZiT)Si'['Tc7mQ=hQJcC<$JcG$8!_r`i -o'HJ/4b*~> -!BU8Qkl@:PmK*A%Zg[;^!<)=1m-bb!1i*5!hTHfT)Si/]X.V?mQ=hQJcC<$JcG$8!_r`f -o'$2#3e.~> -!B:&NirG&9mK*A%Zg[;^!<)=1m-bb!0#ms!h00bT)Si7`3]IGmQ=hQJcC<$JcG$8!_r`b -o&Bbg2h1~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT1mJs6Fm/h,)LS"MHXhq@C"8cCemXbChs+14:rrRrUD=[&peieN~> -!BU8Qkl@:PmJsT1mJrg:klPW#LS"MH[`PfS"8cCemXbChs+14:rrRrUC\$]jc8pI~> -!B:&NirG&9mJsT1mJr4)irWopLS"MH^X07c"8cCemXbChs+14:rrRrUC%C9b_`*)~> -!BpJTm/X,umJs6Fm/gAiSt>r_VTH(B"9* -!BU8Qkl@9emJrg:klOlcSt>r_Yg9QR"9*JUc8pI~> -!B:&NirG%NmJr4)irW0[St>r_]%+%b"9* -!BpJTm/X,umJs6Fm/fZU[%@9uT?sb@!f%uSJcC<$JcG0 -!BU8Qkl@9emJrg:klO0O[%@9uWn"9P!f%uSJcC<$JcG0 -!B:&NirG%NmJr4)irVLH[%@9u[+hb`!f%uSJcC<$JcG0 -!BpJTm/X,umJs6Fm/em?bF\_7R+JJ?!h:1SJcC<$JcG3=!m:Qro'HJ/4b*~> -!BU8Qkl@9emJrg:klNI;bF\_7UYN!O!h:1SJcC<$JcG3=!m:Qro'$2#3e.~> -!B:&NirG%NmJr4)irUb3bF\_7YMcP_!h:1SJcC<$JcG3=!m:Qpo&Bbg2h1~> -!BpJTm/X,umJs6Fm/e1+iL^&MOP[)=!j3-RJcC<$JcG6>!oX+to'HJ/4b*~> -!BU8Qkl@9emJrg:klM_&iL^&MS`6aN!j3-RJcC<$JcG6>!oX+so'$2#3e.~> -!B:&NirG%NmJr4)irU(uiL^&MWTC5]!j3-RJcC<$JcG6>!oX+so&Bbg2h1~> -!BpJTm/X,umJs6Gm/u\Z!;E)b!K-!>rrU+NY^uh*s+14?rr_uq#41sK!S0Da~> -!BU8Qkl@9emJrg;kl^,R!;E)b!LN#NrrU+NY^uh*s+14?rr_uq#3b[C!R<`V~> -!B:&NirG%NmJr4*ire9F!;E)b!Mo%^rrU+NY^uh*s+14?rr_uq#3,77!Q-jH~> -!BpJTm/X,umJs6Gm/l,E%\ -!BU8Qkl@9emJrg;klTQ=%\ -!B:&NirG%NmJr4*ir[a2%\ -!BpJTm/X,umJs6Gm/kE1,b=r9I.O?;!ne]TJcC<$JcG<@![IcgoBcS04b*~> -!BU8Qkl@9emJrg;klSj),b=r9MY3tK!ne]TJcC<$JcG<@![IccoB?;$3e.~> -!B:&NirG%NmJr4*ir[$s,b=r9RJ*W[!ne]TJcC<$JcG<@![Ic^oA]kh2h1~> -!BpJTm/X,urrB%Xm/jfu2kBsLFS_s9"61kVrdk*#s+14BrrP+Z\b#1heieN~> -!BU8Qkl@9errAVLklS9n2kBsLK_q_J"61kVrdk*#s+14BrrP+Z[e&_ac8pI~> -!B:&NirG%NrrA#;irZIc2kBsLPP_ -!BpJTm/X,urrB%Xm/j9f8"T_]rGne8"7.pXr.4m!s+14CrrP[jWq5TYeieN~> -!BU8Qkl@9errAVLklRa_8"T_]rIUpH"7.pXr.4m!s+14CrrP[jVt9-Rc8pI~> -!B:&NirG%NrrA#;irYtU8"T_]rK=&X"7.pXr.4m!s+14CrrP[jU\!LH_`*)~> -!BpJTm/X,urrB%Xm/idX -!BU8Qkl@9errAVLklR:R[G"7no[pjrHrs+14DrrQ4$Re,bEc8pI~> -!B:&NirG%NrrA#;irYMH -!BpJTm/X,urrB%Xm/i:JAtK#'msq56"8Gh`o7?pms+14ErrQd4Nq;W=eieN~> -!BU8Qkl@9errAVLklQbCAtK#'nW'FF"8Gh`o7?pms+14ErrQd4Mt?06c8pI~> -!B:&NirG%NrrA#;irY#:AtK#'nsuTV"8Gh`o7?pms+14ErrQd4M"BX-_`*)~> -!BpJTm/X,urrB%Xm/hb;G+S^7k_Gr5"8lahm",1fs+14FrrR?DJ+N%.eieN~> -!BU8Qkl@9errAVLklQ85G+S^7lBS.E"8lahm",1fs+14FrrR?DIIl\(c8pI~> -!B:&NirG%NrrA#;irXK+G+S^7m@pBU"8lahm",1fs+14FrrR?DH1U%s_`*)~> -!BpJTm/X-`rrBjOrrB%Xm/h2+L7\DGiJsZ4"9*Qqj+75]s+14GrrRoTDtE>seieN~> -!BU8Qkl@:PrrBjOrrAVLklP]%L7\DGjI;nD"9*Qqj+75]s+14GrrRoTD=cumc8pI~> -!B:&NirG&9rrBjOrrA#;irWrqL7\DGkbk0T"9*Qqj+75]s+14GrrRoTC@gHd_`*)~> -!BpJTm/X-`rrE,8_uB_9ip?eT!1'5V!SWg3rrS-%fn'0Ss+14HrrSJd@.WadeieN~> -!BU8Qkl@:PrrE,8_uB_-iopMO!1'5V!T'NCrrS-%fn'0Ss+14HrrSJd?h -!B:&NirG&9rrE,8_uB^qio:)F!1'5V!TL5SrrS-%fn'0Ss+14HrrSJd>k?tV_`*)~> -!BpJTm/X-`rrN07^r66QWT*:H;ui_crrLT=TDntb)U3j5JcC<$qu6_n!*&RW!S0Da~> -!BU8Qkl@:PrrN07^r66QS`8l8;ZNVbrrLcMTDntb)U3j5JcC<$qu6_n!)rLR!R<`V~> -!B:&NirG&9rrN07^r66QN8ik!;#mD`rrLr]TDntb)U3j5JcC<$qu6_n!)`@J!Q-jH~> -!BpJTm/X-`rrW8:'Ys;>rW)lrrW(jU!3+uF!_WNrT)Si8URqJeYS"hKrrpDgE-loN[Jp@,dF%lC -s+14)rrT>'9CqNOeieN~> -!BU8Qkl@:PrrW8:'Ys;>rW)lrrW(jU!1i-6!_NHqT)Si=Y+GXpYS"hKrrpDgE-loN[Jp@,dF%lC -s+14)rrT>'9(V9Jc8pI~> -!B:&NirG&9rrW8:'Ys;>rW)lrrW(jU!0#pt!_<'8FtjB_`*)~> -!BpJTm/X-`rr`?%^_FTSrr<&qrr<&VrrB%Xm/fWT\"CsN%^:]&%jLP9q -``?f,JSA0)\Gl`PH>mkM`e"/krrTY06hB[GeieN~> -!BU8Qkl@:Prr`?%^_FTSrr<&qrr<&VrrAVLklO0O\"CsN%^:]&%jLP9q -``?f,JSA0)\Gl`PH>mkM`e"/krrTY06M'FBc8pI~> -!B:&NirG&9rr`?%^_FTSrr<&qrr<&VrrA#;irVIG\"CsN%^:]&%jLP9q -``?f,JSA0)\Gl`PH>mkM`e"/krrTY05kF":_`*)~> -!BpJTm/X-`rriE&s1f>ao)A[iqYpNqhu<\Uip?e-!5Y9,!PPe/rrUF`TDeck^0/)F^&koL^:aII -r-s@r^&iq:r4N%9jBI5K^:q73>NCA8Y5\R>!'0Z -!BU8Qkl@:PrriE&s1f>ao)A[iqYpNqhu<\IiopM(!5Y9,!Q;U?rrUF`TDeck^0/)F^&koL^:aII -r-s@r^&iq:r4N%9jBI5K^:q73>NCA8Y5\R>!''T7!R<`V~> -!B:&NirG&9rriE&s1f>ao)A[iqYpNqhu<\8io:)!!5Y9,!R&BNrrUF`TDeck^0/)F^&koL^:aII -r-s@r^&iq:r4N%9jBI5K^:q73>NCA8Y5\R>!&sN0!Q-jH~> -!BpJTm/X-`rr<&urrR`Op%/1`!;c]q!8meVWT*:H0`]@frrKL -!BU8Qkl@:Prr<&urrR`Op%/1`!;c]q!8meVS`8l80EB7errKgMS,W]G+H6@#d:r?h!GTrprrI#2 -q7Zm'DS?&O^0/)F^&koL^4H -!B:&NirG&9rr<&urrR`Op%/1`!;c]q!8meVN8ik!0*'.drrL*]S,W]G+H6@#d:r?h!GTrprrI#2 -q7Zm'DS?&O^0/)F^&koL^4H -!BpJTm/X-`rriE&s1f>ao)A[iqYpNqhu<\Uip?dq!7RP>!Na2-rrqF4H21[XpV$^B>Pc,7!LAuE -^&aIa^]+>^C%o=BC!hM3Yl=dR!%@I+!S0Da~> -!BU8Qkl@:PrriE&s1f>ao)A[iqYpNqhu<\IiopLl!7RP>!Og+=rrqF4H21[XpV$^B>Pc,7!LAuE -^&aIa^]+>^C%o=BC!hM3Yl=dR!%7C&!R<`V~> -!B:&NirG&9rriE&s1f>ao)A[iqYpNqhu<\8io:(e!7RP>!Pd!MrrqF4H21[XpV$^B>Pc,7!LAuE -^&aIa^]+>^C%o=BC!hM3Yl=dR!%. -!BpJTm/X-`rr`?%^_FTSrr<&qrr<&VrrB%Xm/e@0h4FWIV955+"7.p6U%Q,#ToHkf!U":l^&`'5 -_>aT5>J9dF!khh7JcE"T!o3huoBcS04b*~> -!BU8Qkl@:Prr`?%^_FTSrr<&qrr<&VrrAVLklMq,h4FWIYL&^;"7.p6U%Q,#ToHkf!U":l^&`'5 -_>aT5>J9dF!khh7JcE"T!o3huoB?;$3e.~> -!B:&NirG&9rr`?%^_FTSrr<&qrr<&VrrA#;irU8%h4FWI\^m2K"7.p6U%Q,#ToHkf!U":l^&`'5 -_>aT5>J9dF!khh7JcE"T!o3htoA]kh2h1~> -!BpJTm/X-`rrW8:'Ys5 -!BU8Qkl@:PrrW8:'Ys5 -!B:&NirG&9rrW8:'Ys5 -!BpJTm/X-`rrN07_!h:'!;c]q!8meVWT*:H'*. -!BU8Qkl@:PrrN07_!h:'!;c]q!8meVS`8l8'*. -!B:&NirG&9rrN07_!h:'!;c]q!8meVN8ik!'*. -!BpJTm/X-`rrE,8nGiCdrr;lriVrnWip?dY!:HHY!K?'+rr?s7^'/s4"UdMkr4W/K_Z'Y(UA_e. -Qqe"hqn<**R)Aq)Y*JUm!L9g=s0DY+mJmgim/bd$J,~> -!BU8Qkl@:PrrE,8nGiCdrr;lriVrnKiopLT!:HHY!L`);rr?s7^'/s4"UdMkr4W/K_Z'Y(UA_e. -Qqe"hqn<**R)Aq)Y*JUm!L9g=s0DY+mJmdhklK'jJ,~> -!B:&NirG&9rrE,8nGiCdrr;lriVrn:io:(N!:HHY!N,+Krr?s7^'/s4"UdMkr4W/K_Z'Y(UA_e. -Qqe"hqn<**R)Aq)Y*JUm!L9g=s0DY+mJmdhirR%VJ,~> -!BpJTm/X-`rrBjOrrB%Xm/d^snXfa]L$G'*!,;DG#Bq#?[^LoBZMhK;Bu9lMDu@ -!BU8Qkl@:PrrBjOrrAVLklM:onXfa]P3nY:!,;DG#Bq#?[^LoBZMhK;Bu9lMDu@ -!B:&NirG&9rrBjOrrA#;irTVhnXfa]T^S9J!,;DG#Bq#?[^LoBZMhK;Bu9lMDu@ -!BpJTm/X,urrB%Xm/dUpoUc'`II`g+!V14.^&]4=rOr;r?i@\>E:UpH!,22B!!)l0!,0:M!,;DG -"opHE\t1N^r4W/FJcE%U!qZI"oBcS04b*~> -!BU8Qkl@9errAVLklM1loUc'`MtEG;!V14.^&]4=rOr;r?i@\>E:UpH!,22B!!)l0!,0:M!,;DG -"opHE\t1N^r4W/FJcE%U!qZI"oB?;$3e.~> -!B:&NirG%NrrA#;irTPfoUc'`Re<*K!V14.^&]4=rOr;r?i@\>E:UpH!,22B!!)l0!,0:M!,;DG -"opHE\t1N^r4W/FJcE%U!qZI"oA]kh2h1~> -!BpJTm/X,urrB%Xm/dLmpR_BcFS_F*!SW&%^&\>IrOr.spL!N?Y.^&`3DJcE(V!qu["oBcS04b*~> -!BU8Qkl@9errAVLklM(ipR_BcK_q2;!SW&%^&\>IrOr.spL!N?Y.^&`3DJcE(V!qu["oB?;$3e.~> -!B:&NirG%NrrA#;irTGcpR_BcPP^dJ!SW&%^&\>IrOr.spL!N?Y.^&`3DJcE(V!qu["oA]kh2h1~> -!BpJTm/X,urrB%Xm/dFkqOdcgr,\8*!Q^,r^&].;rOr;t$N7[>L1J5P!GluU^&S00^&`c;`W#tm -J,$_YXpP$?!IrgSs0M_,q>^]jm/bd$J,~> -!BU8Qkl@9errAVLklM"gqOdcgr.CC:!Q^,r^&].;rOr;t$N7[>L1J5P!GluU^&S00^&`c;`W#tm -J,$_YXpP$?!IrgSs0M_,q>^]jklK'jJ,~> -!B:&NirG%NrrA#;irT>`qOdcgr0*NJ!Q^,r^&].;rOr;t$N7[>L1J5P!GluU^&S00^&`c;`W#tm -J,$_YXpP$?!IrgSs0M_,q>^ZiirR%VJ,~> -!BpJTm/X,urrB%Xm/d=hrLa)joQuu*!Q^,r^'Aj#M79sN)ZouP#_bNG?Y4+qH%*qd!G$r\^&S00 -^&`t!`I@o!LA8I`=A&M*!K"mKs0M_,r;Zojm/bd$J,~> -!BU8Qkl@9errAVLklLndrLa)jono.:!Q^,r^'Aj#M79sN)ZouP#DGQO@VBY$HHL^ -!B:&NirG%NrrA#;irT8^rLa)jp6h -!BpJTm/X,urrB%Xm/d=hrLa)jm":]*!SW&$^'9-=#6cW(&,j3UI'()cU6UL\F+9.:VR++agZ\>0 -f)GclM>=jc!;aD1L1JJW#C^o;C1CL9L&&FaH6' -!BU8Qkl@9errAVLklLndrLa)jmZEn:!SW&$^'9-=#6cW(&,j3TI'U]#XJ(o9K8l:qYe8'+hs:!d -rrL2tq7Zh/qRuubABTH-IX-!OAme,_q7ZoV*O>UW!K"mKs0M_,r;ZojklK'jJ,~> -!B:&NirG%NrrA#;irT8^rLa)jn=Q*J!SW&$^'9-=#6cW(&,j3TICID9\#lBlPFSMS]#;qJj6cTk -rrL2tq7Zh/qRuubABTH-IX6*SC1Kqjq7ZoV*O>UW!K"mKs0M_,r;ZojirR%VJ,~> -!BpJTm/X,urrB%Xm/dFkqOdcgjGTE*!V14(^&`dFrOr;Oo)&G&r9r[raLeRJPD4@&J;otnZ+eB3 -ipQ^&rrLf'q7Zh/qRuu\g"$*7rp&Fi`3uV5N.5nrMO:9JVL86S!dkf[qn<)\g4B:1rrW#s"nV*^ -eieN~> -!BU8Qkl@9errAVLklM"gqOdcgkEqY:!V14(^&`dFrOr;Oo)&G&r:/q'cGR,lT9P._NgcfJ]#E%N -jm`3,rrLf'q7Zh/qRuu\g!p$5mGumB^9XW(NIm(TUp.P6I/:PYHl&UU^&``;JcE(V!r;m#oB?;$ -3e.~> -!B:&NirG%NrrA#;irT>`qOdcglD9mJ!V14(^&`dFrOr;Oo)&G&r:B10e]Yb:X.blBSYr^&_p$]h -kjnZ1rrLf'q7Zh/qRuu\g!p$5n)rKR`k/LQS!'59YI_]YI/:PYHl&UU^&``;JcE(V!r;m"oA]kh -2h1~> -!BpJTm/X,urrB%Xm/dLmpRhHdgln*)!,;5B!kTk=rOr8Gn,F4'mc)d=]s4E%N.H(pK9)M"ZbXf; -jRE*7rrMV0q7Zh/qRuuNnDXB_rq#=-cGHufS -!BU8Qkl@9errAVLklM(ipRhHdi1HA9!,;5B!kTk=rOr8Gmf+'ljkA&!]!%otO+W1LS>NR(a3i]* -o).nT!Ut.*^&S00^&`9DiVs\mp$1G`aM"mWS<8PVP+/AV^s(Kno)8Ld!V14,^&iElU&)J(E:SS[ -Zi:+$!!i,[!R<`V~> -!B:&NirG%NrrA#;irTGcpRhHdjK"XI!,;5B!kTk=rOr8Gmf+'nkhak6_RZnJSWfA3W3NtQcI_%? -oDJ"U!Ut.*^&S00^&`9DiVs\mp?^hmcc*Q&WLoK -!BpJTm/X,umJs6Gm/dUpoUl-ae=2g)!,hbL"u_FK[ZE1Kr4W/Kj8U%lleg13]<@urMgoenKT2=j -WNs1UcI_%?oDJLc!,22B!!)l0!,1g#)?0Buk2"S3`4N1HQ&0p0H\[iZXh)O#hs:%-rrW2P -!BU8Qkl@9emJrg;klM1loUl-afqt,9!,hbL"u_FK[ZE1Kr4W/Kj8U%mmc2sE_mlhCR#Q`SOd`#E -Zb+,ueD0-Op&4df!,22B!!)l0!,1d")#3UbiRuZ%_RHV?QA^?PQ(Y1d_9CNjmJ-5O!SpiT^&i*e -U\VV(Bn?;irrVfm$M3K_c8pI~> -!B:&NirG%NmJr4*irTPfoUl-ahQ`FI!,hbL"u_FK[ZE1Kr4W/Kj8U%nnE/QVbJCZjV43[8T;Sj" -]Yhq@g#2)_pAOmg!,22B!!)l0!,1d")# -!BpJTm/X,umJs6Gm/d^snXog^bbLO)!Nq^e^'0-<":I#?r4W2sY1N[gp?U\icc3Z)WhGc>Km[oa -J;KGYTiV!'!!)l0,%]K\f[nU!bK%N8]!e]9S!/_\H#\(ZM3==&X0f[eg#_f(l2Lnab)2'^rOr>C -)Q*;D!,dAfZMt!r!"JPe!S0Da~> -!BU8Qkl@9emJrg;klM:onXog^d]Jl9!Nq^e^'0-<":I#?r4W2sY1N[gp[.(ueBGkDZ`BjjP)=jF -Ng?96XBGA5!!)l0,%f]fgtUK3dETeQ_S3I]VOs39Lk1>AQCaqT[CsW/h<=J0l2Lnad$L)+rOr>C -)Q*;D!,dAfZMt!r!"JPa!R<`V~> -!B:&NirG%NmJr4*irTVhnXog^fXI4I!Nq^e^'0-<":I#?r4W2sY1N[gq![G*g=+6`]sb)ATUCt. -S>3*h[TrXB!!)l0,%oooiS`PGf@80lb/V3+Z)a[kQ][T)UoL]/^;\CMip6::l2Lnaetf*MrOr>C -)Q*;D!,dAfZMt!r!"AJZ!Q-jH~> -!BpJTm/X,umJs6Gm/dh!m[sL[`2f7)!W-*m^&_gBaSuM?n)iHUc?l;a^A7j/^(mALQ'[i)S=cUU -XK]+C_opNajmDd@h>[`R]RQ:#j'n2N^A7g0ZMqQ=Q*,] -!BU8Qkl@9emJrg;klM@qm[sL[bI!W9!W-*m^&_gBaSuM@n`f#cdse%i^A7j/^(d;RTq\^N$rk8DuY(?VYrrVTg&+f#dc8pI~> -!B:&NirG%NmJr4*irT_km[sL[dCttI!W-*m^&_gBaSuMAoBYMpfn,ss^A7j/^(d;XXfeh1ZF.3S -^V[t3d+@+7lgac*rs/>BS?Ci8F-HU;q>^N$rk8DuY(?VYrrVTg&+ef^_`*)~> -!BpJTm/X,umJs6Gm/dq$lC\(W]X!n(!l#bKotCI#NPYVqnSIg2!Gq;LrsA%oHD]j&[XH;0o=b6: -qgndQrrVHc'D(SleieN~> -!BU8Qkl@9emJrg;klMLulC\(W_n298!l#bKotCI#NPYVqnSIg2!Gq;LrsA,%M6Q7C^PgHMo=b6: -qgndQrrVHc'D(Ghc8pI~> -!B:&NirG%NmJr4*irTkolC\(WbJ]bI!l#bKotCI#NPYVqnSIg2!Gq;LrsA20R(DV^a-tOio=b6: -qgndQrrVHc'D(5b_`*)~> -!BpJTm/X,umJs6Gm/e((k+DYS[(D_*"MY_a>J9dF!khh7_#FFS[Iq67[;a@i%,db*[.41XMjj29 -NM6$Z!MPL(s0;S*jo?4hm/bd$J,~> -!BU8Qkl@9emJrg;klMY$k+DYS]Y^'9"MY_a>J9dF!khh7_#FFS[Iq67[;a@i%-+@F]^u0eR&9KT -NM6$Z!MPL(s0;S*jo?4hklK'jJ,~> -!B:&NirG%NmJr4*irTtrk+DYS`6+JI"MY_a>J9dF!khh7_#FFS[Iq67[;a@i%-P!c`:X)qV6T[m -NM6$Z!MPL(s0;S*jo?1girR%VJ,~> -!BpJTm/X-`mJsT1mJs6Gm/e@0h4O]JXM^J+"hthfs3YQT^&_rq^]+>tD"YLCD!0.E$N8A6KZ!Wc -rO[I!rr3&r>J9dF!khh7JcE"T!o3huoBcS04b*~> -!BU8Qkl@:PmJsT1mJrg;klMq,h4O]J[E=p;"hthfs3YQT^&_rq^]+>tD"YLCD!0.E$NAVIOidJ" -rPFK=rr3&r>J9dF!khh7JcE"T!o3huoB?;$3e.~> -!B:&NirG&9mJsT1mJr4*irU8%h4O]J^tD"YLCD!0.E$NAeZT@!H7 -rQ:SZrr3&r>J9dF!khh7JcE"T!o3htoA]kh2h1~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zc)83WT*:H0`]@grrJY=S,WQ)(;KeI$05 -!BU8Qkl@:PmK*A%Zc)83S`8l80EB7frrK%MS,WQ)(;KeI$05q>UN1=hFRF!kVULJcDqR!m1KsoB?;$3e.~> -!B:&NirG&9mK*A%Zc)83N8ik!0*'.errKF]S,WQ)(;KeI$05UN1=hFRF!kVULJcDqR!m1KroA]kh2h1~> -!BpJTm/X-`mK3I)'=78trW)ob"g(#p&m*iHmJs6Gm/f9J_4U`.PhV`.!lGYcq>UWmkM`ju*N -r-s@r^&iq:r6tZKk,*I+li$hcl]RM"p\tQ\>CsN%^:]&%jFR?6rrU":3V2V=eieN~> -!BU8Qkl@:PmK3I)'=78trW)ob"g(#p&m*iHmJrg;klNgE_4U`.T\l:>!lGYcq>UWmkM`ju*N -r-s@r^&iq:r6tZKl*-#Qmf!.fm@L!>p\tQ\>CsN%^:]&%jFR?6rrU":3:lA8c8pI~> -!B:&NirG&9mK3I)'=78trW)ob"g(#p&m*iHmJr4*irV.>_4U`.XQ,iN!lGYcq>UWmkM`ju*N -r-s@r^&iq:r6tZKm(/S!nGW@hn#EJZp\tQ\>CsN%^:]&%jFR?6rrU":2tQ&1_`*)~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;So'QJXq(NWT*:H9)u,errIf=T)Ska)U5,Y"8pQor7(`Mr5snR -ao)):"7DG9l@Ju%rrT>'9CqNOeieN~> -!BU8Qkl@:PmKEUjs1f;So'QJXq(NS`8l88cZ#drrJ;MT)Ska)U5,Y"8pQor7(`Mr6Udr -ci!_@"7W"Tm",2'rrT>'9(V9Jc8pI~> -!B:&NirG&9mKEUjs1f;So'QJXq(NN8ik!8-#fbrrJe]T)Ska)U5,Y"8pQor7(`Mr77[> -ebo@F"7iRnmt(M*rrT>'8FtjB_`*)~> -!BpJTm/X-`mJm7drrR`Ojn%m?!;Z$`UHIN'!3+uF!`T/qTDnq>o:Q$aN$-f)s7QBqp:PmAf`(gK -"THGh^& -!BU8Qkl@:PmJm7drrR`Ojn%m?!;Z$`UHIN'!1i-6!`K)pTDnqMoUl-bN$-f)s7QBppVVuch"q$Q -c&0I=JcD&9!i,fpoB?;$3e.~> -!B:&NirG&9mJm7drrR`Ojn%m?!;Z$`UHIN'!0#pt!`8rnTDnq\oq26cN$-f)s7QBpprf21iVNQV -e="P[JcD&9!i,fnoA]kh2h1~> -!BpJTm/X-`mKEUjs1f;So'QJXqX+F$+j8j4!3+uF!al"oTDnq6qk=#lrcp!RJcGHD"RN7:V<.RR -"7V\;kCNYtrrSJd@.WadeieN~> -!BU8Qkl@:PmKEUjs1f;So'QJXqX+F$+j8j4!1i-6!abqnTDnqEqk=#lrcp!RJcGHD"R`aUYNYi_ -"7i7Vl@Ju"rrSJd?h -!B:&NirG&9mKEUjs1f;So'QJXqX+F$+j8j4!0#pt!aG_kTDnqUr1X,mrcp!RJcGHD"Rs3o\a0+l -"7r^om",2$rrSJd>k?tV_`*)~> -!BpJTm/X-`mKSDZWT*:HDZGNbrrN"=U&P5mAiB",s7cNri1GD(nG3(d -bC$l!JcCr6!ep\noBcS04b*~> -!BU8Qkl@:PmKSDZS`8l8D#f<`rrN"MU&P5mAiB",s7cNrj/S!Lo(i:f -d>Pj>JcCr6!ep\loB?;$3e.~> -!B:&NirG&9mKSDZN8ik!C&j!]rrN%]U&P5mAiB",s7cNrkHpYqo_JLh -f:'h[JcCr6!ep\ioA]kh2h1~> -!BpJTm/X-`mK3I)'=72r!!)rb!hC4ChsLKDip?es!-Y%8!V(T4rr`$q7.Z!0q>UWsdZK1!q"apl -nskTuJcCl4!d4QnoBcS04b*~> -!BU8Qkl@:PmK3I)'=72r!!)rb!hC4ChsLK8iopMm!-Y%8!V;8Err`$q7.Z!0q>UWtf:A&Gq>($m -oV\&=JcCl4!d4QloB?;$3e.~> -!B:&NirG&9mK3I)'=72r!!)rb!hC4ChsLK'io:)c!-Y%8!VDhTrr`$q7.Z!0q>UWtgo@!nqYC-n -os1CYJcCl4!d4QhoA]kh2h1~> -!BpJTm/X-`mK*A%Zg[;^!<) -!BU8Qkl@:PmK*A%Zg[;^!<) -!B:&NirG&9mK*A%Zg[;^!<) -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT1mJs6Gm/j9f8"fk_eX<96"61kVrdk+IrrhJ]HE?H+rr^`"Z29+PNW0&M!35YX -!S0Da~> -!BU8Qkl@:PmJsT1mJrg;klRa_8"fk_g81YG"61kVrdk+IrrhSjM72jGrr^o5]).'YNW0&M!2oGQ -!R<`V~> -!B:&NirG&9mJsT1mJr4*irYtU8"fk_hQWjV"61kVrdk+Irrh]"R(r.arr_)H_YeubNW0&M!2K/G -!Q-jH~> -!BpJTm/X,umJs6Gm/jfu2k^0ObbM'8!ne]TJcG]K"od2BJ%PCIrr_tjL#.C\MuNi;!4h^g!S0Da~> -!BU8Qkl@9emJrg;klS9n2k^0OdB0;G!ne]TJcGZJ"Pol5_Y3^'"8As]idq,frrP+Z[e&_ac8pI~> -!B:&NirG%NmJr4*irZIc2k^0Of=.XW!ne]TJcGZJ"QHVSb4kW0"8KC!jamGirrP+ZZ1HuV_`*)~> -!BpJTm/X,umJs6Gm/kE1,bY/<_lTd9!mMXUJcG`L"oQN#M95Yfrr^i&XndPJMZ3`'!6Xp#!S0Da~> -!BU8Qkl@9emJrg;klSj),bY/ -!B:&NirG%NmJr4*ir[$s,bY/ -!BpJTm/X,umJs6Gm/l,E%\Wh&\[AC9!lP\TJcGcM"n]EVQ.Q$.rr`"oK%kkVM#RMd!8d>7!S0Da~> -!BU8Qkl@9emJrg;klTQ=%\Wh&_7llJ!lP\TJcGcM"ST`mU"o;?"8K0`hgtf`rrNZ1g@OP0c8pI~> -!B:&NirG%NmJr4*ir[a2%\Wh&ai::Z!lP\TJcGcM"S^*/Xl/jO"8TR#j+75drrNZ1eaqf%_`*)~> -!BpJTm/X,umJs6Gm/u\Z!;E2e!O'8;rrT>8`.@pls66S1VrmUN"58@+pjrI$rr_uq#41sK!S0Da~> -!BU8Qkl@9emJrg;kl^,R!;E2e!P$.KrrT>8`.@pls6R+LZ0Cl["5]-Gq18R%rr_uq#3b[C!R<`V~> -!B:&NirG%NmJr4*ire9F!;E2e!Q!'\rrT>8`.@pls6dUg]'Jtf"6,obq18R%rr_uq#3,77!Q-jH~> -!BpJTm/X,umJs6Fm/e1+iM$8PVTGkl,RXM[9oD\pgXFSoRs+^OTi;aeem/bd$J,~> -!BU8Qkl@9emJrg:klM_&iM$8PYg9?L!h:1SJc>l0VMi4]oD\ph[>s$ns+^OTi;abdklK'jJ,~> -!B:&NirG%NmJr4)irU(uiM$8P]%*h\!h:1SJc>l4Z'r`+oD\ph^7F25s+^OTi;abdirR%VJ,~> -!BpJTm/X,umJs6Fm/em?bG"q:S^OS=!f%uSKDu,Pb)2"qqssahh1VWuJcCH(!m:Qro'HJ/4b*~> -!BU8Qkl@9emJrg:klNI;bG"q:W7S*M!f%uSKDu,Qd$L$BqssahiKCD=JcCH(!m:Qro'$2#3e.~> -!B:&NirG%NmJr4)irUb3bG"q:ZeVV]!f%uSKDu,Qetf(jr:9jije00ZJcCH(!m:Qpo&Bbg2h1~> -!BpJTm/X,umJs6Fm/fZU[%[L#PM<5>"9* -!BU8Qkl@9emJrg:klO0O[%[L#TAQdN"9* -!B:&NirG%NmJr4)irVLH[%[L#X5g>^"9* -!BpJTm/X,urrB%Wm/gAiStZ/bMWM#@"8cCemY1ZDkc&m,kOAKRiJ4-!JcC?%!hKBoo'HJ/4b*~> -!BU8Qkl@9errAVKklOlcStZ/bQftUP"8cCemY1ZDlEc>QlL=fUjHQb>JcC?%!hKBmo'$2#3e.~> -!B:&NirG%NrrA#:irW0[StZ/bV!G2`"8cCemY1ZDmC\gum-t#Wkb>N[JcC?%!hKBko&Bbg2h1~> -!BpJTm/X,urrB%Wm/h,)LS=_KJaT`A"8,>]onWPNrn*Wf\b#=j"8oNSd"24Jrr`:V!,_;o!S0Da~> -!BU8Qkl@9errAVKklPW#LS=_KO79@Q"8,>]onNJLh5$"Fp$ht`r4S'>JcC<$"94,VC\$]jc8pI~> -!B:&NirG%NrrA#:irWopLS=_KSarua"8,>]onNJLiNSfmp@/(ar5G,YJcC<$"94,VC%C9b_`*)~> -!BpJTm/X,urrB%Wm/i%CCSCb/GPA?A"7A9XqhY7UqoFVOantQ,"6>?1nq$gls8W*#CB0.\m/bd$ -J,~> -!BU8Qkl@9errAVKklQP=CSCb/LA8"Q"7A9XqhY7Uqp(Loci!83"6Z#LoR[$ns8W*#CB0(ZklK'j -J,~> -!B:&NirG%NrrA#:irXc3CSCb/QMIcb"7A9XqhY7Ur7.R -!BpJTm/X,urrB%Wm/j!^:87airH%tCrr_@7ErLpq"nT6PRG%T.rr`20I*@0AJcG]K!_r`io'HJ/ -4b*~> -!BU8Qkl@9errAVKklRIW:87ahrIV9R"6D+Tre^XXoY?E^h -!B:&NirG%NrrA#:irY\M:87ahrK=Db"6D+Tre^XXouNT+ipQgKrQ(GZJcC<$rVlpo!1WQ>!Q-jH~> -!BpJTm/X,urrB%Wm/jp#18=dLoR!kC!o"oSM>m_@Vg>B-mJd:PKphF]s+14JrrOqU]^kFjeieN~> -!BU8Qkl@9errAVKklSBq18=dLonp$S!o"oSM>m_CZ&,gQmJd:SPGRi$s+14JrrOqU\antcc8pI~> -!B:&NirG%NrrA#:irZRf18=dLp6i2c!o"oSM>m_F]9p;"mJd:UTWn'>s+14JrrOqU[.<5X_`*)~> -!BpJTm/X-`rrBjOrrB%Wm/kl>'r(^/l@cJC!mV^SMuNt[f9^uuo^2Y\rO[9eJcC<$qYpU3!8$f/ -!S0Da~> -!BU8Qkl@:PrrBjOrrAVKklT<6'r(^/m?4dT!mV^SMZ3h6UQ*.amJd:e_M6![s+14HrrNo8e+2`( -c8pI~> -!B:&NirG&9rrBjOrrA#:ir[L+'r(^/n"?ud!mV^SMZ3h;Y+*T.mJd:eb*L5%s+14HrrNo8cLTur -_`*)~> -!BpJTm/X-`rrE,8_uB_9iU$a5"p+InrrM)=Zi:*D&[%)m"o?8pMottarr_GDR.#V+JcGTH"8;g# -lgjEDeieN~> -!BU8Qkl@:PrrE,8_uB_-iTUI-"Te@mrrM2LZi:*D&[%)m"oHQ0R*bctrr_PTU[`p8JcGTH"8;g" -kORj -!B:&NirG&9rrE,8_uB^qiSt%!"Te@mrrM>]Zi:*D&[%)m"oHcCV:PS2rr_VcYO[8EJcGTH"8;g" -iUZ"0_`*)~> -!BpJTm/X-`rrN07^r66QWSm.F*rt&jrrLc=[/U2q&]B\/"S0!LS(m9/"T>r[a8UYiJcGQG!o!\s -na-A.4b*~> -!BU8Qkl@:PrrN07^r66QS`&`6*WXrirrLoM[/U2q&]B\/"S9?cVVg_>"9$,pc%5nGs7lTqgAi;b -klK'jJ,~> -!B:&NirG&9rrN07^r66QN8W^t*<=ihrrM)][/U2q&]B\/"SKd'Z/b0M"9$E2e:IXNs7lTqgAi8a -irR%VJ,~> -!BpJTm/X-`rrW8:'Ys;>rW)os"ggGu&m+/QrrB%Vm/f6I^8(]/cChWG"8m$cgQ)::jed@)lK\BO -kDknsJcC<$p\t -!BU8Qkl@:PrrW8:'Ys;>rW)os"ggGu&m+/QrrAVJklNgE^8(]/e>p%X"8m$cgQ)::kcfoOm-=TQ -lC+L;JcC<$p\t -!B:&NirG&9rrW8:'Ys;>rW)os"ggGu&m+/QrrA#9irV+=^8(]/fsS9g"8m$cgQ)::laiItn*9oT -m&.#WJcC<$p\t -!BpJTm/X-`rr`?%^_FTSrr<&trrkcpnFD,jiVrnWi9^SI!1fnb!QD(Jrr_a\8+;W?"od&;J@tR? -rri;4I)l5;s+14DrrS_k=7PYYeieN~> -!BU8Qkl@:Prr`?%^_FTSrr<&trrkcpnFD,jiVrnKi9:;D!1fnb!R%gYrr_a\8+;W?"od5LNl1SU -rr`5;MTp_PJcGEC!hB -!B:&NirG&9rr`?%^_FTSrr<&trrkcpnFD,jiVrn:i8Xl;!1fnb!ReZjrr_a\8+;W?"odA\SBLZl -rr`5CRF?`eJcGEC!hB -!BpJTm/X-`rriE&s1f>ao)A[iq>UKh#iYd`WSm.FG5urarrKd=\GlZc.;o'Grrr5;L5a@Sl2LkK -NgK0bs+14BrrRKHGOb&$eieN~> -!BU8Qkl@:PrriE&s1f>ao)A[iq>UKh#iYd`S`&`6FT?`_rrL$M\GlZc.;o'Grrr8BPF9ktl2LkN -R\TA's+14BrrRKHFn+\sc8pI~> -!B:&NirG&9rriE&s1f>ao)A[iq>UKh#iYd`N8W^tEWCE\rrL<]\GlZc.;o'Grrr;JTr-K@l2LkP -VloTAs+14BrrRKHEq//j_`*)~> -!BpJTm/X-`rr<&urrR`Op%/1`!;c]soS6)urrB%Vm/iXT=/5crZG!gK!koM>OoGRR[!\G"kl1ea -]R7d!JcC<$oD\kn!1< -!BU8Qkl@:Prr<&urrR`Op%/1`!;c]soS6)urrAVJklR+M=/5cr]>V8[!koM>OoGRT]o&cHkl1b` -_hu]is+14@rrQ7%Q1=)>c8pI~> -!B:&NirG&9rr<&urrR`Op%/1`!;c]soS6)urrA#9irY>C=/5cr_ooUj!koM>OoGRV`L4'nkl1b` -bF-h1s+14@rrQ7%On%H4_`*)~> -!BpJTm/X-`rriE&s1f>ao)A[iqu?Zr!>aGKrrB%Vm/jct1o('OW5cFK!gsn>P5b[GUjB0/kPkYJ -NgK0bs+14?rrP"W\FJqeeieN~> -!BU8Qkl@:PrriE&s1f>ao)A[iqu?Zr!>aGKrrAVJklS6m1o('OZHTo[!gsn>P5b[JY)0UTkPkYL -S"fD's+14?rrP"W[INJ^c8pI~> -!B:&NirG&9rriE&s1f>ao)A[iqu?Zr!>aGKrrA#9irZFb1o('O][OIl!gsn>P5b[M\ -!BpJTm/X-`rr`?%^_FTSrr<&qrrVbD4lQD@WSm.Ff`2VZrrJ\<]`/*3DCO>)rrrDMR=W*GkPk\` -]R7d!JcC<$nG`P%!86o0!S0Da~> -!BU8Qkl@:Prr`?%^_FTSrr<&qrrVbD4lQD@S`&`6eGp2VrrK(L]`/*3DCO>)rrrDRUlWLhkPkY_ -_hu]is+14=rrNc4ea_l)c8pI~> -!B:&NirG&9rr`?%^_FTSrr<&qrrVbD4lQD@N8W^tcN"QPrrKI\]`/*3DCO>)rrrDWYas#5kPkY_ -bF-h1s+14=rrNc4cgg#r_`*)~> -!BpJTm/X-`rrW8:'Ys5 -!BU8Qkl@:PrrW8:'Ys5 -!B:&NirG&9rrW8:'Ys5 -!BpJTm/X-`rrN07_!h:'!<)p$>LiW5E^8U`!3+lC!\=>oV#LINke@'!gF7% -!BU8Qkl@:PrrN07_!h:'!<)p$>LiW5E^8U`!1i$3!\=>oV#LI\lG!9#gF7% -!B:&NirG&9rrN07_!h:'!<)p$>LiW5E^8U`!0#gq!\48nV#LIimCrT&gF7% -!BpJTm/X-`rrE,8nGiCds8N8&/d)qsl/DXBWSd(E:B7/crrIN<^]+AP&Xf!c"od&=I_#%1rr_JF -QgTG)JcG*:!i#`knEg8-4b*~> -!BU8Qkl@:PrrE,8nGiCds8N8&/d)qsl/DXBS_rZ59`UrarrJ&M^]+AP&Xf!c"od2LN55)Hrr_PU -U@ -!B:&NirG&9rrE,8nGiCds8N8&/d)qsl/DXBN8NXs9)t`_rrJS]^]+AP&Xf!c"odA]S&k9`rr_Yd -Y4@/DJcG*:!i#`gnDaPe2h1~> -!BpJTm/X-`rrBjOrrB%Um/hD1HDUWCrcA%RrrST#_O1?,pV;HBbl$Q%"T?#]`r:PhJcG'9!dXih -nEg8-4b*~> -!BU8Qkl@:PrrBjOrrAVIklPo+HDUWCrdt*arrST#_O1?,prAPeder2+"9-5rb^oeFs6BUcH2r$U -klK'jJ,~> -!B:&NirG&9rrBjOrrA#8irX0"HDUWCrf[5qrrST#_O1?,ps,P1f_jh1"9-K3dt.OMs6BUcH2qpR -irR%VJ,~> -!BpJTm/X,urrB%Um/idX;5O9nom+CR"8m$cgR8'ElE#<+i8Xb=k`;%tJcC<$l2Lf^!1`QG!S0Da~> -!BU8Qkl@9errAVIklR7Q;5O9np5$Qb"8m$cgR8'Em'_bPj5U(@l^OX -!B:&NirG%NrrA#8irYJG;5O9npQr_r"8m$cgR8'En%Y7!kMlLDmAR/XJcC<$l2Lf^!1!'6!Q-jH~> -!BpJTm/X,urrB%Um/k-).&HqEl@m+T"7SfNn=0F]rn!Qd[IE2U"T?#]`VtGgJcFs6![n&cnEg8- -4b*~> -!BU8Qkl@9errAVIklSU".&HqEm#o6c"7SfNn='@[gSBbAo&BZOrks] -!B:&NirG%NrrA#8irZdl.&HqEn"@Pt"7SfNn='@[i38Zio]#lQrlgeYJcC<$kPkT3!4q[[!Q-jH~> -!BpJTm/X,urrB%Um/uJQ"Snqp!T0!Vrr_")DZ$%)"o,ugMokkTrr_JGQL9>(JcFp5"8N'%k4%a= -eieN~> -!BU8Qkl@9errAVIkl]oI"Snqp!TT]frr_")DZ$%)"o6<(R*YZgrr_SVU@ -!B:&NirG%NrrA#8ire'="Snqp!TpB!rr_")DZ$%)"o?W>V:GM&rr_YeXn%&CJcFp5"8N'%h!j>) -_`*)~> -!BpJTm/X,urrB%Tm/eF2e>E6He=+>U!koM>SGr`VXa$Ali;WrY]mRfuJcC<$k5PM4!$Ugu!S0Da~> -!BU8Qkl@9errAVHklN".e>E6Hfqu^f!koM>SGr`X[YLd>i;WoY`/;cis+143rrU[M+n+Xrc8pI~> -!B:&NirG%NrrA#7irU>'e>E6HhQb$!!koM>SGr`[^R)7fi;WoYbaHn1s+143rrU[M+Re=k_`*)~> -!BpJTm/X,urrB%Tm/ffYX/>mtaem&W!gsn>T)Sumd[#?in)+-Ik`;"rJcC<$jSo:^!(cSG!S0Da~> -!BU8Qkl@9errAVHklO?TX/>mtc`kCg!gsn>T)Sunf:n5 -!B:&NirG%NrrA#7irVXLX/>mte[ia"!gsn>T)Sungo['coABQMmAR/WJcC<$jSo:^!(HA:!Q-jH~> -!BpJTm/X,urrB%Tm/h2+J#<5H^9P`Y"8m$cgRnKLo=KR9c2?K!"T?&^`VtGgJcFd1!e12gn*L/, -4b*~> -!BU8Qkl@9errAVHklP]%J#<5H`Oa+i"8m$cgRnKLoYQZ[e,8,'"9-8sbCT\Es5O%[IfO?SklK'j -J,~> -!B:&NirG%NrrA#7irWrqJ#<5HbehF#"8m$cgRnKLou`i*f_jY,"9-N4dXhFLs5O%[IfO6PirR%V -J,~> -!BpJTm/X,urrB%Tm/idX:T"-mZG"?Z"7SfNn=]dai1kRrjPBh -!BU8Qkl@9errAVHklR7Q:T"-m]>Vej"7SfNn=]daj0"3DkM?.?l^X[;JcC<$iVrsT!1E -!B:&NirG%NrrA#7irYJG:T"-m_op.$"7SfNn=]dakI?kjlJ;IBm\m8XJcC<$iVrsT!1!$5!Q-jH~> -!BpJTm/X,umJs6Cm/k?/+/]&=Vo[!["5>8Br1a2pqT4\L^\6L`"T?&^`VtGgJcF[.!ZqE`n*L/, -4b*~> -!BU8Qkl@9emJrg7klSg(+/]&=Z-LJk"5>8Br1a2pqp1[n`qS -!B:&NirG%NmJr4&ir[!r+/]&=]@=t&"5>8Br1a2pqphR:cM65q"9-N4dXhFLs53hX*rs+FirR%V -J,~> -!BpJTm/X,umJs6Cm/uV[!Uclc!M%T\rrU%LRA0]bm'1r,fDaS*"6kl3m=G:gs53hYmK!XZn*L/, -4b*~> -!BU8Qkl@9emJrg7kl^&S!Uclc!N4PlrrU%LRA0]bm^e:Qg]$"."7)JNmt(Lis53hYmK!XVn*'ku -3e.~> -!B:&NirG%NmJr4&ire3G!Uclc!OCM'rrU%LRA0]bnAC[!i;VO3"7E+inU^^ks53hYmK!XPn)FGd -2h1~> -!BpJTm/X,umJs6Bm/f'D^Sh)4Okn4\!gF;6U]1JKRXDC-g]%ET^3mluJcC<$hZ!Yl!&O'1!S0Da~> -!BU8Qkl@9emJrg6klNU?^Sh)4S`.cl!gF;6U]1JOV2DkQg]%BT`JViis+14+rrTq81@FB-c8pI~> -!B:&NirG%NmJr4%irUq8^Sh)4Wo_G(!gF;6U]1JTZ'iN"g]%BTbaHk0s+14+rrTq81%+'&_`*)~> -!BpJTm/X,umJs6Bm/gVpO/N!YL?Zt_"8QO\h51,To"0L?ao'lm"6ko4m=G:gs4mVUNrWPTm/bd$ -J,~> -!BU8Qkl@9emJrg6klP/kO/N!YPO$Kn"8QO\h51,To>?ZbchuMs"7)JNmt(Lis4mVUNrWMSklK'j -J,~> -!B:&NirG%NmJr4%irWEbO/N!YU$g2*"8QO\h51,Touir0ebn/$"7E.jnU^^ks4mVUNrWDPirR%V -J,~> -!BpJTm/X,umJs6Bm/i7I?`3o)Hh>V`"6hsFo;DTlrnfJcFL)!abqemd1&+ -4b*~> -!BU8Qkl@9emJrg6klQ_B?`3o)M=o0o"6hsFo;;NjhPuC;k1Tb:rl'c -!B:&NirG%NmJr4%irXu9?`3o)R.ei*"6hsFo;;NjijG,cl.Q(=rlpkYJcC<$gA_4]!/L"&!Q-jH~> -!BpJTm/X-`mJsT1mJs6Bm/jfu/u\dOrH%q`rr^RiIJp,E"n]N_MT#8Arr_M>Q0j/&JcFF'!\OJ` -md1&+4b*~> -!BU8Qkl@:PmJsT1mJrg6klS9n/u\dOrdt-qrr^RiIJp,E"nfitQco0Vrr_VNU$mR4JcFF'!\OJ] -mcabt3e.~> -!B:&NirG&9mJsT1mJr4%irZIc/u\dOrf[9,rr^RiIJp,E"np36Us]"jrr_\^XmpuBJcFF'!\OJX -mc+>c2h1~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK!%$"U"@qrrMeLci4'H(94>5"Q6DRo)f0U -mcabt3e.~> -!B:&NirG&9mK!5"Q[%Y]'%]F"9$E0c%5nGs4I>Ro)f-N -mc+>c2h1~> -!BpJTm/X-`mK*A%Zc)83WSHkB0*&eerrMA=dJj=II3?k9rrr,4LPNb?f)Gj5N0s$as+14%rrTt9 -0CA--eieN~> -!BU8Qkl@:PmK*A%Zc)83S_WH2/c`\drrMGLdJj=II3?k9rrr/'s+14%rrTt9 -0(%m(c8pI~> -!B:&NirG&9mK*A%Zc)83N83Fp/HEScrrMP]dJj=II3?k9rrr2DU8$!/f)Gj;VQ]QAs+14%rrTt9 -/a_R!_`*)~> -!BpJTm/X-`mK3I)'=78trW)i`!o"Uni9gTEh!G/P!/dcU!Srmdrr_jh4mB$I"Q6,%UYXK#"8fKS -b(9SDs4.,NM?%,Qm/bd$J,~> -!BU8Qkl@:PmK3I)'=78trW)i`!o"Uni9gT9h!"lJ!/dcU!TBTtrr_jh4mB$I"QQ\AXl7h1"8oij -d"24Js4.,NM?%&OklK'jJ,~> -!B:&NirG&9mK3I)'=78trW)i`!o"Uni9gT(guAHB!/dcU!Tg?0rr_jh4mB$I"R!=^\)l0?"8p-, -eq*jPs4.,NM?$uMirR%VJ,~> -!BpJTm/X-`mKeieN~> -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;So'QJXr9a[/*p*I\mJs6Am/k<.*i]/?aJ[Pf!l#;2Y5\_*fV*Scg]#_& -"8T-Md"24Js3goK*WX7Jm/bd$J,~> -!BU8Qkl@:PmKEUjs1f;So'QJXr9a[/*p*I\mJrg5klSd'*i]/?cEYn!!l#;2Y5\\)goH76hp_T- -qRDO8JcC<$df0@i!6"9h!R<`V~> -!B:&NirG&9mKEUjs1f;So'QJXr9a[/*p*I\mJr4$irZsq*i]/?e@X61!l#;2Y5\\)iO5)_j4"#1 -qSAZUJcC<$df0@i!5Ip]!Q-jH~> -!BpJTm/X-`mJm7drrR`Ojn%m?!;u6e7[ -!BU8Qkl@:PmJm7drrR`Ojn%m?!;u6e7[ -!B:&NirG&9mJm7drrR`Ojn%m?!;u6e7[ -!BpJTm/X-`mKEUjs1f;So'QJXrU'fl/aVm*i9gTEg[,&,!3`F&!O';jrr_+;9Bre^"oHW4H`cAV -rr`"oJ_#DPJcF*s!j;Sgm-Oi)4b*~> -!BU8Qkl@:PmKEUjs1f;So'QJXrU'fl/aVm*i9gT9gZ\c'!3`F&!P$2%rr_+;9Bre^"oQlFMRM]q -rr`&%O5#6cJcF*s!j;Sfm-+Pr3e.~> -!B:&NirG&9mKEUjs1f;So'QJXrU'fl/aVm*i9gT(gZ&>t!3`F&!Q!(5rr_+;9Bre^"oR)WRD8%7 -rr`&/S_o"uJcF*s!j;Sdm,J,a2h1~> -!BpJTm/X-`mK)Emd:)5mJs6@m/hG2EiT-?U -!BU8Qkl@:PmK)Emd:)5mJrg4klPr,EiT-?XjYl%"/corrj)P-l*uVEe,.Ml -"5/^ApjrHrs3L]HEWC4JklK'jJ,~> -!B:&NirG&9mK)Emd:)5mJr4#irX3#EiT-?\(K@5"/corrj)P-lbT!kf_j+r -"5]T_q18Qss3L]HEWC+GirR%VJ,~> -!BpJTm/X-`mK3I)'=72r!!)ucqZ,UC!3+`?!j2M\WrE*bg"QH.oO0,mZi:4'`f>SXmEbe7oV.&p -JcC<$c2Ri&!3Y\U!S0Da~> -!BU8Qkl@:PmK3I)'=72r!!)ucqZ,UC!1hm/!il;YWrE*nh:hl2oO0,mZi:4(baXX,n'D"9orXD8 -JcC<$c2Ri&!3>JN!R<`V~> -!B:&NirG&9mK3I)'=72r!!)ucqZ,UC!0#[m!iH#UWrE+%inFD7oO0,mZi:4)e#/bVn^%4;p:$^U -JcC<$c2Ri&!2o2D!Q-jH~> -!BpJTm/X-`mK*A%Zg[;^!;Z$_!9!8FWS?eBiroSWjo5GGb0&njrrIu=g]%B$-XlYTrs&GSUNrK_ -rm(NGc@3%oJcC<$c2Rn;"9miPm/bd$J,~> -!BU8Qkl@:PmK*A%Zg[;^!;Z$_!9!8FS_NB2hZX/Sjo5GGb0&njrrJGMg]%B$-XlYTrs&JXXba"3 -rm(NGe;V!8JcC<$c2Rn;"9m]LklK'jJ,~> -!B:&NirG&9mK*A%Zg[;^!;Z$_!9!8FN8*@pf`VHLjo5GGb0&njrrJn\g]%B$-XlYTrs&J]\!OJZ -rm(NGfpfkUJcC<$c2Rn;"9dEEirR%VJ,~> -!BpJTm/X-`mK!&WHHrrIN[TVO;=b%rrqVl -Iu_G=c2Rn@S;H3Us+13nrrTe41@+<.eieN~> -!BU8Qkl@:PmK!&WHHrrJ&Mh>[TVO;=b%rrq]" -NLIu_c2RnAVj?Cps+13nrrTe41$e')c8pI~> -!B:&NirG&9mK!`5g!5%Ip$0,r-G_hB)>&WHHrrJS]h>[TVO;=b%rrqf. -S>Xa.c2RnAZD6W7s+13nrrTe40^Ia"_`*)~> -!BpJTm/X-`mJsT1mJs6?m/h#&Id6q8pLA!Oqn<0FCLd+drrW.?rSIPVl:X+n\,QX(_i92Pkfj&0 -rks/trdk*#s2t?CIK4-Km/bd$J,~> -!BU8Qkl@:PmJsT1mJrg3klPQ!Id6q8pLA!Oqn<0FCLd+drrW1OrndYWl:X+n\,QX)adS7%lcfA3 -rl^/;rdk*#s2t?CIK4*JklK'jJ,~> -!B:&NirG&9mJsT1mJr4"irWfmId6q8pLA!Oqn<0FCLd+drrW1_rndYWl:X+n\,QX*d&3DPmEGS5 -rm@+Wrdk*#s2t?CIK4!GirR%VJ,~> -!BpJTm/X,umJs6?m/j$_62UZakK:X(p&>*c=L@h:!jl)%df0@=I,=l*^(GYe\c2m3d[bZYf_s"n -"6bl0k^ibbs2b3A5ld\Gm/bd$J,~> -!BU8Qkl@9emJrg3klRLX62UZakK:X(p&>*c=L@h:!jl)%df0@?Mr+I9^(GYe\c2m3f;OM.h>YUt -"6uGJl@Jtds2b3A5ldSDklK'jJ,~> -!B:&NirG%NmJr4"irY_N62UZakK:X(p&>*c=L@h:!jl)%df0@@Rbn&H^(GYe\c2m3gp -!BpJTm/X,umJs6?m18"R$N'l'j)8+GLlQ^`Dr^Wm!F)r(^&bTFdf0@0M;\C9pM^b[\c2ilXF-8S -pr`U>qmUskrdk*#s2b3Bq[*A[lg4`(4b*~> -!BU8Qkl@9emJrg3kmuJK$N'l'j)8+GLlQ^`Dr^Wm!F)r(^&bTFdf0@3QJhcFpM^b[\c2ip[Yga( -q9&^?r4e-4rdk*#s2b3Bq[*AXlfeGq3e.~> -!B:&NirG%NmJr4"it'W?$N'l'j)8+GLlQ^`Dr^Wm!F)r(^&bTFdf0@6Uu;7TpM^b[\c2is^R;1R -q9&^?r5Y5Qrdk*#s2b3Bq[*ARlf/#`2h1~> -!BpJTm/X,umJs6>m05'@^\;5R]_fDF]PD$Oqu6\nP4QBgP,6Y-!SE^srr^V!=7*X""o6&dKXpKk -rr_,5Sa_41JcEai!l"^clKnW'4b*~> -!BU8Qkl@9emJrg2klrU;^\;5R]_fDF]PD$Oqu6\nP4QBgP,6Y-!SsL/rr^V!=7*X""o??$P/6V. -rr_8GW:GN>JcEai!l"^blKJ>p3e.~> -!B:&NirG%NmJr4!is$q4^\;5R]_fDF]PD$Oqu6\nP4QBgP,6Y-!TC0>rr^V!=7*X""oHZ:TZQ`F -rr_AWZh&bJJcEai!l"^alJho_2h1~> -!BpJTm/X,umJs6>m0%/(G?D6H^&kZDo_e^hB`5[F!<0_4!;sP2B[ct^bbF.t"9")mUV-U1ou<2< -Wnter"8AjGd=M=Ks2=p=HiRpHm/bd$J,~> -!BU8Qkl@9emJrg2klbZ"G?D6H^&kZDo_e^hB`5[F!<0_4!;sP2B[ct^d]MR0"9")mUV-U1p<9.^ -[,T.+"8K6_eq*jPs2=p=HiRjFklK'jJ,~> -!B:&NirG%NmJr4!irionG?D6H^&kZDo_e^hB`5[F!<0_4!;sP2B[ct^fXKo@"9")mUV-U1pX?1- -^#d<7"8KU#gO]BUs2=p=HiRaCirR%VJ,~> -!BpJTm/X,umJs6>m/s9e.(&Z]!OQ)0rrMP-r4W.2rOr73r4W2OmaV7;^TZ_u"5lC.i4f3qq9GLU -U!rqZrr^]"WqV)EJcEXf!]U1YlKnW'4b*~> -!BU8Qkl@9emJrg2kl[d_.(&Z]!OQ)0rrMP-r4W.2rOr73r4W2OmaV7;`jk+0"5lC.i4f3qqUDF! -X4[?irr^l5ZhT+OJcEXf!]U1WlKJ>p3e.~> -!B:&NirG%NmJr4!irbtT.(&Z]!OQ)0rrMP-r4W.2rOr73r4W2OmaV7;cGATA"5lC.i4f3qqq89A -[b^l$rr_&H^%d0YJcEXf!]U1RlJho_2h1~> -!BpJTm/X,umJs6>m/l8XM=\F^P,80X!R6Dt^&S03^&S02^&`gtrI4m*^$+5N!OBB"rr]#3MZ(?j -#6!/MH'lbL`W$&0Sqc'Ps+13err_`n"leh7!S0Da~> -!BU8Qkl@9emJrg2klT]PM=\F^P,80X!R6Dt^&S03^&S02^&`gtrI4m*^$+5N!P?82rr]#3MZ(?j -#6!>\Lni>m`W$&2WKc@ms+13err_`n"lAP/!R<`V~> -!B:&NirG%NmJr4!ir[jDM=\F^P,80X!R6Dt^&S03^&S02^&`gtrI4m*^$+5N!Q<1Crr]#3MZ(?j -#6!JjQ`o!9`W$&4[%ZT4s+13err_`n"PE#"!Q-jH~> -!BpJTm/X,umJs6=m/T3G^Ae33^&ar0rOrGKR"'TtK)E=_!<'V3!;sP3JnFt2#\ZC/$9i-\^$+GT -!N+!%rr_Xi/C;65#6*P_I?289`;]u>`I,,kJcC<$_>aSA!''61!S0Da~> -!BU8Qkl@9emJrg1kl -!B:&NirG%NmJr3uirD.=^Ae33^&ar0rOrGKR"'TtK)E=_!<'V3!;sP3JnFt2#\ZC/$9i-\^$+GT -!P6hErr_Xi/C;34"m -!BpJTm/X,urrB%Om/c$Qr4W.2rOr;"!<'V8=VlR;G@UQb!!)u3!!)r2!HIQ(rs\,)MJ,0\$9i-[ -[FtKArrJP -!BU8Qkl@9errAVCklKLIr4W.2rOr;"!<'V8=VlR;G@UQb!!)u3!!)r2!HIQ(rs\,)MJ,0\$9i-[ -[FtKArrJtMkl1au&odT^rrq`&Od*]M_Z'`(St5.ts+13brrR$;Fm8,kc8pI~> -!B:&NirG%NrrA#2irRY=r4W.2rOr;"!<'V8=VlR;G@UQb!!)u3!!)r2!HIQ(rs\,)MJ,0\$9i-[ -[FtKArrK@\kl1au&odT^rrqf0T;'Hs_Z'`+Wi>?9s+13brrR$;Ep;Tb_`*)~> -!BpJTm/X,urrB%Om/atTr4W.2rk8H)&HMdD!JAYrrr?a2^A\-4^A\-2^&VjDBa"nTEpJ$@tLrri;+H,KW4s+13arrOVL[d!/[eieN~> -!BU8Qkl@9errAVCklJDKr4W.2rk8H)&HMdD!JAYrrr?a2^A\-4^A\-2^&VjDBa"n]a.NOe2frri;4Ls#^Js+13arrOVLZg$]Tc8pI~> -!B:&NirG%NrrA#2irQWAr4W.2rk8H)&HMdD!JAYrrr?a2^A\-4^A\-2^&VjDBa"ng*CSAOO,rri; -!BpJTm/X,urrB%Om/atVr4W.2rk8FsAcVeD!Jer!rrJsZo=b6gV="9hr7SK7>Rh`YS(mK5!J'Y) -rr]hSB( -!BU8Qkl@9errAVCklJDNr4W.2rk8FsAcVeD!Jer!rrJsZo=b6gV="9hr7SK7>Rh`YS(mK5!KQ^9 -rr]hSB( -!B:&NirG%NrrA#2irQWDr4W.2rk8FsAcVeD!Jer!rrJsZo=b6gV="9hr7SK7>Rh`YS(mK5!M&`H -rr]hSB( -!BpJTm/X,urrB%Om/c$]r4W.2rkA=2rk8DQmf!.d>I=(;!OQ(nrs.;J>T=5YO5'C.!rd<=mJd:Y -AfnV(rsP'a+ZrP/@7ntUfeJcC<$]Dhqs!)VnH!S0Da~> -!BU8Qkl@9errAVCklKLVr4W.2rkA=2rk8DQmf!.d>I=(;!OQ(nrs.;J>T=5YO5'@-!JC=;rr_e' -+1fJl#4os.M6Yk7^]+E.Y)q=fs+13^rrSDb:?^pCc8pI~> -!B:&NirG%NrrA#2irRYIr4W.2rkA=2rk8DQmf!.d>I=(;!OQ(nrs.;J>T=5YO5'@-!L*HKrr_e' -+1fJl#5$9BR(M>U^]+E/\=VQ.s+13^rrSDb9^(L;_`*)~> -!BpJTm/X,urrB%Nm/U\q^A\-2^&S03^&VjErrVgp[.h99Zrlt[rs.;>>Rh`YS(mf>!VUg7rr_o= -_=[R'"1fRdn]:_7o>Qr?V:PRYrri>?I'WR!s+13]rrPdmQ0@T9eieN~> -!BU8Qkl@9errAVBkl>5l^A\-2^&S03^&VjErrVgp[.h99Zrlt[rs.;>>Rh`YS(mf>!V_EGrr_o= -_=[R'"1fRdn]:_7ouj"bYM/ogrri>FMnAh:s+13]rrPdmPN_63c8pI~> -!B:&NirG%NrrA#1irEQe^A\-2^&S03^&VjErrVgp[.h99Zrlt[rs.;>>Rh`YS(mf>!Vi#Wrr_o= -_=[R'"1fRdn]:_7p!rri>LR`,)Ss+13]rrPdmO6GU)_`*)~> -!BpJTm/X-`rrBjOrrB%Nm/`ZL8ppLA!Oqn<0FCLd+prs.;J>T=8ZQ2CR\!U5=8rs/%4 -F+o6fE:Ei+"7]tF]#jsVouNJFU=9"Prr_ADP3.>qJcE:\"83$&f]_]'eieN~> -!BU8Qkl@:PrrBjOrrAVBklI06o=b6gV>L8ppLA!Oqn<0FCLd+prs.;J>T=8ZQ2CR\!UQ$Irs/%4 -F+o6fE:Ei+"7]tF]#jsVp -!B:&NirG&9rrBjOrrA#1irPC,o=b6gV>L8ppLA!Oqn<0FCLd+prs.;J>T=8ZQ2CR\!UcWXrs/%4 -F+o6fE:Ei+"7]tF]#jsVpXH@4\)$tprr_ScWpG<:JcE:\"83$&cfjBi_`*)~> -!BpJTm/X-`rrE,8_uB_9fBiT>[.V-6Zs3>*$0,r-G_Lls>&WHQrs7A@7hKCSs4ie8rrU_Q])B>K -\ldM_s1f:[n]Uq:pWAnKT@!GHrri,$IE;D=s+13[rrTS.1$@p)eieN~> -!BU8Qkl@:PrrE,8_uB_-fBE<9[.V-6Zs3>*$0,r-G_Urt>&WHQrs7A@7hKCSs59LHrrU_Q])B>K -\ldM_s1f:[n]Uq:ps>jmWn%!Yrr`)-Mp?nRJcE4Z!jr"^kNN#m3e.~> -!B:&NirG&9rrE,8_uB^qfAcm2[.V-6Zs3>*$0,r-G_Urt>&WHQrs7A@7hKCSs5^3XrrU_Q])B>K -\ldM_s1f:[n]Uq:psu[9[G1Sjrr`,7RacogJcE4Z!jr"]kMlT\2h1~> -!BpJTm/X-`rrN07^r66QWRpM=j#aXB^&kZDo_&4dkBE`bdJjC2LF=QhNrAtZmSpms^'22Ll[KMZ -bl7nAb+!XHcM4sM"4Daso7?pms0hq/C&iG?m/bd$J,~> -!BU8Qkl@:PrrN07^r66QS_**-h`J4>^&kZDo_&4dkCBJndJjC2LF=QjR/R$dmSpms^'22Ll[KMZ -bl7nBd&)Sse+pQS"4rU;on!-os0hq/C&iA=klK'jJ,~> -!B:&NirG&9rrN07^r66QN7[(kffHM7^&kZDo_&4dkD?8&dJjC2LF=QmU&FummSpms^'22Ll[KMZ -bl7nBf!1RJg%r8Z"5KHXp4<6ps0hq/C&i8:irR%VJ,~> -!BpJTm/X-`rrW8:'Ys;>rW)osquG[T!3+Q:"1A_F]_fDF]PD$OoD\iSh9Gs*a%d"4RK!5&\,!`? -[kgA6cMn+@aI.:Dc1eaJ"7D\7gk#KVs0Ve-)Z[P6m/bd$J,~> -!BU8Qkl@:PrrW8:'Ys;>rW)osquG[T!1h^*"1&MC]_fDF]PD$OoD\i_iQ_B.a&*78RK!5&\,!`? -[kgA6cMn+BcD65odeL?P"7W4Qi.:oZs0Ve-)Z[G3klK'jJ,~> -!B:&NirG&9rrW8:'Ys;>rW)osquG[T!0#Lh"0N/>]_fDF]PD$OoD\ikjj!f2a&EL^s0Ve-)Z[8.irR%VJ,~> -!BpJTm/X-`rr`?%^_FTSrr<&trr<&SrrB%Lm0i4s!FT)ULlQ^`Dr^Bf!KQ-_s8TM1Q9-:CE;.'I -A`V5<#4oj$Gb<:V\,QU/^3dHhJcC<$[/U6R!#Y%bm/bd$J,~> -!BU8Qkl@:Prr`?%^_FTSrr<&trr<&SrrAV@kmQYk!FT)ULlQ^`Dr^Bf!Lr/ors$3NQ9-:CE;.'I -A`V5<#5$-6LT8l"\,QU0`JVP1JcC<$[/U6R!#Xn^klK'jJ,~> -!B:&NirG&9rr`?%^_FTSrr<&trr<&SrrA#/isXf^!FT)ULlQ^`Dr^Bf!N5/*rs$K^Q9-:CE;.'I -A`V5<#5-HJQaPNC\,QU0baHWOJcC<$[/U6R!#OVWirR%VJ,~> -!BpJTm/X-`rriE&s1f>ao)A[irVlith#@ARea3TM!.Fn1b0&o8rrJ#=bl7mI`W,tZ4fJ=nr;cl3 -!N;73rs&&4P^0"Nq6g5)h0bUUJcC<$ZMsuS!+G$W!S0Da~> -!BU8Qkl@:PrriE&s1f>ao)A[irVlith#@AFe`d*iJXN"JcC<$ZMsuS!+=sR!R<`V~> -!B:&NirG&9rriE&s1f>ao)A[irVlith#@A5e`-m?!.Fn1b0&o8rrJq]bl7m\df9?g4fJ=nr;cl3 -!N;73rs&/DXI$ENqmHG+jdNCBJcC<$ZMsuS!+"aI!Q-jH~> -!BpJTm/X-`rr<&urrR`Op%/1`!<)p$!"oG^LA^$1!3+N9!j)GRl2Ld=l-0/.S^RN;!-8"O!!)o1 -!-6Zj#4TKnHDAsd[/U7!UjL=:s+13SrrO_OXlf!OeieN~> -!BU8Qkl@:Prr<&urrR`Op%/1`!<)p$!"oG^LA^$1!1h[)!ic5Ol2LdKlcfA0W7V%K!-8"O!!)o1 -!-6Zj#4fj-M6>M.[/U7"Y):YYs+13SrrO_OWoiOHc8pI~> -!B:&NirG&9rr<&urrR`Op%/1`!<)p$!"oG^LA^$1!0#Ig!i>rKl2LdXm`b\3ZeYQ[!-8"O!!)o1 -!-6Zj#4p0AR(1uM[/U7$\=)!#s+13SrrO_OVWQn>_`*)~> -!BpJTm/X-`rriE&s1f>ao)A[iqu6crd6Va1rrB%Km/uP`!8?` -!BU8Qkl@:PrriE&s1f>ao)A[iqu6crd6Va1rrAV?kl]uW!8?` -!B:&NirG&9rriE&s1f>ao)A[iqu6crd6Va1rrA#.ire0L!8?`WL19Rr3QD+rQ^hLqLSZts02M*g&MZ@k2QK[2h1~> -!BpJTm/X-`rr`?%^_FTSrr<&prrM9oiVrnWeEm< -!BU8Qkl@:Prr`?%^_FTSrr<&prrM9oiVrnKeEI$7!/^"@!KHZorrJ5Mrr2t;qn<-DJe.jp!-$`n -#4TO%MR)%9Z2XpaQD -!B:&NirG&9rr`?%^_FTSrr<&prrM9oiVrn:eDgU.!/^"@!Lr`*rrJ_]rr2t;qn<-DJe.jp!-$`n -#4fs;RChDUZ2XpeUTX$9s+13QrrS#W;WZp>_`*)~> -!BpJTm/X-`rrW8:'Ys5S_!rd<]!2ATB!S0Da~> -!BU8Qkl@:PrrW8:'Ys5klRIW39pMEM>#0n!JL@Lrr@*:^&kp$%fX0BEo6m# -k.R%<[GS1f"7iRTeq*jPs/c5%2uoT4klK'jJ,~> -!B:&NirG&9rrW8:'Ys5lEs"8''ngO]BUs/c5%2uoH0irR%VJ,~> -!BpJTm/X-`rrN07_!h:'!<)p$=O[0'9Ocu\!3+K8"6Bghj6Q^GGPKG_!VLa:rrJ@_rP&:3"VuX& -^8R:Vrs/MXY(;;4i;Tq["T5u\[J>CRJcDhO"60@fjlPk1eieN~> -!BU8Qkl@:PrrN07_!h:'!<)p$=O[0'9Ocu\!1hX("5sOdj6Q^GLAB*o!VV?JrrJ@_rP&:3"VuX& -^8R:Vrs&J\[uZ`bjKALcrPaZ-qLSZts/c5&irBDEjllfk3e.~> -!B:&NirG&9rrN07_!h:'!<)p$=O[0'9Ocu\!0#Ff"5=+^j6Q^GQ28c*!V_rZrrJ@_rP&:3"VuX& -^8R:Vrs&J`^n%.:kH=gfrQUbLqgncus/c5&irBD?jl6BZ2h1~> -!BpJTm/X-`rrE,8nGiCds8N8&/d*,5p>Q#OWRL59:B6C?rrI3=c2Rh.L]7;Tp24(.^&`6:k5PY_ -eYdeR]'$0p"58Nul[f(es/Q)#N;uc8m/bd$J,~> -!BU8Qkl@:PrrE,8nGiCds8N8&/d*,5p>Q#OS^Zg)9`U1=rrI`Mc2Rh0PlC[ap24(.^&`6:k5PY` -g9HR(_m=G:gs/Q)#N;u]6klK'jJ,~> -!B:&NirG&9rrE,8nGiCds8N8&/d*,5p>Q#ON76eg9)st;rrJ;]c2Rh3UAk/op24(.^&`6:k5PY` -hRf5Ram?,/"6-&Zmt(Lis/Q)#N;uW4irR%VJ,~> -!BpJTm/X-`rrBjOrrB%Im/is]2=1>DrGp-^#hkRDs1]7NA[hKL!Oln/rs&8DTm;j;m]6?in">9] -JcC<$W;coV!28K@!S0Da~> -!BU8Qkl@:PrrBjOrrAV=klRFV2=1>Drdi;n#i;9Ts1]7NA[hKL!Oln/rs&;KX,*Cgn>lQknZ.c( -JcC<$W;coV!1r99!R<`V~> -!B:&NirG&9rrBjOrrA#,irYYL2=1>DrfPG)#i_uds1]7NA[hKL!Oln/rs&;P[[4&?nuMcmo -!BpJTm/X,urrB%Im/uJ[!8Ho@!Vpl^rs?oDq/m:\s6`k"qn<-F<:9)P#4op)GaZVDWrE5"]mI6b -JcC<$W;ctS!"J)Om/bd$J,~> -!BU8Qkl@9errAV=kl]oS!8Ho@!W%Jnrs@)Tq/m:\s6`k"qn<-F<:9)P#5-9, -JcC<$W;ctS!"IrKklK'jJ,~> -!B:&NirG%NrrA#,ire'F!8Ho@!W/,*rs@;dq/m:\s6`k"qn<-F<:9)P#56QOQE\m3WrE5"bF-EJ -JcC<$W;ctS!"@ZDirR%VJ,~> -!BpJTm/X,urrB%Hm/g;gK^Jd?p3Fm^"MU-V;!e2]!nCDarOr?E=Olg=#4B -!BU8Qkl@9errAV -!B:&NirG%NrrA#+irW*YK^Jd?pm95)"O3_t;!e2]!nCDarOr?E=Olg=#4g*@QaPNBW;ctVTWms; -s+13IrrRiR;WHd<_`*)~> -!BpJTm/X,urrB%Hm/j3d/FEH -!BU8Qkl@9errAVS9&qksGrlD'TuJcC<$ -V#LKI!2ef@!R<`V~> -!B:&NirG%NrrA#+irYnS/FEH$Pr29PsmB<8BJcC<$ -V#LKI!28H5!Q-jH~> -!BpJTm/X,urrB%Hm/uPb!7UB9!UYKarr_Ua+KYA<"8$5=o^Vqdro(2 -!BU8Qkl@9errAV -!B:&NirG%NrrA#+ire0N!7UB9!V)c,rr_Ua,e!LJ"8$5=o^Mkbkes0c^uPEkrri)3Ra:q`s+13G -rr^^M&`;X/!Q-jH~> -!BpJTm/X,urrB%Gm/gSoH1(\5k)%Fa"J??LOkTR0!IoXkrs/MVXFQ)6j8PnT"T?5dX7UuCJcDJE -!dOcPip?ct4b*~> -!BU8Qkl@9errAV;klP,jH1(\5l'BZq"J??LSDO#?!IoXkrs&GY[Z6Wdk+r"[rQ:&+p4<6ps.]Mp -GlV.0klK'jJ,~> -!B:&NirG%NrrA#*irWBaH1(\5m%_o,"J??LW8dRO!IoXkrs&G]^RV%;l(n=^rR%(JpOW?qs.]Mp -GlV%-irR%VJ,~> -!BpJTm/X,urrB%Gm/s`r*W>I,!T/scrs%"E(Vg!)kkG)XEK0\l#5ZfGH]Gc'UAk>KM3d:Ts+13D -rr`3?!4ChR!S0Da~> -!BU8Qkl@9errAV;kl\3k*W>I,!TT]trs%"E(Vg!7lhCD[EK0\l#5d&WMOVNMUAk>OQD3Vps+13D -rr`3?!4(VK!R<`V~> -!B:&NirG%NrrA#*ircFa*W>I,!Tp?.rs%"E(Vg!DmJ$V]EK0\l#5d5fRA\6rUAk>TUTNm6s+13D -rr`3?!3Y>A!Q-jH~> -!BpJTm/X,urrB%Gm/u\t!4qY!!SE^ers7t-(6SIns*483rrH)uq>UZnc(B6G_saip?ct4b*~> -!BU8Qkl@9errAV;kl^,l!4qY!!SsL!rs7t-(6SIns+g@CrrH)uq>UZod]/(raml))"7<"LfRa'R -s.B;n\c -!B:&NirG%NrrA#*ire9_!4qY!!TC00rs7t-(6SIns-NNTrrH)uq>UZofX.!Id.3n1"7NOgh1>TW -s.B;n\c -!BpJTm/X,umJs65m/hM4>OVRmd[eqg"T"5rD!_0$!W$s4rrG+!r;Qul`gD"@an28+"S]0J^&*B\ -JcD>A!a>YLiU$Zs4b*~> -!BU8Qkl@9emJrg)klQ#.>OVRmf;R7""T"5rD!_0$!W.QDrrG+!r;QunbbU#lch=%3"SfQc`;G2d -JcD>A!a>YJiTUBg3e.~> -!B:&NirG%NmJr3mirX9%>OVRmgp>Q2"T"5rD!_0$!W/,TrrG+!r;Quoe$#+Deb>a:"Sos'bl!%l -JcD>A!a>YGiSssV2h1~> -!BpJTm/X,umJs65m/tZ8$M!Wc!R%7hrr\f-8CdY -!BU8Qkl@9emJrg)kl]-1$M!Wc!R\($rr\f-8CdY -!B:&NirG%NmJr3mird=&$M!Wc!S=j4rr\f-8CdY -!BpJTm/X,umJs64m/f?LSacX[`2_Mj"TGV\*2!*-!T&q4rs8K+i4"YnWRq'=rr_PEP2h,nJcD5> -!hB -!BU8Qkl@9emJrg(klNmGSacX[bI#t&"TGV\*2!*-!TKXDrs8K+j1h"?ZePDKrr_YUT&tV(JcD5> -!hB -!B:&NirG%NmJr3lirV4@SacX[dCn65"TGV\*2!*-!Tg -!hB -!BpJTm/X,umJs64m/iLP54JRQ^9QGm"ob_]19gcRrrLN=q>UZtgS&52Z/D,O"6l>(c@Q"Hs-`lg -4ogi*m/bd$J,~> -!BU8Qkl@9emJrg(klR"J54JRQ`Oah("ob_]19gcRrrL]Mq>UZthl:d[]&T:["7)kDdt.OMs-`lg -4ogc(klK'jJ,~> -!B:&NirG%NmJr3lirY5@54JRQber38"ob_]19gcRrrLl]q>UZtj0O?/_WREg"7EI`fn'0Ss-`lg -4ogW$irR%VJ,~> -!BpJTm/X,umJs64m/uJX!SR#C!OfPorrg1Z19gcPrrL$=r;QusdA;2MSO&_E"S8[A^\`T^JcD/< -"5*\^k2>V-eieN~> -!BU8Qkl@9emJrg(kl]oP!SR#C!PcG*rrg1Z19gcPrrL6Lr;Quteusq!V*pdP"SB*[`r(DfJcD/< -"5*\^io'&%c8pI~> -!B:&NirG%NmJr3lire'D!SR#C!QW::rrg1Z19gcPrrLK\r;QutgUW]LX@J`Z"SKKtcMW7nJcD/< -"5*\^gu.2n_`*)~> -!BpJTm/X-`mJsT1mJs63m/gPnFRfA3YeT#o!fmn`o`#B-])Vg%aI@F@`:3f+<1NskqR_*Xon!-o -s-N`eF9#V(m/bd$J,~> -!BU8Qkl@:PmJsT1mJrg'klP&hFRfA3\]3J*!fmn`o`#B6_>jQ-cDHAlb4>S3<1Nskqnn<$p4<6p -s-N`eF9#P&klK'jJ,~> -!B:&NirG&9mJsT1mJr3kirW?`FRfA3_9Um:!fmn`o`#B>aoDD6e?P=BdI[C;<1NskqobDDpOW?q -s-N`eF9#J$irR%VJ,~> -!BpJTm/X-`mK!;"rrK+=huVb7/rs,I7^QNl8c1h2:!KD)jrri>EJY27Z -s+139rr`$2!5.4V!S0Da~> -!BU8Qkl@:PmK!;"rrKIMhuVb7/rs,gH`h&!ee+inA!KD)jrri>KO/hW! -s+139rr`$2!4h"O!R<`V~> -!B:&NirG&9mK!;"rrKd]huVb7/rs--Xc)R,QS[Is< -s+139rr`$2!4:YD!Q-jH~> -!BpJTm/X-`mK*A%Zc)83WQjf3/HD^>rrJk=i;Wo;10jPGrs/P^[ -!BU8Qkl@:PmK*A%Zc)83S^$C#/HD^>rrK7Mi;Wo;10jPFrs%SuL5E7kr;-EoDiUIi"5fN:idq,\ -s-3NbVZ8=*klK'jJ,~> -!B:&NirG&9mK*A%Zc)83N6UAa.fcL -!BpJTm/X-`mK3I)'=78trW)la"N!J4)O04K!3+61!f[1Go)A`\e)C<.\.F_prs/JSX+5r2L#Vk, -!DfklrrhPTK[B^Ls+136rrPIdNSa%'eieN~> -!BU8Qkl@:PmK3I)'=78trW)la"N!J4)O04K!1hC!!f?tDo)A`gf\ui3\.F_prs/MY[>pKaPNDQ= -!Dfklrr_SaOk#$_JcCo5!^QgDhWY'd3e.~> -!B:&NirG&9mK3I)'=78trW)la"N!J4)O04K!0#1_!f$bAo)A`rh;SA8\.F_prs/M]^7:n8T]l.M -!Dfklrr_YnTA"krJcCo5!^QgAhW"XS2h1~> -!BpJTm/X-`mK;&7%DrsJPIU3_p7 -l2Ud3nb<%a0@$?m"S8[A_#/c`JcCo5"5*\_i83i%eieN~> -!BU8Qkl@:PmKc$N\rPrrJbLj8T5>;&7%DrsJSOXbiRd -m/R*EoCr7c0@$?m"SB'Za8CMgJcCo5"5*\_gtq8rc8pI~> -!B:&NirG&9mK;&7%DrsJSU\!X/= -mf3Ng_`*)~> -!BpJTm/X-`mKEUjs1f;So'QJXrU'\bQ/1j.WQa`2>l]! -!BU8Qkl@:PmKEUjs1f;So'QJXrU'\bQ/1j.S]p=">6&d:rrJAMjo5JYKG9+7qYpckbbU#jbk(f5 -!r[cNp\t7)m\TpdqSJ*"p4<6ps,d6^F9#P$klK'jJ,~> -!B:&NirG&9mKEUjs1f;So'QJXrU'\bQ/1j.N6L;`=TER8rrJh\jo5JYKG9+7qYpcld]f%Ae+N\> -!r\>^p\t7)m\TpdqoY;BpOW?qs,d6^F9#J"irR%VJ,~> -!BpJTm/X-`mJm7drrR`Ojn%m?!<)#[ -qu6lb]oRK6d.mJ;!UtO3rrMNuVZ-eta+'iSJcC<$O8f=T&cfi*m/bd$J,~> -!BU8Qkl@:PmJm7drrR`Ojn%m?!<)#[ -qu6ld`12[debT(A!V23DrrMNuVZ-etc&JgrJcC<$O8f=T&cf`'klK'jJ,~> -!B:&NirG&9mJm7drrR`Ojn%m?!<)#[ -qu6lgbG^f;gA1UF!VDiTrrMNuVZ-ete"!o?JcC<$O8f=T&cfQ"irR%VJ,~> -!BpJTm/X-`mKEUjs1f;So'QJXrU'gk>27q8;;ppCWQXZ12#s*rqQKun8NH&K6)#$qYp]t -YVI3/rVm-%i3J)fXP*OGrrM/0<"mRrmHOdiIV#[s,I$[RK,5#m/bd$J,~> -!BU8Qkl@:PmKEUjs1f;So'QJXrU'gk>27q8;;ppCS]g7!1]X!;rrN%Mp\tKfE-$_cF)^XFrri>* -1*!k'rs/P`]9J>`h>R*J!TodDrrLCuVuHkNPbI2is+130rrSVh1u. -!B:&NirG&9mKEUjs1f;So'QJXrU'gk>27q8;;ppCN6C5_1B* -1*!k'rs/Pd`1`a9ir/WO!U6HTrrLCuVuHkSTrmO0s+130rrSVh1Yh!k_`*)~> -!BpJTm/X-`mKE\ldM\rskP< -19gcXs81BHIYkJlrq-3keX?13!No4trr_&;Mq -!BU8Qkl@:PmKE\ldM\rsbJ; -19gcXs8:WXN0_3>oD\jFV>'ujY"u%s"5o]:gk#KVs,6mY/HD0nklK'jJ,~> -!B:&NirG&9mKE\ldM\rsbJ; -19gcXs8:ceS"n!eoD\jJYkS.uY"u%s"6?DWi.:oZs,6mY/HD$jirR%VJ,~> -!BpJTm/X-`mK3I)'=72r!!)uc"ZYB,mbJ<1mJs60m/uPh!5A1,!T/t6rrVUf^&,MU]i=G"rie-s -SH&W_c(K?F^[(Ch!QV,4rrJ-uX8`=bRY/laJcC<$MuNmn!#XqTm/bd$J,~> -!BU8Qkl@:PmK3I)'=72r!!)uc"ZYB,mbJ<1mJrg$kl]u`!5A1,!TT[FrrVUf^&,MU]i=G"rie-s -SH&W`d]81q`pW?r!R7nDrrJ-uX8`=eV304*JcC<$MuNmn!#XePklK'jJ,~> -!B:&NirG&9mK3I)'=72r!!)uc"ZYB,mbJ<1mJr3hire0T!5A1,!Tp?VrrVUf^&,MU]i=G"rie-s -SH&WafX7'GcLC?'!S"^TrrJ-uX8`=gZ(K\JJcC<$MuNmn!#OPJirR%VJ,~> -!BpJTm/X-`mK*A%Zg[;^!<)#XDJ!3+-.!dF]BpAY0 -!BU8Qkl@:PmK*A%Zg[;^!<)#XDJ!1h9s!d4Q@pAY0AXSMksCq'5S%C^/D)`"Ysn]IS] -Vp=u&rrKsLp\t8!S?;eon?7elr.4m!s,$aW;#kdoklK'jJ,~> -!B:&NirG&9mK*A%Zg[;^!<)#XDJ!0#(\!cn?=pAY0G[e]q(Cq'5S%C^/D)`"Yso?j_- -ZIS[9rrL6\p\t8!S?;eoo!t48r.4m!s,$aW;#k[lirR%VJ,~> -!BpJTm/X-`mK!o9*o\rD'5deW2. -!NX-4rrF+oYQ"atYC!_QJcC<$M#RS7!sdK5m/bd$J,~> -!BU8Qkl@:PmK!o9*r_O?@cfD=e4 -!O^)ErrF+oYQ"b!\;@urJcC<$M#RS7!s[90klK'jJ,~> -!B:&NirG&9mK!o9*ub,:Z -!BpJTm/X-`mJsT1mJs6.m/g;gF8,\8VoJT5!L0P]^Ae0?&U;%(W,%' -!BU8Qkl@:PmJsT1mJrg"klOibF8,\8Z-<(E!L0P]^Ae0?&U;%(W,Ro]\)7/IrrK(Lq#:BL*3fGG -qSJ,toR[$ns+^OTEr]4oklK'jJ,~> -!B:&NirG&9mJsT1mJr3firW*YF8,\8]@6WV!L0P]^Ae0?&U;%(W-"](^uPCVrrKI\q#:BL*3fGG -qT>5?on!-os+^OTEr]+lirR%VJ,~> -!BpJTm/X,umJs6.m/t6+%e08n!L2:6rr@*:^&l!,$i[j@>iarF!Kc46rrJToZMt(+`IFTIJcC<$ -L&V8E%KOE#m/bd$J,~> -!BU8Qkl@9emJrg"kl\^$%e08n!MJ9Frr@*:^&l!,$i[j@?K^AK!M&0ErrJToZMt(+b`/^lJcC<$ -L&V8E%KO;uklK'jJ,~> -!B:&NirG%NmJr3fircmn%e08n!Nb;Wrr@*:^&l!,$i[j@@-ZeP!NG5VrrJToZMt(+d[[c8JcC<$ -L&V8E%KO,pirR%VJ,~> -!BpJTm/X,umJs6-m/fHOM>7)OIIR+5!-%eK!K\E&^&W-3rrI`=q#:A"S$`1urks/Mj+75]s+C=Q -M#]`mm/bd$J,~> -!BU8Qkl@9emJrg!klO!JM>7)OMt6`E!-%eK!K\E&^&W-3rrJ5Mq#:A"S$W+sb))kTJcC<$KDu"0 -!'T$"!R<`V~> -!B:&NirG%NmJr3eirV:BM>7)ORe-CU!-%eK!K\E&^&W-3rrJ_]q#:A"S$W+sd?q*$JcC<$KDu"0 -!'Alo!Q-jH~> -!BpJTm/X,umJs6-m/sBh)u9F3"8'mXFSYq:E;R?N!!RlO^&W-4rrW1AqY:'k*8@n$"4iE_g4B9T -s+:7Qq&9=7g$Jgk4b*~> -!BU8Qkl@9emJrg!kl[ja)u9F3"8'mYK),EHE;R?N!!RlO^&W-3rrIfMq#:@7gU7%`gR4/[JcC<$ -K)YrK)ZZhiklK'jJ,~> -!B:&NirG%NmJr3eirc(W)u9F3"8'mZOno"WE;R?N!!RlO^&W-3rrJ>\q#:@7gU7%`hkm")JcC<$ -K)YrK)ZZ\eirR%VJ,~> -!BpJTm/X,umJs6-m/u]*!2'8j#Ol\RKnF#WnGE4cEr3QP]Sm6t^&W36rrMh=q#:BL*4GkMh3*TA -rdk*#s+11PT)^D.g$Jgk4b*~> -!BU8Qkl@9emJrg!kl^-!!2'8j#Ol\RKnF&XnGE4cEr3QP]Sm6t^&W36rrMkMq#:BL*4GkLiLZ=c -JcC<$Jc>lQT)^A)g$&O_3e.~> -!B:&NirG%NmJr3eire9i!2'8j#Ol\RKnF)YnGE4cEr3QP]Sm6t^&W36rrMn]q#:BL*4GkLjf5*1 -JcC<$Jc>lQT)^>"g#E+N2h1~> -!BpJTm/X,umJs6,m0AsX/,oS!=M"IF!kMLar;Qe^W;XI1!!Nj?^:pP1j8T/DL\UlMRp -!BU8Qkl@9emJrfukm*FQ/,oS!=M"IF!kMLar;Qe^W;XI1!!Nj?^:pP1j8T/FPkb7ZRp -!B:&NirG%NmJr3dis1\H/,oS!=M"IF!kMLar;Qe^W;XI1!!Nj?^:pP1j8T/IUA4`hRp -!BpJTm/X,umJs6,m0;bn!4;/n^&,MF]i=G!rrS]->PGi4ETcB^!SWe5rrHAo])MotT7=fWJcC<$ -JcG`L"1/%Ikh,8'eieN~> -!BU8Qkl@9emJrfukm$2e!4;/n^&,MF]i=G!rrS]->PGi4ETcB^!T'LErrHAo])Mp!Wf>1!JcC<$ -JcG`L"1/%HjOi\tc8pI~> -!B:&NirG%NmJr3dis+BZ!4;/n^&,MF]i=G!rrS]->PGi4ETcB^!TL3UrrHAo])Mp$[@GYBJcC<$ -JcG`L"1/%Hhq6ri_`*)~> -!BpJTm/X,umJs6+m0&%A4)DD%^'M2as-t#IS8>\1^&b]Zir9&'UA4`h*8A.+"R`18^%m6ZJcC<$ -r;Qg[!/&nj!S0Da~> -!BU8Qkl@9emJrftklcP;4)DD%^'M2as-t#IS8>\1^&b]Zir9&-Xn_ns*8A.+"Rr[S`;5&bJcC<$ -r;Qg[!.ibd!R<`V~> -!B:&NirG%NmJr3cirjf24)DD%^'M2as-t#IS8>\1^&b]Zir9&3\+ot(*8A.+"S0-mbkltkJcC<$ -r;Qg[!.NP[!Q-jH~> -!BpJTm/X,urrB%]!,M>C#](CuSH&WW<5&1C!khFuir9%nYke;"gDmp,"S/[A[eG@QJcC<$ -qu6c4!#+ADm/bd$J,~> -!BU8Qkl@9errAV0kl]cT!,M>C#](CuSH&WW<5&1C!khJ!ir9%u\bZ7+gDmp,"SB0[^A*9ZJcC<$ -qu6c4!#"/?klK'jJ,~> -!B:&NirG%NrrA"tirdpH!,M>C#](CuSH&WW<5&1C!khJ!ir9&(_YO34gDmp,"SKQt`qY,bJcC<$ -qu6c4!#!r9irR%VJ,~> -!BpJTm/X,urrB%;m/hVGW;XF8X"jbW^:pOSr;QiK=M"IF"1hBRr8R_WYeKr5!Lm?/rri&&Ha!$l -s+13$s7uZr5lc8_m/bd$J,~> -!BU8Qkl@9errAV/klQ,AW;XF8X"jbW^:pOSr;QiK=M"IF"1hB]rSmhX\]+CE!Lm?/rri)0M7E2/ -s+13$s7uZr5lc2]klK'jJ,~> -!B:&NirG%NrrA"sirXB8W;XF8X"jbW^:pOSr;QiK=M"IF"1hEirSmhX_9MfU!Lm?/rri,9R)/HH -s+13$s7uZr5lc)ZirR%VJ,~> -!BpJTm/X,urrB%;m/c)lr4W4n27*7q!-7u:$1MnTKnFGcnUJ#S&,+-q7D$Qmt(Li -s+14Frr^1>&)Yt*!S0Da~> -!BU8Qkl@9errAV/klKNdr4W4n27*7q!-7u:$1MnTKnFGcn>4"]rrK7Mq>UJ#S&,+-qSS2rnU^^k -s+14Frr^1>&)5\"!R<`V~> -!B:&NirG%NrrA"sirR^Xr4W4n27*7q!-7u:$1MnTKnFGcn?C'prrKU]q>UJ#S&,+-qTG;=nq$gl -s+14Frr^1>%bB4k!Q-jH~> -!BpJTm/X,urrB%:m/TcV^&\J&r4W/Mq>U`mcGB/Qs6k@!j8T.EgA1aL*8AC2"THJhU$@4/JcC<$ -pAY1b!-QiZ!S0Da~> -!BU8Qkl@9errAV.kl=?R^&\J&r4W/Mq>U`mcGB/Qs7)!4j8T.QhYI0P*8AC2"TH]'XR(N -!B:&NirG%NrrA"rirD[K^&\J&r4W/Mq>U`mcGB/Qs72TFj8T.]iq`TT*8AC2"THr=[dSeIJcC<$ -pAY1b!-$KK!Q-jH~> -!BpJTm/X,urrB%:m/Ubr^&nO(#[RGD!-%N/!l^3!jSo78kkb;[gDn03"T68jU@*U4JcC<$p&>-: -!"@Z5m/bd$J,~> -!BU8Qkl@9errAV.kl>>n^&nO(#[RGD!-%N/!R$tmrrJALqYpTN*5qj[rQL>)n:CUjs+14Crr^CD% -,'1q!R<`V~> -!B:&NirG%NrrA"rirEWf^&nO(#[RGD!-%N/!Rdn+rrJh\qYpTN*5qj[rR7=Hnq$gls+14Crr^CD% -+Ebe!Q-jH~> -!BpJTm/X,urrB%:m/Uu#^&o^KQ3[E'!-7W0!L1@[rrIE=qYpSc>fQdHrQ0\Zi.:oZs+14ArrPmp -DUe%SeieN~> -!BU8Qkl@9errAV.kl>Ms^&o^KQ3[E'!-7W0!MIHnrrIrMqYpSc>fQdHrQgV$jFR>^s+14ArrPmp -Ct.\Mc8pI~> -!B:&NirG%NrrA"rirEfk^&o^KQ3[E'!-7W0!NaQ,rrJJ]qYpSc>fQdHrRIODkCNYas+14ArrPmp -C=M8E_`*)~> -!BpJTm/X,urrB%:m/`*CrOrMr&dr*]^8R:drrVS8l/r!HqK2Q5!D]E2rri;EKp:DEs+13$s760l -a8cJ!eEm:f4b*~> -!BU8Qkl@9errAV.klHX>rOrMr&dr*]^8R:drrVYHlfS3Jqh4eF!D]E2rri>LP+^cbs+13$s760l -a8cIseEI"Z3e.~> -!B:&NirG%NrrA"rirOn5rOrMr&dr*]^8R:drrV_YmcONMqigjU!D]E2rri>RTWI7+s+13$s760l -a8cImeDgSI2h1~> -!BpJTm/X,urrB%:m/bgWpV$ZJkOAKQ`/jl[rrMJ -!BU8Qkl@9errAV.klK7OpV$ZJkOAKQbFJRprrMPLqYpWe&+RgB"THo9T&5,!JcC<$nG`PX!,p?N -!R<`V~> -!B:&NirG%NrrA"rirRGDpV$ZJkOAKQdA['-rrMV\qYpWe&+RgB"TI,LWoJ[1JcC<$nG`PX!,U-E -!Q-jH~> -!BpJTm/X,urrB%9m/^k/q7Zm=D"%B*rft4\rrM#=qYpSk: -!BU8Qkl@9errAV-klGA)q7Zm=D!q<(TuH3p!TKXGrrJlib5VRqQ^cc]s+13$s6osi^Aneue*-nY -3e.~> -!B:&NirG%NrrA"qirNZ!q7Zm=D!q<(Xj#u.!TpBXrrJlib5VS!Uo<7's+13$s6osi^Anbne)LJH -2h1~> -!BpJTm/X,urrB%9m/l*A^&,MF]i=FfrrVS8kii$Id@U47!D]E6rr^f1N7ELZJcC<$mJd5L!.3/] -!S0Da~> -!BU8Qkl@9errAV-klTR9^&,MF]i=FfrrVYHlfe?LeuANG!D]E6rr^uCRG!/kJcC<$mJd5L!.!#W -!R<`V~> -!B:&NirG%NrrA"qir[_,^&,MF]i=FfrrV_YmHFQNgU-hW!D]E6rr_,TVVZn(JcC<$mJd5L!-ZfN -!Q-jH~> -!BpJTm/X,urrB%8m/k=-])B>E\ldMLrrU0#rTX=__lWb8!q?fkcMn%"O,; -!BU8Qkl@9errAV,klSe&])B>E\ldMLrrUE6rosF`agM$G!q?fkcMn"&S -!B:&NirG%NrrA"pirZto])B>E\ldMLrrUWIrosF`d(]DW!q?fkcMn"*W2/4"s+13$s6Taf[K$un -dc1AG2h1~> -!BpJTm/X,urrB%7m0DN@ -!BU8Qkl@9errAV+km,s8 -!B:&NirG%NrrA"ois4., -!BpJTm/X,urrB%6m0)Se!.XY)rrVh?k3DsIVo\f9!ras[dJj@+Q%dH\JcC<$JcG$8"/c,7kL&Yt -eieN~> -!BU8Qkl@9errAV*klg#]!.XY)rrVkNl0A9LZ-N:I!ras[dJj@/Tp!h&JcC<$JcG$8"/c,7j3d)l -c8pI~> -!B:&NirG%NrrA"nirn0P!.XY)rrVn^lg"KN]%$ZX!ras[dJj@2Xe=;FJcC<$JcG$8"/c,6h9k6` -_`*)~> -!BpJTm/X,urrB%5m/rIN,5C@$!mQJqli.!Rf)5OLYVQ4,rrh;JK#mnAs+13$s69Ocp`]^#d-Ukb -4b*~> -!BU8Qkl@9errAV)klZtH,5C@$!n*>0li.!]gALsPYVQ4,rrhDYOO!fUs+13$s69Ocp`]^!d-1SV -3e.~> -!B:&NirG%NrrA"mirb2>,5C@$!na4Dli.!ihu*KUYVQ4,rrhPhT%3djs+13$s69Ocp`]]rd,P/E -2h1~> -!BpJTm/X,urrB%5m/uW&!064A!Mua\rrJ& -!BU8Qkl@9errAV)kl^&r!064A!O&fprrJMLrVlru19f:."QuYBbl!%lJcC<$kPkXE!%@!VklK'j -J,~> -!B:&NirG%NrrA"mire3e!064A!P,l/rrJt\rVlru19f:."R<7_den[rJcC<$kPkXE!%6^OirR%V -J,~> -!BpJTm/X,urrB%4m/s9e'CP&`!r.Jrm/I*7nbrIhYVQ4/rrhJUJ&;)6s+13$s5s=`mLoT!cg:ba -4b*~> -!BU8Qkl@9errAV(kl[d_'CP&`!r8#0m/I*FoDS[jYVQ4/rrhScNQM*Ls+13$s5s=`mLoStcfkJU -3e.~> -!B:&NirG%NrrA"lirbtT'CP&`!r8MDm/I*To_ndkYVQ4/rrh\qSC%1bs+13$s5s=`mLoSocf5&D -2h1~> -!BpJTm/X,urrB%3m/fENFlr]*idL7_rrW.?rVlfur\C_0rrhS[ID>W0s+13$s5a1]FT=SMm/bd$ -J,~> -!BU8Qkl@9errAV'klNsIFlr]*jbrWrrrW1Prr2p!r\C_0rrhYhN5kaGs+13$s5a1]FT=PLklK'j -J,~> -!B:&NirG%NrrA"kirV:BFlr]*kaM)1rrW1`rr2p!r\C_0rrhbuRa1e]s+13$s5a1]FT=MKirR%V -J,~> -!BpJTm/X,urrB%3m/t*)#iOkF!kj`qn,EFYIJs0IYql=3rrhYaI(f?,s+13$s5X+]i!9D!cKtY` -4b*~> -!BU8Qkl@9errAV'kl\O!#iOkF!lUZ/n,EF[N;`bXYql=3rrh_mMo>ICs+13$s5X+]i!9CrcKPAT -3e.~> -!B:&NirG%NrrA"kircal#iOkF!mI\Dn,EF\Rf36fYql=3rrhf$R`kPYs+13$s5X+]i!9CncJnrC -2h1~> -!BpJTm/X,urrB%2m/g5e=loYaS#GfU!TT+:rrGKcgA_ -!BU8Qkl@9errAV&klOc`=loYaVR#[j!TodJrrGKcgA_ -!B:&NirG%NrrA"jirW'X=loYaZ+TQ*!U6HZrrGKcgA_ -!BpJTm/X,urrB%2m/tiC!Q4("!r.YfnG`O>RK!3fg)'S?rrhejHa`X!s+13$s5 -!BU8Qkl@9errAV&kl]9;!Q4("!r82&nG`OCV>gJrg)'S?rrhl!MSAh9s+13$s5 -!B:&NirG%NrrA"jirdI0!Q4("!rA_ -!BpJTm/X,urrB%1m/qM31B$A8!q1Wgnc&X2VuH_rG2<0$nZ@/DoR[$ns+14-rr`3T!-ZTR!S0Da~> -!BU8Qkl@9errAV%klZ#-1B$A8!qD9'nc&X8Z2Xe'G2<0$o='Rgp4<6ps+14-rr`3T!-HHL!R<`V~> -!B:&NirG%NrrA"iira9$1B$A8!qMl])Ma0G2<0$oY?j4pOW?qs+14-rr`3T!--6C!Q-jH~> -!BpJTm/X,urrB%1m/uDh!1N$L!o\Fdo)Ap*[K$:&(Y[dH"S8jEYk*GGJcC<$h>[SG!$((Dm/bd$ -J,~> -!BU8Qkl@9errAV%kl]i_!1N$L!p#1$o)Ap1^&S-.(Y[dH"SK<^\b(IQJcC<$h>[SG!#sk?klK'j -J,~> -!B:&NirG%NrrA"iire!S!1N$L!pH!:o)Ap9`W,u6(Y[dH"ST^"_=`BZJcC<$h>[SG!#sY9irR%V -J,~> -!BpJTm/X,urrB%0m/rmZ(@UAb!nVh\oD\up_uKb76f@tIosB(In:CUjs+14*rr_^*!1h=#!S0Da~> -!BU8Qkl@9errAV$kl[CT(@UAb!o/^soD]!%b5_L>6f@tIp:Q6jnq$gls+14*rr_^*!1V0r!R<`V~> -!B:&NirG%NrrA"hirbVJ(@UAb!oTO4oD]!.dJs6E6f@tIpV`H6oR[$ns+14*rr_^*!11mh!Q-jH~> -!BpJTm/X,urrB%/m/f -!BU8Qkl@9errAV#klNjFETI-$fSeqdrs.`0L;Nuc-,S[A"S]ZgZgiVHJcC<$gA_4o!'/3d!R<`V~> -!B:&NirG%NrrA"girV1?ETI-$h4!X&rs.`0O2h4p-,S[A"Sg$*^%-aSJcC<$gA_4o!'&-]!Q-jH~> -!BpJTm/X,urrB%/m/t0,!nZN5!nr"?qYpl^Dd%CANHJDs8`TgRpptgLm=G:gs+14'rr^jS"2W.I -!S0Da~> -!BU8Qkl@9errAV#kl\X%!nZN5!oAgXqYpl^Dd%CANHJDs8`TgRq8/#nmt(Lis+14'rr^jS"2;qB -!R<`V~> -!B:&NirG%NrrA"gircgo!nZN5!ofWrqYpl^Dd%CANHJDs8`TgRq9#,:nU^^ks+14'rr^jS"1cS7 -!Q-jH~> -!BpJTm/X,urrB%.m/pbs5Q9aD"6k<)q#:9qpLA!Oqn<0FBk-o#rri,0H_9_Ws+13$s4I>Rr]^Bk -amB,[4b*~> -!BU8Qkl@9errAV"klY;n5Q9aD"7(rDq>UBrpLA!Oqn<0FBk-o#rri/8MQ6/ss+13$s4I>Rr]^Bj -alriO3e.~> -!B:&NirG%NrrA"fir`Qe5Q9aD"7DY`q>UBrpLA!Oqn<0FBk-o#rri2ARC)O9s+13$s4I>Rr]^Bg -al2h1~> -!BpJTm/X,urrB%.m/u/Z!2/BP#Q(KNec58D[.h99Zrltcrri/2IA5tWs+13$s472PTE#__amB,[ -4b*~> -!BU8Qkl@9errAV"kl]WS!2/BP#Q1oggAgeI[.h99Zrltcrri2:Mll;rs+13$s472PTE#_\alriO -3e.~> -!B:&NirG%NrrA"firddF!2/BP#Q26)hZ*4M[.h99Zrltcrri2BR^_^9s+13$s472PTE#\Ual -2h1~> -!BpJTm/X,urrB%-m/r^U(%(#\"QG-#;mc53!OQ(trri/3IA,kUs+13$s4.,Om1fVgaR'#Z4b*~> -!BU8Qkl@9errAV!kl[1N(%(#\"Qbi@<4)>4!OQ(trri2;N3)>rs+13$s4.,Om1fVdaQW`N3e.~> -!B:&NirG%NrrA"eirbDD(%(#\"R)M\ -!BpJTm/X,urrB%-m/u];!+t3i!r[b3o=b6gV=4Eeq7h?NkCNYas+14!rrZj54RC/V!S0Da~> -!BU8Qkl@9errAV!kl^-2!+t3i!r[n7o=b6gV=4EeqSnJpl@Jtds+14!rrZj546XcM!R<`V~> -!B:&NirG%NrrA"eire:%!+t3i!r\%;o=b6gV=4EeqotS;m",1fs+14!rrZj53o\6@!Q-jH~> -!BpJTm/X,urrB%,m/tE6!lj4!!,2>FrrE&4",da'NW-WlB^u**q7hBNk(3P`s+13urr^7B#0=jP -!S0Da~> -!BU8Qkl@9errAUukl\m.!lj4!!,2>FrrE&4",da'NW-WlB^u**qSnJol%/kcs+13urr^7B"i\OH -!R<`V~> -!B:&NirG%NrrA"dird(#!lj4!!,2>FrrE&4",da'NW-WlB^u**qp(\=m",1fs+13urr^7B"i/1= -!Q-jH~> -!BpJTm/X,urrB%+m/qA/0E1#3!Uat*^&S04^&o[5JgUK2!HIQ"rri26J"GeRs+13$s3^iKr\"7l -`pEfX4b*~> -!BU8Qkl@9errAUtklYl)0E1#3!Uat*^&S04^&o[5JgUK2!HIQ"rri5>NN)/ns+13$s3^iKr\"7j -`p!NL3e.~> -!B:&NirG%NrrA"cira,u0E1#3!Uat*^&S04^&o[5JgUK2!HIQ"rri5ES$_L4s+13$s3^iKr\"7g -`o@*;2h1~> -!BpJTm/X,urrB%+m/uMl!/BP6!R6Dt^&S04^&nPK\-;lG!Jeqnrri59J"GbQs+13$s3L]IL&`7W -`pEfX4b*~> -!BU8Qkl@9errAUtkl]rc!/BP6!R6Dt^&S04^&nPK\-;lG!Jeqnrri5?NN),ms+13$s3L]IL&`4R -`p!NL3e.~> -!B:&NirG%NrrA"cire*V!/BP6!R6Dt^&S04^&nPK\-;lG!Jeqnrri8GS$_L4s+13$s3L]IL&`1K -`o@*;2h1~> -!BpJTm/X,urrB%*m/sNm#h\5YOs+13$s3CWHfE_M] -`U*]W4b*~> -!BU8Qkl@9errAUskl\!f#h\5 -!B:&NirG%NrrA"birc4\#h\5 -!BpJTm/X,urrB%)m/pSn4T4CA!Uat*^&S04^&o[5JgUK2!HIQ(rri5:J=P\Os+13$s3:QGrB('b -`9dTV4b*~> -!BU8Qkl@9errAUrklY)h4T4CA!Uat*^&S04^&o[5JgUK2!HIQ(rri8BNi2&ks+13$s3:QGrB('` -`9@ -!B:&NirG%NrrA"air`B`4T4CA!Uat*^&S04^&o[5JgUK2!HIQ(rri8IS?hF2s+13$s3:QGrB('^ -`8^m92h1~> -!BpJTm/X,urrB%)m/u2^!0cLD!,2>FrW)u4",da'N;gNkB`%f4qo"#Sj+75]s+13nrr\Gb(uE3u -!S0Da~> -!BU8Qkl@9errAUrkl]WV!0cLD!,2>FrW)u4",da'N;gNkB`%f4r5t%sk(3P`s+13nrr\Gb(tupm -!R<`V~> -!B:&NirG%NrrA"airdgJ!0cLD!,2>FrW)u4",da'N;gNkB`%f4r6_(?l%/kcs+13nrr\Gb(Y-Ia -!Q-jH~> -!BpJTm/X,urrB%(m/s*`%H-@J!MttN^&aCnrVm#u`IXK;JcC<$JcEmm"5jUgUVlI"eieN~> -!BU8Qkl@9errAUqkl[RY%H-@J!MttN^&aCnrVm#ubE&L]JcC<$JcEmm"5jUgTYp!pc8pI~> -!B:&NirG%NrrA"`irbeO%H-@J!MttN^&aCnrVm#ud[dZ,JcC<$JcEmm"5jUgSAX@f_`*)~> -!BpJTm/X,urrB%'m/g)a7caRM>I=(;!OQ)1rri8=JXPJJs+13$s2b3A7K?9%m/bd$J,~> -!BU8Qkl@9errAUpklOT[7caRM>I=(;!OQ)1rri8DO/:ogs+13$s2b3A7K?3#klK'jJ,~> -!B:&NirG%NrrA"_irVmS7caRM>I=(;!OQ)1rri8JSZq=/s+13$s2b3A7K?-!irR%VJ,~> -!BpJTm/X,urrB%'m/u&S!1N$L!q]U%pV$p?=S2Xka+B]:JcC<$JcEdj".B3%g;<4XeieN~> -!BU8Qkl@9errAUpkl]NK!1N$L!q]U%pV$p?=S2Xlc&ea^JcC<$JcEdj".B3$f>?bQc8pI~> -!B:&NirG%NrrA"_ird[?!1N$L!q]U%pV$p?=S2Xle"3c+JcC<$JcEdj".B3$dDFoE_`*)~> -!BpJTm/X,urrB%&m/rjY%Gp4H"6g\9]_fDK]PD$Or5aJVi.:oZs+13irr_*e!1^mm!S0Da~> -!BU8Qkl@9errAUokl[=R%Gp4H"6g\9]_fDK]PD$OrQ^M"j+75]s+13irr_*e!1C[f!R<`V~> -!B:&NirG%NrrA"^irbPH%Gp4H"6g\9]_fDK]PD$OrR@FAkCNYas+13irr_*e!0tC\!Q-jH~> -!BpJTm/X,urrB%%m/p2c55jXDs(2c$Dd%CALj3*Aj8I&OQf!AoJcC<$`W$&=4oeHqm/bd$J,~> -!BU8Qkl@9errAUnklX]]55jXDs(2c$Dd%CALj3*Aj8I8cU>gb(JcC<$`W$&=4oeBoklK'jJ,~> -!B:&NirG%NrrA"]ir`!U55jXDs(2c$Dd%CALj3*Aj8IN#Y3(<8JcC<$`W$&=4oe -!BpJTm/X,urrB%%m/u)Z!0$+@!l#iIrr3;fb/*9@rQ0_Xh1>TWs+13frr\2[(Ycam!S0Da~> -!BU8Qkl@9errAUnkl]QS!0$+@!l#iIrr3;fb/*9@rQgV"iIV#[s+13frr\2[(YHOf!R<`V~> -!B:&NirG%NrrA"]ird^F!0$+@!l#iIrr3;fb/*9@rRIOBjamG_s+13frr\2[(=L"Y!Q-jH~> -!BpJTm/X,urrB%$m/s9f#hA2>!l#AjqYp]sb(Q&9JcC<$JcEUe"4[YXW5%^#eieN~> -!BU8Qkl@9errAUmkl[d`#hA2>!l#AjqYp]sd#t*]JcC<$JcEUe"4[YXVSD?rc8pI~> -!B:&NirG%NrrA"\irbtU#hA2>!l#AjqYp]setB/,JcC<$JcEUe"4[YXTtfUg_`*)~> -!BpJTm/X,urrB%#m/pYp./N90!m;7lqu6ftbCu29JcC<$JcERd"8XDG?G>e-eieN~> -!BU8Qkl@9errAUlklY/j./N90!m;7lqu6fud?:0\JcC<$JcERd"8XDG>e]G'c8pI~> -!B:&NirG%NrrA"[ir`Hb./N90!m;7lqu6fuf:]5+JcC<$JcERd"8XDG>/'"t_`*)~> -!BpJTm/X,urrB%#m/u>g!-n/9"8'mTo_ndkr\CPPrri;EL6LACs+13$s1eR9GQ8cD^?ksP4b*~> -!BU8Qkl@9errAUlkl]c^!-n/9"8'mTo_ndkr\CPPrri>LPFp``s+13$s1eR9GQ8`?^?G[D3e.~> -!B:&NirG%NrrA"[irdpQ!-n/9"8'mTo_ndkr\CPPrri>RTr[4)s+13$s1eR9GQ8]8^>f732h1~> -!BpJTm/X,urrB%"m/sd"!kn@.%.J4WKnFGcnGiNh1B.:Q"T?T"P1kKeJcC<$^Ae;K!X,sFm/bd$ -J,~> -!BU8Qkl@9errAUkkl\6p!kn@.%.J4WKnFGcnGiNh1B.:Q"THi6T&,%uJcC<$^Ae;K!X,jCklK'j -J,~> -!B:&NirG%NrrA"ZircIf!kn@.%.J4WKnFGcnGiNh1B.:Q"TI&IWoAU0JcC<$^Ae;K!X,^?irR%V -J,~> -!BpJTm/X,urrB%!m/qS5)sd>"!nCDarOr]O=Ok/"bQ%VAcA.P9JcC<$JcEF`"7$m+GeEDEeieN~> -!BU8Qkl@9errAUjklZ)/)sd>"!nCDarOr]O=Ok/"bQ%VAe!-E[JcC<$JcEF`"7$m+G.d&?c8pI~> -!B:&NirG%NrrA"Yira?&)sd>"!nCDarOr]O=Ok/"bQ%VAfqPM+JcC<$JcEF`"7$m+F1gN6_`*)~> -!BpJTm/X,urrB%!m0)]6!)NUkrrVUf^&,MM]hT3Ts8L]^5aN4b*~> -!BU8Qkl@9errAUjklg-.!)NUkrrVUf^&,MM]hT3Ts8LN5S_\ksJcC<$]`/-6:B3B:]]fIB3e.~> -!B:&NirG%NrrA"Yirn9u!)NUkrrVUf^&,MM]hT3Ts8L]GWSrF.JcC<$]`/-6:B3<2]]0%12h1~> -!BpJTm/X,urrB$um/t`I!1!H]!Go7@^';&Frm6L_f7EsQs+13]rr\Md&CJ,W!S0Da~> -!BU8Qkl@9errAUikl]3B!1!H]!Go7@^';&Frmd=)gk#KVs+13]rr\Md&C.oP!R<`V~> -!B:&NirG%NrrA"Xird@5!1!H]!Go7@^';&Frn=-Gi.:oZs+13]rr\Md&'2BC!Q-jH~> -!BpJTm/X,urrB$tm/rs\#1rhR!U"Is^&r5"O4Ss_JcC<$\c2c`"ot:,m/bd$J,~> -!BU8Qkl@9errAUhkl[IV#1rhR!U"Is^&r5.S(iMoJcC<$\c2c`"ot4*klK'jJ,~> -!B:&NirG%NrrA"Wirb\L#1rhR!U"Is^&r8 -!BpJTm/X,urrB$sm/pVo.J*Q=!L0P\^&ar0rk8E3It@WNs+13[rr_jA!+!/&!S0Da~> -!BU8Qkl@9errAUgklY,i.J*Q=!L0P\^&ar0rk8E3JV!iPs+13[rr_jA!*d"u!R<`V~> -!B:&NirG%NrrA"Vir`Ea.J*Q=!L0P\^&ar0rk8E3K7X&Rs+13[rr_jA!*Qkm!Q-jH~> -!BpJTm/X,urrB$sm/uE!!*]C%!-7tN!CHkc^&W2)s+13$s1&(2=o^&5\a9FK4b*~> -!BU8Qkl@9errAUgkl]im!*]C%!-7tN!CHkc^&W2)s+13$s1&(2=o^#0\`j.?3e.~> -!B:&NirG%NrrA"Vire!`!*]C%!-7tN!CHkc^&W2)s+13$s1&(2=o]u)\`3_.2h1~> -!BpJTm/X,urrB$rm0:Z@!13`cE;[EOSIkl#^&W,'s+13$s1/.3QN.H9\Es=J4b*~> -!BU8Qkl@9errAUfkm#-9!13`cE;[EOSIkl#^&W,'s+13$s1/.3QN.H6\EO%>3e.~> -!B:&NirG%NrrA"Uis*:-!13`cE;[EOSIkl#^&W,'s+13$s1/.3QN.H0\DmV-2h1~> -!BpJTm/X,urrB$qm00![#gNBWr4W4qAcVeD!-!MhJcC<$])MlW#QUC(m/bd$J,~> -!BU8Qkl@9errAUeklmIT#gNBWr4W4qAcVeD!-!MhJcC<$])MlW#QU:%klK'jJ,~> -!B:&NirG%NrrA"Tirt\J#gNBWr4W4qAcVeD!-!MhJcC<$])MlW#QU.!irR%VJ,~> -!BpJTm/X,urrB$pm0$ku,BY=1^AS'2^&W2)s+13$s1A:5miqgA[d=+H4b*~> -!BU8Qkl@9errAUdklbAo,BY=1^AS'2^&W2)s+13$s1A:5miqg?[cmh<3e.~> -!B:&NirG%NrrA"SiriZg,BY=1^AS'2^&W2)s+13$s1A:5miqg=[c7D+2h1~> -!BpJTm/X,urrB$pm02Z,!$l]cqn<%1rk8E3P_&jcs+13_rri -!BU8Qkl@9errAUdklp*#!$l]cqn<%1rk8E3P_&jcs+13_rri -!B:&NirG%NrrA"Sis"6k!$l]cqn<%1rk8E3P_&jcs+13_rri -!BpJTm/X,urrB$om0(uN!-iMX^&`6:JcC<$JcEC_",$Xbf!XlGeieN~> -!BU8Qkl@9errAUcklfEF!-iMX^&`6:JcC<$JcEC_",$Xbd^A -!B:&NirG%NrrA"RirmU:!-iMX^&`6:JcC<$JcEC_",$Xac*cR4_`*)~> -!BpJTm/X,urrB$nm0'Bi!`lf+^&b]ZJcC<$JcEC_"1813WO2$neieN~> -!BU8Qkl@9errAUbkldmc!`lf+^&b]ZJcC<$JcEC_"1813VmP[hc8pI~> -!B:&NirG%NrrA"Qirl(X!`lf+^&b]ZJcC<$JcEC_"1813U9rq]_`*)~> -!BpJTm/X,urrB$mm0%e:%oBt:^&kuImXbChs+13`rr^sd!.;-?!S0Da~> -!BU8Qkl@9errAUaklc;4%oBt:^&kuImXbChs+13`rr^sd!.)!9!R<`V~> -!B:&NirG%NrrA"PirjQ+%oBt:^&kuImXbChs+13`rr^sd!-bd0!Q-jH~> -!BpJTm/X,urrB$mm02iN!%1gYrOr?E=Oi!&JcC<$^&J6+.f`<1Zg@eE4b*~> -!BU8Qkl@9errAUaklp9E!%1gYrOr?E=Oi!&JcC<$^&J6+.f`9,ZfqM93e.~> -!B:&NirG%NrrA"Pis"F7!%1gYrOr?E=Oi!&JcC<$^&J6+.f`3$Zf;)(2h1~> -!BpJTm/X,urrB$lm0_i$!)>F_KnXSen:CUjs+13`rri="!%?j4m/bd$J,~> -!BU8Qkl@9errAU`kmH8p!)>F_KnXSen:CUjs+13`rri="!%6X/klK'jJ,~> -!B:&NirG%NrrA"OisOEc!)>F_KnXSen:CUjs+13`rri="!%-@(irR%VJ,~> -!BpJTm/X,urrB$km0CfF!'n$=cLc\fJcC<$]Dhtb!"[8Xm/bd$J,~> -!BU8Qkl@9errAU_km,6>!'n$=cLc\fJcC<$]Dhtb!"[,TklK'jJ,~> -!B:&NirG%NrrA"Nis3F2!'n$=cLc\fJcC<$]Dhtb!"QlNirR%VJ,~> -!BpJTm/X,urrB$jm/sNm!NL_NJcC<$\c2c3! -!BU8Qkl@9errAU^kl\!f!NL_NJcC<$\c2c3! -!B:&NirG%NrrA"Mirc4\!NL_NJcC<$\c2c3! -!BpJTm/X,urrB$im/r"A$-Ii!JcC<$]DhuU#loX^m/bd$J,~> -!BU8Qkl@9errAU]klZM;$-Ii!JcC<$]DhuU#loR\klK'jJ,~> -!B:&NirG%NrrA"Lirac2$-Ii!JcC<$]DhuU#loIYirR%VJ,~> -!BpJTm/X,urrB$hm/pYp)<6;JJcC<$^&J2p)$"!Gm/bd$J,~> -!BU8Qkl@9errAU\klY2k)<6;JJcC<$^&J2p)$!sFklK'jJ,~> -!B:&NirG%NrrA"Kir`Hb)<6;JJcC<$^&J2p)$!jCirR%VJ,~> -!BpJTm/X,urrB$hm0)W9!&=+ss+13$s1eR:oJ$>/kcX:ReieN~> -!BU8Qkl@9errAU\klg'0!&=+ss+13$s1eR:oJ$>.jK@_Jc8pI~> -!B:&NirG%NrrA"Kirn7$!&=+ss+13$s1eR:oJ$>-hlbu?_`*)~> -!BpJTm/X,urrB$gm/u,g!)\=IJcC<$^]+C5!$g:$m/bd$J,~> -!BU8Qkl@9errAU[kl]T`!)\=IJcC<$^]+C5!$g1!klK'jJ,~> -!B:&NirG%NrrA"JirdaS!)\=IJcC<$^]+C5!$]moirR%VJ,~> -!BpJTm/X,urrB$fm/tKB!-!MhJcC<$_>aUV!"d;Sm/bd$J,~> -!BU8Qkl@9errAUZkl\p9!-!MhJcC<$_>aUV!"[)NklK'jJ,~> -!B:&NirG%NrrA"Iird+.!-!MhJcC<$_>aUV!"ZoIirR%VJ,~> -!BpJTm/X,urrB$em/sg%!02X1JcC<$_uBh!!!]p5m/bd$J,~> -!BU8Qkl@9errAUYkl\9r!02X1JcC<$_uBh!!!Ta1klK'jJ,~> -!B:&NirG%NrrA"HircLh!02X1JcC<$_uBh!!!TU-irR%VJ,~> -!BpJTm/X,urrB$dm/rgY!ighOJcC<$`W$%?!Wedjm/bd$J,~> -!BU8Qkl@9errAUXkl[:R!ighOJcC<$`W$%?!We[gklK'jJ,~> -!B:&NirG%NrrA"GirbMH!ighOJcC<$`W$%?!WeOcirR%VJ,~> -!BpJTm/X,urrB$cm/qn>#f;/mJcC<$a8Z7Y#QTFTm/bd$J,~> -!BU8Qkl@9errAUWklZD8#f;/mJcC<$a8Z7Y#QT@RklK'jJ,~> -!B:&NirG%NrrA"FiraW.#f;/mJcC<$a8Z7Y#QT4NirR%VJ,~> -!BpJTm/X,urrB$bm/pl!'%VX6JcC<$ao;Io&ccI@m/bd$J,~> -!BU8Qkl@9errAUVklYAp'%VX6JcC<$ao;Io&ccC>klK'jJ,~> -!B:&NirG%NrrA"Eir`Zh'%VX6JcC<$ao;Io&cc= -!BpJTm/X,urrB$bm0)]I!$:NYs+13$s3(EFm2c7#lDX(NeieN~> -!BU8Qkl@9errAUVklg-@!$:NYs+13$s3(EFm2c7"k,@MFc8pI~> -!B:&NirG%NrrA"Eirn:2!$:NYs+13$s3(EFm2c6ui2GZ:_`*)~> -!BpJTm/X,urrB$am0)T,!%R>ds+13$s3:QHlm_uikGR\JeieN~> -!BU8Qkl@9errAUUklg'$!%R>ds+13$s3:QHlm_uhjJV5Cc8pI~> -!B:&NirG%NrrA"Dirn3l!%R>ds+13$s3:QHlm_ughP]B7_`*)~> -!BpJTm/X,urrB$`m0)5p!&jD!s+13$s3L]JnhpIth59Q?eieN~> -!BU8Qkl@9errAUTklf]h!&jD!s+13$s3L]JnhpIsg8=*8c8pI~> -!B:&NirG%NrrA"Cirmj[!&jD!s+13$s3L]JnhpIre>D7,_`*)~> -!BpJTm/X,urrB$_m0(u_!(6O4s+13$s3^iLpd5$(etqa7eieN~> -!BU8Qkl@9errAUSklfEW!(6O4s+13$s3^iLpd5$(d\Z1/c8pI~> -!B:&NirG%NrrA"BirmUK!(6O4s+13$s3^iLpd5$'c)'G$_`*)~> -!BpJTm/X,urrB$^m0(]O!)`WEs+13$s3puNqb[>1cD9h.eieN~> -!BU8Qkl@9errAURklf-G!)`WEs+13$s3puNqb[>1b,"8&c8pI~> -!B:&NirG%NrrA"Airm=;!)`WEs+13$s3puNqb[>0`MDMp_`*)~> -!BpJTm/X,urrB$]m/t9=!+(6VJcC<$e,KMV!"m/Em/bd$J,~> -!BU8Qkl@9errAUQkl\a5!+(6VJcC<$e,KMV!"cuAklK'jJ,~> -!B:&NirG%NrrA"@ircq*!+(6VJcC<$e,KMV!"cf -!BpJTm/X,urrB$\m0's,!,DLas+13$s4@8Rrb;E?\YAHleieN~> -!BU8Qkl@9errAUPkleF%!,DLas+13$s4@8Rrb;E?[\E!ec8pI~> -!B:&NirG%NrrA"?irlUo!,DLas+13$s4@8Rrb;E?Z(g7Z_`*)~> -!BpJTm/X,urrB$[m/s^#!,mGgJcC<$fDbqk!!fm)m/bd$J,~> -!BU8Qkl@9errAUOkl\0q!,mGgJcC<$fDbqk!!fd&klK'jJ,~> -!B:&NirG%NrrA">irc@f!,mGgJcC<$fDbqk!!fU!irR%VJ,~> -!BpJTm/X,urrB$Zm/s?n!-NkmJcC<$g&D.s!!fNsm/bd$J,~> -!BU8Qkl@9errAUNkl[gf!-NkmJcC<$g&D.s!!]?oklK'jJ,~> -!B:&NirG%NrrA"=irc%\!-NkmJcC<$g&D.s!!]3kirR%VJ,~> -!BpJTm/X,urrB$Ym/s3i!.0:sJcC<$g]%A&!!] -!BU8Qkl@9errAUMkl[[b!.0:sJcC<$g]%A&!!]3jklK'jJ,~> -!B:&NirG%NrrA" -!BpJTm/X,urrB$Xm/s$b!.oe%JcC<$h>[S/!!K!em/bd$J,~> -!BU8Qkl@9errAULkl[L[!.oe%JcC<$h>[S/!!JmbklK'jJ,~> -!B:&NirG%NrrA";irb_Q!.oe%JcC<$h>[S/!!Ja^irR%VJ,~> -!BpJTm/X,urrB$Wm/rj\!.oe%JcC<$hu -!BU8Qkl@9errAUKkl[@V!.oe%JcC<$hu -!B:&NirG%NrrA":irbSL!.oe%JcC<$hu -!BpJTm/X,urrB$Vm/s'a!.0:sJcC<$iVs",!!8mbm/bd$J,~> -!BU8Qkl@9errAUJkl[OZ!.0:sJcC<$iVs",!!8d_klK'jJ,~> -!B:&NirG%NrrA"9irbbP!.0:sJcC<$iVs",!!8X[irR%VJ,~> -!BpJTm/X,urrB$Um/rj]!-NkmJcC<$j8T4(!!Jg]m/bd$J,~> -!BU8Qkl@9errAUIkl[@W!-NkmJcC<$j8T4(!!Ja[klK'jJ,~> -!B:&NirG%NrrA"8irbSM!-NkmJcC<$j8T4(!!JUWirR%VJ,~> -!BpJTm/X,urrB$Tm0'*e!,qjfs+13$s6'Cbrbhc@Tpk?LeieN~> -!BU8Qkl@9errAUHkldR^!,qjfs+13$s6'Cbrbhc@SsnmEc8pI~> -!B:&NirG%NrrA"7irkeS!,qjfs+13$s6'Cbrbhc?R[W7;_`*)~> -!BpJTm/X,urrB$Sm0'9k!,DLas+13$s69Odrb;E -!BU8Qkl@9errAUGkldac!,DLas+13$s69Odrb;E;URC?Ic8pI~> -!B:&NirG%NrrA"6irktY!,DLas+13$s69Odrb;E;T:+^?_`*)~> -!BpJTm/X,urrB$Rm0'Ep!*9#Ks+13$s6K[fr)Ne'WgN/SeieN~> -!BU8Qkl@9errAUFkldmi!*9#Ks+13$s6K[fr)Ne'VjQ]Lc8pI~> -!B:&NirG%NrrA"5irl+_!*9#Ks+13$s6K[fr)Ne'UR:'B_`*)~> -!BpJTm/X,urrB$Qm0'Wr!)`NBs+13$s6]ghpe_"oYa=_XeieN~> -!BU8Qkl@9errAUEkle*k!)`NBs+13$s6]ghpe_"oXdA8Qc8pI~> -!B:&NirG%NrrA"4irl:`!)`NBs+13$s6]ghpe_"oW0cNF_`*)~> -!BpJTm/X,urrB$Pm0's3!(6=.s+13$s6osjnj -!BU8Qkl@9errAUDkleF+!(6=.s+13$s6osjnj -!B:&NirG%NrrA"3irlUu!(6=.s+13$s6osjnj -!BpJTm/X,urrB$Om0(?E!&j1ps+13$s7-*llo"h\`0K]jeieN~> -!BU8Qkl@9errAUCkleg>!&j1ps+13$s7-*llo"h\_3O6cc8pI~> -!B:&NirG%NrrA"2irm"2!&j1ps+13$s7-*llo"h[]TqLX_`*)~> -!BpJTm/X,urrB$Nm0(]W!%R&\s+13$s7?6nj=1-PcBR\seieN~> -!BU8Qkl@9errAUBklf-O!%R&\s+13$s7?6nj=1-Pb*;,kc8pI~> -!B:&NirG%NrrA"1irm=C!%R&\s+13$s7?6nj=1-O`K]B`_`*)~> -!BpJTm/X,urrB$Mm0(ui!$0mHs+13$s7QBph&QJFes#J%eieN~> -!BU8Qkl@9errAUAklfE`!$0mHs+13$s7QBph&QJEdZ`nrc8pI~> -!B:&NirG%NrrA"0irmUT!$0mHs+13$s7QBph&QJDc'./g_`*)~> -!BpJTm/X,urrB$Lm0)H)!#!/"s+13$s7cNr_@ci(j-&d1eieN~> -!BU8Qkl@9errAU@klflu!#!/"s+13$s7cNr_@ci'hid4)c8pI~> -!B:&NirG%NrrA"/irn$h!#!/"s+13$s7cNr_@ci&fok@r_`*)~> -!BpJTm/X,urrB$Lm02n=9)o6tJcC<$JcGQG"KD_-9BD<'!S0Da~> -!BU8Qkl@9errAU@klp>18cT-sJcC<$JcGQG"KD_-9&Yos!R<`V~> -!B:&NirG%NrrA"/is"Jt8,rpqJcC<$JcGQG"KD_-8DB9e!Q-jH~> -!BpJTm/X,urrB$LmJlPVl=9krNe.4]s+14Irre>`!+bAVm/bd$J,~> -!BU8Qkl@9errAU@l2TuNk$e;lNe.4]s+14Irre>`!+P)PklK'jJ,~> -!B:&NirG%NrrA"/j8\-Bi*ZNdNe.4]s+14Irre>`!+=`HirR%VJ,~> -!BpJTm/X,urrB$LmJZDTJH5airIP!"s+14Mrri:>!!.Y2m/bd$J,~> -!BU8Qkl@9errAU@l2BiLIfTOgrIP!"s+14Mrri:>!!.S0klK'jJ,~> -!B:&NirG%NrrA"/j8J!@HN=+crIP!"s+14Mrri:>!!.G,irR%VJ,~> -!BpJTm/X,urrB$LmJQ>SRg/phoR[$ns+11QoM5GlRuQe9eieN~> -!BU8Qkl@9errAU@l29cKQj*OdoR[$ns+11QoM5GkR#U>2c8pI~> -!B:&NirG%NrrA"/j8@p?PQh+`oR[$ns+11QoM5GkP`=](_`*)~> -!BpJTm/X,urrB$LmJH8RZNgIbj+75]s+C=Sj"UN=Z]+8PeieN~> -!BU8Qkl@9errAU@l20]JYQk._j+75]s+C=Sj"UN=Y`.fIc8pI~> -!B:&NirG%NrrA"/j87j>Ws8VZj+75]s+C=Sj"UN=X,Q'>_`*)~> -!BpJTm/X,urrB$LmJ?2Qas-m(b(9SDs+UIUar(1(b)>WfeieN~> -!BU8Qkl@9errAU@l2'WI`ZkI$b(9SDs+UIUar(1(`f''^c8pI~> -!B:&NirG%NrrA"/j8.d=_'/jsb(9SDs+UIUar(1'_2I=S_`*)~> -!BpJTm/X,urrB$LmJ6,PgcYWDWe(2$s+gUWWX/YggktJ"eieN~> -!BU8Qkl@9errAU@l1sQHffT6@We(2$s+gUWWX/Yffo#"pc8pI~> -!B:&NirG%NrrA"/j8%^ -!BpJTm/X,urrB$LmJ-&Ok["5iO+I=^s,$aYNr]5ek_\[-eieN~> -!BU8Qkl@9errAU@l1jKGjBV`dO+I=^s,$aYNr]5djGE+%c8pI~> -!B:&NirG%NrrA"/j7qX;hc^!\O+I=^s,$aYNr]5ahhg@o_`*)~> -!BpJTm/X,urrB$LmIooMKED3Qnq$gls,I$]nl#MjKSSpqeieN~> -!BU8Qkl@9errAU@l1X?EJcc!Onq$gls,I$]nl#MjJqrRkc8pI~> -!B:&NirG%NrrA"/j7_L9Iff[Lnq$gls,I$]nl#MjIu!%b_`*)~> -!BpJTm/X,urrB$LmIfiLYR:F]g4B9Ts,[0_g+*.2Y_MNGeieN~> -!BU8Qkl@9errAU@l1O9DXU>+Zg4B9Ts,[0_g+*.2XbQ'@c8pI~> -!B:&NirG%NrrA"/j7VF8W!`SUg4B9Ts,[0_g+*.2W.s=5_`*)~> -!BpJTm/X,urrB$LmI]cKb:!?%[=S@/s,m -!BU8Qkl@9errAU@l1F3Ca!Uiu[=S@/s,m -!B:&NirG%NrrA"/j7M@7_Bo6o[=S@/s,m -!BpJTm/X,urrB$LmIT]Ki_9CSK`6Q&JcD#8"oa/V!);I+m/bd$J,~> -!BU8Qkl@9errAU@l1=-ChFmnNK`6Q&JcD#8"oa/V!)27&klK'jJ,~> -!B:&NirG%NrrA"/j7D:7fLc,FK`6Q&JcD#8"oa/V!(tmsirR%VJ,~> -!BpJTm/X,urrB$LmIKWJm!Jj78G%K5JcD):"nY=c!ds?em/bd$J,~> -!BU8Qkl@9errAU@l14'Bk^!:18G%K5JcD):"nY=c!da'_klK'jJ,~> -!B:&NirG%NrrA"/j7;46icbG(8G%K5JcD):"nY=c!dEXVirR%VJ,~> -!BpJTm/X,urrB$LmI9KGZ4?p[c%5nGs-`libp*3!Z@VBDeieN~> -!BU8Qkl@9errAU@l1!p?Y7CUXc%5nGs-`libp*3!YCYp=c8pI~> -!B:&NirG%NrrA"/j7)(3WX]"Rc%5nGs-`libp*2uWe'12_`*)~> -!BpJTm/X,urrB$LmI0EFc7f5(Q\#0fs-s#kQO!RFc@P?amFFFN~> -!BU8Qkl@9errAU@l0mj>b:`i$Q\#0fs-s#kQO!REbCSmZl-;>?~> -!B:&NirG%NrrA"/j6u"2`\%5sQ\#0fs-s#kQO!RD`e!.Oj23g+~> -!BpJTm/X,urrB$LmI'?Fk@+Dk>4[=FJcDAB"nPmt!+P,BmJlPSeieN~> -!BU8Qkl@9errAU@l0dd>j'Vie>4[=FJcDAB"nPmt!+=i -!B:&NirG%NrrA"/j6kq2h-L']>4[=FJcDAB"nPmt!++K4j8\-?_`*)~> -!BpJTm/X,urrB$LmHj3CS.#B -!BU8Qkl@9errAU@l0RX;R1''9eUdaOs.TGqeK"VuR=XW$klK'jJ,~> -!B:&NirG%NrrA"/j6Ye/PmdX5eUdaOs.TGqeK"VuQ%@uoirR%VJ,~> -!BpJTm/X,urrB$LmHa-CaXR8sQ2Z@7JcDSH"oabn!%Q*AmJQ>PeieN~> -!BU8Qkl@9errAU@l0IR;`[LloQ2Z@7JcDSH"oabn!%Gp=l29cHc8pI~> -!B:&NirG%NrrA"/j6P_/^aK0hQ2Z@7JcDSH"oabn!%>X6j8@p<_`*)~> -!BpJTm/X,urrB$LmHX'Bl>ck):[ -!BU8Qkl@9errAU@l0@L:k&:;#:[ -!B:&NirG%NrrA"/j6GY.i,&Go:[ -!BpJTm/X,urrB$LmHEp?T+CuA]n-37s/H#$]c-q_T7QD*m/bd$J,~> -!BU8Qkl@9errAU@l0.@7SIbc?]n-37s/H#$]c-q_SUp&$klK'jJ,~> -!B:&NirG%NrrA"/j65M+R1B9:]n-37s/H#$]c-q^R=XDoirR%VJ,~> -!BpJTm/X,urrB$LmH -!BU8Qkl@9errAU@l0%:7c8Ye*Gl!!kJcDkP"o -!B:&NirG%NrrA"/j6,G+a>O#"Gl!!kJcDkP"o -!BpJTm/X,urrB$LmH3d>l?EF31Y%'VJcDqR"k>C/"F03_mJ#uKeieN~> -!BU8Qkl@9errAU@l/q46k&pk-1Y%'VJcDqR"k>C/"ErpYl1aECc8pI~> -!B:&NirG%NrrA"/j6#A*i,]#$1Y%'VJcDqR"k>C/"EWLPj7hR7_`*)~> -!BpJTm/X,urrB$LmH!X-JcE(V"oXAc!$BF9mIfiIeieN~> -!BU8Qkl@9errAU@l/_(4a;t-JcE(V"oXAc!$944l1O9Ac8pI~> -!B:&NirG%NrrA"/j5f5(_]8^_N;\>-JcE(V"oXAc!$/t.j7VF5_`*)~> -!BpJTm/X,urrB$LmGmR;iEcNb52LkjJcE.X"l;EC!FF`9mI]cHeieN~> -!BU8Qkl@9errAU@l/V"3h-9s\52LkjJcE.X"l;EC!F4H3l1F3@c8pI~> -!B:&NirG%NrrA"/j5]/'f3/1T52LkjJcE.X"l;EC!F"*+j7M@4_`*)~> -!BpJTm/X,urrB$LmG[F9W##FCRf7m -!BU8Qkl@9errAU@l/Ck1VAB4ARf7mc8pI~> -!B:&NirG%NrrA"/j5K#%Tb[V;Rf7m -!BpJTm/X,urrB$LmGR@8gJIqN6fWatJcE@^"lhrM!)_L%mIBQEeieN~> -!BU8Qkl@9errAU@l/:e0fM;JI6fWatJcE@^"lhrM!)M6ul1+!=c8pI~> -!B:&NirG%NrrA"/j5Ar$dS0]A6fWatJcE@^"lhrM!):mmj72.1_`*)~> -!BpJTm/X,urrB$LmG@46S.Yf2PPp(4JcELb"oXVo!"tfQmI0ECeieN~> -!BU8Qkl@9errAU@l/(Y.R1TE.PPp(4JcELb"oXVo!"kWMl0mj;c8pI~> -!B:&NirG%NrrA"/j5/f"Pn=!*PPp(4JcELb"oXVo!"kKIj6u"/_`*)~> -!BpJTm/X,urrB$LmG7.5fMDPJ4P55bJcERd"kYp;!)V=!mI'?BeieN~> -!BU8Qkl@9errAU@l.tS-e4ouD4P55bJcERd"kYp;!)D$pl0dd:c8pI~> -!B:&NirG%NrrA"/j5&`!cV+<=4P55bJcERd"kYp;!)1^ij6kq._`*)~> -!BpJTm/X,urrB$LmG%"3UDNt:LAQQ%JcE^h"oF#[!#VJ^mHj3@eieN~> -!BU8Qkl@9errAU@l.bG+TGRY7LAQQ%JcE^h"oF#[!#VA[l0RX8c8pI~> -!B:&NirG%NrrA"/j4iStS/2/2LAQQ%JcE^h"oF#[!#M/Vj6Ye,_`*)~> -!BpJTm/X,urrB$LmFpq2hHU']/]rYEJcEdj"j/Cs!F4K4mHa-?eieN~> -!BU8Qkl@9errAU@l.YA*g0+LW/]rYEJcEdj"j/Cs!F"3.l0IR7c8pI~> -!B:&NirG%NrrA"/j4`MseQ;hP/]rYEJcEdj"j/Cs!Edm'j6P_+_`*)~> -!BpJTm/X,urrB$LmF^e0^)m=VB'k0LJcEpn"mon'!$Aq+mHO!=eieN~> -!BU8Qkl@9errAU@l.G5(],gqRB'k0LJcEpn"mon'!$8b'l07F5c8pI~> -!B:&NirG%NrrA"/j4NAq[N,>LB'k0LJcEpn"mon'!$/M!j6>S)_`*)~> -!BpJTm/X,urrB$LmFU_0j`1P*'qkPWs+13rrs&Iq'`\GYjalg_m/bd$J,~> -!BU8Qkl@9errAU@l.>/(iG\r#'qkPWs+13rrs&Iq'`\DViIU7WklK'jJ,~> -!B:&NirG%NrrA"/j4E;qgMI)o'qkPWs+13rrs&Iq'`\DSgO\DKirR%VJ,~> -!BpJTm/X,urrB$LmFCS-a?0G&2qW]]JcF-t"kYa6!'J>RmH3d:eieN~> -!BU8Qkl@9errAU@l.,#%`B+&"2qW]]JcF-t"kYa6!'A/Nl/q42c8pI~> -!B:&NirG%NrrA"/j43/n^cDGq2qW]]JcF-t"kYa6!'7oHj6#A&_`*)~> -!BpJTm/X,urrB$LmF:M-m$JLf"`a!^s+14#rs%q3"TT:)m"+Qcm/bd$J,~> -!BU8Qkl@9errAU@l."r%k`lk_"`a!^s+14#rs%q3"TT:&k^i![klK'jJ,~> -!B:&NirG%NrrA"/j4*)nifOoT"`a!^s+14#rs%q3"TT7!idp.OirR%VJ,~> -!BpJTm/X,urrB$LmF(A+jCJ>l(7P2Qs+14'rs&Fj('"AHjFQ^Ym/bd$J,~> -!BU8Qkl@9errAU@l-ef#i*ucf(7P2Qs+14'rs&Fj('"AFi.:.QklK'jJ,~> -!B:&NirG%NrrA"/j3lrlg0k!^(7P2Qs+14'rs&Fj('"ADg4A;EirR%VJ,~> -!BpJTm/X,urrB$LmEk5(_)_Pr1;e\CJcFL)"iE(q!'7rImG[F5eieN~> -!BU8Qkl@9errAU@l-SYu^,Z/n1;e\CJcFL)"iE(q!'.cEl/Ck-c8pI~> -!B:&NirG%NrrA"/j3Zfi\MsQh1;e\CJcFL)"iE(q!'%N?j5K#!_`*)~> -!BpJTm/X,urrB$LmEY)&SK%V0DX`5WJcFX-"n6C0!$%P\mGI:3eieN~> -!BU8Qkl@9errAU@l-AMsRi;>-DX`5WJcFX-"n6C0!#qDYl/1_+c8pI~> -!B:&NirG%NrrA"/j3HZgQQ#o)DX`5WJcFX-"n6C0!#q8Uj58kt_`*)~> -!BpJTm/X,urrB$LmEP#&jE:h0#^,Qds+141rs%n6#QP0SjFQ^Tm/bd$J,~> -!BU8Qkl@9errAU@l-8Gsi,f8*#^,Qds+141rs%n6#QP0Qi.:.LklK'jJ,~> -!B:&NirG%NrrA"/j3?Tgg2RE!#^,Qds+141rs%n6#QP0Ng4A;@irR%VJ,~> -!BpJTm/X,urrB$LmE=l$d8U,H'9;j=s+145rs&7Y'*&&4d=L]?m/bd$J,~> -!BU8Qkl@9errAU@l-&;qc;O`D'9;j=s+145rs&7Y'*&&3c@P68klK'jJ,~> -!B:&NirG%NrrA"/j3-HeaADs<'9;j=s+145rs&7Y'*&&1aFWC,irR%VJ,~> -!BpJTm/X,urrB$LmE+`"^HDPs,,bEks+149rs&J#+ohU+^Obe+m/bd$J,~> -!BU8Qkl@9errAU@l,i/o]0$&n,,bEks+149rs&J#+ohU*]7K5#klK'jJ,~> -!B:&NirG%NrrA"/j2p -!BpJTm/X,urrB$LmDnStW$q]H1:Dc6JcG-;"h$/d!%FjtmF^e,eieN~> -!BU8Qkl@9errAU@l,W#lVC2EE1:Dc6JcG-;"h$/d!%=^ql.G5$c8pI~> -!B:&NirG%NrrA"/j2^0`TdKg?1:Dc6JcG-;"h$/d!%4Ikj4NAm_`*)~> -!BpJTm/X,urrB$LmDeMtl]E"a!'@rHs+14?rs$5"!!!jul[eHTm/bd$J,~> -!BU8Qkl@9errAU@l,MrlkDpG[!'@rHs+14?rs$5"!!!jskCMmLklK'jJ,~> -!B:&NirG%NrrA"/j2U*`iJSKP!'@rHs+14?rs$5"!!!gniIU%@irR%VJ,~> -!BpJTm/X,urrB$LmDSArjb"3H!(=nZs+14Crs$P4!!![bjalgLm/bd$J,~> -!BU8Qkl@9errAU@l,;fjiIMXB!(=nZs+14Crs$P4!!![`iIU7DklK'jJ,~> -!B:&NirG%NrrA"/j2Bs^gO9e9!(=nZs+14Crs$P4!!![]gO\D8irR%VJ,~> -!BpJTm/X,urrB$LmDA5pid219!*J$-s+14Grs%7\!!!OVidpLGm/bd$J,~> -!BU8Qkl@9errAU@l,)ZhhK]V3!*J$-s+14Grs%7\!!!OThLXq?klK'jJ,~> -!B:&NirG%NrrA"/j20g\fQI`)!*J$-s+14Grs%7\!!!LPfR`)3irR%VJ,~> -!BpJTm/X,urrB$LmD/)nh/Nf&!(b%Zs+14Krs$D4!!!CHh1=t@m/bd$J,~> -!BU8Qkl@9errAU@l+lNfg2@?!!(b%Zs+14Krs$D4!!!CFg4AM9klK'jJ,~> -!B:&NirG%NrrA"/j1s[Ze8,Km!(b%Zs+14Krs$D4!!!CCe:HZ-irR%VJ,~> -!BpJTm/X,urrB$LmCqrlg275t!(">Ms+11S^-M`!$?"RKmEb/#eieN~> -!BU8Qkl@9errAU@l+ZBdenbZn!(">Ms+11S^-M`!$>e:El-JSpc8pI~> -!B:&NirG%NrrA"/j1aOXctWmf!(">Ms+11S^-M`!$>Rq=j3Q`d_`*)~> -!BpJTm/X,urrB$LmC_fkgiX,-!$@a1JcCN*#QC58!!!OPgk"k;m/bd$J,~> -!BU8Qkl@9errAU@l+H6cflIZ(!$@a1JcCN*#QC58!!!ONfn&D4klK'jJ,~> -!B:&NirG%NrrA"/j1OCWdr5cs!$@a1JcCN*#QC58!!!LJdt-Q(irR%VJ,~> -!BpJTm/X,urrB$LmCMZihg6":!%X];JcCZ.#PjuB!!![Zhgt1 -!BU8Qkl@9errAU@l+6*agNaD3!%X];JcCZ.#PjuB!!!XWgO\V4klK'jJ,~> -!B:&NirG%NrrA"/j1=7UeohZ+!%X];JcCZ.#PjuB!!!XTeq)l)irR%VJ,~> -!BpJTm/X,urrB$LmC;Ngl&-/S!#pdaJcCf2#OmQh!!!Xil%/6Dm/bd$J,~> -!BU8Qkl@9errAU@l+#s_jbXQL!#pdaJcCf2#OmQh!!!Ufjal[ -!B:&NirG%NrrA"/j1++Shh;XB!#pdaJcCf2#OmQh!!!Ubhgsh0irR%VJ,~> -!BpJTm/X,urrB$LmC)Beka*e"!!n#BJcCr6#Om-I!!"O9k^i-Am/bd$J,~> -!BU8Qkl@9errAU@l*fg]jHM+o!!n#BJcCr6#Om-I!!"L5jFQR9klK'jJ,~> -!B:&NirG%NrrA"/j0mtQhiT>f!!n#BJcCr6#Om-I!!"I1hgsh.irR%VJ,~> -!BpJTm/X,urrB$LmBl6cm&N;M!!?*4JcD):#JO%;!!#3`m"+QCm/bd$J,~> -!BU8Qkl@9errAU@l*T[[kbpWE!!?*4JcD):#JO%;!!#0\k^i!;klK'jJ,~> -!B:&NirG%NrrA"/j0[hOihSX9!!?*4JcD):#JO%;!!#*Vidp./irR%VJ,~> -!BpJTm/X,urrB$LmBQ$`^K(I;!%jZ4JcD;@#PFN;!!!.&^Obdhm/bd$J,~> -!BU8Qkl@9errAU@l*9IX]2\t6!%jZ4JcD;@#PFN;!!!.%]7K4`klK'jJ,~> -!B:&NirG%NrrA"/j0@VL[o*>/!%jZ4JcD;@#PFN;!!!."[t3SVirR%VJ,~> -!BpJTm/X,urrB$LmB>m^fQ\55!!dH+JcDGD#O$(2!!!j\fR`G*m/bd$J,~> -!BU8Qkl@9errAU@l*'=Ve92Z/!!dH+JcDGD#O$(2!!!jZe:Hl"klK'jJ,~> -!B:&NirG%NrrA"/j0.JJcZ9m&!!dH+JcDGD#O$(2!!!gVc[k,lirR%VJ,~> -!BpJTm/X,urrB$LmB,a]kaOF0!!,B`pjrICrs8Ct5lgrc24Nf\mCqrgeieN~> -!BU8Qkl@9errAU@l)j1UjHqb(!!,B`pjrICrs8Ct5lgrc1mm?Tl+ZB_c8pI~> -!B:&NirG%NrrA"/j/q>Ihions!!,B`pjrICrs8Ct5lgrc1R-dJj1aOS_`*)~> -!BpJTm/X,urrB$LmAfOY^Kh*F!#9V/JcDeN#MF26!!!:1^Obdam/bd$J,~> -!BU8Qkl@9errAU@l)NtQ]3>O@!#9V/JcDeN#MF26!!!:/]7K4YklK'jJ,~> -!B:&NirG%NrrA"/j/V,E[oit:!#9V/JcDeN#MF26!!!:-[t3SOirR%VJ,~> -!BpJTm/X,urrB$LmATCRi/K>f!!56Qo7?qHrrVe_48o3]/WJ\>mCDTbeieN~> -!BU8Qkl@9errAU@l)7l+-$Zc8pI~> -!B:&NirG%NrrA"/j/Cu>f7tmU!!56Qo7?qHrrVe_48o3].u2`-j141N_`*)~> -!BpJTm/X,urrB$LmA91U]NkjE!")rArIP!Xrs8S7>7(?1$=1;qmC)B_eieN~> -!BU8Qkl@9errAU@l)!VM\Q]C@!")rArIP!Xrs8S7>7(?1$ -!B:&NirG%NrrA"/j/(cAZrm_9!")rArIP!Xrs8S7>7(?1$ -!BpJTm/X,urrB$LmA'%SiflM*!!!UcmXbDMrs8%I&HDe34-\`UmBl6]eieN~> -!BU8Qkl@9errAU@l(dJKhNBo#!!!UcmXbDMrs8%I&HDe33g/?Nl*T[Uc8pI~> -!B:&NirG%NrrA"/j.kW?fT%rm!!!UcmXbDMrs8%I&HDe33KDaCj0[hI_`*)~> -!BpJTm/X,urrB$Lm@`hJcZgT3!!4^)gO]C@rrUr./H,VN+F)4`mBQ$ZeieN~> -!BU8Qkl@9errAU@l(I8Bb]Y-.!!4^)gO]C@rrUr./H,VN+Ekt[l*9IRc8pI~> -!B:&NirG%NrrA"/j.PE6a)`@%!!4^)gO]C@rrUr./H,VN+*5JRj0@VF_`*)~> -!BpJTm/X,urrB$Lm@EVG[;-*J!!5$;j+76NrrV5?2?!RW$#?r"mB5gWeieN~> -!BU8Qkl@9errAU@l(.&?Z>'^F!!5$;j+76NrrV5?2?!RW$#6bsl)s7Oc8pI~> -!B:&NirG%NrrA"/j.533Y%J(?!!5$;j+76NrrV5?2?!RW$"pDlj0%DC_`*)~> -!BpJTm/X,urrB$Lm@3JLkbqMk!!!$ZM;!O\c2S+(M)YM9!"Du-k^i-&m/bd$J,~> -!BU8Qkl@9errAU@l'poDjJGod!!!$ZM;!O\c2S+(M)YM9!"Dr*jFQQsklK'jJ,~> -!B:&NirG%NrrA"/j.#'8hk -!BpJTm/X,urrB$Lm?m8CkFkZXrW!$OIEqhCs4.,Orm#pCrW!$,:SHs&mA]IReieN~> -!BU8Qkl@9errAU@l'U];j.8sOrW!$OIEqhCs4.,Orm#pCrW!$,9qLBrl)EnJc8pI~> -!B:&NirG%NrrA"/j-\j/h3ptCrW!$OIEqhCs4.,Orm#pCrW!$,9:F[fj/M&>_`*)~> -!BpJTm/X,urrB$Lm?R&@jJ#ZdrW!$BC:3ees4dPUpU+`XrW!$3 -!BU8Qkl@9errAU@l':K8i1F![rW!$BC:3ees4dPUpU+`XrW!$2 -!B:&NirG%NrrA"/j-AX,g7(tNrW!$BC:3ees4dPUpU+`XrW!$2;OcBkj/1i;_`*)~> -!BpJTm/X,urrB$Lm?6i=kcJ81rW!$,8sJ1`s5Et[hNUV=rW!$;@BJaEmA'%LeieN~> -!BU8Qkl@9errAU@l&t95jJlT)rW!$,8sJ1`s5Et[hNUV=rW!$;@&i:=l(dJDc8pI~> -!B:&NirG%NrrA"/j-&F)hkjZqrW!$,8sJ1`s5Et[hNUV=rW!$:?)HM1j.kW8_`*)~> -!BpJTm/X,urrB$Lm>gQ9^3244rW!$UD6`\`s69Oco -!BU8Qkl@9errAU@l&P!1]6#_.rW!$UD6`\`s69Oco -!B:&NirG%NrrA"/j,W.%[W*r%rW!$UD6`\`s69Oco -!BpJTm/X,urrB$Lm>L?6fTf8DrW!'(3./L9JcG9?"Sf`Z3!B3\!tS4nfR`F[m/bd$J,~> -!BU8Qkl@9errAU@l&4d.e< -!B:&NirG%NrrA"/j,;q"c]:a0rW!'(3./L9JcG9?"Sf`Z3!B3\!tJ"cc[k,HirR%VJ,~> -!BpJTm/X,urrB$Lm>('2\T^":rW!'.6%6H -!BU8Qkl@9errAU@l%eL*[WOP5rW!'.6%6H -!B:&NirG%NrrA"/j+lXsZ#V`*rW!'.6%6H -!BpJTm/X,urrB$Lm=aj0ii$TB!WE'%"#Y,'pjrGJponcr"9&9'!@qo`idpK^m/bd$J,~> -!BU8Qkl@9errAU@l%J:(hPOs9!WE'%"#Y,'pjrGJponcr"9&9'!@hc[hLXpVklK'jJ,~> -!B:&NirG%NrrA"/j+QFqfV)k*!WE'%"#Y,'pjrGJponcr"9&9'!@_TRfR`(JirR%VJ,~> -!BpJTm/X,urrB$Lm=FX.mFn=M1'RUV" -!BU8Qkl@9errAU@l%/(&l.;SB0a7LU" -!B:&NirG%NrrA"/j+64oj3aB/0Eh=S" -!BpJTm/X,urrB$Lm=F[&m0)RSG";f8!!NBa?]VtmQ2_$Y^Q2__!Wk(2oZm/bd$J,~> -!BU8Qkl@9errAU@l%/*sklg"HF@QN5!!NBa?]VtmQ2_$Y^Q2__!W -!B:&NirG%NrrA"/j+67girn/8ECC$/!!NBa?]VtmQ2_$Y^Q2__!W -!BpJTm/X,urrB$Lm=F["m02grQ!uBMqu?mB:Pc($r1X,or7%d':ETK7"U-PgQ,i3Am>:32eieN~> -!BU8Qkl@9errAU@l%/*oklp7gP@-!Hqu?mB:Pc($r1X,or7%d':ETK7"U-MdPJlX8l&"X*c8pI~> -!B:&NirG%NrrA"/j+67cis"DVO'XC@qu?mB:Pc($r1X,or7%d':ETK7"U$D`O2'Y)j,)ds_`*)~> -!BpJTm/X,urrB$Lm=FZrm02gbNF+IHqu?p'-rG;c_ -!BU8Qkl@9errAU@l%/*jklp7WMI&%Cqu?p'-rG;c_ -!B:&NirG%NrrA"/j+67^is"DGLKcJ -!BpJTm/X,urrB$Lm=FZmm0;mtS8Ce?!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHI88Xm -!BU8Qkl@9errAU@l%/*ekm$=iR;5;9!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHI7r+O3kCMlK -l2TuKc8pI~> -!B:&NirG%NrrA"/j+67Yis+JXQ"`Z0!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHH7;8%&iIU$? -j8\-?_`*)~> -!BpJTm/X,urrB$Lm=FZgm0;ajS97IU"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQW96HcA -kCN#OmJ6,MeieN~> -!BU8Qkl@9errAU@l%/*_km$4`R<(tO"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQW8opE8 -jFQQHl1sQEc8pI~> -!B:&NirG%NrrA"/j+67Sis+AOQ#K8E"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQV88sj* -hLX^ -!BpJTm/X,urrB$Lm=FZ`m0D=SR!2Us*s20:0+KNl7oj5FL6eR:\&$59h<4(knauSPrVcTeo^VA7 -kM=V0_7-SAQA0Qp<_#)"%efr.!Zs[/GF5nnJaJ$Uo'HJ/4b*~> -!BU8Qkl@9errAU@l%/*Xkm,bHQ$$+l*Wl'90+KNl7oj5FL6eR:\&$59h<4(knauSPrVcTeo^VA7 -kM=V0_7-SAQA0Qp<_#)"%efr.!ZjR,Fd9AbJa%aMo'$2#3e.~> -!B:&NirG%NrrA"/j+67Lis3o7O`FA`* -!BpJTm/X,urrB$Lm=FZYm0`43]V:0u=@=b["47)U!u`d[=D`hf][uM$m=FZjm/bd$J,~> -!BU8Qkl@9errAU@l%/*QkmHY'\Y"Rk<^JDV"47)U!uW^X -!B:&NirG%NrrA"/j+67EisOek[$uV\<'`&Q"47)U!uWXU<,$oQ[*IZ^j+67VirR%VJ,~> -!BpJTm/X,urrB$Lm=FZNm4[>7\Z20[IrA^q91(]o-m'3<&.JsO"TSN+#7:nO',DZ<0f_To -!BU8Qkl@9errAU@l%/*FkqCc,[\oRPI;N=k8jYKk-Qa*;%h/jN"TSN+#7:nN',DZ;0K;Bk -!B:&NirG%NrrA"/j+67:j"JrqZ(mV@H"pS^83f*e-6 -!BpJTmCK9Jm=FYUm=FYUmJcJReieN~> -!BU8Ql+3F:l%/)Ml%/)Ml2KoJc8pI~> -!B:&Nj1:2#j+66Aj+66Aj8S'>_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6m=FYUm=FYUmAfOSeieN~> -!BU73l%/)Ml%/)Ml)NtKc8pI~> -!B:%0j+66Aj+66Aj/V,?_`*)~> -!BpI6eq)D'eq)D'eu@4#4b*~> -!BU73c@O8lc@O8lcDf(h3e.~> -!B:%0_h#^V_h#^V_l:NR2h1~> -JN\QIJN\QIJN]knJ,~> -JNA?CJNA?CJNBYhJ,~> -JN&-=JN&-=JN'GbJ,~> -%%EndData -showpage -%%Trailer -end -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/dep.jpg b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/dep.jpg deleted file mode 100755 index b17e8b4f31..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/dep.jpg and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/dep.ps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/dep.ps deleted file mode 100755 index 055072bd96..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/dep.ps and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/dictateurs.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/dictateurs.eps deleted file mode 100755 index b639c24608..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/dictateurs.eps +++ /dev/null @@ -1,1709 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1,17 by Peter Kirchgessner -%%Title: dictateurs.eps -%%CreationDate: Wed Jun 13 19:59:12 2007 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 14 14 582 582 -%%EndComments -%%BeginProlog -% Use own dictionary to avoid conflicts -10 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -14.173228346456694 14.173228346456694 translate -% Translate to begin of first scanline -0 566.92913385826773 translate -566.92913385826773 -566.92913385826773 scale -% Image geometry -542 542 8 -% Transformation matrix -[ 542 0 0 542 0 0 ] -% Strings to hold RGB-samples per scanline -/rstr 542 string def -/gstr 542 string def -/bstr 542 string def -{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} -true 3 -%%BeginData: 78515 ASCII Bytes -colorimage -JcC<$JcC<$j8XW~> -JcC<$JcC<$j8XW~> -JcC<$JcC<$j8XW~> -JcC<$JcC<$j8XW~> -JcC<$JcC<$j8XW~> -JcC<$JcC<$j8XW~> -JcC<$JcC<$j8XW~> -JcC<$JcC<$j8XW~> -JcC<$JcC<$j8XW~> -JcC<$JcC<$j8XW~> -JcC<$JcC<$j8XW~> -JcC<$JcC<$j8XW~> -JcCc1n5\lVn5]LgJcC`0J,~> -JcCc1n5\lVn5]LgJcC`0J,~> -JcCc1n5\lVn5]LgJcC`0J,~> -JcCc1n5\lVn5]LgJcC`0J,~> -JcCc1n5\lVn5]LgJcC`0J,~> -JcCc1n5\lVn5]LgJcC`0J,~> -JcD2=!35or^]=:4JcD):J,~> -JcD2=!35or^]=:4JcD):J,~> -JcD2=!35or^]=:4JcD):J,~> -JcDSHqc2eZhGr\l&~> -JcDSHqc2eZhGr\l&~> -JcDSHqc2eZhGr\l&~> -JcDSHqc2eZhGr\l&~> -JcDSHqc2eZhGr\l&~> -JcDSHqc2eZhGr\l&~> -JcDSHqc2eZhGr\l&~> -JcDSHqc2eZhGr\l&~> -JcDSHqc2eZhGr\l&~> -JcDnQrDi7cr)N`ra8c$:mf<;ds/LYMXoEn~> -JcDnQrDi7cr)N`ra8c$:mf<;ds/LYMXoEn~> -JcDnQrDi7cr)N`ra8c$:mf<;ds/LYMXoEn~> -JcE.Xr`/Igr)Kp"!35oro)Sbiri1PL[Jta~> -JcE.Xr`/Igr)Kp"!35oro)Sbiri1PL[Jta~> -JcE.Xr`/Igr)Kp"!35oro)Sbiri1PL[Jta~> -JcEF`ri,ruo`4qjs/MIdrDiLjrD`itJcE@^J,~> -JcEF`ri,ruo`4qjs/MIdrDiLjrD`itJcE@^J,~> -JcEF`ri,ruo`4qjs/MIdrDiLjrD`itJcE@^J,~> -JcEF`ri,ruo`4qjs/MIdrDiLjrD`itJcE@^J,~> -JcEF`ri,ruo`4qjs/MIdrDiLjrD`itJcE@^J,~> -JcEF`ri,ruo`4qjs/MIdrDiLjrD`itJcE@^J,~> -JcEF`ri,ruo`4qjs/MIdrDiLjrD`itJcE@^J,~> -JcEF`ri,ruo`4qjs/MIdrDiLjrD`itJcE@^J,~> -JcEF`ri,ruo`4qjs/MIdrDiLjrD`itJcE@^J,~> -JcEXf!35utp&P%k!31qVrDiLjrDeFK_>f#~> -JcEXf!35utp&P%k!31qVrDiLjrDeFK_>f#~> -JcEXf!35utp&P%k!31qVrDiLjrDeFK_>f#~> -JcEjls/Q*!p&P(ls/LYMqu?[rp&P%kJcEaiJ,~> -JcEjls/Q*!p&P(ls/LYMqu?[rp&P%kJcEaiJ,~> -JcEjls/Q*!p&P(ls/LYMqu?[rp&P%kJcEaiJ,~> -JcEjls/Q*!p&P(ls/LYMqu?[rp&P%kJcEaiJ,~> -JcEjls/Q*!p&P(ls/LYMqu?[rp&P%kJcEaiJ,~> -JcEjls/Q*!p&P(ls/LYMqu?[rp&P%kJcEaiJ,~> -JcF!pr`/Xls&FXMmJm,bq#LCo!31VMbQ!(~> -JcF!pr`/Xls&FXMmJm,bq#LCo!31VMbQ!(~> -JcF!pr`/Xls&FXMmJm,bq#LCo!31VMbQ!(~> -JcF!pr`/Xls&FXMmJm,bq#LCo!31VMbQ!(~> -JcF!pr`/Xls&FXMmJm,bq#LCo!31VMbQ!(~> -JcF!pr`/Xls&FXMmJm,bq#LCo!31VMbQ!(~> -JcF0urDiUms&FXMiVrnXr`/aos&K*!JcF-tJ,~> -JcF0urDiUms&FXMiVrnXr`/aos&K*!JcF-tJ,~> -JcF0urDiUms&FXMiVrnXr`/aos&K*!JcF-tJ,~> -JcF0urDiUms&FXMiVrnXr`/aos&K*!JcF-tJ,~> -JcF0urDiUms&FXMiVrnXr`/aos&K*!JcF-tJ,~> -JcF0urDiUms&FXMiVrnXr`/aos&K*!JcF-tJ,~> -JcF@%s/Q*!p](@qWiCXMf`1nMq#LCoJcF:#J,~> -JcF@%s/Q*!p](@qWiCXMf`1nMq#LCoJcF:#J,~> -JcF@%s/Q*!p](@qWiCXMf`1nMq#LCoJcF:#J,~> -JcFR+ri,rupAk4nJcF!ps&JgorDeFKgAc[~> -JcFR+ri,rupAk4nJcF!ps&JgorDeFKgAc[~> -JcFR+ri,rupAk4nJcF!ps&JgorDeFKgAc[~> -JcFR+ri,rupAk4nJcF!ps&JgorDeFKgAc[~> -JcFR+ri,rupAk4nJcF!ps&JgorDeFKgAc[~> -JcFR+ri,rupAk4nJcF!ps&JgorDeFKgAc[~> -JcFR+ri,rupAk4nJcF!ps&JgorDeFKgAc[~> -JcFR+ri,rupAk4nJcF!ps&JgorDeFKgAc[~> -JcFR+ri,rupAk4nJcF!ps&JgorDeFKgAc[~> -JcFX-!NK/q!<,uLs2=s;WW6&o!<6&Ms5!^*~> -JcFX-!NK/q!<,uLs2=s;WW6&o!<6&Ms5!^*~> -JcFX-!NK/q!<,uLs2=s;WW6&o!<6&Ms5!^*~> -JcFd1!36#uqZ-Xrs/LYM]Dqn2q#LFpJcF^/J,~> -JcFd1!36#uqZ-Xrs/LYM]Dqn2q#LFpJcF^/J,~> -JcFd1!36#uqZ-Xrs/LYM]Dqn2q#LFpJcF^/J,~> -JcFp5s/Q*!quH[qJcE"T!*/jqr`+OLjo9i~> -JcFp5s/Q*!quH[qJcE"T!*/jqr`+OLjo9i~> -JcFp5s/Q*!quH[qJcE"T!*/jqr`+OLjo9i~> -JcFp5s/Q*!quH[qJcE"T!*/jqr`+OLjo9i~> -JcFp5s/Q*!quH[qJcE"T!*/jqr`+OLjo9i~> -JcFp5s/Q*!quH[qJcE"T!*/jqr`+OLjo9i~> -JcFp5s/Q*!quH[qJcE"T!*/jqr`+OLjo9i~> -JcFp5s/Q*!quH[qJcE"T!*/jqr`+OLjo9i~> -JcFp5s/Q*!quH[qJcE"T!*/jqr`+OLjo9i~> -JcG$8!if7#quH^r!31VMWrN*!q>^LqJcFp5J,~> -JcG$8!if7#quH^r!31VMWrN*!q>^LqJcFp5J,~> -JcG$8!if7#quH^r!31VMWrN*!q>^LqJcFp5J,~> -JcG0 -JcG0 -JcG0 -JcG0 -JcG0 -JcG0 -JcG<@r`/gqs&K*!JcD5>!*/jqs&K*!JcG9?J,~> -JcG<@r`/gqs&K*!JcD5>!*/jqs&K*!JcG9?J,~> -JcG<@r`/gqs&K*!JcD5>!*/jqs&K*!JcG9?J,~> -JcG<@r`/gqs&K*!JcD5>!*/jqs&K*!JcG9?J,~> -JcG<@r`/gqs&K*!JcD5>!*/jqs&K*!JcG9?J,~> -JcG<@r`/gqs&K*!JcD5>!*/jqs&K*!JcG9?J,~> -JcGECs/Pqrr`&ruJcD#8r`/dp!*+UMo)F4~> -JcGECs/Pqrr`&ruJcD#8r`/dp!*+UMo)F4~> -JcGECs/Pqrr`&ruJcD#8r`/dp!*+UMo)F4~> -JcGECs/Pqrr`&ruJcD#8r`/dp!*+UMo)F4~> -JcGECs/Pqrr`&ruJcD#8r`/dp!*+UMo)F4~> -JcGECs/Pqrr`&ruJcD#8r`/dp!*+UMo)F4~> -JcGQGs/Q*!qZ$XsWe(20s8Q*p!!$#Ms7ZJC~> -JcGQGs/Q*!qZ$XsWe(20s8Q*p!!$#Ms7ZJC~> -JcGQGs/Q*!qZ$XsWe(20s8Q*p!!$#Ms7ZJC~> -JcGTH!*/mr!*0#uJcCN*s&Jss!*0#uJcGTHJ,~> -JcGTH!*/mr!*0#uJcCN*s&Jss!*0#uJcGTHJ,~> -JcGTH!*/mr!*0#uJcCN*s&Jss!*0#uJcGTHJ,~> -JcGTH!*/mr!*0#uJcCN*s&Jss!*0#uJcGTHJ,~> -JcGTH!*/mr!*0#uJcCN*s&Jss!*0#uJcGTHJ,~> -JcGTH!*/mr!*0#uJcCN*s&Jss!*0#uJcGTHJ,~> -JcGTH!*/mr!*0#uJcCN*s&Jss!*0#uJcGTHJ,~> -JcGTH!*/mr!*0#uJcCN*s&Jss!*0#uJcGTHJ,~> -JcGTH!*/mr!*0#uJcCN*s&Jss!*0#uJcGTHJ,~> -JcG`L!35hps/LYMJc>`Mr`/jr!*+UMqu;0~> -JcG`L!35hps/LYMJc>`Mr`/jr!*+UMqu;0~> -JcG`L!35hps/LYMJc>`Mr`/jr!*+UMqu;0~> -K)bhM!*/pss&FXMJcGQG!NK/s!<6&Ms8W+L~> -K)bhM!*/pss&FXMJcGQG!NK/s!<6&Ms8W+L~> -K)bhM!*/pss&FXMJcGQG!NK/s!<6&Ms8W+L~> -KDtpOquH^r!31VMJcGECr`/jrs&B'!K)^?~> -KDtpOquH^r!31VMJcGECr`/jrs&B'!K)^?~> -KDtpOquH^r!31VMJcGECr`/jrs&B'!K)^?~> -KDtpOquH^r!31VMJcGECr`/jrs&B'!K)^?~> -KDtpOquH^r!31VMJcGECr`/jrs&B'!K)^?~> -KDtpOquH^r!31VMJcGECr`/jrs&B'!K)^?~> -KDtpOquH^r!31VMJcGECr`/jrs&B'!K)^?~> -KDtpOquH^r!31VMJcGECr`/jrs&B'!K)^?~> -KDtpOquH^r!31VMJcGECr`/jrs&B'!K)^?~> -L]@CSq>^LqJcC<$mJm2dquH^rL&ZZ~> -L]@CSq>^LqJcC<$mJm2dquH^rL&ZZ~> -L]@CSq>^LqJcC<$mJm2dquH^rL&ZZ~> -M?!TUquH^rJcC<$l2Ud`s&Jss!*+gSJ,~> -M?!TUquH^rJcC<$l2Ud`s&Jss!*+gSJ,~> -M?!TUquH^rJcC<$l2Ud`s&Jss!*+gSJ,~> -M?!TUquH^rJcC<$l2Ud`s&Jss!*+gSJ,~> -M?!TUquH^rJcC<$l2Ud`s&Jss!*+gSJ,~> -M?!TUquH^rJcC<$l2Ud`s&Jss!*+gSJ,~> -NW9!XquHas!31VMJcFa0!*/psr`+jUJ,~> -NW9!XquHas!31VMJcFa0!*/psr`+jUJ,~> -NW9!XquHas!31VMJcFa0!*/psr`+jUJ,~> -NW9!XquHas!31VMJcFa0!*/psr`+jUJ,~> -NW9!XquHas!31VMJcFa0!*/psr`+jUJ,~> -NW9!XquHas!31VMJcFa0!*/psr`+jUJ,~> -NrK)ZqZ-XrJcC<$hZ*ST!*/pss/M(YJ,~> -NrK)ZqZ-XrJcC<$hZ*ST!*/pss/M(YJ,~> -NrK)ZqZ-XrJcC<$hZ*ST!*/pss/M(YJ,~> -NrK)ZqZ-XrJcC<$hZ*ST!*/pss/M(YJ,~> -NrK)ZqZ-XrJcC<$hZ*ST!*/pss/M(YJ,~> -NrK)ZqZ-XrJcC<$hZ*ST!*/pss/M(YJ,~> -O8f2[r;Zn!WiCXMJcFC&!*/mrs&G-[J,~> -O8f2[r;Zn!WiCXMJcFC&!*/mrs&G-[J,~> -O8f2[r;Zn!WiCXMJcFC&!*/mrs&G-[J,~> -PQ(W_quH^rJcC<$eGoNJquHasOoKq~> -PQ(W_quH^rJcC<$eGoNJquHasOoKq~> -PQ(W_quH^rJcC<$eGoNJquHasOoKq~> -PQ(W_quH^rJcC<$eGoNJquHasOoKq~> -PQ(W_quH^rJcC<$eGoNJquHasOoKq~> -PQ(W_quH^rJcC<$eGoNJquHasOoKq~> -PQ(W_quH^rJcC<$eGoNJquHasOoKq~> -PQ(W_quH^rJcC<$eGoNJquHasOoKq~> -PQ(W_quH^rJcC<$eGoNJquHasOoKq~> -Q2gkaqu?^jJcC<$c2[eNquH_rQ2c@~> -Q2gkaqu?^jJcC<$c2[eNquH_rQ2c@~> -Q2gkaqu?^jJcC<$c2[eNquH_rQ2c@~> -RK*;es&K$ur`&tm!<0!Ls+13ts8F&= -RK*;es&K$ur`&tm!<0!Ls+13ts8F&= -RK*;es&K$ur`&tm!<0!Ls+13ts8F&= -Rf -Rf -Rf -Rf -Rf -Rf -Rf -Rf -Rf -ScA[hquHbsqu?Wq!',W1JcF=$!36"u!'0oUr`/jr!32OgJ,~> -ScA[hquHbsqu?Wq!',W1JcF=$!36"u!'0oUr`/jr!32OgJ,~> -ScA[hquHbsqu?Wq!',W1JcF=$!36"u!'0oUr`/jr!32OgJ,~> -T)Sdjr;cjts/Pnpri-#"kV3!*/pss/MXiJ,~> -T)Sdjr;cjts/Pnpri-#"kV3!*/pss/MXiJ,~> -T)Sdjr;cjts/Pnpri-#"kV3!*/pss/MXiJ,~> -T)Sdjr;cjts/Pnpri-#"kV3!*/pss/MXiJ,~> -T)Sdjr;cjts/Pnpri-#"kV3!*/pss/MXiJ,~> -T)Sdjr;cjts/Pnpri-#"kV3!*/pss/MXiJ,~> -UAt4mqu?^so)AhQ!!'%!JcC<$g]%:7!<0"krrB(r!<6&ks*t~> -UAt4mqu?^so)AhQ!!'%!JcC<$g]%:7!<0"krrB(r!<6&ks*t~> -UAt4mqu?^so)AhQ!!'%!JcC<$g]%:7!<0"krrB(r!<6&ks*t~> -UAt4mqu?^so)AhQ!!'%!JcC<$g]%:7!<0"krrB(r!<6&ks*t~> -UAt4mqu?^so)AhQ!!'%!JcC<$g]%:7!<0"krrB(r!<6&ks*t~> -UAt4mqu?^so)AhQ!!'%!JcC<$g]%:7!<0"krrB(r!<6&ks*t~> -U]1=oquH_rnGiFes/LYMJcF[.r`&t> -U]1=oquH_rnGiFes/LYMJcF[.r`&t> -U]1=oquH_rnGiFes/LYMJcF[.r`&t> -U]1=oquH_rnGiFes/LYMJcF[.r`&t> -U]1=oquH_rnGiFes/LYMJcF[.r`&t> -U]1=oquH_rnGiFes/LYMJcF[.r`&t> -V>pRqqu?_smJm2druM+>!31VMJcFa0!*/stm/R)cr;ZgtUAo`~> -V>pRqqu?_smJm2druM+>!31VMJcFa0!*/stm/R)cr;ZgtUAo`~> -V>pRqqu?_smJm2druM+>!31VMJcFa0!*/stm/R)cr;ZgtUAo`~> -VuQdsqZ$VrlMplaruD)>JcC<$jT#7[r;ZhtlMplarW)ptV>l&~> -VuQdsqZ$VrlMplaruD)>JcC<$jT#7[r;ZhtlMplarW)ptV>l&~> -VuQdsqZ$VrlMplaruD)>JcC<$jT#7[r;ZhtlMplarW)ptV>l&~> -VuQdsqZ$VrlMplaruD)>JcC<$jT#7[r;ZhtlMplarW)ptV>l&~> -VuQdsqZ$VrlMplaruD)>JcC<$jT#7[r;ZhtlMplarW)ptV>l&~> -VuQdsqZ$VrlMplaruD)>JcC<$jT#7[r;ZhtlMplarW)ptV>l&~> -VuQdsqZ$VrlMplaruD)>JcC<$jT#7[r;ZhtlMplarW)ptV>l&~> -VuQdsqZ$VrlMplaruD)>JcC<$jT#7[r;ZhtlMplarW)ptV>l&~> -VuQdsqZ$VrlMplaruD)>JcC<$jT#7[r;ZhtlMplarW)ptV>l&~> -WW3!uquH_rl2Ud`rrE!tJcC<$l2Ud`rr<$Zr`/.]s&K!t!*,orJ,~> -WW3!uquH_rl2Ud`rrE!tJcC<$l2Ud`rr<$Zr`/.]s&K!t!*,orJ,~> -WW3!uquH_rl2Ud`rrE!tJcC<$l2Ud`rr<$Zr`/.]s&K!t!*,orJ,~> -WrE'!r;cjtj8\sUJcC<$m/R*crrE)!!!*"ujo5=\quH_rWrIS~> -WrE'!r;cjtj8\sUJcC<$m/R*crrE)!!!*"ujo5=\quH_rWrIS~> -WrE'!r;cjtj8\sUJcC<$m/R*crrE)!!!*"ujo5=\quH_rWrIS~> -XoJB#rW)suiW&qX!!*"us&FXMJcG0<"KDG%WiH%uiW&nWqu?_sX8d\~> -XoJB#rW)suiW&qX!!*"us&FXMJcG0<"KDG%WiH%uiW&nWqu?_sX8d\~> -XoJB#rW)suiW&qX!!*"us&FXMJcG0<"KDG%WiH%uiW&nWqu?_sX8d\~> -XoJB#rW)suiW&qX!!*"us&FXMJcG0<"KDG%WiH%uiW&nWqu?_sX8d\~> -XoJB#rW)suiW&qX!!*"us&FXMJcG0<"KDG%WiH%uiW&nWqu?_sX8d\~> -XoJB#rW)suiW&qX!!*"us&FXMJcG0<"KDG%WiH%uiW&nWqu?_sX8d\~> -XoJB#rW)suiW&qX!!*"us&FXMJcG0<"KDG%WiH%uiW&nWqu?_sX8d\~> -XoJB#rW)suiW&qX!!*"us&FXMJcG0<"KDG%WiH%uiW&nWqu?_sX8d\~> -XoJB#rW)suiW&qX!!*"us&FXMJcG0<"KDG%WiH%uiW&nWqu?_sX8d\~> -Y5\K%r;cjth>dFR!< -Y5\K%r;cjth>dFR!< -Y5\K%r;cjth>dFR!< -YQ"T&r;ZgtgAh-P!NQ1u -YQ"T&r;ZgtgAh-P!NQ1u -YQ"T&r;ZgtgAh-P!NQ1u -YQ"T&r;ZgtgAh-P!NQ1u -YQ"T&r;ZgtgAh-P!NQ1u -YQ"T&r;ZgtgAh-P!NQ1u -ZN'o(rrE$ug&M"NrVujsJcC<$q>UJq! -ZN'o(rrE$ug&M"NrVujsJcC<$q>UJq! -ZN'o(rrE$ug&M"NrVujsJcC<$q>UJq! -ZN'o(rrE$ug&M"NrVujsJcC<$q>UJq! -ZN'o(rrE$ug&M"NrVujsJcC<$q>UJq! -ZN'o(rrE$ug&M"NrVujsJcC<$q>UJq! -Zi:#*r;Zhte,KFKWr;tr -Zi:#*r;Zhte,KFKWr;tr -Zi:#*r;Zhte,KFKWr;tr -Zi:#*r;Zhte,KFKWr;tr -Zi:#*r;Zhte,KFKWr;tr -Zi:#*r;Zhte,KFKWr;tr -[K$8,r;Zgtdf9>Iqu?Up!31VMK)YgNrVuqurVlr!!!(FHs&K$uri3C+J,~> -[K$8,r;Zgtdf9>Iqu?Up!31VMK)YgNrVuqurVlr!!!(FHs&K$uri3C+J,~> -[K$8,r;Zgtdf9>Iqu?Up!31VMK)YgNrVuqurVlr!!!(FHs&K$uri3C+J,~> -\,ZJ.rW)ptd/O(Gri5nrs&B%!ri1PLL]@BS!!*"ur;ZardJs6HqZ$Vr[f:j~> -\,ZJ.rW)ptd/O(Gri5nrs&B%!ri1PLL]@BS!!*"ur;ZardJs6HqZ$Vr[f:j~> -\,ZJ.rW)ptd/O(Gri5nrs&B%!ri1PLL]@BS!!*"ur;ZardJs6HqZ$Vr[f:j~> -\,ZJ.rW)ptd/O(Gri5nrs&B%!ri1PLL]@BS!!*"ur;ZardJs6HqZ$Vr[f:j~> -\,ZJ.rW)ptd/O(Gri5nrs&B%!ri1PLL]@BS!!*"ur;ZardJs6HqZ$Vr[f:j~> -\,ZJ.rW)ptd/O(Gri5nrs&B%!ri1PLL]@BS!!*"ur;ZardJs6HqZ$Vr[f:j~> -\,ZJ.rW)ptd/O(Gri5nrs&B%!ri1PLL]@BS!!*"ur;ZardJs6HqZ$Vr[f:j~> -\,ZJ.rW)ptd/O(Gri5nrs&B%!ri1PLL]@BS!!*"ur;ZardJs6HqZ$Vr[f:j~> -\,ZJ.rW)ptd/O(Gri5nrs&B%!ri1PLL]@BS!!*"ur;ZardJs6HqZ$Vr[f:j~> -\c;\0r;Zgtc2[`BqYpPqrVuquJcCW-rD`itq>UEpc2[gDqu?_s\,Us~> -\c;\0r;Zgtc2[`BqYpPqrVuquJcCW-rD`itq>UEpc2[gDqu?_s\,Us~> -\c;\0r;Zgtc2[`BqYpPqrVuquJcCW-rD`itq>UEpc2[gDqu?_s\,Us~> -])Mc1r;cjtbQ%PAq>^Go!s@rrB(t!!$$.s*t~> -])Mc1r;cjtbQ%PAq>^Go!s@rrB(t!!$$.s*t~> -])Mc1r;cjtbQ%PAq>^Go!s@rrB(t!!$$.s*t~> -^&S)3rW)suaoD<>p\t8o!<,uLs-3Q_WWE0# -^&S)3rW)suaoD<>p\t8o!<,uLs-3Q_WWE0# -^&S)3rW)suaoD<>p\t8o!<,uLs-3Q_WWE0# -^&S)3rW)suaoD<>p\t8o!<,uLs-3Q_WWE0# -^&S)3rW)suaoD<>p\t8o!<,uLs-3Q_WWE0# -^&S)3rW)suaoD<>p\t8o!<,uLs-3Q_WWE0# -^&S)3rW)suaoD<>p\t8o!<,uLs-3Q_WWE0# -^&S)3rW)suaoD<>p\t8o!<,uLs-3Q_WWE0# -^&S)3rW)suaoD<>p\t8o!<,uLs-3Q_WWE0# -^Ae25r;cjta8c.=!!)]lrDiltJcD,;!*0!u!35bmrDgl;!35tt!*-Z2J,~> -^Ae25r;cjta8c.=!!)]lrDiltJcD,;!*0!u!35bmrDgl;!35tt!*-Z2J,~> -^Ae25r;cjta8c.=!!)]lrDiltJcD,;!*0!u!35bmrDgl;!35tt!*-Z2J,~> -^]+;6quHbs`;fg:o`#%o!!'%!JcD5>!EB.!WqHDj -^]+;6quHbs`;fg:o`#%o!!'%!JcD5>!EB.!WqHDj -^]+;6quHbs`;fg:o`#%o!!'%!JcD5>!EB.!WqHDj -^]+;6quHbs`;fg:o`#%o!!'%!JcD5>!EB.!WqHDj -^]+;6quHbs`;fg:o`#%o!!'%!JcD5>!EB.!WqHDj -^]+;6quHbs`;fg:o`#%o!!'%!JcD5>!EB.!WqHDj -_Z0V8qu?_s_Z0U8oDeijrrE(!JcDGD!36"u!*/Ui!NH.9s8H$t!<6'6s*t~> -_Z0V8qu?_s_Z0U8oDeijrrE(!JcDGD!36"u!*/Ui!NH.9s8H$t!<6'6s*t~> -_Z0V8qu?_s_Z0U8oDeijrrE(!JcDGD!36"u!*/Ui!NH.9s8H$t!<6'6s*t~> -_Z0V8qu?_s_Z0U8oDeijrrE(!JcDGD!36"u!*/Ui!NH.9s8H$t!<6'6s*t~> -_Z0V8qu?_s_Z0U8oDeijrrE(!JcDGD!36"u!*/Ui!NH.9s8H$t!<6'6s*t~> -_Z0V8qu?_s_Z0U8oDeijrrE(!JcDGD!36"u!*/Ui!NH.9s8H$t!<6'6s*t~> -_Z0U8rrE%u_#OE7n,NDf!!*"uJcDYJs&B%!ri5Mgs&Hf5!*/sts&Ho8J,~> -_Z0U8rrE%u_#OE7n,NDf!!*"uJcDYJs&B%!ri5Mgs&Hf5!*/sts&Ho8J,~> -_Z0U8rrE%u_#OE7n,NDf!!*"uJcDYJs&B%!ri5Mgs&Hf5!*/sts&Ho8J,~> -_Z0U8rrE%u_#OE7n,NDf!!*"uJcDYJs&B%!ri5Mgs&Hf5!*/sts&Ho8J,~> -_Z0U8rrE%u_#OE7n,NDf!!*"uJcDYJs&B%!ri5Mgs&Hf5!*/sts&Ho8J,~> -_Z0U8rrE%u_#OE7n,NDf!!*"uJcDYJs&B%!ri5Mgs&Hf5!*/sts&Ho8J,~> -_uB^:r;Zht^&S%2n,EAfrVupuJcDhOs/Q#t!35Je! -_uB^:r;Zht^&S%2n,EAfrVupuJcDhOs/Q#t!35Je! -_uB^:r;Zht^&S%2n,EAfrVupuJcDhOs/Q#t!35Je! -`W,s -`W,s -`W,s -`W,s -`W,s -`W,s -`W,s -`W,s -`W,s -a8c1>rW)pt\c;[0s/PGc!*0!u!*+UM[f6?-rDiltm/R#a])Vf1rW)pt`W(G~> -a8c1>rW)pt\c;[0s/PGc!*0!u!*+UM[f6?-rDiltm/R#a])Vf1rW)pt`W(G~> -a8c1>rW)pt\c;[0s/PGc!*0!u!*+UM[f6?-rDiltm/R#a])Vf1rW)pt`W(G~> -a8c)&h~> -a8c)&h~> -a8c)&h~> -aoDB@r;Zht[f?B-rrD6^s/Q)!s&B'!JcEUe!*0!u!*/1]rDg9*!*/st!34*>J,~> -aoDB@r;Zht[f?B-rrD6^s/Q)!s&B'!JcEUe!*0!u!*/1]rDg9*!*/st!34*>J,~> -aoDB@r;Zht[f?B-rrD6^s/Q)!s&B'!JcEUe!*0!u!*/1]rDg9*!*/st!34*>J,~> -aoDB@r;Zht[f?B-rrD6^s/Q)!s&B'!JcEUe!*0!u!*/1]rDg9*!*/st!34*>J,~> -aoDB@r;Zht[f?B-rrD6^s/Q)!s&B'!JcEUe!*0!u!*/1]rDg9*!*/st!34*>J,~> -aoDB@r;Zht[f?B-rrD6^s/Q)!s&B'!JcEUe!*0!u!*/1]rDg9*!*/st!34*>J,~> -aoDB@r;Zht[f?B-rrD6^s/Q)!s&B'!JcEUe!*0!u!*/1]rDg9*!*/st!34*>J,~> -aoDB@r;Zht[f?B-rrD6^s/Q)!s&B'!JcEUe!*0!u!*/1]rDg9*!*/st!34*>J,~> -aoDB@r;Zht[f?B-rrD6^s/Q)!s&B'!JcEUe!*0!u!*/1]rDg9*!*/st!34*>J,~> -b5VHAr;cktZiC%*!35,[s&B%!r`&ruJcEmms/Q)!!*0#ujo>9Z[/^,*rrE%ub5Zt~> -b5VHAr;cktZiC%*!35,[s&B%!r`&ruJcEmms/Q)!!*0#ujo>9Z[/^,*rrE%ub5Zt~> -b5VHAr;cktZiC%*!35,[s&B%!r`&ruJcEmms/Q)!!*0#ujo>9Z[/^,*rrE%ub5Zt~> -c2[dCrW)suZ2af'iW&mW! -c2[dCrW)suZ2af'iW&mW! -c2[dCrW)suZ2af'iW&mW! -c2[dCrW)suZ2af'iW&mW! -c2[dCrW)suZ2af'iW&mW! -c2[dCrW)suZ2af'iW&mW! -c2[_Bs&H9&s/H&!hZ!VV -c2[_Bs&H9&s/H&!hZ!VV -c2[_Bs&H9&s/H&!hZ!VV -c2[_Bs&H9&s/H&!hZ!VV -c2[_Bs&H9&s/H&!hZ!VV -c2[_Bs&H9&s/H&!hZ!VV -cMmlEr;cktXoAA$h#IAR"B>F% -cMmlEr;cktXoAA$h#IAR"B>F% -cMmlEr;cktXoAA$h#IAR"B>F% -cMmlEr;cktXoAA$h#IAR"B>F% -cMmlEr;cktXoAA$h#IAR"B>F% -cMmlEr;cktXoAA$h#IAR"B>F% -ci3uFr;ZhtX8i,ug].;Rs&K(!!*0#uJcFp5r`/pt!*.\Orr<&!XT/9"rW(4CJ,~> -ci3uFr;ZhtX8i,ug].;Rs&K(!!*0#uJcFp5r`/pt!*.\Orr<&!XT/9"rW(4CJ,~> -ci3uFr;ZhtX8i,ug].;Rs&K(!!*0#uJcFp5r`/pt!*.\Orr<&!XT/9"rW(4CJ,~> -df9 -df9 -df9 -df9 -df9 -df9 -df9 -df9 -df9 -df97G!*,rs!36"udJj5I!<#oKs7ZHmWr?!$!**%!Wmh"H -df97G!*,rs!36"udJj5I!<#oKs7ZHmWr?!$!**%!Wmh"H -df97G!*,rs!36"udJj5I!<#oKs7ZHmWr?!$!**%!Wmh"H -e,KDJr;ZhtVZ6Vq!34EGrDijtrDeFK!36#urrE$u!34BFrDfcqs&K!t!34KIJ,~> -e,KDJr;ZhtVZ6Vq!34EGrDijtrDeFK!36#urrE$u!34BFrDfcqs&K!t!34KIJ,~> -e,KDJr;ZhtVZ6Vq!34EGrDijtrDeFK!36#urrE$u!34BFrDfcqs&K!t!34KIJ,~> -ec5ZLr;ZgtV>pKob5_E?!!)stMZ<]VrW)pt!343ArrE)!V>pJo!*.JIJ,~> -ec5ZLr;ZgtV>pKob5_E?!!)stMZ<]VrW)pt!343ArrE)!V>pJo!*.JIJ,~> -ec5ZLr;ZgtV>pKob5_E?!!)stMZ<]VrW)pt!343ArrE)!V>pJo!*.JIJ,~> -ec5ZLr;ZgtV>pKob5_E?!!)stMZ<]VrW)pt!343ArrE)!V>pJo!*.JIJ,~> -ec5ZLr;ZgtV>pKob5_E?!!)stMZ<]VrW)pt!343ArrE)!V>pJo!*.JIJ,~> -ec5ZLr;ZgtV>pKob5_E?!!)stMZ<]VrW)pt!343ArrE)!V>pJo!*.JIJ,~> -ec5ZLr;ZgtV>pKob5_E?!!)stMZ<]VrW)pt!343ArrE)!V>pJo!*.JIJ,~> -ec5ZLr;ZgtV>pKob5_E?!!)stMZ<]VrW)pt!343ArrE)!V>pJo!*.JIJ,~> -ec5ZLr;ZgtV>pKob5_E?!!)stMZ<]VrW)pt!343ArrE)!V>pJo!*.JIJ,~> -ec5YL!!*!uV#UBn`W,p;rrE!tQN$rbrDijts&K*!`W,r -ec5YL!!*!uV#UBn`W,p;rrE!tQN$rbrDijts&K*!`W,r -ec5YL!!*!uV#UBn`W,p;rrE!tQN$rbrDijts&K*!`W,r -fDkkNrW)qtU&P)m_>aM8rDidrr`.YOr`/do!NH/!WndXSWr5rt!<#p6s8>rks8Q*t!7h+"~> -fDkkNrW)qtU&P)m_>aM8rDidrr`.YOr`/do!NH/!WndXSWr5rt!<#p6s8>rks8Q*t!7h+"~> -fDkkNrW)qtU&P)m_>aM8rDidrr`.YOr`/do!NH/!WndXSWr5rt!<#p6s8>rks8Q*t!7h+"~> -fDkkNrW)qtU&P)m_>aM8rDidrr`.YOr`/do!NH/!WndXSWr5rt!<#p6s8>rks8Q*t!7h+"~> -fDkkNrW)qtU&P)m_>aM8rDidrr`.YOr`/do!NH/!WndXSWr5rt!<#p6s8>rks8Q*t!7h+"~> -fDkkNrW)qtU&P)m_>aM8rDidrr`.YOr`/do!NH/!WndXSWr5rt!<#p6s8>rks8Q*t!7h+"~> -fDkdL!*,Wj!!'V1s/Q&ur;cdrjT#3ZrW)surr;ttquGgXri5rtr;cdr]Dqh0U&Y.mr;Zgtf)L7~> -fDkdL!*,Wj!!'V1s/Q&ur;cdrjT#3ZrW)surr;ttquGgXri5rtr;cdr]Dqh0U&Y.mr;Zgtf)L7~> -fDkdL!*,Wj!!'V1s/Q&ur;cdrjT#3ZrW)surr;ttquGgXri5rtr;cdr]Dqh0U&Y.mr;Zgtf)L7~> -fDkdL!*,Wj!!'V1s/Q&ur;cdrjT#3ZrW)surr;ttquGgXri5rtr;cdr]Dqh0U&Y.mr;Zgtf)L7~> -fDkdL!*,Wj!!'V1s/Q&ur;cdrjT#3ZrW)surr;ttquGgXri5rtr;cdr]Dqh0U&Y.mr;Zgtf)L7~> -fDkdL!*,Wj!!'V1s/Q&ur;cdrjT#3ZrW)surr;ttquGgXri5rtr;cdr]Dqh0U&Y.mr;Zgtf)L7~> -g&M(Pr;`Dg!rirr?'t!!'%Ns*t~> -g&M(Pr;`Dg!rirr?'t!!'%Ns*t~> -g&M(Pr;`Dg!rirr?'t!!'%Ns*t~> -g&M(Pr;`Dg!rirr?'t!!'%Ns*t~> -g&M(Pr;`Dg!rirr?'t!!'%Ns*t~> -g&M(Pr;`Dg!rirr?'t!!'%Ns*t~> -gA_/Qr;cjtScA^iX8i)tq#L4jq#C@op](;oq>^Jppf74lqc*WrXT/;#SH&Nf!*.YNJ,~> -gA_/Qr;cjtScA^iX8i)tq#L4jq#C@op](;oq>^Jppf74lqc*WrXT/;#SH&Nf!*.YNJ,~> -gA_/Qr;cjtScA^iX8i)tq#L4jq#C@op](;oq>^Jppf74lqc*WrXT/;#SH&Nf!*.YNJ,~> -gA_:U!!$#!S,`LgU&Y+lqGlJSpf4!errAShri5tur`.\PJ,~> -gA_:U!!$#!S,`LgU&Y+lqGlJSpf4!errAShri5tur`.\PJ,~> -gA_:U!!$#!S,`LgU&Y+lqGlJSpf4!errAShri5tur`.\PJ,~> -gA_:U!!$#!S,`LgU&Y+lqGlJSpf4!errAShri5tur`.\PJ,~> -gA_:U!!$#!S,`LgU&Y+lqGlJSpf4!errAShri5tur`.\PJ,~> -gA_:U!!$#!S,`LgU&Y+lqGlJSpf4!errAShri5tur`.\PJ,~> -gA_:U!!$#!S,`LgU&Y+lqGlJSpf4!errAShri5tur`.\PJ,~> -gA_:U!!$#!S,`LgU&Y+lqGlJSpf4!errAShri5tur`.\PJ,~> -gA_:U!!$#!S,`LgU&Y+lqGlJSpf4!errAShri5tur`.\PJ,~> -h>dISrW)tuS,WMh!0.$YWqcVp -h>dISrW)tuS,WMh!0.$YWqcVp -h>dISrW)tuS,WMh!0.$YWqcVp -h>dERs&GHd!!&&Z!35nr!*/st!*,'Zr`,Bd!35tt!*.eRJ,~> -h>dERs&GHd!!&&Z!35nr!*/st!*,'Zr`,Bd!35tt!*.eRJ,~> -h>dERs&GHd!!&&Z!35nr!*/st!*,'Zr`,Bd!35tt!*.eRJ,~> -hZ!RUr;`/`!!*"uPlL`_quHbs!<<$urrE$uOoPD\R/[.dr;ckth>`!~> -hZ!RUr;`/`!!*"uPlL`_quHbs!<<$urrE$uOoPD\R/[.dr;ckth>`!~> -hZ!RUr;`/`!!*"uPlL`_quHbs!<<$urrE$uOoPD\R/[.dr;ckth>`!~> -hZ!RUr;`/`!!*"uPlL`_quHbs!<<$urrE$uOoPD\R/[.dr;ckth>`!~> -hZ!RUr;`/`!!*"uPlL`_quHbs!<<$urrE$uOoPD\R/[.dr;ckth>`!~> -hZ!RUr;`/`!!*"uPlL`_quHbs!<<$urrE$uOoPD\R/[.dr;ckth>`!~> -hZ!RUr;`/`!!*"uPlL`_quHbs!<<$urrE$uOoPD\R/[.dr;ckth>`!~> -hZ!RUr;`/`!!*"uPlL`_quHbs!<<$urrE$uOoPD\R/[.dr;ckth>`!~> -hZ!RUr;`/`!!*"uPlL`_quHbs!<<$urrE$uOoPD\R/[.dr;ckth>`!~> -hu<\Vr;ZgtQN-n`PlL`_rW)tuqu6[s!<,u\rrN1# -hu<\Vr;ZgtQN-n`PlL`_rW)tuqu6[s!<,u\rrN1# -hu<\Vr;ZgtQN-n`PlL`_rW)tuqu6[s!<,u\rrN1# -hu<^W!<,u`s8>r[s8K%nrr?&Zrr<%as8K%t!<6'Vs*t~> -hu<^W!<,u`s8>r[s8K%nrr?&Zrr<%as8K%t!<6'Vs*t~> -hu<^W!<,u`s8>r[s8K%nrr?&Zrr<%as8K%t!<6'Vs*t~> -hu<^W!<,u`s8>r[s8K%nrr?&Zrr<%as8K%t!<6'Vs*t~> -hu<^W!<,u`s8>r[s8K%nrr?&Zrr<%as8K%t!<6'Vs*t~> -hu<^W!<,u`s8>r[s8K%nrr?&Zrr<%as8K%t!<6'Vs*t~> -irB"XrrE%uQ2ge_JcCl4!!&2^!*/sthuA3~> -irB"XrrE%uQ2ge_JcCl4!!&2^!*/sthuA3~> -irB"XrrE%uQ2ge_JcCl4!!&2^!*/sthuA3~> -irB"XrrE%uQ2ge_JcCl4!!&2^!*/sthuA3~> -irB"XrrE%uQ2ge_JcCl4!!&2^!*/sthuA3~> -irB"XrrE%uQ2ge_JcCl4!!&2^!*/sthuA3~> -irB!X!rKs,m<]!0[?^Wr2qtWo -irB!X!rKs,m<]!0[?^Wr2qtWo -irB!X!rKs,m<]!0[?^Wr2qtWo -irB!X!rKs,m<]!0[?^Wr2qtWo -irB!X!rKs,m<]!0[?^Wr2qtWo -irB!X!rKs,m<]!0[?^Wr2qtWo -j8T+Zr;ZhtP5bM^rW%NLPlL`_!!&/]s&K(!s&J%XJ,~> -j8T+Zr;ZhtP5bM^rW%NLPlL`_!!&/]s&K(!s&J%XJ,~> -j8T+Zr;ZhtP5bM^rW%NLPlL`_!!&/]s&K(!s&J%XJ,~> -j8T*ZrVupuOT5:[JcCu7rDf![s/Q"t!35&YJ,~> -j8T*ZrVupuOT5:[JcCu7rDf![s/Q"t!35&YJ,~> -j8T*ZrVupuOT5:[JcCu7rDf![s/Q"t!35&YJ,~> -j8T*ZrVupuOT5:[JcCu7rDf![s/Q"t!35&YJ,~> -j8T*ZrVupuOT5:[JcCu7rDf![s/Q"t!35&YJ,~> -j8T*ZrVupuOT5:[JcCu7rDf![s/Q"t!35&YJ,~> -j8T*ZrVupuOT5:[JcCu7rDf![s/Q"t!35&YJ,~> -j8T*ZrVupuOT5:[JcCu7rDf![s/Q"t!35&YJ,~> -j8T*ZrVupuOT5:[JcCu7rDf![s/Q"t!35&YJ,~> -jo>@\r;ZhtOT5:[JcCu7rDepYs&K(!!*/%YJ,~> -jo>@\r;ZhtOT5:[JcCu7rDepYs&K(!!*/%YJ,~> -jo>@\r;ZhtOT5:[JcCu7rDepYs&K(!!*/%YJ,~> -jo>?\!!*!uO8o1ZJcCu7rDepYs/Q%uri5)[J,~> -jo>?\!!*!uO8o1ZJcCu7rDepYs/Q%uri5)[J,~> -jo>?\!!*!uO8o1ZJcCu7rDepYs/Q%uri5)[J,~> -kPtR^rW)qtO8o1ZJcCu7rDejWs&B%!r`/([J,~> -kPtR^rW)qtO8o1ZJcCu7rDejWs&B%!r`/([J,~> -kPtR^rW)qtO8o1ZJcCu7rDejWs&B%!r`/([J,~> -kPtR^rW)qtO8o1ZJcCu7rDejWs&B%!r`/([J,~> -kPtR^rW)qtO8o1ZJcCu7rDejWs&B%!r`/([J,~> -kPtR^rW)qtO8o1ZJcCu7rDejWs&B%!r`/([J,~> -kPtR^rW)qtO8o1ZJcCu7rDejWs&B%!r`/([J,~> -kPtR^rW)qtO8o1ZJcCu7rDejWs&B%!r`/([J,~> -kPtR^rW)qtO8o1ZJcCu7rDejWs&B%!r`/([J,~> -kPtQ^rW%oWrW%oWs&B%!N;riVNW9$Yr;Zhtk5Tr~> -kPtQ^rW%oWrW%oWs&B%!N;riVNW9$Yr;Zhtk5Tr~> -kPtQ^rW%oWrW%oWs&B%!N;riVNW9$Yr;Zhtk5Tr~> -l2Ud`r;ZgtN;rkWN;rpX!*,!XrDedU!*0!u!*/1]J,~> -l2Ud`r;ZgtN;rkWN;rpX!*,!XrDedU!*0!u!*/1]J,~> -l2Ud`r;ZgtN;rkWN;rpX!*,!XrDedU!*0!u!*/1]J,~> -l2Ud`r;ZgtN;rkWN;rpX!*,!XrDedU!*0!u!*/1]J,~> -l2Ud`r;ZgtN;rkWN;rpX!*,!XrDedU!*0!u!*/1]J,~> -l2Ud`r;ZgtN;rkWN;rpX!*,!XrDedU!*0!u!*/1]J,~> -l2Uc`r;_cUrVupuJcD#8rDedU!*/st!355^J,~> -l2Uc`r;_cUrVupuJcD#8rDedU!*/st!355^J,~> -l2Uc`r;_cUrVupuJcD#8rDedU!*/st!355^J,~> -l2Uc`r;_cUrVupuJcD#8rDedU!*/st!355^J,~> -l2Uc`r;_cUrVupuJcD#8rDedU!*/st!355^J,~> -l2Uc`r;_cUrVupuJcD#8rDedU!*/st!355^J,~> -lMgjar;cjtMuWbV!*+UMQ2ge_MZ -lMgjar;cjtMuWbV!*+UMQ2ge_MZ -lMgjar;cjtMuWbV!*+UMQ2ge_MZ -lMgjar;cjtMuWbV!*+UMQ2ge_MZ -lMgjar;cjtMuWbV!*+UMQ2ge_MZ -lMgjar;cjtMuWbV!*+UMQ2ge_MZ -lMgiar;_]SrDeFKQ2gg`!*+pVr`/suri58`J,~> -lMgiar;_]SrDeFKQ2gg`!*+pVr`/suri58`J,~> -lMgiar;_]SrDeFKQ2gg`!*+pVr`/suri58`J,~> -lMph`s&FpUrDeFKQ2gg`!*+gSrrE$ulMlA~> -lMph`s&FpUrDeFKQ2gg`!*+gSrrE$ulMlA~> -lMph`s&FpUrDeFKQ2gg`!*+gSrrE$ulMlA~> -lMph`s&FpUrDeFKQ2gg`!*+gSrrE$ulMlA~> -lMph`s&FpUrDeFKQ2gg`!*+gSrrE$ulMlA~> -lMph`s&FpUrDeFKQ2gg`!*+gSrrE$ulMlA~> -lMph`s&FpUrDeFKQ2gg`!*+gSrrE$ulMlA~> -lMph`s&FpUrDeFKQ2gg`!*+gSrrE$ulMlA~> -lMph`s&FpUrDeFKQ2gg`!*+gSrrE$ulMlA~> -mJm/crW%`RrDeFKQ2gg`LAq6Rr;c-_J,~> -mJm/crW%`RrDeFKQ2gg`LAq6Rr;c-_J,~> -mJm/crW%`RrDeFKQ2gg`LAq6Rr;c-_J,~> -mJm/c!WZ5#L]@ -mJm/c!WZ5#L]@ -mJm/c!WZ5#L]@ -mf*9er;cktL]@ -mf*9er;cktL]@ -mf*9er;cktL]@ -mf*9er;cktL]@ -mf*9er;cktL]@ -mf*9er;cktL]@ -mf*9er;cktL]@ -mf*9er;cktL]@ -mf*9er;cktL]@ -mf*8er;_QOrDeFKQ2gg`L&V-Qr;c0`J,~> -mf*8er;_QOrDeFKQ2gg`L&V-Qr;c0`J,~> -mf*8er;_QOrDeFKQ2gg`L&V-Qr;c0`J,~> -mf34c!*+aQrDeFKQ2gg`!*+aQr;cjtmJh\~> -mf34c!*+aQrDeFKQ2gg`!*+aQr;cjtmJh\~> -mf34c!*+aQrDeFKQ2gg`!*+aQr;cjtmJh\~> -mf34c!*+aQrDeFKQ2gg`!*+aQr;cjtmJh\~> -mf34c!*+aQrDeFKQ2gg`!*+aQr;cjtmJh\~> -mf34c!*+aQrDeFKQ2gg`!*+aQr;cjtmJh\~> -n,EBfr;ZhtL&_,P!31VMQ2ge_L&_-P!WZ5#mJh\~> -n,EBfr;ZhtL&_,P!31VMQ2ge_L&_-P!WZ5#mJh\~> -n,EBfr;ZhtL&_,P!31VMQ2ge_L&_-P!WZ5#mJh\~> -n,EBfr;ZhtL&_,P!31VMQ2ge_L&_-P!WZ5#mJh\~> -n,EBfr;ZhtL&_,P!31VMQ2ge_L&_-P!WZ5#mJh\~> -n,EBfr;ZhtL&_,P!31VMQ2ge_L&_-P!WZ5#mJh\~> -n,EDg!<,uOs8E"Ls-3Q^ -n,EDg!<,uOs8E"Ls-3Q^ -n,EDg!<,uOs8E"Ls-3Q^ -n,EDg!<,uOs8E"Ls-3Q^ -n,EDg!<,uOs8E"Ls-3Q^ -n,EDg!<,uOs8E"Ls-3Q^ -n,NCfr`+XOrW%NLPlL\^K)bfMs&JOfJ,~> -n,NCfr`+XOrW%NLPlL\^K)bfMs&JOfJ,~> -n,NCfr`+XOrW%NLPlL\^K)bfMs&JOfJ,~> -o)J\hrr@WMrW%oWs/H'!N;riVK)YgNr;c -o)J\hrr@WMrW%oWs/H'!N;riVK)YgNr;c -o)J\hrr@WMrW%oWs/H'!N;riVK)YgNr;c -o)J\hrr@WMrW%oWs/H'!N;riVK)YgNr;c -o)J\hrr@WMrW%oWs/H'!N;riVK)YgNr;c -o)J\hrr@WMrW%oWs/H'!N;riVK)YgNr;c -o)J\hrr@WMrW%oWs/H'!N;riVK)YgNr;c -o)J\hrr@WMrW%oWs/H'!N;riVK)YgNr;c -o)J\hrr@WMrW%oWs/H'!N;riVK)YgNr;c -o)J\h!~> -o)J\h!~> -o)J\h!~> -o)JXg!*+UMrW%NLPlL\^JcGaMrrE(!nc++~> -o)JXg!*+UMrW%NLPlL\^JcGaMrrE(!nc++~> -o)JXg!*+UMrW%NLPlL\^JcGaMrrE(!nc++~> -oD\ejr;_EK!<<#uJcCu7rDeFKs&K!tnc++~> -oD\ejr;_EK!<<#uJcCu7rDeFKs&K!tnc++~> -oD\ejr;_EK!<<#uJcCu7rDeFKs&K!tnc++~> -oD\ejr;_EK!<<#uJcCu7rDeFKs&K!tnc++~> -oD\ejr;_EK!<<#uJcCu7rDeFKs&K!tnc++~> -oD\ejr;_EK!<<#uJcCu7rDeFKs&K!tnc++~> -oD\ejr;_EK!<<#uJcCu7rDeFKs&K!tnc++~> -oD\ejr;_EK!<<#uJcCu7rDeFKs&K!tnc++~> -oD\ejr;_EK!<<#uJcCu7rDeFKs&K!tnc++~> -oDeah!*+UM!*0!uJcCu7ri,quJcGcMr;Zgto)F4~> -oDeah!*+UM!*0!uJcCu7ri,quJcGcMr;Zgto)F4~> -oDeah!*+UM!*0!uJcCu7ri,quJcGcMr;Zgto)F4~> -oDeah!31VMrDeFKOoGC]JcGcMs&K(!!*/UiJ,~> -oDeah!31VMrDeFKOoGC]JcGcMs&K(!!*/UiJ,~> -oDeah!31VMrDeFKOoGC]JcGcMs&K(!!*/UiJ,~> -oDeah!31VMrDeFKOoGC]JcGcMs&K(!!*/UiJ,~> -oDeah!31VMrDeFKOoGC]JcGcMs&K(!!*/UiJ,~> -oDeah!31VMrDeFKOoGC]JcGcMs&K(!!*/UiJ,~> -p&G%lr;_EK!< -p&G%lr;_EK!< -p&G%lr;_EK!< -p&G%lr;_EK!< -p&G%lr;_EK!< -p&G%lr;_EK!< -p&G%l!!*!uJc>`MrDeFKOoGI_WiCXMs8W&uri5YkJ,~> -p&G%l!!*!uJc>`MrDeFKOoGI_WiCXMs8W&uri5YkJ,~> -p&G%l!!*!uJc>`MrDeFKOoGI_WiCXMs8W&uri5YkJ,~> -p&G%l!!*!uJc>`MrDeFKOoGI_WiCXMs8W&uri5YkJ,~> -p&G%l!!*!uJc>`MrDeFKOoGI_WiCXMs8W&uri5YkJ,~> -p&G%l!!*!uJc>`MrDeFKOoGI_WiCXMs8W&uri5YkJ,~> -p&G!kr`+OL!WN0!We(24s8H#Ls8W,u!<-!ks*t~> -p&G!kr`+OL!WN0!We(24s8H#Ls8W,u!<-!ks*t~> -p&G!kr`+OL!WN0!We(24s8H#Ls8W,u!<-!ks*t~> -p](8nrW%NLrVlitJcCc1r`+OLs8W+!!!*!up&BO~> -p](8nrW%NLrVlitJcCc1r`+OLs8W+!!!*!up&BO~> -p](8nrW%NLrVlitJcCc1r`+OLs8W+!!!*!up&BO~> -p](8nrW%NLrVlitJcCc1r`+OLs8W+!!!*!up&BO~> -p](8nrW%NLrVlitJcCc1r`+OLs8W+!!!*!up&BO~> -p](8nrW%NLrVlitJcCc1r`+OLs8W+!!!*!up&BO~> -p](8nrW%NLrVlitJcCc1r`+OLs8W+!!!*!up&BO~> -p](8nrW%NLrVlitJcCc1r`+OLs8W+!!!*!up&BO~> -p](8nrW%NLrVlitJcCc1r`+OLs8W+!!!*!up&BO~> -p](7nrW%NLrr3#!!.k01s8H#Ls8W-! -p](7nrW%NLrr3#!!.k01s8H#Ls8W-! -p](7nrW%NLrr3#!!.k01s8H#Ls8W-! -p](7nrr<%!JcG`Ls&FXMNW9"YJcG]Kr;ZhtpA]X~> -p](7nrr<%!JcG`Ls&FXMNW9"YJcG]Kr;ZhtpA]X~> -p](7nrr<%!JcG`Ls&FXMNW9"YJcG]Kr;ZhtpA]X~> -p](0l!*+UMrr -p](0l!*+UMrr -p](0l!*+UMrr -p](0l!*+UMrr -p](0l!*+UMrr -p](0l!*+UMrr -p](0l!*+UMrr -p](0l!*+UMrr -p](0l!*+UMrr -q>^Jpr;_EKrVumtJcC`0rrE)!JcGcM!*0!u!*/amJ,~> -q>^Jpr;_EKrVumtJcC`0rrE)!JcGcM!*0!u!*/amJ,~> -q>^Jpr;_EKrVumtJcC`0rrE)!JcGcM!*0!u!*/amJ,~> -q>^Ipr;_EKrVlluWe(20s8>rKs8W*! -q>^Ipr;_EKrVlluWe(20s8>rKs8W*! -q>^Ipr;_EKrVlluWe(20s8>rKs8W*! -q>^Ipr;_EKrVlluWe(20s8>rKs8W*! -q>^Ipr;_EKrVlluWe(20s8>rKs8W*! -q>^Ipr;_EKrVlluWe(20s8>rKs8W*! -q>^IprrE(!JcG]K!!%TMN;riVJcG`Lr;Zhtp]#a~> -q>^IprrE(!JcG]K!!%TMN;riVJcG`Lr;Zhtp]#a~> -q>^IprrE(!JcG]K!!%TMN;riVJcG`Lr;Zhtp]#a~> -q>^IprrE(!JcG]K!!%TMN;riVJcG`Lr;Zhtp]#a~> -q>^IprrE(!JcG]K!!%TMN;riVJcG`Lr;Zhtp]#a~> -q>^IprrE(!JcG]K!!%TMN;riVJcG`Lr;Zhtp]#a~> -q>^Bns&FXM!<<%u!!%iTs&B%!M#[LTrr@WMrr;os!*/dnJ,~> -q>^Bns&FXM!<<%u!!%iTs&B%!M#[LTrr@WMrr;os!*/dnJ,~> -q>^Bns&FXM!<<%u!!%iTs&B%!M#[LTrr@WMrr;os!*/dnJ,~> -q>^Bns&FXM!<<%u!!%iTs&B%!M#[LTrr@WMrr;os!*/dnJ,~> -q>^Bns&FXM!<<%u!!%iTs&B%!M#[LTrr@WMrr;os!*/dnJ,~> -q>^Bns&FXM!<<%u!!%iTs&B%!M#[LTrr@WMrr;os!*/dnJ,~> -qYpPqr;_EKrr;psM#[LT!*+dRrr@WMrr;st! -qYpPqr;_EKrr;psM#[LT!*+dRrr@WMrr;st! -qYpPqr;_EKrr;psM#[LT!*+dRrr@WMrr;st! -qYpOqr;_EKrr;rt!31VMMZ`Mr`/sup]#a~> -qYpOqr;_EKrr;rt!31VMMZ`Mr`/sup]#a~> -qYpOqr;_EKrr;rt!31VMMZ`Mr`/sup]#a~> -qYpOqr;_EKrr;rt!31VMMZ`Mr`/sup]#a~> -qYpOqr;_EKrr;rt!31VMMZ`Mr`/sup]#a~> -qYpOqr;_EKrr;rt!31VMMZ`Mr`/sup]#a~> -qYpOqr;_EKrr;rt!31VMMZ`Mr`/sup]#a~> -qYpOqr;_EKrr;rt!31VMMZ`Mr`/sup]#a~> -qYpOqr;_EKrr;rt!31VMMZ`Mr`/sup]#a~> -qYp[u!!$#!JcG`LrW%NLM?!NSJcG]KrrE%uqYu'~> -qYp[u!!$#!JcG`LrW%NLM?!NSJcG]KrrE%uqYu'~> -qYp[u!!$#!JcG`LrW%NLM?!NSJcG]KrrE%uqYu'~> -qZ$Nps&FXMs8W$tJcCT,s/Q)!JcG]KrrE$uqYu'~> -qZ$Nps&FXMs8W$tJcCT,s/Q)!JcG]KrrE$uqYu'~> -qZ$Nps&FXMs8W$tJcCT,s/Q)!JcG]KrrE$uqYu'~> -qZ$Nps/LYMs8W$tJcCN*rr<&!JcG`L!EB.! -qZ$Nps/LYMs8W$tJcCN*rr<&!JcG`L!EB.! -qZ$Nps/LYMs8W$tJcCN*rr<&!JcG`L!EB.! -qZ$Nps/LYMs8W$tJcCN*rr<&!JcG`L!EB.! -qZ$Nps/LYMs8W$tJcCN*rr<&!JcG`L!EB.! -qZ$Nps/LYMs8W$tJcCN*rr<&!JcG`L!EB.! -qZ$Nps/LYMs8W$tJcCN*rr<&!JcG`L!EB.! -qZ$Nps/LYMs8W$tJcCN*rr<&!JcG`L!EB.! -qZ$Nps/LYMs8W$tJcCN*rr<&!JcG`L!EB.! -rVuksrW%`Rr`'""WiH$t!!*"=! -rVuksrW%`Rr`'""WiH$t!!*"=! -rVuksrW%`Rr`'""WiH$t!!*"=! -rVujsrW%`RqZ-Yrs8Vrrri1PLOoGD]r;cj -rVujsrW%`RqZ-Yrs8Vrrri1PLOoGD]r;cj -rVujsrW%`RqZ-Yrs8Vrrri1PLOoGD]r;cj -rVujsrW%`RqZ-Yrs8Vrrri1PLOoGD]r;cj -rVujsrW%`RqZ-Yrs8Vrrri1PLOoGD]r;cj -rVujsrW%`RqZ-Yrs8Vrrri1PLOoGD]r;cj -rVujs!WZ5#L]@@RquHa;qu?_sJcC`0s&Jssr`/sur`+^Q!35ttqYu'~> -rVujs!WZ5#L]@@RquHa;qu?_sJcC`0s&Jssr`/sur`+^Q!35ttqYu'~> -rVujs!WZ5#L]@@RquHa;qu?_sJcC`0s&Jssr`/sur`+^Q!35ttqYu'~> -rVujs!WZ5#L]@@RquHa;qu?_sJcC`0s&Jssr`/sur`+^Q!35ttqYu'~> -rVujs!WZ5#L]@@RquHa;qu?_sJcC`0s&Jssr`/sur`+^Q!35ttqYu'~> -rVujs!WZ5#L]@@RquHa;qu?_sJcC`0s&Jssr`/sur`+^Q!35ttqYu'~> -rVujs!WZ5#K`;%PpAb2nJcCW-s&Jmq!*+XNr;Zhtqu;0~> -rVujs!WZ5#K`;%PpAb2nJcCW-s&Jmq!*+XNr;Zhtqu;0~> -rVujs!WZ5#K`;%PpAb2nJcCW-s&Jmq!*+XNr;Zhtqu;0~> -rVujs!WZ5#K`;%PpAb2nJcCW-s&Jmq!*+XNr;Zhtqu;0~> -rVujs!WZ5#K`;%PpAb2nJcCW-s&Jmq!*+XNr;Zhtqu;0~> -rVujs!WZ5#K`;%PpAb2nJcCW-s&Jmq!*+XNr;Zhtqu;0~> -rVufrs&F^Os&Jssr`+OLL]@2NJcGZK!*/prJ,~> -rVufrs&F^Os&Jssr`+OLL]@2NJcGZK!*/prJ,~> -rVufrs&F^Os&Jssr`+OLL]@2NJcGZK!*/prJ,~> -rVufrs&FaP!35bn!31VMMZ<]Vq>^LqK)YgNrVupuqu;0~> -rVufrs&FaP!35bn!31VMMZ<]Vq>^LqK)YgNrVupuqu;0~> -rVufrs&FaP!35bn!31VMMZ<]Vq>^LqK)YgNrVupuqu;0~> -rVufrs&FaP!35bn!31VMMZ<]Vq>^LqK)YgNrVupuqu;0~> -rVufrs&FaP!35bn!31VMMZ<]Vq>^LqK)YgNrVupuqu;0~> -rVufrs&FaP!35bn!31VMMZ<]Vq>^LqK)YgNrVupuqu;0~> -rVufrs&FaP!35bn!31VMMZ<]Vq>^LqK)YgNrVupuqu;0~> -rVufrs&FaP!35bn!31VMMZ<]Vq>^LqK)YgNrVupuqu;0~> -rVufrs&FaP!35bn!31VMMZ<]Vq>^LqK)YgNrVupuqu;0~> -rVufrL&_.PquHa;qu?_sJcC`0s&K!t!*/psr`+[P!*0!u!*/prJ,~> -rVufrL&_.PquHa;qu?_sJcC`0s&K!t!*/psr`+[P!*0!u!*/prJ,~> -rVufrL&_.PquHa;qu?_sJcC`0s&K!t!*/psr`+[P!*0!u!*/prJ,~> -rr2sur;_QOq#LHp!35qsri1PLOoGD]r;cjt!<<$u!$2" -rr2sur;_QOq#LHp!35qsri1PLOoGD]r;cjt!<<$u!$2" -rr2sur;_QOq#LHp!35qsri1PLOoGD]r;cjt!<<$u!$2" -rr2sur;_QOr`'($3B:)>rr;tt!F% -rr2sur;_QOr`'($3B:)>rr;tt!F% -rr2sur;_QOr`'($3B:)>rr;tt!F% -rr2sur;_QOr`'($3B:)>rr;tt!F% -rr2sur;_QOr`'($3B:)>rr;tt!F% -rr2sur;_QOr`'($3B:)>rr;tt!F% -rr2sur;_QOr`'($3B:)>rr;tt!F% -rr2sur;_QOr`'($3B:)>rr;tt!F% -rr2sur;_QOr`'($3B:)>rr;tt!F% -rr2surVupuJcG`Ms/PDb!NK.Ns/uA'W`<'`s8Q)Ms8;rps*t~> -rr2surVupuJcG`Ms/PDb!NK.Ns/uA'W`<'`s8Q)Ms8;rps*t~> -rr2surVupuJcG`Ms/PDb!NK.Ns/uA'W`<'`s8Q)Ms8;rps*t~> -rr2surVupuK)YnP!!%TMs8W,!!*+UMrr3"!!.k1K!<6'ts*t~> -rr2surVupuK)YnP!!%TMs8W,!!*+UMrr3"!!.k1K!<6'ts*t~> -rr2surVupuK)YnP!!%TMs8W,!!*+UMrr3"!!.k1K!<6'ts*t~> -rr2surVupuK)YnP!!%TMs8W,!!*+UMrr3"!!.k1K!<6'ts*t~> -rr2surVupuK)YnP!!%TMs8W,!!*+UMrr3"!!.k1K!<6'ts*t~> -rr2surVupuK)YnP!!%TMs8W,!!*+UMrr3"!!.k1K!<6'ts*t~> -rr;os!*+XNr`+OLs8W+!!!%TMrVlitri1YOr;cjtrVqB~> -rr;os!*+XNr`+OLs8W+!!!%TMrVlitri1YOr;cjtrVqB~> -rr;os!*+XNr`+OLs8W+!!!%TMrVlitri1YOr;cjtrVqB~> -rr;os!*+XNr`+OLs8W+!!!%TMrVlitri1YOr;cjtrVqB~> -rr;os!*+XNr`+OLs8W+!!!%TMrVlitri1YOr;cjtrVqB~> -rr;os!*+XNr`+OLs8W+!!!%TMrVlitri1YOr;cjtrVqB~> -rr;os!31YN!!(@FrDeFKi;`dV!34HHrDeONr`'"" -rr;os!31YN!!(@FrDeFKi;`dV!34HHrDeONr`'"" -rr;os!31YN!!(@FrDeFKi;`dV!34HHrDeONr`'"" -rr;os!31YN!!(@FrDeFKi;`dV!34HHrDeONr`'"" -rr;os!31YN!!(@FrDeFKi;`dV!34HHrDeONr`'"" -rr;os!31YN!!(@FrDeFKi;`dV!34HHrDeONr`'"" -rr;osK`D!Nci="Fs&FXMiVrnXrVupudJj3HrW%WOr`'"" -rr;osK`D!Nci="Fs&FXMiVrnXrVupudJj3HrW%WOr`'"" -rr;osK`D!Nci="Fs&FXMiVrnXrVupudJj3HrW%WOr`'"" -rr;osK`D!NJcC<$p&FtjL&_-P!WZ5#rVqB~> -rr;osK`D!NJcC<$p&FtjL&_-P!WZ5#rVqB~> -rr;osK`D!NJcC<$p&FtjL&_-P!WZ5#rVqB~> -rr;osK`D!NJcC<$p&FtjL&_-P!WZ5#rVqB~> -rr;osK`D!NJcC<$p&FtjL&_-P!WZ5#rVqB~> -rr;osK`D!NJcC<$p&FtjL&_-P!WZ5#rVqB~> -rr;osK`D!NJcC<$p&FtjL&_-P!WZ5#rVqB~> -rr;osK`D!NJcC<$p&FtjL&_-P!WZ5#rVqB~> -rr;osK`D!NJcC<$p&FtjL&_-P!WZ5#rVqB~> -rr;osL&V.QrW%NLJcGBBr`&puL&_-PrW)osJ,~> -rr;osL&V.QrW%NLJcGBBr`&puL&_-PrW)osJ,~> -rr;osL&V.QrW%NLJcGBBr`&puL&_-PrW)osJ,~> -s8N(!r;_QOrDeFKJcG9?!WZ5#L]@?RrW)osJ,~> -s8N(!r;_QOrDeFKJcG9?!WZ5#L]@?RrW)osJ,~> -s8N(!r;_QOrDeFKJcG9?!WZ5#L]@?RrW)osJ,~> -s8N(!r;_TP!NH.)s8Duu -s8N(!r;_TP!NH.)s8Duu -s8N(!r;_TP!NH.)s8Duu -s8N(!r;_TP!NH.)s8Duu -s8N(!r;_TP!NH.)s8Duu -s8N(!r;_TP!NH.)s8Duu -s8N(!r;_TP!NH.)s8Duu -s8N(!r;_TP!NH.)s8Duu -s8N(!r;_TP!NH.)s8Duu -s8N(!r;_TPs&H?(r`&ruQ2gh`!33=(rrE(!M?!QTrW)osJ,~> -s8N(!r;_TPs&H?(r`&ruQ2gh`!33=(rrE(!M?!QTrW)osJ,~> -s8N(!r;_TPs&H?(r`&ruQ2gh`!33=(rrE(!M?!QTrW)osJ,~> -s8N(!r;_]Sri,quJcC<$m/R)crr@oUr`/ptrVqB~> -s8N(!r;_]Sri,quJcC<$m/R)crr@oUr`/ptrVqB~> -s8N(!r;_]Sri,quJcC<$m/R)crr@oUr`/ptrVqB~> -s8N(!r;_]Sri,quJcC<$m/R)crr@oUr`/ptrVqB~> -s8N(!r;_]Sri,quJcC<$m/R)crr@oUr`/ptrVqB~> -s8N(!r;_]Sri,quJcC<$m/R)crr@oUr`/ptrVqB~> -s8N(!r;_]SrDeFKJcG$8rrE(!MuWdVrW)osJ,~> -s8N(!r;_]SrDeFKJcG$8rrE(!MuWdVrW)osJ,~> -s8N(!r;_]SrDeFKJcG$8rrE(!MuWdVrW)osJ,~> -s8N(!r;_]SrDeFKJcG$8rrE(!MuWdVrW)osJ,~> -s8N(!r;_]SrDeFKJcG$8rrE(!MuWdVrW)osJ,~> -s8N(!r;_]SrDeFKJcG$8rrE(!MuWdVrW)osJ,~> -s8N+"!<,uUrrB(u!.k0$s69R` -s8N+"!<,uUrrB(u!.k0$s69R` -s8N+"!<,uUrrB(u!.k0$s69R` -s8N+"!<,uUrrB(u!.k0$s69R` -s8N+"!<,uUrrB(u!.k0$s69R` -s8N+"!<,uUrrB(u!.k0$s69R` -s8N+"!<,uUs8>r^s8H!u!6kKC -s8N+"!<,uUs8>r^s8H!u!6kKC -s8N+"!<,uUs8>r^s8H!u!6kKC -s8N+"!<,uWs8T)!!0R<\WW6&ds8K%nrr?'ds8T,! -s8N+"!<,uWs8T)!!0R<\WW6&ds8K%nrr?'ds8T,! -s8N+"!<,uWs8T)!!0R<\WW6&ds8K%nrr?'ds8T,! -s8N+"!<,uWs8T)!!0R<\WW6&ds8K%nrr?'ds8T,! -s8N+"!<,uWs8T)!!0R<\WW6&ds8K%nrr?'ds8T,! -s8N+"!<,uWs8T)!!0R<\WW6&ds8K%nrr?'ds8T,! -s8N+"!<,uWs8T)!!0R<\WW6&ds8K%nrr?'ds8T,! -s8N+"!<,uWs8T)!!0R<\WW6&ds8K%nrr?'ds8T,! -s8N+"!<,uWs8T)!!0R<\WW6&ds8K%nrr?'ds8T,! -s8N+"!<,uWs8H#Ls8;orWr<"uWr)es<<3"uJcGTHrDegVrW)osJ,~> -s8N+"!<,uWs8H#Ls8;orWr<"uWr)es<<3"uJcGTHrDegVrW)osJ,~> -s8N+"!<,uWs8H#Ls8;orWr<"uWr)es<<3"uJcGTHrDegVrW)osJ,~> -s8N+"!<,uYs8>rKs82iqWr)ksWW<(u -s8N+"!<,uYs8>rKs82iqWr)ksWW<(u -s8N+"!<,uYs8>rKs82iqWr)ksWW<(u -s8W*!r`,'[s/Q)!s/LYMq#:>oqZ$Urr;ZgtJcGHDrDejWrW)sus8RT~> -s8W*!r`,'[s/Q)!s/LYMq#:>oqZ$Urr;ZgtJcGHDrDejWrW)sus8RT~> -s8W*!r`,'[s/Q)!s/LYMq#:>oqZ$Urr;ZgtJcGHDrDejWrW)sus8RT~> -s8W*!r`,'[s/Q)!s/LYMq#:>oqZ$Urr;ZgtJcGHDrDejWrW)sus8RT~> -s8W*!r`,'[s/Q)!s/LYMq#:>oqZ$Urr;ZgtJcGHDrDejWrW)sus8RT~> -s8W*!r`,'[s/Q)!s/LYMq#:>oqZ$Urr;ZgtJcGHDrDejWrW)sus8RT~> -s8W*!r`,'[s/Q)!s/LYMq#:>oqZ$Urr;ZgtJcGHDrDejWrW)sus8RT~> -s8W*!r`,'[s/Q)!s/LYMq#:>oqZ$Urr;ZgtJcGHDrDejWrW)sus8RT~> -s8W*!r`,'[s/Q)!s/LYMq#:>oqZ$Urr;ZgtJcGHDrDejWrW)sus8RT~> -s8W*!r`,'[rDeFKp&G&lq#CCpJcG<@! -s8W*!r`,'[rDeFKp&G&lq#CCpJcG<@! -s8W*!r`,'[rDeFKp&G&lq#CCpJcG<@! -s8W*!r`,*\!`]4#JcG9?s&Jpr!31VMo)A`j!07*Y!<6(!s*t~> -s8W*!r`,*\!`]4#JcG9?s&Jpr!31VMo)A`j!07*Y!<6(!s*t~> -s8W*!r`,*\!`]4#JcG9?s&Jpr!31VMo)A`j!07*Y!<6(!s*t~> -s8W*!r`,*\!`]4#JcG9?s&Jpr!31VMo)A`j!07*Y!<6(!s*t~> -s8W*!r`,*\!`]4#JcG9?s&Jpr!31VMo)A`j!07*Y!<6(!s*t~> -s8W*!r`,*\!`]4#JcG9?s&Jpr!31VMo)A`j!07*Y!<6(!s*t~> -s8W*!r`,*\!W]7#JcG?As&Jgo!31VMo)JYgOoPC\s&K+!J,~> -s8W*!r`,*\!W]7#JcG?As&Jgo!31VMo)JYgOoPC\s&K+!J,~> -s8W*!r`,*\!W]7#JcG?As&Jgo!31VMo)JYgOoPC\s&K+!J,~> -s8W*!r`,*\!W]7#JcG?As&Jgo!31VMo)JYgOoPC\s&K+!J,~> -s8W*!r`,*\!W]7#JcG?As&Jgo!31VMo)JYgOoPC\s&K+!J,~> -s8W*!r`,*\!W]7#JcG?As&Jgo!31VMo)JYgOoPC\s&K+!J,~> -s8N+"!<,u_s8>rKs760i -s8N+"!<,u_s8>rKs760i -s8N+"!<,u_s8>rKs760i -s8N+"!<,u_s8>rKs760i -s8N+"!<,u_s8>rKs760i -s8N+"!<,u_s8>rKs760i -s8N+"!<,u`rrB(u!.k1Bs8H$t!<6'us8K%r!.k1Bs8>r\s8E#ss*t~> -s8N+"!<,u`rrB(u!.k1Bs8H$t!<6'us8K%r!.k1Bs8>r\s8E#ss*t~> -s8N+"!<,u`rrB(u!.k1Bs8H$t!<6'us8K%r!.k1Bs8>r\s8E#ss*t~> -s8N+"!<,u`rr<&u -s8N+"!<,u`rr<&u -s8N+"!<,u`rr<&u -s8N+"!<,u`rr<&u -s8N+"!<,u`rr<&u -s8N+"!<,u`rr<&u -s8N+"!<,u`rr<&u -s8N+"!<,u`rr<&u -s8N+"!<,u`rr<&u -s8N+"!<,uas8Q)Ms+13qrrf>%!33&bs8E#ss*t~> -s8N+"!<,uas8Q)Ms+13qrrf>%!33&bs8E#ss*t~> -s8N+"!<,uas8Q)Ms+13qrrf>%!33&bs8E#ss*t~> -s8N+"!<,uds8K"u!.k0$s31NC -s8N+"!<,uds8K"u!.k0$s31NC -s8N+"!<,uds8K"u!.k0$s31NC -s8N(!r;`;d!36"u!31VMJcEmmrDf6brW)osJ,~> -s8N(!r;`;d!36"u!31VMJcEmmrDf6brW)osJ,~> -s8N(!r;`;d!36"u!31VMJcEmmrDf6brW)osJ,~> -s8N(!r;`;d!36"u!31VMJcEmmrDf6brW)osJ,~> -s8N(!r;`;d!36"u!31VMJcEmmrDf6brW)osJ,~> -s8N(!r;`;d!36"u!31VMJcEmmrDf6brW)osJ,~> -s8N(!r;`;d!36"u!31VMJcEmmrDf6brW)osJ,~> -s8N(!r;`;d!36"u!31VMJcEmmrDf6brW)osJ,~> -s8N(!r;`;d!36"u!31VMJcEmmrDf6brW)osJ,~> -s8N(!r;`;d!!*!uJcC<$a8c/>!*,Qhr`/ptrVqB~> -s8N(!r;`;d!!*!uJcC<$a8c/>!*,Qhr`/ptrVqB~> -s8N(!r;`;d!!*!uJcC<$a8c/>!*,Qhr`/ptrVqB~> -s8N(!r;`Afr`+OLJcE[gs/H&!ri2Ujr`/ptrVqB~> -s8N(!r;`Afr`+OLJcE[gs/H&!ri2Ujr`/ptrVqB~> -s8N(!r;`Afr`+OLJcE[gs/H&!ri2Ujr`/ptrVqB~> -s8N(!r;`Afr`+OLJcE[gs/H&!ri2Ujr`/ptrVqB~> -s8N(!r;`Afr`+OLJcE[gs/H&!ri2Ujr`/ptrVqB~> -s8N(!r;`Afr`+OLJcE[gs/H&!ri2Ujr`/ptrVqB~> -s8N(!r;`Ghs&K(!JcC<$_>aM8rW&Sjr`/ptrVqB~> -s8N(!r;`Ghs&K(!JcC<$_>aM8rW&Sjr`/ptrVqB~> -s8N(!r;`Ghs&K(!JcC<$_>aM8rW&Sjr`/ptrVqB~> -s8N(!r;`Ghs&K(!JcC<$_>aM8rW&Sjr`/ptrVqB~> -s8N(!r;`Ghs&K(!JcC<$_>aM8rW&Sjr`/ptrVqB~> -s8N(!r;`Ghs&K(!JcC<$_>aM8rW&Sjr`/ptrVqB~> -s8N(!r;`Mjs/Q)!s/LYMJcEOcrDfNjr`/ptrVqB~> -s8N(!r;`Mjs/Q)!s/LYMJcEOcrDfNjr`/ptrVqB~> -s8N(!r;`Mjs/Q)!s/LYMJcEOcrDfNjr`/ptrVqB~> -s8N(!r;`Mjs/Q)!s/LYMJcEOcrDfNjr`/ptrVqB~> -s8N(!r;`Mjs/Q)!s/LYMJcEOcrDfNjr`/ptrVqB~> -s8N(!r;`Mjs/Q)!s/LYMJcEOcrDfNjr`/ptrVqB~> -rr;osT`>#ls&FXMJcE@^s&Gcmr`/ptrVqB~> -rr;osT`>#ls&FXMJcE@^s&Gcmr`/ptrVqB~> -rr;osT`>#ls&FXMJcE@^s&Gcmr`/ptrVqB~> -rr;osU&Y*lJcG9?s&K(!!35&Y!*0!uJcG9?!NH/!Whf[o<< -rr;osU&Y*lJcG9?s&K(!!35&Y!*0!uJcG9?!NH/!Whf[o<< -rr;osU&Y*lJcG9?s&K(!!35&Y!*0!uJcG9?!NH/!Whf[o<< -rr;osU&Y*lJcG9?s&K(!!35&Y!*0!uJcG9?!NH/!Whf[o<< -rr;osU&Y*lJcG9?s&K(!!35&Y!*0!uJcG9?!NH/!Whf[o<< -rr;osU&Y*lJcG9?s&K(!!35&Y!*0!uJcG9?!NH/!Whf[o<< -rr;osU&Y*lJcG9?s&K(!!35&Y!*0!uJcG9?!NH/!Whf[o<< -rr;osU&Y*lJcG9?s&K(!!35&Y!*0!uJcG9?!NH/!Whf[o<< -rr;osU&Y*lJcG9?s&K(!!35&Y!*0!uJcG9?!NH/!Whf[o<< -rr;osV#UBnJcG3=s/Q*!iVrnXr`+OLnG`KgrVuquV>pNp!WZ5#rVqB~> -rr;osV#UBnJcG3=s/Q*!iVrnXr`+OLnG`KgrVuquV>pNp!WZ5#rVqB~> -rr;osV#UBnJcG3=s/Q*!iVrnXr`+OLnG`KgrVuquV>pNp!WZ5#rVqB~> -rr;osV>pKoJcC<$[/^-*!W]7#VuQ`r!WZ5#rVqB~> -rr;osV>pKoJcC<$[/^-*!W]7#VuQ`r!WZ5#rVqB~> -rr;osV>pKoJcC<$[/^-*!W]7#VuQ`r!WZ5#rVqB~> -rr;os!*,rss&FXMJcDnQ"KDG%WiE&ur;cjtrVqB~> -rr;os!*,rss&FXMJcDnQ"KDG%WiE&ur;cjtrVqB~> -rr;os!*,rss&FXMJcDnQ"KDG%WiE&ur;cjtrVqB~> -rr;os!*,rss&FXMJcDnQ"KDG%WiE&ur;cjtrVqB~> -rr;os!*,rss&FXMJcDnQ"KDG%WiE&ur;cjtrVqB~> -rr;os!*,rss&FXMJcDnQ"KDG%WiE&ur;cjtrVqB~> -rr;os!*,rss&FXMJcDnQ"KDG%WiE&ur;cjtrVqB~> -rr;os!*,rss&FXMJcDnQ"KDG%WiE&ur;cjtrVqB~> -rr;os!*,rss&FXMJcDnQ"KDG%WiE&ur;cjtrVqB~> -rr;os!*-'!r`&puJcC<$XT/=#rrE)!X8i+us&K$tJ,~> -rr;os!*-'!r`&puJcC<$XT/=#rrE)!X8i+us&K$tJ,~> -rr;os!*-'!r`&puJcC<$XT/=#rrE)!X8i+us&K$tJ,~> -rr2surVupuX8`1"rVuquJcC<$WrN*!rrB,"r;c`pJ,~> -rr2surVupuX8`1"rVuquJcC<$WrN*!rrB,"r;c`pJ,~> -rr2surVupuX8`1"rVuquJcC<$WrN*!rrB,"r;c`pJ,~> -rr2surVupuX8`1"rVuquJcC<$WrN*!rrB,"r;c`pJ,~> -rr2surVupuX8`1"rVuquJcC<$WrN*!rrB,"r;c`pJ,~> -rr2surVupuX8`1"rVuquJcC<$WrN*!rrB,"r;c`pJ,~> -rr2sur;`u"s/H&!ri1PLJcDYJs&B%!ri34&!35ttqu;0~> -rr2sur;`u"s/H&!ri1PLJcDYJs&B%!ri34&!35ttqu;0~> -rr2sur;`u"s/H&!ri1PLJcDYJs&B%!ri34&!35ttqu;0~> -rr2sur;`u"s/H&!ri1PLJcDYJs&B%!ri34&!35ttqu;0~> -rr2sur;`u"s/H&!ri1PLJcDYJs&B%!ri34&!35ttqu;0~> -rr2sur;`u"s/H&!ri1PLJcDYJs&B%!ri34&!35ttqu;0~> -rr2sur;a&$s&K(!!31VMJcDJE!*0!u!33=(!*/stqu;0~> -rr2sur;a&$s&K(!!31VMJcDJE!*0!u!33=(!*/stqu;0~> -rr2sur;a&$s&K(!!31VMJcDJE!*0!u!33=(!*/stqu;0~> -rr2sur;a&$s&K(!!31VMJcDJE!*0!u!33=(!*/stqu;0~> -rr2sur;a&$s&K(!!31VMJcDJE!*0!u!33=(!*/stqu;0~> -rr2sur;a&$s&K(!!31VMJcDJE!*0!u!33=(!*/stqu;0~> -rVufrZ2ai(rrE)!JcC<$T`>!k! -rVufrZ2ai(rrE)!JcC<$T`>!k! -rVufrZ2ai(rrE)!JcC<$T`>!k! -rVufrs/NI+"B>F%WiCXMJcD5>!EB.!WjVj, -rVufrs/NI+"B>F%WiCXMJcD5>!EB.!WjVj, -rVufrs/NI+"B>F%WiCXMJcD5>!EB.!WjVj, -rVufrs/NI+"B>F%WiCXMJcD5>!EB.!WjVj, -rVufrs/NI+"B>F%WiCXMJcD5>!EB.!WjVj, -rVufrs/NI+"B>F%WiCXMJcD5>!EB.!WjVj, -rVufrs/NI+"B>F%WiCXMJcD5>!EB.!WjVj, -rVufrs/NI+"B>F%WiCXMJcD5>!EB.!WjVj, -rVufrs/NI+"B>F%WiCXMJcD5>!EB.!WjVj, -rVufrs&HQ.rDeFKJcD&9!36"u!33L-r;Zgtqu;0~> -rVufrs&HQ.rDeFKJcD&9!36"u!33L-r;Zgtqu;0~> -rVufrs&HQ.rDeFKJcD&9!36"u!33L-r;Zgtqu;0~> -rVujs!WZ5#\GuM-JcC<$PlL`_!W]7#\GuL-!35qrJ,~> -rVujs!WZ5#\GuM-JcC<$PlL`_!W]7#\GuL-!35qrJ,~> -rVujs!WZ5#\GuM-JcC<$PlL`_!W]7#\GuL-!35qrJ,~> -rVujs!WZ5#]`7u2s&FXMJcCc1"KDG% -rVujs!WZ5#]`7u2s&FXMJcCc1"KDG% -rVujs!WZ5#]`7u2s&FXMJcCc1"KDG% -rVujs!WZ5#]`7u2s&FXMJcCc1"KDG% -rVujs!WZ5#]`7u2s&FXMJcCc1"KDG% -rVujs!WZ5#]`7u2s&FXMJcCc1"KDG% -rVujs!WZ5#]`7u2s&FXMJcCc1"KDG% -rVujs!WZ5#]`7u2s&FXMJcCc1"KDG% -rVujs!WZ5#]`7u2s&FXMJcCc1"KDG% -rVujsrW'Y3!36"u!*+UMlMpkas&Hl7rVupuJcG*:s/Q#t^&J(4r;c]oJ,~> -rVujsrW'Y3!36"u!*+UMlMpkas&Hl7rVupuJcG*:s/Q#t^&J(4r;c]oJ,~> -rVujsrW'Y3!36"u!*+UMlMpkas&Hl7rVupuJcG*:s/Q#t^&J(4r;c]oJ,~> -rVuksrW'_5s/H&!ri1PLl2Uc`s/Nm7r`&ruJcFs6r`/rt_>aL8r;c]oJ,~> -rVuksrW'_5s/H&!ri1PLl2Uc`s/Nm7r`&ruJcFs6r`/rt_>aL8r;c]oJ,~> -rVuksrW'_5s/H&!ri1PLl2Uc`s/Nm7r`&ruJcFs6r`/rt_>aL8r;c]oJ,~> -rVuksrW'_5s/H&!ri1PLl2Uc`s/Nm7r`&ruJcFs6r`/rt_>aL8r;c]oJ,~> -rVuksrW'_5s/H&!ri1PLl2Uc`s/Nm7r`&ruJcFs6r`/rt_>aL8r;c]oJ,~> -rVuksrW'_5s/H&!ri1PLl2Uc`s/Nm7r`&ruJcFs6r`/rt_>aL8r;c]oJ,~> -qZ$Np_>jO8rr<&!JcC<$K)YgNrVuqu_Z'X:!<-!ps*t~> -qZ$Np_>jO8rr<&!JcC<$K)YgNrVuqu_Z'X:!<-!ps*t~> -qZ$Np_>jO8rr<&!JcC<$K)YgNrVuqu_Z'X:!<-!ps*t~> -qZ$Np_>jO8rr<&!JcC<$K)YgNrVuqu_Z'X:!<-!ps*t~> -qZ$Np_>jO8rr<&!JcC<$K)YgNrVuqu_Z'X:!<-!ps*t~> -qZ$Np_>jO8rr<&!JcC<$K)YgNrVuqu_Z'X:!<-!ps*t~> -qZ$Nps&I)=!35uts/LYMJcC<$!<<%u! -qZ$Nps&I)=!35uts/LYMJcC<$!<<%u! -qZ$Nps&I)=!35uts/LYMJcC<$!<<%u! -qZ$Nps&I)=!35uts/LYMJcC<$!<<%u! -qZ$Nps&I)=!35uts/LYMJcC<$!<<%u! -qZ$Nps&I)=!35uts/LYMJcC<$!<<%u! -qZ$Nps&I2@ri-#"UGprD`ita8c/>r`/gpJ,~> -qZ$Nps&I2@ri-#"UGprD`ita8c/>r`/gpJ,~> -qZ$Nps&I2@ri-#"UGprD`ita8c/>r`/gpJ,~> -qYp[u!!$#!b5VHArVuquJcC<$JcGECr`'""WiF;Cri5tup]#a~> -qYp[u!!$#!b5VHArVuquJcC<$JcGECr`'""WiF;Cri5tup]#a~> -qYp[u!!$#!b5VHArVuquJcC<$JcGECr`'""WiF;Cri5tup]#a~> -qYp[u!!$#!b5VHArVuquJcC<$JcGECr`'""WiF;Cri5tup]#a~> -qYp[u!!$#!b5VHArVuquJcC<$JcGECr`'""WiF;Cri5tup]#a~> -qYp[u!!$#!b5VHArVuquJcC<$JcGECr`'""WiF;Cri5tup]#a~> -qYp[u!!$#!b5VHArVuquJcC<$JcGECr`'""WiF;Cri5tup]#a~> -qYp[u!!$#!b5VHArVuquJcC<$JcGECr`'""WiF;Cri5tup]#a~> -qYp[u!!$#!b5VHArVuquJcC<$JcGECr`'""WiF;Cri5tup]#a~> -qYpOqr;b.Cri,u!%!**%Es8H$u!;HMD~> -qYpOqr;b.Cri,u!%!**%Es8H$u!;HMD~> -qYpOqr;b.Cri,u!%!**%Es8H$u!;HMD~> -q>^Bns&IJH!*0!u!*+UMJcC<$lMplarr<&!dJs2G! -q>^Bns&IJH!*0!u!*+UMJcC<$lMplarr<&!dJs2G! -q>^Bns&IJH!*0!u!*+UMJcC<$lMplarr<&!dJs2G! -q>^IprrE(!ec5ZLrr<%!JcC<$JcFg2s/H&!r`.JJr;Zgtp]#a~> -q>^IprrE(!ec5ZLrr<%!JcC<$JcFg2s/H&!r`.JJr;Zgtp]#a~> -q>^IprrE(!ec5ZLrr<%!JcC<$JcFg2s/H&!r`.JJr;Zgtp]#a~> -q>^IprrE(!ec5ZLrr<%!JcC<$JcFg2s/H&!r`.JJr;Zgtp]#a~> -q>^IprrE(!ec5ZLrr<%!JcC<$JcFg2s/H&!r`.JJr;Zgtp]#a~> -q>^IprrE(!ec5ZLrr<%!JcC<$JcFg2s/H&!r`.JJr;Zgtp]#a~> -q>^IprrE(!ec5ZLrr<%!JcC<$JcFg2s/H&!r`.JJr;Zgtp]#a~> -q>^IprrE(!ec5ZLrr<%!JcC<$JcFg2s/H&!r`.JJr;Zgtp]#a~> -q>^IprrE(!ec5ZLrr<%!JcC<$JcFg2s/H&!r`.JJr;Zgtp]#a~> -q>^Ipr;bLM#-(['!!'%!JcC<$JcF[.r`&t! -q>^Ipr;bLM#-(['!!'%!JcC<$JcF[.r`&t! -q>^Ipr;bLM#-(['!!'%!JcC<$JcF[.r`&t! -q>^Jpr;bUPr`'"" -q>^Jpr;bUPr`'"" -q>^Jpr;bUPr`'"" -q>^Jpr;bUPr`'"" -q>^Jpr;bUPr`'"" -q>^Jpr;bUPr`'"" -p](0l!*.nU!NH/!<<0%Ms+13$s4./K< -p](0l!*.nU!NH/!<<0%Ms+13$s4./K< -p](0l!*.nU!NH/!<<0%Ms+13$s4./K< -p](0l!*.nU!NH/!<<0%Ms+13$s4./K< -p](0l!*.nU!NH/!<<0%Ms+13$s4./K< -p](0l!*.nU!NH/!<<0%Ms+13$s4./K< -p](7nrr<%!ir9"Yr`&t!We(2$s+13ps8Q+!!<6'Xs8;ot -p](7nrr<%!ir9"Yr`&t!We(2$s+13ps8Q+!!<6'Xs8;ot -p](7nrr<%!ir9"Yr`&t!We(2$s+13ps8Q+!!<6'Xs8;ot -p](7nrr<%!ir9"Yr`&t!We(2$s+13ps8Q+!!<6'Xs8;ot -p](7nrr<%!ir9"Yr`&t!We(2$s+13ps8Q+!!<6'Xs8;ot -p](7nrr<%!ir9"Yr`&t!We(2$s+13ps8Q+!!<6'Xs8;ot -p](7nrW)*\s/Q*!!!*!uJcFL)s/Q)!s&G`lr;_EKgAh2Qs&B%!r`/.]s&K!tp&BO~> -p](7nrW)*\s/Q*!!!*!uJcFL)s/Q)!s&G`lr;_EKgAh2Qs&B%!r`/.]s&K!tp&BO~> -p](7nrW)*\s/Q*!!!*!uJcFL)s/Q)!s&G`lr;_EKgAh2Qs&B%!r`/.]s&K!tp&BO~> -p](8nrW)3_#-(['!!$#!kl:9TJcGWIs&K*!T`>!k!31VMr;ZespJq3mlMgjar`&t! -p](8nrW)3_#-(['!!$#!kl:9TJcGWIs&K*!T`>!k!31VMr;ZespJq3mlMgjar`&t! -p](8nrW)3_#-(['!!$#!kl:9TJcGWIs&K*!T`>!k!31VMr;ZespJq3mlMgjar`&t! -p](8nrW)3_#-(['!!$#!kl:9TJcGWIs&K*!T`>!k!31VMr;ZespJq3mlMgjar`&t! -p](8nrW)3_#-(['!!$#!kl:9TJcGWIs&K*!T`>!k!31VMr;ZespJq3mlMgjar`&t! -p](8nrW)3_#-(['!!$#!kl:9TJcGWIs&K*!T`>!k!31VMr;ZespJq3mlMgjar`&t! -p](8nrW)3_#-(['!!$#!kl:9TJcGWIs&K*!T`>!k!31VMr;ZespJq3mlMgjar`&t! -p](8nrW)3_#-(['!!$#!kl:9TJcGWIs&K*!T`>!k!31VMr;ZespJq3mlMgjar`&t! -p](8nrW)3_#-(['!!$#!kl:9TJcGWIs&K*!T`>!k!31VMr;ZespJq3mlMgjar`&t! -p&G!kr`/If!36#u!WZ5#r;Zbrqc3:hnl>5\r)E`sJcC<$[K$&&o`4P_oDn\equ6\s -p&G!kr`/If!36#u!WZ5#r;Zbrqc3:hnl>5\r)E`sJcC<$[K$&&o`4P_oDn\equ6\s -p&G!kr`/If!36#u!WZ5#r;Zbrqc3:hnl>5\r)E`sJcC<$[K$&&o`4P_oDn\equ6\s -p&G%l!!*!uo`+njrrE$Yr)NUoqc3Zrh#I1Mq>gIo!31VMJcEmmr)NXpq,RHph#@ASq,R:ls&K%Y -##tX' -p&G%l!!*!uo`+njrrE$Yr)NUoqc3Zrh#I1Mq>gIo!31VMJcEmmr)NXpq,RHph#@ASq,R:ls&K%Y -##tX' -p&G%l!!*!uo`+njrrE$Yr)NUoqc3Zrh#I1Mq>gIo!31VMJcEmmr)NXpq,RHph#@ASq,R:ls&K%Y -##tX' -p&G%lr;cZns/Q*!!!*!=!'0uXr)LT5s/Q#tquH^rs/LYMJcFL)r)N^rr)LT5ri5lrrW)s=rW)pt -q>^IprW)NhJ,~> -p&G%lr;cZns/Q*!!!*!=!'0uXr)LT5s/Q#tquH^rs/LYMJcFL)r)N^rr)LT5ri5lrrW)s=rW)pt -q>^IprW)NhJ,~> -p&G%lr;cZns/Q*!!!*!=!'0uXr)LT5s/Q#tquH^rs/LYMJcFL)r)N^rr)LT5ri5lrrW)s=rW)pt -q>^IprW)NhJ,~> -p&G%lr;cZns/Q*!!!*!=!'0uXr)LT5s/Q#tquH^rs/LYMJcFL)r)N^rr)LT5ri5lrrW)s=rW)pt -q>^IprW)NhJ,~> -p&G%lr;cZns/Q*!!!*!=!'0uXr)LT5s/Q#tquH^rs/LYMJcFL)r)N^rr)LT5ri5lrrW)s=rW)pt -q>^IprW)NhJ,~> -p&G%lr;cZns/Q*!!!*!=!'0uXr)LT5s/Q#tquH^rs/LYMJcFL)r)N^rr)LT5ri5lrrW)s=rW)pt -q>^IprW)NhJ,~> -p&G%lr;cZns/Q*!!!*!=!'0uXr)LT5s/Q#tquH^rs/LYMJcFL)r)N^rr)LT5ri5lrrW)s=rW)pt -q>^IprW)NhJ,~> -p&G%lr;cZns/Q*!!!*!=!'0uXr)LT5s/Q#tquH^rs/LYMJcFL)r)N^rr)LT5ri5lrrW)s=rW)pt -q>^IprW)NhJ,~> -p&G%lr;cZns/Q*!!!*!=!'0uXr)LT5s/Q#tquH^rs/LYMJcFL)r)N^rr)LT5ri5lrrW)s=rW)pt -q>^IprW)NhJ,~> -p&G&lr;ZhtrVljXqZ$UVrDg*%ri5rtr;cdrJcC<$l2Ud`r`/msrDg*%s/Q#tqu?^;ri5tts&K(! -!*/UiJ,~> -p&G&lr;ZhtrVljXqZ$UVrDg*%ri5rtr;cdrJcC<$l2Ud`r`/msrDg*%s/Q#tqu?^;ri5tts&K(! -!*/UiJ,~> -p&G&lr;ZhtrVljXqZ$UVrDg*%ri5rtr;cdrJcC<$l2Ud`r`/msrDg*%s/Q#tqu?^;ri5tts&K(! -!*/UiJ,~> -oDeah!=BkG!<4)>WhKImWr5ot!<#oKs+14Bs8K"u -oDeah!=BkG!<4)>WhKImWr5ot!<#oKs+14Bs8K"u -oDeah!=BkG!<4)>WhKImWr5ot!<#oKs+14Bs8K"u -oDeah!=BkG!<4)>WhKImWr5ot!<#oKs+14Bs8K"u -oDeah!=BkG!<4)>WhKImWr5ot!<#oKs+14Bs8K"u -oDeah!=BkG!<4)>WhKImWr5ot!<#oKs+14Bs8K"u -oD\ejr;Zg`MrDidr!`c8#PlCf*$4?_3nc++~> -oD\ejr;Zg`MrDidr!`c8#PlCf*$4?_3nc++~> -oD\ejr;Zg`MrDidr!`c8#PlCf*$4?_3nc++~> -oD\ejr;Zg`MrDidr!`c8#PlCf*$4?_3nc++~> -oD\ejr;Zg`MrDidr!`c8#PlCf*$4?_3nc++~> -oD\ejr;Zg`MrDidr!`c8#PlCf*$4?_3nc++~> -oD\fjr;ZhtNW9$Ys&K$ur`+OLM?!UUs&B%!rDegVs&K(!s&JUhJ,~> -oD\fjr;ZhtNW9$Ys&K$ur`+OLM?!UUs&B%!rDegVs&K(!s&JUhJ,~> -oD\fjr;ZhtNW9$Ys&K$ur`+OLM?!UUs&B%!rDegVs&K(!s&JUhJ,~> -oD\fjr;ZhtNW9$Ys&K$ur`+OLM?!UUs&B%!rDegVs&K(!s&JUhJ,~> -oD\fjr;ZhtNW9$Ys&K$ur`+OLM?!UUs&B%!rDegVs&K(!s&JUhJ,~> -oD\fjr;ZhtNW9$Ys&K$ur`+OLM?!UUs&B%!rDegVs&K(!s&JUhJ,~> -o)J\h!pu!*0#uJcCl4r`/sus&B'!M#[DRs&JUhJ,~> -o)J\h!pu!*0#uJcCl4r`/sus&B'!M#[DRs&JUhJ,~> -o)J\h!pu!*0#uJcCl4r`/sus&B'!M#[DRs&JUhJ,~> -o)J\hrr@]O!NK0!!<,uLs-`lfW`B#ur`+XO!*/stn,In~> -o)J\hrr@]O!NK0!!<,uLs-`lfW`B#ur`+XO!*/stn,In~> -o)J\hrr@]O!NK0!!<,uLs-`lfW`B#ur`+XO!*/stn,In~> -o)J\hrr@]O!NK0!!<,uLs-`lfW`B#ur`+XO!*/stn,In~> -o)J\hrr@]O!NK0!!<,uLs-`lfW`B#ur`+XO!*/stn,In~> -o)J\hrr@]O!NK0!!<,uLs-`lfW`B#ur`+XO!*/stn,In~> -o)J\hrr@]O!NK0!!<,uLs-`lfW`B#ur`+XO!*/stn,In~> -o)J\hrr@]O!NK0!!<,uLs-`lfW`B#ur`+XO!*/stn,In~> -o)J\hrr@]O!NK0!!<,uLs-`lfW`B#ur`+XO!*/stn,In~> -n,NCfr`+OLr`/sus&B'!f)PcMs&FXM!36#uec5SJ! -n,NCfr`+OLr`/sus&B'!f)PcMs&FXM!36#uec5SJ! -n,NCfr`+OLr`/sus&B'!f)PcMs&FXM!36#uec5SJ! -n,EDg!<,uLs8N&uWrH'!!<,suWnRLQ -n,EDg!<,uLs8N&uWrH'!!<,suWnRLQ -n,EDg!<,uLs8N&uWrH'!!<,suWnRLQ -n,EAfr;_EKq>^Fo! -n,EAfr;_EKq>^Fo! -n,EAfr;_EKq>^Fo! -n,EAfr;_EKq>^Fo! -n,EAfr;_EKq>^Fo! -n,EAfr;_EKq>^Fo! -n,EAfr;_EKq>^Fo! -n,EAfr;_EKq>^Fo! -n,EAfr;_EKq>^Fo! -mf34c!*+UMp\t8o -mf34c!*+UMp\t8o -mf34c!*+UMp\t8o -mf*8erVupuJcGECri-*$!!$#!JcEIari-!!!<,uLs7QBlWr2qtWpTh:~> -mf*8erVupuJcGECri-*$!!$#!JcEIari-!!!<,uLs7QBlWr2qtWpTh:~> -mf*8erVupuJcGECri-*$!!$#!JcEIari-!!!<,uLs7QBlWr2qtWpTh:~> -mf*8erVupuJcGECri-*$!!$#!JcEIari-!!!<,uLs7QBlWr2qtWpTh:~> -mf*8erVupuJcGECri-*$!!$#!JcEIari-!!!<,uLs7QBlWr2qtWpTh:~> -mf*8erVupuJcGECri-*$!!$#!JcEIari-!!!<,uLs7QBlWr2qtWpTh:~> -mf*9er;cktJcG?As/Q*!rr<%!JcE[gs/H'!rVupuJcG9?!*0!u!*/@bJ,~> -mf*9er;cktJcG?As/Q*!rr<%!JcE[gs/H'!rVupuJcG9?!*0!u!*/@bJ,~> -mf*9er;cktJcG?As/Q*!rr<%!JcE[gs/H'!rVupuJcG9?!*0!u!*/@bJ,~> -mf*9er;cktJcG?As/Q*!rr<%!JcE[gs/H'!rVupuJcG9?!*0!u!*/@bJ,~> -mf*9er;cktJcG?As/Q*!rr<%!JcE[gs/H'!rVupuJcG9?!*0!u!*/@bJ,~> -mf*9er;cktJcG?As/Q*!rr<%!JcE[gs/H'!rVupuJcG9?!*0!u!*/@bJ,~> -mJm+bs&FXMn,NEfrD`itJcEmms&K(!!*+UMmJm+b!*/@bJ,~> -mJm+bs&FXMn,NEfrD`itJcEmms&K(!!*+UMmJm+b!*/@bJ,~> -mJm+bs&FXMn,NEfrD`itJcEmms&K(!!*+UMmJm+b!*/@bJ,~> -mJm+bs&FXMn,NEfrD`itJcEmms&K(!!*+UMmJm+b!*/@bJ,~> -mJm+bs&FXMn,NEfrD`itJcEmms&K(!!*+UMmJm+b!*/@bJ,~> -mJm+bs&FXMn,NEfrD`itJcEmms&K(!!*+UMmJm+b!*/@bJ,~> -mJm/crW%NLm/R&b! -mJm/crW%NLm/R&b! -mJm/crW%NLm/R&b! -mJm0crW)tuJcG'9!NK0!3W9$Y -mJm0crW)tuJcG'9!NK0!3W9$Y -mJm0crW)tuJcG'9!NK0!3W9$Y -mJm0crW)tuJcG'9!NK0!3W9$Y -mJm0crW)tuJcG'9!NK0!3W9$Y -mJm0crW)tuJcG'9!NK0!3W9$Y -mJm0crW)tuJcG'9!NK0!3W9$Y -mJm0crW)tuJcG'9!NK0!3W9$Y -mJm0crW)tuJcG'9!NK0!3W9$Y -lMgue!!$#!JcG!7r`/jrs&B(!r`/suri1PLnc&Shr;chsquH^V!31VMlMpj`rrE%ulMlA~> -lMgue!!$#!JcG!7r`/jrs&B(!r`/suri1PLnc&Shr;chsquH^V!31VMlMpj`rrE%ulMlA~> -lMgue!!$#!JcG!7r`/jrs&B(!r`/suri1PLnc&Shr;chsquH^V!31VMlMpj`rrE%ulMlA~> -lMgjar;cktJcFs6!id7]p](;oJcG-;s&Jgo!',W1k5YE\! -lMgjar;cktJcFs6!id7]p](;oJcG-;s&Jgo!',W1k5YE\! -lMgjar;cktJcFs6!id7]p](;oJcG-;s&Jgo!',W1k5YE\! -l2Uc`rrE(!JcFj3ruLt:!31VMlMplaqZ$V:JcFm4!35tt!355^J,~> -l2Uc`rrE(!JcFj3ruLt:!31VMlMplaqZ$V:JcFm4!35tt!355^J,~> -l2Uc`rrE(!JcFj3ruLt:!31VMlMplaqZ$V:JcFm4!35tt!355^J,~> -l2Uc`rrE(!JcFj3ruLt:!31VMlMplaqZ$V:JcFm4!35tt!355^J,~> -l2Uc`rrE(!JcFj3ruLt:!31VMlMplaqZ$V:JcFm4!35tt!355^J,~> -l2Uc`rrE(!JcFj3ruLt:!31VMlMplaqZ$V:JcFm4!35tt!355^J,~> -l2Uc`rrE(!JcFj3ruLt:!31VMlMplaqZ$V:JcFm4!35tt!355^J,~> -l2Uc`rrE(!JcFj3ruLt:!31VMlMplaqZ$V:JcFm4!35tt!355^J,~> -l2Uc`rrE(!JcFj3ruLt:!31VMlMplaqZ$V:JcFm4!35tt!355^J,~> -l2Ud`r;ZhtJcFm4s&Jpr!',W1m/R*cq#CDpJcFm4!*0!u!*/1]J,~> -l2Ud`r;ZhtJcFm4s&Jpr!',W1m/R*cq#CDpJcFm4!*0!u!*/1]J,~> -l2Ud`r;ZhtJcFm4s&Jpr!',W1m/R*cq#CDpJcFm4!*0!u!*/1]J,~> -kPtQ^rr<%!JcFs6s&K!t!*/st!',W1mf*9eqZ$Urr;ZhtJcG!7s/Q"t!352]J,~> -kPtQ^rr<%!JcFs6s&K!t!*/st!',W1mf*9eqZ$Urr;ZhtJcG!7s/Q"t!352]J,~> -kPtQ^rr<%!JcFs6s&K!t!*/st!',W1mf*9eqZ$Urr;ZhtJcG!7s/Q"t!352]J,~> -kPtQ^rr<%!JcFs6s&K!t!*/st!',W1mf*9eqZ$Urr;ZhtJcG!7s/Q"t!352]J,~> -kPtQ^rr<%!JcFs6s&K!t!*/st!',W1mf*9eqZ$Urr;ZhtJcG!7s/Q"t!352]J,~> -kPtQ^rr<%!JcFs6s&K!t!*/st!',W1mf*9eqZ$Urr;ZhtJcG!7s/Q"t!352]J,~> -kPtR^rW)qtJcG*:!*/sts/H)!r`/sur],Q0o`+ojquHbs!<<$urrE%uJcG*:s&K!tjo9i~> -kPtR^rW)qtJcG*:!*/sts/H)!r`/sur],Q0o`+ojquHbs!<<$urrE%uJcG*:s&K!tjo9i~> -kPtR^rW)qtJcG*:!*/sts/H)!r`/sur],Q0o`+ojquHbs!<<$urrE%uJcG*:s&K!tjo9i~> -kPtR^rW)qtJcG*:!*/sts/H)!r`/sur],Q0o`+ojquHbs!<<$urrE%uJcG*:s&K!tjo9i~> -kPtR^rW)qtJcG*:!*/sts/H)!r`/sur],Q0o`+ojquHbs!<<$urrE%uJcG*:s&K!tjo9i~> -kPtR^rW)qtJcG*:!*/sts/H)!r`/sur],Q0o`+ojquHbs!<<$urrE%uJcG*:s&K!tjo9i~> -jo>?\!!*!uJcG3=ri5qts/Ptr!*/st!*+UMpAY,mqZ-Yrqu6[s!<,uLs6fpeWr<"t -jo>?\!!*!uJcG3=ri5qts/Ptr!*/st!*+UMpAY,mqZ-Yrqu6[s!<,uLs6fpeWr<"t -jo>?\!!*!uJcG3=ri5qts/Ptr!*/st!*+UMpAY,mqZ-Yrqu6[s!<,uLs6fpeWr<"t -jo>?\!!*!uJcG3=ri5qts/Ptr!*/st!*+UMpAY,mqZ-Yrqu6[s!<,uLs6fpeWr<"t -jo>?\!!*!uJcG3=ri5qts/Ptr!*/st!*+UMpAY,mqZ-Yrqu6[s!<,uLs6fpeWr<"t -jo>?\!!*!uJcG3=ri5qts/Ptr!*/st!*+UMpAY,mqZ-Yrqu6[s!<,uLs6fpeWr<"t -jo>?\r;ZhtJcG-;ri5bn!*0#ur`+OLq>UJq!<#ptWqcSo -jo>?\r;ZhtJcG-;ri5bn!*0#ur`+OLq>UJq!<#ptWqcSo -jo>?\r;ZhtJcG-;ri5bn!*0#ur`+OLq>UJq!<#ptWqcSo -j8]&X!*+UMh#ICSrrE)!Jc>`Mr`&t!We(3+s8T+t!!$$Ys*t~> -j8]&X!*+UMh#ICSrrE)!Jc>`Mr`&t!We(3+s8T+t!!$$Ys*t~> -j8]&X!*+UMh#ICSrrE)!Jc>`Mr`&t!We(3+s8T+t!!$$Ys*t~> -j8]&X!*+UMh#ICSrrE)!Jc>`Mr`&t!We(3+s8T+t!!$$Ys*t~> -j8]&X!*+UMh#ICSrrE)!Jc>`Mr`&t!We(3+s8T+t!!$$Ys*t~> -j8]&X!*+UMh#ICSrrE)!Jc>`Mr`&t!We(3+s8T+t!!$$Ys*t~> -j8]&X!*+UMh#ICSrrE)!Jc>`Mr`&t!We(3+s8T+t!!$$Ys*t~> -j8]&X!*+UMh#ICSrrE)!Jc>`Mr`&t!We(3+s8T+t!!$$Ys*t~> -j8]&X!*+UMh#ICSrrE)!Jc>`Mr`&t!We(3+s8T+t!!$$Ys*t~> -j8T*Zr;ZhtJcFL)s&K(!!31YNrD`itJcFO*s&K!tiW"E~> -j8T*Zr;ZhtJcFL)s&K(!!31YNrD`itJcFO*s&K!tiW"E~> -j8T*Zr;ZhtJcFL)s&K(!!31YNrD`itJcFO*s&K!tiW"E~> -irArW!*+UMg&M)P!!*"uL]@?RJcFC&r;cjtiW"E~> -irArW!*+UMg&M)P!!*"uL]@?RJcFC&r;cjtiW"E~> -irArW!*+UMg&M)P!!*"uL]@?RJcFC&r;cjtiW"E~> -irB!XrrE%uJcFI(!36"u!31qVrDeFKf`(qOr;baTJ,~> -irB!XrrE%uJcFI(!36"u!31qVrDeFKf`(qOr;baTJ,~> -irB!XrrE%uJcFI(!36"u!31qVrDeFKf`(qOr;baTJ,~> -irB!XrrE%uJcFI(!36"u!31qVrDeFKf`(qOr;baTJ,~> -irB!XrrE%uJcFI(!36"u!31qVrDeFKf`(qOr;baTJ,~> -irB!XrrE%uJcFI(!36"u!31qVrDeFKf`(qOr;baTJ,~> -irB!XrrE%uJcFI(!36"u!31qVrDeFKf`(qOr;baTJ,~> -irB!XrrE%uJcFI(!36"u!31qVrDeFKf`(qOr;baTJ,~> -irB!XrrE%uJcFI(!36"u!31qVrDeFKf`(qOr;baTJ,~> -huE]Vr`+OLg&M&O!rKs4RGOWr<"u -huE]Vr`+OLg&M&O!rKs4RGOWr<"u -huE]Vr`+OLg&M&O!rKs4RGOWr<"u -hu<[Vr;ZhtJcF@%!NH/!Wfd>\ -hu<[Vr;ZhtJcF@%!NH/!Wfd>\ -hu<[Vr;ZhtJcF@%!NH/!Wfd>\ -hu<[Vr;ZhtJcF@%!NH/!Wfd>\ -hu<[Vr;ZhtJcF@%!NH/!Wfd>\ -hu<[Vr;ZhtJcF@%!NH/!Wfd>\ -hZ!RUrVupuJcF=$!36"u!32=arDeFKf)G`Mr;ckth>`!~> -hZ!RUrVupuJcF=$!36"u!32=arDeFKf)G`Mr;ckth>`!~> -hZ!RUrVupuJcF=$!36"u!32=arDeFKf)G`Mr;ckth>`!~> -hZ!RUrVupuJcF=$!36"u!32=arDeFKf)G`Mr;ckth>`!~> -hZ!RUrVupuJcF=$!36"u!32=arDeFKf)G`Mr;ckth>`!~> -hZ!RUrVupuJcF=$!36"u!32=arDeFKf)G`Mr;ckth>`!~> -hZ!SUr;cjtJcF@%ri-#"WiDHdrDeFKec5RJ!*.eRJ,~> -hZ!SUr;cjtJcF@%ri-#"WiDHdrDeFKec5RJ!*.eRJ,~> -hZ!SUr;cjtJcF@%ri-#"WiDHdrDeFKec5RJ!*.eRJ,~> -hZ!SUr;cjtJcF@%ri-#"WiDHdrDeFKec5RJ!*.eRJ,~> -hZ!SUr;cjtJcF@%ri-#"WiDHdrDeFKec5RJ!*.eRJ,~> -hZ!SUr;cjtJcF@%ri-#"WiDHdrDeFKec5RJ!*.eRJ,~> -h>dISrW)tuJcF=$"KDG%WiDQgs&FXMe,KDJr;Zhtg])d~> -h>dISrW)tuJcF=$"KDG%WiDQgs&FXMe,KDJr;Zhtg])d~> -h>dISrW)tuJcF=$"KDG%WiDQgs&FXMe,KDJr;Zhtg])d~> -gAh-Ps&FXMec5ZLrrE)!T`=sjJcF:#ri5tur`.\PJ,~> -gAh-Ps&FXMec5ZLrrE)!T`=sjJcF:#ri5tur`.\PJ,~> -gAh-Ps&FXMec5ZLrrE)!T`=sjJcF:#ri5tur`.\PJ,~> -gAh-Ps&FXMec5ZLrrE)!T`=sjJcF:#ri5tur`.\PJ,~> -gAh-Ps&FXMec5ZLrrE)!T`=sjJcF:#ri5tur`.\PJ,~> -gAh-Ps&FXMec5ZLrrE)!T`=sjJcF:#ri5tur`.\PJ,~> -gAh-Ps&FXMec5ZLrrE)!T`=sjJcF:#ri5tur`.\PJ,~> -gAh-Ps&FXMec5ZLrrE)!T`=sjJcF:#ri5tur`.\PJ,~> -gAh-Ps&FXMec5ZLrrE)!T`=sjJcF:#ri5tur`.\PJ,~> -gA_.Qr;cktJcF:#s/Q)!!32dnrDeFKeGoMJrrC[NJ,~> -gA_.Qr;cktJcF:#s/Q)!!32dnrDeFKeGoMJrrC[NJ,~> -gA_.Qr;cktJcF:#s/Q)!!32dnrDeFKeGoMJrrC[NJ,~> -g&M(Pr;_EKe,THJ!!*"uVuQcs!!%TMdf0 -g&M(Pr;_EKe,THJ!!*"uVuQcs!!%TMdf0 -g&M(Pr;_EKe,THJ!!*"uVuQcs!!%TMdf0 -g&M)Pr;ZgtJcF0urDfiss/Q)!!31VMdf97G!*.VMJ,~> -g&M)Pr;ZgtJcF0urDfiss/Q)!!31VMdf97G!*.VMJ,~> -g&M)Pr;ZgtJcF0urDfiss/Q)!!31VMdf97G!*.VMJ,~> -g&M)Pr;ZgtJcF0urDfiss/Q)!!31VMdf97G!*.VMJ,~> -g&M)Pr;ZgtJcF0urDfiss/Q)!!31VMdf97G!*.VMJ,~> -g&M)Pr;ZgtJcF0urDfiss/Q)!!31VMdf97G!*.VMJ,~> -g&M)Pr;ZgtJcF0urDfiss/Q)!!31VMdf97G!*.VMJ,~> -g&M)Pr;ZgtJcF0urDfiss/Q)!!31VMdf97G!*.VMJ,~> -g&M)Pr;ZgtJcF0urDfiss/Q)!!31VMdf97G!*.VMJ,~> -fDkkNrW)qtJcF7"rDfs!s/Q)!s/LYMe,TGJr;Zhtf)L7~> -fDkkNrW)qtJcF7"rDfs!s/Q)!s/LYMe,TGJr;Zhtf)L7~> -fDkkNrW)qtJcF7"rDfs!s/Q)!s/LYMe,TGJr;Zhtf)L7~> -ec5UKr`+OLdJs5HXoJD$s&FXMe,THJrW)ptec1.~> -ec5UKr`+OLdJs5HXoJD$s&FXMe,THJrW)ptec1.~> -ec5UKr`+OLdJs5HXoJD$s&FXMe,THJrW)ptec1.~> -ec5UKr`+OLdJs5HXoJD$s&FXMe,THJrW)ptec1.~> -ec5UKr`+OLdJs5HXoJD$s&FXMe,THJrW)ptec1.~> -ec5UKr`+OLdJs5HXoJD$s&FXMe,THJrW)ptec1.~> -ec5ZLr;ZhtJcF0u!NH/!Wj2U' -ec5ZLr;ZhtJcF0u!NH/!Wj2U' -ec5ZLr;ZhtJcF0u!NH/!Wj2U' -ec5ZLr;ZhtJcF0u!NH/!Wj2U' -ec5ZLr;ZhtJcF0u!NH/!Wj2U' -ec5ZLr;ZhtJcF0u!NH/!Wj2U' -e,KDJr;_EKdJj3HrVuqu[K$2*JcF-ts&K!t!34KIJ,~> -e,KDJr;_EKdJj3HrVuqu[K$2*JcF-ts&K!t!34KIJ,~> -e,KDJr;_EKdJj3HrVuqu[K$2*JcF-ts&K!t!34KIJ,~> -e,KDJr;_EKdJj3HrVuqu[K$2*JcF-ts&K!t!34KIJ,~> -e,KDJr;_EKdJj3HrVuqu[K$2*JcF-ts&K!t!34KIJ,~> -e,KDJr;_EKdJj3HrVuqu[K$2*JcF-ts&K!t!34KIJ,~> -e,KEJr;ZgtJcF-tri,qu[f6>-rW%NLdJj3Hr;cjtdJn^~> -e,KEJr;ZgtJcF-tri,qu[f6>-rW%NLdJj3Hr;cjtdJn^~> -e,KEJr;ZgtJcF-tri,qu[f6>-rW%NLdJj3Hr;cjtdJn^~> -df9;HrrE$uJcF-tr`-N/!NH/!We(2ts82lCs*t~> -df9;HrrE$uJcF-tr`-N/!NH/!We(2ts82lCs*t~> -df9;HrrE$uJcF-tr`-N/!NH/!We(2ts82lCs*t~> -df9;HrrE$uJcF-tr`-N/!NH/!We(2ts82lCs*t~> -df9;HrrE$uJcF-tr`-N/!NH/!We(2ts82lCs*t~> -df9;HrrE$uJcF-tr`-N/!NH/!We(2ts82lCs*t~> -df9;HrrE$uJcF-tr`-N/!NH/!We(2ts82lCs*t~> -df9;HrrE$uJcF-tr`-N/!NH/!We(2ts82lCs*t~> -df9;HrrE$uJcF-tr`-N/!NH/!We(2ts82lCs*t~> -ci3uFr;ZhtJcF-trrE)!]Dqn2JcF-tr`/pts/OEFJ,~> -ci3uFr;ZhtJcF-trrE)!]Dqn2JcF-tr`/pts/OEFJ,~> -ci3uFr;ZhtJcF-trrE)!]Dqn2JcF-tr`/pts/OEFJ,~> -cN!eBJcF-ts/Q)!^An.3JcF-t!*/sts&I>DJ,~> -cN!eBJcF-ts/Q)!^An.3JcF-t!*/sts&I>DJ,~> -cN!eBJcF-ts/Q)!^An.3JcF-t!*/sts&I>DJ,~> -cMmmEr;cjtJcF-trDg]6!36"u!31VMdf0 -cMmmEr;cjtJcF-trDg]6!36"u!31VMdf0 -cMmmEr;cjtJcF-trDg]6!36"u!31VMdf0 -cMmmEr;cjtJcF-trDg]6!36"u!31VMdf0 -cMmmEr;cjtJcF-trDg]6!36"u!31VMdf0 -cMmmEr;cjtJcF-trDg]6!36"u!31VMdf0 -cMmmEr;cjtJcF-trDg]6!36"u!31VMdf0 -cMmmEr;cjtJcF-trDg]6!36"u!31VMdf0 -cMmmEr;cjtJcF-trDg]6!36"u!31VMdf0 -c2[cCrW)suJcF-trr<%!_Z0R7JcF-tquFn>J,~> -c2[cCrW)suJcF-trr<%!_Z0R7JcF-tquFn>J,~> -c2[cCrW)suJcF-trr<%!_Z0R7JcF-tquFn>J,~> -b5VHAr;cktJcF4!s/H&!ri4$=r`+OLdJs2GrrE%ub5Zt~> -b5VHAr;cktJcF4!s/H&!ri4$=r`+OLdJs2GrrE%ub5Zt~> -b5VHAr;cktJcF4!s/H&!ri4$=r`+OLdJs2GrrE%ub5Zt~> -b5VHAr;cktJcF4!s/H&!ri4$=r`+OLdJs2GrrE%ub5Zt~> -b5VHAr;cktJcF4!s/H&!ri4$=r`+OLdJs2GrrE%ub5Zt~> -b5VHAr;cktJcF4!s/H&!ri4$=r`+OLdJs2GrrE%ub5Zt~> -aoD5s/Q)!!31VMdf0 -aoD5s/Q)!!31VMdf0 -aoD5s/Q)!!31VMdf0 -aoD5s/Q)!!31VMdf0 -aoD5s/Q)!!31VMdf0 -aoD5s/Q)!!31VMdf0 -aoDC@r;ZgtJcF-trDh#?rDeFKe,THJr;Zgt`rCP~> -aoDC@r;ZgtJcF-trDh#?rDeFKe,THJr;Zgt`rCP~> -aoDC@r;ZgtJcF-trDh#?rDeFKe,THJr;Zgt`rCP~> -aoDC@r;ZgtJcF-trDh#?rDeFKe,THJr;Zgt`rCP~> -aoDC@r;ZgtJcF-trDh#?rDeFKe,THJr;Zgt`rCP~> -aoDC@r;ZgtJcF-trDh#?rDeFKe,THJr;Zgt`rCP~> -a8c0>rW)ptJcF7"ri,qubl@WAJcF-ts&K!t`W(G~> -a8c0>rW)ptJcF7"ri,qubl@WAJcF-ts&K!t`W(G~> -a8c0>rW)ptJcF7"ri,qubl@WAJcF-ts&K!t`W(G~> -`W,sDrrE)!JcF4!s&K$uri3s;J,~> -`W,sDrrE)!JcF4!s&K$uri3s;J,~> -`W,sDrrE)!JcF4!s&K$uri3s;J,~> -`W,sDrrE)!JcF4!s&K$uri3s;J,~> -`W,sDrrE)!JcF4!s&K$uri3s;J,~> -`W,sDrrE)!JcF4!s&K$uri3s;J,~> -`W,sDrrE)!JcF4!s&K$uri3s;J,~> -`W,sDrrE)!JcF4!s&K$uri3s;J,~> -`W,sDrrE)!JcF4!s&K$uri3s;J,~> -_uKW7!31VMe,KHK!<0"Gs8H#Ls3q#J -_uKW7!31VMe,KHK!<0"Gs8H#Ls3q#J -_uKW7!31VMe,KHK!<0"Gs8H#Ls3q#J -_uB_:quD -_uB_:quD -_uB_:quD -_Z0V8rrE$uJcF7"rVuquec5SJJcF:#ri5qts&Hi6J,~> -_Z0V8rrE$uJcF7"rVuquec5SJJcF:#ri5qts&Hi6J,~> -_Z0V8rrE$uJcF7"rVuquec5SJJcF:#ri5qts&Hi6J,~> -_Z0V8rrE$uJcF7"rVuquec5SJJcF:#ri5qts&Hi6J,~> -_Z0V8rrE$uJcF7"rVuquec5SJJcF:#ri5qts&Hi6J,~> -_Z0V8rrE$uJcF7"rVuquec5SJJcF:#ri5qts&Hi6J,~> -_Z0V8rrE$uJcF7"rVuquec5SJJcF:#ri5qts&Hi6J,~> -_Z0V8rrE$uJcF7"rVuquec5SJJcF:#ri5qts&Hi6J,~> -_Z0V8rrE$uJcF7"rVuquec5SJJcF:#ri5qts&Hi6J,~> -^]+;6r;ZgtJcF:#rDhGK!36"uJcF:#!35tts&Hc4J,~> -^]+;6r;ZgtJcF:#rDhGK!36"uJcF:#!35tts&Hc4J,~> -^]+;6r;ZgtJcF:#rDhGK!36"uJcF:#!35tts&Hc4J,~> -^Ae25r;cjtJcF7"r`.VN!!*!uJcF=$!35qs]DmB~> -^Ae25r;cjtJcF7"r`.VN!!*!uJcF=$!35qs]DmB~> -^Ae25r;cjtJcF7"r`.VN!!*!uJcF=$!35qs]DmB~> -^Ae25r;cjtJcF7"r`.VN!!*!uJcF=$!35qs]DmB~> -^Ae25r;cjtJcF7"r`.VN!!*!uJcF=$!35qs]DmB~> -^Ae25r;cjtJcF7"r`.VN!!*!uJcF=$!35qs]DmB~> -^&S(3rW)suJcF=$!ic5#g&D(Q!.k1$s8K%r!!'%2s*t~> -^&S(3rW)suJcF=$!ic5#g&D(Q!.k1$s8K%r!!'%2s*t~> -^&S(3rW)suJcF=$!ic5#g&D(Q!.k1$s8K%r!!'%2s*t~> -^&S(3rW)suJcF=$!ic5#g&D(Q!.k1$s8K%r!!'%2s*t~> -^&S(3rW)suJcF=$!ic5#g&D(Q!.k1$s8K%r!!'%2s*t~> -^&S(3rW)suJcF=$!ic5#g&D(Q!.k1$s8K%r!!'%2s*t~> -])Mb1r;cjtJcF@%rDhVPs&FXMf)PXJri3R0J,~> -])Mb1r;cjtJcF@%rDhVPs&FXMf)PXJri3R0J,~> -])Mb1r;cjtJcF@%rDhVPs&FXMf)PXJri3R0J,~> -])Mb1r;cjtJcF@%rDhVPs&FXMf)PXJri3R0J,~> -])Mb1r;cjtJcF@%rDhVPs&FXMf)PXJri3R0J,~> -])Mb1r;cjtJcF@%rDhVPs&FXMf)PXJri3R0J,~> -\c;\0r;ZhtJcFC&rDh_Sri,quJcF=$!*/st!33O.J,~> -\c;\0r;ZhtJcFC&rDh_Sri,quJcF=$!*/st!33O.J,~> -\c;\0r;ZhtJcFC&rDh_Sri,quJcF=$!*/st!33O.J,~> -\,ZJ.rW)qtJcFF'rrE)!i;`aUJcFC&s&K!t!33L-J,~> -\,ZJ.rW)qtJcFF'rrE)!i;`aUJcFC&s&K!t!33L-J,~> -\,ZJ.rW)qtJcFF'rrE)!i;`aUJcFC&s&K!t!33L-J,~> -\,ZJ.rW)qtJcFF'rrE)!i;`aUJcFC&s&K!t!33L-J,~> -\,ZJ.rW)qtJcFF'rrE)!i;`aUJcFC&s&K!t!33L-J,~> -\,ZJ.rW)qtJcFF'rrE)!i;`aUJcFC&s&K!t!33L-J,~> -\,ZJ.rW)qtJcFF'rrE)!i;`aUJcFC&s&K!t!33L-J,~> -\,ZJ.rW)qtJcFF'rrE)!i;`aUJcFC&s&K!t!33L-J,~> -\,ZJ.rW)qtJcFF'rrE)!i;`aUJcFC&s&K!t!33L-J,~> -[K$8,r;ZhtJcFI(rDhhV!36"uJcFF's&K$uri3C+J,~> -[K$8,r;ZhtJcFI(rDhhV!36"uJcFF's&K$uri3C+J,~> -[K$8,r;ZhtJcFI(rDhhV!36"uJcFF's&K$uri3C+J,~> -ZiBq'!31VMg&M'P!35&YrDeFKg].:Rr;ZgtZN#F~> -ZiBq'!31VMg&M'P!35&YrDeFKg].:Rr;ZgtZN#F~> -ZiBq'!31VMg&M'P!35&YrDeFKg].:Rr;ZgtZN#F~> -Zi:$*quH_rJcFO*r`/%Zs/H&!JcFF'!*/sts&H?(J,~> -Zi:$*quH_rJcFO*r`/%Zs/H&!JcFF'!*/sts&H?(J,~> -Zi:$*quH_rJcFO*r`/%Zs/H&!JcFF'!*/sts&H?(J,~> -Zi:$*quH_rJcFO*r`/%Zs/H&!JcFF'!*/sts&H?(J,~> -Zi:$*quH_rJcFO*r`/%Zs/H&!JcFF'!*/sts&H?(J,~> -Zi:$*quH_rJcFO*r`/%Zs/H&!JcFF'!*/sts&H?(J,~> -Zi:$*quH_rJcFO*r`/%Zs/H&!JcFF'!*/sts&H?(J,~> -Zi:$*quH_rJcFO*r`/%Zs/H&!JcFF'!*/sts&H?(J,~> -Zi:$*quH_rJcFO*r`/%Zs/H&!JcFF'!*/sts&H?(J,~> -ZN'p(qu?_sJcFL)!!*"ukPtN]JcFO*r`/pts&H9&J,~> -ZN'p(qu?_sJcFL)!!*"ukPtN]JcFO*r`/pts&H9&J,~> -ZN'p(qu?_sJcFL)!!*"ukPtN]JcFO*r`/pts&H9&J,~> -YQ"X's\s8N'!We(3+rr?'t!<6'$s*t~> -YQ"X's\s8N'!We(3+rr?'t!<6'$s*t~> -YQ"X's\s8N'!We(3+rr?'t!<6'$s*t~> -YQ"X's\s8N'!We(3+rr?'t!<6'$s*t~> -YQ"X's\s8N'!We(3+rr?'t!<6'$s*t~> -YQ"X's\s8N'!We(3+rr?'t!<6'$s*t~> -XoJB#rW)suJcFX-!36"ul2U]^JcF[.ri5kr!33+"J,~> -XoJB#rW)suJcFX-!36"ul2U]^JcF[.ri5kr!33+"J,~> -XoJB#rW)suJcFX-!36"ul2U]^JcF[.ri5kr!33+"J,~> -XoJB#rW)suJcFX-!36"ul2U]^JcF[.ri5kr!33+"J,~> -XoJB#rW)suJcFX-!36"ul2U]^JcF[.ri5kr!33+"J,~> -XoJB#rW)suJcFX-!36"ul2U]^JcF[.ri5kr!33+"J,~> -WrE'!r;cjtJcF[.rDi._rDeFKiVrnXquH_rWrIS~> -WrE'!r;cjtJcF[.rDi._rDeFKiVrnXquH_rWrIS~> -WrE'!r;cjtJcF[.rDi._rDeFKiVrnXquH_rWrIS~> -WrE'!r;cjtJcF[.rDi._rDeFKiVrnXquH_rWrIS~> -WrE'!r;cjtJcF[.rDi._rDeFKiVrnXquH_rWrIS~> -WrE'!r;cjtJcF[.rDi._rDeFKiVrnXquH_rWrIS~> -WW2uur;ZgtJcF^/rDi4as/Q)!JcF^/s/Pts!32ssJ,~> -WW2uur;ZgtJcF^/rDi4as/Q)!JcF^/s/Pts!32ssJ,~> -WW2uur;ZgtJcF^/rDi4as/Q)!JcF^/s/Pts!32ssJ,~> -VuQcsrW)ptJcF^/!rKs5X.ZWqubrWi#fH~> -VuQcsrW)ptJcF^/!rKs5X.ZWqubrWi#fH~> -VuQcsrW)ptJcF^/!rKs5X.ZWqubrWi#fH~> -VuQcsrW)ptJcF^/!rKs5X.ZWqubrWi#fH~> -VuQcsrW)ptJcF^/!rKs5X.ZWqubrWi#fH~> -VuQcsrW)ptJcF^/!rKs5X.ZWqubrWi#fH~> -VuQcsrW)ptJcF^/!rKs5X.ZWqubrWi#fH~> -VuQcsrW)ptJcF^/!rKs5X.ZWqubrWi#fH~> -VuQcsrW)ptJcF^/!rKs5X.ZWqubrWi#fH~> -V>pQqr;ZjuWe(31s8Q*ds8N*!We(33s8T+s!<0!ps*t~> -V>pQqr;ZjuWe(31s8Q*ds8N*!We(33s8T+s!<0!ps*t~> -V>pQqr;ZjuWe(31s8Q*ds8N*!We(33s8T+s!<0!ps*t~> -U]1=oquH_rJcFm4!NH.frrT2#!.k12rr?'t!<6&ms*t~> -U]1=oquH_rJcFm4!NH.frrT2#!.k12rr?'t!<6&ms*t~> -U]1=oquH_rJcFm4!NH.frrT2#!.k12rr?'t!<6&ms*t~> -UAt4mqu?_sJcFm4!!*"unc/SgJcFp5r`/pts&G]kJ,~> -UAt4mqu?_sJcFm4!!*"unc/SgJcFp5r`/pts&G]kJ,~> -UAt4mqu?_sJcFm4!!*"unc/SgJcFp5r`/pts&G]kJ,~> -UAt4mqu?_sJcFm4!!*"unc/SgJcFp5r`/pts&G]kJ,~> -UAt4mqu?_sJcFm4!!*"unc/SgJcFp5r`/pts&G]kJ,~> -UAt4mqu?_sJcFm4!!*"unc/SgJcFp5r`/pts&G]kJ,~> -UAt4mqu?_sJcFm4!!*"unc/SgJcFp5r`/pts&G]kJ,~> -UAt4mqu?_sJcFm4!!*"unc/SgJcFp5r`/pts&G]kJ,~> -UAt4mqu?_sJcFm4!!*"unc/SgJcFp5r`/pts&G]kJ,~> -TDnnkquHasJcFs6rDiCf!W]7#JcG!7!35qss&GWiJ,~> -TDnnkquHasJcFs6rDiCf!W]7#JcG!7!35qss&GWiJ,~> -TDnnkquHasJcFs6rDiCf!W]7#JcG!7!35qss&GWiJ,~> -T)Sejr`/pts&K*!JcG*:rDiLiri,quJcG$8r`/jr!*,NgJ,~> -T)Sejr`/pts&K*!JcG*:rDiLiri,quJcG$8r`/jr!*,NgJ,~> -T)Sejr`/pts&K*!JcG*:rDiLiri,quJcG$8r`/jr!*,NgJ,~> -T)Sejr`/pts&K*!JcG*:rDiLiri,quJcG$8r`/jr!*,NgJ,~> -T)Sejr`/pts&K*!JcG*:rDiLiri,quJcG$8r`/jr!*,NgJ,~> -T)Sejr`/pts&K*!JcG*:rDiLiri,quJcG$8r`/jr!*,NgJ,~> -Rf<@fqZ$VrJcG*:rW)TjrDeFKli-rbquH_rRf@m~> -Rf<@fqZ$VrJcG*:rW)TjrDeFKli-rbquH_rRf@m~> -Rf<@fqZ$VrJcG*:rW)TjrDeFKli-rbquH_rRf@m~> -Rf<@fqZ$VrJcG*:rW)TjrDeFKli-rbquH_rRf@m~> -Rf<@fqZ$VrJcG*:rW)TjrDeFKli-rbquH_rRf@m~> -Rf<@fqZ$VrJcG*:rW)TjrDeFKli-rbquH_rRf@m~> -RK*;equH^rJcG3=rDiOjrVuquJcG3=s/Pqr!*,?bJ,~> -RK*;equH^rJcG3=rDiOjrVuquJcG3=s/Pqr!*,?bJ,~> -RK*;equH^rJcG3=rDiOjrVuquJcG3=s/Pqr!*,?bJ,~> -RK*;equH^rJcG3=rDiOjrVuquJcG3=s/Pqr!*,?bJ,~> -RK*;equH^rJcG3=rDiOjrVuquJcG3=s/Pqr!*,?bJ,~> -RK*;equH^rJcG3=rDiOjrVuquJcG3=s/Pqr!*,?bJ,~> -Q2gkar;ZjuWe(3?s8>sjs8E"Ls7$'g -Q2gkar;ZjuWe(3?s8>sjs8E"Ls7$'g -Q2gkar;ZjuWe(3?s8>sjs8E"Ls7$'g -PQ(V_quH_rJcG9?!!)`mrDeFKnc&ShqZ$VrP5g%~> -PQ(V_quH_rJcG9?!!)`mrDeFKnc&ShqZ$VrP5g%~> -PQ(V_quH_rJcG9?!!)`mrDeFKnc&ShqZ$VrP5g%~> -PQ(V_quH_rJcG9?!!)`mrDeFKnc&ShqZ$VrP5g%~> -PQ(V_quH_rJcG9?!!)`mrDeFKnc&ShqZ$VrP5g%~> -PQ(V_quH_rJcG9?!!)`mrDeFKnc&ShqZ$VrP5g%~> -PQ(V_quH_rJcG9?!!)`mrDeFKnc&ShqZ$VrP5g%~> -PQ(V_quH_rJcG9?!!)`mrDeFKnc&ShqZ$VrP5g%~> -PQ(V_quH_rJcG9?!!)`mrDeFKnc&ShqZ$VrP5g%~> -P5kN]qu?^sJcG<@!W]7#q#C:mJcGEC!35nrs&G-[J,~> -P5kN]qu?^sJcG<@!W]7#q#C:mJcGEC!35nrs&G-[J,~> -P5kN]qu?^sJcG<@!W]7#q#C:mJcGEC!35nrs&G-[J,~> -NrK)Zr;cjts/LYMpAb+lq#: -NrK)Zr;cjts/LYMpAb+lq#: -NrK)Zr;cjts/LYMpAb+lq#: -NW8uXquHasJcGNFr`/do!NH-Ns7cNnWr?#r!!'$Ws*t~> -NW8uXquHasJcGNFr`/do!NH-Ns7cNnWr?#r!!'$Ws*t~> -NW8uXquHasJcGNFr`/do!NH-Ns7cNnWr?#r!!'$Ws*t~> -NW8uXquHasJcGNFr`/do!NH-Ns7cNnWr?#r!!'$Ws*t~> -NW8uXquHasJcGNFr`/do!NH-Ns7cNnWr?#r!!'$Ws*t~> -NW8uXquHasJcGNFr`/do!NH-Ns7cNnWr?#r!!'$Ws*t~> -NW8uXquHasJcGNFr`/do!NH-Ns7cNnWr?#r!!'$Ws*t~> -NW8uXquHasJcGNFr`/do!NH-Ns7cNnWr?#r!!'$Ws*t~> -NW8uXquHasJcGNFr`/do!NH-Ns7cNnWr?#r!!'$Ws*t~> -MZ3[Vq>gMpJcGWIrrDlps&FXMq>^Ipqu?^sL];l~> -MZ3[Vq>gMpJcGWIrrDlps&FXMq>^Ipqu?^sL];l~> -MZ3[Vq>gMpJcGWIrrDlps&FXMq>^Ipqu?^sL];l~> -L]@BSqZ$XsWe(3Ks8N*!Wr)hr -L]@BSqZ$XsWe(3Ks8N*!Wr)hr -L]@BSqZ$XsWe(3Ks8N*!Wr)hr -L]@BSqZ$XsWe(3Ks8N*!Wr)hr -L]@BSqZ$XsWe(3Ks8N*!Wr)hr -L]@BSqZ$XsWe(3Ks8N*!Wr)hr -L&_1Q!*/psr`+OL!< -L&_1Q!*/psr`+OL!< -L&_1Q!*/psr`+OL!< -L&_1Q!*/psr`+OL!< -L&_1Q!*/psr`+OL!< -L&_1Q!*/psr`+OL!< -K)bhMqZ-YrKE(mMqu6WrJc>^MqZ-XrJcGcMJ,~> -K)bhMqZ-YrKE(mMqu6WrJc>^MqZ-XrJcGcMJ,~> -K)bhMqZ-YrKE(mMqu6WrJc>^MqZ-XrJcGcMJ,~> -K)bhMqZ-YrKE(mMqu6WrJc>^MqZ-XrJcGcMJ,~> -K)bhMqZ-YrKE(mMqu6WrJc>^MqZ-XrJcGcMJ,~> -K)bhMqZ-YrKE(mMqu6WrJc>^MqZ-XrJcGcMJ,~> -JcG`L!*/mrs&K*!L]@CSrrE&ur`&puL&_-Pqu?duWiCXMrVqB~> -JcG`L!*/mrs&K*!L]@CSrrE&ur`&puL&_-Pqu?duWiCXMrVqB~> -JcG`L!*/mrs&K*!L]@CSrrE&ur`&puL&_-Pqu?duWiCXMrVqB~> -JcG]Kri,ruqZ$UrLB%8Rrr;psM#[LT!*/psr`+OLqYu'~> -JcG]Kri,ruqZ$UrLB%8Rrr;psM#[LT!*/psr`+OLqYu'~> -JcG]Kri,ruqZ$UrLB%8Rrr;psM#[LT!*/psr`+OLqYu'~> -JcG]Kri,ruqZ$UrLB%8Rrr;psM#[LT!*/psr`+OLqYu'~> -JcG]Kri,ruqZ$UrLB%8Rrr;psM#[LT!*/psr`+OLqYu'~> -JcG]Kri,ruqZ$UrLB%8Rrr;psM#[LT!*/psr`+OLqYu'~> -JcG]Kri,ruqZ$UrLB%8Rrr;psM#[LT!*/psr`+OLqYu'~> -JcG]Kri,ruqZ$UrLB%8Rrr;psM#[LT!*/psr`+OLqYu'~> -JcG]Kri,ruqZ$UrLB%8Rrr;psM#[LT!*/psr`+OLqYu'~> -JcGQGs/Pkp!*+pVrrE)!!< -JcGQGs/Pkp!*+pVrrE)!!< -JcGQGs/Pkp!*+pVrrE)!!< -JcGECs&Jprr`,!YrD`jtrVuquOT5<[!*/jqri1PLp&BO~> -JcGECs&Jprr`,!YrD`jtrVuquOT5<[!*/jqri1PLp&BO~> -JcGECs&Jprr`,!YrD`jtrVuquOT5<[!*/jqri1PLp&BO~> -JcG?A!36#uqZ-XrOoPA[!<<#uOoGH^ -JcG?A!36#uqZ-XrOoPA[!<<#uOoGH^ -JcG?A!36#uqZ-XrOoPA[!<<#uOoGH^ -JcG?A!36#uqZ-XrOoPA[!<<#uOoGH^ -JcG?A!36#uqZ-XrOoPA[!<<#uOoGH^ -JcG?A!36#uqZ-XrOoPA[!<<#uOoGH^ -JcG?A!36#uqZ-XrOoPA[!<<#uOoGH^ -JcG?A!36#uqZ-XrOoPA[!<<#uOoGH^ -JcG?A!36#uqZ-XrOoPA[!<<#uOoGH^ -JcG3=!NK/q!<6&as8>pts8E"`rrB(u -JcG3=!NK/q!<6&as8>pts8E"`rrB(u -JcG3=!NK/q!<6&as8>pts8E"`rrB(u -JcG$8!*/jqr`,Bds/Q)!!*0!uRK*;es&Jss!*0#uJcG$8J,~> -JcG$8!*/jqr`,Bds/Q)!!*0!uRK*;es&Jss!*0#uJcG$8J,~> -JcG$8!*/jqr`,Bds/Q)!!*0!uRK*;es&Jss!*0#uJcG$8J,~> -JcG$8!*/jqr`,Bds/Q)!!*0!uRK*;es&Jss!*0#uJcG$8J,~> -JcG$8!*/jqr`,Bds/Q)!!*0!uRK*;es&Jss!*0#uJcG$8J,~> -JcG$8!*/jqr`,Bds/Q)!!*0!uRK*;es&Jss!*0#uJcG$8J,~> -JcFp5s&Jmq!*0#uSH&ThrDfBfr`/jrr`&ruJcFm4J,~> -JcFp5s&Jmq!*0#uSH&ThrDfBfr`/jrr`&ruJcFm4J,~> -JcFp5s&Jmq!*0#uSH&ThrDfBfr`/jrr`&ruJcFm4J,~> -JcFp5s&Jmq!*0#uSH&ThrDfBfr`/jrr`&ruJcFm4J,~> -JcFp5s&Jmq!*0#uSH&ThrDfBfr`/jrr`&ruJcFm4J,~> -JcFp5s&Jmq!*0#uSH&ThrDfBfr`/jrr`&ruJcFm4J,~> -JcFd1!*/gp!`c8#TE"okrDfNj!*/gps&B'!JcFa0J,~> -JcFd1!*/gp!`c8#TE"okrDfNj!*/gps&B'!JcFa0J,~> -JcFd1!*/gp!`c8#TE"okrDfNj!*/gps&B'!JcFa0J,~> -JcFd1!*/gp!`c8#TE"okrDfNj!*/gps&B'!JcFa0J,~> -JcFd1!*/gp!`c8#TE"okrDfNj!*/gps&B'!JcFa0J,~> -JcFd1!*/gp!`c8#TE"okrDfNj!*/gps&B'!JcFa0J,~> -JcFX-!*/dos&B'!V#UGprDf]orDi^ps&K*!JcFX-J,~> -JcFX-!*/dos&B'!V#UGprDf]orDi^ps&K*!JcFX-J,~> -JcFX-!*/dos&B'!V#UGprDf]orDi^ps&K*!JcFX-J,~> -JcFR+rDiRl!*,utrr<$>r`-$!s/Q*!q#LCo!31VMg])d~> -JcFR+rDiRl!*,utrr<$>r`-$!s/Q*!q#LCo!31VMg])d~> -JcFR+rDiRl!*,utrr<$>r`-$!s/Q*!q#LCo!31VMg])d~> -JcFR+rDiRl!*,utrr<$>r`-$!s/Q*!q#LCo!31VMg])d~> -JcFR+rDiRl!*,utrr<$>r`-$!s/Q*!q#LCo!31VMg])d~> -JcFR+rDiRl!*,utrr<$>r`-$!s/Q*!q#LCo!31VMg])d~> -JcFR+rDiRl!*,utrr<$>r`-$!s/Q*!q#LCo!31VMg])d~> -JcFR+rDiRl!*,utrr<$>r`-$!s/Q*!q#LCo!31VMg])d~> -JcFR+rDiRl!*,utrr<$>r`-$!s/Q*!q#LCo!31VMg])d~> -JcF@%s&JjprDg!"s&B%!ri34&!36#uq#L@nJcF=$J,~> -JcF@%s&JjprDg!"s&B%!ri34&!36#uq#L@nJcF=$J,~> -JcF@%s&JjprDg!"s&B%!ri34&!36#uq#L@nJcF=$J,~> -JcF4!!36#uq#LFps/NF*s&B%!Z2ac&q>gIoJcF-tJ,~> -JcF4!!36#uq#LFps/NF*s&B%!Z2ac&q>gIoJcF-tJ,~> -JcF4!!36#uq#LFps/NF*s&B%!Z2ac&q>gIoJcF-tJ,~> -JcF$qrDiXnrDgB-s&B%!\GuT/rDiUm!`c8#JcF!pJ,~> -JcF$qrDiXnrDgB-s&B%!\GuT/rDiUm!`c8#JcF!pJ,~> -JcF$qrDiXnrDgB-s&B%!\GuT/rDiUm!`c8#JcF!pJ,~> -JcF$qrDiXnrDgB-s&B%!\GuT/rDiUm!`c8#JcF!pJ,~> -JcF$qrDiXnrDgB-s&B%!\GuT/rDiUm!`c8#JcF!pJ,~> -JcF$qrDiXnrDgB-s&B%!\GuT/rDiUm!`c8#JcF!pJ,~> -JcF$qrDiXnrDgB-s&B%!\GuT/rDiUm!`c8#JcF!pJ,~> -JcF$qrDiXnrDgB-s&B%!\GuT/rDiUm!`c8#JcF!pJ,~> -JcF$qrDiXnrDgB-s&B%!\GuT/rDiUm!`c8#JcF!pJ,~> -JcEjlrDiOkr`-`5s&B%!^&S%2p&G+nWe(2js*t~> -JcEjlrDiOkr`-`5s&B%!^&S%2p&G+nWe(2js*t~> -JcEjlrDiOkr`-`5s&B%!^&S%2p&G+nWe(2js*t~> -JcE^hs/Q#tpAk1mri4$=s&B%!`;fg:oDnkjJcEUeJ,~> -JcE^hs/Q#tpAk1mri4$=s&B%!`;fg:oDnkjJcEUeJ,~> -JcE^hs/Q#tpAk1mri4$=s&B%!`;fg:oDnkjJcEUeJ,~> -JcE^hs/Q#tpAk1mri4$=s&B%!`;fg:oDnkjJcEUeJ,~> -JcE^hs/Q#tpAk1mri4$=s&B%!`;fg:oDnkjJcEUeJ,~> -JcE^hs/Q#tpAk1mri4$=s&B%!`;fg:oDnkjJcEUeJ,~> -JcEIa!35utp&P%k!34 -JcEIa!35utp&P%k!34 -JcEIa!35utp&P%k!34 -JcEIa!35utp&P%k!34 -JcEIa!35utp&P%k!34 -JcEIa!35utp&P%k!34 -JcE4ZrDiFhqc*Wrf`1tO!!(UMq,R(frD`itJcE1YJ,~> -JcE4ZrDiFhqc*Wrf`1tO!!(UMq,R(frD`itJcE1YJ,~> -JcE4ZrDiFhqc*Wrf`1tO!!(UMq,R(frD`itJcE1YJ,~> -JcE4ZrDiFhqc*Wrf`1tO!!(UMq,R(frD`itJcE1YJ,~> -JcE4ZrDiFhqc*Wrf`1tO!!(UMq,R(frD`itJcE1YJ,~> -JcE4ZrDiFhqc*Wrf`1tO!!(UMq,R(frD`itJcE1YJ,~> -JcDqRs&JFdqc2\Vs&B%!ir9"Yr)N.br`/uuJcDqRJ,~> -JcDqRs&JFdqc2\Vs&B%!ir9"Yr)N.br`/uuJcDqRJ,~> -JcDqRs&JFdqc2\Vs&B%!ir9"Yr)N.br`/uuJcDqRJ,~> -JcD_LqGln_n5]Ifr;Zds!!)ipn5\cSr)E`sJcDYJJ,~> -JcD_LqGln_n5]Ifr;Zds!!)ipn5\cSr)E`sJcDYJJ,~> -JcD_LqGln_n5]Ifr;Zds!!)ipn5\cSr)E`sJcDYJJ,~> -JcD_LqGln_n5]Ifr;Zds!!)ipn5\cSr)E`sJcDYJJ,~> -JcD_LqGln_n5]Ifr;Zds!!)ipn5\cSr)E`sJcDYJJ,~> -JcD_LqGln_n5]Ifr;Zds!!)ipn5\cSr)E`sJcDYJJ,~> -JcD_LqGln_n5]Ifr;Zds!!)ipn5\cSr)E`sJcDYJJ,~> -JcD_LqGln_n5]Ifr;Zds!!)ipn5\cSr)E`sJcDYJJ,~> -JcD_LqGln_n5]Ifr;Zds!!)ipn5\cSr)E`sJcDYJJ,~> -JcD;@qc10,qc/4IS,\!~> -JcD;@qc10,qc/4IS,\!~> -JcD;@qc10,qc/4IS,\!~> -JcCo5ri5WkhuNCLJcCf2J,~> -JcCo5ri5WkhuNCLJcCf2J,~> -JcCo5ri5WkhuNCLJcCf2J,~> -JcC<$JcC<$j8XW~> -JcC<$JcC<$j8XW~> -JcC<$JcC<$j8XW~> -JcC<$JcC<$j8XW~> -JcC<$JcC<$j8XW~> -JcC<$JcC<$j8XW~> -%%EndData -showpage -%%Trailer -end -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/dictateurs.jpg b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/dictateurs.jpg deleted file mode 100755 index e2bfad839c..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/dictateurs.jpg and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/dictateursniv2.jpg b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/dictateursniv2.jpg deleted file mode 100755 index ed84ec06de..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/dictateursniv2.jpg and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/disque.dia b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/disque.dia deleted file mode 100755 index 9b2b76d843..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/disque.dia and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/htree.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/htree.eps deleted file mode 100755 index a3e170fdb1..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/htree.eps +++ /dev/null @@ -1,2679 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Creator: EpsTree -%%BoundingBox: 0 0 640 640 -%%DocumentFonts: Helvetica-Bold -%%EndComments -/m { moveto } def -/l { lineto stroke } def -/c { curveto stroke } def -/t { - /text exch def /y exch def /x exch def - text stringwidth pop - /width exch def /height 12 def - 0 0 1 setrgbcolor - x width 2 div sub 2 sub - y height 2 div sub 2 sub moveto - width 4 add 0 rlineto - 0 height 4 add rlineto - width 4 add neg 0 rlineto - closepath fill - 1 setgray - x width 2 div sub - y height 2 div sub moveto - text show -} def -/Helvetica-Bold findfont 12 scalefont setfont -0 setgray -0.4 setlinewidth -267.734 20.3125 m -267.734 20.3125 m -268.083 15.2087 267.85 10.0325 267.044 4.9807 c -267.734 20.3125 m -267.734 20.3125 m -268.786 15.2503 268.932 9.91963 268.16 4.8073 c -267.734 20.3125 m -267.734 20.3125 m -269.492 15.3649 270.047 9.83731 269.307 4.63898 c -267.734 20.3125 m -267.734 20.3125 m -270.2 15.5544 271.206 9.7868 270.497 4.47485 c -267.734 20.3125 m -267.734 20.3125 m -270.905 15.821 272.422 9.77035 271.745 4.31429 c -267.734 20.3125 m -267.734 20.3125 m -271.605 16.1679 273.71 9.79152 273.067 4.15698 c -267.734 20.3125 m -267.734 20.3125 m -272.298 16.5994 275.089 9.85549 274.484 4.00298 c -267.734 20.3125 m -267.734 20.3125 m -272.982 17.121 276.582 9.96968 276.02 3.85296 c -267.734 20.3125 m -267.734 20.3125 m -273.656 17.7403 278.218 10.1446 277.707 3.70842 c -267.734 20.3125 m -267.734 20.3125 m -274.318 18.4678 280.034 10.395 279.588 3.57228 c -267.734 20.3125 m -267.734 20.3125 m -274.968 19.3183 282.079 10.7426 281.716 3.44977 c -267.734 20.3125 m -267.734 20.3125 m -275.607 20.3125 284.418 11.219 284.169 3.3501 c -267.734 20.3125 m -267.734 20.3125 m -276.237 21.4813 287.143 11.8724 287.054 3.28962 c -267.734 20.3125 m -267.734 20.3125 m -276.864 22.8707 290.385 12.7788 290.53 3.29815 c -267.734 20.3125 m -267.734 20.3125 m -277.496 24.5529 294.338 14.0638 294.837 3.43218 c -267.734 20.3125 m -267.734 20.3125 m -278.149 26.6461 299.297 15.9478 300.365 3.80508 c -267.734 20.3125 m -267.734 20.3125 m -278.85 29.3562 305.738 18.8473 307.775 4.66257 c -267.734 20.3125 m -267.734 20.3125 m -279.651 33.0722 314.451 23.6295 318.283 6.59632 c -318.283 6.59632 m -318.283 6.59632 m -316.071 5.67195 314.225 3.26783 313.903 0.892329 c -318.283 6.59632 m -318.283 6.59632 m -316.679 5.11685 315.584 2.8979 315.387 0.724443 c -318.283 6.59632 m -318.283 6.59632 m -317.338 4.7665 316.775 2.68951 316.667 0.632813 c -318.283 6.59632 m -318.283 6.59632 m -318.028 4.60581 317.882 2.59814 317.847 0.591585 c -318.283 6.59632 m -318.283 6.59632 m -318.726 4.62952 318.968 2.6069 319.002 0.591208 c -318.283 6.59632 m -318.283 6.59632 m -319.411 4.83863 320.093 2.71822 320.203 0.63281 c -318.283 6.59632 m -318.283 6.59632 m -320.061 5.24097 321.327 2.95513 321.532 0.72896 c -318.283 6.59632 m -318.283 6.59632 m -320.656 5.85645 322.764 3.37311 323.108 0.911743 c -318.283 6.59632 m -318.283 6.59632 m -321.175 6.7317 324.558 4.09506 325.132 1.25812 c -267.734 20.3125 m -267.734 20.3125 m -280.652 38.6125 326.759 32.342 334.32 11.257 c -334.32 11.257 m -334.32 11.257 m -330.733 9.41116 327.952 5.14566 327.711 1.11868 c -334.32 11.257 m -334.32 11.257 m -331.541 8.7338 329.717 4.78459 329.598 1.03224 c -334.32 11.257 m -334.32 11.257 m -332.39 8.25767 331.291 4.56736 331.268 1.00039 c -334.32 11.257 m -334.32 11.257 m -333.266 7.96829 332.748 4.46104 332.805 1.00805 c -334.32 11.257 m -334.32 11.257 m -334.156 7.85803 334.139 4.44875 334.27 1.04836 c -334.32 11.257 m -334.32 11.257 m -335.043 7.92342 335.511 4.52455 335.716 1.1198 c -334.32 11.257 m -334.32 11.257 m -335.912 8.16415 336.906 4.69168 337.192 1.22525 c -334.32 11.257 m -334.32 11.257 m -336.747 8.58327 338.37 4.96311 338.752 1.37256 c -334.32 11.257 m -334.32 11.257 m -337.533 9.18856 339.959 5.36471 340.461 1.5766 c -334.32 11.257 m -334.32 11.257 m -338.255 9.99578 341.746 5.94245 342.409 1.86412 c -334.32 11.257 m -334.32 11.257 m -338.897 11.0354 343.838 6.77793 344.733 2.28457 c -334.32 11.257 m -334.32 11.257 m -339.441 12.3668 346.402 8.02308 347.656 2.93565 c -267.734 20.3125 m -267.734 20.3125 m -282.065 47.9697 344.442 50.654 361.096 24.3301 c -267.734 20.3125 m -267.734 20.3125 m -284.245 66.7696 363.612 96.1979 406.419 71.7352 c -406.419 71.7352 m -406.419 71.7352 m -409.994 58.6244 413.86 45.5894 418.012 32.6494 c -418.012 32.6494 m -418.012 32.6494 m -410.901 30.1191 405.488 20.0076 407.325 12.6871 c -418.012 32.6494 m -418.012 32.6494 m -411.279 29.7653 406.485 20.0308 408.304 12.9353 c -418.012 32.6494 m -418.012 32.6494 m -411.654 29.4397 407.425 20.0643 409.226 13.1741 c -418.012 32.6494 m -418.012 32.6494 m -412.029 29.1407 408.314 20.1069 410.098 13.4042 c -418.012 32.6494 m -418.012 32.6494 m -412.401 28.8668 409.157 20.1578 410.926 13.6265 c -418.012 32.6494 m -418.012 32.6494 m -412.773 28.6166 409.96 20.216 411.714 13.8417 c -418.012 32.6494 m -418.012 32.6494 m -413.143 28.3892 410.726 20.2811 412.467 14.0504 c -418.012 32.6494 m -418.012 32.6494 m -413.513 28.1834 411.459 20.3524 413.188 14.2533 c -418.012 32.6494 m -418.012 32.6494 m -413.881 27.9986 412.163 20.4295 413.881 14.451 c -418.012 32.6494 m -418.012 32.6494 m -414.248 27.8339 412.839 20.5122 414.547 14.6439 c -418.012 32.6494 m -418.012 32.6494 m -414.614 27.6888 413.492 20.6001 415.192 14.8325 c -418.012 32.6494 m -418.012 32.6494 m -414.978 27.5626 414.122 20.6931 415.815 15.0174 c -418.012 32.6494 m -418.012 32.6494 m -415.341 27.4549 414.733 20.7909 416.42 15.199 c -418.012 32.6494 m -418.012 32.6494 m -415.702 27.3652 415.326 20.8936 417.009 15.3776 c -418.012 32.6494 m -418.012 32.6494 m -416.061 27.2932 415.903 21.0009 417.583 15.5536 c -418.012 32.6494 m -418.012 32.6494 m -416.418 27.2384 416.466 21.1129 418.144 15.7275 c -418.012 32.6494 m -418.012 32.6494 m -416.773 27.2006 417.016 21.2296 418.693 15.8995 c -418.012 32.6494 m -418.012 32.6494 m -417.125 27.1794 417.554 21.3511 419.232 16.07 c -418.012 32.6494 m -418.012 32.6494 m -417.474 27.1747 418.082 21.4773 419.763 16.2394 c -418.012 32.6494 m -418.012 32.6494 m -417.82 27.1861 418.601 21.6085 420.285 16.4079 c -418.012 32.6494 m -418.012 32.6494 m -418.162 27.2135 419.112 21.7446 420.801 16.5759 c -418.012 32.6494 m -418.012 32.6494 m -418.501 27.2567 419.616 21.8859 421.312 16.7437 c -418.012 32.6494 m -418.012 32.6494 m -418.836 27.3155 420.114 22.0326 421.819 16.9116 c -418.012 32.6494 m -418.012 32.6494 m -419.167 27.3897 420.608 22.1848 422.322 17.0799 c -418.012 32.6494 m -418.012 32.6494 m -419.493 27.4792 421.098 22.3428 422.824 17.249 c -418.012 32.6494 m -418.012 32.6494 m -419.814 27.5838 421.585 22.5069 423.324 17.4191 c -418.012 32.6494 m -418.012 32.6494 m -420.13 27.7036 422.07 22.6773 423.823 17.5905 c -418.012 32.6494 m -418.012 32.6494 m -420.441 27.8382 422.554 22.8544 424.324 17.7638 c -418.012 32.6494 m -418.012 32.6494 m -420.745 27.9878 423.038 23.0387 424.826 17.9391 c -418.012 32.6494 m -418.012 32.6494 m -421.044 28.1522 423.523 23.2304 425.331 18.1168 c -418.012 32.6494 m -418.012 32.6494 m -421.336 28.3313 424.009 23.43 425.839 18.2975 c -418.012 32.6494 m -418.012 32.6494 m -421.621 28.5251 424.498 23.6382 426.353 18.4814 c -418.012 32.6494 m -418.012 32.6494 m -421.899 28.7337 424.99 23.8553 426.872 18.669 c -418.012 32.6494 m -418.012 32.6494 m -422.169 28.957 425.487 24.0822 427.398 18.8608 c -418.012 32.6494 m -418.012 32.6494 m -422.431 29.195 425.99 24.3193 427.933 19.0573 c -418.012 32.6494 m -418.012 32.6494 m -422.685 29.4479 426.5 24.5676 428.477 19.2591 c -418.012 32.6494 m -418.012 32.6494 m -422.931 29.7156 427.017 24.8279 429.032 19.4668 c -418.012 32.6494 m -418.012 32.6494 m -423.167 29.9984 427.543 25.1011 429.599 19.681 c -418.012 32.6494 m -418.012 32.6494 m -423.394 30.2965 428.08 25.3882 430.18 19.9025 c -418.012 32.6494 m -418.012 32.6494 m -423.611 30.6099 428.628 25.6906 430.777 20.132 c -418.012 32.6494 m -418.012 32.6494 m -423.818 30.939 429.19 26.0094 431.391 20.3706 c -418.012 32.6494 m -418.012 32.6494 m -424.015 31.2842 429.766 26.3462 432.025 20.6192 c -418.012 32.6494 m -418.012 32.6494 m -424.2 31.6457 430.36 26.7027 432.68 20.8788 c -418.012 32.6494 m -418.012 32.6494 m -424.374 32.0242 430.972 27.0807 433.359 21.1509 c -418.012 32.6494 m -418.012 32.6494 m -424.535 32.4201 431.605 27.4824 434.066 21.4369 c -418.012 32.6494 m -418.012 32.6494 m -424.684 32.8343 432.261 27.9103 434.802 21.7383 c -418.012 32.6494 m -418.012 32.6494 m -424.82 33.2674 432.943 28.3672 435.572 22.0571 c -418.012 32.6494 m -418.012 32.6494 m -424.941 33.7206 433.654 28.8563 436.379 22.3955 c -418.012 32.6494 m -418.012 32.6494 m -425.049 34.1949 434.398 29.3813 437.228 22.7559 c -418.012 32.6494 m -418.012 32.6494 m -425.141 34.6918 435.178 29.9466 438.125 23.1413 c -406.419 71.7352 m -406.419 71.7352 m -423.428 76.3736 443.985 72.9831 458.604 63.1285 c -458.604 63.1285 m -458.604 63.1285 m -455.739 54.8006 455.783 45.0096 458.723 36.7079 c -458.604 63.1285 m -458.604 63.1285 m -460.167 55.0984 462.754 47.2042 466.246 39.806 c -458.604 63.1285 m -458.604 63.1285 m -463.945 56.9878 468.745 50.3329 472.888 43.3275 c -458.604 63.1285 m -458.604 63.1285 m -466.797 60.3098 474.412 54.7015 479.534 47.7128 c -458.604 63.1285 m -458.604 63.1285 m -468.379 65.0315 480.221 61.2023 487.032 53.936 c -458.604 63.1285 m -458.604 63.1285 m -468.145 71.4268 486.382 72.1032 496.512 64.5346 c -496.512 64.5346 m -496.512 64.5346 m -494.326 61.4284 494.201 56.3542 496.23 53.1438 c -496.512 64.5346 m -496.512 64.5346 m -494.545 61.3703 494.57 56.5024 496.568 53.3582 c -496.512 64.5346 m -496.512 64.5346 m -494.761 61.322 494.924 56.6485 496.894 53.5655 c -496.512 64.5346 m -496.512 64.5346 m -494.974 61.283 495.264 56.793 497.207 53.7663 c -496.512 64.5346 m -496.512 64.5346 m -495.183 61.2532 495.591 56.936 497.51 53.9613 c -496.512 64.5346 m -496.512 64.5346 m -495.39 61.2322 495.906 57.0778 497.804 54.1511 c -496.512 64.5346 m -496.512 64.5346 m -495.593 61.2197 496.211 57.2187 498.088 54.336 c -496.512 64.5346 m -496.512 64.5346 m -495.793 61.2156 496.506 57.3588 498.365 54.5167 c -496.512 64.5346 m -496.512 64.5346 m -495.99 61.2196 496.793 57.4984 498.635 54.6935 c -496.512 64.5346 m -496.512 64.5346 m -496.183 61.2315 497.071 57.6376 498.898 54.8668 c -496.512 64.5346 m -496.512 64.5346 m -496.374 61.2512 497.341 57.7768 499.156 55.037 c -496.512 64.5346 m -496.512 64.5346 m -496.561 61.2785 497.605 57.9161 499.408 55.2044 c -496.512 64.5346 m -496.512 64.5346 m -496.745 61.3132 497.862 58.0557 499.656 55.3695 c -496.512 64.5346 m -496.512 64.5346 m -496.925 61.3552 498.114 58.1958 499.899 55.5324 c -496.512 64.5346 m -496.512 64.5346 m -497.102 61.4044 498.361 58.3365 500.139 55.6935 c -496.512 64.5346 m -496.512 64.5346 m -497.276 61.4606 498.603 58.4782 500.376 55.8531 c -496.512 64.5346 m -496.512 64.5346 m -497.446 61.5237 498.841 58.6209 500.61 56.0114 c -496.512 64.5346 m -496.512 64.5346 m -497.612 61.5935 499.076 58.765 500.842 56.1687 c -496.512 64.5346 m -496.512 64.5346 m -497.774 61.6701 499.307 58.9105 501.072 56.3254 c -496.512 64.5346 m -496.512 64.5346 m -497.932 61.7532 499.535 59.0578 501.3 56.4815 c -496.512 64.5346 m -496.512 64.5346 m -498.086 61.8428 499.76 59.207 501.527 56.6375 c -496.512 64.5346 m -496.512 64.5346 m -498.236 61.9389 499.984 59.3583 501.754 56.7935 c -496.512 64.5346 m -496.512 64.5346 m -498.382 62.0412 500.205 59.512 501.98 56.9498 c -496.512 64.5346 m -496.512 64.5346 m -498.523 62.1497 500.425 59.6683 502.206 57.1067 c -496.512 64.5346 m -496.512 64.5346 m -498.66 62.2644 500.644 59.8276 502.432 57.2643 c -496.512 64.5346 m -496.512 64.5346 m -498.792 62.3851 500.862 59.99 502.659 57.4231 c -496.512 64.5346 m -496.512 64.5346 m -498.919 62.5119 501.08 60.1558 502.888 57.5832 c -496.512 64.5346 m -496.512 64.5346 m -499.041 62.6446 501.297 60.3253 503.117 57.7449 c -496.512 64.5346 m -496.512 64.5346 m -499.158 62.7832 501.515 60.499 503.349 57.9085 c -496.512 64.5346 m -496.512 64.5346 m -499.27 62.9276 501.734 60.677 503.583 58.0744 c -496.512 64.5346 m -496.512 64.5346 m -499.377 63.0778 501.953 60.8599 503.819 58.2428 c -496.512 64.5346 m -496.512 64.5346 m -499.478 63.2339 502.174 61.0479 504.059 58.414 c -496.512 64.5346 m -496.512 64.5346 m -499.574 63.3957 502.396 61.2415 504.302 58.5885 c -496.512 64.5346 m -496.512 64.5346 m -499.663 63.5632 502.62 61.4412 504.55 58.7667 c -496.512 64.5346 m -496.512 64.5346 m -499.747 63.7365 502.847 61.6475 504.802 58.9488 c -496.512 64.5346 m -496.512 64.5346 m -499.824 63.9155 503.077 61.8609 505.059 59.1355 c -496.512 64.5346 m -496.512 64.5346 m -499.895 64.1004 503.31 62.082 505.322 59.3271 c -496.512 64.5346 m -496.512 64.5346 m -499.96 64.2911 503.547 62.3116 505.591 59.5241 c -496.512 64.5346 m -496.512 64.5346 m -500.018 64.4876 503.788 62.5503 505.868 59.7272 c -496.512 64.5346 m -496.512 64.5346 m -500.068 64.6902 504.034 62.7989 506.152 59.937 c -496.512 64.5346 m -496.512 64.5346 m -500.112 64.8989 504.286 63.0583 506.444 60.1542 c -496.512 64.5346 m -496.512 64.5346 m -500.148 65.1138 504.543 63.3295 506.747 60.3795 c -496.512 64.5346 m -496.512 64.5346 m -500.176 65.3352 504.808 63.6136 507.06 60.6138 c -496.512 64.5346 m -496.512 64.5346 m -500.197 65.5632 505.08 63.9119 507.384 60.8579 c -496.512 64.5346 m -496.512 64.5346 m -500.208 65.7981 505.36 64.2256 507.721 61.1131 c -496.512 64.5346 m -496.512 64.5346 m -500.212 66.0401 505.65 64.5564 508.073 61.3805 c -496.512 64.5346 m -496.512 64.5346 m -500.206 66.2898 505.95 64.9061 508.44 61.6614 c -496.512 64.5346 m -496.512 64.5346 m -500.19 66.5475 506.262 65.2766 508.825 61.9574 c -496.512 64.5346 m -496.512 64.5346 m -500.165 66.8137 506.587 65.6701 509.229 62.2702 c -496.512 64.5346 m -496.512 64.5346 m -500.128 67.089 506.926 66.0894 509.654 62.6019 c -496.512 64.5346 m -496.512 64.5346 m -500.081 67.3743 507.281 66.5375 510.103 62.9549 c -496.512 64.5346 m -496.512 64.5346 m -500.021 67.6703 507.653 67.0177 510.58 63.3317 c -496.512 64.5346 m -496.512 64.5346 m -499.949 67.9782 508.046 67.5343 511.087 63.7356 c -496.512 64.5346 m -496.512 64.5346 m -499.863 68.2991 508.461 68.0919 511.628 64.1704 c -496.512 64.5346 m -496.512 64.5346 m -499.762 68.6346 508.902 68.6962 512.207 64.6405 c -267.734 20.3125 m -267.734 20.3125 m -284.524 101.112 322.916 179.858 376.231 242.85 c -376.231 242.85 m -376.231 242.85 m -433.5 208.107 488.177 168.688 539.236 125.332 c -539.236 125.332 m -539.236 125.332 m -544.165 121.147 549.063 116.923 553.928 112.662 c -553.928 112.662 m -553.928 112.662 m -554.056 110.73 554.754 108.768 555.875 107.189 c -553.928 112.662 m -553.928 112.662 m -555.864 112.79 557.909 112.347 559.618 111.428 c -376.231 242.85 m -376.231 242.85 m -443.287 227.069 508.754 201.721 568.953 168.23 c -376.231 242.85 m -376.231 242.85 m -447.95 248.818 522.079 240.867 590.901 219.824 c -376.231 242.85 m -376.231 242.85 m -446.613 272.373 525.838 285.74 602.011 280.943 c -602.011 280.943 m -602.011 280.943 m -601.323 265.239 614.72 246.979 629.907 242.921 c -602.011 280.943 m -602.011 280.943 m -601.927 265.488 615.285 248.078 630.234 244.159 c -602.011 280.943 m -602.011 280.943 m -602.511 265.746 615.821 249.147 630.546 245.357 c -602.011 280.943 m -602.011 280.943 m -603.075 266.013 616.331 250.187 630.842 246.519 c -602.011 280.943 m -602.011 280.943 m -603.622 266.288 616.816 251.199 631.124 247.647 c -602.011 280.943 m -602.011 280.943 m -604.151 266.571 617.277 252.186 631.394 248.743 c -602.011 280.943 m -602.011 280.943 m -604.662 266.861 617.718 253.149 631.652 249.809 c -602.011 280.943 m -602.011 280.943 m -605.157 267.159 618.137 254.089 631.899 250.848 c -602.011 280.943 m -602.011 280.943 m -605.636 267.464 618.538 255.009 632.135 251.86 c -602.011 280.943 m -602.011 280.943 m -606.099 267.777 618.92 255.909 632.362 252.848 c -602.011 280.943 m -602.011 280.943 m -606.546 268.096 619.285 256.79 632.58 253.814 c -602.011 280.943 m -602.011 280.943 m -606.978 268.422 619.635 257.654 632.79 254.758 c -602.011 280.943 m -602.011 280.943 m -607.395 268.754 619.969 258.502 632.992 255.682 c -602.011 280.943 m -602.011 280.943 m -607.798 269.093 620.288 259.335 633.186 256.587 c -602.011 280.943 m -602.011 280.943 m -608.186 269.438 620.594 260.153 633.374 257.474 c -602.011 280.943 m -602.011 280.943 m -608.56 269.789 620.887 260.958 633.555 258.346 c -602.011 280.943 m -602.011 280.943 m -608.92 270.146 621.168 261.751 633.73 259.202 c -602.011 280.943 m -602.011 280.943 m -609.266 270.508 621.436 262.532 633.899 260.043 c -602.011 280.943 m -602.011 280.943 m -609.598 270.876 621.694 263.302 634.063 260.871 c -602.011 280.943 m -602.011 280.943 m -609.917 271.249 621.94 264.061 634.222 261.687 c -602.011 280.943 m -602.011 280.943 m -610.223 271.627 622.177 264.812 634.376 262.491 c -602.011 280.943 m -602.011 280.943 m -610.515 272.01 622.403 265.553 634.526 263.284 c -602.011 280.943 m -602.011 280.943 m -610.794 272.397 622.62 266.287 634.672 264.067 c -602.011 280.943 m -602.011 280.943 m -611.06 272.79 622.828 267.013 634.813 264.84 c -602.011 280.943 m -602.011 280.943 m -611.313 273.186 623.027 267.732 634.951 265.605 c -602.011 280.943 m -602.011 280.943 m -611.553 273.587 623.217 268.445 635.084 266.363 c -602.011 280.943 m -602.011 280.943 m -611.78 273.992 623.4 269.152 635.215 267.112 c -602.011 280.943 m -602.011 280.943 m -611.994 274.4 623.574 269.854 635.342 267.856 c -602.011 280.943 m -602.011 280.943 m -612.196 274.813 623.741 270.551 635.466 268.593 c -602.011 280.943 m -602.011 280.943 m -612.384 275.229 623.901 271.244 635.588 269.325 c -602.011 280.943 m -602.011 280.943 m -612.56 275.648 624.053 271.933 635.706 270.052 c -602.011 280.943 m -602.011 280.943 m -612.724 276.07 624.198 272.619 635.822 270.775 c -602.011 280.943 m -602.011 280.943 m -612.874 276.496 624.337 273.303 635.935 271.494 c -602.011 280.943 m -602.011 280.943 m -613.012 276.924 624.468 273.984 636.045 272.21 c -602.011 280.943 m -602.011 280.943 m -613.137 277.355 624.593 274.664 636.154 272.923 c -602.011 280.943 m -602.011 280.943 m -613.25 277.788 624.712 275.342 636.26 273.634 c -602.011 280.943 m -602.011 280.943 m -613.35 278.224 624.825 276.02 636.364 274.344 c -602.011 280.943 m -602.011 280.943 m -613.437 278.662 624.931 276.697 636.466 275.052 c -602.011 280.943 m -602.011 280.943 m -613.512 279.102 625.031 277.375 636.566 275.76 c -602.011 280.943 m -602.011 280.943 m -613.573 279.544 625.125 278.053 636.664 276.468 c -602.011 280.943 m -602.011 280.943 m -613.623 279.988 625.214 278.732 636.761 277.177 c -602.011 280.943 m -602.011 280.943 m -613.659 280.433 625.296 279.412 636.855 277.886 c -602.011 280.943 m -602.011 280.943 m -613.683 280.879 625.372 280.095 636.948 278.597 c -602.011 280.943 m -602.011 280.943 m -613.693 281.327 625.443 280.78 637.039 279.311 c -602.011 280.943 m -602.011 280.943 m -613.691 281.776 625.508 281.467 637.129 280.026 c -602.011 280.943 m -602.011 280.943 m -613.676 282.225 625.567 282.159 637.217 280.745 c -602.011 280.943 m -602.011 280.943 m -613.648 282.676 625.62 282.854 637.304 281.467 c -602.011 280.943 m -602.011 280.943 m -613.607 283.127 625.667 283.553 637.389 282.194 c -602.011 280.943 m -602.011 280.943 m -613.553 283.578 625.709 284.257 637.473 282.925 c -602.011 280.943 m -602.011 280.943 m -613.486 284.029 625.744 284.967 637.555 283.662 c -602.011 280.943 m -602.011 280.943 m -613.405 284.481 625.774 285.683 637.636 284.404 c -602.011 280.943 m -602.011 280.943 m -613.311 284.932 625.797 286.405 637.716 285.154 c -602.011 280.943 m -602.011 280.943 m -613.204 285.384 625.815 287.134 637.794 285.91 c -602.011 280.943 m -602.011 280.943 m -613.084 285.835 625.825 287.871 637.871 286.674 c -602.011 280.943 m -602.011 280.943 m -612.949 286.285 625.83 288.616 637.947 287.447 c -602.011 280.943 m -602.011 280.943 m -612.801 286.735 625.828 289.371 638.021 288.229 c -602.011 280.943 m -602.011 280.943 m -612.639 287.184 625.819 290.134 638.094 289.021 c -602.011 280.943 m -602.011 280.943 m -612.464 287.632 625.804 290.909 638.166 289.824 c -602.011 280.943 m -602.011 280.943 m -612.274 288.079 625.781 291.694 638.236 290.638 c -602.011 280.943 m -602.011 280.943 m -612.07 288.524 625.751 292.491 638.305 291.465 c -602.011 280.943 m -602.011 280.943 m -611.851 288.969 625.713 293.3 638.373 292.305 c -602.011 280.943 m -602.011 280.943 m -611.618 289.412 625.667 294.123 638.438 293.16 c -602.011 280.943 m -602.011 280.943 m -611.37 289.853 625.614 294.961 638.503 294.029 c -602.011 280.943 m -602.011 280.943 m -611.107 290.292 625.552 295.814 638.565 294.915 c -602.011 280.943 m -602.011 280.943 m -610.829 290.73 625.48 296.683 638.626 295.819 c -602.011 280.943 m -602.011 280.943 m -610.535 291.166 625.4 297.569 638.685 296.741 c -602.011 280.943 m -602.011 280.943 m -610.226 291.599 625.31 298.474 638.742 297.683 c -602.011 280.943 m -602.011 280.943 m -609.9 292.031 625.21 299.398 638.797 298.646 c -602.011 280.943 m -602.011 280.943 m -609.558 292.46 625.099 300.344 638.85 299.632 c -602.011 280.943 m -602.011 280.943 m -609.199 292.886 624.977 301.311 638.901 300.642 c -602.011 280.943 m -602.011 280.943 m -608.823 293.31 624.842 302.303 638.948 301.678 c -602.011 280.943 m -602.011 280.943 m -608.43 293.732 624.695 303.32 638.993 302.742 c -602.011 280.943 m -602.011 280.943 m -608.018 294.151 624.535 304.363 639.035 303.835 c -602.011 280.943 m -602.011 280.943 m -607.588 294.567 624.36 305.435 639.074 304.96 c -602.011 280.943 m -602.011 280.943 m -607.138 294.98 624.17 306.538 639.109 306.118 c -602.011 280.943 m -602.011 280.943 m -606.669 295.391 623.964 307.674 639.14 307.313 c -602.011 280.943 m -602.011 280.943 m -606.18 295.798 623.74 308.844 639.167 308.547 c -602.011 280.943 m -602.011 280.943 m -605.669 296.203 623.498 310.052 639.188 309.823 c -602.011 280.943 m -602.011 280.943 m -605.136 296.604 623.235 311.3 639.204 311.143 c -602.011 280.943 m -602.011 280.943 m -604.581 297.003 622.95 312.59 639.214 312.512 c -602.011 280.943 m -602.011 280.943 m -604.001 297.398 622.642 313.927 639.218 313.932 c -602.011 280.943 m -602.011 280.943 m -603.396 297.791 622.309 315.312 639.213 315.409 c -376.231 242.85 m -376.231 242.85 m -438.374 296.408 516.685 334.973 597.024 351.58 c -597.024 351.58 m -597.024 351.58 m -600.919 333.624 621.223 316.923 639.593 316.564 c -597.024 351.58 m -597.024 351.58 m -601.232 333.858 621.395 317.643 639.607 317.334 c -597.024 351.58 m -597.024 351.58 m -601.539 334.092 621.56 318.351 639.619 318.091 c -597.024 351.58 m -597.024 351.58 m -601.839 334.328 621.719 319.049 639.629 318.836 c -597.024 351.58 m -597.024 351.58 m -602.132 334.564 621.872 319.736 639.636 319.568 c -597.024 351.58 m -597.024 351.58 m -602.42 334.802 622.019 320.412 639.642 320.288 c -597.024 351.58 m -597.024 351.58 m -602.702 335.041 622.16 321.079 639.646 320.998 c -597.024 351.58 m -597.024 351.58 m -602.977 335.281 622.297 321.736 639.649 321.696 c -597.024 351.58 m -597.024 351.58 m -603.247 335.521 622.428 322.384 639.65 322.383 c -597.024 351.58 m -597.024 351.58 m -603.511 335.763 622.554 323.022 639.649 323.061 c -597.024 351.58 m -597.024 351.58 m -603.77 336.006 622.675 323.652 639.647 323.729 c -597.024 351.58 m -597.024 351.58 m -604.022 336.25 622.792 324.274 639.643 324.387 c -597.024 351.58 m -597.024 351.58 m -604.27 336.495 622.904 324.887 639.638 325.036 c -597.024 351.58 m -597.024 351.58 m -604.511 336.74 623.011 325.493 639.632 325.676 c -597.024 351.58 m -597.024 351.58 m -604.748 336.987 623.115 326.091 639.624 326.307 c -597.024 351.58 m -597.024 351.58 m -604.979 337.234 623.214 326.681 639.615 326.93 c -597.024 351.58 m -597.024 351.58 m -605.205 337.483 623.309 327.264 639.605 327.545 c -597.024 351.58 m -597.024 351.58 m -605.425 337.732 623.4 327.84 639.594 328.153 c -597.024 351.58 m -597.024 351.58 m -605.641 337.982 623.488 328.41 639.582 328.753 c -597.024 351.58 m -597.024 351.58 m -605.852 338.233 623.572 328.973 639.569 329.345 c -597.024 351.58 m -597.024 351.58 m -606.057 338.485 623.652 329.529 639.554 329.931 c -597.024 351.58 m -597.024 351.58 m -606.258 338.738 623.729 330.08 639.539 330.51 c -597.024 351.58 m -597.024 351.58 m -606.453 338.992 623.802 330.624 639.523 331.082 c -597.024 351.58 m -597.024 351.58 m -606.644 339.246 623.872 331.163 639.506 331.648 c -597.024 351.58 m -597.024 351.58 m -606.83 339.501 623.939 331.696 639.488 332.207 c -597.024 351.58 m -597.024 351.58 m -607.011 339.757 624.002 332.224 639.47 332.761 c -597.024 351.58 m -597.024 351.58 m -607.188 340.013 624.063 332.746 639.45 333.309 c -597.024 351.58 m -597.024 351.58 m -607.36 340.271 624.12 333.264 639.43 333.852 c -597.024 351.58 m -597.024 351.58 m -607.527 340.529 624.175 333.776 639.409 334.389 c -597.024 351.58 m -597.024 351.58 m -607.69 340.787 624.227 334.284 639.387 334.921 c -597.024 351.58 m -597.024 351.58 m -607.848 341.046 624.275 334.787 639.364 335.448 c -597.024 351.58 m -597.024 351.58 m -608.001 341.306 624.322 335.286 639.341 335.97 c -597.024 351.58 m -597.024 351.58 m -608.15 341.567 624.365 335.78 639.317 336.487 c -597.024 351.58 m -597.024 351.58 m -608.295 341.828 624.406 336.271 639.292 337 c -597.024 351.58 m -597.024 351.58 m -608.435 342.09 624.444 336.757 639.267 337.508 c -597.024 351.58 m -597.024 351.58 m -608.571 342.352 624.48 337.239 639.241 338.012 c -597.024 351.58 m -597.024 351.58 m -608.702 342.615 624.513 337.717 639.214 338.512 c -597.024 351.58 m -597.024 351.58 m -608.829 342.878 624.544 338.192 639.187 339.008 c -597.024 351.58 m -597.024 351.58 m -608.952 343.142 624.572 338.664 639.159 339.501 c -597.024 351.58 m -597.024 351.58 m -609.07 343.406 624.598 339.131 639.131 339.989 c -597.024 351.58 m -597.024 351.58 m -609.184 343.67 624.622 339.596 639.102 340.474 c -597.024 351.58 m -597.024 351.58 m -609.294 343.936 624.644 340.057 639.072 340.956 c -597.024 351.58 m -597.024 351.58 m -609.4 344.201 624.663 340.516 639.042 341.434 c -597.024 351.58 m -597.024 351.58 m -609.501 344.467 624.68 340.971 639.011 341.91 c -597.024 351.58 m -597.024 351.58 m -609.598 344.733 624.695 341.423 638.98 342.382 c -597.024 351.58 m -597.024 351.58 m -609.691 344.999 624.707 341.873 638.948 342.851 c -597.024 351.58 m -597.024 351.58 m -609.78 345.266 624.718 342.32 638.916 343.317 c -597.024 351.58 m -597.024 351.58 m -609.865 345.533 624.726 342.764 638.883 343.781 c -597.024 351.58 m -597.024 351.58 m -609.945 345.801 624.733 343.206 638.849 344.242 c -597.024 351.58 m -597.024 351.58 m -610.022 346.068 624.737 343.646 638.815 344.701 c -597.024 351.58 m -597.024 351.58 m -610.094 346.336 624.739 344.083 638.781 345.157 c -597.024 351.58 m -597.024 351.58 m -610.162 346.604 624.739 344.519 638.746 345.611 c -597.024 351.58 m -597.024 351.58 m -610.227 346.872 624.738 344.952 638.71 346.062 c -597.024 351.58 m -597.024 351.58 m -610.287 347.14 624.734 345.383 638.674 346.512 c -597.024 351.58 m -597.024 351.58 m -610.343 347.409 624.728 345.812 638.637 346.96 c -597.024 351.58 m -597.024 351.58 m -610.395 347.677 624.721 346.239 638.6 347.406 c -597.024 351.58 m -597.024 351.58 m -610.443 347.946 624.711 346.665 638.563 347.85 c -597.024 351.58 m -597.024 351.58 m -610.487 348.214 624.7 347.088 638.524 348.292 c -597.024 351.58 m -597.024 351.58 m -610.527 348.483 624.687 347.511 638.486 348.732 c -597.024 351.58 m -597.024 351.58 m -610.563 348.752 624.671 347.931 638.446 349.172 c -597.024 351.58 m -597.024 351.58 m -610.595 349.02 624.654 348.351 638.407 349.609 c -597.024 351.58 m -597.024 351.58 m -610.623 349.289 624.636 348.769 638.366 350.046 c -597.024 351.58 m -597.024 351.58 m -610.647 349.557 624.615 349.186 638.326 350.481 c -597.024 351.58 m -597.024 351.58 m -610.667 349.826 624.592 349.601 638.284 350.915 c -597.024 351.58 m -597.024 351.58 m -610.683 350.094 624.568 350.016 638.243 351.348 c -597.024 351.58 m -597.024 351.58 m -610.696 350.362 624.541 350.429 638.2 351.78 c -597.024 351.58 m -597.024 351.58 m -610.704 350.63 624.513 350.841 638.157 352.211 c -597.024 351.58 m -597.024 351.58 m -610.708 350.897 624.483 351.253 638.114 352.641 c -597.024 351.58 m -597.024 351.58 m -610.709 351.165 624.451 351.664 638.07 353.07 c -597.024 351.58 m -597.024 351.58 m -610.705 351.432 624.418 352.074 638.025 353.499 c -597.024 351.58 m -597.024 351.58 m -610.698 351.699 624.382 352.483 637.98 353.927 c -597.024 351.58 m -597.024 351.58 m -610.687 351.966 624.345 352.892 637.934 354.355 c -597.024 351.58 m -597.024 351.58 m -610.672 352.232 624.306 353.3 637.888 354.782 c -597.024 351.58 m -597.024 351.58 m -610.653 352.498 624.265 353.708 637.841 355.209 c -597.024 351.58 m -597.024 351.58 m -610.63 352.763 624.222 354.115 637.794 355.635 c -597.024 351.58 m -597.024 351.58 m -610.603 353.028 624.177 354.522 637.746 356.062 c -597.024 351.58 m -597.024 351.58 m -610.572 353.293 624.13 354.929 637.697 356.488 c -597.024 351.58 m -597.024 351.58 m -610.538 353.557 624.082 355.336 637.648 356.915 c -597.024 351.58 m -597.024 351.58 m -610.499 353.821 624.031 355.742 637.598 357.341 c -597.024 351.58 m -597.024 351.58 m -610.457 354.084 623.979 356.149 637.547 357.767 c -597.024 351.58 m -597.024 351.58 m -610.411 354.347 623.925 356.556 637.496 358.194 c -597.024 351.58 m -597.024 351.58 m -610.361 354.609 623.869 356.962 637.444 358.621 c -597.024 351.58 m -597.024 351.58 m -610.307 354.871 623.811 357.369 637.391 359.049 c -597.024 351.58 m -597.024 351.58 m -610.249 355.132 623.751 357.776 637.338 359.477 c -597.024 351.58 m -597.024 351.58 m -610.187 355.392 623.689 358.184 637.284 359.905 c -597.024 351.58 m -597.024 351.58 m -610.122 355.652 623.625 358.592 637.23 360.334 c -597.024 351.58 m -597.024 351.58 m -610.052 355.91 623.559 359 637.174 360.764 c -597.024 351.58 m -597.024 351.58 m -609.979 356.169 623.491 359.409 637.118 361.194 c -597.024 351.58 m -597.024 351.58 m -609.902 356.426 623.421 359.818 637.061 361.626 c -597.024 351.58 m -597.024 351.58 m -609.821 356.683 623.349 360.229 637.004 362.058 c -597.024 351.58 m -597.024 351.58 m -609.736 356.939 623.275 360.64 636.945 362.492 c -597.024 351.58 m -597.024 351.58 m -609.647 357.194 623.199 361.051 636.886 362.926 c -597.024 351.58 m -597.024 351.58 m -609.555 357.448 623.121 361.464 636.826 363.362 c -597.024 351.58 m -597.024 351.58 m -609.458 357.702 623.04 361.878 636.765 363.799 c -597.024 351.58 m -597.024 351.58 m -609.358 357.954 622.957 362.292 636.704 364.237 c -597.024 351.58 m -597.024 351.58 m -609.253 358.206 622.872 362.708 636.641 364.677 c -597.024 351.58 m -597.024 351.58 m -609.145 358.456 622.785 363.125 636.577 365.119 c -597.024 351.58 m -597.024 351.58 m -609.033 358.706 622.696 363.544 636.513 365.562 c -597.024 351.58 m -597.024 351.58 m -608.917 358.954 622.604 363.963 636.448 366.007 c -597.024 351.58 m -597.024 351.58 m -608.797 359.202 622.51 364.385 636.381 366.454 c -597.024 351.58 m -597.024 351.58 m -608.673 359.449 622.414 364.807 636.314 366.902 c -597.024 351.58 m -597.024 351.58 m -608.545 359.694 622.315 365.232 636.246 367.353 c -597.024 351.58 m -597.024 351.58 m -608.413 359.938 622.214 365.658 636.177 367.806 c -597.024 351.58 m -597.024 351.58 m -608.278 360.182 622.11 366.086 636.106 368.261 c -597.024 351.58 m -597.024 351.58 m -608.138 360.424 622.004 366.515 636.035 368.718 c -597.024 351.58 m -597.024 351.58 m -607.994 360.665 621.895 366.947 635.962 369.178 c -597.024 351.58 m -597.024 351.58 m -607.847 360.904 621.783 367.381 635.889 369.64 c -597.024 351.58 m -597.024 351.58 m -607.695 361.143 621.669 367.816 635.814 370.105 c -597.024 351.58 m -597.024 351.58 m -607.539 361.38 621.552 368.255 635.738 370.573 c -597.024 351.58 m -597.024 351.58 m -607.38 361.616 621.432 368.695 635.66 371.044 c -597.024 351.58 m -597.024 351.58 m -607.216 361.85 621.31 369.138 635.582 371.518 c -597.024 351.58 m -597.024 351.58 m -607.048 362.083 621.184 369.583 635.502 371.994 c -597.024 351.58 m -597.024 351.58 m -606.877 362.315 621.056 370.031 635.42 372.474 c -597.024 351.58 m -597.024 351.58 m -606.701 362.546 620.924 370.482 635.338 372.958 c -597.024 351.58 m -597.024 351.58 m -606.521 362.775 620.79 370.935 635.254 373.445 c -597.024 351.58 m -597.024 351.58 m -606.337 363.002 620.652 371.392 635.168 373.935 c -597.024 351.58 m -597.024 351.58 m -606.149 363.228 620.511 371.851 635.081 374.429 c -597.024 351.58 m -597.024 351.58 m -605.956 363.453 620.367 372.314 634.993 374.927 c -597.024 351.58 m -597.024 351.58 m -605.76 363.676 620.219 372.78 634.903 375.429 c -597.024 351.58 m -597.024 351.58 m -605.559 363.897 620.068 373.249 634.811 375.936 c -597.024 351.58 m -597.024 351.58 m -605.354 364.117 619.914 373.722 634.717 376.446 c -597.024 351.58 m -597.024 351.58 m -605.145 364.335 619.756 374.199 634.622 376.961 c -597.024 351.58 m -597.024 351.58 m -604.931 364.552 619.594 374.679 634.525 377.481 c -597.024 351.58 m -597.024 351.58 m -604.714 364.767 619.428 375.163 634.426 378.005 c -597.024 351.58 m -597.024 351.58 m -604.491 364.98 619.258 375.651 634.325 378.535 c -597.024 351.58 m -597.024 351.58 m -604.265 365.192 619.085 376.144 634.223 379.069 c -597.024 351.58 m -597.024 351.58 m -604.034 365.401 618.907 376.64 634.118 379.609 c -597.024 351.58 m -597.024 351.58 m -603.799 365.609 618.725 377.141 634.011 380.154 c -597.024 351.58 m -597.024 351.58 m -603.559 365.816 618.539 377.647 633.902 380.705 c -597.024 351.58 m -597.024 351.58 m -603.314 366.02 618.349 378.157 633.79 381.262 c -597.024 351.58 m -597.024 351.58 m -603.066 366.222 618.153 378.673 633.677 381.824 c -597.024 351.58 m -597.024 351.58 m -602.812 366.423 617.954 379.193 633.56 382.393 c -597.024 351.58 m -597.024 351.58 m -602.554 366.622 617.749 379.719 633.442 382.969 c -597.024 351.58 m -597.024 351.58 m -602.291 366.818 617.539 380.25 633.321 383.551 c -597.024 351.58 m -597.024 351.58 m -602.023 367.013 617.324 380.786 633.197 384.14 c -597.024 351.58 m -597.024 351.58 m -601.751 367.206 617.104 381.329 633.07 384.736 c -597.024 351.58 m -597.024 351.58 m -601.474 367.397 616.879 381.877 632.941 385.34 c -597.024 351.58 m -597.024 351.58 m -601.192 367.585 616.648 382.431 632.808 385.951 c -597.024 351.58 m -597.024 351.58 m -600.904 367.772 616.411 382.992 632.673 386.57 c -597.024 351.58 m -597.024 351.58 m -600.612 367.956 616.169 383.56 632.534 387.197 c -597.024 351.58 m -597.024 351.58 m -600.315 368.138 615.92 384.134 632.392 387.833 c -597.024 351.58 m -597.024 351.58 m -600.013 368.319 615.665 384.715 632.247 388.477 c -597.024 351.58 m -597.024 351.58 m -599.705 368.496 615.403 385.303 632.098 389.131 c -597.024 351.58 m -597.024 351.58 m -599.392 368.672 615.135 385.899 631.945 389.793 c -597.024 351.58 m -597.024 351.58 m -599.073 368.845 614.859 386.503 631.788 390.466 c -597.024 351.58 m -597.024 351.58 m -598.749 369.016 614.577 387.115 631.628 391.148 c -597.024 351.58 m -597.024 351.58 m -598.42 369.185 614.287 387.734 631.463 391.841 c -597.024 351.58 m -597.024 351.58 m -598.084 369.351 613.989 388.363 631.294 392.544 c -597.024 351.58 m -597.024 351.58 m -597.743 369.515 613.683 389 631.12 393.259 c -597.024 351.58 m -597.024 351.58 m -597.396 369.676 613.369 389.646 630.942 393.985 c -597.024 351.58 m -597.024 351.58 m -597.043 369.835 613.047 390.302 630.759 394.723 c -597.024 351.58 m -597.024 351.58 m -596.684 369.992 612.715 390.967 630.571 395.473 c -597.024 351.58 m -597.024 351.58 m -596.319 370.145 612.375 391.643 630.377 396.236 c -597.024 351.58 m -597.024 351.58 m -595.947 370.297 612.024 392.329 630.178 397.013 c -597.024 351.58 m -597.024 351.58 m -595.569 370.445 611.664 393.026 629.973 397.803 c -597.024 351.58 m -597.024 351.58 m -595.184 370.591 611.294 393.733 629.762 398.607 c -597.024 351.58 m -597.024 351.58 m -594.792 370.734 610.913 394.453 629.544 399.426 c -597.024 351.58 m -597.024 351.58 m -594.393 370.874 610.52 395.184 629.32 400.261 c -597.024 351.58 m -597.024 351.58 m -593.987 371.012 610.116 395.928 629.089 401.112 c -597.024 351.58 m -597.024 351.58 m -593.573 371.147 609.7 396.684 628.851 401.979 c -597.024 351.58 m -597.024 351.58 m -593.152 371.279 609.271 397.454 628.605 402.863 c -376.231 242.85 m -376.231 242.85 m -422.421 318.989 490.461 385.025 567.947 428.919 c -567.947 428.919 m -567.947 428.919 m -578.173 434.712 588.599 440.167 599.188 445.267 c -376.231 242.85 m -376.231 242.85 m -398.441 337.222 443.601 428.631 505.057 503.613 c -505.057 503.613 m -505.057 503.613 m -523.938 494.207 549.62 494.428 568.336 504.157 c -505.057 503.613 m -505.057 503.613 m -523.79 503.362 543.407 509.326 558.83 519.96 c -505.057 503.613 m -505.057 503.613 m -521.009 511.033 536.081 520.723 549.455 532.154 c -505.057 503.613 m -505.057 503.613 m -516.065 517.043 527.625 530.038 539.682 542.534 c -539.682 542.534 m -539.682 542.534 m -542.021 541.122 545.616 541.219 547.876 542.755 c -539.682 542.534 m -539.682 542.534 m -542.054 542.31 544.67 543.09 546.531 544.578 c -539.682 542.534 m -539.682 542.534 m -541.752 543.301 543.709 544.488 545.344 545.972 c -539.682 542.534 m -539.682 542.534 m -541.179 544.086 542.684 545.63 544.196 547.167 c -539.682 542.534 m -539.682 542.534 m -540.375 544.636 541.519 546.635 542.98 548.298 c -539.682 542.534 m -539.682 542.534 m -539.371 544.909 540.091 547.576 541.556 549.472 c -539.682 542.534 m -539.682 542.534 m -538.173 544.842 538.174 548.498 539.684 550.805 c -505.057 503.613 m -505.057 503.613 m -509.295 521.098 517.543 538.02 528.705 552.129 c -505.057 503.613 m -505.057 503.613 m -500.946 522.809 504.832 544.971 515.231 561.622 c -515.231 561.622 m -515.231 561.622 m -518.336 560.674 522.285 561.47 524.78 563.548 c -515.231 561.622 m -515.231 561.622 m -518.014 562.266 520.706 563.767 522.716 565.798 c -515.231 561.622 m -515.231 561.622 m -517.213 563.472 519.087 565.444 520.834 567.517 c -515.231 561.622 m -515.231 561.622 m -516.035 564.256 517.289 566.789 518.896 569.026 c -515.231 561.622 m -515.231 561.622 m -514.555 564.546 515.086 567.938 516.622 570.516 c -515.231 561.622 m -515.231 561.622 m -512.807 564.221 512.041 568.909 513.513 572.143 c -505.057 503.613 m -505.057 503.613 m -491.105 521.597 487.578 550.594 496.811 571.399 c -376.231 242.85 m -376.231 242.85 m -367.558 347.083 376.659 454.227 402.788 555.503 c -376.231 242.85 m -376.231 242.85 m -333.674 344.305 298.937 449.401 272.65 556.234 c -272.65 556.234 m -272.65 556.234 m -307.505 565.014 339.378 602.929 342.038 638.774 c -272.65 556.234 m -272.65 556.234 m -307.232 565.352 338.574 603.168 341.116 638.841 c -272.65 556.234 m -272.65 556.234 m -306.959 565.686 337.776 603.401 340.202 638.905 c -272.65 556.234 m -272.65 556.234 m -306.685 566.015 336.985 603.628 339.297 638.965 c -272.65 556.234 m -272.65 556.234 m -306.41 566.34 336.201 603.851 338.4 639.023 c -272.65 556.234 m -272.65 556.234 m -306.135 566.662 335.423 604.068 337.513 639.077 c -272.65 556.234 m -272.65 556.234 m -305.86 566.979 334.651 604.279 336.633 639.128 c -272.65 556.234 m -272.65 556.234 m -305.584 567.292 333.885 604.486 335.762 639.176 c -272.65 556.234 m -272.65 556.234 m -305.308 567.601 333.126 604.688 334.898 639.222 c -272.65 556.234 m -272.65 556.234 m -305.031 567.907 332.372 604.884 334.042 639.265 c -272.65 556.234 m -272.65 556.234 m -304.754 568.208 331.624 605.076 333.194 639.305 c -272.65 556.234 m -272.65 556.234 m -304.476 568.506 330.883 605.264 332.354 639.342 c -272.65 556.234 m -272.65 556.234 m -304.198 568.8 330.146 605.446 331.521 639.377 c -272.65 556.234 m -272.65 556.234 m -303.919 569.09 329.416 605.625 330.695 639.409 c -272.65 556.234 m -272.65 556.234 m -303.64 569.377 328.69 605.798 329.877 639.439 c -272.65 556.234 m -272.65 556.234 m -303.361 569.659 327.971 605.968 329.065 639.467 c -272.65 556.234 m -272.65 556.234 m -303.081 569.938 327.256 606.133 328.261 639.492 c -272.65 556.234 m -272.65 556.234 m -302.8 570.214 326.547 606.294 327.463 639.515 c -272.65 556.234 m -272.65 556.234 m -302.519 570.486 325.843 606.451 326.671 639.536 c -272.65 556.234 m -272.65 556.234 m -302.238 570.754 325.144 606.604 325.886 639.555 c -272.65 556.234 m -272.65 556.234 m -301.956 571.019 324.45 606.753 325.108 639.571 c -272.65 556.234 m -272.65 556.234 m -301.674 571.28 323.761 606.899 324.336 639.586 c -272.65 556.234 m -272.65 556.234 m -301.391 571.538 323.077 607.04 323.57 639.598 c -272.65 556.234 m -272.65 556.234 m -301.108 571.792 322.397 607.178 322.81 639.609 c -272.65 556.234 m -272.65 556.234 m -300.825 572.043 321.722 607.312 322.055 639.618 c -272.65 556.234 m -272.65 556.234 m -300.541 572.291 321.052 607.443 321.307 639.624 c -272.65 556.234 m -272.65 556.234 m -300.257 572.535 320.386 607.57 320.565 639.629 c -272.65 556.234 m -272.65 556.234 m -299.972 572.775 319.725 607.694 319.828 639.633 c -272.65 556.234 m -272.65 556.234 m -299.687 573.013 319.068 607.814 319.096 639.634 c -272.65 556.234 m -272.65 556.234 m -299.402 573.247 318.415 607.931 318.37 639.634 c -272.65 556.234 m -272.65 556.234 m -299.116 573.478 317.767 608.044 317.649 639.632 c -272.65 556.234 m -272.65 556.234 m -298.83 573.706 317.123 608.155 316.934 639.629 c -272.65 556.234 m -272.65 556.234 m -298.543 573.93 316.483 608.262 316.223 639.624 c -272.65 556.234 m -272.65 556.234 m -298.256 574.151 315.847 608.366 315.518 639.617 c -272.65 556.234 m -272.65 556.234 m -297.969 574.369 315.214 608.467 314.817 639.609 c -272.65 556.234 m -272.65 556.234 m -297.681 574.584 314.586 608.566 314.122 639.599 c -272.65 556.234 m -272.65 556.234 m -297.393 574.796 313.962 608.661 313.431 639.588 c -272.65 556.234 m -272.65 556.234 m -297.105 575.004 313.341 608.753 312.744 639.575 c -272.65 556.234 m -272.65 556.234 m -296.817 575.21 312.724 608.843 312.063 639.562 c -272.65 556.234 m -272.65 556.234 m -296.528 575.412 312.111 608.929 311.386 639.546 c -272.65 556.234 m -272.65 556.234 m -296.238 575.611 311.502 609.013 310.713 639.53 c -272.65 556.234 m -272.65 556.234 m -295.949 575.807 310.896 609.094 310.045 639.512 c -272.65 556.234 m -272.65 556.234 m -295.659 576.001 310.293 609.173 309.381 639.492 c -272.65 556.234 m -272.65 556.234 m -295.369 576.191 309.694 609.248 308.721 639.472 c -272.65 556.234 m -272.65 556.234 m -295.078 576.378 309.098 609.321 308.065 639.45 c -272.65 556.234 m -272.65 556.234 m -294.787 576.562 308.506 609.392 307.413 639.427 c -272.65 556.234 m -272.65 556.234 m -294.496 576.743 307.917 609.46 306.766 639.403 c -272.65 556.234 m -272.65 556.234 m -294.205 576.921 307.331 609.526 306.122 639.377 c -272.65 556.234 m -272.65 556.234 m -293.913 577.096 306.748 609.589 305.482 639.351 c -272.65 556.234 m -272.65 556.234 m -293.621 577.269 306.168 609.65 304.846 639.323 c -272.65 556.234 m -272.65 556.234 m -293.329 577.438 305.592 609.708 304.213 639.294 c -272.65 556.234 m -272.65 556.234 m -293.037 577.605 305.018 609.764 303.584 639.264 c -272.65 556.234 m -272.65 556.234 m -292.744 577.768 304.448 609.817 302.959 639.233 c -272.65 556.234 m -272.65 556.234 m -292.451 577.929 303.88 609.869 302.337 639.201 c -272.65 556.234 m -272.65 556.234 m -292.158 578.087 303.315 609.918 301.718 639.168 c -272.65 556.234 m -272.65 556.234 m -291.865 578.242 302.753 609.965 301.103 639.134 c -272.65 556.234 m -272.65 556.234 m -291.571 578.394 302.194 610.009 300.492 639.099 c -272.65 556.234 m -272.65 556.234 m -291.278 578.543 301.637 610.052 299.883 639.062 c -272.65 556.234 m -272.65 556.234 m -290.984 578.69 301.084 610.092 299.278 639.025 c -272.65 556.234 m -272.65 556.234 m -290.689 578.833 300.532 610.13 298.676 638.987 c -272.65 556.234 m -272.65 556.234 m -290.395 578.974 299.984 610.166 298.077 638.948 c -272.65 556.234 m -272.65 556.234 m -290.101 579.112 299.438 610.2 297.481 638.908 c -272.65 556.234 m -272.65 556.234 m -289.806 579.248 298.894 610.232 296.888 638.867 c -272.65 556.234 m -272.65 556.234 m -289.511 579.38 298.353 610.262 296.298 638.825 c -272.65 556.234 m -272.65 556.234 m -289.216 579.51 297.815 610.29 295.71 638.782 c -272.65 556.234 m -272.65 556.234 m -288.921 579.637 297.278 610.316 295.126 638.738 c -272.65 556.234 m -272.65 556.234 m -288.626 579.762 296.744 610.34 294.544 638.694 c -272.65 556.234 m -272.65 556.234 m -288.33 579.883 296.213 610.362 293.965 638.648 c -272.65 556.234 m -272.65 556.234 m -288.035 580.002 295.684 610.382 293.389 638.602 c -272.65 556.234 m -272.65 556.234 m -287.739 580.119 295.156 610.4 292.815 638.555 c -272.65 556.234 m -272.65 556.234 m -287.443 580.232 294.632 610.417 292.244 638.507 c -272.65 556.234 m -272.65 556.234 m -287.147 580.343 294.109 610.431 291.675 638.458 c -272.65 556.234 m -272.65 556.234 m -286.851 580.451 293.588 610.444 291.109 638.408 c -272.65 556.234 m -272.65 556.234 m -286.555 580.557 293.07 610.455 290.545 638.358 c -272.65 556.234 m -272.65 556.234 m -286.259 580.66 292.553 610.464 289.983 638.306 c -272.65 556.234 m -272.65 556.234 m -285.962 580.76 292.039 610.471 289.424 638.254 c -272.65 556.234 m -272.65 556.234 m -285.666 580.858 291.526 610.476 288.867 638.201 c -272.65 556.234 m -272.65 556.234 m -285.37 580.953 291.016 610.48 288.313 638.148 c -272.65 556.234 m -272.65 556.234 m -285.073 581.045 290.507 610.482 287.76 638.093 c -272.65 556.234 m -272.65 556.234 m -284.777 581.135 290 610.482 287.21 638.038 c -272.65 556.234 m -272.65 556.234 m -284.48 581.222 289.495 610.481 286.661 637.982 c -272.65 556.234 m -272.65 556.234 m -284.184 581.306 288.992 610.478 286.115 637.925 c -272.65 556.234 m -272.65 556.234 m -283.887 581.388 288.49 610.473 285.571 637.868 c -272.65 556.234 m -272.65 556.234 m -283.59 581.467 287.991 610.466 285.029 637.809 c -272.65 556.234 m -272.65 556.234 m -283.294 581.544 287.493 610.458 284.488 637.75 c -272.65 556.234 m -272.65 556.234 m -282.997 581.618 286.997 610.448 283.95 637.691 c -272.65 556.234 m -272.65 556.234 m -282.701 581.69 286.502 610.437 283.413 637.63 c -272.65 556.234 m -272.65 556.234 m -282.404 581.759 286.009 610.424 282.879 637.569 c -272.65 556.234 m -272.65 556.234 m -282.107 581.825 285.517 610.409 282.346 637.507 c -272.65 556.234 m -272.65 556.234 m -281.811 581.889 285.027 610.393 281.814 637.444 c -272.65 556.234 m -272.65 556.234 m -281.515 581.951 284.539 610.375 281.285 637.381 c -272.65 556.234 m -272.65 556.234 m -281.218 582.01 284.052 610.355 280.757 637.317 c -272.65 556.234 m -272.65 556.234 m -280.922 582.066 283.567 610.334 280.231 637.252 c -272.65 556.234 m -272.65 556.234 m -280.625 582.12 283.083 610.311 279.706 637.187 c -272.65 556.234 m -272.65 556.234 m -280.329 582.171 282.6 610.287 279.183 637.121 c -272.65 556.234 m -272.65 556.234 m -280.033 582.22 282.119 610.262 278.661 637.054 c -272.65 556.234 m -272.65 556.234 m -279.737 582.266 281.639 610.234 278.141 636.986 c -272.65 556.234 m -272.65 556.234 m -279.441 582.31 281.16 610.205 277.622 636.918 c -272.65 556.234 m -272.65 556.234 m -279.145 582.351 280.683 610.175 277.105 636.849 c -272.65 556.234 m -272.65 556.234 m -278.85 582.39 280.207 610.143 276.589 636.779 c -272.65 556.234 m -272.65 556.234 m -278.554 582.426 279.732 610.11 276.074 636.709 c -272.65 556.234 m -272.65 556.234 m -278.259 582.46 279.258 610.075 275.561 636.638 c -272.65 556.234 m -272.65 556.234 m -277.963 582.491 278.786 610.039 275.048 636.566 c -272.65 556.234 m -272.65 556.234 m -277.668 582.52 278.315 610.001 274.538 636.494 c -272.65 556.234 m -272.65 556.234 m -277.373 582.546 277.844 609.962 274.028 636.421 c -272.65 556.234 m -272.65 556.234 m -277.079 582.57 277.375 609.921 273.519 636.347 c -272.65 556.234 m -272.65 556.234 m -276.784 582.591 276.907 609.878 273.012 636.272 c -272.65 556.234 m -272.65 556.234 m -276.489 582.61 276.44 609.835 272.506 636.197 c -272.65 556.234 m -272.65 556.234 m -276.195 582.627 275.974 609.79 272.001 636.121 c -272.65 556.234 m -272.65 556.234 m -275.901 582.641 275.509 609.743 271.496 636.045 c -272.65 556.234 m -272.65 556.234 m -275.607 582.653 275.045 609.695 270.993 635.968 c -272.65 556.234 m -272.65 556.234 m -275.314 582.662 274.582 609.645 270.491 635.89 c -272.65 556.234 m -272.65 556.234 m -275.02 582.668 274.12 609.594 269.99 635.811 c -272.65 556.234 m -272.65 556.234 m -274.727 582.673 273.659 609.542 269.489 635.732 c -272.65 556.234 m -272.65 556.234 m -274.434 582.675 273.199 609.488 268.99 635.652 c -272.65 556.234 m -272.65 556.234 m -274.142 582.674 272.739 609.432 268.491 635.571 c -272.65 556.234 m -272.65 556.234 m -273.85 582.671 272.28 609.375 267.993 635.49 c -272.65 556.234 m -272.65 556.234 m -273.557 582.666 271.823 609.317 267.496 635.408 c -272.65 556.234 m -272.65 556.234 m -273.266 582.658 271.365 609.257 267 635.325 c -272.65 556.234 m -272.65 556.234 m -272.974 582.648 270.909 609.196 266.504 635.242 c -272.65 556.234 m -272.65 556.234 m -272.683 582.635 270.453 609.134 266.01 635.158 c -272.65 556.234 m -272.65 556.234 m -272.392 582.62 269.998 609.07 265.515 635.073 c -272.65 556.234 m -272.65 556.234 m -272.102 582.602 269.544 609.004 265.022 634.988 c -272.65 556.234 m -272.65 556.234 m -271.811 582.582 269.091 608.937 264.529 634.901 c -272.65 556.234 m -272.65 556.234 m -271.521 582.56 268.638 608.869 264.037 634.815 c -272.65 556.234 m -272.65 556.234 m -271.232 582.536 268.185 608.799 263.545 634.727 c -272.65 556.234 m -272.65 556.234 m -270.943 582.508 267.733 608.728 263.053 634.639 c -272.65 556.234 m -272.65 556.234 m -270.654 582.479 267.282 608.655 262.563 634.55 c -272.65 556.234 m -272.65 556.234 m -270.365 582.447 266.832 608.581 262.072 634.46 c -272.65 556.234 m -272.65 556.234 m -270.077 582.413 266.381 608.506 261.582 634.369 c -272.65 556.234 m -272.65 556.234 m -269.79 582.376 265.932 608.429 261.093 634.278 c -272.65 556.234 m -272.65 556.234 m -269.502 582.337 265.482 608.35 260.604 634.186 c -272.65 556.234 m -272.65 556.234 m -269.215 582.296 265.034 608.27 260.115 634.093 c -272.65 556.234 m -272.65 556.234 m -268.929 582.252 264.585 608.189 259.627 634 c -272.65 556.234 m -272.65 556.234 m -268.643 582.206 264.137 608.106 259.139 633.906 c -272.65 556.234 m -272.65 556.234 m -268.357 582.158 263.69 608.022 258.651 633.811 c -272.65 556.234 m -272.65 556.234 m -268.072 582.107 263.243 607.936 258.163 633.715 c -272.65 556.234 m -272.65 556.234 m -267.788 582.053 262.796 607.849 257.676 633.619 c -272.65 556.234 m -272.65 556.234 m -267.503 581.998 262.349 607.76 257.188 633.521 c -272.65 556.234 m -272.65 556.234 m -267.22 581.94 261.903 607.67 256.701 633.424 c -272.65 556.234 m -272.65 556.234 m -266.936 581.88 261.457 607.579 256.214 633.325 c -272.65 556.234 m -272.65 556.234 m -266.654 581.817 261.012 607.486 255.728 633.225 c -272.65 556.234 m -272.65 556.234 m -266.371 581.752 260.566 607.391 255.241 633.125 c -272.65 556.234 m -272.65 556.234 m -266.089 581.684 260.121 607.295 254.754 633.024 c -272.65 556.234 m -272.65 556.234 m -265.808 581.615 259.676 607.197 254.267 632.922 c -272.65 556.234 m -272.65 556.234 m -265.528 581.543 259.231 607.098 253.781 632.819 c -272.65 556.234 m -272.65 556.234 m -265.247 581.468 258.786 606.998 253.294 632.716 c -272.65 556.234 m -272.65 556.234 m -264.968 581.391 258.342 606.896 252.807 632.611 c -272.65 556.234 m -272.65 556.234 m -264.689 581.312 257.897 606.792 252.32 632.506 c -272.65 556.234 m -272.65 556.234 m -264.41 581.231 257.453 606.687 251.833 632.4 c -272.65 556.234 m -272.65 556.234 m -264.132 581.147 257.008 606.58 251.346 632.293 c -272.65 556.234 m -272.65 556.234 m -263.855 581.061 256.564 606.472 250.859 632.185 c -272.65 556.234 m -272.65 556.234 m -263.578 580.972 256.12 606.362 250.371 632.077 c -272.65 556.234 m -272.65 556.234 m -263.302 580.881 255.675 606.251 249.883 631.967 c -272.65 556.234 m -272.65 556.234 m -263.026 580.788 255.231 606.138 249.395 631.857 c -272.65 556.234 m -272.65 556.234 m -262.751 580.692 254.787 606.024 248.907 631.746 c -272.65 556.234 m -272.65 556.234 m -262.477 580.594 254.342 605.908 248.418 631.634 c -272.65 556.234 m -272.65 556.234 m -262.203 580.494 253.897 605.79 247.929 631.521 c -272.65 556.234 m -272.65 556.234 m -261.93 580.392 253.453 605.671 247.44 631.407 c -272.65 556.234 m -272.65 556.234 m -261.658 580.287 253.008 605.55 246.95 631.292 c -272.65 556.234 m -272.65 556.234 m -261.386 580.179 252.563 605.427 246.46 631.176 c -272.65 556.234 m -272.65 556.234 m -261.115 580.07 252.118 605.303 245.969 631.059 c -272.65 556.234 m -272.65 556.234 m -260.845 579.958 251.673 605.177 245.478 630.942 c -272.65 556.234 m -272.65 556.234 m -260.576 579.843 251.227 605.05 244.987 630.823 c -272.65 556.234 m -272.65 556.234 m -260.307 579.727 250.781 604.921 244.494 630.704 c -272.65 556.234 m -272.65 556.234 m -260.038 579.608 250.335 604.79 244.002 630.583 c -272.65 556.234 m -272.65 556.234 m -259.771 579.486 249.889 604.658 243.508 630.461 c -272.65 556.234 m -272.65 556.234 m -259.504 579.363 249.442 604.523 243.014 630.339 c -272.65 556.234 m -272.65 556.234 m -259.238 579.237 248.995 604.387 242.52 630.215 c -272.65 556.234 m -272.65 556.234 m -258.973 579.108 248.548 604.25 242.024 630.091 c -272.65 556.234 m -272.65 556.234 m -258.709 578.978 248.1 604.11 241.528 629.965 c -272.65 556.234 m -272.65 556.234 m -258.445 578.845 247.652 603.969 241.031 629.838 c -272.65 556.234 m -272.65 556.234 m -258.182 578.709 247.203 603.826 240.534 629.71 c -272.65 556.234 m -272.65 556.234 m -257.92 578.572 246.754 603.682 240.035 629.582 c -272.65 556.234 m -272.65 556.234 m -257.658 578.432 246.305 603.535 239.536 629.452 c -272.65 556.234 m -272.65 556.234 m -257.398 578.289 245.855 603.387 239.036 629.321 c -272.65 556.234 m -272.65 556.234 m -257.138 578.144 245.405 603.237 238.535 629.188 c -272.65 556.234 m -272.65 556.234 m -256.879 577.997 244.954 603.085 238.033 629.055 c -272.65 556.234 m -272.65 556.234 m -256.621 577.848 244.502 602.931 237.53 628.921 c -272.65 556.234 m -272.65 556.234 m -256.364 577.696 244.05 602.775 237.026 628.785 c -272.65 556.234 m -272.65 556.234 m -256.108 577.542 243.597 602.617 236.522 628.648 c -272.65 556.234 m -272.65 556.234 m -255.852 577.386 243.144 602.458 236.016 628.51 c -272.65 556.234 m -272.65 556.234 m -255.598 577.227 242.69 602.296 235.509 628.371 c -272.65 556.234 m -272.65 556.234 m -255.344 577.066 242.236 602.133 235 628.231 c -272.65 556.234 m -272.65 556.234 m -255.091 576.902 241.78 601.967 234.491 628.089 c -272.65 556.234 m -272.65 556.234 m -254.84 576.736 241.324 601.8 233.981 627.946 c -272.65 556.234 m -272.65 556.234 m -254.589 576.568 240.868 601.631 233.469 627.802 c -272.65 556.234 m -272.65 556.234 m -254.339 576.397 240.41 601.459 232.956 627.656 c -272.65 556.234 m -272.65 556.234 m -254.09 576.224 239.952 601.286 232.442 627.51 c -272.65 556.234 m -272.65 556.234 m -253.841 576.049 239.493 601.11 231.926 627.362 c -272.65 556.234 m -272.65 556.234 m -253.594 575.871 239.033 600.932 231.409 627.212 c -272.65 556.234 m -272.65 556.234 m -253.348 575.691 238.572 600.753 230.891 627.061 c -272.65 556.234 m -272.65 556.234 m -253.103 575.509 238.11 600.571 230.371 626.909 c -272.65 556.234 m -272.65 556.234 m -252.859 575.324 237.648 600.387 229.85 626.755 c -272.65 556.234 m -272.65 556.234 m -252.615 575.137 237.184 600.2 229.328 626.6 c -272.65 556.234 m -272.65 556.234 m -252.373 574.947 236.72 600.012 228.804 626.444 c -272.65 556.234 m -272.65 556.234 m -252.132 574.755 236.255 599.821 228.278 626.286 c -272.65 556.234 m -272.65 556.234 m -251.892 574.561 235.788 599.628 227.75 626.126 c -272.65 556.234 m -272.65 556.234 m -251.653 574.364 235.321 599.433 227.222 625.966 c -272.65 556.234 m -272.65 556.234 m -251.415 574.165 234.852 599.235 226.691 625.803 c -272.65 556.234 m -272.65 556.234 m -251.177 573.963 234.383 599.035 226.159 625.639 c -272.65 556.234 m -272.65 556.234 m -250.942 573.759 233.912 598.833 225.625 625.473 c -272.65 556.234 m -272.65 556.234 m -250.707 573.553 233.44 598.628 225.089 625.306 c -272.65 556.234 m -272.65 556.234 m -250.473 573.344 232.967 598.421 224.551 625.137 c -272.65 556.234 m -272.65 556.234 m -250.24 573.133 232.493 598.212 224.011 624.967 c -272.65 556.234 m -272.65 556.234 m -250.009 572.919 232.018 598 223.47 624.795 c -272.65 556.234 m -272.65 556.234 m -249.778 572.703 231.541 597.785 222.927 624.621 c -272.65 556.234 m -272.65 556.234 m -249.549 572.484 231.063 597.568 222.381 624.445 c -272.65 556.234 m -272.65 556.234 m -249.321 572.263 230.584 597.348 221.834 624.268 c -272.65 556.234 m -272.65 556.234 m -249.093 572.04 230.103 597.126 221.284 624.089 c -272.65 556.234 m -272.65 556.234 m -248.868 571.814 229.621 596.901 220.733 623.908 c -272.65 556.234 m -272.65 556.234 m -248.643 571.586 229.138 596.674 220.179 623.725 c -272.65 556.234 m -272.65 556.234 m -248.419 571.355 228.654 596.443 219.623 623.54 c -272.65 556.234 m -272.65 556.234 m -248.197 571.122 228.167 596.21 219.065 623.353 c -272.65 556.234 m -272.65 556.234 m -247.976 570.886 227.68 595.975 218.505 623.165 c -272.65 556.234 m -272.65 556.234 m -247.756 570.648 227.191 595.736 217.942 622.974 c -272.65 556.234 m -272.65 556.234 m -247.537 570.407 226.7 595.495 217.377 622.782 c -272.65 556.234 m -272.65 556.234 m -247.32 570.164 226.208 595.25 216.809 622.587 c -272.65 556.234 m -272.65 556.234 m -247.104 569.918 225.714 595.003 216.239 622.391 c -272.65 556.234 m -272.65 556.234 m -246.889 569.67 225.219 594.753 215.666 622.192 c -272.65 556.234 m -272.65 556.234 m -246.675 569.42 224.722 594.499 215.091 621.991 c -272.65 556.234 m -272.65 556.234 m -246.463 569.166 224.224 594.243 214.514 621.788 c -272.65 556.234 m -272.65 556.234 m -246.252 568.911 223.723 593.984 213.933 621.583 c -272.65 556.234 m -272.65 556.234 m -246.042 568.652 223.221 593.721 213.35 621.376 c -272.65 556.234 m -272.65 556.234 m -245.833 568.391 222.717 593.455 212.764 621.166 c -272.65 556.234 m -272.65 556.234 m -245.626 568.128 222.212 593.186 212.176 620.954 c -272.65 556.234 m -272.65 556.234 m -245.42 567.862 221.704 592.914 211.584 620.739 c -272.65 556.234 m -272.65 556.234 m -245.216 567.593 221.195 592.638 210.99 620.522 c -272.65 556.234 m -272.65 556.234 m -245.013 567.322 220.684 592.359 210.392 620.303 c -272.65 556.234 m -272.65 556.234 m -244.811 567.048 220.17 592.077 209.792 620.081 c -272.65 556.234 m -272.65 556.234 m -244.611 566.772 219.655 591.791 209.188 619.857 c -272.65 556.234 m -272.65 556.234 m -244.412 566.493 219.138 591.501 208.582 619.63 c -272.65 556.234 m -272.65 556.234 m -244.214 566.211 218.619 591.208 207.972 619.4 c -272.65 556.234 m -272.65 556.234 m -244.018 565.927 218.098 590.912 207.359 619.168 c -272.65 556.234 m -272.65 556.234 m -243.823 565.64 217.574 590.611 206.742 618.933 c -272.65 556.234 m -272.65 556.234 m -243.63 565.35 217.049 590.307 206.122 618.695 c -272.65 556.234 m -272.65 556.234 m -243.438 565.058 216.521 589.999 205.499 618.454 c -272.65 556.234 m -272.65 556.234 m -243.248 564.763 215.991 589.687 204.872 618.211 c -272.65 556.234 m -272.65 556.234 m -243.059 564.465 215.459 589.372 204.242 617.964 c -272.65 556.234 m -272.65 556.234 m -242.872 564.165 214.924 589.052 203.608 617.715 c -272.65 556.234 m -272.65 556.234 m -242.686 563.862 214.388 588.728 202.971 617.462 c -272.65 556.234 m -272.65 556.234 m -242.502 563.556 213.848 588.4 202.329 617.207 c -272.65 556.234 m -272.65 556.234 m -242.319 563.247 213.307 588.068 201.684 616.948 c -272.65 556.234 m -272.65 556.234 m -242.138 562.935 212.763 587.731 201.035 616.686 c -272.65 556.234 m -272.65 556.234 m -241.958 562.621 212.216 587.391 200.382 616.421 c -272.65 556.234 m -272.65 556.234 m -241.78 562.304 211.667 587.045 199.725 616.152 c -272.65 556.234 m -272.65 556.234 m -241.604 561.984 211.116 586.696 199.064 615.88 c -272.65 556.234 m -272.65 556.234 m -241.429 561.661 210.562 586.342 198.398 615.604 c -272.65 556.234 m -272.65 556.234 m -241.255 561.335 210.005 585.983 197.729 615.325 c -272.65 556.234 m -272.65 556.234 m -241.084 561.007 209.445 585.619 197.055 615.042 c -272.65 556.234 m -272.65 556.234 m -240.914 560.675 208.883 585.251 196.377 614.755 c -272.65 556.234 m -272.65 556.234 m -240.745 560.341 208.318 584.878 195.694 614.465 c -272.65 556.234 m -272.65 556.234 m -240.578 560.003 207.75 584.499 195.007 614.171 c -272.65 556.234 m -272.65 556.234 m -240.413 559.663 207.18 584.116 194.315 613.873 c -272.65 556.234 m -272.65 556.234 m -240.25 559.319 206.606 583.728 193.618 613.57 c -272.65 556.234 m -272.65 556.234 m -240.088 558.973 206.029 583.334 192.916 613.264 c -272.65 556.234 m -272.65 556.234 m -239.928 558.623 205.45 582.935 192.21 612.954 c -272.65 556.234 m -272.65 556.234 m -239.77 558.271 204.867 582.53 191.499 612.639 c -272.65 556.234 m -272.65 556.234 m -239.614 557.915 204.282 582.121 190.782 612.32 c -272.65 556.234 m -272.65 556.234 m -239.459 557.557 203.693 581.705 190.061 611.996 c -272.65 556.234 m -272.65 556.234 m -239.306 557.195 203.101 581.284 189.334 611.668 c -272.65 556.234 m -272.65 556.234 m -239.155 556.83 202.506 580.857 188.602 611.335 c -272.65 556.234 m -272.65 556.234 m -239.006 556.461 201.907 580.423 187.864 610.997 c -272.65 556.234 m -272.65 556.234 m -238.859 556.09 201.305 579.984 187.121 610.655 c -272.65 556.234 m -272.65 556.234 m -238.713 555.715 200.7 579.539 186.372 610.307 c -272.65 556.234 m -272.65 556.234 m -238.57 555.337 200.092 579.087 185.617 609.955 c -272.65 556.234 m -272.65 556.234 m -238.428 554.956 199.48 578.629 184.857 609.597 c -272.65 556.234 m -272.65 556.234 m -238.288 554.571 198.864 578.165 184.091 609.234 c -272.65 556.234 m -272.65 556.234 m -238.15 554.183 198.245 577.694 183.318 608.865 c -272.65 556.234 m -272.65 556.234 m -238.014 553.791 197.622 577.216 182.54 608.491 c -272.65 556.234 m -272.65 556.234 m -237.88 553.396 196.996 576.731 181.755 608.111 c -272.65 556.234 m -272.65 556.234 m -237.748 552.998 196.366 576.239 180.964 607.726 c -272.65 556.234 m -272.65 556.234 m -237.618 552.596 195.732 575.739 180.166 607.334 c -272.65 556.234 m -272.65 556.234 m -237.49 552.191 195.094 575.233 179.362 606.936 c -272.65 556.234 m -272.65 556.234 m -237.364 551.781 194.452 574.719 178.551 606.533 c -272.65 556.234 m -272.65 556.234 m -237.24 551.369 193.807 574.197 177.733 606.122 c -272.65 556.234 m -272.65 556.234 m -237.118 550.952 193.157 573.668 176.909 605.705 c -272.65 556.234 m -272.65 556.234 m -236.998 550.532 192.503 573.13 176.077 605.282 c -272.65 556.234 m -272.65 556.234 m -236.881 550.108 191.846 572.585 175.237 604.852 c -272.65 556.234 m -272.65 556.234 m -236.765 549.68 191.184 572.031 174.391 604.414 c -272.65 556.234 m -272.65 556.234 m -236.652 549.249 190.517 571.468 173.537 603.97 c -272.65 556.234 m -272.65 556.234 m -236.54 548.813 189.847 570.897 172.675 603.518 c -272.65 556.234 m -272.65 556.234 m -236.432 548.374 189.172 570.318 171.806 603.059 c -272.65 556.234 m -272.65 556.234 m -236.325 547.93 188.493 569.729 170.928 602.591 c -272.65 556.234 m -272.65 556.234 m -236.22 547.483 187.81 569.13 170.043 602.116 c -376.231 242.85 m -376.231 242.85 m -303.633 327.085 228.664 409.332 151.498 489.402 c -151.498 489.402 m -151.498 489.402 m -161.412 512.141 162.475 540.35 154.298 563.77 c -154.298 563.77 m -154.298 563.77 m -165.535 568.901 172.604 586.827 167.893 598.246 c -154.298 563.77 m -154.298 563.77 m -163.456 570.213 167.751 585.985 163.124 596.182 c -154.298 563.77 m -154.298 563.77 m -161.502 571.156 163.732 585.064 159.199 594.332 c -154.298 563.77 m -154.298 563.77 m -159.646 571.791 160.313 584.097 155.863 592.648 c -154.298 563.77 m -154.298 563.77 m -157.876 572.157 157.337 583.098 152.951 591.092 c -154.298 563.77 m -154.298 563.77 m -156.188 572.283 154.693 582.07 150.347 589.629 c -154.298 563.77 m -154.298 563.77 m -154.582 572.188 152.299 581.009 147.967 588.232 c -154.298 563.77 m -154.298 563.77 m -153.062 571.889 150.096 579.908 145.751 586.876 c -154.298 563.77 m -154.298 563.77 m -151.635 571.397 148.034 578.757 143.647 585.54 c -154.298 563.77 m -154.298 563.77 m -150.31 570.724 146.077 577.543 141.615 584.203 c -154.298 563.77 m -154.298 563.77 m -149.096 569.877 144.191 576.25 139.619 582.842 c -154.298 563.77 m -154.298 563.77 m -148.005 568.865 142.348 574.858 137.625 581.435 c -154.298 563.77 m -154.298 563.77 m -147.047 567.691 140.52 573.341 135.601 579.955 c -154.298 563.77 m -154.298 563.77 m -146.236 566.361 138.682 571.667 133.511 578.372 c -154.298 563.77 m -154.298 563.77 m -145.586 564.875 136.806 569.793 131.315 576.646 c -154.298 563.77 m -154.298 563.77 m -145.114 563.231 134.863 567.663 128.966 574.724 c -154.298 563.77 m -154.298 563.77 m -144.84 561.421 132.819 565.198 126.406 572.536 c -151.498 489.402 m -151.498 489.402 m -143.662 509.353 133.019 528.408 120.142 545.544 c -120.142 545.544 m -120.142 545.544 m -120.834 550.422 120 555.716 117.841 560.146 c -120.142 545.544 m -120.142 545.544 m -115.408 546.216 110.714 548.118 106.848 550.932 c -151.498 489.402 m -151.498 489.402 m -131.904 497.945 113.24 509.03 96.3625 522.148 c -96.3625 522.148 m -96.3625 522.148 m -100.503 528.633 99.7581 539.327 94.7576 545.174 c -96.3625 522.148 m -96.3625 522.148 m -99.0454 528.797 97.4372 537.993 92.6567 543.336 c -96.3625 522.148 m -96.3625 522.148 m -97.6983 528.781 95.4528 536.729 90.8435 541.682 c -96.3625 522.148 m -96.3625 522.148 m -96.4524 528.605 93.7202 535.513 89.2386 540.162 c -96.3625 522.148 m -96.3625 522.148 m -95.3039 528.283 92.179 534.327 87.7859 538.738 c -96.3625 522.148 m -96.3625 522.148 m -94.2525 527.828 90.7848 533.154 86.444 537.381 c -96.3625 522.148 m -96.3625 522.148 m -93.3005 527.251 89.5041 531.976 85.1807 536.065 c -96.3625 522.148 m -96.3625 522.148 m -92.4518 526.56 88.3103 530.777 83.9702 534.767 c -96.3625 522.148 m -96.3625 522.148 m -91.7117 525.763 87.1822 529.54 82.7902 533.465 c -96.3625 522.148 m -96.3625 522.148 m -91.0863 524.868 86.1021 528.245 81.6206 532.138 c -96.3625 522.148 m -96.3625 522.148 m -90.5828 523.88 85.0543 526.871 80.4423 530.761 c -96.3625 522.148 m -96.3625 522.148 m -90.2096 522.805 84.025 525.39 79.2353 529.308 c -96.3625 522.148 m -96.3625 522.148 m -89.9763 521.646 83.0009 523.77 77.978 527.745 c -96.3625 522.148 m -96.3625 522.148 m -89.8947 520.405 81.9691 521.966 76.6454 526.031 c -96.3625 522.148 m -96.3625 522.148 m -89.9795 519.08 80.9169 519.92 75.2069 524.11 c -96.3625 522.148 m -96.3625 522.148 m -90.2506 517.665 79.8314 517.552 73.6241 521.903 c -96.3625 522.148 m -96.3625 522.148 m -90.7357 516.146 78.7003 514.746 71.8459 519.296 c -151.498 489.402 m -151.498 489.402 m -128.613 480.414 100.788 480.157 77.7415 488.721 c -77.7415 488.721 m -77.7415 488.721 m -75.1678 494.339 71.4934 499.562 67.0763 503.883 c -67.0763 503.883 m -67.0763 503.883 m -67.0547 505.85 66.3344 507.903 65.122 509.452 c -67.0763 503.883 m -67.0763 503.883 m -65.2145 503.863 63.3022 504.284 61.6212 505.085 c -77.7415 488.721 m -77.7415 488.721 m -71.5716 485.894 64.0043 485.264 57.4518 487.031 c -57.4518 487.031 m -57.4518 487.031 m -57.4566 489.931 56.0608 493.044 53.8923 494.97 c -57.4518 487.031 m -57.4518 487.031 m -56.1438 489.305 54.3262 491.347 52.2189 492.91 c -57.4518 487.031 m -57.4518 487.031 m -55.2458 488.31 53.062 489.627 50.9025 490.983 c -57.4518 487.031 m -57.4518 487.031 m -54.7998 487.035 52.077 487.707 49.7274 488.937 c -57.4518 487.031 m -57.4518 487.031 m -54.8788 485.551 51.3101 485.317 48.5659 486.449 c -57.4518 487.031 m -57.4518 487.031 m -55.6264 483.881 50.8623 481.924 47.3497 482.88 c -267.734 20.3125 m -267.734 20.3125 m -272.122 84.4568 220.107 160.362 158.703 179.422 c -158.703 179.422 m -158.703 179.422 m -174.885 260.815 129.107 364.319 58.0008 407.105 c -58.0008 407.105 m -58.0008 407.105 m -48.9507 412.551 39.4757 417.345 29.7275 421.411 c -158.703 179.422 m -158.703 179.422 m -157.787 248.946 98.2019 326.051 31.1565 344.473 c -158.703 179.422 m -158.703 179.422 m -145.522 237.65 82.4157 291.882 22.8677 296.156 c -22.8677 296.156 m -22.8677 296.156 m -22.1885 305.686 12.7192 315.774 3.25097 317.055 c -22.8677 296.156 m -22.8677 296.156 m -19.9163 304.075 11.0686 310.765 2.64518 311.448 c -22.8677 296.156 m -22.8677 296.156 m -18.247 302.332 10.0834 306.613 2.37585 306.903 c -22.8677 296.156 m -22.8677 296.156 m -17.084 300.488 9.52772 303.006 2.30166 303.01 c -22.8677 296.156 m -22.8677 296.156 m -16.3774 298.579 9.28175 299.74 2.35777 299.514 c -22.8677 296.156 m -22.8677 296.156 m -16.1012 296.642 9.2862 296.668 2.51613 296.235 c -22.8677 296.156 m -22.8677 296.156 m -16.2426 294.717 9.51948 293.672 2.77003 293.033 c -22.8677 296.156 m -22.8677 296.156 m -16.7982 292.844 9.98929 290.644 3.12927 289.778 c -22.8677 296.156 m -22.8677 296.156 m -17.7736 291.064 10.7336 287.472 3.62163 286.335 c -22.8677 296.156 m -22.8677 296.156 m -19.1873 289.42 11.8313 284.023 4.30117 282.534 c -22.8677 296.156 m -22.8677 296.156 m -21.081 287.953 13.4278 280.117 5.26872 278.137 c -158.703 179.422 m -158.703 179.422 m -136.729 227.077 75.2814 263.17 22.9582 259.157 c -158.703 179.422 m -158.703 179.422 m -130.524 217.151 73.0986 239.289 26.8854 230.238 c -158.703 179.422 m -158.703 179.422 m -126.351 207.789 73.8436 219.273 32.6035 207.003 c -32.6035 207.003 m -32.6035 207.003 m -30.9165 212.049 23.4744 215.859 18.3942 214.276 c -32.6035 207.003 m -32.6035 207.003 m -30.6507 211.761 23.5294 215.09 18.6262 213.538 c -32.6035 207.003 m -32.6035 207.003 m -30.4081 211.475 23.5897 214.372 18.8466 212.847 c -32.6035 207.003 m -32.6035 207.003 m -30.1872 211.192 23.6547 213.698 19.0566 212.198 c -32.6035 207.003 m -32.6035 207.003 m -29.9865 210.911 23.7237 213.063 19.2573 211.587 c -32.6035 207.003 m -32.6035 207.003 m -29.8048 210.632 23.7963 212.462 19.4497 211.008 c -32.6035 207.003 m -32.6035 207.003 m -29.6412 210.355 23.8723 211.892 19.6346 210.458 c -32.6035 207.003 m -32.6035 207.003 m -29.4948 210.08 23.9515 211.35 19.813 209.934 c -32.6035 207.003 m -32.6035 207.003 m -29.3648 209.806 24.0336 210.833 19.9854 209.433 c -32.6035 207.003 m -32.6035 207.003 m -29.2506 209.534 24.1185 210.337 20.1524 208.952 c -32.6035 207.003 m -32.6035 207.003 m -29.1516 209.263 24.2061 209.861 20.3148 208.49 c -32.6035 207.003 m -32.6035 207.003 m -29.0674 208.994 24.2965 209.403 20.4729 208.043 c -32.6035 207.003 m -32.6035 207.003 m -28.9974 208.727 24.3896 208.961 20.6274 207.611 c -32.6035 207.003 m -32.6035 207.003 m -28.9414 208.462 24.4853 208.533 20.7785 207.192 c -32.6035 207.003 m -32.6035 207.003 m -28.899 208.199 24.5838 208.118 20.9268 206.784 c -32.6035 207.003 m -32.6035 207.003 m -28.8698 207.938 24.6851 207.714 21.0727 206.385 c -32.6035 207.003 m -32.6035 207.003 m -28.8537 207.68 24.7893 207.321 21.2164 205.996 c -32.6035 207.003 m -32.6035 207.003 m -28.8503 207.424 24.8964 206.936 21.3584 205.615 c -32.6035 207.003 m -32.6035 207.003 m -28.8594 207.171 25.0067 206.56 21.499 205.24 c -32.6035 207.003 m -32.6035 207.003 m -28.8809 206.922 25.1202 206.19 21.6385 204.87 c -32.6035 207.003 m -32.6035 207.003 m -28.9145 206.675 25.2371 205.827 21.7772 204.506 c -32.6035 207.003 m -32.6035 207.003 m -28.9601 206.432 25.3576 205.468 21.9154 204.145 c -32.6035 207.003 m -32.6035 207.003 m -29.0176 206.192 25.4819 205.114 22.0534 203.787 c -32.6035 207.003 m -32.6035 207.003 m -29.0867 205.956 25.6102 204.764 22.1916 203.431 c -32.6035 207.003 m -32.6035 207.003 m -29.1675 205.725 25.7428 204.416 22.3302 203.077 c -32.6035 207.003 m -32.6035 207.003 m -29.2597 205.498 25.8798 204.071 22.4695 202.723 c -32.6035 207.003 m -32.6035 207.003 m -29.3632 205.276 26.0217 203.726 22.6099 202.369 c -32.6035 207.003 m -32.6035 207.003 m -29.4781 205.058 26.1688 203.382 22.7516 202.014 c -32.6035 207.003 m -32.6035 207.003 m -29.6041 204.846 26.3214 203.038 22.8951 201.657 c -32.6035 207.003 m -32.6035 207.003 m -29.7413 204.639 26.4799 202.694 23.0405 201.297 c -32.6035 207.003 m -32.6035 207.003 m -29.8897 204.438 26.6447 202.347 23.1884 200.934 c -32.6035 207.003 m -32.6035 207.003 m -30.0491 204.243 26.8164 201.998 23.3391 200.567 c -32.6035 207.003 m -32.6035 207.003 m -30.2196 204.055 26.9955 201.645 23.4931 200.194 c -32.6035 207.003 m -32.6035 207.003 m -30.4012 203.873 27.1825 201.289 23.6506 199.815 c -32.6035 207.003 m -32.6035 207.003 m -30.5939 203.698 27.3782 200.927 23.8124 199.429 c -32.6035 207.003 m -32.6035 207.003 m -30.7978 203.53 27.5833 200.56 23.9788 199.034 c -32.6035 207.003 m -32.6035 207.003 m -31.013 203.37 27.7986 200.186 24.1506 198.63 c -32.6035 207.003 m -32.6035 207.003 m -31.2397 203.217 28.025 199.804 24.3282 198.215 c -32.6035 207.003 m -32.6035 207.003 m -31.4779 203.073 28.2635 199.412 24.5125 197.788 c -32.6035 207.003 m -32.6035 207.003 m -31.728 202.938 28.5154 199.011 24.7042 197.347 c -32.6035 207.003 m -32.6035 207.003 m -31.9902 202.811 28.7819 198.597 24.9043 196.89 c -32.6035 207.003 m -32.6035 207.003 m -32.2648 202.693 29.0646 198.17 25.1137 196.417 c -32.6035 207.003 m -32.6035 207.003 m -32.5523 202.586 29.3652 197.729 25.3337 195.923 c -32.6035 207.003 m -32.6035 207.003 m -32.8532 202.488 29.6855 197.27 25.5655 195.408 c -32.6035 207.003 m -32.6035 207.003 m -33.168 202.402 30.0279 196.792 25.8106 194.868 c -32.6035 207.003 m -32.6035 207.003 m -33.4977 202.326 30.395 196.293 26.0709 194.301 c -32.6035 207.003 m -32.6035 207.003 m -33.843 202.263 30.7897 195.77 26.3482 193.702 c -158.703 179.422 m -158.703 179.422 m -123.854 198.934 76.4073 202.261 39.1764 187.802 c -158.703 179.422 m -158.703 179.422 m -122.793 190.569 80.176 187.571 46.1796 171.507 c -158.703 179.422 m -158.703 179.422 m -123 182.699 84.8114 174.687 53.4364 157.337 c -53.4364 157.337 m -53.4364 157.337 m -51.4744 159.659 47.4576 160.707 44.6111 159.639 c -53.4364 157.337 m -53.4364 157.337 m -51.0773 158.555 47.8944 158.639 45.4741 157.548 c -53.4364 157.337 m -53.4364 157.337 m -51.0072 157.541 48.43 157.03 46.2628 155.913 c -53.4364 157.337 m -53.4364 157.337 m -51.2117 156.627 49.0507 155.675 47.0257 154.512 c -53.4364 157.337 m -53.4364 157.337 m -51.66 155.836 49.7766 154.454 47.8125 153.209 c -53.4364 157.337 m -53.4364 157.337 m -52.3322 155.198 50.6549 153.281 48.682 151.903 c -53.4364 157.337 m -53.4364 157.337 m -53.2188 154.75 51.7716 152.084 49.7208 150.493 c -53.4364 157.337 m -53.4364 157.337 m -54.3291 154.538 53.2885 150.784 51.0824 148.845 c -158.703 179.422 m -158.703 179.422 m -124.351 175.353 90.1358 163.218 60.897 144.733 c -158.703 179.422 m -158.703 179.422 m -126.748 168.571 96.07 152.867 68.5828 133.287 c -158.703 179.422 m -158.703 179.422 m -130.107 162.406 102.602 143.41 76.5611 122.693 c -76.5611 122.693 m -76.5611 122.693 m -74.5826 124.506 70.8753 124.904 68.5571 123.553 c -76.5611 122.693 m -76.5611 122.693 m -74.3827 123.686 71.4123 123.473 69.398 122.179 c -76.5611 122.693 m -76.5611 122.693 m -74.3662 122.943 71.9494 122.335 70.1342 121.076 c -76.5611 122.693 m -76.5611 122.693 m -74.505 122.275 72.4974 121.38 70.8113 120.132 c -76.5611 122.693 m -76.5611 122.693 m -74.7809 121.686 73.0722 120.54 71.4642 119.276 c -76.5611 122.693 m -76.5611 122.693 m -75.1803 121.186 73.6944 119.769 72.1236 118.461 c -76.5611 122.693 m -76.5611 122.693 m -75.693 120.788 74.3918 119.032 72.822 117.647 c -76.5611 122.693 m -76.5611 122.693 m -76.3121 120.507 75.2041 118.299 73.5997 116.792 c -76.5611 122.693 m -76.5611 122.693 m -77.0359 120.36 76.1929 117.54 74.5157 115.85 c -76.5611 122.693 m -76.5611 122.693 m -77.8725 120.376 77.4613 116.723 75.6674 114.755 c -158.703 179.422 m -158.703 179.422 m -134.361 156.916 109.768 134.677 84.9351 112.713 c -84.9351 112.713 m -84.9351 112.713 m -82.984 113.862 80.153 113.938 78.1436 112.893 c -84.9351 112.713 m -84.9351 112.713 m -83.0056 112.527 81.0667 111.809 79.4818 110.693 c -84.9351 112.713 m -84.9351 112.713 m -83.5518 111.489 82.1677 110.267 80.7829 109.045 c -84.9351 112.713 m -84.9351 112.713 m -84.5151 110.819 83.5623 108.982 82.2568 107.548 c -84.9351 112.713 m -84.9351 112.713 m -85.8387 110.634 85.5638 107.81 84.2762 105.944 c -158.703 179.422 m -158.703 179.422 m -139.445 152.167 117.652 126.541 93.8443 103.155 c -158.703 179.422 m -158.703 179.422 m -145.306 148.232 126.38 118.915 103.471 93.8655 c -103.471 93.8655 m -103.471 93.8655 m -102.336 92.6237 101.19 91.3912 100.034 90.1683 c -267.734 20.3125 (/) t -318.283 6.59632 (sys) t -334.32 11.257 (tmp) t -361.096 24.3301 (tmpsim) t -406.419 71.7352 (users) t -418.012 32.6494 (demons) t -458.604 63.1285 (homepc4-80) t -496.512 64.5346 (stoulsn) t -376.231 242.85 (usr) t -539.236 125.332 (X11R6) t -553.928 112.662 (lib) t -568.953 168.23 (bin) t -590.901 219.824 (games) t -602.011 280.943 (include) t -597.024 351.58 (lib) t -567.947 428.919 (lib32) t -599.188 445.267 (nvidia) t -505.057 503.613 (local) t -568.336 504.157 (bin) t -558.83 519.96 (games) t -549.455 532.154 (include) t -539.682 542.534 (lib) t -528.705 552.129 (sbin) t -515.231 561.622 (share) t -496.811 571.399 (src) t -402.788 555.503 (sbin) t -272.65 556.234 (share) t -151.498 489.402 (src) t -154.298 563.77 (linux-headers-2.6.17-10) t -120.142 545.544 (linux-headers-2.6.17-10-generic) t -96.3625 522.148 (linux-headers-2.6.17-11) t -77.7415 488.721 (linux-headers-2.6.17-11-generic) t -67.0763 503.883 (include) t -57.4518 487.031 (scripts) t -158.703 179.422 (var) t -58.0008 407.105 (autofs) t -29.7275 421.411 (misc) t -31.1565 344.473 (backups) t -22.8677 296.156 (cache) t -22.9582 259.157 (crash) t -26.8854 230.238 (games) t -32.6035 207.003 (lib) t -39.1764 187.802 (local) t -46.1796 171.507 (lock) t -53.4364 157.337 (log) t -60.897 144.733 (mail) t -68.5828 133.287 (opt) t -76.5611 122.693 (run) t -84.9351 112.713 (spool) t -93.8443 103.155 (tmp) t -103.471 93.8655 (yp) t diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/htree.pdf b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/htree.pdf deleted file mode 100755 index ef32b460cf..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/htree.pdf and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/intern-edge.jpg b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/intern-edge.jpg deleted file mode 100755 index 2b8e8d326d..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/intern-edge.jpg and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/lentille1.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/lentille1.eps deleted file mode 100755 index 4bee3916f8..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/lentille1.eps +++ /dev/null @@ -1,43 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Pages: 1 -%%BoundingBox: 0 0 550 227 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%EndComments -%%Page: 1 1 -save 9 dict begin -{/T currentfile/ASCII85Decode filter def[/Indexed/DeviceRGB 3 T 12 string readstring pop]setcolorspace -/F T/LZWDecode filter def -<> image - F closefile T closefile} -%%BeginData:; -exec -s8W*!!!(sWs6]jeJ,g]g3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp ->H>q_R=AlC^cenm@9:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`C/mt^8,Z;Y`9\^G8eZ?\J -0L;"!98>5e+2HVumZ4Jq5nDN+H?_/=S$E\=Qs!Ze2JFOe` -iX#K*cr9e;Jq*t8KgKGu!;eC)Uai,>X^j>I6&=#SU+fF`_O![5$W-48&0a1IW%:&9K1.1&@#W+in1+ -#RnX;HXViW`[KuUD"0-_i@M@/UAna\[e-h7t;KF3h-;^pb-QeTuceU!cA)N7_s+D];PF?&Fut#]2.PV& -"E_A"Z]#&S7^1P$osd;ltBX-e4A!0K`CSNh9B$9jqtq'-2KdgrR1-QI#o&fT4m'AX\Fp!%%&i?7A#_ -M+'B5%\@$@N)PD*[aJ5S:5D@DPMbU>dY:9E@S;*F2\IJb@u/]&PN)"N%?DdE1.P^s&(X@6j[fq0K>P -`J*0ar(SQ_?=W:hBD4P:`OS)rj\Bq44+MEKU+8C!Zckc\G!PU+q>4dI=S7\YrUkpC#$[2QJeRVV:OW`Z_Vp]TTP%pX`0C&]6^+$>]CS@,YjFNBDHc:EePY`N9VU(u=U]7MuFpR$hHbk"ig:Y0gh+q -HVV83^".mRZ360&U&7glf\V,lF#(12OqlTUnWgP3i1WQBuRT#CToi2I]>DTRRRpq/--e$^1Df#J,k@ -8?^r;+0mFPE!>qHkPE"'>PgC<;?s;\:ktQb)W$#!?IgqI\eS=fja] -D!!cX1b)D+uMuWn,VZqX'7I/$dmPZ!2(hMeTcZe[O<>k+dRILN.S.h1m5AI_p.c]8h@cS^QG33kQLU -@r']`ms/4+p@H28kkR/C:Hlh2lIbgD\a0jECZbHYI"-!OfCP1,^VC)Nr*KHqr5F2Ti;EU;+Ek1"K&F -YG%YPuB.MHNi-s;ab$j^GCJ)T%3+c)jPOsPsZGbQXEU:@K\Mk^!`0oVkedP[#ZGiC`DUU]kXO/)LP6 -'.m&&k.qXKEM~> -%%EndData -end restore showpage -%%Trailer -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/lentille1.jpg b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/lentille1.jpg deleted file mode 100755 index 7c17fc5f7e..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/lentille1.jpg and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/lentille1.png b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/lentille1.png deleted file mode 100755 index c9a36f3b86..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/lentille1.png and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/lentille2.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/lentille2.eps deleted file mode 100755 index cb1732e119..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/lentille2.eps +++ /dev/null @@ -1,91 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Pages: 1 -%%BoundingBox: 0 0 640 480 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%EndComments -%%Page: 1 1 -save 9 dict begin -{/T currentfile/ASCII85Decode filter def[/Indexed/DeviceRGB 2 T 9 string readstring pop]setcolorspace -/F T/LZWDecode filter def -<> image - F closefile T closefile} -%%BeginData:; -exec -s8W*!!!)Ee!.Y%l:cK^9%0qPQ@8OIE2B<5RQF6m;rd6 -]l"`#!@*RCo`ROY.sD6-W(Y;@_8o"iNk=KoeI$g<]KD>Y&I8C47$-b1Ob+.u#8o[B=r.^`!2:,=^2L -"f'h9ZG=T1IgqRur":ja]5`f;=*,bYidK-JC]YR6(RdUF4$,7A=jKYMG1#_l!.]Y&s@9^GJ/7M/f?* -]GfqfT@k.)@\be1L0(]/l0-si6Fku+KJ;EHa>k38Kt;;_3;bbl(Sk11:#;l'UI6A."*B"+EY1*1p#* -q+WN]\l5;Q8d\7g],:i.E43XkURnt@f'h5c6aCT%@!if-,c\f,V7o`Q1C'@d@#ac!/:A/77@3Ld81t -p(X.)2c:`U+tSHZ;kd=+Q&["eJh<-fW#e-VjA5b/LY4<2:kE:mCOK -=D-sacNAbfpdK%"DFMb9\rM@5`E\jaf2^K*/`Jn[akHALa0%Y(,sCL2gOk9rMpNpCATb_YIC3XN%B= -@T3),1&A.pt4aJF,j=[WYC$B=*.YPCHQpD -tP(4/-XH+lOT6*mDk))e'-'UHOlYp`qNuQ^01L.R?XE4-._A?EQeWOkLcP!kpnp,GF2jYQ*%/r7fig -aNK]"5Y_pj5=L%C'W]]0%0?FC<;?R9ZeQdamK+_Gkl99a1,1D<\%M8ApE3EV+AT;)65CV/*oc'7L'a -,-enk+P9ADgpXUL:=XRI<:."`ct)C0@b$]&T5;a_r+OETRn>0/1K6oc5T;@L/;:oP`1/;ck_)&#Q8A -V>_g'+n=8PDDV%D!-g$28W3,c/`;_c#O#e6;8@()F/[\.EFeQ2&m.6$[mqXLVg-2b&Y-k(pT[Pj!fe2iqYoH6".7M_jM&X2>iBYjL8]g;k> -=7NYM`F[XJU*SWQWY'HRq1[Qu -'mW_$`!*J@6Lo-5Gj&O/iF4%e^*1)XWt+mD9l:N@a/k[^&Ge;/lQ(Z[k1#n<^EG!2r?.k]3)*N%7YO -,sDC!XAj[^q_WP1b&\@Ku9TVU]_5Z"ososnVD9F1E;>RA$QBAFqGjVaC)7i+;CLQ.a'+-M)<(7"I[= -Un]<&"'/l)k$BhClg)W&Ea(VhnI3Lg:N72A=W0C$ik.E+d`*0G39@M9^_CHZE":8_d=`kr.I9P$HGa.&3s-o".$CVX`d@%Nft00 -B![jA-@WS#K`s;TD1!2.S%n-'HFh\9%C1r[j1Eq\'WFF5DtdFl#6pGbjjc]0\i3*Be!k@8]Xr@,$cB -^?.fENmL1,(Up1ncA-j-.Foilfb5D4g8&?/,_Oin:@Ml".8Or%CkILnaMW[JJ#%2`3=`sMcJg6`%%D -H^MJW.G^pKa2srk->P5@5J^fKoq`KKgK1c9n.eb#cSr&TlgeiIaF`'.mr?1OfN:L -q3fB\6_);k&qD!+0d)$ZH(B@`B6dC=7]*#I2bfrF -Wa.p0>-a]R.O6XN6(U,KKrN4k2N\/?HEs91?PWh*Ip;3o$;ck"Y+U:`O92_L;Kn[>Yu#%t.n&[c>0O -=7FIpX:CBg*B!,)ON[9%/@/Kp`1OUkR4;`?7e:!O< -#t#1dr@^BP;)W=$!$HDQDMB_YsQ>oD<,=F;K7A6$ihq+/4<]291L$snc[\mK@11?'jEsqf(i#07*dV -eOrT=kc/&<6%aPdsRd!@":]M*Sd/;EQdSbKg/7?nS3GVepn.oKJ[!bf[]jEh<"_DiDP)!9*QbWaW>J -6^e[b@`+!J!%,3%C4*mDU(KG;KhOag-VQGXD/#@spj)Rg0>@TFCW#iYV+hg>fM2;is@k2=m)qTBuY8 -kEW2iD#ejXduDf5*W^$W3f;V1f[=aAX]KiDHa:Za:)_>B5nG4khlGOSa8tKa( -V]YN3Al&lihImH-i<'(BMV!%>56 -!#emfP>9S;'L.$=[&_+MgUE]aK-dI0@cR`'UV4@Z -";rD_^]IR&HM66Hjk^OtRA;RdZ)\>(`Z[23a9i(La[9=cc=.V)[7"$05JSWV/J=Qtgah*+j`:!^A,I -Bb*h`-B9c"bX\rR-"#CCGOd#I8.oD08^)`7E0`$gaX!*L8NB[\)G[C>Yk?Rh=d;E6;6G1W/)nI-:rF -+_QNi-3Q?753')D]s3@[RpOW9LE.>Gr(MXFuE/1TRD9['5c>ideOOiQOcK``=?Mu,,em`$![A]dXQ[ -'V0"`XKo0584IPV(n.;o+8Hl04dG`;Ip-;[URuU80%4_;e=rA&megTX&h'^na3/Ud\.G%@%\mKLJ[3 -D/g0^%4\9Wr:\"`W)FVYW/&\0"7eT0NlGNCfHU'7p=Y(@J!*G<@=Z'WAIONFZ$=&1780nPmol)R#nAV>Xam" -(k:%?NmqROABC:BOqbXq.1mP#t3]r-L&=,DY -'YD/kWf@sQ^/:9smB_[is8R63J=YRQ*=s]8Go"V8;aBPJfm?(;=Cp&3,Ud^T=;'oRl/8cTBeQmVmK* -c2T$R;prqZeAak1";R,fDM$i>(,sM=CL!]X/9p0uCOr0g56O2Wh!u`MfSg`^PV!*nR.K%U8KRb/%"L --/\8S$B;*`7aG!U9Hui3ge3MQfNc:tr0'oq_rN&:X"]cRkfbh'ojLs\0HXq%&$^[8FfN=E&j4d:>r+ -Uc:Lc1L>]YkkNd`i5FH0C,7d@?(UMHWGNpJPA12rnM*k<%@MQn#K]esb"En-=qj]8.8n -*ZZ5?IqA]VrJF%I35\-lIPbmA)oXsu3)(LcZ)K*?5:$;ki0hd7i7n^/qH>[(% -?ltELJES6%/fG3mg#N;HsiOb_oNU,iG6Nf7!)-,Fns%bf8O#%pdhJW42OiS]K2@3EsHSbeWUdm%t7_ -g0]4+V35!ZJA_LX'!Qb*^HlYr#5]fb9]O(/?H`36)W@&u:;\?$F?\@ogQ1J:h$s=gL`h+HIIk+mU$q -bKAEk><(p'nk?+/au3Dq*n0u(#uO<>GQR6dGK_S?f;VJ:A3@j9=qRnF\7*LnG^,d'L' -,CB4.!I(DH.8;ug[u"ie(pl"&sOVE4u!=M&FVr]_6Yn&Jl("<@L`n5i;7n!T`d7F4A..2uX5ktMlfLdY"1i-$3]f%ZJm -d!>94%I;c6f$BcB6k/H^=o(h^kt4\ELU9pMh4f\@S043qi+:*(!S!UGUu%&VfkL:Zq;S't3EWQgRdf -qWGnD+G!FHl&i;Jn6%.PB%dGCH.)YOesj:GH/peiDe9.:@,"Hsu,jrR\7#c0<3a@"We'-$&tiGndhK -s-np,nk;4Q)W@TW((%R24g?QVJiKa7sNKiE3arY]T)'r,*QuuS -+=(3#^dKOG284Poo_2H:oU&H66=mFS?jeke6N@uTW#ELZ2mN/AAs,n>%#M,'Uojf/` -'$&;h_d.Je_*&[o;r0Q`XHIMC9Dm1#@a2?jXO+r\IAb@,7g@+f2I#W>-XDg=cR=*/+r6EO;3U2rTT' -,$C:fUl#Xr:DZ=Aj'D^1ASY0j3X8f=7hkN'eSSSY1>=esOu=iH67J5]9@"q?+#V7%_<2b`5S6mF#q7 -M3P`[0_l^Y[Sio3A`k\=WVp(O"OjCsHI*(@s.4(Nq-#V*7j)7T?3Z<@([GV-[1KAlbaG=!`#kV1)MmL01: -4=XBA:V4Lj:VHTh!>:$^^V7p1\`a#@c>p\'-V;>N)k$FnP?R>DQV>ajL#%4;<@3uauVB01n-=Wi)@j -X*DVESN;7V&AkAL:GhVI!j]AnIoXB-qe7VLE2*L1mHEBdT-[VOhNLVJ -%%EndData -end restore showpage -%%Trailer -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/lentille2.png b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/lentille2.png deleted file mode 100755 index 7738834646..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/lentille2.png and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parallels.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parallels.eps deleted file mode 100755 index 38b4d4fef6..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parallels.eps +++ /dev/null @@ -1,49 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Pages: 1 -%%BoundingBox: 0 0 234 229 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%EndComments -%%Page: 1 1 -save 9 dict begin -{/T currentfile/ASCII85Decode filter def/DeviceGray setcolorspace -/F T/LZWDecode filter def -<> image - F closefile T closefile} -%%BeginData:; -exec -J3Vsg3$]7K#Cis$&@c6X'b,Bf,!^Bh-5dC#^u#+l*&8T@!(LAB^]=?G++g./X98AA;$3+Q:bq5j_G( -bp7prXsoSP-uISJr9al(8ChY:o]eL]>gfRWPbBBqY_mJ(8+gsYU_#nk -A,ZRm0rlF%JaI_eufX!rsH/B([MD#2?_oF5B>*EHNOM0Ha"Re\(^r -@RssV0$jQ^7>F'bS1OC*R_e$:.j*!MS:8^mReD`3d`WKR+q-Z2RD`.^L2WnI3ZYb*87fKU8m;S-Gr_ -nN#IcTDL4DW9]]Z.;Jn+Q_Feio!Nqt@M]C)$-_g>6bXZebEB/*)'PKg1K1epJ"q)ALFHbCP]!,0\KF -ZE&t"'[!'6$GNPqLjE7$X6P!7%^F(fXJVs/.N[)Le+"jT"1qPS.&+6gf(f-(.N-CW\'_Od8NHuZT*T[/5J'5(8)SArPr5h7M-mNJfV5J`!4OT$#/MXF -6rBjGTB))*hbpV0T7O.827,Am#m9n)/@@_+3;D$k4>u\+'b?*/kqc\3!mE+i.fTPPW!R#SmP^h$m60 -:ts1@b9&_=gT,J]S/-^M'7[$2T,nG7:<`TN<_k4Wh[PpNB2RIE6ua(H'QX?K]k$I9nkl#AoONd=HgP -mj3rmgo/RaK[PP4q#186XPf/sW%9WLQcG'444Q,TiDWN@n^!?AWkM2gAL;k/1h2=_:H4s,iP1e\o7X -jkZm5d:==kD,]RqN9mY;'J3VJSEl#K*T.9--J$A*"`*iZ'\Xlc%GlY%o6bFku[5>,ahq\cR'WkD0nD -/gWO<:/m%j0`dZEXB6XZQllae(`*Y^Md+@0.u^Y9i])9Hq*_H/Q3lua)F.pa2?B=@SjIJbr\G&n,(u -qIIlY]6Uj5'.n?6#*4E'!@Jq!JYFnBK9@b\"h=cFWD'!W7p3L(mUNTfo>@QaF07VdJ^-qGKlq5$RQ9 -UsrMNg2*@ImCYSd15A5:k8RV>K,iP(J'eUeAZg=h?02ld\5EP",J+@Hi3NK18Z9s(BX6bo1,A:Gpom -(]*m[dmu/T::OgV0]+9)5q-Y?MB5h/][jWZ"@'KrhY8u1M-WpWo6`_8^P* -3#be$a@%&%]dGD"`>_`,6^@H9RnnBnV(\9L=!*'YRn)=fn6FNP4EpPH.%(Q`)%\Y;I>MQD+T3bJg7& -b,NgOEmS#G1&UM'No=0pk+?H`tP/r2'>3@*Q0q]6,gDsCsg61Mdd8>i;9c%K3CL)FMA.%W;[=J=ff[ -^&3ka,N+]>eK8qr8,arP6+OX@sabG\piAgEN_IYdM3"h[8n=,ZDQ;%on6o="07:^A[9+3[*/;PQ,*2 -E:=bAoeniKT0=o(h+V63oG>6NhRob!-G_P]%mZaXZHD*lj\>1u7507r)8T]]'/8LcjIOPBa/uOpsCB -46i?b(EXnk?$`P8R"GA/UNC'>o122TYa0g -_@65-`_N,Yp5XAmM7=!T=?$(?9*j]`!]4X>GH!Y*Bud+=?^&;'73+?^Pl8X%"HN[]toc>rE?@,qNF7 -A.`O):I`1oW9R`-AXUF/s0l>p5:=OW'@!TI+KB?GnWg&3#64ES4)n$mQ.J5dsX#Uj -($>[t2\&6aU>c:n#GsidtOJLU!X4[bAEd<9uZ5-s/JHg;K)LIl=%/Cn8Jo%;rJNBaj\HW/NSX)a5WC -'*c>fE6j09S'#3Sc;^]",VL8PTE$(_RS1kX<'UEdKq!p%59BWl]47!*~> -%%EndData -end restore showpage -%%Trailer -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parallels.png b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parallels.png deleted file mode 100755 index bdd761b8c7..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parallels.png and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours-composante.jpg b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours-composante.jpg deleted file mode 100755 index 8779fe4b96..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours-composante.jpg and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours.eps deleted file mode 100755 index 52c90f36bf..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours.eps +++ /dev/null @@ -1,1922 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1,17 by Peter Kirchgessner -%%Title: parcours.eps -%%CreationDate: Tue Jun 12 16:42:01 2007 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 14 14 591 614 -%%EndComments -%%BeginProlog -% Use own dictionary to avoid conflicts -10 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -14.173228346456694 14.173228346456694 translate -% Translate to begin of first scanline -0 599.03999999999996 translate -576 -599.03999999999996 scale -% Image geometry -600 624 8 -% Transformation matrix -[ 600 0 0 624 0 0 ] -% Strings to hold RGB-samples per scanline -/rstr 600 string def -/gstr 600 string def -/bstr 600 string def -{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} -true 3 -%%BeginData: 55928 ASCII Bytes -colorimage -!8<#(JcC<$JcDbMJ,~> -!8<#(JcC<$JcDbMJ,~> -!8<#(JcC<$JcDbMJ,~> -!8N/*JcC<$JcDbMJ,~> -!8N/*JcC<$JcDbMJ,~> -!8N/*JcC<$JcDbMJ,~> -!8`;,JcC<$JcDbMJ,~> -!8`;,JcC<$JcDbMJ,~> -!8`;,JcC<$JcDbMJ,~> -!8rG.JcC<$JcDbMJ,~> -!8rG.JcC<$JcDbMJ,~> -!8rG.JcC<$JcDbMJ,~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$o)H]0JcC<$oDa=~> -JcC<$o)H]0JcC<$oDa=~> -JcC<$o)H]0JcC<$oDa=~> -JcC<$qu?!_hZ)pBJcC<$r;V9~> -JcC<$qu?!_hZ)pBJcC<$r;V9~> -JcC<$qu?!_hZ)pBJcC<$r;V9~> -JcC?%nGpT/nGn.?KE$H~> -JcC?%nGpT/nGn.?KE$H~> -JcC?%nGpT/nGn.?KE$H~> -JcCQ+oDl8uoDjIBM>r)~> -JcCQ+oDl8uoDjIBM>r)~> -JcCQ+oDl8uoDjIBM>r)~> -JcCc1o`1lho`0RCO8j_~> -JcCc1o`1lho`0RCO8j_~> -JcCc1o`1lho`0RCO8j_~> -JcCr6p&LQ]p&K[DPlH7~> -JcCr6p&LQ]p&K[DPlH7~> -JcCr6p&LQ]p&K[DPlH7~> -JcD):p]-?Sp],mFR/_[~> -JcD):p]-?Sp],mFR/_[~> -JcD):p]-?Sp],mFR/_[~> -JcD5>q#H*Jq#H!GSH"*~> -JcD5>q#H*Jq#H!GSH"*~> -JcD5>q#H*Jq#H!GSH"*~> -JcDABq#H!Gr;ZQmJcDDCJ,~> -JcDABq#H!Gr;ZQmJcDDCJ,~> -JcDABq#H!Gr;ZQmJcDDCJ,~> -JcDMFq#H!Go`+^eJcDPGJ,~> -JcDMFq#H!Go`+^eJcDPGJ,~> -JcDMFq#H!Go`+^eJcDPGJ,~> -JcDYJq#H!Gm/Qk]JcD\KJ,~> -JcDYJq#H!Gm/Qk]JcD\KJ,~> -JcDYJq#H!Gm/Qk]JcD\KJ,~> -JcDbMq>c*HjT#&VJcDeNJ,~> -JcDbMq>c*HjT#&VJcDeNJ,~> -JcDbMq>c*HjT#&VJcDeNJ,~> -JcDkPqZ)3Ih#I6OJcDnQJ,~> -JcDkPqZ)3Ih#I6OJcDnQJ,~> -JcDkPqZ)3Ih#I6OJcDnQJ,~> -JcE"Tq>c*Hf)PRHJcE%UJ,~> -JcE"Tq>c*Hf)PRHJcE%UJ,~> -JcE"Tq>c*Hf)PRHJcE%UJ,~> -JcE+WrVururW%NLd/X(F!<<#uJcE.XJ,~> -JcE+WrVururW%NLd/X(F!<<#uJcE.XJ,~> -JcE+WrVururW%NLd/X(F!<<#uJcE.XJ,~> -JcE4Zq>c*Hb5_; -JcE4Zq>c*Hb5_; -JcE4Zq>c*Hb5_; -JcE:\rr<-#!!%TM_Z0W9!ri6#JcE=]J,~> -JcE:\rr<-#!!%TM_Z0W9!ri6#JcE=]J,~> -JcE:\rr<-#!!%TM_Z0W9!ri6#JcE=]J,~> -JcEC_qZ)3I^An'1JcEF`J,~> -JcEC_qZ)3I^An'1JcEF`J,~> -JcEC_qZ)3I^An'1JcEF`J,~> -JcELbqZ)3I\GuF+JcEOcJ,~> -JcELbqZ)3I\GuF+JcEOcJ,~> -JcELbqZ)3I\GuF+JcEOcJ,~> -JcERdquD -JcERdquD -JcERdquD -JcE[gquD -JcE[gquD -JcE[gquD -JcEaiquD -JcEaiquD -JcEaiquD -JcEjlquD -JcEjlquD -JcEjlquD -JcEpnquD -JcEpnquD -JcEpnquD -JcF$qquD -JcF$qquD -JcF$qquD -JcF*srr<-#!!%TMPlLa`!ri6#JcF-tJ,~> -JcF*srr<-#!!%TMPlLa`!ri6#JcF-tJ,~> -JcF*srr<-#!!%TMPlLa`!ri6#JcF-tJ,~> -JcF0uquD -JcF0uquD -JcF0uquD -JcF7"r;_EKMZ -JcF7"r;_EKMZ -JcF7"r;_EKMZ -JcF=$r;_EKLB%2PJcF@%J,~> -JcF=$r;_EKLB%2PJcF@%J,~> -JcF=$r;_EKLB%2PJcF@%J,~> -JcFC&r;_EKK)bcLJcFF'J,~> -JcFC&r;_EKK)bcLJcFF'J,~> -JcFC&r;_EKK)bcLJcFF'J,~> -JcFI(r;_EKJcG`Lr;_EKg])d~> -JcFI(r;_EKJcG`Lr;_EKg])d~> -JcFI(r;_EKJcG`Lr;_EKg])d~> -JcFO*r;_EKJcGTHr;_EKh>`!~> -JcFO*r;_EKJcGTHr;_EKh>`!~> -JcFO*r;_EKJcGTHr;_EKh>`!~> -JcFU,r;_EKJcGHDr;_EKhuA3~> -JcFU,r;_EKJcGHDr;_EKhuA3~> -JcFU,r;_EKJcGHDr;_EKhuA3~> -JcF[.r;_EKJcG<@r;_EKiW"E~> -JcF[.r;_EKJcG<@r;_EKiW"E~> -JcF[.r;_EKJcG<@r;_EKiW"E~> -JcFa0r;_EKJcG0 -JcFa0r;_EKJcG0 -JcFa0r;_EKJcG0 -JcFg2r;_EKJcG$8r;_EKjo9i~> -JcFg2r;_EKJcG$8r;_EKjo9i~> -JcFg2r;_EKJcG$8r;_EKjo9i~> -JcFm4r;_EKJcFm4r;_EKkPp&~> -JcFm4r;_EKJcFm4r;_EKkPp&~> -JcFm4r;_EKJcFm4r;_EKkPp&~> -JcFs6rr<*"!.k0$s5O%\!<3$!JcG!7J,~> -JcFs6rr<*"!.k0$s5O%\!<3$!JcG!7J,~> -JcFs6rr<*"!.k0$s5O%\!<3$!JcG!7J,~> -JcG!7!s&?$!.k0$s5 -JcG!7!s&?$!.k0$s5 -JcG!7!s&?$!.k0$s5 -JcG'9r;_EKJcFO*r;_EKm/MS~> -JcG'9r;_EKJcFO*r;_EKm/MS~> -JcG'9r;_EKJcFO*r;_EKm/MS~> -JcG-;r;_EKJcFC&r;_EKmf.e~> -JcG-;r;_EKJcFC&r;_EKmf.e~> -JcG-;r;_EKJcFC&r;_EKmf.e~> -JcG0ArrBV0!W`6#JcG3=J,~> -JcG0ArrBV0!W`6#JcG3=J,~> -JcG0ArrBV0!W`6#JcG3=J,~> -JcG6>r;_EKScA]i\GuL-JcG9?J,~> -JcG6>r;_EKScA]i\GuL-JcG9?J,~> -JcG6>r;_EKScA]i\GuL-JcG9?J,~> -JcG<@r;_EKS,`Kg[f?:+JcG?AJ,~> -JcG<@r;_EKS,`Kg[f?:+JcG?AJ,~> -JcG<@r;_EKS,`Kg[f?:+JcG?AJ,~> -JcG?A!W`6#JcD/ -JcG?A!W`6#JcD/ -JcG?A!W`6#JcD/ -JcGECr;_EKJcEgkr;_EKpA]X~> -JcGECr;_EKJcEgkr;_EKpA]X~> -JcGECr;_EKJcEgkr;_EKpA]X~> -JcGHDrW%NLQiI'cYlF\&JcGKEJ,~> -JcGHDrW%NLQiI'cYlF\&JcGKEJ,~> -JcGHDrW%NLQiI'cYlF\&JcGKEJ,~> -JcGNFrW%NLQ2gjaY5eJ$JcGQGJ,~> -JcGNFrW%NLQ2gjaY5eJ$JcGQGJ,~> -JcGNFrW%NLQ2gjaY5eJ$JcGQGJ,~> -JcGTHr;_EKJcEIar;_EKqu;0~> -JcGTHr;_EKJcEIar;_EKqu;0~> -JcGTHr;_EKJcEIar;_EKqu;0~> -JcGWI!W`6#JcC<$])Mg3rr@WMr;V9~> -JcGWI!W`6#JcC<$])Mg3rr@WMr;V9~> -JcGWI!W`6#JcC<$])Mg3rr@WMr;V9~> -JcG]Kr;_EKP5kO^WW2nsJcG`LJ,~> -JcG]Kr;_EKP5kO^WW2nsJcG`LJ,~> -JcG]Kr;_EKP5kO^WW2nsJcG`LJ,~> -JcG`L!W`6#JcCi3rrAts!W`6#JcGcMJ,~> -JcG`L!W`6#JcCi3rrAts!W`6#JcGcMJ,~> -JcG`L!W`6#JcCi3rrAts!W`6#JcGcMJ,~> -JcGcMrW(.Arr@WMJcG$8rW%NL!<7Q~> -JcGcMrW(.Arr@WMJcG$8rW%NL!<7Q~> -JcGcMrW(.Arr@WMJcG$8rW%NL!<7Q~> -JcG]LaoDA@JcEgkrrAhorW%QMJ,~> -JcG]LaoDA@JcEgkrrAhorW%QMJ,~> -JcG]LaoDA@JcEgkrrAhorW%QMJ,~> -K)bfMJcC`0rrAenrW%TNJ,~> -K)bfMJcC`0rrAenrW%TNJ,~> -K)bfMJcC`0rrAenrW%TNJ,~> -K`D#O`W,r -K`D#O`W,r -K`D#O`W,r -L&V2SrrC";rr@WMJcFj3!W`6#LAuc~> -L&V2SrrC";rr@WMJcFj3!W`6#LAuc~> -L&V2SrrC";rr@WMJcFj3!W`6#LAuc~> -LB%5QJcCZ.rrAShrW%`RJ,~> -LB%5QJcCZ.rrAShrW%`RJ,~> -LB%5QJcCZ.rrAShrW%`RJ,~> -M#[GS^]4<6JcF!prrAMfrW%fTJ,~> -M#[GS^]4<6JcF!prrAMfrW%fTJ,~> -M#[GS^]4<6JcF!prrAMfrW%fTJ,~> -M>mVWrrBe5rr@WMJcFd1!W`6#MZ82~> -M>mVWrrBe5rr@WMJcFd1!W`6#MZ82~> -M>mVWrrBe5rr@WMJcFd1!W`6#MZ82~> -MZ -MZ -MZ -N;rkW])Vd1JcC<$iW&lWNW4M~> -N;rkW])Vd1JcC<$iW&lWNW4M~> -N;rkW])Vd1JcC<$iW&lWNW4M~> -NW0%[rrBV0rr@WMci="FPlCdbrrA)ZJ,~> -NW0%[rrBV0rr@WMci="FPlCdbrrA)ZJ,~> -NW0%[rrBV0rr@WMci="FPlCdbrrA)ZJ,~> -NrT(YJcCE'rrA8_rW&#ZJ,~> -NrT(YJcCE'rrA8_rW&#ZJ,~> -NrT(YJcCE'rrA8_rW&#ZJ,~> -OT5:[[K$7,JcC<$hZ*QTOoKq~> -OT5:[[K$7,JcC<$hZ*QTOoKq~> -OT5:[[K$7,JcC<$hZ*QTOoKq~> -OoGI_rrBG+rr@WMJcFR+!W`6#P5g%~> -OoGI_rrBG+rr@WMJcFR+!W`6#P5g%~> -OoGI_rrBG+rr@WMJcFR+!W`6#P5g%~> -P5kL]JcC<$rrA)ZrW&/^J,~> -P5kL]JcC<$rrA)ZrW&/^J,~> -P5kL]JcC<$rrA)ZrW&/^J,~> -PQ1X_JcC<$s8W*!N;rnXPlH7~> -PQ1X_JcC<$s8W*!N;rnXPlH7~> -PQ1X_JcC<$s8W*!N;rnXPlH7~> -Q2gg`YQ+V&JcC<$gAh-PQN)I~> -Q2gg`YQ+V&JcC<$gAh-PQN)I~> -Q2gg`YQ+V&JcC<$gAh-PQN)I~> -QN%!drrB5%rr@WMJcFF'!W`6#QiDR~> -QN%!drrB5%rr@WMJcFF'!W`6#QiDR~> -QN%!drrB5%rr@WMJcFF'!W`6#QiDR~> -Qi@*err@WMJcC?%!W`6#R/_[~> -Qi@*err@WMJcC?%!W`6#R/_[~> -Qi@*err@WMJcC?%!W`6#R/_[~> -R/d-cJcC<$rVultLB%5QRK%d~> -R/d-cJcC<$rVultLB%5QRK%d~> -R/d-cJcC<$rVultLB%5QRK%d~> -RK*9eW;lktJcF=$rr@`PrrAMfJ,~> -RK*9eW;lktJcF=$rr@`PrrAMfJ,~> -RK*9eW;lktJcF=$rr@`PrrAMfJ,~> -RfEBfVuQbsJcC<$f)PaMS,\!~> -RfEBfVuQbsJcC<$f)PaMS,\!~> -RfEBfVuQbsJcC<$f)PaMS,\!~> -S,`KgJcC<$JcGNFrrAShJ,~> -S,`KgJcC<$JcGNFrrAShJ,~> -S,`KgJcC<$JcGNFrrAShJ,~> -ScAZhJcC<$JcGHDrW&PiJ,~> -ScAZhJcC<$JcGHDrW&PiJ,~> -ScAZhJcC<$JcGHDrW&PiJ,~> -T)Silrr@WMJcC<$o`"smrrA\kJ,~> -T)Silrr@WMJcC<$o`"smrrA\kJ,~> -T)Silrr@WMJcC<$o`"smrrA\kJ,~> -TDnrmrrAenrr@WMf`1sOJcG`L!W`6#T`9N~> -TDnrmrrAenrr@WMf`1sOJcG`L!W`6#T`9N~> -TDnrmrrAenrr@WMf`1sOJcG`L!W`6#T`9N~> -T`5&nrrAbmrr@WMf`1sOJcG]K!W`6#U&TW~> -T`5&nrrAbmrr@WMf`1sOJcG]K!W`6#U&TW~> -T`5&nrrAbmrr@WMf`1sOJcG]K!W`6#U&TW~> -U&Y)lJcC<$JcG0 -U&Y)lJcC<$JcG0 -U&Y)lJcC<$JcG0 -UAt5nJcC<$JcG$8rrAhoJ,~> -UAt5nJcC<$JcG$8rrAhoJ,~> -UAt5nJcC<$JcG$8rrAhoJ,~> -U]:>oJcC<$JcFs6rrAkpJ,~> -U]:>oJcC<$JcFs6rrAkpJ,~> -U]:>oJcC<$JcFs6rrAkpJ,~> -V#UGpRfEBfJcC<$ci="FV>l&~> -V#UGpRfEBfJcC<$ci="FV>l&~> -V#UGpRfEBfJcC<$ci="FV>l&~> -V>pPqRK*9eJcFO*rr@WMp&G$lVZ2/~> -V>pPqRK*9eJcFO*rr@WMp&G$lVZ2/~> -V>pPqRK*9eJcFO*rr@WMp&G$lVZ2/~> -VZ6YrJcC<$nc/UhJcGBBrrAtsJ,~> -VZ6YrJcC<$nc/UhJcGBBrrAtsJ,~> -VZ6YrJcC<$nc/UhJcGBBrrAtsJ,~> -VuQbsJcC<$JcF[.rrB"tJ,~> -VuQbsJcC<$JcF[.rrB"tJ,~> -VuQbsJcC<$JcF[.rrB"tJ,~> -W;lktJcC<$JcFU,rrB%uJ,~> -W;lktJcC<$JcFU,rrB%uJ,~> -W;lktJcC<$JcFU,rrB%uJ,~> -WW2tuPlLa`JcC<$bQ%SBWrIS~> -WW2tuPlLa`JcC<$bQ%SBWrIS~> -WW2tuPlLa`JcC<$bQ%SBWrIS~> -WrN)!PQ1X_JcC<$b5_JAX8d\~> -WrN)!PQ1X_JcC<$b5_JAX8d\~> -WrN)!PQ1X_JcC<$b5_JAX8d\~> -X8i2"JcC<$mf3:eJcG-;rrB/#J,~> -X8i2"JcC<$mf3:eJcG-;rrB/#J,~> -X8i2"JcC<$mf3:eJcG-;rrB/#J,~> -XT/;#JcC<$mJm1dJcG*:rrB2$J,~> -XT/;#JcC<$mJm1dJcG*:rrB2$J,~> -XT/;#JcC<$mJm1dJcG*:rrB2$J,~> -XoJD$JcC<$JcF7"rrB5%J,~> -XoJD$JcC<$JcF7"rrB5%J,~> -XoJD$JcC<$JcF7"rrB5%J,~> -Y5eM%JcC<$JcF0urrB8&J,~> -Y5eM%JcC<$JcF0urrB8&J,~> -Y5eM%JcC<$JcF0urrB8&J,~> -YQ+V&N;rnXJcC<$a8c/>YlB4~> -YQ+V&N;rnXJcC<$a8c/>YlB4~> -YQ+V&N;rnXJcC<$a8c/>YlB4~> -YlF_'MuWeWJcC<$`rH&=Z2]=~> -YlF_'MuWeWJcC<$`rH&=Z2]=~> -YlF_'MuWeWJcC<$`rH&=Z2]=~> -Z2ah(JcC<$JcEsorrBA)J,~> -Z2ah(JcC<$JcEsorrBA)J,~> -Z2ah(JcC<$JcEsorrBA)J,~> -ZN'q)JcC<$l2Ub`JcFg2rrBD*J,~> -ZN'q)JcC<$l2Ub`JcFg2rrBD*J,~> -ZN'q)JcC<$l2Ub`JcFg2rrBD*J,~> -Zi:(,rr@WMJcG!7rr@WMjSo8]rrBG+J,~> -Zi:(,rr@WMJcG!7rr@WMjSo8]rrBG+J,~> -Zi:(,rr@WMJcG!7rr@WMjSo8]rrBG+J,~> -[/U1-rr@WMJcC<$aSu;ArrBJ,J,~> -[/U1-rr@WMJcC<$aSu;ArrBJ,J,~> -[/U1-rr@WMJcC<$aSu;ArrBJ,J,~> -[Jp:.rr@cQrr@WMJcE[g!W`6#[f:j~> -[Jp:.rr@cQrr@WMJcE[g!W`6#[f:j~> -[Jp:.rr@cQrr@WMJcE[g!W`6#[f:j~> -[K$7,K`D&PJcC<$_uK`:[f:j~> -[K$7,K`D&PJcC<$_uK`:[f:j~> -[K$7,K`D&PJcC<$_uK`:[f:j~> -[f?@-JcC<$JcEUerrBP.J,~> -[f?@-JcC<$JcEUerrBP.J,~> -[f?@-JcC<$JcEUerrBP.J,~> -\,ZI.JcC<$JcEOcrrBS/J,~> -\,ZI.JcC<$JcEOcrrBS/J,~> -\,ZI.JcC<$JcEOcrrBS/J,~> -\GuR/JcC<$JcEIarrBV0J,~> -\GuR/JcC<$JcEIarrBV0J,~> -\GuR/JcC<$JcEIarrBV0J,~> -\c;[0JcC<$jT#5[JcFL)rrBY1J,~> -\c;[0JcC<$jT#5[JcFL)rrBY1J,~> -\c;[0JcC<$jT#5[JcFL)rrBY1J,~> -])Vd1JcC<$j8],ZJcFI(rrB\2J,~> -])Vd1JcC<$j8],ZJcFI(rrB\2J,~> -])Vd1JcC<$j8],ZJcFI(rrB\2J,~> -]Dhp4rr@WMrVultJcC<$_#FH9rrB_3J,~> -]Dhp4rr@WMrVultJcC<$_#FH9rrB_3J,~> -]Dhp4rr@WMrVultJcC<$_#FH9rrB_3J,~> -]`/$5rr@WMr;ZcsJcC<$^]+?8rrBb4J,~> -]`/$5rr@WMr;ZcsJcC<$^]+?8rrBb4J,~> -]`/$5rr@WMr;ZcsJcC<$^]+?8rrBb4J,~> -]`8!3JcC<$JcE1YrrBb4J,~> -]`8!3JcC<$JcE1YrrBb4J,~> -]`8!3JcC<$JcE1YrrBb4J,~> -^&S*4JcC<$JcE+WrrBe5J,~> -^&S*4JcC<$JcE+WrrBe5J,~> -^&S*4JcC<$JcE+WrrBe5J,~> -^An35JcC<$JcE%UrrBh6J,~> -^An35JcC<$JcE%UrrBh6J,~> -^An35JcC<$JcE%UrrBh6J,~> -^]4<6JcC<$JcDtSrrBk7J,~> -^]4<6JcC<$JcDtSrrBk7J,~> -^]4<6JcC<$JcDtSrrBk7J,~> -_#FH9rr@WMJcF[.rr@WMe,KILrrBn8J,~> -_#FH9rr@WMJcF[.rr@WMe,KILrrBn8J,~> -_#FH9rr@WMJcF[.rr@WMe,KILrrBn8J,~> -_#OE7JcC<$huE]VJcF0urrBn8J,~> -_#OE7JcC<$huE]VJcF0urrBn8J,~> -_#OE7JcC<$huE]VJcF0urrBn8J,~> -_>jN8JcGECrr@WMJcE=]rrBq9J,~> -_>jN8JcGECrr@WMJcE=]rrBq9J,~> -_>jN8JcGECrr@WMJcE=]rrBq9J,~> -_Z0W9JcGBBrr@WMJcE:\rrBt:J,~> -_Z0W9JcGBBrr@WMJcE:\rrBt:J,~> -_Z0W9JcGBBrr@WMJcE:\rrBt:J,~> -_uBc -_uBc -_uBc -_uK`:JcC<$JcD\KrrC";J,~> -_uK`:JcC<$JcD\KrrC";J,~> -_uK`:JcC<$JcD\KrrC";J,~> -`;fi;JcC<$JcDVIrrC% -`;fi;JcC<$JcDVIrrC% -`;fi;JcC<$JcDVIrrC% -`W,r -`W,r -`W,r -`r?)?rr@WMJcFO*rr@WMbPqVDrrC+>J,~> -`r?)?rr@WMJcFO*rr@WMbPqVDrrC+>J,~> -`r?)?rr@WMJcFO*rr@WMbPqVDrrC+>J,~> -`rH&=JcG0J,~> -`rH&=JcG0J,~> -`rH&=JcG0J,~> -a8c/>JcG-;rr@WMJcE1YrrC.?J,~> -a8c/>JcG-;rr@WMJcE1YrrC.?J,~> -a8c/>JcG-;rr@WMJcE1YrrC.?J,~> -aT)8?JcC<$JcD>ArrC1@J,~> -aT)8?JcC<$JcD>ArrC1@J,~> -aT)8?JcC<$JcD>ArrC1@J,~> -ao;DBrr@WMJcC<$T)SilrrC4AJ,~> -ao;DBrr@WMJcC<$T)SilrrC4AJ,~> -ao;DBrr@WMJcC<$T)SilrrC4AJ,~> -aoDA@JcC<$JcD8?rrC4AJ,~> -aoDA@JcC<$JcD8?rrC4AJ,~> -aoDA@JcC<$JcD8?rrC4AJ,~> -b5_JAJcC<$JcD2=rrC7BJ,~> -b5_JAJcC<$JcD2=rrC7BJ,~> -b5_JAJcC<$JcD2=rrC7BJ,~> -bQ%SBJcC<$JcD,;rrC:CJ,~> -bQ%SBJcC<$JcD,;rrC:CJ,~> -bQ%SBJcC<$JcD,;rrC:CJ,~> -bQ%SBJcC<$JcD,;rrC:CJ,~> -bQ%SBJcC<$JcD,;rrC:CJ,~> -bQ%SBJcC<$JcD,;rrC:CJ,~> -bl@\CJcC<$f`1sOJcERdrrC=DJ,~> -bl@\CJcC<$f`1sOJcERdrrC=DJ,~> -bl@\CJcC<$f`1sOJcERdrrC=DJ,~> -c2[eDJcFj3rr@WMp&G$lJcEOcrrC@EJ,~> -c2[eDJcFj3rr@WMp&G$lJcEOcrrC@EJ,~> -c2[eDJcFj3rr@WMp&G$lJcEOcrrC@EJ,~> -cMmqGrr@WMjo>>\JcC<$ZMst+rrCCFJ,~> -cMmqGrr@WMjo>>\JcC<$ZMst+rrCCFJ,~> -cMmqGrr@WMjo>>\JcC<$ZMst+rrCCFJ,~> -cN!nEJcC<$JcCo5rrCCFJ,~> -cN!nEJcC<$JcCo5rrCCFJ,~> -cN!nEJcC<$JcCo5rrCCFJ,~> -ci="FJcC<$JcCi3rrCFGJ,~> -ci="FJcC<$JcCi3rrCFGJ,~> -ci="FJcC<$JcCi3rrCFGJ,~> -d/O.Irr@WMJcC<$OT,@^rrCIHJ,~> -d/O.Irr@WMJcC<$OT,@^rrCIHJ,~> -d/O.Irr@WMJcC<$OT,@^rrCIHJ,~> -d/X+GJcC<$JcCc1rrCIHJ,~> -d/X+GJcC<$JcCc1rrCIHJ,~> -d/X+GJcC<$JcCc1rrCIHJ,~> -dJs4HJcC<$JcC]/rrCLIJ,~> -dJs4HJcC<$JcC]/rrCLIJ,~> -dJs4HJcC<$JcC]/rrCLIJ,~> -dJs4HJcC<$JcC]/rrCLIJ,~> -dJs4HJcC<$JcC]/rrCLIJ,~> -dJs4HJcC<$JcC]/rrCLIJ,~> -df9=IJcC<$JcCW-rrCOJJ,~> -df9=IJcC<$JcCW-rrCOJJ,~> -df9=IJcC<$JcCW-rrCOJJ,~> -e,TFJJcFR+rr@WMq>^HpJcE7[rrCRKJ,~> -e,TFJJcFR+rr@WMq>^HpJcE7[rrCRKJ,~> -e,TFJJcFR+rr@WMq>^HpJcE7[rrCRKJ,~> -e,TFJJcFR+rr@WMq>^HpJcE7[rrCRKJ,~> -e,TFJJcFR+rr@WMq>^HpJcE7[rrCRKJ,~> -e,TFJJcFR+rr@WMq>^HpJcE7[rrCRKJ,~> -eGoOKJcC<$JcCK)rrCULJ,~> -eGoOKJcC<$JcCK)rrCULJ,~> -eGoOKJcC<$JcCK)rrCULJ,~> -ec,[Nrr@WMJcC<$LAq;TrrCXMJ,~> -ec,[Nrr@WMJcC<$LAq;TrrCXMJ,~> -ec,[Nrr@WMJcC<$LAq;TrrCXMJ,~> -ec5XLJcC<$JcCE'rrCXMJ,~> -ec5XLJcC<$JcCE'rrCXMJ,~> -ec5XLJcC<$JcCE'rrCXMJ,~> -f)PaMJcC<$JcC?%rrC[NJ,~> -f)PaMJcC<$JcC?%rrC[NJ,~> -f)PaMJcC<$JcC?%rrC[NJ,~> -f)PaMJcC<$JcC?%rrC[NJ,~> -f)PaMJcC<$JcC?%rrC[NJ,~> -f)PaMJcC<$JcC?%rrC[NJ,~> -fDkjNJcC<$JcC<$!ri6#f`-I~> -fDkjNJcC<$JcC<$!ri6#f`-I~> -fDkjNJcC<$JcC<$!ri6#f`-I~> -f`)!Qrr@WMJcC<$Jc>iP!<3&Ps*t~> -f`)!Qrr@WMJcC<$Jc>iP!<3&Ps*t~> -f`)!Qrr@WMJcC<$Jc>iP!<3&Ps*t~> -f`1sOJcF@%rr@WMJcDbMrrCaPJ,~> -f`1sOJcF@%rr@WMJcDbMrrCaPJ,~> -f`1sOJcF@%rr@WMJcDbMrrCaPJ,~> -g&M'PJcF=$rr@WMrVultJcDqRrrCdQJ,~> -g&M'PJcF=$rr@WMrVultJcDqRrrCdQJ,~> -g&M'PJcF=$rr@WMrVultJcDqRrrCdQJ,~> -g&M'PJcC<$d/X+GJcDqRrrCdQJ,~> -g&M'PJcC<$d/X+GJcDqRrrCdQJ,~> -g&M'PJcC<$d/X+GJcDqRrrCdQJ,~> -gAh0QJcC<$JcC<$qZ$Qqg])d~> -gAh0QJcC<$JcC<$qZ$Qqg])d~> -gAh0QJcC<$JcC<$qZ$Qqg])d~> -g]% -g]% -g]% -g].9RJcC<$JcC<$q#C?oh#Dm~> -g].9RJcC<$JcC<$q#C?oh#Dm~> -g].9RJcC<$JcC<$q#C?oh#Dm~> -h#@EUrr@WMJcC<$JcGNF!W`6#h>`!~> -h#@EUrr@WMJcC<$JcGNF!W`6#h>`!~> -h#@EUrr@WMJcC<$JcGNF!W`6#h>`!~> -h#IBSJcC<$JcC<$pAb-mh>`!~> -h#IBSJcC<$JcC<$pAb-mh>`!~> -h#IBSJcC<$JcC<$pAb-mh>`!~> -h>dKTJcC<$JcC<$o`+pkhZ&*~> -h>dKTJcC<$JcC<$o`+pkhZ&*~> -h>dKTJcC<$JcC<$o`+pkhZ&*~> -h>dKTJcC<$JcC<$o`+pkhZ&*~> -h>dKTJcC<$JcC<$o`+pkhZ&*~> -h>dKTJcC<$JcC<$o`+pkhZ&*~> -hZ*TUJcC<$JcC<$o)J^ihuA3~> -hZ*TUJcC<$JcC<$o)J^ihuA3~> -hZ*TUJcC<$JcC<$o)J^ihuA3~> -hZ*TUJcF'rrr@WMJcDVIrrCsVJ,~> -hZ*TUJcF'rrr@WMJcDVIrrCsVJ,~> -hZ*TUJcF'rrr@WMJcDVIrrCsVJ,~> -huE]VJcF$qrr@ZNrr@WMVZ6Yri;\<~> -huE]VJcF$qrr@ZNrr@WMVZ6Yri;\<~> -huE]VJcF$qrr@ZNrr@WMVZ6Yri;\<~> -huE]VJcC<$c2[eDJcDVIrrD!WJ,~> -huE]VJcC<$c2[eDJcDVIrrD!WJ,~> -huE]VJcC<$c2[eDJcDVIrrD!WJ,~> -i;`fWJcC<$JcC<$mf3:eiW"E~> -i;`fWJcC<$JcC<$mf3:eiW"E~> -i;`fWJcC<$JcC<$mf3:eiW"E~> -i;`fWJcC<$JcC<$mf3:eiW"E~> -i;`fWJcC<$JcC<$mf3:eiW"E~> -i;`fWJcC<$JcC<$mf3:eiW"E~> -iW&oXJcC<$JcC<$m/R(cir=N~> -iW&oXJcC<$JcC<$m/R(cir=N~> -iW&oXJcC<$JcC<$m/R(cir=N~> -iW&oXJcC<$JcC<$m/R(cir=N~> -iW&oXJcC<$JcC<$m/R(cir=N~> -iW&oXJcC<$JcC<$m/R(cir=N~> -irB#YJcC<$JcC<$lMpkaj8XW~> -irB#YJcC<$JcC<$lMpkaj8XW~> -irB#YJcC<$JcC<$lMpkaj8XW~> -irB#YJcC<$JcC<$lMpkaj8XW~> -irB#YJcC<$JcC<$lMpkaj8XW~> -irB#YJcC<$JcC<$lMpkaj8XW~> -j8],ZJcC<$JcC<$kl:Y_jSs`~> -j8],ZJcC<$JcC<$kl:Y_jSs`~> -j8],ZJcC<$JcC<$kl:Y_jSs`~> -j8],ZJcEjlrr@WMJcDJErrD-[J,~> -j8],ZJcEjlrr@WMJcDJErrD-[J,~> -j8],ZJcEjlrr@WMJcDJErrD-[J,~> -jT#5[JcEgkrr@WMJcDGDrrD0\J,~> -jT#5[JcEgkrr@WMJcDGDrrD0\J,~> -jT#5[JcEgkrr@WMJcDGDrrD0\J,~> -jT#5[JcC<$bQ%SBJcD>ArrD0\J,~> -jT#5[JcC<$bQ%SBJcD>ArrD0\J,~> -jT#5[JcC<$bQ%SBJcD>ArrD0\J,~> -jo>>\JcC<$b5_JAJcD;@rrD3]J,~> -jo>>\JcC<$b5_JAJcD;@rrD3]J,~> -jo>>\JcC<$b5_JAJcD;@rrD3]J,~> -jo>>\JcC<$JcC<$jT#5[k5Tr~> -jo>>\JcC<$JcC<$jT#5[k5Tr~> -jo>>\JcC<$JcC<$jT#5[k5Tr~> -k5YG]JcC<$JcC<$irB#YkPp&~> -k5YG]JcC<$JcC<$irB#YkPp&~> -k5YG]JcC<$JcC<$irB#YkPp&~> -k5YG]JcC<$JcC<$irB#YkPp&~> -k5YG]JcC<$JcC<$irB#YkPp&~> -k5YG]JcC<$JcC<$irB#YkPp&~> -kPtP^JcC<$JcC<$i;`fWkl6/~> -kPtP^JcC<$JcC<$i;`fWkl6/~> -kPtP^JcC<$JcC<$i;`fWkl6/~> -kPtP^JcC<$JcC<$i;`fWkl6/~> -kPtP^JcC<$JcC<$i;`fWkl6/~> -kPtP^JcC<$JcC<$i;`fWkl6/~> -kl1\arr@WMJcC<$JcF[.!W`6#l2Q8~> -kl1\arr@WMJcC<$JcF[.!W`6#l2Q8~> -kl1\arr@WMJcC<$JcF[.!W`6#l2Q8~> -kl:Y_JcC<$JcC<$hZ*TUl2Q8~> -kl:Y_JcC<$JcC<$hZ*TUl2Q8~> -kl:Y_JcC<$JcC<$hZ*TUl2Q8~> -kl:Y_JcEXfrr@WMJcD>ArrD<`J,~> -kl:Y_JcEXfrr@WMJcD>ArrD<`J,~> -kl:Y_JcEXfrr@WMJcD>ArrD<`J,~> -l2Ub`JcEUerr@WMJcD;@rrD?aJ,~> -l2Ub`JcEUerr@WMJcD;@rrD?aJ,~> -l2Ub`JcEUerr@WMJcD;@rrD?aJ,~> -l2Ub`JcC<$JcC<$h#IBSlMlA~> -l2Ub`JcC<$JcC<$h#IBSlMlA~> -l2Ub`JcC<$JcC<$h#IBSlMlA~> -lMpkaJcC<$aT)8?JcD#8rrDBbJ,~> -lMpkaJcC<$aT)8?JcD#8rrDBbJ,~> -lMpkaJcC<$aT)8?JcD#8rrDBbJ,~> -lMpkaJcC<$aT)8?JcD#8rrDBbJ,~> -lMpkaJcC<$aT)8?JcD#8rrDBbJ,~> -lMpkaJcC<$aT)8?JcD#8rrDBbJ,~> -lMpkaJcC<$JcC<$gAh0Qli2J~> -lMpkaJcC<$JcC<$gAh0Qli2J~> -lMpkaJcC<$JcC<$gAh0Qli2J~> -li6tbJcC<$JcC<$f`1sOm/MS~> -li6tbJcC<$JcC<$f`1sOm/MS~> -li6tbJcC<$JcC<$f`1sOm/MS~> -li6tbJcC<$JcC<$f`1sOm/MS~> -li6tbJcC<$JcC<$f`1sOm/MS~> -li6tbJcC<$JcC<$f`1sOm/MS~> -m/R(cJcC<$JcC<$f)PaMmJh\~> -m/R(cJcC<$JcC<$f)PaMmJh\~> -m/R(cJcC<$JcC<$f)PaMmJh\~> -m/R(cJcC<$JcC<$f)PaMmJh\~> -m/R(cJcC<$JcC<$f)PaMmJh\~> -m/R(cJcC<$JcC<$f)PaMmJh\~> -m/R(cJcC<$JcC<$f)PaMmJh\~> -m/R(cJcC<$JcC<$f)PaMmJh\~> -m/R(cJcC<$JcC<$f)PaMmJh\~> -mJm1dJcC<$JcC<$eGoOKmf.e~> -mJm1dJcC<$JcC<$eGoOKmf.e~> -mJm1dJcC<$JcC<$eGoOKmf.e~> -mJm1dJcEC_rr@WMJcD5>rrDKeJ,~> -mJm1dJcEC_rr@WMJcD5>rrDKeJ,~> -mJm1dJcEC_rr@WMJcD5>rrDKeJ,~> -mf3:eJcE@^rr@WMJcD2=rrDNfJ,~> -mf3:eJcE@^rr@WMJcD2=rrDNfJ,~> -mf3:eJcE@^rr@WMJcD2=rrDNfJ,~> -mf3:eJcC<$JcC<$df9=In,In~> -mf3:eJcC<$JcC<$df9=In,In~> -mf3:eJcC<$JcC<$df9=In,In~> -mf3:eJcC<$a8c/>JcCc1rrDNfJ,~> -mf3:eJcC<$a8c/>JcCc1rrDNfJ,~> -mf3:eJcC<$a8c/>JcCc1rrDNfJ,~> -n,NCfJcC<$`rH&=JcC`0rrDQgJ,~> -n,NCfJcC<$`rH&=JcC`0rrDQgJ,~> -n,NCfJcC<$`rH&=JcC`0rrDQgJ,~> -n,NCfJcC<$JcC<$d/X+GnGe"~> -n,NCfJcC<$JcC<$d/X+GnGe"~> -n,NCfJcC<$JcC<$d/X+GnGe"~> -n,NCfJcC<$JcC<$d/X+GnGe"~> -n,NCfJcC<$JcC<$d/X+GnGe"~> -n,NCfJcC<$JcC<$d/X+GnGe"~> -nGiLgJcC<$JcC<$cN!nEnc++~> -nGiLgJcC<$JcC<$cN!nEnc++~> -nGiLgJcC<$JcC<$cN!nEnc++~> -nGiLgJcC<$JcC<$cN!nEnc++~> -nGiLgJcC<$JcC<$cN!nEnc++~> -nGiLgJcC<$JcC<$cN!nEnc++~> -nc&Xjrr@WMJcC<$JcF$q!W`6#o)F4~> -nc&Xjrr@WMJcC<$JcF$q!W`6#o)F4~> -nc&Xjrr@WMJcC<$JcF$q!W`6#o)F4~> -nc/UhJcC<$JcC<$bl@\Co)F4~> -nc/UhJcC<$JcC<$bl@\Co)F4~> -nc/UhJcC<$JcC<$bl@\Co)F4~> -nc/UhJcC<$JcC<$bl@\Co)F4~> -nc/UhJcC<$JcC<$bl@\Co)F4~> -nc/UhJcC<$JcC<$bl@\Co)F4~> -o)J^iJcE4Zrr@WMJcD&9rrDZjJ,~> -o)J^iJcE4Zrr@WMJcD&9rrDZjJ,~> -o)J^iJcE4Zrr@WMJcD&9rrDZjJ,~> -o)J^iJcE4Zrr@WMJcD&9rrDZjJ,~> -o)J^iJcE4Zrr@WMJcD&9rrDZjJ,~> -o)J^iJcE4Zrr@WMJcD&9rrDZjJ,~> -o)J^iJcC<$JcC<$b5_JAoDa=~> -o)J^iJcC<$JcC<$b5_JAoDa=~> -o)J^iJcC<$JcC<$b5_JAoDa=~> -oD\jlrr@WMJcC<$JcEmm!W`6#o`'F~> -oD\jlrr@WMJcC<$JcEmm!W`6#o`'F~> -oD\jlrr@WMJcC<$JcEmm!W`6#o`'F~> -oDegjJcC<$`W,r -oDegjJcC<$`W,r -oDegjJcC<$`W,r -oDegjJcC<$`W,r -oDegjJcC<$`W,r -oDegjJcC<$`W,r -oDegjJcC<$JcC<$aT)8?o`'F~> -oDegjJcC<$JcC<$aT)8?o`'F~> -oDegjJcC<$JcC<$aT)8?o`'F~> -o`+pkJcC<$JcC<$`rH&=p&BO~> -o`+pkJcC<$JcC<$`rH&=p&BO~> -o`+pkJcC<$JcC<$`rH&=p&BO~> -o`+pkJcC<$JcC<$`rH&=p&BO~> -o`+pkJcC<$JcC<$`rH&=p&BO~> -o`+pkJcC<$JcC<$`rH&=p&BO~> -o`+pkJcC<$JcC<$`rH&=p&BO~> -o`+pkJcC<$JcC<$`rH&=p&BO~> -o`+pkJcC<$JcC<$`rH&=p&BO~> -p&G$lJcC<$JcC<$`;fi;pA]X~> -p&G$lJcC<$JcC<$`;fi;pA]X~> -p&G$lJcC<$JcC<$`;fi;pA]X~> -p&G$lJcC<$JcC<$`;fi;pA]X~> -p&G$lJcC<$JcC<$`;fi;pA]X~> -p&G$lJcC<$JcC<$`;fi;pA]X~> -p&G$lJcC<$JcC<$hZ!T0kl:Y_pA]X~> -p&G$lJcC<$JcC<$hZ!T0kl:Y_pA]X~> -p&G$lJcC<$JcC<$hZ!T0kl:Y_pA]X~> -pAb-mJcE%Urr@WMJcDtS!< -pAb-mJcE%Urr@WMJcDtS!< -pAb-mJcE%Urr@WMJcDtS!< -pAb-mJcE%Urr@WMJcDtSrrD3]rrDfnJ,~> -pAb-mJcE%Urr@WMJcDtSrrD3]rrDfnJ,~> -pAb-mJcE%Urr@WMJcDtSrrD3]rrDfnJ,~> -pAb-mJcC<$JcC<$i;`fWjo>>\p]#a~> -pAb-mJcC<$JcC<$i;`fWjo>>\p]#a~> -pAb-mJcC<$JcC<$i;`fWjo>>\p]#a~> -pAb-mJcC<$JcC<$i;`fWjo>>\p]#a~> -pAb-mJcC<$JcC<$i;`fWjo>>\p]#a~> -pAb-mJcC<$JcC<$i;`fWjo>>\p]#a~> -p](6nJcC<$JcC<$iW&oXirB#Yq#>j~> -p](6nJcC<$JcC<$iW&oXirB#Yq#>j~> -p](6nJcC<$JcC<$iW&oXirB#Yq#>j~> -p](6nJcC<$`;fi;JcDDCrrD'YrrDioJ,~> -p](6nJcC<$`;fi;JcDDCrrD'YrrDioJ,~> -p](6nJcC<$`;fi;JcDDCrrD'YrrDioJ,~> -p](6nJcC<$`;fi;JcC<$s8W*!q#>j~> -p](6nJcC<$`;fi;JcC<$s8W*!q#>j~> -p](6nJcC<$`;fi;JcC<$s8W*!q#>j~> -p](6nJcC<$JcC<$j8],Zi;`fWq#>j~> -p](6nJcC<$JcC<$j8],Zi;`fWq#>j~> -p](6nJcC<$JcC<$j8],Zi;`fWq#>j~> -q#C?oJcC<$JcC<$irB#YhuE]Vq>Ys~> -q#C?oJcC<$JcC<$irB#YhuE]Vq>Ys~> -q#C?oJcC<$JcC<$irB#YhuE]Vq>Ys~> -q#C?oJcC<$JcC<$^An35q>Ys~> -q#C?oJcC<$JcC<$^An35q>Ys~> -q#C?oJcC<$JcC<$^An35q>Ys~> -q#C?oJcC<$JcC<$jT#5[h>dKTq>Ys~> -q#C?oJcC<$JcC<$jT#5[h>dKTq>Ys~> -q#C?oJcC<$JcC<$jT#5[h>dKTq>Ys~> -q#C?oJcC<$JcC<$jT#5[h>dKTq>Ys~> -q#C?oJcC<$JcC<$jT#5[h>dKTq>Ys~> -q#C?oJcC<$JcC<$jT#5[h>dKTq>Ys~> -q>^HpJcC<$JcC<$]`8!3qYu'~> -q>^HpJcC<$JcC<$]`8!3qYu'~> -q>^HpJcC<$JcC<$]`8!3qYu'~> -q>^HpJcDqRrr@WMJcE7[rrCgRrrDoqJ,~> -q>^HpJcDqRrr@WMJcE7[rrCgRrrDoqJ,~> -q>^HpJcDqRrr@WMJcE7[rrCgRrrDoqJ,~> -q>^HpJcDqRrr@WMJcE7[rrCgRrrDoqJ,~> -q>^HpJcDqRrr@WMJcE7[rrCgRrrDoqJ,~> -q>^HpJcDqRrr@WMJcE7[rrCgRrrDoqJ,~> -q>^HpJcC<$JcC<$]`8!3qYu'~> -q>^HpJcC<$JcC<$]`8!3qYu'~> -q>^HpJcC<$JcC<$]`8!3qYu'~> -qZ$QqJcC<$JcC<$jo>>\f`1sOqu;0~> -qZ$QqJcC<$JcC<$jo>>\f`1sOqu;0~> -qZ$QqJcC<$JcC<$jo>>\f`1sOqu;0~> -qZ$QqJcC<$JcC<$jo>>\f`1sOqu;0~> -qZ$QqJcC<$JcC<$jo>>\f`1sOqu;0~> -qZ$QqJcC<$JcC<$jo>>\f`1sOqu;0~> -qZ$QqJcC<$`;fi;JcCi3!RCB)s8N)rs*t~> -qZ$QqJcC<$`;fi;JcCi3!RCB)s8N)rs*t~> -qZ$QqJcC<$`;fi;JcCi3!RCB)s8N)rs*t~> -qZ$QqJcC<$`;fi;JcCf2!GJ7qs8N)rs*t~> -qZ$QqJcC<$`;fi;JcCf2!GJ7qs8N)rs*t~> -qZ$QqJcC<$`;fi;JcCf2!GJ7qs8N)rs*t~> -qu?ZrJcC<$JcC<$jo>>\mJm1dm/R(cr;V9~> -qu?ZrJcC<$JcC<$jo>>\mJm1dm/R(cr;V9~> -qu?ZrJcC<$JcC<$jo>>\mJm1dm/R(cr;V9~> -qu?ZrJcC<$JcC<$jo>>\n,NCflMpkar;V9~> -qu?ZrJcC<$JcC<$jo>>\n,NCflMpkar;V9~> -qu?ZrJcC<$JcC<$jo>>\n,NCflMpkar;V9~> -qu?ZrJcC<$JcC<$dJs4HlMpkar;V9~> -qu?ZrJcC<$JcC<$dJs4HlMpkar;V9~> -qu?ZrJcC<$JcC<$dJs4HlMpkar;V9~> -qu?ZrJcC<$JcC<$k5YG]n,NCfl2Ub`r;V9~> -qu?ZrJcC<$JcC<$k5YG]n,NCfl2Ub`r;V9~> -qu?ZrJcC<$JcC<$k5YG]n,NCfl2Ub`r;V9~> -qu?ZrJcC<$JcC<$k5YG]n,NCfl2Ub`r;V9~> -qu?ZrJcC<$JcC<$k5YG]n,NCfl2Ub`r;V9~> -qu?ZrJcC<$JcC<$k5YG]n,NCfl2Ub`r;V9~> -r;ZcsJcC<$JcC<$df9=IkPtP^rVqB~> -r;ZcsJcC<$JcC<$df9=IkPtP^rVqB~> -r;ZcsJcC<$JcC<$df9=IkPtP^rVqB~> -r;ZcsJcDhOrr@WMJcD_LrrD6^rrE#tJ,~> -r;ZcsJcDhOrr@WMJcD_LrrD6^rrE#tJ,~> -r;ZcsJcDhOrr@WMJcD_LrrD6^rrE#tJ,~> -r;ZcsJcDhOrr@WMJcDbMrrD3]rrE#tJ,~> -r;ZcsJcDhOrr@WMJcDbMrrD3]rrE#tJ,~> -r;ZcsJcDhOrr@WMJcDbMrrD3]rrE#tJ,~> -r;ZcsJcC<$JcC<$k5YG]nGiLgk5YG]rVqB~> -r;ZcsJcC<$JcC<$k5YG]nGiLgk5YG]rVqB~> -r;ZcsJcC<$JcC<$k5YG]nGiLgk5YG]rVqB~> -r;ZcsJcC<$JcC<$k5YG]e,TFJrVqB~> -r;ZcsJcC<$JcC<$k5YG]e,TFJrVqB~> -r;ZcsJcC<$JcC<$k5YG]e,TFJrVqB~> -r;ZcsJcC<$JcC<$eGoOKjo>>\rVqB~> -r;ZcsJcC<$JcC<$eGoOKjo>>\rVqB~> -r;ZcsJcC<$JcC<$eGoOKjo>>\rVqB~> -rVultJcC<$JcC<$e,TFJjT#5[rr7K~> -rVultJcC<$JcC<$e,TFJjT#5[rr7K~> -rVultJcC<$JcC<$e,TFJjT#5[rr7K~> -rVultJcC<$`W,r -rVultJcC<$`W,r -rVultJcC<$`W,r -rVultJcC<$`W,r -rVultJcC<$`W,r -rVultJcC<$`W,r -rVultJcC<$JcC<$[/^.+rr7K~> -rVultJcC<$JcC<$[/^.+rr7K~> -rVultJcC<$JcC<$[/^.+rr7K~> -rVultJcC<$JcC<$eGoOKj8],Zrr7K~> -rVultJcC<$JcC<$eGoOKj8],Zrr7K~> -rVultJcC<$JcC<$eGoOKj8],Zrr7K~> -rVultJcC<$JcC<$k5YG]nc/Uhj8],Zrr7K~> -rVultJcC<$JcC<$k5YG]nc/Uhj8],Zrr7K~> -rVultJcC<$JcC<$k5YG]nc/Uhj8],Zrr7K~> -rr;uuJcC<$JcC<$jo>>\d/X+Gs8RT~> -rr;uuJcC<$JcC<$jo>>\d/X+Gs8RT~> -rr;uuJcC<$JcC<$jo>>\d/X+Gs8RT~> -rr;uuJcC<$JcC<$eGoOKiW&oXs8RT~> -rr;uuJcC<$JcC<$eGoOKiW&oXs8RT~> -rr;uuJcC<$JcC<$eGoOKiW&oXs8RT~> -rr;uuJcC<$JcC<$eGoOKiW&oXs8RT~> -rr;uuJcC<$JcC<$eGoOKiW&oXs8RT~> -rr;uuJcC<$JcC<$eGoOKiW&oXs8RT~> -rr;uuJcDeNrr@WMJcCW-rrE*!J,~> -rr;uuJcDeNrr@WMJcCW-rrE*!J,~> -rr;uuJcDeNrr@WMJcCW-rrE*!J,~> -rr;uuJcDeNrr@WMJcEF`rrDWirrD$XrrE*!J,~> -rr;uuJcDeNrr@WMJcEF`rrDWirrD$XrrE*!J,~> -rr;uuJcDeNrr@WMJcEF`rrDWirrD$XrrE*!J,~> -rr;uuJcC<$JcC<$jo>>\o)J^iiW&oXs8RT~> -rr;uuJcC<$JcC<$jo>>\o)J^iiW&oXs8RT~> -rr;uuJcC<$JcC<$jo>>\o)J^iiW&oXs8RT~> -rr;uuJcC<$JcC<$ZN'q)s8RT~> -rr;uuJcC<$JcC<$ZN'q)s8RT~> -rr;uuJcC<$JcC<$ZN'q)s8RT~> -s8W*!JcC<$JcC<$YlF_'!<7Q~> -s8W*!JcC<$JcC<$YlF_'!<7Q~> -s8W*!JcC<$JcC<$YlF_'!<7Q~> -s8W*!JcC<$JcC<$e,TFJi;`fW!<7Q~> -s8W*!JcC<$JcC<$e,TFJi;`fW!<7Q~> -s8W*!JcC<$JcC<$e,TFJi;`fW!<7Q~> -s8W*!JcC<$`rH&=JcDGDrrDWirrD!Wrr<'!J,~> -s8W*!JcC<$`rH&=JcDGDrrDWirrD!Wrr<'!J,~> -s8W*!JcC<$`rH&=JcDGDrrDWirrD!Wrr<'!J,~> -s8W*!JcC<$`rH&=JcDGDrrCCFrr<'!J,~> -s8W*!JcC<$`rH&=JcDGDrrCCFrr<'!J,~> -s8W*!JcC<$`rH&=JcDGDrrCCFrr<'!J,~> -s8W*!JcC<$JcC<$df9=IiW&oX!<7Q~> -s8W*!JcC<$JcC<$df9=IiW&oX!<7Q~> -s8W*!JcC<$JcC<$df9=IiW&oX!<7Q~> -s8W*!JcC<$JcC<$df9=IiW&oX!<7Q~> -s8W*!JcC<$JcC<$df9=IiW&oX!<7Q~> -s8W*!JcC<$JcC<$df9=IiW&oX!<7Q~> -s8W*!JcC<$JcC<$j8],Zd/X+G!<7Q~> -s8W*!JcC<$JcC<$j8],Zd/X+G!<7Q~> -s8W*!JcC<$JcC<$j8],Zd/X+G!<7Q~> -s8W*!JcC<$JcC<$j8],Zo)J^iiW&oX!<7Q~> -s8W*!JcC<$JcC<$j8],Zo)J^iiW&oX!<7Q~> -s8W*!JcC<$JcC<$j8],Zo)J^iiW&oX!<7Q~> -s8W*!JcC<$JcC<$df9=IiW&oX!<7Q~> -s8W*!JcC<$JcC<$df9=IiW&oX!<7Q~> -s8W*!JcC<$JcC<$df9=IiW&oX!<7Q~> -!ri6#JcC<$JcC<$Y5eM%J,~> -!ri6#JcC<$JcC<$Y5eM%J,~> -!ri6#JcC<$JcC<$Y5eM%J,~> -!ri6#JcDbMrr@WMJcE=]rrDWirrD$Xrr@Q~> -!ri6#JcDbMrr@WMJcE=]rrDWirrD$Xrr@Q~> -!ri6#JcDbMrr@WMJcE=]rrDWirrD$Xrr@Q~> -!ri6#JcDbMrr@WMJcE=]rrDWirrD$Xrr@Q~> -!ri6#JcDbMrr@WMJcE=]rrDWirrD$Xrr@Q~> -!ri6#JcDbMrr@WMJcE=]rrDWirrD$Xrr@Q~> -!ri6#JcC<$JcC<$cN!nEj8],ZJ,~> -!ri6#JcC<$JcC<$cN!nEj8],ZJ,~> -!ri6#JcC<$JcC<$cN!nEj8],ZJ,~> -!ri6#JcC<$JcC<$cN!nEj8],ZJ,~> -!ri6#JcC<$JcC<$cN!nEj8],ZJ,~> -!ri6#JcC<$JcC<$cN!nEj8],ZJ,~> -!ri6#JcC<$JcC<$Y5eM%J,~> -!ri6#JcC<$JcC<$Y5eM%J,~> -!ri6#JcC<$JcC<$Y5eM%J,~> -!ri6#JcC<$JcC<$huE]Vnc/UhjT#5[J,~> -!ri6#JcC<$JcC<$huE]Vnc/UhjT#5[J,~> -!ri6#JcC<$JcC<$huE]Vnc/UhjT#5[J,~> -!ri6#JcC<$JcC<$huE]Vnc/UhjT#5[J,~> -!ri6#JcC<$JcC<$huE]Vnc/UhjT#5[J,~> -!ri6#JcC<$JcC<$huE]Vnc/UhjT#5[J,~> -!ri6#JcC<$aT)8?JcCK)rrD3]rr@Q~> -!ri6#JcC<$aT)8?JcCK)rrD3]rr@Q~> -!ri6#JcC<$aT)8?JcCK)rrD3]rr@Q~> -!ri6#JcC<$aT)8?JcCK)rrD3]rr@Q~> -!ri6#JcC<$aT)8?JcCK)rrD3]rr@Q~> -!ri6#JcC<$aT)8?JcCK)rrD3]rr@Q~> -!ri6#JcC<$JcC<$h>dKTeGoOKJ,~> -!ri6#JcC<$JcC<$h>dKTeGoOKJ,~> -!ri6#JcC<$JcC<$h>dKTeGoOKJ,~> -!ri6#JcC<$JcC<$h>dKTnGiLgkPtP^J,~> -!ri6#JcC<$JcC<$h>dKTnGiLgkPtP^J,~> -!ri6#JcC<$JcC<$h>dKTnGiLgkPtP^J,~> -rr@WMJcC<$JcEjlrrD3]!!%N~> -rr@WMJcC<$JcEjlrrD3]!!%N~> -rr@WMJcC<$JcEjlrrD3]!!%N~> -rr@WMJcC<$JcFI(rrDQgrrD9_!!%N~> -rr@WMJcC<$JcFI(rrDQgrrD9_!!%N~> -rr@WMJcC<$JcFI(rrDQgrrD9_!!%N~> -rr@WMWrN)!JcC<$ZiC%*nGiFelMghaJ,~> -rr@WMWrN)!JcC<$ZiC%*nGiFelMghaJ,~> -rr@WMWrN)!JcC<$ZiC%*nGiFelMghaJ,~> -rr@WMWrN)!JcC<$T)\fjlMghaJ,~> -rr@WMWrN)!JcC<$T)\fjlMghaJ,~> -rr@WMWrN)!JcC<$T)\fjlMghaJ,~> -rr@WMJcC<$JcDhO!!%N~> -rr@WMJcC<$JcDhO!!%N~> -rr@WMJcC<$JcDhO!!%N~> -rr@WMJcC<$JcFC&rrC[N!!%N~> -rr@WMJcC<$JcFC&rrC[N!!%N~> -rr@WMJcC<$JcFC&rrC[N!!%N~> -rr@WMJcC<$JcFC&rrC[N!!%N~> -rr@WMJcC<$JcFC&rrC[N!!%N~> -rr@WMJcC<$JcFC&rrC[N!!%N~> -rr@WMJcC<$JcDhO!!%N~> -rr@WMJcC<$JcDhO!!%N~> -rr@WMJcC<$JcDhO!!%N~> -rr@WMJcC<$JcF=$rrCaP!!%N~> -rr@WMJcC<$JcF=$rrCaP!!%N~> -rr@WMJcC<$JcF=$rrCaP!!%N~> -rr@WMJcC<$JcF=$rrCaP!!%N~> -rr@WMJcC<$JcF=$rrCaP!!%N~> -rr@WMJcC<$JcF=$rrCaP!!%N~> -rr@WMJcEmmrr@WMJcFj3!!%N~> -rr@WMJcEmmrr@WMJcFj3!!%N~> -rr@WMJcEmmrr@WMJcFj3!!%N~> -rr@WMJcEmmrr@WMN;rnXh#@?SJ,~> -rr@WMJcEmmrr@WMN;rnXh#@?SJ,~> -rr@WMJcEmmrr@WMN;rnXh#@?SJ,~> -rr@WMJcC<$JcF4!rrCjS!!%N~> -rr@WMJcC<$JcF4!rrCjS!!%N~> -rr@WMJcC<$JcF4!rrCjS!!%N~> -rr@WMJcC<$JcF-trrCpU!!%N~> -rr@WMJcC<$JcF-trrCpU!!%N~> -rr@WMJcC<$JcF-trrCpU!!%N~> -rr@WMJcC<$JcF-trrCpU!!%N~> -rr@WMJcC<$JcF-trrCpU!!%N~> -rr@WMJcC<$JcF-trrCpU!!%N~> -rr@WMJcC<$JcF$qrrD$X!!%N~> -rr@WMJcC<$JcF$qrrD$X!!%N~> -rr@WMJcC<$JcF$qrrD$X!!%N~> -rr@WMXT/;#JcC<$V>pPqiVrlXJ,~> -rr@WMXT/;#JcC<$V>pPqiVrlXJ,~> -rr@WMXT/;#JcC<$V>pPqiVrlXJ,~> -rr@WMXT/;#YQ+V&p&G$lo`+pko`+pko`+pkp&G$lp&G$lpAb-mpAb-mpAb-mp](6np](6nq#C?o -q>^Hpq>^HpqZ$QqqZ$Qqqu?Zrr;Zcsr;Zcsr;ZcsrVultrVultrr;uurr;uus8W*!s8W*!s8W*! -$3'u*rr<'!!!*&u!!!f#rr<%L~> -rr@WMXT/;#YQ+V&p&G$lo`+pko`+pko`+pkp&G$lp&G$lpAb-mpAb-mpAb-mp](6np](6nq#C?o -q>^Hpq>^HpqZ$QqqZ$Qqqu?Zrr;Zcsr;Zcsr;ZcsrVultrVultrr;uurr;uus8W*!s8W*!s8W*! -$3'u*rr<'!!!*&u!!!f#rr<%L~> -rr@WMXT/;#YQ+V&p&G$lo`+pko`+pko`+pkp&G$lp&G$lpAb-mpAb-mpAb-mp](6np](6nq#C?o -q>^Hpq>^HpqZ$QqqZ$Qqqu?Zrr;Zcsr;Zcsr;ZcsrVultrVultrr;uurr;uus8W*!s8W*!s8W*! -$3'u*rr<'!!!*&u!!!f#rr<%L~> -rr@WMJcFC&rrD`lrrD]krrD]krrD]krrD`lrrD`lrrDcmrrDcmrrDcmrrDfnrrDfnrrDiorrDlp -rrDlprrDoqrrDoqrrDrrrrDusrrDusrrDusrrE#trrE#trrE&urrE&urrE*!rrE*!rrE*!rr -rr@WMJcFC&rrD`lrrD]krrD]krrD]krrD`lrrD`lrrDcmrrDcmrrDcmrrDfnrrDfnrrDiorrDlp -rrDlprrDoqrrDoqrrDrrrrDusrrDusrrDusrrE#trrE#trrE&urrE&urrE*!rrE*!rrE*!rr -rr@WMJcFC&rrD`lrrD]krrD]krrD]krrD`lrrD`lrrDcmrrDcmrrDcmrrDfnrrDfnrrDiorrDlp -rrDlprrDoqrrDoqrrDrrrrDusrrDusrrDusrrE#trrE#trrE&urrE&urrE*!rrE*!rrE*!rr -rr@WMJcC<$JcEjlrrD3]!!%N~> -rr@WMJcC<$JcEjlrrD3]!!%N~> -rr@WMJcC<$JcEjlrrD3]!!%N~> -rr@WMJcC<$JcEjlr;c']!!%N~> -rr@WMJcC<$JcEjlr;c']!!%N~> -rr@WMJcC<$JcEjlr;c']!!%N~> -rr@WMJcC<$JcEdjr;c-_!!%N~> -rr@WMJcC<$JcEdjr;c-_!!%N~> -rr@WMJcC<$JcEdjr;c-_!!%N~> -rr@WMJcC<$JcE^hrrD?a!!%N~> -rr@WMJcC<$JcE^hrrD?a!!%N~> -rr@WMJcC<$JcE^hrrD?a!!%N~> -rr@WMJcC<$JcEXfr;c9c!!%N~> -rr@WMJcC<$JcEXfr;c9c!!%N~> -rr@WMJcC<$JcEXfr;c9c!!%N~> -rr@WMJcC<$JcEXfqZ--c!!%N~> -rr@WMJcC<$JcEXfqZ--c!!%N~> -rr@WMJcC<$JcEXfqZ--c!!%N~> -rr@WMJcF$qrr@WMJcGBBquH?g!!%N~> -rr@WMJcF$qrr@WMJcGBBquH?g!!%N~> -rr@WMJcF$qrr@WMJcGBBquH?g!!%N~> -rr@WMJcF$qrr@WMJcG?AquHBh!!%N~> -rr@WMJcF$qrr@WMJcG?AquHBh!!%N~> -rr@WMJcF$qrr@WMJcG?AquHBh!!%N~> -rr@WMJcC<$JcE@^rrD]k!!%N~> -rr@WMJcC<$JcE@^rrD]k!!%N~> -rr@WMJcC<$JcE@^rrD]k!!%N~> -rr@WMJcC<$JcEC_rW)Tj!!%N~> -rr@WMJcC<$JcEC_rW)Tj!!%N~> -rr@WMJcC<$JcEC_rW)Tj!!%N~> -rr@WMJcC<$JcEUeq#L$d!!%N~> -rr@WMJcC<$JcEUeq#L$d!!%N~> -rr@WMJcC<$JcEUeq#L$d!!%N~> -rr@WMY5eM%JcC<$S,`3_nc&RhJ,~> -rr@WMY5eM%JcC<$S,`3_nc&RhJ,~> -rr@WMY5eM%JcC<$S,`3_nc&RhJ,~> -rr@WMY5eM%JcC<$ScAQeli-qbJ,~> -rr@WMY5eM%JcC<$ScAQeli-qbJ,~> -rr@WMY5eM%JcC<$ScAQeli-qbJ,~> -rr@WMJcC<$JcF$qrr<6&!!*$!!9a@^!.Y~> -rr@WMJcC<$JcF$qrr<6&!!*$!!9a@^!.Y~> -rr@WMJcC<$JcF$qrr<6&!!*$!!9a@^!.Y~> -rr@WMJcC<$JcF$qrr<-#!!)*[!!%N~> -rr@WMJcC<$JcF$qrr<-#!!)*[!!%N~> -rr@WMJcC<$JcF$qrr<-#!!)*[!!%N~> -rr@WMJcC<$JcF-trrCpU!!%N~> -rr@WMJcC<$JcF-trrCpU!!%N~> -rr@WMJcC<$JcF-trrCpU!!%N~> -!ri6#JcC<$JcC<$ec5XL!ri6#huE]VJ,~> -!ri6#JcC<$JcC<$ec5XL!ri6#huE]VJ,~> -!ri6#JcC<$JcC<$ec5XL!ri6#huE]VJ,~> -!ri6#JcC<$JcC<$g&M'Ps8W*!h#IBSJ,~> -!ri6#JcC<$JcC<$g&M'Ps8W*!h#IBSJ,~> -!ri6#JcC<$JcC<$g&M'Ps8W*!h#IBSJ,~> -!ri6#JcC<$JcC<$g&M'Pf`1sOJ,~> -!ri6#JcC<$JcC<$g&M'Pf`1sOJ,~> -!ri6#JcC<$JcC<$g&M'Pf`1sOJ,~> -!ri6#JcC<$JcC<$h#IBSec5XLJ,~> -!ri6#JcC<$JcC<$h#IBSec5XLJ,~> -!ri6#JcC<$JcC<$h#IBSec5XLJ,~> -!ri6#JcC<$JcC<$h#IBSec5XLJ,~> -!ri6#JcC<$JcC<$h#IBSec5XLJ,~> -!ri6#JcC<$JcC<$h#IBSec5XLJ,~> -!ri6#JcC<$df9=IJcCl4rrCIHrr@Q~> -!ri6#JcC<$df9=IJcCl4rrCIHrr@Q~> -!ri6#JcC<$df9=IJcCl4rrCIHrr@Q~> -!ri6#JcC<$df9=IJcCl4rrCIHrr@Q~> -!ri6#JcC<$df9=IJcCl4rrCIHrr@Q~> -!ri6#JcC<$df9=IJcCl4rrCIHrr@Q~> -!ri6#JcC<$JcC<$Y5eM%J,~> -!ri6#JcC<$JcC<$Y5eM%J,~> -!ri6#JcC<$JcC<$Y5eM%J,~> -!ri6#JcE"Trr@WMJcE1YrrC=Drr@Q~> -!ri6#JcE"Trr@WMJcE1YrrC=Drr@Q~> -!ri6#JcE"Trr@WMJcE1YrrC=Drr@Q~> -!ri6#JcE"Trr@WMJcE1YrrC=Drr@Q~> -!ri6#JcE"Trr@WMJcE1YrrC=Drr@Q~> -!ri6#JcE"Trr@WMJcE1YrrC=Drr@Q~> -!ri6#JcC<$JcC<$kl:Y_aoDA@J,~> -!ri6#JcC<$JcC<$kl:Y_aoDA@J,~> -!ri6#JcC<$JcC<$kl:Y_aoDA@J,~> -!ri6#JcC<$JcC<$kl:Y_aoDA@J,~> -!ri6#JcC<$JcC<$kl:Y_aoDA@J,~> -!ri6#JcC<$JcC<$kl:Y_aoDA@J,~> -s8W*!JcC<$JcC<$YlF_'!<7Q~> -s8W*!JcC<$JcC<$YlF_'!<7Q~> -s8W*!JcC<$JcC<$YlF_'!<7Q~> -s8W*!JcC<$JcC<$YlF_'!<7Q~> -s8W*!JcC<$JcC<$YlF_'!<7Q~> -s8W*!JcC<$JcC<$YlF_'!<7Q~> -s8W*!JcC<$JcC<$mf3:e`W,r -s8W*!JcC<$JcC<$mf3:e`W,r -s8W*!JcC<$JcC<$mf3:e`W,r -s8W*!JcC<$JcC<$mf3:e`W,r -s8W*!JcC<$JcC<$mf3:e`W,r -s8W*!JcC<$JcC<$mf3:e`W,r -s8W*!JcC<$JcC<$YlF_'!<7Q~> -s8W*!JcC<$JcC<$YlF_'!<7Q~> -s8W*!JcC<$JcC<$YlF_'!<7Q~> -s8W*!JcC<$JcC<$o)J^i_>jN8!<7Q~> -s8W*!JcC<$JcC<$o)J^i_>jN8!<7Q~> -s8W*!JcC<$JcC<$o)J^i_>jN8!<7Q~> -s8W*!JcC<$JcC<$o)J^i_>jN8!<7Q~> -s8W*!JcC<$JcC<$o)J^i_>jN8!<7Q~> -s8W*!JcC<$JcC<$o)J^i_>jN8!<7Q~> -s8W*!JcC<$f)PaMJcC<$h>dKT!<7Q~> -s8W*!JcC<$f)PaMJcC<$h>dKT!<7Q~> -s8W*!JcC<$f)PaMJcC<$h>dKT!<7Q~> -s8W*!JcC<$f)PaMJcC<$h>dKT!<7Q~> -s8W*!JcC<$f)PaMJcC<$h>dKT!<7Q~> -s8W*!JcC<$f)PaMJcC<$h>dKT!<7Q~> -rr;uuJcE1Yrr@WMJcE[grrBe5rrE*!J,~> -rr;uuJcE1Yrr@WMJcE[grrBe5rrE*!J,~> -rr;uuJcE1Yrr@WMJcE[grrBe5rrE*!J,~> -rr;uuJcE1Yrr@WMJcE[grrBe5rrE*!J,~> -rr;uuJcE1Yrr@WMJcE[grrBe5rrE*!J,~> -rr;uuJcE1Yrr@WMJcE[grrBe5rrE*!J,~> -rr;uuJcC<$JcC<$ZN'q)s8RT~> -rr;uuJcC<$JcC<$ZN'q)s8RT~> -rr;uuJcC<$JcC<$ZN'q)s8RT~> -rr;uuJcC<$JcC<$ZN'q)s8RT~> -rr;uuJcC<$JcC<$ZN'q)s8RT~> -rr;uuJcC<$JcC<$ZN'q)s8RT~> -rr;uuJcC<$JcC<$ZN'q)s8RT~> -rr;uuJcC<$JcC<$ZN'q)s8RT~> -rr;uuJcC<$JcC<$ZN'q)s8RT~> -rr;uuJcC<$JcC<$qu?Zr])Vd1s8RT~> -rr;uuJcC<$JcC<$qu?Zr])Vd1s8RT~> -rr;uuJcC<$JcC<$qu?Zr])Vd1s8RT~> -rr;uuJcC<$JcC<$qu?Zr])Vd1s8RT~> -rr;uuJcC<$JcC<$qu?Zr])Vd1s8RT~> -rr;uuJcC<$JcC<$qu?Zr])Vd1s8RT~> -rVultJcC<$JcC<$[/^.+rr7K~> -rVultJcC<$JcC<$[/^.+rr7K~> -rVultJcC<$JcC<$[/^.+rr7K~> -rVultJcC<$JcC<$[/^.+rr7K~> -rVultJcC<$JcC<$[/^.+rr7K~> -rVultJcC<$JcC<$[/^.+rr7K~> -rVultJcC<$JcC<$[/^.+rr7K~> -rVultJcC<$JcC<$[/^.+rr7K~> -rVultJcC<$JcC<$[/^.+rr7K~> -rVultJcC<$JcC<$!ri6#\,ZI.rr7K~> -rVultJcC<$JcC<$!ri6#\,ZI.rr7K~> -rVultJcC<$JcC<$!ri6#\,ZI.rr7K~> -rVultJcC<$JcC<$!ri6#\,ZI.rr7K~> -rVultJcC<$JcC<$!ri6#\,ZI.rr7K~> -rVultJcC<$JcC<$!ri6#\,ZI.rr7K~> -rVultJcC<$g].9RJcC<$h#IBSrr7K~> -rVultJcC<$g].9RJcC<$h#IBSrr7K~> -rVultJcC<$g].9RJcC<$h#IBSrr7K~> -r;ZcsJcE@^rrD!WrrC+>rr@WMJcFR+rrE#tJ,~> -r;ZcsJcE@^rrD!WrrC+>rr@WMJcFR+rrE#tJ,~> -r;ZcsJcE@^rrD!WrrC+>rr@WMJcFR+rrE#tJ,~> -r;ZcsJcE@^rrD!Wrr@WMJcDGDrrE#tJ,~> -r;ZcsJcE@^rrD!Wrr@WMJcDGDrrE#tJ,~> -r;ZcsJcE@^rrD!Wrr@WMJcDGDrrE#tJ,~> -r;ZcsJcC<$JcCH(rrBG+rrE#tJ,~> -r;ZcsJcC<$JcCH(rrBG+rrE#tJ,~> -r;ZcsJcC<$JcCH(rrBG+rrE#tJ,~> -r;ZcsJcC<$JcCH(rrBG+rrE#tJ,~> -r;ZcsJcC<$JcCH(rrBG+rrE#tJ,~> -r;ZcsJcC<$JcCH(rrBG+rrE#tJ,~> -r;ZcsJcC<$JcC<$[f?@-rVqB~> -r;ZcsJcC<$JcC<$[f?@-rVqB~> -r;ZcsJcC<$JcC<$[f?@-rVqB~> -r;ZcsJcC<$JcC<$[f?@-rVqB~> -r;ZcsJcC<$JcC<$[f?@-rVqB~> -r;ZcsJcC<$JcC<$[f?@-rVqB~> -qu?ZrJcC<$JcC<$\GuR/r;V9~> -qu?ZrJcC<$JcC<$\GuR/r;V9~> -qu?ZrJcC<$JcC<$\GuR/r;V9~> -qu?ZrJcC<$JcC<$\GuR/r;V9~> -qu?ZrJcC<$JcC<$\GuR/r;V9~> -qu?ZrJcC<$JcC<$\GuR/r;V9~> -qu?ZrJcC<$JcCW-rrB>(rrDusJ,~> -qu?ZrJcC<$JcCW-rrB>(rrDusJ,~> -qu?ZrJcC<$JcCW-rrB>(rrDusJ,~> -qu?ZrJcC<$JcCW-rrB>(rrDusJ,~> -qu?ZrJcC<$JcCW-rrB>(rrDusJ,~> -qu?ZrJcC<$JcCW-rrB>(rrDusJ,~> -qu?ZrJcC<$JcC<$\GuR/r;V9~> -qu?ZrJcC<$JcC<$\GuR/r;V9~> -qu?ZrJcC<$JcC<$\GuR/r;V9~> -qZ$QqJcC<$JcC<$])Vd1qu;0~> -qZ$QqJcC<$JcC<$])Vd1qu;0~> -qZ$QqJcC<$JcC<$])Vd1qu;0~> -qZ$QqJcDGDrr@WMJcD8?rrDrrJ,~> -qZ$QqJcDGDrr@WMJcD8?rrDrrJ,~> -qZ$QqJcDGDrr@WMJcD8?rrDrrJ,~> -qZ$QqJcEOcrrD-[rr@WMJcD8?rrDrrJ,~> -qZ$QqJcEOcrrD-[rr@WMJcD8?rrDrrJ,~> -qZ$QqJcEOcrrD-[rr@WMJcD8?rrDrrJ,~> -qZ$QqJcEOcrrAhorr@WMZ2ah(YQ+V&qu;0~> -qZ$QqJcEOcrrAhorr@WMZ2ah(YQ+V&qu;0~> -qZ$QqJcEOcrrAhorr@WMZ2ah(YQ+V&qu;0~> -q>^HpJcC<$iW&oXJcE"TrrB;'rrDoqJ,~> -q>^HpJcC<$iW&oXJcE"TrrB;'rrDoqJ,~> -q>^HpJcC<$iW&oXJcE"TrrB;'rrDoqJ,~> -q>^HpJcC<$JcC<$]`8!3qYu'~> -q>^HpJcC<$JcC<$]`8!3qYu'~> -q>^HpJcC<$JcC<$]`8!3qYu'~> -q>^HpJcC<$JcC<$]`8!3qYu'~> -q>^HpJcC<$JcC<$]`8!3qYu'~> -q>^HpJcC<$JcC<$]`8!3qYu'~> -q>^HpJcC<$JcC<$]`8!3qYu'~> -q>^HpJcC<$JcC<$]`8!3qYu'~> -q>^HpJcC<$JcC<$]`8!3qYu'~> -q#C?oJcC<$JcC<$^An35q>Ys~> -q#C?oJcC<$JcC<$^An35q>Ys~> -q#C?oJcC<$JcC<$^An35q>Ys~> -q#C?oJcC<$JcC<$^An35q>Ys~> -q#C?oJcC<$JcC<$^An35q>Ys~> -q#C?oJcC<$JcC<$^An35q>Ys~> -q#C?oJcC<$JcCo5rrB8&rrDlpJ,~> -q#C?oJcC<$JcCo5rrB8&rrDlpJ,~> -q#C?oJcC<$JcCo5rrB8&rrDlpJ,~> -q#C?oJcC<$JcCo5rrB8&rrDlpJ,~> -q#C?oJcC<$JcCo5rrB8&rrDlpJ,~> -q#C?oJcC<$JcCo5rrB8&rrDlpJ,~> -p](6nJcDeNrr@WMJcD,;rrDioJ,~> -p](6nJcDeNrr@WMJcD,;rrDioJ,~> -p](6nJcDeNrr@WMJcD,;rrDioJ,~> -p](6nJcDeNrr@WMJcD,;rrDioJ,~> -p](6nJcDeNrr@WMJcD,;rrDioJ,~> -p](6nJcDeNrr@WMJcD,;rrDioJ,~> -p](6nJcEdjrr@WMJcC<$r;Zcsq#>j~> -p](6nJcEdjrr@WMJcC<$r;Zcsq#>j~> -p](6nJcEdjrr@WMJcC<$r;Zcsq#>j~> -p](6nJcEdjrr@WMJcC<$r;Zcsq#>j~> -p](6nJcEdjrr@WMJcC<$r;Zcsq#>j~> -p](6nJcEdjrr@WMJcC<$r;Zcsq#>j~> -pAb-mJcC<$JcD):rrB5%rrDfnJ,~> -pAb-mJcC<$JcD):rrB5%rrDfnJ,~> -pAb-mJcC<$JcD):rrB5%rrDfnJ,~> -pAb-mJcC<$kPtP^JcE(VrrB5%rrDfnJ,~> -pAb-mJcC<$kPtP^JcE(VrrB5%rrDfnJ,~> -pAb-mJcC<$kPtP^JcE(VrrB5%rrDfnJ,~> -pAb-mJcC<$kPtP^JcC<$hZ*TUp]#a~> -pAb-mJcC<$kPtP^JcC<$hZ*TUp]#a~> -pAb-mJcC<$kPtP^JcC<$hZ*TUp]#a~> -pAb-mJcC<$JcC<$_Z0W9p]#a~> -pAb-mJcC<$JcC<$_Z0W9p]#a~> -pAb-mJcC<$JcC<$_Z0W9p]#a~> -p&G$lJcC<$JcC<$`;fi;pA]X~> -p&G$lJcC<$JcC<$`;fi;pA]X~> -p&G$lJcC<$JcC<$`;fi;pA]X~> -p&G$lJcC<$JcC<$`;fi;pA]X~> -p&G$lJcC<$JcC<$`;fi;pA]X~> -p&G$lJcC<$JcC<$`;fi;pA]X~> -p&G$lJcC<$JcC<$`;fi;pA]X~> -p&G$lJcC<$JcC<$`;fi;pA]X~> -p&G$lJcC<$JcC<$`;fi;pA]X~> -o`+pkJcE.Xrr@WMJcFs6rrB8&rrD`lJ,~> -o`+pkJcE.Xrr@WMJcFs6rrB8&rrD`lJ,~> -o`+pkJcE.Xrr@WMJcFs6rrB8&rrD`lJ,~> -o`+pkJcE.Xrr@WMJcFs6rrB8&rrD`lJ,~> -o`+pkJcE.Xrr@WMJcFs6rrB8&rrD`lJ,~> -o`+pkJcE.Xrr@WMJcFs6rrB8&rrD`lJ,~> -o`+pkJcF$qrr@WMJcC<$qu?Zrp&BO~> -o`+pkJcF$qrr@WMJcC<$qu?Zrp&BO~> -o`+pkJcF$qrr@WMJcC<$qu?Zrp&BO~> -oDegjJcF'rrr@WMJcC<$r;Zcso`'F~> -oDegjJcF'rrr@WMJcC<$r;Zcso`'F~> -oDegjJcF'rrr@WMJcC<$r;Zcso`'F~> -oDegjJcC<$JcC<$aT)8?o`'F~> -oDegjJcC<$JcC<$aT)8?o`'F~> -oDegjJcC<$JcC<$aT)8?o`'F~> -oDegjJcC<$JcC<$aT)8?o`'F~> -oDegjJcC<$JcC<$aT)8?o`'F~> -oDegjJcC<$JcC<$aT)8?o`'F~> -oD\jlrr@WMJcC<$JcEmm!W`6#o`'F~> -oD\jlrr@WMJcC<$JcEmm!W`6#o`'F~> -oD\jlrr@WMJcC<$JcEmm!W`6#o`'F~> -o)J^iJcC<$mf3:eJcE(VrrB8&rrDZjJ,~> -o)J^iJcC<$mf3:eJcE(VrrB8&rrDZjJ,~> -o)J^iJcC<$mf3:eJcE(VrrB8&rrDZjJ,~> -o)J^iJcC<$mf3:eJcE(VrrB8&rrDZjJ,~> -o)J^iJcC<$mf3:eJcE(VrrB8&rrDZjJ,~> -o)J^iJcC<$mf3:eJcE(VrrB8&rrDZjJ,~> -o)J^iJcC<$JcC<$b5_JAoDa=~> -o)J^iJcC<$JcC<$b5_JAoDa=~> -o)J^iJcC<$JcC<$b5_JAoDa=~> -nc/UhJcC<$JcC<$bl@\Co)F4~> -nc/UhJcC<$JcC<$bl@\Co)F4~> -nc/UhJcC<$JcC<$bl@\Co)F4~> -nc/UhJcEIarr@WMJcCl4rrDWiJ,~> -nc/UhJcEIarr@WMJcCl4rrDWiJ,~> -nc/UhJcEIarr@WMJcCl4rrDWiJ,~> -nc&Xjrr@WM^]4<6JcC<$P5bR`rrDWiJ,~> -nc&Xjrr@WM^]4<6JcC<$P5bR`rrDWiJ,~> -nc&Xjrr@WM^]4<6JcC<$P5bR`rrDWiJ,~> -nGiLgJcF:#rr@WMJcF$qrrB>(rrDThJ,~> -nGiLgJcF:#rr@WMJcF$qrrB>(rrDThJ,~> -nGiLgJcF:#rr@WMJcF$qrrB>(rrDThJ,~> -nGiLgJcF:#rr@WMJcF$qrrB>(rrDThJ,~> -nGiLgJcF:#rr@WMJcF$qrrB>(rrDThJ,~> -nGiLgJcF:#rr@WMJcF$qrrB>(rrDThJ,~> -n,NCfJcC<$JcC<$d/X+GnGe"~> -n,NCfJcC<$JcC<$d/X+GnGe"~> -n,NCfJcC<$JcC<$d/X+GnGe"~> -n,NCfJcC<$JcC<$d/X+GnGe"~> -n,NCfJcC<$JcC<$d/X+GnGe"~> -n,NCfJcC<$JcC<$d/X+GnGe"~> -n,NCfJcC<$JcC<$d/X+GnGe"~> -n,NCfJcC<$JcC<$d/X+GnGe"~> -n,NCfJcC<$JcC<$d/X+GnGe"~> -mf3:eJcC<$JcC<$df9=In,In~> -mf3:eJcC<$JcC<$df9=In,In~> -mf3:eJcC<$JcC<$df9=In,In~> -mf3:eJcC<$JcC<$df9=In,In~> -mf3:eJcC<$JcC<$df9=In,In~> -mf3:eJcC<$JcC<$df9=In,In~> -mf3:eJcC<$o`+pkJcE%UrrBA)rrDNfJ,~> -mf3:eJcC<$o`+pkJcE%UrrBA)rrDNfJ,~> -mf3:eJcC<$o`+pkJcE%UrrBA)rrDNfJ,~> -mJm1dJcEjlrrB8&rr@WMZN'q)ZiC%*mf.e~> -mJm1dJcEjlrrB8&rr@WMZN'q)ZiC%*mf.e~> -mJm1dJcEjlrrB8&rr@WMZN'q)ZiC%*mf.e~> -mJm1dJcEjlrr@WMJcCc1rrDKeJ,~> -mJm1dJcEjlrr@WMJcCc1rrDKeJ,~> -mJm1dJcEjlrr@WMJcCc1rrDKeJ,~> -m/R(cJcC<$JcC<$f)PaMmJh\~> -m/R(cJcC<$JcC<$f)PaMmJh\~> -m/R(cJcC<$JcC<$f)PaMmJh\~> -m/R(cJcFR+rr@WMJcC<$r;ZcsmJh\~> -m/R(cJcFR+rr@WMJcC<$r;ZcsmJh\~> -m/R(cJcFR+rr@WMJcC<$r;ZcsmJh\~> -m/R(cJcFR+rr@WMJcC<$r;ZcsmJh\~> -m/R(cJcFR+rr@WMJcC<$r;ZcsmJh\~> -m/R(cJcFR+rr@WMJcC<$r;ZcsmJh\~> -li6tbJcC<$JcDSHrrBM-rrDEcJ,~> -li6tbJcC<$JcDSHrrBM-rrDEcJ,~> -li6tbJcC<$JcDSHrrBM-rrDEcJ,~> -li6tbJcC<$JcDSHrrBM-rrDEcJ,~> -li6tbJcC<$JcDSHrrBM-rrDEcJ,~> -li6tbJcC<$JcDSHrrBM-rrDEcJ,~> -lMpkaJcC<$JcC<$gAh0Qli2J~> -lMpkaJcC<$JcC<$gAh0Qli2J~> -lMpkaJcC<$JcC<$gAh0Qli2J~> -lMpkaJcC<$JcC<$gAh0Qli2J~> -lMpkaJcC<$JcC<$gAh0Qli2J~> -lMpkaJcC<$JcC<$gAh0Qli2J~> -lMpkaJcC<$JcC<$gAh0Qli2J~> -lMpkaJcC<$JcC<$gAh0Qli2J~> -lMpkaJcC<$JcC<$gAh0Qli2J~> -l2Ub`JcF4!rr@WMJcC]/rrD?aJ,~> -l2Ub`JcF4!rr@WMJcC]/rrD?aJ,~> -l2Ub`JcF4!rr@WMJcC]/rrD?aJ,~> -l2Ub`JcF4!rr@WMJcF@%rrBS/rrD?aJ,~> -l2Ub`JcF4!rr@WMJcF@%rrBS/rrD?aJ,~> -l2Ub`JcF4!rr@WMJcF@%rrBS/rrD?aJ,~> -kl:Y_JcC<$rVultJcDnQrrBV0rrD<`J,~> -kl:Y_JcC<$rVultJcDnQrrBV0rrD<`J,~> -kl:Y_JcC<$rVultJcDnQrrBV0rrD<`J,~> -kl:Y_JcFj3rrAPgrr@WMJcFg2rrD<`J,~> -kl:Y_JcFj3rrAPgrr@WMJcFg2rrD<`J,~> -kl:Y_JcFj3rrAPgrr@WMJcFg2rrD<`J,~> -kl1\arr@WMk5YG]JcC<$JcG]K!W`6#l2Q8~> -kl1\arr@WMk5YG]JcC<$JcG]K!W`6#l2Q8~> -kl1\arr@WMk5YG]JcC<$JcG]K!W`6#l2Q8~> -kPtP^JcC<$JcC<$i;`fWkl6/~> -kPtP^JcC<$JcC<$i;`fWkl6/~> -kPtP^JcC<$JcC<$i;`fWkl6/~> -kPtP^JcC<$JcC<$i;`fWkl6/~> -kPtP^JcC<$JcC<$i;`fWkl6/~> -kPtP^JcC<$JcC<$i;`fWkl6/~> -k5YG]JcC<$JcD_LrrB_3rrD6^J,~> -k5YG]JcC<$JcD_LrrB_3rrD6^J,~> -k5YG]JcC<$JcD_LrrB_3rrD6^J,~> -k5YG]JcC<$JcD_LrrB_3rrD6^J,~> -k5YG]JcC<$JcD_LrrB_3rrD6^J,~> -k5YG]JcC<$JcD_LrrB_3rrD6^J,~> -jo>>\JcFR+rr@WMJcCW-rrD3]J,~> -jo>>\JcFR+rr@WMJcCW-rrD3]J,~> -jo>>\JcFR+rr@WMJcCW-rrD3]J,~> -jo>>\JcFR+rr@WMJcCW-rrD3]J,~> -jo>>\JcFR+rr@WMJcCW-rrD3]J,~> -jo>>\JcFR+rr@WMJcCW-rrD3]J,~> -jT#5[JcC<$JcC<$k5YG]jo9i~> -jT#5[JcC<$JcC<$k5YG]jo9i~> -jT#5[JcC<$JcC<$k5YG]jo9i~> -jT#5[JcG-;rr@WMJcEOcrrBh6rrD0\J,~> -jT#5[JcG-;rr@WMJcEOcrrBh6rrD0\J,~> -jT#5[JcG-;rr@WMJcEOcrrBh6rrD0\J,~> -j8],ZJcG0 -j8],ZJcG0 -j8],ZJcG0 -j8],ZJcCE'rr@WMJcFp5rrD-[J,~> -j8],ZJcCE'rr@WMJcFp5rrD-[J,~> -j8],ZJcCE'rr@WMJcFp5rrD-[J,~> -irB#YJcCH(rr@WMJcFs6rrD*ZJ,~> -irB#YJcCH(rr@WMJcFs6rrD*ZJ,~> -irB#YJcCH(rr@WMJcFs6rrD*ZJ,~> -irB#YJcC<$JcC<$lMpkaj8XW~> -irB#YJcC<$JcC<$lMpkaj8XW~> -irB#YJcC<$JcC<$lMpkaj8XW~> -iW&oXJcFm4rr@WMJcEgkrrC";rrD'YJ,~> -iW&oXJcFm4rr@WMJcEgkrrC";rrD'YJ,~> -iW&oXJcFm4rr@WMJcEgkrrC";rrD'YJ,~> -iW&oXJcFm4rr@WMJcEgkrrC";rrD'YJ,~> -iW&oXJcFm4rr@WMJcEgkrrC";rrD'YJ,~> -iW&oXJcFm4rr@WMJcEgkrrC";rrD'YJ,~> -i;`fWJcC<$JcC<$mf3:eiW"E~> -i;`fWJcC<$JcC<$mf3:eiW"E~> -i;`fWJcC<$JcC<$mf3:eiW"E~> -i;`fWJcC<$JcC<$mf3:eiW"E~> -i;`fWJcC<$JcC<$mf3:eiW"E~> -i;`fWJcC<$JcC<$mf3:eiW"E~> -huE]VJcGHDrr@WMJcC<$rVulti;\<~> -huE]VJcGHDrr@WMJcC<$rVulti;\<~> -huE]VJcGHDrr@WMJcC<$rVulti;\<~> -huE]VJcGHDrr@WMJcE:\rrC+>rrD!WJ,~> -huE]VJcGHDrr@WMJcE:\rrC+>rrD!WJ,~> -huE]VJcGHDrr@WMJcE:\rrC+>rrD!WJ,~> -hZ*TUJcC<$JcDkPrrC.?rrCsVJ,~> -hZ*TUJcC<$JcDkPrrC.?rrCsVJ,~> -hZ*TUJcC<$JcDkPrrC.?rrCsVJ,~> -hZ*TUJcC<$JcC<$o)J^ihuA3~> -hZ*TUJcC<$JcC<$o)J^ihuA3~> -hZ*TUJcC<$JcC<$o)J^ihuA3~> -h>dKTJcG6>rr@WMJcCN*rrCpUJ,~> -h>dKTJcG6>rr@WMJcCN*rrCpUJ,~> -h>dKTJcG6>rr@WMJcCN*rrCpUJ,~> -h>dKTJcG6>rrA\krr@WMU]:>obQ%SBhZ&*~> -h>dKTJcG6>rrA\krr@WMU]:>obQ%SBhZ&*~> -h>dKTJcG6>rrA\krr@WMU]:>obQ%SBhZ&*~> -h#IBSJcC`0rr@WMU]:>obl@\Ch>`!~> -h#IBSJcC`0rr@WMU]:>obl@\Ch>`!~> -h#IBSJcC`0rr@WMU]:>obl@\Ch>`!~> -h#@EUrr@WMJcC<$JcGNF!W`6#h>`!~> -h#@EUrr@WMJcC<$JcGNF!W`6#h>`!~> -h#@EUrr@WMJcC<$JcGNF!W`6#h>`!~> -g].9RJcG`Lrr@WMJcC<$rVulth#Dm~> -g].9RJcG`Lrr@WMJcC<$rVulth#Dm~> -g].9RJcG`Lrr@WMJcC<$rVulth#Dm~> -g]% -g]% -g]% -gAh0QJcC<$JcDkPrrCFGrrCgRJ,~> -gAh0QJcC<$JcDkPrrCFGrrCgRJ,~> -gAh0QJcC<$JcDkPrrCFGrrCgRJ,~> -g&M'PJcC<$JcC<$r;ZcsgAc[~> -g&M'PJcC<$JcC<$r;ZcsgAc[~> -g&M'PJcC<$JcC<$r;ZcsgAc[~> -g&M'PJcGQGrr@WMJcE4ZrrCLIrrCdQJ,~> -g&M'PJcGQGrr@WMJcE4ZrrCLIrrCdQJ,~> -g&M'PJcGQGrr@WMJcE4ZrrCLIrrCdQJ,~> -f`1sOJcGTHrr@WMJcE4ZrrCOJrrCaPJ,~> -f`1sOJcGTHrr@WMJcE4ZrrCOJrrCaPJ,~> -f`1sOJcGTHrr@WMJcE4ZrrCOJrrCaPJ,~> -f`)!Qrr@WMJcCN*rrDrrrrDrrrrDrrrrA;`!W`6#g&HR~> -f`)!Qrr@WMJcCN*rrDrrrrDrrrrDrrrrA;`!W`6#g&HR~> -f`)!Qrr@WMJcCN*rrDrrrrDrrrrDrrrrA;`!W`6#g&HR~> -fDkjNJcC<$OT5=\qZ$Qqqu?Zrqu?Zrqu?Zrr;ZcsS,`Kgf`-I~> -fDkjNJcC<$OT5=\qZ$Qqqu?Zrqu?Zrqu?Zrr;ZcsS,`Kgf`-I~> -fDkjNJcC<$OT5=\qZ$Qqqu?Zrqu?Zrqu?Zrr;ZcsS,`Kgf`-I~> -f)PaMLB%8RP5kO^JcGcMrrCgRrrDusrrCCFrrC[NrrC[NJ,~> -f)PaMLB%8RP5kO^JcGcMrrCgRrrDusrrCCFrrC[NrrC[NJ,~> -f)PaMLB%8RP5kO^JcGcMrrCgRrrDusrrCCFrrC[NrrC[NJ,~> -f)PaMLB%8RP5kO^M#[JTbQ%SBr;Zcsf)PaMfDkjNfDg@~> -f)PaMLB%8RP5kO^M#[JTbQ%SBr;Zcsf)PaMfDkjNfDg@~> -f)PaMLB%8RP5kO^M#[JTbQ%SBr;Zcsf)PaMfDkjNfDg@~> -ec5XLJcC<$S,`Kg`;fi;rVultZ2ah(f)L7~> -ec5XLJcC<$S,`Kg`;fi;rVultZ2ah(f)L7~> -ec5XLJcC<$S,`Kg`;fi;rVultZ2ah(f)L7~> -ec,[Nrr@]Orr@WMV>pPq[K$7,gAh0Qg]% -ec,[Nrr@]Orr@WMV>pPq[K$7,gAh0Qg]% -ec,[Nrr@]Orr@WMV>pPq[K$7,gAh0Qg]% -eGoOKKE(rOJcDSHrrB;'rrCsVrrCgRrrCULJ,~> -eGoOKKE(rOJcDSHrrB;'rrCsVrrCgRrrCULJ,~> -eGoOKKE(rOJcDSHrrB;'rrCsVrrCgRrrCULJ,~> -e,TFJJcC<$JcF4!rrE&urrD*ZrrCmTrrCRKJ,~> -e,TFJJcC<$JcF4!rrE&urrD*ZrrCmTrrCRKJ,~> -e,TFJJcC<$JcF4!rrE&urrD*ZrrCmTrrCRKJ,~> -e,TFJJcC<$YQ+V&UAt5nj8],Zh>dKTeGk%~> -e,TFJJcC<$YQ+V&UAt5nj8],Zh>dKTeGk%~> -e,TFJJcC<$YQ+V&UAt5nj8],Zh>dKTeGk%~> -df9=INrT+ZJcDSHrrAVirrBt:rrCOJJ,~> -df9=INrT+ZJcDSHrrAVirrBt:rrCOJJ,~> -df9=INrT+ZJcDSHrrAVirrBt:rrCOJJ,~> -dJs4HO8o4[JcC<$^]4<6s8W*!aT)8?df4g~> -dJs4HO8o4[JcC<$^]4<6s8W*!aT)8?df4g~> -dJs4HO8o4[JcC<$^]4<6s8W*!aT)8?df4g~> -dJs4HJcC<$])Vd1OT5=\aT)8?df4g~> -dJs4HJcC<$])Vd1OT5=\aT)8?df4g~> -dJs4HJcC<$])Vd1OT5=\aT)8?df4g~> -d/X+GMuWeWQ2gjaU&Y,mN;rnXc2[eDdJn^~> -d/X+GMuWeWQ2gjaU&Y,mN;rnXc2[eDdJn^~> -d/X+GMuWeWQ2gjaU&Y,mN;rnXc2[eDdJn^~> -d/O.IrrA#XrrA>arr@WMWrN)!s8W*!df0@KrrCIHJ,~> -d/O.IrrA#XrrA>arr@WMWrN)!s8W*!df0@KrrCIHJ,~> -d/O.IrrA#XrrA>arr@WMWrN)!s8W*!df0@KrrCIHJ,~> -ci="FJcC<$`W,r -ci="FJcC<$`W,r -ci="FJcC<$`W,r -cN!nEQN-sbJcE(Vrr@WMr;Zcsf)PaMci8L~> -cN!nEQN-sbJcE(Vrr@WMr;Zcsf)PaMci8L~> -cN!nEQN-sbJcE(Vrr@WMr;Zcsf)PaMci8L~> -cMmqGrrADcrr@WMJcDhOrr<-#!!(aQ!W`6#ci8L~> -cMmqGrrADcrr@WMJcDhOrr<-#!!(aQ!W`6#ci8L~> -cMmqGrrADcrr@WMJcDhOrr<-#!!(aQ!W`6#ci8L~> -c2[eDJcC<$JcEF`rr<-#!!(jTrrC@EJ,~> -c2[eDJcC<$JcEF`rr<-#!!(jTrrC@EJ,~> -c2[eDJcC<$JcEF`rr<-#!!(jTrrC@EJ,~> -bl@\CPlLa`JcC<$WrN)!hZ*TUc2W:~> -bl@\CPlLa`JcC<$WrN)!hZ*TUc2W:~> -bl@\CPlLa`JcC<$WrN)!hZ*TUc2W:~> -bQ%SBQ2gjaJcELbrr@WMm/R(ciW&oXbl<1~> -bQ%SBQ2gjaJcELbrr@WMm/R(ciW&oXbl<1~> -bQ%SBQ2gjaJcELbrr@WMm/R(ciW&oXbl<1~> -bQ%SBJcC<$dJs4HJcG*:rrD$XrrC:CJ,~> -bQ%SBJcC<$dJs4HJcG*:rrD$XrrC:CJ,~> -bQ%SBJcC<$dJs4HJcG*:rrD$XrrC:CJ,~> -b5_JAJcC<$JcD2=rrC7BJ,~> -b5_JAJcC<$JcD2=rrC7BJ,~> -b5_JAJcC<$JcD2=rrC7BJ,~> -aoDA@T)\fjMZ<\VJcC<$qZ$Qqb5Zt~> -aoDA@T)\fjMZ<\VJcC<$qZ$Qqb5Zt~> -aoDA@T)\fjMZ<\VJcC<$qZ$Qqb5Zt~> -ao;DBrrA\krr@rVrrBY1rr@WM`;]l=rrC4AJ,~> -ao;DBrrA\krr@rVrrBY1rr@WM`;]l=rrC4AJ,~> -ao;DBrrA\krr@rVrrBY1rr@WM`;]l=rrC4AJ,~> -aT)8?SH&ThJcE[grr@WM`;fi;ao?k~> -aT)8?SH&ThJcE[grr@WM`;fi;ao?k~> -aT)8?SH&ThJcE[grr@WM`;fi;ao?k~> -a8c/>ScA]iJcC<$LB%8RaT$b~> -a8c/>ScA]iJcC<$LB%8RaT$b~> -a8c/>ScA]iJcC<$LB%8RaT$b~> -`rH&=JcC<$JcDJErrC+>J,~> -`rH&=JcC<$JcDJErrC+>J,~> -`rH&=JcC<$JcDJErrC+>J,~> -`r?)?rrAnqrr@WMJcC?%!W`6#a8^Y~> -`r?)?rrAnqrr@WMJcC?%!W`6#a8^Y~> -`r?)?rrAnqrr@WMJcC?%!W`6#a8^Y~> -`W,rpPqJcC<$K)biN`rCP~> -`W,rpPqJcC<$K)biN`rCP~> -`W,rpPqJcC<$K)biN`rCP~> -`;fi;U]:>oJcEgkrr@WM_>jN8`W(G~> -`;fi;U]:>oJcEgkrr@WM_>jN8`W(G~> -`;fi;U]:>oJcEgkrr@WM_>jN8`W(G~> -_uK`:V#UGpJcEgkrr@WM_Z0W9`;b>~> -_uK`:V#UGpJcEgkrr@WM_Z0W9`;b>~> -_uK`:V#UGpJcEgkrr@WM_Z0W9`;b>~> -_uBc -_uBc -_uBc -_Z0W9X8i2"LB%8RJcC<$s8W*!_uG5~> -_Z0W9X8i2"LB%8RJcC<$s8W*!_uG5~> -_Z0W9X8i2"LB%8RJcC<$s8W*!_uG5~> -_>jN8XT/;#LB%8RJcC<$!ri6#_Z,,~> -_>jN8XT/;#LB%8RJcC<$!ri6#_Z,,~> -_>jN8XT/;#LB%8RJcC<$!ri6#_Z,,~> -_#OE7X8i2"JcEsorr@WM^&S*4_>f#~> -_#OE7X8i2"JcEsorr@WM^&S*4_>f#~> -_#OE7X8i2"JcEsorr@WM^&S*4_>f#~> -_#FH9rrB/#rr@WMbl@\CJcEIa!W`6#_>f#~> -_#FH9rrB/#rr@WMbl@\CJcEIa!W`6#_>f#~> -_#FH9rrB/#rr@WMbl@\CJcEIa!W`6#_>f#~> -^]4<6JcC<$JcDtSrrBk7J,~> -^]4<6JcC<$JcDtSrrBk7J,~> -^]4<6JcC<$JcDtSrrBk7J,~> -^An35ZN'q)JcC<$KE(rO^]/f~> -^An35ZN'q)JcC<$KE(rO^]/f~> -^An35ZN'q)JcC<$KE(rO^]/f~> -^&S*4ZiBt(JcC<$LB%8R^Ai]~> -^&S*4ZiBt(JcC<$LB%8R^Ai]~> -^&S*4ZiBt(JcC<$LB%8R^Ai]~> -]`8!3ZN'q)JcC<$L]@AS^&NT~> -]`8!3ZN'q)JcC<$L]@AS^&NT~> -]`8!3ZN'q)JcC<$L]@AS^&NT~> -]`/$5rr@WMJc>fO!!%TM]Dhp4rrBb4J,~> -]`/$5rr@WMJc>fO!!%TM]Dhp4rrBb4J,~> -]`/$5rr@WMJc>fO!!%TM]Dhp4rrBb4J,~> -]Dhp4rrBS/rr@ZNrrC=Drr@WM]`/$5rrB_3J,~> -]Dhp4rrBS/rr@ZNrrC=Drr@WM]`/$5rrB_3J,~> -]Dhp4rrBS/rr@ZNrrC=Drr@WM]`/$5rrB_3J,~> -])Vd1\GuO.KE(rOJcCK)rrB\2J,~> -])Vd1\GuO.KE(rOJcCK)rrB\2J,~> -])Vd1\GuO.KE(rOJcCK)rrB\2J,~> -\c;[0\GuR/JcC<$L]@AS])R9~> -\c;[0\GuR/JcC<$L]@AS])R9~> -\c;[0\GuR/JcC<$L]@AS])R9~> -\GuR/JcC<$JcEIarrBV0J,~> -\GuR/JcC<$JcEIarrBV0J,~> -\GuR/JcC<$JcEIarrBV0J,~> -\,ZI.^An35JcC<$L&_/Q\Gq'~> -\,ZI.^An35JcC<$L&_/Q\Gq'~> -\,ZI.^An35JcC<$L&_/Q\Gq'~> -[f?@-^]495JcF*srr@WM])Vd1\,Us~> -[f?@-^]495JcF*srr@WM])Vd1\,Us~> -[f?@-^]495JcF*srr@WM])Vd1\,Us~> -[K$7,^]4<6JcF*srr@WM]Dqm2[f:j~> -[K$7,^]4<6JcF*srr@WM]Dqm2[f:j~> -[K$7,^]4<6JcF*srr@WM]Dqm2[f:j~> -[Jp:.rr@WMJcC<$`r?)?rrBM-J,~> -[Jp:.rr@WMJcC<$`r?)?rrBM-J,~> -[Jp:.rr@WMJcC<$`r?)?rrBM-J,~> -[/U1-rrC";rr@WMs8W*!JcCZ.!W`6#[Jta~> -[/U1-rrC";rr@WMs8W*!JcCZ.!W`6#[Jta~> -[/U1-rrC";rr@WMs8W*!JcCZ.!W`6#[Jta~> -Zi:(,rrC% -Zi:(,rrC% -Zi:(,rrC% -ZN'q)`W,rO~> -ZN'q)`W,rO~> -ZN'q)`W,rO~> -Z2ah(aT)8?JcF-trr@WM\c;[0ZN#F~> -Z2ah(aT)8?JcF-trr@WM\c;[0ZN#F~> -Z2ah(aT)8?JcF-trr@WM\c;[0ZN#F~> -YlF_'aoDA@JcF-trr@WM])Vd1Z2]=~> -YlF_'aoDA@JcF-trr@WM])Vd1Z2]=~> -YlF_'aoDA@JcF-trr@WM])Vd1Z2]=~> -YQ+V&b5_JAJcC<$M?!SUYlB4~> -YQ+V&b5_JAJcC<$M?!SUYlB4~> -YQ+V&b5_JAJcC<$M?!SUYlB4~> -Y5eM%c2[eDJcC<$M#[JTYQ'+~> -Y5eM%c2[eDJcC<$M#[JTYQ'+~> -Y5eM%c2[eDJcC<$M#[JTYQ'+~> -XoJD$cN!nEJcC<$M?!SUY5a"~> -XoJD$cN!nEJcC<$M?!SUY5a"~> -XoJD$cN!nEJcC<$M?!SUY5a"~> -XT/;#ci="FJcGZJrrCgRrr@WM\c;[0XoEn~> -XT/;#ci="FJcGZJrrCgRrr@WM\c;[0XoEn~> -XT/;#ci="FJcGZJrrCgRrr@WM\c;[0XoEn~> -X8i2"df9=IJcGTHrrCgRrr@WM])Vd1XT*e~> -X8i2"df9=IJcGTHrrCgRrr@WM])Vd1XT*e~> -X8i2"df9=IJcGTHrrCgRrr@WM])Vd1XT*e~> -WrN)!e,TFJJcC<$MZ<\VX8d\~> -WrN)!e,TFJJcC<$MZ<\VX8d\~> -WrN)!e,TFJJcC<$MZ<\VX8d\~> -WW2tuJcC<$JcFO*rrB)!J,~> -WW2tuJcC<$JcFO*rrB)!J,~> -WW2tuJcC<$JcFO*rrB)!J,~> -W;lktfDkjNJcC<$MZ<\VWW.J~> -W;lktfDkjNJcC<$MZ<\VWW.J~> -W;lktfDkjNJcC<$MZ<\VWW.J~> -VuQbsf`1sOJcC<$MuWeWW;hA~> -VuQbsf`1sOJcC<$MuWeWW;hA~> -VuQbsf`1sOJcC<$MuWeWW;hA~> -VZ6Yrg].9RJcF0urr@WM]Dqm2VuM8~> -VZ6Yrg].9RJcF0urr@WM]Dqm2VuM8~> -VZ6Yrg].9RJcF0urr@WM]Dqm2VuM8~> -V>pPqh#IBSJcGKErrCpUrr@WM]`8!3VZ2/~> -V>pPqh#IBSJcGKErrCpUrr@WM]`8!3VZ2/~> -V>pPqh#IBSJcGKErrCpUrr@WM]`8!3VZ2/~> -V#UGpJcF-trr@WMR/d0dV>l&~> -V#UGpJcF-trr@WMR/d0dV>l&~> -V#UGpJcF-trr@WMR/d0dV>l&~> -U]:>oJcC<$JcFs6rrAkpJ,~> -U]:>oJcC<$JcFs6rrAkpJ,~> -U]:>oJcC<$JcFs6rrAkpJ,~> -UAt5nJcC<$JcG$8rrAhoJ,~> -UAt5nJcC<$JcG$8rrAhoJ,~> -UAt5nJcC<$JcG$8rrAhoJ,~> -U&Y)lJcC<$JcG0 -U&Y)lJcC<$JcG0 -U&Y)lJcC<$JcG0 -T`5&nrr@WM[f?@-JcEF`!W`6#U&TW~> -T`5&nrr@WM[f?@-JcEF`!W`6#U&TW~> -T`5&nrr@WM[f?@-JcEF`!W`6#U&TW~> -TDnrmrr@WM\,ZI.JcEIa!W`6#T`9N~> -TDnrmrr@WM\,ZI.JcEIa!W`6#T`9N~> -TDnrmrr@WM\,ZI.JcEIa!W`6#T`9N~> -T)Silrr@WMg&M'PJcD>A!W`6#TDsE~> -T)Silrr@WMg&M'PJcD>A!W`6#TDsE~> -T)Silrr@WMg&M'PJcD>A!W`6#TDsE~> -ScAZhJcFI(rr@WMTE"ljT)X<~> -ScAZhJcFI(rr@WMTE"ljT)X<~> -ScAZhJcFI(rr@WMTE"ljT)X<~> -S,`KgJcC<$JcGNFrrAShJ,~> -S,`KgJcC<$JcGNFrrAShJ,~> -S,`KgJcC<$JcGNFrrAShJ,~> -RfEBfJcC<$JcGTHrrAPgJ,~> -RfEBfJcC<$JcGTHrrAPgJ,~> -RfEBfJcC<$JcGTHrrAPgJ,~> -RK*9eJcELbrr@WM_#OE7Rf@m~> -RK*9eJcELbrr@WM_#OE7Rf@m~> -RK*9eJcELbrr@WM_#OE7Rf@m~> -R/d-cJcERdrr@WM_Z0T8RK%d~> -R/d-cJcERdrr@WM_Z0T8RK%d~> -R/d-cJcERdrr@WM_Z0T8RK%d~> -Qi@*err@WMiW&oXJcDPG!W`6#R/_[~> -Qi@*err@WMiW&oXJcDPG!W`6#R/_[~> -Qi@*err@WMiW&oXJcDPG!W`6#R/_[~> -QN%!drr@WMirB#YJcDSH!W`6#QiDR~> -QN%!drr@WMirB#YJcDSH!W`6#QiDR~> -QN%!drr@WMirB#YJcDSH!W`6#QiDR~> -Q2gg`JcC<$LB%5QQN)I~> -Q2gg`JcC<$LB%5QQN)I~> -Q2gg`JcC<$LB%5QQN)I~> -PQ1X_JcEjlrr@WM_Z0W9PlH7~> -PQ1X_JcEjlrr@WM_Z0W9PlH7~> -PQ1X_JcEjlrr@WM_Z0W9PlH7~> -P5kL]JcEpnrr@WM`;ff:PQ-.~> -P5kL]JcEpnrr@WM`;ff:PQ-.~> -P5kL]JcEpnrr@WM`;ff:PQ-.~> -OoGI_rr@WMJcCc1!W`6#P5g%~> -OoGI_rr@WMJcCc1!W`6#P5g%~> -OoGI_rr@WMJcCc1!W`6#P5g%~> -OT5:[JcG!7rr@WMWrN%uOoKq~> -OT5:[JcG!7rr@WMWrN%uOoKq~> -OT5:[JcG!7rr@WMWrN%uOoKq~> -NrT(YJcG'9rr@WMXT/8"O8j_~> -NrT(YJcG'9rr@WMXT/8"O8j_~> -NrT(YJcG'9rr@WMXT/8"O8j_~> -NW0%[rr@WMdf9=IJcEdj!W`6#NrOV~> -NW0%[rr@WMdf9=IJcEdj!W`6#NrOV~> -NW0%[rr@WMdf9=IJcEdj!W`6#NrOV~> -N;rkWJcF4!rr@WMaT)5>NW4M~> -N;rkWJcF4!rr@WMaT)5>NW4M~> -N;rkWJcF4!rr@WMaT)5>NW4M~> -MZ -MZ -MZ -M>mVWrr@WMJcD>A!W`6#MZ82~> -M>mVWrr@WMJcD>A!W`6#MZ82~> -M>mVWrr@WMJcD>A!W`6#MZ82~> -M#[GSJcG<@rr@WMZ2ae'M>r)~> -M#[GSJcG<@rr@WMZ2ae'M>r)~> -M#[GSJcG<@rr@WMZ2ae'M>r)~> -LB%5QJcGBBrrDBbrr@WMbQ%PAL];l~> -LB%5QJcGBBrrDBbrr@WMbQ%PAL];l~> -LB%5QJcGBBrrDBbrr@WMbQ%PAL];l~> -L&V2Srr@WMh>dKTJcEso!W`6#LAuc~> -L&V2Srr@WMh>dKTJcEso!W`6#LAuc~> -L&V2Srr@WMh>dKTJcEso!W`6#LAuc~> -K`D#OJcC<$W;lhsL&ZZ~> -K`D#OJcC<$W;lhsL&ZZ~> -K`D#OJcC<$W;lhsL&ZZ~> -K)bfMJcC<$XT/8"KE$H~> -K)bfMJcC<$XT/8"KE$H~> -K)bfMJcC<$XT/8"KE$H~> -JcG]LJcGTHrr@WM\,ZF-K)^?~> -JcG]LJcGTHrr@WM\,ZF-K)^?~> -JcG]LJcGTHrr@WM\,ZF-K)^?~> -JcGcMrW%NLr;Zcsm/R(cJcF*srW%NL!<7Q~> -JcGcMrW%NLr;Zcsm/R(cJcF*srW%NL!<7Q~> -JcGcMrW%NLr;Zcsm/R(cJcF*srW%NL!<7Q~> -JcG`L!W`6#JcFm4rr@WMdJj7Jrr@WMs8RT~> -JcG`L!W`6#JcFm4rr@WMdJj7Jrr@WMs8RT~> -JcG`L!W`6#JcFm4rr@WMdJj7Jrr@WMs8RT~> -JcG]Kr;_EKJcE7[r;_EKrr7K~> -JcG]Kr;_EKJcE7[r;_EKrr7K~> -JcG]Kr;_EKJcE7[r;_EKrr7K~> -JcGWI!W`6#Jc>fO!!%TM^&J-6rr@WMr;V9~> -JcGWI!W`6#Jc>fO!!%TM^&J-6rr@WMr;V9~> -JcGWI!W`6#Jc>fO!!%TM^&J-6rr@WMr;V9~> -JcGTHr;_HLrrDKerr@WMeGoIIJcGWIJ,~> -JcGTHr;_HLrrDKerr@WMeGoIIJcGWIJ,~> -JcGTHr;_HLrrDKerr@WMeGoIIJcGWIJ,~> -JcGNFrW%NLmf3:eJcF:#rW%NLq>Ys~> -JcGNFrW%NLmf3:eJcF:#rW%NLq>Ys~> -JcGNFrW%NLmf3:eJcF:#rW%NLq>Ys~> -JcGHDrW%NLJcE[grW%NLp]#a~> -JcGHDrW%NLJcE[grW%NLp]#a~> -JcGHDrW%NLJcE[grW%NLp]#a~> -JcGECr;_ZRrr@WM_uKZ8JcGHDJ,~> -JcGECr;_ZRrr@WM_uKZ8JcGHDJ,~> -JcGECr;_ZRrr@WM_uKZ8JcGHDJ,~> -JcG?A!W`6#M?!SUmf3:eJcFF'!W`6#JcGBBJ,~> -JcG?A!W`6#M?!SUmf3:eJcFF'!W`6#JcGBBJ,~> -JcG?A!W`6#M?!SUmf3:eJcFF'!W`6#JcGBBJ,~> -JcG<@r;_EKpAb-mJcFL)r;_EKoDa=~> -JcG<@r;_EKpAb-mJcFL)r;_EKoDa=~> -JcG<@r;_EKpAb-mJcFL)r;_EKoDa=~> -JcG6>r;_EKJcF0ur;_EKnc++~> -JcG6>r;_EKJcF0ur;_EKnc++~> -JcG6>r;_EKJcF0ur;_EKnc++~> -JcG0 -JcG0 -JcG0 -JcG-;r;_rZrrDQgrr@WMhZ*NSJcG0 -JcG-;r;_rZrrDQgrr@WMhZ*NSJcG0 -JcG-;r;_rZrrDQgrr@WMhZ*NSJcG0 -JcG'9r;_EKs8W*!JcF[.r;_EKm/MS~> -JcG'9r;_EKs8W*!JcF[.r;_EKm/MS~> -JcG'9r;_EKs8W*!JcF[.r;_EKm/MS~> -JcG!7!s&?$!.k0$s5 -JcG!7!s&?$!.k0$s5 -JcG!7!s&?$!.k0$s5 -JcFs6rr<*"!1*Zb!:^$g!.k10rrW9$!!%TMl2Q8~> -JcFs6rr<*"!1*Zb!:^$g!.k10rrW9$!!%TMl2Q8~> -JcFs6rr<*"!1*Zb!:^$g!.k10rrW9$!!%TMl2Q8~> -JcFm4r;`5brrDQgrr@WMjT#/YJcFp5J,~> -JcFm4r;`5brrDQgrr@WMjT#/YJcFp5J,~> -JcFm4r;`5brrDQgrr@WMjT#/YJcFp5J,~> -JcFg2r;_EKJcG$8r;_EKjo9i~> -JcFg2r;_EKJcG$8r;_EKjo9i~> -JcFg2r;_EKJcG$8r;_EKjo9i~> -JcFa0r;`Afrr@WMec5RJJcFd1J,~> -JcFa0r;`Afrr@WMec5RJJcFd1J,~> -JcFa0r;`Afrr@WMec5RJJcFd1J,~> -JcF[.r;`GhrrDThrr@WMl2U\^JcF^/J,~> -JcF[.r;`GhrrDThrr@WMl2U\^JcF^/J,~> -JcF[.r;`GhrrDThrr@WMl2U\^JcF^/J,~> -JcFU,r;_lXrr@WMli6n`JcFX-J,~> -JcFU,r;_lXrr@WMli6n`JcFX-J,~> -JcFU,r;_lXrr@WMli6n`JcFX-J,~> -JcFO*r;`Vmrr@WMgAh*OJcFR+J,~> -JcFO*r;`Vmrr@WMgAh*OJcFR+J,~> -JcFO*r;`Vmrr@WMgAh*OJcFR+J,~> -JcFI(r;`\orrDThrr@WMmf34cJcFL)J,~> -JcFI(r;`\orrDThrr@WMmf34cJcFL)J,~> -JcFI(r;`\orrDThrr@WMmf34cJcFL)J,~> -JcFC&r;`,_rr@WMnGiFeJcFF'J,~> -JcFC&r;`,_rr@WMnGiFeJcFF'J,~> -JcFC&r;`,_rr@WMnGiFeJcFF'J,~> -JcF=$r;`hsrrDWirr@WMnc/OfJcF@%J,~> -JcF=$r;`hsrrDWirr@WMnc/OfJcF@%J,~> -JcF=$r;`hsrrDWirr@WMnc/OfJcF@%J,~> -JcF7"r;`nurrDWirr@WMoDeahJcF:#J,~> -JcF7"r;`nurrDWirr@WMoDeahJcF:#J,~> -JcF7"r;`nurrDWirr@WMoDeahJcF:#J,~> -JcF0uquD -JcF0uquD -JcF0uquD -JcF*srr<-#!!%TMPlLa`!ri6#JcF-tJ,~> -JcF*srr<-#!!%TMPlLa`!ri6#JcF-tJ,~> -JcF*srr<-#!!%TMPlLa`!ri6#JcF-tJ,~> -JcF$qquD -JcF$qquD -JcF$qquD -JcEpnquD -JcEpnquD -JcEpnquD -JcEjlquD -JcEjlquD -JcEjlquD -JcEaiquD -JcEaiquD -JcEaiquD -JcE[gquD -JcE[gquD -JcE[gquD -JcERdquD -JcERdquD -JcERdquD -JcELbqZ)3I\GuF+JcEOcJ,~> -JcELbqZ)3I\GuF+JcEOcJ,~> -JcELbqZ)3I\GuF+JcEOcJ,~> -JcEC_qZ)3I^An'1JcEF`J,~> -JcEC_qZ)3I^An'1JcEF`J,~> -JcEC_qZ)3I^An'1JcEF`J,~> -JcE:\rr<-#!!%TM_Z0W9!ri6#JcE=]J,~> -JcE:\rr<-#!!%TM_Z0W9!ri6#JcE=]J,~> -JcE:\rr<-#!!%TM_Z0W9!ri6#JcE=]J,~> -JcE4Zq>c*Hb5_; -JcE4Zq>c*Hb5_; -JcE4Zq>c*Hb5_; -JcE+WrVururW%NLd/X(F!<<#uJcE.XJ,~> -JcE+WrVururW%NLd/X(F!<<#uJcE.XJ,~> -JcE+WrVururW%NLd/X(F!<<#uJcE.XJ,~> -JcE"Tq>c*Hf)PRHJcE%UJ,~> -JcE"Tq>c*Hf)PRHJcE%UJ,~> -JcE"Tq>c*Hf)PRHJcE%UJ,~> -JcDkPqZ)3Ih#I6OJcDnQJ,~> -JcDkPqZ)3Ih#I6OJcDnQJ,~> -JcDkPqZ)3Ih#I6OJcDnQJ,~> -JcDbMq>c*HjT#&VJcDeNJ,~> -JcDbMq>c*HjT#&VJcDeNJ,~> -JcDbMq>c*HjT#&VJcDeNJ,~> -JcDYJq#H!Gm/Qk]JcD\KJ,~> -JcDYJq#H!Gm/Qk]JcD\KJ,~> -JcDYJq#H!Gm/Qk]JcD\KJ,~> -JcDMFq#H!Go`+^eJcDPGJ,~> -JcDMFq#H!Go`+^eJcDPGJ,~> -JcDMFq#H!Go`+^eJcDPGJ,~> -JcDABq#H!Gr;ZQmJcDDCJ,~> -JcDABq#H!Gr;ZQmJcDDCJ,~> -JcDABq#H!Gr;ZQmJcDDCJ,~> -JcD5>q#H*Jq#H!GSH"*~> -JcD5>q#H*Jq#H!GSH"*~> -JcD5>q#H*Jq#H!GSH"*~> -JcD):p]-?Sp],mFR/_[~> -JcD):p]-?Sp],mFR/_[~> -JcD):p]-?Sp],mFR/_[~> -JcCr6p&LQ]p&K[DPlH7~> -JcCr6p&LQ]p&K[DPlH7~> -JcCr6p&LQ]p&K[DPlH7~> -JcCc1o`1lho`0RCO8j_~> -JcCc1o`1lho`0RCO8j_~> -JcCc1o`1lho`0RCO8j_~> -JcCQ+oDl8uoDjIBM>r)~> -JcCQ+oDl8uoDjIBM>r)~> -JcCQ+oDl8uoDjIBM>r)~> -JcC?%nGpT/nGn.?KE$H~> -JcC?%nGpT/nGn.?KE$H~> -JcC?%nGpT/nGn.?KE$H~> -JcC<$qu?!_hZ)pBJcC<$r;V9~> -JcC<$qu?!_hZ)pBJcC<$r;V9~> -JcC<$qu?!_hZ)pBJcC<$r;V9~> -JcC<$o)H]0JcC<$oDa=~> -JcC<$o)H]0JcC<$oDa=~> -JcC<$o)H]0JcC<$oDa=~> -JcC<$k5X9 -JcC<$k5X9 -JcC<$k5X9 -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -JcC<$JcC<$WW.J~> -%%EndData -showpage -%%Trailer -end -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours_bfs.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours_bfs.eps deleted file mode 100755 index 3a4f4ba296..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours_bfs.eps +++ /dev/null @@ -1,3537 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner -%%Title: parcours_bfs.eps -%%CreationDate: Thu Jun 7 15:24:13 2007 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 14 14 547 527 -%%EndComments -%%BeginProlog -% Use own dictionary to avoid conflicts -10 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -14.173228346456694 14.173228346456694 translate -% Translate to begin of first scanline -0 512.01073964115142 translate -532.37480314960635 -512.01073964115142 scale -% Image geometry -732 704 8 -% Transformation matrix -[ 732 0 0 704 0 0 ] -% Strings to hold RGB-samples per scanline -/rstr 732 string def -/gstr 732 string def -/bstr 732 string def -{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} -true 3 -%%BeginData: 182313 ASCII Bytes -colorimage -quD:2JN\QIJN\QIY -quD:/JNA?CJNA?CY<)R]J,~> -quD:,JN&-=JN&-=Y;c@ZJ,~> -rW)s]JcC<$JcC<$JcDqRs#p>]J,~> -rW)sZJcC<$JcC<$JcDqRs#U,ZJ,~> -rW)sWJcC<$JcC<$JcDqRs#9oWJ,~> -rr<*`s8RZ=Ja\0YJa\0YYODMk!^-M`J,~> -rr<*]s8RZ:Ja@sSJa@sSYO);h!]g;]J,~> -rr<*Zs8RZ4J`_OGJ`_OGYNGlb!]L)ZJ,~> -!WYC`JaJ$UJaJ$UJaMRdo8ie9o8ie9o8ik;!nKL7J,~> -!WY:]Ja.gOJa.gOJa2@^o7Qr*o7Qr*o7R#,!mWh,J,~> -!WY1ZJ`D=AJ`D=AJ`GkPo5OTeo5OTeo5OZg!lHqsJ,~> -!WYC`Ja@sSJa@sSJaDOc!0?aO!K[9[li<+ -!WY:]J`q[KJ`q[KJ`u7[!/'nC!JCFOkQ$8,rrIcProa?7oD]#Is6/[l3WO[~> -!WY1ZJ`21=J`21=J`5bM!-%Q0!HA) -!BpI6l@J5Ol@J5OlK7@4O8nh="mV0KlAtu:m02d9s6>[FoBcbIO8nM1eieN~> -!BU73k(2ZGk(2ZGk2te,KE(Q-"m1I;k(E^*klp4%s5nt6oB?JAKE()rc8pI~> -!B:%0hgs[9hgs[9hr`esE<#Oi"lF;!hf/Veis"=Zs5.eqoA^&4E<"hQ_`*)~> -!BpJ\kl>etFTI3YJa%aMJa%aMJa*$q!K[9PlNQO6rooLDoBQSEO8eC)s7>O\l&Yi.l./"J~> -!BU8Yj8a8oGl`TWJ`MCCJ`MCCJ`Q[g!JCFDk69q!roA_3oB-;CXjFdHmjN]f:~> -!B:&Vg]2EgHi\iPJ_Yh3J_Yh3J_^+W!HA)1i1Rgi38Jgqu($~> -!BpJ\k5\'G0*+GsJ`hUI_rq%"s6'C^J`hUI^?5NXs7>LZkE#T)O8nh:"m:sFkE#Z7l3?F4rTE@p -4b*~> -!BU8YiW*!N9*!Xridp+,ir9#Yir9"0idp+'iW4]3oAp/8KDje^s7>=Uie.3hKE(Q)#3(:6io86E -J,~> -!B:&Vg&PXUB`V,ZJ_G\/_qP+js4[JQJ_G\/^=iU,s7>+Og2R#EE<#Oe"kmqog2R)`hZheRrS#uC -2h1~> -!BpJ\jpmm?j5oFelKmp,nac=$h1=^>k0iDg!;YdW!<;3]!<;3]!.j9`k/-6]O8nh8"m1mEk)]QA -kkP5XkQU+0rT91@roj@^rTO7]roaRKO8\5'eieN~> -!BU8Yi!u78j5oFelKmp,nFH4#f7Dk2i6pQ[!;YRQ!<;!W!<;!W!.j'Zi54CQKE(Q("lP%2i.M(/ -jS8fTj9=Ior8<5-roF(ZrT*tYro=:AKDaZcc8pI~> -!B:&VfFFD0j5oIflKdj+nFH4!d"0i#f[AFK!;Y:I!<:^O!<:^O!.idRfYZ8AE<#Oc"k[elfPpli -h>%'Mh$)GMr7Gugrn[SSrS@JRrnRe2E;\A@_`*)~> -!BpJ\jURg@jQ>Xilg=-0o(2O(gk"Rroa7\s6'@]roXLIO8S,$eieN~> -!BU8Yh[Z19jQ>Xilg=-0nalF&eq)_0hpUE^!;,1K!;k[R!.j$Yhnn7OKE(Q&"lFt1hh1t.iqWTR -iW\4lr83/,ro3nWs5O"Xro+.>KDaWac8pI~> -!B:&Vf++>1jQ>[jlg4'/nalF$c[j]!f@&:N!;+nC!;kCJ!.iaQf>?,?E<#Oa"kR_jf5Uchg\CjK -gBH2Jqq#fernIDPs4dMQrn@Y/E;S8=_`*)~> -!BpJ\jURgAjlbmnm-X93o(;X+gk"R -!BU8Yh[Z.:jlbjmm-a?4oCVa+eq)_0hpUE^!;YL[HlE27N;rt9hZ*Z6quHcS%Gc.G!ul@ -!B:&Vede52jlbjmm-a?4oCVa)c@OPtf$`.L!;Y1RG8^T/LB%>*ec5^$quHcJ%Ff>8!uc..f%'g$ -HPcj9eq)E%ecBaio@X;uE;J.)s8L[O!;kFL!<1XTeo:K:E<#miqZ-TJ#1dbif%._tJ,~> -!BpJ\j:7^Ak32*rmI'K7o_%s/gO\F:jO3,h!;baeJcJBjdRaE=jQ$:@jQ$:@rT"B2!+t"u!-mSc -!!$0TJ`MCCe)UOjs754RO8J"!s8M'Z!;kgW!<(s]O8J"!s8:sV!;kg\O8J#!eieN~> -!BU8Yh@?(;k32*rmI0Q8o_%s-eUcS.hU:9\!;bO_IK2m_bsqa6hVJ54hVJ54rS@s)!+XSi!-R/T -!!$'LJ_kt7e(t+Xs7>+OhLk[]KE(r.!!)oR!!*#U"l=n.hLkk+hu*QQhZhqiqVL)S3e.~> -!B:&Vede53k32*rmI'K7o_%s,c@OPtf$`.L!;b7WH2pCQ`C0b,f%'g$f%'g$rRMBr!+=)[!-$N? -!!#sAJ_#D'e(+P=s7=hGeo:H9E<#ph!!)oJ!!*#M"kIYgeo:ZefDP^If*9fFq:=-72h1~> -!BpJ\j:7^BkNV=!mdTc*!7'ZM!$((\ -!!(;qjFQC?j8k>AoA^#8O8J"!s8M$Y!;kdV!<2!^jH'3!O8o. -!BU8Yh@?(;kiqF"mdTcr9/o%jM%qVHl)rn[VTqq_;QrS@[0qVHl)r8.APqq_L/qVL)S3e.~> -!B:&VeIJ,3kNV=!mdTc -!BpJ\isqXCkj%O%n+#u@p@nB6g4A:8j3luf!;b^d"9@B?j50h:j5U+>j5U+>rSn4f!9)tr!!M?B -!!%T1J`G/ -!BU8Yh%$"=kj%O&n+#u@p@nB4e:HG,h9t-Z!;bL^!s%'2h:_i/h;&&2h;&&2rS7e_!8H>`!!D'5 -!!%T+J_e`0!JCFDg]cMdq;$]'rnIJRqqM/OrnI\5KDF>Us8CaM!<([Wh1POZh9J'3~> -!B:&Ve./&4kj%O%n+#u@p%S91b^n8peC)kH!;b1U!s$d!eBn6reC4HueC4HurR;/V!7KBF!!Ca# -!!%T"J^i)s!HA)1dfn6?pXF0^rmLiIqpPNFrmM&#E;.k$s8CFD!<(@Ne8Y03eAF4q~> -!BpJ\isq[El0Ia)nFH2Dp\=T9g4A:8j3luf!;b^d*WX4?j2Cuuj5U+>j5U+>rSn5&!6sQJ!$(%Z -!!%T1J`G/ -!BU8Yh%$%?l0Ia)nF?,Cp\=T7e:HG,h9t-Z!;bL^*<Pqq;#Mrn7P3KD=8Ts8LaO!<:dP!<1[Vh1PLYh9J'3~> -!B:&Ve./)6l0Ia)nFH2Dp\FZ6b^n8peC)kH!;b1U*!!P!e@5JYeC4HueC4HurR;/j!5I$t!#jA: -!!%T"J^i)s!HA)BDrm:o!E;%e#s8LFF!<:IG!<1@Me8Y-2eAF4q~> -!BpJ\iXVUFlg4'.nalDHq"afio8NPJ,~> -!BU8Yg^]q?lg4'/nalGIp\F]:dt-;*gsY!X!;bI^I/ld\bXVX5gtVl0gtW;<^]*!qB`MVl@K:H( -g].>*gk"8.g]<'-rn7)Irn.J1KD4/Rs8L^I!<1XTgk5@VKE(r(rrE#NrrE&O#2Fk*gt^19J,~> -!B:&Vdgi#7lg4'.nalDHq"af9bCS,ne'c_F!;b.UGQ:.K_aFJ)e'e9se'e^*\,Oh`AH6&\?3"ik -df9B!dt,uqdfFFfrm1B?rm(bsE:q\!s8L@?!<1:Jdr>!/E<#p`rrE#DrrE&E#1IPae'l2nJ,~> -!BpJ\iWa1GI!pElIf=isJ-(:Bg4A77imQi_!<1suI2`;6NW9(=iW&u):!K[9Ph?Do"pu7A7oA0Z1O8.^qs7>(OifEloimp8C~> -!BU8Yg]hM?H[L3hIK"]qIfb.=e:HD+gsY!S!<1aoH5Zl0M?!Y3g].?0gis;/!8QA^B,:XfE8'+& -!!%T*J_\Z.!JCFDf*0r^pY:E$o@F0$KD4/Rs7=hHgk5@Vgs.s2~> -!B:&VdfjB0H$Xd`rI"Wn!e+t0J^]2!daS$mrmMm1)$;"7!!(Ks!!(KsEt&*Le'lWP('5=hdF6PE -!.iUMe'ZVFE<#OS"k.G_dr>?YbluR8o[@dZo?@KgE:hW._`*)~> -!BpJ\huML(ecFC[J`)+;J`)+;J`-C_!K[9Pg]cVspu%55o@sN-O8.Xos7>"Mi/dZki7:&A~> -!BU8Yg&TXpd/_jNg4@t/g4@t/gA9M(KE(Po"knV&g4TFsecjc[p=b0!o@=-"KD+$Qc8pI~> -!B:&VciD5]`rX9-J^AtpJ^AtpJ^F8?!HA)1b6?73o?_IVo?. -!BpI6hLXO7hLXO7hWEYqO8nh+"l>=7hN.^.gBHGppYLu2o@jK+O8%MfeieN~> -!BU73fR_\+fR_\+f]LfeKE(Pm"k\J#fRs4qe-4KWp"4oso@*usKD!mLc8pI~> -!B:%0c@O8lc@O8lcK`gTaT]t/o$24So>q3^E:V<"_`*)~> -!BpI6h1=C5h1=C5h -!BU73eq)D'eq)D'f&bH_KCd.bKD#5p!/'ma!JC(Eec:?oa8pqdrmh+q3e.~> -!B:%0b^muhb^muhbiR%KE:^[BE:NqO!-%PA!H@T.bQ)VR])cm@rlbD\2h1~> -!BpI6gO\+1gO\+1gZ@/ip[aFGp\ihHp[aFGp\ihHp[aFGp\ihIeieN~> -!BU73e:H,#e:H,#eE,0[p%*e9p&3A?p%*e9p&3A?p%*e9p&3A@c8pI~> -!B:%0aaqQbaaqQbalUVEnag]"nbpQ0nag]"nbpQ0nag]"nbpQ1_`*)~> -!BpI6fn%h-fn%h-g#UiXp\WY8p\WY8p\`\FeieN~> -!BU73dXfhtdXfhtdcAjJp&!2/p&!2/p&*5=c8pI~> -!B:%0a+;9^a+;9^a5k;4nb^Aunb^AunbgE._`*)~> -!BpI6eq)D'eq)D'eu7."4b*~> -!BU73c@O8lc@O8lcD]"g3e.~> -!B:%0_h#^V_h#^V_l1HQ2h1~> -!'Pn%JXV.YJXV.YVj[TKJ,~> -!'5[kJW>;AJW>;AViCa -!&oIVJUE#rJUE#rVgJJ'J,~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpJTm=FVTm"+MSm"+N@m.BZGeieN~> -!BU8Ql%/&Lk^hrKk^hs8kk+*?c8pI~> -!B:&Nj+63@idp*?idp+,iq273_`*)~> -!BpJTm=FVTm"+MSm"+N@m.BZGeieN~> -!BU8Ql%/&Lk^hrKk^hs8kk+*?c8pI~> -!B:&Nj+63@idp*?idp+,iq273_`*)~> -!BpJTm=FVTm"+MSm"+N@m.BZGeieN~> -!BU8Ql%/#KkCMfIkCMg6kOe!>c8pI~> -!B:&Nj+60?iITs=iITt*iUl.2_`*)~> -!BpJTm=FSSl[eAQl[eB>lh'QFeieN~> -!BU8Ql%/#KkCMfIkCMg6kOe!>c8pI~> -!B:&Nj+60?iITs=iITt*iUl.2_`*)~> -!BpJTm=FSSl[eAQl[eB>lh'QFeieN~> -!BU8Ql%/#KkCMfIkCMg6kOe!>c8pI~> -!B:&Nj+6->i.9g;i.9h(i:Q%1_`*)~> -!BpJTm=FSSl[eAQl[eB>lh'QFeieN~> -!BU8Ql%.uJk(2ZGk(2[4k4Im=c8pI~> -!B:&Nj+6->i.9g;i.9h(i:Q%1_`*)~> -!BpJTmI0 -!BU8Ql0ma7!.j9`k(2ZGk(2[Gk4Im=c8pI~> -!B:&Nj6tk*!.j$Yhgs[9hgs\9ht5q0_`*)~> -!BpJTmIKNE!:&hLJa.gOJa.gOJa1hOo^)\14b*~> -!BU8Ql13p -!B:&Nj7;(0!8lZ6J_u%9J_u%9J`#&9o]#ti2h1~> -!BpJTmJ,rD!<)-^!.jBcl%/)Ml%/*Ml1F?DeieN~> -!BU8Ql1jB -!B:&Nj7qL/!<(aS!.j!XhLXO7hLXP7hXoh/_`*)~> -!BpJTmJ,oG!;YjZ!.jBcl%/)Ml%/*Ml1F?DeieN~> -!BU8Ql1j<>!;Y[U!.j3^jFQBCjFQCCjRh[;c8pI~> -!B:&Nj7qI2!;YIO!.j!XhLXO7hLXP7hXoh/_`*)~> -!BpJTmJ,oG!;u'h!9r_Jl07>J'*qCiJa%aMJa%aMJa)%Uo^)\14b*~> -!BU8Ql1j<>!;tmc!9E2@jQ,98'*q@cJ`MCCJ`MCCJ`P\Ko]ZD%3e.~> -!B:&Nj7qF1!;tX\!8ZH2h;-du&dV.YJ_bn5J_bn5J_f2=o]#ti2h1~> -!BpJTmJ,lF!;u$g!9iVHkid1SceMT0J`q[KJ`q[KJ`ttSo^)\14b*~> -!BU8Ql1j9=!;tjb!9<)>j5Y5Eb1BX!J`D=AJ`D=AJ`GVIo]ZD%3e.~> -!B:&Nj7qF1!;tX\!8ZH2h;*'5`R7[hJ_bn5J_bn5J_f2=o]#ti2h1~> -!BpJTmJ,oC!"A&kki`$1kT%P)kgL8tk^hrKk^hrKkhbOqm/bd$J,~> -!BU8Ql1j<:!"@lfj5U."iuGhoj3JEjj+66Aj+66Aj5/hgklK'jJ,~> -!B:&Nj7qF-!"@W_gtVnbg`*fZgrL1\gk"73gk"73gtpiYirR%VJ,~> -!BpJTmJ,lF!;u$b!9iVHki`0J!!!%Nk^hrKk^hrKkhbOqm/bd$J,~> -!BU8Ql1j9=!;tj]!9<)>j5U:@!!!%Nj+66Aj+66Aj5/hgklK'jJ,~> -!B:&Nj7q@/!;tRU!8H6.gY2i/!!!%NgO\+1gO\+1gYU]WirR%VJ,~> -!BpJTmJ,iE!;u!b!9`MFkN -!BU8Ql1j6DCo]ZD%3e.~> -!B:&Nj7q@/!;tRV!8H6.gY3UaJ_Pb1J_Pb1J_So5o]#ti2h1~> -!BpJTmJ,iE!;u!f!9`MFkN@(Wa5am0J`hUIJ`hUIJ`knQo^)\14b*~> -!BU8Ql1j6PGo]ZD%3e.~> -!B:&Nj7q=.!;tOY!8?-,g=gR3][sM_J_G\/J_G\/J_Ju7o]#ti2h1~> -!BpJTmJ,iE!;u!f!9`MFkNCrP*!IdZJ`hUIJ`hUIJ`knQo^)\14b*~> -!BU8Ql1j3;!;td`!9)l:iSi[;)[%RSJ`21=J`21=J`5JEo]ZD%3e.~> -!B:&Nj7q=.!;tOY!8?-,g=k2#)[%LLJ_G\/J_G\/J_Ju7o]#ti2h1~> -!BpJTm=FDNk(2ZGk(2[4k4J$AeieN~> -!BU8Ql%.fEiITs=iITt*iUl@8c8pI~> -!B:&Nj+5m7fn%h-fn%hog%=;*_`*)~> -!BpJTm=FDNk(2ZGk(2[4k4J$AeieN~> -!BU8Ql%.cDi.9g;i.9h(i:Q77c8pI~> -!B:&Nj+5m7fn%h-fn%hog%=;*_`*)~> -!BpJTm=FDNk(2ZGk(2[4k4J$AeieN~> -!BU8Ql%.cDi.9g;i.9h(i:Q77c8pI~> -!B:&Nj+5j6fR_\+fR_\mf_"2)_`*)~> -!BpJTm=FAMjalNEjalO2jn.p@eieN~> -!BU8Ql%.cDi.9g;i.9h(i:Q77c8pI~> -!B:&Nj+5j6fR_\+fR_\mf_"2)_`*)~> -!BpJTm=FAMjalNEjalO2jn.p@eieN~> -!BU8Ql%.`Chgs[9hgs\&ht6.6c8pI~> -!B:&Nj+5g5f7DP)f7DPkfC\)(_`*)~> -!BpJTm=F>LjFQBCjFQC0jRhg?eieN~> -!BU8Ql%.`Chgs[9hgs\&ht6.6c8pI~> -!B:&Nj+5g5f7DP)f7DPkfC\)(_`*)~> -!BpJTm=F>LjFQBCjFQC0jRhg?eieN~> -!BU8Ql%.]BhLXO7hLXP$hXp%5c8pI~> -!B:&Nj+5d4eq)D'eq)Dif(@u'_`*)~> -!BpJTm=EE2b(7]db(7^Qb4P'%eieN~> -!BU8Ql%-[%_1BFR_1BG?_=Zsmc8pI~> -!B:&Nj+4OfZ[oH6Z[oI#Zh38Y_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpJTmCB3Im=FYUm=FYUmJcJReieN~> -!BU8Ql+*@9l%/)Ml%/)Ml2KoJc8pI~> -!B:&Nj11,"j+66Aj+66Aj8S'>_`*)~> -!BpJTm/X,tp&M(Cm=FZNm4[>7\Z20[IrA^q91(]o-m'3<&.JsO"TSN+#7:nO',DZ<0f_To -!BU8Qkl@9doDkG5l%/*FkqCc,[\oRPI;N=k8jYKk-Qa*;%h/jN"TSN+#7:nN',DZ;0K;Bk -!B:&NirG%MnGnN!j+67:j"JrqZ(mV@H"pS^83f*e-6 -!BpJTm/a3[]^5]uJaJ$Ug?f76f=[i5D-01Y)?\@e$3M2!6s+;]U:f+EJaJ$Ulg4`(4b*~> -!BU8QklI@I]]fEeJa%aMg?At.e%)*)CK -!B:&NirP,/]]0!NJ`D=Ag>`P"cEs'lBiIAL)$A7d$3M.s5u_QLS$^K#J`D=Alf/#`2h1~> -!BpJTm/a3[]^5]uJaJ$UiU$m'\ -!BU8QklI@I]]fEeJa%aMiTUTt[?Yl8599n#!&"g52b-n\G(uc8pI~> -!B:&NirP,/]]0!NJ`D=AiSt0hY`Ws)4WOUu!&"g52b-n\G(u -!BpJTm/a3[^?l!RoVmE/JaM[g#3WjnF\=7gq#C^91/;VAT!Z]"qpGEMqr,`*Sr%5X1)9Tb"p?JM -Fe$>3JaJ$Uq<\464b*~> -!BU8QklI@I^?G^JnXY6qJa)C_#3 -!B:&NirP,/^>f:?m>QVVJ`GtS#2ZqVE(DJ^q#C^91/;VAT!Z]"qpGEMqr,`*Sr%5X1)9Tb"p?GI -E0\#kJ`D=Aq;VLn2h1~> -!BpJTm/a3[^?l!9ql,/6JaMmm#4'@#D+GfNqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#l -!BU8QklI@I^?G^1qji<&Ja)Ue#3WsnCI]NKqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#l;CRN0) -Ja%aMs60R03e.~> -!B:&NirP,/^>f:'q2BmbJ`H1Y#3!@_Bgj-FqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#i8BpHKm -J`D=As5O-t2h1~> -!BpJTm/a3[^?l!9ql,/6JaN'r"m`XW?S_rb!!WNR;0o"RmB-BmmD5QD;()PE!!NT`?]DP\JaJ-X -!S0Da~> -!BU8QklI@I^?G^1qji<&Ja)dj"m<7M?8;c`!!WNR;0o"RmB-BmmD5QD;()PE!!NT_?Ac,QJa%jP -!R<`V~> -!B:&NirP,/^>f:'q2BmbJ`H@^"lZ\@>;6B\!!WNR;0o"RmB-BmmD5QD;()PE!!NT^>DKHAJ`DFD -!Q-jH~> -!BpJTm/a3[^?l!9ql,/6JaN7""ma3o@P7o_!!OH?Lo]&'U&P;oe>nC$+8c*B"YX>Ma6Sp -4b*~> -!BU8QklI@I^?G^1qji<&Ja)so"mnC$+8c*B"YO2H`92^9M -!B:&NirP,/^>f:'q2BmbJ`HOc"l[4W?7cnC$+8c*B">*r@^Ysb(M;nWS -2h1~> -!BpJTm/a3[kNr6Lg$JjTql,/6JaNC&"Qlk18-Sql"T^YkO2(7Nrrqu.O'apKr;Zs(89V/uJaJHa -!S0Da~> -!BU8QklI@IkNMsHg$&RLqji<&Ja**s"QHJ(7g8hk"T^YkO2(7Nrrqu.O'apKr;Zs(7s(fkJa&0Y -!R<`V~> -!B:&NirP,/kMlOBg#E.Bq2BmbJ`H[g"Pfnp70NPh"T^YkO2(7Nrrqu.O'apKr;Zs'7<,6\J`DaM -!Q-jH~> -!BpJTm/a3[kNr6Lg$JjTql,/6JaEX.g7rC<"oSE(*`S$4o8EVOo>$5_*rQ'A"Yshfg4AXRm/bd$ -J,~> -!BU8QklI@IkNMsHg$&RLqji<&Ja!@&f:Zh4"oSE(*`S$4o8EVOo>$5_*rQ'A"Yj_af7E1KklK'j -J,~> -!B:&NirP,/kMlOBg#E.Bq2BmbJ`?pod@=f&"T8<'*`S$4o8EVOo>$5_*rQ'A">FGXd=L>?irR%V -J,~> -!BpJTm/a3[rp9ae6L=[!l"Q2JaJ-X"QH@p.foVL"9UN%YkWeL"Sf3A2$ -!BU8QklI@IrojIa60S:3!!)TS!!(^:!kS9"Ja%jP"Q$"h.KTMK"9UN%YkWeL"Sf3A2$ -!B:&NirP,/ro4%[5N;Y%!!)TM!!(^4!k.o`J`DFD"PBDZ.09DJ"9UN%YkWeL"Sf3A2$ -!BpJTm/a3[rp9ae!l"Q2JaJ6["1`V8"o\K)$:0-QoR[&?!! -!BU8QklI@IrojIa;hk88!!)TS!!(^:!kS9"Ja%sS"1E>3"o\K)$:0-QoR[&?!! -!B:&NirP,/ro4%[;1ni-!!)TM!!(^4!k.o`J`DOG"0ll)"TAB($:0-QoR[&?!! -!BpJTm/a3[rp9dfh^-ACm2l>qmH.[`%:J>cmH.OX'n?;OmHSX)#Z9RJmAVK;*KK@N!l"Q2JaJB_ -"5&l8&,lP3"?:eDpjrJ8rri,3HoM9.!! -!BU8QklI@IrojLbgEjf;koToil/GnV%:8)Zl/PkP'n-/Il/ljs#Z':@l)#g3*/s+G!kS9"Ja&*W -"4WN0&,lP3"?:eDpjrJ8rri,3HoM9.!! -!B:&NirP,/ro4(\eg/$0iu\9]j4mcG$s_WKj5!]A'RKi?j5=\d#Yiq2j.[k'*/Nh=!k.o`J`D[K -"4*$%%fQG2"?:eDpjrJ8rri,3HoM9.!!<^)O3`C;SDsXf2h1~> -!BpJTm/a3[rp;$4mB\M1mHjo@m;#/DfKa?Am;>DHfgPo.m -!BU8QklI@Iroka0l*)l&l0/34l"NQ9e3@d6l"if>eO0E%l$#A -!B:&NirP,/ro5=*j/aljj5U."j(:X(cTQ"&j(Um-cU%Wlj)dH,f2Z,:it@d9aB@`e!k.o`J`DdN -"1E2&!r`0%12X;fJcG!7"7rd71B%7U!\\Q%J`EB_!Q-jH~> -!BpJTm/a3[rp:s2mHne1mHjo@m24%6mE$75m2=.8mE5Lsm2a:8mFW0@m2Ll/k3W5aql,/6P3iA8 -X^N(G!! -!BU8QklI@Irok[.l03#&l0/34knqJ*l,=P)ko%S,l,Negko@Y+l-pI4ko,9$k32rYqji<&P3E)0 -WaH\C!! -!B:&NirP,/ro57(j5Xiij5U."itoSmj1lMliu#\oj2(fViuGhoj3JG"iu3Njk2QNOq2BmbP2cZ% -VHk#;!! -!BpJTm/a3[rp:U(mHs'i[I!t]m/uY@mHFc@m/uY@mHFW -!BU8QklI@Irok=$l077^ZKVARkl^)4l/`'4kl^)4l/_p0klgqb#6F)R\OI2MT]kVA])/%Ll':K8 -i1F![rW!$BC:3ees4dPUpU+`XrW!$2 -!B:&NirP,/ro4msj5\uJY2]NBire6"j51""ire6"j50jsiro;\#6ElFZpbTGSESu7[eYl5j-AX, -g7(tNrW!$BC:3ees4dPUpU+`XrW!$2;OcBkj/1i;_`*)~> -!BpJTm/a3[rp9[crp:NA-K+slm24(7mE-=6m2=.8mE>Rtm2ORMm/a1%kj8Gcql,/6R-b"=Thc!o -!!=d#cMiCpec,aNc@%8C!! -!BU8QklI@IrojC_rok6:-/ARcknqM+l,FV*ko%S,l,Wkhko.qDklIXskii/[qji<&R-=_5SkTOj -!!=d#cMiCpec,aNc@%8C!! -!B:&NirP,/ro3tYro4g/,hE%VitoVnj1uSmiu#\oj21lWiu6,9irPkhki2`Qq2BmbR,\;)RS*td -!!=d#cMiCpec,aNc@%8C!! -!BpJTm/a3[rp9[crTtb`=9.aUBh6q16Yu/WDFiL77f_rDHpu9D_bogg<6==$'Bnfb^AFm\m@3JL -kbqMk!!!$ZM;!O\c2S+(M)YM9!"Du-k^i-&m/bd$J,~> -!BU8QklI@IrojC_rTPJYGcLCe!%-70)T:H:5m:^ea4Z;T7^m''SQ]])/%Ll'poD -jJGod!!!$ZM;!O\c2S+(M)YM9!"Dr*jFQQsklK'jJ,~> -!B:&NirP,/ro3tYrSo&P<<2(>AOXtl5\K-;BgpFr6ic9-G!a.)]1q>G:r(q\''S?W[eYl5j.#'8 -hk -!BpJTm/a3[rp9[crTtcp63-E?j]`-%?0:PAk#hs)J,o!(l[9cW.\5toR3Db^X6ApP^AFm\m@EVG -[;-*J!!5$;j+76NrrV5?2?!RW$#?r"mB5gWeieN~> -!BU8QklI@IrojC_rTPKh5lg06iE?Wu>N4o3i`HI$IK8WskB\*O.@TMcQQcP[W9EII])/%Ll(.&? -Z>'^F!!5$;j+76NrrV5?2?!RW$#6bsl)s7Oc8pI~> -!B:&NirP,/ro3tYrSo'\560a(gK+dl=kr&tgf4UoHN<*diHH7E.$ioRP9C&UV!-h?[eYl5j.533 -Y%J(?!!5$;j+76NrrV5?2?!RW$"pDlj0%DC_`*)~> -!BpJTm/a3[^?l!9ql,/6T^;g,GTctc!\B#ZJcERd!o&AZrW!!BGgCs.Z0_SC4b*~> -!BU8QklI@I^?G^1qji<&T]lO%Fs-ba!\B#ZJcERd!o&AZrW!!BG0GO%Z0;;73e.~> -!B:&NirP,/^>f:'q2BmbT]6*oF!(A]!\B#ZJcERd!o&AZrW!!AF2rjlZ/Yl&2h1~> -!BpJTm/a3[^?l!9ql,/6U[8?HPWJmG!"jtRJcE@^#k!EZ!!!$]Pi@8][-[nF4b*~> -!BU8QklI@I^?G^1qji<&UZi'@Ou`UD!"jtRJcE@^#k!EZ!!!$\P2:cS[-7V:3e.~> -!B:&NirP,/^>f:'q2BmbUZ2X4N]@+?!"jtRJcE@^#k!EZ!!!$[NnApC[,V2)2h1~> -!BpJTm/a3[^?l!9ql,/6Vm^Q3$=$31&5?+baU[d=+H4b*~> -!BU8QklI@I^?G^1qji<&V7(?1$=$31&5>If=L[cmh<3e.~> -!B:&NirP,/^>f:'q2BmbV;hig=UG-/$=$31&5=gWb?[c7D+2h1~> -!BpJTm/a3[^?l!9ql,/6W9jZEN@k,0!]utEJcE"T!qVsErW!!ONSoBT\a9FK4b*~> -!BU8QklI@I^?G^1qji<&W9FB=MCnf-!]utEJcE"T!qVsErW!!OMVNdI\`j.?3e.~> -!B:&NirP,/^>f:'q2BmbW8ds2LF`?(!]utEJcE"T!qVsErW!!MLY%+;\`3_.2h1~> -!BpJTm/a3X^?Pd3ql,/6WpL&+>mLE1'm/,_rrqoEaM?HtXoAXZF;4cU#[P2rmCV`deieN~> -!BU8QklI@F^?,L,qON3%Wp'c#>6k3/'m/,_rrqoEaM?HtXoAXZF;4cU#[=oll+?0\c8pI~> -!B:&NirP,,^>K(!q2BmbWoF>n=U5!-'m/,_rrqoEaM?HtXoAXZF;4cU#[+Wfj1F=P_`*)~> -!BpJTm/a3R^?#F@n>V!+XmHDXRl(0G!C -!BU8QklI@@^>T.8m[\pnXm$,PQo"dC!C -!B:&NirP,&^=r_-lAU;SXlB]EPVW:>!Cf732h1~> -!BpJTm/a3M]\`^gJaKZ.#M=8 -!BU8QklI@;]\ -!B:&NirP,!][d(AJ`Ero#L@H-!!!7BkfWo7qPeCIFF]7/J95LDWVXg<"87C]RJ4DtR:q9IY5\aj -D[-7B(N[oRj1s[U_`*)~> -!BpJTm/a3G]\*:aJaK`0#JX:B!!"U>oud::p4R+IpV$`tBS?*)rrUYOZ1G[2YuoJWrs/4c/H>bR - -!BU8QklI@5][d(RJa'H(#J3t=!!"U>oud::p4R+IpV$`tBS?*)rrUYOZ1G[2YuoJWrs/4c/H>bR - -!B:&NirP+p][-Y;J`F#q#IdS6!!"U>oud::p4R+IpV$`tBS?*)rrUYOZ1G[2YuoJWrs/4c/H>bR -;R_5;_W([72h1~> -!BpJTmCB3ImBl6cm&N;M!!?*4aSu=j=L%J3!jPkVd/O0\?G5mC!khpRX8`F=;$-du5-+%$mD\Gn -eieN~> -!BU8Ql+*@9l*T[[kbpWE!!?*4aSu=j=L%J3!jPkVd/O0\?G5mC!khpRX8`F=;$-du4fIRql,Dlf -c8pI~> -!B:&Nj11,"j0[hOihSX9!!?*4aSu=j=L%J3!jPkVd/O0\?G5mC!khpRX8`F=;$-du4/Ckej2L$Z -_`*)~> -!BpJTm/X,trrB$LmC)Beka*e"!!n#Ba8Z4S?G5mC!khpRdf0@,@edY;!<'V3!;sP3@c=?e#Om-I -!!"O9k^i-Am/bd$J,~> -!BU8Qkl@9drrAU@l*fg]jHM+o!!n#Ba8Z4S?G5mC!khpRdf0@,@edY;!<'V3!;sP3@c=?e#Om-I -!!"L5jFQR9klK'jJ,~> -!B:&NirG%MrrA"/j0mtQhiT>f!!n#Ba8Z4S?G5mC!khpRdf0@,@edY;!<'V3!;sP3@c=?e#Om-I -!!"I1hgsh.irR%VJ,~> -!BpJTm/X,trrB$LmC;Ngl&-/S!#pda`r?(u@dUl1@c>f9!H#CH^Ae09$TkB&!<'V3!;sP3\S\;F -#OmQh!!!Xil%/6Dm/bd$J,~> -!BU8Qkl@9drrAU@l+#s_jbXQL!#pda`r?(u@dUl1@c>f9!H#CH^Ae09$TkB&!<'V3!;sP3\S\;F -#OmQh!!!Ufjal[ -!B:&NirG%MrrA"/j1++Shh;XB!#pda`r?(u@dUl1@c>f9!H#CH^Ae09$TkB&!<'V3!;sP3\S\;F -#OmQh!!!Ubhgsh0irR%VJ,~> -!BpJTm/X,trrB$LmCMZihg6":!%X];`;]jT\c0>C!!3NiWqF(,\S]jr!VU+'^'4SOYu!Bn!<'V3 -!;jJ2AbN&%#PjuB!!![Zhgt1 -!BU8Qkl@9drrAU@l+6*agNaD3!%X];`;]jT\c0>C!!3NiWqF(,\S]jr!VU+'^'4SOYu!Bn!<'V3 -!;jJ2AbN&%#PjuB!!!XWgO\V4klK'jJ,~> -!B:&NirG%MrrA"/j1=7UeohZ+!%X];`;]jT\c0>C!!3NiWqF(,\S]jr!VU+'^'4SOYu!Bn!<'V3 -!;jJ2AbN&%#PjuB!!!XTeq)l)irR%VJ,~> -!BpJTm/X,trrB$LmC_fkgiX,-!$@a1_uBc2Ac9=G!5>^72tXfbAbO[S!RZT!^((.W^9S!X!(@04 -^&US-E;mQPK[HXr#QC58!!!OPgk"k;m/bd$J,~> -!BU8Qkl@9drrAU@l+H6cflIZ(!$@a1_uBc2Ac9=G!5>^72tXfbAbO[S!RZT!^((.W^9S!X!(@04 -^&US-E;mQPK[HXr#QC58!!!ONfn&D4klK'jJ,~> -!B:&NirG%MrrA"/j1OCWdr5cs!$@a1_uBc2Ac9=G!5>^72tXfbAbO[S!RZT!^((.W^9S!X!(@04 -^&US-E;mQPK[HXr#QC58!!!LJdt-Q(irR%VJ,~> -!BpJTm/X,trrB$LmCqrlg275t!("?7rrLN#rOraA^:plX^:jRN:VOOC"],-3!JJkNrrLN#rOraA -^:poZ^&XLd%__q0QOa#/!JJjprs$2'!!!@Dg4AY;m/bd$J,~> -!BU8Qkl@9drrAU@l+ZBdenbZn!("?7rrLN#rOraA^:plX^:jRN:VOOC"],-3!JJkNrrLN#rOraA -^:poZ^&XLd%__q0QOa#/!JJjprs$2'!!!@Beq*)3klK'jJ,~> -!B:&NirG%MrrA"/j1aOXctWmf!("?7rrLN#rOraA^:plX^:jRN:VOOC"],-3!JJkNrrLN#rOraA -^:poZ^&XLd%__q0QOa#/!JJjprs$2'!!!@@d"16'irR%VJ,~> -!BpJTm/X-`rrBjNrrB$LmD/)nh/Nf&!(b&BrrLN#rOraA^:poZ^0M'G!kqqI!! -!BU8Qkl@:PrrBjNrrAU@l+lNfg2@?!!(b&BrrLN#rOraA^:poZ^0M'G!kqqI!! -!B:&NirG&9rrBjNrrA"/j1s[Ze8,Km!(b&BrrLN#rOraA^:poZ^0M'G!kqqI!! -!BpJTm/X-`rrE,8_Z'V8JaL>A#3't?!!$-V]`/$+Ac9=Q!5>a935,Q`PQ8E$R$7UM^&_g=eGfPd -\c0>C!"]K"X1eR$#B. -!BU8Qkl@:PrrE,8_Z'V,Ja(&9#2XV9!!$-V]`/$+Ac9=Q!5>a935,Q`PQ8E$R$7UM^&_g=eGfPd -\c0>C!"]K"X1eR$#B. -!B:&NirG&9rrE,8_Z'UpJ`FW-#2")/!!$-V]`/$+Ac9=Q!5>a935,Q`PQ8E$R$7UM^&_g=eGfPd -\c0>C!"]K"X1eR$#B. -!BpJTm/X-`rrN07^r-0PWIaHTm0;[)'*&##aLV -!BU8Qkl@:PrrN07^r-0PSUp%Dkm$*t'*&##aLV -!B:&NirG&9rrN07^r-0PN.L$-is+7e'*&##aLV -!BpJTm/X-`rrW8:'YqZe!3(P:`pEurOVe&u4289)!T@MT^&_^%df0B^?G5mC!khpRR/[B*3rf6t -Om@ScfBiUi4b*~> -!BU8Qkl@:PrrW8:'YqZe!1e]*`p!]jNu.is4289)!T@MT^&_^%df0B^?G5mC!khpRR/[B*3rf6t -O6;)YfBE=]3e.~> -!B:&NirG&9rrW8:'YqZe!/uKh`o@9^M\c?n4289)!T@MT^&_^%df0B^?G5mC!khpRR/[B*3rf6s -MrB6IfAcnL2h1~> -!BpJTm/X-`rr`?%^_FT'rrB$LmDnStW$q]H1:FRi!khpRn\,( -!BU8Qkl@:Prr`?%^_FT'rrAU@l,W#lVC2EE1:FRi!khpRn\,( -!B:&NirG&9rr`?%^_FT'rrA"/j2^0`TdKg?1:FRi!khpRn\,( -!BpJTm/X-`rriE&s1f>ap&>*oN>quMrrB$LmE+`"^HDPs,,bFGrrUYOZ1G[2YuoK$rri4i:M-$h -^&sd:K_CW0#6(ME!!#0sJaM1Y!S0Da~> -!BU8Qkl@:PrriE&s1f>ap&>*oN>quMrrAU@l,i/o]0$&n,,bFGrrUYOZ1G[2YuoK$rri4t -!B:&NirG&9rriE&s1f>ap&>*oN>quMrrA"/j2p@s;t -^&sd:K_CW0#6(ME!!#*iJ`GJE!Q-jH~> -!BpJTm/X-`rr<&urrR`Op%JCe!*SX -!BU8Qkl@:Prr<&urrR`Op%JCe!*SX -!B:&NirG&9rr<&urrR`Op%JCe!*SX -!BpJTm/X-`rriE&s1f>ap&>$mk1'D2WIaH]m0;Wp#lk6Rm]6?s_-UtmFF]7*J8@YmWVXp?"6+jB -rr)j$6_;rO^tA.5rs%n6#QP0SjFQ^Tm/bd$J,~> -!BU8Qkl@:PrriE&s1f>ap&>$mk1'D2SUp%Mkm$'f#lk6Rm]6?saC]:'FF]7*J8@YmWVXp?!p,HZ -r;QsgT%M-"f^Oat#4?U>!"!c*Ja)%U!R<`V~> -!B:&NirG&9rriE&s1f>ap&>$mk1'D2N.L$6is+4W#lk6Rm]6?sc>IN6FF]7*J8@YmWVXp?!pH2t -r;QsgT%M-"f^Oat#4?U>!"!Z!J`GVI!Q-jH~> -!BpJTm/X-`rr`?%^_FTVrr<&JrrB$LmEY)&SK%V0DXa\+%,u["s8VT@aM?Hn(Y[.6!mZ2Ar;QiP -(\r[_"n6C0!$%P\mGI:3eieN~> -!BU8Qkl@:Prr`?%^_FTVrr<&JrrAU@l-AMsRi;>-DXa\+%- -!B:&NirG&9rr`?%^_FTVrr<&JrrA"/j3HZgQQ#o)DXa\+%-X/Ks8VT@aM?Hn(Y[.6!nj$tr;QiP -(\r[_"n6C0!#q8Uj58kt_`*)~> -!BpJTm/X-`rrW8:'Ys>?!!(LJ!3(P:d-V"Q3WK.8_l -!BU8Qkl@:PrrW8:'Ys>?!!(LJ!1e]*d-1_J3<0%7_l -!B:&NirG&9rrW8:'Ys>?!!(LJ!/uKhd,P;?2uiq6_lT'Q:Rs)rtns8N8? -1&q;6\Uif"irR%VJ,~> -!BpJTm/X-`rrN07_".L*!7UrJWIaHbm0;W_!< -!BU8Qkl@:PrrN07_".L*!7UrJSUp%Rkm$'U!< -!B:&NirG&9rrN07_".L*!7UrJN.L$;is+4G!< -!BpJTm/X-`rrE,8nc&Rhe,KEIJaLtS#4.]l!!RB2VuHh0P5Y+S!CNg6rr_YGW;QMl!N/;9s82g# -mr8L2'q"?=mH*^9eieN~> -!BU8Qkl@:PrrE,8nc&Rhe,KE=Ja(\K#3_ -!B:&NirG&9rrE,8nc&Rhe,KE,J`G8?#3(aZ!!RB2VuHh@Wr;Yk!CNg6rr_ee]_qX+!N/;9s82g# -mr8L2'TqC+j5o;%_`*)~> -!BpJTm/X-`rrBjNrrB$LmFCS-a?0G&2qY#-!nr.np&>)u1B,f'!o8=Bq>UNk-,P65q>UWN2ZNh? -aFWa@m/bd$J,~> -!BU8Qkl@:PrrBjNrrAU@l.,#%`B+&"2qY#-!oAq-p&>)u1B,f'!o]*Zq>UNk-,P65q>UWN2ZNh> -`I[:9klK'jJ,~> -!B:&NirG&9rrBjNrrA"/j43/n^cDGq2qY#-!of^Ap&>)u1B,f'!p,otq>UNk-,P65q>UWN2ZNh= -^k(P.irR%VJ,~> -!BpJTm/X,trrB$LmFU_0j`1P*'qkQ'rrVY -kj8E%4b*~> -!BU8Qkl@9drrAU@l.>/(iG\r#'qkQ'rrV_Lht6pMr\C_.rrUH'h>%!NKMd=#p\tHsTG7G1E8cB4 -kii,n3e.~> -!B:&NirG%MrrA"/j4E;qgMI)o'qkQ'rrVe]j7N?Qr\C_.rrU]=iV -!BpJTm/X,trrB$LmF^e0^)m=VB'lGp!rS.mo)Acq1B,r+"9#?VlM1A\i"Y+#s7QBqm:HD"+23 -!BU8Qkl@9drrAU@l.G5(],gqRB'lGp!r\\-o)Acq1B,r+"9#]nmJ-\_i"Y+#s7QBqm:HD"*kR!f -l0/5o3e.~> -!B:&NirG%MrrA"/j4NAq[N,>LB'lGp!r]+Ao)Acq1B,r+"9$$/n+cnai"Y+#s7QBqm:HD"*O^OZ -l/Mf^2h1~> -!BpJTm/X,trrB$LmFpq2hHU']/]sjg!jA-no)Adj19fI3"88(Kp\4[g;1sN#o)Am9/H>fVhLY([ -m/bd$J,~> -!BU8Qkl@9drrAU@l.YA*g0+LW/]sjg!P#&trrW0TYhB$YpS+JYp\t7kKRs0orrpOs!!-9WJa)Lb -!R<`V~> -!B:&NirG%MrrA"/j4`MseQ;hP/]sjg!Pu)3rrW0TYhB$Ypo^gqp\t7kKRs0orrpOs!!-3PJ`H(V -!Q-jH~> -!BpJTm/X,trrB$LmG%"3UDNt:LARbG!mlVonG`Qo1B-&."6kNDrV-@V(o)ZL -m-Oi)4b*~> -!BU8Qkl@9drrAU@l.bG+TGRY7LARbG!nEG-nG`Qo1B-&."7)/]rqHEo_'Sl-s7-*mqh>@V(ncHE -m-+Pr3e.~> -!B:&NirG%MrrA"/j4iStS/2/2LARbG!ns:AnG`Qo1B-&."7DhurqHEo_'Sl-s7-*mqh>@V(S$': -m,J,a2h1~> -!BpJTm/X,trrB$LmG7.5fMDPJ4P6D.!pP*nn,EIg19fR6!nVhApAY3n19Z9/mf*IC49,@XfR`GX -m/bd$J,~> -!BU8Qkl@9drrAU@l.tS-e4ouD4P6D.!pkj.n,EIg19fR6!o&XZpAY3n19Z9/mf*IC49,@Ve:HlP -klK'jJ,~> -!B:&NirG%MrrA"/j5&`!cV+<=4P6D.!q)NBn,EIg19fR6!oTNtpAY3n19Z9/mf*IC49,@Tc[k-E -irR%VJ,~> -!BpJTm/X,trrB$LmG@46S.Yf2PPq6U!r7\omJd6l1B-/1!l0)t1B)k)mJd@gP77L)S:U(r -m/bd$J,~> -!BU8Qkl@9drrAU@l/(Y.R1TE.PPq6U!rA5.mJd6l1B-/1!lp;[p&>)t1B)k)mJd@gP77L(R=XVk -klK'jJ,~> -!B:&NirG%MrrA"/j5/f"Pn=!*PPq6U!rA\AmJd6l1B-/1!m[:tp&>)t1B)k)mJd@gP77L(Q%@ua -irR%VJ,~> -!BpJTm/X,trrB$LmGR@8gJIqN6fXj>!McOYrrW0TYi,N`qkf;>p&>*m19c?0lMh%J6N@*`gO\b^ -m/bd$J,~> -!BU8Qkl@9drrAU@l/:e0fM;JI6fXj>!NiTmrrW0TYi,N`r32RXp&>*m19c?0lMh%J6N@*^fR`;W -klK'jJ,~> -!B:&NirG%MrrA"/j5Ar$dS0]A6fXj>!OoZ,rrW0TYi,N`r48`qp&>*m19c?0lMh%J6N@*\dXgHK -irR%VJ,~> -!BpJTm/X,tmJs5;mG[F9W##FCRf8u[!lTumli.$j1B-;5"7hSHq=O[gYVQ3/s69OergF8r(T;oP -o'HJ/4b*~> -!BU8Qkl@9dmJrf/l/Ck1VAB4ARf8u[!m?r-li.$j1B-;5"8&.aqXjdhYVQ3/s69OergF8r(T)cJ -o'$2#3e.~> -!B:&NirG%MmJr2sj5K#%Tb[V;Rf8u[!n!h@li.$j1B-;5"8/\$qXjdhYVQ3/s69OergF8r(86<> -o&Bbg2h1~> -!BpJTm/X,tmJs5;mGmR;iEcNb52Mq3!o\OmlMgqb19fg="6>$Brq-3lr\C^/s5s=bhECo??K$J& -o^)\14b*~> -!BU8Qkl@9dmJrf/l/V"3h-9s\52Mq3!p,@-lMgqb19fg=!p>WZoD\mk19c?0k5PVA4obUgh1=h_ -klK'jJ,~> -!B:&NirG%MmJr2sj5]/'f3/1T52Mq3!pH*AlMgqb19fg=!pZ>soD\mk19c?0k5PVA4obUef7DuS -irR%VJ,~> -!BpJTm/X,tmJs5;mH!X -!BU8Qkl@9dmJrf/l/_(4a;t -!B:&NirG%MmJr2sj5f5(_]8^_N;]CK!r&;Akl1^g1B-D8!o'0uo)Acp1B)k)jo5M_N!KD(_h$k@ -irR%VJ,~> -!BpJTm/X,tmJs5;mH3d>l?EF31Y&)s!reUmkPkV_19fp@!ks6Ho)Ad]+2ia1ir9241B7Q&l@J?s -m/bd$J,~> -!BU8Qkl@9dmJrf/l/q46k&pk-1Y&)s!rf",kPkV_19fp@!l^5`o)Ad]+2ia1ir9241B7Q$k(2dk -klK'jJ,~> -!B:&NirG%MmJr2sj6#A*i,]#$1Y&)s!rfFAkPkV_19fp@!mI5#o)Ad]+2ia1ir9241B7Q!i.9q_ -irR%VJ,~> -!BpJTm/X,tmJs5;mH -!BU8Qkl@9dmJrf/l0%:7c8Ye*Gl"!2!l:N-k5PLe1B-P<"8]$ep[S:`AqC!?rrr7D!WY4*Ja)so -!R<`V~> -!B:&NirG%MmJr2sj6,G+a>O#"Gl"!2!m.MAk5PLe1B-P<"8]C&q!nCaAqC!?rrr7D!WY."J`HOc -!Q-jH~> -!BpJTm/X-`mJsT0mJs5;mHEp?T+CuA]q#*(fQm#KrrW0TYj25jm>@h=nc&[%+7Xp^hZ!_l)ZUGA -JaN:#!S0Da~> -!BU8Qkl@:PmJsT0mJrf/l0.@7SIbc?]q#*(gkbR`rrW0TYj25jn!C -!B:&NirG&9mJsT0mJr2sj65M+R1B9:]q#*(iKs2urrW0TYj25jnYEbonc&[%+7Xp^hZ!_l)ZUD: -J`HRd!Q-jH~> -!BpJTm/X-`mK!ns4mVXlV@K\ -EpA5Cqs=F84b*~> -!BU8Qkl@:PmK!YVQ4ErrV,;aRK32nK5>ns4mVXlV@K\ -E9;`9qrn.,3e.~> -!B:&NirG&9mK!ns4mVXlV@K\ -D;^!*qr7^p2h1~> -!BpJTm/X-`mK*A%Zbu22WIaI&m01T]!""qiSGrZfNkjZS!rasYmJd7,IG+)hs(6i^gA_?UPmIF? -aarjWm/bd$J,~> -!BU8Qkl@:PmK*A%Zbu22SUp%kklo'U!""qiSGrZgR`FFf!rasYmJd72N8 -`e!CPklK'jJ,~> -!B:&NirG&9mK*A%Zbu22N.L$Tis!4H!""qiSGrZgVp=<%!rasYmJd79Rc -!BpJTm/X-`mK3I)'=7;u!!)oa!!(a@!3(P:m-OqG$ihBKmJZDQeieN~> -!BU8Qkl@:PmK3I)'=7;u!!)oa!!(a@!1e]*m-+Y@$ih -!B:&NirG&9mK3I)'=7;u!!)oa!!(a@!/uKhm,J56$ih -!BpJTm/X-`mK4\3_!m-5mhuE^gnc&^_PFVF:rrV^4 -_h%j=rrr!t!!$KkJaNL)!S0Da~> -!BU8Qkl@:PmKj'Vie>4\3_!md,,huE^gnc&^aT;VMRrrV^4 -_h%j=rrr!t!!$EeJa*4!!R<`V~> -!B:&NirG&9mK4\3_!nF%@huE^gnc&^bX0VQirrV^4 -_h%j=rrr!t!!$?]J`Hdj!Q-jH~> -!BpJTm/X-`mKEUjs1f;Sp$Me[qsFFag?ns?JaMpn"O8\$#a^tZ!p"amhZ!ZI+1h(D"6G-BrpKgd -AqC!2rreYo!&2]Lm/l\+4b*~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsFFag?ns3Ja)Xf"NrFu#a^tZ!p>L-hZ!ZI+1h(D"6bi[rpKgd -AqC!2rreYo!&)NHklU+p3e.~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsFFag?ns"J`H4Z"NE%o#a^tZ!pZ6AhZ!ZI+1h(D"7)PtrpKgd -AqC!2rreYo!%u9Bir\8Y2h1~> -!BpJTm/X-`mJm7drrR`OjnA*B!;l0a!8?i@WIaI+m0'^*!$faVrrVnHd+nX&\f^J8rrUSqcgC`6 -\f^Hns3goMbp*3!Z@VBDeieN~> -!BU8Qkl@:PmJm7drrR`OjnA*B!;l0a!8?i@SUp%pkle1#!$faVrrVqWe_L0+\f^J8rrUc0eF!8; -\f^Hns3goMbp*3!YCYp=c8pI~> -!B:&NirG&9mJm7drrR`OjnA*B!;l0a!8?i@N.L$Yirl@l!$faVrrVtfg>)]0\f^J8rrUrDg?nnA -\f^Hns3goMbp*2uWe'12_`*)~> -!BpJTm/X-`mKEUjs1f;Sp$Me[qsFFag?ns?JaN$q"mgU -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsFFag?ns3Ja)ai"mC76!(caMrrW1r\_@)`B(l6+^Q7RFrrV^4 -\q0n.rrr$c!!7K1KBWE^3e.~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsFFag?ns"J`H=]"la_-!(caMrrW2)_:nqhB(l6+a.;M_rrV^4 -\q0n.rrr$c!!7B(KB!!M2h1~> -!BpJTm/X-`mKUQlSW`U2 -s8Q\^s3CWJre(=Q:#^in!S0Da~> -!BU8Qkl@:PmKUQmW1NYJ -s8Q\^s3CWJre(=Q9\tHe!R<`V~> -!B:&NirG&9mKUQnZ`<]b -s8Q\^s3CWJre(=Q9%\gW!Q-jH~> -!BpJTm/X-`mK3I)'=7;u!?AuTmK(-Fg?ns?JaN*s"Nr1n&@Il)!nVtnf`)#n(>J`d"7:rDr9XFb -_&r2us31KG[1E -!BU8Qkl@:PmK3I)'=7;u!?AuTmK(-Fg?ns3Ja)gk"NMki&@Il)!o/h-f`)#n(>J`d"7MP]r9XFb -_&r2us31KG[1E -!B:&NirG&9mK3I)'=7;u!?AuTmK(-Fg?ns"J`HC_"MuJc&@Il)!oTUAf`)#n(>J`d"7`2"r9XFb -_&r2us31KG[1E -!BpJTm/X-`mK*A%Zh!MhIPA@rkIWEtg?ns?JaN-t"L&76/)$?i!q(Kmf)Gf>.Id<9!o&.@li.%@ -(<;"+b5VUu.f]s]L@##m4b*~> -!BU8Qkl@:PmK*A%Zh!MhIPA@rkIWEtg?ns3Ja)jl"K`%3/)$?i!q;0-f)Gf>.Id<9!oJsYli.%@ -(<;"+b5VUu.f]sZL?S`a3e.~> -!B:&NirG&9mK*A%Zh!MhIPA@rkIWEtg?ns"J`HF`"K2\./)$?i!qMfAf)Gf>.Id<9!oo`rli.%@ -(<;"+b5VUu.f]sUL>r -!BpJTm/X-`mK! -!BU8Qkl@:PmK!N8Nt$!q7Y, -JcEgk"S,Ik"+l -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs5;mJ-&Ok["5iO-T_GW1h]?#5gu/r2GP>li.%a7rEnX`W$(%!p -4b*~> -!BU8Qkl@:PmJsT0mJrf/l1jKGjBV`dO-T_GZE)IS#5gu/r3M^Wli.%a7rEnX`W$(%! -!B:&NirG&9mJsT0mJr2sj7qX;hc^!\O-T_G]XH;h#5gu/r4Jipli.%a7rEnX`W$(%! -!BpJTm/X,tmJs5;mJ6,PgcYWDWg3ScaG9Q=rrhg==Io6PrrR(.r.4mdrrf>.!'T+pm/bd$J,~> -!BU8Qkl@9dmJrf/l1sQHffT6@Wg3SccB\4Rrrhg=?`.!'JqlklK'jJ,~> -!B:&NirG%MmJr2sj8%^.!'AYeirR%VJ,~> -!BpJTm/X,tmJs5;mJ?2Qas-m(b*Du.j*^+=rr_>$&B=#8!gtM,JcEUe"NhS^,Kbr3!S0Da~> -!BU8Qkl@9dmJrf/l2'WI`ZkI$b*Du.k)8QQrr_G3&B=#8!gtM,JcEUe"NhS^,K>Z+!R<`V~> -!B:&NirG%MmJr2sj8.d=_'/jsb*Du.l'h%frr_PB&]X,9!gtM,JcEUe"NhS^,/K2t!Q-jH~> -!BpJTm/X,tmJs5;mJH8RZNgIbj-BWGon1W=rrp_rd)-jim/I.+(>FE?_#FPt0`VHbN9pYs4b*~> -!BU8Qkl@9dmJrf/l20]JYQk._j-BWGp6!nQrrpo1e\`Bnm/I.+(>FE?_#FPt0`VH_N9LAg3e.~> -!B:&NirG%MmJr2sj87j>Ws8VZj-BWGpRg3frrq,FgVY#tm/I.+(>FE?_#FPt0`VHZN8jrV2h1~> -!BpJTm/X,tmJs5;mJQ>SRg/phoTfFXrgC"=rs/P2K'!%4F\qK*!nS1,JcEIa"S>Ii#Fg_?!S0Da~> -!BU8Qkl@9dmJrf/l29cKQj*OdoTfFXrh[0Rrs/P;OQc`EF\qK*!nS1,JcEIa"S>Ii#+1D7!R<`V~> -!B:&NirG%MmJr2sj8@p?PQh+`oTfFXrij8frs/PCT'QFVF\qK*!nS1,JcEIa"S>Ii#*b,-!Q-jH~> -!BpJTm/X,tmJs5;mJZDTJH5airKR<`\n,EIS,G0Pe]`/-5Du]oiNpQku -4b*~> -!BU8Qkl@9dmJrf/l2BiLIfTOgrKR<`^n:SSrr`(pTCr3`!r4U>n,EIS,G0Pe]`/-5Du]ogNp-Si -3e.~> -!B:&NirG%MmJr2sj8J!@HN=+crKR<`aK,9grr`)&X7lPm!r4U>n,EIS,G0Pe]`/-5Du]ocNoL/X -2h1~> -!BpJTm/X,tmJs5;mJlPVl=9krNg'JEf7 -!BU8Qkl@9dmJrf/l2TuNk$e;lNg'JEgQ(mSrr__P[/Kq&!nS1=nc&[b4+)VZ\c2em!WZ]lOQcek -3e.~> -!B:&NirG%MmJr2sj8\-Bi*ZNdNg'JEi10Jhrr_e`^&@m/!nS1=nc&[b4+)VZ\c2em!WZWdOQ-AZ -2h1~> -!BpJTm/X,tmJs5;m02n=9)o6tPQ(^OGhpjK!nVe3q>UMa1AUPA"9)D)rdk*Zrrf>-!))F9m/bd$ -J,~> -!BU8Qkl@9dmJrf/klp>18cT-sPQ(^QLZ-_^!o/[Nq>UMa1AUPA"9)D)rdk*Zrrf>-!(u44klK'j -J,~> -!B:&NirG%MmJr2sis"Jt8,rpqPQ(^SQfZ]r!oTKiq>UMa1AUPA"9)D)rdk*Zrrf>-!(bk,irR%V -J,~> -!BpJTm/X,trrB$Lm0)H)!#!/4rrW"S_USSfrk*a:p\t7jFn>V7Hoq(Rs0hq1_@ci(j-&d1eieN~> -!BU8Qkl@9drrAU@klflu!#!/4rrW%aaj^7k_i484=+[f6KI&caZDP3E"m3e.~> -!B:&NirG%MrrA"/irn$h!#!/4rrW(od*r!rbFI\grrGr=oD\l>484=+[f6KI&caW=P2cS\2h1~> -!BpJTm/X,trrB$Mm0(ui!$0mYrrJjjeGfXGT9&L8rrVO,`;]c=k/tO&r;Qhj,O0j[[/U9b*<7S? -PO/D%4b*~> -!BU8Qkl@9drrAUAklfE`!$0mYrrK4)eGfXHWgrYRrrVO,`;]c=k/tO&r;Qhj,O0j[[/U9b*<7P: -PN`+n3e.~> -!B:&NirG%MrrA"0irmUT!$0mYrrKU>eGfXI[A`]jrrVO,`;]c=k/tO&r;Qhj,O0j[[/U9b*<7M4 -PN)\]2h1~> -!BpJTm/X,trrB$Nm0(]W!%R&mrrTrpqpk]Kl\VS;o`#H@)Q.L\G_hB)?Z3IS_\LdSs0DY-j=1-P -cBR\seieN~> -!BU8Qkl@9drrAUBklf-O!%R&mrrU3/qpk]Km?Y'Uo`#H@)Q.L\G_hB)?Z3IS_\LdSs0DY-j=1-P -b*;,kc8pI~> -!B:&NirG%MrrA"1irm=C!%R&mrrUHCr71fLn"[Mmo`#H@)Q.L\G_hB)?Z3IS_\LdSs0DY-j=1-O -`K]B`_`*)~> -!BpJTm/X,trrB$Om0(?E!&j2,rrUl'n(%F>epYO.rrUtBM>=jfN(su*JcDtS"RJ#H(rV^,!S0Da~> -!BU8Qkl@9drrAUCkleg>!&j2,rrV#9n^[X@gPa8GrrUtBM>=jfN(su*JcDtS"RJ#H(r;L%!R<`V~> -!B:&NirG%MrrA"2irm"2!&j2,rrV2Lo%!aAhjW!arrUtBM>=jfN(su*JcDtS"RJ#H(VH$n!Q-jH~> -!BpJTm/X,trrB$Pm0's3!(6=?rrVS9gt)K-rk![;o)Ad2Bta8T!ki*`JcDqR"S+n[&\44p!S0Da~> -!BU8Qkl@9drrAUDkleF+!(6=?rrVYJi77i/_N!RGrrU2S^%]5B]jo'5s0)G*nj -!B:&NirG%MrrA"3irlUu!(6=?rrV_ZjOO83b+.VbrrU2S^%]5B]jo'5s0)G*nj -!BpJTm/X-`rrBjNrrB$Qm0'Wr!)`NSrrW"R_Ue_hpn!T:o)Aa=Ab3V:A^Z/0YQ"b#;#ga'QgFh) -4b*~> -!BU8Qkl@:PrrBjNrrAUEkle*k!)`NSrrW%`ak$Ioq5KnTo)Aa=Ab3V:A^Z/0YQ"b#;#ga$Qg"Or -3e.~> -!B:&NirG&9rrBjNrrA"4irl:`!)`NSrrW(nd+84!q6[-no)Aa=Ab3V:A^Z/0YQ"b#;#g`tQfA+a -2h1~> -!BpJTm/X-`rrE,8_Z'V8L[>5E#QRp'OoGHUV:PYKlA2G;o)Adj=1n=B!!)u3!k_V6JcDqR"T2:# -#ca9Z!S0Da~> -!BU8Qkl@:PrrE,8_Z'V,LZnr>#QRp'OoGH`YL`^Um?P$Uo)Adj=1n=B!!)u3!k_V6JcDqR"T2:# -#cF'S!R<`V~> -!B:&NirG&9rrE,8_Z'UpLZ8N4#QRp'OoGHj\^pc_n"[Pno)Adj=1n=B!!)u3!k_V6JcDqR"T2:# -#c!dI!Q-jH~> -!BpJTm/X-`rrN07^r-0PWJKpEV?[*9rfR3^^5i*BrrU`!`pj!/^Pi')rr<0040$!pr4W2i^OcEf -rri=9!!fBhm/bd$J,~> -!BU8Qkl@:PrrN07^r-0PSVZM5UBU^5rfR3^`L?\UrrUo4bjbW5^Pi')rr<0040$!pr4W2i^OcEf -rri=9!!]3dklK'jJ,~> -!B:&NirG&9rrN07^r-0PN/6KsT*>:1rfR3^c):KkrrV&Ge+!A<^Pi')rr<0040$!pr4W2i^OcEf -rri=9!!]'`irR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?rr<0&%PW+lg&D&OM"orT@OoGL8J+)%i"9,l^hs^RGFhRaf"ouBB -:cH)gr4W3FFb0Rprri=>!!]-cm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys>?rr<0&%PW+lg&D&CM

YL!5>^7 -2nf:i^&boiJcDkP"TE<>#+h:J!R<`V~> -!B:&NirG&9rrW8:'Ys>?rr<0&%PW+lg&D&2M;n`-"TWK?OoGLAS+>22!m-tpn,EE2^&>YL!5>^7 -2nf:i^&boiJcDkP"TE<>"e(n?!Q-jH~> -!BpJTm/X-`rr`?%^_FTVrs&Q(s7FQQ)W09K!3(kC".TJoFccV)m=!dBrr`%eOn%l>!-%kM#lq]R -Z3S)D70ml3^&W,'s/Z/%FT;Q7S*^7-4b*~> -!BU8Qkl@:Prr`?%^_FTVrs&Q(s7FQQ)W09K!1f#3".B>mFccV)mu62Wrr`(qSb):L!-%kM#lq]R -Z3S)D70ml3^&W,'s/Z/%FT;Q5S*9t!3e.~> -!B:&NirG&9rr`?%^_FTVrs&Q(s7FQQ)W09K!/ufq"-s&iFccV)nXAOkrr`)'Wq>`Z!-%kM#lq]R -Z3S)D70ml3^&W,'s/Z/%FT;Q1S)XOe2h1~> -!BpJTm/X-`rriE&s1f>ap&>!lr;QeH>h]2XWJg-GU&k=AOT,CXMSn*H"6tZAr9aLaE;[EV!5?1R -#eg;*QOa#/!-!MhWrE0J!!8mbm/bd$J,~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;QeH>h]2XSVu_7T)o">OT,CYQc[n["72;[r9aLaE;[EV!5?1R -#eg;*QOa#/!-!MhWrE0J!!8d_klK'jJ,~> -!B:&NirG&9rriE&s1f>ap&>!lr;QeH>h]2XN/Q]uRfWS:OT,CYUsRco"7Mttr9aLaE;[EV!5?1R -#eg;*QOa#/!-!MhWrE0J!!8X[irR%VJ,~> -!BpJTm/X-`rr<&urrR`Op%JCc!;uitiY^DL!3(qE".TGnJrp!6rh64ArrU_ua6Wa+FhRaf%04,J -;)l8iQ^82r^:eZ?s/H##JcGnCSa?I/4b*~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;uitiY^DL!1f)5".B;lJrfp4XK^@W!niLVli.!.^&>YS!5>a9 -35,BZQO^aD]leo+WW*'P!!A[\klK'jJ,~> -!B:&NirG&9rr<&urrR`Op%JCc!;uitiY^DL!/uls"-s#hJrfp4[^t,k!oBBqli.!.^&>YS!5>a9 -35,BZQO^aD]leo+WW*'P!!AOXirR%VJ,~> -!BpJTm/X-`rriE&s1f>ap&>!lr;Qfo"krtVWK$9IT`b@IO8f9qNr.Q1"9,i]i9L=C^Pi')rrr"JcGqIT'ZR04b*~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;Qfo"krtVSW2k9Scf%FO8f:#RetejMnaiCW;csO!!JmbklK'jJ,~> -!B:&NirG&9rriE&s1f>ap&>!lr;Qfo"krtVN/cj"RKNVBO8f:*Vu56J!m$qqlMgn"MuCBi!"0,r -X1eR$#B.>jMnaiCW;csO!!Ja^irR%VJ,~> -!BpJTm/X-`rr`?%^_FTVrr<&srrM'qgA_/PNpQqG"os"2rrUi&n(RdDpRIE;l2Lha=1n.=!k_V6 -JcDYJ"+("PVP!5VeieN~> -!BU8Qkl@:Prr`?%^_FTVrr<&srrM'qgA_/DNp-Y@"os"2rrV#9n_4!Fpns_Tl2Lha=1n.=!k_V6 -JcDYJ"+("PUS$cOc8pI~> -!B:&NirG&9rr`?%^_FTVrr<&srrM'qgA_/3NoL56"TWn1rrV/Ko@j3Hq6I$nl2Lha=1n.=!k_V6 -JcDYJ"+("OT:b-E_`*)~> -!BpJTm/X-`rrW8:'Ys>?!!)rs!I\2+rrB$Zm/s?n!-OA&!pk?jgA_9?Krb.7rrLPZo=b9/FkhQJ -VZ-a@!!fNsm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys>?!!)rs!I\2+rrAUNkl[gf!-OA&!q)$*gA_9API:APrrLPZo=b91J)GnX -VZ-a@!!]?oklK'jJ,~> -!B:&NirG&9rrW8:'Ys>?!!)rs!I\2+rrA"=irc%\!-OA&!q;Z>gA_9DTYCBfrrLPZo=b92M<'6f -VZ-a@!!]3kirR%VJ,~> -!BpJTm/X-`rrN07_".L1!<<)lc#+BSgA_/POR3.W#68\'rrW.V_qP+ld! -!BU8Qkl@:PrrN07_".L1!<<)lc#+BSgA_/DOQckP#68\'rrW.cb1cjseVMQ4rrU2S^%]5F]kPL9 -OJqPts/5l!DZC$IU$2U'3e.~> -!B:&NirG&9rrN07_".L1!<<)lc#+BSgA_/3OQ-GE#68\'rrW.pdG"U%gR$IOrrU2S^%]5F]kPL> -T!Rm:s/5l!DZC$DU#Q0k2h1~> -!BpJTm/X-`rrE,8nc/Uh"9AoaFm.NY!3)+J"M"j>CAs=p!reaeg]%BRYCklprrUtZN;:0oN*>$: -s80KWY4[AGWW*,#C&eUOU?r!44b*~> -!BU8Qkl@:PrrE,8nc/Uh"9AoaFm.NY!1f8:"L\X;CAs=p!rf.%g]%BS\<5q5rrUtZN;:0oN*>$: -s89fm\+YCQWW*,#C&eULU?M^(3e.~> -!B:&NirG&9rrE,8nc/Uh"9AoaFm.NY!0!'#"L/:6CAs=p!rfO:g]%BS_4TuOrrUtZN;:0oN*>$: -s8:*/_"WE[WW*,#C&eUGU>l9l2h1~> -!BpJTm/X-`rrBjNrrB$]m/t9=!+(]c!j\'gh#@KFOIZ%%rs?2R?ZLdSG[GC!qu6fjX*h_\JcD_L -"'ts>`1u]#eieN~> -!BU8Qkl@:PrrBjNrrAUQkl\a5!+(]c!kY-'h#@KHSYu5>rs?2R?ZLdSG[GC!qu6fl[>W*'JcD_L -"'ts=_5$5qc8pI~> -!B:&NirG&9rrBjNrrA"@ircq*!+(]c!lV2 -!BpJTm/X,trrB$^m0(]O!)`WSrrU>ro\BHKfRCO5g]%A@8'9ufrr_JRK[GANWrE5!;#hHYV!S36 -4b*~> -!BU8Qkl@9drrAURklf-G!)`WSrrUQ1p>#ZLh2K;+rr\NVb3&Et"7)eHeq*k$rri3r!#WkSklK'j -J,~> -!B:&NirG%MrrA"Airm=;!)`WSrrUcEpY>cMiLA$Err\NVb3&Et"7<@dgO]C)rri3r!#NVMirR%V -J,~> -!BpJTm/X,trrB$_m0(u_!(6OBrrV#)l.u@ArjdO5g&D)3Eq954fnu!QJcDeN"Sb=a+P*CV!S0Da~> -!BU8Qkl@9drrAUSklfEW!(6OBrrV/;leVRCrkXTOg&D)3Eq954h3XbqJcDeN"Sb=a+O[+N!R<`V~> -!B:&NirG%MrrA"BirmUK!(6OBrrV;NmbRmFrlL\jg&D)3Eq954ihWX=JcDeN"Sb=a+3gYB!Q-jH~> -!BpJTm/X,trrB$`m0)5p!&jD/rrVP9f\QQ0oU1p5f`(tnMt-fMrQ'J`mt(M?rrhmN!%Qg%m/bd$ -J,~> -!BU8Qkl@9drrAUTklf]h!&jD/rrVVIh;/)5p8">Pf`(tnMt-fMrm$M+nU^_ArrhmN!%HX!klK'j -J,~> -!B:&NirG%MrrA"Cirmj[!&jD/rrV\ZiSFM9pTU^jf`(tnMt-fMrm[IJnq$hBrrhmN!%??oirR%V -J,~> -!BpJTm/X,trrB$am0)T,!%R>rrrVqN`81FqiI\B6fDbkVU@8*bppPOWpjrIIrrh[ -!BU8Qkl@9drrAUUklg'$!%R>rrrVt\b2*("jH."PfDbkVU@8*bq7_a"q18RJrrh[ -!B:&NirG%MrrA"Dirn3l!%R>rrrVtjdG=g)kao]jfDbkVU@8*bqSnrBq18RJrrh[ -!BpJTm/X,trrB$bm0)]I!$:NgrrW.dXPNmX_gKq`rrGR!mJd=XV16PaJcDnQ"RR619BrJC!S0Da~> -!BU8Qkl@9drrAUVklg-@!$:NgrrW1q[b^rbb)=p&rrGR!mJd=ZYDpg+JcDnQ"RR619'3):!R<`V~> -!B:&NirG%MrrA"Eirn:2!$:NgrrW2'^YSnkd@/nArrGR!mJd=\\XV(IJcDnQ"RR618DpH,!Q-jH~> -!BpJTm/X,trrB$bm/pl!'%W*C!j.jghu -!BU8Qkl@9drrAUVklYAp'%W*C!k4s'hu -!B:&NirG%MrrA"Eir`Zh'%W*C!l2# -!BpJTm/X,trrB$cm/qn>#f;W%!l]rhhu -!BU8Qkl@9drrAUWklZD8#f;W%!m?i'hu -!B:&NirG%MrrA"FiraW.#f;W%!n*h -!BpJTm/X,tmJs5Sm/rgY!ih:\!ni"fhu -!BU8Qkl@9dmJrfGkl[:R!ih:\!o8h'hu -!B:&NirG%MmJr36irbMH!ih:\!of[ -!BpJTm/X,tmJs5Tm/sg%!03*>!pP-gi;WoVXG,c`rrM:!jo5JWYC!qZJcE"T"-*?c\#\lseieN~> -!BU8Qkl@9dmJrfHkl\9r!03*>!pkj'i;WoW[?Bb$rrM:!jo5JX\;J3$JcE"T"-*?b[&`Elc8pI~> -!B:&NirG%MmJr37ircLh!03*>!q)NrrM:!jo5JY_3rLEJcE"T"-*?bYcHdb_`*)~> -!BpJTm/X,tmJs5Um/tKB!-!tu!qh8hi;WoINh6!lrrLJ!j8T8JSq>5dJcE%U")n5Ob,jt2eieN~> -!BU8Qkl@9dmJrfIkl\p9!-!tu!qqf'i;WoKS#Q20rrLJ!j8T5KWK>S[s0;S+Du^EgXQ]c23e.~> -!B:&NirG%MmJr38ird+.!-!tu!r&Ap$s0;S+Du^EbXQ'?!2h1~> -!BpJTm/X,tmJs5Vm/u,g!)\dV!rS:fi;Wo1ID>d-rrKZ!iVs#9NfW(Ks0DY,;#hirXmH/?4b*~> -!BU8Qkl@9dmJrfJkl]T`!)\dV!r\e'i;Wl5N5j0C!P(YXrr_5KS)T#!ZMt#(!$g1!klK'jJ,~> -!B:&NirG%MmJr39irdaS!)\dV!r]4 -!BpJTm/X,tmJs5Wm0)W9!&=,+rrT'fro3q[rN1S-c2Rg=>i>Vbrlfqcm",2DrrhsK!'TPKm/bd$ -J,~> -!BU8Qkl@9dmJrfKklg'0!&=,+rrTF&ro3q[rO.^Hc2Rg=>i5P`d>t -!B:&NirG%MmJr3:irn7$!&=,+rrTd;ro3q[rP+ibc2Rg=>i5P`f:B>=JcE+W"S=DK45[4$!Q-jH~> -!BpJTm/X-`mJsT0mJs5Wm/pYp)<6bW!kO?hir9,JOI>^arrJ%!hZ!`T\pL^UJcE.X"617!?EWYr -eieN~> -!BU8Qkl@:PmJsT0mJrfKklY2k)<6bW!lCB(ir9,LS>Go&rrJ%!hZ!`U_MYr!JcE.X"617!?* -!B:&NirG&9mJsT0mJr3:ir`Hb)<6bW!m7D=ir9,NWNc*?rrJ%!hZ!`Ub*g-AJcE.X"617!>-?ld -_`*)~> -!BpJTm/X-`mK!po&BZOd!WV-bPqTbMVS47nu-uSr.4mVrr^CM!/.QC -!S0Da~> -!BU8Qkl@:PmK! -c8pI~> -!B:&NirG&9mK!uQgR?F1rrI5!h#@NM]UI4GJcE1Y"3LoMJ$7l5 -_`*)~> -!BpJTm/X-`mK*A%Zbu22WLrP[Y5n[(NrK15IHfel"8]$NilV3$?_?'P"6Pr)e:IY.rr]8%!O&`p -!S0Da~> -!BU8Qkl@:PmK*A%Zbu22SY,-KX8r@%NrK19N9fO("8fEfjiRN'?_?'P"6lSFfn'13rr]8%!N`Ni -!R<`V~> -!B:&NirG&9mK*A%Zbu22N1],4VuZq!NrK1>RdT59"8fd)kfNi*?_?'P"7*+`hLY^8rr]8%!N<6_ -!Q-jH~> -!BpJTm/X-`mK3I)'=7?!q>f19!3)XY"3V2TJr]j4j*]bErr_G@U\Mq1!D9`Orr^i.Q/mMr\,QP^ -!"[8Xm/bd$J,~> -!BU8Qkl@:PmK3I)'=7?!q>f19!1feI"31oPJr]j4k)86Zrr_PPXng' -!B:&NirG&9mK3I)'=7?!q>f19!0!T2"2YNJJr]j4l'gbprr_V_\,",F!D9`Orr_/RXm1K;\,QP^ -!"QlNirR%VJ,~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!BU8Qkl@:PmKEUjs1f;SoBlSYea -!B:&NirG&9mKEUjs1f;SoBlSYealC98cUC4O8f:UU!_s$"8K:#m`#2,+5bWK"Sp!(aSLJf -])Mp(.f`3$Zf;)(2h1~> -!BpJTm/X-`mJm7drrR`Ojn.s@!7gK;WM8b^HiO`3O8f:XOg='J"5nd4qo&L8$M;gI"R`"7b5Qtl -]Dhue&-.*am/bd$J,~> -!BU8Qkl@:PmJm7drrR`Ojn.s@!7gK;SYG?NH2nN1O8f:YS\*t_"65KOqo&L8$M;gI"RrLQd/JUr -]Dhue&-.$_klK'jJ,~> -!B:&NirG&9mJm7drrR`Ojn.s@!7gK;N2#>7G5r3.O8f:YWl3uu"6Z8jr5AU9$M;gI"S0$lf)C7# -]Dhue&--p\irR%VJ,~> -!BpJTm/X-`mKEUjs1f;SoBlSYea -!BU8Qkl@:PmKEUjs1f;SoBlSYea -!B:&NirG&9mKEUjs1f;SoBlSYeaJcE@^ -"1813U9rq]_`*)~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=75s!!(R;!3)g^"QqH=8cFeN!kjKck5PP9J%# -!BU8Qkl@:PmK3I)'=75s!!(R;!1ftN"QM-88cFeN!lUH#k5PP=NPGJ/rrL5!c2RqE`JV.uJcEIa -"TCsm0B9M*!R<`V~> -!B:&NirG&9mK3I)'=75s!!(R;!0!c7"Pk[18cFeN!m@D8k5PPBS&bNErrL5!c2RqEc'cBAJcEIa -"TCsm0& -!BpJTm/X-`mK*A%ZgdA_!7gK;WMSta@K7YAO8f:*K(.t'"8oHTgV -!BU8Qkl@:PmK*A%ZgdA_!7gK;SYbQQ?iVG?O8f:0ORhT7"9#ilhnT0lZqAOA"SK3\`r(Df^]+E) -,62,[klK'jJ,~> -!B:&NirG&9mK*A%ZgdA_!7gK;N2>P:?2u5=O8f:6T(M4G"9$0/j1kTpZqAOA"STTucMW7n^]+E) -,62&YirR%VJ,~> -!BpJTm/X-`mK!m_.^Ae5+?ci -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs5am/tH=!1/cH!p+gckPkY1I),`prrJ"!a8Z7qMj!%Ms1nX:QN.H9\Es=J -4b*~> -!BU8Qkl@:PmJsT0mJrfUkl\p6!1/cH!pGR$kPkV5MoWL1!K)!>rr_,FT&bJ&_#FM'!"?lWklK'j -J,~> -!B:&NirG&9mJsT0mJr3Dird(*!1/cH!pc<:kPkV;Ra/SG!K)!>rr_8WWp#$6_#FM'!"?ZQirR%V -J,~> -!BpJTm/X,tmJs5bm/uE!!*YH`!q(?\kl1b[UkImBrrHkt`r?2@aa^)RJcERd"'P[SjLOXYeieN~> -!BU8Qkl@9dmJrfVkl]im!*YH`!q;#rkl1b\Y*%t\rrHkt`r?2@c],'rJcERd"'P[Ri48(Qc8pI~> -!B:&NirG%MmJr3Eire!`!*YH`!qM]4kl1b]\=`-"rrHkt`r?2@eXX,>JcERd"'P[Qg:?5E_`*)~> -!BpJTm/X,tmJs5bm/pVo.J&Z$!qM&fkl1bCKW+[WrrGKt`;]u9[sPLWJcEXf"7mrA?+K>'eieN~> -!BU8Qkl@9dmJrfVklY,i.J&Z$!q_]'kl1bFP-XnprrGKt`;]u:^P]`#JcEXf"7mrA>Iiu!c8pI~> -!B:&NirG%MmJr3Eir`Ea.J&Z$!qi5;kl1bJTY('3rrGKt`;]u:a-jpBJcEXf"7mrA=h3Pn_`*)~> -!BpJTm/X,tmJs5cm/rs\#1nt:!r%V`l2Lka[sc]7rrF+t_Z'c.VLHP`JcE[g"4m_WT=XCjeieN~> -!BU8Qkl@9dmJrfWkl[IV#1nt:!r/.ul2Lka^PpdSrrF+t_Z'c0Y`-g*JcE[g"4m_WS\"%dc8pI~> -!B:&NirG%MmJr3Firb\L#1nt:!r/V5l2Lkaa-tenrrF+t_Z'c1\sq1JJcE[g"4m_WRC_DZ_`*)~> -!BpJTm/X,tmJs5dm/t`I!0rZG!r8"^l2LkOO-oIIrrVd"rP8F8jHPMQJcE[g"-iitdC\cHeieN~> -!BU8Qkl@9dmJrfXkl]3B!0rZG!rALtl2LkQS>>bdrrVd"rP8F8kFe-rJcE[g"-iitcF` -!B:&NirG%MmJr3Gird@5!0rZG!rK"5l2LkSW3>j'rrVd"rP8F8lE$c=JcE[g"-iisaLgI5_`*)~> -!BpJTm/X,tmJs5em0)]6!)NTVrr`1eV>fc["3>l,rjVn.bV6a1"4N!smt(MYrri -!BU8Qkl@9dmJrfYklg-.!)NTVrrW.qYNc&gcAK`PrrL=t^&J2ePH+/(s2P'Ar_EMRk.KpZc8pI~> -!B:&NirG%MmJr3Hirn9u!)NTVrrW/'\`s+qeX=dmrrL=t^&J2jTsXBAs2P'Ar_EMPi4S(N_`*)~> -!BpJTm/X,tmJs5em/qS5)s`Xd"9,$brTjIcoU_!([Jp9(=1nP9rlBGeoR[%_rr_R+!-l0D!S0Da~> -!BU8Qkl@9dmJrfYklZ)/)s`Xd"9,F#rTjIcp8OGE[Jp9(=1eJ7cAAt%JcEdj"7$m+G.d&?c8pI~> -!B:&NirG%MmJr3Hira?&)s`Xd"9,d8rTjIcpU$d`[Jp9(=1eJ7eX4)EJcEdj"7$m+F1gN6_`*)~> -!BpJTm/X,tmJs5fm/sd"!kj]q!iqR_li.(>J?f!Ys8RPZrri"sI),Z2s2b3B]`J>F^$PjO4b*~> -!BU8Qkl@9dmJrfZkl\6p!kj]q!k"]uli.(BNk5.qs8RPZrri&)MT>XGs2b3B]`J>C^$,RC3e.~> -!B:&NirG%MmJr3IircIf!kj]q!ktc6li.(GSAY93s8RPZrri)3REk_]s2b3B]`J>?^#K.22h1~> -!BpJTm/X,trrB%#m/u>g!-jV*!k"$^m/I1bY(>?5rrH2t\GlZqRYB4As2b3BGQ8cD^?ksP4b*~> -!BU8Qkl@9drrAUlkl]c^!-jV*!kt,um/I1b[u]FPrrH2t\GlZsV39J^s2b3BGQ8`?^?G[D3e.~> -!B:&NirG%MrrA"[irdpQ!-jV*!lh/6m/I1c^n'MkrrH2t\Gl[!Z(Tp(s2b3BGQ8]8^>f732h1~> -!BpJTm/X,trrB%#m/pYp./K)+!l0Q^m/I1LM4sXJrrFgt[f6H^M3[1Rs2t?DqBu>M^?ksP4b*~> -!BU8Qkl@9drrAUlklY/j./K)+!lpPum/I1OQE0bbrrFgt[f6HbQD*Mns2t?DqBu>K^?G[D3e.~> -!B:&NirG%MrrA"[ir`Hb./K)+!m[M5m/I1RUUKs&rrFgt[f6HgUTNj5s2t?DqBu>I^>f732h1~> -!BpJTm/X,trrB%$m/s9f#h>(;!m-&_mJd:f^O45/rrW-,o -!BU8Qkl@9drrAUmkl[d`#h>(;!mctumJd:f`f&6KrrW-,o -!B:&NirG%MrrA"\irbtU#h>(;!nEn5mJd:fc'm7grrW-,o -!BpJTm/X,trrB%%m/u)Z!0!'?!n)S`mJd:WQ'1O -!BU8Qkl@9drrAUnkl]QS!0!'?!nWFumJd:YTq:_VrrM$tZMt(%\Ve?'JcEso",m3rfYH_Pc8pI~> -!B:&NirG%MrrA"]ird^F!0!'?!o0:6mJd:[XfCoprrM$tZMt(&_O8XGJcEso",m3qd_OlD_`*)~> -!BpJTm/X,trrB%%m/p2c55gZE!nr%^mJd:8ICoH\rrKYtYl=gkSV,=@s3:QGrB:3Y_!M0R4b*~> -!BU8Qkl@9drrAUnklX]]55gZE!oAjtmJd:=Mo,IrrrKYtYl=gmW0,Y^s3:QGrB:3W_!(mF3e.~> -!B:&NirG%MrrA"]ir`!U55gZE!of[5mJd:BR`bW4rrKYtYl=goZ_-!'s3:QGrB:3U^uGI52h1~> -!BpJTm/X-`rrBjNrrB%&m/rjY%Gm9J!o\O^mf*C`V2"!2rrJ9tY5\UYMj*1Ps3CWHh@0IT_ -!BU8Qkl@:PrrBjNrrAUokl[=R%Gm9J!p,?umf*CaYES(LrrJ9tY5\U]R%NMls3CWHh@0IQ_ -!B:&NirG&9rrBjNrrA"^irbPH%Gm9J!pH*6mf*Cb\Y85grrJ9tY5\UaV5rj3s3CWHh@0IM_;bR6 -2h1~> -!BpJTm/X-`rrE,8_Z'V8Z0_YI&HJ8_rrVD4eaEG>hLhj(X8`3:OKJNcrPsAanU^_drr\\i&_b+h -!S0Da~> -!BU8Qkl@:PrrE,8_Z'V,Z0;AB&-//^rrVJEg$\kBifUSDX8`3:OKJNcrlpD+o7?qfrr\\i&D+e` -!R<`V~> -!B:&NirG&9rrE,8_Z'UpZ/Yr6&-//^rrVSVhX:CGje'6_X8`3:OKJNcrm[FKoR[%grr\\i&CJAT -!Q-jH~> -!BpJTm/X-`rrN07^r-0PWNkgl:]NtJrrVV>bjYQ6r3_"'WW)ui[B'<1pTo4XqLS[nrrPXi:r;T# -eieN~> -!BU8Qkl@:PrrN07^r-0PS[%D\:&mbHrrV\NddR2 -!B:&NirG&9rrN07^r-0PN3VCE9E7PFrrVb^f^JhBrPk>`WW)ui[B'<1q8A]DqgndorrPXi9Z#fj -_`*)~> -!BpJTm/X-`rrW8:'Ys>?!!)or!!(aQ!3*9k"/>i*i040Bo7FmKrr_kQRe!EW!@-9srrh_]J^47G -s3goLi!f[]_sIKU4b*~> -!BU8Qkl@:PrrW8:'Ys>?!!)or!!(aQ!1gF["/#W'i040BooR;arr_q_V=^_d!@-9srr__iO4/[[ -dJj=,%03'=klK'jJ,~> -!B:&NirG&9rrW8:'Ys>?!!)or!!(aQ!0"5D".T?#i040Bp7BY"rr_tmZ1Y'q!@-9srr_f!S_8So -dJj=,%02p9irR%VJ,~> -!BpJTm/X-`rr`?%^_FTVrr<&rrr<&QrrB%)m/u2^!0`WH!qhG]nG`Ui_g9A$rrW$&qPX>qh2RNT -JcF0u"-W^%hSed^eieN~> -!BU8Qkl@:Prr`?%^_FTVrr<&rrr<&QrrAUrkl]WV!0`WH!qqtsn,EI2M9Vsu!r<3!VuHkXR[rMj -s3goLP5lHR`9@ -!B:&NirG&9rr`?%^_FTVrr<&rrr<&QrrA"airdgJ!0`WH!r&M4n,EI9R+/&6!r<3!VuHk\VlAm2 -s3goLP5lEL`8^m92h1~> -!BpJTm/X-`rriE&s1f>ap&>!lqu6p%s8UnL$jT8bir9"XZg@j"!'L4ErrVqTZ1.bqn!B.$VZ-\M -,GkDCrlTbdmt(Mgrr`3^!*mJ0!S0Da~> -!BU8Qkl@:PrriE&s1f>ap&>!lqu6p%s8UnL$jT8bir9"LZfqQq!'L4ErrVtb](#_%nY2Q@VZ-\M -,GkDCrm6\.nU^_irr`3^!*[>*!R<`V~> -!B:&NirG&9rriE&s1f>ap&>!lqu6p%s8UnL$jT8bir9";Zf;-i!'L4ErrW"o_sm[.o<,(]VZ-\M -,GkDCrmmULo7?qkrr`3^!*I2"!Q-jH~> -!BpJTm/X-`rr<&urrR`Op%JCc!;ld%!<<'L^@q&7=Q9>\WO2$pY5np]PlCj]PH4]Qrr^Jm]D\T+ -!OYInrri,*Haig%s4.,OfE_M]`U*]W4b*~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;ld%!<<'L^@q&7=Q9>\S[@V`X8rUZPlCg]T=+1g"4E+Erh]Vq -[7I(m"Soch^\WN]ec,a(#Q_$GklK'jJ,~> -!B:&NirG&9rr<&urrR`Op%JCc!;ld%!<<'L^@q&7=Q9>\N3qUIVu[1VPlCg^X1n*'"5''brh]Vq -[7I(m"T$-+a81Aeec,a(#Q^mCirR%VJ,~> -!BpJTm/X-`rriE&s1f>ap&>!lqu6Wrqu6]i']T,mWO;*qk8aPWPlCj_R&0fQrr_ncM<(H3!K_,k -rrhbaJBRqCs472PL&`7W`pEfX4b*~> -!BU8Qkl@:PrriE&s1f>ap&>!lqu6Wrqu6]i']T,mS[I\aiuA&RPlCj`UTa[frr_tpQKP%C!K_,k -rr_bmNmWFXec,`+!$(%=klK'jJ,~> -!B:&NirG&9rriE&s1f>ap&>!lqu6Wrqu6]i']T,mN4%[Jh&??KPlCj`YIXZ'rr`#'U["WS!K_,k -rr_i$S_&Gmec,`+!#sb6irR%VJ,~> -!BpJTm/X-`rr`?%^_FTVrrE3!rVm3%!rr;@4UV5i!TO+ZWO;*qEW@clQ2^sbSY,lOrr^i%Ykt0p -!Gmjirr_2?No#?efDbsP0*$%4m/bd$J,~> -!BU8Qkl@:Prr`?%^_FTVrrE3!rVm3%!rr;@4UV5i!TO+ZS[I\aDu_QjQ2^sbW2fjfrr^u7\bi-$ -!Gmjirr_;OS)T#!fDbsP0*#t2klK'jJ,~> -!B:&NirG&9rr`?%^_FTVrrE3!rVm3%!rr;@4UV5i!TO+ZN4%[JD#c6gQ2^sbZaKf'rr_/K_Yg/. -!Gmjirr_G_Vr`L0fDbsP0*#k/irR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?!?TVdrs@!os8O(;nG_tYir9"X[d=1<"p2f0rr`7pRf)dW"8JmJgn=ZJ -8@>&h"THYsU$dL3f`)&n!X?`dm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys>?!?TVdrs@!os8O(;nG_tYir9"L[cmn5"Tl]/rr`8&V>^#c"8T9bi1U)N -8@>#g"4E72n:CVlrr^7B"i\OH!R<`V~> -!B:&NirG&9rrW8:'Ys>?!?TVdrs@!os8O(;nG_tYir9";[c7J*"Tl]/rr`80Z2O:o"8]^&jIlMR -8@>#g"5'0Qnq$hnrr^7B"i/1=!Q-jH~> -!BpJTm/X-`rrN07_".L9LGR!GprG7Is8Nb:pt\sNir9"X\*X:a49/uYrr`8!Q2C1Q"5\^/pRhHd -,MAUe"SoTT[.o4Pg&D.d!'KVhm/bd$J,~> -!BU8Qkl@:PrrN07_".L9LGR!GprG7Is8Nb:pt\sNir9"L\*4"Y3rilWrrTL"qt'giifUM@TDnp: -fpr'FqSA'&q18S!rrZj546XcM!R<`V~> -!B:&NirG&9rrN07_".L9LGR!GprG7Is8Nb:pt\sNir9";\)RSM3WNcVrrTj8r:Bpjje'-[TDnp: -fpr'FqoP8Fq18S!rrZj53o\6@!Q-jH~> -!BpJTm/X-`rrE,8nc'.!Ot?nD/X$,5s01WUrdk+(rr_X'!1:jp!S0Da~> -!BU8Qkl@:PrrE,8nc'.!Ot?nD/X$,5s0 -!B:&NirG&9rrE,8nc'.!Ot?nD/X$,5s0 -!BpJTm/X-`rrBjNrrB%.m/u/Z!2,VW!k"!\o`#$UMOj@0rrLdtQi@0IP)J+Hs4dPUTE#__amB,[ -4b*~> -!BU8Qkl@:PrrBjNrrAV"kl]WS!2,VW!kk#ro`#$XQ`0SJrrLdtQi@0LSs\Ges4dPUTE#_\alriO -3e.~> -!B:&NirG&9rrBjNrrA"firddF!2,VW!l_&3o`#$ZUpKccrrLdtQi@0OWhnd-s4dPUTE#\Ual -2h1~> -!BpJTm/X,trrB%.m/pbs5Q6uK!ka?]p&>-m]mRqkrrKMuQN%*ec[qbSJcFR+"9(Lb@EIm;eieN~> -!BU8Qkl@9drrAV"klY;n5Q6uK!lL;rp&>-n`/Ds2rrKMuQ2^s9OK%Z!s5!\Wr]^BjalriO3e.~> -!B:&NirG%MrrA"fir`Qe5Q6uK!m@A4p&>-nbaR(OrrKMuQ2^s?T!\!2h1~> -!BpJTm/X,trrB%/m/t0,!nWb-\P*GC'rrJ3tPlCm`]6ggWJcFU,"4mSV_92-GeieN~> -!BU8Qkl@9drrAV#kl\X%!nWb-^StPSArrJ3tPlCm`_hu&#JcFU,"4mSV^<5[@c8pI~> -!B:&NirG%MrrA"gircgo!nWb-`WiYc[rrJ3tPlCmabF-9CJcFU,"4mSV\]Wq5_`*)~> -!BpJTm/X,trrB%/m/f -!BU8Qkl@9drrAV#klNjFEL-V+cB%Jfrr^N'a8VM,!H!m\rrhquN6M9Ps53hXE<&#AklK'jJ,~> -!B:&NirG%MrrA"girV1?EL-V+eXc:(rr^c=cMj73!H!m\rri#,RaV1ds53hXE<%u@irR%VJ,~> -!BpJTm/X,trrB%0m/rmZ(@RUi!mZ;\pAY6cRZ-HsrrGctOT,FDP`".Fs5]4b*~> -!BU8Qkl@9drrAV$kl[CT(@RUi!n<4spAY6dVO?_9rrGctOT,FGTU4Jcs5 -!B:&NirG%MrrA"hirbVJ(@RUi!nj+4pAY6fZ)6oTrrGctOT,FJXJFj,s5 -!BpJTm/X,trrB%1m/uDh!1K8S!n2S[pAY6BICB'>rrFRtNrK40KVe9ks5Et[RK+>gbj>G^4b*~> -!BU8Qkl@9drrAV%kl]i_!1K8S!n`IrpAY6GN5#7VrrFRtNrK45P-=P0s5Et[RK+;bbio/R3e.~> -!B:&NirG%MrrA"iire!S!1K8S!o9=3pAY6LR`>;lrrFRtNrK4:TXjcIs5Et[RK+;\bi8`A2h1~> -!BpJTm/X,trrB%1m/qM31B!U?!nht]p\t?hUkR`lrrW0,oo8tSrks)fpjrJ*rr`3T!-ZTR!S0Da~> -!BU8Qkl@9drrAV%klZ#-1B!U?!o8dsp\t?iY*7q3rrW0,oo8tSrl^,0q18S+rr`3T!-HHL!R<`V~> -!B:&NirG%MrrA"iira9$1B!U?!of[5p\t?j\=i#MrrW0,oo8tSrm@(Mq18S+rr`3T!--6C!Q-jH~> -!BpJTm/X,trrB%2m/tiC!Q1<)!o87\p\t?LJZS[3rrM0tMZ3hMVLQbfJcFg2"2b-EeBR@]eieN~> -!BU8Qkl@9drrAV&kl]9;!Q1<)!o]'sp\t?PO1"hKrrM0tMZ3eMY`7"\s5X+]_Z:"hc058S3e.~> -!B:&NirG%MrrA"jirdI0!Q1<)!p,m4p\t?TS\FucrrM0tMZ3eO\t%?&s5X+]_Z:"cc/SiB2h1~> -!BpJTm/X,tmJs6!m/g5e=d]3jidBGSrr`,"JCp%b!Q$mRrr_5@O5PThjSo9a!*%51!S0Da~> -!BU8Qkl@9dmJrfjklOc`=d]3jjbqsirr`/-Nnfft!Q$mRrr_AQS)f/#jSo9a!)q/,!R<`V~> -!B:&NirG%MmJr3YirW'X=d]3jkaLN+rr`/6S`,b3!Q$mRrr_J`W98a3jSo9a!)_#$!Q-jH~> -!BpJTm/X,tmJs6"m/t*)#iM-N!p4p\q#:HTL8+C(rrJctL]7MVbC?AYJcFm4"5jFd^Wu3IeieN~> -!BU8Qkl@9dmJrfkkl\O!#iM-N!pPZsq#:HXPca\BrrJctLAqA'NN_r)s5s=`i!9CrcKPAT3e.~> -!B:&NirG%MmJr3Zircal#iM-N!plB4q#:H[TssfZrrJctLAqA-S@S9Cs5s=`i!9CncJnrC2h1~> -!BpJTm/X,tmJs6"m/fENFd`72n:/aZrr`5/I+45Ws*f\%"Sf -!BU8Qkl@9dmJrfkklNsIFd`72nr;/prr`57MqO0ks*f\%"So]f`;G2dkPkU+!'JQk!R<`V~> -!B:&NirG%MmJr3ZirV:BFd`72oUFP0rr`5?Rbj,*s*f\%"T$')bl!%lkPkU+!'AKd!Q-jH~> -!BpJTm/X,tmJs6#m/s9e'CM=h!ptQ\q>UQ\N109srrHAtKDu&>S;#IDs60IbmLoT!cg:ba4b*~> -!BU8Qkl@9dmJrflkl[d_'CM=h!q22rq>UQ^RAKM8rrHAtKDu&AVio_as60IbmLoStcfkJU3e.~> -!B:&NirG%MmJr3[irbtT'CM=h!qDi3q>UQaVQocRrrHAtKDu&CZCp'*s60IbmLoSocf5&D2h1~> -!BpJTm/X,tmJs6$m/uW&!03NJ!q1c\qYpZs^O4(\rrG0tJc>i)LR@=Ws69OcNW:Nnd-Ukb4b*~> -!BU8Qkl@9dmJrfmkl^&r!03NJ!qDDrqYpZs`er$"rrG0tJc>i-Q)!Yrs69OcNW:Kid-1SV3e.~> -!B:&NirG%MmJr3\ire3e!03NJ!qW&4qYpZsc'd(?rrG0tJc>i2U9F!9s69OcNW:Hbd,P/E2h1~> -!BpJTm/X-`mJsT0mJs6$m/rIN,5@Z-!qM&\qYpZaP*>9krrEttJc>oRr5!capOWA1rr`$?!0PXq -!S0Da~> -!BU8Qkl@:PmJsT0mJrfmklZtH,5@Z-!qVVrqYpZcStGJ0rrEttJc>oRrQ'l+pjrJ2rr`$?!0>Lk -!R<`V~> -!B:&NirG&9mJsT0mJr3\irb2>,5@Z-!qi53qYpZeWiPZJrrEttJc>oRrQgnJpjrJ2rr`$?!/o4a -!Q-jH~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK!VVrr3,oZ]*0.JcG*: -"/c,7j3d)lc8pI~> -!B:&NirG&9mK!VVrr3,p]UI@LJcG*: -"/c,6h9k6`_`*)~> -!BpJTm/X-`mK*A%ZfpfW!8[&CWPIm&K)d]srrVnP[JTt+nmV*.=qNrrr_>FN89'bm/I,C -!/&\d!S0Da~> -!BU8Qkl@:PmK*A%ZfpfW!8[&CS\XIkJH.KqrrVq^^&.g3nt_`?M>mV*.=qNrrr_GURGi_sm/I,C -!.iP^!R<`V~> -!B:&NirG&9mK*A%ZfpfW!8[&CN54HTIK20nrrVtl`V]Z;oWY7\M>mV*.=qNrrr_PdVWEC/m/I,C -!.N>U!Q-jH~> -!BpJTm/X-`mK3I)'=7;u!!)oa!s%cW!8[&CWPRs(iY)=#SGrZcO0JN]"3l8)rJ:ISYtKZJqYp]t -c@M_ZJcG0<"1A1CimR2peieN~> -!BU8Qkl@:PmK3I)'=7;u!!)oa!s%cW!8[&CS\aOmh@fmtSGrZdS%8Fr"4E+CrJ:ISYtKZJq>UQG -O0.u(s6fmh[K$utdcgeX3e.~> -!B:&NirG&9mK3I)'=7;u!!)oa!s%cW!8[&CN5=NVfFn7nSGrZdW58B2"5''`rJ:ISYtKZJq>UQM -S[\3As6fmh[K$undc1AG2h1~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;Sp$Me[qsF^imd:()'a\+-ipHfG_X.H]%fjA8rr`.bVZ-Po"4Vh*qh>%N -AX.iHpAY6^SV>UFs7$$j^Anf#e*R1e4b*~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsF^imd:()'a\+-ipHf;_W_0V%fjA8rr`.mYl=V$"5/[Fqh>%N -AX.iHpAY6`W05kcs7$$j^Aneue*-nY3e.~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsF^imd:()'a\+-ipHf*_W(aJ%KO87rr`2%])M[."5]Nar.Y.O -AX.iHpAY6bZ_60+s7$$j^Anbne)LJH2h1~> -!BpJTm/X-`mJm7drrR`OjnA*B!;l0i!:K7T7G6?]DrU0bWP\$(E<&Ctrr`1fUAb)k"8A^Hh1P_. -2T:7Io`#$FL77FZs7-*j6i_5Um/bd$J,~> -!BU8Qkl@:PmJm7drrR`OjnA*B!;l0i!:K7T7G6?]DrU0bS\jUmDZE1rrr`1rXT&5!"8K-`iIh.2 -2T:7Io`#$KPbmbus7-*j6i_/SklK'jJ,~> -!B:&NirG&9mJm7drrR`OjnA*B!;l0i!:K7T7G6?]DrU0bN5FTVC]Hkorr`2(\,QC,"8TO#jb*R6 -2T:7Io`#$OTs=';s7-*j6i_&PirR%VJ,~> -!BpJTm/X-`mKEUjs1f;Sp$Me[qsF^imd:)!mdA7:ipHfG_sIQ[#6;i:rr`4kSc/Qf"5AF-pk/SJ -r!W+Is7?6nr4[Nbq18S;rr^=B#MR\p!S0Da~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsF^imd:)!mdA7:ipHf;_s%9T#6;i:rr`5!W;Z_q"5f3Hq1J\K -r!W+Is7?6nr5FQ+qLS\ -!B:&NirG&9mKEUjs1f;Sp$Me[qsF^imd:)!mdA7:ipHf*_rCjH#6;i:rr`5,Zi0n'"65udqLeeL -r!W+Is7?6nr6:YJqLS\ -!BpJTm/X-`mKc$ --@u3drrhkfJBn.Fs7H -!BU8Qkl@:PmKUAnqmVU?Jc>c$ --@u3drr_kqNmiRZoD\kd!,U0L!R<`V~> -!B:&NirG&9mKc$ --@u3drr_o'S_8SooD\kd!,C$D!Q-jH~> -!BpJTm/X-`mK3I)'=7;u!?AuTmKp]Nmd:)!mdA7:ipHfG`9dZ^$inGBrsA\&Q2:O\i.e$#Jc>fO -V,`*Hmf*CGN0E@Ss7QBoaoDk*ea3Cg4b*~> -!BU8Qkl@:PmK3I)'=7;u!?AuTmKp]Nmd:)!mdA7:ipHf;`9@BW$inGArs5m'qu?]WPHFS1rrW4s --:!"@Q2klK'jJ,~> -!B:&NirG&9mK3I)'=7;u!?AuTmKp]Nmd:)!mdA7:ipHf*`8^sK$inGArs66=qu?]ZTssfJrrW4s --:!"@?,irR%VJ,~> -!BpJTm/X-`mK*A%Zh!MpIPA@rkIWEtmd:'Fg=\o5ipHfG`9dVK!(`^]#HX*as899Qd"25rrrI7r -JcG-;"T?;fXS.5FpAY1b!-QiZ!S0Da~> -!BU8Qkl@:PmK*A%Zh!MpIPA@rkIWEtmd:'Fg=\o5ipHf;`9@>E!(`^]#I^6#s89QheUdc"rrI7r -JcG-;"THW'[eG@QpAY1b!-?]T!R<`V~> -!B:&NirG&9mK*A%Zh!MpIPA@rkIWEtmd:'Fg=\o5ipHf*`8^o -!BpJTm/X-`mK!rrGQr -JcG'9"SJgDa8UYiq#:H7!"[u -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs6*m/hV76)aeck/tO&r;Qu0MY6q]I*$s>qu6[4jamHrrr_>FNSoBfq#:C] -!.3;a!S0Da~> -!BU8Qkl@:PmJsT0mJrfsklQ,16)aeck/tO&r;Qu9QhLEsMpHtSqu6[4jamHrrr_GURcAu!q#:C] -!.!/[!R<`V~> -!B:&NirG&9mJsT0mJr3birXB(6)aeck/tO&r;QuAV"al3Raluhqu6[4jamHrrr_PdVrrX2q#:C] -!-ZrR!Q-jH~> -!BpJTm/X,tmJs6+m/u>]!5>N6&\)adG_hB)?Z3IS]SH+EOHo6bs82fsjVEFIkPk\ab^cP\JcGTH -"24aKin*PueieN~> -!BU8Qkl@9dmJrftkl]cT!5>N6&\)adG_hB)?Z3IS_j0o^SY>P(s82fsjVEFIk5PP3Nj&&*s8)`t -^&Sf&fBE=]3e.~> -!B:&NirG%MmJr3cirdpH!5>N6&\)adG_hB)?Z3ISbG+_!WNG`Bs82fsjVEFIk5PP9S@S -!BpJTm/X,tmJs6+m/hn?408G`gff[4^'BTlFR[4r_Z#,dqYpT(7=kL#rri,&I)#T1s82ft3rjob -m/bd$J,~> -!BU8Qkl@9dmJrftklQD9408G`gff[4^'9NmJ+Lg?aasKfrrKMrJcFj3"SoZe`r1Jgqu6^Z!.ibd -!R<`V~> -!B:&NirG%MmJr3cirXZ0408G`gff[4^'9NnMtGDbd"25mrrKMrJcFj3"T$')cM`=oqu6^Z!.NP[ -!Q-jH~> -!BpJTm/X,tmJs6,m/uPk!48m.!lerfpV$dDApBC%JcGNF!JPZIs5X+]lC!F\JcGZJ"1/%Ikh,8' -eieN~> -!BU8Qkl@9dmJrfukl]ub!48m.!lerfpV$dDB7QN=JcGNF!JPZIs5X+]m%fp&JcGZJ"1/%HjOi\t -c8pI~> -!B:&NirG%MmJr3dire0W!48m.!lerfpV$dDB8NSUJcGNF!JPZIs5X+]n$&PGJcGZJ"1/%Hhq6ri -_`*)~> -!BpJTm/X,tmJs6,m/r[T/,l^O!RbQN^&_QfJcGKE!EGtIs5Et[dt4+YJcG`L"9'eNQe:[+eieN~> -!BU8Qkl@9dmJrfukl[.M/,l^O!RbQN^&_TgJcGKE!EGtIs5Et[fT<$$JcG`L"9'eNPh>4$c8pI~> -!B:&NirG%MmJr3dirbDD/,l^O!RbQN^&_WhJcGKE!EGtIs5Et[h4CqDJcG`L"9'eNOkA[p_`*)~> -!BpJTm/X,tmJs6-m/u]*!2$Fo!rc96o=b:==8mdNq#:@AeUdbYrri50Hb0**s8W*$T)^D.g$Jgk -4b*~> -!BU8Qkl@9dmJrg!kl^-!!2$Fo!rc96o=b:==8mdNq#:@AeUdbYrri58MSf:Bs8W*$T)^A)g$&O_ -3e.~> -!B:&NirG%MmJr3eire9i!2$Fo!rc96o=b:==8mdNq#:@AeUdbYrri8AREGGYs8W*$T)^>"g#E+N -2h1~> -!BpJTm/X,tmJs6-m/sBh)u6Z:!PaQk^Ae07$TkBb^&a/,JcGQG!qQftJcFU,"7;Y5eq*i(s7mT6 -X4ck@eieN~> -!BU8Qkl@9dmJrg!kl[ja)u6Z:!PaQk^Ae07$TkBb^&a/,JcGQG!qQftJcFU,"7N1Og4B8,s7mT6 -W7gD9c8pI~> -!B:&NirG%MmJr3eirc(W)u6Z:!PaQk^Ae07$TkBb^&a/,JcGQG!qQftJcFU,"7`^jhgte1s7mT6 -UtOc/_`*)~> -!BpJTm/X,tmJs6-m/fHOM66dYFhRaf"9?0@:cJ6b!PNW,s7uZq`AW;Ig]%B-Kq.O]rrS#W52#<( -eieN~> -!BU8Qkl@9dmJrg!klO!JM66dYFhRaf"9?0@:cJ6b!PNW,s7uZq`AW;Ig]%B2PGdl#rrS#W4k]'# -c8pI~> -!B:&NirG%MmJr3eirV:BM66dYFhRaf"9?0@:cJ6b!PNW,s7uZq`AW;Ig]%B6TX+*=rrS#W45&Wp -_`*)~> -!BpJTm/X,trrB%?m/t6+%e-V#!-%kM#lq]RZ3S+X!!Q0t^&W,'s7uZqQ">OHgA_ -!BU8Qkl@9drrAV3kl\^$%e-V#!-%kM#lq]RZ3S+X!!Q0t^&W,'s7uZqQ">OHgA_ -!B:&NirG%MrrA#"ircmn%e-V#!-%kM#lq]RZ3S+X!!Q0t^&W,'s7uZqQ">OHgA_ -!BpJTm/X,trrB%?m/g;gF0,BAE;[EV!5?1R#ejRO!!UJ,Q%Atfrr___K@>JQ!cn?B -g?epl4b*~> -!BU8Qkl@9drrAV3klOibF0,BAE;[EV!5?1R#ejRO!!UJ,Q%Atfrr_elOk> -!B:&NirG%MrrA#"irW*YF0,BAE;[EV!5?1R#ejRO!!UJ,Q%Atfrr_i"TA>/"!cn?> -g>`4O2h1~> -!BpJTm/X,trrB%@m/tuG"5g3[!Hl*S^'t(VZ;ETq"dkMS^:q:'JcGQG!B.oJs472Pg4u*]L&V84 -!sdK5m/bd$J,~> -!BU8Qkl@9drrAV4kl]E>"5g3[!Hl*S^'t(VZ;ETq"dkMS^:q:'JcGQG!B.oJs472PhNar)L&V84 -!s[90klK'jJ,~> -!B:&NirG%MrrA##irdU3"5g3[!Hl*S^'t(VZ;ETq"dkMS^:q:'JcGQG!B.oJs472PihE[GL&V84 -!s[*+irR%VJ,~> -!BpJTm/X,trrB%@m/hM4;60]t^Pi')rr -!BU8Qkl@9drrAV4klQ#.;60]t^Pi')rr -!B:&NirG%MrrA##irX9%;60]t^Pi')rr -!BpJTm/X,trrB%Am/uPh!5>N6!rc96o=b:=8,\#=qYpTH-@u3Frr_bbJ^K8Q"24aPkhPP+eieN~> -!BU8Qkl@9drrAV5kl]u`!5>N6!rc96o=b:=8,\#=qYpTH-@u3Frr_hoO4K*d"24aPjP8u#c8pI~> -!B:&NirG%MrrA#$ire0T!5>N6!rc96o=b:=8,\#=qYpTH-@u3Frr_o&S_Jr""24aOhq[5m_`*)~> -!BpJTm/X-`rrBjNrrB%Am/iaW/ZJaNdUi$a"C3MsR/DO8r;Qeo+!\FDAh!G-n -4b*~> -!BU8Qkl@:PrrBjNrrAV5klR4P/ZJaNdUi$a"C3MsR/DO8r;Qeoh!"jb -3e.~> -!B:&NirG&9rrBjNrrA#$irYGF/ZJaNdUi$a"C3MsR/DO8r;QeoXY3q,G!\FD:guAFQ -2h1~> -!BpJTm/X-`rrE,8_Z'V8bO#?g!1Kkd!lerfpV$pHBu^1C6Pak!JcG`L!Hj*Is3L]JrP -!BU8Qkl@:PrrE,8_Z'V,bNT'b!1Kkd!lerfpV$pHBu^1C6Pak!JcG`L!Hj*Is3L]JrQ'l.q251R -RK,2"klK'jJ,~> -!B:&NirG&9rrE,8_Z'UpbMrX[!1Kkd!lerfpV$pHBu^1C6Pak!JcG`L!Hj*Is3L]JrQgnLqMP:S -RK,/!irR%VJ,~> -!BpJTm/X-`rrN07^r-0PWQa`3_Z1>BVuHhR>)`9k!fU= -!BU8Qkl@:PrrN07^r-0PS]p=#^]5#?VuHhR>)`9k!fU= -!B:&NirG&9rrN07^r-0PN6L;a])WK:VuHhR>)`9k!fU= -!BpJTm/X-`rrW8:'Ys>?!!)or!!(aQ!3+30!aPeJV#Lb2DdRaFO*Fu'V>:,pq5H^tG1qTK!>adJ -s3(EEhi!`^N;is$!+"FJ!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?!!)or!!(aQ!1h?u!a>YHV#Lb2DdRaFO*Fu+Vtp>rq5H^tG1qTK!>adJ -s3(EEig?D(N;is$!*e:D!R<`V~> -!B:&NirG&9rrW8:'Ys>?!!)or!!(aQ!0#.^!a,MFV#Lb2DdRaFO*Fu/WVQPtq5H^tG1qTK!>adJ -s3(EEk,#0GN;is$!*S. -!BpJTm/X-`rr`?%^_FTVrr<&rrr<&QrrB%Cm/u8S!SO1H#3O(Nk5W5hpAY -!BU8Qkl@:Prr`?%^_FTVrr<&rrr<&QrrAV7kl]]K!SO1H#3O(Nk5WK%pAYklK'jJ,~> -!B:&NirG&9rr`?%^_FTVrr<&rrr<&QrrA#&irdm@!SO1H#3O(Nk5W`6pAY -!BpJTm/X-`rriE&s1f>ap&>!lqu73-s8UnL$jT8bs8UnL$jT8blMgj`c0YRl!(!+S!r79.p&>3n -QldT>oni\L[7,ZHa8Z;7W.3"iO8f8I!0,k&!S0Da~> -!BU8Qkl@:PrriE&s1f>ap&>!lqu73-s8UnL$jT8bs8UnL$jT8blMgjTc05:e!(!+S!r@l@p&>3n -QldT>oni\L[7,ZHa8Z87ZAm7lrrPIdMVdRuc8pI~> -!B:&NirG&9rriE&s1f>ap&>!lqu73-s8UnL$jT8bs8UnL$jT8blMgjCc/Sk\!(!+S!rJGRp&>3n -QldT>oni\L[7,ZHa8Z88]:7E4rrPIdLYh%l_`*)~> -!BpJTm/X-`rr<&urrR`Op%JCc!;ld-!<<'L^@q&7=TACO^@q&7=R,ndWQjf3/HD];rrKd-o)Aj2 -:_nQGMuNg3Fb0S3rr_5?P3%f*!iH#MhX(?p4b*~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;ld-!<<'L^@q&7=TACO^@q&7=R,ndS^$C#/HD];rrL$?o)Aj2 -:_nQGMuNg3Fb0S3rr_>NT'2:9!iH#MhWY'd3e.~> -!B:&NirG&9rr<&urrR`Op%JCc!;ld-!<<'L^@q&7=TACO^@q&7=R,ndN6UAa.fcK9rrLcH!iH#KhW"XS2h1~> -!BpJTm/X-`rriE&s1f>ap&>!lqu6Wrqu6]i'`7n2ob?]k!3+92"2"UKpmV3apO);srrh"f&nfmW -rrH,rJcE[g"THGiXS.hW"8ET2]\i)WeieN~> -!BU8Qkl@:PrriE&s1f>ap&>!lqu6Wrqu6]i'`7n2ob?]k!1hF""1\CHpmV3apknM0rrh"f&nfmW -rrH,rJcE[g"THZ([eGsb"8ET2\_lWPc8pI~> -!B:&NirG&9rriE&s1f>ap&>!lqu6Wrqu6]i'`7n2ob?]k!0#4`"1/%CpmV3aq3gaBrrh"f&nfmW -rrH,rJcE[g"THl=^\Eul"8ET2[,9mE_`*)~> -!BpJTm/X-`rr`?%^_FTVrrE3!rVmK-!rr;@4UV5i!WW2?4UV5i!UB[bWQsl4>l\u6rrKU-n,EOU -Ihkl!O8f5-eUdb;rri"qIE;DOrrR9B?/P#MeieN~> -!BU8Qkl@:Prr`?%^_FTVrrE3!rVmK-!rr;@4UV5i!WW2?4UV5i!UB[bS^-I$>6&c4rrKm?n,EOU -Ihkl!O8f5-eUdb;rri&&N6_EdrrR9B>MnZGc8pI~> -!B:&NirG&9rr`?%^_FTVrrE3!rVmK-!rr;@4UV5i!WW2?4UV5i!UB[bN6^Gb=TEQ2rrL0Pn,EOU -Ihkl!O8f5-eUdb;rri)1RaqD$rrR9B=l86?_`*)~> -!BpJTm/X-`rrW8:'Ys>?!?TVdrt3R"s8O(;nG_tYs8O(;nG_tYlMgj`cg:hs$3AhIrrVk?mdC)Y -op-jFR/N6K!qQftJcEOc"65K(j-9QGf`;HBi9^Qr4b*~> -!BU8Qkl@:PrrW8:'Ys>?!?TVdrt3R"s8O(;nG_tYs8O(;nG_tYlMgjTcfkPk$3AhIrrVnNnF$;[ -op-jFR/N6K!qQftJcEOc"6Q,Dk*5lJf`;H>i9:9f3e.~> -!B:&NirG&9rrW8:'Ys>?!?TVdrt3R"s8O(;nG_tYs8O(;nG_tYlMgjCcf5,_$3AhIrrVq^o'ZM] -op-jFR/N6K!qQftJcEOc"6le`l'22Mf`;H8i8XjU2h1~> -!BpJTm/X-`rrN07_".LALGR!GprG7Is8Nb:pt\sNs8Nb:pt\sNlMgj`cg:du!'Z_K!OAfnrrrCj -5T5.6Q2^m(2M(nBrri>CI]E%*rrP@aPi1p0eieN~> -!BU8Qkl@:PrrN07_".LALGR!GprG7Is8Nb:pt\sNs8Nb:pt\sNlMgjTcfkLo!'Z_K!P>f,rrrCj -5T5.6Q2^m(2M(nArr^T+[.]db!^6UIi9:9f3e.~> -!B:&NirG&9rrN07_".LALGR!GprG7Is8Nb:pt\sNs8Nb:pt\sNlMgjCcf5(e!'Z_K!Q;b>rrrCj -5T5.6Q2^m(2M(nArr^f@^%[fl!^6UEi8XjU2h1~> -!BpJTm/X-`rrE,8nc'F)Ot?nD/X$,5s0 -!BU8Qkl@:PrrE,8nc'F)Ot?nD/X$,5s0 -!B:&NirG&9rrE,8nc'F)Ot?nD/X$,5s0 -!BpJTm/X-`rrBjNrrB%Fm/tZ8$LsD]!Nr]krrqtY.k?nURf -!BU8Qkl@:PrrBjNrrAV:kl]-1$LsD]!OoZ(rrqtY.k?nURf -!B:&NirG&9rrBjNrrA#)ird=&$LsD]!PlS9rrqtY.k?nURf -!BpJTm/X,trrB%Fm/hM4>Eo-hmsF]irrrD:<>'&rSGrU6eq*k3rri>FJ#Dn+rrQC)GiA#jeieN~> -!BU8Qkl@9drrAV:klQ#.>Eo-hnVQu&rrrD:<>'&rSGrU6eq*k2rr^Z.Z1XOb!a>YJiTUBg3e.~> -!B:&NirG%MrrA#)irX9%>Eo-ho9f:8rrrD:<>'&rSGrU6eq*k2rr^lC]CqZm!a>YGiSssV2h1~> -!BpJTm/X,trrB%Gm/u\t!4nBo!NNQgrrqM6)F0bjT`5)T'`N[`\,QU*Y^F@eS,WT%!$LXfm/bd$ -J,~> -!BU8Qkl@9drrAV;kl^,l!4nBo!OKN$rrqM6)F0bjT`5)T'`N[`\,QU+\VnW0S,WT%!$LLbklK'j -J,~> -!B:&NirG%MrrA#*ire9_!4nBo!PQM6rrqM6)F0bjT`5)T'`N[`\,QU,_4&dNS,WT%!$C4[irR%V -J,~> -!BpJTm/X,trrB%Gm/s`r*W;3%!pt@/j8T;]Ql[TCpS.ZgWDA*F[/U6kQ&FLhrr`3?!4ChR!S0Da~> -!BU8Qkl@9drrAV;kl\3k*W;3%!q2$Aj8T;]Ql[TCpS.ZgWDA*F[/U6nTpXi0rr`3?!4(VK!R<`V~> -!B:&NirG%MrrA#*ircFa*W;3%!qD]Rj8T;]Ql[TCpS.ZgWDA*F[/U6pXek-Lrr`3?!3Y>A!Q-jH~> -!BpJTm/X,trrB%Gm/gSoH'/+-V7PUb"Mm_KL@:rQ -eieN~> -!BU8Qkl@9drrAV;klP,jH'/+-YJT5t"Mm_KL@:r -!B:&NirG%MrrA#*irWBaH'/+-\]Wk1"Mm_KL@:r2nQC -_`*)~> -!BpJTm/X,trrB%Hm/uPb!7R)1!pP+.hu -!BU8Qkl@9drrAV\nrsA48 -!B:&NirG%MrrA#+ire0N!7R)1!q)NRhu -!BpJTm/X,trrB%Hm/j3d/ -!BU8Qkl@9drrAV -!B:&NirG%MrrA#+irYnS/ -!BpJTm/X,trrB%Hm/g;gKTH-7ja[0_rrheF),%fHrrKVpJcDhO"jqprn:lnr^&a1IYQ"ZW!*8.I -!S0Da~> -!BU8Qkl@9drrAV -!B:&NirG%MrrA#+irW*YKTH-7l^Rh-rrheF),%fHrrKVpJcDhO"l#WXo7i4u^&a1IYQ"ZW!)hk; -!Q-jH~> -!BpJTm/X,tmJs68m/uJ[!8EP6!M%']rrr.c-6AKLY5eNLJcDeN"8T?2KCuqZKse/b"5 -!BU8Qkl@9dmJrg,kl]oS!8EP6!N4)orrr.c-6AKLY5eNLJcDeN"8]`EKCuqZKse/b"5) -c8pI~> -!B:&NirG%MmJr3pire'F!8EP6!OC,,rrr.c-6AKLY5eNLJcDeN"8g)XKCuqZKse/b"5 -!BpJTm/X,tmJs68m/is]23%V;iIUp[rs&Ik8e,+8qm$/%5e)CFWrE+q=nB?.?2:`)!]9tOjR!!! -4b*~> -!BU8Qkl@9dmJrg,klRFV23%V;jcB>mrs&Ik8e,+8qm$/%5e)CFWrE+q>4]H/?2:`)!]9tLjQQ]j -3e.~> -!B:&NirG%MmJr3pirYYL23%V;kahY)rs&Ik8e,+8qm$/%5e)CFWrE+q>4]H/?2:`)!]9tHjPp9Y -2h1~> -!BpJTm/X,tmJs68m/g&`NK!l -!BU8Qkl@9dmJrg,klOQZNK!l -!B:&NirG%MmJr3pirVjRNK!l -!BpJTm/X,tmJs69m/uGV!99%0]lC:V"60@f -jlPk1eieN~> -!BU8Qkl@9dmJrg-kl]lN!99%0]lC:V"60@f -iT9;)c8pI~> -!B:&NirG%MmJr3qire$B!99%0]lC:V"60@f -gZ@Gr_`*)~> -!BpJTm/X,tmJs69m/j!^3/[_:PK_GS"j1a#30WX=rrJ$pJcD_L!-%hL!!*#4!WWC"rk8AOYQ"Y` -!2ATB!S0Da~> -!BU8Qkl@9dmJrg-klRIW3/[_:T@2-e"j1a#30WX=rrJ$pJcD_L!-%hL!!*#4!WWC"rk8AOYQ"Y` -!2&B;!R<`V~> -!B:&NirG%MmJr3qirY\M3/[_:X4Yi""j1a#30WX=rrJ$pJcD_L!-%hL!!*#4!WWC"rk8AOYQ"Y` -!1W*1!Q-jH~> -!BpJTm/X-`mJsT0mJs69m/g;gM2M<7fSBIQrs&A0>RjAmr4W+2:T8pFWW)s;qn<77^:mk[!! -!BU8Qkl@:PmJsT0mJrg-klOibM2M<7h3Iudrs&A0>RjAmr4W+2:T8pFWW)s;qn<77^:mk[!! -!B:&NirG&9mJsT0mJr3qirW*YM2M<7iM-=urs&A0>RjAmr4W+2:T8pFWW)s;qn<77^:mk[!! -!BpJTm/X-`mK! -!BU8Qkl@:PmK!e`d1s%fk=?rrJV?c2RtDPsZ=1g;*^irY4IFs/H#!EP;:a -$37fS"dkMS^:q:#YQ"^Y!"\/QklK'jJ,~> -!B:&NirG&9mK! -!BpJTm/X-`mK*A%ZfpfW!;c*`!9NVKWR^A;XT0o.rrU].rlbquYa,.# -$37fS:'F;k^:ol:Y5\PS!3PDN!S0Da~> -!BU8Qkl@:PmK*A%ZfpfW!;c*`!9NVKS^ls+WW4T+rrLf?b5VY!Fr*NFq8<45efo\FW;cn&Q2J?' -!5?0B"\\p1^6Pq*rrO_OWoiOHc8pI~> -!B:&NirG&9mK*A%ZfpfW!;c*`!9NVKN7HqiV>r0'rrLuQb5VY!Fr*NFq8<45efo\FW;cn&Q2J?' -!5?0B"\\p1^6Pq*rrO_OVWQn>_`*)~> -!BpJTm/X-`mK3I)'=7;u!!)oa!s%cW!;c*`!9NVKWR^A;@/t_3rrW1We]Igpq5H^tG1sq8!Ld>G -s/>quq-EU+!F>N(rrRTK@HQqXeieN~> -!BU8Qkl@:PmK3I)'=7;u!!)oa!s%cW!;c*`!9NVKS^ls+?iYV1rrJJ?ao;P?WC%JFg;X'mRU1RF -W;cno?1Yc2?2:Z'!dt&Vk32ol3e.~> -!B:&NirG&9mK3I)'=7;u!!)oa!s%cW!;c*`!9NVKN7Hqi>l];.rrJqPao;P?WC%JFg;X'mRU1RF -W;cno?1Yc2?2:Z'!dt&Sk2QK[2h1~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;Sp$Me[qsG!qmd:()'a\+-md:()'a\+-lL"YOf'NOO!#p[m!rdu/`W$,; -WC%JFg<9Ktr"S4Cs/>r"]FdkspV$ZeL9(=U)Z[P6m/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsG!qmd:()'a\+-md:()'a\+-lL"YCf'*7H!#p[m!reG@`W$,; -WC%JFg<9Ktr"S4Cs/>r"]FdkspV$ZeL9(=U)Z[G3klK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsG!qmd:()'a\+-md:()'a\+-lL"Y2f&Hh=!#p[m!reqR`W$,; -WC%JFg<9Ktr"S4Cs/>r"]FdkspV$ZeL9(=U)Z[8.irR%VJ,~> -!BpJTm/X-`mJm7drrR`OjnA*B!;l0q!:K7T7G6?]Dsm#n7G6?]DsH`jWRgG -!BU8Qkl@:PmJm7drrR`OjnA*B!;l0q!:K7T7G6?]Dsm#n7G6?]DsH`jS_!$,F9$'0rrLN?_Z'en -Fr!H/p -!B:&NirG&9mJm7drrR`OjnA*B!;l0q!:K7T7G6?]Dsm#n7G6?]DsH`jN7R"jE<'a-rrL`Q_Z'en -Fr!H/p -!BpJTm/X-`mKEUjs1f;Sp$Me[qsG!qmd:)!mdA7:md:)!mdA7:lL"YOf'NMn!4@O\!r[c._>a`; -QVn/WOl4Xe!J5EEs/Q)$\fYPSrr3;pEE.4=O)%Q^l)F[a[/_rEm/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsG!qmd:)!mdA7:md:)!mdA7:lL"YCf'*5i!4@O\!r\8@_>a`; -QVn/WOl4Xe!J5EEs/Q)$\fYPSrr3;pEE.4=O).WdlDadb[/_oDklK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsG!qmd:)!mdA7:md:)!mdA7:lL"Y2f&Hfb!4@O\!r\bQ_>a`; -QVn/WOl4Xe!J5EEs/Q)$\fYPSrr3;pEE.4=O)7`jl`'mc[/_lCirR%VJ,~> -!BpJTm/X-`mKCTWRpM>fE)BQK`;(nRD/\* -p9A'A14dj&rrG3mJcDhO"7]tF](u@1kKC]$d%\:Srr_s$!nc`(!S0Da~> -!BU8Qkl@:PmKCTS_**.e,fsMK`;(tUqZj5 -p9A'A14dj&rrG3mJcDhO"7]tF](u@1kKC].eZHijrr_s$!n?Gu!R<`V~> -!B:&NirG&9mKCTN7[(lcN4FHK`;)%YeL,A -p9A'A14dj&rrG3mJcDhO"7]tF](u@1kKC]8g:,>+rr_s$!mg)j!Q-jH~> -!BpJTm/X-`mK3I)'=7;u!?AuTmLd8Vmd:)!mdA7:md:)!mdA7:lL"YOfBiX)!(qnD!rRT/]`/67 -_/UYCEP_S1rs8V8H#R;>Xq(2Ws/l;'\fYPSp&>0,Z/gH5WW*#l!0ud8!S0Da~> -!BU8Qkl@:PmK3I)'=7;u!?AuTmLd8Vmd:)!mdA7:md:)!mdA7:lL"YCfBE@#!(qnD!rS)@]`/67 -_/UYCEP_S1rs8V8H#R;>Xq(2Ws/l;'\fYPSp&>04]'#+OWW*#l!0cX2!R<`V~> -!B:&NirG&9mK3I)'=7;u!?AuTmLd8Vmd:)!mdA7:md:)!mdA7:lL"Y2fAcpn!(qnD!rSVR]`/67 -_/UYCEP_S1rs8V8H#R;>Xq(2Ws/l;'\fYPSp&>0<_Wm]iWW*#l!0?@(!Q-jH~> -!BpJTm/X-`mK*A%Zh!N#IPA@rkIWEtmd:'Fg=\o5md:'Fg=\o5lL"YOfBiW9!0i*8!Q(D;rs$l% -1)49'p>c/ZbZg(?^:q:>3m<0TYQ"^pAfnVUrrh&=s-Lm-rrSDb;!@9IeieN~> -!BU8Qkl@:PmK*A%Zh!N#IPA@rkIWEtmd:'Fg=\o5md:'Fg=\o5lL"YCfBE?3!0i*8!Qh:Mrs$l% -1)49'p>c/ZbZg(?^:q:>3m<0TYQ"^pAfnVUrrh2Ms.[l>rrSDb:?^pCc8pI~> -!B:&NirG&9mK*A%Zh!N#IPA@rkIWEtmd:'Fg=\o5md:'Fg=\o5lL"Y2fAcp+!0i*8!RS0_rs$l% -1)49'p>c/ZbZg(?^:q:>3m<0TYQ"^pAfnVUrrh>]s/sqPrrSDb9^(L;_`*)~> -!BpJTm/X-`mK!-!r@B.[f6Qi -O[9CQP4[r;!Kqm,^&`YFJcE"T"25F\nac\`pNQSgM>jOT"5X"gl07R9eieN~> -!BU8Qkl@:PmK!-!rIr@[f6Qi -O[9CQP4[r;!Kqm,^&`YFJcE"T"25F\nac\_pkJb'QDsldh>e)Jl0/5o3e.~> -!B:&NirG&9mK!-!rJJR[f6Qi -O[9CQP4[r;!Kqm,^&`YFJcE"T"25F\nac\_q3Cp;UT+7qh>e&Cl/Mf^2h1~> -!BpJTm/X-`mJsT0mJs6=m/j]r.=qL#s1Y56rs/7]<=1[:c2R)0!KN99^&a=UJcE+W"8?aI^$kt( -LueSoeuAZN.0-g@m/bd$J,~> -!BU8Qkl@:PmJsT0mJrg1klS0k.=qL#s2D(Grs/7]<=1[:c2R)0!KN99^&a=UJcE+W"8?aI^$kt( -Q0817g8Y)R.0-^=klK'jJ,~> -!B:&NirG&9mJsT0mJr3uirZCa.=qL#s3.sYrs/7]<=1[:c2R)0!KN99^&a=UJcE+W"8?aI^$kt( -U[%lUhl6VW.0-R9irR%VJ,~> -!BpJTm/X,tmJs6=m/hJ3D1V]hs7h!,Z2Y(*^2k\@A?YUorrL#aotCHR_h%irrr^V!=7,GU"K'0< -c'54-!c7p]l0SN&4b*~> -!BU8Qkl@9dmJrg1klPu-D1V]hs7qT>Z2Y(*^2k\@A?YUorrL#aotCHR_h%irrr^V!=7,GU"L-,M -d\*T>!c7p[l0/5o3e.~> -!B:&NirG%MmJr3uirX6$D1V]hs8&2QZ2Y(*^2k\@A?YUorrL#aotCHR_h%irrr^V!=7,GU"M3%] -fW;(P!c7pXl/Mf^2h1~> -!BpJTm/X,tmJs6=m/f6IZ%;rTrrK[-XoAU\O[]gMOkfU/!r?08otCL@>l'$O\c2d1MADuRrrpB= -s8@N-WrE.*!''61!S0Da~> -!BU8Qkl@9dmJrg1klNgEZ%;rTrrKs?XoAU\O[]gMOkfU/!r?08otCL@>l'$O\c2d1MADuRrrpWN -s8A#?WrE.*!''6-!R<`V~> -!B:&NirG%MmJr3uirV+=Z%;rTrrL6QXoAU\O[]gMOkfU/!r?08otCL@>l'$O\c2d1MADuRrrpi^ -s8AMPWrE.*!&j*%!Q-jH~> -!BpJTm/X,tmJs6>m/u>O"Rq!Bs8N/oHgRm6#P5-0)CT[@qY:'kU7_%k!M?*;s1844i'0Hali..L -M#[LkT;qnnn,rpSlKnW'4b*~> -!BU8Qkl@9dmJrg2kl]cG"Rq!Bs8N/pMXRVG#P5-0)CT[@qY:'kU7_%k!M?*;s1844i'0Hali..O -Q2gm*WiH($n,rpOlKJ>p3e.~> -!B:&NirG%MmJr4!irdp:"Rq!Bs8N/qRIR?X#P5-0)CT[@qY:'kU7_%k!M?*;s1844i'0Hali..R -U]:A?[As6/n,rmHlJho_2h1~> -!BpJTm/X,tmJs6>m/j3d3._,.rrKL-W;d,%c%7k] -!BU8Qkl@9dmJrg2klR^^3._,.rrKg?W;d,%c%7k]p3e.~> -!B:&NirG%MmJr4!irYnS3._,.rrL*QW;d,%c%7k] -!BpJTm/X,tmJs6>m/h#&I"D=rrrVe6-loTE2]2hKs0\o-rrRQJC?k0eeieN~> -!BU8Qkl@9dmJrg2klPMuI"D=rrrVkMntl?noTE2]2hK -!B:&NirG%MmJr4!irWclI"D=rrrVn]oVMQpoTE2]2hK -!BpJTm/X,tmJs6>m/ed<^OcF_rrK@-UAkJp^2k\@A9OI@^'=YP^::%`*)-=F!Lp$=s1eR9^CkM[ -k5PXi]Dqp%HLn3;!l"^clKnW'4b*~> -!BU8Qkl@9dmJrg2klN=7^OcF_rrK[?UAkJp^2k\@A9OI@^'=YP^::%`*)-=F!Lp$=s1eR9^CkM[ -k5PXr_uKc/M=mqL!l"^blKJ>p3e.~> -!B:&NirG%MmJr4!irUY0^OcF_s8Tp0rs/D7F!qr;G+8HE#6;KP\>FEh9`;[+S#Co<^]+DN&odU- -rs$?`s8VbZp8e2p^Ao_JirR%VJ,~> -!BpJTm/X,tmJs6?m/u/F$N#DSr;QifHLmd/"5K"q^&>YF!;sP4[30hq^&boiJcERd"8[9T^?#:p -d%(+8!NEQ/rr`-*!T!)/!S0Da~> -!BU8Qkl@9dmJrg3kl]W?$N#DSr;QihM=mM@"5K"q^&>YF!;sP4[30hq^&boiJcERd"8[9T^?#:p -eYiEH!OKPArr`-*!SZl(!R<`V~> -!B:&NirG%MmJr4"irdd3$N#DSr;QijR.d0P"5K"q^&>YF!;sP4[30hq^&boiJcERd"8[9T^?#:p -g9U_X!PHIRrr`-*!S$Gq!Q-jH~> -!BpJTm/X,trrB%Pm/j$_6%T(4rrK1-Sc8\1r4W.2qn<)]1&\fdEe48-rr_+;9BtR;!UbF9rrVJ5 -q5aMs5ld\Gm/bd$J,~> -!BU8Qkl@9drrAVDklRLX6%T(4rrKO?Sc8\1r4W.2qn<)]1&\fdEe48-rr_+;9BtR;!Uu'IrrVPF -qQ'Vt5ldSDklK'jJ,~> -!B:&NirG%MrrA#3irY_N6%T(4rrKjPSc8\1r4W.2qn<)]1&\fdEe48-rr_+;9BtR;!V2`ZrrVYX -qlB_u5ldG@irR%VJ,~> -!BpJTm/X,trrB%Pm/h#&IY%OqrrVV8p7D9aE;[EM!;jJ2XUb -!BU8Qkl@9drrAVDklPQ!IY%OqrrV\HpR_BbE;[EM!;jJ2XUb -!B:&NirG%MrrA#3irWfmIY%OqrrVbYpn%KcE;[EM!;jJ2XUb -!BpJTm/X,trrB%Pm/f$C]7L"XrrK%.T)Se0r4W.2qn<*C!r]h5E.S&.rr_n%-dLWL!M%O9rrV,2 -rN-##])XVPm/bd$J,~> -!BU8Qkl@9drrAVDklNR>]7L"XrrKC?T)Se0r4W.2qn<*C!r]h5E.S&.rr_n%-dLWL!N4KIrrV5C -riH,$])XSOklK'jJ,~> -!B:&NirG%MrrA#3irUn7]7L"XrrK^PT)Se0r4W.2qn<*C!r]h5E.S&.rr_n%-dLWL!OCGYrrVAU -riH,$])XPNirR%VJ,~> -!BpJTm/X,trrB%Qm/uAP"S73Eq>UN]I/'?6!-8"O!!)o1!Nck1^&W2)s2P'@c6m&mhZ!VgZ2O\' -P0^60"7lX!j6Z.6eieN~> -!BU8Qkl@9drrAVEkl]fH"S73Eq>UN`MYWnE!-8"O!!)o1!Nck1^&W2)s2P'@c6m&mhZ!Vo])DX0 -T%'kA"7lX!hsBS.c8pI~> -!B:&NirG%MrrA#4irds;"S73Eq>UNbRJEKT!-8"O!!)o1!Nck1^&W2)s2P'@c6m&mhZ!W"_YsK8 -WnOQS"7lWug$I`"_`*)~> -!BpJTm/X,trrB%Qm/jEj21bf%rrJk-TDnq7^&>YF!;jJ2J27, -!BU8Qkl@9drrAVEklRmc21bf%rrK7?TDnq7^&>YF!;jJ2J27, -!B:&NirG%MrrA#4irZ+Y21bf%rrKUQTDnq7^&>YF!;jJ2J27, -!BpJTm/X-`rrBjNrrB%Qm/hG2Ee48brrVA4qOmihW13b"!!)r2!js2!rk8E&W.Fujrr_OZ38WEi -!r$p;rr3'!LYJp1!ce9am-Oi)4b*~> -!BU8Qkl@:PrrBjNrrAVEklPr,Ee48brrVJEqk3riW13b"!!)r2!js2!rk8E&W.Fujrr_OZ38WEi -!r.NKrr3'!Pi&SB!ce9_m-+Pr3e.~> -!B:&NirG&9rrBjNrrA#4irX3#Ee48brrVPVqk3riW13b"!!)r2!js2!rk8E&W.Fujrr_OZ38WEi -!r8,[rr3'!U>r?T!ce9\m,J,a2h1~> -!BpJTm/X-`rrE,8_Z'V8g[,&,!3^tRpAY/b_P$o0k&gR9#6;KP\YaQk9`;[+FQS/Sb5VR\&pa?, -rrIo9rVlo>RB6DiY5gfRm/bd$J,~> -!BU8Qkl@:PrrE,8_Z'V,gZ\c'!3^tRpAY/maIrP6k&gR9#6;KP\YaQk9`;[+FQS/Sb5VR\&pa?, -rrJDJrVloDUoaRtY5gcQklK'jJ,~> -!B:&NirG&9rrE,8_Z'UpgZ&>t!3^tRpAY0#c_1:=k&gR9#6;KP\YaQk9`;[+FQS/Sb5VR\&pa?, -rrJkZrVloKYcRj+Y5g]OirR%VJ,~> -!BpJTm/X-`rrN07^r-0PWSHkClOEpWJcGHD!onh.T`5"(rP&72!sTT-M>Y'fAqC!)rrSDr^XrJd -VT&N6!rIK0XoALc!"S>^m/bd$J,~> -!BU8Qkl@:PrrN07^r-0PS_WH3k7.LSJcGHD!p5O@T`5"(rP&72!sTT-M>Y'fAqC!)rrSDr^XrJd -Yg!(G!rS&BXoALc!"S2ZklK'jJ,~> -!B:&NirG&9rrN07^r-0PN83Fqi=,eLJcGHD!pQ9RT`5"(rP&72!sTT-M>Y'fAqC!)rrSDr^XrJd -]$gQW!rSPRXoALc!"IoSirR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?rr<0&%PW+lg&D&Oh!G0`!$6^ko`"r[`h<>4U7_%k!M?*;s31KFq.;57 -f)GciVYpGp]qhb0!Zh?^mHjr*4b*~> -!BU8Qkl@:PrrW8:'Ys>?rr<0&%PW+lg&D&Ch!"mY!$6^ko`"rgbb4t:U7_%k!M?*;s31KFq.;57 -f)GcpYl+M%`3-3A!Zh?[mHFYs3e.~> -!B:&NirG&9rrW8:'Ys>?rr<0&%PW+lg&D&2guAIN!$6^ko`"rre"H^AU7_%k!M?*;s31KFq.;57 -f)Gd!]);R/bIFYR!Zh?VmGe5b2h1~> -!BpJTm/X-`rr`?%^_FTVrs&Q(s7FQQ)W09K!3+c@!gNabJcGBB!oJY/U&P2j>eTgE!khk8JcF!p -"6hsFo@ -!BU8Qkl@:Prr`?%^_FTVrs&Q(s7FQQ)W09K!1hp0!geTgE!khk8JcF!p -"6hsFo@ -!B:&NirG&9rr`?%^_FTVrs&Q(s7FQQ)W09K!0#^n!fm=\JcGBB!p6-RU&P2j>eTgE!khk8JcF!p -"6hsFo@ -!BpJTm/X-`rriE&s1f>ap&>!lr;R(P>lXi[9ah7rkMlLAWSHkB@K;::s7?6kQ-,d"!Q09W^&`Su -JcF!p"4&* -!BU8Qkl@:PrriE&s1f>ap&>!lr;R(P>lXi[9ah7rkMlLAS_WH2?iZ(8s7?6kU!TJ4!Q09W^&`Su -JcF!p"4&* -!B:&NirG&9rriE&s1f>ap&>!lr;R(P>lXi[9ah7rkMlLAN83Fp?3#k6s7?6kXk'0F!Q09W^&`Su -JcF!p"4&* -!BpJTm/X-`rr<&urrR`Op%JCc!;uj'iY_^q/&(`HDcl$!!3+c@!\XPhJcG?A!nrD.T`5%QOS?Hi -KPc;?c2RjF(95d^!Ku17rrVY9p9+Ds^]6%Tm/bd$J,~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;uj'iY_^q/&(`HDcl$!!1hp0!\OJgJcG?A!oB1@T`5%QOS?Hi -KPc;?c2RjF(95d^!M80GrrV_IpTFMt^]6"SklK'jJ,~> -!B:&NirG&9rr<&urrR`Op%JCc!;uj'iY_^q/&(`HDcl$!!0#^n!\FDfJcG?A!ofpQT`5%QOS?Hi -KPc;?c2RjF(95d^!NP/WrrVeZpoaVu^]5tRirR%VJ,~> -!BpJTm/X-`rriE&s1f>ap&>!lr;Qfo"oJ<#ob?Ec!3+fA"6Kaho7?r4rrJ5-TDnqTIJLSZI;g:u -JcF*s"9!Wjcd;[mYe0f4!N!K4rr_ip"m57?!S0Da~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;Qfo"oJ<#ob?Ec!1hs1"6'Ido7?r4rrJ\?TDnqTIJLSZI;g:u -JcF*s"9!Wjcd;[m\\n=E!O'GErr_ip"let7!R<`V~> -!B:&NirG&9rriE&s1f>ap&>!lr;Qfo"oJ<#ob?Ec!0#ao"5F"]o7?r4rrK+QTDnqTIJLSZI;g:u -JcF*s"9!Wjcd;[m_TViV!P-CVrr_ip"PiG*!Q-jH~> -!BpJTm/X-`rr`?%^_FTVrr<&srs@X$s8U,&$NL/-ir9"Xh -!BU8Qkl@:Prr`?%^_FTVrr<&srs@X$s8U,&$NL/-ir9"Lh<>!L!%rj&nc&XDQ_+3cbZg(?^:q:? ->Km+ZAqC!0rr_jh4mC;m!S++FrrVDDr3$&$/c`?JklK'jJ,~> -!B:&NirG&9rr`?%^_FTVrr<&srs@X$s8U,&$NL/-ir9";h;\RA!%rj&nc&XIUn7SpbZg(?^:q:? ->Km+ZAqC!0rr_jh4mC;m!SXjVrrVMVr3$&$/c`0EirR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?!!)rs$%6%XruA!,rpg'KrrB%Sm/i7I?\/7IrrW1Ye"6RJrjmAoE-]%o -s8VU2`.@s;rr_(/B)0aP!UbF5rrJJ/Y5\Q1!0-F6!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?!!)rs$%6%XruA!,rpg'KrrAVGklQ_B?\/7HrrJP?T)T5u\p876H+O"T -s7%2LJcF4!"5PP@q9K!@n;R5D!Me#ErrQO-MXK^0c8pI~> -!B:&NirG&9rrW8:'Ys>?!!)rs$%6%XruA!,rpg'KrrA#6irXu9?\/7HrrK"QT)T5u\p876H+O"T -s7%2LJcF4!"5PP@q9K!@nsfLU!Nt"VrrQO-L[O1'_`*)~> -!BpJTm/X-`rrN07_".L9!<<)lc#+BSs8Nb:pt\sNir9"Xh -!BU8Qkl@:PrrN07_".L9!<<)lc#+BSs8Nb:pt\sNir9"Lh<=uI!0;^2nG`O?S!3jRZmbd%s4.,N -_@`$UrrJ)Jqu6]PQ`g>iNrWMSklK'jJ,~> -!B:&NirG&9rrN07_".L9!<<)lc#+BSs8Nb:pt\sNir9";h;\Q@!0;^2nG`ODVj%,^Zmbd%s4.,N -_@`$UrrJSZqu6]TUos_!NrWDPirR%VJ,~> -!BpJTm/X-`rrE,8nc/Uh"9AoaFm/i)"gT?U+dN,frrB%Sm/f'D^OcFSrrW1UfTZ=98 -&]2]j!M%O6rrW1VfrtDW^Ap(Xm/bd$J,~> -!BU8Qkl@:PrrE,8nc/Uh"9AoaFm/i)"gT?U+dN,frrAVGklNU?^OcFSrrW1bglqa=8 -&]2]j!N4KErrJGAYQ"[=!&F!,!R<`V~> -!B:&NirG&9rrE,8nc/Uh"9AoaFm/i)"gT?U+dN,frrA#6irUq8^OcFSrrW1piKO9B8 -&]2]j!OCGUrrJqTYQ"[=!& -!BpJTm/X-`rrBjNrrB%Tm/uV[!UbO=n,EF5PEZ"JeJ@M&s4RDSr,*t -!BU8Qkl@:PrrBjNrrAVHkl^&S!UbO=n,EF:T9K9VeJ@M&s4RDSr,*t -!B:&NirG&9rrBjNrrA#7ire3G!UbO=n,EF@X- -!BpJTm/X,trrB%Tm/k?/++aI[rrW.Qglqd -!BU8Qkl@9drrAVHklSg(++aI[rrW1_i043@Ck;W?rr_a\8+=V"!T'FErrW+Xl*(*g*rs:KklK'j -J,~> -!B:&NirG%MrrA#7ir[!r++aI[rrW1mjHKWDCk;W?rr_a\8+=V"!TL-UrrW+fm'$Ej*rs+FirR%V -J,~> -!BpJTm/X,trrB%Tm/idX:P&Q5rrL3-PQ(^N(=e!9h#@K2.;o((rrVq=rVHNp];De3!`&fdn*L/, -4b*~> -!BU8Qkl@9drrAVHklR7Q:P&Q5rrLE?PQ(^N(=e!9h#@K2.;o((rrVtMrVHNp_Q^6D!`&fan*'ku -3e.~> -!B:&NirG%MrrA#7irYJG:P&Q5rrLZQPQ(^N(=e!9h#@K2.;o((rrW"^rVHNpb.=eV!`&f]n)FGd -2h1~> -!BpJTm/X,trrB%Tm/h2+It@XerrW+LiKO9BO[t''h>[Pj(n&>B!Jfb4rrVk>o!&,qIfOEUm/bd$ -J,~> -!BU8Qkl@9drrAVHklP]%It@XerrW.[jHKTEO[t''h>[Pj(n&>B!L;jErrVnNo -!B:&NirG%MrrA#7irWrqIt@XerrW.ik`c#IO[t''h>[Pj(n&>B!M\lUrrVq^os"GtIfO6PirR%V -J,~> -!BpJTm/X,trrB%Tm/ffYX+C<;rrL'.PQ(^\.(+X+hu -!BU8Qkl@9drrAVHklO?TX+C<;rrL9?PQ(^\.(+X+hu -!B:&NirG%MrrA#7irVXLX+C<;rrLNQPQ(^\.(+X+hu -!BpJTm/X,trrB%Tm/eF2e:IYdrrW(Ijcf]G[4(m&s5O%\r,*t<_Z'YUVtp>ol[8N5rrU[M+n+e! -eieN~> -!BU8Qkl@9drrAVHklN".e:IYdrrW(Wk`c#J[4(m&s5O%\r,*t<_Z'Y\Z2+D$m>CbFrrU[M+n+Xr -c8pI~> -!B:&NirG%MrrA#7irU>'e:IYdrrW+fl]_>M[4(m&s5O%\r,*t<_Z'Yb](u@-n!X'XrrU[M+Re=k -_`*)~> -!BpJTm/X,trrB%Um/uJQ"SmWKli."#TT] -!BU8Qkl@9drrAVIkl]oI"SmWKli."*X-3J`8 -!B:&NirG%MrrA#8ire'="SmWKli."2[?COj8 -!BpJTm/X,trrB%Um/k-)."VE`rrW"El'),KeJ@M&s5j7_gF7%<_#FK6G51n5!oAV0Z2XkR!5e6m -!S0Da~> -!BU8Qkl@9drrAVIklSU"."VE`rrW%Tl]_>MeJ@M&s5j7_gF7%<_#FK7L&(QE!ofCBZ2XkR!5J$f -!R<`V~> -!B:&NirG%MrrA#8irZdl."VE`rrW%cmZ[YPeJ@M&s5j7_gF7%<_#FK7Q2:=V!p-*SZ2XkR!4q[[ -!Q-jH~> -!BpJTm/X,tmJs6Dm/idX;1\c3rrKa.P5kPuJcFm4!l>P;^&J+oh>%!NO4(<5!`8rfnEg8-4b*~> -!BU8Qkl@9dmJrg8klR7Q;1\c3rrL!?P5kPuJcFm4!l>P;^&J,'iV -!B:&NirG%MmJr4'irYJG;1\c3rrL9QP5kPuJcFm4!l>P;^&J,3jnSiVW8+ZX!`8r_nDaPe2h1~> -!BpJTm/X,tmJs6Dm/hD1H@c+\rrVqAm$%GNlk\-&s60IaR1[ -!BU8Qkl@9dmJrg8klPo+H@c+\rrVtQmZ[YPlk\-&s60IaR1[ -!B:&NirG%MmJr4'irX0"H@c+\rrVt`n< -!BpJTm/X,tmJs6Dm/g&`UOiI/rrKR-P5bQF8:gg+rr`1:.GMK7!Qq/3rrW.Ni3N@aUB"*Zm/bd$ -J,~> -!BU8Qkl@9dmJrg8klOQZUOiI/rrKj?P5bQF8:gg+rr`1:.GMK7!RRqCrrW1]jKedeUB"$XklK'j -J,~> -!B:&NirG%MmJr4'irVjRUOiI/rrL-PP5bQF8:gg+rr`1:.GMK7!S4aTrrW1kkHb*hUB!sVirR%V -J,~> -!BpJTm/X,tmJs6Dm/eg=b(9TVrrVh>n!!bQqC&b&s6Tafn4-"<])MfpK_PKI_On.6!m1KonEg8- -4b*~> -!BU8Qkl@9dmJrg8klNC9b(9TVrrVnNnWWtSqC&b&s6Tafn4-"<])MfsP5"tWaJuQG!m1KonEBu! -3e.~> -!B:&NirG%MmJr4'irU_2b(9TVrrVq^o991UqC&b&s6Tafn4-"<])MfuT_JHecaC(Y!m1KnnDaPe -2h1~> -!BpJTm/X,tmJs6Dm/d[rm=G<#rrKC,P5bTk./JMpmf*CD.;o'orrW1Ep%\Ogpj;D7rrVQf%.NWb -eieN~> -!BU8Qkl@9dmJrg8klM7nm=G<#rrK^?P5bTk./JMpmf*CD.;o'orrW1TpA"Xhq24XIrrVQf%.NK^ -c8pI~> -!B:&NirG%MmJr4'irTVhm=G<#rrL$QP5bTk./JMpmf*CD.;o'orrW1cp\=aiqO-l[rrVQf%.N9X -_`*)~> -!BpJTm/X-`mJsT0mJs6Em/kr@&V9uErrVb;nrj"R8 -!BU8Qkl@:PmJsT0mJrg9klTB8&V9uErrVeKoTK4T8 -!B:&NirG&9mJsT0mJr4(ir[O,&V9uErrVk\oof=U8 -!BpJTm/X-`mK! -!BU8Qkl@:PmK!+@V -!]0nbn`^)"3e.~> -!B:&NirG&9mK! -!BpJTm/X-`mK*A%ZfpfW!8[&CWSm.FQiL3=s5j7^msF_js8Qnds7?6mr,*t<[/U0QSbE'aV7j58 -!`oAhna-A.4b*~> -!BU8Qkl@:PmK*A%ZfpfW!8[&CS`&`6PlOm:s5j7^nVQt&s8Qnds7?6mr,*t<[/U0VW:p5lYJddI -!`oAen`^)"3e.~> -!B:&NirG&9mK*A%ZfpfW!8[&CN8W^tOT8I6s5j7^nsK07s8Qnds7?6mr,*t<[/U0\ZhFD"\]hD[ -!`oAan`'Yf2h1~> -!BpJTm/X-`mK3I)'=7;urr<0&%4uMPrpBadh -!BU8Qkl@:PmK3I)'=7;urr<0&%4uMPrpBadh -!B:&NirG&9mK3I)'=7;urr<0&%4uMPrpBadh -!BpJTm/X-`mK8B -r3?8&Hh$h0!LCp9rrS_k=7PYYeieN~> -!BU8Qkl@:PmK8B -r3?8&MY$QA!M[uKrrS_k -!B:&NirG&9mKs5a1]n8B -r3?8&RIp4Q!Njt\rrS_k;t8lK_`*)~> -!BpJTm/X-`mKEUjs1f;Sp$Me[r9al7 -!BU8Qkl@:PmKEUjs1f;Sp$Me[r9al7 -!B:&NirG&9mKEUjs1f;Sp$Me[r9al7 -!BpJTm/X-`mJm7drrR`OjnA*B!;u6kdh_B>!(GSo6Z:uP!3+oD!ZqEsJcFd1!pG(.P5bTk./JMp -qYpW"&]1^N!O]B0rrW1Ug9pq^gAi>cm/bd$J,~> -!BU8Qkl@:PmJm7drrR`OjnA*B!;u6kdh_B>!(GSo6Z:uP!1i'4!Zh?rJcFd1!pbd@P5bTk./JMp -qYpW"&]1^Ns1\1+!L;NLrrUpT*qAIqc8pI~> -!B:&NirG&9mJm7drrR`OjnA*B!;u6kdh_B>!(GSo6Z:uP!0#jr!Z_9qJcFd1!puHQP5bTk./JMp -qYpW"&]1^Ns2Oa3!MeY^rrUpT*V&.j_`*)~> -!BpJTm/X-`mKEUjs1f;Sp$Me[r9amU"n(dYbjOoB)WL/bWT!4HlNRCaJcFa0!M@/irrGZQJcGWI -!h:1SXoAFNRJ$R\aI0I9"8;g#lgjEDeieN~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[r9amU"n(dYbjOoB)WL/bS`/f8k61n\JcFa0!NO2&rrGZQJcGWI -!h:1SXoAFSV"O`gcD7lJ"8;g"kORj -!B:&NirG&9mKEUjs1f;Sp$Me[r9amU"n(dYbjOoB)WL/bN8`e!i<98VJcFa0!O^48rrGZQJcGWI -!h:1SXoAFXYkA"seZcI]"8;g"iUZ"0_`*)~> -!BpJTm/X-`mKE/!nA(QJcG]K -!f%uSXT&=kHhIC?rI*n;rrNo8fCJ;0eieN~> -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=7;u!!)rb$$B89mJtK!m`QO.mJs6Fm/jp#14fJ`rrJV-OoPGtJcGcM"9* -!BU8Qkl@:PmK3I)'=7;u!!)rb$$B89mJtK!m`QO.mJrg:klSBq14fJ`rrK"?OoPGtJcGcM"9* -!B:&NirG&9mK3I)'=7;u!!)rb$$B89mJtK!m`QO.mJr4)irZRf14fJ`rrKCPOoPGtJcGcM"9* -!BpJTm/X-`mK*A%Zh!Mp!:K::^Ln>-md:'Fg=\o5ipHfGiU$]@!)A+Fi;Wl:K)Cf3!pg]QJc>iL -?9IYTrrJ\;p&>*aHM4fI!_r`io'HJ/4b*~> -!BU8Qkl@:PmK*A%Zh!Mp!:K::^Ln>-md:'Fg=\o5ipHf;iTUE9!)A+Fi;Wl>OSt@B!pg]QJc>iL -?9IYTrrK(Kp&>*bM>+IY!_r`fo'$2#3e.~> -!B:&NirG&9mK*A%Zh!Mp!:K::^Ln>-md:'Fg=\o5ipHf*iSt!/!)A+Fi;WlAT)FiP!pg]QJc>iL -?9IYTrrKI[p&>*dR/",i!_r`bo&Bbg2h1~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs6Fm/h,)LOoK_rrUu0rK@0^qC&b)rr_[O?MgZ#!SEY/rrV23rO;e.LB)2^ -m/bd$J,~> -!BU8Qkl@:PmJsT0mJrg:klPW#LOoK_rrV,Brf[9_qC&b)rr_[O?MgZ#!Sj@?rrV;DrjVn/LB),\ -klK'jJ,~> -!B:&NirG&9mJsT0mJr4)irWopLOoK_rrV8Srf[9_qC&b)rr_[O?MgZ#!TC-PrrVDUrjVn/LB)&Z -irR%VJ,~> -!BpJTm/X,tmJs6Fm/gAiSq6purrJ;-OoGKj./J\u"6D+Trhf\som$K.rrJ80\,QN$!*JgZ!S0Da~> -!BU8Qkl@9dmJrg:klOlcSq6purrJ_?OoGKj./J\u"6D+Trhf\sp4rY>rrJ\A\,QN$!*8[T!R<`V~> -!B:&NirG%MmJr4)irW0[Sq6purrK.POoGKj./J\u"6D+Trhf\spQtmOrrK.S\,QN$!*&OL!Q-jH~> -!BpJTm/X,tmJs6Fm/fZU["886rrUf/rfR3]8 -!BU8Qkl@9dmJrg:klO0O["886rrLo@OT,>POb`r -!B:&NirG%MmJr4)irVLH["886rrM&QOT,>POb`r -!BpJTm/X,tmJs6Fm/em?bCT]LrrJ/.OoGL5(@6nX!mV^SUAk7fbOkf9rIEt=rrU@D0(SB1eieN~> -!BU8Qkl@9dmJrg:klNI;bCT]LrrJS?OoGL5(@6nX!mV^SUAk7qdIdG?rJp'NrrU@D0(S6-c8pI~> -!B:&NirG%MmJr4)irUb3bCT]LrrK%QOoGL5(@6nX!mV^SUAk8&fC](ErLN5`rrU@D/Fqg%_`*)~> -!BpJTm/X,tmJs6Fm/e1+iIV$brrLT-OT5>sMZ3ar&[%i-!Pbc.rrKd0\GlWh!#kFq!S0Da~> -!BU8Qkl@9dmJrg:klM_&iIV$brrLc?OT5>sMZ3ar&[%i-!QMS>rrL$A\GlWh!#b@l!R<`V~> -!B:&NirG%MmJr4)irU(uiIV$brrLrQOT5>sMZ3ar&[%i-!R8CNrrL -!BpJTm/X,tmJs6Gm/u\Z!;D'Eh>[QUMUmpi!pg]QN;is`&]C@B!Sie.rrVh -!BU8Qkl@9dmJrg;kl^,R!;D'Eh#@DAgQDL;lk\-1rrTD:`1[,2i10E=!qqHC\c2d+!!_ZYklK'j -J,~> -!B:&NirG%MmJr4*ire9F!;D'Eh#@DNhi[p?lk\-1rrTD:`1[,2jJhbN!r&&T\c2d+!!_HSirR%V -J,~> -!BpJTm/X,tmJs6Gm/l,E%Y=Z7rrLE-OT,?D8<*WNT,PtHrrVt=r:BphW4KM=!Y,4eoBcS04b*~> -!BU8Qkl@9dmJrg;klTQ=%Y=Z7rrLW?OT,?D8<*WNT,PtHrrW"MrU^$iZGF'N!Y,4aoB?;$3e.~> -!B:&NirG%MmJr4*ir[a2%Y=Z7rrLfQOT,?D8<*WNT,PtHrrW%^rU^$i]ZI\`!Y,4\oA]kh2h1~> -!BpJTm/X,tmJs6Gm/kE1,_?!MrrW.RgQDL;qC&b4rrS-%fq&-DLue1-!pP76\c2^V!6Xp#!S0Da~> -!BU8Qkl@9dmJrg;klSj),_?!MrrW1`hi[p?qC&b4rrS-%fq&-DQ07c=!pksG\c2^V!64Wp!R<`V~> -!B:&NirG%MmJr4*ir[$s,_?!MrrW1nj,s?CqC&b4rrS-%fq&-DU[%IN!q)TW\c2^V!5\9e!Q-jH~> -!BpJTm/X,trrB%Xm/jfu2hD"_rrL9-OT,Bi./K,,"9*Qqj.-,MVT89-!L(pArrP+Z\b#1heieN~> -!BU8Qkl@9drrAVLklS9n2hD"_rrLK?OT,Bi./K,,"9*Qqj.-,MYg)b=!M@rRrrP+Z[e&_ac8pI~> -!B:&NirG%MrrA#;irZIc2hD"_rrL]QOT,Bi./K,,"9*Qqj.-,M]$p6M!NXtcrrP+ZZ1HuV_`*)~> -!BpJTm/X,trrB%Xm/j9f7tL]orrW+MhiRj=8 -!BU8Qkl@9drrAVLklRa_7tL]orrW.\j,j9A8 -!B:&NirG%MrrA#;irYtU7tL]orrW.jk)fTD8 -!BpJTm/X,trrB%Xm/idX -!BU8Qkl@9drrAVLklR:R -!B:&NirG%MrrA#;irYMH -!BpJTm/X,trrB%Xm/i:JAqC!8rrW(JjH0EACmP)'o0cRQRK!?cG5Ce0!Of,ArrQd4Nq;W=eieN~> -!BU8Qkl@9drrAVLklQbCAqC!8rrW+YkE,`DCmP)'o0cRQRK!?dL&:H@!PZ"RrrQd4Mt?06c8pI~> -!B:&NirG%MrrA#;irY#:AqC!8rrW+glB)&GCmP)'o0cRQRK!?dQ2C.P!QMmcrrQd4M"BX-_`*)~> -!BpJTm/X,trrB%Xm/hb;G(K\GrrKs-OT,CK(=efP"7.pXr0REaN8X:,!q1L2]DhqU!.XV-!S0Da~> -!BU8Qkl@9drrAVLklQ85G(K\GrrL3?OT,CK(=efP"7.pXr0REaRH*l -!B:&NirG%MrrA#;irXK+G(K\GrrLHQOT,CK(=efP"7.pXr0REaVW[OM!qVfU]DhqU!."1r!Q-jH~> -!BpJTm/X-`rrBjNrrB%Xm/h2+L4TBWrrW"Ek`GfFO[to?"61kVrg*QbWl"<+!M.3ArrRoTDtE>s -eieN~> -!BU8Qkl@:PrrBjNrrAVLklP]%L4TBWrrW%UlB)#HO[to?"61kVrg*Qb[)qk -!B:&NirG&9rrBjNrrA#;irWrqL4TBWrrW(dm?%>KO[to?"61kVrg*Qb^!Q -!BpJTm/X-`rrE,8_Z'V8ip?eT!1&39fDblaUQGKWqC&b@rrUjrN0O>CaJAA+!SN@BrrSJd@.Wad -eieN~> -!BU8Qkl@:PrrE,8_Z'V,iopMO!1&39fDblhY)rYbqC&b@rrUjrN0O>CcE?^;!Ss*SrrSJd?h -!B:&NirG&9rrE,8_Z'Upio:)F!1&39fDblp\<-^lqC&b@rrUjrN0O>Ce@>&K!TKoerrSJd>k?tV -_`*)~> -!BpJTm/X-`rrN07^r-0PWT*:H;ui_Fs4@8PpNu7grrTSVqORWfbo34BNB!i,fq -oBcS04b*~> -!BU8Qkl@:PrrN07^r-0PS`8l8;ZNVEs4@8PpknL$rrTSVqORWfbo34 -!B:&NirG&9rrN07^r-0PN8ik!;#mDCs4@8Pq3g`6rrTSVqORWfbo34 -!BpJTm/X-`rrW8:'Ys>?rr<0&%PW+lg&D&Oip?e?!3UnQf)GcZWK7&[8 -!BU8Qkl@:PrrW8:'Ys>?rr<0&%PW+lg&D&CiopM:!3UnQf)GcbZ]G+e8 -!B:&NirG&9rrW8:'Ys>?rr<0&%PW+lg&D&2io:)2!3UnQf)Gcj]T<'n8 -!BpJTm/X-`rr`?%^_FTVrs&Q(s7FQQ)W09K!3+uF!^cssJcF=$!q^j.OT,a>(@;)$pk!:4IqsZ2 -\Gl`tHZ3nMlM:G]^CnGGrrJ):nc&[bGkA]L!k/.soBcS04b*~> -!BU8Qkl@:Prr`?%^_FTVrs&Q(s7FQQ)W09K!1i-6!^ZmrJcF=$!qqK@OT,a>(@;)$pk!:4IqsZ2 -\Gl`tHZ3nMlM:G]^CnGGrrJPKnc&[cL\AF]!k/.roB?;$3e.~> -!B:&NirG&9rr`?%^_FTVrs&Q(s7FQQ)W09K!0#pt!^HapJcF=$!r&)ROT,a>(@;)$pk!:4IqsZ2 -\Gl`tHZ3nMlM:G]^CnGGrrK"[nc&[cQhS2n!k/.poA]kh2h1~> -!BpJTm/X-`rriE&s1f>ap&>!lr;R@X>lXi[9ah7rkPtS<9ah7rkN`'IWT*:H3<6mHs4.,MZ*'/f -s(hf;nl_sj^&k9:o"4o.okJ]^^:q1&CA%N)!l#McO8f6Y`UNm.V80eE!l4jsoBcS04b*~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;R@X>lXi[9ah7rkPtS<9ah7rkN`'IS`8l82updGs4.,M]!mb# -s(hf;nl_sj^&k9:o"4o.okJ]^^:q1&CA%N)!l#McO8f6cbOGN4YK+?V!l4jroB?;$3e.~> -!B:&NirG&9rriE&s1f>ap&>!lr;R@X>lXi[9ah7rkPtS<9ah7rkN`'IN8ik!2ZU[Fs4.,M_SD64 -s(hf;nl_sj^&k9:o"4o.okJ]^^:q1&CA%N)!l#McO8f6mdd[8;\^%ng!l4jqoA]kh2h1~> -!BpJTm/X-`rr<&urrR`Op%JCc!;uj/iY_^q/&(`HDcm&>/&(`HDcl<)!3+uF!\j\tJcF:#!qCU. -OT,IM(=cTmqn<*8>.jk:o2i6p^&kTAoD\ak^D=SErrL$;nG`OFLqWfiaoF0fm/bd$J,~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;uj/iY_^q/&(`HDcm&>/&(`HDcl<)!1i-6!\aVsJcF:#!qV9@ -OT,IM(=cTmqn<*8>.jk:o2i6p^&kTAoD\ak^D=SErrL9KnG`OJQ+d2!aoF-eklK'jJ,~> -!B:&NirG&9rr<&urrR`Op%JCc!;uj/iY_^q/&(`HDcm&>/&(`HDcl<)!0#pt!\XPrJcF:#!q_lQ -OT,IM(=cTmqn<*8>.jk:o2i6p^&kTAoD\ak^D=SErrLN\nG`ONUV6[/aoF*dirR%VJ,~> -!BpJTm/X-`rriE&s1f>ap&>!lr;Qfo"oJ<#ob@<'!VI/lrrB%Xm/e[9dt.PKrrK1-O8f9D2OOT`F!n.,toBcS04b*~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;Qfo"oJ<#ob@<'!VI/lrrAVLklN44dt.PKrrKO?O8f9D2OO -!B:&NirG&9rriE&s1f>ap&>!lr;Qfo"oJ<#ob@<'!VI/lrrA#;irUP-dt.PKrrKjPO8f9D2OO -!BpJTm/X-`rr`?%^_FTVrr<&srt43,s8U,&$NL/-s8U,&$NL/-lMgj`ip?dh!8W5+eGfU -!BU8Qkl@:Prr`?%^_FTVrr<&srt43,s8U,&$NL/-s8U,&$NL/-lMgjTiopLd!8W5+eGfU>M>*,3 -!VAVN^&_d?^]+=dVt[n.Vh2Z!^Pr0oq1\e:rrL*C^Ae8j!$Cgs!R<`V~> -!B:&NirG&9rr`?%^_FTVrr<&srt43,s8U,&$NL/-s8U,&$NL/-lMgjCio:(]!8W5+eGfU@R.udC -!VAVN^&_d?^]+=dVt[n.Vh2Z!^Pr0oqN_$KrrLBU^Ae8j!$:al!Q-jH~> -!BpJTm/X-`rrW8:'Ys>?!!)rs&Udm`ruA!,rpg'hruA!,rpg'SrrB%Xm/e((k(3Q]rrK"-OT,?P -T_H/$Tq0"!!U+=l^&hdY^P`$lL?A"*!qU^3^]+At!#P7o!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?!!)rs&Udm`ruA!,rpg'hruA!,rpg'SrrAVLklMY$k(3Q]rrK@?OT,?P -T_H/$Tq0"!!U+=l^&hdY^P`$lPj.];!q_ -!B:&NirG&9rrW8:'Ys>?!!)rs&Udm`ruA!,rpg'hruA!,rpg'SrrA#;irTtrk(3Q]rrK^QOT,?P -T_H/$Tq0"!!U+=l^&hdY^P`$lU$V:K!qhoU^]+At!#G1d!Q-jH~> -!BpJTm/X-`rrN07_".LA!<<)lc#+BSs8Nb:pt\sNs8Nb:pt\sNlMgj`ip?d\!:#.8e,KL7I/&j( -!,M8A!,KCM!J%KK^&bNNM>mUNbO>H3T>eSF!pTb!oBcS04b*~> -!BU8Qkl@:PrrN07_".LA!<<)lc#+BSs8Nb:pt\sNs8Nb:pt\sNlMgjTiopLX!:#.8e,KL9MtrM8 -!,M8A!,KCM!J%KK^&bNNM>mUXdI7)9Wlr0W!pTb!oB?;$3e.~> -!B:&NirG&9rrN07_".LA!<<)lc#+BSs8Nb:pt\sNs8Nb:pt\sNlMgjCio:(R!:#.8e,KLmUcfC/_?[F2hi!pTb!oA]kh2h1~> -!BpJTm/X-`rrE,8nc/Uh"9AoaFm/i)%C.2]+dN-.s0 -!BU8Qkl@:PrrE,8nc/Uh"9AoaFm/i)%C.2]+dN-.s0 -!B:&NirG&9rrE,8nc/Uh"9AoaFm/i)%C.2]+dN-.s0 -!BpJTm/X-`rrBjNrrB%Xm/d^snU^_grrV;3qih$\\rl["!Kjt1rrLZ"rkA.-s1SM`eVaA-fp(t* -!rdf6_#FK+!"JPe!S0Da~> -!BU8Qkl@:PrrBjNrrAVLklM:onU^_grrVDDqih$\\rl["!Kjt1rrLZ"rkA.-s1SM`eVaA-h4X6: -!re;G_#FK+!"JPa!R<`V~> -!B:&NirG&9rrBjNrrA#;irTVhnU^_grrVMUr0.-]\rl["!Kjt1rrLZ"rkA.-s1SM`eVaA-iiMVK -!reeW_#FK+!"AJZ!Q-jH~> -!BpJTm/X,trrB%Xm/dUpoR[%irrJY.PQ(Z?Z1Yg3Z&-?t!Lon]^&S01^&b%!MZ3bMH2d:4!P#8I -rrVfm$M3WceieN~> -!BU8Qkl@9drrAVLklM1loR[%irrK%?PQ(Z?Z1Yg3Z&-?t!Lon]^&S01^&b%!MZ3_MM!k9D^ph,Z -!qZI"oB?;$3e.~> -!B:&NirG%MrrA#;irTPfoR[%irrKFQPQ(Z?Z1Yg3Z&-?t!Lon]^&S01^&b%!MZ3_NQgXkSaM>Uk -!qZI"oA]kh2h1~> -!BpJTm/X,trrB%Xm/dLmpOW@lrrV/1r073]FSriU!4>K0!<'V3FMe%XF8aT2!!i,_!S0Da~> -!BU8Qkl@9drrAVLklM(ipOW@lrrV8BrKR<^FSriU!4>K0!<'V3FMe%XF8aT2!!i,[!R<`V~> -!B:&NirG%MrrA#;irTGcpOW@lrrVDTrKR<^FSriU!4>K0!<'V3FMe%XF8aT2!!i,U!Q-jH~> -!BpJTm/X,trrB%Xm/dFkqLS[nrrJJ.PlC`'r4W757YA5K^&W/irr@*8^&S00^&W21rrJY;mf*^]jm/bd$J,~> -!BU8Qkl@9drrAVLklM"gqLS[nrrJk?PlC`'r4W757YA5K^&W/irr@*8^&S00^&W21rrK%Kmf*^]jklK'jJ,~> -!B:&NirG%MrrA#;irT>`qLS[nrrK:QPlC`'r4W757YA5K^&W/irr@*8^&S00^&W21rrKF[mf*^ZiirR%VJ,~> -!BpJTm/X,trrB%Xm/d=hrIP!qrrUu0rK[B_E;[EN!,q_J!)CC\!)<:'!!)l0!-!ep!OfE(rrL04 -_>aT8!!;cZ!S0Da~> -!BU8Qkl@9drrAVLklLndrIP!qrrV,Brg!K`E;[EN!,q_J!)CC\!)<:'!!)l0!-!ep!PcA:rrLBE -_>aT8!!;cV!R<`V~> -!B:&NirG%MrrA#;irT8^rIP!qrrV8Srg!K`E;[EN!,q_J!)CC\!)<:'!!)l0!-!ep!QW4JrrLTV -_>aT8!!;cP!Q-jH~> -!BpJTm/X,trrB%Xm/d=hrIP!prrJ8-Q2^i'r4W13WqsF0:;VJ\:&2L'!;aD0E/FSqd@BY)!qpp5 -_Z']9!!;cZ!S0Da~> -!BU8Qkl@9drrAVLklLndrIP!prrJ\?Q2^i'r4W13WqsF0:;VJ\:&2L'!;aD0E/FSqeu.s9!r%NF -_Z']9!!;cV!R<`V~> -!B:&NirG%MrrA#;irT8^rIP!prrK.QQ2^i'r4W13WqsF0:;VJ\:&2L'!;aD0E/FSqgTp8I!r/,W -_Z']9!!;cP!Q-jH~> -!BpJTm/X,trrB%Xm/dFkqLS[mrrUc/rg*QaEW!NO!5/0B!-,mU!-7nL!!)l0!-3qr!U>=)rrJb3 -_Z']6!!Vu]!S0Da~> -!BU8Qkl@9drrAVLklM"gqLS[mrrLl@Q2^i(r4W13]_]>BEPh_UEr!EL!;aD0Ef'esm#g]8!NOA\ -rrW#s"nUsZc8pI~> -!B:&NirG%MrrA#;irT>`qLS[mrrM#QQ2^i(r4W13]_]>BEPh_UEr!EL!;aD0Ef'esn"9"I!O^Cn -rrW#s"S:XS_`*)~> -!BpJTm/X,trrB%Xm/dLmpOW@jrrW1Ye!C"6FSriQ!;X>/FMe%XF8 -!BU8Qkl@9drrAVLklM(ipOW@irrJP?QN$r,r4W.2q7ZiN_Z'UWq7Zh/qRurNM>mYVL&(0:!SO'] -rrVop#P70\c8pI~> -!B:&NirG%MrrA#;irTGcpOW@irrK"QQN$r,r4W.2q7ZiN_Z'UWq7Zh/qRurNM>mYVQ20kJ!T'in -rrVop#P6sV_`*)~> -!BpJTm/X,tmJs6Gm/dUpoR[%frrLN-QN$uBZ2MB:!;aD1Z&-?t!Lon]^&S01^&b%!M#RL8i9pUH -r-dnKrrVfm$M3WceieN~> -!BU8Qkl@9dmJrg;klM1loR[%frrL]?QN$uBZ2MB:!;aD1Z&-?t!Lon]^&S01^&b%!M#RLEj6lpK -rJU*]rrVfm$M3K_c8pI~> -!B:&NirG%MmJr4*irTPfoR[%frrLlPQN$uBZ2MB:!;aD1Z&-?t!Lon]^&S01^&b%!M#RLRkO/?O -rL35nrrVfm$M39Y_`*)~> -!BpJTm/X,tmJs6Gm/d^snU^_crrW1TfU)U=\rls*!!)l0!Kjt1rrLZ"qRuq0qn<)\eVO5+VT8*( -!NrrMrrV]j%J/rfeieN~> -!BU8Qkl@9dmJrg;klM:onU^_crrW1bh3\-B\rls*!!)l0!Kjt1rrLZ"qRuq0qn<)\eVO5+Yg)S8 -!Ook^rrV]j%J/fbc8pI~> -!B:&NirG%MmJr4*irTVhnU^_crrW1oiKsQF\rls*!!)l0!Kjt1rrLZ"qRuq0qn<)\eVO5+]$p'H -!PldorrV]j%.iK[_`*)~> -!BpJTm/X,tmJs6Gm/dh!mXbD_rrL?.Qi@*WD>h0K!;aD1D=YRD!WH[,^&S01^&_dDM#RLkXR6#g -i.o5M!q$%"oBcS04b*~> -!BU8Qkl@9dmJrg;klM@qmXbD_rrLN?Qi@*WD>h0K!;aD1D=YRD!WH[,^&S01^&_dDM#RLr[dF(q -jHRR^!q$%!oB?;$3e.~> -!B:&NirG%MmJr4*irT_kmXbD_rrL`QQi@*WD>h0K!;aD1D=YRD!WH[,^&S01^&_dDM#RM$^[;%% -kG#lo!q$%!oA]kh2h1~> -!BpJTm/X,tmJs6Gm/dq$l@Ju[rrW.PhO"6BC\>CACV]rNJ?nj^!jXWRM#RM0PO8AOrdj4MrrVHc -'D(SleieN~> -!BU8Qkl@9dmJrg;klMLul@Ju[rrW.]ig9ZFC\>CACV]rNJ?nj^!jXWRM#RM4TBuRYO6OU_!pTb! -oB?;$3e.~> -!B:&NirG%MmJr4*irTkol@Ju[rrW.kjd5uIC\>CACV]rNJ?nj^!jXWRM#RM8X6fieSa45o!pTb! -oA]kh2h1~> -!BpJTm/X,tmJs6Gm/e((k(3QVrrL0.Qi@)TTD-&#Tq0"!!U+=l^&r.V2XH;#!V:X(rrKC5`;]o$ -!#P7o!S0Da~> -!BU8Qkl@9dmJrg;klMY$k(3QVrrLB?Qi@)TTD-&#Tq0"!!U+=l^&r.V2XH;#!VD68rrK^F`;]o$ -!#P7k!R<`V~> -!B:&NirG%MmJr4*irTtrk(3QVrrLTQQi@)TTD-&#Tq0"!!U+=l^&r.V2XH;#!VMiHrrL!V`;]o$ -!#G1d!Q-jH~> -!BpJTm/X-`mJsT0mJs6Gm/e@0h1>UMrrW+Kj-]iIN^`]V!G)#@rrI_LpV$g/K)U$Fj,*d:IIQY( -!TAdOrrV!V+7nk#eieN~> -!BU8Qkl@:PmJsT0mJrg;klMq,h1>UMrrW+Yk*Z/LN^`]V!G)#@rrI_LpV$g/K)U$Fj,*d:Mt698 -!TfN`rrV!V+7n^tc8pI~> -!B:&NirG&9mJsT0mJr4*irU8%h1>UMrrW+hl'VJON^`]V!G)#@rrI_LpV$g/K)U$Fj,*d:Re,qH -!U-5qrrV!V*qSCm_`*)~> -!BpJTm/X-`mK!^JR+PDYP!LD@)rrW1Pji.6$df:ffm/bd$J,~> -!BU8Qkl@:PmK!iopLl!7QN!bPqUaWL^JR+PDYP!M\?8rrJ8G`W$"g!%7C&!R<`V~> -!B:&NirG&9mK!^JR+PDYP!Nk;HrrJbX`W$"g!%. -!BpJTm/X-`mK*A%ZfpfW!;c*`!9NVKWT*:H0`]@Is3(EDq0hIqs8Qm:s&uZ(^&bHA]`/')=0h_; -!jYo!rVlqk)U43?!O09(rrKF4`W$"^!&=*4!S0Da~> -!BU8Qkl@:PmK*A%ZfpfW!;c*`!9NVKS`8l80EB7Hs3(EDqMa^.s8Qm:s&uZ(^&bHA]`/')=0h_; -!jYo!rVlqk)U43?!P-/8rrKaF`W$"^!&4$/!R<`V~> -!B:&NirG&9mK*A%ZfpfW!;c*`!9NVKN8ik!0*'.Gs3(EDqjQo@s8Qm:s&uZ(^&bHA]`/')=0h_; -!jYo!rVlqk)U43?!Q!"HrrL'W`W$"^!&*s(!Q-jH~> -!BpJTm/X-`mK3I)'=7;urr<0&%4uMPrpBadqX+=`jmE,Jip?e-!5X6db5VLTURV8feJ@NOnl_sj -^&k9:o"4o.okJ]^^:q1&CA%K(!jE9TN;iq#U[8!]j+PDO!l4jsoBcS04b*~> -!BU8Qkl@:PmK3I)'=7;urr<0&%4uMPrpBadqX+=`jmE,>iopM(!5X6db5VL[Y+,FqeJ@NOnl_sj -^&k9:o"4o.okJ]^^:q1&CA%K(!jE9TN;iq)Y3c/hk*!^`!l4jroB?;$3e.~> -!B:&NirG&9mK3I)'=7;urr<0&%4uMPrpBadqX+=`jmE,-io:)!!5X6db5VLc\= -!BpJTm/X-`mKkrrq\7E+=7[q#:E6&[78p!TK%'rrIf5`r?+L!(6AF!S0Da~> -!BU8Qkl@:PmKkrrq\7E+=7[q#:E6&[78p!Tf^7rrJ;F`r?+L!(-;A!R<`V~> -!B:&NirG&9mKkrrq\7E+=7[q#:E6&[78p!U-BGrrJeW`r?+L!'p/9!Q-jH~> -!BpJTm/X-`mKEUjs1f;Sp$Me[r9b/? -!BU8Qkl@:PmKEUjs1f;Sp$Me[r9b/? -!B:&NirG&9mKEUjs1f;Sp$Me[r9b/? -!BpJTm/X-`mJm7drrR`OjnA*B!;u6sdh_B>!(GSo6Z;D\!(GSo6Z;8X!3+uF!`T/qJcEjl!q^j. -TDnuh.(,QE!ne]TNrK-1mHjiRi/,JR!i,fqoBcS04b*~> -!BU8Qkl@:PmJm7drrR`OjnA*B!;u6sdh_B>!(GSo6Z;D\!(GSo6Z;8X!1i-6!`K)pJcEjl!qqK@ -TDnuh.(,QE!ne]TNrK-?n*L&Tj-I^b!i,fpoB?;$3e.~> -!B:&NirG&9mJm7drrR`OjnA*B!;u6sdh_B>!(GSo6Z;D\!(GSo6Z;8X!0#pt!`8rnJcEjl!r&)R -TDnuh.(,QE!ne]TNrK-Mna-8VkG-&s!i,fnoA]kh2h1~> -!BpJTm/X-`mKEUjs1f;Sp$Me[r9b0]"n(dYbjOoB)Xd"nbjOoB)X?_jWT*:H?iZLDs2b3@Z)sYu -!Kfp@rr_:2H2`p*!LMF)rrW1Klc9#,Q2k=am/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[r9b0]"n(dYbjOoB)Xd"nbjOoB)X?_jS`8l8?N?CCs2b3@]!n=3 -!Kfp@rr_:2H2`p*!M\?8rrW1Ym`5>/Q2k:`klK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$Me[r9b0]"n(dYbjOoB)Xd"nbjOoB)X?_jN8ik!>QC(@s2b3@_SDfD -!Kfp@rr_:2H2`p*!NtAIrrW1hnAkP1Q2k1]irR%VJ,~> -!BpJTm/X-`mK4HLmj1 -!pg]QR/[9T2J2lLrrK7;li.!a^rQHVL&c/`m/bd$J,~> -!BU8Qkl@:PmK5M=dMA -!pg]QR/[9T2J2lLrrKRKli.!ka2e2]L&c)^klK'jJ,~> -!B:&NirG&9mK7R.[0Q -!pg]QR/[9T2J2lLrrKm[li.!ucH#qdL&bu[irR%VJ,~> -!BpJTm/X-`mK3I)'=7;u!!)rb&Tq+AmJtK!m`QO:mJtK!m`QO6mJs6Gm/hb;G(K\6rrK4-U&Y./ -QN%'Y6r`rErrL';li."9PK3\)Fo[$`m/bd$J,~> -!BU8Qkl@:PmK3I)'=7;u!!)rb&Tq+AmJtK!m`QO:mJtK!m`QO6mJrg;klQ85G(K\6rrKO?U&Y./ -QN%'Y6r`rErrL9Kli.">T?$s5FoZs^klK'jJ,~> -!B:&NirG&9mK3I)'=7;u!!)rb&Tq+AmJtK!m`QO:mJtK!m`QO6mJr4*irXK+G(K\6rrKjPU&Y./ -QN%'Y6r`rErrLN[li."BX2k5AFoZgZirR%VJ,~> -!BpJTm/X-`mK*A%Zh!N#!:K::^Ln>-md:'Fg=\o5md:'Fg=\o5lL"YOip?f-!+pf^a8Z5/HhO67 -!nA(QQ2^s]<(->ArrLl -!BU8Qkl@:PmK*A%Zh!N#!:K::^Ln>-md:'Fg=\o5md:'Fg=\o5lL"YCiopN&!+pf^a8Z51M>*eF -!nA(QQ2^s]<(->ArrM#Lli.%`L\Agh!bMFjoB?;$3e.~> -!B:&NirG&9mK*A%Zh!N#!:K::^Ln>-md:'Fg=\o5md:'Fg=\o5lL"Y2io:)r!+pf^a8Z53R/!HV -!nA(QQ2^s]<(->ArrM/\li.%aQhST$!bMFgoA]kh2h1~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs6Gm/j9f7tL][rrVJ5pndul[4(m7rr`7G.cZcn!I=>'rrL96aSu<3!35YX -!S0Da~> -!BU8Qkl@:PmJsT0mJrg;klRa_7tL][rrVSGq5+)m[4(m7rr`7G.cZcn!JpI8rrLKGaSu<3!2oGQ -!R<`V~> -!B:&NirG&9mJsT0mJr4*irYtU7tL][rrVYXqPF2n[4(m7rr`7G.cZcn!LNQHrrL]XaSu<3!2K/G -!Q-jH~> -!BpJTm/X,tmJs6Gm/jfu2hD"JrrJh-VZ-_o.(,-9!fS8TQ2^lGhWt1CoQL,RrrP+Z\b#1heieN~> -!BU8Qkl@9dmJrg;klS9n2hD"JrrK4?VZ-_o.(,-9!fS8TQ2^lTip6UGp4`FdrrP+Z[e&_ac8pI~> -!B:&NirG%MmJr4*irZIc2hD"JrrKRQVZ-_o.(,-9!fS8TQ2^l`jm2pJpQbZurrP+ZZ1HuV_`*)~> -!BpJTm/X,tmJs6Gm/kE1,_?!7rrV>4qksGpO[tK3!hUCUQN$u_aQid+OP.bU![IcgoBcS04b*~> -!BU8Qkl@9dmJrg;klSj),_?!7rrVGEqksGpO[tK3!hUCUQN$uicKbE1S__Ef![IccoB?;$3e.~> -!B:&NirG%MmJr4*ir[$s,_?!7rrVMUr29PqO[tK3!hUCUQN$useE[&7WT)&"![Ic^oA]kh2h1~> -!BpJTm/X,tmJs6Gm/l,E%Y=YurrJY-W;cqc(=eBD!jE9TQi@*"Z0M>i\Zj3U!Y,4eoBcS04b*~> -!BU8Qkl@9dmJrg;klTQ=%Y=YurrK%?W;cqc(=eBD!jE9TQi@*)]'B:r_7@\f!Y,4aoB?;$3e.~> -!B:&NirG%MmJr4*ir[a2%Y=YurrKFQW;cqc(=eBD!jE9TQi@*0_Wq.%ahl1"!Y,4\oA]kh2h1~> -!BpJTm/X,tmJs6Gm/u\Z!;D'E`W$"uJc)MIs(mSm!lP\RR/[38S*L"SiJ>YV"8;d"m.9TFeieN~> -!BU8Qkl@9dmJrg;kl^,R!;D'E`W$##O8Z'Xs(mSm!lP\RR/[3=VX"0^jd"!g"8;d"kk"$>c8pI~> -!B:&NirG%MmJr4*ire9F!;D'E`W$#'Sc,Pfs(mSm!lP\RR/[3BZ0M>ikbH<#"8;d"iq)12_`*)~> -!BpJTm/X,tmJs6Fm/e1+iIV$IrrJJ-WrE.N(@6nX!mV^SRK! -!BU8Qkl@9dmJrg:klM_&iIV$IrrJn?WrE.N(@6nX!mV^SRK! -!B:&NirG%MmJr4)irU(uiIV$IrrK:QWrE.N(@6nX!mV^SRK! -!BpJTm/X,tmJs6Fm/em?bCT]3rrUu0rN#r!8 -!BU8Qkl@9dmJrg:klNI;bCT]3rrV,Bri?&"8 -!B:&NirG%MmJr4)irUb3bCT]3rrV8Sri?&"8 -!BpJTm/X,tmJs6Fm/fZU["87prrJ;.XT&@0./J\u"6D+TrgWogIIQP%!R%(XrrTP-7.T^GeieN~> -!BU8Qkl@9dmJrg:klO0O["87prrJ_?XT&@0./J\u"6D+TrgWogN:Q96!R[mirrTP-6Ls@Ac8pI~> -!B:&NirG%MmJr4)irVLH["87prrK.QXT&@0./J\u"6D+TrgWogRe,hE!S=^%rrTP-61X%:_`*)~> -!BpJTm/X,trrB%Wm/gAiSq6pZrrUf/riZ8&qC&b)rr_[O?Mg8m!Kl4'rrVb:rQP9CScDm`m/bd$ -J,~> -!BU8Qkl@9drrAVKklOlcSq6pZrrLl?XoAJ!.(+a."7A9XqjdZeS`/l6!q_ -!B:&NirG%MrrA#:irW0[Sq6pZrrM&RXoAJ!.(+a."7A9XqjdZeWo`OG!qhoYbl7a9!*&OL!Q-jH~> -!BpJTm/X,trrB%Wm/h,)LOoKBrrJ)-Y5\Nb8:pjDoh8'PSc8_eam&g+N8;_X!f$bmo'HJ/4b*~> -!BU8Qkl@9drrAVKklPW#LOoKBrrJP?Y5\Nb8:pjDoh8'PSc8_ocftH1RGlBi!f$bko'$2#3e.~> -!B:&NirG%MrrA#:irWopLOoKBrrK"QY5\Nb8:pjDoh8'PSc8`$e`m)7VWH&%!f$bio&Bbg2h1~> -!BpJTm/X,trrB%Wm/i%CCOuN&rrLQ.YQ"[j(=e!9"8cCem[jFZ\@(T$!OT8YrrQs9L[sg5eieN~> -!BU8Qkl@9drrAVKklQP=COuN&rrL`@YQ"[j(=e!9"8cCem[jFZ^qT(5s1QYV!c%dio'$2#3e.~> -!B:&NirG%MrrA#:irXc3COuN&rrLoQYQ"[j(=e!9"8cCem[jFZaN!KEs2E4^!c%deo&Bbg2h1~> -!BpJTm/X,trrB%Wm/j!^:4`G^rrW1UfWbDUCk;Wdrr`7@/`iW)!R.;&rrLl8bl7`>!2B&O!S0Da~> -!BU8Qkl@9drrAVKklRIW:4`G^rrW1bh6?qZCk;Wdrr`7@/`iW)!R\%6rrM#Ibl7`>!2&iH!R<`V~> -!B:&NirG%MrrA#:irY\M:4`G^rrW1piNW@^Ck;Wdrr`7@/`iW)!S=gFrrM/Ybl7`>!1WQ>!Q-jH~> -!BpJTm/X,trrB%Wm/jp#14fJArrL?-Z2XmU(@6VPrVlqS,28dj!T/t&rrW(ApW`^>1'"uXm/bd$ -J,~> -!BU8Qkl@9drrAVKklSBq14fJArrLQ?Z2XmU(@6VPrVlqS,28dj!TKU5rrW+Qps&g?1'"lUklK'j -J,~> -!B:&NirG%MrrA#:irZRf14fJArrLcQZ2XmU(@6VPrVlqS,28dj!Tp?FrrW+aq9Ap@1'"]PirR%V -J,~> -!BpJTm/X-`rrBjNrrB%Wm/kl>'nQD$rrW.Ph6R%]8&V!V1X%rrJG9c2Rh[!8$f/ -!S0Da~> -!BU8Qkl@:PrrBjNrrAVKklT<6'nQD$rrW.]iNiIa8&V!VD95rrJkIc2Rh[!7UN' -!R<`V~> -!B:&NirG&9rrBjNrrA#:ir[L+'nQD$rrW.kjg+me8&V!VMlErrK7Yc2Rh[!7(/q -!Q-jH~> -!BpJTm/X-`rrE,8_Z'V8iU$a5"p+ILs2"^9a-a45!jsHQJcGTH!j3-PU&P.;pZ_\Y] -!BU8Qkl@:PrrE,8_Z'V,iTUI-"Te@Ks2"^9c(q]G!jsHQJcGTH!j3-PU&P.Jq!%eZ_mn"l"8;g" -kORj -!B:&NirG&9rrE,8_Z'UpiSt%!"Te@Ks2"^9e??4Y!jsHQJcGTH!j3-PU&P.Yq<@n[bJDL("8;g" -iUZ"0_`*)~> -!BpJTm/X-`rrN07^r-0PWSm.F*rt&Hs2"^:r.*h8rrW$F[=SAQrrU+NRA0]^MWF%%!T8j\rrUpT -+7\_!eieN~> -!BU8Qkl@:PrrN07^r-0PS`&`6*WXrGs2"^:r/TpIrrW$F[=SAQrrU+NRA0]^QfmW5!T]TmrrUpT -*qAIqc8pI~> -!B:&NirG&9rrN07^r-0PN8W^t*<=iFs2"^:r13)[rrW$F[=SAQrrU+NRA0]^V!@4E!U$9(rrUpT -*V&.j_`*)~> -!BpJTm/X-`rrW8:'YsA@q>f1J!3+oD!]U1oJcEOc!Q(G9rrJ6QJcGHD"5>8Br1s>nS($X%!r[E9 -ci4'\!''N9!S0Da~> -!BU8Qkl@:PrrW8:'YsA@q>f1J!1i'4!]U1oJcEOc!Q_7JrrJ6QJcGHD"5>8Br1s>nVV(/5!r[rJ -ci4'\!''N5!R<`V~> -!B:&NirG&9rrW8:'YsA@q>f1J!0#jr!]C%mJcEOc!RJ-\rrJ6QJcGHD"5>8Br1s>nZ/+[E!r\JZ -ci4'\!&jB-!Q-jH~> -!BpJTm/X-`rr`?%^_FTTrr<&LrrB%Vm/g>hSUpgVrrW%FkI:Hmlk\-&s7QBon4-"gRs_s%+$ -SBoO]!hB -!BU8Qkl@:Prr`?%^_FTTrr<&LrrAVJklOlcSUpgVrrW(VlF6cplk\-&s7QBon4-"gS'b38j+ -Vps&m!hB -!B:&NirG&9rr`?%^_FTTrr<&LrrA#9irW-ZSUpgVrrW(dm'lurlk\-&s7QBon4-"gS1dHLT2 -ZJ*Y)!hB -!BpJTm/X-`rriE&s1f>aoD]'rs8UnL$jT8bh>[JSi9^Si!.'4r^]+>JUUU:'Ck;WXrr`1:.GLa" -!P>]%rrKs9ci4&m!-du#!S0Da~> -!BU8Qkl@:PrriE&s1f>aoD]'rs8UnL$jT8bh>[JGi9:;c!.'4r^]+>QXge?1Ck;WXrr`1:.GLa" -!Q2S6rrL3Ici4&m!-Rhr!R<`V~> -!B:&NirG&9rriE&s1f>aoD]'rs8UnL$jT8bh>[J6i8XlZ!.'4r^]+>X\$uD;Ck;WXrr`1:.GLa" -!R&FFrrLHZci4&m!-7Vi!Q-jH~> -!BpJTm/X-`rr<&urrR`Op%87i!<<'L^@q&7=P`uWWSm.FQiL3=s1eR8pO);;rrU^dm",3,rrST* -^8Lu3bG4;$!To']rrQ7%R.9PEeieN~> -!BU8Qkl@:Prr<&urrR`Op%87i!<<'L^@q&7=P`uWS`&`6PlOm:s1eR8pknLMrrU^dm",3,rrST* -^8Lu3dB;^5!U5cnrrQ7%Q1=)>c8pI~> -!B:&NirG&9rr<&urrR`Op%87i!<<'L^@q&7=P`uWN8W^tOT8I6s1eR8q3g`_rrU^dm",3,rrST* -^8Lu3f=:&E!UHE)rrQ7%On%H4_`*)~> -!BpJTm/X-`rriE&s1f>aoD\djqu6]i']&chWSm.F\,\@:s1\L6\#?k;!D&?(s6osh^)39:rrLl< -kPkR0n'M(91]Y&Um/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoD\djqu6]i']&chS`&`6[/`%7s1\L6^TtEM!D&?(s6osh^)39:rrM#L -kPkR?n^.:;1]XrRklK'jJ,~> -!B:&NirG&9rriE&s1f>aoD\djqu6]i']&chN8W^tYQ-M2s1\L6a1Jn^!D&?(s6osh^)39:rrM/\ -kPkRNo?dL=1]XcMirR%VJ,~> -!BpJTm/X-`rr`?%^_FTTrs/W)s2R81!!!&UrrB%Vm/kr@&V9trrrVk?n%8T$[4(m&s6fmhgF7%< -WrE+cK]i@9S^,U^!YGFcna-A.4b*~> -!BU8Qkl@:Prr`?%^_FTTrs/W)s2R81!!!&UrrAVJklTB8&V9trrrVnNn[nf&[4(m&s6fmhgF7%< -WrE+eOlu`FW70,n!YGF_n`^)"3e.~> -!B:&NirG&9rr`?%^_FTTrs/W)s2R81!!!&UrrA#9ir[O,&V9trrrVq^o"4o'[4(m&s6fmhgF7%< -WrE+gTBH4TZe<_*!YGFYn`'Yf2h1~> -!BpJTm/X-`rrW8:'Ys8=#QXo)*2rB+nc7MG!3+lC!Xo(rJcEIa!O8c>rrW$F[=SAErr_a\8+ -!BU8Qkl@:PrrW8:'Ys8=#QXo)*2rB+nc7MG!1i$3!Xo(rJcEIa!P5bQrrW$F[=SAErr_a\8+ -!B:&NirG&9rrW8:'Ys8=#QXo)*2rB+nc7MG!0#gq!Xo(rJcEIa!Q2^crrW$F[=SAErr_a\8+ -!BpJTm/X-`rrN07_!q@0!<<'4Yk[$T!8[YTWSd(E/-*hDs1\L7np9l?rrJ6QJcG$8"8m$cgT1>T -Hh6J$!TJs`rrU=C/F`$-eieN~> -!BU8Qkl@:PrrN07_!q@0!<<'4Yk[$T!8[YTS_rZ5/-*hDs1\L7o83+QrrJ6QJcG$8"8m$cgT1>T -MY--4!TfWprrU=C/F_m)c8pI~> -!B:&NirG&9rrN07_!q@0!<<'4Yk[$T!8[YTN8NXs.fd_Cs1\L7opGEcrrJ6QJcG$8"8m$cgT1>T -RJ#eD!U-?,rrU=C/+DR"_`*)~> -!BpJTm/X-`rrE,8n,EXns8TAL"[JShsCJ@!2G,F^&J,7ZG->?lk\-&s60IaR1[<;rrJ&< -kl1__GkTSc!i#`knEg8-4b*~> -!BU8Qkl@:PrrE,8n,EXns8TAL"[JGhrt2:!2G,F^&J,A]>":Hlk\-&s60IaR1[<;rrJML -kl1__L\K6s!i#`inEBu!3e.~> -!B:&NirG&9rrE,8n,EXns8TAL"[J6hr=c2!2G,F^&J,J`4l6Qlk\-&s60IaR1[<;rrJt\ -kl1__QMAo.!i#`gnDaPe2h1~> -!BpJTm/X-`rrBjNrrB%Um/hD1H@c+0rrVV8p:pY-Ck;WKrrU%LRB?JiS($R#!LM?brrRKHFn"c! -eieN~> -!BU8Qkl@:PrrBjNrrAVIklPo+H@c+0rrV\HpV6b.Ck;WKrrU%LRB?JiVV()3!M\8qrrRKHF7ADp -c8pI~> -!B:&NirG&9rrBjNrrA#8irX0"H@c+0rrVbYpqQk/Ck;WKrrU%LRB?JiZ/+UC!Nt;-rrRKHE:Dlg -_`*)~> -!BpJTm/X,trrB%Um/idX;1\b[rrK%._#FJd(@6VPjo5G;.;o'errK1 -!BU8Qkl@9drrAVIklR7Q;1\b[rrKC?_#FJd(@6VPjo5G;.;o'errKLLkPkRu]@-]\;#m$RklK'j -J,~> -!B:&NirG%MrrA#8irYJG;1\b[rrK^P_#FJd(@6VPjo5G;.;o'errKj]kPkS(`7"Ye;#lmNirR%V -J,~> -!BpJTm/X,trrB%Um/k-)."VE2rrVJ5pqct28 -!BU8Qkl@9drrAVIklSU"."VE2rrVSFq8*(38-ih$OklK'j -J,~> -!B:&NirG%MrrA#8irZdl."VE2rrVYWq8*(38 -!BpJTm/X,trrB%Um/uJQ"SmWK]`/#,^;BmO[4(m&s5O%\r,*t -!BU8Qkl@9drrAVIkl]oI"SmWK]`/#6`PVWV[4(m&s5O%\r,*t -!B:&NirG%MrrA#8ire'="SmWK]`/#AbejA][4(m&s5O%\r,*t -!BpJTm/X,trrB%Tm/eF2e:IY4rrV>3qS`C8qC&b&s53hXR2EZDrrLT=k5PICgsl?*e,UZ\m/bd$ -J,~> -!BU8Qkl@9drrAVHklN".e:IY4rrVGDqo&L9qC&b&s53hXR2EZDrrLcMk5PIPi7.c.e,UZ\klK'j -J,~> -!B:&NirG%MrrA#7irU>'e:IY4rrVMUqo&L9qC&b&s53hXR2EZDrrLr]k5PI\jOF22e,UW[irR%V -J,~> -!BpJTm/X,trrB%Tm/ffYX+C;_rrJ\.`;]k#8:gfsrrTnORBunoi/d%#!O95crrT5$8FPpHeieN~> -!BU8Qkl@9drrAVHklO?TX+C;_rrK(?`;]k#8:gfsrrTnORBunoj.#32!P6+srrT5$8+5[Cc8pI~> -!B:&NirG%MrrA#7irVXLX+C;_rrKIQ`;]k#8:gfsrrTnORBunokG[PC!Q3%/rrT5$7IT7;_`*)~> -!BpJTm/X,trrB%Tm/h2+It@X3rrV/0rPnj=lk\-&s4mVVgF7%<[Jp9oK'*(6e!SYb!e12gn*L/, -4b*~> -!BU8Qkl@9drrAVHklP]%It@X3rrV;Brl4s>lk\-&s4mVVgF7%<[Jp9qOQQQDfV?sr!e12en*'ku -3e.~> -!B:&NirG%MrrA#7irWrqIt@X3rrVDSrl4s>lk\-&s4mVVgF7%<[Jp9sT'$%Rh65?.!e12bn)FGd -2h1~> -!BpJTm/X,trrB%Tm/idX:P&PWrrJJ.`rH'TJcFI("7SfNn@&>tpibg"!q^a9ec,\H!1`NF!S0Da~> -!BU8Qkl@9drrAVHklR7Q:P&PWrrJk?`rH'TJcFI("7SfNn@&>tq1[u2!qqEKec,\H!1E -!B:&NirG%MrrA#7irYJG:P&PWrrK:Q`rH'TJcFI("7SfNn@&>tqN^4C!r&&\ec,\H!1!$5!Q-jH~> -!BpJTm/X,tmJs6Cm/k?/++aI'rrUr0rlG*@eJ@M&s4RDSr,*t<[f6AOq<%\XLu[%c!ZqE`n*L/, -4b*~> -!BU8Qkl@9dmJrg7klSg(++aI'rrV)ArlG*@eJ@M&s4RDSr,*t<[f6A^qW@eYQ0-Ws!ZqE]n*'ku -3e.~> -!B:&NirG%MmJr4&ir[!r++aI'rrV5SrlG*@eJ@M&s4RDSr,*t<[f6AmqW@eYUZp>/!ZqEXn)FGd -2h1~> -!BpJTm/X,tmJs6Cm/uV[!UbO=])Memd)c4f8&]2$W!J9_$rrK.9f)Gj?!=A&[m/bd$ -J,~> -!BU8Qkl@9dmJrg7kl^&S!UbO=])Mf$e]@ak8&]2$W!Kcd4rrKLJf)Gj?!=@oWklK'j -J,~> -!B:&NirG%MmJr4&ire3G!UbO=])Mf1g;s9p8&]2$W!M8iDrrKgZf)Gj?!=@]QirR%V -J,~> -!BpJTm/X,tmJs6Bm/f'D^OcErrrU`0rlY6BZmbd%s4.,N_@`$BrrJ/ -!BU8Qkl@9dmJrg6klNU?^OcErrrLf@ao;FL./JMpec,]f&X9g*!Lr04rrLQIf)Gfd!&F!,!R<`V~> -!B:&NirG%MmJr4%irUq8^OcErrrLuRao;FL./JMpec,]f&X9g*!N5,CrrLcZf)Gfd!& -!BpJTm/X,tmJs6Bm/gVpO+I>BrrW1Wf@Bm0rjmAoEI#.ps8VU2`.@s;rr_(/B)0% -!BU8Qkl@9dmJrg6klP/kO+I>ArrJJ@ec-'W\p877H+O"Ts7%2LJcF4!"5PP@q7?S,VV(&2!Uu#u -rrS5]?LI%Yc8pI~> -!B:&NirG%MmJr4%irWEbO+I>ArrJqRec-'W\p877H+O"Ts7%2LJcF4!"5PP@q7?S,Z/+RB!V2]1 -rrS5]>OLMP_`*)~> -!BpJTm/X,tmJs6Bm/i7I?\/6frrLB-f)H0&>E->1^:fM1bl;9eJcF-t"7o>Pl+?rrVoRp!!J0Of -rrQO-NUH07eieN~> -!BU8Qkl@9dmJrg6klQ_B?\/6frrLT?f)H0&>E->1^:fM1bl;9eJcF-t"7o>Pl+?rrZ-DD1!KZU! -rrQO-MXK^0c8pI~> -!B:&NirG%MmJr4%irXu9?\/6frrLcPf)H0&>E->1^:fM1bl;9eJcF-t"7o>Pl+?rr]@>sB!M/]2 -rrQO-L[O1'_`*)~> -!BpJTm/X-`mJsT0mJs6Bm/jfu/qO&5rrW.Ph:V`.P(!/?"+>,1nU^_err`4J+O@_#!OTK#rrJn9 -fDbn)!4hOb!S0Da~> -!BU8Qkl@:PmJsT0mJrg6klS9n/qO&5rrW1_iRn/2P(!/?"+>,1nU^_err`4J+O@_#!PH;2rrK7I -fDbn)!4M=[!R<`V~> -!B:&NirG&9mJsT0mJr4%irZIc/qO&5rrW1mjk0S6P(!/?"+>,1nU^_err`4J+O@_#!Q<.BrrKUZ -fDbn)!3ttP!Q-jH~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK!%$"U"@Is1/.1c(s%m!KN99^&`n(JcF!p!id$9^&J,P\`Nhl -bcob""7lTuipQ%3c8pI~> -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zg7#Z!8?i@WSHkB0*&e=s1/.2qgdb^rrL#aotCHR_h%j4rr^RiIJpq\!Q_2# -rrM>:f`)#g!&*a,!S0Da~> -!BU8Qkl@:PmK*A%Zg7#Z!8?i@S_WH2/c`\ -!B:&NirG&9mK*A%Zg7#Z!8?i@N83Fp/HES;s1/.2r1*',rrL#aotCHR_h%j4rr^RiIJpq\!S"aC -rrMMZf`)#g!%mTu!Q-jH~> -!BpJTm/X-`mK3I)'=7?!q>^Qa!8?i@WSHkB@K;::s1&(0^nBK_!r?08otCL@>l'$Oc2Rn14](ac -rrLN=jo5D]Hh#eh!f?temHjr*4b*~> -!BU8Qkl@:PmK3I)'=7?!q>^Qa!8?i@S_WH2?iZ(8s1&(0a/e"q!r?08otCL@>l'$Oc2Rn14](ac -rrL]MjSo7 -!B:&NirG&9mK3I)'=7?!q>^Qa!8?i@N83Fp?3#k6s1&(0cF)I-!r?08otCL@>l'$Oc2Rn14](ac -rrLl]jSo7Ko\'6GM?$uMirR%VJ,~> -!BpJTm/X-`mKaPiPiViFSC#sh!`T/bmHjr*4b*~> -!BU8Qkl@:PmKaPmT]H+RVq'K#!`T/`mHFYs3e.~> -!B:&NirG&9mKaPqXQ9B^ZJ+"3!`T/\mGe5b2h1~> -!BpJTm/X-`mKEUjs1f;SoBlSYrU'ghIh`8okMP\-WSHkB`rI03s0r"/\Yn9`!+tc8!+pf^b5VO- -&AQ*^!T]1"rrKg:g&D*p!6=Ko!S0Da~> -!BU8Qkl@:PmKEUjs1f;SoBlSYrU'ghIh`8okMP\-S_WH2_uLj0s0r"/_6Mhr!+tc8!+pf^b5VO- -&AQ*^!U#j2rrL'Jg&D*p!6"9h!R<`V~> -!B:&NirG&9mKEUjs1f;SoBlSYrU'ghIh`8okMP\-N83Fp^Ao=+s0r"/ah$=.!+tc8!+pf^b5VO- -&AQ*^!U?NBrrL -!BpJTm/X-`mJm7drrR`Ojn.s@!<) -!BpJTm/X-`mKEUjs1f;SoBlSYrU'ghbjOoB)W0r_WS?eA56.mY!'fi;!S0Da~> -!BU8Qkl@:PmKEUjs1f;SoBlSYrU'ghbjOoB)W0r_S_NB14ohd;s0r"/]=6\t!N;Ld^&S00^&S04 -^&a_%JcEjl"6rN=hSoKqpP@o1!r@WJg]%>Y!']c6!R<`V~> -!B:&NirG&9mKEUjs1f;SoBlSYrU'ghbjOoB)W0r_N8*@o492R9s0r"/_nb10!N;Ld^&S00^&S04 -^&a_%JcEjl"6rN=hSoKqpm:(A!rJ8\g]%>Y!'KW.!Q-jH~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=75s!!)uc"TZd7m`QO+mJs6@m/jEj21be9rrK1-i;Wdtr4W.2qRuq0rOr8P -JcEai"3r9&oZ-t4H1g7u!Nj)jrrP%XY3bNVeieN~> -!BU8Qkl@:PmK3I)'=75s!!)uc"TZd7m`QO+mJrg4klRmc21be9rrKL?i;Wdtr4W.2qRuq0rOr8P -JcEai"3r9&oZ-t4M"]p0!Op&&rrP%XX6f'Oc8pI~> -!B:&NirG&9mK3I)'=75s!!)uc"TZd7m`QO+mJr4#irZ+Y21be9rrKjQi;Wdtr4W.2qRuq0rOr8P -JcEai"3r9&oZ-t4QhTS@!Plt7rrP%XVsNFE_`*)~> -!BpJTm/X-`mK*A%ZgdA_!<) -!BU8Qkl@:PmK*A%ZgdA_!<) -!B:&NirG&9mK*A%ZgdA_!<) -!BpJTm/X-`mK!Uc!-%kM!!)l0!!)u3!-!Mh -_uBh:(6JO -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs6?m/h#&IY%O-rrVD4qVqMTEr[P*!,Cie!S0Da~> -!BU8Qkl@:PmJsT0mJrg3klPQ!IY%O-rrVJEqr7VUEr[P*!,:c`!R<`V~> -!B:&NirG&9mJsT0mJr4"irWfmIY%O-rrVSVqr7VUEr[P*!+tQW!Q-jH~> -!BpJTm/X,tmJs6?m/j$_6%T'DrrJ\-jSo>;OYjcM^&\MEr4W38$3%X>]leo+_>aW6GnId7rrJ\= -j8T.Pbh`:#5ld\Gm/bd$J,~> -!BU8Qkl@9dmJrg3klRLX6%T'DrrK(?jSo>;OYjcM^&\MEr4W38$3%X>]leo+_>aW6GnId7rrK(M -j8T.[dbXp)5ldSDklK'jJ,~> -!B:&NirG%MmJr4"irY_N6%T'DrrKIQjSo>;OYjcM^&\MEr4W38$3%X>]leo+_>aW6GnId7rrKI] -j8T.ef\QQ/5ldG@irR%VJ,~> -!BpJTm/X,tmJs6?m/u/F$N#DS[f6EfJc+d4#Pu/U-lQW>S,L&%0mro5!I?L"^&a_%JcELb"2>If -pWid>Us%fu!Pb_mrr`-*!T!)/!S0Da~> -!BU8Qkl@9dmJrg3kl]W?$N#DS[f6EjO8\>C#Pu/U-lQW>S,L&%0mro5!I?L"^&a_%JcELb"2>If -pWid>Y0l;0!QMP(rr`-*!SZl(!R<`V~> -!B:&NirG%MmJr4"irdd3$N#DS[f6EmSc.gQ#Pu/U-lQW>S,L&%0mro5!I?L"^&a_%JcELb"2>If -pWid>\C]d@!RAF9rr`-*!S$Gq!Q-jH~> -!BpJTm/X,tmJs6>m/ed<^OcEmrrJJ.m/IFbP#ViJK$F;pk&gR9#`o[EY.Ll^&Wm"+!HdITs1\L8 -m8kjcci4$H`8gjui/HOm!l"^clKnW'4b*~> -!BU8Qkl@9dmJrg2klN=7^OcEmrrJk?m/IFbP#ViJK$F;pk&gR9#`o[EY.Ll^&Wm"+!HdITs1\L8 -m8kjcci4$QbN&U'j-ed(!l"^blKJ>p3e.~> -!B:&NirG%MmJr4!irUY0^OcEmrrK:Qm/IFbP#ViJK$F;pk&gR9#`o[EY.Ll^&Wm"+!HdITs1\L8 -m8kjcci4$[dGt6-kGI,9!l"^alJho_2h1~> -!BpJTm/X,tmJs6>m/h#&I"D=*rrUr0rpg!nrlp$R$<<8]qu6Y.r4WB"3=Z*#30aBU!+pf^]Dhu. -(5i( -!BU8Qkl@9dmJrg2klPMuI"D=*rrV)Brpg!nrlp$R$<<8]qu6Y.r4WB"3=Z*#30aBU!+pf^]Dhu. -(5i(p3e.~> -!B:&NirG%MmJr4!irWclI"D=*rrV5Srpg!nrlp$R$<<8]qu6Y.r4WB"3=Z*#30aBU!+pf^]Dhu. -(5i( -!BpJTm/X,tmJs6>m/j3d3._+:rrJ5.o`#0fY@JP"F2%MGrrJjdo=b6tU4N?Urr_1D5N'ui!P,Yu -rrJ59hu -!BU8Qkl@9dmJrg2klR^^3._+:rrJY?o`#0fY@JP"F2%MGrrJjdo=b6tU4N?Urr_1D5N'ui!PlJ0 -rrJ\Jhu -!B:&NirG%MmJr4!irYnS3._+:rrK+Ro`#0fY@JP"F2%MGrrJjdo=b6tU4N?Urr_1D5N'ui!Q`=@ -rrK+Zhu -!BpJTm/X,tmJs6>m/u>O"Rq!B[Jp1%RuT9o`#!h>eTgE!khk8JcE:\"9")mUXT5D -^Tc_t!O98prr_`n"leh7!S0Da~> -!BU8Qkl@9dmJrg2kl]cG"Rq!B[Jp9\RJ6^cglY&97ZlKurrW%%^%K)@]j1Dbs1/.3rJDAce,KHg -\`3Vi]#*D*"7QEshWj>+c8pI~> -!B:&NirG%MmJr4!irdp:"Rq!B[Jp9aVYC)pglY&97ZlKurrW%%^%K)@]j1Dbs1/.3rJDAce,KHo -_;bIq_TLg:"7QErf]qJt_`*)~> -!BpJTm/X,tmJs6=m/f6IZ%;q_rrW1WfDPXRqS%#!)J$&CnG`O,HhG)RHc(F7[f6HV/6D5hrrL-= -ir9&,Rc+2IYlHcJm/bd$J,~> -!BU8Qkl@9dmJrg1klNgEZ%;q^rrJJ@r;R#u^2k\@A?YUorrL#aotCHR_h%irrr^V!=7+Q -!B:&NirG%MmJr3uirV+=Z%;q^rrJqRr;R#u^2k\@A?YUorrL#aotCHR_h%irrr^V!=7+Q -!BpJTm/X,trrB%Nm/hJ3D1V_orsR)8s8VeV<=1[:c2R)0!KN99^&a=UJcE+W"8?aI^"32ac(a4t -!qCX:iVrsr!-d\p!S0Da~> -!BU8Qkl@9drrAVBklPu-D1V_orsR;Js8VeV<=1[:c2R)0!KN99^&a=UJcE+W"8?aI^"32ad]DI. -!V;0+rrR$;Fm8,kc8pI~> -!B:&NirG%MrrA#1irX6$D1V_orsRJ[s8VeV<=1[:c2R)0!KN99^&a=UJcE+W"8?aI^"32afXKl? -!VDc;rrR$;Ep;Tb_`*)~> -!BpJTm/X,trrB%Nm/j]r.=qN+rs/LEIR4B>P4[r;!Kqm,^&`YFJcE"T"25F\n_!jBe!o=r!J9Rp -rrOVL[d!/[eieN~> -!BU8Qkl@9drrAVBklS0k.=qN+rs/ORJ3jT@P4[r;!Kqm,^&`YFJcE"T"25F\n_!jBfV[X-!Kc[, -rrOVLZg$]Tc8pI~> -!B:&NirG%MrrA#1irZCa.=qN+rs/O_K0foCP4[r;!Kqm,^&`YFJcE"T"25F\n_!jBh6Gr=!M8`< -rrOVLYNb'J_`*)~> -!BpJTm/X,trrB%Nm/uS`!8`;,\,QZ[JMIcuZ1d5X$-ZV5]tV4oN&o16s0)G)nR`lSg&D*-Pi;WC -U<2Ep"5X"gl07R9eieN~> -!BU8Qkl@9drrAVBkl^#X!8`;,\,QZ[JMIg%Z1d5X$-ZV5]tV4oN&o16s0)G)nR`lSg&D*1T],nO -Xj?#,"5X"gjlu"1c8pI~> -!B:&NirG%MrrA#1ire0K!8`;,\,QZ[JMIg)Z1d5X$-ZV5]tV4oN&o16s0)G)nR`lSg&D*5XPs0[ -\(0L<"5X"fhs'/%_`*)~> -!BpJTm/X,trrB%Mm/g)aP_&kHrsAV>E?ZTH_>&QAiVs2_\p876H*.YOJcDkP"1fRdn_='EiJums -"hTl;_;"YFrrSDb;!@9IeieN~> -!BU8Qkl@9drrAVAklOT[P_&kHrsAV>E?ZTH_>0,SiVs2_\p876H*.YOJcDkP"1fRdn_='EjdP0. -"i6VJ_;"YFrrSDb:?^pCc8pI~> -!B:&NirG%MrrA#0irVmSP_&kHrsAV>E?ZTH_>0VdiVs2_\p876H*.YOJcDkP"1fRdn_='EkbmD> -"j!FZ_;"YFrrSDb9^(L;_`*)~> -!BpJTm/X,trrB%Mm/iOQ8qI#Vrs&2%@MLYLdJa(G^nBE]!B[lDs/c5&nR`lSq>UQ[b0&o2rrM>= -jSoVLDea68M26Y%C2`4urrPdmQ0@T9eieN~> -!BU8Qkl@9drrAVAklR%K8qI#Vrs&2%@MLYLdJa(Ga/dqo!B[lDs/c5&nR`lSq>UQ[b0&o2rrMGM -jSoVLDea69M26Y%C2`4urrPdmPN_63c8pI~> -!B:&NirG%MrrA#0irY8A8qI#Vrs&2%@MLYLdJa(GcF)C+!B[lDs/c5&nR`lSq>UQ[b0&o2rrMM] -jSoVLDea6:M26Y%C2`4urrPdmO6GU)_`*)~> -!BpJTm/X-`rrBjNrrB%Mm/tuB$2/rM_Z'im#$0,r- -G_h-">&WHerrMS=k5PP?9kh37^&tr\:#>7:"83$&f]_]'eieN~> -!BU8Qkl@:PrrBjNrrAVAkl]E:$2/rM_Z'im#$0,r- -G_h-">&WHerrMYMk5PP?9kh37^&tr\:#>7:"83$&eEH,tc8pI~> -!B:&NirG&9rrBjNrrA#0irdU/$2/rM_Z'im#$0,r- -G_h-">&WHerrM\]k5PP?9kh37^&tr\:#>7:"83$&cfjBi_`*)~> -!BpJTm/X-`rrE,8_Z'V8f'NMn!4@CX`;^"pFr!H/p@eLe\Yn3^!QcpEs/H#'nR`HMpLA!Oqn<0F -CLd,+rrM_=kPkUeC:s5R!k`9OmJd6q!&<[(!S0Da~> -!BU8Qkl@:PrrE,8_Z'V,f'*5i!4@CX`;^"pFr!H/p@eLe^p2Yo!QcpEs/H#'nR`HMpLA!Oqn<0F -CLd,+rrMeMkPkUeC:s5R!k`9OmJd6q!&3U#!R<`V~> -!B:&NirG&9rrE,8_Z'Upf&Hfb!4@CX`;^"pFr!H/p@eLeaL^.+!QcpEs/H#'nR`HMpLA!Oqn<0F -CLd,+rrMh]kPkUeC:s5R!k`9OmJd6q!&*Nq!Q-jH~> -!BpJTm/X-`rrN07^r-0PWRgG#7^&`kYmf*?'!-[Pm!S0Da~> -!BU8Qkl@:PrrN07^r-0PS_!$,F9$',s2Y-Cq5H^tG1uQf!r%QAh#@HR']aiFW;ct4&3[Dp^&kZD -o^;_[q1e,5!M>#7^&`kYmf*?'!-IDg!R<`V~> -!B:&NirG&9rrN07^r-0PN7R"jE<'a)s2Y-Cq5H^tG1uQf!r//Rh#@HR']aiFW;ct4&3[Dp^&kZD -o^;_[q3L7E!M>#7^&`kYmf*?'!-.2^!Q-jH~> -!BpJTm/X-`rrW8:'YsA@q>f1J!3+Q:!k\LPJcEjl"kn,96`KnNrrKC,g]%:USq6p>rrH-,otCI6 ->OMLlr,_-&!Ru)W^&`3&n,EG.!5.L^!S0Da~> -!BU8Qkl@:PrrW8:'YsA@q>f1J!1h^*!kA:MJcEjl"kn,96`KnNrrK^?g]%:USq6p>rrH-,otCI6 ->OMLlr.F86!Ru)W^&`3&n,EG.!4h:W!R<`V~> -!B:&NirG&9rrW8:'YsA@q>f1J!0#Lh!jhqHJcEjl"kn,96`KnNrrL$Qg]%:USq6p>rrH-,otCI6 ->OMLlr0-CF!Ru)W^&`3&n,EG.!4:qL!Q-jH~> -!BpJTm/X-`rr`?%^_FTTrr<&LrrB%Lm/uYk!7$/qc2RtCWC%JFg?nnAnp9o_rrJQpJcD\K!MttT -^&S02^&aCnr;QlecE;rsIfVNXm!f1sa_8B%^AJ!)^&bo]nG`U9!#Y%bm/bd$J,~> -!BU8Qkl@:Prr`?%^_FTTrr<&LrrAV@kl^)c!7$/qc2RtCWC%JFg?nnAo83.qrrJQpJcD\K!MttT -^&S02^&aCnr;QlecE;rsIfVf`m!f1sa_8B%^AJ!)^&bo]nG`U9!#Xn^klK'jJ,~> -!B:&NirG&9rr`?%^_FTTrr<&LrrA#/ire6V!7$/qc2RtCWC%JFg?nnAopGI.rrJQpJcD\K!MttT -^&S02^&aCnr;QlecE;rsIfW)hm!f1sa_8B%^AJ!)^&bo]nG`U9!#OVWirR%VJ,~> -!BpJTm/X-`rriE&s1f>aoD]@%s8UnL$jT8bs8UnL$jT8bjo5=[ea3EH!.BFuci41&Fr*NFqqtB`>aD!!0e6qn -!BU8Qkl@:PrriE&s1f>aoD]@%s8UnL$jT8bs8UnL$jT8bjo5=Oe`d-C!.BFuci41&Fr*NFqqtB`>aD!!0e6qn'J-1:2/kl2W!!)W)!G_5rrrRTK -@-6\Sc8pI~> -!B:&NirG&9rriE&s1f>aoD]@%s8UnL$jT8bs8UnL$jT8bjo5=>e`-^:!.BFuci41&Fr*NFqqtB`>aD!!0e6qn -!BpJTm/X-`rr<&urrR`Op%87q!<<'L^@q&7=TACO^@q&7=QTP_WR^A;XT0o's3goNqNXD`G1u-Z -!pt@/h>[QU']joGWrE+fEW!NN!<0\4!;jJ6>?luecL1<(!I=D)rrLK"r4W.2rk8U;"])kH!!Q0t -^&`o6nc&YA!3PDN!S0Da~> -!BU8Qkl@:Prr<&urrR`Op%87q!<<'L^@q&7=TACO^@q&7=QTP_S^ls+WW4T$s3goNqNXD`G1u-Z -!q2$Ah>[QU']joGWrE+fEW!NN!<0\4!;jJ6>?luecL1<(!JpL9rrLK"r4W.2rk8U;"])kH!!Q0t -^&`o6nc&YA!352G!R<`V~> -!B:&NirG&9rr<&urrR`Op%87q!<<'L^@q&7=TACO^@q&7=QTP_N7HqiV>r/us3goNqNXD`G1u-Z -!qD]Rh>[QU']joGWrE+fEW!NN!<0\4!;jJ6>?luecL1<(!LNTIrrLK"r4W.2rk8U;"])kH!!Q0t -^&`o6nc&YA!2eo=!Q-jH~> -!BpJTm/X-`rriE&s1f>aoD\djqu6]i'`7n2ob?Nf!3+N9"6^9rg4B:Trs&A0>RjAmr8dkYUqGL_ -!Df\Gs/Q)"c%l52!!*#4!rtaqE;mQPLX#;f!IaM(rrLK"r4WO=^:mk[!!9l?$31/,^&`o6o)AgG -!"eAVm/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoD\djqu6]i'`7n2ob?Nf!1h[)"69smg4B:Trs&A0>RjAmr8dkYY/B&p -!Df\Gs/Q)"c%l52!!*#4!rtaqE;mQPLX#;f!K?X9rrLK"r4WO=^:mk[!!9l?$31/,^&`o6o)AgG -!"\/QklK'jJ,~> -!B:&NirG&9rriE&s1f>aoD\djqu6]i'`7n2ob?Nf!0#Ig"5aUhg4B:Trs&A0>RjAmr8dkY\BE\- -!Df\Gs/Q)"c%l52!!*#4!rtaqE;mQPLX#;f!LiZHrrLK"r4WO=^:mk[!!9l?$31/,^&`o6o)AgG -!"[uLirR%VJ,~> -!BpJTm/X-`rr`?%^_FTTrt#21s2R81!!!'"s2R81!!!&]rrB%Jm/g;gM1P]ZrrpP`(c[`EiVruC -IJVe"!K1fGs/Z/$qn%R[^&S04^&nA%QOa#/!JeqgrrI`=li."WCAbdR!5?/NR$7Tb"dkMSrk8DJ -oCDn_M#^T -!BU8Qkl@:Prr`?%^_FTTrt#21s2R81!!!'"s2R81!!!&]rrAV>klOibM1P]ZrrpP`(c[`EiVruE -N;MH2!K1fGs/Z/$qn.X\^&S04^&nA%QOa#/!JeqgrrJ5Mli."WCAbdR!5?/NR$7Tb"dkMSrk8DJ -oCDn_M#^Q;klK'jJ,~> -!B:&NirG&9rr`?%^_FTTrt#21s2R81!!!'"s2R81!!!&]rrA#-irW*YM1P]ZrrpP`(c[`EiVruH -Retq@!K1fGs/Z/$r4e!a^&S04^&nA%QOa#/!JeqgrrJ_]li."WCAbdR!5?/NR$7Tb"dkMSrk8DJ -oCDn_M#^H8irR%VJ,~> -!BpJTm/X-`rrW8:'Ys8=&-2b1*2rB+nc8^i*2rB+nc7eO!3+K8!hoZSJcFL)"l"ST-@sq-rrJ\. -h>[Mr0nKA1rsAM`d_;]GJTQX:'F;k^.ni* -!5?1\C%;3)2uo]7m/bd$J,~> -!BU8Qkl@:PrrW8:'Ys8=&-2b1*2rB+nc8^i*2rB+nc7eO!1hX(!hTHPJcFL)"l"ST-@sq-rrK(? -h>[Mr0nKA1rsAPdf>Y(iO+`C(r4W.2rk8I7Q^83]^&`6An,EEQlg"KNBtaJZ%fj>X:'F;k^.ni* -!5?1\C%;3)2uoT4klK'jJ,~> -!B:&NirG&9rrW8:'Ys8=&-2b1*2rB+nc8^i*2rB+nc7eO!0#Ff!h00LJcFL)"l"ST-@sq-rrKIQ -h>[Mr0nKA1rsAPfgs!F5SWf@Rr4W.2rk8I7Q^83]^&`6An,EE^mcsfQBtaJZ%fj>X:'F;k^.ni* -!5?1\C%;3)2uoH0irR%VJ,~> -!BpJTm/X-`rrN07_!q@8!<<'4Yk[$T!<<'4Yk[$T!9O4\WRU;;jTtqIJcFX-"mV:2(iRRNrrV/1 -r8.GTq$lkFs184ApuKf6ViuURLn(]gg$Sb -!BU8Qkl@:PrrN07_!q@8!<<'4Yk[$T!<<'4Yk[$T!9O4\S^cm+i<]MEJcFX-"mV:2(iRRNrrV;C -rSIPUq$lkFs184Aq<-;GZ(I#0Q)D19h=(@CB`,RE!<0\7!(.!0rk8AGmf* -!B:&NirG&9rrN07_!q@8!<<'4Yk[$T!<<'4Yk[$T!9O4\N7?kigBdl?JcFX-"mV:2(iRRNrrVDT -rSIPUq$lkFs184Aq -!BpJTm/X-`rrE,8n,Eq!s8TAL"UJlP4QBgP,7UH!KZ1'rrJaEn\,$VTCMp_N;uc8m/bd$ -J,~> -!BU8Qkl@:PrrE,8n,Eq!s8TAL"UJlP4QBgP,7UH!Lr07rrJaEn\,$VTCMp_N;u]6klK'j -J,~> -!B:&NirG&9rrE,8n,Eq!s8TAL"e)LL&!0)R0ir95^RS"&p\,4eW!Nsu/ -rrGBpJcERd%f#8@agnF?Q)(e)e)U#uq>UJlP4QBgP,7UH!N>2GrrJaEn\,$VTCMp_N;uW4irR%V -J,~> -!BpJTm/X-`rrBjNrrB%Im/is]21begrrr.c-6AKLeGfU)LAp'0s*TCtaSubBi68^+O*c,1TX;eq -nG_tX!F)r(^&bTFmJd3Nh!"b>YA1`C^&kr^YOMPn2#s?2m/bd$J,~> -!BU8Qkl@:PrrBjNrrAV=klRFV21begrrr.c-6AKLeGfU-PlBP>s*TCtaSu_CjO1iHS;N)iX1cg: -o'lY[>I=(;!OQ(urrJbMkl1^fC:s5R!k`9OnG`PI!1r99!R<`V~> -!B:&NirG&9rrBjNrrA#,irYYL21begrrr.c-6AKLeGfU1U&NpKs*TCtaSu_DkLdkcW0rsK[Dg\W -o^Mk]>I=(;!OQ(urrK1]kl1^fC:s5R!k`9OnG`PI!1N!/!Q-jH~> -!BpJTm/X,trrB%Im/uJ[!8E))kPk\RL)EY#d/O--d,+d'\3PWFci4IFhTE7"NHof0U:/5%oBH8V -oN8Kp^&kZDo^2YZQe:L$"5Zad](s&B\nOmqnG`UF!"J)Om/bd$J,~> -!BU8Qkl@9drrAV=kl]oS!8E))kPk\RL)EY#d/O-:e_^<,\3PWFci4IHim>E@RYZcgXM3'@o]cAW -oN8Kp^&kZDo^2YZUYP&4"5Zad](s&B\nOmqnG`UF!"IrKklK'jJ,~> -!B:&NirG%MrrA#,ire'F!8E))kPk\RL)EY#d/O-FgYVr2\3PWFci4IIjjqG[VjEaJ\&R"]p$)JX -oN8Kp^&kZDo^2YZY2SRD"5Zad](s&B\nOmqnG`UF!"@ZDirR%VJ,~> -!BpJTm/X,trrB%Hm/g;gKRs0frrhA''4956rrLW.hZ!ZI%JbSTf`)H\nD)*lT8Rr@O/'5/i:Q". -"8?;@]_fDF]PD$Om/I*Ue)gT;j_nmSIu/u2Eb]OSmf*?A!*8.I!S0Da~> -!BU8Qkl@9drrAVQ#R -pLA!Oqn<0FCLd,*rrK"Ljo5_MDea -!B:&NirG%MrrA#+irW*YKRs0frrhA''4956rrLuRhZ!ZI%JbSTfDc -!BpJTm/X,trrB%Hm/j3d/:mierrgeX'6E3XrrW1VfA?N.0unkFhu=2cmb#RcSr.W -!BU8Qkl@9drrAV -!B:&NirG%MrrA#+irYnS/:mierrgeX'6E3WrrJqRhZ!U2a+=9IrsePXe&/PgPFAM^ak>nQf`)9< -Dd%CALit[lj6HXF[G'X?"ngWkaP6CRrrO_OU#Y/6_`*)~> -!BpJTm/X,trrB%Hm/uPb!7QN!mf*F+9,WKQao;CdPMZ%f:rrJq=a8Z7j!#"MUm/bd$J,~> -!BU8Qkl@9drrAV%f:rrK:Ma8Z7j!"n;PklK'jJ,~> -!B:&NirG%MrrA#+ire0N!7QN!mf*F+9,WKQao;CoX5%f:rrKX]a8Z7j!"n,KirR%VJ,~> -!BpJTm/X,trrB%Gm/gSoH%H"crrr@g*[[?Ma8Z5>K\kVd!NAkGs6fmtrpejf\"f%5G)2Wk_UduK -_uBb)@-R[lW5lsY!dOcPip?ct4b*~> -!BU8Qkl@9drrAV;klP,jH%H"crrr@g*[[?Ma8Z5?OlG9u!NAkGs6]groA\-3Y+:N*Q);(5g?\XR -rrJKpl2Ldic,]hcGlV.0klK'jJ,~> -!B:&NirG%MrrA#*irWBaH%H"crrr@g*[[?Ma8Z5?TB4u1!NAkGs6]gro]=ZE\>bp]UTqY^hsUE[ -rrJKpl2LdreAqRjGlV%-irR%VJ,~> -!BpJTm/X,trrB%Gm/s`r*W:Qho`#*VJ/U\Arl"g;`gP`a!p(-qJcGHD&,YVB_loSeG(#II[`[Fq -rk/73d3n2Y!Na2[rr`3?!4ChR!S0Da~> -!BU8Qkl@9drrAV;kl\3k*W:Qho`#*VJ/U\Arl"g;bba4s!p(-qJcGHD%fG\Jage77Ko;J'^X1s1 -]DhoZ-gCX3[`QVj"8s5?ZJt*Lc8pI~> -!B:&NirG%MrrA#*ircFa*W:Qho`#*VJ/U\Arl"g;e$.a0!p(-qJcGHD%fGbPd)!#_Q("\]a4BAE -]DhoZ-gCX3^X1(%"8s5?Y2\IB_`*)~> -!BpJTm/X,trrB%Gm/u\t!4ma]p\tEr^Jtn]eA;.dqg[\arrF=pJcG]K%eS`*];LmEFG6*_^XD6= -[/U4*&+/Z^!O0>[rr]h4+RJ+T!S0Da~> -!BU8Qkl@9drrAV;kl^,l!4ma]p\tEr^Jtn]eA;.dr/KmsrrF=pJcG]K%ef#5_QfbpKT`+<`n0GM -[/U4*&+/Z^!P-4krr]h4+R%hL!R<`V~> -!B:&NirG%MrrA#*ire9_!4ma]p\tEr^Jtn]eA;.dr1*'0rrF=pJcG]K%eo2?b.FaGPG#+nc.qX] -[/U4*&+/Z^!Q*+&rr]h4+6);?!Q-jH~> -!BpJTm/X,tmJs65m/hM4>ClhMrrqtY.k?nU^Ae5KT\obM?CHTJ&,knL`j24qH$P@@ZcCeerN-#" -7()=[!O]M[rrQC)GiA#jeieN~> -!BU8Qkl@9dmJrg)klQ#.>ClhMrrqtY.k?nU^Ae5RX5EpX?CHTJ&,ktRbe'mCLkqJ!]Zo=%riH,# -7()=[!PQ@krrQC)G2_Zdc8pI~> -!B:&NirG%MmJr3mirX9%>ClhMrrqtY.k?nU^Ae5Z[GUub?CHTJ&,l%Xe&8YkQ^=SW`7*`9riH,# -7()=[!QE4&rrQC)F5c-[_`*)~> -!BpJTm/X,tmJs65m/tZ8$Lr]Ir;QrMC(aO]rk/74pjDAbrrJBrN;jC_jjLlDQ\9I3Pc).=iq9,I -s*X,3!P,V[rr_cu!RK`l!S0Da~> -!BU8Qkl@9dmJrg)kl]-1$Lr]Ir;QrMC(aO]rk/74q2=UtrrJBrN;jC`kh!e\UQU:kTWuDajn>MM -s*X,3!PuLlrr_cu!R0Ne!R<`V~> -!B:&NirG%MmJr3mird=&$Lr]Ir;QrMC(aO]rk/74qO6m2rrJBrN;jC`leKb!Y+UuLXLl[/kkCnQ -s*X,3!Qi@'rr_cu!QX0Z!Q-jH~> -!BpJTm/X,tmJs64m/f?LSUph@rrrCj5T517\GlT?Vr7RU`AWt\&,>;:_Q]VjHZk79YJ\rVr13ig -[7'<[!PYh\rrS_k45fK,eieN~> -!BU8Qkl@9dmJrg(klNmGSUph@rrrCj5T517\GlTFZ/GW_`AWt\&,GJCagnC=M1q7n\B -!B:&NirG%MmJr3lirV4@SUph@rrrCj5T517\GlTN]AW\i`AWt\&,GPJd)*/eR$FJQ_9q0/r13ig -[7'<[!R/I'rrS_k3T/ou_`*)~> -!BpJTm/X,tmJs64m/iLP52uSGnCYgtf^Pd<"ne0,+.3#8rrVk?n)=9Jo*bJert"kce&&>\N-]]( -R]O6MiU`?7!ppNrli."&Xi^SE4ogi*m/bd$J,~> -!BU8Qkl@9dmJrg(klR"J52uSGnCYgtf^Pd<"ne0,+.3#8rrVnNn_sKLo*bJert"ngfZ:V&R>HZ` -V7":mjn4o=!ppNrli."-[`SON4ogc(klK'jJ,~> -!B:&NirG%MmJr3lirY5@52uSGnCYgtf^Pd<"ne0,+.3#8rrVq^o&9TMo*bJert"qkh9WpEVO3XD -Z+eH9kk:;A!ppNrli."4^WHKW4ogW$irR%VJ,~> -!BpJTm/X,tmJs64m/uJX!SQZ9%Jm&BBlnl_Ndu4cDlNT7rrhV:(/VrTrrKC-i;Wg)eY`?Xrp\jm -^os;eH$>+6XM3'@oSieN-dh8[!QM+]rr^pT$Kg:6!S0Da~> -!BU8Qkl@9dmJrg(kl]oP!SQZ9%Jm&BBlnl_Ndu4cDlNT7rrhV:(/VrTrrK^?i;Wg)eYW9Vo&S?A -\>YdNL6e^F`RX)CN;io+dHgf5bd5Il"5*\^io'&%c8pI~> -!B:&NirG%MmJr3lire'D!SQZ9%Jm&BBlnl_Ndu4cDlNT7rrhV:(/VrTrrL$Qi;Wg)eYW9Vo]OuS -_6]u)QD:_"c.hIUN;io+dHgf5e%Ej'"5*\^gu.2n_`*)~> -!BpJTm/X-`mJsT0mJs63m/gPnFQrf-p4R+IpV$`tBS?)`rrh"f&nfn%rrV_:oAT]M -!BU8Qkl@:PmJsT0mJrg'klP&hFQrf-p4R+IpV$`tBS?)`rrh"f&nfn%rrVeKp#5oO -b.FdIOFrL]WOU""k4XK.!FV;\rrLKMb5VNb!*e@F!R<`V~> -!B:&NirG&9mJsT0mJr3kirW?`FQrf-p4R+IpV$`tBS?)`rrh"f&nfn%rrVh[p>Q#P!Q-jH~> -!BpJTm/X-`mK!:prrUYOZ1G[2YuoJ]rrg8:(4YVOrrK1.iVrq4 -Fh%Garpf%!`k&%5L3%ZuR]F'Eh!Fris8;ltVap(Q!R@C^rr`$2!5.4V!S0Da~> -!BU8Qkl@:PmK!:prrUYOZ1G[2YuoJ]rrg8:(4YVOrrKL?iVrq4 -FgqA_oB+`M_6BYtK8Gql[):;LmehY9r;Qeq8*g0Ue>pdm"8ET2\_lWPc8pI~> -!B:&NirG&9mK!:prrUYOZ1G[2YuoJ]rrg8:(4YVOrrKjQiVrq4 -FgqA_o]b5]ah"UJPF//N^<>-hnGIk;r;Qeq8*g0Ufs]*("8ET2[,9mE_`*)~> -!BpJTm/X-`mK*A%Zg7#Z!;c*`!93DHWQjf3/HD^8rrTl?^%&f<]jAC]rrr=f+!d0FX8`7gHhZP" -!OYA5rtGD'jOVD_Wgo*!F+&t8W3s_!l26,4oD\mc'BJN[!RmR^rrT(u/`,jqeieN~> -!BU8Qkl@:PmK*A%Zg7#Z!;c*`!93DHS^$C#/HD^8rrTl?^%&f<]jAC]rrr=f+!d0FX8`7iMYQ32 -!OYA5rtGD(kM+:u[&9@PJr?"mZG+W?lhl>6oD\mc'BJN[!SF -!B:&NirG&9mK*A%Zg7#Z!;c*`!93DHN6UAa.fcL6rrTl?^%&f<]jAC]rrr=f+!d0FX8`7kRJGkB -!OYA5rtGD)lJL+5]s=Q+P+&5P]Z/I[mehY9oD\mc'BJN[!St')rrT(u/)K:e_`*)~> -!BpJTm/X-`mK3I)'=7?!q>^Qa!;c*`!93DHWQjf3N;u93rrM(fpq?_.rOr73r4W2@iQV<(k/tj/ -oD]!JFr!H6ri#htUV,Ud!Tb*ArtYP*khFG$[]5mZJT?-qR&@@1dc'ZmJcG!7!G@2SrrL`=bPqW0 -!0,k&!S0Da~> -!BU8Qkl@:PmK3I)'=7?!q>^Qa!;c*`!93DHS^$C#M?#s0rrM(fpq?_.rOr73r4W2@iQV<(k/tj/ -oD]!JFr!H6ri#htY/B9!!Tb*@rtP.khpfc^Z`'@SJVoeiZ+eB4jRN2"s69OaB8>jR!SaBmrrPId -MVdRuc8pI~> -!B:&NirG&9mK3I)'=7?!q>^Qa!;c*`!93DHN6UAaLB'X-rrM(fpq?_.rOr73r4W2@iQV<(k/tj/ -oD]!JFr!H6ri#ht\BEn3!Tb*@rtP1oj4_l"]sFZ.OdW#K]#N.Qkk"b(s69OaB8>jR!T:0)rrPId -LYh%l_`*)~> -!BpJTm/X-`mKUWoWC%JFg84fNkC*3drrEnsg&Di]lf$C8]W\)sMLKSm -LQe@3\]*"Smf%e;hu<_t..$s7gQ]q^"5*\_i83i%eieN~> -!BU8Qkl@:PmKUWoWC%JFg84fNlAYW"rrEnsg&Di^mc<'H_mlhCQ]-NQ -Pb4t`^rt?inG\"=hu<_t..$s7hk83n"5*\_gtq8rc8pI~> -!B:&NirG&9mKUWoWC%JFg84fNm$dh2rrEnsg&Di_nEA`ZbJCZjUmmO7 -U8t]9aO8l+o)=4?hu<_t..$s7j/gK)"5*\_fA>Ng_`*)~> -!BpJTm/X-`mKEUjs1f;SoBlSYrU(*pIh`8okO.al]!8rrMh)rOrI9^:jT] -^&\,G!!)o1"%OtRJ+%mqIr%Y#"=$HRLT\qjo)AdH>)`9k!fU= -!BU8Qkl@:PmKEUjs1f;SoBlSYrU(*pIh`8okO.a6&d6rrMh)rOrI9^:jT] -^&\,G!!)o1"%OtRJ+%mqIr%Y#"=$HRLT\qjo)AdH>)`9k!fU=,^pgJCS -!B:&NirG&9mKEUjs1f;SoBlSYrU(*pIh`8okO.a)`9k!fU= -!BpJTm/X-`mJm7drrR`Ojn.s@!<)VQ8p?q%ue]l(H[&g$lPDb$=EI!1rQ_LRi^rt9cl1Fq*s2Y-?LM-#S!TK*`rr_p,!5mX[ -!S0Da~> -!BU8Qkl@:PmJm7drrR`Ojn.s@!<)VQ9p[ID*g="0_]X=o>T9t^sJ;B>VUTCl;a3iW$m.L@/s2Y-?LM-#S!Tfcprr_p,!5RFT -!R<`V~> -!B:&NirG&9mJm7drrR`Ojn.s@!<)VQ9q"!b4hUp9"`4iadX/2DTOI)T;Y.)-bcI^q8me6X2s2Y-?LM-#S!U-H+rr_p,!5%(I -!Q-jH~> -!BpJTm/X-`mKEUjs1f;SoBlSYrU(*pbjOoB)Xd"nbjOoB)X$MgWQXZ12#s*7rrLN#rOraA]Xn3Y -^&XLd%__q0QOa#/!JJkZrsnJBY)$I5%Rb]PmJm47Ab3V=>q6k]r1*cfQHARp-N!H'ki(:Gc,[W2 -F?-4jR?NS`Is5mXJVfPYU8kN2_p$TbjQuO;JcE:\!ot$gmf*=LMTu/&RK,5#m/bd$J,~> -!BU8Qkl@:PmKEUjs1f;SoBlSYrU(*pbjOoB)Xd"nbjOoB)X$MgS]g7!1]X!6rrLN#rOraA]Xn3Y -^&XLd%__q0QOa#/!JJkZrsnJBY)$I5%Rb]PmJm47Ab3V=>q6k]r1*cfU -!B:&NirG&9mKEUjs1f;SoBlSYrU(*pbjOoB)Xd"nbjOoB)X$MgN6C5_1Bq6k]r1*cfXjuk>-N*W/mHETef[S3h -Im:NPYcFXoS!K2'SYW9j\%T`&dF[48lL=QHJcE:\!ot$gmf*=RUs8o@RK,/!irR%VJ,~> -!BpJTm/X-`mKLbO#A#!%m^?!VU+'^()$>N#KFE -!10#^^&XLd%fX0CAbOmY#jo$I6k1SP6G3*-!!)u3!k_&%U]3+Iq"4(Cl/gm[^4=MO`4rmkYH"Fl -R[&tmL4O_qEHHMXLQ7UgTr>0&SK5i!f%f -!BU8Qkl@:PmK@bNT(q!%m^?!VU+'^()$>N#KFE -!10#^^&XLd%fX0CAbOmY#jo$I6k1SP6G3*-!!)u3!k_&%U]3+Jq=aCJlfdHh`K&EobJqE4\?rH? -VP0QJPE1TTJV8l@Q("ACXKo@LUE7b3g>M,[o([e9VZ-ZeVXFHblBTWo!\FD>h!"jb3e.~> -!B:&NirG&9mK/bMrYg!%m^?!VU+'^()$>N#KFE -!10#^^&XLd%fX0CAbOmY#jo$I6k1SP6G3*-!!)u3!k_&%U]3+JqY0XPmd')uc(*J -!BpJTm/X-`mK3I)'=75s!!)uc%04W?m`QO:mJtK!m`QO3mJs60m/uPh!5@t&!H#CH^(Pl)%Y2:- -!(.!0^&UM*Dn`rrD:\^hrm>S9rOrI9^:jT]^&\)F!K4_6s$H\[p@@Y:k2P:Qf@/'ha2>[(\$N9= -Vk]lSR$<\kM1pM/H$++JGC+gkL5M"SQ?\LfWj&nB^r=IBe_8pAl0e0Barr]t8)!KcB!S0Da~> -!BU8Qkl@:PmK3I)'=75s!!)uc%04W?m`QO:mJtK!m`QO3mJrg$kl]u`!5@t&!H#CH^(Pl)%Y2:- -!(.!0^&UM*Dn`rrD:\^hrm>S9rOrI9^:jT]^&\)F!K4_6s$H_]p[dn@l/gp^gXt$'c-"&D^V%(a -Z*(+)UnF9HQBI;eLkL>2L5CnOPF%`0U5,;C[(3lea32iZg"t`Om-s]Drq??nr!W+Is.B;lX$5tO -!UZ&qrr]t8)!'K:!R<`V~> -!B:&NirG&9mK3I)'=75s!!)uc%04W?m`QO:mJtK!m`QO3mJr3hire0T!5@t&!H#CH^(Pl)%Y2:- -!(.!0^&UM*Dn`rrD:\^hrm>S9rOrI9^:jT]^&\)F!K4_6s$H_^q"=4HlfdKki8*,=eBuRba2Gg. -]=>8SYH4_#US+0HQ^!VqQ'e&4TqnTdXd5rs]tq\1cI1:thW!\_mdg)Jrq??nr!W+Is.B;lX$5tO -!Ul],rr]t8(Z4$.!Q-jH~> -!BpJTm/X-`mK*A%ZgdA_!<)i:!Hl*S -^'4SO^&Ym]!;sP3]liuI;#L._oC2/3k2YCUg=Og#c-")F^qI=f['6[4Vk]rVR[98$Nf&UFJUVog -EcQ>KI=[*/N0'9kS=l[VXK](A]YMJ,bg4bigY_&RlL+6:qYp6h!Rm%grrG$sJcDAB!rF"an,EFU -K$OAt;#kjqm/bd$J,~> -!BU8Qkl@:PmK*A%ZgdA_!<)i:!Hl*S -^'4SO^&Ym]!;sP3]liuI;#U7bo^_J;l/q$bhV6]5e'Q@^a2Gj0]XbJXZ*(.+VPBfTR[9;&O,SpL -Jq8W3N/s0gR@U"HVlQu+[CNrc_oKpFdF?h'hr -!B:&NirG&9mK*A%ZgdA_!<)i:!Hl*S -^'4SO^&Ym]!;sP3]liuI;#U7cp%._Am-3]pio&YIf[eO!cHOGO`59:&]"#2TZ*(1.Vkg&[SXZ"3 -P*(uqR[p+HVQ$Z#ZF.3S^;7b/bKeMbf@o'=j6#Umn+-/Hqu6?i!Ss[6rrG$sJcDAB!rF"an,EFY -T$I?;;#k[lirR%VJ,~> -!BpJTm/X-`mK!JbA!re&/jSo6lQ%At,rrIj`n,EFXJ'\,shZF,9g[,$m4b*~> -!BU8Qkl@:PmK!A!JY(PrrM\Mci4+)!s[90klK'jJ,~> -!B:&NirG&9mK!-4j)VPKoXSXPq2PE:rlQ^XG9TqeK`Wi`J1[(!TY^;7_+aNMiTdact& -gtq#Mjll$tn+-,FqYehA!MeW7rrH\rJcD>A!JY(PrrM_]ci4+)!s[*+irR%VJ,~> -!BpJTm/X-`mJsT0mJs6.m/g;gF79,1do`mH^'1cDV1G)qec,Vgr4WI;]Xn3Y^&XLd%fX0OA_Gkr -j5oOkn+-/Hr;NPm!R-ehrrJBrJcD>A!p^HanG`O\I*_foEr]7pm/bd$J,~> -!BU8Qkl@:PmJsT0mJrg"klOibF79,1do`mH^'1cDWfO"=ec,Vgr4WI;]Xn3Y^&XLd%fX0NB&2D* -k32.!nauPNr1s>nd@fS#!L75Is.95llOiIPrrMbMci4&f!*.b;!R<`V~> -!B:&NirG&9mJsT0mJr3firW*YF79,1do`mH^'1cDYar&`ec,Vgr4WI;]Xn3Y^&XLd%fX0NBB&"7 -l0Id,o(DbRr1s>nf<"'5!L75Is.95llOiIPrrMe]ci4&f!)hP2!Q-jH~> -!BpJTm/X,tmJs6.m/t6+%e/re"87C]RJ4E%R:q9Is80`bS`SK'!Hl*S^'ts=N#KFE!10#^^:q:' -R/[6dK&Gbj!Q?sJs.0/j@YXCP!VUfcrr_a#!5mOX!S0Da~> -!BU8Qkl@9dmJrg"kl\^$%e/re"87C]RJ4E%R:q9Is8:$"W9Dk5!Hl*S^'ts=N#KFE!10#^^:q:' -R/[6dOQ5I&!Q?sJs.0/j@YXCP!V_Dsrr_a#!5R=Q!R<`V~> -!B:&NirG%MmJr3fircmn%e/re"87C]RJ4E%R:q9Is8:97Zg66C!Hl*S^'ts=N#KFE!10#^^:q:' -R/[6dT',58!Q?sJs.0/j@YXCP!Vi#.rr_a#!5$tF!Q-jH~> -!BpJTm/X,tmJs6-m/fHOM=( -!BU8Qkl@9dmJrg!klO!JM=( -!B:&NirG%MmJr3eirV:BM=( -!BpJTm/X,tmJs6-m/sBh)u8e!"n:0caOp"Urri/3IA5u\rrW1$]^ri=]N>*!rrW%GkN2^E-Im\I -Sc8^SWU]uhqfL6c"8Nl9X4ck@eieN~> -!BU8Qkl@9dmJrg!kl[ja)u8e!"n:0caOp"Urri2;N3)C#rrW1$]^ri=]N>*!rrW(VlK/$H-Im\I -Sc8^SWU]uhqh*;r"8Nl9W7gD9c8pI~> -!B:&NirG%MmJr3eirc(W)u8e!"n:0caOp"Urri5DR^__>rrW1$]^ri=]N>*!rrW(em,e6J-Im\I -Sc8^SWU]uhr0,P."8Nl9UtOc/_`*)~> -!BpJTm/X,tmJs6-m/u]*!2%mC"SfWWV -!BU8Qkl@9dmJrg!kl^-!!2%mC"SornYO1-F!RbQN^&_fnQ2^m&Y3#Za -!B:&NirG%MmJr3eire9i!2%mC"T$<1\aS>R!RbQN^&_fnQ2^m.\E3_k -!BpJTm/X,tmJs6,m/r[T/,n-""S]HSVsW=?!lerfpV$^BBuZD;!r%'/k5PI9Fb0R_s8Q^$rrI-= -e,KOL.fbpgm/bd$J,~> -!BU8Qkl@9dmJrfukl[.M/,n-""SffjZ1$NK!lerfpV$^BBuZD;!r.ZAk5PI9Fb0R_s8Q^$rrI]M -e,KOL.fbgdklK'jJ,~> -!B:&NirG%MmJr3dirbDD/,n-""Sp0-]CF_W!lerfpV$^BBuZD;!r/2Rk5PI9Fb0R_s8Q^$rrJ8] -e,KOL.fb^airR%VJ,~> -!BpJTm/X,tmJs6,m/uPk!4:8U"ST9NWpegE!o-t25;@!OSoirrKMrJcD8?!q@ADo)A`4 -qpYQIZiD'/f^/^j4b*~> -!BU8Qkl@9dmJrfukl]ub!4:8U"S]WfZgloP!o-t25;@!PPo'rrKMrJcD8?!q@ADo)A`C -r6tZJZiD$*f]`F^3e.~> -!B:&NirG%MmJr3dire0W!4:8U"Sg!)^%1%[!o-t25;@!QDe8rrKMrJcD8?!q@ADo)A`S -r6tZJZiD$%f]*"M2h1~> -!BpJTm/X,tmJs6+m/hn?44=-3oX&tHnD=0O\8+6OLlQ^eDn(o/!qUa/kPkSE(4lLTrrTbRnalb] -GPKYe!]pC7fBiUi4b*~> -!BU8Qkl@9dmJrftklQD944=-3p:Q6jo%sBQ\8+6OLlQ^eDn(o/!q_?AkPkSE(4lLTrrTbRnalb] -LAB -!B:&NirG%MmJr3cirXZ044=-3pV`H6o\TTS\8+6OLlQ^eDn(o/!qhrRkPkSE(4lLTrrTbRnalb] -Q28u0!]pC2fAcnL2h1~> -!BpJTm/X,trrB%]!5?k\"S8mFYO^TN"f"iTb0&k*rrK4-k5PGtjamH$s8Q^&rrIE=eGfWb -!#+ADm/bd$J,~> -!BU8Qkl@9drrAV0kl]cT!5?k\"SK?_\Fe\Y"f"iTb0&k*rrKR@k5PGtjamH$s8Q^&rrIrMeGfWb -!#"/?klK'jJ,~> -!B:&NirG%MrrA"tirdpH!5?k\"ST^"_=c^c"f"iTb0&k*rrKmQk5PGtjamH$s8Q^&rrJJ]eGfWb -!#!r9irR%VJ,~> -!BpJTm/X,trrB%;m/hV76-oQ6nud>Eo\ofN8#M1C!q(F0kPkQO[=S@IrrV^4`:X'1I.Pkf!^Qg5 -f'NLh4b*~> -!BU8Qkl@9drrAV/klQ,16-oQ6o='Rfp#5oO8#M1C!q;*BkPkQO[=S@IrrV^4`:X'1MtGO!!^Qg3 -f'*4\3e.~> -!B:&NirG%MrrA"sirXB(6-oQ6otZs4p>Q#P8#M1C!qMcSkPkQO[=S@IrrV^4`:X'1Re>21!^Qg0 -f&HeK2h1~> -!BpJTm/X,trrB%;m/u5V!6!1_"RrL>[.WM[!ot$gL]7CO]BB1pFbPDHRf -&)Yt*!S0Da~> -!BU8Qkl@9drrAV/kl]ZN!6!1_"S/sW^%UOe!ot$gL]7CY_rq%#FbPDHRf -&)5\"!R<`V~> -!B:&NirG%MrrA"sirdjB!6!1_"S9?p`V8Hn!ot$gL]7CcbNJm+FbPDHRf% -bB4k!Q-jH~> -!BpJTm/X,trrB%:m/hD18Bh):m\tQBpZDJVLM)AA!pG(/kl1[[&EmFD4<8-!e_ -m/bd$J,~> -!BU8Qkl@9drrAV.klPo+8Bh):n?\"epu_SWLM)AA!pYaAkl1[[&Sn(%F>8-!_] -klK'jJ,~> -!B:&NirG%MrrA"rirX0"8Bh):o":C2pu_SWLM)AA!puHRkl1[[&an^[X@8-!VZ -irR%VJ,~> -!BpJTm/X,trrB%:m/u,P!6WLb"RW(6](kLh!@Z!BrrJ\.kl1\6-@u2brrV*mi:d0OL$I7h"3LTP -gstcmeieN~> -!BU8Qkl@9drrAV.kl]TI!6WLb"RiRP_>3 -!B:&NirG%MrrA"rirda=!6WLb"S''kanb0#!@Z!BrrKIRkl1\6-@u2brrV*mi:d0OT^UJ3"3LTP -e(*IZ_`*)~> -!BpJTm/X,trrB%9m/h/*:!*D1"jLZm=h!_iZ4 -eEm:f4b*~> -!BU8Qkl@9drrAV-klPZ$:!*D1"jQ0Qs#!_iZ2 -eEI"Z3e.~> -!B:&NirG%MrrA"qirWrq:!*D1"jU@$P3!_iZ0 -eDgSI2h1~> -!BpJTm/X,trrB%9m/u&I!6E7]"R2V'[f#Om!G@1?rrJD-kl1ZA`I\&WrrVsA_>!s1MWNIi"3:HI -g=5KjeieN~> -!BU8Qkl@9drrAV-kl]NB!6E7]"RE.C^ARBu!G@1?rrJh?kl1ZA`I\&WrrVsA_>!s1Qg!'$"3:HI -f@9$cc8pI~> -!B:&NirG%MrrA"qird[6!6E7]"R`^``r,6(!G@1?rrK7Qkl1ZA`I\&WrrVsA_>!s1V!HY4"3:HI -dF@1W_`*)~> -!BpJTm/X,trrB%8m/h8-7)o60kF[1;q=+Ccp(QM>rrUl/rosF`AX.iHR/[6(-2@98!K?'jrrPRg -ERX:UeieN~> -!BU8Qkl@9drrAV,klPc'7)o60lDff_qXFLdp(QM>rrV#ArosF`AX.iHR/[6(-2@98!L`*%rrPRg -Dq!qOc8pI~> -!B:&NirG%MrrA"pirX#s7)o60m'W;-qsaUep(QM>rrV2SrosF`AX.iHR/[6(-2@98!N,,5rrPRg -Ct%DF_`*)~> -!BpJTm/X,trrB%8m/u/T!5HMQ"Ql>*_"mR$!N&A -!BU8Qkl@9drrAV,kl]WM!5HMQ"R2qFa85B,!N&A -!B:&NirG%MrrA"pirdd@!5HMQ"REFacMR24!N&A -!BpJTm/X,trrB%7m/hV742_($jdpt;qXsjiqC&e'rrLN.l2Ldh97d,0rrV*mi;*BRP24dj!]pC/ -dd7(d4b*~> -!BU8Qkl@9drrAV+klQ,142_($kc'Q^qt9sjqC&e'rrL]?l2Ldh97d,0rrV*mi;*BRT&J?%!]pC- -dcgeX3e.~> -!B:&NirG%MrrA"oirXB(42_($la3/,qt9sjqC&e'rrLlQl2Ldh97d,0rrV*mi;*BRWo_n5!]pC* -dc1AG2h1~> -!BpJTm/X,trrB%7m/u>]!4KcE"Qc5)_#!g*!Kfp(rr`<#LYD%n!RiKKs-EZcKMhRF!L;Blrr]\0 -'B7I-!S0Da~> -!BU8Qkl@9drrAV+kl]cU!4KcE"R)hEa8>W2!Kfp(rr`<#Pht^*!RiKKs-EZcKMhRF!MSB'rr]\0 -'Ah1%!R<`V~> -!B:&NirG%MrrA"oirdpI!4KcE"REFacMRA9!Kfp(rr`<#U>kJ -!BpJTm/X,trrB%6m/hn?1Vj"njdgn;qYL3nlk\-&s8W*"b*M>m!qcp"JcD):!r+(WqYpS`f@g0* -1B<'Tm/bd$J,~> -!BU8Qkl@9drrAV*klQD91Vj"nkbsK^qtg -!B:&NirG%MrrA"nirXZ01Vj"nla*),qtg -!BpJTm/X,trrB%6m/uMe!2mU3"QZ,'_Ya92s(m8drr3&tJ`5no!>smKs-EZd`Z"%;rrJS=gA_8Q -!#FbFm/bd$J,~> -!BU8Qkl@9drrAV*kl]r]!2mU3"Qu_CaSYo8s(m8drr3&uO6,[,!>smKs-EZd`Z"%;rrK"MgA_8Q -!#FVBklK'jJ,~> -!B:&NirG%MrrA"nire*P!2mU3"R<=`ci!_@s(m8drr3&uS`oA=!>smKs-EZd`Z"%;rrKC]gA_8Q -!#=>;irR%VJ,~> -!BpJTm/X,trrB%5m/rIN,5AnP$07Y,_YaB5eJ@M&s8Dru_Og&m!BS)Ks- -!BU8Qkl@9drrAV)klZtH,5AnP$0S7Hanu, -!B:&NirG%MrrA"mirb2>,5AnP$0njed/ -!BpJTm/X,trrB%5m/uW&!04_l#3;;(_YZldJcGZJ!r79.li-ujTRm-.rrW*bJ,]HOo@\S_g%4&" -"-*@1lHno!eieN~> -!BU8Qkl@9drrAV)kl^&r!04_l#3VnDannVkJcGZJ!r@i@li-ujTRm-.rrW*bJ,]HOo@\kkg%4&" -"-*@0k0W>nc8pI~> -!B:&NirG%MrrA"mire3e!04_l#3rLad/6FsJcGZJ!rJGRli-ujTRm-.rrW*bJ,]HOo@]/"g%4&" -"-*@/i6^Kb_`*)~> -!BpJTm/X,trrB%4m/s9e'CNL4"QQ"W*qk0bqu6].VX+9^IY%N`rsn31P\t5XJ;9/8FD>^.ro3q[ -mLoT!cg:ba4b*~> -!BU8Qkl@9drrAV(kl[d_'CNL4"QlUo+819cqu6]6Yj;>hIY%N`rsn31P\t5XJ;9/8FD>^.ro3q[ -mLoStcfkJU3e.~> -!B:&NirG%MrrA"lirbtT'CNL4"R342+npQfqu6]>]'KCrIY%N`rsn31P\t5XJ;B59FD>^.ro3q[ -mLoSocf5&D2h1~> -!BpJTm/X,trrB%3m/fENFh7SVr[_l9_u##brVlrmHg^8#!ME\Ks-3NcY@NC$q7ZsEM/]ZYrrR -!BU8Qkl@9drrAV'klNsIFh7SVr[i2Ob5?hjrVlrnM=Bm3!ME\Ks-3NcY@NC$q7ZsEM/]ZYrrR -!B:&NirG%MrrA"kirV:BFh7SVr[rPfdJSRqrVlroR.BVD!ME\Ks-3NcY@NC$q7ZsEM/]ZYrrR -!BpJTm/X,trrB%3m/t*)#iN>p#I#u_j-tS;qgneHrrKF-m/I+'3e@ -!BU8Qkl@9drrAV'kl\O!#iN>p#I#u_k,+0]r.4nIrrKa@m/I+'3e@ -!B:&NirG%MrrA"kircal#iN>p#I#u_l*6f,r.4nIrrL$Qm/I+'3e@ -!BpJTm/X,trrB%2m/g5e=hOb9r\C_Wrrh>MJAh>9rr`;lHLpP(!TY)Ks-N`eqH:)n^&kQBqWIk[ -=TDFGm/bd$J,~> -!BU8Qkl@9drrAV&klOc`=hOb9r\C_WrrhG\Nm%?Orr`;mM=p99!TY)Ks-N`eqH:)n^&kQBqWIk[ -=TDCFklK'jJ,~> -!B:&NirG%MrrA"jirW'X=hOb9r\C_WrrhPjS^I@drr`;oR.fqI!TY)Ks-N`eqH:)n^&kQBqWIk[ -=TD=DirR%VJ,~> -!BpJTm/X,trrB%2m/tiC!Q2VN!jFHZr;QoZRXrETJc>bO[I*tqrX/=Ls-WfeF/euL!!)u3!!)u3 -!NC/(rr^.>#Lq#c!S0Da~> -!BU8Qkl@9drrAV&kl]9;!Q2VN!jFHZr;Qo]V2rgtJc>bX^$Yh$rX/=Ls-WfeF/euL!!)u3!!)u3 -!NC/(rr^.>#LL`[!R<`V~> -!B:&NirG%MrrA"jirdI0!Q2VN!jFHZr;Qo`Z(9;?Jc>bb`U3[,rX/=Ls-WfeF/euL!!)u3!!)u3 -!NC/(rr^.>#KtBP!Q-jH~> -!BpJTm/X,trrB%1m/qM31B"uf!rasZq>UTVR=W?TKDu#>HhZq-!@cKKs-`lffQdD0qu?c3!<'V3 -!;sP3GhD<]"8stTG0K=SeieN~> -!BU8Qkl@9drrAV%klZ#-1B"uf!rasZq>UTZV2rgtKDu#@MYQT=!@cKKs-`lffQdD0qu?c3!<'V3 -!;sP3GhD<]"8stTFNitMc8pI~> -!B:&NirG%MrrA"iira9$1B"uf!rasZq>UT]Yas5?KDu#BRJH7M!@cKKs-`lffQdD0qu?c3!<'V3 -!;sP3GhD<]"8stTEQmGD_`*)~> -!BpJTm/X,trrB%1m/uDh!1L\&!j=BYp\tBTR=*0VK`;(J^$Yh#9 -!BU8Qkl@9drrAV%kl]i_!1L\&!j=BYp\tBWV2N_"K`;(T`9mR*9 -!B:&NirG%MrrA"iire!S!1L\&!j=BYp\tB[YaX/BK`;(^bjGE29 -!BpJTm/X,trrB%0m/rmZ(@T*>!q@ANo`#'\U4C/XLAq>;J,A[6!H!mKs-`leE;R?L!<0\]4b*~> -!BU8Qkl@9drrAV$kl[CT(@T*>!q@ANo`#'^XH(F"LAq>>NVi/D!H!mKs-`leE;R?L!<0\ -!B:&NirG%MrrA"hirbVJ(@T*>!q@ANo`#'`\"1nCLAq>@S,D^S!H!mKs-`leE;R?L!<0\ -!BpJTm/X,trrB%/m/fm(igkS6q1ntNS&Ogq!K_,Ks-`leE;R?L!<0\ -!BU8Qkl@9drrAV#klNjFEP_\TB(>m(jf"0YqM5(OVT\E-!K_,Ks-`leE;R?L!<0\ -!B:&NirG%MrrA"girV1?EP_\TB(>m(kd-c(qM5(OZ-r(?!K_,Ks-`leE;R?L!<0\ -!BpJTm/X,trrB%/m/t0,!nY?i!kKKDn,EOPTRFKIM>mY7KDk9=!OYILs-`lfI(K6i!!*#4$ilW\% -__q0QO^aD\pWlE"4mSV_92-GeieN~> -!BU8Qkl@9drrAV#kl\X%!nY?i!kKKDn,EOSX,FmjM>mY;Oo=bK!OYILs-`lfI(K6i!!*#4$ilW\% -__q0QO^aD\pWlE"4mSV^<5[@c8pI~> -!B:&NirG%MrrA"gircgo!nY?i!kKKDn,EOV[@5;7M>mY>TDe6Y!OYILs-`lfI(K6i!!*#4$ilW\% -__q0QO^aD\pWlE"4mSV\]Wq5_`*)~> -!BpJTm/X,trrB%.m/pbs5Q8Y%!q@ADm/I4PUO9TFMZ3^@c0tZ5fcu(JRK! -!BU8Qkl@9drrAV"klY;n5Q8Y%!q@ADm/I4SY):$hMZ3^LddR2:fcu(JRK! -!B:&NirG%MrrA"fir`Qe5Q8Y%!q@ADm/I4U\=(G5MZ3^Xf^Jh@fcu(JRK!2h1~> -!BpJTm/X,trrB%.m/u/Z!2.=2s(:Nq"RDt4[.K=W!nW;.nG`Rd#l9,PRK!;/WUIP%WH7G+"/#W/ -h9#$beieN~> -!BU8Qkl@9drrAV"kl]WS!2.=2s(:Nq"RWIO^%I?a!Sj"0rrW$&qLS[7rrI2?n%Jh%F6ro/TE#_\ -alriO3e.~> -!B:&NirG%MrrA"firddF!2.=2s(:Nq"Ripi`V,8j!T9dBrrW$&qLS[7rrI2?n%Jh%F6ro/TE#\U -al2h1~> -!BpJTm/X,trrB%-m/r^U(%''A!lQ2NkPk\PWdD#ANW0$ -!BU8Qkl@9drrAV!kl[1N(%''A!lQ2NkPk\R[#)BcNW0$Ig$eqA,M@YJRK!?b=g@M2!jPo)mJd:U -'`aN?klK'jJ,~> -!B:&NirG%MrrA"eirbDD(%''A!lQ2NkPk\T]pQ\0NW0$VhXCIF,M@YJRK!?b=g@M2!jPo)mJd:U -'`aB;irR%VJ,~> -!BpJTm/X,trrB%-m/u];!+s=P!r+(WjSoAPXa7);O8f7-ORN2M8@=$KR/[6^ -!BU8Qkl@9drrAV!kl^-2!+s=P!r+(WjSoAR[u%N_O8f72SaZRZ8@=$KR/[6^ -!B:&NirG%MrrA"eire:%!+s=P!r+(WjSoAS^mMk,O8f77WUKif8@=$KR/[6^ -!BpJTm/X,trrB%,m/tE6!li@^!JF>/rrho!H_oqgrrW1Rh!k=EClj5JQN%&jE/D:(^&u'*E3JU- -"3(BHaN*ZKeieN~> -!BU8Qkl@9drrAUukl\m.!li@^!JF>/rrhu,MQc<-rrW1`i:-aIClj5JQN%&jE/D:(^&u'*E3JU- -"3(BG`Q.3Dc8pI~> -!B:&NirG%MrrA"dird(#!li@^!JF>/rri#5RCV^IrrW1mjRE0MClj5JQN%&jE/D:(^&u'*E3JU- -"3(BG^rPI9_`*)~> -!BpJTm/X,trrB%+m/qA/0E0/p!oOdNhu;FD>^. -rp0Rdr\"7l`pEfX4b*~> -!BU8Qkl@9drrAUtklYl)0E0/p!oOdNhu;FD>^. -rp0Rdr\"7j`p!NL3e.~> -!B:&NirG%MrrA"cira,u0E0/p!oOdNhu;FD>^. -rp0Rdr\"7g`o@*;2h1~> -!BpJTm/X,trrB%+m/uMl!/A\s!E"O*rri29JX5#SrrW+Kj73-M[7GlKOoGUVfuUt^oB6,UL&`7W -`pEfX4b*~> -!BU8Qkl@9drrAUtkl]rc!/A\s!E"O*rri5@O.tKqrrW+Yk4/HP[7GlKOoGUVfuUt^oB6,UL&`4R -`p!NL3e.~> -!B:&NirG%MrrA"cire*V!/A\s!E"O*rri5GSZUn9rrW+hl1+cS[7GlKOoGUVfuUt^oB6,UL&`1K -`o@*;2h1~> -!BpJTm/X,trrB%*m/sNm#h[E%!l-,WgA_?Sb(l&,rg*Qb^n:/s!SJ]Ks+14@rr^mZ!O'K0!S0Da~> -!BU8Qkl@9drrAUskl\!f#h[E%!l-,WgA_ -!B:&NirG%MrrA"birc4\#h[E%!l-,WgA_ -!BpJTm/X,trrB%)m/pSn4T3V+!p:KAfDc$Rd>`_$rg<]eq0_JurrW$&qLSZts7H -!BU8Qkl@9drrAUrklY)h4T3V+!p:KAfDc!Qes_ZJQi@-`MsU$7!r<3!JcC<$o`#$l49/R'klK'j -J,~> -!B:&NirG%MrrA"air`B`4T3V+!p:KAfDc!QgS^UpQi@-`Rd]hI!r<3!JcC<$o`#$l49/L%irR%V -J,~> -!BpJTm/X,trrB%)m/u2^!0be0!rPB7e,KR'Tn'oQRK!;uVt'cf,M@YJJcGBB"-W^%hSed^eieN~> -!BU8Qkl@9drrAUrkl]WV!0be0!rPB7e,KR,X,b3qRK!<'Z17hp,M@YJJcGBB"-W^%g;N4Vc8pI~> -!B:&NirG%MrrA"airdgJ!0be0!rPB7e,KR0[[k_>RK! -!BpJTm/X,trrB%(m/s*`%H,Y6!e3Q7dJj@0U3j38S,WQ_HggP*!D'VLs+14Crr_0g!2II!!S0Da~> -!BU8Qkl@9drrAUqkl[RY%H,Y6!e3Q7dJj@3XGXX\S,WQ`M=L0:!D'VLs+14Crr_0g!2.6o!R<`V~> -!B:&NirG%MrrA"`irbeO%H,Y6!e3Q7dJj@6\!b2,S,WQaR.KnK!D'VLs+14Crr_0g!1^se!Q-jH~> -!BpJTm/X,trrB%'m/g)a7ah;<`>[pbrrh_lHD]kqrrK@-o)A`,OFdF_s7QBn7K?9%m/bd$J,~> -!BU8Qkl@9drrAUpklOT[7ah;<`>[pbrrhf"M6Q98rrK[?o)A`,OFdF_s7QBn7K?3#klK'jJ,~> -!B:&NirG%MrrA"_irVmS7ah;<`>[pbrrhl-R(DXSrrL!Qo)A`,OFdF_s7QBn7K?-!irR%VJ,~> -!BpJTm/X,trrB%'m/u&S!1MF;!p:K@bPq_=]7-1&T)Sl]HM$h/!Kq2Ks+14Drr\\i&_b+h!S0Da~> -!BU8Qkl@9drrAUpkl]NK!1MF;!p:K@bPq_>_Mk>KT)Sl_M>$Q@!Kq2Ks+14Drr\\i&D+e`!R<`V~> -!B:&NirG%MrrA"_ird[?!1MF;!p:K@bPq_?b+#WqT)SlaR.p4P!Kq2Ks+14Drr\\i&CJAT!Q-jH~> -!BpJTm/X,trrB%&m/rjY%Go\9!rPB7aSuG@aG5Purh08lW42Bu!P(RKs+14Err_*e!1^mm!S0Da~> -!BU8Qkl@9drrAUokl[=R%Go\9!rPB7aSuD@cBORETDnqt^[qI+\O1rJJcGKE"5XIeRDJ+gc8pI~> -!B:&NirG%MrrA"^irbPH%Go\9!rPB7aSuD@e=r\lTDnr)a7K<3\O1rJJcGKE"5XIeQ,2J]_`*)~> -!BpJTm/X,trrB%%m/p2c55jC=$Ll]haOp"^s*mB5`r?5Ae=(s%oqMHfl[8L"rrM$tJcC<$q#:Hp -4oeHqm/bd$J,~> -!BU8Qkl@9drrAUnklX]]55jC=$Ll]haOp"^s*mB5`W$(oVN8[hUAk;^MYZoE!T4rKs+14Frr`3` -!)LDp!R<`V~> -!B:&NirG%MrrA"]ir`!U55jC=$Ll]haOp"^s*mB5`W$(tZ(9,5UAk;`RJQRU!T4rKs+14Frr`3` -!):8h!Q-jH~> -!BpJTm/X,trrB%%m/u)Z!0#t<%Jm&BBlnl_M1B\^?5;J:rrhDZHE-2(rrJh.o`#!k$hJrLJcGQG -",m3rgVE1WeieN~> -!BU8Qkl@9drrAUnkl]QS!0#t<%Jm&BBlnl_M1B\^?5;J:rrhMgM6uTDrrK4@o`#!k$hJrLJcGQG -",m3rfYH_Pc8pI~> -!B:&NirG%MrrA"]ird^F!0#t<%Jm&BBlnl_M1B\^?5;J:rrhVtR(_m^rrKRQo`#!k$hJrLJcGQG -",m3qd_OlD_`*)~> -!BpJTm/X,trrB%$m/s9f#hA);"87C]RJ4DtR:q9I_Z'f1\:0gsrhf\sjF@(!rrFgtJcC<$qYpZJ -#Q^m=m/bd$J,~> -!BU8Qkl@9drrAUmkl[d`#hA);"87C]RJ4DtR:q9I_Z'c2^l5&CV>gV[NVrGK!AM`Ks+14Hrr^dW -!N*Wr!R<`V~> -!B:&NirG%MrrA"\irbtU#hA);"87C]RJ4DtR:q9I_Z'c3aIBBkV>gV^SG`$Z!AM`Ks+14Hrr^dW -!MR9g!Q-jH~> -!BpJTm/X,trrB%#m/pYp./N0-!n18Vo=b:2=OY+d"oHH#L;`ncrrJP.o`"qnV1JYts82fuqBu>M -^?ksP4b*~> -!BU8Qkl@9drrAUlklY/j./N0-!n18Vo=b:2=OY+d"oQ`7Pfrp$rrJt@o`"qnV1JYts82fuqBu>K -^?G[D3e.~> -!B:&NirG%MrrA"[ir`Hb./N0-!n18Vo=b:2=OY+d"oQrJU!`_7rrK@Qo`"qnV1JYts82fuqBu>I -^>f732h1~> -!BpJTm/X,trrB%#m/u>g!-mc.!khpRn\,( -!BU8Qkl@9drrAUlkl]c^!-mc.!khpRn\,( -!B:&NirG%MrrA"[irdpQ!-mc.!khpRn\,( -!BpJTm/X,trrB%"m/sd"!kmq"!T@MT^&_^%^AeB3]6KanrN#r!P0Wb#!MrkKs+14Jrr]q9"Lc#2 -!S0Da~> -!BU8Qkl@9drrAUkkl\6p!kmq"!T@MT^&_^%^AeB4_M=r?ri?&"T%*H5!MrkKs+14Jrr]q9"LGf+ -!R<`V~> -!B:&NirG%MrrA"ZircIf!kmq"!T@MT^&_^%^AeB5b*K9gri?&"WnI(F!MrkKs+14Jrr]q9"L#N! -!Q-jH~> -!BpJTm/X,trrB%!m/qS5)sckj!H#CH^&nAL^&[f>!P*'[rrr;BO+P"8XoAIRMuNGM!R*6Ks+14K -rr_R+!-l0D!S0Da~> -!BU8Qkl@9drrAUjklZ)/)sckj!H#CH^&nAL^&[f>!P*'[rrr;HS<1Y\XoAFUR.^I[bV4VJJcG]K -"7$m+G.d&?c8pI~> -!B:&NirG%MrrA"Yira?&)sckj!H#CH^&nAL^&[f>!P*'[rrr>OW1M3*XoAFZV=jihbV4VJJcG]K -"7$m+F1gN6_`*)~> -!BpJTm/X,trrB%!m0)]6!)NU^rrMh)rOr@6^:jU=^&_g=])MonW-P,oYQ"\'MUqM$!qQfuJcC<$ -s8N6$:B3B>]^5aN4b*~> -!BU8Qkl@9drrAUjklg-.!)NU^rrMh)rOr@6^:jU=^&_g=])MoqZA>XBY5\Nhg\1XKo*bMJs+14M -rri -!B:&NirG%MrrA"Yirn9u!)NU^rrMh)rOr@6^:jU=^&_g=])Mot]9g"gY5\NuhtI'Oo*bMJs+14M -rri -!BpJTm/X,trrB$um/t`I!1!!P!RZT!^&nAL^&\/H#64p'^:jRN:]A'/K[I=0"noceKuNhlrrLE. -p&>%4i.:oZs8W*$PlMBC]BoXM4b*~> -!BU8Qkl@9drrAUikl]3B!1!!P!RZT!^&nAL^&\/H#64p'^:jRN:]A'/K[I=0"o$*%PK`j-rrLT? -p&>%4i.:oZs8W*$PlMB@]BK@A3e.~> -!B:&NirG%MrrA"Xird@5!1!!P!RZT!^&nAL^&\/H#64p'^:jRN:]A'/K[I=0"o-E;T[NY@rrLfQ -p&>%4i.:oZs8W*$PlM?9]Aiq02h1~> -!BpJTm/X,trrB$tm/rs\#1r>D!RZT!^((.U])fX[>m^Q5^0M'G!rfn7K[I7."od5HGc9Q,rrW.P -h=gjL6b.dJJc>lQf*25I]'TOL4b*~> -!BU8Qkl@9drrAUhkl[IV#1r>D!RZT!^((.U])fX[>m^Q5^0M'G!rfn7K[I4-"Q$)4ZK/@l!reAA -pAY.\\Ujd3rriAR"ot4*klK'jJ,~> -!B:&NirG%MrrA"Wirb\L#1r>D!RZT!^((.U])fX[>m^Q5^0M'G!rfn7K[I4-"QHbR]B?O#!rekS -pAY.\\Ujd3rriAR"ot(&irR%VJ,~> -!BpJTm/X,trrB$sm/pVo.J*'/!VU+'^()$>N#KFE"dkMS^'0mg!<0\5AbNJ1"nK?\M8JqnrrL-. -pAY/.P(EXarr_jA!+!/&!S0Da~> -!BU8Qkl@9drrAUgklY,i.J*'/!VU+'^()$>N#KFE"dkMS^'0mg!<0\5AbNJ1"nTZqQH8d-rrL?? -pAY/.P(EXarr_jA!*d"u!R<`V~> -!B:&NirG%MrrA"Vir`Ea.J*'/!VU+'^()$>N#KFE"dkMS^'0mg!<0\5AbNJ1"ng'3UsJeCrrLTR -pAY/.P(EXarr_jA!*Qkm!Q-jH~> -!BpJTm/X,trrB$sm/uE!!*\jk!H#CH^(Pl)%Y2:-:'F;k^.ni*!5?1XC9[^BrnF2nU>,[WrrW(I -jnJcUMKFFLJc>gU!%R'?m/bd$J,~> -!BU8Qkl@9drrAUgkl]im!*\jk!H#CH^(Pl)%Y2:-:'F;k^.ni*!5?1XC9RX?hlV^:hm`Uer/Kq7 -rrJ"!JcC<$"'P[Ri48(Qc8pI~> -!B:&NirG%MrrA"Vire!`!*\jk!H#CH^(Pl)%Y2:-:'F;k^.ni*!5?1XCTma@j0tAaj1#$ir1**I -rrJ"!JcC<$"'P[Qg:?5E_`*)~> -!BpJTm/X,trrB$rm/tH=!133T!T@MT^'%JPP.g(`rrr,5MM/Y5\c2]EU%eQfT3m0LK)Yq>!"?uZ -m/bd$J,~> -!BU8Qkl@9drrAUfkl\p6!133T!T@MT^'%M_T#Bs!rrr/=Q]f8X\c2]LXS;_qT3m0LK)Yq>!"?lW -klK'jJ,~> -!B:&NirG%MrrA"Uird(*!133T!T@MT^'%PmWm'k7rrr2EUnGp(\c2]T[eKe&T3m0LK)Yq>!"?ZQ -irR%VJ,~> -!BpJTm/X,trrB$qm/rjY#gMl=!khpRn\,@D?G66fX+>r-gAJ5U"lZD*S'h/HrrVtClhLJ\Zq>oL -KDu%u#QUC(m/bd$J,~> -!BU8Qkl@9drrAUekl[=R#gMl=!khpRn\,@D?G69k[?$K\hYj_Z"lutFVUk[XrrW"RmeHe_Zq>oL -KDu%u#QU:%klK'jJ,~> -!B:&NirG%MrrA"TirbPH#gMl=!khpRn\,@D?G69p^7Cq5ir-.^"mEUcZ.o2hrrW"anG*"aZq>oL -KDu%u#QU.!irR%VJ,~> -!BpJTm/X,trrB$pm/pet,Ob.%!n18Vo=b:2=O[3J#3EFWH(iITZMt+(b*@@Uik>?m[]0'%!Qd3M -s+LCSmiqgA[d=+H4b*~> -!BU8Qkl@9drrAUdklY;n,Ob.%!n18Vo=b:2=O[3J#3`mmLo\ttZMt+)d%Q?*jh:Zp^U*_8!Qd3M -s+LCSmiqg?[cmh<3e.~> -!B:&NirG%MrrA"Sir`Tf,Ob.%!n18Vo=b:2=O[3J#4'C0QaYQ@ZMt+)eub@Tke6usa1V3I!Qd3M -s+LCSmiqg=[c7D+2h1~> -!BpJTm/X,trrB$pm0)T+!(m1Zrr_tJBUSV/". -!BU8Qkl@9drrAUdklg$"!(m1Zrr_tJBUSV/".g0&rrqo.P*O#X_#FK/M=UKB -!T+uMs+UIUr^d)Cj0n1Qc8pI~> -!B:&NirG%MrrA"Sirn0j!(m1Zrr_tJBUSV/".E_`*)~> -!BpJTm/X,trrB$om/toM!/0e?%Jm&BBlnl_ML]e_DlNU)rs/GPX+5o.g\nMZ#6*GWHC<+V_Z'Y? -Z2+D#oEp0LL&V7.!"[Ygm/bd$J,~> -!BU8Qkl@9drrAUckl]?E!/0e?%Jm&BBlnl_ML]e_DlNU)rs/GT[#U?\hu0n]"lZbDUt#:YrrKX@ -q>UKf$A&52rr[oS&(7lM!R<`V~> -!B:&NirG%MrrA"RirdO9!/0e?%Jm&BBlnl_ML]e_DlNU)rs/JZ^7Cq5j8H=a"m*@`YhK#lrrKsQ -q>UKf$A&52rr[oS%aDEA!Q-jH~> -!BpJTm/X,trrB$nm/s -!BU8Qkl@9drrAUbkl[gb!k%@o"n:0c^tA/Brs%Z%RYe,ppU'r(qU2*kYi3P#!qD-Aq>UI&oR[$t -rr]Y1!iNEi!R<`V~> -!B:&NirG%MrrA"Qirc"W!k%@o"n:0c^tA/Brs%c0VjOsGppC&)qq/'8]&gm1!qVfSq>UI&oR[$t -rr]Y1!i!'^!Q-jH~> -!BpJTm/X,trrB$mm/q_9&DGD/#4]a(GEf]'[/U -!BU8Qkl@9drrAUaklZ53&DGD/#4p*;L7lEL[/U="`0$.plGii)Z,-89!?^3Ms+p[Wg(471ZfqM9 -3e.~> -!B:&NirG%MrrA"PiraK*&DGD/#5$BMQ)r-r[/U=$bFbBFmDf/,]#jdJ!?^3Ms+p[Wg(47.Zf;)( -2h1~> -!BpJTm/X,trrB$mm0)cM!%[W`rs/MEWd05uf(ufS"m*%?Mnec'rrVG4q>1*l29CFLM>m_L.f`<1 -Zg@eE4b*~> -!BU8Qkl@9drrAUaklg3D!%[W`rs/MK["sjQg\\DY"mERYR)\^=rrVPFqYL3m29CFLM>m_L.f`9, -ZfqM93e.~> -!B:&NirG%MrrA"Pirn@6!%[W`rs/MQ]pGA+htsh]"ma'rV9SYSrrVVWqYL3m29CFLM>m_L.f`3$ -Zf;)(2h1~> -!BpJTm/X,trrB$lm0)Ds!)rmsQHAmErrJb.qYpRg["877rri="!%?j4 -m/bd$J,~> -!BU8Qkl@9drrAU`klfij!)rm -!B:&NirG%MrrA"Oirn!]!)rm -!BpJTm/X,trrB$km/tNB!.r2i#PQNAI>>)^r3u\1qp:mXU!iqcrrV52r;6Kp?_;oLMZ3d1!"[8X -m/bd$J,~> -!BU8Qkl@9drrAU_kl\s:!.r2i#PZcQMj:m2rO;e2qphX"X4R?rrrV>Cr;6Kp?_;oLMZ3d1!"[,T -klK'jJ,~> -!B:&NirG%MrrA"Nird..!.r2i#Pd#aR\I[ZrO;e2r7eQD[bUl-rrVGUr;6Kp?_;oLMZ3d1!"QlN -irR%VJ,~> -!BpJTm/X,trrB$jm/sNm!NO';#QE_nO*R> -!BU8Qkl@9drrAU^kl\!f!NO';#QEi#Ru"&ho=+`(q95dnZ/#<)rrJn?qu6\=MLkecrr]8%!N`Ni -!R<`V~> -!B:&NirG%MrrA"Mirc4\!NO';#QEr.W0amAoXFi)qU;d;]&EV7rrK=Rqu6\=MLkecrr]8%!N<6_ -!Q-jH~> -!BpJTm/X,trrB$im/r"A$-L'`#P6-4HAo8hrODk3nA(*4X5*^'rrUr0rqucsMfXILN;j"&#loX^ -m/bd$J,~> -!BU8Qkl@9drrAU]klZM;$-L'`#PHKGM4)* -!B:&NirG%MrrA"Lirac2$-L'`#PQcXR&7mcrj_t4o?O;'^?#:BrrV5SrqucsMfXILN;j"&#loIY -irR%VJ,~> -!BpJTm/X,trrB$hm/pYp)<8I2#Q_2p7rr_:!!+)hq -!S0Da~> -!BU8Qkl@9drrAU\klY2k)<8I2#Q -!B:&NirG%MrrA"Kir`Hb)<8I2#QJ!NFiOrrJj!JcC`0"617!>-?ld -_`*)~> -!BpJTm/X,trrB$hm0)W9!&=,Xrs/#4S9U.,jSl^i"mNRQK!OIhrrLT-r;Qf.7=kK!rrhsK!'TPK -m/bd$J,~> -!BU8Qkl@9drrAU\klg'0!&=,Xrs&#;Vh^h[kICNqm(ejI]B@fG!SEh -!B:&NirG%MrrA"Kirn7$!&=,Xrs&)DZBqQ5lF?itm`;,o`9PtS!SsXNrrKZ!JcCc1"S=DK45[4$ -!Q-jH~> -!BpJTm/X,trrB$gm/u,g!)^9+#Q*/WKmfc@o""c(jg9\q[clHF!re&/rVloF/qO%_rrZ*u,M]Eg -!S0Da~> -!BU8Qkl@9drrAU[kl]T`!)^9+#Q3DfPDlZloXXu*ke3+B^ZsMP!LDO>rrLJ!JcCc1"&T%CfraK> -c8pI~> -!B:&NirG%MrrA"JirdaS!)^9+#Q3PsTUNCBost)+lc#Kia6hR[!MeWPrrLJ!JcCc1"&T%Be#hX2 -_`*)~> -!BpJTm/X,trrB$fm/tKB!-#@G#OTL%HA\u[qRZ\1iNRih]Be8P!R-f,rrM:!JcCf2")n5Ob,jt2 -eieN~> -!BU8Qkl@9drrAUZkl\p9!-#@G#Ofm9M3kg/qmue2jggD;_X?4Z!RdY>rrM:!JcCf2")n5N`iSD* -c8pI~> -!B:&NirG%MrrA"Iird+.!-#@G#P$6LR&%UXqmue2ke`mdb4+3d!SFLPrrM:!JcCf2")n5N_5uYt -_`*)~> -!BpJTm/X,trrB$em/sg%!04Dc#lW\lP'<8,jSlgl#6*G[I?))2hu -!BU8Qkl@9drrAUYkl\9r!04Dc#QEc"Sq`uYkI^`uro(;ER`=mTrrW.\j8T&[r!!"Ls,m<`NW96i -X6BZ13e.~> -!B:&NirG%MrrA"HircLh!04Dc#QEo.Wg9g3lF['#roLn`Vp4eirrW.jk5PA^r!!"Ls,m<`NW96e -X5a5u2h1~> -!BpJTm/X,trrB$dm/rgY!iiL)#l)lML4#W3kl/9q#6!8SH]l;;iVrqsSGiHg([$ALP5bWa!Wedj -m/bd$J,~> -!BU8Qkl@9drrAUXkl[:R!iiL)#Pm#\PDZB_lb*6%rnar -!B:&NirG%MrrA"GirbMH!iiL)#Pm2jTp`=9mC`H'ro1SYWmLFtrrLNQrVlm7kCNYrrr]8&!L0VE -!Q-jH~> -!BpJTm/X,trrB$cm/qn>#f<_D#Ofj6Jpj?3l+R*$r77]iQ,iOXrrW(Hk5PA]0$o1LPQ(a%#QTFT -m/bd$J,~> -!BU8Qkl@9drrAUWklZD8#f<_D#P$3HOGp6am(NE'rS"H2U!<;lrrW(Vl2L\`0$o1LPQ(a%#QT@R -klK'jJ,~> -!B:&NirG%MrrA"FiraW.#f<_D#P6QYSsm+9m_/W)rSP/PXjd%*rrW+fm/I"c0$o1LPQ(a%#QT4N -irR%VJ,~> -!BpJTm/X,trrB$bm/pl!'%X)_#k#j3JU!p,kPi6r#5ciBGF?8Dk5PIqU]18o7Ce!LPlCj:&ccI@ -m/bd$J,~> -!BU8Qkl@9drrAUVklYAp'%X)_#Op*DO,'jZlG!9&qq%m'V8rJqrrL'@rr3!f\UjdFrr^gb!+Mnk -!R<`V~> -!B:&NirG%MrrA"Eir`Zh'%X)_#P-HVSX6h4m(WK(r7n`HYg31/rrL -!BpJTm/X,trrB$bm0)]I!$:O*rs7u4XG(qf]%Ztqrs&DAST^IEp?DS]pNu<-s'2:Ls- -!BU8Qkl@9drrAUVklg-@!$:O*rs8&<[ZZHB_;>%(rs&GHW.h(ppZ_\^pknP?s'2:Ls- -!B:&NirG%MrrA"Eirn:2!$:O*rs8,E^S$ptal<04rs&GNZ^%fHq!%e_q3gdQs'2:Ls- -!BpJTm/X,trrB$am0)T,!%R?2rs85EZ&s3gXjHCMrs&8CSTpUGp?V_^[&a6,F,PVLQN%*S.KD3d -VsON94b*~> -!BU8Qkl@9drrAUUklg'$!%R?2rs88K\t+PC[ajf^rs&;JW/%4rpZqh_]sRh>F,PVLQN%*S.KD0` -Vs+6-3e.~> -!B:&NirG%MrrA"Dirn3l!%R?2rs8;Q_lB!!^Y81nrs&;OZ^7rJq!7q``P2BPF,PVLQN%*S.KD-Y -VrIfq2h1~> -!BpJTm/X,trrB$`m0)5p!&jDArsJ\]^7Tt%Q*JX#rl"g@ps#@SR`b?lrrr"?o)FYhJcD):"S+GN -.c$uh!S0Da~> -!BU8Qkl@9drrAUTklf]h!&jDArsAYa`N"uTTt8b@_uBr:e#8&!d.cu."n[ZCs,:uLs-N`gnhpIs -g8=*8c8pI~> -!B:&NirG%MrrA"Cirmj[!&jDArsAYdc*X%.Xi&i\_uBr:fX$pLf(e\5"ne8Us,:uLs-N`gnhpIr -e>D7,_`*)~> -!BpJTm/X,trrB$_m0(u_!(6OPrsJAL]:ORqQ*e]or5Sa@ps#@SR`b?nrs#U2s-6*sk(3Q$rri*a -!$Kjhm/bd$J,~> -!BU8Qkl@9drrAUSklfEW!(6OPrsJGS_PrTLTtSh8rPnjAq9l3sVU5),rs#pDs-6*sk(3Q$rri*a -!$K^dklK'jJ,~> -!B:&NirG%MrrA"BirmUK!(6OPrsJJXb-[_'Xi8lUrPnjAq:N$?Z.A^>rs$6Vs-6*sk(3Q$rri*a -!$BI^irR%VJ,~> -!BpJTm/X,trrB$^m0(]O!)`W]rsSYS]:t1(KUfEnjSR(!#5HH6GaceLoD],u8R6@hLNm0E\:O[O -rri3r!#X"Wm/bd$J,~> -!BU8Qkl@9drrAURklf-G!)`W]rsS\Y_QB/WOf,k?kPNC$#5Q]GLSiGnoD]-"9jMdlLNm0E\:O[O -rri3r!#WkSklK'jJ,~> -!B:&NirG%MrrA"Airm=;!)`W]rsS_^b."11T -!BpJTm/X,trrB$]m/t9=!+(oi%K5P=\Y4k&JX*4JdH1/Jrs&8CSTpUHp\=aigff[4^&j6sgk#Ku -rrZR-&]CI3!S0Da~> -!BU8Qkl@9drrAUQkl\a5!+(oi%K>_F_5ilTO.inuf')qSrs&;IW/%7tq"Xjjgff[4^&j6sgk#Ku -rrZR-&Ab.+!R<`V~> -!B:&NirG%MrrA"@ircq*!+(oi%K>eMagRt/SZTQKg["^\rs&;OZ^7rKq"Xjjgff[4^&j6sgk#Ku -rrZR-&A4du!Q-jH~> -!BpJTm/X,trrB$\m0's,!,DLprt,.qfYk"bM0=<3U9VS`iUZusrs&8CSTpXIp\b$m`bE-\^&ku^ -`e"/brri=9!"-92m/bd$J,~> -!BU8Qkl@9drrAUPkleF%!,DLprt#(rh93@-QA(9jXLcO*jn$q##5Q]GLSiJor;Qi -!B:&NirG%MrrA"?irlUo!,DLprt#(tiR,NKUQh4K\&6SJkk3C(#5QoXQa,0;r;Qic!Q-jH~> -!BpJTm/X,trrB$[m/s^#!,m\n'(F]$]r[`_Huah%T<>fIe`#rogA_KRba`pIbP2%bAb3V:A^Z/0 -V#LO8!!fm)m/bd$J,~> -!BU8Qkl@9drrAUOkl\0q!,m\n'(Xu/`3uS3Mh-t]Wjfmkg#_`%gA_KSd\hktdJ3aiAb3V:A^Z/0 -V#LO8!!fd&klK'jJ,~> -!B:&NirG%MrrA">irc@f!,m\n'(k8;bJ1?[RZX2A[D9u9hWXP/gA_KTfWpjKfD,BoAb3V:A^Z/0 -V#LO8!!fU!irR%VJ,~> -!BpJTm/X,trrB$Zm/s?n!-Nkm)#imWcbQlaRZ2i=H%qKPVQ[PJc.:ho=b:= -=8mdNVZ-a@!!fNsm/bd$J,~> -!BU8Qkl@9drrAUNkl[gf!-Nkm)#is]eAo5+V4*ErLm+F.YdhNldbEjLp&=(Q#5HWELS[bYo=b:= -=8mdNVZ-a@!!]?oklK'jJ,~> -!B:&NirG%MrrA"=irc%\!-Nkm)#j$cg -!BpJTm/X,trrB$Ym/s3i!.0:sp\u6,l.sh1^U:/;R#crJEd3.nQ(P"\]uJFQj6?48nc&[bRYLdT -!s$'L!;X>0MnaiCVuHjG!!] -!BU8Qkl@9drrAUMkl[[b!.0:sp\u3,lf$LB`kJj^UmmO)JqoDSTrPE1`6?cgk3Vd1rrVteL]+ph -!5?/Iq7Zlf^OcE_rr[TJ#,@gT!R<`V~> -!B:&NirG%MrrA"2)l0e97rrW"jL]+ph -!5?/Iq7Zlf^OcE_rr[TJ"eVFI!Q-jH~> -!BpJTm/X,trrB$Xm/s$b!.oe%li/1.p[.%qd)Wi*WLoH6L3mo^I"[HCS><6n]Yr%DguRemFM7Xe -!s$'L!;X>0]leo+W;csO!!K!em/bd$J,~> -!BU8Qkl@9drrAULkl[L[!.oe%lMi%&n)rQXc,@6#WhGfEML^AYI -!5?/Iq7ZmCFb0Rkrr[iQ"J24L!R<`V~> -!B:&NirG%MrrA";irb_Q!.oe%lMi%&n`o,ge'#\B[&p0uR?3W$TVefr\A#o)dFd=:lL=Lh^&>YI -!5?/Iq7ZmCFb0Rkrr[iQ"IbqB!Q-jH~> -!BpJTm/X,trrB$Wm/rj\!.oe%h#@u_o'58ie'#Y@ZE'aiPDb*A8c6:)!5?/Irk8F6"],-3!-!Mh -WW*'P!!Aa^m/bd$J,~> -!BU8Qkl@9drrAUKkl[@V!.oe%h#@u`o^1euf[7jY] -!B:&NirG%MrrA":irbSL!.oe%h#@u`p$_/*h:L&s`4i^cX/2GV;Z+62!5?/Irk8F6"],-3!-!Mh -WW*'P!!AOXirR%VJ,~> -!BpJTm/X,trrB$Vm/s'a!.0:sbl7Z^r4WI;]Xn3Y^0M'G!rfn6E.S%hrr[TJ!hu4P!S0Da~> -!BU8Qkl@9drrAUJkl[OZ!.0:sbl7Z^r4WI;]Xn3Y^0M'G!rfn6E.S%hrr[TJ!hZ"I!R<`V~> -!B:&NirG%MrrA"9irbbP!.0:sbl7Z^r4WI;]Xn3Y^0M'G!rfn6E.S%hrr[TJ!h5_?!Q-jH~> -!BpJTm/X,trrB$Um/rj]!-Nkmc2Rfe^&>YS)2sLm^:jc -!BU8Qkl@9drrAUIkl[@W!-Nkmc2Rfe^&>YS)2sLm^:jc -!B:&NirG%MrrA"8irbSM!-Nkmc2Rfe^&>YS)2sLm^:jc -!BpJTm/X,trrB$Tm0'*e!,qjfs3L]G^Pi')%=ScsJA/`m"\\p1^5KaWs/l;(rbhc@Tpk?LeieN~> -!BU8Qkl@9drrAUHkldR^!,qjfs3L]G^Pi')%=ScsJA/`m"\\p1^5KaWs/l;(rbhc@SsnmEc8pI~> -!B:&NirG%MrrA"7irkeS!,qjfs3L]G^Pi')%=ScsJA/`m"\\p1^5KaWs/l;(rbhc?R[W7;_`*)~> -!BpJTm/X,trrB$Sm0'9k!,DLas3UcIr`?c(^&krKrdk*Prri=9!!fBhm/bd$J,~> -!BU8Qkl@9drrAUGkldac!,DLas3UcIr`?c(^&krKrdk*Prri=9!!]3dklK'jJ,~> -!B:&NirG%MrrA"6irktY!,DLas3UcIr`?c(^&krKrdk*Prri=9!!]'`irR%VJ,~> -!BpJTm/X,trrB$Rm0'Ep!*9#Ks3UcHdUi$a!G0]1s/uA)r)Ne'WgN/SeieN~> -!BU8Qkl@9drrAUFkldmi!*9#Ks3UcHdUi$a!G0]1s/uA)r)Ne'VjQ]Lc8pI~> -!B:&NirG%MrrA"5irl+_!*9#Ks3UcHdUi$a!G0]1s/uA)r)Ne'UR:'B_`*)~> -!BpJTm/X,trrB$Qm0'Wr!)`NBs3UcI`bE-\^&ku^`e"/mrri*o!!KNmm/bd$J,~> -!BU8Qkl@9drrAUEkle*k!)`NBs3UcI`bE-\^&ku^`e"/mrri*o!!KEjklK'jJ,~> -!B:&NirG%MrrA"4irl:`!)`NBs3UcI`bE-\^&ku^`e"/mrri*o!!K6eirR%VJ,~> -!BpJTm/X,trrB$Pm0's3!(6=.s3UcIgff[4^&j6sgk#L.rrhm[!"lc-m/bd$J,~> -!BU8Qkl@9drrAUDkleF+!(6=.s3UcIgff[4^&j6sgk#L.rrhm[!"cT)klK'jJ,~> -!B:&NirG%MrrA"3irlUu!(6=.s3UcIgff[4^&j6sgk#L.rrhm[!"cE$irR%VJ,~> -!BpJTm/X,trrB$Om0(?E!&j1ps3L]O\8P`!LlZdfDn(AuXoAOj2?4T4Q0eV'4b*~> -!BU8Qkl@9drrAUCkleg>!&j1ps3L]O\8P`!LlZdfDn(AuXoAOj2?4T1Q0A=p3e.~> -!B:&NirG%MrrA"2irm"2!&j1ps3L]O\8P`!LlZdfDn(AuXoAOj2?4Q+Q/_n_2h1~> -!BpJTm/X,trrB$Nm0(]W!%R&\s3:QGk/tO&JcDeN"QV$4+O65=!S0Da~> -!BU8Qkl@9drrAUBklf-O!%R&\s3:QGk/tO&JcDeN"QV$4+Nfr5!R<`V~> -!B:&NirG%MrrA"1irm=C!%R&\s3:QGk/tO&JcDeN"QV$4+2sK)!Q-jH~> -!BpJTm/X,trrB$Mm0(ui!$0mHs+13$s7QBph&QJFes#J%eieN~> -!BU8Qkl@9drrAUAklfE`!$0mHs+13$s7QBph&QJEdZ`nrc8pI~> -!B:&NirG%MrrA"0irmUT!$0mHs+13$s7QBph&QJDc'./g_`*)~> -!BpJTm/X,trrB$Lm0)H)!#!/"s+13$s7cNr_@ci(j-&d1eieN~> -!BU8Qkl@9drrAU@klflu!#!/"s+13$s7cNr_@ci'hid4)c8pI~> -!B:&NirG%MrrA"/irn$h!#!/"s+13$s7cNr_@ci&fok@r_`*)~> -!BpJTm/X,trrB$Lm02n=9)o6tJcC<$JcGQG"KD_-9BD<'!S0Da~> -!BU8Qkl@9drrAU@klp>18cT-sJcC<$JcGQG"KD_-9&Yos!R<`V~> -!B:&NirG%MrrA"/is"Jt8,rpqJcC<$JcGQG"KD_-8DB9e!Q-jH~> -!BpJTm/X,trrB$LmJlPVl=9krNe.4]s+14Irre>`!+bAVm/bd$J,~> -!BU8Qkl@9drrAU@l2TuNk$e;lNe.4]s+14Irre>`!+P)PklK'jJ,~> -!B:&NirG%MrrA"/j8\-Bi*ZNdNe.4]s+14Irre>`!+=`HirR%VJ,~> -!BpJTm/X,trrB$LmJZDTJH5airIP!"s+14Mrri:>!!.Y2m/bd$J,~> -!BU8Qkl@9drrAU@l2BiLIfTOgrIP!"s+14Mrri:>!!.S0klK'jJ,~> -!B:&NirG%MrrA"/j8J!@HN=+crIP!"s+14Mrri:>!!.G,irR%VJ,~> -!BpJTm/X,trrB$LmJQ>SRg/phoR[$ns+11QoM5GlRuQe9eieN~> -!BU8Qkl@9drrAU@l29cKQj*OdoR[$ns+11QoM5GkR#U>2c8pI~> -!B:&NirG%MrrA"/j8@p?PQh+`oR[$ns+11QoM5GkP`=](_`*)~> -!BpJTm/X,trrB$LmJH8RZNgIbj+75]s+C=Sj"UN=Z]+8PeieN~> -!BU8Qkl@9drrAU@l20]JYQk._j+75]s+C=Sj"UN=Y`.fIc8pI~> -!B:&NirG%MrrA"/j87j>Ws8VZj+75]s+C=Sj"UN=X,Q'>_`*)~> -!BpJTm/X,trrB$LmJ?2Qas-m(b(9SDs+UIUar(1(b)>WfeieN~> -!BU8Qkl@9drrAU@l2'WI`ZkI$b(9SDs+UIUar(1(`f''^c8pI~> -!B:&NirG%MrrA"/j8.d=_'/jsb(9SDs+UIUar(1'_2I=S_`*)~> -!BpJTm/X,trrB$LmJ6,PgcYWDWe(2$s+gUWWX/YggktJ"eieN~> -!BU8Qkl@9drrAU@l1sQHffT6@We(2$s+gUWWX/Yffo#"pc8pI~> -!B:&NirG%MrrA"/j8%^ -!BpJTm/X,trrB$LmJ-&Ok["5iO+I=^s,$aYNr]5ek_\[-eieN~> -!BU8Qkl@9drrAU@l1jKGjBV`dO+I=^s,$aYNr]5djGE+%c8pI~> -!B:&NirG%MrrA"/j7qX;hc^!\O+I=^s,$aYNr]5ahhg@o_`*)~> -!BpJTm/X,trrB$LmIooMKED3Qnq$gls,I$]nl#MjKSSpqeieN~> -!BU8Qkl@9drrAU@l1X?EJcc!Onq$gls,I$]nl#MjJqrRkc8pI~> -!B:&NirG%MrrA"/j7_L9Iff[Lnq$gls,I$]nl#MjIu!%b_`*)~> -!BpJTm/X,trrB$LmIfiLYR:F]g4B9Ts,[0_g+*.2Y_MNGeieN~> -!BU8Qkl@9drrAU@l1O9DXU>+Zg4B9Ts,[0_g+*.2XbQ'@c8pI~> -!B:&NirG%MrrA"/j7VF8W!`SUg4B9Ts,[0_g+*.2W.s=5_`*)~> -!BpJTm/X,trrB$LmI]cKb:!?%[=S@/s,m -!BU8Qkl@9drrAU@l1F3Ca!Uiu[=S@/s,m -!B:&NirG%MrrA"/j7M@7_Bo6o[=S@/s,m -!BpJTm/X,trrB$LmIT]Ki_9CSK`6Q&JcD#8"oa/V!);I+m/bd$J,~> -!BU8Qkl@9drrAU@l1=-ChFmnNK`6Q&JcD#8"oa/V!)27&klK'jJ,~> -!B:&NirG%MrrA"/j7D:7fLc,FK`6Q&JcD#8"oa/V!(tmsirR%VJ,~> -!BpJTm/X,trrB$LmIKWJm!Jj78G%K5JcD):"nY=c!ds?em/bd$J,~> -!BU8Qkl@9drrAU@l14'Bk^!:18G%K5JcD):"nY=c!da'_klK'jJ,~> -!B:&NirG%MrrA"/j7;46icbG(8G%K5JcD):"nY=c!dEXVirR%VJ,~> -!BpJTm/X,trrB$LmI9KGZ4?p[c%5nGs-`libp*3!Z@VBDeieN~> -!BU8Qkl@9drrAU@l1!p?Y7CUXc%5nGs-`libp*3!YCYp=c8pI~> -!B:&NirG%MrrA"/j7)(3WX]"Rc%5nGs-`libp*2uWe'12_`*)~> -!BpJTm/X,trrB$LmI0EFc7f5(Q\#0fs-s#kQO!RFc@P?amFFFN~> -!BU8Qkl@9drrAU@l0mj>b:`i$Q\#0fs-s#kQO!REbCSmZl-;>?~> -!B:&NirG%MrrA"/j6u"2`\%5sQ\#0fs-s#kQO!RD`e!.Oj23g+~> -!BpJTm/X,trrB$LmI'?Fk@+Dk>4[=FJcDAB"nPmt!+P,BmJlPSeieN~> -!BU8Qkl@9drrAU@l0dd>j'Vie>4[=FJcDAB"nPmt!+=i -!B:&NirG%MrrA"/j6kq2h-L']>4[=FJcDAB"nPmt!++K4j8\-?_`*)~> -!BpJTm/X,trrB$LmHj3CS.#B -!BU8Qkl@9drrAU@l0RX;R1''9eUdaOs.TGqeK"VuR=XW$klK'jJ,~> -!B:&NirG%MrrA"/j6Ye/PmdX5eUdaOs.TGqeK"VuQ%@uoirR%VJ,~> -!BpJTm/X,trrB$LmHa-CaXR8sQ2Z@7JcDSH"oabn!%Q*AmJQ>PeieN~> -!BU8Qkl@9drrAU@l0IR;`[LloQ2Z@7JcDSH"oabn!%Gp=l29cHc8pI~> -!B:&NirG%MrrA"/j6P_/^aK0hQ2Z@7JcDSH"oabn!%>X6j8@p<_`*)~> -!BpJTm/X,trrB$LmHX'Bl>ck):[ -!BU8Qkl@9drrAU@l0@L:k&:;#:[ -!B:&NirG%MrrA"/j6GY.i,&Go:[ -!BpJTm/X,trrB$LmHEp?T+CuA]n-37s/H#$]c-q_T7QD*m/bd$J,~> -!BU8Qkl@9drrAU@l0.@7SIbc?]n-37s/H#$]c-q_SUp&$klK'jJ,~> -!B:&NirG%MrrA"/j65M+R1B9:]n-37s/H#$]c-q^R=XDoirR%VJ,~> -!BpJTm/X,trrB$LmH -!BU8Qkl@9drrAU@l0%:7c8Ye*Gl!!kJcDkP"o -!B:&NirG%MrrA"/j6,G+a>O#"Gl!!kJcDkP"o -!BpJTm/X,trrB$LmH3d>l?EF31Y%'VJcDqR"k>C/"F03_mJ#uKeieN~> -!BU8Qkl@9drrAU@l/q46k&pk-1Y%'VJcDqR"k>C/"ErpYl1aECc8pI~> -!B:&NirG%MrrA"/j6#A*i,]#$1Y%'VJcDqR"k>C/"EWLPj7hR7_`*)~> -!BpJTm/X,trrB$LmH!X-JcE(V"oXAc!$BF9mIfiIeieN~> -!BU8Qkl@9drrAU@l/_(4a;t-JcE(V"oXAc!$944l1O9Ac8pI~> -!B:&NirG%MrrA"/j5f5(_]8^_N;\>-JcE(V"oXAc!$/t.j7VF5_`*)~> -!BpJTm/X,trrB$LmGmR;iEcNb52LkjJcE.X"l;EC!FF`9mI]cHeieN~> -!BU8Qkl@9drrAU@l/V"3h-9s\52LkjJcE.X"l;EC!F4H3l1F3@c8pI~> -!B:&NirG%MrrA"/j5]/'f3/1T52LkjJcE.X"l;EC!F"*+j7M@4_`*)~> -!BpJTm/X,trrB$LmG[F9W##FCRf7m -!BU8Qkl@9drrAU@l/Ck1VAB4ARf7mc8pI~> -!B:&NirG%MrrA"/j5K#%Tb[V;Rf7m -!BpJTm/X,trrB$LmGR@8gJIqN6fWatJcE@^"lhrM!)_L%mIBQEeieN~> -!BU8Qkl@9drrAU@l/:e0fM;JI6fWatJcE@^"lhrM!)M6ul1+!=c8pI~> -!B:&NirG%MrrA"/j5Ar$dS0]A6fWatJcE@^"lhrM!):mmj72.1_`*)~> -!BpJTm/X,trrB$LmG@46S.Yf2PPp(4JcELb"oXVo!"tfQmI0ECeieN~> -!BU8Qkl@9drrAU@l/(Y.R1TE.PPp(4JcELb"oXVo!"kWMl0mj;c8pI~> -!B:&NirG%MrrA"/j5/f"Pn=!*PPp(4JcELb"oXVo!"kKIj6u"/_`*)~> -!BpJTm/X,trrB$LmG7.5fMDPJ4P55bJcERd"kYp;!)V=!mI'?BeieN~> -!BU8Qkl@9drrAU@l.tS-e4ouD4P55bJcERd"kYp;!)D$pl0dd:c8pI~> -!B:&NirG%MrrA"/j5&`!cV+<=4P55bJcERd"kYp;!)1^ij6kq._`*)~> -!BpJTm/X,trrB$LmG%"3UDNt:LAQQ%JcE^h"oF#[!#VJ^mHj3@eieN~> -!BU8Qkl@9drrAU@l.bG+TGRY7LAQQ%JcE^h"oF#[!#VA[l0RX8c8pI~> -!B:&NirG%MrrA"/j4iStS/2/2LAQQ%JcE^h"oF#[!#M/Vj6Ye,_`*)~> -!BpJTm/X,trrB$LmFpq2hHU']/]rYEJcEdj"j/Cs!F4K4mHa-?eieN~> -!BU8Qkl@9drrAU@l.YA*g0+LW/]rYEJcEdj"j/Cs!F"3.l0IR7c8pI~> -!B:&NirG%MrrA"/j4`MseQ;hP/]rYEJcEdj"j/Cs!Edm'j6P_+_`*)~> -!BpJTm/X,trrB$LmF^e0^)m=VB'k0LJcEpn"mon'!$Aq+mHO!=eieN~> -!BU8Qkl@9drrAU@l.G5(],gqRB'k0LJcEpn"mon'!$8b'l07F5c8pI~> -!B:&NirG%MrrA"/j4NAq[N,>LB'k0LJcEpn"mon'!$/M!j6>S)_`*)~> -!BpJTm/X,trrB$LmFU_0j`1P*'qkPWs+13rrs&Iq'`\GYjalg_m/bd$J,~> -!BU8Qkl@9drrAU@l.>/(iG\r#'qkPWs+13rrs&Iq'`\DViIU7WklK'jJ,~> -!B:&NirG%MrrA"/j4E;qgMI)o'qkPWs+13rrs&Iq'`\DSgO\DKirR%VJ,~> -!BpJTm/X,trrB$LmFCS-a?0G&2qW]]JcF-t"kYa6!'J>RmH3d:eieN~> -!BU8Qkl@9drrAU@l.,#%`B+&"2qW]]JcF-t"kYa6!'A/Nl/q42c8pI~> -!B:&NirG%MrrA"/j43/n^cDGq2qW]]JcF-t"kYa6!'7oHj6#A&_`*)~> -!BpJTm/X,trrB$LmF:M-m$JLf"`a!^s+14#rs%q3"TT:)m"+Qcm/bd$J,~> -!BU8Qkl@9drrAU@l."r%k`lk_"`a!^s+14#rs%q3"TT:&k^i![klK'jJ,~> -!B:&NirG%MrrA"/j4*)nifOoT"`a!^s+14#rs%q3"TT7!idp.OirR%VJ,~> -!BpJTm/X,trrB$LmF(A+jCJ>l(7P2Qs+14'rs&Fj('"AHjFQ^Ym/bd$J,~> -!BU8Qkl@9drrAU@l-ef#i*ucf(7P2Qs+14'rs&Fj('"AFi.:.QklK'jJ,~> -!B:&NirG%MrrA"/j3lrlg0k!^(7P2Qs+14'rs&Fj('"ADg4A;EirR%VJ,~> -!BpJTm/X,trrB$LmEk5(_)_Pr1;e\CJcFL)"iE(q!'7rImG[F5eieN~> -!BU8Qkl@9drrAU@l-SYu^,Z/n1;e\CJcFL)"iE(q!'.cEl/Ck-c8pI~> -!B:&NirG%MrrA"/j3Zfi\MsQh1;e\CJcFL)"iE(q!'%N?j5K#!_`*)~> -!BpJTm/X,trrB$LmEY)&SK%V0DX`5WJcFX-"n6C0!$%P\mGI:3eieN~> -!BU8Qkl@9drrAU@l-AMsRi;>-DX`5WJcFX-"n6C0!#qDYl/1_+c8pI~> -!B:&NirG%MrrA"/j3HZgQQ#o)DX`5WJcFX-"n6C0!#q8Uj58kt_`*)~> -!BpJTm/X,trrB$LmEP#&jE:h0#^,Qds+141rs%n6#QP0SjFQ^Tm/bd$J,~> -!BU8Qkl@9drrAU@l-8Gsi,f8*#^,Qds+141rs%n6#QP0Qi.:.LklK'jJ,~> -!B:&NirG%MrrA"/j3?Tgg2RE!#^,Qds+141rs%n6#QP0Ng4A;@irR%VJ,~> -!BpJTm/X,trrB$LmE=l$d8U,H'9;j=s+145rs&7Y'*&&4d=L]?m/bd$J,~> -!BU8Qkl@9drrAU@l-&;qc;O`D'9;j=s+145rs&7Y'*&&3c@P68klK'jJ,~> -!B:&NirG%MrrA"/j3-HeaADs<'9;j=s+145rs&7Y'*&&1aFWC,irR%VJ,~> -!BpJTm/X,trrB$LmE+`"^HDPs,,bEks+149rs&J#+ohU+^Obe+m/bd$J,~> -!BU8Qkl@9drrAU@l,i/o]0$&n,,bEks+149rs&J#+ohU*]7K5#klK'jJ,~> -!B:&NirG%MrrA"/j2p -!BpJTm/X,trrB$LmDnStW$q]H1:Dc6JcG-;"h$/d!%FjtmF^e,eieN~> -!BU8Qkl@9drrAU@l,W#lVC2EE1:Dc6JcG-;"h$/d!%=^ql.G5$c8pI~> -!B:&NirG%MrrA"/j2^0`TdKg?1:Dc6JcG-;"h$/d!%4Ikj4NAm_`*)~> -!BpJTm/X,trrB$LmDeMtl]E"a!'@rHs+14?rs$5"!!!jul[eHTm/bd$J,~> -!BU8Qkl@9drrAU@l,MrlkDpG[!'@rHs+14?rs$5"!!!jskCMmLklK'jJ,~> -!B:&NirG%MrrA"/j2U*`iJSKP!'@rHs+14?rs$5"!!!gniIU%@irR%VJ,~> -!BpJTm/X,trrB$LmDSArjb"3H!(=nZs+14Crs$P4!!![bjalgLm/bd$J,~> -!BU8Qkl@9drrAU@l,;fjiIMXB!(=nZs+14Crs$P4!!![`iIU7DklK'jJ,~> -!B:&NirG%MrrA"/j2Bs^gO9e9!(=nZs+14Crs$P4!!![]gO\D8irR%VJ,~> -!BpJTm/X,trrB$LmDA5pid219!*J$-s+14Grs%7\!!!OVidpLGm/bd$J,~> -!BU8Qkl@9drrAU@l,)ZhhK]V3!*J$-s+14Grs%7\!!!OThLXq?klK'jJ,~> -!B:&NirG%MrrA"/j20g\fQI`)!*J$-s+14Grs%7\!!!LPfR`)3irR%VJ,~> -!BpJTm/X,trrB$LmD/)nh/Nf&!(b%Zs+14Krs$D4!!!CHh1=t@m/bd$J,~> -!BU8Qkl@9drrAU@l+lNfg2@?!!(b%Zs+14Krs$D4!!!CFg4AM9klK'jJ,~> -!B:&NirG%MrrA"/j1s[Ze8,Km!(b%Zs+14Krs$D4!!!CCe:HZ-irR%VJ,~> -!BpJTm/X,trrB$LmCqrlg275t!(">Ms+11S^-M`!$?"RKmEb/#eieN~> -!BU8Qkl@9drrAU@l+ZBdenbZn!(">Ms+11S^-M`!$>e:El-JSpc8pI~> -!B:&NirG%MrrA"/j1aOXctWmf!(">Ms+11S^-M`!$>Rq=j3Q`d_`*)~> -!BpJTm/X,trrB$LmC_fkgiX,-!$@a1JcCN*#QC58!!!OPgk"k;m/bd$J,~> -!BU8Qkl@9drrAU@l+H6cflIZ(!$@a1JcCN*#QC58!!!ONfn&D4klK'jJ,~> -!B:&NirG%MrrA"/j1OCWdr5cs!$@a1JcCN*#QC58!!!LJdt-Q(irR%VJ,~> -!BpJTm/X,trrB$LmCMZihg6":!%X];JcCZ.#PjuB!!![Zhgt1 -!BU8Qkl@9drrAU@l+6*agNaD3!%X];JcCZ.#PjuB!!!XWgO\V4klK'jJ,~> -!B:&NirG%MrrA"/j1=7UeohZ+!%X];JcCZ.#PjuB!!!XTeq)l)irR%VJ,~> -!BpJTm/X,trrB$LmC;Ngl&-/S!#pdaJcCf2#OmQh!!!Xil%/6Dm/bd$J,~> -!BU8Qkl@9drrAU@l+#s_jbXQL!#pdaJcCf2#OmQh!!!Ufjal[ -!B:&NirG%MrrA"/j1++Shh;XB!#pdaJcCf2#OmQh!!!Ubhgsh0irR%VJ,~> -!BpJTm/X,trrB$LmC)Beka*e"!!n#BJcCr6#Om-I!!"O9k^i-Am/bd$J,~> -!BU8Qkl@9drrAU@l*fg]jHM+o!!n#BJcCr6#Om-I!!"L5jFQR9klK'jJ,~> -!B:&NirG%MrrA"/j0mtQhiT>f!!n#BJcCr6#Om-I!!"I1hgsh.irR%VJ,~> -!BpJTm/X,trrB$LmBl6cm&N;M!!?*4JcD):#JO%;!!#3`m"+QCm/bd$J,~> -!BU8Qkl@9drrAU@l*T[[kbpWE!!?*4JcD):#JO%;!!#0\k^i!;klK'jJ,~> -!B:&NirG%MrrA"/j0[hOihSX9!!?*4JcD):#JO%;!!#*Vidp./irR%VJ,~> -!BpJTm/X,trrB$LmBQ$`^K(I;!%jZ4JcD;@#PFN;!!!.&^Obdhm/bd$J,~> -!BU8Qkl@9drrAU@l*9IX]2\t6!%jZ4JcD;@#PFN;!!!.%]7K4`klK'jJ,~> -!B:&NirG%MrrA"/j0@VL[o*>/!%jZ4JcD;@#PFN;!!!."[t3SVirR%VJ,~> -!BpJTm/X,trrB$LmB>m^fQ\55!!dH+JcDGD#O$(2!!!j\fR`G*m/bd$J,~> -!BU8Qkl@9drrAU@l*'=Ve92Z/!!dH+JcDGD#O$(2!!!jZe:Hl"klK'jJ,~> -!B:&NirG%MrrA"/j0.JJcZ9m&!!dH+JcDGD#O$(2!!!gVc[k,lirR%VJ,~> -!BpJTm/X,trrB$LmB,a]kaOF0!!,B`pjrICrs8Ct5lgrc24Nf\mCqrgeieN~> -!BU8Qkl@9drrAU@l)j1UjHqb(!!,B`pjrICrs8Ct5lgrc1mm?Tl+ZB_c8pI~> -!B:&NirG%MrrA"/j/q>Ihions!!,B`pjrICrs8Ct5lgrc1R-dJj1aOS_`*)~> -!BpJTm/X,trrB$LmAfOY^Kh*F!#9V/JcDeN#MF26!!!:1^Obdam/bd$J,~> -!BU8Qkl@9drrAU@l)NtQ]3>O@!#9V/JcDeN#MF26!!!:/]7K4YklK'jJ,~> -!B:&NirG%MrrA"/j/V,E[oit:!#9V/JcDeN#MF26!!!:-[t3SOirR%VJ,~> -!BpJTm/X,trrB$LmATCRi/K>f!!56Qo7?qHrrVe_48o3]/WJ\>mCDTbeieN~> -!BU8Qkl@9drrAU@l)7l+-$Zc8pI~> -!B:&NirG%MrrA"/j/Cu>f7tmU!!56Qo7?qHrrVe_48o3].u2`-j141N_`*)~> -!BpJTm/X,trrB$LmA91U]NkjE!")rArIP!Xrs8S7>7(?1$=1;qmC)B_eieN~> -!BU8Qkl@9drrAU@l)!VM\Q]C@!")rArIP!Xrs8S7>7(?1$ -!B:&NirG%MrrA"/j/(cAZrm_9!")rArIP!Xrs8S7>7(?1$ -!BpJTm/X,trrB$LmA'%SiflM*!!!UcmXbDMrs8%I&HDe34-\`UmBl6]eieN~> -!BU8Qkl@9drrAU@l(dJKhNBo#!!!UcmXbDMrs8%I&HDe33g/?Nl*T[Uc8pI~> -!B:&NirG%MrrA"/j.kW?fT%rm!!!UcmXbDMrs8%I&HDe33KDaCj0[hI_`*)~> -!BpJTm/X,trrB$Lm@`hJcZgT3!!4^)gO]C@rrUr./H,VN+F)4`mBQ$ZeieN~> -!BU8Qkl@9drrAU@l(I8Bb]Y-.!!4^)gO]C@rrUr./H,VN+Ekt[l*9IRc8pI~> -!B:&NirG%MrrA"/j.PE6a)`@%!!4^)gO]C@rrUr./H,VN+*5JRj0@VF_`*)~> -!BpJTm/X,trrB$Lm@EVG[;-*J!!5$;j+76NrrV5?2?!RW$#?r"mB5gWeieN~> -!BU8Qkl@9drrAU@l(.&?Z>'^F!!5$;j+76NrrV5?2?!RW$#6bsl)s7Oc8pI~> -!B:&NirG%MrrA"/j.533Y%J(?!!5$;j+76NrrV5?2?!RW$"pDlj0%DC_`*)~> -!BpJTm/X,trrB$Lm@3JLkbqMk!!!$ZM;!O\c2S+(M)YM9!"Du-k^i-&m/bd$J,~> -!BU8Qkl@9drrAU@l'poDjJGod!!!$ZM;!O\c2S+(M)YM9!"Dr*jFQQsklK'jJ,~> -!B:&NirG%MrrA"/j.#'8hk -!BpJTm/X,trrB$Lm?m8CkFkZXrW!$OIEqhCs4.,Orm#pCrW!$,:SHs&mA]IReieN~> -!BU8Qkl@9drrAU@l'U];j.8sOrW!$OIEqhCs4.,Orm#pCrW!$,9qLBrl)EnJc8pI~> -!B:&NirG%MrrA"/j-\j/h3ptCrW!$OIEqhCs4.,Orm#pCrW!$,9:F[fj/M&>_`*)~> -!BpJTm/X,trrB$Lm?R&@jJ#ZdrW!$BC:3ees4dPUpU+`XrW!$3 -!BU8Qkl@9drrAU@l':K8i1F![rW!$BC:3ees4dPUpU+`XrW!$2 -!B:&NirG%MrrA"/j-AX,g7(tNrW!$BC:3ees4dPUpU+`XrW!$2;OcBkj/1i;_`*)~> -!BpJTm/X,trrB$Lm?6i=kcJ81rW!$,8sJ1`s5Et[hNUV=rW!$;@BJaEmA'%LeieN~> -!BU8Qkl@9drrAU@l&t95jJlT)rW!$,8sJ1`s5Et[hNUV=rW!$;@&i:=l(dJDc8pI~> -!B:&NirG%MrrA"/j-&F)hkjZqrW!$,8sJ1`s5Et[hNUV=rW!$:?)HM1j.kW8_`*)~> -!BpJTm/X,trrB$Lm>gQ9^3244rW!$UD6`\`s69Oco -!BU8Qkl@9drrAU@l&P!1]6#_.rW!$UD6`\`s69Oco -!B:&NirG%MrrA"/j,W.%[W*r%rW!$UD6`\`s69Oco -!BpJTm/X,trrB$Lm>L?6fTf8DrW!'(3./L9JcG9?"Sf`Z3!B3\!tS4nfR`F[m/bd$J,~> -!BU8Qkl@9drrAU@l&4d.e< -!B:&NirG%MrrA"/j,;q"c]:a0rW!'(3./L9JcG9?"Sf`Z3!B3\!tJ"cc[k,HirR%VJ,~> -!BpJTm/X,trrB$Lm>('2\T^":rW!'.6%6H -!BU8Qkl@9drrAU@l%eL*[WOP5rW!'.6%6H -!B:&NirG%MrrA"/j+lXsZ#V`*rW!'.6%6H -!BpJTm/X,trrB$Lm=aj0ii$TB!WE'%"#Y,'pjrGJponcr"9&9'!@qo`idpK^m/bd$J,~> -!BU8Qkl@9drrAU@l%J:(hPOs9!WE'%"#Y,'pjrGJponcr"9&9'!@hc[hLXpVklK'jJ,~> -!B:&NirG%MrrA"/j+QFqfV)k*!WE'%"#Y,'pjrGJponcr"9&9'!@_TRfR`(JirR%VJ,~> -!BpJTm/X,trrB$Lm=FX.mFn=M1'RUV" -!BU8Qkl@9drrAU@l%/(&l.;SB0a7LU" -!B:&NirG%MrrA"/j+64oj3aB/0Eh=S" -!BpJTm/X,trrB$Lm=F[&m0)RSG";f8!!NBa?]VtmQ2_$Y^Q2__!Wk(2oZm/bd$J,~> -!BU8Qkl@9drrAU@l%/*sklg"HF@QN5!!NBa?]VtmQ2_$Y^Q2__!W -!B:&NirG%MrrA"/j+67girn/8ECC$/!!NBa?]VtmQ2_$Y^Q2__!W -!BpJTm/X,trrB$Lm=F["m02grQ!uBMqu?mB:Pc($r1X,or7%d':ETK7"U-PgQ,i3Am>:32eieN~> -!BU8Qkl@9drrAU@l%/*oklp7gP@-!Hqu?mB:Pc($r1X,or7%d':ETK7"U-MdPJlX8l&"X*c8pI~> -!B:&NirG%MrrA"/j+67cis"DVO'XC@qu?mB:Pc($r1X,or7%d':ETK7"U$D`O2'Y)j,)ds_`*)~> -!BpJTm/X,trrB$Lm=FZrm02gbNF+IHqu?p'-rG;c_ -!BU8Qkl@9drrAU@l%/*jklp7WMI&%Cqu?p'-rG;c_ -!B:&NirG%MrrA"/j+67^is"DGLKcJ -!BpJTm/X,trrB$Lm=FZmm0;mtS8Ce?!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHI88Xm -!BU8Qkl@9drrAU@l%/*ekm$=iR;5;9!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHI7r+O3kCMlK -l2TuKc8pI~> -!B:&NirG%MrrA"/j+67Yis+JXQ"`Z0!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHH7;8%&iIU$? -j8\-?_`*)~> -!BpJTm/X,trrB$Lm=FZgm0;ajS97IU"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQW96HcA -kCN#OmJ6,MeieN~> -!BU8Qkl@9drrAU@l%/*_km$4`R<(tO"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQW8opE8 -jFQQHl1sQEc8pI~> -!B:&NirG%MrrA"/j+67Sis+AOQ#K8E"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQV88sj* -hLX^ -!BpJTm/X,trrB$Lm=FZ`m0D=SR!2Us*s20:0+KNl7oj5FL6eR:\&$59h<4(knauSPrVcTeo^VA7 -kM=V0_7-SAQA0Qp<_#)"%efr.!Zs[/GF5nnJaJ$Uo'HJ/4b*~> -!BU8Qkl@9drrAU@l%/*Xkm,bHQ$$+l*Wl'90+KNl7oj5FL6eR:\&$59h<4(knauSPrVcTeo^VA7 -kM=V0_7-SAQA0Qp<_#)"%efr.!ZjR,Fd9AbJa%aMo'$2#3e.~> -!B:&NirG%MrrA"/j+67Lis3o7O`FA`* -!BpJTm/X,trrB$Lm=FZYm0`43]V:0u=@=b["47)U!u`d[=D`hf][uM$m=FZjm/bd$J,~> -!BU8Qkl@9drrAU@l%/*QkmHY'\Y"Rk<^JDV"47)U!uW^X -!B:&NirG%MrrA"/j+67EisOek[$uV\<'`&Q"47)U!uWXU<,$oQ[*IZ^j+67VirR%VJ,~> -!BpJTm/X,trrB$Lm=FZNm4[>7\Z20[IrA^q91(]o-m'3<&.JsO"TSN+#7:nO',DZ<0f_To -!BU8Qkl@9drrAU@l%/*FkqCc,[\oRPI;N=k8jYKk-Qa*;%h/jN"TSN+#7:nN',DZ;0K;Bk -!B:&NirG%MrrA"/j+67:j"JrqZ(mV@H"pS^83f*e-6 -!BpJTmCB3Im=FYUm=FYUmJcJReieN~> -!BU8Ql+*@9l%/)Ml%/)Ml2KoJc8pI~> -!B:&Nj11,"j+66Aj+66Aj8S'>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6eq)D'eq)D'eu7."4b*~> -!BU73c@O8lc@O8lcD]"g3e.~> -!B:%0_h#^V_h#^V_l1HQ2h1~> -JN\QIJN\QIJN]hmJ,~> -JNA?CJNA?CJNBVgJ,~> -JN&-=JN&-=JN'DaJ,~> -%%EndData -showpage -%%Trailer -end -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours_bfs.jpg b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours_bfs.jpg deleted file mode 100755 index f8aa254ea6..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours_bfs.jpg and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours_dfs.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours_dfs.eps deleted file mode 100755 index 58a5ed697d..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours_dfs.eps +++ /dev/null @@ -1,3104 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner -%%Title: parcours_dfs.eps -%%CreationDate: Thu Jun 7 15:23:41 2007 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 14 14 547 527 -%%EndComments -%%BeginProlog -% Use own dictionary to avoid conflicts -10 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -14.173228346456694 14.173228346456694 translate -% Translate to begin of first scanline -0 512.01073964115142 translate -532.37480314960635 -512.01073964115142 scale -% Image geometry -732 704 8 -% Transformation matrix -[ 732 0 0 704 0 0 ] -% Strings to hold RGB-samples per scanline -/rstr 732 string def -/gstr 732 string def -/bstr 732 string def -{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} -true 3 -%%BeginData: 159462 ASCII Bytes -colorimage -quD:2JN\QIJN\QIY -quD:/JNA?CJNA?CY<)R]J,~> -quD:,JN&-=JN&-=Y;c@ZJ,~> -rW)s]JcC<$JcC<$JcDqRs#p>]J,~> -rW)sZJcC<$JcC<$JcDqRs#U,ZJ,~> -rW)sWJcC<$JcC<$JcDqRs#9oWJ,~> -rr<*`s8RZ=Ja\0YJa\0YYODMk!^-M`J,~> -rr<*]s8RZ:Ja@sSJa@sSYO);h!]g;]J,~> -rr<*Zs8RZ4J`_OGJ`_OGYNGlb!]L)ZJ,~> -!WYC`JaJ$UJaJ$UJaMRdo8ie9o8ie9o8ik;!nKL7J,~> -!WY:]Ja.gOJa.gOJa2@^o7Qr*o7Qr*o7R#,!mWh,J,~> -!WY1ZJ`D=AJ`D=AJ`GkPo5OTeo5OTeo5OZg!lHqsJ,~> -!WYC`Ja@sSJa@sSJaDOc!0?aO!K[9[li<+ -!WY:]J`q[KJ`q[KJ`u7[!/'nC!JCFOkQ$8,rrIcProa?7oD]#Is6/[l3WO[~> -!WY1ZJ`21=J`21=J`5bM!-%Q0!HA) -!BpI6l@J5Ol@J5OlK7@4O8nh="mV0KlAtu:m02d9s6>[FoBcbIO8nM1eieN~> -!BU73k(2ZGk(2ZGk2te,KE(Q-"m1I;k(E^*klp4%s5nt6oB?JAKE()rc8pI~> -!B:%0hgs[9hgs[9hr`esE<#Oi"lF;!hf/Veis"=Zs5.eqoA^&4E<"hQ_`*)~> -!BpJ\kl>etFTI3YJa%aMJa%aMJa*$q!K[9PlNQO6rooLDoBQSEO8eC)s7>O\l&Yi.l./"J~> -!BU8Yj8a8oGl`TWJ`MCCJ`MCCJ`Q[g!JCFDk69q!roA_3oB-;CXjFdHmjN]f:~> -!B:&Vg]2EgHi\iPJ_Yh3J_Yh3J_^+W!HA)1i1Rgi38Jgqu($~> -!BpJ\k5\'G0*+GsJ`hUI_rq%"s6'C^J`hUI^?5NXs7>LZkE#T)O8nh:"m:sFkE#Z7l3?F4rTE@p -4b*~> -!BU8YiW*!N9*!Xridp+,ir9#Yir9"0idp+'iW4]3oAp/8KDje^s7>=Uie.3hKE(Q)#3(:6io86E -J,~> -!B:&Vg&PXUB`V,ZJ_G\/_qP+js4[JQJ_G\/^=iU,s7>+Og2R#EE<#Oe"kmqog2R)`hZheRrS#uC -2h1~> -!BpJ\jpmm?j5oFelKmp,nac=$h1=^>k0iDg!;YdW!<;3]!<;3]!.j9`k/-6]O8nh8"m1mEk)]QA -kkP5XkQU+0rT91@roj@^rTO7]roaRKO8\5'eieN~> -!BU8Yi!u78j5oFelKmp,nFH4#f7Dk2i6pQ[!;YRQ!<;!W!<;!W!.j'Zi54CQKE(Q("lP%2i.M(/ -jS8fTj9=Ior8<5-roF(ZrT*tYro=:AKDaZcc8pI~> -!B:&VfFFD0j5oIflKdj+nFH4!d"0i#f[AFK!;Y:I!<:^O!<:^O!.idRfYZ8AE<#Oc"k[elfPpli -h>%'Mh$)GMr7Gugrn[SSrS@JRrnRe2E;\A@_`*)~> -!BpJ\jURg@jQ>Xilg=-0o(2O(gk"Rroa7\s6'@]roXLIO8S,$eieN~> -!BU8Yh[Z19jQ>Xilg=-0nalF&eq)_0hpUE^!;,1K!;k[R!.j$Yhnn7OKE(Q&"lFt1hh1t.iqWTR -iW\4lr83/,ro3nWs5O"Xro+.>KDaWac8pI~> -!B:&Vf++>1jQ>[jlg4'/nalF$c[j]!f@&:N!;+nC!;kCJ!.iaQf>?,?E<#Oa"kR_jf5Uchg\CjK -gBH2Jqq#fernIDPs4dMQrn@Y/E;S8=_`*)~> -!BpJ\jURgAjlbmnm-X93o(;X+gk"R -!BU8Yh[Z.:jlbjmm-a?4oCVa+eq)_0hpUE^!;YL[HlE27N;rt9hZ*Z6quHcS%Gc.G!ul@ -!B:&Vede52jlbjmm-a?4oCVa)c@OPtf$`.L!;Y1RG8^T/LB%>*ec5^$quHcJ%Ff>8!uc..f%'g$ -HPcj9eq)E%ecBaio@X;uE;J.)s8L[O!;kFL!<1XTeo:K:E<#miqZ-TJ#1dbif%._tJ,~> -!BpJ\j:7^Ak32*rmI'K7o_%s/gO\F:jO3,h!;baeJcJBjdRaE=jQ$:@jQ$:@rT"B2!+t"u!-mSc -!!$0TJ`MCCe)UOjs754RO8J"!s8M'Z!;kgW!<(s]O8J"!s8:sV!;kg\O8J#!eieN~> -!BU8Yh@?(;k32*rmI0Q8o_%s-eUcS.hU:9\!;bO_IK2m_bsqa6hVJ54hVJ54rS@s)!+XSi!-R/T -!!$'LJ_kt7e(t+Xs7>+OhLk[]KE(r.!!)oR!!*#U"l=n.hLkk+hu*QQhZhqiqVL)S3e.~> -!B:&Vede53k32*rmI'K7o_%s,c@OPtf$`.L!;b7WH2pCQ`C0b,f%'g$f%'g$rRMBr!+=)[!-$N? -!!#sAJ_#D'e(+P=s7=hGeo:H9E<#ph!!)oJ!!*#M"kIYgeo:ZefDP^If*9fFq:=-72h1~> -!BpJ\j:7^BkNV=!mdTc*!7'ZM!$((\ -!!(;qjFQC?j8k>AoA^#8O8J"!s8M$Y!;kdV!<2!^jH'3!O8o. -!BU8Yh@?(;kiqF"mdTcr9/o%jM%qVHl)rn[VTqq_;QrS@[0qVHl)r8.APqq_L/qVL)S3e.~> -!B:&VeIJ,3kNV=!mdTc -!BpJ\isqXCkj%O%n+#u@p@nB6g4A:8j3luf!;b^d"9@B?j50h:j5U+>j5U+>rSn4f!9)tr!!M?B -!!%T1J`G/ -!BU8Yh%$"=kj%O&n+#u@p@nB4e:HG,h9t-Z!;bL^!s%'2h:_i/h;&&2h;&&2rS7e_!8H>`!!D'5 -!!%T+J_e`0!JCFDg]cMdq;$]'rnIJRqqM/OrnI\5KDF>Us8CaM!<([Wh1POZh9J'3~> -!B:&Ve./&4kj%O%n+#u@p%S91b^n8peC)kH!;b1U!s$d!eBn6reC4HueC4HurR;/V!7KBF!!Ca# -!!%T"J^i)s!HA)1dfn6?pXF0^rmLiIqpPNFrmM&#E;.k$s8CFD!<(@Ne8Y03eAF4q~> -!BpJ\isq[El0Ia)nFH2Dp\=T9g4A:8j3luf!;b^d*WX4?j2Cuuj5U+>j5U+>rSn5&!6sQJ!$(%Z -!!%T1J`G/ -!BU8Yh%$%?l0Ia)nF?,Cp\=T7e:HG,h9t-Z!;bL^*<Pqq;#Mrn7P3KD=8Ts8LaO!<:dP!<1[Vh1PLYh9J'3~> -!B:&Ve./)6l0Ia)nFH2Dp\FZ6b^n8peC)kH!;b1U*!!P!e@5JYeC4HueC4HurR;/j!5I$t!#jA: -!!%T"J^i)s!HA)BDrm:o!E;%e#s8LFF!<:IG!<1@Me8Y-2eAF4q~> -!BpJ\iXVUFlg4'.nalDHq"afio8NPJ,~> -!BU8Yg^]q?lg4'/nalGIp\F]:dt-;*gsY!X!;bI^I/ld\bXVX5gtVl0gtW;<^]*!qB`MVl@K:H( -g].>*gk"8.g]<'-rn7)Irn.J1KD4/Rs8L^I!<1XTgk5@VKE(r(rrE#NrrE&O#2Fk*gt^19J,~> -!B:&Vdgi#7lg4'.nalDHq"af9bCS,ne'c_F!;b.UGQ:.K_aFJ)e'e9se'e^*\,Oh`AH6&\?3"ik -df9B!dt,uqdfFFfrm1B?rm(bsE:q\!s8L@?!<1:Jdr>!/E<#p`rrE#DrrE&E#1IPae'l2nJ,~> -!BpJ\iWa1GI!pElIf=isJ-(:Bg4A77imQi_!<1suI2`;6NW9(=iW&u):!K[9Ph?Do"pu7A7oA0Z1O8.^qs7>(OifEloimp8C~> -!BU8Yg]hM?H[L3hIK"]qIfb.=e:HD+gsY!S!<1aoH5Zl0M?!Y3g].?0gis;/!8QA^B,:XfE8'+& -!!%T*J_\Z.!JCFDf*0r^pY:E$o@F0$KD4/Rs7=hHgk5@Vgs.s2~> -!B:&VdfjB0H$Xd`rI"Wn!e+t0J^]2!daS$mrmMm1)$;"7!!(Ks!!(KsEt&*Le'lWP('5=hdF6PE -!.iUMe'ZVFE<#OS"k.G_dr>?YbluR8o[@dZo?@KgE:hW._`*)~> -!BpJ\huML(ecFC[J`)+;J`)+;J`-C_!K[9Pg]cVspu%55o@sN-O8.Xos7>"Mi/dZki7:&A~> -!BU8Yg&TXpd/_jNg4@t/g4@t/gA9M(KE(Po"knV&g4TFsecjc[p=b0!o@=-"KD+$Qc8pI~> -!B:&VciD5]`rX9-J^AtpJ^AtpJ^F8?!HA)1b6?73o?_IVo?. -!BpI6hLXO7hLXO7hWEYqO8nh+"l>=7hN.^.gBHGppYLu2o@jK+O8%MfeieN~> -!BU73fR_\+fR_\+f]LfeKE(Pm"k\J#fRs4qe-4KWp"4oso@*usKD!mLc8pI~> -!B:%0c@O8lc@O8lcK`gTaT]t/o$24So>q3^E:V<"_`*)~> -!BpI6h1=C5h1=C5h -!BU73eq)D'eq)D'f&bH_KCd.bKD#5p!/'ma!JC(Eec:?oa8pqdrmh+q3e.~> -!B:%0b^muhb^muhbiR%KE:^[BE:NqO!-%PA!H@T.bQ)VR])cm@rlbD\2h1~> -!BpI6gO\+1gO\+1gZ@/ip[aFGp\ihHp[aFGp\ihHp[aFGp\ihIeieN~> -!BU73e:H,#e:H,#eE,0[p%*e9p&3A?p%*e9p&3A?p%*e9p&3A@c8pI~> -!B:%0aaqQbaaqQbalUVEnag]"nbpQ0nag]"nbpQ0nag]"nbpQ1_`*)~> -!BpI6fn%h-fn%h-g#UiXp\WY8p\WY8p\`\FeieN~> -!BU73dXfhtdXfhtdcAjJp&!2/p&!2/p&*5=c8pI~> -!B:%0a+;9^a+;9^a5k;4nb^Aunb^AunbgE._`*)~> -!BpI6eq)D'eq)D'eu7."4b*~> -!BU73c@O8lc@O8lcD]"g3e.~> -!B:%0_h#^V_h#^V_l1HQ2h1~> -!'Pn%JXV.YJXV.YVj[TKJ,~> -!'5[kJW>;AJW>;AViCa -!&oIVJUE#rJUE#rVgJJ'J,~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpJTm=FVTm"+MSm"+N@m.BZGeieN~> -!BU8Ql%/&Lk^hrKk^hs8kk+*?c8pI~> -!B:&Nj+63@idp*?idp+,iq273_`*)~> -!BpJTm=FVTm"+MSm"+N@m.BZGeieN~> -!BU8Ql%/&Lk^hrKk^hs8kk+*?c8pI~> -!B:&Nj+63@idp*?idp+,iq273_`*)~> -!BpJTm=FVTm"+MSm"+N@m.BZGeieN~> -!BU8Ql%/#KkCMfIkCMg6kOe!>c8pI~> -!B:&Nj+60?iITs=iITt*iUl.2_`*)~> -!BpJTm=FSSl[eAQl[eB>lh'QFeieN~> -!BU8Ql%/#KkCMfIkCMg6kOe!>c8pI~> -!B:&Nj+60?iITs=iITt*iUl.2_`*)~> -!BpJTm=FSSl[eAQl[eB>lh'QFeieN~> -!BU8Ql%/#KkCMfIkCMg6kOe!>c8pI~> -!B:&Nj+6->i.9g;i.9h(i:Q%1_`*)~> -!BpJTm=FSSl[eAQl[eB>lh'QFeieN~> -!BU8Ql%.uJk(2ZGk(2[4k4Im=c8pI~> -!B:&Nj+6->i.9g;i.9h(i:Q%1_`*)~> -!BpJTmI0 -!BU8Ql0ma7!.j9`k(2ZGk(2[Gk4Im=c8pI~> -!B:&Nj6tk*!.j$Yhgs[9hgs\9ht5q0_`*)~> -!BpJTmIKNE!:&hLJa.gOJa.gOJa1hOo^)\14b*~> -!BU8Ql13p -!B:&Nj7;(0!8lZ6J_u%9J_u%9J`#&9o]#ti2h1~> -!BpJTmJ,rD!<)-^!.jBcl%/)Ml%/*Ml1F?DeieN~> -!BU8Ql1jB -!B:&Nj7qL/!<(aS!.j!XhLXO7hLXP7hXoh/_`*)~> -!BpJTmJ,oG!;YjZ!.jBcl%/)Ml%/*Ml1F?DeieN~> -!BU8Ql1j<>!;Y[U!.j3^jFQBCjFQCCjRh[;c8pI~> -!B:&Nj7qI2!;YIO!.j!XhLXO7hLXP7hXoh/_`*)~> -!BpJTmJ,oG!;u'h!9r_Jl07>J'*qCiJa%aMJa%aMJa)%Uo^)\14b*~> -!BU8Ql1j<>!;tmc!9E2@jQ,98'*q@cJ`MCCJ`MCCJ`P\Ko]ZD%3e.~> -!B:&Nj7qF1!;tX\!8ZH2h;-du&dV.YJ_bn5J_bn5J_f2=o]#ti2h1~> -!BpJTmJ,lF!;u$g!9iVHkid1SceMT0J`q[KJ`q[KJ`ttSo^)\14b*~> -!BU8Ql1j9=!;tjb!9<)>j5Y5Eb1BX!J`D=AJ`D=AJ`GVIo]ZD%3e.~> -!B:&Nj7qF1!;tX\!8ZH2h;*'5`R7[hJ_bn5J_bn5J_f2=o]#ti2h1~> -!BpJTmJ,oC!"A&kki`$1kT%P)kgL8tk^hrKk^hrKkhbOqm/bd$J,~> -!BU8Ql1j<:!"@lfj5U."iuGhoj3JEjj+66Aj+66Aj5/hgklK'jJ,~> -!B:&Nj7qF-!"@W_gtVnbg`*fZgrL1\gk"73gk"73gtpiYirR%VJ,~> -!BpJTmJ,lF!;u$b!9iVHki`0J!!!%Nk^hrKk^hrKkhbOqm/bd$J,~> -!BU8Ql1j9=!;tj]!9<)>j5U:@!!!%Nj+66Aj+66Aj5/hgklK'jJ,~> -!B:&Nj7q@/!;tRU!8H6.gY2i/!!!%NgO\+1gO\+1gYU]WirR%VJ,~> -!BpJTmJ,iE!;u!b!9`MFkN -!BU8Ql1j6DCo]ZD%3e.~> -!B:&Nj7q@/!;tRV!8H6.gY3UaJ_Pb1J_Pb1J_So5o]#ti2h1~> -!BpJTmJ,iE!;u!f!9`MFkN@(Wa5am0J`hUIJ`hUIJ`knQo^)\14b*~> -!BU8Ql1j6PGo]ZD%3e.~> -!B:&Nj7q=.!;tOY!8?-,g=gR3][sM_J_G\/J_G\/J_Ju7o]#ti2h1~> -!BpJTmJ,iE!;u!f!9`MFkNCrP*!IdZJ`hUIJ`hUIJ`knQo^)\14b*~> -!BU8Ql1j3;!;td`!9)l:iSi[;)[%RSJ`21=J`21=J`5JEo]ZD%3e.~> -!B:&Nj7q=.!;tOY!8?-,g=k2#)[%LLJ_G\/J_G\/J_Ju7o]#ti2h1~> -!BpJTm=FDNk(2ZGk(2[4k4J$AeieN~> -!BU8Ql%.fEiITs=iITt*iUl@8c8pI~> -!B:&Nj+5m7fn%h-fn%hog%=;*_`*)~> -!BpJTm=FDNk(2ZGk(2[4k4J$AeieN~> -!BU8Ql%.cDi.9g;i.9h(i:Q77c8pI~> -!B:&Nj+5m7fn%h-fn%hog%=;*_`*)~> -!BpJTm=FDNk(2ZGk(2[4k4J$AeieN~> -!BU8Ql%.cDi.9g;i.9h(i:Q77c8pI~> -!B:&Nj+5j6fR_\+fR_\mf_"2)_`*)~> -!BpJTm=FAMjalNEjalO2jn.p@eieN~> -!BU8Ql%.cDi.9g;i.9h(i:Q77c8pI~> -!B:&Nj+5j6fR_\+fR_\mf_"2)_`*)~> -!BpJTm=FAMjalNEjalO2jn.p@eieN~> -!BU8Ql%.`Chgs[9hgs\&ht6.6c8pI~> -!B:&Nj+5g5f7DP)f7DPkfC\)(_`*)~> -!BpJTm=F>LjFQBCjFQC0jRhg?eieN~> -!BU8Ql%.`Chgs[9hgs\&ht6.6c8pI~> -!B:&Nj+5g5f7DP)f7DPkfC\)(_`*)~> -!BpJTm=F>LjFQBCjFQC0jRhg?eieN~> -!BU8Ql%.]BhLXO7hLXP$hXp%5c8pI~> -!B:&Nj+5d4eq)D'eq)Dif(@u'_`*)~> -!BpJTm=EE2b(7]db(7^Qb4P'%eieN~> -!BU8Ql%-[%_1BFR_1BG?_=Zsmc8pI~> -!B:&Nj+4OfZ[oH6Z[oI#Zh38Y_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpJTmCB3Im=FYUm=FYUmJcJReieN~> -!BU8Ql+*@9l%/)Ml%/)Ml2KoJc8pI~> -!B:&Nj11,"j+66Aj+66Aj8S'>_`*)~> -!BpJTm/X,tp&M(Cm=FZNm4[>7\Z20[IrA^q91(]o-m'3<&.JsO"TSN+#7:nO',DZ<0f_To -!BU8Qkl@9doDkG5l%/*FkqCc,[\oRPI;N=k8jYKk-Qa*;%h/jN"TSN+#7:nN',DZ;0K;Bk -!B:&NirG%MnGnN!j+67:j"JrqZ(mV@H"pS^83f*e-6 -!BpJTm/a3[]^5]uJaJ$Ug?f76f=[i5D-01Y)?\@e$3M2!6s+;]U:f+EJaJ$Ulg4`(4b*~> -!BU8QklI@I]]fEeJa%aMg?At.e%)*)CK -!B:&NirP,/]]0!NJ`D=Ag>`P"cEs'lBiIAL)$A7d$3M.s5u_QLS$^K#J`D=Alf/#`2h1~> -!BpJTm/a3[]^5]uJaJ$UiU$m'\ -!BU8QklI@I]]fEeJa%aMiTUTt[?Yl8599n#!&"g52b-n\G(uc8pI~> -!B:&NirP,/]]0!NJ`D=AiSt0hY`Ws)4WOUu!&"g52b-n\G(u -!BpJTm/a3[^?l!RoVmE/JaM[g#3WjnF\=7gq#C^91/;VAT!Z]"qpGEMqr,`*Sr%5X1)9Tb"p?JM -Fe$>3JaJ$Uq<\464b*~> -!BU8QklI@I^?G^JnXY6qJa)C_#3 -!B:&NirP,/^>f:?m>QVVJ`GtS#2ZqVE(DJ^q#C^91/;VAT!Z]"qpGEMqr,`*Sr%5X1)9Tb"p?GI -E0\#kJ`D=Aq;VLn2h1~> -!BpJTm/a3[^?l!9ql,/6JaMmm#4'@#D+GfNqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#l -!BU8QklI@I^?G^1qji<&Ja)Ue#3WsnCI]NKqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#l;CRN0) -Ja%aMs60R03e.~> -!B:&NirP,/^>f:'q2BmbJ`H1Y#3!@_Bgj-FqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#i8BpHKm -J`D=As5O-t2h1~> -!BpJTm/a3[^?l!9ql,/6JaN'r"m`XW?S_rb!!WNR;0o"RmB-BmmD5QD;()PE!!NT`?]DP\JaJ-X -!S0Da~> -!BU8QklI@I^?G^1qji<&Ja)dj"m<7M?8;c`!!WNR;0o"RmB-BmmD5QD;()PE!!NT_?Ac,QJa%jP -!R<`V~> -!B:&NirP,/^>f:'q2BmbJ`H@^"lZ\@>;6B\!!WNR;0o"RmB-BmmD5QD;()PE!!NT^>DKHAJ`DFD -!Q-jH~> -!BpJTm/a3[^?l!9ql,/6JaN7""ma3o@P7o_!!OH?Lo]&'U&P;oe>nC$+8c*B"YX>Ma6Sp -4b*~> -!BU8QklI@I^?G^1qji<&Ja)so"mnC$+8c*B"YO2H`92^9M -!B:&NirP,/^>f:'q2BmbJ`HOc"l[4W?7cnC$+8c*B">*r@^Ysb(M;nWS -2h1~> -!BpJTm/a3[kNr6Lg$JjTql,/6JaNC&"Qlk18-Sql"T^YkO2(7Nrrqu.O'apKr;Zs(89V/uJaJHa -!S0Da~> -!BU8QklI@IkNMsHg$&RLqji<&Ja**s"QHJ(7g8hk"T^YkO2(7Nrrqu.O'apKr;Zs(7s(fkJa&0Y -!R<`V~> -!B:&NirP,/kMlOBg#E.Bq2BmbJ`H[g"Pfnp70NPh"T^YkO2(7Nrrqu.O'apKr;Zs'7<,6\J`DaM -!Q-jH~> -!BpJTm/a3[kNr6Lg$JjTql,/6JaEX.g7rC<"oSE(*`S$4o8EVOo>$5_*rQ'A"Yshfg4AXRm/bd$ -J,~> -!BU8QklI@IkNMsHg$&RLqji<&Ja!@&f:Zh4"oSE(*`S$4o8EVOo>$5_*rQ'A"Yj_af7E1KklK'j -J,~> -!B:&NirP,/kMlOBg#E.Bq2BmbJ`?pod@=f&"T8<'*`S$4o8EVOo>$5_*rQ'A">FGXd=L>?irR%V -J,~> -!BpJTm/a3[rp9ae6L=[!l"Q2JaJ-X"QH@p.foVL"9UN%YkWeL"Sf3A2$ -!BU8QklI@IrojIa60S:3!!)TS!!(^:!kS9"Ja%jP"Q$"h.KTMK"9UN%YkWeL"Sf3A2$ -!B:&NirP,/ro4%[5N;Y%!!)TM!!(^4!k.o`J`DFD"PBDZ.09DJ"9UN%YkWeL"Sf3A2$ -!BpJTm/a3[rp9ae!l"Q2JaJ6["1`V8"o\K)$:0-QoR[&?!! -!BU8QklI@IrojIa;hk88!!)TS!!(^:!kS9"Ja%sS"1E>3"o\K)$:0-QoR[&?!! -!B:&NirP,/ro4%[;1ni-!!)TM!!(^4!k.o`J`DOG"0ll)"TAB($:0-QoR[&?!! -!BpJTm/a3[rp9dfh^-ACm2l>qmH.[`%:J>cmH.OX'n?;OmHSX)#Z9RJmAVK;*KK@N!l"Q2JaJB_ -"5&l8&,lP3"?:eDpjrJ8rri,3HoM9.!! -!BU8QklI@IrojLbgEjf;koToil/GnV%:8)Zl/PkP'n-/Il/ljs#Z':@l)#g3*/s+G!kS9"Ja&*W -"4WN0&,lP3"?:eDpjrJ8rri,3HoM9.!! -!B:&NirP,/ro4(\eg/$0iu\9]j4mcG$s_WKj5!]A'RKi?j5=\d#Yiq2j.[k'*/Nh=!k.o`J`D[K -"4*$%%fQG2"?:eDpjrJ8rri,3HoM9.!!<^)O3`C;SDsXf2h1~> -!BpJTm/a3[rp;$4mB\M1mHjo@m;#/DfKa?Am;>DHfgPo.m -!BU8QklI@Iroka0l*)l&l0/34l"NQ9e3@d6l"if>eO0E%l$#A -!B:&NirP,/ro5=*j/aljj5U."j(:X(cTQ"&j(Um-cU%Wlj)dH,f2Z,:it@d9aB@`e!k.o`J`DdN -"1E2&!r`0%12X;fJcG!7"7rd71B%7U!\\Q%J`EB_!Q-jH~> -!BpJTm/a3[rp:s2mHne1mHjo@m24%6mE$75m2=.8mE5Lsm2a:8mFW0@m2Ll/k3W5aql,/6P3iA8 -X^N(G!! -!BU8QklI@Irok[.l03#&l0/34knqJ*l,=P)ko%S,l,Negko@Y+l-pI4ko,9$k32rYqji<&P3E)0 -WaH\C!! -!B:&NirP,/ro57(j5Xiij5U."itoSmj1lMliu#\oj2(fViuGhoj3JG"iu3Njk2QNOq2BmbP2cZ% -VHk#;!! -!BpJTm/a3[rp:U(mHs'i[I!t]m/uY@mHFc@m/uY@mHFW -!BU8QklI@Irok=$l077^ZKVARkl^)4l/`'4kl^)4l/_p0klgqb#6F)R\OI2MT]kVA])/%Ll':K8 -i1F![rW!$BC:3ees4dPUpU+`XrW!$2 -!B:&NirP,/ro4msj5\uJY2]NBire6"j51""ire6"j50jsiro;\#6ElFZpbTGSESu7[eYl5j-AX, -g7(tNrW!$BC:3ees4dPUpU+`XrW!$2;OcBkj/1i;_`*)~> -!BpJTm/a3[rp9[crp:NA-K+slm24(7mE-=6m2=.8mE>Rtm2ORMm/a1%kj8Gcql,/6R-b"=Thc!o -!!=d#cMiCpec,aNc@%8C!! -!BU8QklI@IrojC_rok6:-/ARcknqM+l,FV*ko%S,l,Wkhko.qDklIXskii/[qji<&R-=_5SkTOj -!!=d#cMiCpec,aNc@%8C!! -!B:&NirP,/ro3tYro4g/,hE%VitoVnj1uSmiu#\oj21lWiu6,9irPkhki2`Qq2BmbR,\;)RS*td -!!=d#cMiCpec,aNc@%8C!! -!BpJTm/a3[rp9[crTtb`=9.aUBh6q16Yu/WDFiL77f_rDHpu9D_bogg<6==$'Bnfb^AFm\m@3JL -kbqMk!!!$ZM;!O\c2S+(M)YM9!"Du-k^i-&m/bd$J,~> -!BU8QklI@IrojC_rTPJYGcLCe!%-70)T:H:5m:^ea4Z;T7^m''SQ]])/%Ll'poD -jJGod!!!$ZM;!O\c2S+(M)YM9!"Dr*jFQQsklK'jJ,~> -!B:&NirP,/ro3tYrSo&P<<2(>AOXtl5\K-;BgpFr6ic9-G!a.)]1q>G:r(q\''S?W[eYl5j.#'8 -hk -!BpJTm/a3[rp9[crTtcp63-E?j]`-%?0:PAk#hs)J,o!(l[9cW.\5toR3Db^X6ApP^AFm\m@EVG -[;-*J!!5$;j+76NrrV5?2?!RW$#?r"mB5gWeieN~> -!BU8QklI@IrojC_rTPKh5lg06iE?Wu>N4o3i`HI$IK8WskB\*O.@TMcQQcP[W9EII])/%Ll(.&? -Z>'^F!!5$;j+76NrrV5?2?!RW$#6bsl)s7Oc8pI~> -!B:&NirP,/ro3tYrSo'\560a(gK+dl=kr&tgf4UoHN<*diHH7E.$ioRP9C&UV!-h?[eYl5j.533 -Y%J(?!!5$;j+76NrrV5?2?!RW$"pDlj0%DC_`*)~> -!BpJTm/a3[^?l!9ql,/6T^;g,GTctc!\B#ZJcERd!o&AZrW!!BGgCs.Z0_SC4b*~> -!BU8QklI@I^?G^1qji<&T]lO%Fs-ba!\B#ZJcERd!o&AZrW!!BG0GO%Z0;;73e.~> -!B:&NirP,/^>f:'q2BmbT]6*oF!(A]!\B#ZJcERd!o&AZrW!!AF2rjlZ/Yl&2h1~> -!BpJTm/a3[^?l!9ql,/6U[8?HPWJmG!"jtRJcE@^#k!EZ!!!$]Pi@8][-[nF4b*~> -!BU8QklI@I^?G^1qji<&UZi'@Ou`UD!"jtRJcE@^#k!EZ!!!$\P2:cS[-7V:3e.~> -!B:&NirP,/^>f:'q2BmbUZ2X4N]@+?!"jtRJcE@^#k!EZ!!!$[NnApC[,V2)2h1~> -!BpJTm/a3[^?l!9ql,/6Vm^Q3$=$31&5?+baU[d=+H4b*~> -!BU8QklI@I^?G^1qji<&V7(?1$=$31&5>If=L[cmh<3e.~> -!B:&NirP,/^>f:'q2BmbV;hig=UG-/$=$31&5=gWb?[c7D+2h1~> -!BpJTm/a3[^?l!9ql,/6W9jZEN@k,0!]utEJcE"T!qVsErW!!ONSoBT\a9FK4b*~> -!BU8QklI@I^?G^1qji<&W9FB=MCnf-!]utEJcE"T!qVsErW!!OMVNdI\`j.?3e.~> -!B:&NirP,/^>f:'q2BmbW8ds2LF`?(!]utEJcE"T!qVsErW!!MLY%+;\`3_.2h1~> -!BpJTm/a3X^?Pd3ql,/6WpL&+>mLE1'm/,[s/Z/)flRr/!!llFJaL):!S0Da~> -!BU8QklI@F^?,L,qON3%Wp'c#>6k3/'m/,[s/Z/)flRr/!!lf@Ja'f2!R<`V~> -!B:&NirP,,^>K(!q2BmbWoF>n=U5!-'m/,[s/Z/)flRr/!!l`:J`FB&!Q-jH~> -!BpJTm/a3R^?#F@n>V!+XmHDXRl(0G!C -!BU8QklI@@^>T.8m[\pnXm$,PQo"dC!C -!B:&NirP,&^=r_-lAU;SXlB]EPVW:>!Cf732h1~> -!BpJTm/a3M]\`^gJaKZ.#M=8 -!BU8QklI@;]\ -!B:&NirP,!][d(AJ`Ero#L@H-!!!7Bk^ic-rs.b+#64`?F3fEt^uGI52h1~> -!BpJTm/a3G]\*:aJaK`0#JX:B!!"U>on!.6rs/4c/H>bR -!BU8QklI@5][d(RJa'H(#J3t=!!"U>on!.6rs/4c/H>bR -!B:&NirP+p][-Y;J`F#q#IdS6!!"U>on!.6rs/4c/H>bR;R_5;_W([72h1~> -!BpJTmCB3ImBl6cm&N;M!!?*4JcD):#JO%;!!#3`m"+QCm/bd$J,~> -!BU8Ql+*@9l*T[[kbpWE!!?*4JcD):#JO%;!!#0\k^i!;klK'jJ,~> -!B:&Nj11,"j0[hOihSX9!!?*4JcD):#JO%;!!#*Vidp./irR%VJ,~> -!BpJTm/X,trrB$LmC)Beka*e"!!n#BJcCr6#Om-I!!"O9k^i-Am/bd$J,~> -!BU8Qkl@9drrAU@l*fg]jHM+o!!n#BJcCr6#Om-I!!"L5jFQR9klK'jJ,~> -!B:&NirG%MrrA"/j0mtQhiT>f!!n#BJcCr6#Om-I!!"I1hgsh.irR%VJ,~> -!BpJTm/X,trrB$LmC;Ngl&-/S!#pdaJcCf2#OmQh!!!Xil%/6Dm/bd$J,~> -!BU8Qkl@9drrAU@l+#s_jbXQL!#pdaJcCf2#OmQh!!!Ufjal[ -!B:&NirG%MrrA"/j1++Shh;XB!#pdaJcCf2#OmQh!!!Ubhgsh0irR%VJ,~> -!BpJTm/X,trrB$LmCMZihg6":!%X];JcCZ.#PjuB!!![Zhgt1 -!BU8Qkl@9drrAU@l+6*agNaD3!%X];JcCZ.#PjuB!!!XWgO\V4klK'jJ,~> -!B:&NirG%MrrA"/j1=7UeohZ+!%X];JcCZ.#PjuB!!!XTeq)l)irR%VJ,~> -!BpJTm/X,trrB$LmC_fkgiX,-!$@a1JcCN*#QC58!!!OPgk"k;m/bd$J,~> -!BU8Qkl@9drrAU@l+H6cflIZ(!$@a1JcCN*#QC58!!!ONfn&D4klK'jJ,~> -!B:&NirG%MrrA"/j1OCWdr5cs!$@a1JcCN*#QC58!!!LJdt-Q(irR%VJ,~> -!BpJTm/X,trrB$LmCqrlg275t!(">Ms+11S^-M`!$?"RKmEb/#eieN~> -!BU8Qkl@9drrAU@l+ZBdenbZn!(">Ms+11S^-M`!$>e:El-JSpc8pI~> -!B:&NirG%MrrA"/j1aOXctWmf!(">Ms+11S^-M`!$>Rq=j3Q`d_`*)~> -!BpJTm/X-`rrBjNrrB$LmD/)nh/Nf&!(b%Zs+14Krs$D4!!!CHh1=t@m/bd$J,~> -!BU8Qkl@:PrrBjNrrAU@l+lNfg2@?!!(b%Zs+14Krs$D4!!!CFg4AM9klK'jJ,~> -!B:&NirG&9rrBjNrrA"/j1s[Ze8,Km!(b%Zs+14Krs$D4!!!CCe:HZ-irR%VJ,~> -!BpJTm/X-`rrE,8_Z'V8JaL>A#3't?!!$-VJcC<$q>UZS=9&=3HfBVDe*R1e4b*~> -!BU8Qkl@:PrrE,8_Z'V,Ja(&9#2XV9!!$-VJcC<$q>UZS=9&=3H/=,:e*-nY3e.~> -!B:&NirG&9rrE,8_Z'UpJ`FW-#2")/!!$-VJcC<$q>UZS=9&=2G1_B+e)LJH2h1~> -!BpJTm/X-`rrN07^r-0PWIaHTm0;[)'*&##aFXABs7QBra@$".'8,CtmFCS)eieN~> -!BU8Qkl@:PrrN07^r-0PSUp%Dkm$*t'*&##aFXABs7QBra@$".'7o+nl.,#!c8pI~> -!B:&NirG&9rrN07^r-0PN.L$-is+7e'*&##aFXABs7QBra@$".'7S\ej43/j_`*)~> -!BpJTm/X-`rrW8:'YqZe!3(P:`pEurOVe&u426@HJcG9?#/<5"!#UjaJaM(V!S0Da~> -!BU8Qkl@:PrrW8:'YqZe!1e]*`p!]jNu.is426@HJcG9?#/<5"!#Ud[Ja(eN!R<`V~> -!B:&NirG&9rrW8:'YqZe!/uKh`o@9^M\c?n426@HJcG9?#/<5"!#LRPJ`GAB!Q-jH~> -!BpJTm/X-`rr`?%^_FT'rrB$LmDnStW$q]H1:Dc6JcG-;"h$/d!%FjtmF^e,eieN~> -!BU8Qkl@:Prr`?%^_FT'rrAU@l,W#lVC2EE1:Dc6JcG-;"h$/d!%=^ql.G5$c8pI~> -!B:&NirG&9rr`?%^_FT'rrA"/j2^0`TdKg?1:Dc6JcG-;"h$/d!%4Ikj4NAm_`*)~> -!BpJTm/X-`rriE&s1f>ap&>*oN>quMrrB$LmE+`"^HDPs,,bEks+149rs&J#+ohU+^Obe+m/bd$ -J,~> -!BU8Qkl@:PrriE&s1f>ap&>*oN>quMrrAU@l,i/o]0$&n,,bEks+149rs&J#+ohU*]7K5#klK'j -J,~> -!B:&NirG&9rriE&s1f>ap&>*oN>quMrrA"/j2p -!BpJTm/X-`rr<&urrR`Op%JCe!*SX -!BU8Qkl@:Prr<&urrR`Op%JCe!*SX -!B:&NirG&9rr<&urrR`Op%JCe!*SX -!BpJTm/X-`rriE&s1f>ap&>$mk1'D2WIaH]m0;Wp#lk6RmXbChs5X+`mWAd8$$PB\mG@42eieN~> -!BU8Qkl@:PrriE&s1f>ap&>$mk1'D2SUp%Mkm$'f#lk6RmXbChs5X+`mWAd8$$>*Vl/(Y*c8pI~> -!B:&NirG&9rriE&s1f>ap&>$mk1'D2N.L$6is+4W#lk6RmXbChs5X+`mWAd8$$"[Mj5/es_`*)~> -!BpJTm/X-`rr`?%^_FTVrr<&JrrB$LmEY)&SK%V0DX`5WJcFX-"n6C0!$%P\mGI:3eieN~> -!BU8Qkl@:Prr`?%^_FTVrr<&JrrAU@l-AMsRi;>-DX`5WJcFX-"n6C0!#qDYl/1_+c8pI~> -!B:&NirG&9rr`?%^_FTVrr<&JrrA"/j3HZgQQ#o)DX`5WJcFX-"n6C0!#q8Uj58kt_`*)~> -!BpJTm/X-`rrW8:'Ys>?!!(LJ!3(P:d-V"Q3WK.8_h%i=s4dPW__M2l3l-C7iU$Zs4b*~> -!BU8Qkl@:PrrW8:'Ys>?!!(LJ!1e]*d-1_J3<0%7_h%i=s4dPW__M2l3PL(/iTUBg3e.~> -!B:&NirG&9rrW8:'Ys>?!!(LJ!/uKhd,P;?2uiq6_h%i=s4dPW__M2l34XV#iSssV2h1~> -!BpJTm/X-`rrN07_".L*!7UrJWIaHbm0;W_!<CmGmR7eieN~> -!BU8Qkl@:PrrN07_".L*!7UrJSUp%Rkm$'U!< -!B:&NirG&9rrN07_".L*!7UrJN.L$;is+4G!< -!BpJTm/X-`rrE,8nc&Rhe,KEIJaLtS#4.]l!!RB2JcC<$ec,jBE -!BU8Qkl@:PrrE,8nc&Rhe,KE=Ja(\K#3_ -!B:&NirG&9rrE,8nc&Rhe,KE,J`G8?#3(aZ!!RB2JcC<$ec,jBE -!BpJTm/X-`rrBjNrrB$LmFCS-a?0G&2qW]]JcF-t"kYa6!'J>RmH3d:eieN~> -!BU8Qkl@:PrrBjNrrAU@l.,#%`B+&"2qW]]JcF-t"kYa6!'A/Nl/q42c8pI~> -!B:&NirG&9rrBjNrrA"/j43/n^cDGq2qW]]JcF-t"kYa6!'7oHj6#A&_`*)~> -!BpJTm/X,trrB$LmFU_0j`1P*'qkPWs+13rrs&Iq'`\GYjalg_m/bd$J,~> -!BU8Qkl@9drrAU@l.>/(iG\r#'qkPWs+13rrs&Iq'`\DViIU7WklK'jJ,~> -!B:&NirG%MrrA"/j4E;qgMI)o'qkPWs+13rrs&Iq'`\DSgO\DKirR%VJ,~> -!BpJTm/X,trrB$LmF^e0^)m=VB'k0LJcEpn"mon'!$Aq+mHO!=eieN~> -!BU8Qkl@9drrAU@l.G5(],gqRB'k0LJcEpn"mon'!$8b'l07F5c8pI~> -!B:&NirG%MrrA"/j4NAq[N,>LB'k0LJcEpn"mon'!$/M!j6>S)_`*)~> -!BpJTm/X,trrB$LmFpq2hHU']/]rYEJcEdj"j/Cs!F4K4mHa-?eieN~> -!BU8Qkl@9drrAU@l.YA*g0+LW/]rYEJcEdj"j/Cs!F"3.l0IR7c8pI~> -!B:&NirG%MrrA"/j4`MseQ;hP/]rYEJcEdj"j/Cs!Edm'j6P_+_`*)~> -!BpJTm/X,trrB$LmG%"3UDNt:LAQQ%JcE^h"oF#[!#VJ^mHj3@eieN~> -!BU8Qkl@9drrAU@l.bG+TGRY7LAQQ%JcE^h"oF#[!#VA[l0RX8c8pI~> -!B:&NirG%MrrA"/j4iStS/2/2LAQQ%JcE^h"oF#[!#M/Vj6Ye,_`*)~> -!BpJTm/X,trrB$LmG7.5fMDPJ4P55bJcERd"kYp;!)V=!mI'?BeieN~> -!BU8Qkl@9drrAU@l.tS-e4ouD4P55bJcERd"kYp;!)D$pl0dd:c8pI~> -!B:&NirG%MrrA"/j5&`!cV+<=4P55bJcERd"kYp;!)1^ij6kq._`*)~> -!BpJTm/X,trrB$LmG@46S.Yf2PPp(4JcELb"oXVo!"tfQmI0ECeieN~> -!BU8Qkl@9drrAU@l/(Y.R1TE.PPp(4JcELb"oXVo!"kWMl0mj;c8pI~> -!B:&NirG%MrrA"/j5/f"Pn=!*PPp(4JcELb"oXVo!"kKIj6u"/_`*)~> -!BpJTm/X,trrB$LmGR@8gJIqN6fWatJcE@^"lhrM!)_L%mIBQEeieN~> -!BU8Qkl@9drrAU@l/:e0fM;JI6fWatJcE@^"lhrM!)M6ul1+!=c8pI~> -!B:&NirG%MrrA"/j5Ar$dS0]A6fWatJcE@^"lhrM!):mmj72.1_`*)~> -!BpJTm/X,tmJs5;mG[F9W##FCRf7m -!BU8Qkl@9dmJrf/l/Ck1VAB4ARf7mc8pI~> -!B:&NirG%MmJr2sj5K#%Tb[V;Rf7m -!BpJTm/X,tmJs5;mGmR;iEcNb52LkjJcE.X"l;EC!FF`9mI]cHeieN~> -!BU8Qkl@9dmJrf/l/V"3h-9s\52LkjJcE.X"l;EC!F4H3l1F3@c8pI~> -!B:&NirG%MmJr2sj5]/'f3/1T52LkjJcE.X"l;EC!F"*+j7M@4_`*)~> -!BpJTm/X,tmJs5;mH!X-JcE(V"oXAc!$BF9mIfiIeieN~> -!BU8Qkl@9dmJrf/l/_(4a;t-JcE(V"oXAc!$944l1O9Ac8pI~> -!B:&NirG%MmJr2sj5f5(_]8^_N;\>-JcE(V"oXAc!$/t.j7VF5_`*)~> -!BpJTm/X,tmJs5;mH3d>l?EF31Y%'VJcDqR"k>C/"F03_mJ#uKeieN~> -!BU8Qkl@9dmJrf/l/q46k&pk-1Y%'VJcDqR"k>C/"ErpYl1aECc8pI~> -!B:&NirG%MmJr2sj6#A*i,]#$1Y%'VJcDqR"k>C/"EWLPj7hR7_`*)~> -!BpJTm/X,tmJs5;mH -!BU8Qkl@9dmJrf/l0%:7c8Ye*Gl!!kJcDkP"o -!B:&NirG%MmJr2sj6,G+a>O#"Gl!!kJcDkP"o -!BpJTm/X-`mJsT0mJs5;mHEp?T+CuA]n-37s/H#$]c-q_T7QD*m/bd$J,~> -!BU8Qkl@:PmJsT0mJrf/l0.@7SIbc?]n-37s/H#$]c-q_SUp&$klK'jJ,~> -!B:&NirG&9mJsT0mJr2sj65M+R1B9:]n-37s/H#$]c-q^R=XDoirR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zbu22WIaI&m01T]!""qiJcC<$V>g_uPmIF?aarjWm/bd$J,~> -!BU8Qkl@:PmK*A%Zbu22SUp%kklo'U!""qiJcC<$V>g_uPmIF>`e!CPklK'jJ,~> -!B:&NirG&9mK*A%Zbu22N.L$Tis!4H!""qiJcC<$V>g_uPmIF=^k(PDirR%VJ,~> -!BpJTm/X-`mK3I)'=7;u!!)oa!!(a@!3(P:m-OqG$ih -!BU8Qkl@:PmK3I)'=7;u!!)oa!!(a@!1e]*m-+Y@$ih -!B:&NirG&9mK3I)'=7;u!!)oa!!(a@!/uKhm,J56$ih -!BpJTm/X-`mK4[=FJcDAB"nPmt!+P,BmJlPSeieN~> -!BU8Qkl@:PmKj'Vie>4[=FJcDAB"nPmt!+=i -!B:&NirG&9mK4[=FJcDAB"nPmt!++K4j8\-?_`*)~> -!BpJTm/X-`mKEUjs1f;Sp$Me[qsFFag?ns?JaMpn"O8\$#a^,BJcD5>"IBAo0[>7:!q"Q%J,~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsFFag?ns3Ja)Xf"NrFu#a^,BJcD5>"IBAo0?\q2!pRukJ,~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsFFag?ns"J`H4Z"NE%o#a^,BJcD5>"IBAo0#iJ&!oq0WJ,~> -!BpJTm/X-`mJm7drrR`OjnA*B!;l0a!8?i@WIaI+m0'^*!$fa>s+13 -!BU8Qkl@:PmJm7drrR`OjnA*B!;l0a!8?i@SUp%pkle1#!$fa>s+13 -!B:&NirG&9mJm7drrR`OjnA*B!;l0a!8?i@N.L$Yirl@l!$fa>s+13 -!BpJTm/X-`mKEUjs1f;Sp$Me[qsFFag?ns?JaN$q"mgU -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsFFag?ns3Ja)ai"mC76!(ca5s+13:rrr$c!!7K1KBWE^3e.~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsFFag?ns"J`H=]"la_-!(ca5s+13:rrr$c!!7B(KB!!M2h1~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=7;u!?AuTmK(-Fg?ns?JaN*s"Nr1n&@I)hJcCl4"LSd@.*I>3!S0Da~> -!BU8Qkl@:PmK3I)'=7;u!?AuTmK(-Fg?ns3Ja)gk"NMki&@I)hJcCl4"LSd@-c^r*!R<`V~> -!B:&NirG&9mK3I)'=7;u!?AuTmK(-Fg?ns"J`HC_"MuJc&@I)hJcCl4"LSd@-GkJs!Q-jH~> -!BpJTm/X-`mK*A%Zh!MhIPA@rkIWEtg?ns?JaN-t"L&76/)#RSJcCf2"PP@+$a>BQ!S0Da~> -!BU8Qkl@:PmK*A%Zh!MhIPA@rkIWEtg?ns3Ja)jl"K`%3/)#RSJcCf2"PP@+$a#0J!R<`V~> -!B:&NirG&9mK*A%Zh!MhIPA@rkIWEtg?ns"J`HF`"K2\./)#RSJcCf2"PP@+$`Jg?!Q-jH~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs5;mJ-&Ok["5iO+I=^s,$aYNr]5ek_\[-eieN~> -!BU8Qkl@:PmJsT0mJrf/l1jKGjBV`dO+I=^s,$aYNr]5djGE+%c8pI~> -!B:&NirG&9mJsT0mJr2sj7qX;hc^!\O+I=^s,$aYNr]5ahhg@o_`*)~> -!BpJTm/X,tmJs5;mJ6,PgcYWDWe(2$s+gUWWX/YggktJ"eieN~> -!BU8Qkl@9dmJrf/l1sQHffT6@We(2$s+gUWWX/Yffo#"pc8pI~> -!B:&NirG%MmJr2sj8%^ -!BpJTm/X,tmJs5;mJ?2Qas-m(b(9SDs+UIUar(1(b)>WfeieN~> -!BU8Qkl@9dmJrf/l2'WI`ZkI$b(9SDs+UIUar(1(`f''^c8pI~> -!B:&NirG%MmJr2sj8.d=_'/jsb(9SDs+UIUar(1'_2I=S_`*)~> -!BpJTm/X,tmJs5;mJH8RZNgIbj+75]s+C=Sj"UN=Z]+8PeieN~> -!BU8Qkl@9dmJrf/l20]JYQk._j+75]s+C=Sj"UN=Y`.fIc8pI~> -!B:&NirG%MmJr2sj87j>Ws8VZj+75]s+C=Sj"UN=X,Q'>_`*)~> -!BpJTm/X,tmJs5;mJQ>SRg/phoR[$ns+11QoM5GlRuQe9eieN~> -!BU8Qkl@9dmJrf/l29cKQj*OdoR[$ns+11QoM5GkR#U>2c8pI~> -!B:&NirG%MmJr2sj8@p?PQh+`oR[$ns+11QoM5GkP`=](_`*)~> -!BpJTm/X,tmJs5;mJZDTJH5airIP!"s+14Mrri:>!!.Y2m/bd$J,~> -!BU8Qkl@9dmJrf/l2BiLIfTOgrIP!"s+14Mrri:>!!.S0klK'jJ,~> -!B:&NirG%MmJr2sj8J!@HN=+crIP!"s+14Mrri:>!!.G,irR%VJ,~> -!BpJTm/X,tmJs5;mJlPVl=9krNe.4]s+14Irre>`!+bAVm/bd$J,~> -!BU8Qkl@9dmJrf/l2TuNk$e;lNe.4]s+14Irre>`!+P)PklK'jJ,~> -!B:&NirG%MmJr2sj8\-Bi*ZNdNe.4]s+14Irre>`!+=`HirR%VJ,~> -!BpJTm/X,tmJs5;m02n=9)o6tJcC<$JcGQG"KD_-9BD<'!S0Da~> -!BU8Qkl@9dmJrf/klp>18cT-sJcC<$JcGQG"KD_-9&Yos!R<`V~> -!B:&NirG%MmJr2sis"Jt8,rpqJcC<$JcGQG"KD_-8DB9e!Q-jH~> -!BpJTm/X,trrB$Lm0)H)!#!/"s+13$s7cNr_@ci(j-&d1eieN~> -!BU8Qkl@9drrAU@klflu!#!/"s+13$s7cNr_@ci'hid4)c8pI~> -!B:&NirG%MrrA"/irn$h!#!/"s+13$s7cNr_@ci&fok@r_`*)~> -!BpJTm/X,trrB$Mm0(ui!$0mHs+13$s7QBph&QJFes#J%eieN~> -!BU8Qkl@9drrAUAklfE`!$0mHs+13$s7QBph&QJEdZ`nrc8pI~> -!B:&NirG%MrrA"0irmUT!$0mHs+13$s7QBph&QJDc'./g_`*)~> -!BpJTm/X,trrB$Nm0(]W!%R&\s+13$s7?6nj=1-PcBR\seieN~> -!BU8Qkl@9drrAUBklf-O!%R&\s+13$s7?6nj=1-Pb*;,kc8pI~> -!B:&NirG%MrrA"1irm=C!%R&\s+13$s7?6nj=1-O`K]B`_`*)~> -!BpJTm/X,trrB$Om0(?E!&j1ps+13$s7-*llo"h\`0K]jeieN~> -!BU8Qkl@9drrAUCkleg>!&j1ps+13$s7-*llo"h\_3O6cc8pI~> -!B:&NirG%MrrA"2irm"2!&j1ps+13$s7-*llo"h[]TqLX_`*)~> -!BpJTm/X,trrB$Pm0's3!(6=.s+13$s6osjnj -!BU8Qkl@9drrAUDkleF+!(6=.s+13$s6osjnj -!B:&NirG%MrrA"3irlUu!(6=.s+13$s6osjnj -!BpJTm/X-`rrBjNrrB$Qm0'Wr!)`NBs+13$s6]ghpe_"oYa=_XeieN~> -!BU8Qkl@:PrrBjNrrAUEkle*k!)`NBs+13$s6]ghpe_"oXdA8Qc8pI~> -!B:&NirG&9rrBjNrrA"4irl:`!)`NBs+13$s6]ghpe_"oW0cNF_`*)~> -!BpJTm/X-`rrE,8_Z'V8L[>5E#QRp'JcC<$JcG'9"T2:##ca9Z!S0Da~> -!BU8Qkl@:PrrE,8_Z'V,LZnr>#QRp'JcC<$JcG'9"T2:##cF'S!R<`V~> -!B:&NirG&9rrE,8_Z'UpLZ8N4#QRp'JcC<$JcG'9"T2:##c!dI!Q-jH~> -!BpJTm/X-`rrN07^r-0PWJKpEV?[*9rdk*#s+147rri=9!!fBhm/bd$J,~> -!BU8Qkl@:PrrN07^r-0PSVZM5UBU^5rdk*#s+147rri=9!!]3dklK'jJ,~> -!B:&NirG&9rrN07^r-0PN/6KsT*>:1rdk*#s+147rri=9!!]'`irR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?rr<0&%PW+lg&D&OM"orT@JcC<$JcFp5"TE<>#,.LQ!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?rr<0&%PW+lg&D&CM

#+h:J!R<`V~> -!B:&NirG&9rrW8:'Ys>?rr<0&%PW+lg&D&2M;n`-"TWK?JcC<$JcFp5"TE<>"e(n?!Q-jH~> -!BpJTm/X-`rr`?%^_FTVrs&Q(s7FQQ)W09K!3(kC".TJoFb0RDs+141rr[BD"IttK!S0Da~> -!BU8Qkl@:Prr`?%^_FTVrs&Q(s7FQQ)W09K!1f#3".B>mFb0RDs+141rr[BD"IbhE!R<`V~> -!B:&NirG&9rr`?%^_FTVrs&Q(s7FQQ)W09K!/ufq"-s&iFb0RDs+141rr[BD"I>P;!Q-jH~> -!BpJTm/X-`rriE&s1f>ap&>!lr;QeH>h]2XWJg-GU&k=AJcC<$JcF^/"+("LU7CTOeieN~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;QeH>h]2XSVu_7T)o">JcC<$JcF^/"+("LT:G-Hc8pI~> -!B:&NirG&9rriE&s1f>ap&>!lr;QeH>h]2XN/Q]uRfWS:JcC<$JcF^/"+("LS"/L>_`*)~> -!BpJTm/X-`rr<&urrR`Op%JCc!;uitiY^DL!3(qE".TGnJq -!BU8Qkl@:Prr<&urrR`Op%JCc!;uitiY^DL!1f)5".B;lJq -!B:&NirG&9rr<&urrR`Op%JCc!;uitiY^DL!/uls"-s#hJq -!BpJTm/X-`rriE&s1f>ap&>!lr;Qfo"krtVWK$9IT`b@IJcC<$JcFR+"+gLUTq:WPeieN~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;Qfo"krtVSW2k9Scf%FJcC<$JcFR+"+gLUSt>0Ic8pI~> -!B:&NirG&9rriE&s1f>ap&>!lr;Qfo"krtVN/cj"RKNVBJcC<$JcFR+"+gLUR\&O?_`*)~> -!BpJTm/X-`rr`?%^_FTVrr<&srrM'qgA_/PNpQqG"os"$s+13$s4dPUHN48ITBu[14b*~> -!BU8Qkl@:Prr`?%^_FTVrr<&srrM'qgA_/DNp-Y@"os"$s+13$s4dPUHN48FTBQC%3e.~> -!B:&NirG&9rr`?%^_FTVrr<&srrM'qgA_/3NoL56"TWn#s+13$s4dPUHN45ATAosi2h1~> -!BpJTm/X-`rrW8:'Ys>?!!)rs!I\2+rrB$Zm/s?n!-NkmJcC<$g&D.s!!fNsm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys>?!!)rs!I\2+rrAUNkl[gf!-NkmJcC<$g&D.s!!]?oklK'jJ,~> -!B:&NirG&9rrW8:'Ys>?!!)rs!I\2+rrA"=irc%\!-NkmJcC<$g&D.s!!]3kirR%VJ,~> -!BpJTm/X-`rrN07_".L1!<<)lc#+BSgA_/POR3.W#68[ns+13$s4@8QDZC$LU$Vm34b*~> -!BU8Qkl@:PrrN07_".L1!<<)lc#+BSgA_/DOQckP#68[ns+13$s4@8QDZC$IU$2U'3e.~> -!B:&NirG&9rrN07_".L1!<<)lc#+BSgA_/3OQ-GE#68[ns+13$s4@8QDZC$DU#Q0k2h1~> -!BpJTm/X-`rrE,8nc/Uh"9AoaFm.NY!3)+J"M"j>CAreaJcC<$fDc!QC&eUOU?r!44b*~> -!BU8Qkl@:PrrE,8nc/Uh"9AoaFm.NY!1f8:"L\X;CAreaJcC<$fDc!QC&eULU?M^(3e.~> -!B:&NirG&9rrE,8nc/Uh"9AoaFm.NY!0!'#"L/:6CAreaJcC<$fDc!QC&eUGU>l9l2h1~> -!BpJTm/X-`rrBjNrrB$]m/t9=!+(6VJcC<$e,KMV!"m/Em/bd$J,~> -!BU8Qkl@:PrrBjNrrAUQkl\a5!+(6VJcC<$e,KMV!"cuAklK'jJ,~> -!B:&NirG&9rrBjNrrA"@ircq*!+(6VJcC<$e,KMV!"cf -!BpJTm/X,trrB$^m0(]O!)`WEs+13$s3puNqb[>1cD9h.eieN~> -!BU8Qkl@9drrAURklf-G!)`WEs+13$s3puNqb[>1b,"8&c8pI~> -!B:&NirG%MrrA"Airm=;!)`WEs+13$s3puNqb[>0`MDMp_`*)~> -!BpJTm/X,trrB$_m0(u_!(6O4s+13$s3^iLpd5$(etqa7eieN~> -!BU8Qkl@9drrAUSklfEW!(6O4s+13$s3^iLpd5$(d\Z1/c8pI~> -!B:&NirG%MrrA"BirmUK!(6O4s+13$s3^iLpd5$'c)'G$_`*)~> -!BpJTm/X,trrB$`m0)5p!&jD!s+13$s3L]JnhpIth59Q?eieN~> -!BU8Qkl@9drrAUTklf]h!&jD!s+13$s3L]JnhpIsg8=*8c8pI~> -!B:&NirG%MrrA"Cirmj[!&jD!s+13$s3L]JnhpIre>D7,_`*)~> -!BpJTm/X,trrB$am0)T,!%R>ds+13$s3:QHlm_uikGR\JeieN~> -!BU8Qkl@9drrAUUklg'$!%R>ds+13$s3:QHlm_uhjJV5Cc8pI~> -!B:&NirG%MrrA"Dirn3l!%R>ds+13$s3:QHlm_ughP]B7_`*)~> -!BpJTm/X,trrB$bm0)]I!$:NYs+13$s3(EFm2c7#lDX(NeieN~> -!BU8Qkl@9drrAUVklg-@!$:NYs+13$s3(EFm2c7"k,@MFc8pI~> -!B:&NirG%MrrA"Eirn:2!$:NYs+13$s3(EFm2c6ui2GZ:_`*)~> -!BpJTm/X,trrB$bm/pl!'%VX6JcC<$ao;Io&ccI@m/bd$J,~> -!BU8Qkl@9drrAUVklYAp'%VX6JcC<$ao;Io&ccC>klK'jJ,~> -!B:&NirG%MrrA"Eir`Zh'%VX6JcC<$ao;Io&cc= -!BpJTm/X,trrB$cm/qn>#f;/mJcC<$a8Z7Y#QTFTm/bd$J,~> -!BU8Qkl@9drrAUWklZD8#f;/mJcC<$a8Z7Y#QT@RklK'jJ,~> -!B:&NirG%MrrA"FiraW.#f;/mJcC<$a8Z7Y#QT4NirR%VJ,~> -!BpJTm/X,tmJs5Sm/rgY!ighOJcC<$`W$%?!Wedjm/bd$J,~> -!BU8Qkl@9dmJrfGkl[:R!ighOJcC<$`W$%?!We[gklK'jJ,~> -!B:&NirG%MmJr36irbMH!ighOJcC<$`W$%?!WeOcirR%VJ,~> -!BpJTm/X,tmJs5Tm/sg%!02X1JcC<$_uBh!!!]p5m/bd$J,~> -!BU8Qkl@9dmJrfHkl\9r!02X1JcC<$_uBh!!!Ta1klK'jJ,~> -!B:&NirG%MmJr37ircLh!02X1JcC<$_uBh!!!TU-irR%VJ,~> -!BpJTm/X,tmJs5Um/tKB!-!MhJcC<$_>aUV!"d;Sm/bd$J,~> -!BU8Qkl@9dmJrfIkl\p9!-!MhJcC<$_>aUV!"[)NklK'jJ,~> -!B:&NirG%MmJr38ird+.!-!MhJcC<$_>aUV!"ZoIirR%VJ,~> -!BpJTm/X,tmJs5Vm/u,g!)\=IJcC<$^]+C5!$g:$m/bd$J,~> -!BU8Qkl@9dmJrfJkl]T`!)\=IJcC<$^]+C5!$g1!klK'jJ,~> -!B:&NirG%MmJr39irdaS!)\=IJcC<$^]+C5!$]moirR%VJ,~> -!BpJTm/X,tmJs5Wm0)W9!&=+ss+13$s1eR:oJ$>/kcX:ReieN~> -!BU8Qkl@9dmJrfKklg'0!&=+ss+13$s1eR:oJ$>.jK@_Jc8pI~> -!B:&NirG%MmJr3:irn7$!&=+ss+13$s1eR:oJ$>-hlbu?_`*)~> -!BpJTm/X-`mJsT0mJs5Wm/pYp)<6;JJcC<$^&J2p)$"!Gm/bd$J,~> -!BU8Qkl@:PmJsT0mJrfKklY2k)<6;JJcC<$^&J2p)$!sFklK'jJ,~> -!B:&NirG&9mJsT0mJr3:ir`Hb)<6;JJcC<$^&J2p)$!jCirR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zbu22WLrP[Y5n[(JcC<$JcE:\"0)A&YH[BpeieN~> -!BU8Qkl@:PmK*A%Zbu22SY,-KX8r@%JcC<$JcE:\"0)A&XK^pic8pI~> -!B:&NirG&9mK*A%Zbu22N1],4VuZq!JcC<$JcE:\"0)A&W3G:__`*)~> -!BpJTm/X-`mK3I)'=7?!q>f19!3)XY"3V2TJq -!BU8Qkl@:PmK3I)'=7?!q>f19!1feI"31oPJq!R<`V~> -!B:&NirG&9mK3I)'=7?!q>f19!0!T2"2YNJJq -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mKirn!]!)rlJs+13$s0r"2r_ieDfWsN<_`*)~> -!BpJTm/X-`mKEUjs1f;SoBlSYea -!BU8Qkl@:PmKEUjs1f;SoBlSYea -!B:&NirG&9mKEUjs1f;SoBlSYealC98cUC4JcC<$JcE.X"S+&C9&d2;!Q-jH~> -!BpJTm/X-`mJm7drrR`Ojn.s@!7gK;WM8b^HiO`3JcC<$JcE(V"54:dI'`2@eieN~> -!BU8Qkl@:PmJm7drrR`Ojn.s@!7gK;SYG?NH2nN1JcC<$JcE(V"54:dHF)i:c8pI~> -!B:&NirG&9mJm7drrR`Ojn.s@!7gK;N2#>7G5r3.JcC<$JcE(V"54:dGI-<1_`*)~> -!BpJTm/X-`mKEUjs1f;SoBlSYea -!BU8Qkl@:PmKEUjs1f;SoBlSYea -!B:&NirG&9mKEUjs1f;SoBlSYea -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=75s!!(R;!3)g^"QqH=8cF;@JcC<$YQ"b)8H:I-[d=+H4b*~> -!BU8Qkl@:PmK3I)'=75s!!(R;!1ftN"QM-88cF;@JcC<$YQ"b)8H:F([cmh<3e.~> -!B:&NirG&9mK3I)'=75s!!(R;!0!c7"Pk[18cF;@JcC<$YQ"b)8H:C![c7D+2h1~> -!BpJTm/X-`mK*A%ZgdA_!7gK;WMSta@K7YAJcC<$JcDkP"7IH7@^bY)eieN~> -!BU8Qkl@:PmK*A%ZgdA_!7gK;SYbQQ?iVG?JcC<$JcDkP"7IH7@(,;#c8pI~> -!B:&NirG&9mK*A%ZgdA_!7gK;N2>P:?2u5=JcC<$JcDkP"7IH7?FJkp_`*)~> -!BpJTm/X-`mK!\*X4I4b*~> -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs5am/tH=!1/9:JcC<$WW*'e!"?uZm/bd$J,~> -!BU8Qkl@:PmJsT0mJrfUkl\p6!1/9:JcC<$WW*'e!"?lWklK'jJ,~> -!B:&NirG&9mJsT0mJr3Dird(*!1/9:JcC<$WW*'e!"?ZQirR%VJ,~> -!BpJTm/X,tmJs5bm/uE!!*XsRJcC<$VuHj&!%R'?m/bd$J,~> -!BU8Qkl@9dmJrfVkl]im!*XsRJcC<$VuHj&!%Hj:klK'jJ,~> -!B:&NirG%MmJr3Eire!`!*XsRJcC<$VuHj&!%?R3irR%VJ,~> -!BpJTm/X,tmJs5bm/pVo.J&,jJcC<$VuHkj.0*Yam/bd$J,~> -!BU8Qkl@9dmJrfVklY,i.J&,jJcC<$VuHkj.0*S_klK'jJ,~> -!B:&NirG%MmJr3Eir`Ea.J&,jJcC<$VuHkj.0*M]irR%VJ,~> -!BpJTm/X,tmJs5cm/rs\#1nG+JcC<$V>gYL"ot:,m/bd$J,~> -!BU8Qkl@9dmJrfWkl[IV#1nG+JcC<$V>gYL"ot4*klK'jJ,~> -!B:&NirG%MmJr3Firb\L#1nG+JcC<$V>gYL"ot(&irR%VJ,~> -!BpJTm/X,tmJs5dm/t`I!0r-8JcC<$U]1F]!"dPim/bd$J,~> -!BU8Qkl@9dmJrfXkl]3B!0r-8JcC<$U]1F]!"dGfklK'jJ,~> -!B:&NirG%MmJr3Gird@5!0r-8JcC<$U]1F]!"[/_irR%VJ,~> -!BpJTm/X,tmJs5em0)]6!)NTFs+13$s.fSsr_EMRlFcKbeieN~> -!BU8Qkl@9dmJrfYklg-.!)NTFs+13$s.fSsr_EMRk.KpZc8pI~> -!B:&NirG%MmJr3Hirn9u!)NTFs+13$s.fSsr_EMPi4S(N_`*)~> -!BpJTm/X,tmJs5em/qS5)s`(TJcC<$U&P5\)ZY,qm/bd$J,~> -!BU8Qkl@9dmJrfYklZ)/)s`(TJcC<$U&P5\)ZY&oklK'jJ,~> -!B:&NirG%MmJr3Hira?&)s`(TJcC<$U&P5\)ZXrlirR%VJ,~> -!BpJTm/X,tmJs5fm/sd"!kj0bJcC<$TDo#,!X,sFm/bd$J,~> -!BU8Qkl@9dmJrfZkl\6p!kj0bJcC<$TDo#,!X,jCklK'jJ,~> -!B:&NirG%MmJr3IircIf!kj0bJcC<$TDo#,!X,^?irR%VJ,~> -!BpJTm/X,trrB%#m/u>g!-j(pJcC<$Sc8e:!$1(5m/bd$J,~> -!BU8Qkl@9drrAUlkl]c^!-j(pJcC<$Sc8e:!$'k0klK'jJ,~> -!B:&NirG%MrrA"[irdpQ!-j(pJcC<$Sc8e:!#sS)irR%VJ,~> -!BpJTm/X,trrB%#m/pYp./JMpJcC<$Sc8fg-idSfm/bd$J,~> -!BU8Qkl@9drrAUlklY/j./JMpJcC<$Sc8fg-idMdklK'jJ,~> -!B:&NirG%MrrA"[ir`Hb./JMpJcC<$Sc8fg-idGbirR%VJ,~> -!BpJTm/X,trrB%$m/s9f#h=M+JcC<$S,WT@#Q^m=m/bd$J,~> -!BU8Qkl@9drrAUmkl[d`#h=M+JcC<$S,WT@#Q^g;klK'jJ,~> -!B:&NirG%MrrA"\irbtU#h=M+JcC<$S,WT@#Q^X6irR%VJ,~> -!BpJTm/X,trrB%%m/u)Z!/uL/JcC<$RK!AJ!#OD*m/bd$J,~> -!BU8Qkl@9drrAUnkl]QS!/uL/JcC<$RK!AJ!#O;'klK'jJ,~> -!B:&NirG%MrrA"]ird^F!/uL/JcC<$RK!AJ!#F"uirR%VJ,~> -!BpJTm/X,trrB%%m/p2c55g'4JcC<$RK!Bf4oeHqm/bd$J,~> -!BU8Qkl@9drrAUnklX]]55g'4JcC<$RK!Bf4oeBoklK'jJ,~> -!B:&NirG%MrrA"]ir`!U55g'4JcC<$RK!Bf4oe -!BpJTm/X-`rrBjNrrB%&m/rjY%Gl[9JcC<$Qi@0E%02p7m/bd$J,~> -!BU8Qkl@:PrrBjNrrAUokl[=R%Gl[9JcC<$Qi@0E%02g4klK'jJ,~> -!B:&NirG&9rrBjNrrA"^irbPH%Gl[9JcC<$Qi@0E%02[0irR%VJ,~> -!BpJTm/X-`rrE,8_Z'V8Z0_YI&HJ8Ns+13$s- -!BU8Qkl@:PrrE,8_Z'V,Z0;AB&-//Ms+13$s- -!B:&NirG&9rrE,8_Z'UpZ/Yr6&-//Ms+13$s- -!BpJTm/X-`rrN07^r-0PWNkgl:]Nt9s+13$s-*Ha7K?9%m/bd$J,~> -!BU8Qkl@:PrrN07^r-0PS[%D\:&mb7s+13$s-*Ha7K?3#klK'jJ,~> -!B:&NirG&9rrN07^r-0PN3VCE9E7P5s+13$s-*Ha7K?-!irR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?!!)or!!(aQ!3*9k"/>i*i.:oZs+136rr_0g!2II!!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?!!)or!!(aQ!1gF["/#W'i.:oZs+136rr_0g!2.6o!R<`V~> -!B:&NirG&9rrW8:'Ys>?!!)or!!(aQ!0"5D".T?#i.:oZs+136rr_0g!1^se!Q-jH~> -!BpJTm/X-`rr`?%^_FTVrr<&rrr<&QrrB%)m/u2^!0`!6JcC<$OoGNI!#XS2m/bd$J,~> -!BU8Qkl@:Prr`?%^_FTVrr<&rrr<&QrrAUrkl]WV!0`!6JcC<$OoGNI!#XG.klK'jJ,~> -!B:&NirG&9rr`?%^_FTVrr<&rrr<&QrrA"airdgJ!0`!6JcC<$OoGNI!#O2(irR%VJ,~> -!BpJTm/X-`rriE&s1f>ap&>!lqu6p%s8UnL$jT8bir9"XZg@j"!'L42s+13$s,m<`rB('b`9dTV -4b*~> -!BU8Qkl@:PrriE&s1f>ap&>!lqu6p%s8UnL$jT8bir9"LZfqQq!'L42s+13$s,m<`rB('``9@ -!B:&NirG&9rriE&s1f>ap&>!lqu6p%s8UnL$jT8bir9";Zf;-i!'L42s+13$s,m<`rB('^`8^m9 -2h1~> -!BpJTm/X-`rr<&urrR`Op%JCc!;ld%!<<'L^@q&7=Q9>\WO2$pY5np]JcC<$JcCf2"5!k[YJol0 -eieN~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;ld%!<<'L^@q&7=Q9>\S[@V`X8rUZJcC<$JcCf2"5!k[XMsE) -c8pI~> -!B:&NirG&9rr<&urrR`Op%JCc!;ld%!<<'L^@q&7=Q9>\N3qUIVu[1VJcC<$JcCf2"5!k[W5[ct -_`*)~> -!BpJTm/X-`rriE&s1f>ap&>!lqu6Wrqu6]i']T,mWO;*qk8aPWJcC<$JcC`0",6drkJllieieN~> -!BU8Qkl@:PrriE&s1f>ap&>!lqu6Wrqu6]i']T,mS[I\aiuA&RJcC<$JcC`0",6dqj2U -!B:&NirG&9rriE&s1f>ap&>!lqu6Wrqu6]i']T,mN4%[Jh&??KJcC<$JcC`0",6dph8\IU_`*)~> -!BpJTm/X-`rr`?%^_FTVrrE3!rVm3%!rr;@4UV5i!TO+ZWO;*qEW@clJcC<$JcC`0"9'qRElRJI -eieN~> -!BU8Qkl@:Prr`?%^_FTVrrE3!rVm3%!rr;@4UV5i!TO+ZS[I\aDu_QjJcC<$JcC`0"9'qRE5q,C -c8pI~> -!B:&NirG&9rr`?%^_FTVrrE3!rVm3%!rr;@4UV5i!TO+ZN4%[JD#c6gJcC<$JcC`0"9'qRD8tT: -_`*)~> -!BpJTm/X-`rrW8:'Ys>?!?TVdrs@!os8O(;nG_tYir9"X[d=1<"p2eqs+13$s,6mZ`W?@ca6`oY -4b*~> -!BU8Qkl@:PrrW8:'Ys>?!?TVdrs@!os8O(;nG_tYir9"L[cmn5"Tl\ps+13$s,6mZ`W?=_a6 -!B:&NirG&9rrW8:'Ys>?!?TVdrs@!os8O(;nG_tYir9";[c7J*"Tl\ps+13$s,6mZ`W?=Za5[3< -2h1~> -!BpJTm/X-`rrN07_".L9LGR!GprG7Is8Nb:pt\sNir9"X\*X:a49/uEs+13$s,$aXAcOs[aR'#Z -4b*~> -!BU8Qkl@:PrrN07_".L9LGR!GprG7Is8Nb:pt\sNir9"L\*4"Y3rilDs+13$s,$aXAcOpVaQW`N -3e.~> -!B:&NirG&9rrN07_".L9LGR!GprG7Is8Nb:pt\sNir9";\)RSM3WNcCs+13$s,$aXAcOmOaQ!<= -2h1~> -!BpJTm/X-`rrE,8nc'.!Ot?nD/X$,5s0m\F'`aWBm/bd$ -J,~> -!BU8Qkl@:PrrE,8nc'.!Ot?nD/X$,5s0m\F'`aN?klK'j -J,~> -!B:&NirG&9rrE,8nc'.!Ot?nD/X$,5s0m\F'`aB;irR%V -J,~> -!BpJTm/X-`rrBjNrrB%.m/u/Z!2+oCJcC<$L]7IL!#=>3m/bd$J,~> -!BU8Qkl@:PrrBjNrrAV"kl]WS!2+oCJcC<$L]7IL!#=50klK'jJ,~> -!B:&NirG&9rrBjNrrA"firddF!2+oCJcC<$L]7IL!#3r)irR%VJ,~> -!BpJTm/X,trrB%.m/pbs5Q666JcC<$L]7JU56,-6m/bd$J,~> -!BU8Qkl@9drrAV"klY;n5Q666JcC<$L]7JU56,*5klK'jJ,~> -!B:&NirG%MrrA"fir`Qe5Q666JcC<$L]7JU56,!2irR%VJ,~> -!BpJTm/X,trrB%/m/t0,!nW#'JcC<$L&V8,!X$9]m/bd$J,~> -!BU8Qkl@9drrAV#kl\X%!nW#'JcC<$L&V8,!X$0ZklK'jJ,~> -!B:&NirG%MrrA"gircgo!nW#'JcC<$L&V8,!X$!UirR%VJ,~> -!BpJTm/X,trrB%/m/f -!BU8Qkl@9drrAV#klNjFEIn.@s+13&rrR0?3QgRec8pI~> -!B:&NirG%MrrA"girV1?EIn.@s+13&rrR0?36L7^_`*)~> -!BpJTm/X,trrB%0m/rmZ(@QhSJcC<$KDu&B(''oKm/bd$J,~> -!BU8Qkl@9drrAV$kl[CT(@QhSJcC<$KDu&B(''iIklK'jJ,~> -!B:&NirG%MrrA"hirbVJ(@QhSJcC<$KDu&B('']EirR%VJ,~> -!BpJTm/X,trrB%1m/uDh!1JK=JcC<$Jc>h@!$((Dm/bd$J,~> -!BU8Qkl@9drrAV%kl]i_!1JK=JcC<$Jc>h@!#sk?klK'jJ,~> -!B:&NirG%MrrA"iire!S!1JK=JcC<$Jc>h@!#sY9irR%VJ,~> -!BpJTm/X,trrB%1m/qM31Aue(JcC<$Jc>iN1&uLAm/bd$J,~> -!BU8Qkl@9drrAV%klZ#-1Aue(JcC<$Jc>iN1&uF?klK'jJ,~> -!B:&NirG%MrrA"iira9$1Aue(JcC<$Jc>iN1&u= -!BpJTm/X,trrB%2m/tiC!Q0KgJcC<$JcGcM"2b-EeBR@]eieN~> -!BU8Qkl@9drrAV&kl]9;!Q0KgJcC<$JcGcM"2b-Ed*:eUc8pI~> -!B:&NirG%MrrA"jirdI0!Q0KgJcC<$JcGcM"2b-EbK]&J_`*)~> -!BpJTm/X,tmJs6!m/g5e=b6U(s+13$s8Ds!=TDFGm/bd$J,~> -!BU8Qkl@9dmJrfjklOc`=b6U(s+13$s8Ds!=TDCFklK'jJ,~> -!B:&NirG%MmJr3YirW'X=b6U(s+13$s8Ds!=TD=DirR%VJ,~> -!BpJTm/X,tmJs6"m/t*)#iL:6JcC<$JcG]K"5jFd^Wu3IeieN~> -!BU8Qkl@9dmJrfkkl\O!#iL:6JcC<$JcG]K"5jFd]?]XAc8pI~> -!B:&NirG%MmJr3Zircal#iL:6JcC<$JcG]K"5jFd\'F"7_`*)~> -!BpJTm/X,tmJs6"m/fENFb0RDs+13$s82ftFT=SMm/bd$J,~> -!BU8Qkl@9dmJrfkklNsIFb0RDs+13$s82ftFT=PLklK'jJ,~> -!B:&NirG%MmJr3ZirV:BFb0RDs+13$s82ftFT=MKirR%VJ,~> -!BpJTm/X,tmJs6#m/s9e'CLGOJcC<$JcGWI"7?g&W6ai3eieN~> -!BU8Qkl@9dmJrflkl[d_'CLGOJcC<$JcGWI"7?g&VU+K-c8pI~> -!B:&NirG%MmJr3[irbtT'CLGOJcC<$JcGWI"7?g&U!Ma"_`*)~> -!BpJTm/X,tmJs6$m/uW&!02X1JcC<$JcGQG"-*@1lHno!eieN~> -!BU8Qkl@9dmJrfmkl^&r!02X1JcC<$JcGQG"-*@0k0W>nc8pI~> -!B:&NirG%MmJr3\ire3e!02X1JcC<$JcGQG"-*@/i6^Kb_`*)~> -!BpJTm/X-`mJsT0mJs6$m/rIN,5?`hJcC<$JcGQG"8F&?OjNIreieN~> -!BU8Qkl@:PmJsT0mJrfmklZtH,5?`hJcC<$JcGQG"8F&?O3m+lc8pI~> -!B:&NirG&9mJsT0mJr3\irb2>,5?`hJcC<$JcGQG"8F&?MpUJb_`*)~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%ZfpfW!8[&CWPIm&K)d]Ys+13$s+14CrrOtVK@0&eeieN~> -!BU8Qkl@:PmK*A%ZfpfW!8[&CS\XIkJH.KWs+13$s+14CrrOtVJ^N]_c8pI~> -!B:&NirG&9mK*A%ZfpfW!8[&CN54HTIK20Ts+13$s+14CrrOtVIaR0V_`*)~> -!BpJTm/X-`mK3I)'=7;u!!)oa!s%cW!8[&CWPRs(iY)=#JcC<$JcC<$p&>-&!#+A?m/bd$J,~> -!BU8Qkl@:PmK3I)'=7;u!!)oa!s%cW!8[&CS\aOmh@fmtJcC<$JcC<$p&>-&!#+5;klK'jJ,~> -!B:&NirG&9mK3I)'=7;u!!)oa!s%cW!8[&CN5=NVfFn7nJcC<$JcC<$p&>-&!#+#5irR%VJ,~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;Sp$Me[qsF^imd:()'a\+-ipHfG_X.H]%fj@qs+13$s+14Arr^"9&)G_% -!S0Da~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsF^imd:()'a\+-ipHf;_W_0V%fj@qs+13$s+14Arr^"9&),Ls -!R<`V~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsF^imd:()'a\+-ipHf*_W(aJ%KO7ps+13$s+14Arr^"9%b/tf -!Q-jH~> -!BpJTm/X-`mJm7drrR`OjnA*B!;l0i!:K7T7G6?]DrU0bWP\$(E<&CXs+13$s+14?rrPRgERX:U -eieN~> -!BU8Qkl@:PmJm7drrR`OjnA*B!;l0i!:K7T7G6?]DrU0bS\jUmDZE1Vs+13$s+14?rrPRgDq!qO -c8pI~> -!B:&NirG&9mJm7drrR`OjnA*B!;l0i!:K7T7G6?]DrU0bN5FTVC]HkSs+13$s+14?rrPRgCt%DF -_`*)~> -!BpJTm/X-`mKEUjs1f;Sp$Me[qsF^imd:)!mdA7:ipHfG_sIQ[#6;hrs+13$s+14?rr^=B#MR\p -!S0Da~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsF^imd:)!mdA7:ipHf;_s%9T#6;hrs+13$s+14?rr^=B#M7Ji -!R<`V~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsF^imd:)!mdA7:ipHf*_rCjH#6;hrs+13$s+14?rr^=B#LV&] -!Q-jH~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=7;u!?AuTmKp]Nmd:)!mdA7:ipHfG`9dZ^$inG$s+13$s+14=rr^CD%,BD# -!S0Da~> -!BU8Qkl@:PmK3I)'=7;u!?AuTmKp]Nmd:)!mdA7:ipHf;`9@BW$inG$s+13$s+14=rr^CD%,'1q -!R<`V~> -!B:&NirG&9mK3I)'=7;u!?AuTmKp]Nmd:)!mdA7:ipHf*`8^sK$inG$s+13$s+14=rr^CD%+Ebe -!Q-jH~> -!BpJTm/X-`mK*A%Zh!MpIPA@rkIWEtmd:'Fg=\o5ipHfG`9dVK!(_\@JcC<$JcG-;!_<<6ea3Cg -4b*~> -!BU8Qkl@:PmK*A%Zh!MpIPA@rkIWEtmd:'Fg=\o5ipHf;`9@>E!(_\@JcC<$JcG-;!_<<4e`d+[ -3e.~> -!B:&NirG&9mK*A%Zh!MpIPA@rkIWEtmd:'Fg=\o5ipHf*`8^o -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs6*m/hV76%T&es+13$s6K[d5lc8_m/bd$J,~> -!BU8Qkl@:PmJsT0mJrfsklQ,16%T&es+13$s6K[d5lc2]klK'jJ,~> -!B:&NirG&9mJsT0mJr3birXB(6%T&es+13$s6K[d5lc)ZirR%VJ,~> -!BpJTm/X,tmJs6+m/u>]!5=$aJcC<$JcG'9"24aKin*PueieN~> -!BU8Qkl@9dmJrftkl]cT!5=$aJcC<$JcG'9"24aJhUgumc8pI~> -!B:&NirG%MmJr3cirdpH!5=$aJcC<$JcG'9"24aJf[o-a_`*)~> -!BpJTm/X,tmJs6+m/hn?4+[E_s+13$s69Ob3rjobm/bd$J,~> -!BU8Qkl@9dmJrftklQD94+[E_s+13$s69Ob3rji`klK'jJ,~> -!B:&NirG%MmJr3cirXZ04+[E_s+13$s69Ob3rj`]irR%VJ,~> -!BpJTm/X,tmJs6,m/uPk!47=WJcC<$JcG!7"1/%Ikh,8'eieN~> -!BU8Qkl@9dmJrfukl]ub!47=WJcC<$JcG!7"1/%HjOi\tc8pI~> -!B:&NirG%MmJr3dire0W!47=WJcC<$JcG!7"1/%Hhq6ri_`*)~> -!BpJTm/X,tmJs6,m/r[T/,k,"JcC<$JcG!7"9'eNQe:[+eieN~> -!BU8Qkl@9dmJrfukl[.M/,k,"JcC<$JcG!7"9'eNPh>4$c8pI~> -!B:&NirG%MmJr3dirbDD/,k,"JcC<$JcG!7"9'eNOkA[p_`*)~> -!BpJTm/X,tmJs6-m/u]*!2"iBJcC<$JcFp5".oQDm+Lb,eieN~> -!BU8Qkl@9dmJrg!kl^-!!2"iBJcC<$JcFp5".oQCkh52$c8pI~> -!B:&NirG%MmJr3eire9i!2"iBJcC<$JcFp5".oQBin<>m_`*)~> -!BpJTm/X,tmJs6-m/sBh)u5'bJcC<$JcFp5"8Nl9X4ck@eieN~> -!BU8Qkl@9dmJrg!kl[ja)u5'bJcC<$JcFp5"8Nl9W7gD9c8pI~> -!B:&NirG%MmJr3eirc(W)u5'bJcC<$JcFp5"8Nl9UtOc/_`*)~> -!BpJTm/X,tmJs6-m/fHOM1P\Xs+13$s5j7^M#]`mm/bd$J,~> -!BU8Qkl@9dmJrg!klO!JM1P\Xs+13$s5j7^M#]]lklK'jJ,~> -!B:&NirG%MmJr3eirV:BM1P\Xs+13$s5j7^M#]WjirR%VJ,~> -!BpJTm/X,trrB%?m/t6+%e,&LJcC<$JcFj3"7Qd#_qOJYeieN~> -!BU8Qkl@9drrAV3kl\^$%e,&LJcC<$JcFj3"7Qd#^tS#Rc8pI~> -!B:&NirG%MrrA#"ircmn%e,&LJcC<$JcFj3"7Qd#]@u9G_`*)~> -!BpJTm/X,trrB%?m/g;gF+O@Bs+13$s5X+\Er]7pm/bd$J,~> -!BU8Qkl@9drrAV3klOibF+O@Bs+13$s5X+\Er]4oklK'jJ,~> -!B:&NirG%MrrA#"irW*YF+O@Bs+13$s5X+\Er]+lirR%VJ,~> -!BpJTm/X,trrB%@m/tuG"5e\0JcC<$JcFd1"5a1cf\>coeieN~> -!BU8Qkl@9drrAV4kl]E>"5e\0JcC<$JcFd1"5a1beD'3gc8pI~> -!B:&NirG%MrrA##irdU3"5e\0JcC<$JcFd1"5a1bceII\_`*)~> -!BpJTm/X,trrB%@m/hM4;1\aus+13$s5EtZ;#kjqm/bd$J,~> -!BU8Qkl@9drrAV4klQ#.;1\aus+13$s5EtZ;#kdoklK'jJ,~> -!B:&NirG%MrrA##irX9%;1\aus+13$s5EtZ;#k[lirR%VJ,~> -!BpJTm/X,trrB%Am/uPh!5=$aJcC<$JcF^/"24aPkhPP+eieN~> -!BU8Qkl@9drrAV5kl]u`!5=$aJcC<$JcF^/"24aPjP8u#c8pI~> -!B:&NirG%MrrA#$ire0T!5=$aJcC<$JcF^/"24aOhq[5m_`*)~> -!BpJTm/X-`rrBjNrrB%Am/iaW/V3qQs+13$s53hX/HD9qm/bd$J,~> -!BU8Qkl@:PrrBjNrrAV5klR4P/V3qQs+13$s53hX/HD0nklK'jJ,~> -!B:&NirG&9rrBjNrrA#$irYGF/V3qQs+13$s53hX/HD$jirR%VJ,~> -!BpJTm/X-`rrE,8_Z'V8bO#?g!1JK=JcC<$JcFX-!h'*Hh!G-n4b*~> -!BU8Qkl@:PrrE,8_Z'V,bNT'b!1JK=JcC<$JcFX-!h'*Gh!"jb3e.~> -!B:&NirG&9rrE,8_Z'UpbMrX[!1JK=JcC<$JcFX-!h'*FguAFQ2h1~> -!BpJTm/X-`rrN07^r-0PWQa`3_Z1>BJcC<$JcC<$hu -!BU8Qkl@:PrrN07^r-0PS]p=#^]5#?JcC<$JcC<$hu -!B:&NirG&9rrN07^r-0PN6L;a])WK:JcC<$JcC<$hu -!BpJTm/X-`rrW8:'Ys>?!!)or!!(aQ!3+30!aPeJJcC<$JcC<$h>[Ou!+"FJ!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?!!)or!!(aQ!1h?u!a>YHJcC<$JcC<$h>[Ou!*e:D!R<`V~> -!B:&NirG&9rrW8:'Ys>?!!)or!!(aQ!0#.^!a,MFJcC<$JcC<$h>[Ou!*S. -!BpJTm/X-`rr`?%^_FTVrr<&rrr<&QrrB%Cm/u8S!SN&(JcC<$JcFR+"5*\_i83i%eieN~> -!BU8Qkl@:Prr`?%^_FTVrr<&rrr<&QrrAV7kl]]K!SN&(JcC<$JcFR+"5*\_gtq8rc8pI~> -!B:&NirG&9rr`?%^_FTVrr<&rrr<&QrrA#&irdm@!SN&(JcC<$JcFR+"5*\_fA>Ng_`*)~> -!BpJTm/X-`rriE&s1f>ap&>!lqu73-s8UnL$jT8bs8UnL$jT8blMgj`c0YRl!'u29JcC<$JcFL) -!^QgGhX(?p4b*~> -!BU8Qkl@:PrriE&s1f>ap&>!lqu73-s8UnL$jT8bs8UnL$jT8blMgjTc05:e!'u29JcC<$JcFL) -!^QgDhWY'd3e.~> -!B:&NirG&9rriE&s1f>ap&>!lqu73-s8UnL$jT8bs8UnL$jT8blMgjCc/Sk\!'u29JcC<$JcFL) -!^QgAhW"XS2h1~> -!BpJTm/X-`rr<&urrR`Op%JCc!;ld-!<<'L^@q&7=TACO^@q&7=R,ndWQjf3/HD]"s+13$s+14) -rrT(u/`,jqeieN~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;ld-!<<'L^@q&7=TACO^@q&7=R,ndS^$C#/HD]"s+13$s+14) -rrT(u/`,^mc8pI~> -!B:&NirG&9rr<&urrR`Op%JCc!;ld-!<<'L^@q&7=TACO^@q&7=R,ndN6UAa.fcJus+13$s+14) -rrT(u/)K:e_`*)~> -!BpJTm/X-`rriE&s1f>ap&>!lqu6Wrqu6]i'`7n2ob?]k!3+92"2"UKpjrHrs+13$s4dPUp_ -!BU8Qkl@:PrriE&s1f>ap&>!lqu6Wrqu6]i'`7n2ob?]k!1hF""1\CHpjrHrs+13$s4dPUp_ -hrt0e3e.~> -!B:&NirG&9rriE&s1f>ap&>!lqu6Wrqu6]i'`7n2ob?]k!0#4`"1/%CpjrHrs+13$s4dPUp_ -!BpJTm/X-`rr`?%^_FTVrrE3!rVmK-!rr;@4UV5i!WW2?4UV5i!UB[bWQsl4>l\tts+13$s+14' -rrR9B?/P#MeieN~> -!BU8Qkl@:Prr`?%^_FTVrrE3!rVmK-!rr;@4UV5i!WW2?4UV5i!UB[bS^-I$>6&brs+13$s+14' -rrR9B>MnZGc8pI~> -!B:&NirG&9rr`?%^_FTVrrE3!rVmK-!rr;@4UV5i!WW2?4UV5i!UB[bN6^Gb=TEPps+13$s+14' -rrR9B=l86?_`*)~> -!BpJTm/X-`rrW8:'Ys>?!?TVdrt3R"s8O(;nG_tYs8O(;nG_tYlMgj`cg:hs$3Ah2s+13$s+14' -rr^pT$Kg:6!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?!?TVdrt3R"s8O(;nG_tYs8O(;nG_tYlMgjTcfkPk$3Ah2s+13$s+14' -rr^pT$KC".!R<`V~> -!B:&NirG&9rrW8:'Ys>?!?TVdrt3R"s8O(;nG_tYs8O(;nG_tYlMgjCcf5,_$3Ah2s+13$s+14' -rr^pT$JaS"!Q-jH~> -!BpJTm/X-`rrN07_".LALGR!GprG7Is8Nb:pt\sNs8Nb:pt\sNlMgj`cg:du!'Yu6JcC<$JcF@% -!^6UKi9^Qr4b*~> -!BU8Qkl@:PrrN07_".LALGR!GprG7Is8Nb:pt\sNs8Nb:pt\sNlMgjTcfkLo!'Yu6JcC<$JcF@% -!^6UIi9:9f3e.~> -!B:&NirG&9rrN07_".LALGR!GprG7Is8Nb:pt\sNs8Nb:pt\sNlMgjCcf5(e!'Yu6JcC<$JcF@% -!^6UEi8XjU2h1~> -!BpJTm/X-`rrE,8nc'F)Ot?nD/X$,5s0 -!BU8Qkl@:PrrE,8nc'F)Ot?nD/X$,5s0 -!B:&NirG&9rrE,8nc'F)Ot?nD/X$,5s0 -!BpJTm/X-`rrBjNrrB%Fm/tZ8$Lr]IJcC<$JcF@%"7Z^!cf+6leieN~> -!BU8Qkl@:PrrBjNrrAV:kl]-1$Lr]IJcC<$JcF@%"7Z^!bi.dec8pI~> -!B:&NirG&9rrBjNrrA#)ird=&$Lr]IJcC<$JcF@%"7Z^!a5Q%Z_`*)~> -!BpJTm/X,trrB%Fm/hM4>Clg*s+13$s4.,N>6&p,m/bd$J,~> -!BU8Qkl@9drrAV:klQ#.>Clg*s+13$s4.,N>6&j*klK'jJ,~> -!B:&NirG%MrrA#)irX9%>Clg*s+13$s4.,N>6&a'irR%VJ,~> -!BpJTm/X,trrB%Gm/u\t!4ma]JcC<$JcF:#"1eITm,IC5eieN~> -!BU8Qkl@9drrAV;kl^,l!4ma]JcC<$JcF:#"1eITki1h-c8pI~> -!B:&NirG%MrrA#*ire9_!4ma]JcC<$JcF:#"1eISio8u!_`*)~> -!BpJTm/X,trrB%Gm/s`r*W:QhJcC<$JcF:#"8s5?[GpQSeieN~> -!BU8Qkl@9drrAV;kl\3k*W:QhJcC<$JcF:#"8s5?ZJt*Lc8pI~> -!B:&NirG%MrrA#*ircFa*W:QhJcC<$JcF:#"8s5?Y2\IB_`*)~> -!BpJTm/X,trrB%Gm/gSoH%H!Hs+13$s3puLGlV11m/bd$J,~> -!BU8Qkl@9drrAV;klP,jH%H!Hs+13$s3puLGlV.0klK'jJ,~> -!B:&NirG%MrrA#*irWBaH%H!Hs+13$s3puLGlV%-irR%VJ,~> -!BpJTm/X,trrB%Hm/uPb!7QN!JcC<$JcF4!"4I5_ki;%2eieN~> -!BU8Qkl@9drrAV -!B:&NirG%MrrA#+ire0N!7QN!JcC<$JcF4!"4I5^hrE_t_`*)~> -!BpJTm/X,trrB%Hm/j3d/:mhPs+13$s3^iJ/-)X/m/bd$J,~> -!BU8Qkl@9drrAV -!B:&NirG%MrrA#+irYnS/:mhPs+13$s3^iJ/-)C(irR%VJ,~> -!BpJTm/X,trrB%Hm/g;gKRs/Ss+13$s3^iJKE,'5m/bd$J,~> -!BU8Qkl@9drrAV -!B:&NirG%MrrA#+irW*YKRs/Ss+13$s3^iJKE+p1irR%VJ,~> -!BpJTm/X,tmJs68m/uJ[!8E))JcC<$JcF-t"5 -!BU8Qkl@9dmJrg,kl]oS!8E))JcC<$JcF-t"5)c8pI~> -!B:&NirG%MmJr3pire'F!8E))JcC<$JcF-t"5 -!BpJTm/X,tmJs68m/is]21bdYs+13$s3L]H2#s?2m/bd$J,~> -!BU8Qkl@9dmJrg,klRFV21bdYs+13$s3L]H2#s6/klK'jJ,~> -!B:&NirG%MmJr3pirYYL21bdYs+13$s3L]H2#s*+irR%VJ,~> -!BpJTm/X,tmJs68m/g&`NIh+\s+13$s3L]HN;uc8m/bd$J,~> -!BU8Qkl@9dmJrg,klOQZNIh+\s+13$s3L]HN;u]6klK'jJ,~> -!B:&NirG%MmJr3pirVjRNIh+\s+13$s3L]HN;uW4irR%VJ,~> -!BpJTm/X,tmJs69m/uGV!98Y1JcC<$JcF'r"60@fjlPk1eieN~> -!BU8Qkl@9dmJrg-kl]lN!98Y1JcC<$JcF'r"60@fiT9;)c8pI~> -!B:&NirG%MmJr3qire$B!98Y1JcC<$JcF'r"60@fgZ@Gr_`*)~> -!BpJTm/X,tmJs69m/j!^3._*\s+13$s3:QF2uo]7m/bd$J,~> -!BU8Qkl@9dmJrg-klRIW3._*\s+13$s3:QF2uoT4klK'jJ,~> -!B:&NirG%MmJr3qirY\M3._*\s+13$s3:QF2uoH0irR%VJ,~> -!BpJTm/X-`mJsT0mJs69m/g;gM1P\Xs+13$s3:QFM#^T -!BU8Qkl@:PmJsT0mJrg-klOibM1P\Xs+13$s3:QFM#^Q;klK'jJ,~> -!B:&NirG&9mJsT0mJr3qirW*YM1P\Xs+13$s3:QFM#^H8irR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK!e`d1s%fk=7s+13$s+13prr^sT&*2m;!R<`V~> -!B:&NirG&9mK! -!BpJTm/X-`mK*A%ZfpfW!;c*`!9NVKWR^A;XT0o's+13$s+13nrrO_OXlf!OeieN~> -!BU8Qkl@:PmK*A%ZfpfW!;c*`!9NVKS^ls+WW4T$s+13$s+13nrrO_OWoiOHc8pI~> -!B:&NirG&9mK*A%ZfpfW!;c*`!9NVKN7HqiV>r/us+13$s+13nrrO_OVWQn>_`*)~> -!BpJTm/X-`mK3I)'=7;u!!)oa!s%cW!;c*`!9NVKWR^A;@/t_,s+13$s+13nrrRTK@HQqXeieN~> -!BU8Qkl@:PmK3I)'=7;u!!)oa!s%cW!;c*`!9NVKS^ls+?iYV+s+13$s+13nrrRTK@-6\Sc8pI~> -!B:&NirG&9mK3I)'=7;u!!)oa!s%cW!;c*`!9NVKN7Hqi>l];(s+13$s+13nrrRTK?0:/J_`*)~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mKkMlT\ -2h1~> -!BpJTm/X-`mKEUjs1f;Sp$Me[qsG!qmd:()'a\+-md:()'a\+-lL"YOf'NOO!#pLhJcC<$JcEjl -!ZM-PkNr<$4b*~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsG!qmd:()'a\+-md:()'a\+-lL"YCf'*7H!#pLhJcC<$JcEjl -!ZM-MkNN#m3e.~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsG!qmd:()'a\+-md:()'a\+-lL"Y2f&Hh=!#pLhJcC<$JcEjl -!ZM-HkMlT\2h1~> -!BpJTm/X-`mJm7drrR`OjnA*B!;l0q!:K7T7G6?]Dsm#n7G6?]DsH`jWRgG -!BU8Qkl@:PmJm7drrR`OjnA*B!;l0q!:K7T7G6?]Dsm#n7G6?]DsH`jS_!$,F9$',s+13$s+13l -rrQp8FQ_lhc8pI~> -!B:&NirG&9mJm7drrR`OjnA*B!;l0q!:K7T7G6?]Dsm#n7G6?]DsH`jN7R"jE<'a)s+13$s+13l -rrQp8ETc?__`*)~> -!BpJTm/X-`mKEUjs1f;Sp$Me[qsG!qmd:)!mdA7:md:)!mdA7:lL"YOf'NMn!4@CXJcC<$JcEjl -!jr"_kNr<$4b*~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsG!qmd:)!mdA7:md:)!mdA7:lL"YCf'*5i!4@CXJcC<$JcEjl -!jr"^kNN#m3e.~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsG!qmd:)!mdA7:md:)!mdA7:lL"Y2f&Hfb!4@CXJcC<$JcEjl -!jr"]kMlT\2h1~> -!BpJTm/X-`mKCTWRpM>fE)BQJcC<$JcC<$ -ao;J:#m/cCm/bd$J,~> -!BU8Qkl@:PmKCTS_**.e,fsMJcC<$JcC<$ -ao;J:#m/W?klK'jJ,~> -!B:&NirG&9mKCTN7[(lcN4FHJcC<$JcC<$ -ao;J:#m/H:irR%VJ,~> -!BpJTm/X-`mK3I)'=7;u!?AuTmLd8Vmd:)!mdA7:md:)!mdA7:lL"YOfBiX)!(qhBOoG[c\p87* -H+O!+s+13brrPdmQ0@T9eieN~> -!BU8Qkl@:PmK3I)'=7;u!?AuTmLd8Vmd:)!mdA7:md:)!mdA7:lL"YCfBE@#!(qhBOoG[c\p87* -H+O!+s+13brrPdmPN_63c8pI~> -!B:&NirG&9mK3I)'=7;u!?AuTmLd8Vmd:)!mdA7:md:)!mdA7:lL"Y2fAcpn!(qhBOoG[c\p87* -H+O!+s+13brrPdmO6GU)_`*)~> -!BpJTm/X-`mK*A%Zh!N#IPA@rkIWEtmd:'Fg=\o5md:'Fg=\o5lL"YOfBiW9!0i'7P5bj4>E->1 -^:fM1b^oeFs1nX9PQ4PDm/bd$J,~> -!BU8Qkl@:PmK*A%Zh!N#IPA@rkIWEtmd:'Fg=\o5md:'Fg=\o5lL"YCfBE?3!0i'7P5bj4>E->1 -^:fM1b^oeFs1nX9PQ4JBklK'jJ,~> -!B:&NirG&9mK*A%Zh!N#IPA@rkIWEtmd:'Fg=\o5md:'Fg=\o5lL"Y2fAcp+!0i'7P5bj4>E->1 -^:fM1b^oeFs1nX9PQ4D@irR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs6=m/j]r.=qM_rrJ.ApV$ZiNe.4]s2"^:.0-g@m/bd$J,~> -!BU8Qkl@:PmJsT0mJrg1klS0k.=qM_rrJ.ApV$ZiNe.4]s2"^:.0-^=klK'jJ,~> -!B:&NirG&9mJsT0mJr3uirZCa.=qM_rrJ.ApV$ZiNe.4]s2"^:.0-R9irR%VJ,~> -!BpJTm/X,tmJs6=m/hJ3D1V_OrrL#aotCHR_h%i=s2+d;D#eeEm/bd$J,~> -!BU8Qkl@9dmJrg1klPu-D1V_OrrL#aotCHR_h%i=s2+d;D#e_CklK'jJ,~> -!B:&NirG%MmJr3uirX6$D1V_OrrL#aotCHR_h%i=s2+d;D#eV@irR%VJ,~> -!BpJTm/X,tmJs6=m/f6IZ%;q?rrW%%^%K)@]j1Dbs+13frrTG*39ff2eieN~> -!BU8Qkl@9dmJrg1klNgEZ%;q?rrW%%^%K)@]j1Dbs+13frrTG*39fZ.c8pI~> -!B:&NirG%MmJr3uirV+=Z%;q?rrW%%^%K)@]j1Dbs+13frrTG*2X06&_`*)~> -!BpJTm/X,tmJs6>m/u>O"Rq!BQ2^lZTC]btT;$o:JcEXf"7QEsip,n3eieN~> -!BU8Qkl@9dmJrg2kl]cG"Rq!BQ2^lZTC]btT;$o:JcEXf"7QEshWj>+c8pI~> -!B:&NirG%MmJr4!irdp:"Rq!BQ2^lZTC]btT;$o:JcEXf"7QErf]qJt_`*)~> -!BpJTm/X,tmJs6>m/j3d3._*orr?[$^&Vbrs+13errP.[W9WaNeieN~> -!BU8Qkl@9dmJrg2klR^^3._*orr?[$^&Vbrs+13errP.[VX!CHc8pI~> -!B:&NirG%MmJr4!irYnS3._*orr?[$^&Vbrs+13errP.[U$CY=_`*)~> -!BpJTm/X,tmJs6>m/h#&I"D<_rrM8(rP&72!s]]/M>Y'gFQS/SJcEXf!dju_lKnW'4b*~> -!BU8Qkl@9dmJrg2klPMuI"D<_rrM8(rP&72!s]]/M>Y'gFQS/SJcEXf!dju]lKJ>p3e.~> -!B:&NirG%MmJr4!irWclI"D<_rrM8(rP&72!s]]/M>Y'gFQS/SJcEXf!djuZlJho_2h1~> -!BpJTm/X,tmJs6>m/ed<^OcEMrrK'frOrL:^:q+SFrX3S^&a_%JcC<$_uBeQ!%[@%!S0Da~> -!BU8Qkl@9dmJrg2klN=7^OcEMrrK'frOrL:^:q+SFrX3S^&a_%JcC<$_uBeQ!%R9u!R<`V~> -!B:&NirG%MmJr4!irUY0^OcEMrrK'frOrL:^:q+SFrX3S^&a_%JcC<$_uBeQ!%I3n!Q-jH~> -!BpJTm/X,tmJs6?m/u/F$N#DSQ2^l-^&>YF!;sP4[30hq^&boiJcC<$_uBi9$3AuKm/bd$J,~> -!BU8Qkl@9dmJrg3kl]W?$N#DSQ2^l-^&>YF!;sP4[30hq^&boiJcC<$_uBi9$3AlHklK'jJ,~> -!B:&NirG%MmJr4"irdd3$N#DSQ2^l-^&>YF!;sP4[30hq^&boiJcC<$_uBi9$3AZBirR%VJ,~> -!BpJTm/X,trrB%Pm/j$_6%T'#rr@*;^&S01^&`a=rOr8PJcC<$_Z'['!2JlI!S0Da~> -!BU8Qkl@9drrAVDklRLX6%T'#rr@*;^&S01^&`a=rOr8PJcC<$_Z'['!2/ZB!R<`V~> -!B:&NirG%MrrA#3irY_N6%T'#rr@*;^&S01^&`a=rOr8PJcC<$_Z'['!1`B8!Q-jH~> -!BpJTm/X,trrB%Pm/h#&IY%N`rr@$9^&S01^&b>GrOr8NJcC<$_Z'[d!,Cie!S0Da~> -!BU8Qkl@9drrAVDklPQ!IY%N`rr@$9^&S01^&b>GrOr8NJcC<$_Z'[d!,:c`!R<`V~> -!B:&NirG%MrrA#3irWfmIY%N`rr@$9^&S01^&b>GrOr8NJcC<$_Z'[d!+tQW!Q-jH~> -!BpJTm/X,trrB%Pm/f$C]7L!Hrr@$9^&S01^&bhIrOr8NJcC<$_Z'\L!&Em-!S0Da~> -!BU8Qkl@9drrAVDklNR>]7L!Hrr@$9^&S01^&bhIrOr8NJcC<$_Z'\L!& -!B:&NirG%MrrA#3irUn7]7L!Hrr@$9^&S01^&bhIrOr8NJcC<$_Z'\L!&3a!!Q-jH~> -!BpJTm/X,trrB%Qm/uAP"S73EPlC`(r4W.2qn<*5%fO*AEe47As2+d -!BU8Qkl@9drrAVEkl]fH"S73EPlC`(r4W.2qn<*5%fO*AEe47As2+d -!B:&NirG%MrrA#4irds;"S73EPlC`(r4W.2qn<*5%fO*AEe47As2+d -!BpJTm/X,trrB%Qm/jEj21bdkrrI8UrOr73qn<)]1B+ug]leo+JcERd!]9t\m-Oi)4b*~> -!BU8Qkl@9drrAVEklRmc21bdkrrI8UrOr73qn<)]1B+ug]leo+JcERd!]9tYm-+Pr3e.~> -!B:&NirG%MrrA#4irZ+Y21bdkrrI8UrOr73qn<)]1B+ug]leo+JcERd!]9tUm,J,a2h1~> -!BpJTm/X-`rrBjNrrB%Qm/hG2Ee47SrrK'frOr73r4W6?+aj:'!Lp$=s+13drrR3@G3nSseieN~> -!BU8Qkl@:PrrBjNrrAVEklPr,Ee47SrrK'frOr73r4W6?+aj:'!Lp$=s+13drrR3@FR85mc8pI~> -!B:&NirG&9rrBjNrrA#4irX3#Ee47SrrK'frOr73r4W6?+aj:'!Lp$=s+13drrR3@EU;]d_`*)~> -!BpJTm/X-`rrE,8_Z'V8g[,&,!3^tRPQ([GFT&oY!5?1XVKX%SrOr;Sk(3P`s2"^:Y5gfRm/bd$ -J,~> -!BU8Qkl@:PrrE,8_Z'V,gZ\c'!3^tRPQ([GFT&oY!5?1XVKX%SrOr;Sk(3P`s2"^:Y5gcQklK'j -J,~> -!B:&NirG&9rrE,8_Z'UpgZ&>t!3^tRPQ([GFT&oY!5?1XVKX%SrOr;Sk(3P`s2"^:Y5g]OirR%V -J,~> -!BpJTm/X-`rrN07^r-0PWSHkClOEpWJcCo5!+u2DrW!$)(dNrU^&Vbrs+13crr_B`%dWNL!S0Da~> -!BU8Qkl@:PrrN07^r-0PS_WH3k7.LSJcCo5!+u2DrW!$)(dNrU^&Vbrs+13crr_B`%d36D!R<`V~> -!B:&NirG&9rrN07^r-0PN83Fqi=,eLJcCo5!+u2DrW!$)(dNrU^&Vbrs+13crr_B`%H6^7!Q-jH~> -!BpJTm/X-`rrW8:'Ys>?rr<0&%PW+lg&D&Oh!G0`!$6^kOoGHVTC]btT;$o:JcELb!Zh?^mHjr* -4b*~> -!BU8Qkl@:PrrW8:'Ys>?rr<0&%PW+lg&D&Ch!"mY!$6^kOoGHVTC]btT;$o:JcELb!Zh?[mHFYs -3e.~> -!B:&NirG&9rrW8:'Ys>?rr<0&%PW+lg&D&2guAIN!$6^kOoGHVTC]btT;$o:JcELb!Zh?VmGe5b -2h1~> -!BpJTm/X-`rr`?%^_FTVrs&Q(s7FQQ)W09K!3+c@!gNabJcCl4!r?08otCL@>l'$OJcELb!`T/b -mHjr*4b*~> -!BU8Qkl@:Prr`?%^_FTVrs&Q(s7FQQ)W09K!1hp0!gl'$OJcELb!`T/` -mHFYs3e.~> -!B:&NirG&9rr`?%^_FTVrs&Q(s7FQQ)W09K!0#^n!fm=\JcCl4!r?08otCL@>l'$OJcELb!`T/\ -mGe5b2h1~> -!BpJTm/X-`rriE&s1f>ap&>!lr;R(P>lXi[9ah7rkMlLAWSHkB@K;::s,d6]_gD'j!IM_8s+13a -rrS&X@dWO`eieN~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;R(P>lXi[9ah7rkMlLAS_WH2?iZ(8s,d6]_gD'j!IM_8s+13a -rrS&X@.!1Zc8pI~> -!B:&NirG&9rriE&s1f>ap&>!lr;R(P>lXi[9ah7rkMlLAN83Fp?3#k6s,d6]_gD'j!IM_8s+13a -rrS&X?L?bR_`*)~> -!BpJTm/X-`rr<&urrR`Op%JCc!;uj'iY_^q/&(`HDcl$!!3+c@!\XPhJcCf2!KN99^&`n(JcC<$ -^&J/L!&*a,!S0Da~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;uj'iY_^q/&(`HDcl$!!1hp0!\OJgJcCf2!KN99^&`n(JcC<$ -^&J/L!&!['!R<`V~> -!B:&NirG&9rr<&urrR`Op%JCc!;uj'iY_^q/&(`HDcl$!!0#^n!\FDfJcCf2!KN99^&`n(JcC<$ -^&J/L!%mTu!Q-jH~> -!BpJTm/X-`rriE&s1f>ap&>!lr;Qfo"oJ<#ob?Ec!3+fA"6Kaho7?q%rrJ:2q7ZrZE$+V$s+13a -rr_ip"m57?!S0Da~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;Qfo"oJ<#ob?Ec!1hs1"6'Ido7?q%rrJ:2q7ZrZE$+V$s+13a -rr_ip"let7!R<`V~> -!B:&NirG&9rriE&s1f>ap&>!lr;Qfo"oJ<#ob?Ec!0#ao"5F"]o7?q%rrJ:2q7ZrZE$+V$s+13a -rr_ip"PiG*!Q-jH~> -!BpJTm/X-`rr`?%^_FTVrr<&srs@X$s8U,&$NL/-ir9"XhE->1^:fM1bl;9e -JcC<$^&J-d!4hOb!S0Da~> -!BU8Qkl@:Prr`?%^_FTVrr<&srs@X$s8U,&$NL/-ir9"Lh<>!L!%rj&N;j=1>E->1^:fM1bl;9e -JcC<$^&J-d!4M=[!R<`V~> -!B:&NirG&9rr`?%^_FTVrr<&srs@X$s8U,&$NL/-ir9";h;\RA!%rj&N;j=1>E->1^:fM1bl;9e -JcC<$^&J-d!3ttP!Q-jH~> -!BpJTm/X-`rrW8:'Ys>?!!)rs$%6%XruA!,rpg'KrrB%Sm/i7I?\/68rs\n -!BU8Qkl@:PrrW8:'Ys>?!!)rs$%6%XruA!,rpg'KrrAVGklQ_B?\/68rs\n -!B:&NirG&9rrW8:'Ys>?!!)rs$%6%XruA!,rpg'KrrA#6irXu9?\/68rs\n -!BpJTm/X-`rrN07_".L9!<<)lc#+BSs8Nb:pt\sNir9"Xh -!BU8Qkl@:PrrN07_".L9!<<)lc#+BSs8Nb:pt\sNir9"Lh<=uI!0;^2M#RLAl21J^Zmbd%s+13b -rrS5]?LI%Yc8pI~> -!B:&NirG&9rrN07_".L9!<<)lc#+BSs8Nb:pt\sNir9";h;\Q@!0;^2M#RLOlhg\`Zmbd%s+13b -rrS5]>OLMP_`*)~> -!BpJTm/X-`rrE,8nc/Uh"9AoaFm/i)"gT?U+dN,frrB%Sm/f'D^OcE@rrIl=qYpReOb*O`s1eR8 -^Ap(Xm/bd$J,~> -!BU8Qkl@:PrrE,8nc/Uh"9AoaFm/i)"gT?U+dN,frrAVGklNU?^OcE@rrJ>MqYpReOb*O`s1eR8 -^Ap%WklK'jJ,~> -!B:&NirG&9rrE,8nc/Uh"9AoaFm/i)"gT?U+dN,frrA#6irUq8^OcE@rrJh]qYpReOb*O`s1eR8 -^Ap"VirR%VJ,~> -!BpJTm/X-`rrBjNrrB%Tm/uV[!UbO=M#RL-mJ?haeJ@M&s+13crr_Zi$0q!H!S0Da~> -!BU8Qkl@:PrrBjNrrAVHkl^&S!UbO=M#RL;n,!%ceJ@M&s+13crr_Zi$0L^@!R<`V~> -!B:&NirG&9rrBjNrrA#7ire3G!UbO=M#RLInbW7eeJ@M&s+13crr_Zi$/k:4!Q-jH~> -!BpJTm/X,trrB%Tm/k?/++aHIrrIW=q>^J2JcC<$^]+?W!6FWr!S0Da~> -!BU8Qkl@9drrAVHklSg(++aHIrrJ,Mq>^J2JcC<$^]+?W!6+Ek!R<`V~> -!B:&NirG%MrrA#7ir[!r++aHIrrJY]q>^J2JcC<$^]+?W!5S'`!Q-jH~> -!BpJTm/X,trrB%Tm/idX:P&P$rrIN=q>UN_(=e!9JcEOc!`&fdn*L/,4b*~> -!BU8Qkl@9drrAVHklR7Q:P&P$rrJ#Mq>UN_(=e!9JcEOc!`&fan*'ku3e.~> -!B:&NirG%MrrA#7irYJG:P&P$rrJP]q>UN_(=e!9JcEOc!`&f]n)FGd2h1~> -!BpJTm/X,trrB%Tm/h2+It@WTrrIB=q#:AW8:gels1nX9IfOEUm/bd$J,~> -!BU8Qkl@9drrAVHklP]%It@WTrrIoMq#:AW8:gels1nX9IfO?SklK'jJ,~> -!B:&NirG%MrrA#7irWrqIt@WTrrJG\q#:AW8:gels1nX9IfO6PirR%VJ,~> -!BpJTm/X,trrB%Tm/ffYX+C;+rrI6=q#:El.(+X+JcERd!il;ln*L/,4b*~> -!BU8Qkl@9drrAVHklO?TX+C;+rrIfMq#:El.(+X+JcERd!il;kn*'ku3e.~> -!B:&NirG%MrrA#7irVXLX+C;+rrJ>]q#:El.(+X+JcERd!il;in)FGd2h1~> -!BpJTm/X,trrB%Tm/eF2e:IXTrrI-=p\t<&./JMpJcEUe!n72nn*L/,4b*~> -!BU8Qkl@9drrAVHklN".e:IXTrrI]Mp\t<&./JMpJcEUe!n72nn*'ku3e.~> -!B:&NirG%MrrA#7irU>'e:IXTrrJ8]p\t<&./JMpJcEUe!n72mn)FGd2h1~> -!BpJTm/X,trrB%Um/uJQ"SmWKM#RMSEqTG58 -!BU8Qkl@9drrAVIkl]oI"SmWKM#RMSK(]-E8 -!B:&NirG%MrrA#8ire'="SmWKM#RMSP4ehU8)_`*)~> -!BpJTm/X,trrB%Um/k-)."VDRrrMq=p&>*D(@6VPJcEUe![n&cnEg8-4b*~> -!BU8Qkl@9drrAVIklSU"."VDRrrMtMp&>*D(@6VPJcEUe![n&`nEBu!3e.~> -!B:&NirG%MrrA#8irZdl."VDRrrN"]p&>*D(@6VPJcEUe![n&[nDaPe2h1~> -!BpJTm/X,tmJs6Dm/idX;1\b&rrMh=o`+r-JcC<$_Z'[7!1`QG!S0Da~> -!BU8Qkl@9dmJrg8klR7Q;1\b&rrMkMo`+r-JcC<$_Z'[7!1E?@!R<`V~> -!B:&NirG%MmJr4'irYJG;1\b&rrMn]o`+r-JcC<$_Z'[7!1!'6!Q-jH~> -!BpJTm/X,tmJs6Dm/hD1H@c*OrrM_=o`#!Z(=e!9JcEXf!dXihnEg8-4b*~> -!BU8Qkl@9dmJrg8klPo+H@c*OrrMbMo`#!Z(=e!9JcEXf!dXifnEBu!3e.~> -!B:&NirG%MmJr4'irX0"H@c*OrrMe]o`#!Z(=e!9JcEXf!dXicnDaPe2h1~> -!BpJTm/X,tmJs6Dm/g&`UOiH#rrMS=oD\iR8:gels24j -!BU8Qkl@9dmJrg8klOQZUOiH#rrMYMoD\iR8:gels24j -!B:&NirG%MmJr4'irVjRUOiH#rrM_]oD\iR8:gels24j -!BpJTm/X,tmJs6Dm/eg=b(9SJrrMJ=oD\mg.(+X+JcE[g!m1KonEg8-4b*~> -!BU8Qkl@9dmJrg8klNC9b(9SJrrMPMoD\mg.(+X+JcE[g!m1KonEBu!3e.~> -!B:&NirG%MmJr4'irU_2b(9SJrrMV]oD\mg.(+X+JcE[g!m1KnnDaPe2h1~> -!BpJTm/X,tmJs6Dm/d[rm=G:mrrMA=o)Ad!./JMpJcE^h!posrnEg8-4b*~> -!BU8Qkl@9dmJrg8klM7nm=G:mrrMGMo)Ad!./JMpJcE^h!posrnEBu!3e.~> -!B:&NirG%MmJr4'irTVhm=G:mrrMP]o)Ad!./JMpJcE^h!posrnDaPe2h1~> -!BpJTm/X-`mJsT0mJs6Em/kr@&V9t:rrM5=nc&V\Ob*O`s2=p=&HLMSm/bd$J,~> -!BU8Qkl@:PmJsT0mJrg9klTB8&V9t:rrM>Mnc&V\Ob*O`s2=p=&HLAOklK'jJ,~> -!B:&NirG&9mJsT0mJr4(ir[O,&V9t:rrMG]nc&V\Ob*O`s2=p=&HL/IirR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%ZfpfW!8[&CWSm.FQiL3=s+^OShN@=-s(m8dJcE^h!`oAhna-A.4b*~> -!BU8Qkl@:PmK*A%ZfpfW!8[&CS`&`6PlOm:s+^OSigoT=s(m8dJcE^h!`oAen`^)"3e.~> -!B:&NirG&9mK*A%ZfpfW!8[&CN8W^tOT8I6s+^OSjf7hMs(m8dJcE^h!`oAan`'Yf2h1~> -!BpJTm/X-`mK3I)'=7;urr<0&%4uMPrpBadh -!BU8Qkl@:PmK3I)'=7;urr<0&%4uMPrpBadh -!B:&NirG&9mK3I)'=7;urr<0&%4uMPrpBadh -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mKs+^OSi32VL!Kfp(s+13irrS_k -;t8lK_`*)~> -!BpJTm/X-`mKEUjs1f;Sp$Me[r9al7 -!BU8Qkl@:PmKEUjs1f;Sp$Me[r9al7 -!B:&NirG&9mKEUjs1f;Sp$Me[r9al7 -!BpJTm/X-`mJm7drrR`OjnA*B!;u6kdh_B>!(GSo6Z:uP!3+oD!ZqEsJcCK)!R[M,rrTSVqLSZt -s2b3AgAi>cm/bd$J,~> -!BU8Qkl@:PmJm7drrR`OjnA*B!;u6kdh_B>!(GSo6Z:uP!1i'4!Zh?rJcCK)!S47 -!B:&NirG&9mJm7drrR`OjnA*B!;u6kdh_B>!(GSo6Z:uP!0#jr!Z_9qJcCK)!Sb!LrrTSVqLSZt -s2b3AgAi8airR%VJ,~> -!BpJTm/X-`mKEUjs1f;Sp$Me[r9amU"n(dYbjOoB)WL/bWT!4HlNRCaJcCK)!R7A+rrGZQJcC<$ -aSuA:!=%l\m/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[r9amU"n(dYbjOoB)WL/bS`/f8k61n\JcCK)!Rn.;rrGZQJcC<$ -aSuA:! -!B:&NirG&9mKEUjs1f;Sp$Me[r9amU"n(dYbjOoB)WL/bN8`e!i<98VJcCK)!SFmKrrGZQJcC<$ -aSuA:! -!BpJTm/X-`mK -!BU8Qkl@:PmKkeJ@M&s+13k -rrNo8e+2`(c8pI~> -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=7;u!!)rb$$B89mJtK!m`QO.mJs6Fm/jp#14fIZrrL- -!BU8Qkl@:PmK3I)'=7;u!!)rb$$B89mJtK!m`QO.mJrg:klSBq14fIZrrL?Lm/R*%JcC<$aSu;s -!4h[b!R<`V~> -!B:&NirG&9mK3I)'=7;u!!)rb$$B89mJtK!m`QO.mJr4)irZRf14fIZrrLT]m/R*%JcC<$aSu;s -!4;=W!Q-jH~> -!BpJTm/X-`mK*A%Zh!Mp!:K::^Ln>-md:'Fg=\o5ipHfGiU$]@!)A+FL&V1kXR,rglk\-&s+13l -rrPpqU@R[PeieN~> -!BU8Qkl@:PmK*A%Zh!Mp!:K::^Ln>-md:'Fg=\o5ipHf;iTUE9!)A+FL&V1q[d="qlk\-&s+13l -rrPpqTCV4Ic8pI~> -!B:&NirG&9mK*A%Zh!Mp!:K::^Ln>-md:'Fg=\o5ipHf*iSt!/!)A+FL&V2#^[1t%lk\-&s+13l -rrPpqS+>S?_`*)~> -!BpJTm/X-`mK!rrKm=li.!J8:gels2k9B -CB0.\m/bd$J,~> -!BU8Qkl@:PmK!rrL-Mli.!J8:gels2k9B -CB0(ZklK'jJ,~> -!B:&NirG&9mK!rrLE]li.!J8:gels2k9B -CB/qVirR%VJ,~> -!BpJTm/X-`mJsT0mJs6Fm/h,)LOoJZrrKd=li.%_.(+X+JcEmm!f$bmo'HJ/4b*~> -!BU8Qkl@:PmJsT0mJrg:klPW#LOoJZrrL$Mli.%_.(+X+JcEmm!f$bko'$2#3e.~> -!B:&NirG&9mJsT0mJr4)irWopLOoJZrrL<]li.%_.(+X+JcEmm!f$bio&Bbg2h1~> -!BpJTm/X,tmJs6Fm/gAiSq6oqrrK[=lMgpn./JMpJcEpn!hKBoo'HJ/4b*~> -!BU8Qkl@9dmJrg:klOlcSq6oqrrKpMlMgpn./JMpJcEpn!hKBmo'$2#3e.~> -!B:&NirG%MmJr4)irW0[Sq6oqrrL3]lMgpn./JMpJcEpn!hKBko&Bbg2h1~> -!BpJTm/X,tmJs6Fm/fZU["872rrKO=l2LcTOb*O`s3(EDZiEMbm/bd$J,~> -!BU8Qkl@9dmJrg:klO0O["872rrKgMl2LcTOb*O`s3(EDZiEG`klK'jJ,~> -!B:&NirG%MmJr4)irVLH["872rrL*]l2LcTOb*O`s3(EDZiED_irR%VJ,~> -!BpJTm/X,tmJs6Fm/em?bCT\IrrKC=l2Lh8(@6VPJcEso!m:Qro'HJ/4b*~> -!BU8Qkl@9dmJrg:klNI;bCT\IrrK^Ml2Lh8(@6VPJcEso!m:Qro'$2#3e.~> -!B:&NirG%MmJr4)irUb3bCT\IrrL$]l2Lh8(@6VPJcEso!m:Qpo&Bbg2h1~> -!BpJTm/X,tmJs6Fm/e1+iIV#_rrK:=kl:[!JcC<$bl7b'!#kFq!S0Da~> -!BU8Qkl@9dmJrg:klM_&iIV#_rrKUMkl:[!JcC<$bl7b'!#b@l!R<`V~> -!B:&NirG%MmJr4)irU(uiIV#_rrKp]kl:[!JcC<$bl7b'!#b@f!Q-jH~> -!BpJTm/X,tmJs6Gm/u\Z!;D'EL&V1S`9@4&lk\-&s+13prr_uq#41sK!S0Da~> -!BU8Qkl@9dmJrg;kl^,R!;D'EL&V1\bNSs-lk\-&s+13prr_uq#3b[C!R<`V~> -!B:&NirG%MmJr4*ire9F!;D'EL&V1fdHLT3lk\-&s+13prr_uq#3,77!Q-jH~> -!BpJTm/X,tmJs6Gm/l,E%Y=Y5rrK%=kPkRF8:gels31KE%KPAWm/bd$J,~> -!BU8Qkl@9dmJrg;klTQ=%Y=Y5rrKCMkPkRF8:gels31KE%KP5SklK'jJ,~> -!B:&NirG%MmJr4*ir[a2%Y=Y5rrKa]kPkRF8:gels31KE%KP&NirR%VJ,~> -!BpJTm/X,tmJs6Gm/kE1,_>uKrrJn=kPkV[.(+X+JcF!p![IcgoBcS04b*~> -!BU8Qkl@9dmJrg;klSj),_>uKrrK:MkPkV[.(+X+JcF!p![IccoB?;$3e.~> -!B:&NirG%MmJr4*ir[$s,_>uKrrKX]kPkV[.(+X+JcF!p![Ic^oA]kh2h1~> -!BpJTm/X,trrB%Xm/jfu2hD!^rrJe=k5PLj./JMpJcF$q!]L+ioBcS04b*~> -!BU8Qkl@9drrAVLklS9n2hD!^rrK1Mk5PLj./JMpJcF$q!]L+foB?;$3e.~> -!B:&NirG%MrrA#;irZIc2hD!^rrKO]k5PLj./JMpJcF$q!]L+aoA]kh2h1~> -!BpJTm/X,trrB%Xm/j9f7tL\nrrJ\=jo5?POb*O`s3CWG7f]R\m/bd$J,~> -!BU8Qkl@9drrAVLklRa_7tL\nrrK(Mjo5?POb*O`s3CWG7f]IYklK'jJ,~> -!B:&NirG%MrrA#;irYtU7tL\nrrKI]jo5?POb*O`s3CWG7f]=UirR%VJ,~> -!BpJTm/X,trrB%Xm/idX -!BU8Qkl@9drrAVLklR:R -!B:&NirG%MrrA#;irYMH -!BpJTm/X,trrB%Xm/i:JAqBu8rrJG=jT#6rJcC<$ci4&Y!06[ -!BU8Qkl@9drrAVLklQbCAqBu8rrJkMjT#6rJcC<$ci4&Y!/pI5!R<`V~> -!B:&NirG%MrrA#;irY#:AqBu8rrK7]jT#6rJcC<$ci4&Y!/U7,!Q-jH~> -!BpJTm/X,trrB%Xm/hb;G(K[HrrJ>=jSo;J(=e!9JcF*s!d4QnoBcS04b*~> -!BU8Qkl@9drrAVLklQ85G(K[HrrJbMjSo;J(=e!9JcF*s!d4QloB?;$3e.~> -!B:&NirG%MrrA#;irXK+G(K[HrrK1]jSo;J(=e!9JcF*s!d4QhoA]kh2h1~> -!BpJTm/X-`rrBjNrrB%Xm/h2+L4TAXrrJ2=j8T.B8:gels3UcIL&c/`m/bd$J,~> -!BU8Qkl@:PrrBjNrrAVLklP]%L4TAXrrJYMj8T.B8:gels3UcIL&c)^klK'jJ,~> -!B:&NirG&9rrBjNrrA#;irWrqL4TAXrrK(]j8T.B8:gels3UcIL&bu[irR%VJ,~> -!BpJTm/X-`rrE,8_Z'V8ip?eT!1&39K`;(3j5^.@qC&b&s+13trrSJd@.WadeieN~> -!BU8Qkl@:PrrE,8_Z'V,iopMO!1&39K`;(@k2ZICqC&b&s+13trrSJd?h -!B:&NirG&9rrE,8_Z'Upio:)F!1&39K`;(Ml/VdFqC&b&s+13trrSJd>k?tV_`*)~> -!BpJTm/X-`rrN07^r-0PWT*:H;ui_Fs+LCQM< -!BU8Qkl@:PrrN07^r-0PS`8l8;ZNVEs+LCQQKdE/!jsHQJcC<$df0BE!)rLR!R<`V~> -!B:&NirG&9rrN07^r-0PN8ik!;#mDCs+LCQU[7"?!jsHQJcC<$df0BE!)`@J!Q-jH~> -!BpJTm/X-`rrW8:'Ys>?rr<0&%PW+lg&D&Oip?e?!3UnQK`;(,lJ_aD8 -!BU8Qkl@:PrrW8:'Ys>?rr<0&%PW+lg&D&CiopM:!3UnQK`;(9m,@sF8 -!B:&NirG&9rrW8:'Ys>?rr<0&%PW+lg&D&2io:)2!3UnQK`;(Gn)=9I8 -!BpJTm/X-`rr`?%^_FTVrs&Q(s7FQQ)W09K!3+uF!^cssJcCE'!J0[trs[Enm/R+\JnopeCP)>k -rrq\7E,U*gJcDhO!k/.soBcS04b*~> -!BU8Qkl@:Prr`?%^_FTVrs&Q(s7FQQ)W09K!1i-6!^ZmrJcCE'!KZa/rs[Enm/R+\JnopeCP)>k -rrq\7E,U*gJcDhO!k/.roB?;$3e.~> -!B:&NirG&9rr`?%^_FTVrs&Q(s7FQQ)W09K!0#pt!^HapJcCE'!M/f?rs[Enm/R+\JnopeCP)>k -rrq\7E,U*gJcDhO!k/.poA]kh2h1~> -!BpJTm/X-`rriE&s1f>ap&>!lr;R@X>lXi[9ah7rkPtS<9ah7rkN`'IWT*:H3<6mHs+LCQIdu@r -s(hf;nl_sj^&k9:o"4o.okJ]^^:q1&CA!/XY5\R>!'0Z -!BU8Qkl@:PrriE&s1f>ap&>!lr;R@X>lXi[9ah7rkPtS<9ah7rkN`'IS`8l82updGs+LCQN:Z!- -s(hf;nl_sj^&k9:o"4o.okJ]^^:q1&CA!/XY5\R>!''T7!R<`V~> -!B:&NirG&9rriE&s1f>ap&>!lr;R@X>lXi[9ah7rkPtS<9ah7rkN`'IN8ik!2ZU[Fs+LCQS+PY= -s(hf;nl_sj^&k9:o"4o.okJ]^^:q1&CA!/XY5\R>!&sN0!Q-jH~> -!BpJTm/X-`rr<&urrR`Op%JCc!;uj/iY_^q/&(`HDcm&>/&(`HDcl<)!3+uF!\j\tJcCE'!IFFs -rrh[(eQT3S^&bHA]`/')=0h_;!jYo!JcDqR!m1KtoBcS04b*~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;uj/iY_^q/&(`HDcm&>/&(`HDcl<)!1i-6!\aVsJcCE'!K$O. -rrh[(eQT3S^&bHA]`/')=0h_;!jYo!JcDqR!m1KsoB?;$3e.~> -!B:&NirG&9rr<&urrR`Op%JCc!;uj/iY_^q/&(`HDcm&>/&(`HDcl<)!0#pt!\XPrJcCE'!LWW> -rrh[(eQT3S^&bHA]`/')=0h_;!jYo!JcDqR!m1KroA]kh2h1~> -!BpJTm/X-`rriE&s1f>ap&>!lr;Qfo"oJ<#ob@<'!VI/lrrB%Xm/e[9dt.OPrrI<=hu -!BU8Qkl@:PrriE&s1f>ap&>!lr;Qfo"oJ<#ob@<'!VI/lrrAVLklN44dt.OPrrIiMhu -!B:&NirG&9rriE&s1f>ap&>!lr;Qfo"oJ<#ob@<'!VI/lrrA#;irUP-dt.OPrrJD]hu -!BpJTm/X-`rr`?%^_FTVrr<&srt43,s8U,&$NL/-s8U,&$NL/-lMgj`ip?dh!8W5+K`;'nrSRVU -oKW)a!G)#@rrI_LpV$[+Jq -!BU8Qkl@:Prr`?%^_FTVrr<&srt43,s8U,&$NL/-s8U,&$NL/-lMgjTiopLd!8W5+K`;()rSRVU -oKW)a!G)#@rrI_LpV$[+Jq -!B:&NirG&9rr`?%^_FTVrr<&srt43,s8U,&$NL/-s8U,&$NL/-lMgjCio:(]!8W5+K`;(9rSRVU -oKW)a!G)#@rrI_LpV$[+Jq -!BpJTm/X-`rrW8:'Ys>?!!)rs&Udm`ruA!,rpg'hruA!,rpg'SrrB%Xm/e((k(3PdrrN(=hZ!VI -T_H/$Tq0"!!U+=l^&`$5JcE"T!p0J!oBcS04b*~> -!BU8Qkl@:PrrW8:'Ys>?!!)rs&Udm`ruA!,rpg'hruA!,rpg'SrrAVLklMY$k(3PdrrN+MhZ!VI -T_H/$Tq0"!!U+=l^&`$5JcE"T!p0J!oB?;$3e.~> -!B:&NirG&9rrW8:'Ys>?!!)rs&Udm`ruA!,rpg'hruA!,rpg'SrrA#;irTtrk(3PdrrN+]hZ!VI -T_H/$Tq0"!!U+=l^&`$5JcE"T!p0IuoA]kh2h1~> -!BpJTm/X-`rrN07_".LA!<<)lc#+BSs8Nb:pt\sNs8Nb:pt\sNlMgj`ip?d\!:#.8L&V2LG2E6! -C\>CACV]rNJ?nj^!O@6,s0;S*l2VLhm/bd$J,~> -!BU8Qkl@:PrrN07_".LA!<<)lc#+BSs8Nb:pt\sNs8Nb:pt\sNlMgjTiopLX!:#.8L&V2ML#2h0 -C\>CACV]rNJ?nj^!O@6,s0;S*l2VLhklK'jJ,~> -!B:&NirG&9rrN07_".LA!<<)lc#+BSs8Nb:pt\sNs8Nb:pt\sNlMgjCio:(R!:#.8L&V2NPhuE? -C\>CACV]rNJ?nj^!O@6,s0;S*l2VLhirR%VJ,~> -!BpJTm/X-`rrE,8nc/Uh"9AoaFm/i)%C.2]+dN-.s0 -!BU8Qkl@:PrrE,8nc/Uh"9AoaFm/i)%C.2]+dN-.s0 -!B:&NirG&9rrE,8nc/Uh"9AoaFm/i)%C.2]+dN-.s0 -!BpJTm/X-`rrBjNrrB%Xm/d^snU^^orrM\=hu<_gOnHEhOh/F0!S)]!^A%^.^&``6JcE%U!q?7" -oBcS04b*~> -!BU8Qkl@:PrrBjNrrAVLklM:onU^^orrM_Mhu<_gOnHEhOh/F0!S)]!^A%^.^&``6JcE%U!q?7" -oB?;$3e.~> -!B:&NirG&9rrBjNrrA#;irTVhnU^^orrMe]hu<_gOnHEhOh/F0!S)]!^A%^.^&``6JcE%U!q?7! -oA]kh2h1~> -!BpJTm/X,trrB%Xm/dUpoR[$rrrMP=hu<_6Z1Yg3Z&-?t!Lon]^&S01^&b%!JcE%U!qZI"oBcS0 -4b*~> -!BU8Qkl@9drrAVLklM1loR[$rrrMVMhu<_6Z1Yg3Z&-?t!Lon]^&S01^&b%!JcE%U!qZI"oB?;$ -3e.~> -!B:&NirG%MrrA#;irTPfoR[$rrrM\]hu<_6Z1Yg3Z&-?t!Lon]^&S01^&b%!JcE%U!qZI"oA]kh -2h1~> -!BpJTm/X,trrB%Xm/dLmpOW?urrMD=hu<[ur4W:6[7h#0rOr8R_Z'UWq7Zh/qRurNJcE%U!qu[" -oBcS04b*~> -!BU8Qkl@9drrAVLklM(ipOW?urrMJMhu<[ur4W:6[7h#0rOr8R_Z'UWq7Zh/qRurNJcE%U!qu[" -oB?;$3e.~> -!B:&NirG%MrrA#;irTGcpOW?urrMS]hu<[ur4W:6[7h#0rOr8R_Z'UWq7Zh/qRurNJcE%U!qu[" -oA]kh2h1~> -!BpJTm/X,trrB%Xm/dFkqLS[#rrM8=hu<[rr4W757YA5K^&W/irr@*8^&S00^&W2)s0DY+q>^]j -m/bd$J,~> -!BU8Qkl@9drrAVLklM"gqLS[#rrMAMhu<[rr4W757YA5K^&W/irr@*8^&S00^&W2)s0DY+q>^]j -klK'jJ,~> -!B:&NirG%MrrA#;irT>`qLS[#rrMG]hu<[rr4W757YA5K^&W/irr@*8^&S00^&W2)s0DY+q>^Zi -irR%VJ,~> -!BpJTm/X,trrB%Xm/d=hrIP!&rrM,=hu<[qr4W13Du.0J:;VJ\:&2L'!;aD0E.S%prrW-!!qYd[ -eieN~> -!BU8Qkl@9drrAVLklLndrIP!&rrM5Mhu<[qr4W13Du.0J:;VJ\:&2L'!;aD0E.S%prrW-!!qYXW -c8pI~> -!B:&NirG%MrrA#;irT8^rIP!&rrM>]hu<[qr4W13Du.0J:;VJ\:&2L'!;aD0E.S%prrW-!!qYFQ -_`*)~> -!BpJTm/X,trrB%Xm/d=hrIP!&rrLu=hu<[qr4W13WqsF0:;VJ\:&2L'!;aD0E.S%prrW-!!qYd[ -eieN~> -!BU8Qkl@9drrAVLklLndrIP!&rrM,Mhu<[qr4W13WqsF0:;VJ\:&2L'!;aD0E.S%prrW-!!qYXW -c8pI~> -!B:&NirG%MrrA#;irT8^rIP!&rrM5]hu<[qr4W13WqsF0:;VJ\:&2L'!;aD0E.S%prrW-!!qYFQ -_`*)~> -!BpJTm/X,trrB%Xm/dFkqLS[#rrLi=hu<[rr4W13]_]>BEPh_UEr!EL!;aD0Ee47rrrW#s"nV*^ -eieN~> -!BU8Qkl@9drrAVLklM"gqLS[#rrLuMhu<[rr4W13]_]>BEPh_UEr!EL!;aD0Ee47rrrW#s"nUsZ -c8pI~> -!B:&NirG%MrrA#;irT>`qLS[#rrM,]hu<[rr4W13]_]>BEPh_UEr!EL!;aD0Ee47rrrW#s"S:XS -_`*)~> -!BpJTm/X,trrB%Xm/dLmpOW?urrL]=hu<[ur4W.2q7ZiN_Z'UWq7Zh/qRurNJcE%U!qu["oBcS0 -4b*~> -!BU8Qkl@9drrAVLklM(ipOW?urrLlMhu<[ur4W.2q7ZiN_Z'UWq7Zh/qRurNJcE%U!qu["oB?;$ -3e.~> -!B:&NirG%MrrA#;irTGcpOW?urrM#]hu<[ur4W.2q7ZiN_Z'UWq7Zh/qRurNJcE%U!qu["oA]kh -2h1~> -!BpJTm/X,tmJs6Gm/dUpoR[$rrrLQ=hu<_6Z2MB:!;aD1Z&-?t!Lon]^&S01^&b%!JcE%U!qZI" -oBcS04b*~> -!BU8Qkl@9dmJrg;klM1loR[$rrrL`Mhu<_6Z2MB:!;aD1Z&-?t!Lon]^&S01^&b%!JcE%U!qZI" -oB?;$3e.~> -!B:&NirG%MmJr4*irTPfoR[$rrrLo]hu<_6Z2MB:!;aD1Z&-?t!Lon]^&S01^&b%!JcE%U!qZI" -oA]kh2h1~> -!BpJTm/X,tmJs6Gm/d^snU^^orrLE=hu<_gOo;uo!;aD1Oh/I1!oS -!BU8Qkl@9dmJrg;klM:onU^^orrLWMhu<_gOo;uo!;aD1Oh/I1!p"u[qRuq0qn<)\eUdb+rrV]j% -J/fbc8pI~> -!B:&NirG%MmJr4*irTVhnU^^orrLf]hu<_gOo;uo!;aD1Oh/I1!p>PiqRuq0qn<)\eUdb+rrV]j% -.iK[_`*)~> -!BpJTm/X,tmJs6Gm/dh!mXbClrrL9=hu<`JD>h0K!;aD1D=Y[G"R`"7a^t=_!!)o1!G27]s0DY+ -mJmgim/bd$J,~> -!BU8Qkl@9dmJrg;klM@qmXbClrrLKMhu<`JD>h0K!;aD1D=Y[G"RrORcXlse!!)o1!G27]s0DY+ -mJmdhklK'jJ,~> -!B:&NirG%MmJr4*irT_kmXbClrrL]]hu<`JD>h0K!;aD1D=Y[G"S0$leReTk!!)o1!G27]s0DY+ -mJmdhirR%VJ,~> -!BpJTm/X,tmJs6Gm/dq$l@JthrrL0=hZ!RkotCEA`r?;=[ -!BU8Qkl@9dmJrg;klMLul@JthrrLBMhZ!RkotCEA`r?;>]o'T$s+%EJ^&bNiJcE"T!pTb!oB?;$ -3e.~> -!B:&NirG%MmJr4*irTkol@JthrrLT]hZ!RkotCEA`r?;>`L4dCs+%EJ^&bNiJcE"T!pTb!oA]kh -2h1~> -!BpJTm/X,tmJs6Gm/e((k(3PdrrL$=hZ!VFTD-&#Tq0:)"T?DkV==Ka!U+=l^&`$5JcE"T!p0J! -oBcS04b*~> -!BU8Qkl@9dmJrg;klMY$k(3PdrrL6MhZ!VFTD-&#Tq0:)"TH]+YO_\m!U+=l^&`$5JcE"T!p0J! -oB?;$3e.~> -!B:&NirG%MmJr4*irTtrk(3PdrrLK]hZ!VFTD-&#Tq0:)"THo?\b#h#!U+=l^&`$5JcE"T!p0Iu -oA]kh2h1~> -!BpJTm/X-`mJsT0mJs6Gm/e@0h1>T[rrKm=hZ!V:7JFLsAGO@I"58Wrj88iWJuA@W!N1O#s02M) -h#JPgm/bd$J,~> -!BU8Qkl@:PmJsT0mJrg;klMq,h1>T[rrL-MhZ!V:7JFLsAGO@I"5]B:k55/ZJuA@W!N1O#s02M) -h#JPgklK'jJ,~> -!B:&NirG&9mJsT0mJr4*irU8%h1>T[rrLB]hZ!V:7JFLsAGO@I"6-,Wl21J]JuA@W!N1O#s02M) -h#JMfirR%VJ,~> -!BpJTm/X-`mK!UNl -?FBUC!juA1JcDtS!n.,toBcS04b*~> -!BU8Qkl@:PmK!iopLl!7QN!L&V1j^#/hllkY;Bq7ZlsSBCj6m&,usq>UNl -?FBUC!juA1JcDtS!n.,soB?;$3e.~> -!B:&NirG&9mK!q>UNl -?FBUC!juA1JcDtS!n.,roA]kh2h1~> -!BpJTm/X-`mK*A%ZfpfW!;c*`!9NVKWT*:H0`]@Is+UIR[^k;qs(hc:>-Rn -!BU8Qkl@:PmK*A%ZfpfW!;c*`!9NVKS`8l80EB7Hs+UIR^VJb,s(hc:>-Rn -!B:&NirG&9mK*A%ZfpfW!;c*`!9NVKN8ik!0*'.Gs+UIRa2m0-Rn -!BpJTm/X-`mK3I)'=7;urr<0&%4uMPrpBadqX+=`jmE,Jip?e-!5X6dL&V1Z^#8npeJ@NOnl_sj -^&k9:o$.1;r4m]]o^r.iokJ]^^:q1&CA!/XY5\R>!'0Z -!BU8Qkl@:PmK3I)'=7;urr<0&%4uMPrpBadqX+=`jmE,>iopM(!5X6dL&V1c`8LY"eJ@NOnl_sj -^&k9:o$.1;rPsi(p%87jokJ]^^:q1&CA!/XY5\R>!''T7!R<`V~> -!B:&NirG&9mK3I)'=7;urr<0&%4uMPrpBadqX+=`jmE,-io:)!!5X6dL&V1lbM`C)eJ@NOnl_sj -^&k9:o$.1;rQ^kGp@S@kokJ]^^:q1&CA!/XY5\R>!&sN0!Q-jH~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;Sp$Me[r9b/?HM:dCZPQ(]e!))qN!S0Da~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[r9b/? -!B:&NirG&9mKEUjs1f;Sp$Me[r9b/? -!jsHQr;QlueC=KBrr_PfUZ$e(PQ(]e!(c_A!Q-jH~> -!BpJTm/X-`mJm7drrR`OjnA*B!;u6sdh_B>!(GSo6Z;D\!(GSo6Z;8X!3+uF!`T/qJcCH(!N4#u -rrW$F[Di.KnY^iTrIP!3rrStr<:fJXeieN~> -!BU8Qkl@:PmJm7drrR`OjnA*B!;u6sdh_B>!(GSo6Z;D\!(GSo6Z;8X!1i-6!`K)pJcCH(!O9r0 -rrW$F[Di.Ko -!B:&NirG&9mJm7drrR`OjnA*B!;u6sdh_B>!(GSo6Z;D\!(GSo6Z;8X!0#pt!`8rnJcCH(!P6h@ -rrW$F[Di.KoX^O?rdk*4rrStr;=ifK_`*)~> -!BpJTm/X-`mKEUjs1f;Sp$Me[r9b0]"n(dYbjOoB)Xd"nbjOoB)X?_jWT*:H?iZLDs+UIRUWh`t -!Kfpmrri20Ha -!BU8Qkl@:PmKEUjs1f;Sp$Me[r9b0]"n(dYbjOoB)Xd"nbjOoB)X?_jS`8l8?N?CCs+UIRXjZ5/ -!Kfpmrri58MS&Y7s,d6^Q2k:`klK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$Me[r9b0]"n(dYbjOoB)Xd"nbjOoB)X?_jN8ik!>QC(@s+UIR\(K^? -!Kfpmrri5@RDeoPs,d6^Q2k1]irR%VJ,~> -!BpJTm/X-`mKFJY;C]s,R*\L&c/`m/bd$J,~> -!BU8Qkl@:PmKNrK08!,_>l!R<`V~> -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=7;u!!)rb&Tq+AmJtK!m`QO:mJtK!m`QO6mJs6Gm/hb;G(K[IrrJV=j8]-q -aSuA!NfMtIs,?sZFo[$`m/bd$J,~> -!BU8Qkl@:PmK3I)'=7;u!!)rb&Tq+AmJtK!m`QO:mJtK!m`QO6mJrg;klQ85G(K[IrrK"Mj8]-q -aSuA%S"&Dgs,?sZFoZs^klK'jJ,~> -!B:&NirG&9mK3I)'=7;u!!)rb&Tq+AmJtK!m`QO:mJtK!m`QO6mJr4*irXK+G(K[IrrKC]j8]-q -aSuA(Vl/X-s,?sZFoZgZirR%VJ,~> -!BpJTm/X-`mK*A%Zh!N#!:K::^Ln>-md:'Fg=\o5md:'Fg=\o5lL"YOip?f-!+pf^L&V1?f]<&6 -eJ@Morrh_^J^"+Es,6mYAcRk_m/bd$J,~> -!BU8Qkl@:PmK*A%Zh!N#!:K::^Ln>-md:'Fg=\o5md:'Fg=\o5lL"YCiopN&!+pf^L&V1KguSJ: -eJ@Morr__jO4&UZMZ3`i!/pI5!R<`V~> -!B:&NirG&9mK*A%Zh!N#!:K::^Ln>-md:'Fg=\o5md:'Fg=\o5lL"Y2io:)r!+pf^L&V1ViT1"? -eJ@Morr_f!S_/MnMZ3`i!/U7,!Q-jH~> -!BpJTm/X-`mK!=jSo6O -Oj!b-pTf.WqLS['rrQ4$SFc+KeieN~> -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs6Gm/j9f7tL\orrJ2=jo5Ci./M3g"T?;fVt#? -!BU8Qkl@:PmJsT0mJrg;klRa_7tL\orrJYMjo5Ci./M3g"THW(Z1EPHL]7EG!2oGQ!R<`V~> -!B:&NirG&9mJsT0mJr4*irYtU7tL\orrK(]jo5Ci./M3g"THi<](CRRL]7EG!2K/G!Q-jH~> -!BpJTm/X,tmJs6Gm/jfu2hD!_rrJ&=k5PMZ.(.>""5&HqjFR>brrP+Z\b#1heieN~> -!BU8Qkl@9dmJrg;klS9n2hD!_rrJMMk5PMZ.(.>""5K39kCNYerrP+Z[e&_ac8pI~> -!B:&NirG%MmJr4*irZIc2hD!_rrJt]k5PMZ.(.>""6$#Wl@JthrrP+ZZ1HuV_`*)~> -!BpJTm/X,tmJs6Gm/kE1,_>uLrrIo=k5PIE8C%5;ka@.RJcCB&![IcgoBcS04b*~> -!BU8Qkl@9dmJrg;klSj),_>uLrrJDMk5PIE8C%5;lD0WrJcCB&![IccoB?;$3e.~> -!B:&NirG%MmJr4*ir[$s,_>uLrrJk]k5PIE8C%5;mBE8>JcCB&![Ic^oA]kh2h1~> -!BpJTm/X,tmJs6Gm/l,E%Y=Y6rrIf=kPkVM(=ge3"SAaB_>JlaK)Yl^!8d>7!S0Da~> -!BU8Qkl@9dmJrg;klTQ=%Y=Y6rrJ8MkPkVM(=ge3"SK0\aSg\iK)Yl^!8@&/!R<`V~> -!B:&NirG%MmJr4*ir[a2%Y=Y6rrJb]kPkVM(=ge3"STQuci&FpK)Yl^!7g]$!Q-jH~> -!BpJTm/X,tmJs6Gm/u\Z!;D'ELAq:)n)s`NCsi7cqn@H\on!-orr_uq#41sK!S0Da~> -!BU8Qkl@9dmJrg;kl^,R!;D'ELAq:7n`TrPCsi7cr5FQ&p4<6prr_uq#3b[C!R<`V~> -!B:&NirG%MmJr4*ire9F!;D'ELAq:EoB6/RCsi7cr6:YFpOW?qrr_uq#3,77!Q-jH~> -!BpJTm/X,tmJs6Fm/e1+iIV#`rrIN=kl1_7(@9KL"4;dll@Jtds8W*#i;aeem/bd$J,~> -!BU8Qkl@9dmJrg:klM_&iIV#`rrJ#Mkl1_7(@9KL"4iU4m",1fs8W*#i;abdklK'jJ,~> -!B:&NirG%MmJr4)irU(uiIV#`rrJP]kl1_7(@9KL"5BHRmt(Lis8W*#i;abdirR%VJ,~> -!BpJTm/X,tmJs6Fm/em?bCT\JrrIB=kl1ZSOjj=4if]5RJcC<$rVlrB!&!j0!S0Da~> -!BU8Qkl@9dmJrg:klNI;bCT\JrrIoMkl1ZSOjj=4jdqjrJcC<$rVlrB!&!j,!R<`V~> -!B:&NirG%MmJr4)irUb3bCT\JrrJG]kl1ZSOjj=4kc1K=JcC<$rVlrB!%d^$!Q-jH~> -!BpJTm/X,tmJs6Fm/fZU["873rrI6=l2Lgm./MKo"SSmFaSg\iJcGZJ!jhqqo'HJ/4b*~> -!BU8Qkl@9dmJrg:klO0O["873rrIcMl2Lgm./MKo"S]<_cMiCpJcGZJ!jhqoo'$2#3e.~> -!B:&NirG%MmJr4)irVLH["873rrJ>]l2Lgm./MKo"Sf^#eGb%!JcGZJ!jhqno&Bbg2h1~> -!BpJTm/X,trrB%Wm/gAiSq6osrrW1>rp'LbqC&c&rri,)H+s6.s+14HrrSbl=Rth[eieN~> -!BU8Qkl@9drrAVKklOlcSq6orrr@W7rrW$F[FY?\q7VU'rIP!"s8)`sScDg^klK'jJ,~> -!B:&NirG%MrrA#:irW0[Sq6orrrA2GrrW$F[FY?\q8J]FrIP!"s8)`sScDa\irR%VJ,~> -!BpJTm/X,trrB%Wm/h,)LOoJ\rrN"=l2LdH8D!kErPa5^mt(Lis7lTqLB)2^m/bd$J,~> -!BU8Qkl@9drrAVKklPW#LOoJ\rrN%Ml2LdH8D!kErQL5(nU^^ks7lTqLB),\klK'jJ,~> -!B:&NirG%MrrA#:irWopLOoJ\rrN%]l2LdH8D!kErR.1Go7?pms7lTqLB)&ZirR%VJ,~> -!BpJTm/X,trrB%Wm/i%CCOuM@rrMk=lMgqP(=h(;"4i6mjFR>^s7ZHoCB0.\m/bd$J,~> -!BU8Qkl@9drrAVKklQP=COuM@rrMnMlMgqP(=h(;"59$6kCNYas7ZHoCB0(ZklK'jJ,~> -!B:&NirG%MrrA#:irXc3COuM@rrMq]lMgqP(=h(;"5fiTl@Jtds7ZHoCB/qVirR%VJ,~> -!BpJTm/X,trrB%Wm/j!^:4`G#rrM_=lMpm#g&D08QA="As+14BrrPpqU@R[PeieN~> -!BU8Qkl@9drrAVKklRIW:4`G#rrMeMlMpm#g&D0;U6O>^s+14BrrPpqTCV4Ic8pI~> -!B:&NirG%MrrA#:irY\M:4`G#rrMh]lMpm#g&D0>XeO['s+14BrrPpqS+>S?_`*)~> -!BpJTm/X,trrB%Wm/jp#14fI\rrMS=li.%:(@9fU"Rr:;`VkAfJcG?A!\sbgo'HJ/4b*~> -!BU8Qkl@9drrAVKklSBq14fI\rrMYMli.%:(@9fU"S/dUbPd"lJcG?A!\sbdo'$2#3e.~> -!B:&NirG%MrrA#:irZRf14fI\rrM_]li.%:(@9fU"S93odf"asJcG?A!\sb_o&Bbg2h1~> -!BpJTm/X-`rrBjNrrB%Wm/kl>'nQC?rrMG=li-uVOkfs>ppPOVpOW?qs7-*j'`ckVm/bd$J,~> -!BU8Qkl@:PrrBjNrrAVKklT<6'nQC?rrMPMli-uVOkfs>q7_^!pjrHrs7-*j'`c_RklK'jJ,~> -!B:&NirG&9rrBjNrrA#:ir[L+'nQC?rrMV]li-uVOkfs>qSnoAq18Qss7-*j'`cPMirR%VJ,~> -!BpJTm/X-`rrE,8_Z'V8iU$a5"p+ILs+p[UkD8L)!jsHQhZ!`Wa+'oRJcC<$nG`Ub!=%l\m/bd$ -J,~> -!BU8Qkl@:PrrE,8_Z'V,iTUI-"Te@Ks+p[UlBU`9!jsHQhZ!`Xc&JmrJcC<$nG`Ub! -!B:&NirG&9rrE,8_Z'UpiSt%!"Te@Ks+p[Um%`qI!jsHQhZ!`Xe!ml -!BpJTm/X-`rrN07^r-0PWSm.F*rt&Hs+p[UiK!=*!r==QhZ!]0M3R%Os+14 -!BU8Qkl@:PrrN07^r-0PS`&`6*WXrGs+p[UjdPT:!r==QhZ!]4QD!Aks+14 -!B:&NirG&9rrN07^r-0PN8W^t*<=iFs+p[UkbmhJ!r==QhZ!]9UTE^2s+14 -!BpJTm/X-`rrW8:'YsA@q>f1J!3+oD!]U1oJcCQ+!Sin+rrJ6Qhu -!BU8Qkl@:PrrW8:'YsA@q>f1J!1i'4!]U1oJcCQ+!T9U;rrJ6Qhu -!B:&NirG&9rrW8:'YsA@q>f1J!0#jr!]C%mJcCQ+!T^ -!BpJTm/X-`rr`?%^_FTTrr<&LrrB%Vm/g>hSUpfsrrL`=mf*@T(=hCD"Rr=;_u5/dJcG'9!hB -!BU8Qkl@:Prr`?%^_FTTrr<&LrrAVJklOlcSUpfsrrLoMmf*@T(=hCD"S/gVb5HnkJcG'9!hB -!B:&NirG&9rr`?%^_FTTrr<&LrrA#9irW-ZSUpfsrrM&]mf*@T(=hCD"SB -!BpJTm/X-`rriE&s1f>aoD]'rs8UnL$jT8bh>[JSi9^Si!.'4rM#RM(SaQOXCuYHtq6t^WpOW?q -s69ObH2r0Zm/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoD]'rs8UnL$jT8bh>[JGi9:;c!.'4rM#RM-W:']cCuYHtqS.p#pjrHr -s69ObH2r*XklK'jJ,~> -!B:&NirG&9rriE&s1f>aoD]'rs8UnL$jT8bh>[J6i8XlZ!.'4rM#RM2ZgRknCuYHtqT##BpjrHr -s69ObH2r!UirR%VJ,~> -!BpJTm/X-`rr<&urrR`Op%87i!<<'L^@q&7=P`uWWSm.FQiL3=s+p[Uc(a\,!nA(QjSoA]aFBuQ -JcC<$kPkTb!1< -!BU8Qkl@:Prr<&urrR`Op%87i!<<'L^@q&7=P`uWS`&`6PlOm:s+p[Ud]N! -!B:&NirG&9rr<&urrR`Op%87i!<<'L^@q&7=P`uWN8W^tOT8I6s+p[UfXL>L!nA(QjSoA^e==#= -JcC<$kPkTb!0Qg3!Q-jH~> -!BpJTm/X-`rriE&s1f>aoD\djqu6]i']&chWSm.F\,\@:s+p[Ua/AD+!D&@6rr^o2PMq)mJcFj3 -!]0nena-A.4b*~> -!BU8Qkl@:PrriE&s1f>aoD\djqu6]i']&chS`&`6[/`%7s+p[Uc*?a;!D&@6rr_&CTB1Y(JcFj3 -!]0nbn`^)"3e.~> -!B:&NirG&9rriE&s1f>aoD\djqu6]i']&chN8W^tYQ-M2s+p[Ue@Y2L!D&@6rr_5UX6>-7JcFj3 -!]0n]n`'Yf2h1~> -!BpJTm/X-`rr`?%^_FTTrs/W)s2R81!!!&UrrB%Vm/kr@&V9t -!BU8Qkl@:Prr`?%^_FTTrs/W)s2R81!!!&UrrAVJklTB8&V9t -!B:&NirG&9rr`?%^_FTTrs/W)s2R81!!!&UrrA#9ir[O,&V9t -!BpJTm/X-`rrW8:'Ys8=#QXo)*2rB+nc7MG!3+lC!Xo(rJcCT,!PPf/rrW$F[HIPmnu-uRr.4m! -s5X+\m/RRam/bd$J,~> -!BU8Qkl@:PrrW8:'Ys8=#QXo)*2rB+nc7MG!1i$3!Xo(rJcCT,!Q;V?rrW$F[HIPmo -!B:&NirG&9rrW8:'Ys8=#QXo)*2rB+nc7MG!0#gq!Xo(rJcCT,!R/IOrrW$F[HIPmot6a?rIP!" -s5X+\m/RRairR%VJ,~> -!BpJTm/X-`rrN07_!q@0!<<'4Yk[$T!8[YTWSd(E/-*hDs,$aV\%(u.!Kfq:rri/.Ha39qs+14/ -rrU=C/F`$-eieN~> -!BU8Qkl@:PrrN07_!q@0!<<'4Yk[$T!8[YTS_rZ5/-*hDs,$aV^VKC>!Kfq:rri27MRrP5s+14/ -rrU=C/F_m)c8pI~> -!B:&NirG&9rrN07_!q@0!<<'4Yk[$T!8[YTN8NXs.fd_Cs,$aVa2mfN!Kfq:rri5@RD\fNs+14/ -rrU=C/+DR"_`*)~> -!BpJTm/X-`rrE,8n,EXns8TAL"[JShsCJ@!2G,FM>mU^^%21)lk\.:rri>CJ>)@]s+14- -rrSqq:[m`PeieN~> -!BU8Qkl@:PrrE,8n,EXns8TAL"[JGhrt2:!2G,FM>mUg`:Ep0lk\.:rri>INi_]#s+14- -rrSqq:%7BJc8pI~> -!B:&NirG&9rrE,8n,EXns8TAL"[J6hr=c2!2G,FM>mUobjtc8lk\.:rri>OS@7s=s+14- -rrSqq9CUsB_`*)~> -!BpJTm/X-`rrBjNrrB%Um/hD1H@c*QrrK4Mj!%Ms+14+rrRKHFn"c!eieN~> -!BU8Qkl@:PrrBjNrrAVIklPo+H@c*QrrKRMo)J`+lMgtBR%EAis+14+rrRKHF7ADpc8pI~> -!B:&NirG&9rrBjNrrA#8irX0"H@c*QrrKm]o)J`+lMgtGV5ia1s+14+rrRKHE:Dlg_`*)~> -!BpJTm/X,trrB%Um/idX;1\b(rrK%=oD\mB(@:Df"6c/,d=M=Ks4dPT;#m-Um/bd$J,~> -!BU8Qkl@9drrAVIklR7Q;1\b(rrKCMoD\mB(@:Df"6u_Geq*jPs4dPT;#m$RklK'jJ,~> -!B:&NirG%MrrA#8irYJG;1\b(rrKa]oD\mB(@:Df"7<=cgO]BUs4dPT;#lmNirR%VJ,~> -!BpJTm/X,trrB%Um/k-)."VDTrrJk=oD\h^OmW/Onu@)Rr.4m!s4[JS-ih-Rm/bd$J,~> -!BU8Qkl@9drrAVIklSU"."VDTrrK7MoD\h^OmW/OoWsIsr.4m!s4[JS-ih$OklK'jJ,~> -!B:&NirG%MrrA#8irZdl."VDTrrKU]oD\h^OmW/Oot?g?r.4m!s4[JS-igjJirR%VJ,~> -!BpJTm/X,trrB%Um/uJQ"SmWKMZ3^Jde*P@[4(n?rri//Ha*3ps+14'rr`'""6T+?!S0Da~> -!BU8Qkl@9drrAVIkl]oI"SmWKMZ3^UfC](E[4(n?rri28MRiJ4s+14'rr`'""6/h7!R<`V~> -!B:&NirG%MrrA#8ire'="SmWKMZ3^`h":UJ[4(n?rri5ARDS`Ms+14'rr`'""5ND+!Q-jH~> -!BpJTm/X,trrB%Tm/eF2e:IXWrrJM=p&>*i.(/RE"THMnT^770JcF@%!n72nn*L/,4b*~> -!BU8Qkl@9drrAVHklN".e:IXWrrJnMp&>*i.(/RE"TH`-X6tQ=JcF@%!n72nn*'ku3e.~> -!B:&NirG%MrrA#7irU>'e:IXWrrK=]p&>*i.(/RE"THrA[IAbIJcF@%!n72mn)FGd2h1~> -!BpJTm/X,trrB%Tm/ffYX+C;.rrJ>=p&>&T8FZW]eVTCIJcC<$ec,]O!(cSG!S0Da~> -!BU8Qkl@9drrAVHklO?TX+C;.rrJbMp&>&T8FZW]g6S;kJcC<$ec,]O!(ZMB!R<`V~> -!B:&NirG%MrrA#7irVXLX+C;.rrK1]p&>&T8FZW]hP7(6JcC<$ec,]O!(HA:!Q-jH~> -!BpJTm/X,trrB%Tm/h2+It@WWrrJ,=pAY3\(=i!U"6#H"eUdaOs3puLIfOEUm/bd$J,~> -!BU8Qkl@9drrAVHklP]%It@WWrrJSMpAY3\(=i!U"6?)>fn'0Ss3puLIfO?SklK'jJ,~> -!B:&NirG%MrrA#7irWrqIt@WWrrK%]pAY3\(=i!U"6ce\hLY]Xs3puLIfO6PirR%VJ,~> -!BpJTm/X,trrB%Tm/idX:P&P'rrIr=pAb//oD\sYT7G#]JcC<$df0AE!1`NF!S0Da~> -!BU8Qkl@9drrAVHklR7Q:P&P'rrJDMpAb//oD\s\WfGC(JcC<$df0AE!1E -!B:&NirG%MrrA#7irYJG:P&P'rrJn]pAb//oD\s^[@PkIJcC<$df0AE!1!$5!Q-jH~> -!BpJTm/X,tmJs6Cm/k?/++aHLrrI` -!BU8Qkl@9dmJrg7klSg(++aHLrrJ5Lp\t -!B:&NirG%MmJr4&ir[!r++aHLrrJ_\p\t -!BpJTm/X,tmJs6Cm/uV[!UbO=MuNg+o(W.b8 -!BU8Qkl@9dmJrg7kl^&S!UbO=MuNg:oCr7c8 -!B:&NirG%MmJr4&ire3G!UbO=MuNgHp%SIe8 -!BpJTm/X,tmJs6Bm/f'D^OcECrrIB=q#:E&./N`="T62fU[ -!BU8Qkl@9dmJrg6klNU?^OcECrrIoMq#:E&./N`="T?N'Xm^i@JcF!p!l"^jmcabt3e.~> -!B:&NirG%MmJr4%irUq8^OcECrrJJ]q#:E&./N`="T?`;\+,%LJcF!p!l"^imc+>c2h1~> -!BpJTm/X,tmJs6Bm/gVpO+I=hrsWtXH#RbK])Ma0nK5^Frri>KKpUkOs+13nrrS5]?gd:^eieN~> -!BU8Qkl@9dmJrg6klP/kO+I=hrsXIfH#RbK])Ma0nK5^Err^i9UZ[4.JcEpn!fm=fmcabt3e.~> -!B:&NirG%MmJr4%irWEbO+I=hrsY%!H#RbK])Ma0nK5^Err_#KY3LTc2h1~> -!BpJTm/X,tmJs6Bm/i7I?\/69rs[%:NP3'?]o?7?s(5m=rr_) -!BU8Qkl@9dmJrg6klQ_B?\/69rs[%=NP3'?]o?7?s(5m=rr_5MRGEGoJcEjl!abqbmcabt3e.~> -!B:&NirG%MmJr4%irXu9?\/69rs[%?NP3'?]o?7?s(5m=rr_A]VW!++JcEjl!abq_mc+>c2h1~> -!BpJTm/X-`mJsT0mJs6Bm/jfu/qO%^rrJ:1q7ZrZE$+WIrrhb^K$=4Fs+13krrOeQ\aJhceieN~> -!BU8Qkl@:PmJsT0mJrg6klS9n/qO%^rrJ:1q7ZrZE$+WIrrhhkOOF,Zs+13krrOeQ[dNA\c8pI~> -!B:&NirG&9mJsT0mJr4%irZIc/qO%^rrJ:1q7ZrZE$+WIrrho#T%O$ns+13krrOeQZ0pWQ_`*)~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK!%$"U"@Is,[0\Nfa"L!JG=frr_\lMU$eQJcEai"7lTuipQ%3 -c8pI~> -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zg7#Z!8?i@WSHkB0*&e=s,d6]_gD'j#^aJhs737<\bLaUJcE^h!l+dhmHjr* -4b*~> -!BU8Qkl@:PmK*A%Zg7#Z!8?i@S_WH2/c`\/Z^JcE^h!l+dgmHFYs -3e.~> -!B:&NirG&9mK*A%Zg7#Z!8?i@N83Fp/HES;s,d6]_gD'j#^aJhs7O*oangSgJcE^h!l+dfmGe5b -2h1~> -!BpJTm/X-`mK3I)'=7?!q>^Qa!8?i@WSHkB@K;::s,m<_qHU`,^';8Un[*YIoR[$ns24j -!BU8Qkl@:PmK3I)'=7?!q>^Qa!8?i@S_WH2?iZ(8s,m<_qHU`,^';8Uo"9gion!-os24j -!B:&NirG&9mK3I)'=7?!q>^Qa!8?i@N83Fp?3#k6s,m<_qHU`,^';8Uo>I$5p4<6ps24j -!BpJTm/X-`mK -eieN~> -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;SoBlSYrU'ghIh`8okMP\-WSHkB`rI03s,m<]B( -!BU8Qkl@:PmKEUjs1f;SoBlSYrU'ghIh`8okMP\-S_WH2_uLj0s,m<]B( -!B:&NirG&9mKEUjs1f;SoBlSYrU'ghIh`8okMP\-N83Fp^Ao=+s,m<]B( -!BpJTm/X-`mJm7drrR`Ojn.s@!<)nWmHjr*4b*~> -!BU8Qkl@:PmJm7drrR`Ojn.s@!<)nSmHFYs3e.~> -!B:&NirG&9mJm7drrR`Ojn.s@!<)kLmGe5b2h1~> -!BpJTm/X-`mKEUjs1f;SoBlSYrU'ghbjOoB)W0r_WS?eA56.m -!BU8Qkl@:PmKEUjs1f;SoBlSYrU'ghbjOoB)W0r_S_NB14ohd;s-*H`W13b"!!)l0!!*#4!Lp$= -s+13drrTA(54%M7c8pI~> -!B:&NirG&9mKEUjs1f;SoBlSYrU'ghbjOoB)W0r_N8*@o492R9s-*H`W13b"!!)l0!!*#4!Lp$= -s+13drrTA(4RD)/_`*)~> -!BpJTm/X-`mKYF!;aD0!<0\5]leo+ -JcERd!ce9am-Oi)4b*~> -!BU8Qkl@:PmKYF!;aD0!<0\5]leo+ -JcERd!ce9_m-+Pr3e.~> -!B:&NirG&9mKYF!;aD0!<0\5]leo+ -JcERd!ce9\m,J,a2h1~> -!BpJTm/X-`mK3I)'=75s!!)uc"TZd7m`QO+mJs6@m/jEj21bdkrr@*;^&S00^&S03^&W2)s+13d -rrP%XY3bNVeieN~> -!BU8Qkl@:PmK3I)'=75s!!)uc"TZd7m`QO+mJrg4klRmc21bdkrr@*;^&S00^&S03^&W2)s+13d -rrP%XX6f'Oc8pI~> -!B:&NirG&9mK3I)'=75s!!)uc"TZd7m`QO+mJr4#irZ+Y21bdkrr@*;^&S00^&S03^&W2)s+13d -rrP%XVsNFE_`*)~> -!BpJTm/X-`mK*A%ZgdA_!<) -!BU8Qkl@:PmK*A%ZgdA_!<) -!B:&NirG&9mK*A%ZgdA_!<) -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs6?m/h#&IY%N`rr@*;^&S00^&S03^&W2)s+13errRWLC?t6feieN~> -!BU8Qkl@:PmJsT0mJrg3klPQ!IY%N`rr@*;^&S00^&S03^&W2)s+13errRWLC$Y!ac8pI~> -!B:&NirG&9mJsT0mJr4"irWfmIY%N`rr@*;^&S00^&S03^&W2)s+13errRWLB'\IX_`*)~> -!BpJTm/X,tmJs6?m/j$_6%T'%rr_&1/%tnq!=5t.^&bDDrk8EHFb0RDs2+d;5ld\Gm/bd$J,~> -!BU8Qkl@9dmJrg3klRLX6%T'%rr_&3/A;"r!=5t.^&bDDrk8EHFb0RDs2+d;5ldSDklK'jJ,~> -!B:&NirG%MmJr4"irY_N6%T'%rr_&4/\V+s!=5t.^&bDDrk8EHFb0RDs2+d;5ldG@irR%VJ,~> -!BpJTm/X,tmJs6?m/u/F$N#DSS,W`i^2kS40NjnD^&]s9r4W2X1&elfS#Co -!BU8Qkl@9dmJrg3kl]W?$N#DSS,W`i^2kS52I)aM^&]s9r4W2X1&elfS#Co -!B:&NirG%MmJr4"irdd3$N#DSS,W`i^2kV74C=TV^&]s9r4W2X1&elfS#Co -!BpJTm/X,tmJs6>m/ed<^OcEVrsJC]<=1N`A$u$mFT&oZO:liA] -!BU8Qkl@9dmJrg2klN=7^OcEVrsJC]<=1QfDnbu.FT&oZO:liA]p3e.~> -!B:&NirG%MmJr4!irUY0^OcEVrsJC]<=1QkHcGjCFT&oZO:liA] -!BpJTm/X,tmJs6>m/h#&I"D -!BU8Qkl@9dmJrg2klPMuI"D -!B:&NirG%MmJr4!irWclI"D -!BpJTm/X,tmJs6>m/j3d3._++rsSG%A/Zk;^?DSDZLe"o!MZ4X^&ak#JcC<$_Z'Zs!3#2M!S0Da~> -!BU8Qkl@9dmJrg2klR^^3._++rsSG%A/Zk;^?W%]]Cl+%!MZ4X^&ak#JcC<$_Z'Zs!2f&G!R<`V~> -!B:&NirG%MmJr4!irYnS3._++rsSG%A/Zk;^?iP#`:j-/!MZ4X^&ak#JcC<$_Z'Zs!28] -!BpJTm/X,tmJs6>m/u>O"Rq!BWW*C^O[]gMOkg!&VgGiDqYpWn>eTgE!khk8JcC<$_uBi."9mfM -m/bd$J,~> -!BU8Qkl@9dmJrg2kl]cG"Rq!BWW*C^O[]gMOkg!)Z&66gqYpWn>eTgE!khk8JcC<$_uBi."9mZI -klK'jJ,~> -!B:&NirG%MmJr4!irdp:"Rq!BWW*C^O[]gMOkg!+]:$Y4qYpWn>eTgE!khk8JcC<$_uBi."9dBB -irR%VJ,~> -!BpJTm/X,tmJs6=m/f6IZ%;qWrsnn>F!qr;YOheolD8j:p@nRf_gD'j!IM_8s+13errTG*39ff2 -eieN~> -!BU8Qkl@9dmJrg1klNgEZ%;qWrsnn>F!qr;YOheom&u;]p\4[g_gD'j!IM_8s+13errTG*39fZ. -c8pI~> -!B:&NirG%MmJr3uirV+=Z%;qWrsnn>F!qr;YOheon%"k,q"Odh_gD'j!IM_8s+13errTG*2X06& -_`*)~> -!BpJTm/X,trrB%Nm/hJ3D1V_krs/7]<=1[:c2R_B"R)V.](bjs!KN99^&a=UJcC<$_>aRR!-d\p -!S0Da~> -!BU8Qkl@9drrAVBklPu-D1V_krs/7]<=1[:c2R_B"RE1J_>*[&!KN99^&a=UJcC<$_>aRR!-RPj -!R<`V~> -!B:&NirG%MrrA#1irX6$D1V_krs/7]<=1[:c2R_B"RW[eanYN.!KN99^&a=UJcC<$_>aRR!-7>a -!Q-jH~> -!BpJTm/X,trrB%Nm/j]r.=qN*rs%DD64-VRo_e^lk+R49q!n@bP'?`9!I^,^s+13crrOVL[d!/[ -eieN~> -!BU8Qkl@9drrAVBklS0k.=qN*rs%DD64-VRo_e^ll)T`[q=4IcP'?`9!I^,^s+13crrOVLZg$]T -c8pI~> -!B:&NirG%MrrA#1irZCa.=qN*rs%DD64-VRo_e^lm'`A+q=4IcP'Hf:!I^,^s+13crrOVLYNb'J -_`*)~> -!BpJTm/X,trrB%Nm/uS`!8`;,\,QZ[JMIsLZ1e(p"Qc5(^A73s$"-ts]tV4oN&o16s+13crr_*X -&*`?G!S0Da~> -!BU8Qkl@9drrAVBkl^#X!8`;,\,QZ[JMIsLZ1e(p"R)hD`VT$&$# -!B:&NirG%MrrA#1ire0K!8`;,\,QZ[JMIsLZ1e(p"REFac2-l.$$][6]tV4oN&o16s+13crr_*X% -c?O2!Q-jH~> -!BpJTm/X,trrB%Mm/g)aP_&kHrs/JO00"R)A*_"mBt$N+uE\p876H*.YOJcC<$_#FJ# -!)VnH!S0Da~> -!BU8Qkl@9drrAVAklOT[P_&kHrs/JO00"R;nEa853'$N,MT\p876H*.YOJcC<$_#FJ# -!)DbB!R<`V~> -!B:&NirG%MrrA#0irVmSP_&kHrs/JO00"RWLacMR#/$N-(d\p876H*.YOJcC<$_#FJ# -!)2V:!Q-jH~> -!BpJTm/X,trrB%Mm/iOQ8qI#Vrs&2%@MLYLdJ3_EfT^p)qs47_om6K7!B[lDs+13crrPdmQ0@T9 -eieN~> -!BU8Qkl@9drrAVAklR%K8qI#Vrs&2%@MLYLdJ3_Egn9\Mqs47_p5/YG!B[lDs+13crrPdmPN_63 -c8pI~> -!B:&NirG%MrrA#0irY8A8qI#Vrs&2%@MLYLdJ3_EiN/Qsr9O@`pR(gW!B[lDs+13crrPdmO6GU) -_`*)~> -!BpJTm/X-`rrBjNrrB%Mm/tuB$2/rM_Z'i -!BU8Qkl@:PrrBjNrrAVAkl]E:$2/rM_Z'i`rrrMVMqYpSJFFjICs2"^; -p'CfMkii,n3e.~> -!B:&NirG&9rrBjNrrA#0irdU/$2/rM_Z'i -!BpJTm/X-`rrE,8_Z'V8f'NMn!4@CX`;^"pFr!H/p@nRjr5aVSeGeY2!U#77rrL4nJcC<$_>aSE -!&<[(!S0Da~> -!BU8Qkl@:PrrE,8_Z'V,f'*5i!4@CX`;^"pFr!H/p@nRir6CLrg#i;8lBV5G!QcpEs+13drrTS. -0^%[$c8pI~> -!B:&NirG&9rrE,8_Z'Upf&Hfb!4@CX`;^"pFr!H/p@nRir7.L?hWFh=m%X@V!QcpEs+13drrTS. -0B_?r_`*)~> -!BpJTm/X-`rrN07^r-0PWRgG^s2+d; -C&iG?m/bd$J,~> -!BU8Qkl@:PrrN07^r-0PS_!$,F9$',s2Y-Cq5H^tG1uZi"T$0!UYt55!T]aHrrW*4jFR>^s2+d; -C&iA=klK'jJ,~> -!B:&NirG&9rrN07^r-0PN7R"jE<'a)s2Y-Cq5H^tG1uZi"T$E7YN4dE!U$EXrrW*4jFR>^s2+d; -C&i8:irR%VJ,~> -!BpJTm/X-`rrW8:'YsA@q>f1J!3+Q:!k\LPJcEjl"kn,96`KnTrri#)I%]Q[rrLi=q>UIsSq6om -s2+d;)Z[P6m/bd$J,~> -!BU8Qkl@:PrrW8:'YsA@q>f1J!1h^*!kA:MJcEjl"kn,96`KnTrri&2MlZ%#rrLuMq>UIsSq6om -s2+d;)Z[G3klK'jJ,~> -!B:&NirG&9rrW8:'YsA@q>f1J!0#Lh!jhqHJcEjl"kn,96`KnTrri);R^MG?rrM,]q>UIsSq6om -s2+d;)Z[8.irR%VJ,~> -!BpJTm/X-`rr`?%^_FTTrr<&LrrB%Lm/uYk!7$/qc2RtCWC%JFg@bIKn?@8G -s+13frr^OH)!gAP!S0Da~> -!BU8Qkl@:Prr`?%^_FTTrr<&LrrAV@kl^)c!7$/qc2RtCWC%JFg@bIKo!sU_mGS!Ff;SNF!Ld>G -s+13frr^OH)!C)H!R<`V~> -!B:&NirG&9rr`?%^_FTTrr<&LrrA#/ire6V!7$/qc2RtCWC%JFg@bIKo>-g+n)43Hgp?hV!Ld>G -s+13frr^OH(ZFQ;!Q-jH~> -!BpJTm/X-`rriE&s1f>aoD]@%s8UnL$jT8bs8UnL$jT8bjo5=[ea3EH!.BFuci41&Fr*NFq=Xaj -l_8U-nD=0Gb,+q6!S/HGs+13frrRTK@HQqXeieN~> -!BU8Qkl@:PrriE&s1f>aoD]@%s8UnL$jT8bs8UnL$jT8bjo5=Oe`d-C!.BFuci41&Fr*NFq=Xaj -mAu&Qo%sBId'*9F!S/HGs+13frrRTK@-6\Sc8pI~> -!B:&NirG&9rriE&s1f>aoD]@%s8UnL$jT8bs8UnL$jT8bjo5=>e`-^:!.BFuci41&Fr*NFq=Xaj -n$eV!oA9KJf"(VV!S/HGs+13frrRTK?0:/J_`*)~> -!BpJTm/X-`rr<&urrR`Op%87q!<<'L^@q&7=TACO^@q&7=QTP_WR^A;XT0o's3goNqNXD`G1uTg -"P]>m](XqZ!Q(u7rrW06jamG_s2=p=/-)g7m/bd$J,~> -!BU8Qkl@:Prr<&urrR`Op%87q!<<'L^@q&7=TACO^@q&7=QTP_S^ls+WW4T$s3goNqNXD`G1uTg -"Q-&7_Y;jc!Q__FrrW06jamG_s2=p=/-)^4klK'jJ,~> -!B:&NirG&9rr<&urrR`Op%87q!<<'L^@q&7=TACO^@q&7=QTP_N7HqiV>r/us3goNqNXD`G1uTg -"QQ_Tb4scl!RJOVrrW06jamG_s2=p=/-)R0irR%VJ,~> -!BpJTm/X-`rriE&s1f>aoD\djqu6]i'`7n2ob?Nf!3+N9"6^9rg4B:Trs&A0>RjAmr:U'nrQU:V -aSX]k!P5]6rrGopJcC<$`W$%o!"eAVm/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoD\djqu6]i'`7n2ob?Nf!1h[)"69smg4B:Trs&A0>RjAmr:U'nrR71" -cMZDr!PuMFrrGopJcC<$`W$%o!"\/QklK'jJ,~> -!B:&NirG&9rriE&s1f>aoD\djqu6]i'`7n2ob?Nf!0#Ig"5aUhg4B:Trs&A0>RjAmr:U'nrRe!A -eGS&#!Qi@VrrGopJcC<$`W$%o!"[uLirR%VJ,~> -!BpJTm/X-`rr`?%^_FTTrt#21s2R81!!!'"s2R81!!!&]rrB%Jm/g;gM1P]ZrrpP`(c[`Eo`#*i -^k%a#rn.5OZ+g#5!K1fGs+13hrrS#W -!BU8Qkl@:Prr`?%^_FTTrt#21s2R81!!!'"s2R81!!!&]rrAV>klOibM1P]ZrrpP`(c[`Eo`#'i -a,cnIfDbl_`VBH6Mf"%FJcE^h!f6nWjllfk3e.~> -!B:&NirG&9rr`?%^_FTTrt#21s2R81!!!'"s2R81!!!&]rrA#-irW*YM1P]ZrrpP`(c[`Eo`#'i -cCM&nfDblgc1q;>Mf"%FJcE^h!f6nTjl6BZ2h1~> -!BpJTm/X-`rrW8:'Ys8=&-2b1*2rB+nc8^i*2rB+nc7eO!3+K8!hoZSJcFL)"l"ST-@sqCrrhhs -H_KHLrrK(=q#:B80nK@Us2G!>2uo]7m/bd$J,~> -!BU8Qkl@:PrrW8:'Ys8=&-2b1*2rB+nc8^i*2rB+nc7eO!1hX(!hTHPJcFL)"l"ST-@sqCrrho) -MQGpirrKFMq#:B80nK@Us2G!>2uoT4klK'jJ,~> -!B:&NirG&9rrW8:'Ys8=&-2b1*2rB+nc8^i*2rB+nc7eO!0#Ff!h00LJcFL)"l"ST-@sqCrrhr3 -RC;>0rrKd]q#:B80nK@Us2G!>2uoH0irR%VJ,~> -!BpJTm/X-`rrN07_!q@8!<<'4Yk[$T!<<'4Yk[$T!9O4\WRU;;jTtqIJcFX-"mV:2(iRRfrrhJ\ -HEQYarrJe=q#:Ek%Io#LJcEdj"60@fjlPk1eieN~> -!BU8Qkl@:PrrN07_!q@8!<<'4Yk[$T!<<'4Yk[$T!9O4\S^cm+i<]MEJcFX-"mV:2(iRRfrrhSi -M7;s&rrK1Mq#:Ek%Io#LJcEdj"60@fiT9;)c8pI~> -!B:&NirG&9rrN07_!q@8!<<'4Yk[$T!<<'4Yk[$T!9O4\N7?kigBdl?JcFX-"mV:2(iRRfrrhYu -R)&7@rrKO]q#:Ek%Io#LJcEdj"60@fgZ@Gr_`*)~> -!BpJTm/X-`rrE,8n,Eq!s8TAL" -!BU8Qkl@:PrrE,8n,Eq!s8TAL" -!B:&NirG&9rrE,8n,Eq!s8TAL"e)LL&!0)R0ir95^RS"&p\,5ar"QHVT -bP9Kb!O(GUrrGBpJcC<$a8Z4#!))D5!Q-jH~> -!BpJTm/X-`rrBjNrrB%Im/is]21begrrr.c-6AKLo)Amjabbhqr6PBDO5K^3s*TCtJcEdj!]9tO -jR!!!4b*~> -!BU8Qkl@:PrrBjNrrAV=klRFV21begrrr.c-6AKLo)Amkc^'jBr6PBDSE'ADs*TCtJcEdj!]9tL -jQQ]j3e.~> -!B:&NirG&9rrBjNrrA#,irYYL21begrrr.c-6AKLo)AmkeYJtjr6PBDW93jSs*TCtJcEdj!]9tH -jPp9Y2h1~> -!BpJTm/X,trrB%Im/uJ[!8E))kPk\RL)EY#nc&d`[XFRrrltHDLZnL4!OtCGs+13krr_!U%Hca= -!S0Da~> -!BU8Qkl@9drrAV=kl]oS!8E))kPk\RL)EY#nc&a`^Po#Ebl7^.lM(;Z\3PWFJcEgk"5) -c8pI~> -!B:&NirG%MrrA#,ire'F!8E))kPk\RL)EY#nc&aba-s6kbl7^ -!BpJTm/X,trrB%Hm/g;gKRs0frrhA''495YrrhDZHE6;QrrIW=p\t -!BU8Qkl@9drrAV -!B:&NirG%MrrA#+irW*YKRs0frrhA''495YrrhVtR(i"2rrJY]p\t -!BpJTm/X,trrB%Hm/j3d/:mierrgeX'6E4)rrrALPC^F@aSu9bq"F^g0unkFJcEjl!\=>Mj6Zlu -4b*~> -!BU8Qkl@9drrAVKj66Ti -3e.~> -!B:&NirG%MrrA#+irYnS/:mierrgeX'6E4)rrrDWX.@K0aSu:+qY'pi0unkFJcEjl!\=>Fj5U0X -2h1~> -!BpJTm/X,trrB%Hm/uPb!7QN!mf*F+9,WKQo)Amf^k.ZorQ"p>rGqo2rrHtpJcC<$b5VRm!#"MU -m/bd$J,~> -!BU8Qkl@9drrAV -!B:&NirG%MrrA#+ire0N!7QN!mf*F+9,WKQo)AmgcCV#hrQ"p=rK?jR!H!aGs+13mrr^^M&`;X/ -!Q-jH~> -!BpJTm/X,trrB%Gm/gSoH%H"crrr@g*[[?Mo)AjYXa6`#`;]l2H1h1 -!BU8Qkl@9drrAV;klP,jH%H"crrr@g*[[?Mo)Aj[[u%6J`;]l3M"UcKWDA*FJcEmm!dOcOiopKh -3e.~> -!B:&NirG%MrrA#*irWBaH%H"crrr@g*[[?Mo)Aj]^mMUp`;]l4QhC@ZWDA*FJcEmm!dOcLio:'W -2h1~> -!BpJTm/X,trrB%Gm/s`r*W:Qho`#*VJ/U\Arpp'lgRNYunA>2+m=P$2!p(-qJcC<$bl7eD*< -!BU8Qkl@9drrAV;kl\3k*W:Qho`#*VJ/U\Arpp'lhkuCFo"tD-mu[5B!p(-qJcC<$bl7eD*< -!B:&NirG%MrrA#*ircFa*W:Qho`#*VJ/U\Arpp'lj0G,lo>:M.nXfFR!p(-qJcC<$bl7eD*<<8% -irR%VJ,~> -!BpJTm/X,trrB%Gm/u\t!4ma]p\tEr^Jtn]eFNVCqo=PL`qmLN!T].1rrF=pJcC<$bl7dV!$LXf -m/bd$J,~> -!BU8Qkl@9drrAV;kl^,l!4ma]p\tEr^Jtn]eFNVCqotFlbko3U!U#gArrF=pJcC<$bl7dV!$LLb -klK'jJ,~> -!B:&NirG%MrrA#*ire9_!4ma]p\tEr^Jtn]eFNVCr7%L:e,-r\!U?KQrrF=pJcC<$bl7dV!$C4[ -irR%VJ,~> -!BpJTm/X,tmJs65m/hM4>ClhMrrqtY.k?nUo)Aj[Z$W"q^&J,fPP"kU?CHHFJcEso!a>YLiU$Zs -4b*~> -!BU8Qkl@9dmJrg)klQ#.>ClhMrrqtY.k?nUo)Aj]\r*EC^&J,jTCi-a?CHHFJcEso!a>YJiTUBg -3e.~> -!B:&NirG%MmJr3mirX9%>ClhMrrqtY.k?nUo)Aj__O7^i^&J,nX7ZDm?CHHFJcEso!a>YGiSssV -2h1~> -!BpJTm/X,tmJs65m/tZ8$Lr]Ir;QrMC(aO]rq$-nrn3fhZ0f1'!RdP2rrJBrJcC<$c2Rn9$3AK3 -m/bd$J,~> -!BU8Qkl@9dmJrg)kl]-1$Lr]Ir;QrMC(aO]rpp'lh5?.An%8T#f;S?A!L75Is+13prr_cu!R0Ne -!R<`V~> -!B:&NirG%MmJr3mird=&$Lr]Ir;QrMC(aO]rpp'lij+uin[nf%gp?YQ!L75Is+13prr_cu!QX0Z -!Q-jH~> -!BpJTm/X,tmJs64m/f?LSUph@rrrCj5T517o)Amg_hX,iq76M+aJ\\1!Q?sJs+13prrS_k45fK, -eieN~> -!BU8Qkl@9dmJrg(klNmGSUph@rrrCj5T517o)Amhb*87;qRQV,cE[$A!Q?sJs+13prrS_k3oK6' -c8pI~> -!B:&NirG%MmJr3lirV4@SUph@rrrCj5T517o)AmhdA!Gdqml_-e@P;P!Q?sJs+13prrS_k3T/ou -_`*)~> -!BpJTm/X,tmJs64m/iLP5(W_;op-jFR/QUU"R<+9TA6mT!PYi2rrVd"r.4m!s3CWG4ogi*m/bd$ -J,~> -!BU8Qkl@9dmJrg(klR"J5(W_;op-jFR/QUU"RNUSWo1>c!QDYBrrVd"r.4m!s3CWG4ogc(klK'j -J,~> -!B:&NirG%MmJr3lirY5@5(W_;op-jFR/QUU"Rj-n[H+dr!R8LRrrVd"r.4m!s3CWG4ogW$irR%V -J,~> -!BpJTm/X,tmJs64m/uJX!SN/+"R:IP:rMr)"od&>IC8ONrrKL=oD\h -!BU8Qkl@9dmJrg(kl]oP!SN/+"R:IP:rMr)"od5OMnSYfrrKdLoD\hi9:9f -3e.~> -!B:&NirG%MmJr3lire'D!SN/+"R:IP:rMr)"odA^R`4m*rrL'\oD\h -!BpJTm/X-`mJsT0mJs63m/gPnFGBeufk1q1g%,.Hp:u?Ab58LE!NO-1rrH,rJcC<$ci4&g!+"LL -!S0Da~> -!BU8Qkl@:PmJsT0mJrg'klP&hFGBeufk1q1g%,.HpW&Dbd/:3L!OU&ArrH,rJcC<$ci4&g!*e@F -!R<`V~> -!B:&NirG&9mJsT0mJr3kirW?`FGBeufk1q1g%,.Hps,M0f)2iR!PQqQrrH,rJcC<$ci4&g!*S4> -!Q-jH~> -!BpJTm/X-`mK!9crrg8:(4YW?rrhJaGba3#rrJe -!BU8Qkl@:PmK!9crrg8:(4YW?rrhSmLTTX@rrK1MoD\iFFb0RD -s3UcJp_hrt0e3e.~> -!B:&NirG&9mK!9crrg8:(4YW?rrh]%QFH%\rrKO\oD\iFFb0RD -s3UcJp_ -!BpJTm/X-`mK*A%Zg7#Z!;c*`!93DHWQjf3/HD]-rrr=f+!d0FoD]!lc'!7TpT=GrQe:p0!OY@I -s+13srrT(u/`,jqeieN~> -!BU8Qkl@:PmK*A%Zg7#Z!;c*`!93DHS^$C#/HD]-rrr=f+!d0FoD]!le"29)poXPsU>>G@!OY@I -s+13srrT(u/`,^mc8pI~> -!B:&NirG&9mK*A%Zg7#Z!;c*`!93DHN6UAa.fcK+rrr=f+!d0FoD]!lfW(4SpoXPsY2T!P!OY@I -s+13srrT(u/)K:e_`*)~> -!BpJTm/X-`mK3I)'=7?!q>^Qa!;c*`!93DHWQjf3N;u8;rr_E+b3& -!BU8Qkl@:PmK3I)'=7?!q>^Qa!;c*`!93DHS^$C#M?#r8rr_E+b3& -!B:&NirG&9mK3I)'=7?!q>^Qa!;c*`!93DHN6UAaLB'W5rr_E+b3& -!BpJTm/X-`mKadJs+13urr^pT$fKn/!S0Da~> -!BU8Qkl@:PmKadJs+13urr^pT$f'V'!R<`V~> -!B:&NirG&9mKadJs+13urr^pT$eO7q!Q-jH~> -!BpJTm/X-`mKEUjs1f;SoBlSYrU(*pIh`8okO.al\uDrrUtZN;:0hN*>$8 -rrq,"(IP1toD]!d^4_Keq54/mH1ph/!CaDIs+13urrR9B?/=lKeieN~> -!BU8Qkl@:PmKEUjs1f;SoBlSYrU(*pIh`8okO.a6&cBrrUtZN;:0hN*>$8 -rrq,"(IP1toD]!e`K?V7qPO8nM"gK?!CaDIs+13urrR9B>M\NEc8pI~> -!B:&NirG&9mKEUjs1f;SoBlSYrU(*pIh`8okO.a$8 -rrq,"(IP1toD]!fbb(f`qkjAoQh^.O!CaDIs+13urrR9B=l&*=_`*)~> -!BpJTm/X-`mJm7drrR`Ojn.s@!<)rpp'iFbPDHJcF4!"8*9,_qj\\eieN~> -!BU8Qkl@:PmJm7drrR`Ojn.s@!<) -!B:&NirG&9mJm7drrR`Ojn.s@!<) -!BpJTm/X-`mKEUjs1f;SoBlSYrU(*pbjOoB)Xd"nbjOoB)X$MgWQXZ12#s)ErrLPZo=b?5.iXlR -oD]!ia,>YdoqMHeoQp'-!MreIs+14!rrSVh2;IR"eieN~> -!BU8Qkl@:PmKEUjs1f;SoBlSYrU(*pbjOoB)Xd"nbjOoB)X$MgS]g7!1]WuDrrLPZo=b?5.iXlR -oD]!jc'X[6p7hQfp5/>>!MreIs+14!rrSVh1u. -!B:&NirG&9mKEUjs1f;SoBlSYrU(*pbjOoB)Xd"nbjOoB)X$MgN6C5_1B -!BpJTm/X-`mKLbO#A#!%k5N!rc96pq?_.rOr?G -8,`&Z"mE(8S_3q7rrMD -!BU8Qkl@:PmK@bNT(q!%k5N!rc96pq?_.rOr?G -8,`&Z"REORW8+$F!UZ'?rrLXsJcC<$e,KJ$!1;R+!R<`V~> -!B:&NirG&9mK/bMrYg!%k5N!rc96pq?_.rOr?G -8,`&Z"RX!lZf.PV!Ul]OrrLXsJcC<$e,KJ$!0l:!!Q-jH~> -!BpJTm/X-`mK3I)'=75s!!)uc%04W?m`QO:mJtK!m`QO3mJs60m/uPh!5>N6!PaQk^'4SO^&Ym] -!;sP3Mneuc"oQ`3I^SX8rrM)=nc&[g$hJrLJcF:#"24aPkhPP+eieN~> -!BU8Qkl@:PmK3I)'=75s!!)uc%04W?m`QO:mJtK!m`QO3mJrg$kl]u`!5>N6!PaQk^'4SO^&Ym] -!;sP3Mneuc"oZuEN5"hQrrM2Lnc&[g$hJrLJcF:#"24aPjP8u#c8pI~> -!B:&NirG&9mK3I)'=75s!!)uc%04W?m`QO:mJtK!m`QO3mJr3hire0T!5>N6!PaQk^'4SO^&Ym] -!;sP3Mneuc"o[/VS&Y#irrM>]nc&[g$hJrLJcF:#"24aOhq[5m_`*)~> -!BpJTm/X-`mK*A%ZgdA_!<)YL!5?/I^:jUF -^&boiq#:Nd[XXOfr1!]ef9l(-!B.oJs+14#rrQ$tGh_TdeieN~> -!BU8Qkl@:PmK*A%ZgdA_!<)YL!5?/I^:jUF -^&boiq#:Nf^Q"o9rL -!B:&NirG&9mK*A%ZgdA_!<)YL!5?/I^:jUF -^&boiq#:Nha.'0arL -!BpJTm/X-`mK!r4WI;^:jT]^&US- -E;mQOE;TY=rn3ihXQZ&O!R.>.rrH\rJcC<$f)Gj0!sdK5m/bd$J,~> -!BU8Qkl@:PmK!r4WI;^:jT]^&US- -E;mQOE;KS;h5H1=lBqSPdB2p -!B:&NirG&9mK!r4WI;^:jT]^&US- -E;mQOE;KS;ij5#em?mnSf=18L!G.OIs+14$rr_-\#1)&a!Q-jH~> -!BpJTm/X-`mJsT0mJs6.m/g;gF0,BAE;[EV!5,oE^:jT6QOa#/!-%o:"no`cMoPOXrrKp -!BU8Qkl@:PmJsT0mJrg"klOibF0,BAE;[EV!5,oE^:jT6QOa#/!-%o:"o$'$R*>AlrrL0LnG`NS -AV'l4s472OEr]4oklK'jJ,~> -!B:&NirG&9mJsT0mJr3firW*YF0,BAE;[EV!5,oE^:jT6QOa#/!-%o:"o-B9V:5:,rrLE\nG`NS -AV'l4s472OEr]+lirR%VJ,~> -!BpJTm/X,tmJs6.m/t6+%e-V#!Hl*S^(_HDN#KFE!10#^^:q:'s8V)VH)'8\rrKO=nG`O.2M(mZ -s4@8Qn.#H9g?epl4b*~> -!BU8Qkl@9dmJrg"kl\^$%e-V#!Hl*S^(_HDN#KFE!10#^^:q:'s8V2cLp#a$rrKgLnG`O.2M(mZ -s4@8Qn.#H6g?AX`3e.~> -!B:&NirG%MmJr3fircmn%e-V#!Hl*S^(_HDN#KFE!10#^^:q:'s8V;oQal1ArrL*\nG`O.2M(mZ -s4@8Qn.#H1g>`4O2h1~> -!BpJTm/X,tmJs6-m/fHOM66dY^Pi')&q1<#JA/_t6O.PD^5KVFNe4t9OoGH^`UNm/o*bJIs+14& -rrS#W52#<(eieN~> -!BU8Qkl@9dmJrg!klO!JM66dY^Pi')&q1<#JA/_t6O.PD^5KYMRZPJ\OoGHgbOGN5o*bJIs+14& -rrS#W4k]'#c8pI~> -!B:&NirG%MmJr3eirV:BM66dY^Pi')&q1<#JA/_t6O.PD^5KYSVk2**OoGHqdd[8 -!BpJTm/X,tmJs6-m/sBh)u6Z:!rbU#o=bC@7sg]Urf@'[T$d$,!@H?Js+14'rr`'9!3=f?!S0Da~> -!BU8Qkl@9dmJrg!kl[ja)u6Z:!rbU#o=bC@8Vs=urf@'[WRgP -!B:&NirG%MmJr3eirc(W)u6Z:!rbU#o=bC@9:3!Arf@'[[+k'L!@H?Js+14'rr`'9!2S<.!Q-jH~> -!BpJTm/X,tmJs6-m/u]*!2$Lq"TGV\(gHUG!`tWRN;ipBh!b7D -!BU8Qkl@9dmJrg!kl^-!!2$Lq"TGV\(gHUG!a2&^N;ipNi:$[H -!B:&NirG%MmJr3eire9i!2$Lq"TGV\(gHUG!a;>gN;ipZjR<*Lm_`*)~> -!BpJTm/X,tmJs6,m/r[T/,lmT#l_%`19gbtBta8T"2/&Rgl)15LZe.+!JPZIs+14(rr`6N!12@* -!S0Da~> -!BU8Qkl@9dmJrfukl[.M/,lmT#l_%`19gbtBta8T"2/)^i/@U9Q0Ri -!B:&NirG%MmJr3dirbDD/,lmT#l_%`19gbtBta8T"2/,ijGX$=U?q@K!JPZIs+14(rr`6N!0Ppo -!Q-jH~> -!BpJTm/X,tmJs6,m/uPk!4906"ob_]19gcWrrUtZN;:0lN)"WEI_,N -!BU8Qkl@9dmJrfukl]ub!4906"ob_]19gcWrrUtZN;:0lN),&UN5GRRrrJ&Mn,EEr7=kJis4[JT -ZiD$*f]`F^3e.~> -!B:&NirG%MmJr3dire0W!4906"ob_]19gcWrrUtZN;:0lN)5MfS'(_irrJS]n,EEr7=kJis4[JT -ZiD$%f]*"M2h1~> -!BpJTm/X,tmJs6+m/hn?41>.l]c8f3rqcX+\8PYnKoL.ZDn,hSN9QOno8inQrcA&,rrM3sJcC<$ -gA_49!/&nj!S0Da~> -!BU8Qkl@9dmJrftklQD941>.l]c8f3rqcX+\8PYpKoL1\Dn,h\RI$Q@ooK+Srdt+;rrM3sJcC<$ -gA_49!.ibd!R<`V~> -!B:&NirG%MmJr3cirXZ041>.l]c8f3rqcX+\8PYpL5g:]Dn,hdVX:Ffp5f4Trf[6KrrM3sJcC<$ -gA_49!.NP[!Q-jH~> -!BpJTm/X,trrB%]!5?#D"7]t9SbN-gi21d`YKH#*rroQep9]A*OT,@SH0tV4(?L,IJcFO* -"24aKin*PueieN~> -!BU8Qkl@9drrAV0kl]cT!5?#D"7]t9SbN-gj04?0ZHD>-rrom&pUuUFOT,@TM!b3C(?L,IJcFO* -"24aJhUgumc8pI~> -!B:&NirG%MrrA"tirdpH!5?#D"7]t9SbN-gkIR"V[`[b1rrp3;pr/fbOT,@UQgOeR(?L,IJcFO* -"24aJf[o-a_`*)~> -!BpJTm/X,trrB%;m/hV76+['u\fYPSq>UWn`J]Gao_AFkrhu+Yf7(@2P5bRJL$em@7C@^HJcFO* -!^Qg5f'NLh4b*~> -!BU8Qkl@9drrAV/klQ,16+['u\fYPSq>UWobF"I3p%SIjZD%0NN5PXXrrMJMmJd2U[=S@/s4mVU -5lc2]klK'jJ,~> -!B:&NirG%MrrA"sirXB(6+['u\fYPSq>UWod\WV]p@nRk]WM(hS'1eorrMS]mJd2U[=S@/s4mVU -5lc)ZirR%VJ,~> -!BpJTm/X,trrB%;m/u5V!5uSN"7]tF](u@0jJmNug&C[E#QCKdr:#l:oTT:UhN7.)!Hj*Is+14+ -rr^1>&)Yt*!S0Da~> -!BU8Qkl@9drrAV/kl]ZN!5uSN"7]tF](u@/kHg#Fh=U^PriN$pnt)ZMPQ([CSaHFXFbPDHJcFR+ -"2k0MgXbTic8pI~> -!B:&NirG%MrrA"sirdjB!5uSN"7]tF](u@/lFiRliq36UrjT-0o;]"fPQ([FWU9]dFbPDHJcFR+ -"2k0Lf%/j^_`*)~> -!BpJTm/X,trrB%:m/hD18AG0-rL+@2nb`=iq8n\K](,=j#Q:3brVa'Qh3@p?e"#h*!MreIs+14+ -rrP^kFk,j[eieN~> -!BU8Qkl@9drrAV.klPo+8AG0-rL+@2nb`=iqTkXl_Xm -!B:&NirG%MrrA"rirX0"8AG0-rL+@2nb`=iqphX9b4P6(#Q;!9rVa[*jcocGh6QGJ!MreIs+14+ -rrP^kE7NtL_`*)~> -!BpJTm/X,trrB%:m/u,P!6W1Y"RCd_5/$jn"mE(8RaqB)rs8OjV#LDFID,WGrrL3=mJd4;-@u2J -s5*bXaoDk*ea3Cg4b*~> -!BU8Qkl@9drrAV.kl]TI!6W1Y"RCd_5/$jn"mWRSVV;%;rs/ItY5\IUN5V"]!R@t;rrLXsJcC<$ -hZ!]#!"@Q2klK'jJ,~> -!B:&NirG%MrrA"rirda=!6W1Y"RCd_5/$jn"ms*nZ/5KJrs/J+\GlNcR`gur!S"^JrrLXsJcC<$ -hZ!]#!"@?,irR%VJ,~> -!BpJTm/X,trrB%9m/h/*9uR&7cXIJqci!eHqot=S[dNG\#l9dcrr;GLRIljG!PPf+rrW*+o7?pm -s53hX9`T(\m/bd$J,~> -!BU8Qkl@9drrAV-klPZ$9uR&7cXIJqci!eHr6q9t^@:Ff#lC:$s8VV[V=g2T!Q;V;rrW*+o7?pm -s53hX9`T"ZklK'jJ,~> -!B:&NirG%MrrA"qirWrq9uR&7cXIJqci!eHr7J'>`q&Ep#lC^:s8V\jYkFF`!R&CJrrW*+o7?pm -s53hX9`SqXirR%VJ,~> -!BpJTm/X,trrB%9m/u&I!6E4\"M$]:L?nd;"m`IAQdP`ors8C\YlFb%Z@Uo#rrK@ -!BU8Qkl@9drrAV-kl]NB!6E4\"M$]:L?nd;"n'!\U=T;+rs8Fj\c;^.]8ts=rrK[Lm/I)E`I\&? -s5 -!B:&NirG%MrrA"qird[6!6E4\"M$]:L?nd;"n9EuY1rpjQ6_k#qWrrL!]m/I)E`I\&? -s5 -!BpJTm/X,trrB%8m/h8-7*5H3i)(5XrVca"rR$sZZ0UHM!qqP\rr3)NID5]LrrJn=m/I)tQ%Asd -s5 -!BU8Qkl@9drrAV,klPc'7*5H3i)(5XrVca"rRRa%]'\PX!r&(rrr3&RN5_4b!Njc9rrH\rJcC<$ -i;WjH!,p?N!R<`V~> -!B:&NirG%MrrA"pirX#s7*5H3i)(5XrVca"rS+KD_scXc!r/V3rr3&VR`q3"!Op\IrrH\rJcC<$ -i;WjH!,U-E!Q-jH~> -!BpJTm/X,trrB%8m/u/T!5HbX"SdWaK_YNG"n&gKPKj!_rrVeI^&J$6muX"1S,WMTf^/V=O)9IJ -JcF^/"2=gHh:(`leieN~> -!BU8Qkl@9drrAV,kl]WM!5HbX"SdWaK_YNG"n96cT@3YqrrVkY`;]c=nXZQNS,WM`h -!B:&NirG%MrrA"pirdd@!5HbX"SdWaK_YNG"nK[&X4[@.rrVngbPqMDnu8ngS,WMkiU$RFO)9IJ -JcF^/"2=gGeC3FY_`*)~> -!BpJTm/X,trrB%7m/hV743dd-\J8!"rr30#eXLofkhQ1>n:\^Yrr`2(J`!!t!K#t*rrKAtJcC<$ -iVrs@!.3/]!S0Da~> -!BU8Qkl@9drrAV+klQ,143dd-\J8!"rr30$g89_9lJ2C@nrh,orr`52O5lc1!LE!:rrKAtJcC<$ -iVrs@!.!#W!R<`V~> -!B:&NirG%MrrA"oirXB(43dd-\J8!"rr30$hQ`H`mG.^CoUsS1rr`5:S`ZIB!MeuIrrKAtJcC<$ -iVrs@!-ZfN!Q-jH~> -!BpJTm/X,trrB%7m/u>]!4L8S"5m#k\c2U4o"'C4anaWi!q(W\rVluMID>cQrrIN=m/I+8.=qMM -s5O%\[K%!#dd7(d4b*~> -!BU8Qkl@9drrAV+kl]cU!4L8S"5m#k\c2U4o>6QXchc>p!q;8rrVlrPMoM=f!K-O9rrLRtJcC<$ -ir9+h!#+5;klK'jJ,~> -!B:&NirG%MrrA"oirdpI!4L8S"5m#k\c2U4ou`i'ebe&"!qMo4rVlrURa%E'!L`WIrrLRtJcC<$ -ir9+h!#+#5irR%VJ,~> -!BpJTm/X,trrB%6m/hn?1Xc:2pk0?7q#C?IT6dKtec,^9J'S#m"7D5?oq; -!BU8Qkl@9drrAV*klQD91Xc:2pk0?7q#CBNWen(Fec,^ -!B:&NirG%MrrA"nirXZ01Xc:2pk0?7q#CBR[$\Mkec,^>SD!l@"7iCrpRqNfrKI6IrrVj#rdk*# -s5X+\1B;mOirR%VJ,~> -!BpJTm/X,trrB%6m/uMe!2nlW"6[hLkP"o_SJ>#[s7F'[MT,A=rrVA4e,B:Kr31e2U&P/_Id6q6 -)!$8JJcFg2"/c,7kL&YteieN~> -!BU8Qkl@9drrAV*kl]r]!2nlW"6[hLkP"o_SJ>#[s7OBpQco3QrrVJEf_tgPrOJ$NU&P/aN9^ED -)!$8JJcFg2"/c,7j3d)lc8pI~> -!B:&NirG%MrrA"nire*P!2nlW"6[hLkP"o_SJ>#[s7X^1Usf(errVPVh>R?UrP>)gU&P/cS*L"S -)!$8JJcFg2"/c,6h9k6`_`*)~> -!BpJTm/X,trrB%5m/rIN,5D$7"nUEg^tJ>Ors@_(>'Pj`GZo%Gr;R-'YVI3/s4sGqV;TZ!!on^] -r;QlJIDGiWrrM/ -!BU8Qkl@9drrAV)klZtH,5D$7"nUEg^tJ>Ors@_(>'Pj`GZo%Gr;R-'YVI3/s5C,:YN*q.!p5Er -r;QiNMoVRl!Tod7rrG0tJcC<$jo5GX+om\NklK'jJ,~> -!B:&NirG%MrrA"mirb2>,5D$7"nUEg^tJ>Ors@_(>'Pj`GZo%Gr;R-'YVI3/s5gbW\`_9 -!BpJTm/X,trrB%5m/uW&!07'Y%K=+[C34u_Ndu4dDSQ2Irr`"*CV9PY&%l[fp](90*&=bl_hj,` -p<3I;hgF5Wrr_YLSG&cY!S3Y'rrHAtJcC<$jo5FC!%I3[m/bd$J,~> -!BU8Qkl@9drrAV)kl^&r!07'Y%K=+[C34u_Ndu4dDSQ2Irr`"*CV9PY&%l[fp](90*&=bmad/13 -pWNR -!B:&NirG%MrrA"mire3e!07'Y%K=+[C34u_Ndu4dDSQ2Irr`"*CV9PY&%l[fp](90*&=bnd%d;[ -pri[=k*kB/rr_eiZM:6q!T1*GrrHAtJcC<$jo5FC!%6^OirR%VJ,~> -!BpJTm/X,trrB%4m0KWj'CPn(E/D:(^&u'*E3K3>!q]U%pV%$B=RgkPS`-JlU"fRfrrUo%iV`]X -r3(_2V>gS -!BU8Qkl@9drrAV(km4-d'CPn(E/D:(^&u'*E3K3>!q]U%pV%!A=RgkPS`R,4XP_(u!oAjrr;Qls -\<,dJrrLHMlMpm5JcC<$k5PPO'*+oUklK'jJ,~> -!B:&NirG%MrrA"lis;=Y'CPn(E/D:(^&u'*E3K3>!q]U%pV%!A=RgkPS`m\P[c>F.!of[4r;Qls -_4KkerrLZ]lMpm5JcC<$k5PPO'*+`PirR%VJ,~> -!BpJTm/X,trrB%3m0#QPEE%ng^&j6mp\t0n>I=(;#IH!L\;Z'Ro>LY1epZZWrr^\t_>^A4!P>]' -rrJctJcC<$k5PL*!'SWp!S0Da~> -!BU8Qkl@9drrAV'kla*KEE%ng^&j6mp\t0n>I=(;#IH!M^6t,%oYgb2g5G1lrrUf1aJSt<_n>:7 -!ME\Ks+144rrR -!B:&NirG%MrrA"kirhFDEE%ng^&j6mp\t0n>I=(;#IH!N`MT9Nou-k3hjWm.rrUuEc_g^CbJ`]G -!ME\Ks+144rrR -!BpJTm/X,trrB%3m/t*)+0k@M"gM5,s.tnS^&S02^''HsS_*kWrrUStl21J_m>db2W;cn$_!:q# -_E*8JJcFp5"5jFd^Wu3IeieN~> -!BU8Qkl@9drrAV'kl\O!+0k@M"gM5,s.tnS^&S02^''I&W8.BgrrUc2lhg\an!^3LW;cn-a6N[* -_E*8JJcFp5"5jFd]?]XAc8pI~> -!B:&NirG%MrrA"kircal+0k@M"gM5,s.tnS^&S02^''I0Zf(i!rrUrEmed"dnY`_gW;cn6cKbE1 -_E*8JJcFp5"5jFd\'F"7_`*)~> -!BpJTm/X,trrB%2m/]/Eq7Zh/rOr73rOrB5F8oqQ^AIs3^&\&E!+ikD!m?,\qu6crXb5T3rrJh= -lMgnG(kM^ -!BU8Qkl@9drrAV&klE`Aq7Zh/rOr73rOrB5F8oqQ^AIs3^&\&E!+ikD!n!%rqu6cr[uodOrrK1L -lMgnG(kM^ -!B:&NirG%MrrA"jirM':q7Zh/rOr73rOrB5F8oqQ^AIs3^&\&E!+ikD!nX"4qu6cr^n9hirrKR] -lMgnG(kM^ -!BpJTm/X,trrB%3m/b@PrkA:1!PSR4^&S02^&i1aA,O%@!<0\4!;jJ2EULO?!l]c[qYpZII)>l` -rrJA=lMgqb$MAuMJcG!7"2b-EeBR@]eieN~> -!BU8Qkl@9drrAV'klJeGrkA:1!PSR4^&S02^&i1aA,O%@!<0\4!;jJ2EULO?!mHbrqYpWMMo_pu -!MJ?8rrW0,on!-os69Oc_Z:"hc058S3e.~> -!B:&NirG%MrrA"kirQuHrrW0,on!-os69Oc_Z:"cc/SiB2h1~> -!BpJTm/X,trrB%3m/_@@r4W.2rk8@4rOr73r4W6D6%]$K!!*#4!rtaqE;mQPLX!L3!l0Q]qYpZb -Nh,mFrrIlG^4b*~> -!BU8Qkl@9drrAV'klGk:r4W.2rk8@4rOr73r4W6D6%]$K!!*#4!rtaqE;mQPLX!L3!lpMsqYpZd -R],t^rrJAMl2Lc5dt.OMs6BUdrA"@pbio/R3e.~> -!B:&NirG%MrrA"kirO/2r4W.2rk8@4rOr73r4W6D6%]$K!!*#4!rtaqE;mQPLX!L3!m[M4qYpZf -VmH0"rrJh\l2Lc5dt.OMs6BUdrA"@mbi8`A2h1~> -!BpJTm/X,trrB%3m/Ur!^&S04^'F^-#]RKX70ml3^&_\ur4W.2rk8I7Q^83]^&a#6]DhrDL\LZF -"8o?Si3!"[H1gG%!DB\Ks+148rr\\i*9>?2!S0Da~> -!BU8Qkl@9drrAV'kl>Jq^&S04^'F^-#]RKX70ml3^&_\ur4W.2rk8I7Q^83]^&a#6]DhrKPkb+T -"8oZjj/r=^M"^*5!DB\Ks+148rr\\i)rSs)!R<`V~> -!B:&NirG%MrrA"kirEci^&S04^'F^-#]RKX70ml3^&_\ur4W.2rk8I7Q^83]^&a#6]DhrSUA4Tb -"8p!,kH4abQhTbE!DB\Ks+148rr\\i)qrNr!Q-jH~> -!BpJTm/X,trrB%3m/Ur!^&S04^'F_*QO^_0Q^83]^&`"hr4W.2rk8I7Q^83]^&`6A])Mi=N;!)I -"4M\5rilD(qfMi%rrHttJcC<$li.(U(''oKm/bd$J,~> -!BU8Qkl@9drrAV'kl>Jq^&S04^'F_*QO^_0Q^83]^&`"hr4W.2rk8I7Q^83]^&`6A])MiERJ6OW -!n`FNYQ"Y$KBW=9D3'8JJcG'9"7I!*S'1$sc8pI~> -!B:&NirG%MrrA"kirEci^&S04^'F_*QO^_0Q^83]^&`"hr4W.2rk8I7Q^83]^&`6A])MiMVYKue -!o9 -!BpJTm/X,trrB%3m/_@@r4W.2rk8gAQ^82r!10#^^:q1+B`,RE!<0\7!(.!0rk8AG\GlW6OSJYO -"7D8>oWeDsmXXO$!K_,Ks+149rrR0?3m-gjeieN~> -!BU8Qkl@9drrAV'klGk:r4W.2rk8gAQ^82r!10#^^:q1+B`,RE!<0\7!(.!0rk8AG\GlW?SGE!\ -"7VhXp9FVun;c`4!K_,Ks+149rrR0?3QgRec8pI~> -!B:&NirG%MrrA"kirO/2r4W.2rk8gAQ^82r!10#^^:q1+B`,RE!<0\7!(.!0rk8AG\GlWHWVZGj -"7iFrpTa`!nt#"E!K_,Ks+149rrR0?36L7^_`*)~> -!BpJTm/X,trrB%3m/b@Rr4W.2rk8jB6O.PD!(.!0^:njEV3:Ga!Ks:hrr`8#Pkk.T"8oETh6R%] -iK!.%!OYILs+14:rr^jS"2W.I!S0Da~> -!BU8Qkl@9drrAV'klJeJr4W.2rk8jB6O.PD!(.!0^:njEV3:Ga!Ks:grrTO"qYC-nrOS'KZMssd -RcsbP[7GlKJcG*:"4mSV^<5[@c8pI~> -!B:&NirG%MrrA"kirQu>r4W.2rk8jB6O.PD!(.!0^:njEV3:Ga!Ks:grrTm8qt^6orPP2fZMssh -Vs+-][7GlKJcG*:"4mSV\]Wq5_`*)~> -!BpJTm/X,trrB%2m/_('n%Jt)F8u8E[.V-6Zs1!="9,-`qtU0nepY10[/U0URcsbPfcu(JJcG-; -"9(Lb@EIm;eieN~> -!BU8Qkl@9drrAV&klGS!n%Jt)F8u8E[.V-6Zs1!="9,L!r:p9og5NrK[/U0ZVWe$\fcu(JJcG-; -"9(Lb@*.X6c8pI~> -!B:&NirG%MrrA"jirNknn%Jt)F8u8E[.V-6Zs1!="9,j6r:p9ohjVaf[/U0_Z0;2gfcu(JJcG-; -"9(Lb?-2+-_`*)~> -!BpJTm/X,trrB%2m/lKNZ15O5Z!$r's7BF#pV$^9=S0$$"9"p`r:p9omuj(0[Jp9JW9F6_q?ZqK -s+14 -!BU8Qkl@9drrAV&klTpFZ15O5Z!$r's7BF#pV$^9=S0$$"9,@!rV6BpnXcNJ[Jp9PZKV;iq?ZqK -s+14 -!B:&NirG%MrrA"jir\+9Z15O5Z!$r's7BF#pV$^9=S0$$"9,a7rV6Bpo;]"e[Jp9V]BK7rq?ZqK -s+14 -!BpJTm/X,trrB%1m/lEGN:XabN)]QMrr`"*CV9PY"2&DZpTsl%r1'DXq#:Hp[=I#?rrK[ -!BU8Qkl@9drrAV%klTj>N:XabN)]QMrr`"*CV9PY"2&DZpTsl%rMQ[pq#:Hp]oM!YrrKsMkPkQ- -fn'0Ss6osim1fVdaQW`N3e.~> -!B:&NirG%MrrA"iir\"1N:XabN)]QMrr`"*CV9PY"2&DZpTsl%rN`j1q#:Hp`LPtsrrL6]kPkQ- -fn'0Ss6osim1fV`aQ!<=2h1~> -!BpJTm/X,trrB%/m/s,#M7r`!"20P1YPJ2)j&\ -!BU8Qkl@9drrAV#kl[VqM7r`!"20P1YPJ2)j&\ -!B:&NirG%MrrA"girbfeM7r`!"20P1YPJ2)j&\ -!BpJTm/X,trrB%.m1&Ee>rPr7M2m+.C2Ufcq#:Qg+2m?b_<7p""8\7]rqHEpnW]=0\c2]%d-(E0 -Clj5JJcG6>"3(BHaN*ZKeieN~> -!BU8Qkl@9drrAV"kmcjZ>W5i6M2m+.C2Ufcq#:Qg+2m?b_<7p"!rJXspAY6dTV:tfrrK+LkPkR! -OFdF_s7$$j`W?=_a6 -!B:&NirG%MrrA"fisk"J>;o`5M2m+.C2Ufcq#:Qg+2m?b_<7p"!rK(3pAY6eXKD0+rrKL]kPkR! -OFdF_s7$$j`W?=Za5[3<2h1~> -!BpJTm/X,trrB%+m07S2.*'-VoDJUpp"RR/g\(UHAnIq?!r.kZpAY6n\:<2CrrJ;=kPkRECk;V; -s7-*kr\"7l`pEfX4b*~> -!BU8Qkl@9drrAUtklu),.*'-VoDJUpp"RR/g\(UHAnIq?!r8CrpAY6o^l@0]rrJ_MkPkRECk;V; -s7-*kr\"7j`p!NL3e.~> -!B:&NirG%MrrA"cis'?#.*'-VoDJUpp"RR/g\(UHAnIq?!rAn3pAY6oaID2#rrK.]kPkRECk;V; -s7-*kr\"7g`o@*;2h1~> -!BpJTm/X,trrB%+m/uMl!/CFO%-;DBEdrq+Ir]:.*V$!+!r%\[p&>-KJ$o6frrIf -!BU8Qkl@9drrAUtkl]rc!/CFO%-;DBEdrq+Ir]:.*V$!+!r/4rp&>-ONP>D)rrJ;MkPkRj8:gel -s7-*kL&`4R`p!NL3e.~> -!B:&NirG%MrrA"cire*V!/CFO%-;DBEdrq+Ir]:.*V$!+!r/\3p&>-SSAtQ@rrJe]kPkRj8:gel -s7-*kL&`1K`o@*;2h1~> -!BpJTm/X,trrB%*m0Trs#h]1WhG%^qq7ZsBB2.6ZrrVhM\b5t)o9Y[1^&J+WpZMPWfcu(JJcG<@ -"5!k[YJol0eieN~> -!BU8Qkl@9drrAUskm=El#h]1WhG%^qq7ZsBB2.6ZrrVn\_"I^0oV8&L^&J+fpuhYXfcu(JJcG<@ -"5!k[XMsE)c8pI~> -!B:&NirG%MrrA"bisDXb#h]1WhG%^qq7ZsBB2.6ZrrVqjaS#Q8orb@e^&J,!q<.bYfcu(JJcG<@ -"5!k[W5[ct_`*)~> -!BpJTm/X,trrB%)m06eq4T2Hu]_/u?]P=XHrrVeH^@hL.rk!X2^]+?1G38f+q?ZqKs+14Brr`3^ -!*mJ0!S0Da~> -!BU8Qkl@9drrAUrklt;k4T2Hu]_/u?]P=XHrrVhW`V'65rkaWK^]+?2L$&C:q?ZqKs+14Brr`3^ -!*[>*!R<`V~> -!B:&NirG%MrrA"ais&Tc4T2Hu]_/u?]P=XHrrVkebk:u -!BpJTm/X,trrB%)m0)8_!+UZO^&`kYV>gVdKZ!H^"5SL5rPAL7m"4@!!@-9Ks+14Brr\Gb(uE3u -!S0Da~> -!BU8Qkl@9drrAUrklf]W!+UZO^&`kYV>gVfP0*@r"6#9PrPAL7mZ?Q1!@-9Ks+14Brr\Gb(tupm -!R<`V~> -!B:&NirG%MrrA"airmmK!+UZO^&`kYV>gVgT[ -!BpJTm/X,trrB%(m/j$c=ms'*E7C`a!q(Z\o`#$cR??sTrrM#=jo5?P[=S@/s7QBoi!f[]_sIKU -4b*~> -!BU8Qkl@9drrAUqklRL\=ms'*E7C`a!q;;ro`#$dV4I.nrrM,Ljo5?P[=S@/s7QBoi!f[Z_s%3I -3e.~> -!B:&NirG%MrrA"`irY_R=ms'*E7C`a!qMr4o`#$eYc@92rrM8]jo5?P[=S@/s7QBoi!f[V_rCd8 -2h1~> -!BpJTm/X,trrB%'m/o>]^:sLFp:^R@Br(b1l[[4Orr`87IFQ17!R[J"rrHqtJcC<$p&>(_!)UQ" -!S0Da~> -!BU8Qkl@9drrAUpklWoY^:sLFp:^R@Br(b1m>fWdrrU/tfu*gjeu7^1!GmjKs+14CrrPXi:;Z5r -c8pI~> -!B:&NirG%MrrA"_ir_6R^:sLFp:^R@Br(b1n!r&%rrUE5hS]?ogU$#A!GmjKs+14CrrPXi9Z#fj -_`*)~> -!BpJTm/X,trrB%(m/c3Xr4W.2o=b6?o;)Bfk^UtNrr_/1Yl)K?!Q;#"rrJ9tJcC<$pAY5`!"mr% -m/bd$J,~> -!BU8Qkl@9drrAUqklKXPr4W.2o=b6?o;)Bfl]'Hdrr_;C\bsGH!R%k3rrJ9tJcC<$pAY5`!"dc! -klK'jJ,~> -!B:&NirG%MrrA"`irReCr4W.2o=b6?o;)Bfm@2l%rr_DT_>M:P!R\UBrrJ9tJcC<$pAY5`!"dPp -irR%VJ,~> -!BpJTm/X,trrB%(m/b%Ur4W.2rk8U;"])kH!!Q0t^&`o6U]1DWIF[rh"8/1FmDf/,[^bH!!P(RK -s+14Err_*e!1^mm!S0Da~> -!BU8Qkl@9drrAUqklJMNr4W.2rk8U;"])kH!!Q0t^&`o6U]1DZN7mh&"88X^n&GA.^VJt2!P(RK -s+14Err_*e!1C[f!R<`V~> -!B:&NirG%MrrA"`irQ]Cr4W.2rk8U;"])kH!!Q0t^&`o6U]1D]RbmZ9"8B+"n](S0a2mBB!P(RK -s+14Err_*e!0tC\!Q-jH~> -!BpJTm/X,trrB%(m/b%Ur4WO=^:mk[!!9l?$31/,^&`o6UAk;RI+\&j"9-)ad`;@gWl=*"!T4rK -s+14Frr`3`!)^Q!!S0Da~> -!BU8Qkl@9drrAUqklJMNr4WO=^:mk[!!9l?$31/,^&`o6UAk;VMr!t(!lp5Na8Z1HbN8a)i#I=J -JcGNF"8tC`:Vc2qc8pI~> -!B:&NirG%MrrA"`irQ]Cr4WO=^:mk[!!9l?$31/,^&`o6UAk;YRc3i;!m[7ia8Z1RdcLK0i#I=J -JcGNF"8tC`9u,ci_`*)~> -!BpJTm/X,trrB%(m/c3[r4WO=^:jcrQ5'?SC6O!!rWMu -JcC<$q>UPU!#OD*m/bd$J,~> -!BU8Qkl@9drrAUqklKXRr4WO=^:jcUPU!#O;'klK'jJ,~> -!B:&NirG%MrrA"`irReFr4WO=^:jc"6cAqrQ5'?ZJ=RA!rWMu -JcC<$q>UPU!#F"uirR%VJ,~> -!BpJTm/X,trrB%'m/^b2rOrdB^:m>G9E;e%"\\p1^:e6QrrUo%i:?mMr1Ao3b5VL%iT1">0[,+J -JcGTH"4[YXW5%^#eieN~> -!BU8Qkl@9drrAUpklG;-rOrdB^:m>G9E;e%"\\p1^:e6QrrV&8j7<3PrMl7Nb5VL2jQ-=A0[,+J -JcGTH"4[YXVSD?rc8pI~> -!B:&NirG%MrrA"_irNT%rOrdB^:m>G9E;e%"\\p1^:e6QrrV2KkOSWTrO&Kib5VL?kiDaE0[,+J -JcGTH"4[YXTtfUg_`*)~> -!BpJTm/X,trrB%'m/b4Fn%JgAe=Q[AepZTKrrU5gaNOSaJ+2P!!EZ+Ks+14Irr`*G!+*D,!S0Da~> -!BU8Qkl@9drrAUpklJ\?n%JgAe=Q[AgPb4arrUH&cHH4gNUl01!EZ+Ks+14Irr`*G!*m8&!R<`V~> -!B:&NirG%MrrA"_irQl3n%JgAe=Q[AhjWg"rrU] -!BpJTm/X,trrB%&m/`H'n\,$VT:Go_dXL?Krr_JBT_?\2!r[3=jT#7/JcC<$qu6bC!$1(5m/bd$ -J,~> -!BU8Qkl@9drrAUoklHs!n\,$VT:Go_f8Starr_SRX7sp>!rdiNjT#7/JcC<$qu6bC!$'k0klK'j -J,~> -!B:&NirG%MrrA"^irP3mn\,$VT:Go_gmd[#rr_Ya[J8&I!reD^jT#7/JcC<$qu6bC!#sS)irR%V -J,~> -!BpJTm/X,trrB%%m/j%r]_/u?]P=X=rrUStmd^;ZqlPJ-ci4%8IcLG/V,r6JJcGZJ"2+a=[_;&/ -eieN~> -!BU8Qkl@9drrAUnklRPl]_/u?]P=X=rrUc2nF?M\qmMUGci4%:N8sp=V,r6JJcGZJ"2+a=Zb>T( -c8pI~> -!B:&NirG%MrrA"]irYca]_/u?]P=X=rrUrEo'u_^r4eicci4%;S)aMLV,r6JJcGZJ"2+a=YJ&rs -_`*)~> -!BpJTm/X,trrB%$m/t[,BY+#R"1i2@hO+ -!BU8Qkl@9drrAUmkl].$BY+#R"1i2@hO+mV`rr^r5_Z%s_!Tfd1rrL=tJcC<$rVluc)ZY&o -klK'jJ,~> -!B:&NirG%MrrA"\ird=mBY+#R"1i2@hO+ -!BpJTm/X,trrB%"m0hHX5?Do_Ndl(aDrm8a!m-#ZnG`U[Pa([crrLQ -!BU8Qkl@9drrAUkkmPmO5?Do_Ndl(aDrm8a!mcqqnG`U]TV1l(rrL`Lj8T2P$iPYVJcGcM"TD0s -39Im -!B:&NirG%MrrA"ZisX(B5$)f^Ndl(aDrm8a!nEk2nG`U^XK;$ArrLo\j8T2P$iPYVJcGcM"TD0s -2W27.!Q-jH~> -!BpJTm/X,trrB$um0:rK!-Q-4oo]7Ua+ -!BU8Qkl@9drrAUikm#ED!-Q-4oo]7Uc&_>_rr`8;N7cVZ!Qqe/rrF+tJcC<$s8N1d!"dGfklK'j -J,~> -!B:&NirG%MrrA"Xis*R7!-Q-4oo]7Ue"-$urr`8CRbcHm!R\X@rrF+tJcC<$s8N1d!"[/_irR%V -J,~> -!BpJTm/X,trrB$tm/rs\#1nn8!lT]Yn,ELIJunk"rrKO=ir9$H\Ujd3rriAR"ot:,m/bd$J,~> -!BU8Qkl@9drrAUhkl[IV#1nn8!m?\pn,ELMOLG&:rrKgLir9$H\Ujd3rriAR"ot4*klK'jJ,~> -!B:&NirG%MrrA"Wirb\L#1nn8!n!V1n,ELPT"k3RrrL*\ir9$H\Ujd3rriAR"ot(&irR%VJ,~> -!BpJTm/X,trrB$sm/pVo.J&T"!lBWZn,EL`To/'brrK" -!BU8Qkl@9drrAUgklY,i.J&T"!m-Spn,ELaX-`/'rrK@Lir9$oP(EXarr_jA!*d"u!R<`V~> -!B:&NirG%MrrA"Vir`Ea.J&T"!mmS1n,ELb[\W -!BpJTm/X,trrB$sm/uE!!*YB^!l0NZmf*@0I)jk=!LMEtrrJ"!JcC<$"'P[SjLOXYeieN~> -!BU8Qkl@9drrAUgkl]im!*YB^!lpJpmf*@6MTscQ!MeH0rrJ"!JcC<$"'P[Ri48(Qc8pI~> -!B:&NirG%MrrA"Vire!`!*YB^!m[J1mf*@ -!BpJTm/X,trrB$rm/tH=!1/]F!ksEZmf*CRMkB^rrrIr -!BU8Qkl@9drrAUfkl\p6!1/]F!l^Apmf*CTR&]o6rrJDLir9%O?\/6/rr\Sf%*#gA!R<`V~> -!B:&NirG%MrrA"Uird(*!1/]F!mIA1mf*CWV7$*OrrJn\ir9%O?\/6/rr\Sf%)BC5!Q-jH~> -!BpJTm/X,trrB$qm/rjY#gJA/!kX6Ymf*CdXb,E`rrIE -!BU8Qkl@9drrAUekl[=R#gJA/!lL8pmf*Ce[ufV'rrIrLir9%d8qI"prr^LO!1C=\!R<`V~> -!B:&NirG%MrrA"TirbPH#gJA/!m@>2mf*Ce^n0ZArrJJ\ir9%d8qI"prr^LO!0t%R!Q-jH~> -!BpJTm/X,trrB$pm/pet,O^Wl!kF-YmJd:=IC]=4rrMq -!BU8Qkl@9drrAUdklY;n,O^Wl!l:/pmJd:AN5>MLrrMtLiVrr#21bd\rr_^7!+<8"!R<`V~> -!B:&NirG%MrrA"Sir`Tf,O^Wl!m.52mJd:FR`YQbrrN"]iVrr#21bd\rr_^7!+*+o!Q-jH~> -!BpJTm/X,trrB$pm0)T+!(m0LrrTWdo^2Y\n -!BU8Qkl@9drrAUdklg$"!(m0LrrTs%p?hk^ntD`HhZ!WDOl?<@h]IFLL&V;T8H:F([cmh<3e.~> -!B:&NirG%MrrA"Sirn0j!(m0LrrU6:p[.t_oW>4dhZ!WFTAfeNh]IFLL&V;T8H:C![c7D+2h1~> -!BpJTm/X,trrB$om/toM!/-=2!jmmYmJd:f]7&/crrLo -!BU8Qkl@9drrAUckl]?E!/-=2!kjupmJd:f_i37*rrM&LiVrrN$A&52rr[oS&(7lM!R<`V~> -!B:&NirG%MrrA"RirdO9!/-=2!l_#1mJd:fbF78ErrM2\iVrrN$A&52rr[oS%aDEA!Q-jH~> -!BpJTm/X,trrB$nm/s -!BU8Qkl@9drrAUbkl[gb!k"!e!kOfom/I1JOgY)FrrLTLi;WfboR[$trr]Y1!iNEi!R<`V~> -!B:&NirG%MrrA"Qirc"W!k"!e!lLo1m/I1NT>(6^rrLc\i;WfboR[$trr]Y1!i!'^!Q-jH~> -!BpJTm/X,trrB$mm/q_9&DE*C!j@XYm/I1^To&=!rrKm=i;Wg"hgtf`rr^sd!.;-?!S0Da~> -!BU8Qkl@9drrAUaklZ53&DE*C!k=`pm/I1_XHrJ;rrL-Mi;Wg"hgtf`rr^sd!.)!9!R<`V~> -!B:&NirG%MrrA"PiraK*&DE*C!l:f0m/I1_[\WQTrrLB\i;Wg"hgtf`rr^sd!-bd0!Q-jH~> -!BpJTm/X,trrB$mm0)cM!%[W"rr`8&OSJ/A"3Z#+roF([YJ9#q!B%uMs,$aYnga]7m'H'[eieN~> -!BU8Qkl@9drrAUaklg3D!%[W!rrTX!q>p(rrKXLi;Wg8aasJKrrhmC!)2U_klK'jJ,~> -!B:&NirG%MrrA"Pirn@6!%[W!rrTs7q -!BpJTm/X,trrB$lm0)Ds!)rlVrr`8$P5+AC"72,9nE'ZNU!DTr!D9_Ms,-gZr_ieFij.qPeieN~> -!BU8Qkl@9drrAU`klfij!)rlUrrTR!q -!B:&NirG%MrrA"Oirn!]!)rlUrrTp7qWn.`n>WS_jo5@ig#2l29!j0LMZ3hY;ZJ/sZJtu'2h1~> -!BpJTm/X,trrB$km/tNB!.p10"9,9`q -!BU8Qkl@9drrAU_kl\s:!.p./!jeNqli.(d_2Hn,rrJ_Li;WgbT7R$"rr[iQ&'(s>!R<`V~> -!B:&NirG%MrrA"Nird..!.p./!kbT1li.(dadUuHrrK.\i;WgbT7R$"rr[iQ%`5L2!Q-jH~> -!BpJTm/X,trrB$jm/sNm!NM+Y"9,3`q -!BU8Qkl@9drrAU^kl\!f!NM+Y"9,R!qWe(_jHHhDkl1[Gmbn*GFGbYLMuNmZ! -!B:&NirG%MrrA"Mirc4\!NM+Y"9,m6qs+1`kb,N_kl1[UnDO -!BpJTm/X,trrB$im/r"A$-J5,"9,-]r9F:aq5K&)lMgqbFo(%r!K2#Ms,?s[apA'$YO)AA4b*~> -!BU8Qkl@9drrAU]klZM;$-J5,"9,KsrTaCbqQl=Dl2Ld;qr%JTMfXILN;j"&#loR\klK'jJ,~> -!B:&NirG%MrrA"Lirac2$-J5,"9,j4rTaCbqRiH_l2LdKqr%JTMfXILN;j"&#loIYirR%VJ,~> -!BpJTm/X,trrB$hm/pYp)<6YT!i;1Xl2Lk7I^]1@rrMb;hu<_O>_2p7rr_:!!+)hq!S0Da~> -!BU8Qkl@9drrAU\klY2k)<6YT!jA_2p7rr_:!!*ubl!R<`V~> -!B:&NirG%MrrA"Kir`Hb)<6YT!kGH0l2LkAS&YEnrrMk\hu<_O>_2p7rr_:!!*ZPc!Q-jH~> -!BpJTm/X,trrB$hm0)W9!&=,)rr`7uPPFDB"7hk7lg=]Qk)&!q!P(XMs,R*^oJ$>/kcX:ReieN~> -!BU8Qkl@9drrAU\klg'0!&=,)rr`8*TD@aO"7r@QmHsoSl'C6,!P(XMs,R*^oJ$>.jK@_Jc8pI~> -!B:&NirG%MrrA"Kirn7$!&=,)rr`83X82#["8/mln*U,Ul_EA;!P(XMs,R*^oJ$>-hlbu?_`*)~> -!BpJTm/X,trrB$gm/u,g!)\[S"9,<^pZVVZ]6M6mn,EF?Qf%fDcn9nLNrK2Y!$g:$m/bd$J,~> -!BU8Qkl@9drrAU[kl]T`!)\[S"9,Wtpuq_Z_hZA%rrLlLhu<`(/qO%_rrZ*u,MB3`!R<`V~> -!B:&NirG%MrrA"JirdaS!)\[S"9-!5q<7h[bEpTDrrM&\hu<`(/qO%_rrZ*u,1E[S!Q-jH~> -!BpJTm/X,trrB$fm/tKB!-!kr"9,B_p?;MYlB%>#nG`O1VVhCSk8/^LO8f<$!"d;Sm/bd$J,~> -!BU8Qkl@9drrAUZkl\p9!-!hq!k+Tmkl1bPS>,QCrrLELhu<`?(P2UIrr[3?&&t^8!R<`V~> -!B:&NirG%MrrA"Iird+.!-!hq!l(]/kl1bRWNGa\rrLZ]hu<`?(P2UIrr[3?&&G@-!Q-jH~> -!BpJTm/X,trrB$em/sg%!03!;"9,K_p#uDXrO[I"nc&X$[GUucr!!"Ls,m<`NW99mX6fr=4b*~> -!BU8Qkl@9drrAUYkl\9r!02s:!k=Zlkl1ba_i)n3rrKsLhu -!B:&NirG%MrrA"HircLh!02s:!l:c.kl1babF7#PrrL6\hu -!BpJTm/X,trrB$dm/rgY!ih.X!j[aVkPkYGMOjA1rrK. -!BU8Qkl@9drrAUXkl[:R!ih.X!kXimkPkYJQ`0QJrrKLLhZ!TmkCNYrrr]8&!LTnO!R<`V~> -!B:&NirG%MrrA"GirbMH!ih.X!lLl.kPkYMUpKacrrKg\hZ!TmkCNYrrr]8&!L0VE!Q-jH~> -!BpJTm/X,trrB$cm/qn>#f;K!!k!mVkPkY]Z[U?prrJY=hZ!U/d"24\rr^+D!.h-:!S0Da~> -!BU8Qkl@9drrAUWklZD8#f;K!!kjolkPkY^]StJ7rrK%MhZ!U/d"24\rr^+D!.V!4!R<`V~> -!B:&NirG%MrrA"FiraW.#f;K!!l^u.kPkY^`1,QSrrKF]hZ!U/d"24\rr^+D!.1^*!Q-jH~> -!BpJTm/X,trrB$bm/pl!'%Vs?!k=$Vk5PP@Kr+P;rrJ);hZ!UF\UjdFrr^gb!+`%q!S0Da~> -!BU8Qkl@9drrAUVklYAp'%Vs?!l1)mk5PPCP-=ZSrrJPLhZ!UF\UjdFrr^gb!+Mnk!R<`V~> -!B:&NirG%MrrA"Eir`Zh'%Vs?!m%,/k5PPGTXjjkrrK"\hZ!UF\UjdFrr^gb!+;bc!Q-jH~> -!BpJTm/X,trrB$bm0)]I!$:NbrrTfenE0`Qq5\epp\t8CnD=0G>bZfLQ2_!S*WSjuW9jW:4b*~> -!BU8Qkl@9drrAUVklg-@!$:NbrrU'$o&frSqR).9p\t8Qo%sBI>bZfLQ2_!S*WSgpW9F?.3e.~> -!B:&NirG%MrrA"Eirn:2!$:NbrrU?:oB-&TqS&bZfLQ2_!S*WSahW8dor2h1~> -!BpJTm/X,trrB$am0)T,!%R>mrrTofn)aQOgO-!pqYpWqF8atq!HX0Ms-EZflm_uikGR\JeieN~> -!BU8Qkl@9drrAUUklg'$!%R>mrrU0&n`BcQhhnc8qYpWqKDsa-!HX0Ms-EZflm_uhjJV5Cc8pI~> -!B:&NirG%MrrA"Dirn3l!%R>mrrUE;o&]lRj-dRUqYpWqPQ'G=!HX0Ms-EZflm_ughP]B7_`*)~> -!BpJTm/X,trrB$`m0)5p!&jD*rrTugmH+?MpSi_rqu6]cJ)1,*N,jLLQi@3Z2?55_VX4E84b*~> -!BU8Qkl@9drrAUTklf]h!&jD*rrU6'n)aQOpp6%:qu6]eNSXU8N,jLLQi@3Z2?52[VWe-,3e.~> -!B:&NirG%MrrA"Cirmj[!&jD*rrUK -!BpJTm/X,trrB$_m0(u_!(6O=rrU)ilfA'Jfn-0srVloWNns^;Pt0!ZJcD2="Sb=a+P*CV!S0Da~> -!BU8Qkl@9drrAUSklfEW!(6O=rrU?)mc=BMh2nr;rVloZRbduGPt0!ZJcD2="Sb=a+O[+N!R<`V~> -!B:&NirG%MrrA"BirmUK!(6O=rrUT>nDsTOih!dWrVlo^Vqq@TPt0!ZJcD2="Sb=a+3gYB!Q-jH~> -!BpJTm/X,trrB$^m0(]O!)`WNrrU2klK%sIpo8nsrr3#ISDaDR\8P_pK84\YDn(AuT)Srj;#hHY -V!S364b*~> -!BU8Qkl@9drrAURklf-G!)`WNrrUE*mH"9Lq6Z4;rr3#NVr7R]\8P_pK84\YDn(AuT)Srj;#hHU -V!.p*3e.~> -!B:&NirG%MrrA"Airm=;!)`WNrrUZ?n)XKNq7W?Wrr3#SZJb`h\8P_pK84\YDn(AuT)Srj;#hEO -UuMKn2h1~> -!BpJTm/X,trrB$]m/t9=!+(N^!m,uWj8T>;JuAAC_lMes!o-t24]/T`5+#!"m/Em/bd$ -J,~> -!BU8Qkl@9drrAUQkl\a5!+(N^!mcnmj8T>?OKnT\b-g7/!o-t24]/T`5+#!"cuAklK'j -J,~> -!B:&NirG%MrrA"@ircq*!+(N^!nEh/j8T>CT"=^sdD"W?!o-t24]/T`5+#!"cf -!BpJTm/X,trrB$\m0's,!,DLjrrUAjki;[HpoAqr[(>;t!lerfpV$^BBuY`(U]1JrC&eUOU?r!4 -4b*~> -!BU8Qkl@9drrAUPkleF%!,DLjrrUT)lf8!Kq6c7;]Y`_/!lerfpV$^BBuY`(U]1JrC&eULU?M^( -3e.~> -!B:&NirG%MrrA"?irlUo!,DLjrrUf>mGn3MqS&NX`6.-?!lerfpV$^BBuY`(U]1JrC&eUGU>l9l -2h1~> -!BpJTm/X,trrB$[m/s^#!,m_o!n2PTir9,=JqLr$rrLPZo=b6:dXhForr[0>#IL2l!S0Da~> -!BU8Qkl@9drrAUOkl\0q!,m_o!n`Flir9,AOHIZGrrLPZo=b6:dXhForr[0>#I0ue!R<`V~> -!B:&NirG%MrrA">irc@f!,m_o!o9=.ir9,DStFBjrrLPZo=b6:dXhForr[0>#HXWZ!Q-jH~> -!BpJTm/X,trrB$Zm/s?n!-O.u!nMbQir9,VJU5W(rrW1$]^ri=]N>)`s/,euFT;ZHT^;d24b*~> -!BU8Qkl@9drrAUNkl[gf!-O.u!nrRhir9,WO,;?JrrW1$]^ri=]N>)`s/,euFT;WDT]lL&3e.~> -!B:&NirG%MrrA"=irc%\!-O.u!oKI+ir9,WSXA*mrrW1$]^ri=]N>)`s/,euFT;W@T]6'j2h1~> -!BpJTm/X,trrB$Ym/s3i!.0S&!o8:Qir9.:cAA"Ykl1[uMuC?l!5?/Iq7Zlf^OcE_rr[TJ#,\$[ -!S0Da~> -!BU8Qkl@9drrAUMkl[[b!.0S&!o]'hir9.He<[!%kl1[uMuC?l!5?/Iq7Zlf^OcE_rr[TJ#,@gT -!R<`V~> -!B:&NirG%MrrA" -!BpJTm/X,trrB$Xm/s$b!.p(-!p"jRj8T=.pADIK`;]'%!Hl*S^&nAL^&[uC!PNW,s/>r"JcGqI -T'ZR04b*~> -!BU8Qkl@9drrAULkl[L[!.p(-!p>Qij8T==p\hpcbPpf,!Hl*S^&nAL^&[uC!PNW,s/>r"JcGqF -T'6:$3e.~> -!B:&NirG%MrrA";irb_Q!.p(-!pZ9+j8T=Mq#/=&dJiG2!Hl*S^&nAL^&[uC!PNW,s/>r"JcGqB -T&Tjh2h1~> -!BpJTm/X,trrB$Wm/rj\!.p(-!pP9Pjo5AVG5hLDk`M%mli-s(r4W75^:jUH^&e9<:]A'.E.S%g -rr[iQ".YqL!S0Da~> -!BU8Qkl@9drrAUKkl[@V!.p(-!pkuhjo5AWL&V)Sl^aX6li-s(r4W75^:jUH^&e9<:]A'.E.S%g -rr[iQ".GeF!R<`V~> -!B:&NirG%MrrA":irbSL!.p(-!q)W*jo5AXQ2^dcmAd2Sli-s(r4W75^:jUH^&e9<:]A'.E.S%g -rr[iQ".#M -!BpJTm/X,trrB$Vm/s'a!.0S&!q1lPk5PJHL&M#Srkj,qr9aLaE;[EV!5,oE^:mk[!! -!BU8Qkl@9drrAUJkl[OZ!.0S&!qDJhk5PJJPPtLarlU,8rU'UbE;[EV!5,oE^:mk[!! -!B:&NirG%MrrA"9irbbP!.0S&!qN&*k5PJMT`+lnrm@.VrU'UbE;[EV!5,oE^:mk[!! -!BpJTm/X,trrB$Um/rj]!-O.u"7qJRroj@_g6MR8"7DS7mI'uTFhRaf%2k+`)SWohR$7Tb^:eZ? -s/Z/%FT;Q7S*^7-4b*~> -!BU8Qkl@9drrAUIkl[@W!-O.u"8&"iroj@_hP'iH"7W.Rn*^2VFhRaf%2k+`)SWohR$7Tb^:eZ? -s/Z/%FT;Q5S*9t!3e.~> -!B:&NirG%MrrA"8irbSM!-O.u"8/P+roj@_iiW+X"7i[lna?DXFhRaf%2k+`)SWohR$7Tb^:eZ? -s/Z/%FT;Q1S)XOe2h1~> -!BpJTm/X,trrB$Tm0'*e!,qjorr`"ZV#BQX!Qq56rr^PnX7l&_!PaQk^(#N$%Y2:-:'F;k^:oN? -JcDkP"TE<>#,.LQ!S0Da~> -!BU8Qkl@9drrAUHkldR^!,qjorr`%gY5RVb!RS"Frr^`-[.j(i!PaQk^(#N$%Y2:-:'F;k^:oN? -JcDkP"TE<>#+h:J!R<`V~> -!B:&NirG%MrrA"7irkeS!,qjorr`%s\Gb[l!S4dVrr^rB^A.3t!PaQk^(#N$%Y2:-:'F;k^:oN? -JcDkP"TE<>"e(n?!Q-jH~> -!BpJTm/X,trrB$Sm0'9k!,DLjrr`+dSGVUO!P>`6rr_tqJ'IN`!rc96o=b:==8mdNY5\Y(C&eL9 -RI(%+4b*~> -!BU8Qkl@9drrAUGkldac!,DLjrr`.pVu,cZ!Q)MErr`#&NRI@s!rc96o=b:==8mdNY5\Y(C&eI5 -RHXat3e.~> -!B:&NirG%MrrA"6irktY!,DLjrr`/'ZMa"f!Qr@Urr`&1S(R92!rc96o=b:==8mdNY5\Y(C&eI1 -RH"=c2h1~> -!BpJTm/X,trrB$Rm0'Ep!*9#Trr`1nPkaSE!NX-3rr_2;QKn&@!RbKL^&^orJcDnQ"T2:##ca9Z -!S0Da~> -!BU8Qkl@9drrAUFkldmi!*9#Trr`5$T_[pR!OU#Crr_>LU@%OO!RbKL^&^orJcDnQ"T2:##cF'S -!R<`V~> -!B:&NirG%MrrA"5irl+_!*9#Trr`5/XSM2^!PZtTrr_G\Xmbi\!RbKL^&^orJcDnQ"T2:##c!dI -!Q-jH~> -!BpJTm/X,trrB$Qm0'Wr!)`NKrr`8$NqD]eTmG"heW5'NsUMs0;S, -pe_"oYa=_XeieN~> -!BU8Qkl@9drrAUEkle*k!)`NKrr`8-ReH+J!N4TCrri;@MST/^rr^.P>eTmG"heW5'NsUMs0;S, -pe_"oXdA8Qc8pI~> -!B:&NirG%MrrA"4irl:`!)`NKrr`87Vt]QX!OCPSrri;GRE5eTmG"heW5'NsUMs0;S, -pe_"oW0cNF_`*)~> -!BpJTm/X,trrB$Pm0's3!(6=6rrTQ_nEp5VN8jI/"7Mh8g@kOMT+Jcm>)`9k#`MsBs7U^RR/MU9 -[/U:"6N@_/QL+_(4b*~> -!BU8Qkl@9drrAUDkleF+!(6=6rrTiuo'QGXRH=&?"7`@ShY-sQT+Jcm>)`9k#`MsBs7U^RR/MU9 -[/U:"6N@\+QK\Fq3e.~> -!B:&NirG%MrrA"3irlUu!(6=6rrU-5oBlPYVWdXO"7rmmiqEBUT+Jcm>)`9k#`MsBs7U^RR/MU9 -[/U:"6N@\&QK&"`2h1~> -!BpJTm/X,trrB$Om0(?E!&j2#rrTodlgFcRIIcq."4`!uo(r@grd5sBrr3;7DdRaBMg/TI\GZ@/ -dlKP=JcE1Y"RJ#H(rV^,!S0Da~> -!BU8Qkl@9drrAUCkleg>!&j2#rrU0$mI'uTMt?K="5/d=o_SRird5sBrr3;7DdRaBMg/TI\GZ@/ -dlKP=JcE1Y"RJ#H(r;L%!R<`V~> -!B:&NirG%MrrA"2irm"2!&j2#rrUH:n*^2VRe?4N"5]WZp%n[jrd5sBrr3;7DdRaBMg/TI\GZ@/ -dlKP=JcE1Y"RJ#H(VH$n!Q-jH~> -!BpJTm/X,trrB$Nm0(]W!%R&drrU5fkOAKQr,hr-rri/'I)Z*`rr`!t46l\B"6O0&k4nrZrKn@G -p4<7SrrhC4!$KROm/bd$J,~> -!BU8Qkl@9drrAUBklf-O!%R&drrUH&lL=fTr.G" -!B:&NirG%MrrA"1irm=C!%R&drrU] -!BpJTm/X,trrB$Mm0(ui!$0mPrrUYrg@>1Dm=F[)$0IA3jo>AG4';7Ps8RTArr_Fe'Yf5!]Di#i -*<7S?PO/D%4b*~> -!BU8Qkl@9drrAUAklfE`!$0mPrrUi0hXUUHmuQl9$0e"Nkl:\J4';7Ps8RTArr_Fe'Yf5!]Di#i -*<7P:PN`+n3e.~> -!B:&NirG%MrrA"0irmUT!$0mPrrV#Dipm$LnX](I$1+[kli7"M4';7Ps8RTArr_Fe'Yf5!]Di#i -*<7M4PN)\]2h1~> -!BpJTm/X,trrB$Lm0)H)!#!/*rrUu(c1:l8h3%((#QDblYgObDrqHEnNc4Oh"1f(eq18R[rrg1O -!&EStm/bd$J,~> -!BU8Qkl@9drrAU@klflu!#!/*rrV,:e+3M>iLT<7#0i(:dj'8>p\t8SDtEu2\e0)\JcEIa"MtcO -1#J/Y!R<`V~> -!B:&NirG%MrrA"/irn$h!#!/*rrV8Mf^f%Cjf7YH#1T*Ye0BA?p\t8SDtEu2\e0)\JcEIa"MtcO -0\MWL!Q-jH~> -!BpJTm/X,trrB$Lm02n=9)o6tM>mY>J\UgV!R@A'rr_kQA -!BU8Qkl@9drrAU@klp>18cT-sM>mYAO2gek!Rn+7rr_q]F-ZFu!No5hrr_Ua1=q*W_#FP;#QRKU -Om)nl3e.~> -!B:&NirG%MrrA"/is"Jt8,rpqM>mYDS^$d+!SOmGrr_tiJXZ93!No5hrr_Ua1=q*W_#FP;#QREM -OlHJ[2h1~> -!BpJTm/X,trrB$LmJlPVl=9krNf!c'-Yj25lR1ZTWSF6.O!R<@frrST'R=YCTrre>` -!+bAVm/bd$J,~> -!BU8Qkl@9drrAU@l2TuNk$e;lNf!c'4\a'1uR1Z`hVssH\!R<@frrST'R=YCTrre>` -!+P)PklK'jJ,~> -!B:&NirG%MrrA"/j8\-Bi*ZNdNf!c';_` -!+=`HirR%VJ,~> -!BpJTm/X,trrB$LmJZDTJH5airJLUWp6;6IpAY/s^[1t,r,*t -!BU8Qkl@9drrAU@l2BiLIfTOgrJLUWpRnSbpAY0'`pE^3r,*t -!B:&NirG%MrrA"/j8J!@HN=+crJLUWpoLn$pAY00cKtQ;r,*t -!BpJTm/X,trrB$LmJQ>SRg/phoSWYNqk95Ip\t8dcgC`7n4-" -!BU8Qkl@9drrAU@l29cKQj*OdoSWYNr2ZIap\t8oeF!82c8pI~> -!B:&NirG%MrrA"/j8@p?PQh+`oSWYNr3i[$p\t9%g?nnBn4-" -!BpJTm/X,trrB$LmJH8RZNgIbj,3j=ri_1Iq#:AVhX:CGgF7% -!BU8Qkl@9drrAU@l20]JYQk._j,3j=rj\9aq#:AbipQgKgF7% -!B:&NirG%MrrA"/j87j>Ws8VZj,3j=rkYB$q#:AojmN-NgF7% -!BpJTm/X,trrB$LmJ?2Qas-m(b)--"^ObPCrrI]=n,EI2&XiCn"Sf6L_YsH5!DflbrrTqN^OcF/ -rrgI^!$fXEm/bd$J,~> -!BU8Qkl@9drrAU@l2'WI`ZkI$b)--"`fKB[rrJ2Mn,EI2&XiCn"SoWdao22 -!B:&NirG%MrrA"/j8.d=_'/jsb)--"cCO=trrJ\]n,EI2&XiCn"Sop&d/EqC!DflbrrTqN^OcF/ -rrgI^!$]7;irR%VJ,~> -!BpJTm/X,trrB$LmJ6,PgcYWDWep`Wc@+LFrrW1@r:'^fgD7Qrrr_JMMV\:3!H4"arrTqN^OcF1 -rrf>.!'T+pm/bd$J,~> -!BU8Qkl@9drrAU@l1sQHffT6@Wep`Wdu3/]rrW1PrUBgggD7Qrrr_S\Qf7rD!H4"arrTqN^OcF1 -rrf>.!'JqlklK'jJ,~> -!B:&NirG%MrrA"/j8%^.!'AYeirR%VJ,~> -!BpJTm/X,trrB$LmJ-&Ok["5iO,p4b*~> -!BU8Qkl@9drrAU@l1jKGjBV`dO, -!B:&NirG%MrrA"/j7qX;hc^!\O, -!BpJTm/X,trrB$LmIooMKED3Qnr!GKjab/FrrM) -!BU8Qkl@9drrAU@l1X?EJcc!Onr!GKk`3^^rrM5Mnc&[g7rIeq"o>lha+&U'rrTqN^OcF6rrhmk -!!@h.klK'jJ,~> -!B:&NirG%MrrA"/j7_L9Iff[Lnr!GKl^c?"rrM>]nc&[g7rIeq"o?0*c@:?.rrTqN^OcF6rrhmk -!!@_+irR%VJ,~> -!BpJTm/X,trrB$LmIfiLYR:F]g5>n8mYJ+Hs8UN;nc&Z.8,VcS"6u7pHg(J2^CnM:s4.,Pg+*.2 -Y_MNGeieN~> -!BU8Qkl@9drrAU@l1O9DXU>+Zg5>n8n -!B:&NirG%MrrA"/j7VF8W!`SUg5>n8ntX)$s8Ul[nc&Z.8,VcS"7NFQKBW=:^CnM:s4.,Pg+*.2 -W.s=5_`*)~> -!BpJTm/X,trrB$LmI]cKb:!?%[>Otgp623Is21r/rrST;nEU#UH?,bLl2Lh('#0"tfDbu]&-+-% -L$\ol4b*~> -!BU8Qkl@9drrAU@l1F3Ca!Uiu[>OtgpRePbs2h\>rrST;nEU#UIt4Wkl2Lh('#0"tfDbu]&-+)u -L$8W`3e.~> -!B:&NirG%MrrA"/j7M@7_Bo6o[>OtgpoCk$s3SLNrrST;nEU#UKT -!BpJTm/X,trrB$LmIT]Ki_9CSK`6o0"oFpVpThF&rrU(RgZe_AIt"eP^AR9r!l#McJcFI("oa/V -!);I+m/bd$J,~> -!BU8Qkl@9drrAU@l1=-ChFmnNK`6o0"oG -!B:&NirG%MrrA"/j7D:7fLc,FK`6o0"oPa/pr(AIrrU(RgZe_AIt5P,bl-i,!l#McJcFI("oa/V -!(tmsirR%VJ,~> -!BpJTm/X,trrB$LmIKWJm!Jj78G%i?"TGN[T?Hm,!l#Ahkl:[4"TReVLY:tm!l#McJcFO*"nY=c -!ds?em/bd$J,~> -!BU8Qkl@9drrAU@l14'Bk^!:18G%i?"TGlrX3pS>!l#Ahkl:[4"TRkcPhkX)!l#McJcFO*"nY=c -!da'_klK'jJ,~> -!B:&NirG%MrrA"/j7;46icbG(8G%i?"TH33[Fb'N!l#Ahkl:[4"TRqqU>kJ -!BpJTm/X,trrB$LmI9KGZ4?p[c&2N&`,s#lrrTqN^ZYXsJ,]HMe:XC^li.%$(;GG#hZ!`',6/7[ -JaEKh4b*~> -!BU8Qkl@9drrAU@l1!p?Y7CUXc&2N&b(S"3rrTqN^ZYXsJ,]HMfo`<)li.%$(;GG#hZ!`',6/7X -Ja!3\3e.~> -!B:&NirG%MrrA"/j7)(3WX]"Rc&2N&d?E#OrrTqN^ZYXsJ,]HMhOh4Hli.%$(;GG#hZ!`',6/4R -J`?dK2h1~> -!BpJTm/X,trrB$LmI0EFc7f5(Q\teEIX9Q=rrTqN^ZPRrJ,TBMqm_!bqs==a^CnV=s5 -!BU8Qkl@9drrAU@l0mj>b:`i$Q\teEN/?9_rrTqN^ZPRrJ,TBMqnS*,r9XFb^CnV=s5?~> -!B:&NirG%MrrA"/j6u"2`\%5sQ\teES!`(,rrTqN^ZPRrJ,TBMr5b;Lr9XFb^CnV=s5 -!BpJTm/X,trrB$LmI'?Fk@+Dk>4[^Q"*WIL`;0E7^D=TGs8RTGrr_YYL"G\k!lGf.JcFd1"nPmt -!+P,BmJlPSeieN~> -!BU8Qkl@9drrAU@l0dd>j'Vie>4[^Q",5Zmb5)&=^D=TGs8RTGrr__fPM>I(!lGf.JcFd1"nPmt -!+=i -!B:&NirG%MrrA"/j6kq2h-L']>4[^Q"-hi8dJ -!BpJTm/X,trrB$LmHj3CS.#BFpJ,0*HeqK[^mJd6U.I_ogjo5J6 -*<6M -!BU8Qkl@9drrAU@l0RX;R1''9eW0Y6p5&b;Pe$ekrrU=U^Z>FpJ,0*HgQJN(mJd6U.I_ogjo5J6 -*<6M9Ja*-t!R<`V~> -!B:&NirG%MrrA"/j6Ye/PmdX5eW0Y6pQtpMU;Hp-rrU=U^Z>FpJ,0*Hhk7=GmJd6U.I_ogjo5J6 -*<6M5J`H^h!Q-jH~> -!BpJTm/X,trrB$LmHa-CaXR8sQ2ZmF#N^gBs7V\KqYpKrpa*T5s8RTDrri51Hb'%ArrR(.r.4n3 -rrrCe#llHsJaNC&!S0Da~> -!BU8Qkl@9drrAU@l0IR;`[LloQ2ZmF#O%KRs7`1cqu6Tspa*T5s8RTDrri8:MS]2XrrR(.r.4n3 -rrrCe#llEoJa**s!R<`V~> -!B:&NirG%MrrA"/j6P_/^aK0hQ2ZmF#OA/bs7i\&qu6Tspa*T5s8RTDrri8BRE>BprrR(.r.4n3 -rrrCe#llBhJ`H[g!Q-jH~> -!BpJTm/X,trrB$LmHX'Bl>ck):[=/C!S3Y;rs/ItO7WDOKMgb/s*sbB"7Db6eaNM>r'tXUs69Oe -lV@K\EpA5Cqs=F84b*~> -!BU8Qkl@9drrAU@l0@L:k&:;#:[=/C!SaFLrs/J)S+Qa\KMgb/s*sbB"7W:Pg$eqBr'tXUs69Oe -lV@K\E9;`9qrn.,3e.~> -!B:&NirG%MrrA"/j6GY.i,&Go:[=/C!T1*[rs/J3W:g2jKMgb/s*sbB"7igkhXCIGr'tXUs69Oe -lV@K\D;^!*qr7^p2h1~> -!BpJTm/X,trrB$LmHEp?T+CuA]orBra/Jt:#6))akhm05irB%.o`#$GL7[r)rrV[=R=YD(rrg"S -!"bcRmJ6,MeieN~> -!BU8Qkl@9drrAU@l0.@7SIbc?]orBrc*I9I"i$2ci"Y,/s8RT@rr_)AWUoWZ!q7Y,JcG'9"MG`S -&=nC:q<7q*3e.~> -!B:&NirG%MrrA"/j65M+R1B9:]orBre%>PX"im8&i"Y,/s8RT@rr_5R[.Nkf!q7Y,JcG'9"MG`S -&"/"/q;VLn2h1~> -!BpJTm/X,trrB$LmH -!BU8Qkl@9drrAU@l0%:7c8Ye*Gl![)s1eI2"42s3K]2t2J+N[Cr5FN+qXORegD7k]s6fmjqKN&A -36m*>puqh)3e.~> -!B:&NirG%MrrA"/j6,G+a>O#"Gl![)s2Y$:"4ioLK]2t2J+N[Cr61PIqXORegD7k]s6fmjqKN&A -2TUI0pu;Cm2h1~> -!BpJTm/X,trrB$LmH3d>l?EF31Y%cj!N4!7rrT68a5R'uJ+ -!BU8Qkl@9drrAU@l/q46k&pk-1Y%cj!O9oGrrTBKbi/U%J+ -!B:&NirG%MrrA"/j6#A*i,]#$1Y%cj!P?kXrrTN]dc(6+J+ -!BpJTm/X,trrB$LmH!X -!BU8Qkl@9drrAU@l/_(4a;t -!B:&NirG%MrrA"/j5f5(_]8^_N;]+C!O(DXrrh6s^7WL+s8RT;rr_D\X6]?V!E"N$s760nrJV!^ -*Q*Hgp#?(j2h1~> -!BpJTm/X,trrB$LmGmR;iEcNb52M\,!K#t:rs/6QO8ng4V>TESs*sJ:"T?>gXS)5c!oOdNJcGBB -"l;EC!FF`9mI]cHeieN~> -!BU8Qkl@9drrAU@l/V"3h-9s\52M\,!LE!Jrs/6QO8njAYPdJ]s*sJ:"THW'[J'7m!oOdNJcGBB -"l;EC!F4H3l1F3@c8pI~> -!B:&NirG%MrrA"/j5]/'f3/1T52M\,!MeuYrs/6QO8nmO\btOgs*sJ:"THl=^A%:"!oOdNJcGBB -"l;EC!F"*+j7M@4_`*)~> -!BpJTm/X,trrB$LmG[F9W##FCRf8cU!I=A9s8Q@'rr`(gPkO5=s*sD8"SJjE`VoK0!JF=$s7ZHr -rgF8r(T;oPo'HJ/4b*~> -!BU8Qkl@9drrAU@l/Ck1VAB4ARf8cU!JpIIs8Q@'rr`+sT_IRJs*sD8"ST6]bl7;8!JF=$s7ZHr -rgF8r(T)cJo'$2#3e.~> -!B:&NirG%MrrA"/j5K#%Tb[V;Rf8cU!LNQYs8Q@'rr`/*XSCoWs*sD8"S]X!df/q>!JF=$s7ZHr -rgF8r(86<>o&Bbg2h1~> -!BpJTm/X,trrB$LmGR@8gJIqN6fX^:!Vpp:rrS6:pAP!nrih1Fk5YI2lMgtJPDe;krrVsA^OcF[ -rrqFM!!#mNJaN!p!S0Da~> -!BU8Qkl@9drrAU@l/:e0fM;JI6fX^:!W%NJrrS6:pAP!nrje9^k5YI2lMgtMT:"X3rrVsA^OcF[ -rrqFM!!#gIJa)^h!R<`V~> -!B:&NirG%MrrA"/j5Ar$dS0]A6fX^:!W&&YrrS6:pAP!nrkbE"k5YI2lMgtPX/4qOrrVsA^OcF[ -rrqFM!!#aAJ`H:\!Q-jH~> -!BpJTm/X,trrB$LmG@46S.Yf2PPq*Q!U5=:rrU7Yi;3HT`.-_.s8RT5rri>HJ>;W.rrU4Xi.:q* -rrr@b%0.$2JaMpn!S0Da~> -!BU8Qkl@9drrAU@l/(Y.R1TE.PPq*Q!UQ!JrrU7Yi;3HTb)PKFs8RT4rr^`1Y4D>e!ll/9JcGWI -"oXVo!"kWMl0mj;c8pI~> -!B:&NirG%MrrA"/j5/f"Pn=!*PPq*Q!UcWZrrU7Yi;3HTd@9=^s8RT4rr^rF\FfOq!ll/9JcGWI -"oXVo!"kKIj6u"/_`*)~> -!BpJTm/X,trrB$LmG7.5fMDPJ4P6;+!SWe;rrW0TXn_nteU5d.s8RT3rri/)HbK@PrrS6:p4<8B -rrq%;!!#jJJaMmm!S0Da~> -!BU8Qkl@9drrAU@l.tS-e4ouD4P6;+!T'LKrrW0TXn_ntg5FPGs8RT3rri23MT#GfrrS6:p4<8B -rrq%;!!#dDJa)Ue!R<`V~> -!B:&NirG%MrrA"/j5&`!cV+<=4P6;+!TL3[rrW0TXn_nthO<3_s8RT3rri2;REYU(rrS6:p4<8B -rrq%;!!#^=J`H1Y!Q-jH~> -!BpJTm/X,trrB$LmG%"3UDNt:LAR\E!Qq2:rrTD[rqHEojFG#0s8RT1rr_SVL"?&!s'1-Ts8N9" -L'RbrUOhh!m/bd$J,~> -!BU8Qkl@9drrAU@l.bG+TGRY7LAR\E!RS"KrrTD[rqHEokDmRHs8RT1rr_\dPM>m4s'1-Ts8N9" -L'RbrTRl@oklK'jJ,~> -!B:&NirG%MrrA"/j4iStS/2/2LAR\E!S4d[rrTD[rqHEolCH2as8RT1rr_bqT\oPEs'1-Ts8N9" -L'RbqS:T_eirR%VJ,~> -!BpJTm/X,trrB$LmFpq2hHU']/]sgf#.q5As8FdXp&>-_MP^=nr -/H>fVhLY([m/bd$J,~> -!BU8Qkl@9drrAU@l.YA*g0+LW/]sgf#/\%Qs8FdXp&>-aQ`pDSs8RT/rr_#>VXF<\!qnC1Jc>nr -/H>fTg4AMSklK'jJ,~> -!B:&NirG%MrrA"/j4`MseQ;hP/]sgf#0Omas8FdXp&>-bUq-Kjs8RT/rr_/OZ1.Vi!qnC1Jc>nr -/H>fReUccHirR%VJ,~> -!BpJTm/X,trrB$LmF^e0^)m=VB'lJq#j09cYlFa+1B-qG"8J%Hp[%q[J)^J2r4RHaq>:0ti#'Q) -fZ;.dn;@5Lm:HD"+23 -!BU8Qkl@9drrAU@l.G5(],gqRB'lJq#j09k[f?B11B-qG"8SOaq!A%\J)^J2r5=K+qYU9ui#'Q) -fZ;.dn;@5Lm:HD"*kR!fl0/5o3e.~> -!B:&NirG%MrrA"/j4NAq[N,>LB'lJq#j09r^&S,81B-qG"8St#q<\.]J)^J2r61SJqYU9ui#'Q) -fZ;.dn;@5Lm:HD"*O^OZl/Mf^2h1~> -!BpJTm/X,trrB$LmFU_0j`1P*'qkQ,rsH8S?[.BdFC/\sa7B64rMteCmJm39i;WrLUO^Yhrr3H( -WE2E.J;T26FD5ZmqN1^]rh'u+#'/gVmHEp -!BU8Qkl@9drrAU@l.>/(iG\r#'qkQ,rsH8S?[.BdF^Jeta7B64rO%s\mJm39i;WoMY)_!0rseh( -=$h"ZMMZk*BlC!IOT,OaTG7G1E8cB4kii,n3e.~> -!B:&NirG%MrrA"/j4E;qgMI)o'qkQ,rsH8S?[.BdF^Jeta7B64rP#)umJm39i;WoO\=M=Orseh( -=$h"ZMMZk*BlC!IOT,OaTG7G1D;0X%ki2]]2h1~> -!BpJTm/X,trrB$LmFCS-a?0G&2qY;5!o-t28ZJ!l0RmH3d:eieN~> -!BU8Qkl@9drrAU@l.,#%`B+&"2qY;5!o-t28ZJ!lp;^mf3<:hZ!i?R@i^:KP6eJ^&sd: -K_CW0"kYa6!'A/Nl/q42c8pI~> -!B:&NirG%MrrA"/j43/n^cDGq2qY;5!o-t28ZJ!m[>"mf3<:hZ!iBVQ9%VKP6eJ^&sd: -K_CW0"kYa6!'7oHj6#A&_`*)~> -!BpJTm/X,trrB$LmF:M-m$JLf"`a"9rrU2S^%]5B]kPLVrrU\tdI7,8J)1,-rP`MEZ1G[2YuoJ@ -rs%q3"TT:)m"+Qcm/bd$J,~> -!BU8Qkl@9drrAU@l."r%k`lk_"`a"9rrU2S^%]5B]kPLVrrUl3f'iY=J)1,-rlfIXZ1G[2YuoJ@ -rs%q3"TT:&k^i![klK'jJ,~> -!B:&NirG%MrrA"/j4*)nifOoT"`a"9rrU2S^%]5B]kPLVrrV&Gg[G1BJ)1,-rmH?mZ1G[2YuoJ@ -rs%q3"TT7!idp.OirR%VJ,~> -!BpJTm/X,trrB$LmF(A+jCJ>l(7P3/rrLPZo=b6:ddd>=jFFu6s8RT(rrTl>^%&f<]jAC?rs&Fj -('"AHjFQ^Ym/bd$J,~> -!BU8Qkl@9drrAU@l-ef#i*ucf(7P3/rrLPZo=b6:ddd>=kDmONs8RT(rrTl>^%&f<]jAC?rs&Fj -('"AFi.:.QklK'jJ,~> -!B:&NirG%MrrA"/j3lrlg0k!^(7P3/rrLPZo=b6:ddd>=lCH/gs8RT(rrTl?^%&f<]jAC?rs&Fj -('"ADg4A;EirR%VJ,~> -!BpJTm/X,trrB$LmEk5(_)_Pr1;gR#!rc96o=b:==8qai"7V5Ir:9mfJ)1,*iF;2g!Fk#Wrrp:q -!!#'rJaMF`!S0Da~> -!BU8Qkl@9drrAU@l-SYu^,Z/n1;gR#!rc96o=b:==8qai"7hhbrUU!gJ)1,*iF;2g!Fk#Wrrp:q -!!#$nJa).X!R<`V~> -!B:&NirG%MrrA"/j3Zfi\MsQh1;gR#!rc96o=b:==8qai"7rA%rUU!gJ)1,*iF;2g!Fk#Wrrp:q -!!#!hJ`G_L!Q-jH~> -!BpJTm/X,trrB$LmEY)&SK%V0DXb19!PaQk^Ae07$TkBb^&a/,nG`UcS!Nd>s8RT)rrHuIrk8I7 -^:jU>^&bc]Sc8l_D?'YVSUp1cm/bd$J,~> -!BU8Qkl@9drrAU@l-AMsRi;>-DXb19!PaQk^Ae07$TkBb^&a/,nG`UdVP^&bc]Sc8l_D?'YURt9h]klK'jJ,~> -!B:&NirG%MrrA"/j3HZgQQ#o)DXb19!PaQk^Ae07$TkBb^&a/,nG`UeZ*!fms8RT)rrHuIrk8I7 -^:jU>^&bc]Sc8l_D?'YUQ\"2SirR%VJ,~> -!BpJTm/X,trrB$LmEP#&jE:h0#^,RHrrI8UrOrC7^9LKnqS!!DFmo>4rN:qCo`+r@hZ!WMAc9=F -!5?/Io=b6:p7VEimWAd8$$PB\mG@42eieN~> -!BU8Qkl@9drrAU@l-8Gsi,f8*#^,RHrrI8UrOrC7^9LKnqS!!DFmo>4rjS0]o`+r@hZ!WMAc9=F -!5?/Io=b6:p7VEimWAd8$$>*Vl/(Y*c8pI~> -!B:&NirG%MrrA"/j3?Tgg2RE!#^,RHrrI8UrOrC7^9LKnqS!!DFmo>4rkP8uo`+r@hZ!WMAc9=F -!5?/Io=b6:p7VEimWAd8$$"[Mj5/es_`*)~> -!BpJTm/X,trrB$LmE=l$d8U,H'9;k#rr@$9^'OeR^9S!X^&S=4rk8AOmJd7*J)Br!s*ro*!RZT! -^&nAL^&\/H#64p'^:jRN:]A'/K[HOo#5F2l!!-'HJaM7[!S0Da~> -!BU8Qkl@9drrAU@l-&;qc;O`D'9;k#rr@$9^'OeR^9S!X^&S=4rk8AOmJd71NT9^3s*ro*!RZT! -^&nAL^&\/H#64p'^:jRN:]A'/K[HOo#5F2l!!-$DJa(tS!R<`V~> -!B:&NirG%MrrA"/j3-HeaADs<'9;k#rr@$9^'OeR^9S!X^&S=4rk8AOmJd78S*'DDs*ro*!RZT! -^&nAL^&\/H#64p'^:jRN:]A'/K[HOo#5F2l!!,s -!BpJTm/X,trrB$LmE+`"^HDPs,,bFSrr@$9^'OeR^9\*Z>m^Q5rk8AOm/I.m^Q5^0M'G!rfn7K[HUq#6(ME!!#0sJaM1Y!S0Da~> -!BU8Qkl@9drrAU@l,i/o]0$&n,,bFSrr@$9^'OeR^9\*Z>m^Q5rk8AOm/I.AMq%J#s*ro*!RZT! -^((.U])fX[>m^Q5^0M'G!rfn7K[HUq#6(ME!!#-nJa(nQ!R<`V~> -!B:&NirG%MrrA"/j2pm^Q5rk8AOm/I.ERb@E7s*ro*!RZT! -^((.U])fX[>m^Q5^0M'G!rfn7K[HUq#6(ME!!#*iJ`GJE!Q-jH~> -!BpJTm/X,trrB$LmDnStW$q]H1:Fst!Hl*S^'t(VZ;ETq"dkMS^:q:'li.%JJ\(UUs*ro*!VU+' -^()$>N#KFE"dkMS^'0mg!<0\5AbMu#"h$/d!%FjtmF^e,eieN~> -!BU8Qkl@9drrAU@l,W#lVC2EE1:Fst!Hl*S^'t(VZ;ETq"dkMS^:q:'li.%MO2CYks*ro*!VU+' -^()$>N#KFE"dkMS^'0mg!<0\5AbMu#"h$/d!%=^ql.G5$c8pI~> -!B:&NirG%MrrA"/j2^0`TdKg?1:Fst!Hl*S^'t(VZ;ETq"dkMS^:q:'li.%PS]^^,s*ro*!VU+' -^()$>N#KFE"dkMS^'0mg!<0\5AbMu#"h$/d!%4Ikj4NAm_`*)~> -!BpJTm/X,trrB$LmDeMtl]E"a!'@s3rrKlmrP&:3$OT"s^.ni*!5?1*^Zth$nVsFDq>^JEh>[Lm -\c0;UILZj<^:m>G9E;e%"\\p1^:A*Xrs$5"!!!jul[eHTm/bd$J,~> -!BU8Qkl@9drrAU@l,MrlkDpG[!'@s3rrKlmrP&:3$OT"s^.ni*!5?1*^Zth$o9uo]q>^JEh>[Lm -\c0;UILZj<^:m>G9E;e%"\\p1^:A*Xrs$5"!!!jskCMmLklK'jJ,~> -!B:&NirG%MrrA"/j2U*`iJSKP!'@s3rrKlmrP&:3$OT"s^.ni*!5?1*^Zth$oV]:uq>^JEh>[Lm -\c0;UILZj<^:m>G9E;e%"\\p1^:A*Xrs$5"!!!gniIU%@irR%VJ,~> -!BpJTm/X,trrB$LmDSArjb"3H!(=oGrrW1!]^ri=]N>*srr`(fPkFtS"n:/TAD$D/rrM(fmCiU1 -iMcb\a@$".'8,CtmFCS)eieN~> -!BU8Qkl@9drrAU@l,;fjiIMXB!(=oGrrW1!]^ri=]N>*srr`+rT_A<`"n:/TAD$D/rrM(fmCiU1 -iMcb\a@$".'7o+nl.,#!c8pI~> -!B:&NirG%MrrA"/j2Bs^gO9e9!(=oGrrW1!]^ri=]N>*srr`/)XS;Ym"n:/TAD$D/rrM(fmCiU1 -iMcb\a@$".'7S\ej43/j_`*)~> -!BpJTm/X,trrB$LmDA5pid219!*J$rrr`%]&68>9!G0^Brt578L?n]8DeX -!BU8Qkl@9drrAU@l,)ZhhK]V3!*J$rrr`%]&68>9!G0^Brt57APO84GDeX -!B:&NirG%MrrA"/j20g\fQI`)!*J$rrr`%]&68>9!G0^Brt57JU$qiWDeX -!BpJTm/X,trrB$LmD/)nh/Nf&!(b&Nrs-S>#Yr(QBta8T!ki -!BU8Qkl@9drrAU@l+lNfg2@?!!(b&Nrs-S>#Yr(QBta8T!ki%:Lfge^&sd:K_FI+!n18V -o=b:2=OX;M#/j%4!"3`!Ja(SH!R<`V~> -!B:&NirG%MrrA"/j1s[Ze8,Km!(b&Nrs-S>#Yr(QBta8T!ki+ -!BpJTm/X,trrB$LmCqrlg275t!("?MrrqoEaN3$'rr3)8&X<+jrrUtZN;:0hN*>#trrUYOZ1G[2 -YuoK8rr_tJBUSV/". -!BU8Qkl@9drrAU@l+ZBdenbZn!("?MrrqoEaN3$'rr3)8&X<+jrrUtZN;:0hN*>#trrUYOZ1G[2 -YuoK8rr_tJBUSV/".e:El-JSpc8pI~> -!B:&NirG%MrrA"/j1aOXctWmf!("?MrrqoEaN3$'rr3)8&X<+jrrUtZN;:0hN*>#trrUYOZ1G[2 -YuoK8rr_tJBUSV/".Rq=j3Q`d_`*)~> -!BpJTm/X,trrB$LmC_fkgiX,-!$@a1h>[u]WGcKmJ;TA;FD5ZH'#4;C$+On\G_hE"7W5fsrrTl? -^%&f<]jAD3rseh(DeX -!BU8Qkl@9drrAU@l+H6cflIZ(!$@a1h>[u]WGcKmJ;TA;FD5ZH'#4;C$+On\G_hE"7W5fsrrTl? -^%&f<]jAD3rseh(DeX -!B:&NirG%MrrA"/j1OCWdr5cs!$@a1h>[u]WGcKmJ;TA;FD5ZH'#4;C$+On\G_hE"7W5fsrrTl? -^%&f<]jAD3rseh(DeX -!BpJTm/X,trrB$LmCMZihg6":!%X];iVs#RKP6eJ^&sa0K_G3@"m3tMfamW5rrM(fpq?_.rOr73 -r4W2@iSXY=nCYh'f^Pp@#PjuB!!![Zhgt1 -!BU8Qkl@9drrAU@l+6*agNaD3!%X];iVs#RKP6eJ^&sa0K_G3@"m3tMfamW5rrM(fpq?_.rOr73 -r4W2@iSXY=nCYh'f^Pp@#PjuB!!!XWgO\V4klK'jJ,~> -!B:&NirG%MrrA"/j1=7UeohZ+!%X];iVs#RKP6eJ^&sa0K_G3@"m3tMfamW5rrM(fpq?_.rOr73 -r4W2@iSXY=nCYh'f^Pp@#PjuB!!!XTeq)l)irR%VJ,~> -!BpJTm/X,trrB$LmC;Ngl&-/S!#pdajSo;1=L%J3!jPkVp&>%fUZ;@TD7TY["ouBO!5?/IrOr73 -r4W3BD1qoon;/(a!"t4SJaLSH!S0Da~> -!BU8Qkl@9drrAU@l+#s_jbXQL!#pdajSo;1=L%J3!jPkVp&>%fUZ;@TD7TY["ouBO!5?/IrOr73 -r4W3BD1qoon;/(a!"k(LJa(;@!R<`V~> -!B:&NirG%MrrA"/j1++Shh;XB!#pdajSo;1=L%J3!jPkVp&>%fUZ;@TD7TY["ouBO!5?/IrOr73 -r4W3BD1qoon;/(a!"jqBJ`Fl4!Q-jH~> -!BpJTm/X,trrB$LmC)Beka*e"!!n#BkPkUs?G5mC!khpRpAY/CJE6_2p1=3:"ouBO!5?/IrOr73 -qn<)Bp4rYQn9kQB!%XE"JaLMF!S0Da~> -!BU8Qkl@9drrAU@l*fg]jHM+o!!n#BkPkUs?G5mC!khpRpAY/CJE6_2p1=3:"ouBO!5?/IrOr73 -qn<)Bp4rYQn9kQB!%O5oJa(5>!R<`V~> -!B:&NirG%MrrA"/j0mtQhiT>f!!n#BkPkUs?G5mC!khpRpAY/CJE6_2p1=3:"ouBO!5?/IrOr73 -qn<)Bp4rYQn9kQB!%F&fJ`Ff2!Q-jH~> -!BpJTm/X,trrB$LmBl6cm&N;M!!?*4lMgnD@edY;!<'V3!;sP3@c@(]s*s,0!RZT!^((.W^&Ym] -!(@04^&US-E;mQPK[GYV#JO%;!!#3`m"+QCm/bd$J,~> -!BU8Qkl@9drrAU@l*T[[kbpWE!!?*4lMgnD@edY;!<'V3!;sP3@c@(]s*s,0!RZT!^((.W^&Ym] -!(@04^&US-E;mQPK[GYV#JO%;!!#0\k^i!;klK'jJ,~> -!B:&NirG%MrrA"/j0[hOihSX9!!?*4lMgnD@edY;!<'V3!;sP3@c@(]s*s,0!RZT!^((.W^&Ym] -!(@04^&US-E;mQPK[GYV#JO%;!!#*Vidp./irR%VJ,~> -!BpJTm/X,trrB$LmBQ$`^K(I;!%jZ4mJd3(\c0>C!!EZkWkJK3^&S02^&bc]p](8CjSo8.K`/Up -!5,oE^:jT6QO^_0Q^83]^&`o7N;j.UROnL>"BN9gmDA5keieN~> -!BU8Qkl@9drrAU@l*9IX]2\t6!%jZ4mJd3(\c0>C!!EZkWkJK3^&S02^&bc]p](8CjSo8.K`/Up -!5,oE^:jT6QO^_0Q^83]^&`o7N;j.UROnL>"BE'bl,)Zcc8pI~> -!B:&NirG%MrrA"/j0@VL[o*>/!%jZ4mJd3(\c0>C!!EZkWkJK3^&S02^&bc]p](8CjSo8.K`/Up -!5,oE^:jT6QO^_0Q^83]^&`o7N;j.UROnL>"B)^[j20gW_`*)~> -!BpJTm/X,trrB$LmB>m^fQ\55!!dH+nG`O_Ac9=I!5>^72nf:j^&S01^&_g=q#CADjSo8SAc9=Q -)2sLm^:jT6QO^_0Q^83]^&_g=NrK@JD[-7B(jO\amD/)ieieN~> -!BU8Qkl@9drrAU@l*'=Ve92Z/!!dH+nG`O_Ac9=I!5>^72nf:j^&S01^&_g=q#CADjSo8SAc9=Q -)2sLm^:jT6QO^_0Q^83]^&_g=NrK@JD[-7B(j=D[l+lNac8pI~> -!B:&NirG%MrrA"/j0.JJcZ9m&!!dH+nG`O_Ac9=I!5>^72nf:j^&S01^&_g=q#CADjSo8SAc9=Q -)2sLm^:jT6QO^_0Q^83]^&_g=NrK@JD[-7B(N[oRj1s[U_`*)~> -!BpJTm/X,trrB$LmB,a]kaOF0!!,B`q"+Ldd=hJ4%KO5WZ3S)D70mkH!(@04rk8DddJEkHnCV8^ -f^S#&!H#CH^(Pl)%Y2:-!(.!0^&UM*Dn`rrD34c'pnpCY!!"mGk^i-8m/bd$J,~> -!BU8Qkl@9drrAU@l)j1UjHqb(!!,B`q"+Ldd=hJ4%KO5WZ3S)D70mkH!(@04rk8DddJEkHnCV8^ -f^S#&!H#CH^(Pl)%Y2:-!(.!0^&UM*Dn`rrD34c'pnpCY!!"jCjFQR0klK'jJ,~> -!B:&NirG%MrrA"/j/q>Ihions!!,B`q"+Ldd=hJ4%KO5WZ3S)D70mkH!(@04rk8DddJEkHnCV8^ -f^S#&!H#CH^(Pl)%Y2:-!(.!0^&UM*Dn`rrD34c'pnpCY!!"g>hgsh%irR%VJ,~> -!BpJTm/X,trrB$LmAfOY^Kh*F!#9V/p&>'?K`/Up!5?1R#eg;*QO^_0Q^83]^&`o7rr3H(WGcKm -J;9/8FD5ZmqW\"\iF;2g!Fk#Nrs.5!'`\4>?,(sX]BoXM4b*~> -!BU8Qkl@9drrAU@l)NtQ]3>O@!#9V/p&>'?K`/Up!5?1R#eg;*QO^_0Q^83]^&`o7rr3H(WGcKm -J;9/8FD5ZmqW\"\iF;2g!Fk#Nrs.5!'`\4>>J#IN]BK@A3e.~> -!B:&NirG%MrrA"/j/V,E[oit:!#9V/p&>'?K`/Up!5?1R#eg;*QO^_0Q^83]^&`o7rr3H(WGcKm -J;9/8FD5ZmqW\"\iF;2g!Fk#Nrs.5!'`\4>=grtB]Aiq02h1~> -!BpJTm/X,trrB$LmATCRi/K>f!!56QoD&=dp1=3:%KO5K;)l8iQ^82r!10#^rk8SJpAai>BUSV/ -". -!BU8Qkl@9drrAU@l)BUSV/ -". -!B:&NirG%MrrA"/j/Cu>f7tmU!!56QoD&=dp1=3:%KO5K;)l8iQ^82r!10#^rk8SJpAai>BUSV/ -". -!BpJTm/X,trrB$LmA91U]NkjE!")rArVHNpD7TY[rr<`?4KH0r6O.PD!(.!0^:q-ps3k)To=b:2 -=OZR8!n18Vo=b:2=OWT9#lV>=$31&5?+baU[d=+H4b*~> -!BU8Qkl@9drrAU@l)!VM\Q]C@!")rArVHNpD7TY[rr<`?4KH0r6O.PD!(.!0^:q-ps3k)To=b:2 -=OZR8!n18Vo=b:2=OWT9#lV>=$31&5>If=L[cmh<3e.~> -!B:&NirG%MrrA"/j/(cAZrm_9!")rArVHNpD7TY[rr<`?4KH0r6O.PD!(.!0^:q-ps3k)To=b:2 -=OZR8!n18Vo=b:2=OWT9#lV>=$31&5=gWb?[c7D+2h1~> -!BpJTm/X,trrB$LmA'%SiflM*!!!Ucmem(ciF;2g"Cg?'?G5mC!khpRlMgt[KP6eJ^&sd:K_Cc4 -#k!EZ!!!$]Pi@8][-[nF4b*~> -!BU8Qkl@9drrAU@l(dJKhNBo#!!!Ucmem(ciF;2g"Cg?'?G5mC!khpRlMgt[KP6eJ^&sd:K_Cc4 -#k!EZ!!!$\P2:cS[-7V:3e.~> -!B:&NirG%MrrA"/j.kW?fT%rm!!!Ucmem(ciF;2g"Cg?'?G5mC!khpRlMgt[KP6eJ^&sd:K_Cc4 -#k!EZ!!!$[NnApC[,V2)2h1~> -!BpJTm/X,trrB$Lm@`hJcZgT3!!4^)g]%3S]jADB^'),U^# -!BU8Qkl@9drrAU@l(I8Bb]Y-.!!4^)g]%3S]jADB^'),U^# -!B:&NirG%MrrA"/j.PE6a)`@%!!4^)g]%3S]jADB^'),U^# -!BpJTm/X,trrB$Lm@EVG[;-*J!!Y -!BU8Qkl@9drrAU@l(.&?Z>'^F!!Y -!B:&NirG%MrrA"/j.533Y%J(?!!Y -!BpJTm/X,trrB$Lm@3JOkbqMk!!!$ZM:.&jRJ4E"R:q9Is7U%&^'"GMYu!CO^&_g=JcGQG$/14q -!<<*/ -!BU8Qkl@9drrAU@l'poGjJGod!!!$ZM:.&jRJ4E"R:q9Is7U%&^'"GMYu!CO^&_g=JcGQG$/14q -!<<*/ -!B:&NirG%MrrA"/j.#';hk -!BpJTm/X,trrB$Lm?m8CkFkZXrW!EZH\u`UFF]70J95LDWVZVo!RZT!^((.W^9S!X^&S=4^:jRN -:]A'/K[GANrVm!!c@%8C!! -!BU8Qkl@9drrAU@l'U];j.8sOrW!EZH\u`UFF]70J95LDWVZVo!RZT!^((.W^9S!X^&S=4^:jRN -:]A'/K[GANrVm!!c@%8C!! -!B:&NirG%MrrA"/j-\j/h3ptCrW!EZH\u`UFF]70J95LDWVZVo!RZT!^((.W^9S!X^&S=4^:jRN -:]A'/K[GANrVm!!c@%8C!! -!BpJTm/X,trrB$Lm?R&@jJ#ZdrW!0FC9#\&^tA/QrrLN#rOraA^:poZ^0M'G!kqqI!! -!BU8Qkl@9drrAU@l':K8i1F![rW!0FC9#\&^tA/QrrLN#rOraA^:poZ^0M'G!kqqI!! -!B:&NirG%MrrA"/j-AX,g7(tNrW!0FC9#\&^tA/QrrLN#rOraA^:poZ^0M'G!kqqI!! -!BpJTm/X,trrB$Lm?6i=kcJ81rW!$,8sJ3.rrMh)rOraA^9UTq^'0mg!58W(PQ:]s!G1tWrr_,B -8dYIs!uPIKk^i,rm/bd$J,~> -!BU8Qkl@9drrAU@l&t95jJlT)rW!$,8sJ3.rrMh)rOraA^9UTq^'0mg!58W(PQ:]s!G1tWrr_,B -8dYIs!uPFGjFQQjklK'jJ,~> -!B:&NirG%MrrA"/j-&F)hkjZqrW!$,8sJ3.rrMh)rOraA^9UTq^'0mg!58W(PQ:]s!G1tWrr_,B -8dYIs!uG7?hgsg_irR%VJ,~> -!BpJTm/X,trrB$Lm>gQ9^3244rW!$UD6`^1rrHuIrkAC4&.1P#^.ni*!5;239E;f@\S[*$"7rd7 -1B%7U!\nl4JaK)s!S0Da~> -!BU8Qkl@9drrAU@l&P!1]6#_.rW!$UD6`^1rrHuIrkAC4&.1P#^.ni*!5;239E;f@\S[*$"7rd7 -1B%7U!\e`.Ja&fk!R<`V~> -!B:&NirG%MrrA"/j,W.%[W*r%rW!$UD6`^1rrHuIrkAC4&.1P#^.ni*!5;239E;f@\S[*$"7rd7 -1B%7U!\\Q%J`EB_!Q-jH~> -!BpJTm/X,trrB$Lm>L?6fTf8DrW!0+3./L9s5@GS^&_^%MZ3hS^O/!DrW!$2:mK[am@ -!BU8Qkl@9drrAU@l&4d.e< -!B:&NirG%MrrA"/j,;q"c]:a0rW!0+3./L9s5@GS^&_^%MZ3hS^O/!DrW!$19TRMNj.,-1_`*)~> -!BpJTm/X,trrB$Lm>('2\T^":rW!*/6%4bu^%&f<]jAC3rrhu+IR+>?!! -!BU8Qkl@9drrAU@l%eL*[WOP5rW!*/6%4bu^%&f<]jAC3rrhu+IR+>?!! -!B:&NirG%MrrA"/j+lXsZ#V`*rW!*/6%4bu^%&f<]jAC3rrhu+IR+>?!! -!BpJTm/X,trrB$Lm=aj0ii$TB!WE'#"urmZ^&kQAduaS4poncr"9&9'!@qo`idpK^m/bd$J,~> -!BU8Qkl@9drrAU@l%J:(hPOs9!WE'#"urmZ^&kQAduaS4poncr"9&9'!@hc[hLXpVklK'jJ,~> -!B:&NirG%MrrA"/j+QFqfV)k*!WE'#"urmZ^&kQAduaS4poncr"9&9'!@_TRfR`(JirR%VJ,~> -!BpJTm/X,trrB$Lm=FX2mFn=M1'IXe5+))Y".R[o>$5_*rQ'A"Yshfg4AXRm/bd$J,~> -!BU8Qkl@9drrAU@l%/(*l.;SB0a.Od5+))Y".R[o>$5_*rQ'A"Yj_af7E1KklK'jJ,~> -!B:&NirG%MrrA"/j+64sj3aB/0E_@b5+))Y".R[o>$5_*rQ'A">FGXd=L>?irR%VJ,~> -!BpJTm/X,trrB$Lm=F[&m1AE_G"2c_3EpHUNHT#ACT7/srrqu.O'apKr;Zs(89V/uJaJHa!S0Da~> -!BU8Qkl@9drrAU@l%/*skn)jTF@HK\3EpHUNHT#ACT7/srrqu.O'apKr;Zs(7s(fkJa&0Y!R<`V~> -!B:&NirG%MrrA"/j+67git1"DEC:$W3EpHUNHT#ACT7/srrqu.O'apKr;Zs'7<,6\J`DaM!Q-jH~> -!BpJTm/X,trrB$Lm=F["m02grQ!>^?qu?mB:Pc($r1X,or7%d':ETK7"U-PgQ,i3Am>:32eieN~> -!BU8Qkl@9drrAU@l%/*oklp7gP?K=:qu?mB:Pc($r1X,or7%d':ETK7"U-MdPJlX8l&"X*c8pI~> -!B:&NirG%MrrA"/j+67cis"DVO'!_2qu?mB:Pc($r1X,or7%d':ETK7"U$D`O2'Y)j,)ds_`*)~> -!BpJTm/X,trrB$Lm=FZrm02gbNF+IHqu?p'-rG;c_ -!BU8Qkl@9drrAU@l%/*jklp7WMI&%Cqu?p'-rG;c_ -!B:&NirG%MrrA"/j+67^is"DGLKcJ -!BpJTm/X,trrB$Lm=FZmm0;mtS8Ce?!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHI88Xm -!BU8Qkl@9drrAU@l%/*ekm$=iR;5;9!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHI7r+O3kCMlK -l2TuKc8pI~> -!B:&NirG%MrrA"/j+67Yis+JXQ"`Z0!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHH7;8%&iIU$? -j8\-?_`*)~> -!BpJTm/X,trrB$Lm=FZgm0;ajS97IU"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQW96HcA -kCN#OmJ6,MeieN~> -!BU8Qkl@9drrAU@l%/*_km$4`R<(tO"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQW8opE8 -jFQQHl1sQEc8pI~> -!B:&NirG%MrrA"/j+67Sis+AOQ#K8E"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQV88sj* -hLX^ -!BpJTm/X,trrB$Lm=FZ`m0D=SR!2Us*s20:0+KNl7oj5FL6eR:\&$59h<4(knauSPrVcTeo^VA7 -kM=V0_7-SAQA0Qp<_#)"%efr.!Zs[/GF5nnJaJ$Uo'HJ/4b*~> -!BU8Qkl@9drrAU@l%/*Xkm,bHQ$$+l*Wl'90+KNl7oj5FL6eR:\&$59h<4(knauSPrVcTeo^VA7 -kM=V0_7-SAQA0Qp<_#)"%efr.!ZjR,Fd9AbJa%aMo'$2#3e.~> -!B:&NirG%MrrA"/j+67Lis3o7O`FA`* -!BpJTm/X,trrB$Lm=FZYm0`43]V:0u=@=b["47)U!u`d[=D`hf][uM$m=FZjm/bd$J,~> -!BU8Qkl@9drrAU@l%/*QkmHY'\Y"Rk<^JDV"47)U!uW^X -!B:&NirG%MrrA"/j+67EisOek[$uV\<'`&Q"47)U!uWXU<,$oQ[*IZ^j+67VirR%VJ,~> -!BpJTm/X,trrB$Lm=FZNm4[>7\Z20[IrA^q91(]o-m'3<&.JsO"TSN+#7:nO',DZ<0f_To -!BU8Qkl@9drrAU@l%/*FkqCc,[\oRPI;N=k8jYKk-Qa*;%h/jN"TSN+#7:nN',DZ;0K;Bk -!B:&NirG%MrrA"/j+67:j"JrqZ(mV@H"pS^83f*e-6 -!BpJTmCB3Im=FYUm=FYUmJcJReieN~> -!BU8Ql+*@9l%/)Ml%/)Ml2KoJc8pI~> -!B:&Nj11,"j+66Aj+66Aj8S'>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6eq)D'eq)D'eu7."4b*~> -!BU73c@O8lc@O8lcD]"g3e.~> -!B:%0_h#^V_h#^V_l1HQ2h1~> -JN\QIJN\QIJN]hmJ,~> -JNA?CJNA?CJNBVgJ,~> -JN&-=JN&-=JN'DaJ,~> -%%EndData -showpage -%%Trailer -end -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours_dfs.jpg b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours_dfs.jpg deleted file mode 100755 index 397adaf922..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/parcours_dfs.jpg and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/perpendiculaire.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/perpendiculaire.eps deleted file mode 100755 index 060dee2b88..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/perpendiculaire.eps +++ /dev/null @@ -1,91 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Pages: 1 -%%BoundingBox: 0 0 640 480 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%EndComments -%%Page: 1 1 -save 9 dict begin -{/T currentfile/ASCII85Decode filter def[/Indexed/DeviceRGB 2 T 9 string readstring pop]setcolorspace -/F T/LZWDecode filter def -<> image - F closefile T closefile} -%%BeginData:; -exec -s8W*!!!)Ee!.Y%l:cK^9%0qPQ@8K2t/fbIY6t0"QUfJrK.`PsqZ34>o+-9$(:p@$;[&R*Fj$a7o[Tt -PR5bepZ?iUoiK#qLWfo5WQ5D2M(O<@@";[8_U-ks7'\-"R?;/#HUeMaO2M9Oon-riC16`aC+;^/=n[ -ml-JluotQ@a/Pb_X1CIV#$]@K[&%%#qaa,0>#-*;&ep&%3Vsp5d;k8*uu"%gYqq?A`Fl!KZ5Ms3dlW -8T7LWrFcrn[9`cg+U)?XZ92CQLla:_IrkBPLMJG&-e.=OH;MqRB_qKtJen%sG?l,`lHBc"tTqEKghp?'+aquVqnW=-.m -!%jEFl+kWf=phjfH]XR[E+Bss0i3fT$,Wq+*st@AGRG$M85's9-4ijL&]?>=9b^%[/6n<)..gRZU!Y -o0*4R_^G_#pqN.D1&OfWaB-8E/fJUk$?AKT&lI%;6)Zb^K)+C^C0g%B[pA%X,$A#J5MW)&8t0" -p9cSG1jV`Rr]H5B"k!?(ul\HMdGWds9T7lf1U0)Z@\N-pek`lMa,"QMhk6rTYc:8)n9cT$hrr!hZ2& -q$==]1!$FQ3KHsG#&i]1`+(9YO7(E -gS'gUkRU_Gm$\bnXX$On!NO#$3`dD"'O!hi7gKVX2;6NZK`g8Tg^KME8F.$/=?4@LXeFs*.8JBae+3 -JU'Eqn/,L(1P\=BMj;A73d6*:SfIHko4D]eLr[Ap+j@#_FO>,"7WLF0Y)'aKh1W215OBD) -q+h7],A2Gbhemfes*%6DL#RE%b)H1.GTeO;KG7]:T'I:d4PUQIdahgU^j=.m$6E!KfjkV!b%&nITr& -"hT844Ys*gT8j,mL&>.7f?,?kPcfKi$8A$f&7JEl#a3o-+ML5nOA8!^k%\r+SGo7US#La$)7]2F(1] -N093!(K5&UKE/#\1QH@_o#q/g:oK^k*c`OCfUU'nJ73C8H+P9QP/'neX`]XF'iCCAQ ->dX31(KdfZo.@>mKeOU?S<^EcW!.ARE,np^MU'Zu_Y;P\K:ikYBalG+$eRkT#7KFa4*=R'FeuR4)V] -sSM&8uYYJlu19?)75u;"7Dre,h(3TrB^G23=+gHAtj\,E]O&$Rno9uBbaa8H9MIken\.jjTkrrLg$mcX)2b3"Id9 -1Oo(Y4fl;gNkH\4Oei@HE?DI8;1k,NGS&B5)87!3W=0^eYR,"M.j,&QRX''8O)^-r4?fjAi4l8IX\E -BPH);_,eR'tqK3DG7K6#kYs[F;87huUNRn+BTH--I+?fi`7J>^%8g_R"@[r16sOhpRAC4'58ED^?@d -?6W\PO.)V_lUUW<*kjip+S![((>l5)jm0$ss*#J&!rXS:j94#J0;H\a\>q.6KKa'Q`/)3D6mRIEO96 -L1-rA,,!28n&>gkYDgJ8#Q.sM_&,UVB?60[t9`pYi\?PFFOi`1)(H), -]Y)-)5M.cSE<;"FIJ2HWEaij5I+1/ek1h:EuM9cbbUWIo($aSbVFjYO@a.+cFQ.N*.[`TC="Ch+L@L -Dn>UCgZjOS=b+Ceuac*hnc;ErM'Yb>-E:'d7/DQ=`XPG#n;H./d6;^_3[m-kOXT^FXo5*ds\TB,V@oT\OTbdc&@`e[XA["fenXH:]OP- -oifV(\j:5go];o\!#((0@G=en/Tt83rR5oDeqIgP=LT25CL6A`o4d*&XdVjf\"0s`JtfCaL*]nqeUU -p]lQ:igWA(B.+BK"XLopHB)holcSi&@W3:1,1@/fefne1Z@;!#$9[VT8`YK[As+"(kCJkmW -;>CN*?UKYt.!(##hj0,n+%7Z%-2DN:*(e`\@3OP<4>6nX`1qsfc1W-\,`Te^(1l"TcKjmHp7:K?$Dhch8=58rYD9$S=N:6Z -?WCnmm(:TtK*uu@_B\>;.PFf9a`"i.[eXYQ".uh-028875-b^(hs#M3p>+*C?;0_tehkBCoo;\TImi -NG^dj3!R9A6DjIjgaa/VeJWRc@^Gb(WWWaA@Kf4D-t$4p]s#>@.+/Ph*"VYE]=@51T/`$Q3V`0cAeF ->#oA^&5X2CAH6C3$mc\%$5#5#i?Z7:GE:DgC,4=@:6^&m:>i%GQb(EKBmNp6MoXi, -EA)?J5.L'&o`O(Omd70c -:E5E.SWGO\%[;nfT2<&CQ/]2#sP_26k-WlW)?8@mnm@OU1Zda`3mR%?aK"^aMogB`sN72=6KW_'[q> -j9QCJS'!K$/mjGaQ7Ztu9/pK:8OTU4D3WPnkoPU,&I""eP%d8",][@A7ja3I]d-/C(K$.JR>)]XB$Ebn[0]\Kd@H))a<9'o@>RLaE</=:%_D3e2fG6'2 -pUpM:/.%d[=1"jA;Y;(*_:bKt2MAnsB"k4An]OTCid:1G'p'Xu64=soQ&<'`b`!!#pQ/Ne -9_(3oe3>?iXpM*8?1>i+*W,S`YmW"c]8[b(B(7;jFs$DOIs+WHCiNkD='j;85XAd[jiV6d#[]ht-=3 -j1/o#rbUYfDu0u=3]\=]8h,e47fp89@a<0cd]'_-A+!T/e>Md!=rNS6A[8Tm;l8T%,c3aG#6!fZh3> -^iQOXuf)hqf2Y'lbXC>#-js7iUlP<7]nJ`'X4/`tq*&a]BLtfI(_[<:QA/OK^e^c(hdjVZaS&^VPY! -A8plPeM+c&EJ;2iZ5:*@q&dd7A^tYr%ioQtf3Uh3E3(EM6b%lR#'k`GNS;VQ)7r[@W3B7Nm%oP@"14 -@5GV[d$VEFcC@WsZkVJ&=jm0YXRCfKVME6+2`p/Rhki)e"^qc<8)//iTEnSn.(OsbAeM]?1Kb4:QX3 -VUCm[P',`P)N92**ZU;/VYF>WgNr -?.RR;JhKr\>K?4cMO!'lPtt_ZsMh>#BB/NXfHV(X\%Ad)gGp$ib19_NSY:X3,AZ(]!bA;M/)pJY*?;V#%WLbqQJ03'GDPVr8^'5N&(fmgV*T"6e9@4Z -i4YJKp3j_PHIkm:=3De2Y-GH](B*U2GaZ[eL/2WJ1Z@0)/pAA-[(E4Hjs87gBl0?7C$,`jp-=r9bA# -r2HV_>g(R92[gWkk0<<"W&r?l"@aj8F]rpB(H&$PW=g)'UVam/V=GNdoDL -\4PL$gh;ep>)Ka\t9+eGLc+2*5p%tb2)#Jn&[jY-]F9s5]/%+*qg-EiBo/?75P8%`XirtPHVQ:55lI -nFY!"Mji-\n8+Y(\&IeZfQ2C##er)?HN$IUH_7MnCr&NK@OJDdb]Dj`4+[?V%YDA<$e+=I"j0^%iWa -l5enk$Gtf0J:%[h+Z=g^HIVftefg5`7M',SZ)o#=/Uq5qt7&g^V)X=>DRm+J\`u]FdF#kQq)(_7UU4 -!X:sO*f0+#4F2q"Oaob3CEOlA69sBO1`\$p-FV,GYI!L\PUX"l&W#sN*c*JO,V:ae8/f]-0gm%p5c[ -1T,ssBGOi0)o<&MGd*((],_^mm@loIM^co5YT6d.cqe3KVL5=?X-YY6aBb/-P;Lr=9]5Hs(]A$mjk? -]L@A`-@mfE/tJC6,_P6T'T5Z,WN`t9>m"D6Gq4klfsILpdGJ(`7"Ml$-PbnZU6QI/(@S5'Nd/ia@0o -LLuHa_kefk8@10GMLe>[iZt;*V;as+G%('Y:E.sjABStSTLd2+r@baH:Kc"'$6&Ec,b\f%LF%6@9`l -)+4A9:=,e&Ml>NHp59"F!?24r\$X$0d0Q>^J):M4%=k&=JW9,\dK\lPNTGa:[POW%CP$mmqhP86G5G -XGY%tM9*Vo]:a\)~> -%%EndData -end restore showpage -%%Trailer -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/perpendiculaire.png b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/perpendiculaire.png deleted file mode 100755 index a65a355610..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/images/perpendiculaire.png and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/llncs.cls b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/llncs.cls deleted file mode 100755 index 23fd1c6623..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/llncs.cls +++ /dev/null @@ -1,1190 +0,0 @@ -% LLNCS DOCUMENT CLASS -- version 2.14 (17-Aug-2004) -% Springer Verlag LaTeX2e support for Lecture Notes in Computer Science -% -%% -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} -%% -\NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesClass{llncs}[2004/08/17 v2.14 -^^J LaTeX document class for Lecture Notes in Computer Science] -% Options -\let\if@envcntreset\iffalse -\DeclareOption{envcountreset}{\let\if@envcntreset\iftrue} -\DeclareOption{citeauthoryear}{\let\citeauthoryear=Y} -\DeclareOption{oribibl}{\let\oribibl=Y} -\let\if@custvec\iftrue -\DeclareOption{orivec}{\let\if@custvec\iffalse} -\let\if@envcntsame\iffalse -\DeclareOption{envcountsame}{\let\if@envcntsame\iftrue} -\let\if@envcntsect\iffalse -\DeclareOption{envcountsect}{\let\if@envcntsect\iftrue} -\let\if@runhead\iffalse -\DeclareOption{runningheads}{\let\if@runhead\iftrue} - -\let\if@openbib\iffalse -\DeclareOption{openbib}{\let\if@openbib\iftrue} - -% languages -\let\switcht@@therlang\relax -\def\ds@deutsch{\def\switcht@@therlang{\switcht@deutsch}} -\def\ds@francais{\def\switcht@@therlang{\switcht@francais}} - -\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} - -\ProcessOptions - -\LoadClass[twoside]{article} -\RequirePackage{multicol} % needed for the list of participants, index - -\setlength{\textwidth}{12.2cm} -\setlength{\textheight}{19.3cm} -\renewcommand\@pnumwidth{2em} -\renewcommand\@tocrmarg{3.5em} -% -\def\@dottedtocline#1#2#3#4#5{% - \ifnum #1>\c@tocdepth \else - \vskip \z@ \@plus.2\p@ - {\leftskip #2\relax \rightskip \@tocrmarg \advance\rightskip by 0pt plus 2cm - \parfillskip -\rightskip \pretolerance=10000 - \parindent #2\relax\@afterindenttrue - \interlinepenalty\@M - \leavevmode - \@tempdima #3\relax - \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip - {#4}\nobreak - \leaders\hbox{$\m@th - \mkern \@dotsep mu\hbox{.}\mkern \@dotsep - mu$}\hfill - \nobreak - \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}% - \par}% - \fi} -% -\def\switcht@albion{% -\def\abstractname{Abstract.} -\def\ackname{Acknowledgement.} -\def\andname{and} -\def\lastandname{\unskip, and} -\def\appendixname{Appendix} -\def\chaptername{Chapter} -\def\claimname{Claim} -\def\conjecturename{Conjecture} -\def\contentsname{Table of Contents} -\def\corollaryname{Corollary} -\def\definitionname{Definition} -\def\examplename{Example} -\def\exercisename{Exercise} -\def\figurename{Fig.} -\def\keywordname{{\bf Key words:}} -\def\indexname{Index} -\def\lemmaname{Lemma} -\def\contriblistname{List of Contributors} -\def\listfigurename{List of Figures} -\def\listtablename{List of Tables} -\def\mailname{{\it Correspondence to\/}:} -\def\noteaddname{Note added in proof} -\def\notename{Note} -\def\partname{Part} -\def\problemname{Problem} -\def\proofname{Proof} -\def\propertyname{Property} -\def\propositionname{Proposition} -\def\questionname{Question} -\def\remarkname{Remark} -\def\seename{see} -\def\solutionname{Solution} -\def\subclassname{{\it Subject Classifications\/}:} -\def\tablename{Table} -\def\theoremname{Theorem}} -\switcht@albion -% Names of theorem like environments are already defined -% but must be translated if another language is chosen -% -% French section -\def\switcht@francais{%\typeout{On parle francais.}% - \def\abstractname{R\'esum\'e.}% - \def\ackname{Remerciements.}% - \def\andname{et}% - \def\lastandname{ et}% - \def\appendixname{Appendice} - \def\chaptername{Chapitre}% - \def\claimname{Pr\'etention}% - \def\conjecturename{Hypoth\`ese}% - \def\contentsname{Table des mati\`eres}% - \def\corollaryname{Corollaire}% - \def\definitionname{D\'efinition}% - \def\examplename{Exemple}% - \def\exercisename{Exercice}% - \def\figurename{Fig.}% - \def\keywordname{{\bf Mots-cl\'e:}} - \def\indexname{Index} - \def\lemmaname{Lemme}% - \def\contriblistname{Liste des contributeurs} - \def\listfigurename{Liste des figures}% - \def\listtablename{Liste des tables}% - \def\mailname{{\it Correspondence to\/}:} - \def\noteaddname{Note ajout\'ee \`a l'\'epreuve}% - \def\notename{Remarque}% - \def\partname{Partie}% - \def\problemname{Probl\`eme}% - \def\proofname{Preuve}% - \def\propertyname{Caract\'eristique}% -%\def\propositionname{Proposition}% - \def\questionname{Question}% - \def\remarkname{Remarque}% - \def\seename{voir} - \def\solutionname{Solution}% - \def\subclassname{{\it Subject Classifications\/}:} - \def\tablename{Tableau}% - \def\theoremname{Th\'eor\`eme}% -} -% -% German section -\def\switcht@deutsch{%\typeout{Man spricht deutsch.}% - \def\abstractname{Zusammenfassung.}% - \def\ackname{Danksagung.}% - \def\andname{und}% - \def\lastandname{ und}% - \def\appendixname{Anhang}% - \def\chaptername{Kapitel}% - \def\claimname{Behauptung}% - \def\conjecturename{Hypothese}% - \def\contentsname{Inhaltsverzeichnis}% - \def\corollaryname{Korollar}% -%\def\definitionname{Definition}% - \def\examplename{Beispiel}% - \def\exercisename{\"Ubung}% - \def\figurename{Abb.}% - \def\keywordname{{\bf Schl\"usselw\"orter:}} - \def\indexname{Index} -%\def\lemmaname{Lemma}% - \def\contriblistname{Mitarbeiter} - \def\listfigurename{Abbildungsverzeichnis}% - \def\listtablename{Tabellenverzeichnis}% - \def\mailname{{\it Correspondence to\/}:} - \def\noteaddname{Nachtrag}% - \def\notename{Anmerkung}% - \def\partname{Teil}% -%\def\problemname{Problem}% - \def\proofname{Beweis}% - \def\propertyname{Eigenschaft}% -%\def\propositionname{Proposition}% - \def\questionname{Frage}% - \def\remarkname{Anmerkung}% - \def\seename{siehe} - \def\solutionname{L\"osung}% - \def\subclassname{{\it Subject Classifications\/}:} - \def\tablename{Tabelle}% -%\def\theoremname{Theorem}% -} - -% Ragged bottom for the actual page -\def\thisbottomragged{\def\@textbottom{\vskip\z@ plus.0001fil -\global\let\@textbottom\relax}} - -\renewcommand\small{% - \@setfontsize\small\@ixpt{11}% - \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ - \abovedisplayshortskip \z@ \@plus2\p@ - \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ - \def\@listi{\leftmargin\leftmargini - \parsep 0\p@ \@plus1\p@ \@minus\p@ - \topsep 8\p@ \@plus2\p@ \@minus4\p@ - \itemsep0\p@}% - \belowdisplayskip \abovedisplayskip -} - -\frenchspacing -\widowpenalty=10000 -\clubpenalty=10000 - -\setlength\oddsidemargin {63\p@} -\setlength\evensidemargin {63\p@} -\setlength\marginparwidth {90\p@} - -\setlength\headsep {16\p@} - -\setlength\footnotesep{7.7\p@} -\setlength\textfloatsep{8mm\@plus 2\p@ \@minus 4\p@} -\setlength\intextsep {8mm\@plus 2\p@ \@minus 2\p@} - -\setcounter{secnumdepth}{2} - -\newcounter {chapter} -\renewcommand\thechapter {\@arabic\c@chapter} - -\newif\if@mainmatter \@mainmattertrue -\newcommand\frontmatter{\cleardoublepage - \@mainmatterfalse\pagenumbering{Roman}} -\newcommand\mainmatter{\cleardoublepage - \@mainmattertrue\pagenumbering{arabic}} -\newcommand\backmatter{\if@openright\cleardoublepage\else\clearpage\fi - \@mainmatterfalse} - -\renewcommand\part{\cleardoublepage - \thispagestyle{empty}% - \if@twocolumn - \onecolumn - \@tempswatrue - \else - \@tempswafalse - \fi - \null\vfil - \secdef\@part\@spart} - -\def\@part[#1]#2{% - \ifnum \c@secnumdepth >-2\relax - \refstepcounter{part}% - \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% - \else - \addcontentsline{toc}{part}{#1}% - \fi - \markboth{}{}% - {\centering - \interlinepenalty \@M - \normalfont - \ifnum \c@secnumdepth >-2\relax - \huge\bfseries \partname~\thepart - \par - \vskip 20\p@ - \fi - \Huge \bfseries #2\par}% - \@endpart} -\def\@spart#1{% - {\centering - \interlinepenalty \@M - \normalfont - \Huge \bfseries #1\par}% - \@endpart} -\def\@endpart{\vfil\newpage - \if@twoside - \null - \thispagestyle{empty}% - \newpage - \fi - \if@tempswa - \twocolumn - \fi} - -\newcommand\chapter{\clearpage - \thispagestyle{empty}% - \global\@topnum\z@ - \@afterindentfalse - \secdef\@chapter\@schapter} -\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne - \if@mainmatter - \refstepcounter{chapter}% - \typeout{\@chapapp\space\thechapter.}% - \addcontentsline{toc}{chapter}% - {\protect\numberline{\thechapter}#1}% - \else - \addcontentsline{toc}{chapter}{#1}% - \fi - \else - \addcontentsline{toc}{chapter}{#1}% - \fi - \chaptermark{#1}% - \addtocontents{lof}{\protect\addvspace{10\p@}}% - \addtocontents{lot}{\protect\addvspace{10\p@}}% - \if@twocolumn - \@topnewpage[\@makechapterhead{#2}]% - \else - \@makechapterhead{#2}% - \@afterheading - \fi} -\def\@makechapterhead#1{% -% \vspace*{50\p@}% - {\centering - \ifnum \c@secnumdepth >\m@ne - \if@mainmatter - \large\bfseries \@chapapp{} \thechapter - \par\nobreak - \vskip 20\p@ - \fi - \fi - \interlinepenalty\@M - \Large \bfseries #1\par\nobreak - \vskip 40\p@ - }} -\def\@schapter#1{\if@twocolumn - \@topnewpage[\@makeschapterhead{#1}]% - \else - \@makeschapterhead{#1}% - \@afterheading - \fi} -\def\@makeschapterhead#1{% -% \vspace*{50\p@}% - {\centering - \normalfont - \interlinepenalty\@M - \Large \bfseries #1\par\nobreak - \vskip 40\p@ - }} - -\renewcommand\section{\@startsection{section}{1}{\z@}% - {-18\p@ \@plus -4\p@ \@minus -4\p@}% - {12\p@ \@plus 4\p@ \@minus 4\p@}% - {\normalfont\large\bfseries\boldmath - \rightskip=\z@ \@plus 8em\pretolerance=10000 }} -\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% - {-18\p@ \@plus -4\p@ \@minus -4\p@}% - {8\p@ \@plus 4\p@ \@minus 4\p@}% - {\normalfont\normalsize\bfseries\boldmath - \rightskip=\z@ \@plus 8em\pretolerance=10000 }} -\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% - {-18\p@ \@plus -4\p@ \@minus -4\p@}% - {-0.5em \@plus -0.22em \@minus -0.1em}% - {\normalfont\normalsize\bfseries\boldmath}} -\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% - {-12\p@ \@plus -4\p@ \@minus -4\p@}% - {-0.5em \@plus -0.22em \@minus -0.1em}% - {\normalfont\normalsize\itshape}} -\renewcommand\subparagraph[1]{\typeout{LLNCS warning: You should not use - \string\subparagraph\space with this class}\vskip0.5cm -You should not use \verb|\subparagraph| with this class.\vskip0.5cm} - -\DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{"00} -\DeclareMathSymbol{\Delta}{\mathalpha}{letters}{"01} -\DeclareMathSymbol{\Theta}{\mathalpha}{letters}{"02} -\DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{"03} -\DeclareMathSymbol{\Xi}{\mathalpha}{letters}{"04} -\DeclareMathSymbol{\Pi}{\mathalpha}{letters}{"05} -\DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{"06} -\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07} -\DeclareMathSymbol{\Phi}{\mathalpha}{letters}{"08} -\DeclareMathSymbol{\Psi}{\mathalpha}{letters}{"09} -\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A} - -\let\footnotesize\small - -\if@custvec -\def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle#1$}} -{\mbox{\boldmath$\textstyle#1$}} -{\mbox{\boldmath$\scriptstyle#1$}} -{\mbox{\boldmath$\scriptscriptstyle#1$}}} -\fi - -\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}} -\def\qed{\ifmmode\squareforqed\else{\unskip\nobreak\hfil -\penalty50\hskip1em\null\nobreak\hfil\squareforqed -\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi} - -\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip -\halign{\hfil -$\displaystyle##$\hfil\cr\gets\cr\to\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets -\cr\to\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets -\cr\to\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr -\gets\cr\to\cr}}}}} -\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil -$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr -\noalign{\vskip1.2pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr -\noalign{\vskip1pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr -<\cr -\noalign{\vskip0.9pt}=\cr}}}}} -\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil -$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr -\noalign{\vskip1.2pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr -\noalign{\vskip1pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr ->\cr -\noalign{\vskip0.9pt}=\cr}}}}} -\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip -\halign{\hfil -$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1pt}<\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr ->\cr\noalign{\vskip-1pt}<\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr ->\cr\noalign{\vskip-0.8pt}<\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr ->\cr\noalign{\vskip-0.3pt}<\cr}}}}} -\def\bbbr{{\rm I\!R}} %reelle Zahlen -\def\bbbm{{\rm I\!M}} -\def\bbbn{{\rm I\!N}} %natuerliche Zahlen -\def\bbbf{{\rm I\!F}} -\def\bbbh{{\rm I\!H}} -\def\bbbk{{\rm I\!K}} -\def\bbbp{{\rm I\!P}} -\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l} -{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}} -\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox -to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox -to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox -to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox -to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}} -\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm -Q$}\hbox{\raise -0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} -{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise -0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise -0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise -0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}} -\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm -T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox -to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox -to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox -to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}} -\def\bbbs{{\mathchoice -{\setbox0=\hbox{$\displaystyle \rm S$}\hbox{\raise0.5\ht0\hbox -to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox -to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} -{\setbox0=\hbox{$\textstyle \rm S$}\hbox{\raise0.5\ht0\hbox -to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox -to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptstyle \rm S$}\hbox{\raise0.5\ht0\hbox -to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox -to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox -to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox -to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}} -\def\bbbz{{\mathchoice {\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} -{\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} -{\hbox{$\mathsf\scriptstyle Z\kern-0.3em Z$}} -{\hbox{$\mathsf\scriptscriptstyle Z\kern-0.2em Z$}}}} - -\let\ts\, - -\setlength\leftmargini {17\p@} -\setlength\leftmargin {\leftmargini} -\setlength\leftmarginii {\leftmargini} -\setlength\leftmarginiii {\leftmargini} -\setlength\leftmarginiv {\leftmargini} -\setlength \labelsep {.5em} -\setlength \labelwidth{\leftmargini} -\addtolength\labelwidth{-\labelsep} - -\def\@listI{\leftmargin\leftmargini - \parsep 0\p@ \@plus1\p@ \@minus\p@ - \topsep 8\p@ \@plus2\p@ \@minus4\p@ - \itemsep0\p@} -\let\@listi\@listI -\@listi -\def\@listii {\leftmargin\leftmarginii - \labelwidth\leftmarginii - \advance\labelwidth-\labelsep - \topsep 0\p@ \@plus2\p@ \@minus\p@} -\def\@listiii{\leftmargin\leftmarginiii - \labelwidth\leftmarginiii - \advance\labelwidth-\labelsep - \topsep 0\p@ \@plus\p@\@minus\p@ - \parsep \z@ - \partopsep \p@ \@plus\z@ \@minus\p@} - -\renewcommand\labelitemi{\normalfont\bfseries --} -\renewcommand\labelitemii{$\m@th\bullet$} - -\setlength\arraycolsep{1.4\p@} -\setlength\tabcolsep{1.4\p@} - -\def\tableofcontents{\chapter*{\contentsname\@mkboth{{\contentsname}}% - {{\contentsname}}} - \def\authcount##1{\setcounter{auco}{##1}\setcounter{@auth}{1}} - \def\lastand{\ifnum\value{auco}=2\relax - \unskip{} \andname\ - \else - \unskip \lastandname\ - \fi}% - \def\and{\stepcounter{@auth}\relax - \ifnum\value{@auth}=\value{auco}% - \lastand - \else - \unskip, - \fi}% - \@starttoc{toc}\if@restonecol\twocolumn\fi} - -\def\l@part#1#2{\addpenalty{\@secpenalty}% - \addvspace{2em plus\p@}% % space above part line - \begingroup - \parindent \z@ - \rightskip \z@ plus 5em - \hrule\vskip5pt - \large % same size as for a contribution heading - \bfseries\boldmath % set line in boldface - \leavevmode % TeX command to enter horizontal mode. - #1\par - \vskip5pt - \hrule - \vskip1pt - \nobreak % Never break after part entry - \endgroup} - -\def\@dotsep{2} - -\def\hyperhrefextend{\ifx\hyper@anchor\@undefined\else -{chapter.\thechapter}\fi} - -\def\addnumcontentsmark#1#2#3{% -\addtocontents{#1}{\protect\contentsline{#2}{\protect\numberline - {\thechapter}#3}{\thepage}\hyperhrefextend}} -\def\addcontentsmark#1#2#3{% -\addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}\hyperhrefextend}} -\def\addcontentsmarkwop#1#2#3{% -\addtocontents{#1}{\protect\contentsline{#2}{#3}{0}\hyperhrefextend}} - -\def\@adcmk[#1]{\ifcase #1 \or -\def\@gtempa{\addnumcontentsmark}% - \or \def\@gtempa{\addcontentsmark}% - \or \def\@gtempa{\addcontentsmarkwop}% - \fi\@gtempa{toc}{chapter}} -\def\addtocmark{\@ifnextchar[{\@adcmk}{\@adcmk[3]}} - -\def\l@chapter#1#2{\addpenalty{-\@highpenalty} - \vskip 1.0em plus 1pt \@tempdima 1.5em \begingroup - \parindent \z@ \rightskip \@tocrmarg - \advance\rightskip by 0pt plus 2cm - \parfillskip -\rightskip \pretolerance=10000 - \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip - {\large\bfseries\boldmath#1}\ifx0#2\hfil\null - \else - \nobreak - \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern - \@dotsep mu$}\hfill - \nobreak\hbox to\@pnumwidth{\hss #2}% - \fi\par - \penalty\@highpenalty \endgroup} - -\def\l@title#1#2{\addpenalty{-\@highpenalty} - \addvspace{8pt plus 1pt} - \@tempdima \z@ - \begingroup - \parindent \z@ \rightskip \@tocrmarg - \advance\rightskip by 0pt plus 2cm - \parfillskip -\rightskip \pretolerance=10000 - \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip - #1\nobreak - \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern - \@dotsep mu$}\hfill - \nobreak\hbox to\@pnumwidth{\hss #2}\par - \penalty\@highpenalty \endgroup} - -\def\l@author#1#2{\addpenalty{\@highpenalty} - \@tempdima=15\p@ %\z@ - \begingroup - \parindent \z@ \rightskip \@tocrmarg - \advance\rightskip by 0pt plus 2cm - \pretolerance=10000 - \leavevmode \advance\leftskip\@tempdima %\hskip -\leftskip - \textit{#1}\par - \penalty\@highpenalty \endgroup} - -\setcounter{tocdepth}{0} -\newdimen\tocchpnum -\newdimen\tocsecnum -\newdimen\tocsectotal -\newdimen\tocsubsecnum -\newdimen\tocsubsectotal -\newdimen\tocsubsubsecnum -\newdimen\tocsubsubsectotal -\newdimen\tocparanum -\newdimen\tocparatotal -\newdimen\tocsubparanum -\tocchpnum=\z@ % no chapter numbers -\tocsecnum=15\p@ % section 88. plus 2.222pt -\tocsubsecnum=23\p@ % subsection 88.8 plus 2.222pt -\tocsubsubsecnum=27\p@ % subsubsection 88.8.8 plus 1.444pt -\tocparanum=35\p@ % paragraph 88.8.8.8 plus 1.666pt -\tocsubparanum=43\p@ % subparagraph 88.8.8.8.8 plus 1.888pt -\def\calctocindent{% -\tocsectotal=\tocchpnum -\advance\tocsectotal by\tocsecnum -\tocsubsectotal=\tocsectotal -\advance\tocsubsectotal by\tocsubsecnum -\tocsubsubsectotal=\tocsubsectotal -\advance\tocsubsubsectotal by\tocsubsubsecnum -\tocparatotal=\tocsubsubsectotal -\advance\tocparatotal by\tocparanum} -\calctocindent - -\def\l@section{\@dottedtocline{1}{\tocchpnum}{\tocsecnum}} -\def\l@subsection{\@dottedtocline{2}{\tocsectotal}{\tocsubsecnum}} -\def\l@subsubsection{\@dottedtocline{3}{\tocsubsectotal}{\tocsubsubsecnum}} -\def\l@paragraph{\@dottedtocline{4}{\tocsubsubsectotal}{\tocparanum}} -\def\l@subparagraph{\@dottedtocline{5}{\tocparatotal}{\tocsubparanum}} - -\def\listoffigures{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn - \fi\section*{\listfigurename\@mkboth{{\listfigurename}}{{\listfigurename}}} - \@starttoc{lof}\if@restonecol\twocolumn\fi} -\def\l@figure{\@dottedtocline{1}{0em}{1.5em}} - -\def\listoftables{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn - \fi\section*{\listtablename\@mkboth{{\listtablename}}{{\listtablename}}} - \@starttoc{lot}\if@restonecol\twocolumn\fi} -\let\l@table\l@figure - -\renewcommand\listoffigures{% - \section*{\listfigurename - \@mkboth{\listfigurename}{\listfigurename}}% - \@starttoc{lof}% - } - -\renewcommand\listoftables{% - \section*{\listtablename - \@mkboth{\listtablename}{\listtablename}}% - \@starttoc{lot}% - } - -\ifx\oribibl\undefined -\ifx\citeauthoryear\undefined -\renewenvironment{thebibliography}[1] - {\section*{\refname} - \def\@biblabel##1{##1.} - \small - \list{\@biblabel{\@arabic\c@enumiv}}% - {\settowidth\labelwidth{\@biblabel{#1}}% - \leftmargin\labelwidth - \advance\leftmargin\labelsep - \if@openbib - \advance\leftmargin\bibindent - \itemindent -\bibindent - \listparindent \itemindent - \parsep \z@ - \fi - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand\theenumiv{\@arabic\c@enumiv}}% - \if@openbib - \renewcommand\newblock{\par}% - \else - \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% - \fi - \sloppy\clubpenalty4000\widowpenalty4000% - \sfcode`\.=\@m} - {\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist} -\def\@lbibitem[#1]#2{\item[{[#1]}\hfill]\if@filesw - {\let\protect\noexpand\immediate - \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} -\newcount\@tempcntc -\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi - \@tempcnta\z@\@tempcntb\m@ne\def\@citea{}\@cite{\@for\@citeb:=#2\do - {\@ifundefined - {b@\@citeb}{\@citeo\@tempcntb\m@ne\@citea\def\@citea{,}{\bfseries - ?}\@warning - {Citation `\@citeb' on page \thepage \space undefined}}% - {\setbox\z@\hbox{\global\@tempcntc0\csname b@\@citeb\endcsname\relax}% - \ifnum\@tempcntc=\z@ \@citeo\@tempcntb\m@ne - \@citea\def\@citea{,}\hbox{\csname b@\@citeb\endcsname}% - \else - \advance\@tempcntb\@ne - \ifnum\@tempcntb=\@tempcntc - \else\advance\@tempcntb\m@ne\@citeo - \@tempcnta\@tempcntc\@tempcntb\@tempcntc\fi\fi}}\@citeo}{#1}} -\def\@citeo{\ifnum\@tempcnta>\@tempcntb\else - \@citea\def\@citea{,\,\hskip\z@skip}% - \ifnum\@tempcnta=\@tempcntb\the\@tempcnta\else - {\advance\@tempcnta\@ne\ifnum\@tempcnta=\@tempcntb \else - \def\@citea{--}\fi - \advance\@tempcnta\m@ne\the\@tempcnta\@citea\the\@tempcntb}\fi\fi} -\else -\renewenvironment{thebibliography}[1] - {\section*{\refname} - \small - \list{}% - {\settowidth\labelwidth{}% - \leftmargin\parindent - \itemindent=-\parindent - \labelsep=\z@ - \if@openbib - \advance\leftmargin\bibindent - \itemindent -\bibindent - \listparindent \itemindent - \parsep \z@ - \fi - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand\theenumiv{}}% - \if@openbib - \renewcommand\newblock{\par}% - \else - \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% - \fi - \sloppy\clubpenalty4000\widowpenalty4000% - \sfcode`\.=\@m} - {\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist} - \def\@cite#1{#1}% - \def\@lbibitem[#1]#2{\item[]\if@filesw - {\def\protect##1{\string ##1\space}\immediate - \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} - \fi -\else -\@cons\@openbib@code{\noexpand\small} -\fi - -\def\idxquad{\hskip 10\p@}% space that divides entry from number - -\def\@idxitem{\par\hangindent 10\p@} - -\def\subitem{\par\setbox0=\hbox{--\enspace}% second order - \noindent\hangindent\wd0\box0}% index entry - -\def\subsubitem{\par\setbox0=\hbox{--\,--\enspace}% third - \noindent\hangindent\wd0\box0}% order index entry - -\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax} - -\renewenvironment{theindex} - {\@mkboth{\indexname}{\indexname}% - \thispagestyle{empty}\parindent\z@ - \parskip\z@ \@plus .3\p@\relax - \let\item\par - \def\,{\relax\ifmmode\mskip\thinmuskip - \else\hskip0.2em\ignorespaces\fi}% - \normalfont\small - \begin{multicols}{2}[\@makeschapterhead{\indexname}]% - } - {\end{multicols}} - -\renewcommand\footnoterule{% - \kern-3\p@ - \hrule\@width 2truecm - \kern2.6\p@} - \newdimen\fnindent - \fnindent1em -\long\def\@makefntext#1{% - \parindent \fnindent% - \leftskip \fnindent% - \noindent - \llap{\hb@xt@1em{\hss\@makefnmark\ }}\ignorespaces#1} - -\long\def\@makecaption#1#2{% - \vskip\abovecaptionskip - \sbox\@tempboxa{{\bfseries #1.} #2}% - \ifdim \wd\@tempboxa >\hsize - {\bfseries #1.} #2\par - \else - \global \@minipagefalse - \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% - \fi - \vskip\belowcaptionskip} - -\def\fps@figure{htbp} -\def\fnum@figure{\figurename\thinspace\thefigure} -\def \@floatboxreset {% - \reset@font - \small - \@setnobreak - \@setminipage -} -\def\fps@table{htbp} -\def\fnum@table{\tablename~\thetable} -\renewenvironment{table} - {\setlength\abovecaptionskip{0\p@}% - \setlength\belowcaptionskip{10\p@}% - \@float{table}} - {\end@float} -\renewenvironment{table*} - {\setlength\abovecaptionskip{0\p@}% - \setlength\belowcaptionskip{10\p@}% - \@dblfloat{table}} - {\end@dblfloat} - -\long\def\@caption#1[#2]#3{\par\addcontentsline{\csname - ext@#1\endcsname}{#1}{\protect\numberline{\csname - the#1\endcsname}{\ignorespaces #2}}\begingroup - \@parboxrestore - \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par - \endgroup} - -% LaTeX does not provide a command to enter the authors institute -% addresses. The \institute command is defined here. - -\newcounter{@inst} -\newcounter{@auth} -\newcounter{auco} -\newdimen\instindent -\newbox\authrun -\newtoks\authorrunning -\newtoks\tocauthor -\newbox\titrun -\newtoks\titlerunning -\newtoks\toctitle - -\def\clearheadinfo{\gdef\@author{No Author Given}% - \gdef\@title{No Title Given}% - \gdef\@subtitle{}% - \gdef\@institute{No Institute Given}% - \gdef\@thanks{}% - \global\titlerunning={}\global\authorrunning={}% - \global\toctitle={}\global\tocauthor={}} - -\def\institute#1{\gdef\@institute{#1}} - -\def\institutename{\par - \begingroup - \parskip=\z@ - \parindent=\z@ - \setcounter{@inst}{1}% - \def\and{\par\stepcounter{@inst}% - \noindent$^{\the@inst}$\enspace\ignorespaces}% - \setbox0=\vbox{\def\thanks##1{}\@institute}% - \ifnum\c@@inst=1\relax - \gdef\fnnstart{0}% - \else - \xdef\fnnstart{\c@@inst}% - \setcounter{@inst}{1}% - \noindent$^{\the@inst}$\enspace - \fi - \ignorespaces - \@institute\par - \endgroup} - -\def\@fnsymbol#1{\ensuremath{\ifcase#1\or\star\or{\star\star}\or - {\star\star\star}\or \dagger\or \ddagger\or - \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger - \or \ddagger\ddagger \else\@ctrerr\fi}} - -\def\inst#1{\unskip$^{#1}$} -\def\fnmsep{\unskip$^,$} -\def\email#1{{\tt#1}} -\AtBeginDocument{\@ifundefined{url}{\def\url#1{#1}}{}% -\@ifpackageloaded{babel}{% -\@ifundefined{extrasenglish}{}{\addto\extrasenglish{\switcht@albion}}% -\@ifundefined{extrasfrenchb}{}{\addto\extrasfrenchb{\switcht@francais}}% -\@ifundefined{extrasgerman}{}{\addto\extrasgerman{\switcht@deutsch}}% -}{\switcht@@therlang}% -} -\def\homedir{\~{ }} - -\def\subtitle#1{\gdef\@subtitle{#1}} -\clearheadinfo -% -\renewcommand\maketitle{\newpage - \refstepcounter{chapter}% - \stepcounter{section}% - \setcounter{section}{0}% - \setcounter{subsection}{0}% - \setcounter{figure}{0} - \setcounter{table}{0} - \setcounter{equation}{0} - \setcounter{footnote}{0}% - \begingroup - \parindent=\z@ - \renewcommand\thefootnote{\@fnsymbol\c@footnote}% - \if@twocolumn - \ifnum \col@number=\@ne - \@maketitle - \else - \twocolumn[\@maketitle]% - \fi - \else - \newpage - \global\@topnum\z@ % Prevents figures from going at top of page. - \@maketitle - \fi - \thispagestyle{empty}\@thanks -% - \def\\{\unskip\ \ignorespaces}\def\inst##1{\unskip{}}% - \def\thanks##1{\unskip{}}\def\fnmsep{\unskip}% - \instindent=\hsize - \advance\instindent by-\headlineindent - \if!\the\toctitle!\addcontentsline{toc}{title}{\@title}\else - \addcontentsline{toc}{title}{\the\toctitle}\fi - \if@runhead - \if!\the\titlerunning!\else - \edef\@title{\the\titlerunning}% - \fi - \global\setbox\titrun=\hbox{\small\rm\unboldmath\ignorespaces\@title}% - \ifdim\wd\titrun>\instindent - \typeout{Title too long for running head. Please supply}% - \typeout{a shorter form with \string\titlerunning\space prior to - \string\maketitle}% - \global\setbox\titrun=\hbox{\small\rm - Title Suppressed Due to Excessive Length}% - \fi - \xdef\@title{\copy\titrun}% - \fi -% - \if!\the\tocauthor!\relax - {\def\and{\noexpand\protect\noexpand\and}% - \protected@xdef\toc@uthor{\@author}}% - \else - \def\\{\noexpand\protect\noexpand\newline}% - \protected@xdef\scratch{\the\tocauthor}% - \protected@xdef\toc@uthor{\scratch}% - \fi - \addtocontents{toc}{\noexpand\protect\noexpand\authcount{\the\c@auco}}% - \addcontentsline{toc}{author}{\toc@uthor}% - \if@runhead - \if!\the\authorrunning! - \value{@inst}=\value{@auth}% - \setcounter{@auth}{1}% - \else - \edef\@author{\the\authorrunning}% - \fi - \global\setbox\authrun=\hbox{\small\unboldmath\@author\unskip}% - \ifdim\wd\authrun>\instindent - \typeout{Names of authors too long for running head. Please supply}% - \typeout{a shorter form with \string\authorrunning\space prior to - \string\maketitle}% - \global\setbox\authrun=\hbox{\small\rm - Authors Suppressed Due to Excessive Length}% - \fi - \xdef\@author{\copy\authrun}% - \markboth{\@author}{\@title}% - \fi - \endgroup - \setcounter{footnote}{\fnnstart}% - \clearheadinfo} -% -\def\@maketitle{\newpage - \markboth{}{}% - \def\lastand{\ifnum\value{@inst}=2\relax - \unskip{} \andname\ - \else - \unskip \lastandname\ - \fi}% - \def\and{\stepcounter{@auth}\relax - \ifnum\value{@auth}=\value{@inst}% - \lastand - \else - \unskip, - \fi}% - \begin{center}% - \let\newline\\ - {\Large \bfseries\boldmath - \pretolerance=10000 - \@title \par}\vskip .8cm -\if!\@subtitle!\else {\large \bfseries\boldmath - \vskip -.65cm - \pretolerance=10000 - \@subtitle \par}\vskip .8cm\fi - \setbox0=\vbox{\setcounter{@auth}{1}\def\and{\stepcounter{@auth}}% - \def\thanks##1{}\@author}% - \global\value{@inst}=\value{@auth}% - \global\value{auco}=\value{@auth}% - \setcounter{@auth}{1}% -{\lineskip .5em -\noindent\ignorespaces -\@author\vskip.35cm} - {\small\institutename} - \end{center}% - } - -% definition of the "\spnewtheorem" command. -% -% Usage: -% -% \spnewtheorem{env_nam}{caption}[within]{cap_font}{body_font} -% or \spnewtheorem{env_nam}[numbered_like]{caption}{cap_font}{body_font} -% or \spnewtheorem*{env_nam}{caption}{cap_font}{body_font} -% -% New is "cap_font" and "body_font". It stands for -% fontdefinition of the caption and the text itself. -% -% "\spnewtheorem*" gives a theorem without number. -% -% A defined spnewthoerem environment is used as described -% by Lamport. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\def\@thmcountersep{} -\def\@thmcounterend{.} - -\def\spnewtheorem{\@ifstar{\@sthm}{\@Sthm}} - -% definition of \spnewtheorem with number - -\def\@spnthm#1#2{% - \@ifnextchar[{\@spxnthm{#1}{#2}}{\@spynthm{#1}{#2}}} -\def\@Sthm#1{\@ifnextchar[{\@spothm{#1}}{\@spnthm{#1}}} - -\def\@spxnthm#1#2[#3]#4#5{\expandafter\@ifdefinable\csname #1\endcsname - {\@definecounter{#1}\@addtoreset{#1}{#3}% - \expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand - \csname the#3\endcsname \noexpand\@thmcountersep \@thmcounter{#1}}% - \expandafter\xdef\csname #1name\endcsname{#2}% - \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% - \global\@namedef{end#1}{\@endtheorem}}} - -\def\@spynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname - {\@definecounter{#1}% - \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}% - \expandafter\xdef\csname #1name\endcsname{#2}% - \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#3}{#4}}% - \global\@namedef{end#1}{\@endtheorem}}} - -\def\@spothm#1[#2]#3#4#5{% - \@ifundefined{c@#2}{\@latexerr{No theorem environment `#2' defined}\@eha}% - {\expandafter\@ifdefinable\csname #1\endcsname - {\global\@namedef{the#1}{\@nameuse{the#2}}% - \expandafter\xdef\csname #1name\endcsname{#3}% - \global\@namedef{#1}{\@spthm{#2}{\csname #1name\endcsname}{#4}{#5}}% - \global\@namedef{end#1}{\@endtheorem}}}} - -\def\@spthm#1#2#3#4{\topsep 7\p@ \@plus2\p@ \@minus4\p@ -\refstepcounter{#1}% -\@ifnextchar[{\@spythm{#1}{#2}{#3}{#4}}{\@spxthm{#1}{#2}{#3}{#4}}} - -\def\@spxthm#1#2#3#4{\@spbegintheorem{#2}{\csname the#1\endcsname}{#3}{#4}% - \ignorespaces} - -\def\@spythm#1#2#3#4[#5]{\@spopargbegintheorem{#2}{\csname - the#1\endcsname}{#5}{#3}{#4}\ignorespaces} - -\def\@spbegintheorem#1#2#3#4{\trivlist - \item[\hskip\labelsep{#3#1\ #2\@thmcounterend}]#4} - -\def\@spopargbegintheorem#1#2#3#4#5{\trivlist - \item[\hskip\labelsep{#4#1\ #2}]{#4(#3)\@thmcounterend\ }#5} - -% definition of \spnewtheorem* without number - -\def\@sthm#1#2{\@Ynthm{#1}{#2}} - -\def\@Ynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname - {\global\@namedef{#1}{\@Thm{\csname #1name\endcsname}{#3}{#4}}% - \expandafter\xdef\csname #1name\endcsname{#2}% - \global\@namedef{end#1}{\@endtheorem}}} - -\def\@Thm#1#2#3{\topsep 7\p@ \@plus2\p@ \@minus4\p@ -\@ifnextchar[{\@Ythm{#1}{#2}{#3}}{\@Xthm{#1}{#2}{#3}}} - -\def\@Xthm#1#2#3{\@Begintheorem{#1}{#2}{#3}\ignorespaces} - -\def\@Ythm#1#2#3[#4]{\@Opargbegintheorem{#1} - {#4}{#2}{#3}\ignorespaces} - -\def\@Begintheorem#1#2#3{#3\trivlist - \item[\hskip\labelsep{#2#1\@thmcounterend}]} - -\def\@Opargbegintheorem#1#2#3#4{#4\trivlist - \item[\hskip\labelsep{#3#1}]{#3(#2)\@thmcounterend\ }} - -\if@envcntsect - \def\@thmcountersep{.} - \spnewtheorem{theorem}{Theorem}[section]{\bfseries}{\itshape} -\else - \spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape} - \if@envcntreset - \@addtoreset{theorem}{section} - \else - \@addtoreset{theorem}{chapter} - \fi -\fi - -%definition of divers theorem environments -\spnewtheorem*{claim}{Claim}{\itshape}{\rmfamily} -\spnewtheorem*{proof}{Proof}{\itshape}{\rmfamily} -\if@envcntsame % alle Umgebungen wie Theorem. - \def\spn@wtheorem#1#2#3#4{\@spothm{#1}[theorem]{#2}{#3}{#4}} -\else % alle Umgebungen mit eigenem Zaehler - \if@envcntsect % mit section numeriert - \def\spn@wtheorem#1#2#3#4{\@spxnthm{#1}{#2}[section]{#3}{#4}} - \else % nicht mit section numeriert - \if@envcntreset - \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} - \@addtoreset{#1}{section}} - \else - \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} - \@addtoreset{#1}{chapter}}% - \fi - \fi -\fi -\spn@wtheorem{case}{Case}{\itshape}{\rmfamily} -\spn@wtheorem{conjecture}{Conjecture}{\itshape}{\rmfamily} -\spn@wtheorem{corollary}{Corollary}{\bfseries}{\itshape} -\spn@wtheorem{definition}{Definition}{\bfseries}{\itshape} -\spn@wtheorem{example}{Example}{\itshape}{\rmfamily} -\spn@wtheorem{exercise}{Exercise}{\itshape}{\rmfamily} -\spn@wtheorem{lemma}{Lemma}{\bfseries}{\itshape} -\spn@wtheorem{note}{Note}{\itshape}{\rmfamily} -\spn@wtheorem{problem}{Problem}{\itshape}{\rmfamily} -\spn@wtheorem{property}{Property}{\itshape}{\rmfamily} -\spn@wtheorem{proposition}{Proposition}{\bfseries}{\itshape} -\spn@wtheorem{question}{Question}{\itshape}{\rmfamily} -\spn@wtheorem{solution}{Solution}{\itshape}{\rmfamily} -\spn@wtheorem{remark}{Remark}{\itshape}{\rmfamily} - -\def\@takefromreset#1#2{% - \def\@tempa{#1}% - \let\@tempd\@elt - \def\@elt##1{% - \def\@tempb{##1}% - \ifx\@tempa\@tempb\else - \@addtoreset{##1}{#2}% - \fi}% - \expandafter\expandafter\let\expandafter\@tempc\csname cl@#2\endcsname - \expandafter\def\csname cl@#2\endcsname{}% - \@tempc - \let\@elt\@tempd} - -\def\theopargself{\def\@spopargbegintheorem##1##2##3##4##5{\trivlist - \item[\hskip\labelsep{##4##1\ ##2}]{##4##3\@thmcounterend\ }##5} - \def\@Opargbegintheorem##1##2##3##4{##4\trivlist - \item[\hskip\labelsep{##3##1}]{##3##2\@thmcounterend\ }} - } - -\renewenvironment{abstract}{% - \list{}{\advance\topsep by0.35cm\relax\small - \leftmargin=1cm - \labelwidth=\z@ - \listparindent=\z@ - \itemindent\listparindent - \rightmargin\leftmargin}\item[\hskip\labelsep - \bfseries\abstractname]} - {\endlist} - -\newdimen\headlineindent % dimension for space between -\headlineindent=1.166cm % number and text of headings. - -\def\ps@headings{\let\@mkboth\@gobbletwo - \let\@oddfoot\@empty\let\@evenfoot\@empty - \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% - \leftmark\hfil} - \def\@oddhead{\normalfont\small\hfil\rightmark\hspace{\headlineindent}% - \llap{\thepage}} - \def\chaptermark##1{}% - \def\sectionmark##1{}% - \def\subsectionmark##1{}} - -\def\ps@titlepage{\let\@mkboth\@gobbletwo - \let\@oddfoot\@empty\let\@evenfoot\@empty - \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% - \hfil} - \def\@oddhead{\normalfont\small\hfil\hspace{\headlineindent}% - \llap{\thepage}} - \def\chaptermark##1{}% - \def\sectionmark##1{}% - \def\subsectionmark##1{}} - -\if@runhead\ps@headings\else -\ps@empty\fi - -\setlength\arraycolsep{1.4\p@} -\setlength\tabcolsep{1.4\p@} - -\endinput -%end of file llncs.cls diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/parallels.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/parallels.eps deleted file mode 100755 index 6f199be64c..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/parallels.eps +++ /dev/null @@ -1,124 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1,17 by Peter Kirchgessner -%%Title: parallels.eps -%%CreationDate: Thu Jun 7 01:27:03 2007 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 14 14 249 244 -%%EndComments -%%BeginProlog -% Use own dictionary to avoid conflicts -10 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -14.173228346456694 14.173228346456694 translate -% Translate to begin of first scanline -0 229 translate -234 -229 scale -% Image geometry -234 229 8 -% Transformation matrix -[ 234 0 0 229 0 0 ] -currentfile /ASCII85Decode filter /RunLengthDecode filter -%%BeginData: 7039 ASCII Bytes -image -JcD):JcD):Sc@UJSH#_knGqMIn,TTj\c;=&^]3s,\c9JFq>dGnq>e>2a8bu9RK*-a`rF<`qZ)TT -q>ee?df94FJcGcMr;b7Ff)P[KJcGHDquG=Jg].0OJcG-;r;bROhuEWTJcFg2r;b^SirAuXJcFO* -rW(pWjo>;[JcF=$r;bsZkl:V^JcF'rrW)0^li6qaJcEjlrW)9amJm1dJcEXfrrDHdn,NCfJcELb -rrDNfnc/UhJcE@^rrDThoDegjJcE4ZrrDZjp&G$lJcE(VrrD`lp](6nJcDqRrrDfnq#:UEpJcD_L!!)ipqYpNqJcDYJ!!)lqqu6WrJcDSH!!)orrVultJcDMF!!)rsrVlitJcDGD -!!)utrr2ruJcDAB!!*#urr2ruJcDAB!!*#us8N'!JcD>A!!*#us8N'!JcD;@!W`9#s8N'!JcD;@ -!W`9#!WN.Ns.')j!<<*!rr<%Ms.0/k!<<*!rr<%Ms.0/k!<<*!rr<%Ms.95j!<3#trr<%Ms.B;k -!<3#us8N(Ms.B>k!<<*!rrN3#!.k0Ds8N)us8N&t!.k0Fs8N)ts8Ds!!<3%Ms/#bq!;ulprrN3# -!.k0JrrN3#!;ulorrN3#!.k0LrrN3#!;lfnrrW9$rr@WMXT/;#!WN/rs8)`u!<<'!!.k0RrrW9$ -rrDlpq>UEprr;uuJcE(VrrE&u!!)ipq#:^HpJcEXfrrDoq!!)]lp&>!lq#Ccuaq>f4K -!!)Kfn,E@fhu!!(=E!!)EdmJd.dhurr<&Xrr<&Hrr<&err<&brr<&Irr<&Zs5X+Z!9*qX!7CfH!:Kje!:9^c!7CfH!9=+>rr<&X -rr<&Hrr<&err<&crr<&Irr<&Ys5O%Y!94"Y!7:`G!:Tpf!:9^c!7LlI!94%*>!9!n9rr<&Rrr<&Es8N)qrr<&prr<&>rr<&Ws5EtX -!8IMR!6tND!;c]q!;c]q!65$=!9!n9rr<&Rrr<&Drr<&qrr<&qrr<&UEprr;uurr2ruc2RbD -jo=KC!!([O!!("<"9AH%rrBY1!!)0]k5PD]f`(pO`r?5Cs8N*!rrB\2!!)0]kPkM^fDbgN`r?5C -s8N*!rrB\2!!)0]kPkM^f`(pO`W$#?s8N)urr<&3rr<&]s6'C^!8.;O!65$=!<2uu!<2uu!5&72 -!9aCFrr<&Orr<&=rr<&urr<&trr<&3rr<&^s60I_!8%5N!6>*>!<)ot!<)ot!5/=3!9aCGrr<&O -rr<&=rr<&trr<&srr<&3rr<&_s69O`!8%5N!6>*>!;uis!;uis!5/=3!9jIIrr<&Nrr<&>rr<&s -rr<&rrr<&3rr<&`s6BUa!7q/M!6>*>!;uis!;lcr!5/=3!9sOKrr<&Nrr<&>rr<&rrr<&rrr<&2 -rr<&as6K[b!7q/M!6>*>!;lcr!;c]q!5/=3!:'UMrr<&Mrr<&?rr<&qrr<&qrr<&2rr<&bs6Tac -!7h)L!6G0?!;c]q!;ZWp!5/=3!:0[Orr<&Mrr<&?rr<&prr<&prr<&2rr<&cs6]gd!7h)L!6G0? -!;ZWp!;QQo!5/=3!:9aQrr<&Lrr<&?rr<&prr<&orr<&2rr<&ds6fme!7h)L!6G0?!;QQo!;HKn -!5/=3!:BgSrr<&Lrr<&?rr<&orr<&nrr<&2rr<&es6osf!7_#K!6P6@!;HKn!;HKn!5&72!:KmU -rr<&Krr<&@rr<&nrr<&mrr<&2rr<&fs7$$g!7_#K!6G0?!;HKn!;?Em!5&72!:TsWrr<&Krr<&@ -rr<&mrr<&lrr<&2rr<&gs7-*h!7UrJ!6P6@!;?Em!;6?l!5&72!:^$Yrr<&Krr<&@s8N)mrr<&k -rr<&2rr<&hs760i!7UrJ!6P6@!;6?l!;-9k!5&72!:g*\rr<&Irr<&@rr<&lrr<&ks8N)2rr<&i -s7?6j!7LlI!6Y->!:TsTs8N)Yrr<&> -rr<&err<&brr<&@s8N)ds6K^b!9F.[!6G3?!:Kje!:0[b!6kKC!:0[Ls8N)]rr<&?rr<&drr<&a -rr<&Es8N)`s6'F^!9sL`!6>*>!:Bdd!:'Ra!7:cG!9aCDs8N)brr<&>rr<&drr<&arr<&Is8N)\ -s5X.Y!:Kje!6>*>!:Bdd!9sL`!7q2L!9=+;s8E#hrr<&=rr<&drr<&`rr<&Ps8E#Vs5!_S!;6?l -!6>*>!:9^c!9sL`!8RVR!8[\/s8E#nrr<&>rr<&crr<&`rr<&Vs8E#Ps4@;N!;lcr!65$=!:9^c -!9jF_!9=+Y!8%8$s8E#trr<&=rr<&crr<&_rr<&]s8E#Js3grG!65$=!:9^c!9jF_!9sO_!7Chn -s8;r=rr<&crr<&_rr<&cs8E#Ds3UcG!<3#t!6bBB!:9^c!9a@^!:^$f!6bDas8;rErr<&brr<&^ -rr<&ks8;r=s2G$9!7h)L!:0Xb!9a@^!;ZZm!6"oQs82lNrr<&brr<&]rrN3#s82l3s1A=/!8meV -!:0Xb!9jI\!4r3=s82lXrr<&brr<&ds82l)s0;V%!9sL`!:0Xb!:p0f!3lL)s7HBbrr<&brr<&u -s7HAms.KD_!;QTb!2':Vrr<&us7cTfrr<%hs*t~> -%%EndData -showpage -%%Trailer -end -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/parallels.png b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/parallels.png deleted file mode 100755 index bdd761b8c7..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/parallels.png and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/parcours_bfs.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/parcours_bfs.eps deleted file mode 100755 index 3a4f4ba296..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/parcours_bfs.eps +++ /dev/null @@ -1,3537 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner -%%Title: parcours_bfs.eps -%%CreationDate: Thu Jun 7 15:24:13 2007 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 14 14 547 527 -%%EndComments -%%BeginProlog -% Use own dictionary to avoid conflicts -10 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -14.173228346456694 14.173228346456694 translate -% Translate to begin of first scanline -0 512.01073964115142 translate -532.37480314960635 -512.01073964115142 scale -% Image geometry -732 704 8 -% Transformation matrix -[ 732 0 0 704 0 0 ] -% Strings to hold RGB-samples per scanline -/rstr 732 string def -/gstr 732 string def -/bstr 732 string def -{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} -true 3 -%%BeginData: 182313 ASCII Bytes -colorimage -quD:2JN\QIJN\QIY -quD:/JNA?CJNA?CY<)R]J,~> -quD:,JN&-=JN&-=Y;c@ZJ,~> -rW)s]JcC<$JcC<$JcDqRs#p>]J,~> -rW)sZJcC<$JcC<$JcDqRs#U,ZJ,~> -rW)sWJcC<$JcC<$JcDqRs#9oWJ,~> -rr<*`s8RZ=Ja\0YJa\0YYODMk!^-M`J,~> -rr<*]s8RZ:Ja@sSJa@sSYO);h!]g;]J,~> -rr<*Zs8RZ4J`_OGJ`_OGYNGlb!]L)ZJ,~> -!WYC`JaJ$UJaJ$UJaMRdo8ie9o8ie9o8ik;!nKL7J,~> -!WY:]Ja.gOJa.gOJa2@^o7Qr*o7Qr*o7R#,!mWh,J,~> -!WY1ZJ`D=AJ`D=AJ`GkPo5OTeo5OTeo5OZg!lHqsJ,~> -!WYC`Ja@sSJa@sSJaDOc!0?aO!K[9[li<+ -!WY:]J`q[KJ`q[KJ`u7[!/'nC!JCFOkQ$8,rrIcProa?7oD]#Is6/[l3WO[~> -!WY1ZJ`21=J`21=J`5bM!-%Q0!HA) -!BpI6l@J5Ol@J5OlK7@4O8nh="mV0KlAtu:m02d9s6>[FoBcbIO8nM1eieN~> -!BU73k(2ZGk(2ZGk2te,KE(Q-"m1I;k(E^*klp4%s5nt6oB?JAKE()rc8pI~> -!B:%0hgs[9hgs[9hr`esE<#Oi"lF;!hf/Veis"=Zs5.eqoA^&4E<"hQ_`*)~> -!BpJ\kl>etFTI3YJa%aMJa%aMJa*$q!K[9PlNQO6rooLDoBQSEO8eC)s7>O\l&Yi.l./"J~> -!BU8Yj8a8oGl`TWJ`MCCJ`MCCJ`Q[g!JCFDk69q!roA_3oB-;CXjFdHmjN]f:~> -!B:&Vg]2EgHi\iPJ_Yh3J_Yh3J_^+W!HA)1i1Rgi38Jgqu($~> -!BpJ\k5\'G0*+GsJ`hUI_rq%"s6'C^J`hUI^?5NXs7>LZkE#T)O8nh:"m:sFkE#Z7l3?F4rTE@p -4b*~> -!BU8YiW*!N9*!Xridp+,ir9#Yir9"0idp+'iW4]3oAp/8KDje^s7>=Uie.3hKE(Q)#3(:6io86E -J,~> -!B:&Vg&PXUB`V,ZJ_G\/_qP+js4[JQJ_G\/^=iU,s7>+Og2R#EE<#Oe"kmqog2R)`hZheRrS#uC -2h1~> -!BpJ\jpmm?j5oFelKmp,nac=$h1=^>k0iDg!;YdW!<;3]!<;3]!.j9`k/-6]O8nh8"m1mEk)]QA -kkP5XkQU+0rT91@roj@^rTO7]roaRKO8\5'eieN~> -!BU8Yi!u78j5oFelKmp,nFH4#f7Dk2i6pQ[!;YRQ!<;!W!<;!W!.j'Zi54CQKE(Q("lP%2i.M(/ -jS8fTj9=Ior8<5-roF(ZrT*tYro=:AKDaZcc8pI~> -!B:&VfFFD0j5oIflKdj+nFH4!d"0i#f[AFK!;Y:I!<:^O!<:^O!.idRfYZ8AE<#Oc"k[elfPpli -h>%'Mh$)GMr7Gugrn[SSrS@JRrnRe2E;\A@_`*)~> -!BpJ\jURg@jQ>Xilg=-0o(2O(gk"Rroa7\s6'@]roXLIO8S,$eieN~> -!BU8Yh[Z19jQ>Xilg=-0nalF&eq)_0hpUE^!;,1K!;k[R!.j$Yhnn7OKE(Q&"lFt1hh1t.iqWTR -iW\4lr83/,ro3nWs5O"Xro+.>KDaWac8pI~> -!B:&Vf++>1jQ>[jlg4'/nalF$c[j]!f@&:N!;+nC!;kCJ!.iaQf>?,?E<#Oa"kR_jf5Uchg\CjK -gBH2Jqq#fernIDPs4dMQrn@Y/E;S8=_`*)~> -!BpJ\jURgAjlbmnm-X93o(;X+gk"R -!BU8Yh[Z.:jlbjmm-a?4oCVa+eq)_0hpUE^!;YL[HlE27N;rt9hZ*Z6quHcS%Gc.G!ul@ -!B:&Vede52jlbjmm-a?4oCVa)c@OPtf$`.L!;Y1RG8^T/LB%>*ec5^$quHcJ%Ff>8!uc..f%'g$ -HPcj9eq)E%ecBaio@X;uE;J.)s8L[O!;kFL!<1XTeo:K:E<#miqZ-TJ#1dbif%._tJ,~> -!BpJ\j:7^Ak32*rmI'K7o_%s/gO\F:jO3,h!;baeJcJBjdRaE=jQ$:@jQ$:@rT"B2!+t"u!-mSc -!!$0TJ`MCCe)UOjs754RO8J"!s8M'Z!;kgW!<(s]O8J"!s8:sV!;kg\O8J#!eieN~> -!BU8Yh@?(;k32*rmI0Q8o_%s-eUcS.hU:9\!;bO_IK2m_bsqa6hVJ54hVJ54rS@s)!+XSi!-R/T -!!$'LJ_kt7e(t+Xs7>+OhLk[]KE(r.!!)oR!!*#U"l=n.hLkk+hu*QQhZhqiqVL)S3e.~> -!B:&Vede53k32*rmI'K7o_%s,c@OPtf$`.L!;b7WH2pCQ`C0b,f%'g$f%'g$rRMBr!+=)[!-$N? -!!#sAJ_#D'e(+P=s7=hGeo:H9E<#ph!!)oJ!!*#M"kIYgeo:ZefDP^If*9fFq:=-72h1~> -!BpJ\j:7^BkNV=!mdTc*!7'ZM!$((\ -!!(;qjFQC?j8k>AoA^#8O8J"!s8M$Y!;kdV!<2!^jH'3!O8o. -!BU8Yh@?(;kiqF"mdTcr9/o%jM%qVHl)rn[VTqq_;QrS@[0qVHl)r8.APqq_L/qVL)S3e.~> -!B:&VeIJ,3kNV=!mdTc -!BpJ\isqXCkj%O%n+#u@p@nB6g4A:8j3luf!;b^d"9@B?j50h:j5U+>j5U+>rSn4f!9)tr!!M?B -!!%T1J`G/ -!BU8Yh%$"=kj%O&n+#u@p@nB4e:HG,h9t-Z!;bL^!s%'2h:_i/h;&&2h;&&2rS7e_!8H>`!!D'5 -!!%T+J_e`0!JCFDg]cMdq;$]'rnIJRqqM/OrnI\5KDF>Us8CaM!<([Wh1POZh9J'3~> -!B:&Ve./&4kj%O%n+#u@p%S91b^n8peC)kH!;b1U!s$d!eBn6reC4HueC4HurR;/V!7KBF!!Ca# -!!%T"J^i)s!HA)1dfn6?pXF0^rmLiIqpPNFrmM&#E;.k$s8CFD!<(@Ne8Y03eAF4q~> -!BpJ\isq[El0Ia)nFH2Dp\=T9g4A:8j3luf!;b^d*WX4?j2Cuuj5U+>j5U+>rSn5&!6sQJ!$(%Z -!!%T1J`G/ -!BU8Yh%$%?l0Ia)nF?,Cp\=T7e:HG,h9t-Z!;bL^*<Pqq;#Mrn7P3KD=8Ts8LaO!<:dP!<1[Vh1PLYh9J'3~> -!B:&Ve./)6l0Ia)nFH2Dp\FZ6b^n8peC)kH!;b1U*!!P!e@5JYeC4HueC4HurR;/j!5I$t!#jA: -!!%T"J^i)s!HA)BDrm:o!E;%e#s8LFF!<:IG!<1@Me8Y-2eAF4q~> -!BpJ\iXVUFlg4'.nalDHq"afio8NPJ,~> -!BU8Yg^]q?lg4'/nalGIp\F]:dt-;*gsY!X!;bI^I/ld\bXVX5gtVl0gtW;<^]*!qB`MVl@K:H( -g].>*gk"8.g]<'-rn7)Irn.J1KD4/Rs8L^I!<1XTgk5@VKE(r(rrE#NrrE&O#2Fk*gt^19J,~> -!B:&Vdgi#7lg4'.nalDHq"af9bCS,ne'c_F!;b.UGQ:.K_aFJ)e'e9se'e^*\,Oh`AH6&\?3"ik -df9B!dt,uqdfFFfrm1B?rm(bsE:q\!s8L@?!<1:Jdr>!/E<#p`rrE#DrrE&E#1IPae'l2nJ,~> -!BpJ\iWa1GI!pElIf=isJ-(:Bg4A77imQi_!<1suI2`;6NW9(=iW&u):!K[9Ph?Do"pu7A7oA0Z1O8.^qs7>(OifEloimp8C~> -!BU8Yg]hM?H[L3hIK"]qIfb.=e:HD+gsY!S!<1aoH5Zl0M?!Y3g].?0gis;/!8QA^B,:XfE8'+& -!!%T*J_\Z.!JCFDf*0r^pY:E$o@F0$KD4/Rs7=hHgk5@Vgs.s2~> -!B:&VdfjB0H$Xd`rI"Wn!e+t0J^]2!daS$mrmMm1)$;"7!!(Ks!!(KsEt&*Le'lWP('5=hdF6PE -!.iUMe'ZVFE<#OS"k.G_dr>?YbluR8o[@dZo?@KgE:hW._`*)~> -!BpJ\huML(ecFC[J`)+;J`)+;J`-C_!K[9Pg]cVspu%55o@sN-O8.Xos7>"Mi/dZki7:&A~> -!BU8Yg&TXpd/_jNg4@t/g4@t/gA9M(KE(Po"knV&g4TFsecjc[p=b0!o@=-"KD+$Qc8pI~> -!B:&VciD5]`rX9-J^AtpJ^AtpJ^F8?!HA)1b6?73o?_IVo?. -!BpI6hLXO7hLXO7hWEYqO8nh+"l>=7hN.^.gBHGppYLu2o@jK+O8%MfeieN~> -!BU73fR_\+fR_\+f]LfeKE(Pm"k\J#fRs4qe-4KWp"4oso@*usKD!mLc8pI~> -!B:%0c@O8lc@O8lcK`gTaT]t/o$24So>q3^E:V<"_`*)~> -!BpI6h1=C5h1=C5h -!BU73eq)D'eq)D'f&bH_KCd.bKD#5p!/'ma!JC(Eec:?oa8pqdrmh+q3e.~> -!B:%0b^muhb^muhbiR%KE:^[BE:NqO!-%PA!H@T.bQ)VR])cm@rlbD\2h1~> -!BpI6gO\+1gO\+1gZ@/ip[aFGp\ihHp[aFGp\ihHp[aFGp\ihIeieN~> -!BU73e:H,#e:H,#eE,0[p%*e9p&3A?p%*e9p&3A?p%*e9p&3A@c8pI~> -!B:%0aaqQbaaqQbalUVEnag]"nbpQ0nag]"nbpQ0nag]"nbpQ1_`*)~> -!BpI6fn%h-fn%h-g#UiXp\WY8p\WY8p\`\FeieN~> -!BU73dXfhtdXfhtdcAjJp&!2/p&!2/p&*5=c8pI~> -!B:%0a+;9^a+;9^a5k;4nb^Aunb^AunbgE._`*)~> -!BpI6eq)D'eq)D'eu7."4b*~> -!BU73c@O8lc@O8lcD]"g3e.~> -!B:%0_h#^V_h#^V_l1HQ2h1~> -!'Pn%JXV.YJXV.YVj[TKJ,~> -!'5[kJW>;AJW>;AViCa -!&oIVJUE#rJUE#rVgJJ'J,~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpJTm=FVTm"+MSm"+N@m.BZGeieN~> -!BU8Ql%/&Lk^hrKk^hs8kk+*?c8pI~> -!B:&Nj+63@idp*?idp+,iq273_`*)~> -!BpJTm=FVTm"+MSm"+N@m.BZGeieN~> -!BU8Ql%/&Lk^hrKk^hs8kk+*?c8pI~> -!B:&Nj+63@idp*?idp+,iq273_`*)~> -!BpJTm=FVTm"+MSm"+N@m.BZGeieN~> -!BU8Ql%/#KkCMfIkCMg6kOe!>c8pI~> -!B:&Nj+60?iITs=iITt*iUl.2_`*)~> -!BpJTm=FSSl[eAQl[eB>lh'QFeieN~> -!BU8Ql%/#KkCMfIkCMg6kOe!>c8pI~> -!B:&Nj+60?iITs=iITt*iUl.2_`*)~> -!BpJTm=FSSl[eAQl[eB>lh'QFeieN~> -!BU8Ql%/#KkCMfIkCMg6kOe!>c8pI~> -!B:&Nj+6->i.9g;i.9h(i:Q%1_`*)~> -!BpJTm=FSSl[eAQl[eB>lh'QFeieN~> -!BU8Ql%.uJk(2ZGk(2[4k4Im=c8pI~> -!B:&Nj+6->i.9g;i.9h(i:Q%1_`*)~> -!BpJTmI0 -!BU8Ql0ma7!.j9`k(2ZGk(2[Gk4Im=c8pI~> -!B:&Nj6tk*!.j$Yhgs[9hgs\9ht5q0_`*)~> -!BpJTmIKNE!:&hLJa.gOJa.gOJa1hOo^)\14b*~> -!BU8Ql13p -!B:&Nj7;(0!8lZ6J_u%9J_u%9J`#&9o]#ti2h1~> -!BpJTmJ,rD!<)-^!.jBcl%/)Ml%/*Ml1F?DeieN~> -!BU8Ql1jB -!B:&Nj7qL/!<(aS!.j!XhLXO7hLXP7hXoh/_`*)~> -!BpJTmJ,oG!;YjZ!.jBcl%/)Ml%/*Ml1F?DeieN~> -!BU8Ql1j<>!;Y[U!.j3^jFQBCjFQCCjRh[;c8pI~> -!B:&Nj7qI2!;YIO!.j!XhLXO7hLXP7hXoh/_`*)~> -!BpJTmJ,oG!;u'h!9r_Jl07>J'*qCiJa%aMJa%aMJa)%Uo^)\14b*~> -!BU8Ql1j<>!;tmc!9E2@jQ,98'*q@cJ`MCCJ`MCCJ`P\Ko]ZD%3e.~> -!B:&Nj7qF1!;tX\!8ZH2h;-du&dV.YJ_bn5J_bn5J_f2=o]#ti2h1~> -!BpJTmJ,lF!;u$g!9iVHkid1SceMT0J`q[KJ`q[KJ`ttSo^)\14b*~> -!BU8Ql1j9=!;tjb!9<)>j5Y5Eb1BX!J`D=AJ`D=AJ`GVIo]ZD%3e.~> -!B:&Nj7qF1!;tX\!8ZH2h;*'5`R7[hJ_bn5J_bn5J_f2=o]#ti2h1~> -!BpJTmJ,oC!"A&kki`$1kT%P)kgL8tk^hrKk^hrKkhbOqm/bd$J,~> -!BU8Ql1j<:!"@lfj5U."iuGhoj3JEjj+66Aj+66Aj5/hgklK'jJ,~> -!B:&Nj7qF-!"@W_gtVnbg`*fZgrL1\gk"73gk"73gtpiYirR%VJ,~> -!BpJTmJ,lF!;u$b!9iVHki`0J!!!%Nk^hrKk^hrKkhbOqm/bd$J,~> -!BU8Ql1j9=!;tj]!9<)>j5U:@!!!%Nj+66Aj+66Aj5/hgklK'jJ,~> -!B:&Nj7q@/!;tRU!8H6.gY2i/!!!%NgO\+1gO\+1gYU]WirR%VJ,~> -!BpJTmJ,iE!;u!b!9`MFkN -!BU8Ql1j6DCo]ZD%3e.~> -!B:&Nj7q@/!;tRV!8H6.gY3UaJ_Pb1J_Pb1J_So5o]#ti2h1~> -!BpJTmJ,iE!;u!f!9`MFkN@(Wa5am0J`hUIJ`hUIJ`knQo^)\14b*~> -!BU8Ql1j6PGo]ZD%3e.~> -!B:&Nj7q=.!;tOY!8?-,g=gR3][sM_J_G\/J_G\/J_Ju7o]#ti2h1~> -!BpJTmJ,iE!;u!f!9`MFkNCrP*!IdZJ`hUIJ`hUIJ`knQo^)\14b*~> -!BU8Ql1j3;!;td`!9)l:iSi[;)[%RSJ`21=J`21=J`5JEo]ZD%3e.~> -!B:&Nj7q=.!;tOY!8?-,g=k2#)[%LLJ_G\/J_G\/J_Ju7o]#ti2h1~> -!BpJTm=FDNk(2ZGk(2[4k4J$AeieN~> -!BU8Ql%.fEiITs=iITt*iUl@8c8pI~> -!B:&Nj+5m7fn%h-fn%hog%=;*_`*)~> -!BpJTm=FDNk(2ZGk(2[4k4J$AeieN~> -!BU8Ql%.cDi.9g;i.9h(i:Q77c8pI~> -!B:&Nj+5m7fn%h-fn%hog%=;*_`*)~> -!BpJTm=FDNk(2ZGk(2[4k4J$AeieN~> -!BU8Ql%.cDi.9g;i.9h(i:Q77c8pI~> -!B:&Nj+5j6fR_\+fR_\mf_"2)_`*)~> -!BpJTm=FAMjalNEjalO2jn.p@eieN~> -!BU8Ql%.cDi.9g;i.9h(i:Q77c8pI~> -!B:&Nj+5j6fR_\+fR_\mf_"2)_`*)~> -!BpJTm=FAMjalNEjalO2jn.p@eieN~> -!BU8Ql%.`Chgs[9hgs\&ht6.6c8pI~> -!B:&Nj+5g5f7DP)f7DPkfC\)(_`*)~> -!BpJTm=F>LjFQBCjFQC0jRhg?eieN~> -!BU8Ql%.`Chgs[9hgs\&ht6.6c8pI~> -!B:&Nj+5g5f7DP)f7DPkfC\)(_`*)~> -!BpJTm=F>LjFQBCjFQC0jRhg?eieN~> -!BU8Ql%.]BhLXO7hLXP$hXp%5c8pI~> -!B:&Nj+5d4eq)D'eq)Dif(@u'_`*)~> -!BpJTm=EE2b(7]db(7^Qb4P'%eieN~> -!BU8Ql%-[%_1BFR_1BG?_=Zsmc8pI~> -!B:&Nj+4OfZ[oH6Z[oI#Zh38Y_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpJTmCB3Im=FYUm=FYUmJcJReieN~> -!BU8Ql+*@9l%/)Ml%/)Ml2KoJc8pI~> -!B:&Nj11,"j+66Aj+66Aj8S'>_`*)~> -!BpJTm/X,tp&M(Cm=FZNm4[>7\Z20[IrA^q91(]o-m'3<&.JsO"TSN+#7:nO',DZ<0f_To -!BU8Qkl@9doDkG5l%/*FkqCc,[\oRPI;N=k8jYKk-Qa*;%h/jN"TSN+#7:nN',DZ;0K;Bk -!B:&NirG%MnGnN!j+67:j"JrqZ(mV@H"pS^83f*e-6 -!BpJTm/a3[]^5]uJaJ$Ug?f76f=[i5D-01Y)?\@e$3M2!6s+;]U:f+EJaJ$Ulg4`(4b*~> -!BU8QklI@I]]fEeJa%aMg?At.e%)*)CK -!B:&NirP,/]]0!NJ`D=Ag>`P"cEs'lBiIAL)$A7d$3M.s5u_QLS$^K#J`D=Alf/#`2h1~> -!BpJTm/a3[]^5]uJaJ$UiU$m'\ -!BU8QklI@I]]fEeJa%aMiTUTt[?Yl8599n#!&"g52b-n\G(uc8pI~> -!B:&NirP,/]]0!NJ`D=AiSt0hY`Ws)4WOUu!&"g52b-n\G(u -!BpJTm/a3[^?l!RoVmE/JaM[g#3WjnF\=7gq#C^91/;VAT!Z]"qpGEMqr,`*Sr%5X1)9Tb"p?JM -Fe$>3JaJ$Uq<\464b*~> -!BU8QklI@I^?G^JnXY6qJa)C_#3 -!B:&NirP,/^>f:?m>QVVJ`GtS#2ZqVE(DJ^q#C^91/;VAT!Z]"qpGEMqr,`*Sr%5X1)9Tb"p?GI -E0\#kJ`D=Aq;VLn2h1~> -!BpJTm/a3[^?l!9ql,/6JaMmm#4'@#D+GfNqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#l -!BU8QklI@I^?G^1qji<&Ja)Ue#3WsnCI]NKqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#l;CRN0) -Ja%aMs60R03e.~> -!B:&NirP,/^>f:'q2BmbJ`H1Y#3!@_Bgj-FqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#i8BpHKm -J`D=As5O-t2h1~> -!BpJTm/a3[^?l!9ql,/6JaN'r"m`XW?S_rb!!WNR;0o"RmB-BmmD5QD;()PE!!NT`?]DP\JaJ-X -!S0Da~> -!BU8QklI@I^?G^1qji<&Ja)dj"m<7M?8;c`!!WNR;0o"RmB-BmmD5QD;()PE!!NT_?Ac,QJa%jP -!R<`V~> -!B:&NirP,/^>f:'q2BmbJ`H@^"lZ\@>;6B\!!WNR;0o"RmB-BmmD5QD;()PE!!NT^>DKHAJ`DFD -!Q-jH~> -!BpJTm/a3[^?l!9ql,/6JaN7""ma3o@P7o_!!OH?Lo]&'U&P;oe>nC$+8c*B"YX>Ma6Sp -4b*~> -!BU8QklI@I^?G^1qji<&Ja)so"mnC$+8c*B"YO2H`92^9M -!B:&NirP,/^>f:'q2BmbJ`HOc"l[4W?7cnC$+8c*B">*r@^Ysb(M;nWS -2h1~> -!BpJTm/a3[kNr6Lg$JjTql,/6JaNC&"Qlk18-Sql"T^YkO2(7Nrrqu.O'apKr;Zs(89V/uJaJHa -!S0Da~> -!BU8QklI@IkNMsHg$&RLqji<&Ja**s"QHJ(7g8hk"T^YkO2(7Nrrqu.O'apKr;Zs(7s(fkJa&0Y -!R<`V~> -!B:&NirP,/kMlOBg#E.Bq2BmbJ`H[g"Pfnp70NPh"T^YkO2(7Nrrqu.O'apKr;Zs'7<,6\J`DaM -!Q-jH~> -!BpJTm/a3[kNr6Lg$JjTql,/6JaEX.g7rC<"oSE(*`S$4o8EVOo>$5_*rQ'A"Yshfg4AXRm/bd$ -J,~> -!BU8QklI@IkNMsHg$&RLqji<&Ja!@&f:Zh4"oSE(*`S$4o8EVOo>$5_*rQ'A"Yj_af7E1KklK'j -J,~> -!B:&NirP,/kMlOBg#E.Bq2BmbJ`?pod@=f&"T8<'*`S$4o8EVOo>$5_*rQ'A">FGXd=L>?irR%V -J,~> -!BpJTm/a3[rp9ae6L=[!l"Q2JaJ-X"QH@p.foVL"9UN%YkWeL"Sf3A2$ -!BU8QklI@IrojIa60S:3!!)TS!!(^:!kS9"Ja%jP"Q$"h.KTMK"9UN%YkWeL"Sf3A2$ -!B:&NirP,/ro4%[5N;Y%!!)TM!!(^4!k.o`J`DFD"PBDZ.09DJ"9UN%YkWeL"Sf3A2$ -!BpJTm/a3[rp9ae!l"Q2JaJ6["1`V8"o\K)$:0-QoR[&?!! -!BU8QklI@IrojIa;hk88!!)TS!!(^:!kS9"Ja%sS"1E>3"o\K)$:0-QoR[&?!! -!B:&NirP,/ro4%[;1ni-!!)TM!!(^4!k.o`J`DOG"0ll)"TAB($:0-QoR[&?!! -!BpJTm/a3[rp9dfh^-ACm2l>qmH.[`%:J>cmH.OX'n?;OmHSX)#Z9RJmAVK;*KK@N!l"Q2JaJB_ -"5&l8&,lP3"?:eDpjrJ8rri,3HoM9.!! -!BU8QklI@IrojLbgEjf;koToil/GnV%:8)Zl/PkP'n-/Il/ljs#Z':@l)#g3*/s+G!kS9"Ja&*W -"4WN0&,lP3"?:eDpjrJ8rri,3HoM9.!! -!B:&NirP,/ro4(\eg/$0iu\9]j4mcG$s_WKj5!]A'RKi?j5=\d#Yiq2j.[k'*/Nh=!k.o`J`D[K -"4*$%%fQG2"?:eDpjrJ8rri,3HoM9.!!<^)O3`C;SDsXf2h1~> -!BpJTm/a3[rp;$4mB\M1mHjo@m;#/DfKa?Am;>DHfgPo.m -!BU8QklI@Iroka0l*)l&l0/34l"NQ9e3@d6l"if>eO0E%l$#A -!B:&NirP,/ro5=*j/aljj5U."j(:X(cTQ"&j(Um-cU%Wlj)dH,f2Z,:it@d9aB@`e!k.o`J`DdN -"1E2&!r`0%12X;fJcG!7"7rd71B%7U!\\Q%J`EB_!Q-jH~> -!BpJTm/a3[rp:s2mHne1mHjo@m24%6mE$75m2=.8mE5Lsm2a:8mFW0@m2Ll/k3W5aql,/6P3iA8 -X^N(G!! -!BU8QklI@Irok[.l03#&l0/34knqJ*l,=P)ko%S,l,Negko@Y+l-pI4ko,9$k32rYqji<&P3E)0 -WaH\C!! -!B:&NirP,/ro57(j5Xiij5U."itoSmj1lMliu#\oj2(fViuGhoj3JG"iu3Njk2QNOq2BmbP2cZ% -VHk#;!! -!BpJTm/a3[rp:U(mHs'i[I!t]m/uY@mHFc@m/uY@mHFW -!BU8QklI@Irok=$l077^ZKVARkl^)4l/`'4kl^)4l/_p0klgqb#6F)R\OI2MT]kVA])/%Ll':K8 -i1F![rW!$BC:3ees4dPUpU+`XrW!$2 -!B:&NirP,/ro4msj5\uJY2]NBire6"j51""ire6"j50jsiro;\#6ElFZpbTGSESu7[eYl5j-AX, -g7(tNrW!$BC:3ees4dPUpU+`XrW!$2;OcBkj/1i;_`*)~> -!BpJTm/a3[rp9[crp:NA-K+slm24(7mE-=6m2=.8mE>Rtm2ORMm/a1%kj8Gcql,/6R-b"=Thc!o -!!=d#cMiCpec,aNc@%8C!! -!BU8QklI@IrojC_rok6:-/ARcknqM+l,FV*ko%S,l,Wkhko.qDklIXskii/[qji<&R-=_5SkTOj -!!=d#cMiCpec,aNc@%8C!! -!B:&NirP,/ro3tYro4g/,hE%VitoVnj1uSmiu#\oj21lWiu6,9irPkhki2`Qq2BmbR,\;)RS*td -!!=d#cMiCpec,aNc@%8C!! -!BpJTm/a3[rp9[crTtb`=9.aUBh6q16Yu/WDFiL77f_rDHpu9D_bogg<6==$'Bnfb^AFm\m@3JL -kbqMk!!!$ZM;!O\c2S+(M)YM9!"Du-k^i-&m/bd$J,~> -!BU8QklI@IrojC_rTPJYGcLCe!%-70)T:H:5m:^ea4Z;T7^m''SQ]])/%Ll'poD -jJGod!!!$ZM;!O\c2S+(M)YM9!"Dr*jFQQsklK'jJ,~> -!B:&NirP,/ro3tYrSo&P<<2(>AOXtl5\K-;BgpFr6ic9-G!a.)]1q>G:r(q\''S?W[eYl5j.#'8 -hk -!BpJTm/a3[rp9[crTtcp63-E?j]`-%?0:PAk#hs)J,o!(l[9cW.\5toR3Db^X6ApP^AFm\m@EVG -[;-*J!!5$;j+76NrrV5?2?!RW$#?r"mB5gWeieN~> -!BU8QklI@IrojC_rTPKh5lg06iE?Wu>N4o3i`HI$IK8WskB\*O.@TMcQQcP[W9EII])/%Ll(.&? -Z>'^F!!5$;j+76NrrV5?2?!RW$#6bsl)s7Oc8pI~> -!B:&NirP,/ro3tYrSo'\560a(gK+dl=kr&tgf4UoHN<*diHH7E.$ioRP9C&UV!-h?[eYl5j.533 -Y%J(?!!5$;j+76NrrV5?2?!RW$"pDlj0%DC_`*)~> -!BpJTm/a3[^?l!9ql,/6T^;g,GTctc!\B#ZJcERd!o&AZrW!!BGgCs.Z0_SC4b*~> -!BU8QklI@I^?G^1qji<&T]lO%Fs-ba!\B#ZJcERd!o&AZrW!!BG0GO%Z0;;73e.~> -!B:&NirP,/^>f:'q2BmbT]6*oF!(A]!\B#ZJcERd!o&AZrW!!AF2rjlZ/Yl&2h1~> -!BpJTm/a3[^?l!9ql,/6U[8?HPWJmG!"jtRJcE@^#k!EZ!!!$]Pi@8][-[nF4b*~> -!BU8QklI@I^?G^1qji<&UZi'@Ou`UD!"jtRJcE@^#k!EZ!!!$\P2:cS[-7V:3e.~> -!B:&NirP,/^>f:'q2BmbUZ2X4N]@+?!"jtRJcE@^#k!EZ!!!$[NnApC[,V2)2h1~> -!BpJTm/a3[^?l!9ql,/6Vm^Q3$=$31&5?+baU[d=+H4b*~> -!BU8QklI@I^?G^1qji<&V7(?1$=$31&5>If=L[cmh<3e.~> -!B:&NirP,/^>f:'q2BmbV;hig=UG-/$=$31&5=gWb?[c7D+2h1~> -!BpJTm/a3[^?l!9ql,/6W9jZEN@k,0!]utEJcE"T!qVsErW!!ONSoBT\a9FK4b*~> -!BU8QklI@I^?G^1qji<&W9FB=MCnf-!]utEJcE"T!qVsErW!!OMVNdI\`j.?3e.~> -!B:&NirP,/^>f:'q2BmbW8ds2LF`?(!]utEJcE"T!qVsErW!!MLY%+;\`3_.2h1~> -!BpJTm/a3X^?Pd3ql,/6WpL&+>mLE1'm/,_rrqoEaM?HtXoAXZF;4cU#[P2rmCV`deieN~> -!BU8QklI@F^?,L,qON3%Wp'c#>6k3/'m/,_rrqoEaM?HtXoAXZF;4cU#[=oll+?0\c8pI~> -!B:&NirP,,^>K(!q2BmbWoF>n=U5!-'m/,_rrqoEaM?HtXoAXZF;4cU#[+Wfj1F=P_`*)~> -!BpJTm/a3R^?#F@n>V!+XmHDXRl(0G!C -!BU8QklI@@^>T.8m[\pnXm$,PQo"dC!C -!B:&NirP,&^=r_-lAU;SXlB]EPVW:>!Cf732h1~> -!BpJTm/a3M]\`^gJaKZ.#M=8 -!BU8QklI@;]\ -!B:&NirP,!][d(AJ`Ero#L@H-!!!7BkfWo7qPeCIFF]7/J95LDWVXg<"87C]RJ4DtR:q9IY5\aj -D[-7B(N[oRj1s[U_`*)~> -!BpJTm/a3G]\*:aJaK`0#JX:B!!"U>oud::p4R+IpV$`tBS?*)rrUYOZ1G[2YuoJWrs/4c/H>bR - -!BU8QklI@5][d(RJa'H(#J3t=!!"U>oud::p4R+IpV$`tBS?*)rrUYOZ1G[2YuoJWrs/4c/H>bR - -!B:&NirP+p][-Y;J`F#q#IdS6!!"U>oud::p4R+IpV$`tBS?*)rrUYOZ1G[2YuoJWrs/4c/H>bR -;R_5;_W([72h1~> -!BpJTmCB3ImBl6cm&N;M!!?*4aSu=j=L%J3!jPkVd/O0\?G5mC!khpRX8`F=;$-du5-+%$mD\Gn -eieN~> -!BU8Ql+*@9l*T[[kbpWE!!?*4aSu=j=L%J3!jPkVd/O0\?G5mC!khpRX8`F=;$-du4fIRql,Dlf -c8pI~> -!B:&Nj11,"j0[hOihSX9!!?*4aSu=j=L%J3!jPkVd/O0\?G5mC!khpRX8`F=;$-du4/Ckej2L$Z -_`*)~> -!BpJTm/X,trrB$LmC)Beka*e"!!n#Ba8Z4S?G5mC!khpRdf0@,@edY;!<'V3!;sP3@c=?e#Om-I -!!"O9k^i-Am/bd$J,~> -!BU8Qkl@9drrAU@l*fg]jHM+o!!n#Ba8Z4S?G5mC!khpRdf0@,@edY;!<'V3!;sP3@c=?e#Om-I -!!"L5jFQR9klK'jJ,~> -!B:&NirG%MrrA"/j0mtQhiT>f!!n#Ba8Z4S?G5mC!khpRdf0@,@edY;!<'V3!;sP3@c=?e#Om-I -!!"I1hgsh.irR%VJ,~> -!BpJTm/X,trrB$LmC;Ngl&-/S!#pda`r?(u@dUl1@c>f9!H#CH^Ae09$TkB&!<'V3!;sP3\S\;F -#OmQh!!!Xil%/6Dm/bd$J,~> -!BU8Qkl@9drrAU@l+#s_jbXQL!#pda`r?(u@dUl1@c>f9!H#CH^Ae09$TkB&!<'V3!;sP3\S\;F -#OmQh!!!Ufjal[ -!B:&NirG%MrrA"/j1++Shh;XB!#pda`r?(u@dUl1@c>f9!H#CH^Ae09$TkB&!<'V3!;sP3\S\;F -#OmQh!!!Ubhgsh0irR%VJ,~> -!BpJTm/X,trrB$LmCMZihg6":!%X];`;]jT\c0>C!!3NiWqF(,\S]jr!VU+'^'4SOYu!Bn!<'V3 -!;jJ2AbN&%#PjuB!!![Zhgt1 -!BU8Qkl@9drrAU@l+6*agNaD3!%X];`;]jT\c0>C!!3NiWqF(,\S]jr!VU+'^'4SOYu!Bn!<'V3 -!;jJ2AbN&%#PjuB!!!XWgO\V4klK'jJ,~> -!B:&NirG%MrrA"/j1=7UeohZ+!%X];`;]jT\c0>C!!3NiWqF(,\S]jr!VU+'^'4SOYu!Bn!<'V3 -!;jJ2AbN&%#PjuB!!!XTeq)l)irR%VJ,~> -!BpJTm/X,trrB$LmC_fkgiX,-!$@a1_uBc2Ac9=G!5>^72tXfbAbO[S!RZT!^((.W^9S!X!(@04 -^&US-E;mQPK[HXr#QC58!!!OPgk"k;m/bd$J,~> -!BU8Qkl@9drrAU@l+H6cflIZ(!$@a1_uBc2Ac9=G!5>^72tXfbAbO[S!RZT!^((.W^9S!X!(@04 -^&US-E;mQPK[HXr#QC58!!!ONfn&D4klK'jJ,~> -!B:&NirG%MrrA"/j1OCWdr5cs!$@a1_uBc2Ac9=G!5>^72tXfbAbO[S!RZT!^((.W^9S!X!(@04 -^&US-E;mQPK[HXr#QC58!!!LJdt-Q(irR%VJ,~> -!BpJTm/X,trrB$LmCqrlg275t!("?7rrLN#rOraA^:plX^:jRN:VOOC"],-3!JJkNrrLN#rOraA -^:poZ^&XLd%__q0QOa#/!JJjprs$2'!!!@Dg4AY;m/bd$J,~> -!BU8Qkl@9drrAU@l+ZBdenbZn!("?7rrLN#rOraA^:plX^:jRN:VOOC"],-3!JJkNrrLN#rOraA -^:poZ^&XLd%__q0QOa#/!JJjprs$2'!!!@Beq*)3klK'jJ,~> -!B:&NirG%MrrA"/j1aOXctWmf!("?7rrLN#rOraA^:plX^:jRN:VOOC"],-3!JJkNrrLN#rOraA -^:poZ^&XLd%__q0QOa#/!JJjprs$2'!!!@@d"16'irR%VJ,~> -!BpJTm/X-`rrBjNrrB$LmD/)nh/Nf&!(b&BrrLN#rOraA^:poZ^0M'G!kqqI!! -!BU8Qkl@:PrrBjNrrAU@l+lNfg2@?!!(b&BrrLN#rOraA^:poZ^0M'G!kqqI!! -!B:&NirG&9rrBjNrrA"/j1s[Ze8,Km!(b&BrrLN#rOraA^:poZ^0M'G!kqqI!! -!BpJTm/X-`rrE,8_Z'V8JaL>A#3't?!!$-V]`/$+Ac9=Q!5>a935,Q`PQ8E$R$7UM^&_g=eGfPd -\c0>C!"]K"X1eR$#B. -!BU8Qkl@:PrrE,8_Z'V,Ja(&9#2XV9!!$-V]`/$+Ac9=Q!5>a935,Q`PQ8E$R$7UM^&_g=eGfPd -\c0>C!"]K"X1eR$#B. -!B:&NirG&9rrE,8_Z'UpJ`FW-#2")/!!$-V]`/$+Ac9=Q!5>a935,Q`PQ8E$R$7UM^&_g=eGfPd -\c0>C!"]K"X1eR$#B. -!BpJTm/X-`rrN07^r-0PWIaHTm0;[)'*&##aLV -!BU8Qkl@:PrrN07^r-0PSUp%Dkm$*t'*&##aLV -!B:&NirG&9rrN07^r-0PN.L$-is+7e'*&##aLV -!BpJTm/X-`rrW8:'YqZe!3(P:`pEurOVe&u4289)!T@MT^&_^%df0B^?G5mC!khpRR/[B*3rf6t -Om@ScfBiUi4b*~> -!BU8Qkl@:PrrW8:'YqZe!1e]*`p!]jNu.is4289)!T@MT^&_^%df0B^?G5mC!khpRR/[B*3rf6t -O6;)YfBE=]3e.~> -!B:&NirG&9rrW8:'YqZe!/uKh`o@9^M\c?n4289)!T@MT^&_^%df0B^?G5mC!khpRR/[B*3rf6s -MrB6IfAcnL2h1~> -!BpJTm/X-`rr`?%^_FT'rrB$LmDnStW$q]H1:FRi!khpRn\,( -!BU8Qkl@:Prr`?%^_FT'rrAU@l,W#lVC2EE1:FRi!khpRn\,( -!B:&NirG&9rr`?%^_FT'rrA"/j2^0`TdKg?1:FRi!khpRn\,( -!BpJTm/X-`rriE&s1f>ap&>*oN>quMrrB$LmE+`"^HDPs,,bFGrrUYOZ1G[2YuoK$rri4i:M-$h -^&sd:K_CW0#6(ME!!#0sJaM1Y!S0Da~> -!BU8Qkl@:PrriE&s1f>ap&>*oN>quMrrAU@l,i/o]0$&n,,bFGrrUYOZ1G[2YuoK$rri4t -!B:&NirG&9rriE&s1f>ap&>*oN>quMrrA"/j2p@s;t -^&sd:K_CW0#6(ME!!#*iJ`GJE!Q-jH~> -!BpJTm/X-`rr<&urrR`Op%JCe!*SX -!BU8Qkl@:Prr<&urrR`Op%JCe!*SX -!B:&NirG&9rr<&urrR`Op%JCe!*SX -!BpJTm/X-`rriE&s1f>ap&>$mk1'D2WIaH]m0;Wp#lk6Rm]6?s_-UtmFF]7*J8@YmWVXp?"6+jB -rr)j$6_;rO^tA.5rs%n6#QP0SjFQ^Tm/bd$J,~> -!BU8Qkl@:PrriE&s1f>ap&>$mk1'D2SUp%Mkm$'f#lk6Rm]6?saC]:'FF]7*J8@YmWVXp?!p,HZ -r;QsgT%M-"f^Oat#4?U>!"!c*Ja)%U!R<`V~> -!B:&NirG&9rriE&s1f>ap&>$mk1'D2N.L$6is+4W#lk6Rm]6?sc>IN6FF]7*J8@YmWVXp?!pH2t -r;QsgT%M-"f^Oat#4?U>!"!Z!J`GVI!Q-jH~> -!BpJTm/X-`rr`?%^_FTVrr<&JrrB$LmEY)&SK%V0DXa\+%,u["s8VT@aM?Hn(Y[.6!mZ2Ar;QiP -(\r[_"n6C0!$%P\mGI:3eieN~> -!BU8Qkl@:Prr`?%^_FTVrr<&JrrAU@l-AMsRi;>-DXa\+%- -!B:&NirG&9rr`?%^_FTVrr<&JrrA"/j3HZgQQ#o)DXa\+%-X/Ks8VT@aM?Hn(Y[.6!nj$tr;QiP -(\r[_"n6C0!#q8Uj58kt_`*)~> -!BpJTm/X-`rrW8:'Ys>?!!(LJ!3(P:d-V"Q3WK.8_l -!BU8Qkl@:PrrW8:'Ys>?!!(LJ!1e]*d-1_J3<0%7_l -!B:&NirG&9rrW8:'Ys>?!!(LJ!/uKhd,P;?2uiq6_lT'Q:Rs)rtns8N8? -1&q;6\Uif"irR%VJ,~> -!BpJTm/X-`rrN07_".L*!7UrJWIaHbm0;W_!< -!BU8Qkl@:PrrN07_".L*!7UrJSUp%Rkm$'U!< -!B:&NirG&9rrN07_".L*!7UrJN.L$;is+4G!< -!BpJTm/X-`rrE,8nc&Rhe,KEIJaLtS#4.]l!!RB2VuHh0P5Y+S!CNg6rr_YGW;QMl!N/;9s82g# -mr8L2'q"?=mH*^9eieN~> -!BU8Qkl@:PrrE,8nc&Rhe,KE=Ja(\K#3_ -!B:&NirG&9rrE,8nc&Rhe,KE,J`G8?#3(aZ!!RB2VuHh@Wr;Yk!CNg6rr_ee]_qX+!N/;9s82g# -mr8L2'TqC+j5o;%_`*)~> -!BpJTm/X-`rrBjNrrB$LmFCS-a?0G&2qY#-!nr.np&>)u1B,f'!o8=Bq>UNk-,P65q>UWN2ZNh? -aFWa@m/bd$J,~> -!BU8Qkl@:PrrBjNrrAU@l.,#%`B+&"2qY#-!oAq-p&>)u1B,f'!o]*Zq>UNk-,P65q>UWN2ZNh> -`I[:9klK'jJ,~> -!B:&NirG&9rrBjNrrA"/j43/n^cDGq2qY#-!of^Ap&>)u1B,f'!p,otq>UNk-,P65q>UWN2ZNh= -^k(P.irR%VJ,~> -!BpJTm/X,trrB$LmFU_0j`1P*'qkQ'rrVY -kj8E%4b*~> -!BU8Qkl@9drrAU@l.>/(iG\r#'qkQ'rrV_Lht6pMr\C_.rrUH'h>%!NKMd=#p\tHsTG7G1E8cB4 -kii,n3e.~> -!B:&NirG%MrrA"/j4E;qgMI)o'qkQ'rrVe]j7N?Qr\C_.rrU]=iV -!BpJTm/X,trrB$LmF^e0^)m=VB'lGp!rS.mo)Acq1B,r+"9#?VlM1A\i"Y+#s7QBqm:HD"+23 -!BU8Qkl@9drrAU@l.G5(],gqRB'lGp!r\\-o)Acq1B,r+"9#]nmJ-\_i"Y+#s7QBqm:HD"*kR!f -l0/5o3e.~> -!B:&NirG%MrrA"/j4NAq[N,>LB'lGp!r]+Ao)Acq1B,r+"9$$/n+cnai"Y+#s7QBqm:HD"*O^OZ -l/Mf^2h1~> -!BpJTm/X,trrB$LmFpq2hHU']/]sjg!jA-no)Adj19fI3"88(Kp\4[g;1sN#o)Am9/H>fVhLY([ -m/bd$J,~> -!BU8Qkl@9drrAU@l.YA*g0+LW/]sjg!P#&trrW0TYhB$YpS+JYp\t7kKRs0orrpOs!!-9WJa)Lb -!R<`V~> -!B:&NirG%MrrA"/j4`MseQ;hP/]sjg!Pu)3rrW0TYhB$Ypo^gqp\t7kKRs0orrpOs!!-3PJ`H(V -!Q-jH~> -!BpJTm/X,trrB$LmG%"3UDNt:LARbG!mlVonG`Qo1B-&."6kNDrV-@V(o)ZL -m-Oi)4b*~> -!BU8Qkl@9drrAU@l.bG+TGRY7LARbG!nEG-nG`Qo1B-&."7)/]rqHEo_'Sl-s7-*mqh>@V(ncHE -m-+Pr3e.~> -!B:&NirG%MrrA"/j4iStS/2/2LARbG!ns:AnG`Qo1B-&."7DhurqHEo_'Sl-s7-*mqh>@V(S$': -m,J,a2h1~> -!BpJTm/X,trrB$LmG7.5fMDPJ4P6D.!pP*nn,EIg19fR6!nVhApAY3n19Z9/mf*IC49,@XfR`GX -m/bd$J,~> -!BU8Qkl@9drrAU@l.tS-e4ouD4P6D.!pkj.n,EIg19fR6!o&XZpAY3n19Z9/mf*IC49,@Ve:HlP -klK'jJ,~> -!B:&NirG%MrrA"/j5&`!cV+<=4P6D.!q)NBn,EIg19fR6!oTNtpAY3n19Z9/mf*IC49,@Tc[k-E -irR%VJ,~> -!BpJTm/X,trrB$LmG@46S.Yf2PPq6U!r7\omJd6l1B-/1!l0)t1B)k)mJd@gP77L)S:U(r -m/bd$J,~> -!BU8Qkl@9drrAU@l/(Y.R1TE.PPq6U!rA5.mJd6l1B-/1!lp;[p&>)t1B)k)mJd@gP77L(R=XVk -klK'jJ,~> -!B:&NirG%MrrA"/j5/f"Pn=!*PPq6U!rA\AmJd6l1B-/1!m[:tp&>)t1B)k)mJd@gP77L(Q%@ua -irR%VJ,~> -!BpJTm/X,trrB$LmGR@8gJIqN6fXj>!McOYrrW0TYi,N`qkf;>p&>*m19c?0lMh%J6N@*`gO\b^ -m/bd$J,~> -!BU8Qkl@9drrAU@l/:e0fM;JI6fXj>!NiTmrrW0TYi,N`r32RXp&>*m19c?0lMh%J6N@*^fR`;W -klK'jJ,~> -!B:&NirG%MrrA"/j5Ar$dS0]A6fXj>!OoZ,rrW0TYi,N`r48`qp&>*m19c?0lMh%J6N@*\dXgHK -irR%VJ,~> -!BpJTm/X,tmJs5;mG[F9W##FCRf8u[!lTumli.$j1B-;5"7hSHq=O[gYVQ3/s69OergF8r(T;oP -o'HJ/4b*~> -!BU8Qkl@9dmJrf/l/Ck1VAB4ARf8u[!m?r-li.$j1B-;5"8&.aqXjdhYVQ3/s69OergF8r(T)cJ -o'$2#3e.~> -!B:&NirG%MmJr2sj5K#%Tb[V;Rf8u[!n!h@li.$j1B-;5"8/\$qXjdhYVQ3/s69OergF8r(86<> -o&Bbg2h1~> -!BpJTm/X,tmJs5;mGmR;iEcNb52Mq3!o\OmlMgqb19fg="6>$Brq-3lr\C^/s5s=bhECo??K$J& -o^)\14b*~> -!BU8Qkl@9dmJrf/l/V"3h-9s\52Mq3!p,@-lMgqb19fg=!p>WZoD\mk19c?0k5PVA4obUgh1=h_ -klK'jJ,~> -!B:&NirG%MmJr2sj5]/'f3/1T52Mq3!pH*AlMgqb19fg=!pZ>soD\mk19c?0k5PVA4obUef7DuS -irR%VJ,~> -!BpJTm/X,tmJs5;mH!X -!BU8Qkl@9dmJrf/l/_(4a;t -!B:&NirG%MmJr2sj5f5(_]8^_N;]CK!r&;Akl1^g1B-D8!o'0uo)Acp1B)k)jo5M_N!KD(_h$k@ -irR%VJ,~> -!BpJTm/X,tmJs5;mH3d>l?EF31Y&)s!reUmkPkV_19fp@!ks6Ho)Ad]+2ia1ir9241B7Q&l@J?s -m/bd$J,~> -!BU8Qkl@9dmJrf/l/q46k&pk-1Y&)s!rf",kPkV_19fp@!l^5`o)Ad]+2ia1ir9241B7Q$k(2dk -klK'jJ,~> -!B:&NirG%MmJr2sj6#A*i,]#$1Y&)s!rfFAkPkV_19fp@!mI5#o)Ad]+2ia1ir9241B7Q!i.9q_ -irR%VJ,~> -!BpJTm/X,tmJs5;mH -!BU8Qkl@9dmJrf/l0%:7c8Ye*Gl"!2!l:N-k5PLe1B-P<"8]$ep[S:`AqC!?rrr7D!WY4*Ja)so -!R<`V~> -!B:&NirG%MmJr2sj6,G+a>O#"Gl"!2!m.MAk5PLe1B-P<"8]C&q!nCaAqC!?rrr7D!WY."J`HOc -!Q-jH~> -!BpJTm/X-`mJsT0mJs5;mHEp?T+CuA]q#*(fQm#KrrW0TYj25jm>@h=nc&[%+7Xp^hZ!_l)ZUGA -JaN:#!S0Da~> -!BU8Qkl@:PmJsT0mJrf/l0.@7SIbc?]q#*(gkbR`rrW0TYj25jn!C -!B:&NirG&9mJsT0mJr2sj65M+R1B9:]q#*(iKs2urrW0TYj25jnYEbonc&[%+7Xp^hZ!_l)ZUD: -J`HRd!Q-jH~> -!BpJTm/X-`mK!ns4mVXlV@K\ -EpA5Cqs=F84b*~> -!BU8Qkl@:PmK!YVQ4ErrV,;aRK32nK5>ns4mVXlV@K\ -E9;`9qrn.,3e.~> -!B:&NirG&9mK!ns4mVXlV@K\ -D;^!*qr7^p2h1~> -!BpJTm/X-`mK*A%Zbu22WIaI&m01T]!""qiSGrZfNkjZS!rasYmJd7,IG+)hs(6i^gA_?UPmIF? -aarjWm/bd$J,~> -!BU8Qkl@:PmK*A%Zbu22SUp%kklo'U!""qiSGrZgR`FFf!rasYmJd72N8 -`e!CPklK'jJ,~> -!B:&NirG&9mK*A%Zbu22N.L$Tis!4H!""qiSGrZgVp=<%!rasYmJd79Rc -!BpJTm/X-`mK3I)'=7;u!!)oa!!(a@!3(P:m-OqG$ihBKmJZDQeieN~> -!BU8Qkl@:PmK3I)'=7;u!!)oa!!(a@!1e]*m-+Y@$ih -!B:&NirG&9mK3I)'=7;u!!)oa!!(a@!/uKhm,J56$ih -!BpJTm/X-`mK4\3_!m-5mhuE^gnc&^_PFVF:rrV^4 -_h%j=rrr!t!!$KkJaNL)!S0Da~> -!BU8Qkl@:PmKj'Vie>4\3_!md,,huE^gnc&^aT;VMRrrV^4 -_h%j=rrr!t!!$EeJa*4!!R<`V~> -!B:&NirG&9mK4\3_!nF%@huE^gnc&^bX0VQirrV^4 -_h%j=rrr!t!!$?]J`Hdj!Q-jH~> -!BpJTm/X-`mKEUjs1f;Sp$Me[qsFFag?ns?JaMpn"O8\$#a^tZ!p"amhZ!ZI+1h(D"6G-BrpKgd -AqC!2rreYo!&2]Lm/l\+4b*~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsFFag?ns3Ja)Xf"NrFu#a^tZ!p>L-hZ!ZI+1h(D"6bi[rpKgd -AqC!2rreYo!&)NHklU+p3e.~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsFFag?ns"J`H4Z"NE%o#a^tZ!pZ6AhZ!ZI+1h(D"7)PtrpKgd -AqC!2rreYo!%u9Bir\8Y2h1~> -!BpJTm/X-`mJm7drrR`OjnA*B!;l0a!8?i@WIaI+m0'^*!$faVrrVnHd+nX&\f^J8rrUSqcgC`6 -\f^Hns3goMbp*3!Z@VBDeieN~> -!BU8Qkl@:PmJm7drrR`OjnA*B!;l0a!8?i@SUp%pkle1#!$faVrrVqWe_L0+\f^J8rrUc0eF!8; -\f^Hns3goMbp*3!YCYp=c8pI~> -!B:&NirG&9mJm7drrR`OjnA*B!;l0a!8?i@N.L$Yirl@l!$faVrrVtfg>)]0\f^J8rrUrDg?nnA -\f^Hns3goMbp*2uWe'12_`*)~> -!BpJTm/X-`mKEUjs1f;Sp$Me[qsFFag?ns?JaN$q"mgU -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsFFag?ns3Ja)ai"mC76!(caMrrW1r\_@)`B(l6+^Q7RFrrV^4 -\q0n.rrr$c!!7K1KBWE^3e.~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsFFag?ns"J`H=]"la_-!(caMrrW2)_:nqhB(l6+a.;M_rrV^4 -\q0n.rrr$c!!7B(KB!!M2h1~> -!BpJTm/X-`mKUQlSW`U2 -s8Q\^s3CWJre(=Q:#^in!S0Da~> -!BU8Qkl@:PmKUQmW1NYJ -s8Q\^s3CWJre(=Q9\tHe!R<`V~> -!B:&NirG&9mKUQnZ`<]b -s8Q\^s3CWJre(=Q9%\gW!Q-jH~> -!BpJTm/X-`mK3I)'=7;u!?AuTmK(-Fg?ns?JaN*s"Nr1n&@Il)!nVtnf`)#n(>J`d"7:rDr9XFb -_&r2us31KG[1E -!BU8Qkl@:PmK3I)'=7;u!?AuTmK(-Fg?ns3Ja)gk"NMki&@Il)!o/h-f`)#n(>J`d"7MP]r9XFb -_&r2us31KG[1E -!B:&NirG&9mK3I)'=7;u!?AuTmK(-Fg?ns"J`HC_"MuJc&@Il)!oTUAf`)#n(>J`d"7`2"r9XFb -_&r2us31KG[1E -!BpJTm/X-`mK*A%Zh!MhIPA@rkIWEtg?ns?JaN-t"L&76/)$?i!q(Kmf)Gf>.Id<9!o&.@li.%@ -(<;"+b5VUu.f]s]L@##m4b*~> -!BU8Qkl@:PmK*A%Zh!MhIPA@rkIWEtg?ns3Ja)jl"K`%3/)$?i!q;0-f)Gf>.Id<9!oJsYli.%@ -(<;"+b5VUu.f]sZL?S`a3e.~> -!B:&NirG&9mK*A%Zh!MhIPA@rkIWEtg?ns"J`HF`"K2\./)$?i!qMfAf)Gf>.Id<9!oo`rli.%@ -(<;"+b5VUu.f]sUL>r -!BpJTm/X-`mK! -!BU8Qkl@:PmK!N8Nt$!q7Y, -JcEgk"S,Ik"+l -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs5;mJ-&Ok["5iO-T_GW1h]?#5gu/r2GP>li.%a7rEnX`W$(%!p -4b*~> -!BU8Qkl@:PmJsT0mJrf/l1jKGjBV`dO-T_GZE)IS#5gu/r3M^Wli.%a7rEnX`W$(%! -!B:&NirG&9mJsT0mJr2sj7qX;hc^!\O-T_G]XH;h#5gu/r4Jipli.%a7rEnX`W$(%! -!BpJTm/X,tmJs5;mJ6,PgcYWDWg3ScaG9Q=rrhg==Io6PrrR(.r.4mdrrf>.!'T+pm/bd$J,~> -!BU8Qkl@9dmJrf/l1sQHffT6@Wg3SccB\4Rrrhg=?`.!'JqlklK'jJ,~> -!B:&NirG%MmJr2sj8%^.!'AYeirR%VJ,~> -!BpJTm/X,tmJs5;mJ?2Qas-m(b*Du.j*^+=rr_>$&B=#8!gtM,JcEUe"NhS^,Kbr3!S0Da~> -!BU8Qkl@9dmJrf/l2'WI`ZkI$b*Du.k)8QQrr_G3&B=#8!gtM,JcEUe"NhS^,K>Z+!R<`V~> -!B:&NirG%MmJr2sj8.d=_'/jsb*Du.l'h%frr_PB&]X,9!gtM,JcEUe"NhS^,/K2t!Q-jH~> -!BpJTm/X,tmJs5;mJH8RZNgIbj-BWGon1W=rrp_rd)-jim/I.+(>FE?_#FPt0`VHbN9pYs4b*~> -!BU8Qkl@9dmJrf/l20]JYQk._j-BWGp6!nQrrpo1e\`Bnm/I.+(>FE?_#FPt0`VH_N9LAg3e.~> -!B:&NirG%MmJr2sj87j>Ws8VZj-BWGpRg3frrq,FgVY#tm/I.+(>FE?_#FPt0`VHZN8jrV2h1~> -!BpJTm/X,tmJs5;mJQ>SRg/phoTfFXrgC"=rs/P2K'!%4F\qK*!nS1,JcEIa"S>Ii#Fg_?!S0Da~> -!BU8Qkl@9dmJrf/l29cKQj*OdoTfFXrh[0Rrs/P;OQc`EF\qK*!nS1,JcEIa"S>Ii#+1D7!R<`V~> -!B:&NirG%MmJr2sj8@p?PQh+`oTfFXrij8frs/PCT'QFVF\qK*!nS1,JcEIa"S>Ii#*b,-!Q-jH~> -!BpJTm/X,tmJs5;mJZDTJH5airKR<`\n,EIS,G0Pe]`/-5Du]oiNpQku -4b*~> -!BU8Qkl@9dmJrf/l2BiLIfTOgrKR<`^n:SSrr`(pTCr3`!r4U>n,EIS,G0Pe]`/-5Du]ogNp-Si -3e.~> -!B:&NirG%MmJr2sj8J!@HN=+crKR<`aK,9grr`)&X7lPm!r4U>n,EIS,G0Pe]`/-5Du]ocNoL/X -2h1~> -!BpJTm/X,tmJs5;mJlPVl=9krNg'JEf7 -!BU8Qkl@9dmJrf/l2TuNk$e;lNg'JEgQ(mSrr__P[/Kq&!nS1=nc&[b4+)VZ\c2em!WZ]lOQcek -3e.~> -!B:&NirG%MmJr2sj8\-Bi*ZNdNg'JEi10Jhrr_e`^&@m/!nS1=nc&[b4+)VZ\c2em!WZWdOQ-AZ -2h1~> -!BpJTm/X,tmJs5;m02n=9)o6tPQ(^OGhpjK!nVe3q>UMa1AUPA"9)D)rdk*Zrrf>-!))F9m/bd$ -J,~> -!BU8Qkl@9dmJrf/klp>18cT-sPQ(^QLZ-_^!o/[Nq>UMa1AUPA"9)D)rdk*Zrrf>-!(u44klK'j -J,~> -!B:&NirG%MmJr2sis"Jt8,rpqPQ(^SQfZ]r!oTKiq>UMa1AUPA"9)D)rdk*Zrrf>-!(bk,irR%V -J,~> -!BpJTm/X,trrB$Lm0)H)!#!/4rrW"S_USSfrk*a:p\t7jFn>V7Hoq(Rs0hq1_@ci(j-&d1eieN~> -!BU8Qkl@9drrAU@klflu!#!/4rrW%aaj^7k_i484=+[f6KI&caZDP3E"m3e.~> -!B:&NirG%MrrA"/irn$h!#!/4rrW(od*r!rbFI\grrGr=oD\l>484=+[f6KI&caW=P2cS\2h1~> -!BpJTm/X,trrB$Mm0(ui!$0mYrrJjjeGfXGT9&L8rrVO,`;]c=k/tO&r;Qhj,O0j[[/U9b*<7S? -PO/D%4b*~> -!BU8Qkl@9drrAUAklfE`!$0mYrrK4)eGfXHWgrYRrrVO,`;]c=k/tO&r;Qhj,O0j[[/U9b*<7P: -PN`+n3e.~> -!B:&NirG%MrrA"0irmUT!$0mYrrKU>eGfXI[A`]jrrVO,`;]c=k/tO&r;Qhj,O0j[[/U9b*<7M4 -PN)\]2h1~> -!BpJTm/X,trrB$Nm0(]W!%R&mrrTrpqpk]Kl\VS;o`#H@)Q.L\G_hB)?Z3IS_\LdSs0DY-j=1-P -cBR\seieN~> -!BU8Qkl@9drrAUBklf-O!%R&mrrU3/qpk]Km?Y'Uo`#H@)Q.L\G_hB)?Z3IS_\LdSs0DY-j=1-P -b*;,kc8pI~> -!B:&NirG%MrrA"1irm=C!%R&mrrUHCr71fLn"[Mmo`#H@)Q.L\G_hB)?Z3IS_\LdSs0DY-j=1-O -`K]B`_`*)~> -!BpJTm/X,trrB$Om0(?E!&j2,rrUl'n(%F>epYO.rrUtBM>=jfN(su*JcDtS"RJ#H(rV^,!S0Da~> -!BU8Qkl@9drrAUCkleg>!&j2,rrV#9n^[X@gPa8GrrUtBM>=jfN(su*JcDtS"RJ#H(r;L%!R<`V~> -!B:&NirG%MrrA"2irm"2!&j2,rrV2Lo%!aAhjW!arrUtBM>=jfN(su*JcDtS"RJ#H(VH$n!Q-jH~> -!BpJTm/X,trrB$Pm0's3!(6=?rrVS9gt)K-rk![;o)Ad2Bta8T!ki*`JcDqR"S+n[&\44p!S0Da~> -!BU8Qkl@9drrAUDkleF+!(6=?rrVYJi77i/_N!RGrrU2S^%]5B]jo'5s0)G*nj -!B:&NirG%MrrA"3irlUu!(6=?rrV_ZjOO83b+.VbrrU2S^%]5B]jo'5s0)G*nj -!BpJTm/X-`rrBjNrrB$Qm0'Wr!)`NSrrW"R_Ue_hpn!T:o)Aa=Ab3V:A^Z/0YQ"b#;#ga'QgFh) -4b*~> -!BU8Qkl@:PrrBjNrrAUEkle*k!)`NSrrW%`ak$Ioq5KnTo)Aa=Ab3V:A^Z/0YQ"b#;#ga$Qg"Or -3e.~> -!B:&NirG&9rrBjNrrA"4irl:`!)`NSrrW(nd+84!q6[-no)Aa=Ab3V:A^Z/0YQ"b#;#g`tQfA+a -2h1~> -!BpJTm/X-`rrE,8_Z'V8L[>5E#QRp'OoGHUV:PYKlA2G;o)Adj=1n=B!!)u3!k_V6JcDqR"T2:# -#ca9Z!S0Da~> -!BU8Qkl@:PrrE,8_Z'V,LZnr>#QRp'OoGH`YL`^Um?P$Uo)Adj=1n=B!!)u3!k_V6JcDqR"T2:# -#cF'S!R<`V~> -!B:&NirG&9rrE,8_Z'UpLZ8N4#QRp'OoGHj\^pc_n"[Pno)Adj=1n=B!!)u3!k_V6JcDqR"T2:# -#c!dI!Q-jH~> -!BpJTm/X-`rrN07^r-0PWJKpEV?[*9rfR3^^5i*BrrU`!`pj!/^Pi')rr<0040$!pr4W2i^OcEf -rri=9!!fBhm/bd$J,~> -!BU8Qkl@:PrrN07^r-0PSVZM5UBU^5rfR3^`L?\UrrUo4bjbW5^Pi')rr<0040$!pr4W2i^OcEf -rri=9!!]3dklK'jJ,~> -!B:&NirG&9rrN07^r-0PN/6KsT*>:1rfR3^c):KkrrV&Ge+!A<^Pi')rr<0040$!pr4W2i^OcEf -rri=9!!]'`irR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?rr<0&%PW+lg&D&OM"orT@OoGL8J+)%i"9,l^hs^RGFhRaf"ouBB -:cH)gr4W3FFb0Rprri=>!!]-cm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys>?rr<0&%PW+lg&D&CM

YL!5>^7 -2nf:i^&boiJcDkP"TE<>#+h:J!R<`V~> -!B:&NirG&9rrW8:'Ys>?rr<0&%PW+lg&D&2M;n`-"TWK?OoGLAS+>22!m-tpn,EE2^&>YL!5>^7 -2nf:i^&boiJcDkP"TE<>"e(n?!Q-jH~> -!BpJTm/X-`rr`?%^_FTVrs&Q(s7FQQ)W09K!3(kC".TJoFccV)m=!dBrr`%eOn%l>!-%kM#lq]R -Z3S)D70ml3^&W,'s/Z/%FT;Q7S*^7-4b*~> -!BU8Qkl@:Prr`?%^_FTVrs&Q(s7FQQ)W09K!1f#3".B>mFccV)mu62Wrr`(qSb):L!-%kM#lq]R -Z3S)D70ml3^&W,'s/Z/%FT;Q5S*9t!3e.~> -!B:&NirG&9rr`?%^_FTVrs&Q(s7FQQ)W09K!/ufq"-s&iFccV)nXAOkrr`)'Wq>`Z!-%kM#lq]R -Z3S)D70ml3^&W,'s/Z/%FT;Q1S)XOe2h1~> -!BpJTm/X-`rriE&s1f>ap&>!lr;QeH>h]2XWJg-GU&k=AOT,CXMSn*H"6tZAr9aLaE;[EV!5?1R -#eg;*QOa#/!-!MhWrE0J!!8mbm/bd$J,~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;QeH>h]2XSVu_7T)o">OT,CYQc[n["72;[r9aLaE;[EV!5?1R -#eg;*QOa#/!-!MhWrE0J!!8d_klK'jJ,~> -!B:&NirG&9rriE&s1f>ap&>!lr;QeH>h]2XN/Q]uRfWS:OT,CYUsRco"7Mttr9aLaE;[EV!5?1R -#eg;*QOa#/!-!MhWrE0J!!8X[irR%VJ,~> -!BpJTm/X-`rr<&urrR`Op%JCc!;uitiY^DL!3(qE".TGnJrp!6rh64ArrU_ua6Wa+FhRaf%04,J -;)l8iQ^82r^:eZ?s/H##JcGnCSa?I/4b*~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;uitiY^DL!1f)5".B;lJrfp4XK^@W!niLVli.!.^&>YS!5>a9 -35,BZQO^aD]leo+WW*'P!!A[\klK'jJ,~> -!B:&NirG&9rr<&urrR`Op%JCc!;uitiY^DL!/uls"-s#hJrfp4[^t,k!oBBqli.!.^&>YS!5>a9 -35,BZQO^aD]leo+WW*'P!!AOXirR%VJ,~> -!BpJTm/X-`rriE&s1f>ap&>!lr;Qfo"krtVWK$9IT`b@IO8f9qNr.Q1"9,i]i9L=C^Pi')rrr"JcGqIT'ZR04b*~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;Qfo"krtVSW2k9Scf%FO8f:#RetejMnaiCW;csO!!JmbklK'jJ,~> -!B:&NirG&9rriE&s1f>ap&>!lr;Qfo"krtVN/cj"RKNVBO8f:*Vu56J!m$qqlMgn"MuCBi!"0,r -X1eR$#B.>jMnaiCW;csO!!Ja^irR%VJ,~> -!BpJTm/X-`rr`?%^_FTVrr<&srrM'qgA_/PNpQqG"os"2rrUi&n(RdDpRIE;l2Lha=1n.=!k_V6 -JcDYJ"+("PVP!5VeieN~> -!BU8Qkl@:Prr`?%^_FTVrr<&srrM'qgA_/DNp-Y@"os"2rrV#9n_4!Fpns_Tl2Lha=1n.=!k_V6 -JcDYJ"+("PUS$cOc8pI~> -!B:&NirG&9rr`?%^_FTVrr<&srrM'qgA_/3NoL56"TWn1rrV/Ko@j3Hq6I$nl2Lha=1n.=!k_V6 -JcDYJ"+("OT:b-E_`*)~> -!BpJTm/X-`rrW8:'Ys>?!!)rs!I\2+rrB$Zm/s?n!-OA&!pk?jgA_9?Krb.7rrLPZo=b9/FkhQJ -VZ-a@!!fNsm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys>?!!)rs!I\2+rrAUNkl[gf!-OA&!q)$*gA_9API:APrrLPZo=b91J)GnX -VZ-a@!!]?oklK'jJ,~> -!B:&NirG&9rrW8:'Ys>?!!)rs!I\2+rrA"=irc%\!-OA&!q;Z>gA_9DTYCBfrrLPZo=b92M<'6f -VZ-a@!!]3kirR%VJ,~> -!BpJTm/X-`rrN07_".L1!<<)lc#+BSgA_/POR3.W#68\'rrW.V_qP+ld! -!BU8Qkl@:PrrN07_".L1!<<)lc#+BSgA_/DOQckP#68\'rrW.cb1cjseVMQ4rrU2S^%]5F]kPL9 -OJqPts/5l!DZC$IU$2U'3e.~> -!B:&NirG&9rrN07_".L1!<<)lc#+BSgA_/3OQ-GE#68\'rrW.pdG"U%gR$IOrrU2S^%]5F]kPL> -T!Rm:s/5l!DZC$DU#Q0k2h1~> -!BpJTm/X-`rrE,8nc/Uh"9AoaFm.NY!3)+J"M"j>CAs=p!reaeg]%BRYCklprrUtZN;:0oN*>$: -s80KWY4[AGWW*,#C&eUOU?r!44b*~> -!BU8Qkl@:PrrE,8nc/Uh"9AoaFm.NY!1f8:"L\X;CAs=p!rf.%g]%BS\<5q5rrUtZN;:0oN*>$: -s89fm\+YCQWW*,#C&eULU?M^(3e.~> -!B:&NirG&9rrE,8nc/Uh"9AoaFm.NY!0!'#"L/:6CAs=p!rfO:g]%BS_4TuOrrUtZN;:0oN*>$: -s8:*/_"WE[WW*,#C&eUGU>l9l2h1~> -!BpJTm/X-`rrBjNrrB$]m/t9=!+(]c!j\'gh#@KFOIZ%%rs?2R?ZLdSG[GC!qu6fjX*h_\JcD_L -"'ts>`1u]#eieN~> -!BU8Qkl@:PrrBjNrrAUQkl\a5!+(]c!kY-'h#@KHSYu5>rs?2R?ZLdSG[GC!qu6fl[>W*'JcD_L -"'ts=_5$5qc8pI~> -!B:&NirG&9rrBjNrrA"@ircq*!+(]c!lV2 -!BpJTm/X,trrB$^m0(]O!)`WSrrU>ro\BHKfRCO5g]%A@8'9ufrr_JRK[GANWrE5!;#hHYV!S36 -4b*~> -!BU8Qkl@9drrAURklf-G!)`WSrrUQ1p>#ZLh2K;+rr\NVb3&Et"7)eHeq*k$rri3r!#WkSklK'j -J,~> -!B:&NirG%MrrA"Airm=;!)`WSrrUcEpY>cMiLA$Err\NVb3&Et"7<@dgO]C)rri3r!#NVMirR%V -J,~> -!BpJTm/X,trrB$_m0(u_!(6OBrrV#)l.u@ArjdO5g&D)3Eq954fnu!QJcDeN"Sb=a+P*CV!S0Da~> -!BU8Qkl@9drrAUSklfEW!(6OBrrV/;leVRCrkXTOg&D)3Eq954h3XbqJcDeN"Sb=a+O[+N!R<`V~> -!B:&NirG%MrrA"BirmUK!(6OBrrV;NmbRmFrlL\jg&D)3Eq954ihWX=JcDeN"Sb=a+3gYB!Q-jH~> -!BpJTm/X,trrB$`m0)5p!&jD/rrVP9f\QQ0oU1p5f`(tnMt-fMrQ'J`mt(M?rrhmN!%Qg%m/bd$ -J,~> -!BU8Qkl@9drrAUTklf]h!&jD/rrVVIh;/)5p8">Pf`(tnMt-fMrm$M+nU^_ArrhmN!%HX!klK'j -J,~> -!B:&NirG%MrrA"Cirmj[!&jD/rrV\ZiSFM9pTU^jf`(tnMt-fMrm[IJnq$hBrrhmN!%??oirR%V -J,~> -!BpJTm/X,trrB$am0)T,!%R>rrrVqN`81FqiI\B6fDbkVU@8*bppPOWpjrIIrrh[ -!BU8Qkl@9drrAUUklg'$!%R>rrrVt\b2*("jH."PfDbkVU@8*bq7_a"q18RJrrh[ -!B:&NirG%MrrA"Dirn3l!%R>rrrVtjdG=g)kao]jfDbkVU@8*bqSnrBq18RJrrh[ -!BpJTm/X,trrB$bm0)]I!$:NgrrW.dXPNmX_gKq`rrGR!mJd=XV16PaJcDnQ"RR619BrJC!S0Da~> -!BU8Qkl@9drrAUVklg-@!$:NgrrW1q[b^rbb)=p&rrGR!mJd=ZYDpg+JcDnQ"RR619'3):!R<`V~> -!B:&NirG%MrrA"Eirn:2!$:NgrrW2'^YSnkd@/nArrGR!mJd=\\XV(IJcDnQ"RR618DpH,!Q-jH~> -!BpJTm/X,trrB$bm/pl!'%W*C!j.jghu -!BU8Qkl@9drrAUVklYAp'%W*C!k4s'hu -!B:&NirG%MrrA"Eir`Zh'%W*C!l2# -!BpJTm/X,trrB$cm/qn>#f;W%!l]rhhu -!BU8Qkl@9drrAUWklZD8#f;W%!m?i'hu -!B:&NirG%MrrA"FiraW.#f;W%!n*h -!BpJTm/X,tmJs5Sm/rgY!ih:\!ni"fhu -!BU8Qkl@9dmJrfGkl[:R!ih:\!o8h'hu -!B:&NirG%MmJr36irbMH!ih:\!of[ -!BpJTm/X,tmJs5Tm/sg%!03*>!pP-gi;WoVXG,c`rrM:!jo5JWYC!qZJcE"T"-*?c\#\lseieN~> -!BU8Qkl@9dmJrfHkl\9r!03*>!pkj'i;WoW[?Bb$rrM:!jo5JX\;J3$JcE"T"-*?b[&`Elc8pI~> -!B:&NirG%MmJr37ircLh!03*>!q)NrrM:!jo5JY_3rLEJcE"T"-*?bYcHdb_`*)~> -!BpJTm/X,tmJs5Um/tKB!-!tu!qh8hi;WoINh6!lrrLJ!j8T8JSq>5dJcE%U")n5Ob,jt2eieN~> -!BU8Qkl@9dmJrfIkl\p9!-!tu!qqf'i;WoKS#Q20rrLJ!j8T5KWK>S[s0;S+Du^EgXQ]c23e.~> -!B:&NirG%MmJr38ird+.!-!tu!r&Ap$s0;S+Du^EbXQ'?!2h1~> -!BpJTm/X,tmJs5Vm/u,g!)\dV!rS:fi;Wo1ID>d-rrKZ!iVs#9NfW(Ks0DY,;#hirXmH/?4b*~> -!BU8Qkl@9dmJrfJkl]T`!)\dV!r\e'i;Wl5N5j0C!P(YXrr_5KS)T#!ZMt#(!$g1!klK'jJ,~> -!B:&NirG%MmJr39irdaS!)\dV!r]4 -!BpJTm/X,tmJs5Wm0)W9!&=,+rrT'fro3q[rN1S-c2Rg=>i>Vbrlfqcm",2DrrhsK!'TPKm/bd$ -J,~> -!BU8Qkl@9dmJrfKklg'0!&=,+rrTF&ro3q[rO.^Hc2Rg=>i5P`d>t -!B:&NirG%MmJr3:irn7$!&=,+rrTd;ro3q[rP+ibc2Rg=>i5P`f:B>=JcE+W"S=DK45[4$!Q-jH~> -!BpJTm/X-`mJsT0mJs5Wm/pYp)<6bW!kO?hir9,JOI>^arrJ%!hZ!`T\pL^UJcE.X"617!?EWYr -eieN~> -!BU8Qkl@:PmJsT0mJrfKklY2k)<6bW!lCB(ir9,LS>Go&rrJ%!hZ!`U_MYr!JcE.X"617!?* -!B:&NirG&9mJsT0mJr3:ir`Hb)<6bW!m7D=ir9,NWNc*?rrJ%!hZ!`Ub*g-AJcE.X"617!>-?ld -_`*)~> -!BpJTm/X-`mK!po&BZOd!WV-bPqTbMVS47nu-uSr.4mVrr^CM!/.QC -!S0Da~> -!BU8Qkl@:PmK! -c8pI~> -!B:&NirG&9mK!uQgR?F1rrI5!h#@NM]UI4GJcE1Y"3LoMJ$7l5 -_`*)~> -!BpJTm/X-`mK*A%Zbu22WLrP[Y5n[(NrK15IHfel"8]$NilV3$?_?'P"6Pr)e:IY.rr]8%!O&`p -!S0Da~> -!BU8Qkl@:PmK*A%Zbu22SY,-KX8r@%NrK19N9fO("8fEfjiRN'?_?'P"6lSFfn'13rr]8%!N`Ni -!R<`V~> -!B:&NirG&9mK*A%Zbu22N1],4VuZq!NrK1>RdT59"8fd)kfNi*?_?'P"7*+`hLY^8rr]8%!N<6_ -!Q-jH~> -!BpJTm/X-`mK3I)'=7?!q>f19!3)XY"3V2TJr]j4j*]bErr_G@U\Mq1!D9`Orr^i.Q/mMr\,QP^ -!"[8Xm/bd$J,~> -!BU8Qkl@:PmK3I)'=7?!q>f19!1feI"31oPJr]j4k)86Zrr_PPXng' -!B:&NirG&9mK3I)'=7?!q>f19!0!T2"2YNJJr]j4l'gbprr_V_\,",F!D9`Orr_/RXm1K;\,QP^ -!"QlNirR%VJ,~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!BU8Qkl@:PmKEUjs1f;SoBlSYea -!B:&NirG&9mKEUjs1f;SoBlSYealC98cUC4O8f:UU!_s$"8K:#m`#2,+5bWK"Sp!(aSLJf -])Mp(.f`3$Zf;)(2h1~> -!BpJTm/X-`mJm7drrR`Ojn.s@!7gK;WM8b^HiO`3O8f:XOg='J"5nd4qo&L8$M;gI"R`"7b5Qtl -]Dhue&-.*am/bd$J,~> -!BU8Qkl@:PmJm7drrR`Ojn.s@!7gK;SYG?NH2nN1O8f:YS\*t_"65KOqo&L8$M;gI"RrLQd/JUr -]Dhue&-.$_klK'jJ,~> -!B:&NirG&9mJm7drrR`Ojn.s@!7gK;N2#>7G5r3.O8f:YWl3uu"6Z8jr5AU9$M;gI"S0$lf)C7# -]Dhue&--p\irR%VJ,~> -!BpJTm/X-`mKEUjs1f;SoBlSYea -!BU8Qkl@:PmKEUjs1f;SoBlSYea -!B:&NirG&9mKEUjs1f;SoBlSYeaJcE@^ -"1813U9rq]_`*)~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=75s!!(R;!3)g^"QqH=8cFeN!kjKck5PP9J%# -!BU8Qkl@:PmK3I)'=75s!!(R;!1ftN"QM-88cFeN!lUH#k5PP=NPGJ/rrL5!c2RqE`JV.uJcEIa -"TCsm0B9M*!R<`V~> -!B:&NirG&9mK3I)'=75s!!(R;!0!c7"Pk[18cFeN!m@D8k5PPBS&bNErrL5!c2RqEc'cBAJcEIa -"TCsm0& -!BpJTm/X-`mK*A%ZgdA_!7gK;WMSta@K7YAO8f:*K(.t'"8oHTgV -!BU8Qkl@:PmK*A%ZgdA_!7gK;SYbQQ?iVG?O8f:0ORhT7"9#ilhnT0lZqAOA"SK3\`r(Df^]+E) -,62,[klK'jJ,~> -!B:&NirG&9mK*A%ZgdA_!7gK;N2>P:?2u5=O8f:6T(M4G"9$0/j1kTpZqAOA"STTucMW7n^]+E) -,62&YirR%VJ,~> -!BpJTm/X-`mK!m_.^Ae5+?ci -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs5am/tH=!1/cH!p+gckPkY1I),`prrJ"!a8Z7qMj!%Ms1nX:QN.H9\Es=J -4b*~> -!BU8Qkl@:PmJsT0mJrfUkl\p6!1/cH!pGR$kPkV5MoWL1!K)!>rr_,FT&bJ&_#FM'!"?lWklK'j -J,~> -!B:&NirG&9mJsT0mJr3Dird(*!1/cH!pc<:kPkV;Ra/SG!K)!>rr_8WWp#$6_#FM'!"?ZQirR%V -J,~> -!BpJTm/X,tmJs5bm/uE!!*YH`!q(?\kl1b[UkImBrrHkt`r?2@aa^)RJcERd"'P[SjLOXYeieN~> -!BU8Qkl@9dmJrfVkl]im!*YH`!q;#rkl1b\Y*%t\rrHkt`r?2@c],'rJcERd"'P[Ri48(Qc8pI~> -!B:&NirG%MmJr3Eire!`!*YH`!qM]4kl1b]\=`-"rrHkt`r?2@eXX,>JcERd"'P[Qg:?5E_`*)~> -!BpJTm/X,tmJs5bm/pVo.J&Z$!qM&fkl1bCKW+[WrrGKt`;]u9[sPLWJcEXf"7mrA?+K>'eieN~> -!BU8Qkl@9dmJrfVklY,i.J&Z$!q_]'kl1bFP-XnprrGKt`;]u:^P]`#JcEXf"7mrA>Iiu!c8pI~> -!B:&NirG%MmJr3Eir`Ea.J&Z$!qi5;kl1bJTY('3rrGKt`;]u:a-jpBJcEXf"7mrA=h3Pn_`*)~> -!BpJTm/X,tmJs5cm/rs\#1nt:!r%V`l2Lka[sc]7rrF+t_Z'c.VLHP`JcE[g"4m_WT=XCjeieN~> -!BU8Qkl@9dmJrfWkl[IV#1nt:!r/.ul2Lka^PpdSrrF+t_Z'c0Y`-g*JcE[g"4m_WS\"%dc8pI~> -!B:&NirG%MmJr3Firb\L#1nt:!r/V5l2Lkaa-tenrrF+t_Z'c1\sq1JJcE[g"4m_WRC_DZ_`*)~> -!BpJTm/X,tmJs5dm/t`I!0rZG!r8"^l2LkOO-oIIrrVd"rP8F8jHPMQJcE[g"-iitdC\cHeieN~> -!BU8Qkl@9dmJrfXkl]3B!0rZG!rALtl2LkQS>>bdrrVd"rP8F8kFe-rJcE[g"-iitcF` -!B:&NirG%MmJr3Gird@5!0rZG!rK"5l2LkSW3>j'rrVd"rP8F8lE$c=JcE[g"-iisaLgI5_`*)~> -!BpJTm/X,tmJs5em0)]6!)NTVrr`1eV>fc["3>l,rjVn.bV6a1"4N!smt(MYrri -!BU8Qkl@9dmJrfYklg-.!)NTVrrW.qYNc&gcAK`PrrL=t^&J2ePH+/(s2P'Ar_EMRk.KpZc8pI~> -!B:&NirG%MmJr3Hirn9u!)NTVrrW/'\`s+qeX=dmrrL=t^&J2jTsXBAs2P'Ar_EMPi4S(N_`*)~> -!BpJTm/X,tmJs5em/qS5)s`Xd"9,$brTjIcoU_!([Jp9(=1nP9rlBGeoR[%_rr_R+!-l0D!S0Da~> -!BU8Qkl@9dmJrfYklZ)/)s`Xd"9,F#rTjIcp8OGE[Jp9(=1eJ7cAAt%JcEdj"7$m+G.d&?c8pI~> -!B:&NirG%MmJr3Hira?&)s`Xd"9,d8rTjIcpU$d`[Jp9(=1eJ7eX4)EJcEdj"7$m+F1gN6_`*)~> -!BpJTm/X,tmJs5fm/sd"!kj]q!iqR_li.(>J?f!Ys8RPZrri"sI),Z2s2b3B]`J>F^$PjO4b*~> -!BU8Qkl@9dmJrfZkl\6p!kj]q!k"]uli.(BNk5.qs8RPZrri&)MT>XGs2b3B]`J>C^$,RC3e.~> -!B:&NirG%MmJr3IircIf!kj]q!ktc6li.(GSAY93s8RPZrri)3REk_]s2b3B]`J>?^#K.22h1~> -!BpJTm/X,trrB%#m/u>g!-jV*!k"$^m/I1bY(>?5rrH2t\GlZqRYB4As2b3BGQ8cD^?ksP4b*~> -!BU8Qkl@9drrAUlkl]c^!-jV*!kt,um/I1b[u]FPrrH2t\GlZsV39J^s2b3BGQ8`?^?G[D3e.~> -!B:&NirG%MrrA"[irdpQ!-jV*!lh/6m/I1c^n'MkrrH2t\Gl[!Z(Tp(s2b3BGQ8]8^>f732h1~> -!BpJTm/X,trrB%#m/pYp./K)+!l0Q^m/I1LM4sXJrrFgt[f6H^M3[1Rs2t?DqBu>M^?ksP4b*~> -!BU8Qkl@9drrAUlklY/j./K)+!lpPum/I1OQE0bbrrFgt[f6HbQD*Mns2t?DqBu>K^?G[D3e.~> -!B:&NirG%MrrA"[ir`Hb./K)+!m[M5m/I1RUUKs&rrFgt[f6HgUTNj5s2t?DqBu>I^>f732h1~> -!BpJTm/X,trrB%$m/s9f#h>(;!m-&_mJd:f^O45/rrW-,o -!BU8Qkl@9drrAUmkl[d`#h>(;!mctumJd:f`f&6KrrW-,o -!B:&NirG%MrrA"\irbtU#h>(;!nEn5mJd:fc'm7grrW-,o -!BpJTm/X,trrB%%m/u)Z!0!'?!n)S`mJd:WQ'1O -!BU8Qkl@9drrAUnkl]QS!0!'?!nWFumJd:YTq:_VrrM$tZMt(%\Ve?'JcEso",m3rfYH_Pc8pI~> -!B:&NirG%MrrA"]ird^F!0!'?!o0:6mJd:[XfCoprrM$tZMt(&_O8XGJcEso",m3qd_OlD_`*)~> -!BpJTm/X,trrB%%m/p2c55gZE!nr%^mJd:8ICoH\rrKYtYl=gkSV,=@s3:QGrB:3Y_!M0R4b*~> -!BU8Qkl@9drrAUnklX]]55gZE!oAjtmJd:=Mo,IrrrKYtYl=gmW0,Y^s3:QGrB:3W_!(mF3e.~> -!B:&NirG%MrrA"]ir`!U55gZE!of[5mJd:BR`bW4rrKYtYl=goZ_-!'s3:QGrB:3U^uGI52h1~> -!BpJTm/X-`rrBjNrrB%&m/rjY%Gm9J!o\O^mf*C`V2"!2rrJ9tY5\UYMj*1Ps3CWHh@0IT_ -!BU8Qkl@:PrrBjNrrAUokl[=R%Gm9J!p,?umf*CaYES(LrrJ9tY5\U]R%NMls3CWHh@0IQ_ -!B:&NirG&9rrBjNrrA"^irbPH%Gm9J!pH*6mf*Cb\Y85grrJ9tY5\UaV5rj3s3CWHh@0IM_;bR6 -2h1~> -!BpJTm/X-`rrE,8_Z'V8Z0_YI&HJ8_rrVD4eaEG>hLhj(X8`3:OKJNcrPsAanU^_drr\\i&_b+h -!S0Da~> -!BU8Qkl@:PrrE,8_Z'V,Z0;AB&-//^rrVJEg$\kBifUSDX8`3:OKJNcrlpD+o7?qfrr\\i&D+e` -!R<`V~> -!B:&NirG&9rrE,8_Z'UpZ/Yr6&-//^rrVSVhX:CGje'6_X8`3:OKJNcrm[FKoR[%grr\\i&CJAT -!Q-jH~> -!BpJTm/X-`rrN07^r-0PWNkgl:]NtJrrVV>bjYQ6r3_"'WW)ui[B'<1pTo4XqLS[nrrPXi:r;T# -eieN~> -!BU8Qkl@:PrrN07^r-0PS[%D\:&mbHrrV\NddR2 -!B:&NirG&9rrN07^r-0PN3VCE9E7PFrrVb^f^JhBrPk>`WW)ui[B'<1q8A]DqgndorrPXi9Z#fj -_`*)~> -!BpJTm/X-`rrW8:'Ys>?!!)or!!(aQ!3*9k"/>i*i040Bo7FmKrr_kQRe!EW!@-9srrh_]J^47G -s3goLi!f[]_sIKU4b*~> -!BU8Qkl@:PrrW8:'Ys>?!!)or!!(aQ!1gF["/#W'i040BooR;arr_q_V=^_d!@-9srr__iO4/[[ -dJj=,%03'=klK'jJ,~> -!B:&NirG&9rrW8:'Ys>?!!)or!!(aQ!0"5D".T?#i040Bp7BY"rr_tmZ1Y'q!@-9srr_f!S_8So -dJj=,%02p9irR%VJ,~> -!BpJTm/X-`rr`?%^_FTVrr<&rrr<&QrrB%)m/u2^!0`WH!qhG]nG`Ui_g9A$rrW$&qPX>qh2RNT -JcF0u"-W^%hSed^eieN~> -!BU8Qkl@:Prr`?%^_FTVrr<&rrr<&QrrAUrkl]WV!0`WH!qqtsn,EI2M9Vsu!r<3!VuHkXR[rMj -s3goLP5lHR`9@ -!B:&NirG&9rr`?%^_FTVrr<&rrr<&QrrA"airdgJ!0`WH!r&M4n,EI9R+/&6!r<3!VuHk\VlAm2 -s3goLP5lEL`8^m92h1~> -!BpJTm/X-`rriE&s1f>ap&>!lqu6p%s8UnL$jT8bir9"XZg@j"!'L4ErrVqTZ1.bqn!B.$VZ-\M -,GkDCrlTbdmt(Mgrr`3^!*mJ0!S0Da~> -!BU8Qkl@:PrriE&s1f>ap&>!lqu6p%s8UnL$jT8bir9"LZfqQq!'L4ErrVtb](#_%nY2Q@VZ-\M -,GkDCrm6\.nU^_irr`3^!*[>*!R<`V~> -!B:&NirG&9rriE&s1f>ap&>!lqu6p%s8UnL$jT8bir9";Zf;-i!'L4ErrW"o_sm[.o<,(]VZ-\M -,GkDCrmmULo7?qkrr`3^!*I2"!Q-jH~> -!BpJTm/X-`rr<&urrR`Op%JCc!;ld%!<<'L^@q&7=Q9>\WO2$pY5np]PlCj]PH4]Qrr^Jm]D\T+ -!OYInrri,*Haig%s4.,OfE_M]`U*]W4b*~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;ld%!<<'L^@q&7=Q9>\S[@V`X8rUZPlCg]T=+1g"4E+Erh]Vq -[7I(m"Soch^\WN]ec,a(#Q_$GklK'jJ,~> -!B:&NirG&9rr<&urrR`Op%JCc!;ld%!<<'L^@q&7=Q9>\N3qUIVu[1VPlCg^X1n*'"5''brh]Vq -[7I(m"T$-+a81Aeec,a(#Q^mCirR%VJ,~> -!BpJTm/X-`rriE&s1f>ap&>!lqu6Wrqu6]i']T,mWO;*qk8aPWPlCj_R&0fQrr_ncM<(H3!K_,k -rrhbaJBRqCs472PL&`7W`pEfX4b*~> -!BU8Qkl@:PrriE&s1f>ap&>!lqu6Wrqu6]i']T,mS[I\aiuA&RPlCj`UTa[frr_tpQKP%C!K_,k -rr_bmNmWFXec,`+!$(%=klK'jJ,~> -!B:&NirG&9rriE&s1f>ap&>!lqu6Wrqu6]i']T,mN4%[Jh&??KPlCj`YIXZ'rr`#'U["WS!K_,k -rr_i$S_&Gmec,`+!#sb6irR%VJ,~> -!BpJTm/X-`rr`?%^_FTVrrE3!rVm3%!rr;@4UV5i!TO+ZWO;*qEW@clQ2^sbSY,lOrr^i%Ykt0p -!Gmjirr_2?No#?efDbsP0*$%4m/bd$J,~> -!BU8Qkl@:Prr`?%^_FTVrrE3!rVm3%!rr;@4UV5i!TO+ZS[I\aDu_QjQ2^sbW2fjfrr^u7\bi-$ -!Gmjirr_;OS)T#!fDbsP0*#t2klK'jJ,~> -!B:&NirG&9rr`?%^_FTVrrE3!rVm3%!rr;@4UV5i!TO+ZN4%[JD#c6gQ2^sbZaKf'rr_/K_Yg/. -!Gmjirr_G_Vr`L0fDbsP0*#k/irR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?!?TVdrs@!os8O(;nG_tYir9"X[d=1<"p2f0rr`7pRf)dW"8JmJgn=ZJ -8@>&h"THYsU$dL3f`)&n!X?`dm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys>?!?TVdrs@!os8O(;nG_tYir9"L[cmn5"Tl]/rr`8&V>^#c"8T9bi1U)N -8@>#g"4E72n:CVlrr^7B"i\OH!R<`V~> -!B:&NirG&9rrW8:'Ys>?!?TVdrs@!os8O(;nG_tYir9";[c7J*"Tl]/rr`80Z2O:o"8]^&jIlMR -8@>#g"5'0Qnq$hnrr^7B"i/1=!Q-jH~> -!BpJTm/X-`rrN07_".L9LGR!GprG7Is8Nb:pt\sNir9"X\*X:a49/uYrr`8!Q2C1Q"5\^/pRhHd -,MAUe"SoTT[.o4Pg&D.d!'KVhm/bd$J,~> -!BU8Qkl@:PrrN07_".L9LGR!GprG7Is8Nb:pt\sNir9"L\*4"Y3rilWrrTL"qt'giifUM@TDnp: -fpr'FqSA'&q18S!rrZj546XcM!R<`V~> -!B:&NirG&9rrN07_".L9LGR!GprG7Is8Nb:pt\sNir9";\)RSM3WNcVrrTj8r:Bpjje'-[TDnp: -fpr'FqoP8Fq18S!rrZj53o\6@!Q-jH~> -!BpJTm/X-`rrE,8nc'.!Ot?nD/X$,5s01WUrdk+(rr_X'!1:jp!S0Da~> -!BU8Qkl@:PrrE,8nc'.!Ot?nD/X$,5s0 -!B:&NirG&9rrE,8nc'.!Ot?nD/X$,5s0 -!BpJTm/X-`rrBjNrrB%.m/u/Z!2,VW!k"!\o`#$UMOj@0rrLdtQi@0IP)J+Hs4dPUTE#__amB,[ -4b*~> -!BU8Qkl@:PrrBjNrrAV"kl]WS!2,VW!kk#ro`#$XQ`0SJrrLdtQi@0LSs\Ges4dPUTE#_\alriO -3e.~> -!B:&NirG&9rrBjNrrA"firddF!2,VW!l_&3o`#$ZUpKccrrLdtQi@0OWhnd-s4dPUTE#\Ual -2h1~> -!BpJTm/X,trrB%.m/pbs5Q6uK!ka?]p&>-m]mRqkrrKMuQN%*ec[qbSJcFR+"9(Lb@EIm;eieN~> -!BU8Qkl@9drrAV"klY;n5Q6uK!lL;rp&>-n`/Ds2rrKMuQ2^s9OK%Z!s5!\Wr]^BjalriO3e.~> -!B:&NirG%MrrA"fir`Qe5Q6uK!m@A4p&>-nbaR(OrrKMuQ2^s?T!\!2h1~> -!BpJTm/X,trrB%/m/t0,!nWb-\P*GC'rrJ3tPlCm`]6ggWJcFU,"4mSV_92-GeieN~> -!BU8Qkl@9drrAV#kl\X%!nWb-^StPSArrJ3tPlCm`_hu&#JcFU,"4mSV^<5[@c8pI~> -!B:&NirG%MrrA"gircgo!nWb-`WiYc[rrJ3tPlCmabF-9CJcFU,"4mSV\]Wq5_`*)~> -!BpJTm/X,trrB%/m/f -!BU8Qkl@9drrAV#klNjFEL-V+cB%Jfrr^N'a8VM,!H!m\rrhquN6M9Ps53hXE<&#AklK'jJ,~> -!B:&NirG%MrrA"girV1?EL-V+eXc:(rr^c=cMj73!H!m\rri#,RaV1ds53hXE<%u@irR%VJ,~> -!BpJTm/X,trrB%0m/rmZ(@RUi!mZ;\pAY6cRZ-HsrrGctOT,FDP`".Fs5]4b*~> -!BU8Qkl@9drrAV$kl[CT(@RUi!n<4spAY6dVO?_9rrGctOT,FGTU4Jcs5 -!B:&NirG%MrrA"hirbVJ(@RUi!nj+4pAY6fZ)6oTrrGctOT,FJXJFj,s5 -!BpJTm/X,trrB%1m/uDh!1K8S!n2S[pAY6BICB'>rrFRtNrK40KVe9ks5Et[RK+>gbj>G^4b*~> -!BU8Qkl@9drrAV%kl]i_!1K8S!n`IrpAY6GN5#7VrrFRtNrK45P-=P0s5Et[RK+;bbio/R3e.~> -!B:&NirG%MrrA"iire!S!1K8S!o9=3pAY6LR`>;lrrFRtNrK4:TXjcIs5Et[RK+;\bi8`A2h1~> -!BpJTm/X,trrB%1m/qM31B!U?!nht]p\t?hUkR`lrrW0,oo8tSrks)fpjrJ*rr`3T!-ZTR!S0Da~> -!BU8Qkl@9drrAV%klZ#-1B!U?!o8dsp\t?iY*7q3rrW0,oo8tSrl^,0q18S+rr`3T!-HHL!R<`V~> -!B:&NirG%MrrA"iira9$1B!U?!of[5p\t?j\=i#MrrW0,oo8tSrm@(Mq18S+rr`3T!--6C!Q-jH~> -!BpJTm/X,trrB%2m/tiC!Q1<)!o87\p\t?LJZS[3rrM0tMZ3hMVLQbfJcFg2"2b-EeBR@]eieN~> -!BU8Qkl@9drrAV&kl]9;!Q1<)!o]'sp\t?PO1"hKrrM0tMZ3eMY`7"\s5X+]_Z:"hc058S3e.~> -!B:&NirG%MrrA"jirdI0!Q1<)!p,m4p\t?TS\FucrrM0tMZ3eO\t%?&s5X+]_Z:"cc/SiB2h1~> -!BpJTm/X,tmJs6!m/g5e=d]3jidBGSrr`,"JCp%b!Q$mRrr_5@O5PThjSo9a!*%51!S0Da~> -!BU8Qkl@9dmJrfjklOc`=d]3jjbqsirr`/-Nnfft!Q$mRrr_AQS)f/#jSo9a!)q/,!R<`V~> -!B:&NirG%MmJr3YirW'X=d]3jkaLN+rr`/6S`,b3!Q$mRrr_J`W98a3jSo9a!)_#$!Q-jH~> -!BpJTm/X,tmJs6"m/t*)#iM-N!p4p\q#:HTL8+C(rrJctL]7MVbC?AYJcFm4"5jFd^Wu3IeieN~> -!BU8Qkl@9dmJrfkkl\O!#iM-N!pPZsq#:HXPca\BrrJctLAqA'NN_r)s5s=`i!9CrcKPAT3e.~> -!B:&NirG%MmJr3Zircal#iM-N!plB4q#:H[TssfZrrJctLAqA-S@S9Cs5s=`i!9CncJnrC2h1~> -!BpJTm/X,tmJs6"m/fENFd`72n:/aZrr`5/I+45Ws*f\%"Sf -!BU8Qkl@9dmJrfkklNsIFd`72nr;/prr`57MqO0ks*f\%"So]f`;G2dkPkU+!'JQk!R<`V~> -!B:&NirG%MmJr3ZirV:BFd`72oUFP0rr`5?Rbj,*s*f\%"T$')bl!%lkPkU+!'AKd!Q-jH~> -!BpJTm/X,tmJs6#m/s9e'CM=h!ptQ\q>UQ\N109srrHAtKDu&>S;#IDs60IbmLoT!cg:ba4b*~> -!BU8Qkl@9dmJrflkl[d_'CM=h!q22rq>UQ^RAKM8rrHAtKDu&AVio_as60IbmLoStcfkJU3e.~> -!B:&NirG%MmJr3[irbtT'CM=h!qDi3q>UQaVQocRrrHAtKDu&CZCp'*s60IbmLoSocf5&D2h1~> -!BpJTm/X,tmJs6$m/uW&!03NJ!q1c\qYpZs^O4(\rrG0tJc>i)LR@=Ws69OcNW:Nnd-Ukb4b*~> -!BU8Qkl@9dmJrfmkl^&r!03NJ!qDDrqYpZs`er$"rrG0tJc>i-Q)!Yrs69OcNW:Kid-1SV3e.~> -!B:&NirG%MmJr3\ire3e!03NJ!qW&4qYpZsc'd(?rrG0tJc>i2U9F!9s69OcNW:Hbd,P/E2h1~> -!BpJTm/X-`mJsT0mJs6$m/rIN,5@Z-!qM&\qYpZaP*>9krrEttJc>oRr5!capOWA1rr`$?!0PXq -!S0Da~> -!BU8Qkl@:PmJsT0mJrfmklZtH,5@Z-!qVVrqYpZcStGJ0rrEttJc>oRrQ'l+pjrJ2rr`$?!0>Lk -!R<`V~> -!B:&NirG&9mJsT0mJr3\irb2>,5@Z-!qi53qYpZeWiPZJrrEttJc>oRrQgnJpjrJ2rr`$?!/o4a -!Q-jH~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK!VVrr3,oZ]*0.JcG*: -"/c,7j3d)lc8pI~> -!B:&NirG&9mK!VVrr3,p]UI@LJcG*: -"/c,6h9k6`_`*)~> -!BpJTm/X-`mK*A%ZfpfW!8[&CWPIm&K)d]srrVnP[JTt+nmV*.=qNrrr_>FN89'bm/I,C -!/&\d!S0Da~> -!BU8Qkl@:PmK*A%ZfpfW!8[&CS\XIkJH.KqrrVq^^&.g3nt_`?M>mV*.=qNrrr_GURGi_sm/I,C -!.iP^!R<`V~> -!B:&NirG&9mK*A%ZfpfW!8[&CN54HTIK20nrrVtl`V]Z;oWY7\M>mV*.=qNrrr_PdVWEC/m/I,C -!.N>U!Q-jH~> -!BpJTm/X-`mK3I)'=7;u!!)oa!s%cW!8[&CWPRs(iY)=#SGrZcO0JN]"3l8)rJ:ISYtKZJqYp]t -c@M_ZJcG0<"1A1CimR2peieN~> -!BU8Qkl@:PmK3I)'=7;u!!)oa!s%cW!8[&CS\aOmh@fmtSGrZdS%8Fr"4E+CrJ:ISYtKZJq>UQG -O0.u(s6fmh[K$utdcgeX3e.~> -!B:&NirG&9mK3I)'=7;u!!)oa!s%cW!8[&CN5=NVfFn7nSGrZdW58B2"5''`rJ:ISYtKZJq>UQM -S[\3As6fmh[K$undc1AG2h1~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;Sp$Me[qsF^imd:()'a\+-ipHfG_X.H]%fjA8rr`.bVZ-Po"4Vh*qh>%N -AX.iHpAY6^SV>UFs7$$j^Anf#e*R1e4b*~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsF^imd:()'a\+-ipHf;_W_0V%fjA8rr`.mYl=V$"5/[Fqh>%N -AX.iHpAY6`W05kcs7$$j^Aneue*-nY3e.~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsF^imd:()'a\+-ipHf*_W(aJ%KO87rr`2%])M[."5]Nar.Y.O -AX.iHpAY6bZ_60+s7$$j^Anbne)LJH2h1~> -!BpJTm/X-`mJm7drrR`OjnA*B!;l0i!:K7T7G6?]DrU0bWP\$(E<&Ctrr`1fUAb)k"8A^Hh1P_. -2T:7Io`#$FL77FZs7-*j6i_5Um/bd$J,~> -!BU8Qkl@:PmJm7drrR`OjnA*B!;l0i!:K7T7G6?]DrU0bS\jUmDZE1rrr`1rXT&5!"8K-`iIh.2 -2T:7Io`#$KPbmbus7-*j6i_/SklK'jJ,~> -!B:&NirG&9mJm7drrR`OjnA*B!;l0i!:K7T7G6?]DrU0bN5FTVC]Hkorr`2(\,QC,"8TO#jb*R6 -2T:7Io`#$OTs=';s7-*j6i_&PirR%VJ,~> -!BpJTm/X-`mKEUjs1f;Sp$Me[qsF^imd:)!mdA7:ipHfG_sIQ[#6;i:rr`4kSc/Qf"5AF-pk/SJ -r!W+Is7?6nr4[Nbq18S;rr^=B#MR\p!S0Da~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsF^imd:)!mdA7:ipHf;_s%9T#6;i:rr`5!W;Z_q"5f3Hq1J\K -r!W+Is7?6nr5FQ+qLS\ -!B:&NirG&9mKEUjs1f;Sp$Me[qsF^imd:)!mdA7:ipHf*_rCjH#6;i:rr`5,Zi0n'"65udqLeeL -r!W+Is7?6nr6:YJqLS\ -!BpJTm/X-`mKc$ --@u3drrhkfJBn.Fs7H -!BU8Qkl@:PmKUAnqmVU?Jc>c$ --@u3drr_kqNmiRZoD\kd!,U0L!R<`V~> -!B:&NirG&9mKc$ --@u3drr_o'S_8SooD\kd!,C$D!Q-jH~> -!BpJTm/X-`mK3I)'=7;u!?AuTmKp]Nmd:)!mdA7:ipHfG`9dZ^$inGBrsA\&Q2:O\i.e$#Jc>fO -V,`*Hmf*CGN0E@Ss7QBoaoDk*ea3Cg4b*~> -!BU8Qkl@:PmK3I)'=7;u!?AuTmKp]Nmd:)!mdA7:ipHf;`9@BW$inGArs5m'qu?]WPHFS1rrW4s --:!"@Q2klK'jJ,~> -!B:&NirG&9mK3I)'=7;u!?AuTmKp]Nmd:)!mdA7:ipHf*`8^sK$inGArs66=qu?]ZTssfJrrW4s --:!"@?,irR%VJ,~> -!BpJTm/X-`mK*A%Zh!MpIPA@rkIWEtmd:'Fg=\o5ipHfG`9dVK!(`^]#HX*as899Qd"25rrrI7r -JcG-;"T?;fXS.5FpAY1b!-QiZ!S0Da~> -!BU8Qkl@:PmK*A%Zh!MpIPA@rkIWEtmd:'Fg=\o5ipHf;`9@>E!(`^]#I^6#s89QheUdc"rrI7r -JcG-;"THW'[eG@QpAY1b!-?]T!R<`V~> -!B:&NirG&9mK*A%Zh!MpIPA@rkIWEtmd:'Fg=\o5ipHf*`8^o -!BpJTm/X-`mK!rrGQr -JcG'9"SJgDa8UYiq#:H7!"[u -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs6*m/hV76)aeck/tO&r;Qu0MY6q]I*$s>qu6[4jamHrrr_>FNSoBfq#:C] -!.3;a!S0Da~> -!BU8Qkl@:PmJsT0mJrfsklQ,16)aeck/tO&r;Qu9QhLEsMpHtSqu6[4jamHrrr_GURcAu!q#:C] -!.!/[!R<`V~> -!B:&NirG&9mJsT0mJr3birXB(6)aeck/tO&r;QuAV"al3Raluhqu6[4jamHrrr_PdVrrX2q#:C] -!-ZrR!Q-jH~> -!BpJTm/X,tmJs6+m/u>]!5>N6&\)adG_hB)?Z3IS]SH+EOHo6bs82fsjVEFIkPk\ab^cP\JcGTH -"24aKin*PueieN~> -!BU8Qkl@9dmJrftkl]cT!5>N6&\)adG_hB)?Z3IS_j0o^SY>P(s82fsjVEFIk5PP3Nj&&*s8)`t -^&Sf&fBE=]3e.~> -!B:&NirG%MmJr3cirdpH!5>N6&\)adG_hB)?Z3ISbG+_!WNG`Bs82fsjVEFIk5PP9S@S -!BpJTm/X,tmJs6+m/hn?408G`gff[4^'BTlFR[4r_Z#,dqYpT(7=kL#rri,&I)#T1s82ft3rjob -m/bd$J,~> -!BU8Qkl@9dmJrftklQD9408G`gff[4^'9NmJ+Lg?aasKfrrKMrJcFj3"SoZe`r1Jgqu6^Z!.ibd -!R<`V~> -!B:&NirG%MmJr3cirXZ0408G`gff[4^'9NnMtGDbd"25mrrKMrJcFj3"T$')cM`=oqu6^Z!.NP[ -!Q-jH~> -!BpJTm/X,tmJs6,m/uPk!48m.!lerfpV$dDApBC%JcGNF!JPZIs5X+]lC!F\JcGZJ"1/%Ikh,8' -eieN~> -!BU8Qkl@9dmJrfukl]ub!48m.!lerfpV$dDB7QN=JcGNF!JPZIs5X+]m%fp&JcGZJ"1/%HjOi\t -c8pI~> -!B:&NirG%MmJr3dire0W!48m.!lerfpV$dDB8NSUJcGNF!JPZIs5X+]n$&PGJcGZJ"1/%Hhq6ri -_`*)~> -!BpJTm/X,tmJs6,m/r[T/,l^O!RbQN^&_QfJcGKE!EGtIs5Et[dt4+YJcG`L"9'eNQe:[+eieN~> -!BU8Qkl@9dmJrfukl[.M/,l^O!RbQN^&_TgJcGKE!EGtIs5Et[fT<$$JcG`L"9'eNPh>4$c8pI~> -!B:&NirG%MmJr3dirbDD/,l^O!RbQN^&_WhJcGKE!EGtIs5Et[h4CqDJcG`L"9'eNOkA[p_`*)~> -!BpJTm/X,tmJs6-m/u]*!2$Fo!rc96o=b:==8mdNq#:@AeUdbYrri50Hb0**s8W*$T)^D.g$Jgk -4b*~> -!BU8Qkl@9dmJrg!kl^-!!2$Fo!rc96o=b:==8mdNq#:@AeUdbYrri58MSf:Bs8W*$T)^A)g$&O_ -3e.~> -!B:&NirG%MmJr3eire9i!2$Fo!rc96o=b:==8mdNq#:@AeUdbYrri8AREGGYs8W*$T)^>"g#E+N -2h1~> -!BpJTm/X,tmJs6-m/sBh)u6Z:!PaQk^Ae07$TkBb^&a/,JcGQG!qQftJcFU,"7;Y5eq*i(s7mT6 -X4ck@eieN~> -!BU8Qkl@9dmJrg!kl[ja)u6Z:!PaQk^Ae07$TkBb^&a/,JcGQG!qQftJcFU,"7N1Og4B8,s7mT6 -W7gD9c8pI~> -!B:&NirG%MmJr3eirc(W)u6Z:!PaQk^Ae07$TkBb^&a/,JcGQG!qQftJcFU,"7`^jhgte1s7mT6 -UtOc/_`*)~> -!BpJTm/X,tmJs6-m/fHOM66dYFhRaf"9?0@:cJ6b!PNW,s7uZq`AW;Ig]%B-Kq.O]rrS#W52#<( -eieN~> -!BU8Qkl@9dmJrg!klO!JM66dYFhRaf"9?0@:cJ6b!PNW,s7uZq`AW;Ig]%B2PGdl#rrS#W4k]'# -c8pI~> -!B:&NirG%MmJr3eirV:BM66dYFhRaf"9?0@:cJ6b!PNW,s7uZq`AW;Ig]%B6TX+*=rrS#W45&Wp -_`*)~> -!BpJTm/X,trrB%?m/t6+%e-V#!-%kM#lq]RZ3S+X!!Q0t^&W,'s7uZqQ">OHgA_ -!BU8Qkl@9drrAV3kl\^$%e-V#!-%kM#lq]RZ3S+X!!Q0t^&W,'s7uZqQ">OHgA_ -!B:&NirG%MrrA#"ircmn%e-V#!-%kM#lq]RZ3S+X!!Q0t^&W,'s7uZqQ">OHgA_ -!BpJTm/X,trrB%?m/g;gF0,BAE;[EV!5?1R#ejRO!!UJ,Q%Atfrr___K@>JQ!cn?B -g?epl4b*~> -!BU8Qkl@9drrAV3klOibF0,BAE;[EV!5?1R#ejRO!!UJ,Q%Atfrr_elOk> -!B:&NirG%MrrA#"irW*YF0,BAE;[EV!5?1R#ejRO!!UJ,Q%Atfrr_i"TA>/"!cn?> -g>`4O2h1~> -!BpJTm/X,trrB%@m/tuG"5g3[!Hl*S^'t(VZ;ETq"dkMS^:q:'JcGQG!B.oJs472Pg4u*]L&V84 -!sdK5m/bd$J,~> -!BU8Qkl@9drrAV4kl]E>"5g3[!Hl*S^'t(VZ;ETq"dkMS^:q:'JcGQG!B.oJs472PhNar)L&V84 -!s[90klK'jJ,~> -!B:&NirG%MrrA##irdU3"5g3[!Hl*S^'t(VZ;ETq"dkMS^:q:'JcGQG!B.oJs472PihE[GL&V84 -!s[*+irR%VJ,~> -!BpJTm/X,trrB%@m/hM4;60]t^Pi')rr -!BU8Qkl@9drrAV4klQ#.;60]t^Pi')rr -!B:&NirG%MrrA##irX9%;60]t^Pi')rr -!BpJTm/X,trrB%Am/uPh!5>N6!rc96o=b:=8,\#=qYpTH-@u3Frr_bbJ^K8Q"24aPkhPP+eieN~> -!BU8Qkl@9drrAV5kl]u`!5>N6!rc96o=b:=8,\#=qYpTH-@u3Frr_hoO4K*d"24aPjP8u#c8pI~> -!B:&NirG%MrrA#$ire0T!5>N6!rc96o=b:=8,\#=qYpTH-@u3Frr_o&S_Jr""24aOhq[5m_`*)~> -!BpJTm/X-`rrBjNrrB%Am/iaW/ZJaNdUi$a"C3MsR/DO8r;Qeo+!\FDAh!G-n -4b*~> -!BU8Qkl@:PrrBjNrrAV5klR4P/ZJaNdUi$a"C3MsR/DO8r;Qeoh!"jb -3e.~> -!B:&NirG&9rrBjNrrA#$irYGF/ZJaNdUi$a"C3MsR/DO8r;QeoXY3q,G!\FD:guAFQ -2h1~> -!BpJTm/X-`rrE,8_Z'V8bO#?g!1Kkd!lerfpV$pHBu^1C6Pak!JcG`L!Hj*Is3L]JrP -!BU8Qkl@:PrrE,8_Z'V,bNT'b!1Kkd!lerfpV$pHBu^1C6Pak!JcG`L!Hj*Is3L]JrQ'l.q251R -RK,2"klK'jJ,~> -!B:&NirG&9rrE,8_Z'UpbMrX[!1Kkd!lerfpV$pHBu^1C6Pak!JcG`L!Hj*Is3L]JrQgnLqMP:S -RK,/!irR%VJ,~> -!BpJTm/X-`rrN07^r-0PWQa`3_Z1>BVuHhR>)`9k!fU= -!BU8Qkl@:PrrN07^r-0PS]p=#^]5#?VuHhR>)`9k!fU= -!B:&NirG&9rrN07^r-0PN6L;a])WK:VuHhR>)`9k!fU= -!BpJTm/X-`rrW8:'Ys>?!!)or!!(aQ!3+30!aPeJV#Lb2DdRaFO*Fu'V>:,pq5H^tG1qTK!>adJ -s3(EEhi!`^N;is$!+"FJ!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?!!)or!!(aQ!1h?u!a>YHV#Lb2DdRaFO*Fu+Vtp>rq5H^tG1qTK!>adJ -s3(EEig?D(N;is$!*e:D!R<`V~> -!B:&NirG&9rrW8:'Ys>?!!)or!!(aQ!0#.^!a,MFV#Lb2DdRaFO*Fu/WVQPtq5H^tG1qTK!>adJ -s3(EEk,#0GN;is$!*S. -!BpJTm/X-`rr`?%^_FTVrr<&rrr<&QrrB%Cm/u8S!SO1H#3O(Nk5W5hpAY -!BU8Qkl@:Prr`?%^_FTVrr<&rrr<&QrrAV7kl]]K!SO1H#3O(Nk5WK%pAYklK'jJ,~> -!B:&NirG&9rr`?%^_FTVrr<&rrr<&QrrA#&irdm@!SO1H#3O(Nk5W`6pAY -!BpJTm/X-`rriE&s1f>ap&>!lqu73-s8UnL$jT8bs8UnL$jT8blMgj`c0YRl!(!+S!r79.p&>3n -QldT>oni\L[7,ZHa8Z;7W.3"iO8f8I!0,k&!S0Da~> -!BU8Qkl@:PrriE&s1f>ap&>!lqu73-s8UnL$jT8bs8UnL$jT8blMgjTc05:e!(!+S!r@l@p&>3n -QldT>oni\L[7,ZHa8Z87ZAm7lrrPIdMVdRuc8pI~> -!B:&NirG&9rriE&s1f>ap&>!lqu73-s8UnL$jT8bs8UnL$jT8blMgjCc/Sk\!(!+S!rJGRp&>3n -QldT>oni\L[7,ZHa8Z88]:7E4rrPIdLYh%l_`*)~> -!BpJTm/X-`rr<&urrR`Op%JCc!;ld-!<<'L^@q&7=TACO^@q&7=R,ndWQjf3/HD];rrKd-o)Aj2 -:_nQGMuNg3Fb0S3rr_5?P3%f*!iH#MhX(?p4b*~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;ld-!<<'L^@q&7=TACO^@q&7=R,ndS^$C#/HD];rrL$?o)Aj2 -:_nQGMuNg3Fb0S3rr_>NT'2:9!iH#MhWY'd3e.~> -!B:&NirG&9rr<&urrR`Op%JCc!;ld-!<<'L^@q&7=TACO^@q&7=R,ndN6UAa.fcK9rrLcH!iH#KhW"XS2h1~> -!BpJTm/X-`rriE&s1f>ap&>!lqu6Wrqu6]i'`7n2ob?]k!3+92"2"UKpmV3apO);srrh"f&nfmW -rrH,rJcE[g"THGiXS.hW"8ET2]\i)WeieN~> -!BU8Qkl@:PrriE&s1f>ap&>!lqu6Wrqu6]i'`7n2ob?]k!1hF""1\CHpmV3apknM0rrh"f&nfmW -rrH,rJcE[g"THZ([eGsb"8ET2\_lWPc8pI~> -!B:&NirG&9rriE&s1f>ap&>!lqu6Wrqu6]i'`7n2ob?]k!0#4`"1/%CpmV3aq3gaBrrh"f&nfmW -rrH,rJcE[g"THl=^\Eul"8ET2[,9mE_`*)~> -!BpJTm/X-`rr`?%^_FTVrrE3!rVmK-!rr;@4UV5i!WW2?4UV5i!UB[bWQsl4>l\u6rrKU-n,EOU -Ihkl!O8f5-eUdb;rri"qIE;DOrrR9B?/P#MeieN~> -!BU8Qkl@:Prr`?%^_FTVrrE3!rVmK-!rr;@4UV5i!WW2?4UV5i!UB[bS^-I$>6&c4rrKm?n,EOU -Ihkl!O8f5-eUdb;rri&&N6_EdrrR9B>MnZGc8pI~> -!B:&NirG&9rr`?%^_FTVrrE3!rVmK-!rr;@4UV5i!WW2?4UV5i!UB[bN6^Gb=TEQ2rrL0Pn,EOU -Ihkl!O8f5-eUdb;rri)1RaqD$rrR9B=l86?_`*)~> -!BpJTm/X-`rrW8:'Ys>?!?TVdrt3R"s8O(;nG_tYs8O(;nG_tYlMgj`cg:hs$3AhIrrVk?mdC)Y -op-jFR/N6K!qQftJcEOc"65K(j-9QGf`;HBi9^Qr4b*~> -!BU8Qkl@:PrrW8:'Ys>?!?TVdrt3R"s8O(;nG_tYs8O(;nG_tYlMgjTcfkPk$3AhIrrVnNnF$;[ -op-jFR/N6K!qQftJcEOc"6Q,Dk*5lJf`;H>i9:9f3e.~> -!B:&NirG&9rrW8:'Ys>?!?TVdrt3R"s8O(;nG_tYs8O(;nG_tYlMgjCcf5,_$3AhIrrVq^o'ZM] -op-jFR/N6K!qQftJcEOc"6le`l'22Mf`;H8i8XjU2h1~> -!BpJTm/X-`rrN07_".LALGR!GprG7Is8Nb:pt\sNs8Nb:pt\sNlMgj`cg:du!'Z_K!OAfnrrrCj -5T5.6Q2^m(2M(nBrri>CI]E%*rrP@aPi1p0eieN~> -!BU8Qkl@:PrrN07_".LALGR!GprG7Is8Nb:pt\sNs8Nb:pt\sNlMgjTcfkLo!'Z_K!P>f,rrrCj -5T5.6Q2^m(2M(nArr^T+[.]db!^6UIi9:9f3e.~> -!B:&NirG&9rrN07_".LALGR!GprG7Is8Nb:pt\sNs8Nb:pt\sNlMgjCcf5(e!'Z_K!Q;b>rrrCj -5T5.6Q2^m(2M(nArr^f@^%[fl!^6UEi8XjU2h1~> -!BpJTm/X-`rrE,8nc'F)Ot?nD/X$,5s0 -!BU8Qkl@:PrrE,8nc'F)Ot?nD/X$,5s0 -!B:&NirG&9rrE,8nc'F)Ot?nD/X$,5s0 -!BpJTm/X-`rrBjNrrB%Fm/tZ8$LsD]!Nr]krrqtY.k?nURf -!BU8Qkl@:PrrBjNrrAV:kl]-1$LsD]!OoZ(rrqtY.k?nURf -!B:&NirG&9rrBjNrrA#)ird=&$LsD]!PlS9rrqtY.k?nURf -!BpJTm/X,trrB%Fm/hM4>Eo-hmsF]irrrD:<>'&rSGrU6eq*k3rri>FJ#Dn+rrQC)GiA#jeieN~> -!BU8Qkl@9drrAV:klQ#.>Eo-hnVQu&rrrD:<>'&rSGrU6eq*k2rr^Z.Z1XOb!a>YJiTUBg3e.~> -!B:&NirG%MrrA#)irX9%>Eo-ho9f:8rrrD:<>'&rSGrU6eq*k2rr^lC]CqZm!a>YGiSssV2h1~> -!BpJTm/X,trrB%Gm/u\t!4nBo!NNQgrrqM6)F0bjT`5)T'`N[`\,QU*Y^F@eS,WT%!$LXfm/bd$ -J,~> -!BU8Qkl@9drrAV;kl^,l!4nBo!OKN$rrqM6)F0bjT`5)T'`N[`\,QU+\VnW0S,WT%!$LLbklK'j -J,~> -!B:&NirG%MrrA#*ire9_!4nBo!PQM6rrqM6)F0bjT`5)T'`N[`\,QU,_4&dNS,WT%!$C4[irR%V -J,~> -!BpJTm/X,trrB%Gm/s`r*W;3%!pt@/j8T;]Ql[TCpS.ZgWDA*F[/U6kQ&FLhrr`3?!4ChR!S0Da~> -!BU8Qkl@9drrAV;kl\3k*W;3%!q2$Aj8T;]Ql[TCpS.ZgWDA*F[/U6nTpXi0rr`3?!4(VK!R<`V~> -!B:&NirG%MrrA#*ircFa*W;3%!qD]Rj8T;]Ql[TCpS.ZgWDA*F[/U6pXek-Lrr`3?!3Y>A!Q-jH~> -!BpJTm/X,trrB%Gm/gSoH'/+-V7PUb"Mm_KL@:rQ -eieN~> -!BU8Qkl@9drrAV;klP,jH'/+-YJT5t"Mm_KL@:r -!B:&NirG%MrrA#*irWBaH'/+-\]Wk1"Mm_KL@:r2nQC -_`*)~> -!BpJTm/X,trrB%Hm/uPb!7R)1!pP+.hu -!BU8Qkl@9drrAV\nrsA48 -!B:&NirG%MrrA#+ire0N!7R)1!q)NRhu -!BpJTm/X,trrB%Hm/j3d/ -!BU8Qkl@9drrAV -!B:&NirG%MrrA#+irYnS/ -!BpJTm/X,trrB%Hm/g;gKTH-7ja[0_rrheF),%fHrrKVpJcDhO"jqprn:lnr^&a1IYQ"ZW!*8.I -!S0Da~> -!BU8Qkl@9drrAV -!B:&NirG%MrrA#+irW*YKTH-7l^Rh-rrheF),%fHrrKVpJcDhO"l#WXo7i4u^&a1IYQ"ZW!)hk; -!Q-jH~> -!BpJTm/X,tmJs68m/uJ[!8EP6!M%']rrr.c-6AKLY5eNLJcDeN"8T?2KCuqZKse/b"5 -!BU8Qkl@9dmJrg,kl]oS!8EP6!N4)orrr.c-6AKLY5eNLJcDeN"8]`EKCuqZKse/b"5) -c8pI~> -!B:&NirG%MmJr3pire'F!8EP6!OC,,rrr.c-6AKLY5eNLJcDeN"8g)XKCuqZKse/b"5 -!BpJTm/X,tmJs68m/is]23%V;iIUp[rs&Ik8e,+8qm$/%5e)CFWrE+q=nB?.?2:`)!]9tOjR!!! -4b*~> -!BU8Qkl@9dmJrg,klRFV23%V;jcB>mrs&Ik8e,+8qm$/%5e)CFWrE+q>4]H/?2:`)!]9tLjQQ]j -3e.~> -!B:&NirG%MmJr3pirYYL23%V;kahY)rs&Ik8e,+8qm$/%5e)CFWrE+q>4]H/?2:`)!]9tHjPp9Y -2h1~> -!BpJTm/X,tmJs68m/g&`NK!l -!BU8Qkl@9dmJrg,klOQZNK!l -!B:&NirG%MmJr3pirVjRNK!l -!BpJTm/X,tmJs69m/uGV!99%0]lC:V"60@f -jlPk1eieN~> -!BU8Qkl@9dmJrg-kl]lN!99%0]lC:V"60@f -iT9;)c8pI~> -!B:&NirG%MmJr3qire$B!99%0]lC:V"60@f -gZ@Gr_`*)~> -!BpJTm/X,tmJs69m/j!^3/[_:PK_GS"j1a#30WX=rrJ$pJcD_L!-%hL!!*#4!WWC"rk8AOYQ"Y` -!2ATB!S0Da~> -!BU8Qkl@9dmJrg-klRIW3/[_:T@2-e"j1a#30WX=rrJ$pJcD_L!-%hL!!*#4!WWC"rk8AOYQ"Y` -!2&B;!R<`V~> -!B:&NirG%MmJr3qirY\M3/[_:X4Yi""j1a#30WX=rrJ$pJcD_L!-%hL!!*#4!WWC"rk8AOYQ"Y` -!1W*1!Q-jH~> -!BpJTm/X-`mJsT0mJs69m/g;gM2M<7fSBIQrs&A0>RjAmr4W+2:T8pFWW)s;qn<77^:mk[!! -!BU8Qkl@:PmJsT0mJrg-klOibM2M<7h3Iudrs&A0>RjAmr4W+2:T8pFWW)s;qn<77^:mk[!! -!B:&NirG&9mJsT0mJr3qirW*YM2M<7iM-=urs&A0>RjAmr4W+2:T8pFWW)s;qn<77^:mk[!! -!BpJTm/X-`mK! -!BU8Qkl@:PmK!e`d1s%fk=?rrJV?c2RtDPsZ=1g;*^irY4IFs/H#!EP;:a -$37fS"dkMS^:q:#YQ"^Y!"\/QklK'jJ,~> -!B:&NirG&9mK! -!BpJTm/X-`mK*A%ZfpfW!;c*`!9NVKWR^A;XT0o.rrU].rlbquYa,.# -$37fS:'F;k^:ol:Y5\PS!3PDN!S0Da~> -!BU8Qkl@:PmK*A%ZfpfW!;c*`!9NVKS^ls+WW4T+rrLf?b5VY!Fr*NFq8<45efo\FW;cn&Q2J?' -!5?0B"\\p1^6Pq*rrO_OWoiOHc8pI~> -!B:&NirG&9mK*A%ZfpfW!;c*`!9NVKN7HqiV>r0'rrLuQb5VY!Fr*NFq8<45efo\FW;cn&Q2J?' -!5?0B"\\p1^6Pq*rrO_OVWQn>_`*)~> -!BpJTm/X-`mK3I)'=7;u!!)oa!s%cW!;c*`!9NVKWR^A;@/t_3rrW1We]Igpq5H^tG1sq8!Ld>G -s/>quq-EU+!F>N(rrRTK@HQqXeieN~> -!BU8Qkl@:PmK3I)'=7;u!!)oa!s%cW!;c*`!9NVKS^ls+?iYV1rrJJ?ao;P?WC%JFg;X'mRU1RF -W;cno?1Yc2?2:Z'!dt&Vk32ol3e.~> -!B:&NirG&9mK3I)'=7;u!!)oa!s%cW!;c*`!9NVKN7Hqi>l];.rrJqPao;P?WC%JFg;X'mRU1RF -W;cno?1Yc2?2:Z'!dt&Sk2QK[2h1~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;Sp$Me[qsG!qmd:()'a\+-md:()'a\+-lL"YOf'NOO!#p[m!rdu/`W$,; -WC%JFg<9Ktr"S4Cs/>r"]FdkspV$ZeL9(=U)Z[P6m/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsG!qmd:()'a\+-md:()'a\+-lL"YCf'*7H!#p[m!reG@`W$,; -WC%JFg<9Ktr"S4Cs/>r"]FdkspV$ZeL9(=U)Z[G3klK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsG!qmd:()'a\+-md:()'a\+-lL"Y2f&Hh=!#p[m!reqR`W$,; -WC%JFg<9Ktr"S4Cs/>r"]FdkspV$ZeL9(=U)Z[8.irR%VJ,~> -!BpJTm/X-`mJm7drrR`OjnA*B!;l0q!:K7T7G6?]Dsm#n7G6?]DsH`jWRgG -!BU8Qkl@:PmJm7drrR`OjnA*B!;l0q!:K7T7G6?]Dsm#n7G6?]DsH`jS_!$,F9$'0rrLN?_Z'en -Fr!H/p -!B:&NirG&9mJm7drrR`OjnA*B!;l0q!:K7T7G6?]Dsm#n7G6?]DsH`jN7R"jE<'a-rrL`Q_Z'en -Fr!H/p -!BpJTm/X-`mKEUjs1f;Sp$Me[qsG!qmd:)!mdA7:md:)!mdA7:lL"YOf'NMn!4@O\!r[c._>a`; -QVn/WOl4Xe!J5EEs/Q)$\fYPSrr3;pEE.4=O)%Q^l)F[a[/_rEm/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsG!qmd:)!mdA7:md:)!mdA7:lL"YCf'*5i!4@O\!r\8@_>a`; -QVn/WOl4Xe!J5EEs/Q)$\fYPSrr3;pEE.4=O).WdlDadb[/_oDklK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsG!qmd:)!mdA7:md:)!mdA7:lL"Y2f&Hfb!4@O\!r\bQ_>a`; -QVn/WOl4Xe!J5EEs/Q)$\fYPSrr3;pEE.4=O)7`jl`'mc[/_lCirR%VJ,~> -!BpJTm/X-`mKCTWRpM>fE)BQK`;(nRD/\* -p9A'A14dj&rrG3mJcDhO"7]tF](u@1kKC]$d%\:Srr_s$!nc`(!S0Da~> -!BU8Qkl@:PmKCTS_**.e,fsMK`;(tUqZj5 -p9A'A14dj&rrG3mJcDhO"7]tF](u@1kKC].eZHijrr_s$!n?Gu!R<`V~> -!B:&NirG&9mKCTN7[(lcN4FHK`;)%YeL,A -p9A'A14dj&rrG3mJcDhO"7]tF](u@1kKC]8g:,>+rr_s$!mg)j!Q-jH~> -!BpJTm/X-`mK3I)'=7;u!?AuTmLd8Vmd:)!mdA7:md:)!mdA7:lL"YOfBiX)!(qnD!rRT/]`/67 -_/UYCEP_S1rs8V8H#R;>Xq(2Ws/l;'\fYPSp&>0,Z/gH5WW*#l!0ud8!S0Da~> -!BU8Qkl@:PmK3I)'=7;u!?AuTmLd8Vmd:)!mdA7:md:)!mdA7:lL"YCfBE@#!(qnD!rS)@]`/67 -_/UYCEP_S1rs8V8H#R;>Xq(2Ws/l;'\fYPSp&>04]'#+OWW*#l!0cX2!R<`V~> -!B:&NirG&9mK3I)'=7;u!?AuTmLd8Vmd:)!mdA7:md:)!mdA7:lL"Y2fAcpn!(qnD!rSVR]`/67 -_/UYCEP_S1rs8V8H#R;>Xq(2Ws/l;'\fYPSp&>0<_Wm]iWW*#l!0?@(!Q-jH~> -!BpJTm/X-`mK*A%Zh!N#IPA@rkIWEtmd:'Fg=\o5md:'Fg=\o5lL"YOfBiW9!0i*8!Q(D;rs$l% -1)49'p>c/ZbZg(?^:q:>3m<0TYQ"^pAfnVUrrh&=s-Lm-rrSDb;!@9IeieN~> -!BU8Qkl@:PmK*A%Zh!N#IPA@rkIWEtmd:'Fg=\o5md:'Fg=\o5lL"YCfBE?3!0i*8!Qh:Mrs$l% -1)49'p>c/ZbZg(?^:q:>3m<0TYQ"^pAfnVUrrh2Ms.[l>rrSDb:?^pCc8pI~> -!B:&NirG&9mK*A%Zh!N#IPA@rkIWEtmd:'Fg=\o5md:'Fg=\o5lL"Y2fAcp+!0i*8!RS0_rs$l% -1)49'p>c/ZbZg(?^:q:>3m<0TYQ"^pAfnVUrrh>]s/sqPrrSDb9^(L;_`*)~> -!BpJTm/X-`mK!-!r@B.[f6Qi -O[9CQP4[r;!Kqm,^&`YFJcE"T"25F\nac\`pNQSgM>jOT"5X"gl07R9eieN~> -!BU8Qkl@:PmK!-!rIr@[f6Qi -O[9CQP4[r;!Kqm,^&`YFJcE"T"25F\nac\_pkJb'QDsldh>e)Jl0/5o3e.~> -!B:&NirG&9mK!-!rJJR[f6Qi -O[9CQP4[r;!Kqm,^&`YFJcE"T"25F\nac\_q3Cp;UT+7qh>e&Cl/Mf^2h1~> -!BpJTm/X-`mJsT0mJs6=m/j]r.=qL#s1Y56rs/7]<=1[:c2R)0!KN99^&a=UJcE+W"8?aI^$kt( -LueSoeuAZN.0-g@m/bd$J,~> -!BU8Qkl@:PmJsT0mJrg1klS0k.=qL#s2D(Grs/7]<=1[:c2R)0!KN99^&a=UJcE+W"8?aI^$kt( -Q0817g8Y)R.0-^=klK'jJ,~> -!B:&NirG&9mJsT0mJr3uirZCa.=qL#s3.sYrs/7]<=1[:c2R)0!KN99^&a=UJcE+W"8?aI^$kt( -U[%lUhl6VW.0-R9irR%VJ,~> -!BpJTm/X,tmJs6=m/hJ3D1V]hs7h!,Z2Y(*^2k\@A?YUorrL#aotCHR_h%irrr^V!=7,GU"K'0< -c'54-!c7p]l0SN&4b*~> -!BU8Qkl@9dmJrg1klPu-D1V]hs7qT>Z2Y(*^2k\@A?YUorrL#aotCHR_h%irrr^V!=7,GU"L-,M -d\*T>!c7p[l0/5o3e.~> -!B:&NirG%MmJr3uirX6$D1V]hs8&2QZ2Y(*^2k\@A?YUorrL#aotCHR_h%irrr^V!=7,GU"M3%] -fW;(P!c7pXl/Mf^2h1~> -!BpJTm/X,tmJs6=m/f6IZ%;rTrrK[-XoAU\O[]gMOkfU/!r?08otCL@>l'$O\c2d1MADuRrrpB= -s8@N-WrE.*!''61!S0Da~> -!BU8Qkl@9dmJrg1klNgEZ%;rTrrKs?XoAU\O[]gMOkfU/!r?08otCL@>l'$O\c2d1MADuRrrpWN -s8A#?WrE.*!''6-!R<`V~> -!B:&NirG%MmJr3uirV+=Z%;rTrrL6QXoAU\O[]gMOkfU/!r?08otCL@>l'$O\c2d1MADuRrrpi^ -s8AMPWrE.*!&j*%!Q-jH~> -!BpJTm/X,tmJs6>m/u>O"Rq!Bs8N/oHgRm6#P5-0)CT[@qY:'kU7_%k!M?*;s1844i'0Hali..L -M#[LkT;qnnn,rpSlKnW'4b*~> -!BU8Qkl@9dmJrg2kl]cG"Rq!Bs8N/pMXRVG#P5-0)CT[@qY:'kU7_%k!M?*;s1844i'0Hali..O -Q2gm*WiH($n,rpOlKJ>p3e.~> -!B:&NirG%MmJr4!irdp:"Rq!Bs8N/qRIR?X#P5-0)CT[@qY:'kU7_%k!M?*;s1844i'0Hali..R -U]:A?[As6/n,rmHlJho_2h1~> -!BpJTm/X,tmJs6>m/j3d3._,.rrKL-W;d,%c%7k] -!BU8Qkl@9dmJrg2klR^^3._,.rrKg?W;d,%c%7k]p3e.~> -!B:&NirG%MmJr4!irYnS3._,.rrL*QW;d,%c%7k] -!BpJTm/X,tmJs6>m/h#&I"D=rrrVe6-loTE2]2hKs0\o-rrRQJC?k0eeieN~> -!BU8Qkl@9dmJrg2klPMuI"D=rrrVkMntl?noTE2]2hK -!B:&NirG%MmJr4!irWclI"D=rrrVn]oVMQpoTE2]2hK -!BpJTm/X,tmJs6>m/ed<^OcF_rrK@-UAkJp^2k\@A9OI@^'=YP^::%`*)-=F!Lp$=s1eR9^CkM[ -k5PXi]Dqp%HLn3;!l"^clKnW'4b*~> -!BU8Qkl@9dmJrg2klN=7^OcF_rrK[?UAkJp^2k\@A9OI@^'=YP^::%`*)-=F!Lp$=s1eR9^CkM[ -k5PXr_uKc/M=mqL!l"^blKJ>p3e.~> -!B:&NirG%MmJr4!irUY0^OcF_s8Tp0rs/D7F!qr;G+8HE#6;KP\>FEh9`;[+S#Co<^]+DN&odU- -rs$?`s8VbZp8e2p^Ao_JirR%VJ,~> -!BpJTm/X,tmJs6?m/u/F$N#DSr;QifHLmd/"5K"q^&>YF!;sP4[30hq^&boiJcERd"8[9T^?#:p -d%(+8!NEQ/rr`-*!T!)/!S0Da~> -!BU8Qkl@9dmJrg3kl]W?$N#DSr;QihM=mM@"5K"q^&>YF!;sP4[30hq^&boiJcERd"8[9T^?#:p -eYiEH!OKPArr`-*!SZl(!R<`V~> -!B:&NirG%MmJr4"irdd3$N#DSr;QijR.d0P"5K"q^&>YF!;sP4[30hq^&boiJcERd"8[9T^?#:p -g9U_X!PHIRrr`-*!S$Gq!Q-jH~> -!BpJTm/X,trrB%Pm/j$_6%T(4rrK1-Sc8\1r4W.2qn<)]1&\fdEe48-rr_+;9BtR;!UbF9rrVJ5 -q5aMs5ld\Gm/bd$J,~> -!BU8Qkl@9drrAVDklRLX6%T(4rrKO?Sc8\1r4W.2qn<)]1&\fdEe48-rr_+;9BtR;!Uu'IrrVPF -qQ'Vt5ldSDklK'jJ,~> -!B:&NirG%MrrA#3irY_N6%T(4rrKjPSc8\1r4W.2qn<)]1&\fdEe48-rr_+;9BtR;!V2`ZrrVYX -qlB_u5ldG@irR%VJ,~> -!BpJTm/X,trrB%Pm/h#&IY%OqrrVV8p7D9aE;[EM!;jJ2XUb -!BU8Qkl@9drrAVDklPQ!IY%OqrrV\HpR_BbE;[EM!;jJ2XUb -!B:&NirG%MrrA#3irWfmIY%OqrrVbYpn%KcE;[EM!;jJ2XUb -!BpJTm/X,trrB%Pm/f$C]7L"XrrK%.T)Se0r4W.2qn<*C!r]h5E.S&.rr_n%-dLWL!M%O9rrV,2 -rN-##])XVPm/bd$J,~> -!BU8Qkl@9drrAVDklNR>]7L"XrrKC?T)Se0r4W.2qn<*C!r]h5E.S&.rr_n%-dLWL!N4KIrrV5C -riH,$])XSOklK'jJ,~> -!B:&NirG%MrrA#3irUn7]7L"XrrK^PT)Se0r4W.2qn<*C!r]h5E.S&.rr_n%-dLWL!OCGYrrVAU -riH,$])XPNirR%VJ,~> -!BpJTm/X,trrB%Qm/uAP"S73Eq>UN]I/'?6!-8"O!!)o1!Nck1^&W2)s2P'@c6m&mhZ!VgZ2O\' -P0^60"7lX!j6Z.6eieN~> -!BU8Qkl@9drrAVEkl]fH"S73Eq>UN`MYWnE!-8"O!!)o1!Nck1^&W2)s2P'@c6m&mhZ!Vo])DX0 -T%'kA"7lX!hsBS.c8pI~> -!B:&NirG%MrrA#4irds;"S73Eq>UNbRJEKT!-8"O!!)o1!Nck1^&W2)s2P'@c6m&mhZ!W"_YsK8 -WnOQS"7lWug$I`"_`*)~> -!BpJTm/X,trrB%Qm/jEj21bf%rrJk-TDnq7^&>YF!;jJ2J27, -!BU8Qkl@9drrAVEklRmc21bf%rrK7?TDnq7^&>YF!;jJ2J27, -!B:&NirG%MrrA#4irZ+Y21bf%rrKUQTDnq7^&>YF!;jJ2J27, -!BpJTm/X-`rrBjNrrB%Qm/hG2Ee48brrVA4qOmihW13b"!!)r2!js2!rk8E&W.Fujrr_OZ38WEi -!r$p;rr3'!LYJp1!ce9am-Oi)4b*~> -!BU8Qkl@:PrrBjNrrAVEklPr,Ee48brrVJEqk3riW13b"!!)r2!js2!rk8E&W.Fujrr_OZ38WEi -!r.NKrr3'!Pi&SB!ce9_m-+Pr3e.~> -!B:&NirG&9rrBjNrrA#4irX3#Ee48brrVPVqk3riW13b"!!)r2!js2!rk8E&W.Fujrr_OZ38WEi -!r8,[rr3'!U>r?T!ce9\m,J,a2h1~> -!BpJTm/X-`rrE,8_Z'V8g[,&,!3^tRpAY/b_P$o0k&gR9#6;KP\YaQk9`;[+FQS/Sb5VR\&pa?, -rrIo9rVlo>RB6DiY5gfRm/bd$J,~> -!BU8Qkl@:PrrE,8_Z'V,gZ\c'!3^tRpAY/maIrP6k&gR9#6;KP\YaQk9`;[+FQS/Sb5VR\&pa?, -rrJDJrVloDUoaRtY5gcQklK'jJ,~> -!B:&NirG&9rrE,8_Z'UpgZ&>t!3^tRpAY0#c_1:=k&gR9#6;KP\YaQk9`;[+FQS/Sb5VR\&pa?, -rrJkZrVloKYcRj+Y5g]OirR%VJ,~> -!BpJTm/X-`rrN07^r-0PWSHkClOEpWJcGHD!onh.T`5"(rP&72!sTT-M>Y'fAqC!)rrSDr^XrJd -VT&N6!rIK0XoALc!"S>^m/bd$J,~> -!BU8Qkl@:PrrN07^r-0PS_WH3k7.LSJcGHD!p5O@T`5"(rP&72!sTT-M>Y'fAqC!)rrSDr^XrJd -Yg!(G!rS&BXoALc!"S2ZklK'jJ,~> -!B:&NirG&9rrN07^r-0PN83Fqi=,eLJcGHD!pQ9RT`5"(rP&72!sTT-M>Y'fAqC!)rrSDr^XrJd -]$gQW!rSPRXoALc!"IoSirR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?rr<0&%PW+lg&D&Oh!G0`!$6^ko`"r[`h<>4U7_%k!M?*;s31KFq.;57 -f)GciVYpGp]qhb0!Zh?^mHjr*4b*~> -!BU8Qkl@:PrrW8:'Ys>?rr<0&%PW+lg&D&Ch!"mY!$6^ko`"rgbb4t:U7_%k!M?*;s31KFq.;57 -f)GcpYl+M%`3-3A!Zh?[mHFYs3e.~> -!B:&NirG&9rrW8:'Ys>?rr<0&%PW+lg&D&2guAIN!$6^ko`"rre"H^AU7_%k!M?*;s31KFq.;57 -f)Gd!]);R/bIFYR!Zh?VmGe5b2h1~> -!BpJTm/X-`rr`?%^_FTVrs&Q(s7FQQ)W09K!3+c@!gNabJcGBB!oJY/U&P2j>eTgE!khk8JcF!p -"6hsFo@ -!BU8Qkl@:Prr`?%^_FTVrs&Q(s7FQQ)W09K!1hp0!geTgE!khk8JcF!p -"6hsFo@ -!B:&NirG&9rr`?%^_FTVrs&Q(s7FQQ)W09K!0#^n!fm=\JcGBB!p6-RU&P2j>eTgE!khk8JcF!p -"6hsFo@ -!BpJTm/X-`rriE&s1f>ap&>!lr;R(P>lXi[9ah7rkMlLAWSHkB@K;::s7?6kQ-,d"!Q09W^&`Su -JcF!p"4&* -!BU8Qkl@:PrriE&s1f>ap&>!lr;R(P>lXi[9ah7rkMlLAS_WH2?iZ(8s7?6kU!TJ4!Q09W^&`Su -JcF!p"4&* -!B:&NirG&9rriE&s1f>ap&>!lr;R(P>lXi[9ah7rkMlLAN83Fp?3#k6s7?6kXk'0F!Q09W^&`Su -JcF!p"4&* -!BpJTm/X-`rr<&urrR`Op%JCc!;uj'iY_^q/&(`HDcl$!!3+c@!\XPhJcG?A!nrD.T`5%QOS?Hi -KPc;?c2RjF(95d^!Ku17rrVY9p9+Ds^]6%Tm/bd$J,~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;uj'iY_^q/&(`HDcl$!!1hp0!\OJgJcG?A!oB1@T`5%QOS?Hi -KPc;?c2RjF(95d^!M80GrrV_IpTFMt^]6"SklK'jJ,~> -!B:&NirG&9rr<&urrR`Op%JCc!;uj'iY_^q/&(`HDcl$!!0#^n!\FDfJcG?A!ofpQT`5%QOS?Hi -KPc;?c2RjF(95d^!NP/WrrVeZpoaVu^]5tRirR%VJ,~> -!BpJTm/X-`rriE&s1f>ap&>!lr;Qfo"oJ<#ob?Ec!3+fA"6Kaho7?r4rrJ5-TDnqTIJLSZI;g:u -JcF*s"9!Wjcd;[mYe0f4!N!K4rr_ip"m57?!S0Da~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;Qfo"oJ<#ob?Ec!1hs1"6'Ido7?r4rrJ\?TDnqTIJLSZI;g:u -JcF*s"9!Wjcd;[m\\n=E!O'GErr_ip"let7!R<`V~> -!B:&NirG&9rriE&s1f>ap&>!lr;Qfo"oJ<#ob?Ec!0#ao"5F"]o7?r4rrK+QTDnqTIJLSZI;g:u -JcF*s"9!Wjcd;[m_TViV!P-CVrr_ip"PiG*!Q-jH~> -!BpJTm/X-`rr`?%^_FTVrr<&srs@X$s8U,&$NL/-ir9"Xh -!BU8Qkl@:Prr`?%^_FTVrr<&srs@X$s8U,&$NL/-ir9"Lh<>!L!%rj&nc&XDQ_+3cbZg(?^:q:? ->Km+ZAqC!0rr_jh4mC;m!S++FrrVDDr3$&$/c`?JklK'jJ,~> -!B:&NirG&9rr`?%^_FTVrr<&srs@X$s8U,&$NL/-ir9";h;\RA!%rj&nc&XIUn7SpbZg(?^:q:? ->Km+ZAqC!0rr_jh4mC;m!SXjVrrVMVr3$&$/c`0EirR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?!!)rs$%6%XruA!,rpg'KrrB%Sm/i7I?\/7IrrW1Ye"6RJrjmAoE-]%o -s8VU2`.@s;rr_(/B)0aP!UbF5rrJJ/Y5\Q1!0-F6!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?!!)rs$%6%XruA!,rpg'KrrAVGklQ_B?\/7HrrJP?T)T5u\p876H+O"T -s7%2LJcF4!"5PP@q9K!@n;R5D!Me#ErrQO-MXK^0c8pI~> -!B:&NirG&9rrW8:'Ys>?!!)rs$%6%XruA!,rpg'KrrA#6irXu9?\/7HrrK"QT)T5u\p876H+O"T -s7%2LJcF4!"5PP@q9K!@nsfLU!Nt"VrrQO-L[O1'_`*)~> -!BpJTm/X-`rrN07_".L9!<<)lc#+BSs8Nb:pt\sNir9"Xh -!BU8Qkl@:PrrN07_".L9!<<)lc#+BSs8Nb:pt\sNir9"Lh<=uI!0;^2nG`O?S!3jRZmbd%s4.,N -_@`$UrrJ)Jqu6]PQ`g>iNrWMSklK'jJ,~> -!B:&NirG&9rrN07_".L9!<<)lc#+BSs8Nb:pt\sNir9";h;\Q@!0;^2nG`ODVj%,^Zmbd%s4.,N -_@`$UrrJSZqu6]TUos_!NrWDPirR%VJ,~> -!BpJTm/X-`rrE,8nc/Uh"9AoaFm/i)"gT?U+dN,frrB%Sm/f'D^OcFSrrW1UfTZ=98 -&]2]j!M%O6rrW1VfrtDW^Ap(Xm/bd$J,~> -!BU8Qkl@:PrrE,8nc/Uh"9AoaFm/i)"gT?U+dN,frrAVGklNU?^OcFSrrW1bglqa=8 -&]2]j!N4KErrJGAYQ"[=!&F!,!R<`V~> -!B:&NirG&9rrE,8nc/Uh"9AoaFm/i)"gT?U+dN,frrA#6irUq8^OcFSrrW1piKO9B8 -&]2]j!OCGUrrJqTYQ"[=!& -!BpJTm/X-`rrBjNrrB%Tm/uV[!UbO=n,EF5PEZ"JeJ@M&s4RDSr,*t -!BU8Qkl@:PrrBjNrrAVHkl^&S!UbO=n,EF:T9K9VeJ@M&s4RDSr,*t -!B:&NirG&9rrBjNrrA#7ire3G!UbO=n,EF@X- -!BpJTm/X,trrB%Tm/k?/++aI[rrW.Qglqd -!BU8Qkl@9drrAVHklSg(++aI[rrW1_i043@Ck;W?rr_a\8+=V"!T'FErrW+Xl*(*g*rs:KklK'j -J,~> -!B:&NirG%MrrA#7ir[!r++aI[rrW1mjHKWDCk;W?rr_a\8+=V"!TL-UrrW+fm'$Ej*rs+FirR%V -J,~> -!BpJTm/X,trrB%Tm/idX:P&Q5rrL3-PQ(^N(=e!9h#@K2.;o((rrVq=rVHNp];De3!`&fdn*L/, -4b*~> -!BU8Qkl@9drrAVHklR7Q:P&Q5rrLE?PQ(^N(=e!9h#@K2.;o((rrVtMrVHNp_Q^6D!`&fan*'ku -3e.~> -!B:&NirG%MrrA#7irYJG:P&Q5rrLZQPQ(^N(=e!9h#@K2.;o((rrW"^rVHNpb.=eV!`&f]n)FGd -2h1~> -!BpJTm/X,trrB%Tm/h2+It@XerrW+LiKO9BO[t''h>[Pj(n&>B!Jfb4rrVk>o!&,qIfOEUm/bd$ -J,~> -!BU8Qkl@9drrAVHklP]%It@XerrW.[jHKTEO[t''h>[Pj(n&>B!L;jErrVnNo -!B:&NirG%MrrA#7irWrqIt@XerrW.ik`c#IO[t''h>[Pj(n&>B!M\lUrrVq^os"GtIfO6PirR%V -J,~> -!BpJTm/X,trrB%Tm/ffYX+C<;rrL'.PQ(^\.(+X+hu -!BU8Qkl@9drrAVHklO?TX+C<;rrL9?PQ(^\.(+X+hu -!B:&NirG%MrrA#7irVXLX+C<;rrLNQPQ(^\.(+X+hu -!BpJTm/X,trrB%Tm/eF2e:IYdrrW(Ijcf]G[4(m&s5O%\r,*t<_Z'YUVtp>ol[8N5rrU[M+n+e! -eieN~> -!BU8Qkl@9drrAVHklN".e:IYdrrW(Wk`c#J[4(m&s5O%\r,*t<_Z'Y\Z2+D$m>CbFrrU[M+n+Xr -c8pI~> -!B:&NirG%MrrA#7irU>'e:IYdrrW+fl]_>M[4(m&s5O%\r,*t<_Z'Yb](u@-n!X'XrrU[M+Re=k -_`*)~> -!BpJTm/X,trrB%Um/uJQ"SmWKli."#TT] -!BU8Qkl@9drrAVIkl]oI"SmWKli."*X-3J`8 -!B:&NirG%MrrA#8ire'="SmWKli."2[?COj8 -!BpJTm/X,trrB%Um/k-)."VE`rrW"El'),KeJ@M&s5j7_gF7%<_#FK6G51n5!oAV0Z2XkR!5e6m -!S0Da~> -!BU8Qkl@9drrAVIklSU"."VE`rrW%Tl]_>MeJ@M&s5j7_gF7%<_#FK7L&(QE!ofCBZ2XkR!5J$f -!R<`V~> -!B:&NirG%MrrA#8irZdl."VE`rrW%cmZ[YPeJ@M&s5j7_gF7%<_#FK7Q2:=V!p-*SZ2XkR!4q[[ -!Q-jH~> -!BpJTm/X,tmJs6Dm/idX;1\c3rrKa.P5kPuJcFm4!l>P;^&J+oh>%!NO4(<5!`8rfnEg8-4b*~> -!BU8Qkl@9dmJrg8klR7Q;1\c3rrL!?P5kPuJcFm4!l>P;^&J,'iV -!B:&NirG%MmJr4'irYJG;1\c3rrL9QP5kPuJcFm4!l>P;^&J,3jnSiVW8+ZX!`8r_nDaPe2h1~> -!BpJTm/X,tmJs6Dm/hD1H@c+\rrVqAm$%GNlk\-&s60IaR1[ -!BU8Qkl@9dmJrg8klPo+H@c+\rrVtQmZ[YPlk\-&s60IaR1[ -!B:&NirG%MmJr4'irX0"H@c+\rrVt`n< -!BpJTm/X,tmJs6Dm/g&`UOiI/rrKR-P5bQF8:gg+rr`1:.GMK7!Qq/3rrW.Ni3N@aUB"*Zm/bd$ -J,~> -!BU8Qkl@9dmJrg8klOQZUOiI/rrKj?P5bQF8:gg+rr`1:.GMK7!RRqCrrW1]jKedeUB"$XklK'j -J,~> -!B:&NirG%MmJr4'irVjRUOiI/rrL-PP5bQF8:gg+rr`1:.GMK7!S4aTrrW1kkHb*hUB!sVirR%V -J,~> -!BpJTm/X,tmJs6Dm/eg=b(9TVrrVh>n!!bQqC&b&s6Tafn4-"<])MfpK_PKI_On.6!m1KonEg8- -4b*~> -!BU8Qkl@9dmJrg8klNC9b(9TVrrVnNnWWtSqC&b&s6Tafn4-"<])MfsP5"tWaJuQG!m1KonEBu! -3e.~> -!B:&NirG%MmJr4'irU_2b(9TVrrVq^o991UqC&b&s6Tafn4-"<])MfuT_JHecaC(Y!m1KnnDaPe -2h1~> -!BpJTm/X,tmJs6Dm/d[rm=G<#rrKC,P5bTk./JMpmf*CD.;o'orrW1Ep%\Ogpj;D7rrVQf%.NWb -eieN~> -!BU8Qkl@9dmJrg8klM7nm=G<#rrK^?P5bTk./JMpmf*CD.;o'orrW1TpA"Xhq24XIrrVQf%.NK^ -c8pI~> -!B:&NirG%MmJr4'irTVhm=G<#rrL$QP5bTk./JMpmf*CD.;o'orrW1cp\=aiqO-l[rrVQf%.N9X -_`*)~> -!BpJTm/X-`mJsT0mJs6Em/kr@&V9uErrVb;nrj"R8 -!BU8Qkl@:PmJsT0mJrg9klTB8&V9uErrVeKoTK4T8 -!B:&NirG&9mJsT0mJr4(ir[O,&V9uErrVk\oof=U8 -!BpJTm/X-`mK! -!BU8Qkl@:PmK!+@V -!]0nbn`^)"3e.~> -!B:&NirG&9mK! -!BpJTm/X-`mK*A%ZfpfW!8[&CWSm.FQiL3=s5j7^msF_js8Qnds7?6mr,*t<[/U0QSbE'aV7j58 -!`oAhna-A.4b*~> -!BU8Qkl@:PmK*A%ZfpfW!8[&CS`&`6PlOm:s5j7^nVQt&s8Qnds7?6mr,*t<[/U0VW:p5lYJddI -!`oAen`^)"3e.~> -!B:&NirG&9mK*A%ZfpfW!8[&CN8W^tOT8I6s5j7^nsK07s8Qnds7?6mr,*t<[/U0\ZhFD"\]hD[ -!`oAan`'Yf2h1~> -!BpJTm/X-`mK3I)'=7;urr<0&%4uMPrpBadh -!BU8Qkl@:PmK3I)'=7;urr<0&%4uMPrpBadh -!B:&NirG&9mK3I)'=7;urr<0&%4uMPrpBadh -!BpJTm/X-`mK8B -r3?8&Hh$h0!LCp9rrS_k=7PYYeieN~> -!BU8Qkl@:PmK8B -r3?8&MY$QA!M[uKrrS_k -!B:&NirG&9mKs5a1]n8B -r3?8&RIp4Q!Njt\rrS_k;t8lK_`*)~> -!BpJTm/X-`mKEUjs1f;Sp$Me[r9al7 -!BU8Qkl@:PmKEUjs1f;Sp$Me[r9al7 -!B:&NirG&9mKEUjs1f;Sp$Me[r9al7 -!BpJTm/X-`mJm7drrR`OjnA*B!;u6kdh_B>!(GSo6Z:uP!3+oD!ZqEsJcFd1!pG(.P5bTk./JMp -qYpW"&]1^N!O]B0rrW1Ug9pq^gAi>cm/bd$J,~> -!BU8Qkl@:PmJm7drrR`OjnA*B!;u6kdh_B>!(GSo6Z:uP!1i'4!Zh?rJcFd1!pbd@P5bTk./JMp -qYpW"&]1^Ns1\1+!L;NLrrUpT*qAIqc8pI~> -!B:&NirG&9mJm7drrR`OjnA*B!;u6kdh_B>!(GSo6Z:uP!0#jr!Z_9qJcFd1!puHQP5bTk./JMp -qYpW"&]1^Ns2Oa3!MeY^rrUpT*V&.j_`*)~> -!BpJTm/X-`mKEUjs1f;Sp$Me[r9amU"n(dYbjOoB)WL/bWT!4HlNRCaJcFa0!M@/irrGZQJcGWI -!h:1SXoAFNRJ$R\aI0I9"8;g#lgjEDeieN~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[r9amU"n(dYbjOoB)WL/bS`/f8k61n\JcFa0!NO2&rrGZQJcGWI -!h:1SXoAFSV"O`gcD7lJ"8;g"kORj -!B:&NirG&9mKEUjs1f;Sp$Me[r9amU"n(dYbjOoB)WL/bN8`e!i<98VJcFa0!O^48rrGZQJcGWI -!h:1SXoAFXYkA"seZcI]"8;g"iUZ"0_`*)~> -!BpJTm/X-`mKE/!nA(QJcG]K -!f%uSXT&=kHhIC?rI*n;rrNo8fCJ;0eieN~> -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=7;u!!)rb$$B89mJtK!m`QO.mJs6Fm/jp#14fJ`rrJV-OoPGtJcGcM"9* -!BU8Qkl@:PmK3I)'=7;u!!)rb$$B89mJtK!m`QO.mJrg:klSBq14fJ`rrK"?OoPGtJcGcM"9* -!B:&NirG&9mK3I)'=7;u!!)rb$$B89mJtK!m`QO.mJr4)irZRf14fJ`rrKCPOoPGtJcGcM"9* -!BpJTm/X-`mK*A%Zh!Mp!:K::^Ln>-md:'Fg=\o5ipHfGiU$]@!)A+Fi;Wl:K)Cf3!pg]QJc>iL -?9IYTrrJ\;p&>*aHM4fI!_r`io'HJ/4b*~> -!BU8Qkl@:PmK*A%Zh!Mp!:K::^Ln>-md:'Fg=\o5ipHf;iTUE9!)A+Fi;Wl>OSt@B!pg]QJc>iL -?9IYTrrK(Kp&>*bM>+IY!_r`fo'$2#3e.~> -!B:&NirG&9mK*A%Zh!Mp!:K::^Ln>-md:'Fg=\o5ipHf*iSt!/!)A+Fi;WlAT)FiP!pg]QJc>iL -?9IYTrrKI[p&>*dR/",i!_r`bo&Bbg2h1~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs6Fm/h,)LOoK_rrUu0rK@0^qC&b)rr_[O?MgZ#!SEY/rrV23rO;e.LB)2^ -m/bd$J,~> -!BU8Qkl@:PmJsT0mJrg:klPW#LOoK_rrV,Brf[9_qC&b)rr_[O?MgZ#!Sj@?rrV;DrjVn/LB),\ -klK'jJ,~> -!B:&NirG&9mJsT0mJr4)irWopLOoK_rrV8Srf[9_qC&b)rr_[O?MgZ#!TC-PrrVDUrjVn/LB)&Z -irR%VJ,~> -!BpJTm/X,tmJs6Fm/gAiSq6purrJ;-OoGKj./J\u"6D+Trhf\som$K.rrJ80\,QN$!*JgZ!S0Da~> -!BU8Qkl@9dmJrg:klOlcSq6purrJ_?OoGKj./J\u"6D+Trhf\sp4rY>rrJ\A\,QN$!*8[T!R<`V~> -!B:&NirG%MmJr4)irW0[Sq6purrK.POoGKj./J\u"6D+Trhf\spQtmOrrK.S\,QN$!*&OL!Q-jH~> -!BpJTm/X,tmJs6Fm/fZU["886rrUf/rfR3]8 -!BU8Qkl@9dmJrg:klO0O["886rrLo@OT,>POb`r -!B:&NirG%MmJr4)irVLH["886rrM&QOT,>POb`r -!BpJTm/X,tmJs6Fm/em?bCT]LrrJ/.OoGL5(@6nX!mV^SUAk7fbOkf9rIEt=rrU@D0(SB1eieN~> -!BU8Qkl@9dmJrg:klNI;bCT]LrrJS?OoGL5(@6nX!mV^SUAk7qdIdG?rJp'NrrU@D0(S6-c8pI~> -!B:&NirG%MmJr4)irUb3bCT]LrrK%QOoGL5(@6nX!mV^SUAk8&fC](ErLN5`rrU@D/Fqg%_`*)~> -!BpJTm/X,tmJs6Fm/e1+iIV$brrLT-OT5>sMZ3ar&[%i-!Pbc.rrKd0\GlWh!#kFq!S0Da~> -!BU8Qkl@9dmJrg:klM_&iIV$brrLc?OT5>sMZ3ar&[%i-!QMS>rrL$A\GlWh!#b@l!R<`V~> -!B:&NirG%MmJr4)irU(uiIV$brrLrQOT5>sMZ3ar&[%i-!R8CNrrL -!BpJTm/X,tmJs6Gm/u\Z!;D'Eh>[QUMUmpi!pg]QN;is`&]C@B!Sie.rrVh -!BU8Qkl@9dmJrg;kl^,R!;D'Eh#@DAgQDL;lk\-1rrTD:`1[,2i10E=!qqHC\c2d+!!_ZYklK'j -J,~> -!B:&NirG%MmJr4*ire9F!;D'Eh#@DNhi[p?lk\-1rrTD:`1[,2jJhbN!r&&T\c2d+!!_HSirR%V -J,~> -!BpJTm/X,tmJs6Gm/l,E%Y=Z7rrLE-OT,?D8<*WNT,PtHrrVt=r:BphW4KM=!Y,4eoBcS04b*~> -!BU8Qkl@9dmJrg;klTQ=%Y=Z7rrLW?OT,?D8<*WNT,PtHrrW"MrU^$iZGF'N!Y,4aoB?;$3e.~> -!B:&NirG%MmJr4*ir[a2%Y=Z7rrLfQOT,?D8<*WNT,PtHrrW%^rU^$i]ZI\`!Y,4\oA]kh2h1~> -!BpJTm/X,tmJs6Gm/kE1,_?!MrrW.RgQDL;qC&b4rrS-%fq&-DLue1-!pP76\c2^V!6Xp#!S0Da~> -!BU8Qkl@9dmJrg;klSj),_?!MrrW1`hi[p?qC&b4rrS-%fq&-DQ07c=!pksG\c2^V!64Wp!R<`V~> -!B:&NirG%MmJr4*ir[$s,_?!MrrW1nj,s?CqC&b4rrS-%fq&-DU[%IN!q)TW\c2^V!5\9e!Q-jH~> -!BpJTm/X,trrB%Xm/jfu2hD"_rrL9-OT,Bi./K,,"9*Qqj.-,MVT89-!L(pArrP+Z\b#1heieN~> -!BU8Qkl@9drrAVLklS9n2hD"_rrLK?OT,Bi./K,,"9*Qqj.-,MYg)b=!M@rRrrP+Z[e&_ac8pI~> -!B:&NirG%MrrA#;irZIc2hD"_rrL]QOT,Bi./K,,"9*Qqj.-,M]$p6M!NXtcrrP+ZZ1HuV_`*)~> -!BpJTm/X,trrB%Xm/j9f7tL]orrW+MhiRj=8 -!BU8Qkl@9drrAVLklRa_7tL]orrW.\j,j9A8 -!B:&NirG%MrrA#;irYtU7tL]orrW.jk)fTD8 -!BpJTm/X,trrB%Xm/idX -!BU8Qkl@9drrAVLklR:R -!B:&NirG%MrrA#;irYMH -!BpJTm/X,trrB%Xm/i:JAqC!8rrW(JjH0EACmP)'o0cRQRK!?cG5Ce0!Of,ArrQd4Nq;W=eieN~> -!BU8Qkl@9drrAVLklQbCAqC!8rrW+YkE,`DCmP)'o0cRQRK!?dL&:H@!PZ"RrrQd4Mt?06c8pI~> -!B:&NirG%MrrA#;irY#:AqC!8rrW+glB)&GCmP)'o0cRQRK!?dQ2C.P!QMmcrrQd4M"BX-_`*)~> -!BpJTm/X,trrB%Xm/hb;G(K\GrrKs-OT,CK(=efP"7.pXr0REaN8X:,!q1L2]DhqU!.XV-!S0Da~> -!BU8Qkl@9drrAVLklQ85G(K\GrrL3?OT,CK(=efP"7.pXr0REaRH*l -!B:&NirG%MrrA#;irXK+G(K\GrrLHQOT,CK(=efP"7.pXr0REaVW[OM!qVfU]DhqU!."1r!Q-jH~> -!BpJTm/X-`rrBjNrrB%Xm/h2+L4TBWrrW"Ek`GfFO[to?"61kVrg*QbWl"<+!M.3ArrRoTDtE>s -eieN~> -!BU8Qkl@:PrrBjNrrAVLklP]%L4TBWrrW%UlB)#HO[to?"61kVrg*Qb[)qk -!B:&NirG&9rrBjNrrA#;irWrqL4TBWrrW(dm?%>KO[to?"61kVrg*Qb^!Q -!BpJTm/X-`rrE,8_Z'V8ip?eT!1&39fDblaUQGKWqC&b@rrUjrN0O>CaJAA+!SN@BrrSJd@.Wad -eieN~> -!BU8Qkl@:PrrE,8_Z'V,iopMO!1&39fDblhY)rYbqC&b@rrUjrN0O>CcE?^;!Ss*SrrSJd?h -!B:&NirG&9rrE,8_Z'Upio:)F!1&39fDblp\<-^lqC&b@rrUjrN0O>Ce@>&K!TKoerrSJd>k?tV -_`*)~> -!BpJTm/X-`rrN07^r-0PWT*:H;ui_Fs4@8PpNu7grrTSVqORWfbo34BNB!i,fq -oBcS04b*~> -!BU8Qkl@:PrrN07^r-0PS`8l8;ZNVEs4@8PpknL$rrTSVqORWfbo34 -!B:&NirG&9rrN07^r-0PN8ik!;#mDCs4@8Pq3g`6rrTSVqORWfbo34 -!BpJTm/X-`rrW8:'Ys>?rr<0&%PW+lg&D&Oip?e?!3UnQf)GcZWK7&[8 -!BU8Qkl@:PrrW8:'Ys>?rr<0&%PW+lg&D&CiopM:!3UnQf)GcbZ]G+e8 -!B:&NirG&9rrW8:'Ys>?rr<0&%PW+lg&D&2io:)2!3UnQf)Gcj]T<'n8 -!BpJTm/X-`rr`?%^_FTVrs&Q(s7FQQ)W09K!3+uF!^cssJcF=$!q^j.OT,a>(@;)$pk!:4IqsZ2 -\Gl`tHZ3nMlM:G]^CnGGrrJ):nc&[bGkA]L!k/.soBcS04b*~> -!BU8Qkl@:Prr`?%^_FTVrs&Q(s7FQQ)W09K!1i-6!^ZmrJcF=$!qqK@OT,a>(@;)$pk!:4IqsZ2 -\Gl`tHZ3nMlM:G]^CnGGrrJPKnc&[cL\AF]!k/.roB?;$3e.~> -!B:&NirG&9rr`?%^_FTVrs&Q(s7FQQ)W09K!0#pt!^HapJcF=$!r&)ROT,a>(@;)$pk!:4IqsZ2 -\Gl`tHZ3nMlM:G]^CnGGrrK"[nc&[cQhS2n!k/.poA]kh2h1~> -!BpJTm/X-`rriE&s1f>ap&>!lr;R@X>lXi[9ah7rkPtS<9ah7rkN`'IWT*:H3<6mHs4.,MZ*'/f -s(hf;nl_sj^&k9:o"4o.okJ]^^:q1&CA%N)!l#McO8f6Y`UNm.V80eE!l4jsoBcS04b*~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;R@X>lXi[9ah7rkPtS<9ah7rkN`'IS`8l82updGs4.,M]!mb# -s(hf;nl_sj^&k9:o"4o.okJ]^^:q1&CA%N)!l#McO8f6cbOGN4YK+?V!l4jroB?;$3e.~> -!B:&NirG&9rriE&s1f>ap&>!lr;R@X>lXi[9ah7rkPtS<9ah7rkN`'IN8ik!2ZU[Fs4.,M_SD64 -s(hf;nl_sj^&k9:o"4o.okJ]^^:q1&CA%N)!l#McO8f6mdd[8;\^%ng!l4jqoA]kh2h1~> -!BpJTm/X-`rr<&urrR`Op%JCc!;uj/iY_^q/&(`HDcm&>/&(`HDcl<)!3+uF!\j\tJcF:#!qCU. -OT,IM(=cTmqn<*8>.jk:o2i6p^&kTAoD\ak^D=SErrL$;nG`OFLqWfiaoF0fm/bd$J,~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;uj/iY_^q/&(`HDcm&>/&(`HDcl<)!1i-6!\aVsJcF:#!qV9@ -OT,IM(=cTmqn<*8>.jk:o2i6p^&kTAoD\ak^D=SErrL9KnG`OJQ+d2!aoF-eklK'jJ,~> -!B:&NirG&9rr<&urrR`Op%JCc!;uj/iY_^q/&(`HDcm&>/&(`HDcl<)!0#pt!\XPrJcF:#!q_lQ -OT,IM(=cTmqn<*8>.jk:o2i6p^&kTAoD\ak^D=SErrLN\nG`ONUV6[/aoF*dirR%VJ,~> -!BpJTm/X-`rriE&s1f>ap&>!lr;Qfo"oJ<#ob@<'!VI/lrrB%Xm/e[9dt.PKrrK1-O8f9D2OOT`F!n.,toBcS04b*~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;Qfo"oJ<#ob@<'!VI/lrrAVLklN44dt.PKrrKO?O8f9D2OO -!B:&NirG&9rriE&s1f>ap&>!lr;Qfo"oJ<#ob@<'!VI/lrrA#;irUP-dt.PKrrKjPO8f9D2OO -!BpJTm/X-`rr`?%^_FTVrr<&srt43,s8U,&$NL/-s8U,&$NL/-lMgj`ip?dh!8W5+eGfU -!BU8Qkl@:Prr`?%^_FTVrr<&srt43,s8U,&$NL/-s8U,&$NL/-lMgjTiopLd!8W5+eGfU>M>*,3 -!VAVN^&_d?^]+=dVt[n.Vh2Z!^Pr0oq1\e:rrL*C^Ae8j!$Cgs!R<`V~> -!B:&NirG&9rr`?%^_FTVrr<&srt43,s8U,&$NL/-s8U,&$NL/-lMgjCio:(]!8W5+eGfU@R.udC -!VAVN^&_d?^]+=dVt[n.Vh2Z!^Pr0oqN_$KrrLBU^Ae8j!$:al!Q-jH~> -!BpJTm/X-`rrW8:'Ys>?!!)rs&Udm`ruA!,rpg'hruA!,rpg'SrrB%Xm/e((k(3Q]rrK"-OT,?P -T_H/$Tq0"!!U+=l^&hdY^P`$lL?A"*!qU^3^]+At!#P7o!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?!!)rs&Udm`ruA!,rpg'hruA!,rpg'SrrAVLklMY$k(3Q]rrK@?OT,?P -T_H/$Tq0"!!U+=l^&hdY^P`$lPj.];!q_ -!B:&NirG&9rrW8:'Ys>?!!)rs&Udm`ruA!,rpg'hruA!,rpg'SrrA#;irTtrk(3Q]rrK^QOT,?P -T_H/$Tq0"!!U+=l^&hdY^P`$lU$V:K!qhoU^]+At!#G1d!Q-jH~> -!BpJTm/X-`rrN07_".LA!<<)lc#+BSs8Nb:pt\sNs8Nb:pt\sNlMgj`ip?d\!:#.8e,KL7I/&j( -!,M8A!,KCM!J%KK^&bNNM>mUNbO>H3T>eSF!pTb!oBcS04b*~> -!BU8Qkl@:PrrN07_".LA!<<)lc#+BSs8Nb:pt\sNs8Nb:pt\sNlMgjTiopLX!:#.8e,KL9MtrM8 -!,M8A!,KCM!J%KK^&bNNM>mUXdI7)9Wlr0W!pTb!oB?;$3e.~> -!B:&NirG&9rrN07_".LA!<<)lc#+BSs8Nb:pt\sNs8Nb:pt\sNlMgjCio:(R!:#.8e,KLmUcfC/_?[F2hi!pTb!oA]kh2h1~> -!BpJTm/X-`rrE,8nc/Uh"9AoaFm/i)%C.2]+dN-.s0 -!BU8Qkl@:PrrE,8nc/Uh"9AoaFm/i)%C.2]+dN-.s0 -!B:&NirG&9rrE,8nc/Uh"9AoaFm/i)%C.2]+dN-.s0 -!BpJTm/X-`rrBjNrrB%Xm/d^snU^_grrV;3qih$\\rl["!Kjt1rrLZ"rkA.-s1SM`eVaA-fp(t* -!rdf6_#FK+!"JPe!S0Da~> -!BU8Qkl@:PrrBjNrrAVLklM:onU^_grrVDDqih$\\rl["!Kjt1rrLZ"rkA.-s1SM`eVaA-h4X6: -!re;G_#FK+!"JPa!R<`V~> -!B:&NirG&9rrBjNrrA#;irTVhnU^_grrVMUr0.-]\rl["!Kjt1rrLZ"rkA.-s1SM`eVaA-iiMVK -!reeW_#FK+!"AJZ!Q-jH~> -!BpJTm/X,trrB%Xm/dUpoR[%irrJY.PQ(Z?Z1Yg3Z&-?t!Lon]^&S01^&b%!MZ3bMH2d:4!P#8I -rrVfm$M3WceieN~> -!BU8Qkl@9drrAVLklM1loR[%irrK%?PQ(Z?Z1Yg3Z&-?t!Lon]^&S01^&b%!MZ3_MM!k9D^ph,Z -!qZI"oB?;$3e.~> -!B:&NirG%MrrA#;irTPfoR[%irrKFQPQ(Z?Z1Yg3Z&-?t!Lon]^&S01^&b%!MZ3_NQgXkSaM>Uk -!qZI"oA]kh2h1~> -!BpJTm/X,trrB%Xm/dLmpOW@lrrV/1r073]FSriU!4>K0!<'V3FMe%XF8aT2!!i,_!S0Da~> -!BU8Qkl@9drrAVLklM(ipOW@lrrV8BrKR<^FSriU!4>K0!<'V3FMe%XF8aT2!!i,[!R<`V~> -!B:&NirG%MrrA#;irTGcpOW@lrrVDTrKR<^FSriU!4>K0!<'V3FMe%XF8aT2!!i,U!Q-jH~> -!BpJTm/X,trrB%Xm/dFkqLS[nrrJJ.PlC`'r4W757YA5K^&W/irr@*8^&S00^&W21rrJY;mf*^]jm/bd$J,~> -!BU8Qkl@9drrAVLklM"gqLS[nrrJk?PlC`'r4W757YA5K^&W/irr@*8^&S00^&W21rrK%Kmf*^]jklK'jJ,~> -!B:&NirG%MrrA#;irT>`qLS[nrrK:QPlC`'r4W757YA5K^&W/irr@*8^&S00^&W21rrKF[mf*^ZiirR%VJ,~> -!BpJTm/X,trrB%Xm/d=hrIP!qrrUu0rK[B_E;[EN!,q_J!)CC\!)<:'!!)l0!-!ep!OfE(rrL04 -_>aT8!!;cZ!S0Da~> -!BU8Qkl@9drrAVLklLndrIP!qrrV,Brg!K`E;[EN!,q_J!)CC\!)<:'!!)l0!-!ep!PcA:rrLBE -_>aT8!!;cV!R<`V~> -!B:&NirG%MrrA#;irT8^rIP!qrrV8Srg!K`E;[EN!,q_J!)CC\!)<:'!!)l0!-!ep!QW4JrrLTV -_>aT8!!;cP!Q-jH~> -!BpJTm/X,trrB%Xm/d=hrIP!prrJ8-Q2^i'r4W13WqsF0:;VJ\:&2L'!;aD0E/FSqd@BY)!qpp5 -_Z']9!!;cZ!S0Da~> -!BU8Qkl@9drrAVLklLndrIP!prrJ\?Q2^i'r4W13WqsF0:;VJ\:&2L'!;aD0E/FSqeu.s9!r%NF -_Z']9!!;cV!R<`V~> -!B:&NirG%MrrA#;irT8^rIP!prrK.QQ2^i'r4W13WqsF0:;VJ\:&2L'!;aD0E/FSqgTp8I!r/,W -_Z']9!!;cP!Q-jH~> -!BpJTm/X,trrB%Xm/dFkqLS[mrrUc/rg*QaEW!NO!5/0B!-,mU!-7nL!!)l0!-3qr!U>=)rrJb3 -_Z']6!!Vu]!S0Da~> -!BU8Qkl@9drrAVLklM"gqLS[mrrLl@Q2^i(r4W13]_]>BEPh_UEr!EL!;aD0Ef'esm#g]8!NOA\ -rrW#s"nUsZc8pI~> -!B:&NirG%MrrA#;irT>`qLS[mrrM#QQ2^i(r4W13]_]>BEPh_UEr!EL!;aD0Ef'esn"9"I!O^Cn -rrW#s"S:XS_`*)~> -!BpJTm/X,trrB%Xm/dLmpOW@jrrW1Ye!C"6FSriQ!;X>/FMe%XF8 -!BU8Qkl@9drrAVLklM(ipOW@irrJP?QN$r,r4W.2q7ZiN_Z'UWq7Zh/qRurNM>mYVL&(0:!SO'] -rrVop#P70\c8pI~> -!B:&NirG%MrrA#;irTGcpOW@irrK"QQN$r,r4W.2q7ZiN_Z'UWq7Zh/qRurNM>mYVQ20kJ!T'in -rrVop#P6sV_`*)~> -!BpJTm/X,tmJs6Gm/dUpoR[%frrLN-QN$uBZ2MB:!;aD1Z&-?t!Lon]^&S01^&b%!M#RL8i9pUH -r-dnKrrVfm$M3WceieN~> -!BU8Qkl@9dmJrg;klM1loR[%frrL]?QN$uBZ2MB:!;aD1Z&-?t!Lon]^&S01^&b%!M#RLEj6lpK -rJU*]rrVfm$M3K_c8pI~> -!B:&NirG%MmJr4*irTPfoR[%frrLlPQN$uBZ2MB:!;aD1Z&-?t!Lon]^&S01^&b%!M#RLRkO/?O -rL35nrrVfm$M39Y_`*)~> -!BpJTm/X,tmJs6Gm/d^snU^_crrW1TfU)U=\rls*!!)l0!Kjt1rrLZ"qRuq0qn<)\eVO5+VT8*( -!NrrMrrV]j%J/rfeieN~> -!BU8Qkl@9dmJrg;klM:onU^_crrW1bh3\-B\rls*!!)l0!Kjt1rrLZ"qRuq0qn<)\eVO5+Yg)S8 -!Ook^rrV]j%J/fbc8pI~> -!B:&NirG%MmJr4*irTVhnU^_crrW1oiKsQF\rls*!!)l0!Kjt1rrLZ"qRuq0qn<)\eVO5+]$p'H -!PldorrV]j%.iK[_`*)~> -!BpJTm/X,tmJs6Gm/dh!mXbD_rrL?.Qi@*WD>h0K!;aD1D=YRD!WH[,^&S01^&_dDM#RLkXR6#g -i.o5M!q$%"oBcS04b*~> -!BU8Qkl@9dmJrg;klM@qmXbD_rrLN?Qi@*WD>h0K!;aD1D=YRD!WH[,^&S01^&_dDM#RLr[dF(q -jHRR^!q$%!oB?;$3e.~> -!B:&NirG%MmJr4*irT_kmXbD_rrL`QQi@*WD>h0K!;aD1D=YRD!WH[,^&S01^&_dDM#RM$^[;%% -kG#lo!q$%!oA]kh2h1~> -!BpJTm/X,tmJs6Gm/dq$l@Ju[rrW.PhO"6BC\>CACV]rNJ?nj^!jXWRM#RM0PO8AOrdj4MrrVHc -'D(SleieN~> -!BU8Qkl@9dmJrg;klMLul@Ju[rrW.]ig9ZFC\>CACV]rNJ?nj^!jXWRM#RM4TBuRYO6OU_!pTb! -oB?;$3e.~> -!B:&NirG%MmJr4*irTkol@Ju[rrW.kjd5uIC\>CACV]rNJ?nj^!jXWRM#RM8X6fieSa45o!pTb! -oA]kh2h1~> -!BpJTm/X,tmJs6Gm/e((k(3QVrrL0.Qi@)TTD-&#Tq0"!!U+=l^&r.V2XH;#!V:X(rrKC5`;]o$ -!#P7o!S0Da~> -!BU8Qkl@9dmJrg;klMY$k(3QVrrLB?Qi@)TTD-&#Tq0"!!U+=l^&r.V2XH;#!VD68rrK^F`;]o$ -!#P7k!R<`V~> -!B:&NirG%MmJr4*irTtrk(3QVrrLTQQi@)TTD-&#Tq0"!!U+=l^&r.V2XH;#!VMiHrrL!V`;]o$ -!#G1d!Q-jH~> -!BpJTm/X-`mJsT0mJs6Gm/e@0h1>UMrrW+Kj-]iIN^`]V!G)#@rrI_LpV$g/K)U$Fj,*d:IIQY( -!TAdOrrV!V+7nk#eieN~> -!BU8Qkl@:PmJsT0mJrg;klMq,h1>UMrrW+Yk*Z/LN^`]V!G)#@rrI_LpV$g/K)U$Fj,*d:Mt698 -!TfN`rrV!V+7n^tc8pI~> -!B:&NirG&9mJsT0mJr4*irU8%h1>UMrrW+hl'VJON^`]V!G)#@rrI_LpV$g/K)U$Fj,*d:Re,qH -!U-5qrrV!V*qSCm_`*)~> -!BpJTm/X-`mK!^JR+PDYP!LD@)rrW1Pji.6$df:ffm/bd$J,~> -!BU8Qkl@:PmK!iopLl!7QN!bPqUaWL^JR+PDYP!M\?8rrJ8G`W$"g!%7C&!R<`V~> -!B:&NirG&9mK!^JR+PDYP!Nk;HrrJbX`W$"g!%. -!BpJTm/X-`mK*A%ZfpfW!;c*`!9NVKWT*:H0`]@Is3(EDq0hIqs8Qm:s&uZ(^&bHA]`/')=0h_; -!jYo!rVlqk)U43?!O09(rrKF4`W$"^!&=*4!S0Da~> -!BU8Qkl@:PmK*A%ZfpfW!;c*`!9NVKS`8l80EB7Hs3(EDqMa^.s8Qm:s&uZ(^&bHA]`/')=0h_; -!jYo!rVlqk)U43?!P-/8rrKaF`W$"^!&4$/!R<`V~> -!B:&NirG&9mK*A%ZfpfW!;c*`!9NVKN8ik!0*'.Gs3(EDqjQo@s8Qm:s&uZ(^&bHA]`/')=0h_; -!jYo!rVlqk)U43?!Q!"HrrL'W`W$"^!&*s(!Q-jH~> -!BpJTm/X-`mK3I)'=7;urr<0&%4uMPrpBadqX+=`jmE,Jip?e-!5X6db5VLTURV8feJ@NOnl_sj -^&k9:o"4o.okJ]^^:q1&CA%K(!jE9TN;iq#U[8!]j+PDO!l4jsoBcS04b*~> -!BU8Qkl@:PmK3I)'=7;urr<0&%4uMPrpBadqX+=`jmE,>iopM(!5X6db5VL[Y+,FqeJ@NOnl_sj -^&k9:o"4o.okJ]^^:q1&CA%K(!jE9TN;iq)Y3c/hk*!^`!l4jroB?;$3e.~> -!B:&NirG&9mK3I)'=7;urr<0&%4uMPrpBadqX+=`jmE,-io:)!!5X6db5VLc\= -!BpJTm/X-`mKkrrq\7E+=7[q#:E6&[78p!TK%'rrIf5`r?+L!(6AF!S0Da~> -!BU8Qkl@:PmKkrrq\7E+=7[q#:E6&[78p!Tf^7rrJ;F`r?+L!(-;A!R<`V~> -!B:&NirG&9mKkrrq\7E+=7[q#:E6&[78p!U-BGrrJeW`r?+L!'p/9!Q-jH~> -!BpJTm/X-`mKEUjs1f;Sp$Me[r9b/? -!BU8Qkl@:PmKEUjs1f;Sp$Me[r9b/? -!B:&NirG&9mKEUjs1f;Sp$Me[r9b/? -!BpJTm/X-`mJm7drrR`OjnA*B!;u6sdh_B>!(GSo6Z;D\!(GSo6Z;8X!3+uF!`T/qJcEjl!q^j. -TDnuh.(,QE!ne]TNrK-1mHjiRi/,JR!i,fqoBcS04b*~> -!BU8Qkl@:PmJm7drrR`OjnA*B!;u6sdh_B>!(GSo6Z;D\!(GSo6Z;8X!1i-6!`K)pJcEjl!qqK@ -TDnuh.(,QE!ne]TNrK-?n*L&Tj-I^b!i,fpoB?;$3e.~> -!B:&NirG&9mJm7drrR`OjnA*B!;u6sdh_B>!(GSo6Z;D\!(GSo6Z;8X!0#pt!`8rnJcEjl!r&)R -TDnuh.(,QE!ne]TNrK-Mna-8VkG-&s!i,fnoA]kh2h1~> -!BpJTm/X-`mKEUjs1f;Sp$Me[r9b0]"n(dYbjOoB)Xd"nbjOoB)X?_jWT*:H?iZLDs2b3@Z)sYu -!Kfp@rr_:2H2`p*!LMF)rrW1Klc9#,Q2k=am/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[r9b0]"n(dYbjOoB)Xd"nbjOoB)X?_jS`8l8?N?CCs2b3@]!n=3 -!Kfp@rr_:2H2`p*!M\?8rrW1Ym`5>/Q2k:`klK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$Me[r9b0]"n(dYbjOoB)Xd"nbjOoB)X?_jN8ik!>QC(@s2b3@_SDfD -!Kfp@rr_:2H2`p*!NtAIrrW1hnAkP1Q2k1]irR%VJ,~> -!BpJTm/X-`mK4HLmj1 -!pg]QR/[9T2J2lLrrK7;li.!a^rQHVL&c/`m/bd$J,~> -!BU8Qkl@:PmK5M=dMA -!pg]QR/[9T2J2lLrrKRKli.!ka2e2]L&c)^klK'jJ,~> -!B:&NirG&9mK7R.[0Q -!pg]QR/[9T2J2lLrrKm[li.!ucH#qdL&bu[irR%VJ,~> -!BpJTm/X-`mK3I)'=7;u!!)rb&Tq+AmJtK!m`QO:mJtK!m`QO6mJs6Gm/hb;G(K\6rrK4-U&Y./ -QN%'Y6r`rErrL';li."9PK3\)Fo[$`m/bd$J,~> -!BU8Qkl@:PmK3I)'=7;u!!)rb&Tq+AmJtK!m`QO:mJtK!m`QO6mJrg;klQ85G(K\6rrKO?U&Y./ -QN%'Y6r`rErrL9Kli.">T?$s5FoZs^klK'jJ,~> -!B:&NirG&9mK3I)'=7;u!!)rb&Tq+AmJtK!m`QO:mJtK!m`QO6mJr4*irXK+G(K\6rrKjPU&Y./ -QN%'Y6r`rErrLN[li."BX2k5AFoZgZirR%VJ,~> -!BpJTm/X-`mK*A%Zh!N#!:K::^Ln>-md:'Fg=\o5md:'Fg=\o5lL"YOip?f-!+pf^a8Z5/HhO67 -!nA(QQ2^s]<(->ArrLl -!BU8Qkl@:PmK*A%Zh!N#!:K::^Ln>-md:'Fg=\o5md:'Fg=\o5lL"YCiopN&!+pf^a8Z51M>*eF -!nA(QQ2^s]<(->ArrM#Lli.%`L\Agh!bMFjoB?;$3e.~> -!B:&NirG&9mK*A%Zh!N#!:K::^Ln>-md:'Fg=\o5md:'Fg=\o5lL"Y2io:)r!+pf^a8Z53R/!HV -!nA(QQ2^s]<(->ArrM/\li.%aQhST$!bMFgoA]kh2h1~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs6Gm/j9f7tL][rrVJ5pndul[4(m7rr`7G.cZcn!I=>'rrL96aSu<3!35YX -!S0Da~> -!BU8Qkl@:PmJsT0mJrg;klRa_7tL][rrVSGq5+)m[4(m7rr`7G.cZcn!JpI8rrLKGaSu<3!2oGQ -!R<`V~> -!B:&NirG&9mJsT0mJr4*irYtU7tL][rrVYXqPF2n[4(m7rr`7G.cZcn!LNQHrrL]XaSu<3!2K/G -!Q-jH~> -!BpJTm/X,tmJs6Gm/jfu2hD"JrrJh-VZ-_o.(,-9!fS8TQ2^lGhWt1CoQL,RrrP+Z\b#1heieN~> -!BU8Qkl@9dmJrg;klS9n2hD"JrrK4?VZ-_o.(,-9!fS8TQ2^lTip6UGp4`FdrrP+Z[e&_ac8pI~> -!B:&NirG%MmJr4*irZIc2hD"JrrKRQVZ-_o.(,-9!fS8TQ2^l`jm2pJpQbZurrP+ZZ1HuV_`*)~> -!BpJTm/X,tmJs6Gm/kE1,_?!7rrV>4qksGpO[tK3!hUCUQN$u_aQid+OP.bU![IcgoBcS04b*~> -!BU8Qkl@9dmJrg;klSj),_?!7rrVGEqksGpO[tK3!hUCUQN$uicKbE1S__Ef![IccoB?;$3e.~> -!B:&NirG%MmJr4*ir[$s,_?!7rrVMUr29PqO[tK3!hUCUQN$useE[&7WT)&"![Ic^oA]kh2h1~> -!BpJTm/X,tmJs6Gm/l,E%Y=YurrJY-W;cqc(=eBD!jE9TQi@*"Z0M>i\Zj3U!Y,4eoBcS04b*~> -!BU8Qkl@9dmJrg;klTQ=%Y=YurrK%?W;cqc(=eBD!jE9TQi@*)]'B:r_7@\f!Y,4aoB?;$3e.~> -!B:&NirG%MmJr4*ir[a2%Y=YurrKFQW;cqc(=eBD!jE9TQi@*0_Wq.%ahl1"!Y,4\oA]kh2h1~> -!BpJTm/X,tmJs6Gm/u\Z!;D'E`W$"uJc)MIs(mSm!lP\RR/[38S*L"SiJ>YV"8;d"m.9TFeieN~> -!BU8Qkl@9dmJrg;kl^,R!;D'E`W$##O8Z'Xs(mSm!lP\RR/[3=VX"0^jd"!g"8;d"kk"$>c8pI~> -!B:&NirG%MmJr4*ire9F!;D'E`W$#'Sc,Pfs(mSm!lP\RR/[3BZ0M>ikbH<#"8;d"iq)12_`*)~> -!BpJTm/X,tmJs6Fm/e1+iIV$IrrJJ-WrE.N(@6nX!mV^SRK! -!BU8Qkl@9dmJrg:klM_&iIV$IrrJn?WrE.N(@6nX!mV^SRK! -!B:&NirG%MmJr4)irU(uiIV$IrrK:QWrE.N(@6nX!mV^SRK! -!BpJTm/X,tmJs6Fm/em?bCT]3rrUu0rN#r!8 -!BU8Qkl@9dmJrg:klNI;bCT]3rrV,Bri?&"8 -!B:&NirG%MmJr4)irUb3bCT]3rrV8Sri?&"8 -!BpJTm/X,tmJs6Fm/fZU["87prrJ;.XT&@0./J\u"6D+TrgWogIIQP%!R%(XrrTP-7.T^GeieN~> -!BU8Qkl@9dmJrg:klO0O["87prrJ_?XT&@0./J\u"6D+TrgWogN:Q96!R[mirrTP-6Ls@Ac8pI~> -!B:&NirG%MmJr4)irVLH["87prrK.QXT&@0./J\u"6D+TrgWogRe,hE!S=^%rrTP-61X%:_`*)~> -!BpJTm/X,trrB%Wm/gAiSq6pZrrUf/riZ8&qC&b)rr_[O?Mg8m!Kl4'rrVb:rQP9CScDm`m/bd$ -J,~> -!BU8Qkl@9drrAVKklOlcSq6pZrrLl?XoAJ!.(+a."7A9XqjdZeS`/l6!q_ -!B:&NirG%MrrA#:irW0[Sq6pZrrM&RXoAJ!.(+a."7A9XqjdZeWo`OG!qhoYbl7a9!*&OL!Q-jH~> -!BpJTm/X,trrB%Wm/h,)LOoKBrrJ)-Y5\Nb8:pjDoh8'PSc8_eam&g+N8;_X!f$bmo'HJ/4b*~> -!BU8Qkl@9drrAVKklPW#LOoKBrrJP?Y5\Nb8:pjDoh8'PSc8_ocftH1RGlBi!f$bko'$2#3e.~> -!B:&NirG%MrrA#:irWopLOoKBrrK"QY5\Nb8:pjDoh8'PSc8`$e`m)7VWH&%!f$bio&Bbg2h1~> -!BpJTm/X,trrB%Wm/i%CCOuN&rrLQ.YQ"[j(=e!9"8cCem[jFZ\@(T$!OT8YrrQs9L[sg5eieN~> -!BU8Qkl@9drrAVKklQP=COuN&rrL`@YQ"[j(=e!9"8cCem[jFZ^qT(5s1QYV!c%dio'$2#3e.~> -!B:&NirG%MrrA#:irXc3COuN&rrLoQYQ"[j(=e!9"8cCem[jFZaN!KEs2E4^!c%deo&Bbg2h1~> -!BpJTm/X,trrB%Wm/j!^:4`G^rrW1UfWbDUCk;Wdrr`7@/`iW)!R.;&rrLl8bl7`>!2B&O!S0Da~> -!BU8Qkl@9drrAVKklRIW:4`G^rrW1bh6?qZCk;Wdrr`7@/`iW)!R\%6rrM#Ibl7`>!2&iH!R<`V~> -!B:&NirG%MrrA#:irY\M:4`G^rrW1piNW@^Ck;Wdrr`7@/`iW)!S=gFrrM/Ybl7`>!1WQ>!Q-jH~> -!BpJTm/X,trrB%Wm/jp#14fJArrL?-Z2XmU(@6VPrVlqS,28dj!T/t&rrW(ApW`^>1'"uXm/bd$ -J,~> -!BU8Qkl@9drrAVKklSBq14fJArrLQ?Z2XmU(@6VPrVlqS,28dj!TKU5rrW+Qps&g?1'"lUklK'j -J,~> -!B:&NirG%MrrA#:irZRf14fJArrLcQZ2XmU(@6VPrVlqS,28dj!Tp?FrrW+aq9Ap@1'"]PirR%V -J,~> -!BpJTm/X-`rrBjNrrB%Wm/kl>'nQD$rrW.Ph6R%]8&V!V1X%rrJG9c2Rh[!8$f/ -!S0Da~> -!BU8Qkl@:PrrBjNrrAVKklT<6'nQD$rrW.]iNiIa8&V!VD95rrJkIc2Rh[!7UN' -!R<`V~> -!B:&NirG&9rrBjNrrA#:ir[L+'nQD$rrW.kjg+me8&V!VMlErrK7Yc2Rh[!7(/q -!Q-jH~> -!BpJTm/X-`rrE,8_Z'V8iU$a5"p+ILs2"^9a-a45!jsHQJcGTH!j3-PU&P.;pZ_\Y] -!BU8Qkl@:PrrE,8_Z'V,iTUI-"Te@Ks2"^9c(q]G!jsHQJcGTH!j3-PU&P.Jq!%eZ_mn"l"8;g" -kORj -!B:&NirG&9rrE,8_Z'UpiSt%!"Te@Ks2"^9e??4Y!jsHQJcGTH!j3-PU&P.Yq<@n[bJDL("8;g" -iUZ"0_`*)~> -!BpJTm/X-`rrN07^r-0PWSm.F*rt&Hs2"^:r.*h8rrW$F[=SAQrrU+NRA0]^MWF%%!T8j\rrUpT -+7\_!eieN~> -!BU8Qkl@:PrrN07^r-0PS`&`6*WXrGs2"^:r/TpIrrW$F[=SAQrrU+NRA0]^QfmW5!T]TmrrUpT -*qAIqc8pI~> -!B:&NirG&9rrN07^r-0PN8W^t*<=iFs2"^:r13)[rrW$F[=SAQrrU+NRA0]^V!@4E!U$9(rrUpT -*V&.j_`*)~> -!BpJTm/X-`rrW8:'YsA@q>f1J!3+oD!]U1oJcEOc!Q(G9rrJ6QJcGHD"5>8Br1s>nS($X%!r[E9 -ci4'\!''N9!S0Da~> -!BU8Qkl@:PrrW8:'YsA@q>f1J!1i'4!]U1oJcEOc!Q_7JrrJ6QJcGHD"5>8Br1s>nVV(/5!r[rJ -ci4'\!''N5!R<`V~> -!B:&NirG&9rrW8:'YsA@q>f1J!0#jr!]C%mJcEOc!RJ-\rrJ6QJcGHD"5>8Br1s>nZ/+[E!r\JZ -ci4'\!&jB-!Q-jH~> -!BpJTm/X-`rr`?%^_FTTrr<&LrrB%Vm/g>hSUpgVrrW%FkI:Hmlk\-&s7QBon4-"gRs_s%+$ -SBoO]!hB -!BU8Qkl@:Prr`?%^_FTTrr<&LrrAVJklOlcSUpgVrrW(VlF6cplk\-&s7QBon4-"gS'b38j+ -Vps&m!hB -!B:&NirG&9rr`?%^_FTTrr<&LrrA#9irW-ZSUpgVrrW(dm'lurlk\-&s7QBon4-"gS1dHLT2 -ZJ*Y)!hB -!BpJTm/X-`rriE&s1f>aoD]'rs8UnL$jT8bh>[JSi9^Si!.'4r^]+>JUUU:'Ck;WXrr`1:.GLa" -!P>]%rrKs9ci4&m!-du#!S0Da~> -!BU8Qkl@:PrriE&s1f>aoD]'rs8UnL$jT8bh>[JGi9:;c!.'4r^]+>QXge?1Ck;WXrr`1:.GLa" -!Q2S6rrL3Ici4&m!-Rhr!R<`V~> -!B:&NirG&9rriE&s1f>aoD]'rs8UnL$jT8bh>[J6i8XlZ!.'4r^]+>X\$uD;Ck;WXrr`1:.GLa" -!R&FFrrLHZci4&m!-7Vi!Q-jH~> -!BpJTm/X-`rr<&urrR`Op%87i!<<'L^@q&7=P`uWWSm.FQiL3=s1eR8pO);;rrU^dm",3,rrST* -^8Lu3bG4;$!To']rrQ7%R.9PEeieN~> -!BU8Qkl@:Prr<&urrR`Op%87i!<<'L^@q&7=P`uWS`&`6PlOm:s1eR8pknLMrrU^dm",3,rrST* -^8Lu3dB;^5!U5cnrrQ7%Q1=)>c8pI~> -!B:&NirG&9rr<&urrR`Op%87i!<<'L^@q&7=P`uWN8W^tOT8I6s1eR8q3g`_rrU^dm",3,rrST* -^8Lu3f=:&E!UHE)rrQ7%On%H4_`*)~> -!BpJTm/X-`rriE&s1f>aoD\djqu6]i']&chWSm.F\,\@:s1\L6\#?k;!D&?(s6osh^)39:rrLl< -kPkR0n'M(91]Y&Um/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoD\djqu6]i']&chS`&`6[/`%7s1\L6^TtEM!D&?(s6osh^)39:rrM#L -kPkR?n^.:;1]XrRklK'jJ,~> -!B:&NirG&9rriE&s1f>aoD\djqu6]i']&chN8W^tYQ-M2s1\L6a1Jn^!D&?(s6osh^)39:rrM/\ -kPkRNo?dL=1]XcMirR%VJ,~> -!BpJTm/X-`rr`?%^_FTTrs/W)s2R81!!!&UrrB%Vm/kr@&V9trrrVk?n%8T$[4(m&s6fmhgF7%< -WrE+cK]i@9S^,U^!YGFcna-A.4b*~> -!BU8Qkl@:Prr`?%^_FTTrs/W)s2R81!!!&UrrAVJklTB8&V9trrrVnNn[nf&[4(m&s6fmhgF7%< -WrE+eOlu`FW70,n!YGF_n`^)"3e.~> -!B:&NirG&9rr`?%^_FTTrs/W)s2R81!!!&UrrA#9ir[O,&V9trrrVq^o"4o'[4(m&s6fmhgF7%< -WrE+gTBH4TZe<_*!YGFYn`'Yf2h1~> -!BpJTm/X-`rrW8:'Ys8=#QXo)*2rB+nc7MG!3+lC!Xo(rJcEIa!O8c>rrW$F[=SAErr_a\8+ -!BU8Qkl@:PrrW8:'Ys8=#QXo)*2rB+nc7MG!1i$3!Xo(rJcEIa!P5bQrrW$F[=SAErr_a\8+ -!B:&NirG&9rrW8:'Ys8=#QXo)*2rB+nc7MG!0#gq!Xo(rJcEIa!Q2^crrW$F[=SAErr_a\8+ -!BpJTm/X-`rrN07_!q@0!<<'4Yk[$T!8[YTWSd(E/-*hDs1\L7np9l?rrJ6QJcG$8"8m$cgT1>T -Hh6J$!TJs`rrU=C/F`$-eieN~> -!BU8Qkl@:PrrN07_!q@0!<<'4Yk[$T!8[YTS_rZ5/-*hDs1\L7o83+QrrJ6QJcG$8"8m$cgT1>T -MY--4!TfWprrU=C/F_m)c8pI~> -!B:&NirG&9rrN07_!q@0!<<'4Yk[$T!8[YTN8NXs.fd_Cs1\L7opGEcrrJ6QJcG$8"8m$cgT1>T -RJ#eD!U-?,rrU=C/+DR"_`*)~> -!BpJTm/X-`rrE,8n,EXns8TAL"[JShsCJ@!2G,F^&J,7ZG->?lk\-&s60IaR1[<;rrJ&< -kl1__GkTSc!i#`knEg8-4b*~> -!BU8Qkl@:PrrE,8n,EXns8TAL"[JGhrt2:!2G,F^&J,A]>":Hlk\-&s60IaR1[<;rrJML -kl1__L\K6s!i#`inEBu!3e.~> -!B:&NirG&9rrE,8n,EXns8TAL"[J6hr=c2!2G,F^&J,J`4l6Qlk\-&s60IaR1[<;rrJt\ -kl1__QMAo.!i#`gnDaPe2h1~> -!BpJTm/X-`rrBjNrrB%Um/hD1H@c+0rrVV8p:pY-Ck;WKrrU%LRB?JiS($R#!LM?brrRKHFn"c! -eieN~> -!BU8Qkl@:PrrBjNrrAVIklPo+H@c+0rrV\HpV6b.Ck;WKrrU%LRB?JiVV()3!M\8qrrRKHF7ADp -c8pI~> -!B:&NirG&9rrBjNrrA#8irX0"H@c+0rrVbYpqQk/Ck;WKrrU%LRB?JiZ/+UC!Nt;-rrRKHE:Dlg -_`*)~> -!BpJTm/X,trrB%Um/idX;1\b[rrK%._#FJd(@6VPjo5G;.;o'errK1 -!BU8Qkl@9drrAVIklR7Q;1\b[rrKC?_#FJd(@6VPjo5G;.;o'errKLLkPkRu]@-]\;#m$RklK'j -J,~> -!B:&NirG%MrrA#8irYJG;1\b[rrK^P_#FJd(@6VPjo5G;.;o'errKj]kPkS(`7"Ye;#lmNirR%V -J,~> -!BpJTm/X,trrB%Um/k-)."VE2rrVJ5pqct28 -!BU8Qkl@9drrAVIklSU"."VE2rrVSFq8*(38-ih$OklK'j -J,~> -!B:&NirG%MrrA#8irZdl."VE2rrVYWq8*(38 -!BpJTm/X,trrB%Um/uJQ"SmWK]`/#,^;BmO[4(m&s5O%\r,*t -!BU8Qkl@9drrAVIkl]oI"SmWK]`/#6`PVWV[4(m&s5O%\r,*t -!B:&NirG%MrrA#8ire'="SmWK]`/#AbejA][4(m&s5O%\r,*t -!BpJTm/X,trrB%Tm/eF2e:IY4rrV>3qS`C8qC&b&s53hXR2EZDrrLT=k5PICgsl?*e,UZ\m/bd$ -J,~> -!BU8Qkl@9drrAVHklN".e:IY4rrVGDqo&L9qC&b&s53hXR2EZDrrLcMk5PIPi7.c.e,UZ\klK'j -J,~> -!B:&NirG%MrrA#7irU>'e:IY4rrVMUqo&L9qC&b&s53hXR2EZDrrLr]k5PI\jOF22e,UW[irR%V -J,~> -!BpJTm/X,trrB%Tm/ffYX+C;_rrJ\.`;]k#8:gfsrrTnORBunoi/d%#!O95crrT5$8FPpHeieN~> -!BU8Qkl@9drrAVHklO?TX+C;_rrK(?`;]k#8:gfsrrTnORBunoj.#32!P6+srrT5$8+5[Cc8pI~> -!B:&NirG%MrrA#7irVXLX+C;_rrKIQ`;]k#8:gfsrrTnORBunokG[PC!Q3%/rrT5$7IT7;_`*)~> -!BpJTm/X,trrB%Tm/h2+It@X3rrV/0rPnj=lk\-&s4mVVgF7%<[Jp9oK'*(6e!SYb!e12gn*L/, -4b*~> -!BU8Qkl@9drrAVHklP]%It@X3rrV;Brl4s>lk\-&s4mVVgF7%<[Jp9qOQQQDfV?sr!e12en*'ku -3e.~> -!B:&NirG%MrrA#7irWrqIt@X3rrVDSrl4s>lk\-&s4mVVgF7%<[Jp9sT'$%Rh65?.!e12bn)FGd -2h1~> -!BpJTm/X,trrB%Tm/idX:P&PWrrJJ.`rH'TJcFI("7SfNn@&>tpibg"!q^a9ec,\H!1`NF!S0Da~> -!BU8Qkl@9drrAVHklR7Q:P&PWrrJk?`rH'TJcFI("7SfNn@&>tq1[u2!qqEKec,\H!1E -!B:&NirG%MrrA#7irYJG:P&PWrrK:Q`rH'TJcFI("7SfNn@&>tqN^4C!r&&\ec,\H!1!$5!Q-jH~> -!BpJTm/X,tmJs6Cm/k?/++aI'rrUr0rlG*@eJ@M&s4RDSr,*t<[f6AOq<%\XLu[%c!ZqE`n*L/, -4b*~> -!BU8Qkl@9dmJrg7klSg(++aI'rrV)ArlG*@eJ@M&s4RDSr,*t<[f6A^qW@eYQ0-Ws!ZqE]n*'ku -3e.~> -!B:&NirG%MmJr4&ir[!r++aI'rrV5SrlG*@eJ@M&s4RDSr,*t<[f6AmqW@eYUZp>/!ZqEXn)FGd -2h1~> -!BpJTm/X,tmJs6Cm/uV[!UbO=])Memd)c4f8&]2$W!J9_$rrK.9f)Gj?!=A&[m/bd$ -J,~> -!BU8Qkl@9dmJrg7kl^&S!UbO=])Mf$e]@ak8&]2$W!Kcd4rrKLJf)Gj?!=@oWklK'j -J,~> -!B:&NirG%MmJr4&ire3G!UbO=])Mf1g;s9p8&]2$W!M8iDrrKgZf)Gj?!=@]QirR%V -J,~> -!BpJTm/X,tmJs6Bm/f'D^OcErrrU`0rlY6BZmbd%s4.,N_@`$BrrJ/ -!BU8Qkl@9dmJrg6klNU?^OcErrrLf@ao;FL./JMpec,]f&X9g*!Lr04rrLQIf)Gfd!&F!,!R<`V~> -!B:&NirG%MmJr4%irUq8^OcErrrLuRao;FL./JMpec,]f&X9g*!N5,CrrLcZf)Gfd!& -!BpJTm/X,tmJs6Bm/gVpO+I>BrrW1Wf@Bm0rjmAoEI#.ps8VU2`.@s;rr_(/B)0% -!BU8Qkl@9dmJrg6klP/kO+I>ArrJJ@ec-'W\p877H+O"Ts7%2LJcF4!"5PP@q7?S,VV(&2!Uu#u -rrS5]?LI%Yc8pI~> -!B:&NirG%MmJr4%irWEbO+I>ArrJqRec-'W\p877H+O"Ts7%2LJcF4!"5PP@q7?S,Z/+RB!V2]1 -rrS5]>OLMP_`*)~> -!BpJTm/X,tmJs6Bm/i7I?\/6frrLB-f)H0&>E->1^:fM1bl;9eJcF-t"7o>Pl+?rrVoRp!!J0Of -rrQO-NUH07eieN~> -!BU8Qkl@9dmJrg6klQ_B?\/6frrLT?f)H0&>E->1^:fM1bl;9eJcF-t"7o>Pl+?rrZ-DD1!KZU! -rrQO-MXK^0c8pI~> -!B:&NirG%MmJr4%irXu9?\/6frrLcPf)H0&>E->1^:fM1bl;9eJcF-t"7o>Pl+?rr]@>sB!M/]2 -rrQO-L[O1'_`*)~> -!BpJTm/X-`mJsT0mJs6Bm/jfu/qO&5rrW.Ph:V`.P(!/?"+>,1nU^_err`4J+O@_#!OTK#rrJn9 -fDbn)!4hOb!S0Da~> -!BU8Qkl@:PmJsT0mJrg6klS9n/qO&5rrW1_iRn/2P(!/?"+>,1nU^_err`4J+O@_#!PH;2rrK7I -fDbn)!4M=[!R<`V~> -!B:&NirG&9mJsT0mJr4%irZIc/qO&5rrW1mjk0S6P(!/?"+>,1nU^_err`4J+O@_#!Q<.BrrKUZ -fDbn)!3ttP!Q-jH~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK!%$"U"@Is1/.1c(s%m!KN99^&`n(JcF!p!id$9^&J,P\`Nhl -bcob""7lTuipQ%3c8pI~> -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zg7#Z!8?i@WSHkB0*&e=s1/.2qgdb^rrL#aotCHR_h%j4rr^RiIJpq\!Q_2# -rrM>:f`)#g!&*a,!S0Da~> -!BU8Qkl@:PmK*A%Zg7#Z!8?i@S_WH2/c`\ -!B:&NirG&9mK*A%Zg7#Z!8?i@N83Fp/HES;s1/.2r1*',rrL#aotCHR_h%j4rr^RiIJpq\!S"aC -rrMMZf`)#g!%mTu!Q-jH~> -!BpJTm/X-`mK3I)'=7?!q>^Qa!8?i@WSHkB@K;::s1&(0^nBK_!r?08otCL@>l'$Oc2Rn14](ac -rrLN=jo5D]Hh#eh!f?temHjr*4b*~> -!BU8Qkl@:PmK3I)'=7?!q>^Qa!8?i@S_WH2?iZ(8s1&(0a/e"q!r?08otCL@>l'$Oc2Rn14](ac -rrL]MjSo7 -!B:&NirG&9mK3I)'=7?!q>^Qa!8?i@N83Fp?3#k6s1&(0cF)I-!r?08otCL@>l'$Oc2Rn14](ac -rrLl]jSo7Ko\'6GM?$uMirR%VJ,~> -!BpJTm/X-`mKaPiPiViFSC#sh!`T/bmHjr*4b*~> -!BU8Qkl@:PmKaPmT]H+RVq'K#!`T/`mHFYs3e.~> -!B:&NirG&9mKaPqXQ9B^ZJ+"3!`T/\mGe5b2h1~> -!BpJTm/X-`mKEUjs1f;SoBlSYrU'ghIh`8okMP\-WSHkB`rI03s0r"/\Yn9`!+tc8!+pf^b5VO- -&AQ*^!T]1"rrKg:g&D*p!6=Ko!S0Da~> -!BU8Qkl@:PmKEUjs1f;SoBlSYrU'ghIh`8okMP\-S_WH2_uLj0s0r"/_6Mhr!+tc8!+pf^b5VO- -&AQ*^!U#j2rrL'Jg&D*p!6"9h!R<`V~> -!B:&NirG&9mKEUjs1f;SoBlSYrU'ghIh`8okMP\-N83Fp^Ao=+s0r"/ah$=.!+tc8!+pf^b5VO- -&AQ*^!U?NBrrL -!BpJTm/X-`mJm7drrR`Ojn.s@!<) -!BpJTm/X-`mKEUjs1f;SoBlSYrU'ghbjOoB)W0r_WS?eA56.mY!'fi;!S0Da~> -!BU8Qkl@:PmKEUjs1f;SoBlSYrU'ghbjOoB)W0r_S_NB14ohd;s0r"/]=6\t!N;Ld^&S00^&S04 -^&a_%JcEjl"6rN=hSoKqpP@o1!r@WJg]%>Y!']c6!R<`V~> -!B:&NirG&9mKEUjs1f;SoBlSYrU'ghbjOoB)W0r_N8*@o492R9s0r"/_nb10!N;Ld^&S00^&S04 -^&a_%JcEjl"6rN=hSoKqpm:(A!rJ8\g]%>Y!'KW.!Q-jH~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=75s!!)uc"TZd7m`QO+mJs6@m/jEj21be9rrK1-i;Wdtr4W.2qRuq0rOr8P -JcEai"3r9&oZ-t4H1g7u!Nj)jrrP%XY3bNVeieN~> -!BU8Qkl@:PmK3I)'=75s!!)uc"TZd7m`QO+mJrg4klRmc21be9rrKL?i;Wdtr4W.2qRuq0rOr8P -JcEai"3r9&oZ-t4M"]p0!Op&&rrP%XX6f'Oc8pI~> -!B:&NirG&9mK3I)'=75s!!)uc"TZd7m`QO+mJr4#irZ+Y21be9rrKjQi;Wdtr4W.2qRuq0rOr8P -JcEai"3r9&oZ-t4QhTS@!Plt7rrP%XVsNFE_`*)~> -!BpJTm/X-`mK*A%ZgdA_!<) -!BU8Qkl@:PmK*A%ZgdA_!<) -!B:&NirG&9mK*A%ZgdA_!<) -!BpJTm/X-`mK!Uc!-%kM!!)l0!!)u3!-!Mh -_uBh:(6JO -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs6?m/h#&IY%O-rrVD4qVqMTEr[P*!,Cie!S0Da~> -!BU8Qkl@:PmJsT0mJrg3klPQ!IY%O-rrVJEqr7VUEr[P*!,:c`!R<`V~> -!B:&NirG&9mJsT0mJr4"irWfmIY%O-rrVSVqr7VUEr[P*!+tQW!Q-jH~> -!BpJTm/X,tmJs6?m/j$_6%T'DrrJ\-jSo>;OYjcM^&\MEr4W38$3%X>]leo+_>aW6GnId7rrJ\= -j8T.Pbh`:#5ld\Gm/bd$J,~> -!BU8Qkl@9dmJrg3klRLX6%T'DrrK(?jSo>;OYjcM^&\MEr4W38$3%X>]leo+_>aW6GnId7rrK(M -j8T.[dbXp)5ldSDklK'jJ,~> -!B:&NirG%MmJr4"irY_N6%T'DrrKIQjSo>;OYjcM^&\MEr4W38$3%X>]leo+_>aW6GnId7rrKI] -j8T.ef\QQ/5ldG@irR%VJ,~> -!BpJTm/X,tmJs6?m/u/F$N#DS[f6EfJc+d4#Pu/U-lQW>S,L&%0mro5!I?L"^&a_%JcELb"2>If -pWid>Us%fu!Pb_mrr`-*!T!)/!S0Da~> -!BU8Qkl@9dmJrg3kl]W?$N#DS[f6EjO8\>C#Pu/U-lQW>S,L&%0mro5!I?L"^&a_%JcELb"2>If -pWid>Y0l;0!QMP(rr`-*!SZl(!R<`V~> -!B:&NirG%MmJr4"irdd3$N#DS[f6EmSc.gQ#Pu/U-lQW>S,L&%0mro5!I?L"^&a_%JcELb"2>If -pWid>\C]d@!RAF9rr`-*!S$Gq!Q-jH~> -!BpJTm/X,tmJs6>m/ed<^OcEmrrJJ.m/IFbP#ViJK$F;pk&gR9#`o[EY.Ll^&Wm"+!HdITs1\L8 -m8kjcci4$H`8gjui/HOm!l"^clKnW'4b*~> -!BU8Qkl@9dmJrg2klN=7^OcEmrrJk?m/IFbP#ViJK$F;pk&gR9#`o[EY.Ll^&Wm"+!HdITs1\L8 -m8kjcci4$QbN&U'j-ed(!l"^blKJ>p3e.~> -!B:&NirG%MmJr4!irUY0^OcEmrrK:Qm/IFbP#ViJK$F;pk&gR9#`o[EY.Ll^&Wm"+!HdITs1\L8 -m8kjcci4$[dGt6-kGI,9!l"^alJho_2h1~> -!BpJTm/X,tmJs6>m/h#&I"D=*rrUr0rpg!nrlp$R$<<8]qu6Y.r4WB"3=Z*#30aBU!+pf^]Dhu. -(5i( -!BU8Qkl@9dmJrg2klPMuI"D=*rrV)Brpg!nrlp$R$<<8]qu6Y.r4WB"3=Z*#30aBU!+pf^]Dhu. -(5i(p3e.~> -!B:&NirG%MmJr4!irWclI"D=*rrV5Srpg!nrlp$R$<<8]qu6Y.r4WB"3=Z*#30aBU!+pf^]Dhu. -(5i( -!BpJTm/X,tmJs6>m/j3d3._+:rrJ5.o`#0fY@JP"F2%MGrrJjdo=b6tU4N?Urr_1D5N'ui!P,Yu -rrJ59hu -!BU8Qkl@9dmJrg2klR^^3._+:rrJY?o`#0fY@JP"F2%MGrrJjdo=b6tU4N?Urr_1D5N'ui!PlJ0 -rrJ\Jhu -!B:&NirG%MmJr4!irYnS3._+:rrK+Ro`#0fY@JP"F2%MGrrJjdo=b6tU4N?Urr_1D5N'ui!Q`=@ -rrK+Zhu -!BpJTm/X,tmJs6>m/u>O"Rq!B[Jp1%RuT9o`#!h>eTgE!khk8JcE:\"9")mUXT5D -^Tc_t!O98prr_`n"leh7!S0Da~> -!BU8Qkl@9dmJrg2kl]cG"Rq!B[Jp9\RJ6^cglY&97ZlKurrW%%^%K)@]j1Dbs1/.3rJDAce,KHg -\`3Vi]#*D*"7QEshWj>+c8pI~> -!B:&NirG%MmJr4!irdp:"Rq!B[Jp9aVYC)pglY&97ZlKurrW%%^%K)@]j1Dbs1/.3rJDAce,KHo -_;bIq_TLg:"7QErf]qJt_`*)~> -!BpJTm/X,tmJs6=m/f6IZ%;q_rrW1WfDPXRqS%#!)J$&CnG`O,HhG)RHc(F7[f6HV/6D5hrrL-= -ir9&,Rc+2IYlHcJm/bd$J,~> -!BU8Qkl@9dmJrg1klNgEZ%;q^rrJJ@r;R#u^2k\@A?YUorrL#aotCHR_h%irrr^V!=7+Q -!B:&NirG%MmJr3uirV+=Z%;q^rrJqRr;R#u^2k\@A?YUorrL#aotCHR_h%irrr^V!=7+Q -!BpJTm/X,trrB%Nm/hJ3D1V_orsR)8s8VeV<=1[:c2R)0!KN99^&a=UJcE+W"8?aI^"32ac(a4t -!qCX:iVrsr!-d\p!S0Da~> -!BU8Qkl@9drrAVBklPu-D1V_orsR;Js8VeV<=1[:c2R)0!KN99^&a=UJcE+W"8?aI^"32ad]DI. -!V;0+rrR$;Fm8,kc8pI~> -!B:&NirG%MrrA#1irX6$D1V_orsRJ[s8VeV<=1[:c2R)0!KN99^&a=UJcE+W"8?aI^"32afXKl? -!VDc;rrR$;Ep;Tb_`*)~> -!BpJTm/X,trrB%Nm/j]r.=qN+rs/LEIR4B>P4[r;!Kqm,^&`YFJcE"T"25F\n_!jBe!o=r!J9Rp -rrOVL[d!/[eieN~> -!BU8Qkl@9drrAVBklS0k.=qN+rs/ORJ3jT@P4[r;!Kqm,^&`YFJcE"T"25F\n_!jBfV[X-!Kc[, -rrOVLZg$]Tc8pI~> -!B:&NirG%MrrA#1irZCa.=qN+rs/O_K0foCP4[r;!Kqm,^&`YFJcE"T"25F\n_!jBh6Gr=!M8`< -rrOVLYNb'J_`*)~> -!BpJTm/X,trrB%Nm/uS`!8`;,\,QZ[JMIcuZ1d5X$-ZV5]tV4oN&o16s0)G)nR`lSg&D*-Pi;WC -U<2Ep"5X"gl07R9eieN~> -!BU8Qkl@9drrAVBkl^#X!8`;,\,QZ[JMIg%Z1d5X$-ZV5]tV4oN&o16s0)G)nR`lSg&D*1T],nO -Xj?#,"5X"gjlu"1c8pI~> -!B:&NirG%MrrA#1ire0K!8`;,\,QZ[JMIg)Z1d5X$-ZV5]tV4oN&o16s0)G)nR`lSg&D*5XPs0[ -\(0L<"5X"fhs'/%_`*)~> -!BpJTm/X,trrB%Mm/g)aP_&kHrsAV>E?ZTH_>&QAiVs2_\p876H*.YOJcDkP"1fRdn_='EiJums -"hTl;_;"YFrrSDb;!@9IeieN~> -!BU8Qkl@9drrAVAklOT[P_&kHrsAV>E?ZTH_>0,SiVs2_\p876H*.YOJcDkP"1fRdn_='EjdP0. -"i6VJ_;"YFrrSDb:?^pCc8pI~> -!B:&NirG%MrrA#0irVmSP_&kHrsAV>E?ZTH_>0VdiVs2_\p876H*.YOJcDkP"1fRdn_='EkbmD> -"j!FZ_;"YFrrSDb9^(L;_`*)~> -!BpJTm/X,trrB%Mm/iOQ8qI#Vrs&2%@MLYLdJa(G^nBE]!B[lDs/c5&nR`lSq>UQ[b0&o2rrM>= -jSoVLDea68M26Y%C2`4urrPdmQ0@T9eieN~> -!BU8Qkl@9drrAVAklR%K8qI#Vrs&2%@MLYLdJa(Ga/dqo!B[lDs/c5&nR`lSq>UQ[b0&o2rrMGM -jSoVLDea69M26Y%C2`4urrPdmPN_63c8pI~> -!B:&NirG%MrrA#0irY8A8qI#Vrs&2%@MLYLdJa(GcF)C+!B[lDs/c5&nR`lSq>UQ[b0&o2rrMM] -jSoVLDea6:M26Y%C2`4urrPdmO6GU)_`*)~> -!BpJTm/X-`rrBjNrrB%Mm/tuB$2/rM_Z'im#$0,r- -G_h-">&WHerrMS=k5PP?9kh37^&tr\:#>7:"83$&f]_]'eieN~> -!BU8Qkl@:PrrBjNrrAVAkl]E:$2/rM_Z'im#$0,r- -G_h-">&WHerrMYMk5PP?9kh37^&tr\:#>7:"83$&eEH,tc8pI~> -!B:&NirG&9rrBjNrrA#0irdU/$2/rM_Z'im#$0,r- -G_h-">&WHerrM\]k5PP?9kh37^&tr\:#>7:"83$&cfjBi_`*)~> -!BpJTm/X-`rrE,8_Z'V8f'NMn!4@CX`;^"pFr!H/p@eLe\Yn3^!QcpEs/H#'nR`HMpLA!Oqn<0F -CLd,+rrM_=kPkUeC:s5R!k`9OmJd6q!&<[(!S0Da~> -!BU8Qkl@:PrrE,8_Z'V,f'*5i!4@CX`;^"pFr!H/p@eLe^p2Yo!QcpEs/H#'nR`HMpLA!Oqn<0F -CLd,+rrMeMkPkUeC:s5R!k`9OmJd6q!&3U#!R<`V~> -!B:&NirG&9rrE,8_Z'Upf&Hfb!4@CX`;^"pFr!H/p@eLeaL^.+!QcpEs/H#'nR`HMpLA!Oqn<0F -CLd,+rrMh]kPkUeC:s5R!k`9OmJd6q!&*Nq!Q-jH~> -!BpJTm/X-`rrN07^r-0PWRgG#7^&`kYmf*?'!-[Pm!S0Da~> -!BU8Qkl@:PrrN07^r-0PS_!$,F9$',s2Y-Cq5H^tG1uQf!r%QAh#@HR']aiFW;ct4&3[Dp^&kZD -o^;_[q1e,5!M>#7^&`kYmf*?'!-IDg!R<`V~> -!B:&NirG&9rrN07^r-0PN7R"jE<'a)s2Y-Cq5H^tG1uQf!r//Rh#@HR']aiFW;ct4&3[Dp^&kZD -o^;_[q3L7E!M>#7^&`kYmf*?'!-.2^!Q-jH~> -!BpJTm/X-`rrW8:'YsA@q>f1J!3+Q:!k\LPJcEjl"kn,96`KnNrrKC,g]%:USq6p>rrH-,otCI6 ->OMLlr,_-&!Ru)W^&`3&n,EG.!5.L^!S0Da~> -!BU8Qkl@:PrrW8:'YsA@q>f1J!1h^*!kA:MJcEjl"kn,96`KnNrrK^?g]%:USq6p>rrH-,otCI6 ->OMLlr.F86!Ru)W^&`3&n,EG.!4h:W!R<`V~> -!B:&NirG&9rrW8:'YsA@q>f1J!0#Lh!jhqHJcEjl"kn,96`KnNrrL$Qg]%:USq6p>rrH-,otCI6 ->OMLlr0-CF!Ru)W^&`3&n,EG.!4:qL!Q-jH~> -!BpJTm/X-`rr`?%^_FTTrr<&LrrB%Lm/uYk!7$/qc2RtCWC%JFg?nnAnp9o_rrJQpJcD\K!MttT -^&S02^&aCnr;QlecE;rsIfVNXm!f1sa_8B%^AJ!)^&bo]nG`U9!#Y%bm/bd$J,~> -!BU8Qkl@:Prr`?%^_FTTrr<&LrrAV@kl^)c!7$/qc2RtCWC%JFg?nnAo83.qrrJQpJcD\K!MttT -^&S02^&aCnr;QlecE;rsIfVf`m!f1sa_8B%^AJ!)^&bo]nG`U9!#Xn^klK'jJ,~> -!B:&NirG&9rr`?%^_FTTrr<&LrrA#/ire6V!7$/qc2RtCWC%JFg?nnAopGI.rrJQpJcD\K!MttT -^&S02^&aCnr;QlecE;rsIfW)hm!f1sa_8B%^AJ!)^&bo]nG`U9!#OVWirR%VJ,~> -!BpJTm/X-`rriE&s1f>aoD]@%s8UnL$jT8bs8UnL$jT8bjo5=[ea3EH!.BFuci41&Fr*NFqqtB`>aD!!0e6qn -!BU8Qkl@:PrriE&s1f>aoD]@%s8UnL$jT8bs8UnL$jT8bjo5=Oe`d-C!.BFuci41&Fr*NFqqtB`>aD!!0e6qn'J-1:2/kl2W!!)W)!G_5rrrRTK -@-6\Sc8pI~> -!B:&NirG&9rriE&s1f>aoD]@%s8UnL$jT8bs8UnL$jT8bjo5=>e`-^:!.BFuci41&Fr*NFqqtB`>aD!!0e6qn -!BpJTm/X-`rr<&urrR`Op%87q!<<'L^@q&7=TACO^@q&7=QTP_WR^A;XT0o's3goNqNXD`G1u-Z -!pt@/h>[QU']joGWrE+fEW!NN!<0\4!;jJ6>?luecL1<(!I=D)rrLK"r4W.2rk8U;"])kH!!Q0t -^&`o6nc&YA!3PDN!S0Da~> -!BU8Qkl@:Prr<&urrR`Op%87q!<<'L^@q&7=TACO^@q&7=QTP_S^ls+WW4T$s3goNqNXD`G1u-Z -!q2$Ah>[QU']joGWrE+fEW!NN!<0\4!;jJ6>?luecL1<(!JpL9rrLK"r4W.2rk8U;"])kH!!Q0t -^&`o6nc&YA!352G!R<`V~> -!B:&NirG&9rr<&urrR`Op%87q!<<'L^@q&7=TACO^@q&7=QTP_N7HqiV>r/us3goNqNXD`G1u-Z -!qD]Rh>[QU']joGWrE+fEW!NN!<0\4!;jJ6>?luecL1<(!LNTIrrLK"r4W.2rk8U;"])kH!!Q0t -^&`o6nc&YA!2eo=!Q-jH~> -!BpJTm/X-`rriE&s1f>aoD\djqu6]i'`7n2ob?Nf!3+N9"6^9rg4B:Trs&A0>RjAmr8dkYUqGL_ -!Df\Gs/Q)"c%l52!!*#4!rtaqE;mQPLX#;f!IaM(rrLK"r4WO=^:mk[!!9l?$31/,^&`o6o)AgG -!"eAVm/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoD\djqu6]i'`7n2ob?Nf!1h[)"69smg4B:Trs&A0>RjAmr8dkYY/B&p -!Df\Gs/Q)"c%l52!!*#4!rtaqE;mQPLX#;f!K?X9rrLK"r4WO=^:mk[!!9l?$31/,^&`o6o)AgG -!"\/QklK'jJ,~> -!B:&NirG&9rriE&s1f>aoD\djqu6]i'`7n2ob?Nf!0#Ig"5aUhg4B:Trs&A0>RjAmr8dkY\BE\- -!Df\Gs/Q)"c%l52!!*#4!rtaqE;mQPLX#;f!LiZHrrLK"r4WO=^:mk[!!9l?$31/,^&`o6o)AgG -!"[uLirR%VJ,~> -!BpJTm/X-`rr`?%^_FTTrt#21s2R81!!!'"s2R81!!!&]rrB%Jm/g;gM1P]ZrrpP`(c[`EiVruC -IJVe"!K1fGs/Z/$qn%R[^&S04^&nA%QOa#/!JeqgrrI`=li."WCAbdR!5?/NR$7Tb"dkMSrk8DJ -oCDn_M#^T -!BU8Qkl@:Prr`?%^_FTTrt#21s2R81!!!'"s2R81!!!&]rrAV>klOibM1P]ZrrpP`(c[`EiVruE -N;MH2!K1fGs/Z/$qn.X\^&S04^&nA%QOa#/!JeqgrrJ5Mli."WCAbdR!5?/NR$7Tb"dkMSrk8DJ -oCDn_M#^Q;klK'jJ,~> -!B:&NirG&9rr`?%^_FTTrt#21s2R81!!!'"s2R81!!!&]rrA#-irW*YM1P]ZrrpP`(c[`EiVruH -Retq@!K1fGs/Z/$r4e!a^&S04^&nA%QOa#/!JeqgrrJ_]li."WCAbdR!5?/NR$7Tb"dkMSrk8DJ -oCDn_M#^H8irR%VJ,~> -!BpJTm/X-`rrW8:'Ys8=&-2b1*2rB+nc8^i*2rB+nc7eO!3+K8!hoZSJcFL)"l"ST-@sq-rrJ\. -h>[Mr0nKA1rsAM`d_;]GJTQX:'F;k^.ni* -!5?1\C%;3)2uo]7m/bd$J,~> -!BU8Qkl@:PrrW8:'Ys8=&-2b1*2rB+nc8^i*2rB+nc7eO!1hX(!hTHPJcFL)"l"ST-@sq-rrK(? -h>[Mr0nKA1rsAPdf>Y(iO+`C(r4W.2rk8I7Q^83]^&`6An,EEQlg"KNBtaJZ%fj>X:'F;k^.ni* -!5?1\C%;3)2uoT4klK'jJ,~> -!B:&NirG&9rrW8:'Ys8=&-2b1*2rB+nc8^i*2rB+nc7eO!0#Ff!h00LJcFL)"l"ST-@sq-rrKIQ -h>[Mr0nKA1rsAPfgs!F5SWf@Rr4W.2rk8I7Q^83]^&`6An,EE^mcsfQBtaJZ%fj>X:'F;k^.ni* -!5?1\C%;3)2uoH0irR%VJ,~> -!BpJTm/X-`rrN07_!q@8!<<'4Yk[$T!<<'4Yk[$T!9O4\WRU;;jTtqIJcFX-"mV:2(iRRNrrV/1 -r8.GTq$lkFs184ApuKf6ViuURLn(]gg$Sb -!BU8Qkl@:PrrN07_!q@8!<<'4Yk[$T!<<'4Yk[$T!9O4\S^cm+i<]MEJcFX-"mV:2(iRRNrrV;C -rSIPUq$lkFs184Aq<-;GZ(I#0Q)D19h=(@CB`,RE!<0\7!(.!0rk8AGmf* -!B:&NirG&9rrN07_!q@8!<<'4Yk[$T!<<'4Yk[$T!9O4\N7?kigBdl?JcFX-"mV:2(iRRNrrVDT -rSIPUq$lkFs184Aq -!BpJTm/X-`rrE,8n,Eq!s8TAL"UJlP4QBgP,7UH!KZ1'rrJaEn\,$VTCMp_N;uc8m/bd$ -J,~> -!BU8Qkl@:PrrE,8n,Eq!s8TAL"UJlP4QBgP,7UH!Lr07rrJaEn\,$VTCMp_N;u]6klK'j -J,~> -!B:&NirG&9rrE,8n,Eq!s8TAL"e)LL&!0)R0ir95^RS"&p\,4eW!Nsu/ -rrGBpJcERd%f#8@agnF?Q)(e)e)U#uq>UJlP4QBgP,7UH!N>2GrrJaEn\,$VTCMp_N;uW4irR%V -J,~> -!BpJTm/X-`rrBjNrrB%Im/is]21begrrr.c-6AKLeGfU)LAp'0s*TCtaSubBi68^+O*c,1TX;eq -nG_tX!F)r(^&bTFmJd3Nh!"b>YA1`C^&kr^YOMPn2#s?2m/bd$J,~> -!BU8Qkl@:PrrBjNrrAV=klRFV21begrrr.c-6AKLeGfU-PlBP>s*TCtaSu_CjO1iHS;N)iX1cg: -o'lY[>I=(;!OQ(urrJbMkl1^fC:s5R!k`9OnG`PI!1r99!R<`V~> -!B:&NirG&9rrBjNrrA#,irYYL21begrrr.c-6AKLeGfU1U&NpKs*TCtaSu_DkLdkcW0rsK[Dg\W -o^Mk]>I=(;!OQ(urrK1]kl1^fC:s5R!k`9OnG`PI!1N!/!Q-jH~> -!BpJTm/X,trrB%Im/uJ[!8E))kPk\RL)EY#d/O--d,+d'\3PWFci4IFhTE7"NHof0U:/5%oBH8V -oN8Kp^&kZDo^2YZQe:L$"5Zad](s&B\nOmqnG`UF!"J)Om/bd$J,~> -!BU8Qkl@9drrAV=kl]oS!8E))kPk\RL)EY#d/O-:e_^<,\3PWFci4IHim>E@RYZcgXM3'@o]cAW -oN8Kp^&kZDo^2YZUYP&4"5Zad](s&B\nOmqnG`UF!"IrKklK'jJ,~> -!B:&NirG%MrrA#,ire'F!8E))kPk\RL)EY#d/O-FgYVr2\3PWFci4IIjjqG[VjEaJ\&R"]p$)JX -oN8Kp^&kZDo^2YZY2SRD"5Zad](s&B\nOmqnG`UF!"@ZDirR%VJ,~> -!BpJTm/X,trrB%Hm/g;gKRs0frrhA''4956rrLW.hZ!ZI%JbSTf`)H\nD)*lT8Rr@O/'5/i:Q". -"8?;@]_fDF]PD$Om/I*Ue)gT;j_nmSIu/u2Eb]OSmf*?A!*8.I!S0Da~> -!BU8Qkl@9drrAVQ#R -pLA!Oqn<0FCLd,*rrK"Ljo5_MDea -!B:&NirG%MrrA#+irW*YKRs0frrhA''4956rrLuRhZ!ZI%JbSTfDc -!BpJTm/X,trrB%Hm/j3d/:mierrgeX'6E3XrrW1VfA?N.0unkFhu=2cmb#RcSr.W -!BU8Qkl@9drrAV -!B:&NirG%MrrA#+irYnS/:mierrgeX'6E3WrrJqRhZ!U2a+=9IrsePXe&/PgPFAM^ak>nQf`)9< -Dd%CALit[lj6HXF[G'X?"ngWkaP6CRrrO_OU#Y/6_`*)~> -!BpJTm/X,trrB%Hm/uPb!7QN!mf*F+9,WKQao;CdPMZ%f:rrJq=a8Z7j!#"MUm/bd$J,~> -!BU8Qkl@9drrAV%f:rrK:Ma8Z7j!"n;PklK'jJ,~> -!B:&NirG%MrrA#+ire0N!7QN!mf*F+9,WKQao;CoX5%f:rrKX]a8Z7j!"n,KirR%VJ,~> -!BpJTm/X,trrB%Gm/gSoH%H"crrr@g*[[?Ma8Z5>K\kVd!NAkGs6fmtrpejf\"f%5G)2Wk_UduK -_uBb)@-R[lW5lsY!dOcPip?ct4b*~> -!BU8Qkl@9drrAV;klP,jH%H"crrr@g*[[?Ma8Z5?OlG9u!NAkGs6]groA\-3Y+:N*Q);(5g?\XR -rrJKpl2Ldic,]hcGlV.0klK'jJ,~> -!B:&NirG%MrrA#*irWBaH%H"crrr@g*[[?Ma8Z5?TB4u1!NAkGs6]gro]=ZE\>bp]UTqY^hsUE[ -rrJKpl2LdreAqRjGlV%-irR%VJ,~> -!BpJTm/X,trrB%Gm/s`r*W:Qho`#*VJ/U\Arl"g;`gP`a!p(-qJcGHD&,YVB_loSeG(#II[`[Fq -rk/73d3n2Y!Na2[rr`3?!4ChR!S0Da~> -!BU8Qkl@9drrAV;kl\3k*W:Qho`#*VJ/U\Arl"g;bba4s!p(-qJcGHD%fG\Jage77Ko;J'^X1s1 -]DhoZ-gCX3[`QVj"8s5?ZJt*Lc8pI~> -!B:&NirG%MrrA#*ircFa*W:Qho`#*VJ/U\Arl"g;e$.a0!p(-qJcGHD%fGbPd)!#_Q("\]a4BAE -]DhoZ-gCX3^X1(%"8s5?Y2\IB_`*)~> -!BpJTm/X,trrB%Gm/u\t!4ma]p\tEr^Jtn]eA;.dqg[\arrF=pJcG]K%eS`*];LmEFG6*_^XD6= -[/U4*&+/Z^!O0>[rr]h4+RJ+T!S0Da~> -!BU8Qkl@9drrAV;kl^,l!4ma]p\tEr^Jtn]eA;.dr/KmsrrF=pJcG]K%ef#5_QfbpKT`+<`n0GM -[/U4*&+/Z^!P-4krr]h4+R%hL!R<`V~> -!B:&NirG%MrrA#*ire9_!4ma]p\tEr^Jtn]eA;.dr1*'0rrF=pJcG]K%eo2?b.FaGPG#+nc.qX] -[/U4*&+/Z^!Q*+&rr]h4+6);?!Q-jH~> -!BpJTm/X,tmJs65m/hM4>ClhMrrqtY.k?nU^Ae5KT\obM?CHTJ&,knL`j24qH$P@@ZcCeerN-#" -7()=[!O]M[rrQC)GiA#jeieN~> -!BU8Qkl@9dmJrg)klQ#.>ClhMrrqtY.k?nU^Ae5RX5EpX?CHTJ&,ktRbe'mCLkqJ!]Zo=%riH,# -7()=[!PQ@krrQC)G2_Zdc8pI~> -!B:&NirG%MmJr3mirX9%>ClhMrrqtY.k?nU^Ae5Z[GUub?CHTJ&,l%Xe&8YkQ^=SW`7*`9riH,# -7()=[!QE4&rrQC)F5c-[_`*)~> -!BpJTm/X,tmJs65m/tZ8$Lr]Ir;QrMC(aO]rk/74pjDAbrrJBrN;jC_jjLlDQ\9I3Pc).=iq9,I -s*X,3!P,V[rr_cu!RK`l!S0Da~> -!BU8Qkl@9dmJrg)kl]-1$Lr]Ir;QrMC(aO]rk/74q2=UtrrJBrN;jC`kh!e\UQU:kTWuDajn>MM -s*X,3!PuLlrr_cu!R0Ne!R<`V~> -!B:&NirG%MmJr3mird=&$Lr]Ir;QrMC(aO]rk/74qO6m2rrJBrN;jC`leKb!Y+UuLXLl[/kkCnQ -s*X,3!Qi@'rr_cu!QX0Z!Q-jH~> -!BpJTm/X,tmJs64m/f?LSUph@rrrCj5T517\GlT?Vr7RU`AWt\&,>;:_Q]VjHZk79YJ\rVr13ig -[7'<[!PYh\rrS_k45fK,eieN~> -!BU8Qkl@9dmJrg(klNmGSUph@rrrCj5T517\GlTFZ/GW_`AWt\&,GJCagnC=M1q7n\B -!B:&NirG%MmJr3lirV4@SUph@rrrCj5T517\GlTN]AW\i`AWt\&,GPJd)*/eR$FJQ_9q0/r13ig -[7'<[!R/I'rrS_k3T/ou_`*)~> -!BpJTm/X,tmJs64m/iLP52uSGnCYgtf^Pd<"ne0,+.3#8rrVk?n)=9Jo*bJert"kce&&>\N-]]( -R]O6MiU`?7!ppNrli."&Xi^SE4ogi*m/bd$J,~> -!BU8Qkl@9dmJrg(klR"J52uSGnCYgtf^Pd<"ne0,+.3#8rrVnNn_sKLo*bJert"ngfZ:V&R>HZ` -V7":mjn4o=!ppNrli."-[`SON4ogc(klK'jJ,~> -!B:&NirG%MmJr3lirY5@52uSGnCYgtf^Pd<"ne0,+.3#8rrVq^o&9TMo*bJert"qkh9WpEVO3XD -Z+eH9kk:;A!ppNrli."4^WHKW4ogW$irR%VJ,~> -!BpJTm/X,tmJs64m/uJX!SQZ9%Jm&BBlnl_Ndu4cDlNT7rrhV:(/VrTrrKC-i;Wg)eY`?Xrp\jm -^os;eH$>+6XM3'@oSieN-dh8[!QM+]rr^pT$Kg:6!S0Da~> -!BU8Qkl@9dmJrg(kl]oP!SQZ9%Jm&BBlnl_Ndu4cDlNT7rrhV:(/VrTrrK^?i;Wg)eYW9Vo&S?A -\>YdNL6e^F`RX)CN;io+dHgf5bd5Il"5*\^io'&%c8pI~> -!B:&NirG%MmJr3lire'D!SQZ9%Jm&BBlnl_Ndu4cDlNT7rrhV:(/VrTrrL$Qi;Wg)eYW9Vo]OuS -_6]u)QD:_"c.hIUN;io+dHgf5e%Ej'"5*\^gu.2n_`*)~> -!BpJTm/X-`mJsT0mJs63m/gPnFQrf-p4R+IpV$`tBS?)`rrh"f&nfn%rrV_:oAT]M -!BU8Qkl@:PmJsT0mJrg'klP&hFQrf-p4R+IpV$`tBS?)`rrh"f&nfn%rrVeKp#5oO -b.FdIOFrL]WOU""k4XK.!FV;\rrLKMb5VNb!*e@F!R<`V~> -!B:&NirG&9mJsT0mJr3kirW?`FQrf-p4R+IpV$`tBS?)`rrh"f&nfn%rrVh[p>Q#P!Q-jH~> -!BpJTm/X-`mK!:prrUYOZ1G[2YuoJ]rrg8:(4YVOrrK1.iVrq4 -Fh%Garpf%!`k&%5L3%ZuR]F'Eh!Fris8;ltVap(Q!R@C^rr`$2!5.4V!S0Da~> -!BU8Qkl@:PmK!:prrUYOZ1G[2YuoJ]rrg8:(4YVOrrKL?iVrq4 -FgqA_oB+`M_6BYtK8Gql[):;LmehY9r;Qeq8*g0Ue>pdm"8ET2\_lWPc8pI~> -!B:&NirG&9mK!:prrUYOZ1G[2YuoJ]rrg8:(4YVOrrKjQiVrq4 -FgqA_o]b5]ah"UJPF//N^<>-hnGIk;r;Qeq8*g0Ufs]*("8ET2[,9mE_`*)~> -!BpJTm/X-`mK*A%Zg7#Z!;c*`!93DHWQjf3/HD^8rrTl?^%&f<]jAC]rrr=f+!d0FX8`7gHhZP" -!OYA5rtGD'jOVD_Wgo*!F+&t8W3s_!l26,4oD\mc'BJN[!RmR^rrT(u/`,jqeieN~> -!BU8Qkl@:PmK*A%Zg7#Z!;c*`!93DHS^$C#/HD^8rrTl?^%&f<]jAC]rrr=f+!d0FX8`7iMYQ32 -!OYA5rtGD(kM+:u[&9@PJr?"mZG+W?lhl>6oD\mc'BJN[!SF -!B:&NirG&9mK*A%Zg7#Z!;c*`!93DHN6UAa.fcL6rrTl?^%&f<]jAC]rrr=f+!d0FX8`7kRJGkB -!OYA5rtGD)lJL+5]s=Q+P+&5P]Z/I[mehY9oD\mc'BJN[!St')rrT(u/)K:e_`*)~> -!BpJTm/X-`mK3I)'=7?!q>^Qa!;c*`!93DHWQjf3N;u93rrM(fpq?_.rOr73r4W2@iQV<(k/tj/ -oD]!JFr!H6ri#htUV,Ud!Tb*ArtYP*khFG$[]5mZJT?-qR&@@1dc'ZmJcG!7!G@2SrrL`=bPqW0 -!0,k&!S0Da~> -!BU8Qkl@:PmK3I)'=7?!q>^Qa!;c*`!93DHS^$C#M?#s0rrM(fpq?_.rOr73r4W2@iQV<(k/tj/ -oD]!JFr!H6ri#htY/B9!!Tb*@rtP.khpfc^Z`'@SJVoeiZ+eB4jRN2"s69OaB8>jR!SaBmrrPId -MVdRuc8pI~> -!B:&NirG&9mK3I)'=7?!q>^Qa!;c*`!93DHN6UAaLB'X-rrM(fpq?_.rOr73r4W2@iQV<(k/tj/ -oD]!JFr!H6ri#ht\BEn3!Tb*@rtP1oj4_l"]sFZ.OdW#K]#N.Qkk"b(s69OaB8>jR!T:0)rrPId -LYh%l_`*)~> -!BpJTm/X-`mKUWoWC%JFg84fNkC*3drrEnsg&Di]lf$C8]W\)sMLKSm -LQe@3\]*"Smf%e;hu<_t..$s7gQ]q^"5*\_i83i%eieN~> -!BU8Qkl@:PmKUWoWC%JFg84fNlAYW"rrEnsg&Di^mc<'H_mlhCQ]-NQ -Pb4t`^rt?inG\"=hu<_t..$s7hk83n"5*\_gtq8rc8pI~> -!B:&NirG&9mKUWoWC%JFg84fNm$dh2rrEnsg&Di_nEA`ZbJCZjUmmO7 -U8t]9aO8l+o)=4?hu<_t..$s7j/gK)"5*\_fA>Ng_`*)~> -!BpJTm/X-`mKEUjs1f;SoBlSYrU(*pIh`8okO.al]!8rrMh)rOrI9^:jT] -^&\,G!!)o1"%OtRJ+%mqIr%Y#"=$HRLT\qjo)AdH>)`9k!fU= -!BU8Qkl@:PmKEUjs1f;SoBlSYrU(*pIh`8okO.a6&d6rrMh)rOrI9^:jT] -^&\,G!!)o1"%OtRJ+%mqIr%Y#"=$HRLT\qjo)AdH>)`9k!fU=,^pgJCS -!B:&NirG&9mKEUjs1f;SoBlSYrU(*pIh`8okO.a)`9k!fU= -!BpJTm/X-`mJm7drrR`Ojn.s@!<)VQ8p?q%ue]l(H[&g$lPDb$=EI!1rQ_LRi^rt9cl1Fq*s2Y-?LM-#S!TK*`rr_p,!5mX[ -!S0Da~> -!BU8Qkl@:PmJm7drrR`Ojn.s@!<)VQ9p[ID*g="0_]X=o>T9t^sJ;B>VUTCl;a3iW$m.L@/s2Y-?LM-#S!Tfcprr_p,!5RFT -!R<`V~> -!B:&NirG&9mJm7drrR`Ojn.s@!<)VQ9q"!b4hUp9"`4iadX/2DTOI)T;Y.)-bcI^q8me6X2s2Y-?LM-#S!U-H+rr_p,!5%(I -!Q-jH~> -!BpJTm/X-`mKEUjs1f;SoBlSYrU(*pbjOoB)Xd"nbjOoB)X$MgWQXZ12#s*7rrLN#rOraA]Xn3Y -^&XLd%__q0QOa#/!JJkZrsnJBY)$I5%Rb]PmJm47Ab3V=>q6k]r1*cfQHARp-N!H'ki(:Gc,[W2 -F?-4jR?NS`Is5mXJVfPYU8kN2_p$TbjQuO;JcE:\!ot$gmf*=LMTu/&RK,5#m/bd$J,~> -!BU8Qkl@:PmKEUjs1f;SoBlSYrU(*pbjOoB)Xd"nbjOoB)X$MgS]g7!1]X!6rrLN#rOraA]Xn3Y -^&XLd%__q0QOa#/!JJkZrsnJBY)$I5%Rb]PmJm47Ab3V=>q6k]r1*cfU -!B:&NirG&9mKEUjs1f;SoBlSYrU(*pbjOoB)Xd"nbjOoB)X$MgN6C5_1Bq6k]r1*cfXjuk>-N*W/mHETef[S3h -Im:NPYcFXoS!K2'SYW9j\%T`&dF[48lL=QHJcE:\!ot$gmf*=RUs8o@RK,/!irR%VJ,~> -!BpJTm/X-`mKLbO#A#!%m^?!VU+'^()$>N#KFE -!10#^^&XLd%fX0CAbOmY#jo$I6k1SP6G3*-!!)u3!k_&%U]3+Iq"4(Cl/gm[^4=MO`4rmkYH"Fl -R[&tmL4O_qEHHMXLQ7UgTr>0&SK5i!f%f -!BU8Qkl@:PmK@bNT(q!%m^?!VU+'^()$>N#KFE -!10#^^&XLd%fX0CAbOmY#jo$I6k1SP6G3*-!!)u3!k_&%U]3+Jq=aCJlfdHh`K&EobJqE4\?rH? -VP0QJPE1TTJV8l@Q("ACXKo@LUE7b3g>M,[o([e9VZ-ZeVXFHblBTWo!\FD>h!"jb3e.~> -!B:&NirG&9mK/bMrYg!%m^?!VU+'^()$>N#KFE -!10#^^&XLd%fX0CAbOmY#jo$I6k1SP6G3*-!!)u3!k_&%U]3+JqY0XPmd')uc(*J -!BpJTm/X-`mK3I)'=75s!!)uc%04W?m`QO:mJtK!m`QO3mJs60m/uPh!5@t&!H#CH^(Pl)%Y2:- -!(.!0^&UM*Dn`rrD:\^hrm>S9rOrI9^:jT]^&\)F!K4_6s$H\[p@@Y:k2P:Qf@/'ha2>[(\$N9= -Vk]lSR$<\kM1pM/H$++JGC+gkL5M"SQ?\LfWj&nB^r=IBe_8pAl0e0Barr]t8)!KcB!S0Da~> -!BU8Qkl@:PmK3I)'=75s!!)uc%04W?m`QO:mJtK!m`QO3mJrg$kl]u`!5@t&!H#CH^(Pl)%Y2:- -!(.!0^&UM*Dn`rrD:\^hrm>S9rOrI9^:jT]^&\)F!K4_6s$H_]p[dn@l/gp^gXt$'c-"&D^V%(a -Z*(+)UnF9HQBI;eLkL>2L5CnOPF%`0U5,;C[(3lea32iZg"t`Om-s]Drq??nr!W+Is.B;lX$5tO -!UZ&qrr]t8)!'K:!R<`V~> -!B:&NirG&9mK3I)'=75s!!)uc%04W?m`QO:mJtK!m`QO3mJr3hire0T!5@t&!H#CH^(Pl)%Y2:- -!(.!0^&UM*Dn`rrD:\^hrm>S9rOrI9^:jT]^&\)F!K4_6s$H_^q"=4HlfdKki8*,=eBuRba2Gg. -]=>8SYH4_#US+0HQ^!VqQ'e&4TqnTdXd5rs]tq\1cI1:thW!\_mdg)Jrq??nr!W+Is.B;lX$5tO -!Ul],rr]t8(Z4$.!Q-jH~> -!BpJTm/X-`mK*A%ZgdA_!<)i:!Hl*S -^'4SO^&Ym]!;sP3]liuI;#L._oC2/3k2YCUg=Og#c-")F^qI=f['6[4Vk]rVR[98$Nf&UFJUVog -EcQ>KI=[*/N0'9kS=l[VXK](A]YMJ,bg4bigY_&RlL+6:qYp6h!Rm%grrG$sJcDAB!rF"an,EFU -K$OAt;#kjqm/bd$J,~> -!BU8Qkl@:PmK*A%ZgdA_!<)i:!Hl*S -^'4SO^&Ym]!;sP3]liuI;#U7bo^_J;l/q$bhV6]5e'Q@^a2Gj0]XbJXZ*(.+VPBfTR[9;&O,SpL -Jq8W3N/s0gR@U"HVlQu+[CNrc_oKpFdF?h'hr -!B:&NirG&9mK*A%ZgdA_!<)i:!Hl*S -^'4SO^&Ym]!;sP3]liuI;#U7cp%._Am-3]pio&YIf[eO!cHOGO`59:&]"#2TZ*(1.Vkg&[SXZ"3 -P*(uqR[p+HVQ$Z#ZF.3S^;7b/bKeMbf@o'=j6#Umn+-/Hqu6?i!Ss[6rrG$sJcDAB!rF"an,EFY -T$I?;;#k[lirR%VJ,~> -!BpJTm/X-`mK!JbA!re&/jSo6lQ%At,rrIj`n,EFXJ'\,shZF,9g[,$m4b*~> -!BU8Qkl@:PmK!A!JY(PrrM\Mci4+)!s[90klK'jJ,~> -!B:&NirG&9mK!-4j)VPKoXSXPq2PE:rlQ^XG9TqeK`Wi`J1[(!TY^;7_+aNMiTdact& -gtq#Mjll$tn+-,FqYehA!MeW7rrH\rJcD>A!JY(PrrM_]ci4+)!s[*+irR%VJ,~> -!BpJTm/X-`mJsT0mJs6.m/g;gF79,1do`mH^'1cDV1G)qec,Vgr4WI;]Xn3Y^&XLd%fX0OA_Gkr -j5oOkn+-/Hr;NPm!R-ehrrJBrJcD>A!p^HanG`O\I*_foEr]7pm/bd$J,~> -!BU8Qkl@:PmJsT0mJrg"klOibF79,1do`mH^'1cDWfO"=ec,Vgr4WI;]Xn3Y^&XLd%fX0NB&2D* -k32.!nauPNr1s>nd@fS#!L75Is.95llOiIPrrMbMci4&f!*.b;!R<`V~> -!B:&NirG&9mJsT0mJr3firW*YF79,1do`mH^'1cDYar&`ec,Vgr4WI;]Xn3Y^&XLd%fX0NBB&"7 -l0Id,o(DbRr1s>nf<"'5!L75Is.95llOiIPrrMe]ci4&f!)hP2!Q-jH~> -!BpJTm/X,tmJs6.m/t6+%e/re"87C]RJ4E%R:q9Is80`bS`SK'!Hl*S^'ts=N#KFE!10#^^:q:' -R/[6dK&Gbj!Q?sJs.0/j@YXCP!VUfcrr_a#!5mOX!S0Da~> -!BU8Qkl@9dmJrg"kl\^$%e/re"87C]RJ4E%R:q9Is8:$"W9Dk5!Hl*S^'ts=N#KFE!10#^^:q:' -R/[6dOQ5I&!Q?sJs.0/j@YXCP!V_Dsrr_a#!5R=Q!R<`V~> -!B:&NirG%MmJr3fircmn%e/re"87C]RJ4E%R:q9Is8:97Zg66C!Hl*S^'ts=N#KFE!10#^^:q:' -R/[6dT',58!Q?sJs.0/j@YXCP!Vi#.rr_a#!5$tF!Q-jH~> -!BpJTm/X,tmJs6-m/fHOM=( -!BU8Qkl@9dmJrg!klO!JM=( -!B:&NirG%MmJr3eirV:BM=( -!BpJTm/X,tmJs6-m/sBh)u8e!"n:0caOp"Urri/3IA5u\rrW1$]^ri=]N>*!rrW%GkN2^E-Im\I -Sc8^SWU]uhqfL6c"8Nl9X4ck@eieN~> -!BU8Qkl@9dmJrg!kl[ja)u8e!"n:0caOp"Urri2;N3)C#rrW1$]^ri=]N>*!rrW(VlK/$H-Im\I -Sc8^SWU]uhqh*;r"8Nl9W7gD9c8pI~> -!B:&NirG%MmJr3eirc(W)u8e!"n:0caOp"Urri5DR^__>rrW1$]^ri=]N>*!rrW(em,e6J-Im\I -Sc8^SWU]uhr0,P."8Nl9UtOc/_`*)~> -!BpJTm/X,tmJs6-m/u]*!2%mC"SfWWV -!BU8Qkl@9dmJrg!kl^-!!2%mC"SornYO1-F!RbQN^&_fnQ2^m&Y3#Za -!B:&NirG%MmJr3eire9i!2%mC"T$<1\aS>R!RbQN^&_fnQ2^m.\E3_k -!BpJTm/X,tmJs6,m/r[T/,n-""S]HSVsW=?!lerfpV$^BBuZD;!r%'/k5PI9Fb0R_s8Q^$rrI-= -e,KOL.fbpgm/bd$J,~> -!BU8Qkl@9dmJrfukl[.M/,n-""SffjZ1$NK!lerfpV$^BBuZD;!r.ZAk5PI9Fb0R_s8Q^$rrI]M -e,KOL.fbgdklK'jJ,~> -!B:&NirG%MmJr3dirbDD/,n-""Sp0-]CF_W!lerfpV$^BBuZD;!r/2Rk5PI9Fb0R_s8Q^$rrJ8] -e,KOL.fb^airR%VJ,~> -!BpJTm/X,tmJs6,m/uPk!4:8U"ST9NWpegE!o-t25;@!OSoirrKMrJcD8?!q@ADo)A`4 -qpYQIZiD'/f^/^j4b*~> -!BU8Qkl@9dmJrfukl]ub!4:8U"S]WfZgloP!o-t25;@!PPo'rrKMrJcD8?!q@ADo)A`C -r6tZJZiD$*f]`F^3e.~> -!B:&NirG%MmJr3dire0W!4:8U"Sg!)^%1%[!o-t25;@!QDe8rrKMrJcD8?!q@ADo)A`S -r6tZJZiD$%f]*"M2h1~> -!BpJTm/X,tmJs6+m/hn?44=-3oX&tHnD=0O\8+6OLlQ^eDn(o/!qUa/kPkSE(4lLTrrTbRnalb] -GPKYe!]pC7fBiUi4b*~> -!BU8Qkl@9dmJrftklQD944=-3p:Q6jo%sBQ\8+6OLlQ^eDn(o/!q_?AkPkSE(4lLTrrTbRnalb] -LAB -!B:&NirG%MmJr3cirXZ044=-3pV`H6o\TTS\8+6OLlQ^eDn(o/!qhrRkPkSE(4lLTrrTbRnalb] -Q28u0!]pC2fAcnL2h1~> -!BpJTm/X,trrB%]!5?k\"S8mFYO^TN"f"iTb0&k*rrK4-k5PGtjamH$s8Q^&rrIE=eGfWb -!#+ADm/bd$J,~> -!BU8Qkl@9drrAV0kl]cT!5?k\"SK?_\Fe\Y"f"iTb0&k*rrKR@k5PGtjamH$s8Q^&rrIrMeGfWb -!#"/?klK'jJ,~> -!B:&NirG%MrrA"tirdpH!5?k\"ST^"_=c^c"f"iTb0&k*rrKmQk5PGtjamH$s8Q^&rrJJ]eGfWb -!#!r9irR%VJ,~> -!BpJTm/X,trrB%;m/hV76-oQ6nud>Eo\ofN8#M1C!q(F0kPkQO[=S@IrrV^4`:X'1I.Pkf!^Qg5 -f'NLh4b*~> -!BU8Qkl@9drrAV/klQ,16-oQ6o='Rfp#5oO8#M1C!q;*BkPkQO[=S@IrrV^4`:X'1MtGO!!^Qg3 -f'*4\3e.~> -!B:&NirG%MrrA"sirXB(6-oQ6otZs4p>Q#P8#M1C!qMcSkPkQO[=S@IrrV^4`:X'1Re>21!^Qg0 -f&HeK2h1~> -!BpJTm/X,trrB%;m/u5V!6!1_"RrL>[.WM[!ot$gL]7CO]BB1pFbPDHRf -&)Yt*!S0Da~> -!BU8Qkl@9drrAV/kl]ZN!6!1_"S/sW^%UOe!ot$gL]7CY_rq%#FbPDHRf -&)5\"!R<`V~> -!B:&NirG%MrrA"sirdjB!6!1_"S9?p`V8Hn!ot$gL]7CcbNJm+FbPDHRf% -bB4k!Q-jH~> -!BpJTm/X,trrB%:m/hD18Bh):m\tQBpZDJVLM)AA!pG(/kl1[[&EmFD4<8-!e_ -m/bd$J,~> -!BU8Qkl@9drrAV.klPo+8Bh):n?\"epu_SWLM)AA!pYaAkl1[[&Sn(%F>8-!_] -klK'jJ,~> -!B:&NirG%MrrA"rirX0"8Bh):o":C2pu_SWLM)AA!puHRkl1[[&an^[X@8-!VZ -irR%VJ,~> -!BpJTm/X,trrB%:m/u,P!6WLb"RW(6](kLh!@Z!BrrJ\.kl1\6-@u2brrV*mi:d0OL$I7h"3LTP -gstcmeieN~> -!BU8Qkl@9drrAV.kl]TI!6WLb"RiRP_>3 -!B:&NirG%MrrA"rirda=!6WLb"S''kanb0#!@Z!BrrKIRkl1\6-@u2brrV*mi:d0OT^UJ3"3LTP -e(*IZ_`*)~> -!BpJTm/X,trrB%9m/h/*:!*D1"jLZm=h!_iZ4 -eEm:f4b*~> -!BU8Qkl@9drrAV-klPZ$:!*D1"jQ0Qs#!_iZ2 -eEI"Z3e.~> -!B:&NirG%MrrA"qirWrq:!*D1"jU@$P3!_iZ0 -eDgSI2h1~> -!BpJTm/X,trrB%9m/u&I!6E7]"R2V'[f#Om!G@1?rrJD-kl1ZA`I\&WrrVsA_>!s1MWNIi"3:HI -g=5KjeieN~> -!BU8Qkl@9drrAV-kl]NB!6E7]"RE.C^ARBu!G@1?rrJh?kl1ZA`I\&WrrVsA_>!s1Qg!'$"3:HI -f@9$cc8pI~> -!B:&NirG%MrrA"qird[6!6E7]"R`^``r,6(!G@1?rrK7Qkl1ZA`I\&WrrVsA_>!s1V!HY4"3:HI -dF@1W_`*)~> -!BpJTm/X,trrB%8m/h8-7)o60kF[1;q=+Ccp(QM>rrUl/rosF`AX.iHR/[6(-2@98!K?'jrrPRg -ERX:UeieN~> -!BU8Qkl@9drrAV,klPc'7)o60lDff_qXFLdp(QM>rrV#ArosF`AX.iHR/[6(-2@98!L`*%rrPRg -Dq!qOc8pI~> -!B:&NirG%MrrA"pirX#s7)o60m'W;-qsaUep(QM>rrV2SrosF`AX.iHR/[6(-2@98!N,,5rrPRg -Ct%DF_`*)~> -!BpJTm/X,trrB%8m/u/T!5HMQ"Ql>*_"mR$!N&A -!BU8Qkl@9drrAV,kl]WM!5HMQ"R2qFa85B,!N&A -!B:&NirG%MrrA"pirdd@!5HMQ"REFacMR24!N&A -!BpJTm/X,trrB%7m/hV742_($jdpt;qXsjiqC&e'rrLN.l2Ldh97d,0rrV*mi;*BRP24dj!]pC/ -dd7(d4b*~> -!BU8Qkl@9drrAV+klQ,142_($kc'Q^qt9sjqC&e'rrL]?l2Ldh97d,0rrV*mi;*BRT&J?%!]pC- -dcgeX3e.~> -!B:&NirG%MrrA"oirXB(42_($la3/,qt9sjqC&e'rrLlQl2Ldh97d,0rrV*mi;*BRWo_n5!]pC* -dc1AG2h1~> -!BpJTm/X,trrB%7m/u>]!4KcE"Qc5)_#!g*!Kfp(rr`<#LYD%n!RiKKs-EZcKMhRF!L;Blrr]\0 -'B7I-!S0Da~> -!BU8Qkl@9drrAV+kl]cU!4KcE"R)hEa8>W2!Kfp(rr`<#Pht^*!RiKKs-EZcKMhRF!MSB'rr]\0 -'Ah1%!R<`V~> -!B:&NirG%MrrA"oirdpI!4KcE"REFacMRA9!Kfp(rr`<#U>kJ -!BpJTm/X,trrB%6m/hn?1Vj"njdgn;qYL3nlk\-&s8W*"b*M>m!qcp"JcD):!r+(WqYpS`f@g0* -1B<'Tm/bd$J,~> -!BU8Qkl@9drrAV*klQD91Vj"nkbsK^qtg -!B:&NirG%MrrA"nirXZ01Vj"nla*),qtg -!BpJTm/X,trrB%6m/uMe!2mU3"QZ,'_Ya92s(m8drr3&tJ`5no!>smKs-EZd`Z"%;rrJS=gA_8Q -!#FbFm/bd$J,~> -!BU8Qkl@9drrAV*kl]r]!2mU3"Qu_CaSYo8s(m8drr3&uO6,[,!>smKs-EZd`Z"%;rrK"MgA_8Q -!#FVBklK'jJ,~> -!B:&NirG%MrrA"nire*P!2mU3"R<=`ci!_@s(m8drr3&uS`oA=!>smKs-EZd`Z"%;rrKC]gA_8Q -!#=>;irR%VJ,~> -!BpJTm/X,trrB%5m/rIN,5AnP$07Y,_YaB5eJ@M&s8Dru_Og&m!BS)Ks- -!BU8Qkl@9drrAV)klZtH,5AnP$0S7Hanu, -!B:&NirG%MrrA"mirb2>,5AnP$0njed/ -!BpJTm/X,trrB%5m/uW&!04_l#3;;(_YZldJcGZJ!r79.li-ujTRm-.rrW*bJ,]HOo@\S_g%4&" -"-*@1lHno!eieN~> -!BU8Qkl@9drrAV)kl^&r!04_l#3VnDannVkJcGZJ!r@i@li-ujTRm-.rrW*bJ,]HOo@\kkg%4&" -"-*@0k0W>nc8pI~> -!B:&NirG%MrrA"mire3e!04_l#3rLad/6FsJcGZJ!rJGRli-ujTRm-.rrW*bJ,]HOo@]/"g%4&" -"-*@/i6^Kb_`*)~> -!BpJTm/X,trrB%4m/s9e'CNL4"QQ"W*qk0bqu6].VX+9^IY%N`rsn31P\t5XJ;9/8FD>^.ro3q[ -mLoT!cg:ba4b*~> -!BU8Qkl@9drrAV(kl[d_'CNL4"QlUo+819cqu6]6Yj;>hIY%N`rsn31P\t5XJ;9/8FD>^.ro3q[ -mLoStcfkJU3e.~> -!B:&NirG%MrrA"lirbtT'CNL4"R342+npQfqu6]>]'KCrIY%N`rsn31P\t5XJ;B59FD>^.ro3q[ -mLoSocf5&D2h1~> -!BpJTm/X,trrB%3m/fENFh7SVr[_l9_u##brVlrmHg^8#!ME\Ks-3NcY@NC$q7ZsEM/]ZYrrR -!BU8Qkl@9drrAV'klNsIFh7SVr[i2Ob5?hjrVlrnM=Bm3!ME\Ks-3NcY@NC$q7ZsEM/]ZYrrR -!B:&NirG%MrrA"kirV:BFh7SVr[rPfdJSRqrVlroR.BVD!ME\Ks-3NcY@NC$q7ZsEM/]ZYrrR -!BpJTm/X,trrB%3m/t*)#iN>p#I#u_j-tS;qgneHrrKF-m/I+'3e@ -!BU8Qkl@9drrAV'kl\O!#iN>p#I#u_k,+0]r.4nIrrKa@m/I+'3e@ -!B:&NirG%MrrA"kircal#iN>p#I#u_l*6f,r.4nIrrL$Qm/I+'3e@ -!BpJTm/X,trrB%2m/g5e=hOb9r\C_Wrrh>MJAh>9rr`;lHLpP(!TY)Ks-N`eqH:)n^&kQBqWIk[ -=TDFGm/bd$J,~> -!BU8Qkl@9drrAV&klOc`=hOb9r\C_WrrhG\Nm%?Orr`;mM=p99!TY)Ks-N`eqH:)n^&kQBqWIk[ -=TDCFklK'jJ,~> -!B:&NirG%MrrA"jirW'X=hOb9r\C_WrrhPjS^I@drr`;oR.fqI!TY)Ks-N`eqH:)n^&kQBqWIk[ -=TD=DirR%VJ,~> -!BpJTm/X,trrB%2m/tiC!Q2VN!jFHZr;QoZRXrETJc>bO[I*tqrX/=Ls-WfeF/euL!!)u3!!)u3 -!NC/(rr^.>#Lq#c!S0Da~> -!BU8Qkl@9drrAV&kl]9;!Q2VN!jFHZr;Qo]V2rgtJc>bX^$Yh$rX/=Ls-WfeF/euL!!)u3!!)u3 -!NC/(rr^.>#LL`[!R<`V~> -!B:&NirG%MrrA"jirdI0!Q2VN!jFHZr;Qo`Z(9;?Jc>bb`U3[,rX/=Ls-WfeF/euL!!)u3!!)u3 -!NC/(rr^.>#KtBP!Q-jH~> -!BpJTm/X,trrB%1m/qM31B"uf!rasZq>UTVR=W?TKDu#>HhZq-!@cKKs-`lffQdD0qu?c3!<'V3 -!;sP3GhD<]"8stTG0K=SeieN~> -!BU8Qkl@9drrAV%klZ#-1B"uf!rasZq>UTZV2rgtKDu#@MYQT=!@cKKs-`lffQdD0qu?c3!<'V3 -!;sP3GhD<]"8stTFNitMc8pI~> -!B:&NirG%MrrA"iira9$1B"uf!rasZq>UT]Yas5?KDu#BRJH7M!@cKKs-`lffQdD0qu?c3!<'V3 -!;sP3GhD<]"8stTEQmGD_`*)~> -!BpJTm/X,trrB%1m/uDh!1L\&!j=BYp\tBTR=*0VK`;(J^$Yh#9 -!BU8Qkl@9drrAV%kl]i_!1L\&!j=BYp\tBWV2N_"K`;(T`9mR*9 -!B:&NirG%MrrA"iire!S!1L\&!j=BYp\tB[YaX/BK`;(^bjGE29 -!BpJTm/X,trrB%0m/rmZ(@T*>!q@ANo`#'\U4C/XLAq>;J,A[6!H!mKs-`leE;R?L!<0\]4b*~> -!BU8Qkl@9drrAV$kl[CT(@T*>!q@ANo`#'^XH(F"LAq>>NVi/D!H!mKs-`leE;R?L!<0\ -!B:&NirG%MrrA"hirbVJ(@T*>!q@ANo`#'`\"1nCLAq>@S,D^S!H!mKs-`leE;R?L!<0\ -!BpJTm/X,trrB%/m/fm(igkS6q1ntNS&Ogq!K_,Ks-`leE;R?L!<0\ -!BU8Qkl@9drrAV#klNjFEP_\TB(>m(jf"0YqM5(OVT\E-!K_,Ks-`leE;R?L!<0\ -!B:&NirG%MrrA"girV1?EP_\TB(>m(kd-c(qM5(OZ-r(?!K_,Ks-`leE;R?L!<0\ -!BpJTm/X,trrB%/m/t0,!nY?i!kKKDn,EOPTRFKIM>mY7KDk9=!OYILs-`lfI(K6i!!*#4$ilW\% -__q0QO^aD\pWlE"4mSV_92-GeieN~> -!BU8Qkl@9drrAV#kl\X%!nY?i!kKKDn,EOSX,FmjM>mY;Oo=bK!OYILs-`lfI(K6i!!*#4$ilW\% -__q0QO^aD\pWlE"4mSV^<5[@c8pI~> -!B:&NirG%MrrA"gircgo!nY?i!kKKDn,EOV[@5;7M>mY>TDe6Y!OYILs-`lfI(K6i!!*#4$ilW\% -__q0QO^aD\pWlE"4mSV\]Wq5_`*)~> -!BpJTm/X,trrB%.m/pbs5Q8Y%!q@ADm/I4PUO9TFMZ3^@c0tZ5fcu(JRK! -!BU8Qkl@9drrAV"klY;n5Q8Y%!q@ADm/I4SY):$hMZ3^LddR2:fcu(JRK! -!B:&NirG%MrrA"fir`Qe5Q8Y%!q@ADm/I4U\=(G5MZ3^Xf^Jh@fcu(JRK!2h1~> -!BpJTm/X,trrB%.m/u/Z!2.=2s(:Nq"RDt4[.K=W!nW;.nG`Rd#l9,PRK!;/WUIP%WH7G+"/#W/ -h9#$beieN~> -!BU8Qkl@9drrAV"kl]WS!2.=2s(:Nq"RWIO^%I?a!Sj"0rrW$&qLS[7rrI2?n%Jh%F6ro/TE#_\ -alriO3e.~> -!B:&NirG%MrrA"firddF!2.=2s(:Nq"Ripi`V,8j!T9dBrrW$&qLS[7rrI2?n%Jh%F6ro/TE#\U -al2h1~> -!BpJTm/X,trrB%-m/r^U(%''A!lQ2NkPk\PWdD#ANW0$ -!BU8Qkl@9drrAV!kl[1N(%''A!lQ2NkPk\R[#)BcNW0$Ig$eqA,M@YJRK!?b=g@M2!jPo)mJd:U -'`aN?klK'jJ,~> -!B:&NirG%MrrA"eirbDD(%''A!lQ2NkPk\T]pQ\0NW0$VhXCIF,M@YJRK!?b=g@M2!jPo)mJd:U -'`aB;irR%VJ,~> -!BpJTm/X,trrB%-m/u];!+s=P!r+(WjSoAPXa7);O8f7-ORN2M8@=$KR/[6^ -!BU8Qkl@9drrAV!kl^-2!+s=P!r+(WjSoAR[u%N_O8f72SaZRZ8@=$KR/[6^ -!B:&NirG%MrrA"eire:%!+s=P!r+(WjSoAS^mMk,O8f77WUKif8@=$KR/[6^ -!BpJTm/X,trrB%,m/tE6!li@^!JF>/rrho!H_oqgrrW1Rh!k=EClj5JQN%&jE/D:(^&u'*E3JU- -"3(BHaN*ZKeieN~> -!BU8Qkl@9drrAUukl\m.!li@^!JF>/rrhu,MQc<-rrW1`i:-aIClj5JQN%&jE/D:(^&u'*E3JU- -"3(BG`Q.3Dc8pI~> -!B:&NirG%MrrA"dird(#!li@^!JF>/rri#5RCV^IrrW1mjRE0MClj5JQN%&jE/D:(^&u'*E3JU- -"3(BG^rPI9_`*)~> -!BpJTm/X,trrB%+m/qA/0E0/p!oOdNhu;FD>^. -rp0Rdr\"7l`pEfX4b*~> -!BU8Qkl@9drrAUtklYl)0E0/p!oOdNhu;FD>^. -rp0Rdr\"7j`p!NL3e.~> -!B:&NirG%MrrA"cira,u0E0/p!oOdNhu;FD>^. -rp0Rdr\"7g`o@*;2h1~> -!BpJTm/X,trrB%+m/uMl!/A\s!E"O*rri29JX5#SrrW+Kj73-M[7GlKOoGUVfuUt^oB6,UL&`7W -`pEfX4b*~> -!BU8Qkl@9drrAUtkl]rc!/A\s!E"O*rri5@O.tKqrrW+Yk4/HP[7GlKOoGUVfuUt^oB6,UL&`4R -`p!NL3e.~> -!B:&NirG%MrrA"cire*V!/A\s!E"O*rri5GSZUn9rrW+hl1+cS[7GlKOoGUVfuUt^oB6,UL&`1K -`o@*;2h1~> -!BpJTm/X,trrB%*m/sNm#h[E%!l-,WgA_?Sb(l&,rg*Qb^n:/s!SJ]Ks+14@rr^mZ!O'K0!S0Da~> -!BU8Qkl@9drrAUskl\!f#h[E%!l-,WgA_ -!B:&NirG%MrrA"birc4\#h[E%!l-,WgA_ -!BpJTm/X,trrB%)m/pSn4T3V+!p:KAfDc$Rd>`_$rg<]eq0_JurrW$&qLSZts7H -!BU8Qkl@9drrAUrklY)h4T3V+!p:KAfDc!Qes_ZJQi@-`MsU$7!r<3!JcC<$o`#$l49/R'klK'j -J,~> -!B:&NirG%MrrA"air`B`4T3V+!p:KAfDc!QgS^UpQi@-`Rd]hI!r<3!JcC<$o`#$l49/L%irR%V -J,~> -!BpJTm/X,trrB%)m/u2^!0be0!rPB7e,KR'Tn'oQRK!;uVt'cf,M@YJJcGBB"-W^%hSed^eieN~> -!BU8Qkl@9drrAUrkl]WV!0be0!rPB7e,KR,X,b3qRK!<'Z17hp,M@YJJcGBB"-W^%g;N4Vc8pI~> -!B:&NirG%MrrA"airdgJ!0be0!rPB7e,KR0[[k_>RK! -!BpJTm/X,trrB%(m/s*`%H,Y6!e3Q7dJj@0U3j38S,WQ_HggP*!D'VLs+14Crr_0g!2II!!S0Da~> -!BU8Qkl@9drrAUqkl[RY%H,Y6!e3Q7dJj@3XGXX\S,WQ`M=L0:!D'VLs+14Crr_0g!2.6o!R<`V~> -!B:&NirG%MrrA"`irbeO%H,Y6!e3Q7dJj@6\!b2,S,WQaR.KnK!D'VLs+14Crr_0g!1^se!Q-jH~> -!BpJTm/X,trrB%'m/g)a7ah;<`>[pbrrh_lHD]kqrrK@-o)A`,OFdF_s7QBn7K?9%m/bd$J,~> -!BU8Qkl@9drrAUpklOT[7ah;<`>[pbrrhf"M6Q98rrK[?o)A`,OFdF_s7QBn7K?3#klK'jJ,~> -!B:&NirG%MrrA"_irVmS7ah;<`>[pbrrhl-R(DXSrrL!Qo)A`,OFdF_s7QBn7K?-!irR%VJ,~> -!BpJTm/X,trrB%'m/u&S!1MF;!p:K@bPq_=]7-1&T)Sl]HM$h/!Kq2Ks+14Drr\\i&_b+h!S0Da~> -!BU8Qkl@9drrAUpkl]NK!1MF;!p:K@bPq_>_Mk>KT)Sl_M>$Q@!Kq2Ks+14Drr\\i&D+e`!R<`V~> -!B:&NirG%MrrA"_ird[?!1MF;!p:K@bPq_?b+#WqT)SlaR.p4P!Kq2Ks+14Drr\\i&CJAT!Q-jH~> -!BpJTm/X,trrB%&m/rjY%Go\9!rPB7aSuG@aG5Purh08lW42Bu!P(RKs+14Err_*e!1^mm!S0Da~> -!BU8Qkl@9drrAUokl[=R%Go\9!rPB7aSuD@cBORETDnqt^[qI+\O1rJJcGKE"5XIeRDJ+gc8pI~> -!B:&NirG%MrrA"^irbPH%Go\9!rPB7aSuD@e=r\lTDnr)a7K<3\O1rJJcGKE"5XIeQ,2J]_`*)~> -!BpJTm/X,trrB%%m/p2c55jC=$Ll]haOp"^s*mB5`r?5Ae=(s%oqMHfl[8L"rrM$tJcC<$q#:Hp -4oeHqm/bd$J,~> -!BU8Qkl@9drrAUnklX]]55jC=$Ll]haOp"^s*mB5`W$(oVN8[hUAk;^MYZoE!T4rKs+14Frr`3` -!)LDp!R<`V~> -!B:&NirG%MrrA"]ir`!U55jC=$Ll]haOp"^s*mB5`W$(tZ(9,5UAk;`RJQRU!T4rKs+14Frr`3` -!):8h!Q-jH~> -!BpJTm/X,trrB%%m/u)Z!0#t<%Jm&BBlnl_M1B\^?5;J:rrhDZHE-2(rrJh.o`#!k$hJrLJcGQG -",m3rgVE1WeieN~> -!BU8Qkl@9drrAUnkl]QS!0#t<%Jm&BBlnl_M1B\^?5;J:rrhMgM6uTDrrK4@o`#!k$hJrLJcGQG -",m3rfYH_Pc8pI~> -!B:&NirG%MrrA"]ird^F!0#t<%Jm&BBlnl_M1B\^?5;J:rrhVtR(_m^rrKRQo`#!k$hJrLJcGQG -",m3qd_OlD_`*)~> -!BpJTm/X,trrB%$m/s9f#hA);"87C]RJ4DtR:q9I_Z'f1\:0gsrhf\sjF@(!rrFgtJcC<$qYpZJ -#Q^m=m/bd$J,~> -!BU8Qkl@9drrAUmkl[d`#hA);"87C]RJ4DtR:q9I_Z'c2^l5&CV>gV[NVrGK!AM`Ks+14Hrr^dW -!N*Wr!R<`V~> -!B:&NirG%MrrA"\irbtU#hA);"87C]RJ4DtR:q9I_Z'c3aIBBkV>gV^SG`$Z!AM`Ks+14Hrr^dW -!MR9g!Q-jH~> -!BpJTm/X,trrB%#m/pYp./N0-!n18Vo=b:2=OY+d"oHH#L;`ncrrJP.o`"qnV1JYts82fuqBu>M -^?ksP4b*~> -!BU8Qkl@9drrAUlklY/j./N0-!n18Vo=b:2=OY+d"oQ`7Pfrp$rrJt@o`"qnV1JYts82fuqBu>K -^?G[D3e.~> -!B:&NirG%MrrA"[ir`Hb./N0-!n18Vo=b:2=OY+d"oQrJU!`_7rrK@Qo`"qnV1JYts82fuqBu>I -^>f732h1~> -!BpJTm/X,trrB%#m/u>g!-mc.!khpRn\,( -!BU8Qkl@9drrAUlkl]c^!-mc.!khpRn\,( -!B:&NirG%MrrA"[irdpQ!-mc.!khpRn\,( -!BpJTm/X,trrB%"m/sd"!kmq"!T@MT^&_^%^AeB3]6KanrN#r!P0Wb#!MrkKs+14Jrr]q9"Lc#2 -!S0Da~> -!BU8Qkl@9drrAUkkl\6p!kmq"!T@MT^&_^%^AeB4_M=r?ri?&"T%*H5!MrkKs+14Jrr]q9"LGf+ -!R<`V~> -!B:&NirG%MrrA"ZircIf!kmq"!T@MT^&_^%^AeB5b*K9gri?&"WnI(F!MrkKs+14Jrr]q9"L#N! -!Q-jH~> -!BpJTm/X,trrB%!m/qS5)sckj!H#CH^&nAL^&[f>!P*'[rrr;BO+P"8XoAIRMuNGM!R*6Ks+14K -rr_R+!-l0D!S0Da~> -!BU8Qkl@9drrAUjklZ)/)sckj!H#CH^&nAL^&[f>!P*'[rrr;HS<1Y\XoAFUR.^I[bV4VJJcG]K -"7$m+G.d&?c8pI~> -!B:&NirG%MrrA"Yira?&)sckj!H#CH^&nAL^&[f>!P*'[rrr>OW1M3*XoAFZV=jihbV4VJJcG]K -"7$m+F1gN6_`*)~> -!BpJTm/X,trrB%!m0)]6!)NU^rrMh)rOr@6^:jU=^&_g=])MonW-P,oYQ"\'MUqM$!qQfuJcC<$ -s8N6$:B3B>]^5aN4b*~> -!BU8Qkl@9drrAUjklg-.!)NU^rrMh)rOr@6^:jU=^&_g=])MoqZA>XBY5\Nhg\1XKo*bMJs+14M -rri -!B:&NirG%MrrA"Yirn9u!)NU^rrMh)rOr@6^:jU=^&_g=])Mot]9g"gY5\NuhtI'Oo*bMJs+14M -rri -!BpJTm/X,trrB$um/t`I!1!!P!RZT!^&nAL^&\/H#64p'^:jRN:]A'/K[I=0"noceKuNhlrrLE. -p&>%4i.:oZs8W*$PlMBC]BoXM4b*~> -!BU8Qkl@9drrAUikl]3B!1!!P!RZT!^&nAL^&\/H#64p'^:jRN:]A'/K[I=0"o$*%PK`j-rrLT? -p&>%4i.:oZs8W*$PlMB@]BK@A3e.~> -!B:&NirG%MrrA"Xird@5!1!!P!RZT!^&nAL^&\/H#64p'^:jRN:]A'/K[I=0"o-E;T[NY@rrLfQ -p&>%4i.:oZs8W*$PlM?9]Aiq02h1~> -!BpJTm/X,trrB$tm/rs\#1r>D!RZT!^((.U])fX[>m^Q5^0M'G!rfn7K[I7."od5HGc9Q,rrW.P -h=gjL6b.dJJc>lQf*25I]'TOL4b*~> -!BU8Qkl@9drrAUhkl[IV#1r>D!RZT!^((.U])fX[>m^Q5^0M'G!rfn7K[I4-"Q$)4ZK/@l!reAA -pAY.\\Ujd3rriAR"ot4*klK'jJ,~> -!B:&NirG%MrrA"Wirb\L#1r>D!RZT!^((.U])fX[>m^Q5^0M'G!rfn7K[I4-"QHbR]B?O#!rekS -pAY.\\Ujd3rriAR"ot(&irR%VJ,~> -!BpJTm/X,trrB$sm/pVo.J*'/!VU+'^()$>N#KFE"dkMS^'0mg!<0\5AbNJ1"nK?\M8JqnrrL-. -pAY/.P(EXarr_jA!+!/&!S0Da~> -!BU8Qkl@9drrAUgklY,i.J*'/!VU+'^()$>N#KFE"dkMS^'0mg!<0\5AbNJ1"nTZqQH8d-rrL?? -pAY/.P(EXarr_jA!*d"u!R<`V~> -!B:&NirG%MrrA"Vir`Ea.J*'/!VU+'^()$>N#KFE"dkMS^'0mg!<0\5AbNJ1"ng'3UsJeCrrLTR -pAY/.P(EXarr_jA!*Qkm!Q-jH~> -!BpJTm/X,trrB$sm/uE!!*\jk!H#CH^(Pl)%Y2:-:'F;k^.ni*!5?1XC9[^BrnF2nU>,[WrrW(I -jnJcUMKFFLJc>gU!%R'?m/bd$J,~> -!BU8Qkl@9drrAUgkl]im!*\jk!H#CH^(Pl)%Y2:-:'F;k^.ni*!5?1XC9RX?hlV^:hm`Uer/Kq7 -rrJ"!JcC<$"'P[Ri48(Qc8pI~> -!B:&NirG%MrrA"Vire!`!*\jk!H#CH^(Pl)%Y2:-:'F;k^.ni*!5?1XCTma@j0tAaj1#$ir1**I -rrJ"!JcC<$"'P[Qg:?5E_`*)~> -!BpJTm/X,trrB$rm/tH=!133T!T@MT^'%JPP.g(`rrr,5MM/Y5\c2]EU%eQfT3m0LK)Yq>!"?uZ -m/bd$J,~> -!BU8Qkl@9drrAUfkl\p6!133T!T@MT^'%M_T#Bs!rrr/=Q]f8X\c2]LXS;_qT3m0LK)Yq>!"?lW -klK'jJ,~> -!B:&NirG%MrrA"Uird(*!133T!T@MT^'%PmWm'k7rrr2EUnGp(\c2]T[eKe&T3m0LK)Yq>!"?ZQ -irR%VJ,~> -!BpJTm/X,trrB$qm/rjY#gMl=!khpRn\,@D?G66fX+>r-gAJ5U"lZD*S'h/HrrVtClhLJ\Zq>oL -KDu%u#QUC(m/bd$J,~> -!BU8Qkl@9drrAUekl[=R#gMl=!khpRn\,@D?G69k[?$K\hYj_Z"lutFVUk[XrrW"RmeHe_Zq>oL -KDu%u#QU:%klK'jJ,~> -!B:&NirG%MrrA"TirbPH#gMl=!khpRn\,@D?G69p^7Cq5ir-.^"mEUcZ.o2hrrW"anG*"aZq>oL -KDu%u#QU.!irR%VJ,~> -!BpJTm/X,trrB$pm/pet,Ob.%!n18Vo=b:2=O[3J#3EFWH(iITZMt+(b*@@Uik>?m[]0'%!Qd3M -s+LCSmiqgA[d=+H4b*~> -!BU8Qkl@9drrAUdklY;n,Ob.%!n18Vo=b:2=O[3J#3`mmLo\ttZMt+)d%Q?*jh:Zp^U*_8!Qd3M -s+LCSmiqg?[cmh<3e.~> -!B:&NirG%MrrA"Sir`Tf,Ob.%!n18Vo=b:2=O[3J#4'C0QaYQ@ZMt+)eub@Tke6usa1V3I!Qd3M -s+LCSmiqg=[c7D+2h1~> -!BpJTm/X,trrB$pm0)T+!(m1Zrr_tJBUSV/". -!BU8Qkl@9drrAUdklg$"!(m1Zrr_tJBUSV/".g0&rrqo.P*O#X_#FK/M=UKB -!T+uMs+UIUr^d)Cj0n1Qc8pI~> -!B:&NirG%MrrA"Sirn0j!(m1Zrr_tJBUSV/".E_`*)~> -!BpJTm/X,trrB$om/toM!/0e?%Jm&BBlnl_ML]e_DlNU)rs/GPX+5o.g\nMZ#6*GWHC<+V_Z'Y? -Z2+D#oEp0LL&V7.!"[Ygm/bd$J,~> -!BU8Qkl@9drrAUckl]?E!/0e?%Jm&BBlnl_ML]e_DlNU)rs/GT[#U?\hu0n]"lZbDUt#:YrrKX@ -q>UKf$A&52rr[oS&(7lM!R<`V~> -!B:&NirG%MrrA"RirdO9!/0e?%Jm&BBlnl_ML]e_DlNU)rs/JZ^7Cq5j8H=a"m*@`YhK#lrrKsQ -q>UKf$A&52rr[oS%aDEA!Q-jH~> -!BpJTm/X,trrB$nm/s -!BU8Qkl@9drrAUbkl[gb!k%@o"n:0c^tA/Brs%Z%RYe,ppU'r(qU2*kYi3P#!qD-Aq>UI&oR[$t -rr]Y1!iNEi!R<`V~> -!B:&NirG%MrrA"Qirc"W!k%@o"n:0c^tA/Brs%c0VjOsGppC&)qq/'8]&gm1!qVfSq>UI&oR[$t -rr]Y1!i!'^!Q-jH~> -!BpJTm/X,trrB$mm/q_9&DGD/#4]a(GEf]'[/U -!BU8Qkl@9drrAUaklZ53&DGD/#4p*;L7lEL[/U="`0$.plGii)Z,-89!?^3Ms+p[Wg(471ZfqM9 -3e.~> -!B:&NirG%MrrA"PiraK*&DGD/#5$BMQ)r-r[/U=$bFbBFmDf/,]#jdJ!?^3Ms+p[Wg(47.Zf;)( -2h1~> -!BpJTm/X,trrB$mm0)cM!%[W`rs/MEWd05uf(ufS"m*%?Mnec'rrVG4q>1*l29CFLM>m_L.f`<1 -Zg@eE4b*~> -!BU8Qkl@9drrAUaklg3D!%[W`rs/MK["sjQg\\DY"mERYR)\^=rrVPFqYL3m29CFLM>m_L.f`9, -ZfqM93e.~> -!B:&NirG%MrrA"Pirn@6!%[W`rs/MQ]pGA+htsh]"ma'rV9SYSrrVVWqYL3m29CFLM>m_L.f`3$ -Zf;)(2h1~> -!BpJTm/X,trrB$lm0)Ds!)rmsQHAmErrJb.qYpRg["877rri="!%?j4 -m/bd$J,~> -!BU8Qkl@9drrAU`klfij!)rm -!B:&NirG%MrrA"Oirn!]!)rm -!BpJTm/X,trrB$km/tNB!.r2i#PQNAI>>)^r3u\1qp:mXU!iqcrrV52r;6Kp?_;oLMZ3d1!"[8X -m/bd$J,~> -!BU8Qkl@9drrAU_kl\s:!.r2i#PZcQMj:m2rO;e2qphX"X4R?rrrV>Cr;6Kp?_;oLMZ3d1!"[,T -klK'jJ,~> -!B:&NirG%MrrA"Nird..!.r2i#Pd#aR\I[ZrO;e2r7eQD[bUl-rrVGUr;6Kp?_;oLMZ3d1!"QlN -irR%VJ,~> -!BpJTm/X,trrB$jm/sNm!NO';#QE_nO*R> -!BU8Qkl@9drrAU^kl\!f!NO';#QEi#Ru"&ho=+`(q95dnZ/#<)rrJn?qu6\=MLkecrr]8%!N`Ni -!R<`V~> -!B:&NirG%MrrA"Mirc4\!NO';#QEr.W0amAoXFi)qU;d;]&EV7rrK=Rqu6\=MLkecrr]8%!N<6_ -!Q-jH~> -!BpJTm/X,trrB$im/r"A$-L'`#P6-4HAo8hrODk3nA(*4X5*^'rrUr0rqucsMfXILN;j"&#loX^ -m/bd$J,~> -!BU8Qkl@9drrAU]klZM;$-L'`#PHKGM4)* -!B:&NirG%MrrA"Lirac2$-L'`#PQcXR&7mcrj_t4o?O;'^?#:BrrV5SrqucsMfXILN;j"&#loIY -irR%VJ,~> -!BpJTm/X,trrB$hm/pYp)<8I2#Q_2p7rr_:!!+)hq -!S0Da~> -!BU8Qkl@9drrAU\klY2k)<8I2#Q -!B:&NirG%MrrA"Kir`Hb)<8I2#QJ!NFiOrrJj!JcC`0"617!>-?ld -_`*)~> -!BpJTm/X,trrB$hm0)W9!&=,Xrs/#4S9U.,jSl^i"mNRQK!OIhrrLT-r;Qf.7=kK!rrhsK!'TPK -m/bd$J,~> -!BU8Qkl@9drrAU\klg'0!&=,Xrs&#;Vh^h[kICNqm(ejI]B@fG!SEh -!B:&NirG%MrrA"Kirn7$!&=,Xrs&)DZBqQ5lF?itm`;,o`9PtS!SsXNrrKZ!JcCc1"S=DK45[4$ -!Q-jH~> -!BpJTm/X,trrB$gm/u,g!)^9+#Q*/WKmfc@o""c(jg9\q[clHF!re&/rVloF/qO%_rrZ*u,M]Eg -!S0Da~> -!BU8Qkl@9drrAU[kl]T`!)^9+#Q3DfPDlZloXXu*ke3+B^ZsMP!LDO>rrLJ!JcCc1"&T%CfraK> -c8pI~> -!B:&NirG%MrrA"JirdaS!)^9+#Q3PsTUNCBost)+lc#Kia6hR[!MeWPrrLJ!JcCc1"&T%Be#hX2 -_`*)~> -!BpJTm/X,trrB$fm/tKB!-#@G#OTL%HA\u[qRZ\1iNRih]Be8P!R-f,rrM:!JcCf2")n5Ob,jt2 -eieN~> -!BU8Qkl@9drrAUZkl\p9!-#@G#Ofm9M3kg/qmue2jggD;_X?4Z!RdY>rrM:!JcCf2")n5N`iSD* -c8pI~> -!B:&NirG%MrrA"Iird+.!-#@G#P$6LR&%UXqmue2ke`mdb4+3d!SFLPrrM:!JcCf2")n5N_5uYt -_`*)~> -!BpJTm/X,trrB$em/sg%!04Dc#lW\lP'<8,jSlgl#6*G[I?))2hu -!BU8Qkl@9drrAUYkl\9r!04Dc#QEc"Sq`uYkI^`uro(;ER`=mTrrW.\j8T&[r!!"Ls,m<`NW96i -X6BZ13e.~> -!B:&NirG%MrrA"HircLh!04Dc#QEo.Wg9g3lF['#roLn`Vp4eirrW.jk5PA^r!!"Ls,m<`NW96e -X5a5u2h1~> -!BpJTm/X,trrB$dm/rgY!iiL)#l)lML4#W3kl/9q#6!8SH]l;;iVrqsSGiHg([$ALP5bWa!Wedj -m/bd$J,~> -!BU8Qkl@9drrAUXkl[:R!iiL)#Pm#\PDZB_lb*6%rnar -!B:&NirG%MrrA"GirbMH!iiL)#Pm2jTp`=9mC`H'ro1SYWmLFtrrLNQrVlm7kCNYrrr]8&!L0VE -!Q-jH~> -!BpJTm/X,trrB$cm/qn>#f<_D#Ofj6Jpj?3l+R*$r77]iQ,iOXrrW(Hk5PA]0$o1LPQ(a%#QTFT -m/bd$J,~> -!BU8Qkl@9drrAUWklZD8#f<_D#P$3HOGp6am(NE'rS"H2U!<;lrrW(Vl2L\`0$o1LPQ(a%#QT@R -klK'jJ,~> -!B:&NirG%MrrA"FiraW.#f<_D#P6QYSsm+9m_/W)rSP/PXjd%*rrW+fm/I"c0$o1LPQ(a%#QT4N -irR%VJ,~> -!BpJTm/X,trrB$bm/pl!'%X)_#k#j3JU!p,kPi6r#5ciBGF?8Dk5PIqU]18o7Ce!LPlCj:&ccI@ -m/bd$J,~> -!BU8Qkl@9drrAUVklYAp'%X)_#Op*DO,'jZlG!9&qq%m'V8rJqrrL'@rr3!f\UjdFrr^gb!+Mnk -!R<`V~> -!B:&NirG%MrrA"Eir`Zh'%X)_#P-HVSX6h4m(WK(r7n`HYg31/rrL -!BpJTm/X,trrB$bm0)]I!$:O*rs7u4XG(qf]%Ztqrs&DAST^IEp?DS]pNu<-s'2:Ls- -!BU8Qkl@9drrAUVklg-@!$:O*rs8&<[ZZHB_;>%(rs&GHW.h(ppZ_\^pknP?s'2:Ls- -!B:&NirG%MrrA"Eirn:2!$:O*rs8,E^S$ptal<04rs&GNZ^%fHq!%e_q3gdQs'2:Ls- -!BpJTm/X,trrB$am0)T,!%R?2rs85EZ&s3gXjHCMrs&8CSTpUGp?V_^[&a6,F,PVLQN%*S.KD3d -VsON94b*~> -!BU8Qkl@9drrAUUklg'$!%R?2rs88K\t+PC[ajf^rs&;JW/%4rpZqh_]sRh>F,PVLQN%*S.KD0` -Vs+6-3e.~> -!B:&NirG%MrrA"Dirn3l!%R?2rs8;Q_lB!!^Y81nrs&;OZ^7rJq!7q``P2BPF,PVLQN%*S.KD-Y -VrIfq2h1~> -!BpJTm/X,trrB$`m0)5p!&jDArsJ\]^7Tt%Q*JX#rl"g@ps#@SR`b?lrrr"?o)FYhJcD):"S+GN -.c$uh!S0Da~> -!BU8Qkl@9drrAUTklf]h!&jDArsAYa`N"uTTt8b@_uBr:e#8&!d.cu."n[ZCs,:uLs-N`gnhpIs -g8=*8c8pI~> -!B:&NirG%MrrA"Cirmj[!&jDArsAYdc*X%.Xi&i\_uBr:fX$pLf(e\5"ne8Us,:uLs-N`gnhpIr -e>D7,_`*)~> -!BpJTm/X,trrB$_m0(u_!(6OPrsJAL]:ORqQ*e]or5Sa@ps#@SR`b?nrs#U2s-6*sk(3Q$rri*a -!$Kjhm/bd$J,~> -!BU8Qkl@9drrAUSklfEW!(6OPrsJGS_PrTLTtSh8rPnjAq9l3sVU5),rs#pDs-6*sk(3Q$rri*a -!$K^dklK'jJ,~> -!B:&NirG%MrrA"BirmUK!(6OPrsJJXb-[_'Xi8lUrPnjAq:N$?Z.A^>rs$6Vs-6*sk(3Q$rri*a -!$BI^irR%VJ,~> -!BpJTm/X,trrB$^m0(]O!)`W]rsSYS]:t1(KUfEnjSR(!#5HH6GaceLoD],u8R6@hLNm0E\:O[O -rri3r!#X"Wm/bd$J,~> -!BU8Qkl@9drrAURklf-G!)`W]rsS\Y_QB/WOf,k?kPNC$#5Q]GLSiGnoD]-"9jMdlLNm0E\:O[O -rri3r!#WkSklK'jJ,~> -!B:&NirG%MrrA"Airm=;!)`W]rsS_^b."11T -!BpJTm/X,trrB$]m/t9=!+(oi%K5P=\Y4k&JX*4JdH1/Jrs&8CSTpUHp\=aigff[4^&j6sgk#Ku -rrZR-&]CI3!S0Da~> -!BU8Qkl@9drrAUQkl\a5!+(oi%K>_F_5ilTO.inuf')qSrs&;IW/%7tq"Xjjgff[4^&j6sgk#Ku -rrZR-&Ab.+!R<`V~> -!B:&NirG%MrrA"@ircq*!+(oi%K>eMagRt/SZTQKg["^\rs&;OZ^7rKq"Xjjgff[4^&j6sgk#Ku -rrZR-&A4du!Q-jH~> -!BpJTm/X,trrB$\m0's,!,DLprt,.qfYk"bM0=<3U9VS`iUZusrs&8CSTpXIp\b$m`bE-\^&ku^ -`e"/brri=9!"-92m/bd$J,~> -!BU8Qkl@9drrAUPkleF%!,DLprt#(rh93@-QA(9jXLcO*jn$q##5Q]GLSiJor;Qi -!B:&NirG%MrrA"?irlUo!,DLprt#(tiR,NKUQh4K\&6SJkk3C(#5QoXQa,0;r;Qic!Q-jH~> -!BpJTm/X,trrB$[m/s^#!,m\n'(F]$]r[`_Huah%T<>fIe`#rogA_KRba`pIbP2%bAb3V:A^Z/0 -V#LO8!!fm)m/bd$J,~> -!BU8Qkl@9drrAUOkl\0q!,m\n'(Xu/`3uS3Mh-t]Wjfmkg#_`%gA_KSd\hktdJ3aiAb3V:A^Z/0 -V#LO8!!fd&klK'jJ,~> -!B:&NirG%MrrA">irc@f!,m\n'(k8;bJ1?[RZX2A[D9u9hWXP/gA_KTfWpjKfD,BoAb3V:A^Z/0 -V#LO8!!fU!irR%VJ,~> -!BpJTm/X,trrB$Zm/s?n!-Nkm)#imWcbQlaRZ2i=H%qKPVQ[PJc.:ho=b:= -=8mdNVZ-a@!!fNsm/bd$J,~> -!BU8Qkl@9drrAUNkl[gf!-Nkm)#is]eAo5+V4*ErLm+F.YdhNldbEjLp&=(Q#5HWELS[bYo=b:= -=8mdNVZ-a@!!]?oklK'jJ,~> -!B:&NirG%MrrA"=irc%\!-Nkm)#j$cg -!BpJTm/X,trrB$Ym/s3i!.0:sp\u6,l.sh1^U:/;R#crJEd3.nQ(P"\]uJFQj6?48nc&[bRYLdT -!s$'L!;X>0MnaiCVuHjG!!] -!BU8Qkl@9drrAUMkl[[b!.0:sp\u3,lf$LB`kJj^UmmO)JqoDSTrPE1`6?cgk3Vd1rrVteL]+ph -!5?/Iq7Zlf^OcE_rr[TJ#,@gT!R<`V~> -!B:&NirG%MrrA"2)l0e97rrW"jL]+ph -!5?/Iq7Zlf^OcE_rr[TJ"eVFI!Q-jH~> -!BpJTm/X,trrB$Xm/s$b!.oe%li/1.p[.%qd)Wi*WLoH6L3mo^I"[HCS><6n]Yr%DguRemFM7Xe -!s$'L!;X>0]leo+W;csO!!K!em/bd$J,~> -!BU8Qkl@9drrAULkl[L[!.oe%lMi%&n)rQXc,@6#WhGfEML^AYI -!5?/Iq7ZmCFb0Rkrr[iQ"J24L!R<`V~> -!B:&NirG%MrrA";irb_Q!.oe%lMi%&n`o,ge'#\B[&p0uR?3W$TVefr\A#o)dFd=:lL=Lh^&>YI -!5?/Iq7ZmCFb0Rkrr[iQ"IbqB!Q-jH~> -!BpJTm/X,trrB$Wm/rj\!.oe%h#@u_o'58ie'#Y@ZE'aiPDb*A8c6:)!5?/Irk8F6"],-3!-!Mh -WW*'P!!Aa^m/bd$J,~> -!BU8Qkl@9drrAUKkl[@V!.oe%h#@u`o^1euf[7jY] -!B:&NirG%MrrA":irbSL!.oe%h#@u`p$_/*h:L&s`4i^cX/2GV;Z+62!5?/Irk8F6"],-3!-!Mh -WW*'P!!AOXirR%VJ,~> -!BpJTm/X,trrB$Vm/s'a!.0:sbl7Z^r4WI;]Xn3Y^0M'G!rfn6E.S%hrr[TJ!hu4P!S0Da~> -!BU8Qkl@9drrAUJkl[OZ!.0:sbl7Z^r4WI;]Xn3Y^0M'G!rfn6E.S%hrr[TJ!hZ"I!R<`V~> -!B:&NirG%MrrA"9irbbP!.0:sbl7Z^r4WI;]Xn3Y^0M'G!rfn6E.S%hrr[TJ!h5_?!Q-jH~> -!BpJTm/X,trrB$Um/rj]!-Nkmc2Rfe^&>YS)2sLm^:jc -!BU8Qkl@9drrAUIkl[@W!-Nkmc2Rfe^&>YS)2sLm^:jc -!B:&NirG%MrrA"8irbSM!-Nkmc2Rfe^&>YS)2sLm^:jc -!BpJTm/X,trrB$Tm0'*e!,qjfs3L]G^Pi')%=ScsJA/`m"\\p1^5KaWs/l;(rbhc@Tpk?LeieN~> -!BU8Qkl@9drrAUHkldR^!,qjfs3L]G^Pi')%=ScsJA/`m"\\p1^5KaWs/l;(rbhc@SsnmEc8pI~> -!B:&NirG%MrrA"7irkeS!,qjfs3L]G^Pi')%=ScsJA/`m"\\p1^5KaWs/l;(rbhc?R[W7;_`*)~> -!BpJTm/X,trrB$Sm0'9k!,DLas3UcIr`?c(^&krKrdk*Prri=9!!fBhm/bd$J,~> -!BU8Qkl@9drrAUGkldac!,DLas3UcIr`?c(^&krKrdk*Prri=9!!]3dklK'jJ,~> -!B:&NirG%MrrA"6irktY!,DLas3UcIr`?c(^&krKrdk*Prri=9!!]'`irR%VJ,~> -!BpJTm/X,trrB$Rm0'Ep!*9#Ks3UcHdUi$a!G0]1s/uA)r)Ne'WgN/SeieN~> -!BU8Qkl@9drrAUFkldmi!*9#Ks3UcHdUi$a!G0]1s/uA)r)Ne'VjQ]Lc8pI~> -!B:&NirG%MrrA"5irl+_!*9#Ks3UcHdUi$a!G0]1s/uA)r)Ne'UR:'B_`*)~> -!BpJTm/X,trrB$Qm0'Wr!)`NBs3UcI`bE-\^&ku^`e"/mrri*o!!KNmm/bd$J,~> -!BU8Qkl@9drrAUEkle*k!)`NBs3UcI`bE-\^&ku^`e"/mrri*o!!KEjklK'jJ,~> -!B:&NirG%MrrA"4irl:`!)`NBs3UcI`bE-\^&ku^`e"/mrri*o!!K6eirR%VJ,~> -!BpJTm/X,trrB$Pm0's3!(6=.s3UcIgff[4^&j6sgk#L.rrhm[!"lc-m/bd$J,~> -!BU8Qkl@9drrAUDkleF+!(6=.s3UcIgff[4^&j6sgk#L.rrhm[!"cT)klK'jJ,~> -!B:&NirG%MrrA"3irlUu!(6=.s3UcIgff[4^&j6sgk#L.rrhm[!"cE$irR%VJ,~> -!BpJTm/X,trrB$Om0(?E!&j1ps3L]O\8P`!LlZdfDn(AuXoAOj2?4T4Q0eV'4b*~> -!BU8Qkl@9drrAUCkleg>!&j1ps3L]O\8P`!LlZdfDn(AuXoAOj2?4T1Q0A=p3e.~> -!B:&NirG%MrrA"2irm"2!&j1ps3L]O\8P`!LlZdfDn(AuXoAOj2?4Q+Q/_n_2h1~> -!BpJTm/X,trrB$Nm0(]W!%R&\s3:QGk/tO&JcDeN"QV$4+O65=!S0Da~> -!BU8Qkl@9drrAUBklf-O!%R&\s3:QGk/tO&JcDeN"QV$4+Nfr5!R<`V~> -!B:&NirG%MrrA"1irm=C!%R&\s3:QGk/tO&JcDeN"QV$4+2sK)!Q-jH~> -!BpJTm/X,trrB$Mm0(ui!$0mHs+13$s7QBph&QJFes#J%eieN~> -!BU8Qkl@9drrAUAklfE`!$0mHs+13$s7QBph&QJEdZ`nrc8pI~> -!B:&NirG%MrrA"0irmUT!$0mHs+13$s7QBph&QJDc'./g_`*)~> -!BpJTm/X,trrB$Lm0)H)!#!/"s+13$s7cNr_@ci(j-&d1eieN~> -!BU8Qkl@9drrAU@klflu!#!/"s+13$s7cNr_@ci'hid4)c8pI~> -!B:&NirG%MrrA"/irn$h!#!/"s+13$s7cNr_@ci&fok@r_`*)~> -!BpJTm/X,trrB$Lm02n=9)o6tJcC<$JcGQG"KD_-9BD<'!S0Da~> -!BU8Qkl@9drrAU@klp>18cT-sJcC<$JcGQG"KD_-9&Yos!R<`V~> -!B:&NirG%MrrA"/is"Jt8,rpqJcC<$JcGQG"KD_-8DB9e!Q-jH~> -!BpJTm/X,trrB$LmJlPVl=9krNe.4]s+14Irre>`!+bAVm/bd$J,~> -!BU8Qkl@9drrAU@l2TuNk$e;lNe.4]s+14Irre>`!+P)PklK'jJ,~> -!B:&NirG%MrrA"/j8\-Bi*ZNdNe.4]s+14Irre>`!+=`HirR%VJ,~> -!BpJTm/X,trrB$LmJZDTJH5airIP!"s+14Mrri:>!!.Y2m/bd$J,~> -!BU8Qkl@9drrAU@l2BiLIfTOgrIP!"s+14Mrri:>!!.S0klK'jJ,~> -!B:&NirG%MrrA"/j8J!@HN=+crIP!"s+14Mrri:>!!.G,irR%VJ,~> -!BpJTm/X,trrB$LmJQ>SRg/phoR[$ns+11QoM5GlRuQe9eieN~> -!BU8Qkl@9drrAU@l29cKQj*OdoR[$ns+11QoM5GkR#U>2c8pI~> -!B:&NirG%MrrA"/j8@p?PQh+`oR[$ns+11QoM5GkP`=](_`*)~> -!BpJTm/X,trrB$LmJH8RZNgIbj+75]s+C=Sj"UN=Z]+8PeieN~> -!BU8Qkl@9drrAU@l20]JYQk._j+75]s+C=Sj"UN=Y`.fIc8pI~> -!B:&NirG%MrrA"/j87j>Ws8VZj+75]s+C=Sj"UN=X,Q'>_`*)~> -!BpJTm/X,trrB$LmJ?2Qas-m(b(9SDs+UIUar(1(b)>WfeieN~> -!BU8Qkl@9drrAU@l2'WI`ZkI$b(9SDs+UIUar(1(`f''^c8pI~> -!B:&NirG%MrrA"/j8.d=_'/jsb(9SDs+UIUar(1'_2I=S_`*)~> -!BpJTm/X,trrB$LmJ6,PgcYWDWe(2$s+gUWWX/YggktJ"eieN~> -!BU8Qkl@9drrAU@l1sQHffT6@We(2$s+gUWWX/Yffo#"pc8pI~> -!B:&NirG%MrrA"/j8%^ -!BpJTm/X,trrB$LmJ-&Ok["5iO+I=^s,$aYNr]5ek_\[-eieN~> -!BU8Qkl@9drrAU@l1jKGjBV`dO+I=^s,$aYNr]5djGE+%c8pI~> -!B:&NirG%MrrA"/j7qX;hc^!\O+I=^s,$aYNr]5ahhg@o_`*)~> -!BpJTm/X,trrB$LmIooMKED3Qnq$gls,I$]nl#MjKSSpqeieN~> -!BU8Qkl@9drrAU@l1X?EJcc!Onq$gls,I$]nl#MjJqrRkc8pI~> -!B:&NirG%MrrA"/j7_L9Iff[Lnq$gls,I$]nl#MjIu!%b_`*)~> -!BpJTm/X,trrB$LmIfiLYR:F]g4B9Ts,[0_g+*.2Y_MNGeieN~> -!BU8Qkl@9drrAU@l1O9DXU>+Zg4B9Ts,[0_g+*.2XbQ'@c8pI~> -!B:&NirG%MrrA"/j7VF8W!`SUg4B9Ts,[0_g+*.2W.s=5_`*)~> -!BpJTm/X,trrB$LmI]cKb:!?%[=S@/s,m -!BU8Qkl@9drrAU@l1F3Ca!Uiu[=S@/s,m -!B:&NirG%MrrA"/j7M@7_Bo6o[=S@/s,m -!BpJTm/X,trrB$LmIT]Ki_9CSK`6Q&JcD#8"oa/V!);I+m/bd$J,~> -!BU8Qkl@9drrAU@l1=-ChFmnNK`6Q&JcD#8"oa/V!)27&klK'jJ,~> -!B:&NirG%MrrA"/j7D:7fLc,FK`6Q&JcD#8"oa/V!(tmsirR%VJ,~> -!BpJTm/X,trrB$LmIKWJm!Jj78G%K5JcD):"nY=c!ds?em/bd$J,~> -!BU8Qkl@9drrAU@l14'Bk^!:18G%K5JcD):"nY=c!da'_klK'jJ,~> -!B:&NirG%MrrA"/j7;46icbG(8G%K5JcD):"nY=c!dEXVirR%VJ,~> -!BpJTm/X,trrB$LmI9KGZ4?p[c%5nGs-`libp*3!Z@VBDeieN~> -!BU8Qkl@9drrAU@l1!p?Y7CUXc%5nGs-`libp*3!YCYp=c8pI~> -!B:&NirG%MrrA"/j7)(3WX]"Rc%5nGs-`libp*2uWe'12_`*)~> -!BpJTm/X,trrB$LmI0EFc7f5(Q\#0fs-s#kQO!RFc@P?amFFFN~> -!BU8Qkl@9drrAU@l0mj>b:`i$Q\#0fs-s#kQO!REbCSmZl-;>?~> -!B:&NirG%MrrA"/j6u"2`\%5sQ\#0fs-s#kQO!RD`e!.Oj23g+~> -!BpJTm/X,trrB$LmI'?Fk@+Dk>4[=FJcDAB"nPmt!+P,BmJlPSeieN~> -!BU8Qkl@9drrAU@l0dd>j'Vie>4[=FJcDAB"nPmt!+=i -!B:&NirG%MrrA"/j6kq2h-L']>4[=FJcDAB"nPmt!++K4j8\-?_`*)~> -!BpJTm/X,trrB$LmHj3CS.#B -!BU8Qkl@9drrAU@l0RX;R1''9eUdaOs.TGqeK"VuR=XW$klK'jJ,~> -!B:&NirG%MrrA"/j6Ye/PmdX5eUdaOs.TGqeK"VuQ%@uoirR%VJ,~> -!BpJTm/X,trrB$LmHa-CaXR8sQ2Z@7JcDSH"oabn!%Q*AmJQ>PeieN~> -!BU8Qkl@9drrAU@l0IR;`[LloQ2Z@7JcDSH"oabn!%Gp=l29cHc8pI~> -!B:&NirG%MrrA"/j6P_/^aK0hQ2Z@7JcDSH"oabn!%>X6j8@p<_`*)~> -!BpJTm/X,trrB$LmHX'Bl>ck):[ -!BU8Qkl@9drrAU@l0@L:k&:;#:[ -!B:&NirG%MrrA"/j6GY.i,&Go:[ -!BpJTm/X,trrB$LmHEp?T+CuA]n-37s/H#$]c-q_T7QD*m/bd$J,~> -!BU8Qkl@9drrAU@l0.@7SIbc?]n-37s/H#$]c-q_SUp&$klK'jJ,~> -!B:&NirG%MrrA"/j65M+R1B9:]n-37s/H#$]c-q^R=XDoirR%VJ,~> -!BpJTm/X,trrB$LmH -!BU8Qkl@9drrAU@l0%:7c8Ye*Gl!!kJcDkP"o -!B:&NirG%MrrA"/j6,G+a>O#"Gl!!kJcDkP"o -!BpJTm/X,trrB$LmH3d>l?EF31Y%'VJcDqR"k>C/"F03_mJ#uKeieN~> -!BU8Qkl@9drrAU@l/q46k&pk-1Y%'VJcDqR"k>C/"ErpYl1aECc8pI~> -!B:&NirG%MrrA"/j6#A*i,]#$1Y%'VJcDqR"k>C/"EWLPj7hR7_`*)~> -!BpJTm/X,trrB$LmH!X-JcE(V"oXAc!$BF9mIfiIeieN~> -!BU8Qkl@9drrAU@l/_(4a;t-JcE(V"oXAc!$944l1O9Ac8pI~> -!B:&NirG%MrrA"/j5f5(_]8^_N;\>-JcE(V"oXAc!$/t.j7VF5_`*)~> -!BpJTm/X,trrB$LmGmR;iEcNb52LkjJcE.X"l;EC!FF`9mI]cHeieN~> -!BU8Qkl@9drrAU@l/V"3h-9s\52LkjJcE.X"l;EC!F4H3l1F3@c8pI~> -!B:&NirG%MrrA"/j5]/'f3/1T52LkjJcE.X"l;EC!F"*+j7M@4_`*)~> -!BpJTm/X,trrB$LmG[F9W##FCRf7m -!BU8Qkl@9drrAU@l/Ck1VAB4ARf7mc8pI~> -!B:&NirG%MrrA"/j5K#%Tb[V;Rf7m -!BpJTm/X,trrB$LmGR@8gJIqN6fWatJcE@^"lhrM!)_L%mIBQEeieN~> -!BU8Qkl@9drrAU@l/:e0fM;JI6fWatJcE@^"lhrM!)M6ul1+!=c8pI~> -!B:&NirG%MrrA"/j5Ar$dS0]A6fWatJcE@^"lhrM!):mmj72.1_`*)~> -!BpJTm/X,trrB$LmG@46S.Yf2PPp(4JcELb"oXVo!"tfQmI0ECeieN~> -!BU8Qkl@9drrAU@l/(Y.R1TE.PPp(4JcELb"oXVo!"kWMl0mj;c8pI~> -!B:&NirG%MrrA"/j5/f"Pn=!*PPp(4JcELb"oXVo!"kKIj6u"/_`*)~> -!BpJTm/X,trrB$LmG7.5fMDPJ4P55bJcERd"kYp;!)V=!mI'?BeieN~> -!BU8Qkl@9drrAU@l.tS-e4ouD4P55bJcERd"kYp;!)D$pl0dd:c8pI~> -!B:&NirG%MrrA"/j5&`!cV+<=4P55bJcERd"kYp;!)1^ij6kq._`*)~> -!BpJTm/X,trrB$LmG%"3UDNt:LAQQ%JcE^h"oF#[!#VJ^mHj3@eieN~> -!BU8Qkl@9drrAU@l.bG+TGRY7LAQQ%JcE^h"oF#[!#VA[l0RX8c8pI~> -!B:&NirG%MrrA"/j4iStS/2/2LAQQ%JcE^h"oF#[!#M/Vj6Ye,_`*)~> -!BpJTm/X,trrB$LmFpq2hHU']/]rYEJcEdj"j/Cs!F4K4mHa-?eieN~> -!BU8Qkl@9drrAU@l.YA*g0+LW/]rYEJcEdj"j/Cs!F"3.l0IR7c8pI~> -!B:&NirG%MrrA"/j4`MseQ;hP/]rYEJcEdj"j/Cs!Edm'j6P_+_`*)~> -!BpJTm/X,trrB$LmF^e0^)m=VB'k0LJcEpn"mon'!$Aq+mHO!=eieN~> -!BU8Qkl@9drrAU@l.G5(],gqRB'k0LJcEpn"mon'!$8b'l07F5c8pI~> -!B:&NirG%MrrA"/j4NAq[N,>LB'k0LJcEpn"mon'!$/M!j6>S)_`*)~> -!BpJTm/X,trrB$LmFU_0j`1P*'qkPWs+13rrs&Iq'`\GYjalg_m/bd$J,~> -!BU8Qkl@9drrAU@l.>/(iG\r#'qkPWs+13rrs&Iq'`\DViIU7WklK'jJ,~> -!B:&NirG%MrrA"/j4E;qgMI)o'qkPWs+13rrs&Iq'`\DSgO\DKirR%VJ,~> -!BpJTm/X,trrB$LmFCS-a?0G&2qW]]JcF-t"kYa6!'J>RmH3d:eieN~> -!BU8Qkl@9drrAU@l.,#%`B+&"2qW]]JcF-t"kYa6!'A/Nl/q42c8pI~> -!B:&NirG%MrrA"/j43/n^cDGq2qW]]JcF-t"kYa6!'7oHj6#A&_`*)~> -!BpJTm/X,trrB$LmF:M-m$JLf"`a!^s+14#rs%q3"TT:)m"+Qcm/bd$J,~> -!BU8Qkl@9drrAU@l."r%k`lk_"`a!^s+14#rs%q3"TT:&k^i![klK'jJ,~> -!B:&NirG%MrrA"/j4*)nifOoT"`a!^s+14#rs%q3"TT7!idp.OirR%VJ,~> -!BpJTm/X,trrB$LmF(A+jCJ>l(7P2Qs+14'rs&Fj('"AHjFQ^Ym/bd$J,~> -!BU8Qkl@9drrAU@l-ef#i*ucf(7P2Qs+14'rs&Fj('"AFi.:.QklK'jJ,~> -!B:&NirG%MrrA"/j3lrlg0k!^(7P2Qs+14'rs&Fj('"ADg4A;EirR%VJ,~> -!BpJTm/X,trrB$LmEk5(_)_Pr1;e\CJcFL)"iE(q!'7rImG[F5eieN~> -!BU8Qkl@9drrAU@l-SYu^,Z/n1;e\CJcFL)"iE(q!'.cEl/Ck-c8pI~> -!B:&NirG%MrrA"/j3Zfi\MsQh1;e\CJcFL)"iE(q!'%N?j5K#!_`*)~> -!BpJTm/X,trrB$LmEY)&SK%V0DX`5WJcFX-"n6C0!$%P\mGI:3eieN~> -!BU8Qkl@9drrAU@l-AMsRi;>-DX`5WJcFX-"n6C0!#qDYl/1_+c8pI~> -!B:&NirG%MrrA"/j3HZgQQ#o)DX`5WJcFX-"n6C0!#q8Uj58kt_`*)~> -!BpJTm/X,trrB$LmEP#&jE:h0#^,Qds+141rs%n6#QP0SjFQ^Tm/bd$J,~> -!BU8Qkl@9drrAU@l-8Gsi,f8*#^,Qds+141rs%n6#QP0Qi.:.LklK'jJ,~> -!B:&NirG%MrrA"/j3?Tgg2RE!#^,Qds+141rs%n6#QP0Ng4A;@irR%VJ,~> -!BpJTm/X,trrB$LmE=l$d8U,H'9;j=s+145rs&7Y'*&&4d=L]?m/bd$J,~> -!BU8Qkl@9drrAU@l-&;qc;O`D'9;j=s+145rs&7Y'*&&3c@P68klK'jJ,~> -!B:&NirG%MrrA"/j3-HeaADs<'9;j=s+145rs&7Y'*&&1aFWC,irR%VJ,~> -!BpJTm/X,trrB$LmE+`"^HDPs,,bEks+149rs&J#+ohU+^Obe+m/bd$J,~> -!BU8Qkl@9drrAU@l,i/o]0$&n,,bEks+149rs&J#+ohU*]7K5#klK'jJ,~> -!B:&NirG%MrrA"/j2p -!BpJTm/X,trrB$LmDnStW$q]H1:Dc6JcG-;"h$/d!%FjtmF^e,eieN~> -!BU8Qkl@9drrAU@l,W#lVC2EE1:Dc6JcG-;"h$/d!%=^ql.G5$c8pI~> -!B:&NirG%MrrA"/j2^0`TdKg?1:Dc6JcG-;"h$/d!%4Ikj4NAm_`*)~> -!BpJTm/X,trrB$LmDeMtl]E"a!'@rHs+14?rs$5"!!!jul[eHTm/bd$J,~> -!BU8Qkl@9drrAU@l,MrlkDpG[!'@rHs+14?rs$5"!!!jskCMmLklK'jJ,~> -!B:&NirG%MrrA"/j2U*`iJSKP!'@rHs+14?rs$5"!!!gniIU%@irR%VJ,~> -!BpJTm/X,trrB$LmDSArjb"3H!(=nZs+14Crs$P4!!![bjalgLm/bd$J,~> -!BU8Qkl@9drrAU@l,;fjiIMXB!(=nZs+14Crs$P4!!![`iIU7DklK'jJ,~> -!B:&NirG%MrrA"/j2Bs^gO9e9!(=nZs+14Crs$P4!!![]gO\D8irR%VJ,~> -!BpJTm/X,trrB$LmDA5pid219!*J$-s+14Grs%7\!!!OVidpLGm/bd$J,~> -!BU8Qkl@9drrAU@l,)ZhhK]V3!*J$-s+14Grs%7\!!!OThLXq?klK'jJ,~> -!B:&NirG%MrrA"/j20g\fQI`)!*J$-s+14Grs%7\!!!LPfR`)3irR%VJ,~> -!BpJTm/X,trrB$LmD/)nh/Nf&!(b%Zs+14Krs$D4!!!CHh1=t@m/bd$J,~> -!BU8Qkl@9drrAU@l+lNfg2@?!!(b%Zs+14Krs$D4!!!CFg4AM9klK'jJ,~> -!B:&NirG%MrrA"/j1s[Ze8,Km!(b%Zs+14Krs$D4!!!CCe:HZ-irR%VJ,~> -!BpJTm/X,trrB$LmCqrlg275t!(">Ms+11S^-M`!$?"RKmEb/#eieN~> -!BU8Qkl@9drrAU@l+ZBdenbZn!(">Ms+11S^-M`!$>e:El-JSpc8pI~> -!B:&NirG%MrrA"/j1aOXctWmf!(">Ms+11S^-M`!$>Rq=j3Q`d_`*)~> -!BpJTm/X,trrB$LmC_fkgiX,-!$@a1JcCN*#QC58!!!OPgk"k;m/bd$J,~> -!BU8Qkl@9drrAU@l+H6cflIZ(!$@a1JcCN*#QC58!!!ONfn&D4klK'jJ,~> -!B:&NirG%MrrA"/j1OCWdr5cs!$@a1JcCN*#QC58!!!LJdt-Q(irR%VJ,~> -!BpJTm/X,trrB$LmCMZihg6":!%X];JcCZ.#PjuB!!![Zhgt1 -!BU8Qkl@9drrAU@l+6*agNaD3!%X];JcCZ.#PjuB!!!XWgO\V4klK'jJ,~> -!B:&NirG%MrrA"/j1=7UeohZ+!%X];JcCZ.#PjuB!!!XTeq)l)irR%VJ,~> -!BpJTm/X,trrB$LmC;Ngl&-/S!#pdaJcCf2#OmQh!!!Xil%/6Dm/bd$J,~> -!BU8Qkl@9drrAU@l+#s_jbXQL!#pdaJcCf2#OmQh!!!Ufjal[ -!B:&NirG%MrrA"/j1++Shh;XB!#pdaJcCf2#OmQh!!!Ubhgsh0irR%VJ,~> -!BpJTm/X,trrB$LmC)Beka*e"!!n#BJcCr6#Om-I!!"O9k^i-Am/bd$J,~> -!BU8Qkl@9drrAU@l*fg]jHM+o!!n#BJcCr6#Om-I!!"L5jFQR9klK'jJ,~> -!B:&NirG%MrrA"/j0mtQhiT>f!!n#BJcCr6#Om-I!!"I1hgsh.irR%VJ,~> -!BpJTm/X,trrB$LmBl6cm&N;M!!?*4JcD):#JO%;!!#3`m"+QCm/bd$J,~> -!BU8Qkl@9drrAU@l*T[[kbpWE!!?*4JcD):#JO%;!!#0\k^i!;klK'jJ,~> -!B:&NirG%MrrA"/j0[hOihSX9!!?*4JcD):#JO%;!!#*Vidp./irR%VJ,~> -!BpJTm/X,trrB$LmBQ$`^K(I;!%jZ4JcD;@#PFN;!!!.&^Obdhm/bd$J,~> -!BU8Qkl@9drrAU@l*9IX]2\t6!%jZ4JcD;@#PFN;!!!.%]7K4`klK'jJ,~> -!B:&NirG%MrrA"/j0@VL[o*>/!%jZ4JcD;@#PFN;!!!."[t3SVirR%VJ,~> -!BpJTm/X,trrB$LmB>m^fQ\55!!dH+JcDGD#O$(2!!!j\fR`G*m/bd$J,~> -!BU8Qkl@9drrAU@l*'=Ve92Z/!!dH+JcDGD#O$(2!!!jZe:Hl"klK'jJ,~> -!B:&NirG%MrrA"/j0.JJcZ9m&!!dH+JcDGD#O$(2!!!gVc[k,lirR%VJ,~> -!BpJTm/X,trrB$LmB,a]kaOF0!!,B`pjrICrs8Ct5lgrc24Nf\mCqrgeieN~> -!BU8Qkl@9drrAU@l)j1UjHqb(!!,B`pjrICrs8Ct5lgrc1mm?Tl+ZB_c8pI~> -!B:&NirG%MrrA"/j/q>Ihions!!,B`pjrICrs8Ct5lgrc1R-dJj1aOS_`*)~> -!BpJTm/X,trrB$LmAfOY^Kh*F!#9V/JcDeN#MF26!!!:1^Obdam/bd$J,~> -!BU8Qkl@9drrAU@l)NtQ]3>O@!#9V/JcDeN#MF26!!!:/]7K4YklK'jJ,~> -!B:&NirG%MrrA"/j/V,E[oit:!#9V/JcDeN#MF26!!!:-[t3SOirR%VJ,~> -!BpJTm/X,trrB$LmATCRi/K>f!!56Qo7?qHrrVe_48o3]/WJ\>mCDTbeieN~> -!BU8Qkl@9drrAU@l)7l+-$Zc8pI~> -!B:&NirG%MrrA"/j/Cu>f7tmU!!56Qo7?qHrrVe_48o3].u2`-j141N_`*)~> -!BpJTm/X,trrB$LmA91U]NkjE!")rArIP!Xrs8S7>7(?1$=1;qmC)B_eieN~> -!BU8Qkl@9drrAU@l)!VM\Q]C@!")rArIP!Xrs8S7>7(?1$ -!B:&NirG%MrrA"/j/(cAZrm_9!")rArIP!Xrs8S7>7(?1$ -!BpJTm/X,trrB$LmA'%SiflM*!!!UcmXbDMrs8%I&HDe34-\`UmBl6]eieN~> -!BU8Qkl@9drrAU@l(dJKhNBo#!!!UcmXbDMrs8%I&HDe33g/?Nl*T[Uc8pI~> -!B:&NirG%MrrA"/j.kW?fT%rm!!!UcmXbDMrs8%I&HDe33KDaCj0[hI_`*)~> -!BpJTm/X,trrB$Lm@`hJcZgT3!!4^)gO]C@rrUr./H,VN+F)4`mBQ$ZeieN~> -!BU8Qkl@9drrAU@l(I8Bb]Y-.!!4^)gO]C@rrUr./H,VN+Ekt[l*9IRc8pI~> -!B:&NirG%MrrA"/j.PE6a)`@%!!4^)gO]C@rrUr./H,VN+*5JRj0@VF_`*)~> -!BpJTm/X,trrB$Lm@EVG[;-*J!!5$;j+76NrrV5?2?!RW$#?r"mB5gWeieN~> -!BU8Qkl@9drrAU@l(.&?Z>'^F!!5$;j+76NrrV5?2?!RW$#6bsl)s7Oc8pI~> -!B:&NirG%MrrA"/j.533Y%J(?!!5$;j+76NrrV5?2?!RW$"pDlj0%DC_`*)~> -!BpJTm/X,trrB$Lm@3JLkbqMk!!!$ZM;!O\c2S+(M)YM9!"Du-k^i-&m/bd$J,~> -!BU8Qkl@9drrAU@l'poDjJGod!!!$ZM;!O\c2S+(M)YM9!"Dr*jFQQsklK'jJ,~> -!B:&NirG%MrrA"/j.#'8hk -!BpJTm/X,trrB$Lm?m8CkFkZXrW!$OIEqhCs4.,Orm#pCrW!$,:SHs&mA]IReieN~> -!BU8Qkl@9drrAU@l'U];j.8sOrW!$OIEqhCs4.,Orm#pCrW!$,9qLBrl)EnJc8pI~> -!B:&NirG%MrrA"/j-\j/h3ptCrW!$OIEqhCs4.,Orm#pCrW!$,9:F[fj/M&>_`*)~> -!BpJTm/X,trrB$Lm?R&@jJ#ZdrW!$BC:3ees4dPUpU+`XrW!$3 -!BU8Qkl@9drrAU@l':K8i1F![rW!$BC:3ees4dPUpU+`XrW!$2 -!B:&NirG%MrrA"/j-AX,g7(tNrW!$BC:3ees4dPUpU+`XrW!$2;OcBkj/1i;_`*)~> -!BpJTm/X,trrB$Lm?6i=kcJ81rW!$,8sJ1`s5Et[hNUV=rW!$;@BJaEmA'%LeieN~> -!BU8Qkl@9drrAU@l&t95jJlT)rW!$,8sJ1`s5Et[hNUV=rW!$;@&i:=l(dJDc8pI~> -!B:&NirG%MrrA"/j-&F)hkjZqrW!$,8sJ1`s5Et[hNUV=rW!$:?)HM1j.kW8_`*)~> -!BpJTm/X,trrB$Lm>gQ9^3244rW!$UD6`\`s69Oco -!BU8Qkl@9drrAU@l&P!1]6#_.rW!$UD6`\`s69Oco -!B:&NirG%MrrA"/j,W.%[W*r%rW!$UD6`\`s69Oco -!BpJTm/X,trrB$Lm>L?6fTf8DrW!'(3./L9JcG9?"Sf`Z3!B3\!tS4nfR`F[m/bd$J,~> -!BU8Qkl@9drrAU@l&4d.e< -!B:&NirG%MrrA"/j,;q"c]:a0rW!'(3./L9JcG9?"Sf`Z3!B3\!tJ"cc[k,HirR%VJ,~> -!BpJTm/X,trrB$Lm>('2\T^":rW!'.6%6H -!BU8Qkl@9drrAU@l%eL*[WOP5rW!'.6%6H -!B:&NirG%MrrA"/j+lXsZ#V`*rW!'.6%6H -!BpJTm/X,trrB$Lm=aj0ii$TB!WE'%"#Y,'pjrGJponcr"9&9'!@qo`idpK^m/bd$J,~> -!BU8Qkl@9drrAU@l%J:(hPOs9!WE'%"#Y,'pjrGJponcr"9&9'!@hc[hLXpVklK'jJ,~> -!B:&NirG%MrrA"/j+QFqfV)k*!WE'%"#Y,'pjrGJponcr"9&9'!@_TRfR`(JirR%VJ,~> -!BpJTm/X,trrB$Lm=FX.mFn=M1'RUV" -!BU8Qkl@9drrAU@l%/(&l.;SB0a7LU" -!B:&NirG%MrrA"/j+64oj3aB/0Eh=S" -!BpJTm/X,trrB$Lm=F[&m0)RSG";f8!!NBa?]VtmQ2_$Y^Q2__!Wk(2oZm/bd$J,~> -!BU8Qkl@9drrAU@l%/*sklg"HF@QN5!!NBa?]VtmQ2_$Y^Q2__!W -!B:&NirG%MrrA"/j+67girn/8ECC$/!!NBa?]VtmQ2_$Y^Q2__!W -!BpJTm/X,trrB$Lm=F["m02grQ!uBMqu?mB:Pc($r1X,or7%d':ETK7"U-PgQ,i3Am>:32eieN~> -!BU8Qkl@9drrAU@l%/*oklp7gP@-!Hqu?mB:Pc($r1X,or7%d':ETK7"U-MdPJlX8l&"X*c8pI~> -!B:&NirG%MrrA"/j+67cis"DVO'XC@qu?mB:Pc($r1X,or7%d':ETK7"U$D`O2'Y)j,)ds_`*)~> -!BpJTm/X,trrB$Lm=FZrm02gbNF+IHqu?p'-rG;c_ -!BU8Qkl@9drrAU@l%/*jklp7WMI&%Cqu?p'-rG;c_ -!B:&NirG%MrrA"/j+67^is"DGLKcJ -!BpJTm/X,trrB$Lm=FZmm0;mtS8Ce?!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHI88Xm -!BU8Qkl@9drrAU@l%/*ekm$=iR;5;9!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHI7r+O3kCMlK -l2TuKc8pI~> -!B:&NirG%MrrA"/j+67Yis+JXQ"`Z0!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHH7;8%&iIU$? -j8\-?_`*)~> -!BpJTm/X,trrB$Lm=FZgm0;ajS97IU"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQW96HcA -kCN#OmJ6,MeieN~> -!BU8Qkl@9drrAU@l%/*_km$4`R<(tO"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQW8opE8 -jFQQHl1sQEc8pI~> -!B:&NirG%MrrA"/j+67Sis+AOQ#K8E"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQV88sj* -hLX^ -!BpJTm/X,trrB$Lm=FZ`m0D=SR!2Us*s20:0+KNl7oj5FL6eR:\&$59h<4(knauSPrVcTeo^VA7 -kM=V0_7-SAQA0Qp<_#)"%efr.!Zs[/GF5nnJaJ$Uo'HJ/4b*~> -!BU8Qkl@9drrAU@l%/*Xkm,bHQ$$+l*Wl'90+KNl7oj5FL6eR:\&$59h<4(knauSPrVcTeo^VA7 -kM=V0_7-SAQA0Qp<_#)"%efr.!ZjR,Fd9AbJa%aMo'$2#3e.~> -!B:&NirG%MrrA"/j+67Lis3o7O`FA`* -!BpJTm/X,trrB$Lm=FZYm0`43]V:0u=@=b["47)U!u`d[=D`hf][uM$m=FZjm/bd$J,~> -!BU8Qkl@9drrAU@l%/*QkmHY'\Y"Rk<^JDV"47)U!uW^X -!B:&NirG%MrrA"/j+67EisOek[$uV\<'`&Q"47)U!uWXU<,$oQ[*IZ^j+67VirR%VJ,~> -!BpJTm/X,trrB$Lm=FZNm4[>7\Z20[IrA^q91(]o-m'3<&.JsO"TSN+#7:nO',DZ<0f_To -!BU8Qkl@9drrAU@l%/*FkqCc,[\oRPI;N=k8jYKk-Qa*;%h/jN"TSN+#7:nN',DZ;0K;Bk -!B:&NirG%MrrA"/j+67:j"JrqZ(mV@H"pS^83f*e-6 -!BpJTmCB3Im=FYUm=FYUmJcJReieN~> -!BU8Ql+*@9l%/)Ml%/)Ml2KoJc8pI~> -!B:&Nj11,"j+66Aj+66Aj8S'>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6eq)D'eq)D'eu7."4b*~> -!BU73c@O8lc@O8lcD]"g3e.~> -!B:%0_h#^V_h#^V_l1HQ2h1~> -JN\QIJN\QIJN]hmJ,~> -JNA?CJNA?CJNBVgJ,~> -JN&-=JN&-=JN'DaJ,~> -%%EndData -showpage -%%Trailer -end -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/parcours_dfs.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/parcours_dfs.eps deleted file mode 100755 index 58a5ed697d..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/parcours_dfs.eps +++ /dev/null @@ -1,3104 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner -%%Title: parcours_dfs.eps -%%CreationDate: Thu Jun 7 15:23:41 2007 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 14 14 547 527 -%%EndComments -%%BeginProlog -% Use own dictionary to avoid conflicts -10 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -14.173228346456694 14.173228346456694 translate -% Translate to begin of first scanline -0 512.01073964115142 translate -532.37480314960635 -512.01073964115142 scale -% Image geometry -732 704 8 -% Transformation matrix -[ 732 0 0 704 0 0 ] -% Strings to hold RGB-samples per scanline -/rstr 732 string def -/gstr 732 string def -/bstr 732 string def -{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} -true 3 -%%BeginData: 159462 ASCII Bytes -colorimage -quD:2JN\QIJN\QIY -quD:/JNA?CJNA?CY<)R]J,~> -quD:,JN&-=JN&-=Y;c@ZJ,~> -rW)s]JcC<$JcC<$JcDqRs#p>]J,~> -rW)sZJcC<$JcC<$JcDqRs#U,ZJ,~> -rW)sWJcC<$JcC<$JcDqRs#9oWJ,~> -rr<*`s8RZ=Ja\0YJa\0YYODMk!^-M`J,~> -rr<*]s8RZ:Ja@sSJa@sSYO);h!]g;]J,~> -rr<*Zs8RZ4J`_OGJ`_OGYNGlb!]L)ZJ,~> -!WYC`JaJ$UJaJ$UJaMRdo8ie9o8ie9o8ik;!nKL7J,~> -!WY:]Ja.gOJa.gOJa2@^o7Qr*o7Qr*o7R#,!mWh,J,~> -!WY1ZJ`D=AJ`D=AJ`GkPo5OTeo5OTeo5OZg!lHqsJ,~> -!WYC`Ja@sSJa@sSJaDOc!0?aO!K[9[li<+ -!WY:]J`q[KJ`q[KJ`u7[!/'nC!JCFOkQ$8,rrIcProa?7oD]#Is6/[l3WO[~> -!WY1ZJ`21=J`21=J`5bM!-%Q0!HA) -!BpI6l@J5Ol@J5OlK7@4O8nh="mV0KlAtu:m02d9s6>[FoBcbIO8nM1eieN~> -!BU73k(2ZGk(2ZGk2te,KE(Q-"m1I;k(E^*klp4%s5nt6oB?JAKE()rc8pI~> -!B:%0hgs[9hgs[9hr`esE<#Oi"lF;!hf/Veis"=Zs5.eqoA^&4E<"hQ_`*)~> -!BpJ\kl>etFTI3YJa%aMJa%aMJa*$q!K[9PlNQO6rooLDoBQSEO8eC)s7>O\l&Yi.l./"J~> -!BU8Yj8a8oGl`TWJ`MCCJ`MCCJ`Q[g!JCFDk69q!roA_3oB-;CXjFdHmjN]f:~> -!B:&Vg]2EgHi\iPJ_Yh3J_Yh3J_^+W!HA)1i1Rgi38Jgqu($~> -!BpJ\k5\'G0*+GsJ`hUI_rq%"s6'C^J`hUI^?5NXs7>LZkE#T)O8nh:"m:sFkE#Z7l3?F4rTE@p -4b*~> -!BU8YiW*!N9*!Xridp+,ir9#Yir9"0idp+'iW4]3oAp/8KDje^s7>=Uie.3hKE(Q)#3(:6io86E -J,~> -!B:&Vg&PXUB`V,ZJ_G\/_qP+js4[JQJ_G\/^=iU,s7>+Og2R#EE<#Oe"kmqog2R)`hZheRrS#uC -2h1~> -!BpJ\jpmm?j5oFelKmp,nac=$h1=^>k0iDg!;YdW!<;3]!<;3]!.j9`k/-6]O8nh8"m1mEk)]QA -kkP5XkQU+0rT91@roj@^rTO7]roaRKO8\5'eieN~> -!BU8Yi!u78j5oFelKmp,nFH4#f7Dk2i6pQ[!;YRQ!<;!W!<;!W!.j'Zi54CQKE(Q("lP%2i.M(/ -jS8fTj9=Ior8<5-roF(ZrT*tYro=:AKDaZcc8pI~> -!B:&VfFFD0j5oIflKdj+nFH4!d"0i#f[AFK!;Y:I!<:^O!<:^O!.idRfYZ8AE<#Oc"k[elfPpli -h>%'Mh$)GMr7Gugrn[SSrS@JRrnRe2E;\A@_`*)~> -!BpJ\jURg@jQ>Xilg=-0o(2O(gk"Rroa7\s6'@]roXLIO8S,$eieN~> -!BU8Yh[Z19jQ>Xilg=-0nalF&eq)_0hpUE^!;,1K!;k[R!.j$Yhnn7OKE(Q&"lFt1hh1t.iqWTR -iW\4lr83/,ro3nWs5O"Xro+.>KDaWac8pI~> -!B:&Vf++>1jQ>[jlg4'/nalF$c[j]!f@&:N!;+nC!;kCJ!.iaQf>?,?E<#Oa"kR_jf5Uchg\CjK -gBH2Jqq#fernIDPs4dMQrn@Y/E;S8=_`*)~> -!BpJ\jURgAjlbmnm-X93o(;X+gk"R -!BU8Yh[Z.:jlbjmm-a?4oCVa+eq)_0hpUE^!;YL[HlE27N;rt9hZ*Z6quHcS%Gc.G!ul@ -!B:&Vede52jlbjmm-a?4oCVa)c@OPtf$`.L!;Y1RG8^T/LB%>*ec5^$quHcJ%Ff>8!uc..f%'g$ -HPcj9eq)E%ecBaio@X;uE;J.)s8L[O!;kFL!<1XTeo:K:E<#miqZ-TJ#1dbif%._tJ,~> -!BpJ\j:7^Ak32*rmI'K7o_%s/gO\F:jO3,h!;baeJcJBjdRaE=jQ$:@jQ$:@rT"B2!+t"u!-mSc -!!$0TJ`MCCe)UOjs754RO8J"!s8M'Z!;kgW!<(s]O8J"!s8:sV!;kg\O8J#!eieN~> -!BU8Yh@?(;k32*rmI0Q8o_%s-eUcS.hU:9\!;bO_IK2m_bsqa6hVJ54hVJ54rS@s)!+XSi!-R/T -!!$'LJ_kt7e(t+Xs7>+OhLk[]KE(r.!!)oR!!*#U"l=n.hLkk+hu*QQhZhqiqVL)S3e.~> -!B:&Vede53k32*rmI'K7o_%s,c@OPtf$`.L!;b7WH2pCQ`C0b,f%'g$f%'g$rRMBr!+=)[!-$N? -!!#sAJ_#D'e(+P=s7=hGeo:H9E<#ph!!)oJ!!*#M"kIYgeo:ZefDP^If*9fFq:=-72h1~> -!BpJ\j:7^BkNV=!mdTc*!7'ZM!$((\ -!!(;qjFQC?j8k>AoA^#8O8J"!s8M$Y!;kdV!<2!^jH'3!O8o. -!BU8Yh@?(;kiqF"mdTcr9/o%jM%qVHl)rn[VTqq_;QrS@[0qVHl)r8.APqq_L/qVL)S3e.~> -!B:&VeIJ,3kNV=!mdTc -!BpJ\isqXCkj%O%n+#u@p@nB6g4A:8j3luf!;b^d"9@B?j50h:j5U+>j5U+>rSn4f!9)tr!!M?B -!!%T1J`G/ -!BU8Yh%$"=kj%O&n+#u@p@nB4e:HG,h9t-Z!;bL^!s%'2h:_i/h;&&2h;&&2rS7e_!8H>`!!D'5 -!!%T+J_e`0!JCFDg]cMdq;$]'rnIJRqqM/OrnI\5KDF>Us8CaM!<([Wh1POZh9J'3~> -!B:&Ve./&4kj%O%n+#u@p%S91b^n8peC)kH!;b1U!s$d!eBn6reC4HueC4HurR;/V!7KBF!!Ca# -!!%T"J^i)s!HA)1dfn6?pXF0^rmLiIqpPNFrmM&#E;.k$s8CFD!<(@Ne8Y03eAF4q~> -!BpJ\isq[El0Ia)nFH2Dp\=T9g4A:8j3luf!;b^d*WX4?j2Cuuj5U+>j5U+>rSn5&!6sQJ!$(%Z -!!%T1J`G/ -!BU8Yh%$%?l0Ia)nF?,Cp\=T7e:HG,h9t-Z!;bL^*<Pqq;#Mrn7P3KD=8Ts8LaO!<:dP!<1[Vh1PLYh9J'3~> -!B:&Ve./)6l0Ia)nFH2Dp\FZ6b^n8peC)kH!;b1U*!!P!e@5JYeC4HueC4HurR;/j!5I$t!#jA: -!!%T"J^i)s!HA)BDrm:o!E;%e#s8LFF!<:IG!<1@Me8Y-2eAF4q~> -!BpJ\iXVUFlg4'.nalDHq"afio8NPJ,~> -!BU8Yg^]q?lg4'/nalGIp\F]:dt-;*gsY!X!;bI^I/ld\bXVX5gtVl0gtW;<^]*!qB`MVl@K:H( -g].>*gk"8.g]<'-rn7)Irn.J1KD4/Rs8L^I!<1XTgk5@VKE(r(rrE#NrrE&O#2Fk*gt^19J,~> -!B:&Vdgi#7lg4'.nalDHq"af9bCS,ne'c_F!;b.UGQ:.K_aFJ)e'e9se'e^*\,Oh`AH6&\?3"ik -df9B!dt,uqdfFFfrm1B?rm(bsE:q\!s8L@?!<1:Jdr>!/E<#p`rrE#DrrE&E#1IPae'l2nJ,~> -!BpJ\iWa1GI!pElIf=isJ-(:Bg4A77imQi_!<1suI2`;6NW9(=iW&u):!K[9Ph?Do"pu7A7oA0Z1O8.^qs7>(OifEloimp8C~> -!BU8Yg]hM?H[L3hIK"]qIfb.=e:HD+gsY!S!<1aoH5Zl0M?!Y3g].?0gis;/!8QA^B,:XfE8'+& -!!%T*J_\Z.!JCFDf*0r^pY:E$o@F0$KD4/Rs7=hHgk5@Vgs.s2~> -!B:&VdfjB0H$Xd`rI"Wn!e+t0J^]2!daS$mrmMm1)$;"7!!(Ks!!(KsEt&*Le'lWP('5=hdF6PE -!.iUMe'ZVFE<#OS"k.G_dr>?YbluR8o[@dZo?@KgE:hW._`*)~> -!BpJ\huML(ecFC[J`)+;J`)+;J`-C_!K[9Pg]cVspu%55o@sN-O8.Xos7>"Mi/dZki7:&A~> -!BU8Yg&TXpd/_jNg4@t/g4@t/gA9M(KE(Po"knV&g4TFsecjc[p=b0!o@=-"KD+$Qc8pI~> -!B:&VciD5]`rX9-J^AtpJ^AtpJ^F8?!HA)1b6?73o?_IVo?. -!BpI6hLXO7hLXO7hWEYqO8nh+"l>=7hN.^.gBHGppYLu2o@jK+O8%MfeieN~> -!BU73fR_\+fR_\+f]LfeKE(Pm"k\J#fRs4qe-4KWp"4oso@*usKD!mLc8pI~> -!B:%0c@O8lc@O8lcK`gTaT]t/o$24So>q3^E:V<"_`*)~> -!BpI6h1=C5h1=C5h -!BU73eq)D'eq)D'f&bH_KCd.bKD#5p!/'ma!JC(Eec:?oa8pqdrmh+q3e.~> -!B:%0b^muhb^muhbiR%KE:^[BE:NqO!-%PA!H@T.bQ)VR])cm@rlbD\2h1~> -!BpI6gO\+1gO\+1gZ@/ip[aFGp\ihHp[aFGp\ihHp[aFGp\ihIeieN~> -!BU73e:H,#e:H,#eE,0[p%*e9p&3A?p%*e9p&3A?p%*e9p&3A@c8pI~> -!B:%0aaqQbaaqQbalUVEnag]"nbpQ0nag]"nbpQ0nag]"nbpQ1_`*)~> -!BpI6fn%h-fn%h-g#UiXp\WY8p\WY8p\`\FeieN~> -!BU73dXfhtdXfhtdcAjJp&!2/p&!2/p&*5=c8pI~> -!B:%0a+;9^a+;9^a5k;4nb^Aunb^AunbgE._`*)~> -!BpI6eq)D'eq)D'eu7."4b*~> -!BU73c@O8lc@O8lcD]"g3e.~> -!B:%0_h#^V_h#^V_l1HQ2h1~> -!'Pn%JXV.YJXV.YVj[TKJ,~> -!'5[kJW>;AJW>;AViCa -!&oIVJUE#rJUE#rVgJJ'J,~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpJTm=FVTm"+MSm"+N@m.BZGeieN~> -!BU8Ql%/&Lk^hrKk^hs8kk+*?c8pI~> -!B:&Nj+63@idp*?idp+,iq273_`*)~> -!BpJTm=FVTm"+MSm"+N@m.BZGeieN~> -!BU8Ql%/&Lk^hrKk^hs8kk+*?c8pI~> -!B:&Nj+63@idp*?idp+,iq273_`*)~> -!BpJTm=FVTm"+MSm"+N@m.BZGeieN~> -!BU8Ql%/#KkCMfIkCMg6kOe!>c8pI~> -!B:&Nj+60?iITs=iITt*iUl.2_`*)~> -!BpJTm=FSSl[eAQl[eB>lh'QFeieN~> -!BU8Ql%/#KkCMfIkCMg6kOe!>c8pI~> -!B:&Nj+60?iITs=iITt*iUl.2_`*)~> -!BpJTm=FSSl[eAQl[eB>lh'QFeieN~> -!BU8Ql%/#KkCMfIkCMg6kOe!>c8pI~> -!B:&Nj+6->i.9g;i.9h(i:Q%1_`*)~> -!BpJTm=FSSl[eAQl[eB>lh'QFeieN~> -!BU8Ql%.uJk(2ZGk(2[4k4Im=c8pI~> -!B:&Nj+6->i.9g;i.9h(i:Q%1_`*)~> -!BpJTmI0 -!BU8Ql0ma7!.j9`k(2ZGk(2[Gk4Im=c8pI~> -!B:&Nj6tk*!.j$Yhgs[9hgs\9ht5q0_`*)~> -!BpJTmIKNE!:&hLJa.gOJa.gOJa1hOo^)\14b*~> -!BU8Ql13p -!B:&Nj7;(0!8lZ6J_u%9J_u%9J`#&9o]#ti2h1~> -!BpJTmJ,rD!<)-^!.jBcl%/)Ml%/*Ml1F?DeieN~> -!BU8Ql1jB -!B:&Nj7qL/!<(aS!.j!XhLXO7hLXP7hXoh/_`*)~> -!BpJTmJ,oG!;YjZ!.jBcl%/)Ml%/*Ml1F?DeieN~> -!BU8Ql1j<>!;Y[U!.j3^jFQBCjFQCCjRh[;c8pI~> -!B:&Nj7qI2!;YIO!.j!XhLXO7hLXP7hXoh/_`*)~> -!BpJTmJ,oG!;u'h!9r_Jl07>J'*qCiJa%aMJa%aMJa)%Uo^)\14b*~> -!BU8Ql1j<>!;tmc!9E2@jQ,98'*q@cJ`MCCJ`MCCJ`P\Ko]ZD%3e.~> -!B:&Nj7qF1!;tX\!8ZH2h;-du&dV.YJ_bn5J_bn5J_f2=o]#ti2h1~> -!BpJTmJ,lF!;u$g!9iVHkid1SceMT0J`q[KJ`q[KJ`ttSo^)\14b*~> -!BU8Ql1j9=!;tjb!9<)>j5Y5Eb1BX!J`D=AJ`D=AJ`GVIo]ZD%3e.~> -!B:&Nj7qF1!;tX\!8ZH2h;*'5`R7[hJ_bn5J_bn5J_f2=o]#ti2h1~> -!BpJTmJ,oC!"A&kki`$1kT%P)kgL8tk^hrKk^hrKkhbOqm/bd$J,~> -!BU8Ql1j<:!"@lfj5U."iuGhoj3JEjj+66Aj+66Aj5/hgklK'jJ,~> -!B:&Nj7qF-!"@W_gtVnbg`*fZgrL1\gk"73gk"73gtpiYirR%VJ,~> -!BpJTmJ,lF!;u$b!9iVHki`0J!!!%Nk^hrKk^hrKkhbOqm/bd$J,~> -!BU8Ql1j9=!;tj]!9<)>j5U:@!!!%Nj+66Aj+66Aj5/hgklK'jJ,~> -!B:&Nj7q@/!;tRU!8H6.gY2i/!!!%NgO\+1gO\+1gYU]WirR%VJ,~> -!BpJTmJ,iE!;u!b!9`MFkN -!BU8Ql1j6DCo]ZD%3e.~> -!B:&Nj7q@/!;tRV!8H6.gY3UaJ_Pb1J_Pb1J_So5o]#ti2h1~> -!BpJTmJ,iE!;u!f!9`MFkN@(Wa5am0J`hUIJ`hUIJ`knQo^)\14b*~> -!BU8Ql1j6PGo]ZD%3e.~> -!B:&Nj7q=.!;tOY!8?-,g=gR3][sM_J_G\/J_G\/J_Ju7o]#ti2h1~> -!BpJTmJ,iE!;u!f!9`MFkNCrP*!IdZJ`hUIJ`hUIJ`knQo^)\14b*~> -!BU8Ql1j3;!;td`!9)l:iSi[;)[%RSJ`21=J`21=J`5JEo]ZD%3e.~> -!B:&Nj7q=.!;tOY!8?-,g=k2#)[%LLJ_G\/J_G\/J_Ju7o]#ti2h1~> -!BpJTm=FDNk(2ZGk(2[4k4J$AeieN~> -!BU8Ql%.fEiITs=iITt*iUl@8c8pI~> -!B:&Nj+5m7fn%h-fn%hog%=;*_`*)~> -!BpJTm=FDNk(2ZGk(2[4k4J$AeieN~> -!BU8Ql%.cDi.9g;i.9h(i:Q77c8pI~> -!B:&Nj+5m7fn%h-fn%hog%=;*_`*)~> -!BpJTm=FDNk(2ZGk(2[4k4J$AeieN~> -!BU8Ql%.cDi.9g;i.9h(i:Q77c8pI~> -!B:&Nj+5j6fR_\+fR_\mf_"2)_`*)~> -!BpJTm=FAMjalNEjalO2jn.p@eieN~> -!BU8Ql%.cDi.9g;i.9h(i:Q77c8pI~> -!B:&Nj+5j6fR_\+fR_\mf_"2)_`*)~> -!BpJTm=FAMjalNEjalO2jn.p@eieN~> -!BU8Ql%.`Chgs[9hgs\&ht6.6c8pI~> -!B:&Nj+5g5f7DP)f7DPkfC\)(_`*)~> -!BpJTm=F>LjFQBCjFQC0jRhg?eieN~> -!BU8Ql%.`Chgs[9hgs\&ht6.6c8pI~> -!B:&Nj+5g5f7DP)f7DPkfC\)(_`*)~> -!BpJTm=F>LjFQBCjFQC0jRhg?eieN~> -!BU8Ql%.]BhLXO7hLXP$hXp%5c8pI~> -!B:&Nj+5d4eq)D'eq)Dif(@u'_`*)~> -!BpJTm=EE2b(7]db(7^Qb4P'%eieN~> -!BU8Ql%-[%_1BFR_1BG?_=Zsmc8pI~> -!B:&Nj+4OfZ[oH6Z[oI#Zh38Y_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpJTmCB3Im=FYUm=FYUmJcJReieN~> -!BU8Ql+*@9l%/)Ml%/)Ml2KoJc8pI~> -!B:&Nj11,"j+66Aj+66Aj8S'>_`*)~> -!BpJTm/X,tp&M(Cm=FZNm4[>7\Z20[IrA^q91(]o-m'3<&.JsO"TSN+#7:nO',DZ<0f_To -!BU8Qkl@9doDkG5l%/*FkqCc,[\oRPI;N=k8jYKk-Qa*;%h/jN"TSN+#7:nN',DZ;0K;Bk -!B:&NirG%MnGnN!j+67:j"JrqZ(mV@H"pS^83f*e-6 -!BpJTm/a3[]^5]uJaJ$Ug?f76f=[i5D-01Y)?\@e$3M2!6s+;]U:f+EJaJ$Ulg4`(4b*~> -!BU8QklI@I]]fEeJa%aMg?At.e%)*)CK -!B:&NirP,/]]0!NJ`D=Ag>`P"cEs'lBiIAL)$A7d$3M.s5u_QLS$^K#J`D=Alf/#`2h1~> -!BpJTm/a3[]^5]uJaJ$UiU$m'\ -!BU8QklI@I]]fEeJa%aMiTUTt[?Yl8599n#!&"g52b-n\G(uc8pI~> -!B:&NirP,/]]0!NJ`D=AiSt0hY`Ws)4WOUu!&"g52b-n\G(u -!BpJTm/a3[^?l!RoVmE/JaM[g#3WjnF\=7gq#C^91/;VAT!Z]"qpGEMqr,`*Sr%5X1)9Tb"p?JM -Fe$>3JaJ$Uq<\464b*~> -!BU8QklI@I^?G^JnXY6qJa)C_#3 -!B:&NirP,/^>f:?m>QVVJ`GtS#2ZqVE(DJ^q#C^91/;VAT!Z]"qpGEMqr,`*Sr%5X1)9Tb"p?GI -E0\#kJ`D=Aq;VLn2h1~> -!BpJTm/a3[^?l!9ql,/6JaMmm#4'@#D+GfNqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#l -!BU8QklI@I^?G^1qji<&Ja)Ue#3WsnCI]NKqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#l;CRN0) -Ja%aMs60R03e.~> -!B:&NirP,/^>f:'q2BmbJ`H1Y#3!@_Bgj-FqZ$j11fo!o]A*:trs/MW]:F7L1_'<^"p#i8BpHKm -J`D=As5O-t2h1~> -!BpJTm/a3[^?l!9ql,/6JaN'r"m`XW?S_rb!!WNR;0o"RmB-BmmD5QD;()PE!!NT`?]DP\JaJ-X -!S0Da~> -!BU8QklI@I^?G^1qji<&Ja)dj"m<7M?8;c`!!WNR;0o"RmB-BmmD5QD;()PE!!NT_?Ac,QJa%jP -!R<`V~> -!B:&NirP,/^>f:'q2BmbJ`H@^"lZ\@>;6B\!!WNR;0o"RmB-BmmD5QD;()PE!!NT^>DKHAJ`DFD -!Q-jH~> -!BpJTm/a3[^?l!9ql,/6JaN7""ma3o@P7o_!!OH?Lo]&'U&P;oe>nC$+8c*B"YX>Ma6Sp -4b*~> -!BU8QklI@I^?G^1qji<&Ja)so"mnC$+8c*B"YO2H`92^9M -!B:&NirP,/^>f:'q2BmbJ`HOc"l[4W?7cnC$+8c*B">*r@^Ysb(M;nWS -2h1~> -!BpJTm/a3[kNr6Lg$JjTql,/6JaNC&"Qlk18-Sql"T^YkO2(7Nrrqu.O'apKr;Zs(89V/uJaJHa -!S0Da~> -!BU8QklI@IkNMsHg$&RLqji<&Ja**s"QHJ(7g8hk"T^YkO2(7Nrrqu.O'apKr;Zs(7s(fkJa&0Y -!R<`V~> -!B:&NirP,/kMlOBg#E.Bq2BmbJ`H[g"Pfnp70NPh"T^YkO2(7Nrrqu.O'apKr;Zs'7<,6\J`DaM -!Q-jH~> -!BpJTm/a3[kNr6Lg$JjTql,/6JaEX.g7rC<"oSE(*`S$4o8EVOo>$5_*rQ'A"Yshfg4AXRm/bd$ -J,~> -!BU8QklI@IkNMsHg$&RLqji<&Ja!@&f:Zh4"oSE(*`S$4o8EVOo>$5_*rQ'A"Yj_af7E1KklK'j -J,~> -!B:&NirP,/kMlOBg#E.Bq2BmbJ`?pod@=f&"T8<'*`S$4o8EVOo>$5_*rQ'A">FGXd=L>?irR%V -J,~> -!BpJTm/a3[rp9ae6L=[!l"Q2JaJ-X"QH@p.foVL"9UN%YkWeL"Sf3A2$ -!BU8QklI@IrojIa60S:3!!)TS!!(^:!kS9"Ja%jP"Q$"h.KTMK"9UN%YkWeL"Sf3A2$ -!B:&NirP,/ro4%[5N;Y%!!)TM!!(^4!k.o`J`DFD"PBDZ.09DJ"9UN%YkWeL"Sf3A2$ -!BpJTm/a3[rp9ae!l"Q2JaJ6["1`V8"o\K)$:0-QoR[&?!! -!BU8QklI@IrojIa;hk88!!)TS!!(^:!kS9"Ja%sS"1E>3"o\K)$:0-QoR[&?!! -!B:&NirP,/ro4%[;1ni-!!)TM!!(^4!k.o`J`DOG"0ll)"TAB($:0-QoR[&?!! -!BpJTm/a3[rp9dfh^-ACm2l>qmH.[`%:J>cmH.OX'n?;OmHSX)#Z9RJmAVK;*KK@N!l"Q2JaJB_ -"5&l8&,lP3"?:eDpjrJ8rri,3HoM9.!! -!BU8QklI@IrojLbgEjf;koToil/GnV%:8)Zl/PkP'n-/Il/ljs#Z':@l)#g3*/s+G!kS9"Ja&*W -"4WN0&,lP3"?:eDpjrJ8rri,3HoM9.!! -!B:&NirP,/ro4(\eg/$0iu\9]j4mcG$s_WKj5!]A'RKi?j5=\d#Yiq2j.[k'*/Nh=!k.o`J`D[K -"4*$%%fQG2"?:eDpjrJ8rri,3HoM9.!!<^)O3`C;SDsXf2h1~> -!BpJTm/a3[rp;$4mB\M1mHjo@m;#/DfKa?Am;>DHfgPo.m -!BU8QklI@Iroka0l*)l&l0/34l"NQ9e3@d6l"if>eO0E%l$#A -!B:&NirP,/ro5=*j/aljj5U."j(:X(cTQ"&j(Um-cU%Wlj)dH,f2Z,:it@d9aB@`e!k.o`J`DdN -"1E2&!r`0%12X;fJcG!7"7rd71B%7U!\\Q%J`EB_!Q-jH~> -!BpJTm/a3[rp:s2mHne1mHjo@m24%6mE$75m2=.8mE5Lsm2a:8mFW0@m2Ll/k3W5aql,/6P3iA8 -X^N(G!! -!BU8QklI@Irok[.l03#&l0/34knqJ*l,=P)ko%S,l,Negko@Y+l-pI4ko,9$k32rYqji<&P3E)0 -WaH\C!! -!B:&NirP,/ro57(j5Xiij5U."itoSmj1lMliu#\oj2(fViuGhoj3JG"iu3Njk2QNOq2BmbP2cZ% -VHk#;!! -!BpJTm/a3[rp:U(mHs'i[I!t]m/uY@mHFc@m/uY@mHFW -!BU8QklI@Irok=$l077^ZKVARkl^)4l/`'4kl^)4l/_p0klgqb#6F)R\OI2MT]kVA])/%Ll':K8 -i1F![rW!$BC:3ees4dPUpU+`XrW!$2 -!B:&NirP,/ro4msj5\uJY2]NBire6"j51""ire6"j50jsiro;\#6ElFZpbTGSESu7[eYl5j-AX, -g7(tNrW!$BC:3ees4dPUpU+`XrW!$2;OcBkj/1i;_`*)~> -!BpJTm/a3[rp9[crp:NA-K+slm24(7mE-=6m2=.8mE>Rtm2ORMm/a1%kj8Gcql,/6R-b"=Thc!o -!!=d#cMiCpec,aNc@%8C!! -!BU8QklI@IrojC_rok6:-/ARcknqM+l,FV*ko%S,l,Wkhko.qDklIXskii/[qji<&R-=_5SkTOj -!!=d#cMiCpec,aNc@%8C!! -!B:&NirP,/ro3tYro4g/,hE%VitoVnj1uSmiu#\oj21lWiu6,9irPkhki2`Qq2BmbR,\;)RS*td -!!=d#cMiCpec,aNc@%8C!! -!BpJTm/a3[rp9[crTtb`=9.aUBh6q16Yu/WDFiL77f_rDHpu9D_bogg<6==$'Bnfb^AFm\m@3JL -kbqMk!!!$ZM;!O\c2S+(M)YM9!"Du-k^i-&m/bd$J,~> -!BU8QklI@IrojC_rTPJYGcLCe!%-70)T:H:5m:^ea4Z;T7^m''SQ]])/%Ll'poD -jJGod!!!$ZM;!O\c2S+(M)YM9!"Dr*jFQQsklK'jJ,~> -!B:&NirP,/ro3tYrSo&P<<2(>AOXtl5\K-;BgpFr6ic9-G!a.)]1q>G:r(q\''S?W[eYl5j.#'8 -hk -!BpJTm/a3[rp9[crTtcp63-E?j]`-%?0:PAk#hs)J,o!(l[9cW.\5toR3Db^X6ApP^AFm\m@EVG -[;-*J!!5$;j+76NrrV5?2?!RW$#?r"mB5gWeieN~> -!BU8QklI@IrojC_rTPKh5lg06iE?Wu>N4o3i`HI$IK8WskB\*O.@TMcQQcP[W9EII])/%Ll(.&? -Z>'^F!!5$;j+76NrrV5?2?!RW$#6bsl)s7Oc8pI~> -!B:&NirP,/ro3tYrSo'\560a(gK+dl=kr&tgf4UoHN<*diHH7E.$ioRP9C&UV!-h?[eYl5j.533 -Y%J(?!!5$;j+76NrrV5?2?!RW$"pDlj0%DC_`*)~> -!BpJTm/a3[^?l!9ql,/6T^;g,GTctc!\B#ZJcERd!o&AZrW!!BGgCs.Z0_SC4b*~> -!BU8QklI@I^?G^1qji<&T]lO%Fs-ba!\B#ZJcERd!o&AZrW!!BG0GO%Z0;;73e.~> -!B:&NirP,/^>f:'q2BmbT]6*oF!(A]!\B#ZJcERd!o&AZrW!!AF2rjlZ/Yl&2h1~> -!BpJTm/a3[^?l!9ql,/6U[8?HPWJmG!"jtRJcE@^#k!EZ!!!$]Pi@8][-[nF4b*~> -!BU8QklI@I^?G^1qji<&UZi'@Ou`UD!"jtRJcE@^#k!EZ!!!$\P2:cS[-7V:3e.~> -!B:&NirP,/^>f:'q2BmbUZ2X4N]@+?!"jtRJcE@^#k!EZ!!!$[NnApC[,V2)2h1~> -!BpJTm/a3[^?l!9ql,/6Vm^Q3$=$31&5?+baU[d=+H4b*~> -!BU8QklI@I^?G^1qji<&V7(?1$=$31&5>If=L[cmh<3e.~> -!B:&NirP,/^>f:'q2BmbV;hig=UG-/$=$31&5=gWb?[c7D+2h1~> -!BpJTm/a3[^?l!9ql,/6W9jZEN@k,0!]utEJcE"T!qVsErW!!ONSoBT\a9FK4b*~> -!BU8QklI@I^?G^1qji<&W9FB=MCnf-!]utEJcE"T!qVsErW!!OMVNdI\`j.?3e.~> -!B:&NirP,/^>f:'q2BmbW8ds2LF`?(!]utEJcE"T!qVsErW!!MLY%+;\`3_.2h1~> -!BpJTm/a3X^?Pd3ql,/6WpL&+>mLE1'm/,[s/Z/)flRr/!!llFJaL):!S0Da~> -!BU8QklI@F^?,L,qON3%Wp'c#>6k3/'m/,[s/Z/)flRr/!!lf@Ja'f2!R<`V~> -!B:&NirP,,^>K(!q2BmbWoF>n=U5!-'m/,[s/Z/)flRr/!!l`:J`FB&!Q-jH~> -!BpJTm/a3R^?#F@n>V!+XmHDXRl(0G!C -!BU8QklI@@^>T.8m[\pnXm$,PQo"dC!C -!B:&NirP,&^=r_-lAU;SXlB]EPVW:>!Cf732h1~> -!BpJTm/a3M]\`^gJaKZ.#M=8 -!BU8QklI@;]\ -!B:&NirP,!][d(AJ`Ero#L@H-!!!7Bk^ic-rs.b+#64`?F3fEt^uGI52h1~> -!BpJTm/a3G]\*:aJaK`0#JX:B!!"U>on!.6rs/4c/H>bR -!BU8QklI@5][d(RJa'H(#J3t=!!"U>on!.6rs/4c/H>bR -!B:&NirP+p][-Y;J`F#q#IdS6!!"U>on!.6rs/4c/H>bR;R_5;_W([72h1~> -!BpJTmCB3ImBl6cm&N;M!!?*4JcD):#JO%;!!#3`m"+QCm/bd$J,~> -!BU8Ql+*@9l*T[[kbpWE!!?*4JcD):#JO%;!!#0\k^i!;klK'jJ,~> -!B:&Nj11,"j0[hOihSX9!!?*4JcD):#JO%;!!#*Vidp./irR%VJ,~> -!BpJTm/X,trrB$LmC)Beka*e"!!n#BJcCr6#Om-I!!"O9k^i-Am/bd$J,~> -!BU8Qkl@9drrAU@l*fg]jHM+o!!n#BJcCr6#Om-I!!"L5jFQR9klK'jJ,~> -!B:&NirG%MrrA"/j0mtQhiT>f!!n#BJcCr6#Om-I!!"I1hgsh.irR%VJ,~> -!BpJTm/X,trrB$LmC;Ngl&-/S!#pdaJcCf2#OmQh!!!Xil%/6Dm/bd$J,~> -!BU8Qkl@9drrAU@l+#s_jbXQL!#pdaJcCf2#OmQh!!!Ufjal[ -!B:&NirG%MrrA"/j1++Shh;XB!#pdaJcCf2#OmQh!!!Ubhgsh0irR%VJ,~> -!BpJTm/X,trrB$LmCMZihg6":!%X];JcCZ.#PjuB!!![Zhgt1 -!BU8Qkl@9drrAU@l+6*agNaD3!%X];JcCZ.#PjuB!!!XWgO\V4klK'jJ,~> -!B:&NirG%MrrA"/j1=7UeohZ+!%X];JcCZ.#PjuB!!!XTeq)l)irR%VJ,~> -!BpJTm/X,trrB$LmC_fkgiX,-!$@a1JcCN*#QC58!!!OPgk"k;m/bd$J,~> -!BU8Qkl@9drrAU@l+H6cflIZ(!$@a1JcCN*#QC58!!!ONfn&D4klK'jJ,~> -!B:&NirG%MrrA"/j1OCWdr5cs!$@a1JcCN*#QC58!!!LJdt-Q(irR%VJ,~> -!BpJTm/X,trrB$LmCqrlg275t!(">Ms+11S^-M`!$?"RKmEb/#eieN~> -!BU8Qkl@9drrAU@l+ZBdenbZn!(">Ms+11S^-M`!$>e:El-JSpc8pI~> -!B:&NirG%MrrA"/j1aOXctWmf!(">Ms+11S^-M`!$>Rq=j3Q`d_`*)~> -!BpJTm/X-`rrBjNrrB$LmD/)nh/Nf&!(b%Zs+14Krs$D4!!!CHh1=t@m/bd$J,~> -!BU8Qkl@:PrrBjNrrAU@l+lNfg2@?!!(b%Zs+14Krs$D4!!!CFg4AM9klK'jJ,~> -!B:&NirG&9rrBjNrrA"/j1s[Ze8,Km!(b%Zs+14Krs$D4!!!CCe:HZ-irR%VJ,~> -!BpJTm/X-`rrE,8_Z'V8JaL>A#3't?!!$-VJcC<$q>UZS=9&=3HfBVDe*R1e4b*~> -!BU8Qkl@:PrrE,8_Z'V,Ja(&9#2XV9!!$-VJcC<$q>UZS=9&=3H/=,:e*-nY3e.~> -!B:&NirG&9rrE,8_Z'UpJ`FW-#2")/!!$-VJcC<$q>UZS=9&=2G1_B+e)LJH2h1~> -!BpJTm/X-`rrN07^r-0PWIaHTm0;[)'*&##aFXABs7QBra@$".'8,CtmFCS)eieN~> -!BU8Qkl@:PrrN07^r-0PSUp%Dkm$*t'*&##aFXABs7QBra@$".'7o+nl.,#!c8pI~> -!B:&NirG&9rrN07^r-0PN.L$-is+7e'*&##aFXABs7QBra@$".'7S\ej43/j_`*)~> -!BpJTm/X-`rrW8:'YqZe!3(P:`pEurOVe&u426@HJcG9?#/<5"!#UjaJaM(V!S0Da~> -!BU8Qkl@:PrrW8:'YqZe!1e]*`p!]jNu.is426@HJcG9?#/<5"!#Ud[Ja(eN!R<`V~> -!B:&NirG&9rrW8:'YqZe!/uKh`o@9^M\c?n426@HJcG9?#/<5"!#LRPJ`GAB!Q-jH~> -!BpJTm/X-`rr`?%^_FT'rrB$LmDnStW$q]H1:Dc6JcG-;"h$/d!%FjtmF^e,eieN~> -!BU8Qkl@:Prr`?%^_FT'rrAU@l,W#lVC2EE1:Dc6JcG-;"h$/d!%=^ql.G5$c8pI~> -!B:&NirG&9rr`?%^_FT'rrA"/j2^0`TdKg?1:Dc6JcG-;"h$/d!%4Ikj4NAm_`*)~> -!BpJTm/X-`rriE&s1f>ap&>*oN>quMrrB$LmE+`"^HDPs,,bEks+149rs&J#+ohU+^Obe+m/bd$ -J,~> -!BU8Qkl@:PrriE&s1f>ap&>*oN>quMrrAU@l,i/o]0$&n,,bEks+149rs&J#+ohU*]7K5#klK'j -J,~> -!B:&NirG&9rriE&s1f>ap&>*oN>quMrrA"/j2p -!BpJTm/X-`rr<&urrR`Op%JCe!*SX -!BU8Qkl@:Prr<&urrR`Op%JCe!*SX -!B:&NirG&9rr<&urrR`Op%JCe!*SX -!BpJTm/X-`rriE&s1f>ap&>$mk1'D2WIaH]m0;Wp#lk6RmXbChs5X+`mWAd8$$PB\mG@42eieN~> -!BU8Qkl@:PrriE&s1f>ap&>$mk1'D2SUp%Mkm$'f#lk6RmXbChs5X+`mWAd8$$>*Vl/(Y*c8pI~> -!B:&NirG&9rriE&s1f>ap&>$mk1'D2N.L$6is+4W#lk6RmXbChs5X+`mWAd8$$"[Mj5/es_`*)~> -!BpJTm/X-`rr`?%^_FTVrr<&JrrB$LmEY)&SK%V0DX`5WJcFX-"n6C0!$%P\mGI:3eieN~> -!BU8Qkl@:Prr`?%^_FTVrr<&JrrAU@l-AMsRi;>-DX`5WJcFX-"n6C0!#qDYl/1_+c8pI~> -!B:&NirG&9rr`?%^_FTVrr<&JrrA"/j3HZgQQ#o)DX`5WJcFX-"n6C0!#q8Uj58kt_`*)~> -!BpJTm/X-`rrW8:'Ys>?!!(LJ!3(P:d-V"Q3WK.8_h%i=s4dPW__M2l3l-C7iU$Zs4b*~> -!BU8Qkl@:PrrW8:'Ys>?!!(LJ!1e]*d-1_J3<0%7_h%i=s4dPW__M2l3PL(/iTUBg3e.~> -!B:&NirG&9rrW8:'Ys>?!!(LJ!/uKhd,P;?2uiq6_h%i=s4dPW__M2l34XV#iSssV2h1~> -!BpJTm/X-`rrN07_".L*!7UrJWIaHbm0;W_!<CmGmR7eieN~> -!BU8Qkl@:PrrN07_".L*!7UrJSUp%Rkm$'U!< -!B:&NirG&9rrN07_".L*!7UrJN.L$;is+4G!< -!BpJTm/X-`rrE,8nc&Rhe,KEIJaLtS#4.]l!!RB2JcC<$ec,jBE -!BU8Qkl@:PrrE,8nc&Rhe,KE=Ja(\K#3_ -!B:&NirG&9rrE,8nc&Rhe,KE,J`G8?#3(aZ!!RB2JcC<$ec,jBE -!BpJTm/X-`rrBjNrrB$LmFCS-a?0G&2qW]]JcF-t"kYa6!'J>RmH3d:eieN~> -!BU8Qkl@:PrrBjNrrAU@l.,#%`B+&"2qW]]JcF-t"kYa6!'A/Nl/q42c8pI~> -!B:&NirG&9rrBjNrrA"/j43/n^cDGq2qW]]JcF-t"kYa6!'7oHj6#A&_`*)~> -!BpJTm/X,trrB$LmFU_0j`1P*'qkPWs+13rrs&Iq'`\GYjalg_m/bd$J,~> -!BU8Qkl@9drrAU@l.>/(iG\r#'qkPWs+13rrs&Iq'`\DViIU7WklK'jJ,~> -!B:&NirG%MrrA"/j4E;qgMI)o'qkPWs+13rrs&Iq'`\DSgO\DKirR%VJ,~> -!BpJTm/X,trrB$LmF^e0^)m=VB'k0LJcEpn"mon'!$Aq+mHO!=eieN~> -!BU8Qkl@9drrAU@l.G5(],gqRB'k0LJcEpn"mon'!$8b'l07F5c8pI~> -!B:&NirG%MrrA"/j4NAq[N,>LB'k0LJcEpn"mon'!$/M!j6>S)_`*)~> -!BpJTm/X,trrB$LmFpq2hHU']/]rYEJcEdj"j/Cs!F4K4mHa-?eieN~> -!BU8Qkl@9drrAU@l.YA*g0+LW/]rYEJcEdj"j/Cs!F"3.l0IR7c8pI~> -!B:&NirG%MrrA"/j4`MseQ;hP/]rYEJcEdj"j/Cs!Edm'j6P_+_`*)~> -!BpJTm/X,trrB$LmG%"3UDNt:LAQQ%JcE^h"oF#[!#VJ^mHj3@eieN~> -!BU8Qkl@9drrAU@l.bG+TGRY7LAQQ%JcE^h"oF#[!#VA[l0RX8c8pI~> -!B:&NirG%MrrA"/j4iStS/2/2LAQQ%JcE^h"oF#[!#M/Vj6Ye,_`*)~> -!BpJTm/X,trrB$LmG7.5fMDPJ4P55bJcERd"kYp;!)V=!mI'?BeieN~> -!BU8Qkl@9drrAU@l.tS-e4ouD4P55bJcERd"kYp;!)D$pl0dd:c8pI~> -!B:&NirG%MrrA"/j5&`!cV+<=4P55bJcERd"kYp;!)1^ij6kq._`*)~> -!BpJTm/X,trrB$LmG@46S.Yf2PPp(4JcELb"oXVo!"tfQmI0ECeieN~> -!BU8Qkl@9drrAU@l/(Y.R1TE.PPp(4JcELb"oXVo!"kWMl0mj;c8pI~> -!B:&NirG%MrrA"/j5/f"Pn=!*PPp(4JcELb"oXVo!"kKIj6u"/_`*)~> -!BpJTm/X,trrB$LmGR@8gJIqN6fWatJcE@^"lhrM!)_L%mIBQEeieN~> -!BU8Qkl@9drrAU@l/:e0fM;JI6fWatJcE@^"lhrM!)M6ul1+!=c8pI~> -!B:&NirG%MrrA"/j5Ar$dS0]A6fWatJcE@^"lhrM!):mmj72.1_`*)~> -!BpJTm/X,tmJs5;mG[F9W##FCRf7m -!BU8Qkl@9dmJrf/l/Ck1VAB4ARf7mc8pI~> -!B:&NirG%MmJr2sj5K#%Tb[V;Rf7m -!BpJTm/X,tmJs5;mGmR;iEcNb52LkjJcE.X"l;EC!FF`9mI]cHeieN~> -!BU8Qkl@9dmJrf/l/V"3h-9s\52LkjJcE.X"l;EC!F4H3l1F3@c8pI~> -!B:&NirG%MmJr2sj5]/'f3/1T52LkjJcE.X"l;EC!F"*+j7M@4_`*)~> -!BpJTm/X,tmJs5;mH!X-JcE(V"oXAc!$BF9mIfiIeieN~> -!BU8Qkl@9dmJrf/l/_(4a;t-JcE(V"oXAc!$944l1O9Ac8pI~> -!B:&NirG%MmJr2sj5f5(_]8^_N;\>-JcE(V"oXAc!$/t.j7VF5_`*)~> -!BpJTm/X,tmJs5;mH3d>l?EF31Y%'VJcDqR"k>C/"F03_mJ#uKeieN~> -!BU8Qkl@9dmJrf/l/q46k&pk-1Y%'VJcDqR"k>C/"ErpYl1aECc8pI~> -!B:&NirG%MmJr2sj6#A*i,]#$1Y%'VJcDqR"k>C/"EWLPj7hR7_`*)~> -!BpJTm/X,tmJs5;mH -!BU8Qkl@9dmJrf/l0%:7c8Ye*Gl!!kJcDkP"o -!B:&NirG%MmJr2sj6,G+a>O#"Gl!!kJcDkP"o -!BpJTm/X-`mJsT0mJs5;mHEp?T+CuA]n-37s/H#$]c-q_T7QD*m/bd$J,~> -!BU8Qkl@:PmJsT0mJrf/l0.@7SIbc?]n-37s/H#$]c-q_SUp&$klK'jJ,~> -!B:&NirG&9mJsT0mJr2sj65M+R1B9:]n-37s/H#$]c-q^R=XDoirR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zbu22WIaI&m01T]!""qiJcC<$V>g_uPmIF?aarjWm/bd$J,~> -!BU8Qkl@:PmK*A%Zbu22SUp%kklo'U!""qiJcC<$V>g_uPmIF>`e!CPklK'jJ,~> -!B:&NirG&9mK*A%Zbu22N.L$Tis!4H!""qiJcC<$V>g_uPmIF=^k(PDirR%VJ,~> -!BpJTm/X-`mK3I)'=7;u!!)oa!!(a@!3(P:m-OqG$ih -!BU8Qkl@:PmK3I)'=7;u!!)oa!!(a@!1e]*m-+Y@$ih -!B:&NirG&9mK3I)'=7;u!!)oa!!(a@!/uKhm,J56$ih -!BpJTm/X-`mK4[=FJcDAB"nPmt!+P,BmJlPSeieN~> -!BU8Qkl@:PmKj'Vie>4[=FJcDAB"nPmt!+=i -!B:&NirG&9mK4[=FJcDAB"nPmt!++K4j8\-?_`*)~> -!BpJTm/X-`mKEUjs1f;Sp$Me[qsFFag?ns?JaMpn"O8\$#a^,BJcD5>"IBAo0[>7:!q"Q%J,~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsFFag?ns3Ja)Xf"NrFu#a^,BJcD5>"IBAo0?\q2!pRukJ,~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsFFag?ns"J`H4Z"NE%o#a^,BJcD5>"IBAo0#iJ&!oq0WJ,~> -!BpJTm/X-`mJm7drrR`OjnA*B!;l0a!8?i@WIaI+m0'^*!$fa>s+13 -!BU8Qkl@:PmJm7drrR`OjnA*B!;l0a!8?i@SUp%pkle1#!$fa>s+13 -!B:&NirG&9mJm7drrR`OjnA*B!;l0a!8?i@N.L$Yirl@l!$fa>s+13 -!BpJTm/X-`mKEUjs1f;Sp$Me[qsFFag?ns?JaN$q"mgU -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsFFag?ns3Ja)ai"mC76!(ca5s+13:rrr$c!!7K1KBWE^3e.~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsFFag?ns"J`H=]"la_-!(ca5s+13:rrr$c!!7B(KB!!M2h1~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=7;u!?AuTmK(-Fg?ns?JaN*s"Nr1n&@I)hJcCl4"LSd@.*I>3!S0Da~> -!BU8Qkl@:PmK3I)'=7;u!?AuTmK(-Fg?ns3Ja)gk"NMki&@I)hJcCl4"LSd@-c^r*!R<`V~> -!B:&NirG&9mK3I)'=7;u!?AuTmK(-Fg?ns"J`HC_"MuJc&@I)hJcCl4"LSd@-GkJs!Q-jH~> -!BpJTm/X-`mK*A%Zh!MhIPA@rkIWEtg?ns?JaN-t"L&76/)#RSJcCf2"PP@+$a>BQ!S0Da~> -!BU8Qkl@:PmK*A%Zh!MhIPA@rkIWEtg?ns3Ja)jl"K`%3/)#RSJcCf2"PP@+$a#0J!R<`V~> -!B:&NirG&9mK*A%Zh!MhIPA@rkIWEtg?ns"J`HF`"K2\./)#RSJcCf2"PP@+$`Jg?!Q-jH~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs5;mJ-&Ok["5iO+I=^s,$aYNr]5ek_\[-eieN~> -!BU8Qkl@:PmJsT0mJrf/l1jKGjBV`dO+I=^s,$aYNr]5djGE+%c8pI~> -!B:&NirG&9mJsT0mJr2sj7qX;hc^!\O+I=^s,$aYNr]5ahhg@o_`*)~> -!BpJTm/X,tmJs5;mJ6,PgcYWDWe(2$s+gUWWX/YggktJ"eieN~> -!BU8Qkl@9dmJrf/l1sQHffT6@We(2$s+gUWWX/Yffo#"pc8pI~> -!B:&NirG%MmJr2sj8%^ -!BpJTm/X,tmJs5;mJ?2Qas-m(b(9SDs+UIUar(1(b)>WfeieN~> -!BU8Qkl@9dmJrf/l2'WI`ZkI$b(9SDs+UIUar(1(`f''^c8pI~> -!B:&NirG%MmJr2sj8.d=_'/jsb(9SDs+UIUar(1'_2I=S_`*)~> -!BpJTm/X,tmJs5;mJH8RZNgIbj+75]s+C=Sj"UN=Z]+8PeieN~> -!BU8Qkl@9dmJrf/l20]JYQk._j+75]s+C=Sj"UN=Y`.fIc8pI~> -!B:&NirG%MmJr2sj87j>Ws8VZj+75]s+C=Sj"UN=X,Q'>_`*)~> -!BpJTm/X,tmJs5;mJQ>SRg/phoR[$ns+11QoM5GlRuQe9eieN~> -!BU8Qkl@9dmJrf/l29cKQj*OdoR[$ns+11QoM5GkR#U>2c8pI~> -!B:&NirG%MmJr2sj8@p?PQh+`oR[$ns+11QoM5GkP`=](_`*)~> -!BpJTm/X,tmJs5;mJZDTJH5airIP!"s+14Mrri:>!!.Y2m/bd$J,~> -!BU8Qkl@9dmJrf/l2BiLIfTOgrIP!"s+14Mrri:>!!.S0klK'jJ,~> -!B:&NirG%MmJr2sj8J!@HN=+crIP!"s+14Mrri:>!!.G,irR%VJ,~> -!BpJTm/X,tmJs5;mJlPVl=9krNe.4]s+14Irre>`!+bAVm/bd$J,~> -!BU8Qkl@9dmJrf/l2TuNk$e;lNe.4]s+14Irre>`!+P)PklK'jJ,~> -!B:&NirG%MmJr2sj8\-Bi*ZNdNe.4]s+14Irre>`!+=`HirR%VJ,~> -!BpJTm/X,tmJs5;m02n=9)o6tJcC<$JcGQG"KD_-9BD<'!S0Da~> -!BU8Qkl@9dmJrf/klp>18cT-sJcC<$JcGQG"KD_-9&Yos!R<`V~> -!B:&NirG%MmJr2sis"Jt8,rpqJcC<$JcGQG"KD_-8DB9e!Q-jH~> -!BpJTm/X,trrB$Lm0)H)!#!/"s+13$s7cNr_@ci(j-&d1eieN~> -!BU8Qkl@9drrAU@klflu!#!/"s+13$s7cNr_@ci'hid4)c8pI~> -!B:&NirG%MrrA"/irn$h!#!/"s+13$s7cNr_@ci&fok@r_`*)~> -!BpJTm/X,trrB$Mm0(ui!$0mHs+13$s7QBph&QJFes#J%eieN~> -!BU8Qkl@9drrAUAklfE`!$0mHs+13$s7QBph&QJEdZ`nrc8pI~> -!B:&NirG%MrrA"0irmUT!$0mHs+13$s7QBph&QJDc'./g_`*)~> -!BpJTm/X,trrB$Nm0(]W!%R&\s+13$s7?6nj=1-PcBR\seieN~> -!BU8Qkl@9drrAUBklf-O!%R&\s+13$s7?6nj=1-Pb*;,kc8pI~> -!B:&NirG%MrrA"1irm=C!%R&\s+13$s7?6nj=1-O`K]B`_`*)~> -!BpJTm/X,trrB$Om0(?E!&j1ps+13$s7-*llo"h\`0K]jeieN~> -!BU8Qkl@9drrAUCkleg>!&j1ps+13$s7-*llo"h\_3O6cc8pI~> -!B:&NirG%MrrA"2irm"2!&j1ps+13$s7-*llo"h[]TqLX_`*)~> -!BpJTm/X,trrB$Pm0's3!(6=.s+13$s6osjnj -!BU8Qkl@9drrAUDkleF+!(6=.s+13$s6osjnj -!B:&NirG%MrrA"3irlUu!(6=.s+13$s6osjnj -!BpJTm/X-`rrBjNrrB$Qm0'Wr!)`NBs+13$s6]ghpe_"oYa=_XeieN~> -!BU8Qkl@:PrrBjNrrAUEkle*k!)`NBs+13$s6]ghpe_"oXdA8Qc8pI~> -!B:&NirG&9rrBjNrrA"4irl:`!)`NBs+13$s6]ghpe_"oW0cNF_`*)~> -!BpJTm/X-`rrE,8_Z'V8L[>5E#QRp'JcC<$JcG'9"T2:##ca9Z!S0Da~> -!BU8Qkl@:PrrE,8_Z'V,LZnr>#QRp'JcC<$JcG'9"T2:##cF'S!R<`V~> -!B:&NirG&9rrE,8_Z'UpLZ8N4#QRp'JcC<$JcG'9"T2:##c!dI!Q-jH~> -!BpJTm/X-`rrN07^r-0PWJKpEV?[*9rdk*#s+147rri=9!!fBhm/bd$J,~> -!BU8Qkl@:PrrN07^r-0PSVZM5UBU^5rdk*#s+147rri=9!!]3dklK'jJ,~> -!B:&NirG&9rrN07^r-0PN/6KsT*>:1rdk*#s+147rri=9!!]'`irR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?rr<0&%PW+lg&D&OM"orT@JcC<$JcFp5"TE<>#,.LQ!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?rr<0&%PW+lg&D&CM

#+h:J!R<`V~> -!B:&NirG&9rrW8:'Ys>?rr<0&%PW+lg&D&2M;n`-"TWK?JcC<$JcFp5"TE<>"e(n?!Q-jH~> -!BpJTm/X-`rr`?%^_FTVrs&Q(s7FQQ)W09K!3(kC".TJoFb0RDs+141rr[BD"IttK!S0Da~> -!BU8Qkl@:Prr`?%^_FTVrs&Q(s7FQQ)W09K!1f#3".B>mFb0RDs+141rr[BD"IbhE!R<`V~> -!B:&NirG&9rr`?%^_FTVrs&Q(s7FQQ)W09K!/ufq"-s&iFb0RDs+141rr[BD"I>P;!Q-jH~> -!BpJTm/X-`rriE&s1f>ap&>!lr;QeH>h]2XWJg-GU&k=AJcC<$JcF^/"+("LU7CTOeieN~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;QeH>h]2XSVu_7T)o">JcC<$JcF^/"+("LT:G-Hc8pI~> -!B:&NirG&9rriE&s1f>ap&>!lr;QeH>h]2XN/Q]uRfWS:JcC<$JcF^/"+("LS"/L>_`*)~> -!BpJTm/X-`rr<&urrR`Op%JCc!;uitiY^DL!3(qE".TGnJq -!BU8Qkl@:Prr<&urrR`Op%JCc!;uitiY^DL!1f)5".B;lJq -!B:&NirG&9rr<&urrR`Op%JCc!;uitiY^DL!/uls"-s#hJq -!BpJTm/X-`rriE&s1f>ap&>!lr;Qfo"krtVWK$9IT`b@IJcC<$JcFR+"+gLUTq:WPeieN~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;Qfo"krtVSW2k9Scf%FJcC<$JcFR+"+gLUSt>0Ic8pI~> -!B:&NirG&9rriE&s1f>ap&>!lr;Qfo"krtVN/cj"RKNVBJcC<$JcFR+"+gLUR\&O?_`*)~> -!BpJTm/X-`rr`?%^_FTVrr<&srrM'qgA_/PNpQqG"os"$s+13$s4dPUHN48ITBu[14b*~> -!BU8Qkl@:Prr`?%^_FTVrr<&srrM'qgA_/DNp-Y@"os"$s+13$s4dPUHN48FTBQC%3e.~> -!B:&NirG&9rr`?%^_FTVrr<&srrM'qgA_/3NoL56"TWn#s+13$s4dPUHN45ATAosi2h1~> -!BpJTm/X-`rrW8:'Ys>?!!)rs!I\2+rrB$Zm/s?n!-NkmJcC<$g&D.s!!fNsm/bd$J,~> -!BU8Qkl@:PrrW8:'Ys>?!!)rs!I\2+rrAUNkl[gf!-NkmJcC<$g&D.s!!]?oklK'jJ,~> -!B:&NirG&9rrW8:'Ys>?!!)rs!I\2+rrA"=irc%\!-NkmJcC<$g&D.s!!]3kirR%VJ,~> -!BpJTm/X-`rrN07_".L1!<<)lc#+BSgA_/POR3.W#68[ns+13$s4@8QDZC$LU$Vm34b*~> -!BU8Qkl@:PrrN07_".L1!<<)lc#+BSgA_/DOQckP#68[ns+13$s4@8QDZC$IU$2U'3e.~> -!B:&NirG&9rrN07_".L1!<<)lc#+BSgA_/3OQ-GE#68[ns+13$s4@8QDZC$DU#Q0k2h1~> -!BpJTm/X-`rrE,8nc/Uh"9AoaFm.NY!3)+J"M"j>CAreaJcC<$fDc!QC&eUOU?r!44b*~> -!BU8Qkl@:PrrE,8nc/Uh"9AoaFm.NY!1f8:"L\X;CAreaJcC<$fDc!QC&eULU?M^(3e.~> -!B:&NirG&9rrE,8nc/Uh"9AoaFm.NY!0!'#"L/:6CAreaJcC<$fDc!QC&eUGU>l9l2h1~> -!BpJTm/X-`rrBjNrrB$]m/t9=!+(6VJcC<$e,KMV!"m/Em/bd$J,~> -!BU8Qkl@:PrrBjNrrAUQkl\a5!+(6VJcC<$e,KMV!"cuAklK'jJ,~> -!B:&NirG&9rrBjNrrA"@ircq*!+(6VJcC<$e,KMV!"cf -!BpJTm/X,trrB$^m0(]O!)`WEs+13$s3puNqb[>1cD9h.eieN~> -!BU8Qkl@9drrAURklf-G!)`WEs+13$s3puNqb[>1b,"8&c8pI~> -!B:&NirG%MrrA"Airm=;!)`WEs+13$s3puNqb[>0`MDMp_`*)~> -!BpJTm/X,trrB$_m0(u_!(6O4s+13$s3^iLpd5$(etqa7eieN~> -!BU8Qkl@9drrAUSklfEW!(6O4s+13$s3^iLpd5$(d\Z1/c8pI~> -!B:&NirG%MrrA"BirmUK!(6O4s+13$s3^iLpd5$'c)'G$_`*)~> -!BpJTm/X,trrB$`m0)5p!&jD!s+13$s3L]JnhpIth59Q?eieN~> -!BU8Qkl@9drrAUTklf]h!&jD!s+13$s3L]JnhpIsg8=*8c8pI~> -!B:&NirG%MrrA"Cirmj[!&jD!s+13$s3L]JnhpIre>D7,_`*)~> -!BpJTm/X,trrB$am0)T,!%R>ds+13$s3:QHlm_uikGR\JeieN~> -!BU8Qkl@9drrAUUklg'$!%R>ds+13$s3:QHlm_uhjJV5Cc8pI~> -!B:&NirG%MrrA"Dirn3l!%R>ds+13$s3:QHlm_ughP]B7_`*)~> -!BpJTm/X,trrB$bm0)]I!$:NYs+13$s3(EFm2c7#lDX(NeieN~> -!BU8Qkl@9drrAUVklg-@!$:NYs+13$s3(EFm2c7"k,@MFc8pI~> -!B:&NirG%MrrA"Eirn:2!$:NYs+13$s3(EFm2c6ui2GZ:_`*)~> -!BpJTm/X,trrB$bm/pl!'%VX6JcC<$ao;Io&ccI@m/bd$J,~> -!BU8Qkl@9drrAUVklYAp'%VX6JcC<$ao;Io&ccC>klK'jJ,~> -!B:&NirG%MrrA"Eir`Zh'%VX6JcC<$ao;Io&cc= -!BpJTm/X,trrB$cm/qn>#f;/mJcC<$a8Z7Y#QTFTm/bd$J,~> -!BU8Qkl@9drrAUWklZD8#f;/mJcC<$a8Z7Y#QT@RklK'jJ,~> -!B:&NirG%MrrA"FiraW.#f;/mJcC<$a8Z7Y#QT4NirR%VJ,~> -!BpJTm/X,tmJs5Sm/rgY!ighOJcC<$`W$%?!Wedjm/bd$J,~> -!BU8Qkl@9dmJrfGkl[:R!ighOJcC<$`W$%?!We[gklK'jJ,~> -!B:&NirG%MmJr36irbMH!ighOJcC<$`W$%?!WeOcirR%VJ,~> -!BpJTm/X,tmJs5Tm/sg%!02X1JcC<$_uBh!!!]p5m/bd$J,~> -!BU8Qkl@9dmJrfHkl\9r!02X1JcC<$_uBh!!!Ta1klK'jJ,~> -!B:&NirG%MmJr37ircLh!02X1JcC<$_uBh!!!TU-irR%VJ,~> -!BpJTm/X,tmJs5Um/tKB!-!MhJcC<$_>aUV!"d;Sm/bd$J,~> -!BU8Qkl@9dmJrfIkl\p9!-!MhJcC<$_>aUV!"[)NklK'jJ,~> -!B:&NirG%MmJr38ird+.!-!MhJcC<$_>aUV!"ZoIirR%VJ,~> -!BpJTm/X,tmJs5Vm/u,g!)\=IJcC<$^]+C5!$g:$m/bd$J,~> -!BU8Qkl@9dmJrfJkl]T`!)\=IJcC<$^]+C5!$g1!klK'jJ,~> -!B:&NirG%MmJr39irdaS!)\=IJcC<$^]+C5!$]moirR%VJ,~> -!BpJTm/X,tmJs5Wm0)W9!&=+ss+13$s1eR:oJ$>/kcX:ReieN~> -!BU8Qkl@9dmJrfKklg'0!&=+ss+13$s1eR:oJ$>.jK@_Jc8pI~> -!B:&NirG%MmJr3:irn7$!&=+ss+13$s1eR:oJ$>-hlbu?_`*)~> -!BpJTm/X-`mJsT0mJs5Wm/pYp)<6;JJcC<$^&J2p)$"!Gm/bd$J,~> -!BU8Qkl@:PmJsT0mJrfKklY2k)<6;JJcC<$^&J2p)$!sFklK'jJ,~> -!B:&NirG&9mJsT0mJr3:ir`Hb)<6;JJcC<$^&J2p)$!jCirR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zbu22WLrP[Y5n[(JcC<$JcE:\"0)A&YH[BpeieN~> -!BU8Qkl@:PmK*A%Zbu22SY,-KX8r@%JcC<$JcE:\"0)A&XK^pic8pI~> -!B:&NirG&9mK*A%Zbu22N1],4VuZq!JcC<$JcE:\"0)A&W3G:__`*)~> -!BpJTm/X-`mK3I)'=7?!q>f19!3)XY"3V2TJq -!BU8Qkl@:PmK3I)'=7?!q>f19!1feI"31oPJq!R<`V~> -!B:&NirG&9mK3I)'=7?!q>f19!0!T2"2YNJJq -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mKirn!]!)rlJs+13$s0r"2r_ieDfWsN<_`*)~> -!BpJTm/X-`mKEUjs1f;SoBlSYea -!BU8Qkl@:PmKEUjs1f;SoBlSYea -!B:&NirG&9mKEUjs1f;SoBlSYealC98cUC4JcC<$JcE.X"S+&C9&d2;!Q-jH~> -!BpJTm/X-`mJm7drrR`Ojn.s@!7gK;WM8b^HiO`3JcC<$JcE(V"54:dI'`2@eieN~> -!BU8Qkl@:PmJm7drrR`Ojn.s@!7gK;SYG?NH2nN1JcC<$JcE(V"54:dHF)i:c8pI~> -!B:&NirG&9mJm7drrR`Ojn.s@!7gK;N2#>7G5r3.JcC<$JcE(V"54:dGI-<1_`*)~> -!BpJTm/X-`mKEUjs1f;SoBlSYea -!BU8Qkl@:PmKEUjs1f;SoBlSYea -!B:&NirG&9mKEUjs1f;SoBlSYea -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=75s!!(R;!3)g^"QqH=8cF;@JcC<$YQ"b)8H:I-[d=+H4b*~> -!BU8Qkl@:PmK3I)'=75s!!(R;!1ftN"QM-88cF;@JcC<$YQ"b)8H:F([cmh<3e.~> -!B:&NirG&9mK3I)'=75s!!(R;!0!c7"Pk[18cF;@JcC<$YQ"b)8H:C![c7D+2h1~> -!BpJTm/X-`mK*A%ZgdA_!7gK;WMSta@K7YAJcC<$JcDkP"7IH7@^bY)eieN~> -!BU8Qkl@:PmK*A%ZgdA_!7gK;SYbQQ?iVG?JcC<$JcDkP"7IH7@(,;#c8pI~> -!B:&NirG&9mK*A%ZgdA_!7gK;N2>P:?2u5=JcC<$JcDkP"7IH7?FJkp_`*)~> -!BpJTm/X-`mK!\*X4I4b*~> -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs5am/tH=!1/9:JcC<$WW*'e!"?uZm/bd$J,~> -!BU8Qkl@:PmJsT0mJrfUkl\p6!1/9:JcC<$WW*'e!"?lWklK'jJ,~> -!B:&NirG&9mJsT0mJr3Dird(*!1/9:JcC<$WW*'e!"?ZQirR%VJ,~> -!BpJTm/X,tmJs5bm/uE!!*XsRJcC<$VuHj&!%R'?m/bd$J,~> -!BU8Qkl@9dmJrfVkl]im!*XsRJcC<$VuHj&!%Hj:klK'jJ,~> -!B:&NirG%MmJr3Eire!`!*XsRJcC<$VuHj&!%?R3irR%VJ,~> -!BpJTm/X,tmJs5bm/pVo.J&,jJcC<$VuHkj.0*Yam/bd$J,~> -!BU8Qkl@9dmJrfVklY,i.J&,jJcC<$VuHkj.0*S_klK'jJ,~> -!B:&NirG%MmJr3Eir`Ea.J&,jJcC<$VuHkj.0*M]irR%VJ,~> -!BpJTm/X,tmJs5cm/rs\#1nG+JcC<$V>gYL"ot:,m/bd$J,~> -!BU8Qkl@9dmJrfWkl[IV#1nG+JcC<$V>gYL"ot4*klK'jJ,~> -!B:&NirG%MmJr3Firb\L#1nG+JcC<$V>gYL"ot(&irR%VJ,~> -!BpJTm/X,tmJs5dm/t`I!0r-8JcC<$U]1F]!"dPim/bd$J,~> -!BU8Qkl@9dmJrfXkl]3B!0r-8JcC<$U]1F]!"dGfklK'jJ,~> -!B:&NirG%MmJr3Gird@5!0r-8JcC<$U]1F]!"[/_irR%VJ,~> -!BpJTm/X,tmJs5em0)]6!)NTFs+13$s.fSsr_EMRlFcKbeieN~> -!BU8Qkl@9dmJrfYklg-.!)NTFs+13$s.fSsr_EMRk.KpZc8pI~> -!B:&NirG%MmJr3Hirn9u!)NTFs+13$s.fSsr_EMPi4S(N_`*)~> -!BpJTm/X,tmJs5em/qS5)s`(TJcC<$U&P5\)ZY,qm/bd$J,~> -!BU8Qkl@9dmJrfYklZ)/)s`(TJcC<$U&P5\)ZY&oklK'jJ,~> -!B:&NirG%MmJr3Hira?&)s`(TJcC<$U&P5\)ZXrlirR%VJ,~> -!BpJTm/X,tmJs5fm/sd"!kj0bJcC<$TDo#,!X,sFm/bd$J,~> -!BU8Qkl@9dmJrfZkl\6p!kj0bJcC<$TDo#,!X,jCklK'jJ,~> -!B:&NirG%MmJr3IircIf!kj0bJcC<$TDo#,!X,^?irR%VJ,~> -!BpJTm/X,trrB%#m/u>g!-j(pJcC<$Sc8e:!$1(5m/bd$J,~> -!BU8Qkl@9drrAUlkl]c^!-j(pJcC<$Sc8e:!$'k0klK'jJ,~> -!B:&NirG%MrrA"[irdpQ!-j(pJcC<$Sc8e:!#sS)irR%VJ,~> -!BpJTm/X,trrB%#m/pYp./JMpJcC<$Sc8fg-idSfm/bd$J,~> -!BU8Qkl@9drrAUlklY/j./JMpJcC<$Sc8fg-idMdklK'jJ,~> -!B:&NirG%MrrA"[ir`Hb./JMpJcC<$Sc8fg-idGbirR%VJ,~> -!BpJTm/X,trrB%$m/s9f#h=M+JcC<$S,WT@#Q^m=m/bd$J,~> -!BU8Qkl@9drrAUmkl[d`#h=M+JcC<$S,WT@#Q^g;klK'jJ,~> -!B:&NirG%MrrA"\irbtU#h=M+JcC<$S,WT@#Q^X6irR%VJ,~> -!BpJTm/X,trrB%%m/u)Z!/uL/JcC<$RK!AJ!#OD*m/bd$J,~> -!BU8Qkl@9drrAUnkl]QS!/uL/JcC<$RK!AJ!#O;'klK'jJ,~> -!B:&NirG%MrrA"]ird^F!/uL/JcC<$RK!AJ!#F"uirR%VJ,~> -!BpJTm/X,trrB%%m/p2c55g'4JcC<$RK!Bf4oeHqm/bd$J,~> -!BU8Qkl@9drrAUnklX]]55g'4JcC<$RK!Bf4oeBoklK'jJ,~> -!B:&NirG%MrrA"]ir`!U55g'4JcC<$RK!Bf4oe -!BpJTm/X-`rrBjNrrB%&m/rjY%Gl[9JcC<$Qi@0E%02p7m/bd$J,~> -!BU8Qkl@:PrrBjNrrAUokl[=R%Gl[9JcC<$Qi@0E%02g4klK'jJ,~> -!B:&NirG&9rrBjNrrA"^irbPH%Gl[9JcC<$Qi@0E%02[0irR%VJ,~> -!BpJTm/X-`rrE,8_Z'V8Z0_YI&HJ8Ns+13$s- -!BU8Qkl@:PrrE,8_Z'V,Z0;AB&-//Ms+13$s- -!B:&NirG&9rrE,8_Z'UpZ/Yr6&-//Ms+13$s- -!BpJTm/X-`rrN07^r-0PWNkgl:]Nt9s+13$s-*Ha7K?9%m/bd$J,~> -!BU8Qkl@:PrrN07^r-0PS[%D\:&mb7s+13$s-*Ha7K?3#klK'jJ,~> -!B:&NirG&9rrN07^r-0PN3VCE9E7P5s+13$s-*Ha7K?-!irR%VJ,~> -!BpJTm/X-`rrW8:'Ys>?!!)or!!(aQ!3*9k"/>i*i.:oZs+136rr_0g!2II!!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?!!)or!!(aQ!1gF["/#W'i.:oZs+136rr_0g!2.6o!R<`V~> -!B:&NirG&9rrW8:'Ys>?!!)or!!(aQ!0"5D".T?#i.:oZs+136rr_0g!1^se!Q-jH~> -!BpJTm/X-`rr`?%^_FTVrr<&rrr<&QrrB%)m/u2^!0`!6JcC<$OoGNI!#XS2m/bd$J,~> -!BU8Qkl@:Prr`?%^_FTVrr<&rrr<&QrrAUrkl]WV!0`!6JcC<$OoGNI!#XG.klK'jJ,~> -!B:&NirG&9rr`?%^_FTVrr<&rrr<&QrrA"airdgJ!0`!6JcC<$OoGNI!#O2(irR%VJ,~> -!BpJTm/X-`rriE&s1f>ap&>!lqu6p%s8UnL$jT8bir9"XZg@j"!'L42s+13$s,m<`rB('b`9dTV -4b*~> -!BU8Qkl@:PrriE&s1f>ap&>!lqu6p%s8UnL$jT8bir9"LZfqQq!'L42s+13$s,m<`rB('``9@ -!B:&NirG&9rriE&s1f>ap&>!lqu6p%s8UnL$jT8bir9";Zf;-i!'L42s+13$s,m<`rB('^`8^m9 -2h1~> -!BpJTm/X-`rr<&urrR`Op%JCc!;ld%!<<'L^@q&7=Q9>\WO2$pY5np]JcC<$JcCf2"5!k[YJol0 -eieN~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;ld%!<<'L^@q&7=Q9>\S[@V`X8rUZJcC<$JcCf2"5!k[XMsE) -c8pI~> -!B:&NirG&9rr<&urrR`Op%JCc!;ld%!<<'L^@q&7=Q9>\N3qUIVu[1VJcC<$JcCf2"5!k[W5[ct -_`*)~> -!BpJTm/X-`rriE&s1f>ap&>!lqu6Wrqu6]i']T,mWO;*qk8aPWJcC<$JcC`0",6drkJllieieN~> -!BU8Qkl@:PrriE&s1f>ap&>!lqu6Wrqu6]i']T,mS[I\aiuA&RJcC<$JcC`0",6dqj2U -!B:&NirG&9rriE&s1f>ap&>!lqu6Wrqu6]i']T,mN4%[Jh&??KJcC<$JcC`0",6dph8\IU_`*)~> -!BpJTm/X-`rr`?%^_FTVrrE3!rVm3%!rr;@4UV5i!TO+ZWO;*qEW@clJcC<$JcC`0"9'qRElRJI -eieN~> -!BU8Qkl@:Prr`?%^_FTVrrE3!rVm3%!rr;@4UV5i!TO+ZS[I\aDu_QjJcC<$JcC`0"9'qRE5q,C -c8pI~> -!B:&NirG&9rr`?%^_FTVrrE3!rVm3%!rr;@4UV5i!TO+ZN4%[JD#c6gJcC<$JcC`0"9'qRD8tT: -_`*)~> -!BpJTm/X-`rrW8:'Ys>?!?TVdrs@!os8O(;nG_tYir9"X[d=1<"p2eqs+13$s,6mZ`W?@ca6`oY -4b*~> -!BU8Qkl@:PrrW8:'Ys>?!?TVdrs@!os8O(;nG_tYir9"L[cmn5"Tl\ps+13$s,6mZ`W?=_a6 -!B:&NirG&9rrW8:'Ys>?!?TVdrs@!os8O(;nG_tYir9";[c7J*"Tl\ps+13$s,6mZ`W?=Za5[3< -2h1~> -!BpJTm/X-`rrN07_".L9LGR!GprG7Is8Nb:pt\sNir9"X\*X:a49/uEs+13$s,$aXAcOs[aR'#Z -4b*~> -!BU8Qkl@:PrrN07_".L9LGR!GprG7Is8Nb:pt\sNir9"L\*4"Y3rilDs+13$s,$aXAcOpVaQW`N -3e.~> -!B:&NirG&9rrN07_".L9LGR!GprG7Is8Nb:pt\sNir9";\)RSM3WNcCs+13$s,$aXAcOmOaQ!<= -2h1~> -!BpJTm/X-`rrE,8nc'.!Ot?nD/X$,5s0m\F'`aWBm/bd$ -J,~> -!BU8Qkl@:PrrE,8nc'.!Ot?nD/X$,5s0m\F'`aN?klK'j -J,~> -!B:&NirG&9rrE,8nc'.!Ot?nD/X$,5s0m\F'`aB;irR%V -J,~> -!BpJTm/X-`rrBjNrrB%.m/u/Z!2+oCJcC<$L]7IL!#=>3m/bd$J,~> -!BU8Qkl@:PrrBjNrrAV"kl]WS!2+oCJcC<$L]7IL!#=50klK'jJ,~> -!B:&NirG&9rrBjNrrA"firddF!2+oCJcC<$L]7IL!#3r)irR%VJ,~> -!BpJTm/X,trrB%.m/pbs5Q666JcC<$L]7JU56,-6m/bd$J,~> -!BU8Qkl@9drrAV"klY;n5Q666JcC<$L]7JU56,*5klK'jJ,~> -!B:&NirG%MrrA"fir`Qe5Q666JcC<$L]7JU56,!2irR%VJ,~> -!BpJTm/X,trrB%/m/t0,!nW#'JcC<$L&V8,!X$9]m/bd$J,~> -!BU8Qkl@9drrAV#kl\X%!nW#'JcC<$L&V8,!X$0ZklK'jJ,~> -!B:&NirG%MrrA"gircgo!nW#'JcC<$L&V8,!X$!UirR%VJ,~> -!BpJTm/X,trrB%/m/f -!BU8Qkl@9drrAV#klNjFEIn.@s+13&rrR0?3QgRec8pI~> -!B:&NirG%MrrA"girV1?EIn.@s+13&rrR0?36L7^_`*)~> -!BpJTm/X,trrB%0m/rmZ(@QhSJcC<$KDu&B(''oKm/bd$J,~> -!BU8Qkl@9drrAV$kl[CT(@QhSJcC<$KDu&B(''iIklK'jJ,~> -!B:&NirG%MrrA"hirbVJ(@QhSJcC<$KDu&B('']EirR%VJ,~> -!BpJTm/X,trrB%1m/uDh!1JK=JcC<$Jc>h@!$((Dm/bd$J,~> -!BU8Qkl@9drrAV%kl]i_!1JK=JcC<$Jc>h@!#sk?klK'jJ,~> -!B:&NirG%MrrA"iire!S!1JK=JcC<$Jc>h@!#sY9irR%VJ,~> -!BpJTm/X,trrB%1m/qM31Aue(JcC<$Jc>iN1&uLAm/bd$J,~> -!BU8Qkl@9drrAV%klZ#-1Aue(JcC<$Jc>iN1&uF?klK'jJ,~> -!B:&NirG%MrrA"iira9$1Aue(JcC<$Jc>iN1&u= -!BpJTm/X,trrB%2m/tiC!Q0KgJcC<$JcGcM"2b-EeBR@]eieN~> -!BU8Qkl@9drrAV&kl]9;!Q0KgJcC<$JcGcM"2b-Ed*:eUc8pI~> -!B:&NirG%MrrA"jirdI0!Q0KgJcC<$JcGcM"2b-EbK]&J_`*)~> -!BpJTm/X,tmJs6!m/g5e=b6U(s+13$s8Ds!=TDFGm/bd$J,~> -!BU8Qkl@9dmJrfjklOc`=b6U(s+13$s8Ds!=TDCFklK'jJ,~> -!B:&NirG%MmJr3YirW'X=b6U(s+13$s8Ds!=TD=DirR%VJ,~> -!BpJTm/X,tmJs6"m/t*)#iL:6JcC<$JcG]K"5jFd^Wu3IeieN~> -!BU8Qkl@9dmJrfkkl\O!#iL:6JcC<$JcG]K"5jFd]?]XAc8pI~> -!B:&NirG%MmJr3Zircal#iL:6JcC<$JcG]K"5jFd\'F"7_`*)~> -!BpJTm/X,tmJs6"m/fENFb0RDs+13$s82ftFT=SMm/bd$J,~> -!BU8Qkl@9dmJrfkklNsIFb0RDs+13$s82ftFT=PLklK'jJ,~> -!B:&NirG%MmJr3ZirV:BFb0RDs+13$s82ftFT=MKirR%VJ,~> -!BpJTm/X,tmJs6#m/s9e'CLGOJcC<$JcGWI"7?g&W6ai3eieN~> -!BU8Qkl@9dmJrflkl[d_'CLGOJcC<$JcGWI"7?g&VU+K-c8pI~> -!B:&NirG%MmJr3[irbtT'CLGOJcC<$JcGWI"7?g&U!Ma"_`*)~> -!BpJTm/X,tmJs6$m/uW&!02X1JcC<$JcGQG"-*@1lHno!eieN~> -!BU8Qkl@9dmJrfmkl^&r!02X1JcC<$JcGQG"-*@0k0W>nc8pI~> -!B:&NirG%MmJr3\ire3e!02X1JcC<$JcGQG"-*@/i6^Kb_`*)~> -!BpJTm/X-`mJsT0mJs6$m/rIN,5?`hJcC<$JcGQG"8F&?OjNIreieN~> -!BU8Qkl@:PmJsT0mJrfmklZtH,5?`hJcC<$JcGQG"8F&?O3m+lc8pI~> -!B:&NirG&9mJsT0mJr3\irb2>,5?`hJcC<$JcGQG"8F&?MpUJb_`*)~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%ZfpfW!8[&CWPIm&K)d]Ys+13$s+14CrrOtVK@0&eeieN~> -!BU8Qkl@:PmK*A%ZfpfW!8[&CS\XIkJH.KWs+13$s+14CrrOtVJ^N]_c8pI~> -!B:&NirG&9mK*A%ZfpfW!8[&CN54HTIK20Ts+13$s+14CrrOtVIaR0V_`*)~> -!BpJTm/X-`mK3I)'=7;u!!)oa!s%cW!8[&CWPRs(iY)=#JcC<$JcC<$p&>-&!#+A?m/bd$J,~> -!BU8Qkl@:PmK3I)'=7;u!!)oa!s%cW!8[&CS\aOmh@fmtJcC<$JcC<$p&>-&!#+5;klK'jJ,~> -!B:&NirG&9mK3I)'=7;u!!)oa!s%cW!8[&CN5=NVfFn7nJcC<$JcC<$p&>-&!#+#5irR%VJ,~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;Sp$Me[qsF^imd:()'a\+-ipHfG_X.H]%fj@qs+13$s+14Arr^"9&)G_% -!S0Da~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsF^imd:()'a\+-ipHf;_W_0V%fj@qs+13$s+14Arr^"9&),Ls -!R<`V~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsF^imd:()'a\+-ipHf*_W(aJ%KO7ps+13$s+14Arr^"9%b/tf -!Q-jH~> -!BpJTm/X-`mJm7drrR`OjnA*B!;l0i!:K7T7G6?]DrU0bWP\$(E<&CXs+13$s+14?rrPRgERX:U -eieN~> -!BU8Qkl@:PmJm7drrR`OjnA*B!;l0i!:K7T7G6?]DrU0bS\jUmDZE1Vs+13$s+14?rrPRgDq!qO -c8pI~> -!B:&NirG&9mJm7drrR`OjnA*B!;l0i!:K7T7G6?]DrU0bN5FTVC]HkSs+13$s+14?rrPRgCt%DF -_`*)~> -!BpJTm/X-`mKEUjs1f;Sp$Me[qsF^imd:)!mdA7:ipHfG_sIQ[#6;hrs+13$s+14?rr^=B#MR\p -!S0Da~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsF^imd:)!mdA7:ipHf;_s%9T#6;hrs+13$s+14?rr^=B#M7Ji -!R<`V~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsF^imd:)!mdA7:ipHf*_rCjH#6;hrs+13$s+14?rr^=B#LV&] -!Q-jH~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=7;u!?AuTmKp]Nmd:)!mdA7:ipHfG`9dZ^$inG$s+13$s+14=rr^CD%,BD# -!S0Da~> -!BU8Qkl@:PmK3I)'=7;u!?AuTmKp]Nmd:)!mdA7:ipHf;`9@BW$inG$s+13$s+14=rr^CD%,'1q -!R<`V~> -!B:&NirG&9mK3I)'=7;u!?AuTmKp]Nmd:)!mdA7:ipHf*`8^sK$inG$s+13$s+14=rr^CD%+Ebe -!Q-jH~> -!BpJTm/X-`mK*A%Zh!MpIPA@rkIWEtmd:'Fg=\o5ipHfG`9dVK!(_\@JcC<$JcG-;!_<<6ea3Cg -4b*~> -!BU8Qkl@:PmK*A%Zh!MpIPA@rkIWEtmd:'Fg=\o5ipHf;`9@>E!(_\@JcC<$JcG-;!_<<4e`d+[ -3e.~> -!B:&NirG&9mK*A%Zh!MpIPA@rkIWEtmd:'Fg=\o5ipHf*`8^o -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs6*m/hV76%T&es+13$s6K[d5lc8_m/bd$J,~> -!BU8Qkl@:PmJsT0mJrfsklQ,16%T&es+13$s6K[d5lc2]klK'jJ,~> -!B:&NirG&9mJsT0mJr3birXB(6%T&es+13$s6K[d5lc)ZirR%VJ,~> -!BpJTm/X,tmJs6+m/u>]!5=$aJcC<$JcG'9"24aKin*PueieN~> -!BU8Qkl@9dmJrftkl]cT!5=$aJcC<$JcG'9"24aJhUgumc8pI~> -!B:&NirG%MmJr3cirdpH!5=$aJcC<$JcG'9"24aJf[o-a_`*)~> -!BpJTm/X,tmJs6+m/hn?4+[E_s+13$s69Ob3rjobm/bd$J,~> -!BU8Qkl@9dmJrftklQD94+[E_s+13$s69Ob3rji`klK'jJ,~> -!B:&NirG%MmJr3cirXZ04+[E_s+13$s69Ob3rj`]irR%VJ,~> -!BpJTm/X,tmJs6,m/uPk!47=WJcC<$JcG!7"1/%Ikh,8'eieN~> -!BU8Qkl@9dmJrfukl]ub!47=WJcC<$JcG!7"1/%HjOi\tc8pI~> -!B:&NirG%MmJr3dire0W!47=WJcC<$JcG!7"1/%Hhq6ri_`*)~> -!BpJTm/X,tmJs6,m/r[T/,k,"JcC<$JcG!7"9'eNQe:[+eieN~> -!BU8Qkl@9dmJrfukl[.M/,k,"JcC<$JcG!7"9'eNPh>4$c8pI~> -!B:&NirG%MmJr3dirbDD/,k,"JcC<$JcG!7"9'eNOkA[p_`*)~> -!BpJTm/X,tmJs6-m/u]*!2"iBJcC<$JcFp5".oQDm+Lb,eieN~> -!BU8Qkl@9dmJrg!kl^-!!2"iBJcC<$JcFp5".oQCkh52$c8pI~> -!B:&NirG%MmJr3eire9i!2"iBJcC<$JcFp5".oQBin<>m_`*)~> -!BpJTm/X,tmJs6-m/sBh)u5'bJcC<$JcFp5"8Nl9X4ck@eieN~> -!BU8Qkl@9dmJrg!kl[ja)u5'bJcC<$JcFp5"8Nl9W7gD9c8pI~> -!B:&NirG%MmJr3eirc(W)u5'bJcC<$JcFp5"8Nl9UtOc/_`*)~> -!BpJTm/X,tmJs6-m/fHOM1P\Xs+13$s5j7^M#]`mm/bd$J,~> -!BU8Qkl@9dmJrg!klO!JM1P\Xs+13$s5j7^M#]]lklK'jJ,~> -!B:&NirG%MmJr3eirV:BM1P\Xs+13$s5j7^M#]WjirR%VJ,~> -!BpJTm/X,trrB%?m/t6+%e,&LJcC<$JcFj3"7Qd#_qOJYeieN~> -!BU8Qkl@9drrAV3kl\^$%e,&LJcC<$JcFj3"7Qd#^tS#Rc8pI~> -!B:&NirG%MrrA#"ircmn%e,&LJcC<$JcFj3"7Qd#]@u9G_`*)~> -!BpJTm/X,trrB%?m/g;gF+O@Bs+13$s5X+\Er]7pm/bd$J,~> -!BU8Qkl@9drrAV3klOibF+O@Bs+13$s5X+\Er]4oklK'jJ,~> -!B:&NirG%MrrA#"irW*YF+O@Bs+13$s5X+\Er]+lirR%VJ,~> -!BpJTm/X,trrB%@m/tuG"5e\0JcC<$JcFd1"5a1cf\>coeieN~> -!BU8Qkl@9drrAV4kl]E>"5e\0JcC<$JcFd1"5a1beD'3gc8pI~> -!B:&NirG%MrrA##irdU3"5e\0JcC<$JcFd1"5a1bceII\_`*)~> -!BpJTm/X,trrB%@m/hM4;1\aus+13$s5EtZ;#kjqm/bd$J,~> -!BU8Qkl@9drrAV4klQ#.;1\aus+13$s5EtZ;#kdoklK'jJ,~> -!B:&NirG%MrrA##irX9%;1\aus+13$s5EtZ;#k[lirR%VJ,~> -!BpJTm/X,trrB%Am/uPh!5=$aJcC<$JcF^/"24aPkhPP+eieN~> -!BU8Qkl@9drrAV5kl]u`!5=$aJcC<$JcF^/"24aPjP8u#c8pI~> -!B:&NirG%MrrA#$ire0T!5=$aJcC<$JcF^/"24aOhq[5m_`*)~> -!BpJTm/X-`rrBjNrrB%Am/iaW/V3qQs+13$s53hX/HD9qm/bd$J,~> -!BU8Qkl@:PrrBjNrrAV5klR4P/V3qQs+13$s53hX/HD0nklK'jJ,~> -!B:&NirG&9rrBjNrrA#$irYGF/V3qQs+13$s53hX/HD$jirR%VJ,~> -!BpJTm/X-`rrE,8_Z'V8bO#?g!1JK=JcC<$JcFX-!h'*Hh!G-n4b*~> -!BU8Qkl@:PrrE,8_Z'V,bNT'b!1JK=JcC<$JcFX-!h'*Gh!"jb3e.~> -!B:&NirG&9rrE,8_Z'UpbMrX[!1JK=JcC<$JcFX-!h'*FguAFQ2h1~> -!BpJTm/X-`rrN07^r-0PWQa`3_Z1>BJcC<$JcC<$hu -!BU8Qkl@:PrrN07^r-0PS]p=#^]5#?JcC<$JcC<$hu -!B:&NirG&9rrN07^r-0PN6L;a])WK:JcC<$JcC<$hu -!BpJTm/X-`rrW8:'Ys>?!!)or!!(aQ!3+30!aPeJJcC<$JcC<$h>[Ou!+"FJ!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?!!)or!!(aQ!1h?u!a>YHJcC<$JcC<$h>[Ou!*e:D!R<`V~> -!B:&NirG&9rrW8:'Ys>?!!)or!!(aQ!0#.^!a,MFJcC<$JcC<$h>[Ou!*S. -!BpJTm/X-`rr`?%^_FTVrr<&rrr<&QrrB%Cm/u8S!SN&(JcC<$JcFR+"5*\_i83i%eieN~> -!BU8Qkl@:Prr`?%^_FTVrr<&rrr<&QrrAV7kl]]K!SN&(JcC<$JcFR+"5*\_gtq8rc8pI~> -!B:&NirG&9rr`?%^_FTVrr<&rrr<&QrrA#&irdm@!SN&(JcC<$JcFR+"5*\_fA>Ng_`*)~> -!BpJTm/X-`rriE&s1f>ap&>!lqu73-s8UnL$jT8bs8UnL$jT8blMgj`c0YRl!'u29JcC<$JcFL) -!^QgGhX(?p4b*~> -!BU8Qkl@:PrriE&s1f>ap&>!lqu73-s8UnL$jT8bs8UnL$jT8blMgjTc05:e!'u29JcC<$JcFL) -!^QgDhWY'd3e.~> -!B:&NirG&9rriE&s1f>ap&>!lqu73-s8UnL$jT8bs8UnL$jT8blMgjCc/Sk\!'u29JcC<$JcFL) -!^QgAhW"XS2h1~> -!BpJTm/X-`rr<&urrR`Op%JCc!;ld-!<<'L^@q&7=TACO^@q&7=R,ndWQjf3/HD]"s+13$s+14) -rrT(u/`,jqeieN~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;ld-!<<'L^@q&7=TACO^@q&7=R,ndS^$C#/HD]"s+13$s+14) -rrT(u/`,^mc8pI~> -!B:&NirG&9rr<&urrR`Op%JCc!;ld-!<<'L^@q&7=TACO^@q&7=R,ndN6UAa.fcJus+13$s+14) -rrT(u/)K:e_`*)~> -!BpJTm/X-`rriE&s1f>ap&>!lqu6Wrqu6]i'`7n2ob?]k!3+92"2"UKpjrHrs+13$s4dPUp_ -!BU8Qkl@:PrriE&s1f>ap&>!lqu6Wrqu6]i'`7n2ob?]k!1hF""1\CHpjrHrs+13$s4dPUp_ -hrt0e3e.~> -!B:&NirG&9rriE&s1f>ap&>!lqu6Wrqu6]i'`7n2ob?]k!0#4`"1/%CpjrHrs+13$s4dPUp_ -!BpJTm/X-`rr`?%^_FTVrrE3!rVmK-!rr;@4UV5i!WW2?4UV5i!UB[bWQsl4>l\tts+13$s+14' -rrR9B?/P#MeieN~> -!BU8Qkl@:Prr`?%^_FTVrrE3!rVmK-!rr;@4UV5i!WW2?4UV5i!UB[bS^-I$>6&brs+13$s+14' -rrR9B>MnZGc8pI~> -!B:&NirG&9rr`?%^_FTVrrE3!rVmK-!rr;@4UV5i!WW2?4UV5i!UB[bN6^Gb=TEPps+13$s+14' -rrR9B=l86?_`*)~> -!BpJTm/X-`rrW8:'Ys>?!?TVdrt3R"s8O(;nG_tYs8O(;nG_tYlMgj`cg:hs$3Ah2s+13$s+14' -rr^pT$Kg:6!S0Da~> -!BU8Qkl@:PrrW8:'Ys>?!?TVdrt3R"s8O(;nG_tYs8O(;nG_tYlMgjTcfkPk$3Ah2s+13$s+14' -rr^pT$KC".!R<`V~> -!B:&NirG&9rrW8:'Ys>?!?TVdrt3R"s8O(;nG_tYs8O(;nG_tYlMgjCcf5,_$3Ah2s+13$s+14' -rr^pT$JaS"!Q-jH~> -!BpJTm/X-`rrN07_".LALGR!GprG7Is8Nb:pt\sNs8Nb:pt\sNlMgj`cg:du!'Yu6JcC<$JcF@% -!^6UKi9^Qr4b*~> -!BU8Qkl@:PrrN07_".LALGR!GprG7Is8Nb:pt\sNs8Nb:pt\sNlMgjTcfkLo!'Yu6JcC<$JcF@% -!^6UIi9:9f3e.~> -!B:&NirG&9rrN07_".LALGR!GprG7Is8Nb:pt\sNs8Nb:pt\sNlMgjCcf5(e!'Yu6JcC<$JcF@% -!^6UEi8XjU2h1~> -!BpJTm/X-`rrE,8nc'F)Ot?nD/X$,5s0 -!BU8Qkl@:PrrE,8nc'F)Ot?nD/X$,5s0 -!B:&NirG&9rrE,8nc'F)Ot?nD/X$,5s0 -!BpJTm/X-`rrBjNrrB%Fm/tZ8$Lr]IJcC<$JcF@%"7Z^!cf+6leieN~> -!BU8Qkl@:PrrBjNrrAV:kl]-1$Lr]IJcC<$JcF@%"7Z^!bi.dec8pI~> -!B:&NirG&9rrBjNrrA#)ird=&$Lr]IJcC<$JcF@%"7Z^!a5Q%Z_`*)~> -!BpJTm/X,trrB%Fm/hM4>Clg*s+13$s4.,N>6&p,m/bd$J,~> -!BU8Qkl@9drrAV:klQ#.>Clg*s+13$s4.,N>6&j*klK'jJ,~> -!B:&NirG%MrrA#)irX9%>Clg*s+13$s4.,N>6&a'irR%VJ,~> -!BpJTm/X,trrB%Gm/u\t!4ma]JcC<$JcF:#"1eITm,IC5eieN~> -!BU8Qkl@9drrAV;kl^,l!4ma]JcC<$JcF:#"1eITki1h-c8pI~> -!B:&NirG%MrrA#*ire9_!4ma]JcC<$JcF:#"1eISio8u!_`*)~> -!BpJTm/X,trrB%Gm/s`r*W:QhJcC<$JcF:#"8s5?[GpQSeieN~> -!BU8Qkl@9drrAV;kl\3k*W:QhJcC<$JcF:#"8s5?ZJt*Lc8pI~> -!B:&NirG%MrrA#*ircFa*W:QhJcC<$JcF:#"8s5?Y2\IB_`*)~> -!BpJTm/X,trrB%Gm/gSoH%H!Hs+13$s3puLGlV11m/bd$J,~> -!BU8Qkl@9drrAV;klP,jH%H!Hs+13$s3puLGlV.0klK'jJ,~> -!B:&NirG%MrrA#*irWBaH%H!Hs+13$s3puLGlV%-irR%VJ,~> -!BpJTm/X,trrB%Hm/uPb!7QN!JcC<$JcF4!"4I5_ki;%2eieN~> -!BU8Qkl@9drrAV -!B:&NirG%MrrA#+ire0N!7QN!JcC<$JcF4!"4I5^hrE_t_`*)~> -!BpJTm/X,trrB%Hm/j3d/:mhPs+13$s3^iJ/-)X/m/bd$J,~> -!BU8Qkl@9drrAV -!B:&NirG%MrrA#+irYnS/:mhPs+13$s3^iJ/-)C(irR%VJ,~> -!BpJTm/X,trrB%Hm/g;gKRs/Ss+13$s3^iJKE,'5m/bd$J,~> -!BU8Qkl@9drrAV -!B:&NirG%MrrA#+irW*YKRs/Ss+13$s3^iJKE+p1irR%VJ,~> -!BpJTm/X,tmJs68m/uJ[!8E))JcC<$JcF-t"5 -!BU8Qkl@9dmJrg,kl]oS!8E))JcC<$JcF-t"5)c8pI~> -!B:&NirG%MmJr3pire'F!8E))JcC<$JcF-t"5 -!BpJTm/X,tmJs68m/is]21bdYs+13$s3L]H2#s?2m/bd$J,~> -!BU8Qkl@9dmJrg,klRFV21bdYs+13$s3L]H2#s6/klK'jJ,~> -!B:&NirG%MmJr3pirYYL21bdYs+13$s3L]H2#s*+irR%VJ,~> -!BpJTm/X,tmJs68m/g&`NIh+\s+13$s3L]HN;uc8m/bd$J,~> -!BU8Qkl@9dmJrg,klOQZNIh+\s+13$s3L]HN;u]6klK'jJ,~> -!B:&NirG%MmJr3pirVjRNIh+\s+13$s3L]HN;uW4irR%VJ,~> -!BpJTm/X,tmJs69m/uGV!98Y1JcC<$JcF'r"60@fjlPk1eieN~> -!BU8Qkl@9dmJrg-kl]lN!98Y1JcC<$JcF'r"60@fiT9;)c8pI~> -!B:&NirG%MmJr3qire$B!98Y1JcC<$JcF'r"60@fgZ@Gr_`*)~> -!BpJTm/X,tmJs69m/j!^3._*\s+13$s3:QF2uo]7m/bd$J,~> -!BU8Qkl@9dmJrg-klRIW3._*\s+13$s3:QF2uoT4klK'jJ,~> -!B:&NirG%MmJr3qirY\M3._*\s+13$s3:QF2uoH0irR%VJ,~> -!BpJTm/X-`mJsT0mJs69m/g;gM1P\Xs+13$s3:QFM#^T -!BU8Qkl@:PmJsT0mJrg-klOibM1P\Xs+13$s3:QFM#^Q;klK'jJ,~> -!B:&NirG&9mJsT0mJr3qirW*YM1P\Xs+13$s3:QFM#^H8irR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK!e`d1s%fk=7s+13$s+13prr^sT&*2m;!R<`V~> -!B:&NirG&9mK! -!BpJTm/X-`mK*A%ZfpfW!;c*`!9NVKWR^A;XT0o's+13$s+13nrrO_OXlf!OeieN~> -!BU8Qkl@:PmK*A%ZfpfW!;c*`!9NVKS^ls+WW4T$s+13$s+13nrrO_OWoiOHc8pI~> -!B:&NirG&9mK*A%ZfpfW!;c*`!9NVKN7HqiV>r/us+13$s+13nrrO_OVWQn>_`*)~> -!BpJTm/X-`mK3I)'=7;u!!)oa!s%cW!;c*`!9NVKWR^A;@/t_,s+13$s+13nrrRTK@HQqXeieN~> -!BU8Qkl@:PmK3I)'=7;u!!)oa!s%cW!;c*`!9NVKS^ls+?iYV+s+13$s+13nrrRTK@-6\Sc8pI~> -!B:&NirG&9mK3I)'=7;u!!)oa!s%cW!;c*`!9NVKN7Hqi>l];(s+13$s+13nrrRTK?0:/J_`*)~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mKkMlT\ -2h1~> -!BpJTm/X-`mKEUjs1f;Sp$Me[qsG!qmd:()'a\+-md:()'a\+-lL"YOf'NOO!#pLhJcC<$JcEjl -!ZM-PkNr<$4b*~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsG!qmd:()'a\+-md:()'a\+-lL"YCf'*7H!#pLhJcC<$JcEjl -!ZM-MkNN#m3e.~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsG!qmd:()'a\+-md:()'a\+-lL"Y2f&Hh=!#pLhJcC<$JcEjl -!ZM-HkMlT\2h1~> -!BpJTm/X-`mJm7drrR`OjnA*B!;l0q!:K7T7G6?]Dsm#n7G6?]DsH`jWRgG -!BU8Qkl@:PmJm7drrR`OjnA*B!;l0q!:K7T7G6?]Dsm#n7G6?]DsH`jS_!$,F9$',s+13$s+13l -rrQp8FQ_lhc8pI~> -!B:&NirG&9mJm7drrR`OjnA*B!;l0q!:K7T7G6?]Dsm#n7G6?]DsH`jN7R"jE<'a)s+13$s+13l -rrQp8ETc?__`*)~> -!BpJTm/X-`mKEUjs1f;Sp$Me[qsG!qmd:)!mdA7:md:)!mdA7:lL"YOf'NMn!4@CXJcC<$JcEjl -!jr"_kNr<$4b*~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[qsG!qmd:)!mdA7:md:)!mdA7:lL"YCf'*5i!4@CXJcC<$JcEjl -!jr"^kNN#m3e.~> -!B:&NirG&9mKEUjs1f;Sp$Me[qsG!qmd:)!mdA7:md:)!mdA7:lL"Y2f&Hfb!4@CXJcC<$JcEjl -!jr"]kMlT\2h1~> -!BpJTm/X-`mKCTWRpM>fE)BQJcC<$JcC<$ -ao;J:#m/cCm/bd$J,~> -!BU8Qkl@:PmKCTS_**.e,fsMJcC<$JcC<$ -ao;J:#m/W?klK'jJ,~> -!B:&NirG&9mKCTN7[(lcN4FHJcC<$JcC<$ -ao;J:#m/H:irR%VJ,~> -!BpJTm/X-`mK3I)'=7;u!?AuTmLd8Vmd:)!mdA7:md:)!mdA7:lL"YOfBiX)!(qhBOoG[c\p87* -H+O!+s+13brrPdmQ0@T9eieN~> -!BU8Qkl@:PmK3I)'=7;u!?AuTmLd8Vmd:)!mdA7:md:)!mdA7:lL"YCfBE@#!(qhBOoG[c\p87* -H+O!+s+13brrPdmPN_63c8pI~> -!B:&NirG&9mK3I)'=7;u!?AuTmLd8Vmd:)!mdA7:md:)!mdA7:lL"Y2fAcpn!(qhBOoG[c\p87* -H+O!+s+13brrPdmO6GU)_`*)~> -!BpJTm/X-`mK*A%Zh!N#IPA@rkIWEtmd:'Fg=\o5md:'Fg=\o5lL"YOfBiW9!0i'7P5bj4>E->1 -^:fM1b^oeFs1nX9PQ4PDm/bd$J,~> -!BU8Qkl@:PmK*A%Zh!N#IPA@rkIWEtmd:'Fg=\o5md:'Fg=\o5lL"YCfBE?3!0i'7P5bj4>E->1 -^:fM1b^oeFs1nX9PQ4JBklK'jJ,~> -!B:&NirG&9mK*A%Zh!N#IPA@rkIWEtmd:'Fg=\o5md:'Fg=\o5lL"Y2fAcp+!0i'7P5bj4>E->1 -^:fM1b^oeFs1nX9PQ4D@irR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs6=m/j]r.=qM_rrJ.ApV$ZiNe.4]s2"^:.0-g@m/bd$J,~> -!BU8Qkl@:PmJsT0mJrg1klS0k.=qM_rrJ.ApV$ZiNe.4]s2"^:.0-^=klK'jJ,~> -!B:&NirG&9mJsT0mJr3uirZCa.=qM_rrJ.ApV$ZiNe.4]s2"^:.0-R9irR%VJ,~> -!BpJTm/X,tmJs6=m/hJ3D1V_OrrL#aotCHR_h%i=s2+d;D#eeEm/bd$J,~> -!BU8Qkl@9dmJrg1klPu-D1V_OrrL#aotCHR_h%i=s2+d;D#e_CklK'jJ,~> -!B:&NirG%MmJr3uirX6$D1V_OrrL#aotCHR_h%i=s2+d;D#eV@irR%VJ,~> -!BpJTm/X,tmJs6=m/f6IZ%;q?rrW%%^%K)@]j1Dbs+13frrTG*39ff2eieN~> -!BU8Qkl@9dmJrg1klNgEZ%;q?rrW%%^%K)@]j1Dbs+13frrTG*39fZ.c8pI~> -!B:&NirG%MmJr3uirV+=Z%;q?rrW%%^%K)@]j1Dbs+13frrTG*2X06&_`*)~> -!BpJTm/X,tmJs6>m/u>O"Rq!BQ2^lZTC]btT;$o:JcEXf"7QEsip,n3eieN~> -!BU8Qkl@9dmJrg2kl]cG"Rq!BQ2^lZTC]btT;$o:JcEXf"7QEshWj>+c8pI~> -!B:&NirG%MmJr4!irdp:"Rq!BQ2^lZTC]btT;$o:JcEXf"7QErf]qJt_`*)~> -!BpJTm/X,tmJs6>m/j3d3._*orr?[$^&Vbrs+13errP.[W9WaNeieN~> -!BU8Qkl@9dmJrg2klR^^3._*orr?[$^&Vbrs+13errP.[VX!CHc8pI~> -!B:&NirG%MmJr4!irYnS3._*orr?[$^&Vbrs+13errP.[U$CY=_`*)~> -!BpJTm/X,tmJs6>m/h#&I"D<_rrM8(rP&72!s]]/M>Y'gFQS/SJcEXf!dju_lKnW'4b*~> -!BU8Qkl@9dmJrg2klPMuI"D<_rrM8(rP&72!s]]/M>Y'gFQS/SJcEXf!dju]lKJ>p3e.~> -!B:&NirG%MmJr4!irWclI"D<_rrM8(rP&72!s]]/M>Y'gFQS/SJcEXf!djuZlJho_2h1~> -!BpJTm/X,tmJs6>m/ed<^OcEMrrK'frOrL:^:q+SFrX3S^&a_%JcC<$_uBeQ!%[@%!S0Da~> -!BU8Qkl@9dmJrg2klN=7^OcEMrrK'frOrL:^:q+SFrX3S^&a_%JcC<$_uBeQ!%R9u!R<`V~> -!B:&NirG%MmJr4!irUY0^OcEMrrK'frOrL:^:q+SFrX3S^&a_%JcC<$_uBeQ!%I3n!Q-jH~> -!BpJTm/X,tmJs6?m/u/F$N#DSQ2^l-^&>YF!;sP4[30hq^&boiJcC<$_uBi9$3AuKm/bd$J,~> -!BU8Qkl@9dmJrg3kl]W?$N#DSQ2^l-^&>YF!;sP4[30hq^&boiJcC<$_uBi9$3AlHklK'jJ,~> -!B:&NirG%MmJr4"irdd3$N#DSQ2^l-^&>YF!;sP4[30hq^&boiJcC<$_uBi9$3AZBirR%VJ,~> -!BpJTm/X,trrB%Pm/j$_6%T'#rr@*;^&S01^&`a=rOr8PJcC<$_Z'['!2JlI!S0Da~> -!BU8Qkl@9drrAVDklRLX6%T'#rr@*;^&S01^&`a=rOr8PJcC<$_Z'['!2/ZB!R<`V~> -!B:&NirG%MrrA#3irY_N6%T'#rr@*;^&S01^&`a=rOr8PJcC<$_Z'['!1`B8!Q-jH~> -!BpJTm/X,trrB%Pm/h#&IY%N`rr@$9^&S01^&b>GrOr8NJcC<$_Z'[d!,Cie!S0Da~> -!BU8Qkl@9drrAVDklPQ!IY%N`rr@$9^&S01^&b>GrOr8NJcC<$_Z'[d!,:c`!R<`V~> -!B:&NirG%MrrA#3irWfmIY%N`rr@$9^&S01^&b>GrOr8NJcC<$_Z'[d!+tQW!Q-jH~> -!BpJTm/X,trrB%Pm/f$C]7L!Hrr@$9^&S01^&bhIrOr8NJcC<$_Z'\L!&Em-!S0Da~> -!BU8Qkl@9drrAVDklNR>]7L!Hrr@$9^&S01^&bhIrOr8NJcC<$_Z'\L!& -!B:&NirG%MrrA#3irUn7]7L!Hrr@$9^&S01^&bhIrOr8NJcC<$_Z'\L!&3a!!Q-jH~> -!BpJTm/X,trrB%Qm/uAP"S73EPlC`(r4W.2qn<*5%fO*AEe47As2+d -!BU8Qkl@9drrAVEkl]fH"S73EPlC`(r4W.2qn<*5%fO*AEe47As2+d -!B:&NirG%MrrA#4irds;"S73EPlC`(r4W.2qn<*5%fO*AEe47As2+d -!BpJTm/X,trrB%Qm/jEj21bdkrrI8UrOr73qn<)]1B+ug]leo+JcERd!]9t\m-Oi)4b*~> -!BU8Qkl@9drrAVEklRmc21bdkrrI8UrOr73qn<)]1B+ug]leo+JcERd!]9tYm-+Pr3e.~> -!B:&NirG%MrrA#4irZ+Y21bdkrrI8UrOr73qn<)]1B+ug]leo+JcERd!]9tUm,J,a2h1~> -!BpJTm/X-`rrBjNrrB%Qm/hG2Ee47SrrK'frOr73r4W6?+aj:'!Lp$=s+13drrR3@G3nSseieN~> -!BU8Qkl@:PrrBjNrrAVEklPr,Ee47SrrK'frOr73r4W6?+aj:'!Lp$=s+13drrR3@FR85mc8pI~> -!B:&NirG&9rrBjNrrA#4irX3#Ee47SrrK'frOr73r4W6?+aj:'!Lp$=s+13drrR3@EU;]d_`*)~> -!BpJTm/X-`rrE,8_Z'V8g[,&,!3^tRPQ([GFT&oY!5?1XVKX%SrOr;Sk(3P`s2"^:Y5gfRm/bd$ -J,~> -!BU8Qkl@:PrrE,8_Z'V,gZ\c'!3^tRPQ([GFT&oY!5?1XVKX%SrOr;Sk(3P`s2"^:Y5gcQklK'j -J,~> -!B:&NirG&9rrE,8_Z'UpgZ&>t!3^tRPQ([GFT&oY!5?1XVKX%SrOr;Sk(3P`s2"^:Y5g]OirR%V -J,~> -!BpJTm/X-`rrN07^r-0PWSHkClOEpWJcCo5!+u2DrW!$)(dNrU^&Vbrs+13crr_B`%dWNL!S0Da~> -!BU8Qkl@:PrrN07^r-0PS_WH3k7.LSJcCo5!+u2DrW!$)(dNrU^&Vbrs+13crr_B`%d36D!R<`V~> -!B:&NirG&9rrN07^r-0PN83Fqi=,eLJcCo5!+u2DrW!$)(dNrU^&Vbrs+13crr_B`%H6^7!Q-jH~> -!BpJTm/X-`rrW8:'Ys>?rr<0&%PW+lg&D&Oh!G0`!$6^kOoGHVTC]btT;$o:JcELb!Zh?^mHjr* -4b*~> -!BU8Qkl@:PrrW8:'Ys>?rr<0&%PW+lg&D&Ch!"mY!$6^kOoGHVTC]btT;$o:JcELb!Zh?[mHFYs -3e.~> -!B:&NirG&9rrW8:'Ys>?rr<0&%PW+lg&D&2guAIN!$6^kOoGHVTC]btT;$o:JcELb!Zh?VmGe5b -2h1~> -!BpJTm/X-`rr`?%^_FTVrs&Q(s7FQQ)W09K!3+c@!gNabJcCl4!r?08otCL@>l'$OJcELb!`T/b -mHjr*4b*~> -!BU8Qkl@:Prr`?%^_FTVrs&Q(s7FQQ)W09K!1hp0!gl'$OJcELb!`T/` -mHFYs3e.~> -!B:&NirG&9rr`?%^_FTVrs&Q(s7FQQ)W09K!0#^n!fm=\JcCl4!r?08otCL@>l'$OJcELb!`T/\ -mGe5b2h1~> -!BpJTm/X-`rriE&s1f>ap&>!lr;R(P>lXi[9ah7rkMlLAWSHkB@K;::s,d6]_gD'j!IM_8s+13a -rrS&X@dWO`eieN~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;R(P>lXi[9ah7rkMlLAS_WH2?iZ(8s,d6]_gD'j!IM_8s+13a -rrS&X@.!1Zc8pI~> -!B:&NirG&9rriE&s1f>ap&>!lr;R(P>lXi[9ah7rkMlLAN83Fp?3#k6s,d6]_gD'j!IM_8s+13a -rrS&X?L?bR_`*)~> -!BpJTm/X-`rr<&urrR`Op%JCc!;uj'iY_^q/&(`HDcl$!!3+c@!\XPhJcCf2!KN99^&`n(JcC<$ -^&J/L!&*a,!S0Da~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;uj'iY_^q/&(`HDcl$!!1hp0!\OJgJcCf2!KN99^&`n(JcC<$ -^&J/L!&!['!R<`V~> -!B:&NirG&9rr<&urrR`Op%JCc!;uj'iY_^q/&(`HDcl$!!0#^n!\FDfJcCf2!KN99^&`n(JcC<$ -^&J/L!%mTu!Q-jH~> -!BpJTm/X-`rriE&s1f>ap&>!lr;Qfo"oJ<#ob?Ec!3+fA"6Kaho7?q%rrJ:2q7ZrZE$+V$s+13a -rr_ip"m57?!S0Da~> -!BU8Qkl@:PrriE&s1f>ap&>!lr;Qfo"oJ<#ob?Ec!1hs1"6'Ido7?q%rrJ:2q7ZrZE$+V$s+13a -rr_ip"let7!R<`V~> -!B:&NirG&9rriE&s1f>ap&>!lr;Qfo"oJ<#ob?Ec!0#ao"5F"]o7?q%rrJ:2q7ZrZE$+V$s+13a -rr_ip"PiG*!Q-jH~> -!BpJTm/X-`rr`?%^_FTVrr<&srs@X$s8U,&$NL/-ir9"XhE->1^:fM1bl;9e -JcC<$^&J-d!4hOb!S0Da~> -!BU8Qkl@:Prr`?%^_FTVrr<&srs@X$s8U,&$NL/-ir9"Lh<>!L!%rj&N;j=1>E->1^:fM1bl;9e -JcC<$^&J-d!4M=[!R<`V~> -!B:&NirG&9rr`?%^_FTVrr<&srs@X$s8U,&$NL/-ir9";h;\RA!%rj&N;j=1>E->1^:fM1bl;9e -JcC<$^&J-d!3ttP!Q-jH~> -!BpJTm/X-`rrW8:'Ys>?!!)rs$%6%XruA!,rpg'KrrB%Sm/i7I?\/68rs\n -!BU8Qkl@:PrrW8:'Ys>?!!)rs$%6%XruA!,rpg'KrrAVGklQ_B?\/68rs\n -!B:&NirG&9rrW8:'Ys>?!!)rs$%6%XruA!,rpg'KrrA#6irXu9?\/68rs\n -!BpJTm/X-`rrN07_".L9!<<)lc#+BSs8Nb:pt\sNir9"Xh -!BU8Qkl@:PrrN07_".L9!<<)lc#+BSs8Nb:pt\sNir9"Lh<=uI!0;^2M#RLAl21J^Zmbd%s+13b -rrS5]?LI%Yc8pI~> -!B:&NirG&9rrN07_".L9!<<)lc#+BSs8Nb:pt\sNir9";h;\Q@!0;^2M#RLOlhg\`Zmbd%s+13b -rrS5]>OLMP_`*)~> -!BpJTm/X-`rrE,8nc/Uh"9AoaFm/i)"gT?U+dN,frrB%Sm/f'D^OcE@rrIl=qYpReOb*O`s1eR8 -^Ap(Xm/bd$J,~> -!BU8Qkl@:PrrE,8nc/Uh"9AoaFm/i)"gT?U+dN,frrAVGklNU?^OcE@rrJ>MqYpReOb*O`s1eR8 -^Ap%WklK'jJ,~> -!B:&NirG&9rrE,8nc/Uh"9AoaFm/i)"gT?U+dN,frrA#6irUq8^OcE@rrJh]qYpReOb*O`s1eR8 -^Ap"VirR%VJ,~> -!BpJTm/X-`rrBjNrrB%Tm/uV[!UbO=M#RL-mJ?haeJ@M&s+13crr_Zi$0q!H!S0Da~> -!BU8Qkl@:PrrBjNrrAVHkl^&S!UbO=M#RL;n,!%ceJ@M&s+13crr_Zi$0L^@!R<`V~> -!B:&NirG&9rrBjNrrA#7ire3G!UbO=M#RLInbW7eeJ@M&s+13crr_Zi$/k:4!Q-jH~> -!BpJTm/X,trrB%Tm/k?/++aHIrrIW=q>^J2JcC<$^]+?W!6FWr!S0Da~> -!BU8Qkl@9drrAVHklSg(++aHIrrJ,Mq>^J2JcC<$^]+?W!6+Ek!R<`V~> -!B:&NirG%MrrA#7ir[!r++aHIrrJY]q>^J2JcC<$^]+?W!5S'`!Q-jH~> -!BpJTm/X,trrB%Tm/idX:P&P$rrIN=q>UN_(=e!9JcEOc!`&fdn*L/,4b*~> -!BU8Qkl@9drrAVHklR7Q:P&P$rrJ#Mq>UN_(=e!9JcEOc!`&fan*'ku3e.~> -!B:&NirG%MrrA#7irYJG:P&P$rrJP]q>UN_(=e!9JcEOc!`&f]n)FGd2h1~> -!BpJTm/X,trrB%Tm/h2+It@WTrrIB=q#:AW8:gels1nX9IfOEUm/bd$J,~> -!BU8Qkl@9drrAVHklP]%It@WTrrIoMq#:AW8:gels1nX9IfO?SklK'jJ,~> -!B:&NirG%MrrA#7irWrqIt@WTrrJG\q#:AW8:gels1nX9IfO6PirR%VJ,~> -!BpJTm/X,trrB%Tm/ffYX+C;+rrI6=q#:El.(+X+JcERd!il;ln*L/,4b*~> -!BU8Qkl@9drrAVHklO?TX+C;+rrIfMq#:El.(+X+JcERd!il;kn*'ku3e.~> -!B:&NirG%MrrA#7irVXLX+C;+rrJ>]q#:El.(+X+JcERd!il;in)FGd2h1~> -!BpJTm/X,trrB%Tm/eF2e:IXTrrI-=p\t<&./JMpJcEUe!n72nn*L/,4b*~> -!BU8Qkl@9drrAVHklN".e:IXTrrI]Mp\t<&./JMpJcEUe!n72nn*'ku3e.~> -!B:&NirG%MrrA#7irU>'e:IXTrrJ8]p\t<&./JMpJcEUe!n72mn)FGd2h1~> -!BpJTm/X,trrB%Um/uJQ"SmWKM#RMSEqTG58 -!BU8Qkl@9drrAVIkl]oI"SmWKM#RMSK(]-E8 -!B:&NirG%MrrA#8ire'="SmWKM#RMSP4ehU8)_`*)~> -!BpJTm/X,trrB%Um/k-)."VDRrrMq=p&>*D(@6VPJcEUe![n&cnEg8-4b*~> -!BU8Qkl@9drrAVIklSU"."VDRrrMtMp&>*D(@6VPJcEUe![n&`nEBu!3e.~> -!B:&NirG%MrrA#8irZdl."VDRrrN"]p&>*D(@6VPJcEUe![n&[nDaPe2h1~> -!BpJTm/X,tmJs6Dm/idX;1\b&rrMh=o`+r-JcC<$_Z'[7!1`QG!S0Da~> -!BU8Qkl@9dmJrg8klR7Q;1\b&rrMkMo`+r-JcC<$_Z'[7!1E?@!R<`V~> -!B:&NirG%MmJr4'irYJG;1\b&rrMn]o`+r-JcC<$_Z'[7!1!'6!Q-jH~> -!BpJTm/X,tmJs6Dm/hD1H@c*OrrM_=o`#!Z(=e!9JcEXf!dXihnEg8-4b*~> -!BU8Qkl@9dmJrg8klPo+H@c*OrrMbMo`#!Z(=e!9JcEXf!dXifnEBu!3e.~> -!B:&NirG%MmJr4'irX0"H@c*OrrMe]o`#!Z(=e!9JcEXf!dXicnDaPe2h1~> -!BpJTm/X,tmJs6Dm/g&`UOiH#rrMS=oD\iR8:gels24j -!BU8Qkl@9dmJrg8klOQZUOiH#rrMYMoD\iR8:gels24j -!B:&NirG%MmJr4'irVjRUOiH#rrM_]oD\iR8:gels24j -!BpJTm/X,tmJs6Dm/eg=b(9SJrrMJ=oD\mg.(+X+JcE[g!m1KonEg8-4b*~> -!BU8Qkl@9dmJrg8klNC9b(9SJrrMPMoD\mg.(+X+JcE[g!m1KonEBu!3e.~> -!B:&NirG%MmJr4'irU_2b(9SJrrMV]oD\mg.(+X+JcE[g!m1KnnDaPe2h1~> -!BpJTm/X,tmJs6Dm/d[rm=G:mrrMA=o)Ad!./JMpJcE^h!posrnEg8-4b*~> -!BU8Qkl@9dmJrg8klM7nm=G:mrrMGMo)Ad!./JMpJcE^h!posrnEBu!3e.~> -!B:&NirG%MmJr4'irTVhm=G:mrrMP]o)Ad!./JMpJcE^h!posrnDaPe2h1~> -!BpJTm/X-`mJsT0mJs6Em/kr@&V9t:rrM5=nc&V\Ob*O`s2=p=&HLMSm/bd$J,~> -!BU8Qkl@:PmJsT0mJrg9klTB8&V9t:rrM>Mnc&V\Ob*O`s2=p=&HLAOklK'jJ,~> -!B:&NirG&9mJsT0mJr4(ir[O,&V9t:rrMG]nc&V\Ob*O`s2=p=&HL/IirR%VJ,~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mK*A%ZfpfW!8[&CWSm.FQiL3=s+^OShN@=-s(m8dJcE^h!`oAhna-A.4b*~> -!BU8Qkl@:PmK*A%ZfpfW!8[&CS`&`6PlOm:s+^OSigoT=s(m8dJcE^h!`oAen`^)"3e.~> -!B:&NirG&9mK*A%ZfpfW!8[&CN8W^tOT8I6s+^OSjf7hMs(m8dJcE^h!`oAan`'Yf2h1~> -!BpJTm/X-`mK3I)'=7;urr<0&%4uMPrpBadh -!BU8Qkl@:PmK3I)'=7;urr<0&%4uMPrpBadh -!B:&NirG&9mK3I)'=7;urr<0&%4uMPrpBadh -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mKs+^OSi32VL!Kfp(s+13irrS_k -;t8lK_`*)~> -!BpJTm/X-`mKEUjs1f;Sp$Me[r9al7 -!BU8Qkl@:PmKEUjs1f;Sp$Me[r9al7 -!B:&NirG&9mKEUjs1f;Sp$Me[r9al7 -!BpJTm/X-`mJm7drrR`OjnA*B!;u6kdh_B>!(GSo6Z:uP!3+oD!ZqEsJcCK)!R[M,rrTSVqLSZt -s2b3AgAi>cm/bd$J,~> -!BU8Qkl@:PmJm7drrR`OjnA*B!;u6kdh_B>!(GSo6Z:uP!1i'4!Zh?rJcCK)!S47 -!B:&NirG&9mJm7drrR`OjnA*B!;u6kdh_B>!(GSo6Z:uP!0#jr!Z_9qJcCK)!Sb!LrrTSVqLSZt -s2b3AgAi8airR%VJ,~> -!BpJTm/X-`mKEUjs1f;Sp$Me[r9amU"n(dYbjOoB)WL/bWT!4HlNRCaJcCK)!R7A+rrGZQJcC<$ -aSuA:!=%l\m/bd$J,~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[r9amU"n(dYbjOoB)WL/bS`/f8k61n\JcCK)!Rn.;rrGZQJcC<$ -aSuA:! -!B:&NirG&9mKEUjs1f;Sp$Me[r9amU"n(dYbjOoB)WL/bN8`e!i<98VJcCK)!SFmKrrGZQJcC<$ -aSuA:! -!BpJTm/X-`mK -!BU8Qkl@:PmKkeJ@M&s+13k -rrNo8e+2`(c8pI~> -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=7;u!!)rb$$B89mJtK!m`QO.mJs6Fm/jp#14fIZrrL- -!BU8Qkl@:PmK3I)'=7;u!!)rb$$B89mJtK!m`QO.mJrg:klSBq14fIZrrL?Lm/R*%JcC<$aSu;s -!4h[b!R<`V~> -!B:&NirG&9mK3I)'=7;u!!)rb$$B89mJtK!m`QO.mJr4)irZRf14fIZrrLT]m/R*%JcC<$aSu;s -!4;=W!Q-jH~> -!BpJTm/X-`mK*A%Zh!Mp!:K::^Ln>-md:'Fg=\o5ipHfGiU$]@!)A+FL&V1kXR,rglk\-&s+13l -rrPpqU@R[PeieN~> -!BU8Qkl@:PmK*A%Zh!Mp!:K::^Ln>-md:'Fg=\o5ipHf;iTUE9!)A+FL&V1q[d="qlk\-&s+13l -rrPpqTCV4Ic8pI~> -!B:&NirG&9mK*A%Zh!Mp!:K::^Ln>-md:'Fg=\o5ipHf*iSt!/!)A+FL&V2#^[1t%lk\-&s+13l -rrPpqS+>S?_`*)~> -!BpJTm/X-`mK!rrKm=li.!J8:gels2k9B -CB0.\m/bd$J,~> -!BU8Qkl@:PmK!rrL-Mli.!J8:gels2k9B -CB0(ZklK'jJ,~> -!B:&NirG&9mK!rrLE]li.!J8:gels2k9B -CB/qVirR%VJ,~> -!BpJTm/X-`mJsT0mJs6Fm/h,)LOoJZrrKd=li.%_.(+X+JcEmm!f$bmo'HJ/4b*~> -!BU8Qkl@:PmJsT0mJrg:klPW#LOoJZrrL$Mli.%_.(+X+JcEmm!f$bko'$2#3e.~> -!B:&NirG&9mJsT0mJr4)irWopLOoJZrrL<]li.%_.(+X+JcEmm!f$bio&Bbg2h1~> -!BpJTm/X,tmJs6Fm/gAiSq6oqrrK[=lMgpn./JMpJcEpn!hKBoo'HJ/4b*~> -!BU8Qkl@9dmJrg:klOlcSq6oqrrKpMlMgpn./JMpJcEpn!hKBmo'$2#3e.~> -!B:&NirG%MmJr4)irW0[Sq6oqrrL3]lMgpn./JMpJcEpn!hKBko&Bbg2h1~> -!BpJTm/X,tmJs6Fm/fZU["872rrKO=l2LcTOb*O`s3(EDZiEMbm/bd$J,~> -!BU8Qkl@9dmJrg:klO0O["872rrKgMl2LcTOb*O`s3(EDZiEG`klK'jJ,~> -!B:&NirG%MmJr4)irVLH["872rrL*]l2LcTOb*O`s3(EDZiED_irR%VJ,~> -!BpJTm/X,tmJs6Fm/em?bCT\IrrKC=l2Lh8(@6VPJcEso!m:Qro'HJ/4b*~> -!BU8Qkl@9dmJrg:klNI;bCT\IrrK^Ml2Lh8(@6VPJcEso!m:Qro'$2#3e.~> -!B:&NirG%MmJr4)irUb3bCT\IrrL$]l2Lh8(@6VPJcEso!m:Qpo&Bbg2h1~> -!BpJTm/X,tmJs6Fm/e1+iIV#_rrK:=kl:[!JcC<$bl7b'!#kFq!S0Da~> -!BU8Qkl@9dmJrg:klM_&iIV#_rrKUMkl:[!JcC<$bl7b'!#b@l!R<`V~> -!B:&NirG%MmJr4)irU(uiIV#_rrKp]kl:[!JcC<$bl7b'!#b@f!Q-jH~> -!BpJTm/X,tmJs6Gm/u\Z!;D'EL&V1S`9@4&lk\-&s+13prr_uq#41sK!S0Da~> -!BU8Qkl@9dmJrg;kl^,R!;D'EL&V1\bNSs-lk\-&s+13prr_uq#3b[C!R<`V~> -!B:&NirG%MmJr4*ire9F!;D'EL&V1fdHLT3lk\-&s+13prr_uq#3,77!Q-jH~> -!BpJTm/X,tmJs6Gm/l,E%Y=Y5rrK%=kPkRF8:gels31KE%KPAWm/bd$J,~> -!BU8Qkl@9dmJrg;klTQ=%Y=Y5rrKCMkPkRF8:gels31KE%KP5SklK'jJ,~> -!B:&NirG%MmJr4*ir[a2%Y=Y5rrKa]kPkRF8:gels31KE%KP&NirR%VJ,~> -!BpJTm/X,tmJs6Gm/kE1,_>uKrrJn=kPkV[.(+X+JcF!p![IcgoBcS04b*~> -!BU8Qkl@9dmJrg;klSj),_>uKrrK:MkPkV[.(+X+JcF!p![IccoB?;$3e.~> -!B:&NirG%MmJr4*ir[$s,_>uKrrKX]kPkV[.(+X+JcF!p![Ic^oA]kh2h1~> -!BpJTm/X,trrB%Xm/jfu2hD!^rrJe=k5PLj./JMpJcF$q!]L+ioBcS04b*~> -!BU8Qkl@9drrAVLklS9n2hD!^rrK1Mk5PLj./JMpJcF$q!]L+foB?;$3e.~> -!B:&NirG%MrrA#;irZIc2hD!^rrKO]k5PLj./JMpJcF$q!]L+aoA]kh2h1~> -!BpJTm/X,trrB%Xm/j9f7tL\nrrJ\=jo5?POb*O`s3CWG7f]R\m/bd$J,~> -!BU8Qkl@9drrAVLklRa_7tL\nrrK(Mjo5?POb*O`s3CWG7f]IYklK'jJ,~> -!B:&NirG%MrrA#;irYtU7tL\nrrKI]jo5?POb*O`s3CWG7f]=UirR%VJ,~> -!BpJTm/X,trrB%Xm/idX -!BU8Qkl@9drrAVLklR:R -!B:&NirG%MrrA#;irYMH -!BpJTm/X,trrB%Xm/i:JAqBu8rrJG=jT#6rJcC<$ci4&Y!06[ -!BU8Qkl@9drrAVLklQbCAqBu8rrJkMjT#6rJcC<$ci4&Y!/pI5!R<`V~> -!B:&NirG%MrrA#;irY#:AqBu8rrK7]jT#6rJcC<$ci4&Y!/U7,!Q-jH~> -!BpJTm/X,trrB%Xm/hb;G(K[HrrJ>=jSo;J(=e!9JcF*s!d4QnoBcS04b*~> -!BU8Qkl@9drrAVLklQ85G(K[HrrJbMjSo;J(=e!9JcF*s!d4QloB?;$3e.~> -!B:&NirG%MrrA#;irXK+G(K[HrrK1]jSo;J(=e!9JcF*s!d4QhoA]kh2h1~> -!BpJTm/X-`rrBjNrrB%Xm/h2+L4TAXrrJ2=j8T.B8:gels3UcIL&c/`m/bd$J,~> -!BU8Qkl@:PrrBjNrrAVLklP]%L4TAXrrJYMj8T.B8:gels3UcIL&c)^klK'jJ,~> -!B:&NirG&9rrBjNrrA#;irWrqL4TAXrrK(]j8T.B8:gels3UcIL&bu[irR%VJ,~> -!BpJTm/X-`rrE,8_Z'V8ip?eT!1&39K`;(3j5^.@qC&b&s+13trrSJd@.WadeieN~> -!BU8Qkl@:PrrE,8_Z'V,iopMO!1&39K`;(@k2ZICqC&b&s+13trrSJd?h -!B:&NirG&9rrE,8_Z'Upio:)F!1&39K`;(Ml/VdFqC&b&s+13trrSJd>k?tV_`*)~> -!BpJTm/X-`rrN07^r-0PWT*:H;ui_Fs+LCQM< -!BU8Qkl@:PrrN07^r-0PS`8l8;ZNVEs+LCQQKdE/!jsHQJcC<$df0BE!)rLR!R<`V~> -!B:&NirG&9rrN07^r-0PN8ik!;#mDCs+LCQU[7"?!jsHQJcC<$df0BE!)`@J!Q-jH~> -!BpJTm/X-`rrW8:'Ys>?rr<0&%PW+lg&D&Oip?e?!3UnQK`;(,lJ_aD8 -!BU8Qkl@:PrrW8:'Ys>?rr<0&%PW+lg&D&CiopM:!3UnQK`;(9m,@sF8 -!B:&NirG&9rrW8:'Ys>?rr<0&%PW+lg&D&2io:)2!3UnQK`;(Gn)=9I8 -!BpJTm/X-`rr`?%^_FTVrs&Q(s7FQQ)W09K!3+uF!^cssJcCE'!J0[trs[Enm/R+\JnopeCP)>k -rrq\7E,U*gJcDhO!k/.soBcS04b*~> -!BU8Qkl@:Prr`?%^_FTVrs&Q(s7FQQ)W09K!1i-6!^ZmrJcCE'!KZa/rs[Enm/R+\JnopeCP)>k -rrq\7E,U*gJcDhO!k/.roB?;$3e.~> -!B:&NirG&9rr`?%^_FTVrs&Q(s7FQQ)W09K!0#pt!^HapJcCE'!M/f?rs[Enm/R+\JnopeCP)>k -rrq\7E,U*gJcDhO!k/.poA]kh2h1~> -!BpJTm/X-`rriE&s1f>ap&>!lr;R@X>lXi[9ah7rkPtS<9ah7rkN`'IWT*:H3<6mHs+LCQIdu@r -s(hf;nl_sj^&k9:o"4o.okJ]^^:q1&CA!/XY5\R>!'0Z -!BU8Qkl@:PrriE&s1f>ap&>!lr;R@X>lXi[9ah7rkPtS<9ah7rkN`'IS`8l82updGs+LCQN:Z!- -s(hf;nl_sj^&k9:o"4o.okJ]^^:q1&CA!/XY5\R>!''T7!R<`V~> -!B:&NirG&9rriE&s1f>ap&>!lr;R@X>lXi[9ah7rkPtS<9ah7rkN`'IN8ik!2ZU[Fs+LCQS+PY= -s(hf;nl_sj^&k9:o"4o.okJ]^^:q1&CA!/XY5\R>!&sN0!Q-jH~> -!BpJTm/X-`rr<&urrR`Op%JCc!;uj/iY_^q/&(`HDcm&>/&(`HDcl<)!3+uF!\j\tJcCE'!IFFs -rrh[(eQT3S^&bHA]`/')=0h_;!jYo!JcDqR!m1KtoBcS04b*~> -!BU8Qkl@:Prr<&urrR`Op%JCc!;uj/iY_^q/&(`HDcm&>/&(`HDcl<)!1i-6!\aVsJcCE'!K$O. -rrh[(eQT3S^&bHA]`/')=0h_;!jYo!JcDqR!m1KsoB?;$3e.~> -!B:&NirG&9rr<&urrR`Op%JCc!;uj/iY_^q/&(`HDcm&>/&(`HDcl<)!0#pt!\XPrJcCE'!LWW> -rrh[(eQT3S^&bHA]`/')=0h_;!jYo!JcDqR!m1KroA]kh2h1~> -!BpJTm/X-`rriE&s1f>ap&>!lr;Qfo"oJ<#ob@<'!VI/lrrB%Xm/e[9dt.OPrrI<=hu -!BU8Qkl@:PrriE&s1f>ap&>!lr;Qfo"oJ<#ob@<'!VI/lrrAVLklN44dt.OPrrIiMhu -!B:&NirG&9rriE&s1f>ap&>!lr;Qfo"oJ<#ob@<'!VI/lrrA#;irUP-dt.OPrrJD]hu -!BpJTm/X-`rr`?%^_FTVrr<&srt43,s8U,&$NL/-s8U,&$NL/-lMgj`ip?dh!8W5+K`;'nrSRVU -oKW)a!G)#@rrI_LpV$[+Jq -!BU8Qkl@:Prr`?%^_FTVrr<&srt43,s8U,&$NL/-s8U,&$NL/-lMgjTiopLd!8W5+K`;()rSRVU -oKW)a!G)#@rrI_LpV$[+Jq -!B:&NirG&9rr`?%^_FTVrr<&srt43,s8U,&$NL/-s8U,&$NL/-lMgjCio:(]!8W5+K`;(9rSRVU -oKW)a!G)#@rrI_LpV$[+Jq -!BpJTm/X-`rrW8:'Ys>?!!)rs&Udm`ruA!,rpg'hruA!,rpg'SrrB%Xm/e((k(3PdrrN(=hZ!VI -T_H/$Tq0"!!U+=l^&`$5JcE"T!p0J!oBcS04b*~> -!BU8Qkl@:PrrW8:'Ys>?!!)rs&Udm`ruA!,rpg'hruA!,rpg'SrrAVLklMY$k(3PdrrN+MhZ!VI -T_H/$Tq0"!!U+=l^&`$5JcE"T!p0J!oB?;$3e.~> -!B:&NirG&9rrW8:'Ys>?!!)rs&Udm`ruA!,rpg'hruA!,rpg'SrrA#;irTtrk(3PdrrN+]hZ!VI -T_H/$Tq0"!!U+=l^&`$5JcE"T!p0IuoA]kh2h1~> -!BpJTm/X-`rrN07_".LA!<<)lc#+BSs8Nb:pt\sNs8Nb:pt\sNlMgj`ip?d\!:#.8L&V2LG2E6! -C\>CACV]rNJ?nj^!O@6,s0;S*l2VLhm/bd$J,~> -!BU8Qkl@:PrrN07_".LA!<<)lc#+BSs8Nb:pt\sNs8Nb:pt\sNlMgjTiopLX!:#.8L&V2ML#2h0 -C\>CACV]rNJ?nj^!O@6,s0;S*l2VLhklK'jJ,~> -!B:&NirG&9rrN07_".LA!<<)lc#+BSs8Nb:pt\sNs8Nb:pt\sNlMgjCio:(R!:#.8L&V2NPhuE? -C\>CACV]rNJ?nj^!O@6,s0;S*l2VLhirR%VJ,~> -!BpJTm/X-`rrE,8nc/Uh"9AoaFm/i)%C.2]+dN-.s0 -!BU8Qkl@:PrrE,8nc/Uh"9AoaFm/i)%C.2]+dN-.s0 -!B:&NirG&9rrE,8nc/Uh"9AoaFm/i)%C.2]+dN-.s0 -!BpJTm/X-`rrBjNrrB%Xm/d^snU^^orrM\=hu<_gOnHEhOh/F0!S)]!^A%^.^&``6JcE%U!q?7" -oBcS04b*~> -!BU8Qkl@:PrrBjNrrAVLklM:onU^^orrM_Mhu<_gOnHEhOh/F0!S)]!^A%^.^&``6JcE%U!q?7" -oB?;$3e.~> -!B:&NirG&9rrBjNrrA#;irTVhnU^^orrMe]hu<_gOnHEhOh/F0!S)]!^A%^.^&``6JcE%U!q?7! -oA]kh2h1~> -!BpJTm/X,trrB%Xm/dUpoR[$rrrMP=hu<_6Z1Yg3Z&-?t!Lon]^&S01^&b%!JcE%U!qZI"oBcS0 -4b*~> -!BU8Qkl@9drrAVLklM1loR[$rrrMVMhu<_6Z1Yg3Z&-?t!Lon]^&S01^&b%!JcE%U!qZI"oB?;$ -3e.~> -!B:&NirG%MrrA#;irTPfoR[$rrrM\]hu<_6Z1Yg3Z&-?t!Lon]^&S01^&b%!JcE%U!qZI"oA]kh -2h1~> -!BpJTm/X,trrB%Xm/dLmpOW?urrMD=hu<[ur4W:6[7h#0rOr8R_Z'UWq7Zh/qRurNJcE%U!qu[" -oBcS04b*~> -!BU8Qkl@9drrAVLklM(ipOW?urrMJMhu<[ur4W:6[7h#0rOr8R_Z'UWq7Zh/qRurNJcE%U!qu[" -oB?;$3e.~> -!B:&NirG%MrrA#;irTGcpOW?urrMS]hu<[ur4W:6[7h#0rOr8R_Z'UWq7Zh/qRurNJcE%U!qu[" -oA]kh2h1~> -!BpJTm/X,trrB%Xm/dFkqLS[#rrM8=hu<[rr4W757YA5K^&W/irr@*8^&S00^&W2)s0DY+q>^]j -m/bd$J,~> -!BU8Qkl@9drrAVLklM"gqLS[#rrMAMhu<[rr4W757YA5K^&W/irr@*8^&S00^&W2)s0DY+q>^]j -klK'jJ,~> -!B:&NirG%MrrA#;irT>`qLS[#rrMG]hu<[rr4W757YA5K^&W/irr@*8^&S00^&W2)s0DY+q>^Zi -irR%VJ,~> -!BpJTm/X,trrB%Xm/d=hrIP!&rrM,=hu<[qr4W13Du.0J:;VJ\:&2L'!;aD0E.S%prrW-!!qYd[ -eieN~> -!BU8Qkl@9drrAVLklLndrIP!&rrM5Mhu<[qr4W13Du.0J:;VJ\:&2L'!;aD0E.S%prrW-!!qYXW -c8pI~> -!B:&NirG%MrrA#;irT8^rIP!&rrM>]hu<[qr4W13Du.0J:;VJ\:&2L'!;aD0E.S%prrW-!!qYFQ -_`*)~> -!BpJTm/X,trrB%Xm/d=hrIP!&rrLu=hu<[qr4W13WqsF0:;VJ\:&2L'!;aD0E.S%prrW-!!qYd[ -eieN~> -!BU8Qkl@9drrAVLklLndrIP!&rrM,Mhu<[qr4W13WqsF0:;VJ\:&2L'!;aD0E.S%prrW-!!qYXW -c8pI~> -!B:&NirG%MrrA#;irT8^rIP!&rrM5]hu<[qr4W13WqsF0:;VJ\:&2L'!;aD0E.S%prrW-!!qYFQ -_`*)~> -!BpJTm/X,trrB%Xm/dFkqLS[#rrLi=hu<[rr4W13]_]>BEPh_UEr!EL!;aD0Ee47rrrW#s"nV*^ -eieN~> -!BU8Qkl@9drrAVLklM"gqLS[#rrLuMhu<[rr4W13]_]>BEPh_UEr!EL!;aD0Ee47rrrW#s"nUsZ -c8pI~> -!B:&NirG%MrrA#;irT>`qLS[#rrM,]hu<[rr4W13]_]>BEPh_UEr!EL!;aD0Ee47rrrW#s"S:XS -_`*)~> -!BpJTm/X,trrB%Xm/dLmpOW?urrL]=hu<[ur4W.2q7ZiN_Z'UWq7Zh/qRurNJcE%U!qu["oBcS0 -4b*~> -!BU8Qkl@9drrAVLklM(ipOW?urrLlMhu<[ur4W.2q7ZiN_Z'UWq7Zh/qRurNJcE%U!qu["oB?;$ -3e.~> -!B:&NirG%MrrA#;irTGcpOW?urrM#]hu<[ur4W.2q7ZiN_Z'UWq7Zh/qRurNJcE%U!qu["oA]kh -2h1~> -!BpJTm/X,tmJs6Gm/dUpoR[$rrrLQ=hu<_6Z2MB:!;aD1Z&-?t!Lon]^&S01^&b%!JcE%U!qZI" -oBcS04b*~> -!BU8Qkl@9dmJrg;klM1loR[$rrrL`Mhu<_6Z2MB:!;aD1Z&-?t!Lon]^&S01^&b%!JcE%U!qZI" -oB?;$3e.~> -!B:&NirG%MmJr4*irTPfoR[$rrrLo]hu<_6Z2MB:!;aD1Z&-?t!Lon]^&S01^&b%!JcE%U!qZI" -oA]kh2h1~> -!BpJTm/X,tmJs6Gm/d^snU^^orrLE=hu<_gOo;uo!;aD1Oh/I1!oS -!BU8Qkl@9dmJrg;klM:onU^^orrLWMhu<_gOo;uo!;aD1Oh/I1!p"u[qRuq0qn<)\eUdb+rrV]j% -J/fbc8pI~> -!B:&NirG%MmJr4*irTVhnU^^orrLf]hu<_gOo;uo!;aD1Oh/I1!p>PiqRuq0qn<)\eUdb+rrV]j% -.iK[_`*)~> -!BpJTm/X,tmJs6Gm/dh!mXbClrrL9=hu<`JD>h0K!;aD1D=Y[G"R`"7a^t=_!!)o1!G27]s0DY+ -mJmgim/bd$J,~> -!BU8Qkl@9dmJrg;klM@qmXbClrrLKMhu<`JD>h0K!;aD1D=Y[G"RrORcXlse!!)o1!G27]s0DY+ -mJmdhklK'jJ,~> -!B:&NirG%MmJr4*irT_kmXbClrrL]]hu<`JD>h0K!;aD1D=Y[G"S0$leReTk!!)o1!G27]s0DY+ -mJmdhirR%VJ,~> -!BpJTm/X,tmJs6Gm/dq$l@JthrrL0=hZ!RkotCEA`r?;=[ -!BU8Qkl@9dmJrg;klMLul@JthrrLBMhZ!RkotCEA`r?;>]o'T$s+%EJ^&bNiJcE"T!pTb!oB?;$ -3e.~> -!B:&NirG%MmJr4*irTkol@JthrrLT]hZ!RkotCEA`r?;>`L4dCs+%EJ^&bNiJcE"T!pTb!oA]kh -2h1~> -!BpJTm/X,tmJs6Gm/e((k(3PdrrL$=hZ!VFTD-&#Tq0:)"T?DkV==Ka!U+=l^&`$5JcE"T!p0J! -oBcS04b*~> -!BU8Qkl@9dmJrg;klMY$k(3PdrrL6MhZ!VFTD-&#Tq0:)"TH]+YO_\m!U+=l^&`$5JcE"T!p0J! -oB?;$3e.~> -!B:&NirG%MmJr4*irTtrk(3PdrrLK]hZ!VFTD-&#Tq0:)"THo?\b#h#!U+=l^&`$5JcE"T!p0Iu -oA]kh2h1~> -!BpJTm/X-`mJsT0mJs6Gm/e@0h1>T[rrKm=hZ!V:7JFLsAGO@I"58Wrj88iWJuA@W!N1O#s02M) -h#JPgm/bd$J,~> -!BU8Qkl@:PmJsT0mJrg;klMq,h1>T[rrL-MhZ!V:7JFLsAGO@I"5]B:k55/ZJuA@W!N1O#s02M) -h#JPgklK'jJ,~> -!B:&NirG&9mJsT0mJr4*irU8%h1>T[rrLB]hZ!V:7JFLsAGO@I"6-,Wl21J]JuA@W!N1O#s02M) -h#JMfirR%VJ,~> -!BpJTm/X-`mK!UNl -?FBUC!juA1JcDtS!n.,toBcS04b*~> -!BU8Qkl@:PmK!iopLl!7QN!L&V1j^#/hllkY;Bq7ZlsSBCj6m&,usq>UNl -?FBUC!juA1JcDtS!n.,soB?;$3e.~> -!B:&NirG&9mK!q>UNl -?FBUC!juA1JcDtS!n.,roA]kh2h1~> -!BpJTm/X-`mK*A%ZfpfW!;c*`!9NVKWT*:H0`]@Is+UIR[^k;qs(hc:>-Rn -!BU8Qkl@:PmK*A%ZfpfW!;c*`!9NVKS`8l80EB7Hs+UIR^VJb,s(hc:>-Rn -!B:&NirG&9mK*A%ZfpfW!;c*`!9NVKN8ik!0*'.Gs+UIRa2m0-Rn -!BpJTm/X-`mK3I)'=7;urr<0&%4uMPrpBadqX+=`jmE,Jip?e-!5X6dL&V1Z^#8npeJ@NOnl_sj -^&k9:o$.1;r4m]]o^r.iokJ]^^:q1&CA!/XY5\R>!'0Z -!BU8Qkl@:PmK3I)'=7;urr<0&%4uMPrpBadqX+=`jmE,>iopM(!5X6dL&V1c`8LY"eJ@NOnl_sj -^&k9:o$.1;rPsi(p%87jokJ]^^:q1&CA!/XY5\R>!''T7!R<`V~> -!B:&NirG&9mK3I)'=7;urr<0&%4uMPrpBadqX+=`jmE,-io:)!!5X6dL&V1lbM`C)eJ@NOnl_sj -^&k9:o$.1;rQ^kGp@S@kokJ]^^:q1&CA!/XY5\R>!&sN0!Q-jH~> -!BpJTm/X-`mK -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;Sp$Me[r9b/?HM:dCZPQ(]e!))qN!S0Da~> -!BU8Qkl@:PmKEUjs1f;Sp$Me[r9b/? -!B:&NirG&9mKEUjs1f;Sp$Me[r9b/? -!jsHQr;QlueC=KBrr_PfUZ$e(PQ(]e!(c_A!Q-jH~> -!BpJTm/X-`mJm7drrR`OjnA*B!;u6sdh_B>!(GSo6Z;D\!(GSo6Z;8X!3+uF!`T/qJcCH(!N4#u -rrW$F[Di.KnY^iTrIP!3rrStr<:fJXeieN~> -!BU8Qkl@:PmJm7drrR`OjnA*B!;u6sdh_B>!(GSo6Z;D\!(GSo6Z;8X!1i-6!`K)pJcCH(!O9r0 -rrW$F[Di.Ko -!B:&NirG&9mJm7drrR`OjnA*B!;u6sdh_B>!(GSo6Z;D\!(GSo6Z;8X!0#pt!`8rnJcCH(!P6h@ -rrW$F[Di.KoX^O?rdk*4rrStr;=ifK_`*)~> -!BpJTm/X-`mKEUjs1f;Sp$Me[r9b0]"n(dYbjOoB)Xd"nbjOoB)X?_jWT*:H?iZLDs+UIRUWh`t -!Kfpmrri20Ha -!BU8Qkl@:PmKEUjs1f;Sp$Me[r9b0]"n(dYbjOoB)Xd"nbjOoB)X?_jS`8l8?N?CCs+UIRXjZ5/ -!Kfpmrri58MS&Y7s,d6^Q2k:`klK'jJ,~> -!B:&NirG&9mKEUjs1f;Sp$Me[r9b0]"n(dYbjOoB)Xd"nbjOoB)X?_jN8ik!>QC(@s+UIR\(K^? -!Kfpmrri5@RDeoPs,d6^Q2k1]irR%VJ,~> -!BpJTm/X-`mKFJY;C]s,R*\L&c/`m/bd$J,~> -!BU8Qkl@:PmKNrK08!,_>l!R<`V~> -!B:&NirG&9mK -!BpJTm/X-`mK3I)'=7;u!!)rb&Tq+AmJtK!m`QO:mJtK!m`QO6mJs6Gm/hb;G(K[IrrJV=j8]-q -aSuA!NfMtIs,?sZFo[$`m/bd$J,~> -!BU8Qkl@:PmK3I)'=7;u!!)rb&Tq+AmJtK!m`QO:mJtK!m`QO6mJrg;klQ85G(K[IrrK"Mj8]-q -aSuA%S"&Dgs,?sZFoZs^klK'jJ,~> -!B:&NirG&9mK3I)'=7;u!!)rb&Tq+AmJtK!m`QO:mJtK!m`QO6mJr4*irXK+G(K[IrrKC]j8]-q -aSuA(Vl/X-s,?sZFoZgZirR%VJ,~> -!BpJTm/X-`mK*A%Zh!N#!:K::^Ln>-md:'Fg=\o5md:'Fg=\o5lL"YOip?f-!+pf^L&V1?f]<&6 -eJ@Morrh_^J^"+Es,6mYAcRk_m/bd$J,~> -!BU8Qkl@:PmK*A%Zh!N#!:K::^Ln>-md:'Fg=\o5md:'Fg=\o5lL"YCiopN&!+pf^L&V1KguSJ: -eJ@Morr__jO4&UZMZ3`i!/pI5!R<`V~> -!B:&NirG&9mK*A%Zh!N#!:K::^Ln>-md:'Fg=\o5md:'Fg=\o5lL"Y2io:)r!+pf^L&V1ViT1"? -eJ@Morr_f!S_/MnMZ3`i!/U7,!Q-jH~> -!BpJTm/X-`mK!=jSo6O -Oj!b-pTf.WqLS['rrQ4$SFc+KeieN~> -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs6Gm/j9f7tL\orrJ2=jo5Ci./M3g"T?;fVt#? -!BU8Qkl@:PmJsT0mJrg;klRa_7tL\orrJYMjo5Ci./M3g"THW(Z1EPHL]7EG!2oGQ!R<`V~> -!B:&NirG&9mJsT0mJr4*irYtU7tL\orrK(]jo5Ci./M3g"THi<](CRRL]7EG!2K/G!Q-jH~> -!BpJTm/X,tmJs6Gm/jfu2hD!_rrJ&=k5PMZ.(.>""5&HqjFR>brrP+Z\b#1heieN~> -!BU8Qkl@9dmJrg;klS9n2hD!_rrJMMk5PMZ.(.>""5K39kCNYerrP+Z[e&_ac8pI~> -!B:&NirG%MmJr4*irZIc2hD!_rrJt]k5PMZ.(.>""6$#Wl@JthrrP+ZZ1HuV_`*)~> -!BpJTm/X,tmJs6Gm/kE1,_>uLrrIo=k5PIE8C%5;ka@.RJcCB&![IcgoBcS04b*~> -!BU8Qkl@9dmJrg;klSj),_>uLrrJDMk5PIE8C%5;lD0WrJcCB&![IccoB?;$3e.~> -!B:&NirG%MmJr4*ir[$s,_>uLrrJk]k5PIE8C%5;mBE8>JcCB&![Ic^oA]kh2h1~> -!BpJTm/X,tmJs6Gm/l,E%Y=Y6rrIf=kPkVM(=ge3"SAaB_>JlaK)Yl^!8d>7!S0Da~> -!BU8Qkl@9dmJrg;klTQ=%Y=Y6rrJ8MkPkVM(=ge3"SK0\aSg\iK)Yl^!8@&/!R<`V~> -!B:&NirG%MmJr4*ir[a2%Y=Y6rrJb]kPkVM(=ge3"STQuci&FpK)Yl^!7g]$!Q-jH~> -!BpJTm/X,tmJs6Gm/u\Z!;D'ELAq:)n)s`NCsi7cqn@H\on!-orr_uq#41sK!S0Da~> -!BU8Qkl@9dmJrg;kl^,R!;D'ELAq:7n`TrPCsi7cr5FQ&p4<6prr_uq#3b[C!R<`V~> -!B:&NirG%MmJr4*ire9F!;D'ELAq:EoB6/RCsi7cr6:YFpOW?qrr_uq#3,77!Q-jH~> -!BpJTm/X,tmJs6Fm/e1+iIV#`rrIN=kl1_7(@9KL"4;dll@Jtds8W*#i;aeem/bd$J,~> -!BU8Qkl@9dmJrg:klM_&iIV#`rrJ#Mkl1_7(@9KL"4iU4m",1fs8W*#i;abdklK'jJ,~> -!B:&NirG%MmJr4)irU(uiIV#`rrJP]kl1_7(@9KL"5BHRmt(Lis8W*#i;abdirR%VJ,~> -!BpJTm/X,tmJs6Fm/em?bCT\JrrIB=kl1ZSOjj=4if]5RJcC<$rVlrB!&!j0!S0Da~> -!BU8Qkl@9dmJrg:klNI;bCT\JrrIoMkl1ZSOjj=4jdqjrJcC<$rVlrB!&!j,!R<`V~> -!B:&NirG%MmJr4)irUb3bCT\JrrJG]kl1ZSOjj=4kc1K=JcC<$rVlrB!%d^$!Q-jH~> -!BpJTm/X,tmJs6Fm/fZU["873rrI6=l2Lgm./MKo"SSmFaSg\iJcGZJ!jhqqo'HJ/4b*~> -!BU8Qkl@9dmJrg:klO0O["873rrIcMl2Lgm./MKo"S]<_cMiCpJcGZJ!jhqoo'$2#3e.~> -!B:&NirG%MmJr4)irVLH["873rrJ>]l2Lgm./MKo"Sf^#eGb%!JcGZJ!jhqno&Bbg2h1~> -!BpJTm/X,trrB%Wm/gAiSq6osrrW1>rp'LbqC&c&rri,)H+s6.s+14HrrSbl=Rth[eieN~> -!BU8Qkl@9drrAVKklOlcSq6orrr@W7rrW$F[FY?\q7VU'rIP!"s8)`sScDg^klK'jJ,~> -!B:&NirG%MrrA#:irW0[Sq6orrrA2GrrW$F[FY?\q8J]FrIP!"s8)`sScDa\irR%VJ,~> -!BpJTm/X,trrB%Wm/h,)LOoJ\rrN"=l2LdH8D!kErPa5^mt(Lis7lTqLB)2^m/bd$J,~> -!BU8Qkl@9drrAVKklPW#LOoJ\rrN%Ml2LdH8D!kErQL5(nU^^ks7lTqLB),\klK'jJ,~> -!B:&NirG%MrrA#:irWopLOoJ\rrN%]l2LdH8D!kErR.1Go7?pms7lTqLB)&ZirR%VJ,~> -!BpJTm/X,trrB%Wm/i%CCOuM@rrMk=lMgqP(=h(;"4i6mjFR>^s7ZHoCB0.\m/bd$J,~> -!BU8Qkl@9drrAVKklQP=COuM@rrMnMlMgqP(=h(;"59$6kCNYas7ZHoCB0(ZklK'jJ,~> -!B:&NirG%MrrA#:irXc3COuM@rrMq]lMgqP(=h(;"5fiTl@Jtds7ZHoCB/qVirR%VJ,~> -!BpJTm/X,trrB%Wm/j!^:4`G#rrM_=lMpm#g&D08QA="As+14BrrPpqU@R[PeieN~> -!BU8Qkl@9drrAVKklRIW:4`G#rrMeMlMpm#g&D0;U6O>^s+14BrrPpqTCV4Ic8pI~> -!B:&NirG%MrrA#:irY\M:4`G#rrMh]lMpm#g&D0>XeO['s+14BrrPpqS+>S?_`*)~> -!BpJTm/X,trrB%Wm/jp#14fI\rrMS=li.%:(@9fU"Rr:;`VkAfJcG?A!\sbgo'HJ/4b*~> -!BU8Qkl@9drrAVKklSBq14fI\rrMYMli.%:(@9fU"S/dUbPd"lJcG?A!\sbdo'$2#3e.~> -!B:&NirG%MrrA#:irZRf14fI\rrM_]li.%:(@9fU"S93odf"asJcG?A!\sb_o&Bbg2h1~> -!BpJTm/X-`rrBjNrrB%Wm/kl>'nQC?rrMG=li-uVOkfs>ppPOVpOW?qs7-*j'`ckVm/bd$J,~> -!BU8Qkl@:PrrBjNrrAVKklT<6'nQC?rrMPMli-uVOkfs>q7_^!pjrHrs7-*j'`c_RklK'jJ,~> -!B:&NirG&9rrBjNrrA#:ir[L+'nQC?rrMV]li-uVOkfs>qSnoAq18Qss7-*j'`cPMirR%VJ,~> -!BpJTm/X-`rrE,8_Z'V8iU$a5"p+ILs+p[UkD8L)!jsHQhZ!`Wa+'oRJcC<$nG`Ub!=%l\m/bd$ -J,~> -!BU8Qkl@:PrrE,8_Z'V,iTUI-"Te@Ks+p[UlBU`9!jsHQhZ!`Xc&JmrJcC<$nG`Ub! -!B:&NirG&9rrE,8_Z'UpiSt%!"Te@Ks+p[Um%`qI!jsHQhZ!`Xe!ml -!BpJTm/X-`rrN07^r-0PWSm.F*rt&Hs+p[UiK!=*!r==QhZ!]0M3R%Os+14 -!BU8Qkl@:PrrN07^r-0PS`&`6*WXrGs+p[UjdPT:!r==QhZ!]4QD!Aks+14 -!B:&NirG&9rrN07^r-0PN8W^t*<=iFs+p[UkbmhJ!r==QhZ!]9UTE^2s+14 -!BpJTm/X-`rrW8:'YsA@q>f1J!3+oD!]U1oJcCQ+!Sin+rrJ6Qhu -!BU8Qkl@:PrrW8:'YsA@q>f1J!1i'4!]U1oJcCQ+!T9U;rrJ6Qhu -!B:&NirG&9rrW8:'YsA@q>f1J!0#jr!]C%mJcCQ+!T^ -!BpJTm/X-`rr`?%^_FTTrr<&LrrB%Vm/g>hSUpfsrrL`=mf*@T(=hCD"Rr=;_u5/dJcG'9!hB -!BU8Qkl@:Prr`?%^_FTTrr<&LrrAVJklOlcSUpfsrrLoMmf*@T(=hCD"S/gVb5HnkJcG'9!hB -!B:&NirG&9rr`?%^_FTTrr<&LrrA#9irW-ZSUpfsrrM&]mf*@T(=hCD"SB -!BpJTm/X-`rriE&s1f>aoD]'rs8UnL$jT8bh>[JSi9^Si!.'4rM#RM(SaQOXCuYHtq6t^WpOW?q -s69ObH2r0Zm/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoD]'rs8UnL$jT8bh>[JGi9:;c!.'4rM#RM-W:']cCuYHtqS.p#pjrHr -s69ObH2r*XklK'jJ,~> -!B:&NirG&9rriE&s1f>aoD]'rs8UnL$jT8bh>[J6i8XlZ!.'4rM#RM2ZgRknCuYHtqT##BpjrHr -s69ObH2r!UirR%VJ,~> -!BpJTm/X-`rr<&urrR`Op%87i!<<'L^@q&7=P`uWWSm.FQiL3=s+p[Uc(a\,!nA(QjSoA]aFBuQ -JcC<$kPkTb!1< -!BU8Qkl@:Prr<&urrR`Op%87i!<<'L^@q&7=P`uWS`&`6PlOm:s+p[Ud]N! -!B:&NirG&9rr<&urrR`Op%87i!<<'L^@q&7=P`uWN8W^tOT8I6s+p[UfXL>L!nA(QjSoA^e==#= -JcC<$kPkTb!0Qg3!Q-jH~> -!BpJTm/X-`rriE&s1f>aoD\djqu6]i']&chWSm.F\,\@:s+p[Ua/AD+!D&@6rr^o2PMq)mJcFj3 -!]0nena-A.4b*~> -!BU8Qkl@:PrriE&s1f>aoD\djqu6]i']&chS`&`6[/`%7s+p[Uc*?a;!D&@6rr_&CTB1Y(JcFj3 -!]0nbn`^)"3e.~> -!B:&NirG&9rriE&s1f>aoD\djqu6]i']&chN8W^tYQ-M2s+p[Ue@Y2L!D&@6rr_5UX6>-7JcFj3 -!]0n]n`'Yf2h1~> -!BpJTm/X-`rr`?%^_FTTrs/W)s2R81!!!&UrrB%Vm/kr@&V9t -!BU8Qkl@:Prr`?%^_FTTrs/W)s2R81!!!&UrrAVJklTB8&V9t -!B:&NirG&9rr`?%^_FTTrs/W)s2R81!!!&UrrA#9ir[O,&V9t -!BpJTm/X-`rrW8:'Ys8=#QXo)*2rB+nc7MG!3+lC!Xo(rJcCT,!PPf/rrW$F[HIPmnu-uRr.4m! -s5X+\m/RRam/bd$J,~> -!BU8Qkl@:PrrW8:'Ys8=#QXo)*2rB+nc7MG!1i$3!Xo(rJcCT,!Q;V?rrW$F[HIPmo -!B:&NirG&9rrW8:'Ys8=#QXo)*2rB+nc7MG!0#gq!Xo(rJcCT,!R/IOrrW$F[HIPmot6a?rIP!" -s5X+\m/RRairR%VJ,~> -!BpJTm/X-`rrN07_!q@0!<<'4Yk[$T!8[YTWSd(E/-*hDs,$aV\%(u.!Kfq:rri/.Ha39qs+14/ -rrU=C/F`$-eieN~> -!BU8Qkl@:PrrN07_!q@0!<<'4Yk[$T!8[YTS_rZ5/-*hDs,$aV^VKC>!Kfq:rri27MRrP5s+14/ -rrU=C/F_m)c8pI~> -!B:&NirG&9rrN07_!q@0!<<'4Yk[$T!8[YTN8NXs.fd_Cs,$aVa2mfN!Kfq:rri5@RD\fNs+14/ -rrU=C/+DR"_`*)~> -!BpJTm/X-`rrE,8n,EXns8TAL"[JShsCJ@!2G,FM>mU^^%21)lk\.:rri>CJ>)@]s+14- -rrSqq:[m`PeieN~> -!BU8Qkl@:PrrE,8n,EXns8TAL"[JGhrt2:!2G,FM>mUg`:Ep0lk\.:rri>INi_]#s+14- -rrSqq:%7BJc8pI~> -!B:&NirG&9rrE,8n,EXns8TAL"[J6hr=c2!2G,FM>mUobjtc8lk\.:rri>OS@7s=s+14- -rrSqq9CUsB_`*)~> -!BpJTm/X-`rrBjNrrB%Um/hD1H@c*QrrK4Mj!%Ms+14+rrRKHFn"c!eieN~> -!BU8Qkl@:PrrBjNrrAVIklPo+H@c*QrrKRMo)J`+lMgtBR%EAis+14+rrRKHF7ADpc8pI~> -!B:&NirG&9rrBjNrrA#8irX0"H@c*QrrKm]o)J`+lMgtGV5ia1s+14+rrRKHE:Dlg_`*)~> -!BpJTm/X,trrB%Um/idX;1\b(rrK%=oD\mB(@:Df"6c/,d=M=Ks4dPT;#m-Um/bd$J,~> -!BU8Qkl@9drrAVIklR7Q;1\b(rrKCMoD\mB(@:Df"6u_Geq*jPs4dPT;#m$RklK'jJ,~> -!B:&NirG%MrrA#8irYJG;1\b(rrKa]oD\mB(@:Df"7<=cgO]BUs4dPT;#lmNirR%VJ,~> -!BpJTm/X,trrB%Um/k-)."VDTrrJk=oD\h^OmW/Onu@)Rr.4m!s4[JS-ih-Rm/bd$J,~> -!BU8Qkl@9drrAVIklSU"."VDTrrK7MoD\h^OmW/OoWsIsr.4m!s4[JS-ih$OklK'jJ,~> -!B:&NirG%MrrA#8irZdl."VDTrrKU]oD\h^OmW/Oot?g?r.4m!s4[JS-igjJirR%VJ,~> -!BpJTm/X,trrB%Um/uJQ"SmWKMZ3^Jde*P@[4(n?rri//Ha*3ps+14'rr`'""6T+?!S0Da~> -!BU8Qkl@9drrAVIkl]oI"SmWKMZ3^UfC](E[4(n?rri28MRiJ4s+14'rr`'""6/h7!R<`V~> -!B:&NirG%MrrA#8ire'="SmWKMZ3^`h":UJ[4(n?rri5ARDS`Ms+14'rr`'""5ND+!Q-jH~> -!BpJTm/X,trrB%Tm/eF2e:IXWrrJM=p&>*i.(/RE"THMnT^770JcF@%!n72nn*L/,4b*~> -!BU8Qkl@9drrAVHklN".e:IXWrrJnMp&>*i.(/RE"TH`-X6tQ=JcF@%!n72nn*'ku3e.~> -!B:&NirG%MrrA#7irU>'e:IXWrrK=]p&>*i.(/RE"THrA[IAbIJcF@%!n72mn)FGd2h1~> -!BpJTm/X,trrB%Tm/ffYX+C;.rrJ>=p&>&T8FZW]eVTCIJcC<$ec,]O!(cSG!S0Da~> -!BU8Qkl@9drrAVHklO?TX+C;.rrJbMp&>&T8FZW]g6S;kJcC<$ec,]O!(ZMB!R<`V~> -!B:&NirG%MrrA#7irVXLX+C;.rrK1]p&>&T8FZW]hP7(6JcC<$ec,]O!(HA:!Q-jH~> -!BpJTm/X,trrB%Tm/h2+It@WWrrJ,=pAY3\(=i!U"6#H"eUdaOs3puLIfOEUm/bd$J,~> -!BU8Qkl@9drrAVHklP]%It@WWrrJSMpAY3\(=i!U"6?)>fn'0Ss3puLIfO?SklK'jJ,~> -!B:&NirG%MrrA#7irWrqIt@WWrrK%]pAY3\(=i!U"6ce\hLY]Xs3puLIfO6PirR%VJ,~> -!BpJTm/X,trrB%Tm/idX:P&P'rrIr=pAb//oD\sYT7G#]JcC<$df0AE!1`NF!S0Da~> -!BU8Qkl@9drrAVHklR7Q:P&P'rrJDMpAb//oD\s\WfGC(JcC<$df0AE!1E -!B:&NirG%MrrA#7irYJG:P&P'rrJn]pAb//oD\s^[@PkIJcC<$df0AE!1!$5!Q-jH~> -!BpJTm/X,tmJs6Cm/k?/++aHLrrI` -!BU8Qkl@9dmJrg7klSg(++aHLrrJ5Lp\t -!B:&NirG%MmJr4&ir[!r++aHLrrJ_\p\t -!BpJTm/X,tmJs6Cm/uV[!UbO=MuNg+o(W.b8 -!BU8Qkl@9dmJrg7kl^&S!UbO=MuNg:oCr7c8 -!B:&NirG%MmJr4&ire3G!UbO=MuNgHp%SIe8 -!BpJTm/X,tmJs6Bm/f'D^OcECrrIB=q#:E&./N`="T62fU[ -!BU8Qkl@9dmJrg6klNU?^OcECrrIoMq#:E&./N`="T?N'Xm^i@JcF!p!l"^jmcabt3e.~> -!B:&NirG%MmJr4%irUq8^OcECrrJJ]q#:E&./N`="T?`;\+,%LJcF!p!l"^imc+>c2h1~> -!BpJTm/X,tmJs6Bm/gVpO+I=hrsWtXH#RbK])Ma0nK5^Frri>KKpUkOs+13nrrS5]?gd:^eieN~> -!BU8Qkl@9dmJrg6klP/kO+I=hrsXIfH#RbK])Ma0nK5^Err^i9UZ[4.JcEpn!fm=fmcabt3e.~> -!B:&NirG%MmJr4%irWEbO+I=hrsY%!H#RbK])Ma0nK5^Err_#KY3LTc2h1~> -!BpJTm/X,tmJs6Bm/i7I?\/69rs[%:NP3'?]o?7?s(5m=rr_) -!BU8Qkl@9dmJrg6klQ_B?\/69rs[%=NP3'?]o?7?s(5m=rr_5MRGEGoJcEjl!abqbmcabt3e.~> -!B:&NirG%MmJr4%irXu9?\/69rs[%?NP3'?]o?7?s(5m=rr_A]VW!++JcEjl!abq_mc+>c2h1~> -!BpJTm/X-`mJsT0mJs6Bm/jfu/qO%^rrJ:1q7ZrZE$+WIrrhb^K$=4Fs+13krrOeQ\aJhceieN~> -!BU8Qkl@:PmJsT0mJrg6klS9n/qO%^rrJ:1q7ZrZE$+WIrrhhkOOF,Zs+13krrOeQ[dNA\c8pI~> -!B:&NirG&9mJsT0mJr4%irZIc/qO%^rrJ:1q7ZrZE$+WIrrho#T%O$ns+13krrOeQZ0pWQ_`*)~> -!BpJTm/X-`mK! -!BU8Qkl@:PmK!%$"U"@Is,[0\Nfa"L!JG=frr_\lMU$eQJcEai"7lTuipQ%3 -c8pI~> -!B:&NirG&9mK! -!BpJTm/X-`mK*A%Zg7#Z!8?i@WSHkB0*&e=s,d6]_gD'j#^aJhs737<\bLaUJcE^h!l+dhmHjr* -4b*~> -!BU8Qkl@:PmK*A%Zg7#Z!8?i@S_WH2/c`\/Z^JcE^h!l+dgmHFYs -3e.~> -!B:&NirG&9mK*A%Zg7#Z!8?i@N83Fp/HES;s,d6]_gD'j#^aJhs7O*oangSgJcE^h!l+dfmGe5b -2h1~> -!BpJTm/X-`mK3I)'=7?!q>^Qa!8?i@WSHkB@K;::s,m<_qHU`,^';8Un[*YIoR[$ns24j -!BU8Qkl@:PmK3I)'=7?!q>^Qa!8?i@S_WH2?iZ(8s,m<_qHU`,^';8Uo"9gion!-os24j -!B:&NirG&9mK3I)'=7?!q>^Qa!8?i@N83Fp?3#k6s,m<_qHU`,^';8Uo>I$5p4<6ps24j -!BpJTm/X-`mK -eieN~> -!BU8Qkl@:PmK -!B:&NirG&9mK -!BpJTm/X-`mKEUjs1f;SoBlSYrU'ghIh`8okMP\-WSHkB`rI03s,m<]B( -!BU8Qkl@:PmKEUjs1f;SoBlSYrU'ghIh`8okMP\-S_WH2_uLj0s,m<]B( -!B:&NirG&9mKEUjs1f;SoBlSYrU'ghIh`8okMP\-N83Fp^Ao=+s,m<]B( -!BpJTm/X-`mJm7drrR`Ojn.s@!<)nWmHjr*4b*~> -!BU8Qkl@:PmJm7drrR`Ojn.s@!<)nSmHFYs3e.~> -!B:&NirG&9mJm7drrR`Ojn.s@!<)kLmGe5b2h1~> -!BpJTm/X-`mKEUjs1f;SoBlSYrU'ghbjOoB)W0r_WS?eA56.m -!BU8Qkl@:PmKEUjs1f;SoBlSYrU'ghbjOoB)W0r_S_NB14ohd;s-*H`W13b"!!)l0!!*#4!Lp$= -s+13drrTA(54%M7c8pI~> -!B:&NirG&9mKEUjs1f;SoBlSYrU'ghbjOoB)W0r_N8*@o492R9s-*H`W13b"!!)l0!!*#4!Lp$= -s+13drrTA(4RD)/_`*)~> -!BpJTm/X-`mKYF!;aD0!<0\5]leo+ -JcERd!ce9am-Oi)4b*~> -!BU8Qkl@:PmKYF!;aD0!<0\5]leo+ -JcERd!ce9_m-+Pr3e.~> -!B:&NirG&9mKYF!;aD0!<0\5]leo+ -JcERd!ce9\m,J,a2h1~> -!BpJTm/X-`mK3I)'=75s!!)uc"TZd7m`QO+mJs6@m/jEj21bdkrr@*;^&S00^&S03^&W2)s+13d -rrP%XY3bNVeieN~> -!BU8Qkl@:PmK3I)'=75s!!)uc"TZd7m`QO+mJrg4klRmc21bdkrr@*;^&S00^&S03^&W2)s+13d -rrP%XX6f'Oc8pI~> -!B:&NirG&9mK3I)'=75s!!)uc"TZd7m`QO+mJr4#irZ+Y21bdkrr@*;^&S00^&S03^&W2)s+13d -rrP%XVsNFE_`*)~> -!BpJTm/X-`mK*A%ZgdA_!<) -!BU8Qkl@:PmK*A%ZgdA_!<) -!B:&NirG&9mK*A%ZgdA_!<) -!BpJTm/X-`mK! -!BU8Qkl@:PmK! -!B:&NirG&9mK! -!BpJTm/X-`mJsT0mJs6?m/h#&IY%N`rr@*;^&S00^&S03^&W2)s+13errRWLC?t6feieN~> -!BU8Qkl@:PmJsT0mJrg3klPQ!IY%N`rr@*;^&S00^&S03^&W2)s+13errRWLC$Y!ac8pI~> -!B:&NirG&9mJsT0mJr4"irWfmIY%N`rr@*;^&S00^&S03^&W2)s+13errRWLB'\IX_`*)~> -!BpJTm/X,tmJs6?m/j$_6%T'%rr_&1/%tnq!=5t.^&bDDrk8EHFb0RDs2+d;5ld\Gm/bd$J,~> -!BU8Qkl@9dmJrg3klRLX6%T'%rr_&3/A;"r!=5t.^&bDDrk8EHFb0RDs2+d;5ldSDklK'jJ,~> -!B:&NirG%MmJr4"irY_N6%T'%rr_&4/\V+s!=5t.^&bDDrk8EHFb0RDs2+d;5ldG@irR%VJ,~> -!BpJTm/X,tmJs6?m/u/F$N#DSS,W`i^2kS40NjnD^&]s9r4W2X1&elfS#Co -!BU8Qkl@9dmJrg3kl]W?$N#DSS,W`i^2kS52I)aM^&]s9r4W2X1&elfS#Co -!B:&NirG%MmJr4"irdd3$N#DSS,W`i^2kV74C=TV^&]s9r4W2X1&elfS#Co -!BpJTm/X,tmJs6>m/ed<^OcEVrsJC]<=1N`A$u$mFT&oZO:liA] -!BU8Qkl@9dmJrg2klN=7^OcEVrsJC]<=1QfDnbu.FT&oZO:liA]p3e.~> -!B:&NirG%MmJr4!irUY0^OcEVrsJC]<=1QkHcGjCFT&oZO:liA] -!BpJTm/X,tmJs6>m/h#&I"D -!BU8Qkl@9dmJrg2klPMuI"D -!B:&NirG%MmJr4!irWclI"D -!BpJTm/X,tmJs6>m/j3d3._++rsSG%A/Zk;^?DSDZLe"o!MZ4X^&ak#JcC<$_Z'Zs!3#2M!S0Da~> -!BU8Qkl@9dmJrg2klR^^3._++rsSG%A/Zk;^?W%]]Cl+%!MZ4X^&ak#JcC<$_Z'Zs!2f&G!R<`V~> -!B:&NirG%MmJr4!irYnS3._++rsSG%A/Zk;^?iP#`:j-/!MZ4X^&ak#JcC<$_Z'Zs!28] -!BpJTm/X,tmJs6>m/u>O"Rq!BWW*C^O[]gMOkg!&VgGiDqYpWn>eTgE!khk8JcC<$_uBi."9mfM -m/bd$J,~> -!BU8Qkl@9dmJrg2kl]cG"Rq!BWW*C^O[]gMOkg!)Z&66gqYpWn>eTgE!khk8JcC<$_uBi."9mZI -klK'jJ,~> -!B:&NirG%MmJr4!irdp:"Rq!BWW*C^O[]gMOkg!+]:$Y4qYpWn>eTgE!khk8JcC<$_uBi."9dBB -irR%VJ,~> -!BpJTm/X,tmJs6=m/f6IZ%;qWrsnn>F!qr;YOheolD8j:p@nRf_gD'j!IM_8s+13errTG*39ff2 -eieN~> -!BU8Qkl@9dmJrg1klNgEZ%;qWrsnn>F!qr;YOheom&u;]p\4[g_gD'j!IM_8s+13errTG*39fZ. -c8pI~> -!B:&NirG%MmJr3uirV+=Z%;qWrsnn>F!qr;YOheon%"k,q"Odh_gD'j!IM_8s+13errTG*2X06& -_`*)~> -!BpJTm/X,trrB%Nm/hJ3D1V_krs/7]<=1[:c2R_B"R)V.](bjs!KN99^&a=UJcC<$_>aRR!-d\p -!S0Da~> -!BU8Qkl@9drrAVBklPu-D1V_krs/7]<=1[:c2R_B"RE1J_>*[&!KN99^&a=UJcC<$_>aRR!-RPj -!R<`V~> -!B:&NirG%MrrA#1irX6$D1V_krs/7]<=1[:c2R_B"RW[eanYN.!KN99^&a=UJcC<$_>aRR!-7>a -!Q-jH~> -!BpJTm/X,trrB%Nm/j]r.=qN*rs%DD64-VRo_e^lk+R49q!n@bP'?`9!I^,^s+13crrOVL[d!/[ -eieN~> -!BU8Qkl@9drrAVBklS0k.=qN*rs%DD64-VRo_e^ll)T`[q=4IcP'?`9!I^,^s+13crrOVLZg$]T -c8pI~> -!B:&NirG%MrrA#1irZCa.=qN*rs%DD64-VRo_e^lm'`A+q=4IcP'Hf:!I^,^s+13crrOVLYNb'J -_`*)~> -!BpJTm/X,trrB%Nm/uS`!8`;,\,QZ[JMIsLZ1e(p"Qc5(^A73s$"-ts]tV4oN&o16s+13crr_*X -&*`?G!S0Da~> -!BU8Qkl@9drrAVBkl^#X!8`;,\,QZ[JMIsLZ1e(p"R)hD`VT$&$# -!B:&NirG%MrrA#1ire0K!8`;,\,QZ[JMIsLZ1e(p"REFac2-l.$$][6]tV4oN&o16s+13crr_*X% -c?O2!Q-jH~> -!BpJTm/X,trrB%Mm/g)aP_&kHrs/JO00"R)A*_"mBt$N+uE\p876H*.YOJcC<$_#FJ# -!)VnH!S0Da~> -!BU8Qkl@9drrAVAklOT[P_&kHrs/JO00"R;nEa853'$N,MT\p876H*.YOJcC<$_#FJ# -!)DbB!R<`V~> -!B:&NirG%MrrA#0irVmSP_&kHrs/JO00"RWLacMR#/$N-(d\p876H*.YOJcC<$_#FJ# -!)2V:!Q-jH~> -!BpJTm/X,trrB%Mm/iOQ8qI#Vrs&2%@MLYLdJ3_EfT^p)qs47_om6K7!B[lDs+13crrPdmQ0@T9 -eieN~> -!BU8Qkl@9drrAVAklR%K8qI#Vrs&2%@MLYLdJ3_Egn9\Mqs47_p5/YG!B[lDs+13crrPdmPN_63 -c8pI~> -!B:&NirG%MrrA#0irY8A8qI#Vrs&2%@MLYLdJ3_EiN/Qsr9O@`pR(gW!B[lDs+13crrPdmO6GU) -_`*)~> -!BpJTm/X-`rrBjNrrB%Mm/tuB$2/rM_Z'i -!BU8Qkl@:PrrBjNrrAVAkl]E:$2/rM_Z'i`rrrMVMqYpSJFFjICs2"^; -p'CfMkii,n3e.~> -!B:&NirG&9rrBjNrrA#0irdU/$2/rM_Z'i -!BpJTm/X-`rrE,8_Z'V8f'NMn!4@CX`;^"pFr!H/p@nRjr5aVSeGeY2!U#77rrL4nJcC<$_>aSE -!&<[(!S0Da~> -!BU8Qkl@:PrrE,8_Z'V,f'*5i!4@CX`;^"pFr!H/p@nRir6CLrg#i;8lBV5G!QcpEs+13drrTS. -0^%[$c8pI~> -!B:&NirG&9rrE,8_Z'Upf&Hfb!4@CX`;^"pFr!H/p@nRir7.L?hWFh=m%X@V!QcpEs+13drrTS. -0B_?r_`*)~> -!BpJTm/X-`rrN07^r-0PWRgG^s2+d; -C&iG?m/bd$J,~> -!BU8Qkl@:PrrN07^r-0PS_!$,F9$',s2Y-Cq5H^tG1uZi"T$0!UYt55!T]aHrrW*4jFR>^s2+d; -C&iA=klK'jJ,~> -!B:&NirG&9rrN07^r-0PN7R"jE<'a)s2Y-Cq5H^tG1uZi"T$E7YN4dE!U$EXrrW*4jFR>^s2+d; -C&i8:irR%VJ,~> -!BpJTm/X-`rrW8:'YsA@q>f1J!3+Q:!k\LPJcEjl"kn,96`KnTrri#)I%]Q[rrLi=q>UIsSq6om -s2+d;)Z[P6m/bd$J,~> -!BU8Qkl@:PrrW8:'YsA@q>f1J!1h^*!kA:MJcEjl"kn,96`KnTrri&2MlZ%#rrLuMq>UIsSq6om -s2+d;)Z[G3klK'jJ,~> -!B:&NirG&9rrW8:'YsA@q>f1J!0#Lh!jhqHJcEjl"kn,96`KnTrri);R^MG?rrM,]q>UIsSq6om -s2+d;)Z[8.irR%VJ,~> -!BpJTm/X-`rr`?%^_FTTrr<&LrrB%Lm/uYk!7$/qc2RtCWC%JFg@bIKn?@8G -s+13frr^OH)!gAP!S0Da~> -!BU8Qkl@:Prr`?%^_FTTrr<&LrrAV@kl^)c!7$/qc2RtCWC%JFg@bIKo!sU_mGS!Ff;SNF!Ld>G -s+13frr^OH)!C)H!R<`V~> -!B:&NirG&9rr`?%^_FTTrr<&LrrA#/ire6V!7$/qc2RtCWC%JFg@bIKo>-g+n)43Hgp?hV!Ld>G -s+13frr^OH(ZFQ;!Q-jH~> -!BpJTm/X-`rriE&s1f>aoD]@%s8UnL$jT8bs8UnL$jT8bjo5=[ea3EH!.BFuci41&Fr*NFq=Xaj -l_8U-nD=0Gb,+q6!S/HGs+13frrRTK@HQqXeieN~> -!BU8Qkl@:PrriE&s1f>aoD]@%s8UnL$jT8bs8UnL$jT8bjo5=Oe`d-C!.BFuci41&Fr*NFq=Xaj -mAu&Qo%sBId'*9F!S/HGs+13frrRTK@-6\Sc8pI~> -!B:&NirG&9rriE&s1f>aoD]@%s8UnL$jT8bs8UnL$jT8bjo5=>e`-^:!.BFuci41&Fr*NFq=Xaj -n$eV!oA9KJf"(VV!S/HGs+13frrRTK?0:/J_`*)~> -!BpJTm/X-`rr<&urrR`Op%87q!<<'L^@q&7=TACO^@q&7=QTP_WR^A;XT0o's3goNqNXD`G1uTg -"P]>m](XqZ!Q(u7rrW06jamG_s2=p=/-)g7m/bd$J,~> -!BU8Qkl@:Prr<&urrR`Op%87q!<<'L^@q&7=TACO^@q&7=QTP_S^ls+WW4T$s3goNqNXD`G1uTg -"Q-&7_Y;jc!Q__FrrW06jamG_s2=p=/-)^4klK'jJ,~> -!B:&NirG&9rr<&urrR`Op%87q!<<'L^@q&7=TACO^@q&7=QTP_N7HqiV>r/us3goNqNXD`G1uTg -"QQ_Tb4scl!RJOVrrW06jamG_s2=p=/-)R0irR%VJ,~> -!BpJTm/X-`rriE&s1f>aoD\djqu6]i'`7n2ob?Nf!3+N9"6^9rg4B:Trs&A0>RjAmr:U'nrQU:V -aSX]k!P5]6rrGopJcC<$`W$%o!"eAVm/bd$J,~> -!BU8Qkl@:PrriE&s1f>aoD\djqu6]i'`7n2ob?Nf!1h[)"69smg4B:Trs&A0>RjAmr:U'nrR71" -cMZDr!PuMFrrGopJcC<$`W$%o!"\/QklK'jJ,~> -!B:&NirG&9rriE&s1f>aoD\djqu6]i'`7n2ob?Nf!0#Ig"5aUhg4B:Trs&A0>RjAmr:U'nrRe!A -eGS&#!Qi@VrrGopJcC<$`W$%o!"[uLirR%VJ,~> -!BpJTm/X-`rr`?%^_FTTrt#21s2R81!!!'"s2R81!!!&]rrB%Jm/g;gM1P]ZrrpP`(c[`Eo`#*i -^k%a#rn.5OZ+g#5!K1fGs+13hrrS#W -!BU8Qkl@:Prr`?%^_FTTrt#21s2R81!!!'"s2R81!!!&]rrAV>klOibM1P]ZrrpP`(c[`Eo`#'i -a,cnIfDbl_`VBH6Mf"%FJcE^h!f6nWjllfk3e.~> -!B:&NirG&9rr`?%^_FTTrt#21s2R81!!!'"s2R81!!!&]rrA#-irW*YM1P]ZrrpP`(c[`Eo`#'i -cCM&nfDblgc1q;>Mf"%FJcE^h!f6nTjl6BZ2h1~> -!BpJTm/X-`rrW8:'Ys8=&-2b1*2rB+nc8^i*2rB+nc7eO!3+K8!hoZSJcFL)"l"ST-@sqCrrhhs -H_KHLrrK(=q#:B80nK@Us2G!>2uo]7m/bd$J,~> -!BU8Qkl@:PrrW8:'Ys8=&-2b1*2rB+nc8^i*2rB+nc7eO!1hX(!hTHPJcFL)"l"ST-@sqCrrho) -MQGpirrKFMq#:B80nK@Us2G!>2uoT4klK'jJ,~> -!B:&NirG&9rrW8:'Ys8=&-2b1*2rB+nc8^i*2rB+nc7eO!0#Ff!h00LJcFL)"l"ST-@sqCrrhr3 -RC;>0rrKd]q#:B80nK@Us2G!>2uoH0irR%VJ,~> -!BpJTm/X-`rrN07_!q@8!<<'4Yk[$T!<<'4Yk[$T!9O4\WRU;;jTtqIJcFX-"mV:2(iRRfrrhJ\ -HEQYarrJe=q#:Ek%Io#LJcEdj"60@fjlPk1eieN~> -!BU8Qkl@:PrrN07_!q@8!<<'4Yk[$T!<<'4Yk[$T!9O4\S^cm+i<]MEJcFX-"mV:2(iRRfrrhSi -M7;s&rrK1Mq#:Ek%Io#LJcEdj"60@fiT9;)c8pI~> -!B:&NirG&9rrN07_!q@8!<<'4Yk[$T!<<'4Yk[$T!9O4\N7?kigBdl?JcFX-"mV:2(iRRfrrhYu -R)&7@rrKO]q#:Ek%Io#LJcEdj"60@fgZ@Gr_`*)~> -!BpJTm/X-`rrE,8n,Eq!s8TAL" -!BU8Qkl@:PrrE,8n,Eq!s8TAL" -!B:&NirG&9rrE,8n,Eq!s8TAL"e)LL&!0)R0ir95^RS"&p\,5ar"QHVT -bP9Kb!O(GUrrGBpJcC<$a8Z4#!))D5!Q-jH~> -!BpJTm/X-`rrBjNrrB%Im/is]21begrrr.c-6AKLo)Amjabbhqr6PBDO5K^3s*TCtJcEdj!]9tO -jR!!!4b*~> -!BU8Qkl@:PrrBjNrrAV=klRFV21begrrr.c-6AKLo)Amkc^'jBr6PBDSE'ADs*TCtJcEdj!]9tL -jQQ]j3e.~> -!B:&NirG&9rrBjNrrA#,irYYL21begrrr.c-6AKLo)AmkeYJtjr6PBDW93jSs*TCtJcEdj!]9tH -jPp9Y2h1~> -!BpJTm/X,trrB%Im/uJ[!8E))kPk\RL)EY#nc&d`[XFRrrltHDLZnL4!OtCGs+13krr_!U%Hca= -!S0Da~> -!BU8Qkl@9drrAV=kl]oS!8E))kPk\RL)EY#nc&a`^Po#Ebl7^.lM(;Z\3PWFJcEgk"5) -c8pI~> -!B:&NirG%MrrA#,ire'F!8E))kPk\RL)EY#nc&aba-s6kbl7^ -!BpJTm/X,trrB%Hm/g;gKRs0frrhA''495YrrhDZHE6;QrrIW=p\t -!BU8Qkl@9drrAV -!B:&NirG%MrrA#+irW*YKRs0frrhA''495YrrhVtR(i"2rrJY]p\t -!BpJTm/X,trrB%Hm/j3d/:mierrgeX'6E4)rrrALPC^F@aSu9bq"F^g0unkFJcEjl!\=>Mj6Zlu -4b*~> -!BU8Qkl@9drrAVKj66Ti -3e.~> -!B:&NirG%MrrA#+irYnS/:mierrgeX'6E4)rrrDWX.@K0aSu:+qY'pi0unkFJcEjl!\=>Fj5U0X -2h1~> -!BpJTm/X,trrB%Hm/uPb!7QN!mf*F+9,WKQo)Amf^k.ZorQ"p>rGqo2rrHtpJcC<$b5VRm!#"MU -m/bd$J,~> -!BU8Qkl@9drrAV -!B:&NirG%MrrA#+ire0N!7QN!mf*F+9,WKQo)AmgcCV#hrQ"p=rK?jR!H!aGs+13mrr^^M&`;X/ -!Q-jH~> -!BpJTm/X,trrB%Gm/gSoH%H"crrr@g*[[?Mo)AjYXa6`#`;]l2H1h1 -!BU8Qkl@9drrAV;klP,jH%H"crrr@g*[[?Mo)Aj[[u%6J`;]l3M"UcKWDA*FJcEmm!dOcOiopKh -3e.~> -!B:&NirG%MrrA#*irWBaH%H"crrr@g*[[?Mo)Aj]^mMUp`;]l4QhC@ZWDA*FJcEmm!dOcLio:'W -2h1~> -!BpJTm/X,trrB%Gm/s`r*W:Qho`#*VJ/U\Arpp'lgRNYunA>2+m=P$2!p(-qJcC<$bl7eD*< -!BU8Qkl@9drrAV;kl\3k*W:Qho`#*VJ/U\Arpp'lhkuCFo"tD-mu[5B!p(-qJcC<$bl7eD*< -!B:&NirG%MrrA#*ircFa*W:Qho`#*VJ/U\Arpp'lj0G,lo>:M.nXfFR!p(-qJcC<$bl7eD*<<8% -irR%VJ,~> -!BpJTm/X,trrB%Gm/u\t!4ma]p\tEr^Jtn]eFNVCqo=PL`qmLN!T].1rrF=pJcC<$bl7dV!$LXf -m/bd$J,~> -!BU8Qkl@9drrAV;kl^,l!4ma]p\tEr^Jtn]eFNVCqotFlbko3U!U#gArrF=pJcC<$bl7dV!$LLb -klK'jJ,~> -!B:&NirG%MrrA#*ire9_!4ma]p\tEr^Jtn]eFNVCr7%L:e,-r\!U?KQrrF=pJcC<$bl7dV!$C4[ -irR%VJ,~> -!BpJTm/X,tmJs65m/hM4>ClhMrrqtY.k?nUo)Aj[Z$W"q^&J,fPP"kU?CHHFJcEso!a>YLiU$Zs -4b*~> -!BU8Qkl@9dmJrg)klQ#.>ClhMrrqtY.k?nUo)Aj]\r*EC^&J,jTCi-a?CHHFJcEso!a>YJiTUBg -3e.~> -!B:&NirG%MmJr3mirX9%>ClhMrrqtY.k?nUo)Aj__O7^i^&J,nX7ZDm?CHHFJcEso!a>YGiSssV -2h1~> -!BpJTm/X,tmJs65m/tZ8$Lr]Ir;QrMC(aO]rq$-nrn3fhZ0f1'!RdP2rrJBrJcC<$c2Rn9$3AK3 -m/bd$J,~> -!BU8Qkl@9dmJrg)kl]-1$Lr]Ir;QrMC(aO]rpp'lh5?.An%8T#f;S?A!L75Is+13prr_cu!R0Ne -!R<`V~> -!B:&NirG%MmJr3mird=&$Lr]Ir;QrMC(aO]rpp'lij+uin[nf%gp?YQ!L75Is+13prr_cu!QX0Z -!Q-jH~> -!BpJTm/X,tmJs64m/f?LSUph@rrrCj5T517o)Amg_hX,iq76M+aJ\\1!Q?sJs+13prrS_k45fK, -eieN~> -!BU8Qkl@9dmJrg(klNmGSUph@rrrCj5T517o)Amhb*87;qRQV,cE[$A!Q?sJs+13prrS_k3oK6' -c8pI~> -!B:&NirG%MmJr3lirV4@SUph@rrrCj5T517o)AmhdA!Gdqml_-e@P;P!Q?sJs+13prrS_k3T/ou -_`*)~> -!BpJTm/X,tmJs64m/iLP5(W_;op-jFR/QUU"R<+9TA6mT!PYi2rrVd"r.4m!s3CWG4ogi*m/bd$ -J,~> -!BU8Qkl@9dmJrg(klR"J5(W_;op-jFR/QUU"RNUSWo1>c!QDYBrrVd"r.4m!s3CWG4ogc(klK'j -J,~> -!B:&NirG%MmJr3lirY5@5(W_;op-jFR/QUU"Rj-n[H+dr!R8LRrrVd"r.4m!s3CWG4ogW$irR%V -J,~> -!BpJTm/X,tmJs64m/uJX!SN/+"R:IP:rMr)"od&>IC8ONrrKL=oD\h -!BU8Qkl@9dmJrg(kl]oP!SN/+"R:IP:rMr)"od5OMnSYfrrKdLoD\hi9:9f -3e.~> -!B:&NirG%MmJr3lire'D!SN/+"R:IP:rMr)"odA^R`4m*rrL'\oD\h -!BpJTm/X-`mJsT0mJs63m/gPnFGBeufk1q1g%,.Hp:u?Ab58LE!NO-1rrH,rJcC<$ci4&g!+"LL -!S0Da~> -!BU8Qkl@:PmJsT0mJrg'klP&hFGBeufk1q1g%,.HpW&Dbd/:3L!OU&ArrH,rJcC<$ci4&g!*e@F -!R<`V~> -!B:&NirG&9mJsT0mJr3kirW?`FGBeufk1q1g%,.Hps,M0f)2iR!PQqQrrH,rJcC<$ci4&g!*S4> -!Q-jH~> -!BpJTm/X-`mK!9crrg8:(4YW?rrhJaGba3#rrJe -!BU8Qkl@:PmK!9crrg8:(4YW?rrhSmLTTX@rrK1MoD\iFFb0RD -s3UcJp_hrt0e3e.~> -!B:&NirG&9mK!9crrg8:(4YW?rrh]%QFH%\rrKO\oD\iFFb0RD -s3UcJp_ -!BpJTm/X-`mK*A%Zg7#Z!;c*`!93DHWQjf3/HD]-rrr=f+!d0FoD]!lc'!7TpT=GrQe:p0!OY@I -s+13srrT(u/`,jqeieN~> -!BU8Qkl@:PmK*A%Zg7#Z!;c*`!93DHS^$C#/HD]-rrr=f+!d0FoD]!le"29)poXPsU>>G@!OY@I -s+13srrT(u/`,^mc8pI~> -!B:&NirG&9mK*A%Zg7#Z!;c*`!93DHN6UAa.fcK+rrr=f+!d0FoD]!lfW(4SpoXPsY2T!P!OY@I -s+13srrT(u/)K:e_`*)~> -!BpJTm/X-`mK3I)'=7?!q>^Qa!;c*`!93DHWQjf3N;u8;rr_E+b3& -!BU8Qkl@:PmK3I)'=7?!q>^Qa!;c*`!93DHS^$C#M?#r8rr_E+b3& -!B:&NirG&9mK3I)'=7?!q>^Qa!;c*`!93DHN6UAaLB'W5rr_E+b3& -!BpJTm/X-`mKadJs+13urr^pT$fKn/!S0Da~> -!BU8Qkl@:PmKadJs+13urr^pT$f'V'!R<`V~> -!B:&NirG&9mKadJs+13urr^pT$eO7q!Q-jH~> -!BpJTm/X-`mKEUjs1f;SoBlSYrU(*pIh`8okO.al\uDrrUtZN;:0hN*>$8 -rrq,"(IP1toD]!d^4_Keq54/mH1ph/!CaDIs+13urrR9B?/=lKeieN~> -!BU8Qkl@:PmKEUjs1f;SoBlSYrU(*pIh`8okO.a6&cBrrUtZN;:0hN*>$8 -rrq,"(IP1toD]!e`K?V7qPO8nM"gK?!CaDIs+13urrR9B>M\NEc8pI~> -!B:&NirG&9mKEUjs1f;SoBlSYrU(*pIh`8okO.a$8 -rrq,"(IP1toD]!fbb(f`qkjAoQh^.O!CaDIs+13urrR9B=l&*=_`*)~> -!BpJTm/X-`mJm7drrR`Ojn.s@!<)rpp'iFbPDHJcF4!"8*9,_qj\\eieN~> -!BU8Qkl@:PmJm7drrR`Ojn.s@!<) -!B:&NirG&9mJm7drrR`Ojn.s@!<) -!BpJTm/X-`mKEUjs1f;SoBlSYrU(*pbjOoB)Xd"nbjOoB)X$MgWQXZ12#s)ErrLPZo=b?5.iXlR -oD]!ia,>YdoqMHeoQp'-!MreIs+14!rrSVh2;IR"eieN~> -!BU8Qkl@:PmKEUjs1f;SoBlSYrU(*pbjOoB)Xd"nbjOoB)X$MgS]g7!1]WuDrrLPZo=b?5.iXlR -oD]!jc'X[6p7hQfp5/>>!MreIs+14!rrSVh1u. -!B:&NirG&9mKEUjs1f;SoBlSYrU(*pbjOoB)Xd"nbjOoB)X$MgN6C5_1B -!BpJTm/X-`mKLbO#A#!%k5N!rc96pq?_.rOr?G -8,`&Z"mE(8S_3q7rrMD -!BU8Qkl@:PmK@bNT(q!%k5N!rc96pq?_.rOr?G -8,`&Z"REORW8+$F!UZ'?rrLXsJcC<$e,KJ$!1;R+!R<`V~> -!B:&NirG&9mK/bMrYg!%k5N!rc96pq?_.rOr?G -8,`&Z"RX!lZf.PV!Ul]OrrLXsJcC<$e,KJ$!0l:!!Q-jH~> -!BpJTm/X-`mK3I)'=75s!!)uc%04W?m`QO:mJtK!m`QO3mJs60m/uPh!5>N6!PaQk^'4SO^&Ym] -!;sP3Mneuc"oQ`3I^SX8rrM)=nc&[g$hJrLJcF:#"24aPkhPP+eieN~> -!BU8Qkl@:PmK3I)'=75s!!)uc%04W?m`QO:mJtK!m`QO3mJrg$kl]u`!5>N6!PaQk^'4SO^&Ym] -!;sP3Mneuc"oZuEN5"hQrrM2Lnc&[g$hJrLJcF:#"24aPjP8u#c8pI~> -!B:&NirG&9mK3I)'=75s!!)uc%04W?m`QO:mJtK!m`QO3mJr3hire0T!5>N6!PaQk^'4SO^&Ym] -!;sP3Mneuc"o[/VS&Y#irrM>]nc&[g$hJrLJcF:#"24aOhq[5m_`*)~> -!BpJTm/X-`mK*A%ZgdA_!<)YL!5?/I^:jUF -^&boiq#:Nd[XXOfr1!]ef9l(-!B.oJs+14#rrQ$tGh_TdeieN~> -!BU8Qkl@:PmK*A%ZgdA_!<)YL!5?/I^:jUF -^&boiq#:Nf^Q"o9rL -!B:&NirG&9mK*A%ZgdA_!<)YL!5?/I^:jUF -^&boiq#:Nha.'0arL -!BpJTm/X-`mK!r4WI;^:jT]^&US- -E;mQOE;TY=rn3ihXQZ&O!R.>.rrH\rJcC<$f)Gj0!sdK5m/bd$J,~> -!BU8Qkl@:PmK!r4WI;^:jT]^&US- -E;mQOE;KS;h5H1=lBqSPdB2p -!B:&NirG&9mK!r4WI;^:jT]^&US- -E;mQOE;KS;ij5#em?mnSf=18L!G.OIs+14$rr_-\#1)&a!Q-jH~> -!BpJTm/X-`mJsT0mJs6.m/g;gF0,BAE;[EV!5,oE^:jT6QOa#/!-%o:"no`cMoPOXrrKp -!BU8Qkl@:PmJsT0mJrg"klOibF0,BAE;[EV!5,oE^:jT6QOa#/!-%o:"o$'$R*>AlrrL0LnG`NS -AV'l4s472OEr]4oklK'jJ,~> -!B:&NirG&9mJsT0mJr3firW*YF0,BAE;[EV!5,oE^:jT6QOa#/!-%o:"o-B9V:5:,rrLE\nG`NS -AV'l4s472OEr]+lirR%VJ,~> -!BpJTm/X,tmJs6.m/t6+%e-V#!Hl*S^(_HDN#KFE!10#^^:q:'s8V)VH)'8\rrKO=nG`O.2M(mZ -s4@8Qn.#H9g?epl4b*~> -!BU8Qkl@9dmJrg"kl\^$%e-V#!Hl*S^(_HDN#KFE!10#^^:q:'s8V2cLp#a$rrKgLnG`O.2M(mZ -s4@8Qn.#H6g?AX`3e.~> -!B:&NirG%MmJr3fircmn%e-V#!Hl*S^(_HDN#KFE!10#^^:q:'s8V;oQal1ArrL*\nG`O.2M(mZ -s4@8Qn.#H1g>`4O2h1~> -!BpJTm/X,tmJs6-m/fHOM66dY^Pi')&q1<#JA/_t6O.PD^5KVFNe4t9OoGH^`UNm/o*bJIs+14& -rrS#W52#<(eieN~> -!BU8Qkl@9dmJrg!klO!JM66dY^Pi')&q1<#JA/_t6O.PD^5KYMRZPJ\OoGHgbOGN5o*bJIs+14& -rrS#W4k]'#c8pI~> -!B:&NirG%MmJr3eirV:BM66dY^Pi')&q1<#JA/_t6O.PD^5KYSVk2**OoGHqdd[8 -!BpJTm/X,tmJs6-m/sBh)u6Z:!rbU#o=bC@7sg]Urf@'[T$d$,!@H?Js+14'rr`'9!3=f?!S0Da~> -!BU8Qkl@9dmJrg!kl[ja)u6Z:!rbU#o=bC@8Vs=urf@'[WRgP -!B:&NirG%MmJr3eirc(W)u6Z:!rbU#o=bC@9:3!Arf@'[[+k'L!@H?Js+14'rr`'9!2S<.!Q-jH~> -!BpJTm/X,tmJs6-m/u]*!2$Lq"TGV\(gHUG!`tWRN;ipBh!b7D -!BU8Qkl@9dmJrg!kl^-!!2$Lq"TGV\(gHUG!a2&^N;ipNi:$[H -!B:&NirG%MmJr3eire9i!2$Lq"TGV\(gHUG!a;>gN;ipZjR<*Lm_`*)~> -!BpJTm/X,tmJs6,m/r[T/,lmT#l_%`19gbtBta8T"2/&Rgl)15LZe.+!JPZIs+14(rr`6N!12@* -!S0Da~> -!BU8Qkl@9dmJrfukl[.M/,lmT#l_%`19gbtBta8T"2/)^i/@U9Q0Ri -!B:&NirG%MmJr3dirbDD/,lmT#l_%`19gbtBta8T"2/,ijGX$=U?q@K!JPZIs+14(rr`6N!0Ppo -!Q-jH~> -!BpJTm/X,tmJs6,m/uPk!4906"ob_]19gcWrrUtZN;:0lN)"WEI_,N -!BU8Qkl@9dmJrfukl]ub!4906"ob_]19gcWrrUtZN;:0lN),&UN5GRRrrJ&Mn,EEr7=kJis4[JT -ZiD$*f]`F^3e.~> -!B:&NirG%MmJr3dire0W!4906"ob_]19gcWrrUtZN;:0lN)5MfS'(_irrJS]n,EEr7=kJis4[JT -ZiD$%f]*"M2h1~> -!BpJTm/X,tmJs6+m/hn?41>.l]c8f3rqcX+\8PYnKoL.ZDn,hSN9QOno8inQrcA&,rrM3sJcC<$ -gA_49!/&nj!S0Da~> -!BU8Qkl@9dmJrftklQD941>.l]c8f3rqcX+\8PYpKoL1\Dn,h\RI$Q@ooK+Srdt+;rrM3sJcC<$ -gA_49!.ibd!R<`V~> -!B:&NirG%MmJr3cirXZ041>.l]c8f3rqcX+\8PYpL5g:]Dn,hdVX:Ffp5f4Trf[6KrrM3sJcC<$ -gA_49!.NP[!Q-jH~> -!BpJTm/X,trrB%]!5?#D"7]t9SbN-gi21d`YKH#*rroQep9]A*OT,@SH0tV4(?L,IJcFO* -"24aKin*PueieN~> -!BU8Qkl@9drrAV0kl]cT!5?#D"7]t9SbN-gj04?0ZHD>-rrom&pUuUFOT,@TM!b3C(?L,IJcFO* -"24aJhUgumc8pI~> -!B:&NirG%MrrA"tirdpH!5?#D"7]t9SbN-gkIR"V[`[b1rrp3;pr/fbOT,@UQgOeR(?L,IJcFO* -"24aJf[o-a_`*)~> -!BpJTm/X,trrB%;m/hV76+['u\fYPSq>UWn`J]Gao_AFkrhu+Yf7(@2P5bRJL$em@7C@^HJcFO* -!^Qg5f'NLh4b*~> -!BU8Qkl@9drrAV/klQ,16+['u\fYPSq>UWobF"I3p%SIjZD%0NN5PXXrrMJMmJd2U[=S@/s4mVU -5lc2]klK'jJ,~> -!B:&NirG%MrrA"sirXB(6+['u\fYPSq>UWod\WV]p@nRk]WM(hS'1eorrMS]mJd2U[=S@/s4mVU -5lc)ZirR%VJ,~> -!BpJTm/X,trrB%;m/u5V!5uSN"7]tF](u@0jJmNug&C[E#QCKdr:#l:oTT:UhN7.)!Hj*Is+14+ -rr^1>&)Yt*!S0Da~> -!BU8Qkl@9drrAV/kl]ZN!5uSN"7]tF](u@/kHg#Fh=U^PriN$pnt)ZMPQ([CSaHFXFbPDHJcFR+ -"2k0MgXbTic8pI~> -!B:&NirG%MrrA"sirdjB!5uSN"7]tF](u@/lFiRliq36UrjT-0o;]"fPQ([FWU9]dFbPDHJcFR+ -"2k0Lf%/j^_`*)~> -!BpJTm/X,trrB%:m/hD18AG0-rL+@2nb`=iq8n\K](,=j#Q:3brVa'Qh3@p?e"#h*!MreIs+14+ -rrP^kFk,j[eieN~> -!BU8Qkl@9drrAV.klPo+8AG0-rL+@2nb`=iqTkXl_Xm -!B:&NirG%MrrA"rirX0"8AG0-rL+@2nb`=iqphX9b4P6(#Q;!9rVa[*jcocGh6QGJ!MreIs+14+ -rrP^kE7NtL_`*)~> -!BpJTm/X,trrB%:m/u,P!6W1Y"RCd_5/$jn"mE(8RaqB)rs8OjV#LDFID,WGrrL3=mJd4;-@u2J -s5*bXaoDk*ea3Cg4b*~> -!BU8Qkl@9drrAV.kl]TI!6W1Y"RCd_5/$jn"mWRSVV;%;rs/ItY5\IUN5V"]!R@t;rrLXsJcC<$ -hZ!]#!"@Q2klK'jJ,~> -!B:&NirG%MrrA"rirda=!6W1Y"RCd_5/$jn"ms*nZ/5KJrs/J+\GlNcR`gur!S"^JrrLXsJcC<$ -hZ!]#!"@?,irR%VJ,~> -!BpJTm/X,trrB%9m/h/*9uR&7cXIJqci!eHqot=S[dNG\#l9dcrr;GLRIljG!PPf+rrW*+o7?pm -s53hX9`T(\m/bd$J,~> -!BU8Qkl@9drrAV-klPZ$9uR&7cXIJqci!eHr6q9t^@:Ff#lC:$s8VV[V=g2T!Q;V;rrW*+o7?pm -s53hX9`T"ZklK'jJ,~> -!B:&NirG%MrrA"qirWrq9uR&7cXIJqci!eHr7J'>`q&Ep#lC^:s8V\jYkFF`!R&CJrrW*+o7?pm -s53hX9`SqXirR%VJ,~> -!BpJTm/X,trrB%9m/u&I!6E4\"M$]:L?nd;"m`IAQdP`ors8C\YlFb%Z@Uo#rrK@ -!BU8Qkl@9drrAV-kl]NB!6E4\"M$]:L?nd;"n'!\U=T;+rs8Fj\c;^.]8ts=rrK[Lm/I)E`I\&? -s5 -!B:&NirG%MrrA"qird[6!6E4\"M$]:L?nd;"n9EuY1rpjQ6_k#qWrrL!]m/I)E`I\&? -s5 -!BpJTm/X,trrB%8m/h8-7*5H3i)(5XrVca"rR$sZZ0UHM!qqP\rr3)NID5]LrrJn=m/I)tQ%Asd -s5 -!BU8Qkl@9drrAV,klPc'7*5H3i)(5XrVca"rRRa%]'\PX!r&(rrr3&RN5_4b!Njc9rrH\rJcC<$ -i;WjH!,p?N!R<`V~> -!B:&NirG%MrrA"pirX#s7*5H3i)(5XrVca"rS+KD_scXc!r/V3rr3&VR`q3"!Op\IrrH\rJcC<$ -i;WjH!,U-E!Q-jH~> -!BpJTm/X,trrB%8m/u/T!5HbX"SdWaK_YNG"n&gKPKj!_rrVeI^&J$6muX"1S,WMTf^/V=O)9IJ -JcF^/"2=gHh:(`leieN~> -!BU8Qkl@9drrAV,kl]WM!5HbX"SdWaK_YNG"n96cT@3YqrrVkY`;]c=nXZQNS,WM`h -!B:&NirG%MrrA"pirdd@!5HbX"SdWaK_YNG"nK[&X4[@.rrVngbPqMDnu8ngS,WMkiU$RFO)9IJ -JcF^/"2=gGeC3FY_`*)~> -!BpJTm/X,trrB%7m/hV743dd-\J8!"rr30#eXLofkhQ1>n:\^Yrr`2(J`!!t!K#t*rrKAtJcC<$ -iVrs@!.3/]!S0Da~> -!BU8Qkl@9drrAV+klQ,143dd-\J8!"rr30$g89_9lJ2C@nrh,orr`52O5lc1!LE!:rrKAtJcC<$ -iVrs@!.!#W!R<`V~> -!B:&NirG%MrrA"oirXB(43dd-\J8!"rr30$hQ`H`mG.^CoUsS1rr`5:S`ZIB!MeuIrrKAtJcC<$ -iVrs@!-ZfN!Q-jH~> -!BpJTm/X,trrB%7m/u>]!4L8S"5m#k\c2U4o"'C4anaWi!q(W\rVluMID>cQrrIN=m/I+8.=qMM -s5O%\[K%!#dd7(d4b*~> -!BU8Qkl@9drrAV+kl]cU!4L8S"5m#k\c2U4o>6QXchc>p!q;8rrVlrPMoM=f!K-O9rrLRtJcC<$ -ir9+h!#+5;klK'jJ,~> -!B:&NirG%MrrA"oirdpI!4L8S"5m#k\c2U4ou`i'ebe&"!qMo4rVlrURa%E'!L`WIrrLRtJcC<$ -ir9+h!#+#5irR%VJ,~> -!BpJTm/X,trrB%6m/hn?1Xc:2pk0?7q#C?IT6dKtec,^9J'S#m"7D5?oq; -!BU8Qkl@9drrAV*klQD91Xc:2pk0?7q#CBNWen(Fec,^ -!B:&NirG%MrrA"nirXZ01Xc:2pk0?7q#CBR[$\Mkec,^>SD!l@"7iCrpRqNfrKI6IrrVj#rdk*# -s5X+\1B;mOirR%VJ,~> -!BpJTm/X,trrB%6m/uMe!2nlW"6[hLkP"o_SJ>#[s7F'[MT,A=rrVA4e,B:Kr31e2U&P/_Id6q6 -)!$8JJcFg2"/c,7kL&YteieN~> -!BU8Qkl@9drrAV*kl]r]!2nlW"6[hLkP"o_SJ>#[s7OBpQco3QrrVJEf_tgPrOJ$NU&P/aN9^ED -)!$8JJcFg2"/c,7j3d)lc8pI~> -!B:&NirG%MrrA"nire*P!2nlW"6[hLkP"o_SJ>#[s7X^1Usf(errVPVh>R?UrP>)gU&P/cS*L"S -)!$8JJcFg2"/c,6h9k6`_`*)~> -!BpJTm/X,trrB%5m/rIN,5D$7"nUEg^tJ>Ors@_(>'Pj`GZo%Gr;R-'YVI3/s4sGqV;TZ!!on^] -r;QlJIDGiWrrM/ -!BU8Qkl@9drrAV)klZtH,5D$7"nUEg^tJ>Ors@_(>'Pj`GZo%Gr;R-'YVI3/s5C,:YN*q.!p5Er -r;QiNMoVRl!Tod7rrG0tJcC<$jo5GX+om\NklK'jJ,~> -!B:&NirG%MrrA"mirb2>,5D$7"nUEg^tJ>Ors@_(>'Pj`GZo%Gr;R-'YVI3/s5gbW\`_9 -!BpJTm/X,trrB%5m/uW&!07'Y%K=+[C34u_Ndu4dDSQ2Irr`"*CV9PY&%l[fp](90*&=bl_hj,` -p<3I;hgF5Wrr_YLSG&cY!S3Y'rrHAtJcC<$jo5FC!%I3[m/bd$J,~> -!BU8Qkl@9drrAV)kl^&r!07'Y%K=+[C34u_Ndu4dDSQ2Irr`"*CV9PY&%l[fp](90*&=bmad/13 -pWNR -!B:&NirG%MrrA"mire3e!07'Y%K=+[C34u_Ndu4dDSQ2Irr`"*CV9PY&%l[fp](90*&=bnd%d;[ -pri[=k*kB/rr_eiZM:6q!T1*GrrHAtJcC<$jo5FC!%6^OirR%VJ,~> -!BpJTm/X,trrB%4m0KWj'CPn(E/D:(^&u'*E3K3>!q]U%pV%$B=RgkPS`-JlU"fRfrrUo%iV`]X -r3(_2V>gS -!BU8Qkl@9drrAV(km4-d'CPn(E/D:(^&u'*E3K3>!q]U%pV%!A=RgkPS`R,4XP_(u!oAjrr;Qls -\<,dJrrLHMlMpm5JcC<$k5PPO'*+oUklK'jJ,~> -!B:&NirG%MrrA"lis;=Y'CPn(E/D:(^&u'*E3K3>!q]U%pV%!A=RgkPS`m\P[c>F.!of[4r;Qls -_4KkerrLZ]lMpm5JcC<$k5PPO'*+`PirR%VJ,~> -!BpJTm/X,trrB%3m0#QPEE%ng^&j6mp\t0n>I=(;#IH!L\;Z'Ro>LY1epZZWrr^\t_>^A4!P>]' -rrJctJcC<$k5PL*!'SWp!S0Da~> -!BU8Qkl@9drrAV'kla*KEE%ng^&j6mp\t0n>I=(;#IH!M^6t,%oYgb2g5G1lrrUf1aJSt<_n>:7 -!ME\Ks+144rrR -!B:&NirG%MrrA"kirhFDEE%ng^&j6mp\t0n>I=(;#IH!N`MT9Nou-k3hjWm.rrUuEc_g^CbJ`]G -!ME\Ks+144rrR -!BpJTm/X,trrB%3m/t*)+0k@M"gM5,s.tnS^&S02^''HsS_*kWrrUStl21J_m>db2W;cn$_!:q# -_E*8JJcFp5"5jFd^Wu3IeieN~> -!BU8Qkl@9drrAV'kl\O!+0k@M"gM5,s.tnS^&S02^''I&W8.BgrrUc2lhg\an!^3LW;cn-a6N[* -_E*8JJcFp5"5jFd]?]XAc8pI~> -!B:&NirG%MrrA"kircal+0k@M"gM5,s.tnS^&S02^''I0Zf(i!rrUrEmed"dnY`_gW;cn6cKbE1 -_E*8JJcFp5"5jFd\'F"7_`*)~> -!BpJTm/X,trrB%2m/]/Eq7Zh/rOr73rOrB5F8oqQ^AIs3^&\&E!+ikD!m?,\qu6crXb5T3rrJh= -lMgnG(kM^ -!BU8Qkl@9drrAV&klE`Aq7Zh/rOr73rOrB5F8oqQ^AIs3^&\&E!+ikD!n!%rqu6cr[uodOrrK1L -lMgnG(kM^ -!B:&NirG%MrrA"jirM':q7Zh/rOr73rOrB5F8oqQ^AIs3^&\&E!+ikD!nX"4qu6cr^n9hirrKR] -lMgnG(kM^ -!BpJTm/X,trrB%3m/b@PrkA:1!PSR4^&S02^&i1aA,O%@!<0\4!;jJ2EULO?!l]c[qYpZII)>l` -rrJA=lMgqb$MAuMJcG!7"2b-EeBR@]eieN~> -!BU8Qkl@9drrAV'klJeGrkA:1!PSR4^&S02^&i1aA,O%@!<0\4!;jJ2EULO?!mHbrqYpWMMo_pu -!MJ?8rrW0,on!-os69Oc_Z:"hc058S3e.~> -!B:&NirG%MrrA"kirQuHrrW0,on!-os69Oc_Z:"cc/SiB2h1~> -!BpJTm/X,trrB%3m/_@@r4W.2rk8@4rOr73r4W6D6%]$K!!*#4!rtaqE;mQPLX!L3!l0Q]qYpZb -Nh,mFrrIlG^4b*~> -!BU8Qkl@9drrAV'klGk:r4W.2rk8@4rOr73r4W6D6%]$K!!*#4!rtaqE;mQPLX!L3!lpMsqYpZd -R],t^rrJAMl2Lc5dt.OMs6BUdrA"@pbio/R3e.~> -!B:&NirG%MrrA"kirO/2r4W.2rk8@4rOr73r4W6D6%]$K!!*#4!rtaqE;mQPLX!L3!m[M4qYpZf -VmH0"rrJh\l2Lc5dt.OMs6BUdrA"@mbi8`A2h1~> -!BpJTm/X,trrB%3m/Ur!^&S04^'F^-#]RKX70ml3^&_\ur4W.2rk8I7Q^83]^&a#6]DhrDL\LZF -"8o?Si3!"[H1gG%!DB\Ks+148rr\\i*9>?2!S0Da~> -!BU8Qkl@9drrAV'kl>Jq^&S04^'F^-#]RKX70ml3^&_\ur4W.2rk8I7Q^83]^&a#6]DhrKPkb+T -"8oZjj/r=^M"^*5!DB\Ks+148rr\\i)rSs)!R<`V~> -!B:&NirG%MrrA"kirEci^&S04^'F^-#]RKX70ml3^&_\ur4W.2rk8I7Q^83]^&a#6]DhrSUA4Tb -"8p!,kH4abQhTbE!DB\Ks+148rr\\i)qrNr!Q-jH~> -!BpJTm/X,trrB%3m/Ur!^&S04^'F_*QO^_0Q^83]^&`"hr4W.2rk8I7Q^83]^&`6A])Mi=N;!)I -"4M\5rilD(qfMi%rrHttJcC<$li.(U(''oKm/bd$J,~> -!BU8Qkl@9drrAV'kl>Jq^&S04^'F_*QO^_0Q^83]^&`"hr4W.2rk8I7Q^83]^&`6A])MiERJ6OW -!n`FNYQ"Y$KBW=9D3'8JJcG'9"7I!*S'1$sc8pI~> -!B:&NirG%MrrA"kirEci^&S04^'F_*QO^_0Q^83]^&`"hr4W.2rk8I7Q^83]^&`6A])MiMVYKue -!o9 -!BpJTm/X,trrB%3m/_@@r4W.2rk8gAQ^82r!10#^^:q1+B`,RE!<0\7!(.!0rk8AG\GlW6OSJYO -"7D8>oWeDsmXXO$!K_,Ks+149rrR0?3m-gjeieN~> -!BU8Qkl@9drrAV'klGk:r4W.2rk8gAQ^82r!10#^^:q1+B`,RE!<0\7!(.!0rk8AG\GlW?SGE!\ -"7VhXp9FVun;c`4!K_,Ks+149rrR0?3QgRec8pI~> -!B:&NirG%MrrA"kirO/2r4W.2rk8gAQ^82r!10#^^:q1+B`,RE!<0\7!(.!0rk8AG\GlWHWVZGj -"7iFrpTa`!nt#"E!K_,Ks+149rrR0?36L7^_`*)~> -!BpJTm/X,trrB%3m/b@Rr4W.2rk8jB6O.PD!(.!0^:njEV3:Ga!Ks:hrr`8#Pkk.T"8oETh6R%] -iK!.%!OYILs+14:rr^jS"2W.I!S0Da~> -!BU8Qkl@9drrAV'klJeJr4W.2rk8jB6O.PD!(.!0^:njEV3:Ga!Ks:grrTO"qYC-nrOS'KZMssd -RcsbP[7GlKJcG*:"4mSV^<5[@c8pI~> -!B:&NirG%MrrA"kirQu>r4W.2rk8jB6O.PD!(.!0^:njEV3:Ga!Ks:grrTm8qt^6orPP2fZMssh -Vs+-][7GlKJcG*:"4mSV\]Wq5_`*)~> -!BpJTm/X,trrB%2m/_('n%Jt)F8u8E[.V-6Zs1!="9,-`qtU0nepY10[/U0URcsbPfcu(JJcG-; -"9(Lb@EIm;eieN~> -!BU8Qkl@9drrAV&klGS!n%Jt)F8u8E[.V-6Zs1!="9,L!r:p9og5NrK[/U0ZVWe$\fcu(JJcG-; -"9(Lb@*.X6c8pI~> -!B:&NirG%MrrA"jirNknn%Jt)F8u8E[.V-6Zs1!="9,j6r:p9ohjVaf[/U0_Z0;2gfcu(JJcG-; -"9(Lb?-2+-_`*)~> -!BpJTm/X,trrB%2m/lKNZ15O5Z!$r's7BF#pV$^9=S0$$"9"p`r:p9omuj(0[Jp9JW9F6_q?ZqK -s+14 -!BU8Qkl@9drrAV&klTpFZ15O5Z!$r's7BF#pV$^9=S0$$"9,@!rV6BpnXcNJ[Jp9PZKV;iq?ZqK -s+14 -!B:&NirG%MrrA"jir\+9Z15O5Z!$r's7BF#pV$^9=S0$$"9,a7rV6Bpo;]"e[Jp9V]BK7rq?ZqK -s+14 -!BpJTm/X,trrB%1m/lEGN:XabN)]QMrr`"*CV9PY"2&DZpTsl%r1'DXq#:Hp[=I#?rrK[ -!BU8Qkl@9drrAV%klTj>N:XabN)]QMrr`"*CV9PY"2&DZpTsl%rMQ[pq#:Hp]oM!YrrKsMkPkQ- -fn'0Ss6osim1fVdaQW`N3e.~> -!B:&NirG%MrrA"iir\"1N:XabN)]QMrr`"*CV9PY"2&DZpTsl%rN`j1q#:Hp`LPtsrrL6]kPkQ- -fn'0Ss6osim1fV`aQ!<=2h1~> -!BpJTm/X,trrB%/m/s,#M7r`!"20P1YPJ2)j&\ -!BU8Qkl@9drrAV#kl[VqM7r`!"20P1YPJ2)j&\ -!B:&NirG%MrrA"girbfeM7r`!"20P1YPJ2)j&\ -!BpJTm/X,trrB%.m1&Ee>rPr7M2m+.C2Ufcq#:Qg+2m?b_<7p""8\7]rqHEpnW]=0\c2]%d-(E0 -Clj5JJcG6>"3(BHaN*ZKeieN~> -!BU8Qkl@9drrAV"kmcjZ>W5i6M2m+.C2Ufcq#:Qg+2m?b_<7p"!rJXspAY6dTV:tfrrK+LkPkR! -OFdF_s7$$j`W?=_a6 -!B:&NirG%MrrA"fisk"J>;o`5M2m+.C2Ufcq#:Qg+2m?b_<7p"!rK(3pAY6eXKD0+rrKL]kPkR! -OFdF_s7$$j`W?=Za5[3<2h1~> -!BpJTm/X,trrB%+m07S2.*'-VoDJUpp"RR/g\(UHAnIq?!r.kZpAY6n\:<2CrrJ;=kPkRECk;V; -s7-*kr\"7l`pEfX4b*~> -!BU8Qkl@9drrAUtklu),.*'-VoDJUpp"RR/g\(UHAnIq?!r8CrpAY6o^l@0]rrJ_MkPkRECk;V; -s7-*kr\"7j`p!NL3e.~> -!B:&NirG%MrrA"cis'?#.*'-VoDJUpp"RR/g\(UHAnIq?!rAn3pAY6oaID2#rrK.]kPkRECk;V; -s7-*kr\"7g`o@*;2h1~> -!BpJTm/X,trrB%+m/uMl!/CFO%-;DBEdrq+Ir]:.*V$!+!r%\[p&>-KJ$o6frrIf -!BU8Qkl@9drrAUtkl]rc!/CFO%-;DBEdrq+Ir]:.*V$!+!r/4rp&>-ONP>D)rrJ;MkPkRj8:gel -s7-*kL&`4R`p!NL3e.~> -!B:&NirG%MrrA"cire*V!/CFO%-;DBEdrq+Ir]:.*V$!+!r/\3p&>-SSAtQ@rrJe]kPkRj8:gel -s7-*kL&`1K`o@*;2h1~> -!BpJTm/X,trrB%*m0Trs#h]1WhG%^qq7ZsBB2.6ZrrVhM\b5t)o9Y[1^&J+WpZMPWfcu(JJcG<@ -"5!k[YJol0eieN~> -!BU8Qkl@9drrAUskm=El#h]1WhG%^qq7ZsBB2.6ZrrVn\_"I^0oV8&L^&J+fpuhYXfcu(JJcG<@ -"5!k[XMsE)c8pI~> -!B:&NirG%MrrA"bisDXb#h]1WhG%^qq7ZsBB2.6ZrrVqjaS#Q8orb@e^&J,!q<.bYfcu(JJcG<@ -"5!k[W5[ct_`*)~> -!BpJTm/X,trrB%)m06eq4T2Hu]_/u?]P=XHrrVeH^@hL.rk!X2^]+?1G38f+q?ZqKs+14Brr`3^ -!*mJ0!S0Da~> -!BU8Qkl@9drrAUrklt;k4T2Hu]_/u?]P=XHrrVhW`V'65rkaWK^]+?2L$&C:q?ZqKs+14Brr`3^ -!*[>*!R<`V~> -!B:&NirG%MrrA"ais&Tc4T2Hu]_/u?]P=XHrrVkebk:u -!BpJTm/X,trrB%)m0)8_!+UZO^&`kYV>gVdKZ!H^"5SL5rPAL7m"4@!!@-9Ks+14Brr\Gb(uE3u -!S0Da~> -!BU8Qkl@9drrAUrklf]W!+UZO^&`kYV>gVfP0*@r"6#9PrPAL7mZ?Q1!@-9Ks+14Brr\Gb(tupm -!R<`V~> -!B:&NirG%MrrA"airmmK!+UZO^&`kYV>gVgT[ -!BpJTm/X,trrB%(m/j$c=ms'*E7C`a!q(Z\o`#$cR??sTrrM#=jo5?P[=S@/s7QBoi!f[]_sIKU -4b*~> -!BU8Qkl@9drrAUqklRL\=ms'*E7C`a!q;;ro`#$dV4I.nrrM,Ljo5?P[=S@/s7QBoi!f[Z_s%3I -3e.~> -!B:&NirG%MrrA"`irY_R=ms'*E7C`a!qMr4o`#$eYc@92rrM8]jo5?P[=S@/s7QBoi!f[V_rCd8 -2h1~> -!BpJTm/X,trrB%'m/o>]^:sLFp:^R@Br(b1l[[4Orr`87IFQ17!R[J"rrHqtJcC<$p&>(_!)UQ" -!S0Da~> -!BU8Qkl@9drrAUpklWoY^:sLFp:^R@Br(b1m>fWdrrU/tfu*gjeu7^1!GmjKs+14CrrPXi:;Z5r -c8pI~> -!B:&NirG%MrrA"_ir_6R^:sLFp:^R@Br(b1n!r&%rrUE5hS]?ogU$#A!GmjKs+14CrrPXi9Z#fj -_`*)~> -!BpJTm/X,trrB%(m/c3Xr4W.2o=b6?o;)Bfk^UtNrr_/1Yl)K?!Q;#"rrJ9tJcC<$pAY5`!"mr% -m/bd$J,~> -!BU8Qkl@9drrAUqklKXPr4W.2o=b6?o;)Bfl]'Hdrr_;C\bsGH!R%k3rrJ9tJcC<$pAY5`!"dc! -klK'jJ,~> -!B:&NirG%MrrA"`irReCr4W.2o=b6?o;)Bfm@2l%rr_DT_>M:P!R\UBrrJ9tJcC<$pAY5`!"dPp -irR%VJ,~> -!BpJTm/X,trrB%(m/b%Ur4W.2rk8U;"])kH!!Q0t^&`o6U]1DWIF[rh"8/1FmDf/,[^bH!!P(RK -s+14Err_*e!1^mm!S0Da~> -!BU8Qkl@9drrAUqklJMNr4W.2rk8U;"])kH!!Q0t^&`o6U]1DZN7mh&"88X^n&GA.^VJt2!P(RK -s+14Err_*e!1C[f!R<`V~> -!B:&NirG%MrrA"`irQ]Cr4W.2rk8U;"])kH!!Q0t^&`o6U]1D]RbmZ9"8B+"n](S0a2mBB!P(RK -s+14Err_*e!0tC\!Q-jH~> -!BpJTm/X,trrB%(m/b%Ur4WO=^:mk[!!9l?$31/,^&`o6UAk;RI+\&j"9-)ad`;@gWl=*"!T4rK -s+14Frr`3`!)^Q!!S0Da~> -!BU8Qkl@9drrAUqklJMNr4WO=^:mk[!!9l?$31/,^&`o6UAk;VMr!t(!lp5Na8Z1HbN8a)i#I=J -JcGNF"8tC`:Vc2qc8pI~> -!B:&NirG%MrrA"`irQ]Cr4WO=^:mk[!!9l?$31/,^&`o6UAk;YRc3i;!m[7ia8Z1RdcLK0i#I=J -JcGNF"8tC`9u,ci_`*)~> -!BpJTm/X,trrB%(m/c3[r4WO=^:jcrQ5'?SC6O!!rWMu -JcC<$q>UPU!#OD*m/bd$J,~> -!BU8Qkl@9drrAUqklKXRr4WO=^:jcUPU!#O;'klK'jJ,~> -!B:&NirG%MrrA"`irReFr4WO=^:jc"6cAqrQ5'?ZJ=RA!rWMu -JcC<$q>UPU!#F"uirR%VJ,~> -!BpJTm/X,trrB%'m/^b2rOrdB^:m>G9E;e%"\\p1^:e6QrrUo%i:?mMr1Ao3b5VL%iT1">0[,+J -JcGTH"4[YXW5%^#eieN~> -!BU8Qkl@9drrAUpklG;-rOrdB^:m>G9E;e%"\\p1^:e6QrrV&8j7<3PrMl7Nb5VL2jQ-=A0[,+J -JcGTH"4[YXVSD?rc8pI~> -!B:&NirG%MrrA"_irNT%rOrdB^:m>G9E;e%"\\p1^:e6QrrV2KkOSWTrO&Kib5VL?kiDaE0[,+J -JcGTH"4[YXTtfUg_`*)~> -!BpJTm/X,trrB%'m/b4Fn%JgAe=Q[AepZTKrrU5gaNOSaJ+2P!!EZ+Ks+14Irr`*G!+*D,!S0Da~> -!BU8Qkl@9drrAUpklJ\?n%JgAe=Q[AgPb4arrUH&cHH4gNUl01!EZ+Ks+14Irr`*G!*m8&!R<`V~> -!B:&NirG%MrrA"_irQl3n%JgAe=Q[AhjWg"rrU] -!BpJTm/X,trrB%&m/`H'n\,$VT:Go_dXL?Krr_JBT_?\2!r[3=jT#7/JcC<$qu6bC!$1(5m/bd$ -J,~> -!BU8Qkl@9drrAUoklHs!n\,$VT:Go_f8Starr_SRX7sp>!rdiNjT#7/JcC<$qu6bC!$'k0klK'j -J,~> -!B:&NirG%MrrA"^irP3mn\,$VT:Go_gmd[#rr_Ya[J8&I!reD^jT#7/JcC<$qu6bC!#sS)irR%V -J,~> -!BpJTm/X,trrB%%m/j%r]_/u?]P=X=rrUStmd^;ZqlPJ-ci4%8IcLG/V,r6JJcGZJ"2+a=[_;&/ -eieN~> -!BU8Qkl@9drrAUnklRPl]_/u?]P=X=rrUc2nF?M\qmMUGci4%:N8sp=V,r6JJcGZJ"2+a=Zb>T( -c8pI~> -!B:&NirG%MrrA"]irYca]_/u?]P=X=rrUrEo'u_^r4eicci4%;S)aMLV,r6JJcGZJ"2+a=YJ&rs -_`*)~> -!BpJTm/X,trrB%$m/t[,BY+#R"1i2@hO+ -!BU8Qkl@9drrAUmkl].$BY+#R"1i2@hO+mV`rr^r5_Z%s_!Tfd1rrL=tJcC<$rVluc)ZY&o -klK'jJ,~> -!B:&NirG%MrrA"\ird=mBY+#R"1i2@hO+ -!BpJTm/X,trrB%"m0hHX5?Do_Ndl(aDrm8a!m-#ZnG`U[Pa([crrLQ -!BU8Qkl@9drrAUkkmPmO5?Do_Ndl(aDrm8a!mcqqnG`U]TV1l(rrL`Lj8T2P$iPYVJcGcM"TD0s -39Im -!B:&NirG%MrrA"ZisX(B5$)f^Ndl(aDrm8a!nEk2nG`U^XK;$ArrLo\j8T2P$iPYVJcGcM"TD0s -2W27.!Q-jH~> -!BpJTm/X,trrB$um0:rK!-Q-4oo]7Ua+ -!BU8Qkl@9drrAUikm#ED!-Q-4oo]7Uc&_>_rr`8;N7cVZ!Qqe/rrF+tJcC<$s8N1d!"dGfklK'j -J,~> -!B:&NirG%MrrA"Xis*R7!-Q-4oo]7Ue"-$urr`8CRbcHm!R\X@rrF+tJcC<$s8N1d!"[/_irR%V -J,~> -!BpJTm/X,trrB$tm/rs\#1nn8!lT]Yn,ELIJunk"rrKO=ir9$H\Ujd3rriAR"ot:,m/bd$J,~> -!BU8Qkl@9drrAUhkl[IV#1nn8!m?\pn,ELMOLG&:rrKgLir9$H\Ujd3rriAR"ot4*klK'jJ,~> -!B:&NirG%MrrA"Wirb\L#1nn8!n!V1n,ELPT"k3RrrL*\ir9$H\Ujd3rriAR"ot(&irR%VJ,~> -!BpJTm/X,trrB$sm/pVo.J&T"!lBWZn,EL`To/'brrK" -!BU8Qkl@9drrAUgklY,i.J&T"!m-Spn,ELaX-`/'rrK@Lir9$oP(EXarr_jA!*d"u!R<`V~> -!B:&NirG%MrrA"Vir`Ea.J&T"!mmS1n,ELb[\W -!BpJTm/X,trrB$sm/uE!!*YB^!l0NZmf*@0I)jk=!LMEtrrJ"!JcC<$"'P[SjLOXYeieN~> -!BU8Qkl@9drrAUgkl]im!*YB^!lpJpmf*@6MTscQ!MeH0rrJ"!JcC<$"'P[Ri48(Qc8pI~> -!B:&NirG%MrrA"Vire!`!*YB^!m[J1mf*@ -!BpJTm/X,trrB$rm/tH=!1/]F!ksEZmf*CRMkB^rrrIr -!BU8Qkl@9drrAUfkl\p6!1/]F!l^Apmf*CTR&]o6rrJDLir9%O?\/6/rr\Sf%*#gA!R<`V~> -!B:&NirG%MrrA"Uird(*!1/]F!mIA1mf*CWV7$*OrrJn\ir9%O?\/6/rr\Sf%)BC5!Q-jH~> -!BpJTm/X,trrB$qm/rjY#gJA/!kX6Ymf*CdXb,E`rrIE -!BU8Qkl@9drrAUekl[=R#gJA/!lL8pmf*Ce[ufV'rrIrLir9%d8qI"prr^LO!1C=\!R<`V~> -!B:&NirG%MrrA"TirbPH#gJA/!m@>2mf*Ce^n0ZArrJJ\ir9%d8qI"prr^LO!0t%R!Q-jH~> -!BpJTm/X,trrB$pm/pet,O^Wl!kF-YmJd:=IC]=4rrMq -!BU8Qkl@9drrAUdklY;n,O^Wl!l:/pmJd:AN5>MLrrMtLiVrr#21bd\rr_^7!+<8"!R<`V~> -!B:&NirG%MrrA"Sir`Tf,O^Wl!m.52mJd:FR`YQbrrN"]iVrr#21bd\rr_^7!+*+o!Q-jH~> -!BpJTm/X,trrB$pm0)T+!(m0LrrTWdo^2Y\n -!BU8Qkl@9drrAUdklg$"!(m0LrrTs%p?hk^ntD`HhZ!WDOl?<@h]IFLL&V;T8H:F([cmh<3e.~> -!B:&NirG%MrrA"Sirn0j!(m0LrrU6:p[.t_oW>4dhZ!WFTAfeNh]IFLL&V;T8H:C![c7D+2h1~> -!BpJTm/X,trrB$om/toM!/-=2!jmmYmJd:f]7&/crrLo -!BU8Qkl@9drrAUckl]?E!/-=2!kjupmJd:f_i37*rrM&LiVrrN$A&52rr[oS&(7lM!R<`V~> -!B:&NirG%MrrA"RirdO9!/-=2!l_#1mJd:fbF78ErrM2\iVrrN$A&52rr[oS%aDEA!Q-jH~> -!BpJTm/X,trrB$nm/s -!BU8Qkl@9drrAUbkl[gb!k"!e!kOfom/I1JOgY)FrrLTLi;WfboR[$trr]Y1!iNEi!R<`V~> -!B:&NirG%MrrA"Qirc"W!k"!e!lLo1m/I1NT>(6^rrLc\i;WfboR[$trr]Y1!i!'^!Q-jH~> -!BpJTm/X,trrB$mm/q_9&DE*C!j@XYm/I1^To&=!rrKm=i;Wg"hgtf`rr^sd!.;-?!S0Da~> -!BU8Qkl@9drrAUaklZ53&DE*C!k=`pm/I1_XHrJ;rrL-Mi;Wg"hgtf`rr^sd!.)!9!R<`V~> -!B:&NirG%MrrA"PiraK*&DE*C!l:f0m/I1_[\WQTrrLB\i;Wg"hgtf`rr^sd!-bd0!Q-jH~> -!BpJTm/X,trrB$mm0)cM!%[W"rr`8&OSJ/A"3Z#+roF([YJ9#q!B%uMs,$aYnga]7m'H'[eieN~> -!BU8Qkl@9drrAUaklg3D!%[W!rrTX!q>p(rrKXLi;Wg8aasJKrrhmC!)2U_klK'jJ,~> -!B:&NirG%MrrA"Pirn@6!%[W!rrTs7q -!BpJTm/X,trrB$lm0)Ds!)rlVrr`8$P5+AC"72,9nE'ZNU!DTr!D9_Ms,-gZr_ieFij.qPeieN~> -!BU8Qkl@9drrAU`klfij!)rlUrrTR!q -!B:&NirG%MrrA"Oirn!]!)rlUrrTp7qWn.`n>WS_jo5@ig#2l29!j0LMZ3hY;ZJ/sZJtu'2h1~> -!BpJTm/X,trrB$km/tNB!.p10"9,9`q -!BU8Qkl@9drrAU_kl\s:!.p./!jeNqli.(d_2Hn,rrJ_Li;WgbT7R$"rr[iQ&'(s>!R<`V~> -!B:&NirG%MrrA"Nird..!.p./!kbT1li.(dadUuHrrK.\i;WgbT7R$"rr[iQ%`5L2!Q-jH~> -!BpJTm/X,trrB$jm/sNm!NM+Y"9,3`q -!BU8Qkl@9drrAU^kl\!f!NM+Y"9,R!qWe(_jHHhDkl1[Gmbn*GFGbYLMuNmZ! -!B:&NirG%MrrA"Mirc4\!NM+Y"9,m6qs+1`kb,N_kl1[UnDO -!BpJTm/X,trrB$im/r"A$-J5,"9,-]r9F:aq5K&)lMgqbFo(%r!K2#Ms,?s[apA'$YO)AA4b*~> -!BU8Qkl@9drrAU]klZM;$-J5,"9,KsrTaCbqQl=Dl2Ld;qr%JTMfXILN;j"&#loR\klK'jJ,~> -!B:&NirG%MrrA"Lirac2$-J5,"9,j4rTaCbqRiH_l2LdKqr%JTMfXILN;j"&#loIYirR%VJ,~> -!BpJTm/X,trrB$hm/pYp)<6YT!i;1Xl2Lk7I^]1@rrMb;hu<_O>_2p7rr_:!!+)hq!S0Da~> -!BU8Qkl@9drrAU\klY2k)<6YT!jA_2p7rr_:!!*ubl!R<`V~> -!B:&NirG%MrrA"Kir`Hb)<6YT!kGH0l2LkAS&YEnrrMk\hu<_O>_2p7rr_:!!*ZPc!Q-jH~> -!BpJTm/X,trrB$hm0)W9!&=,)rr`7uPPFDB"7hk7lg=]Qk)&!q!P(XMs,R*^oJ$>/kcX:ReieN~> -!BU8Qkl@9drrAU\klg'0!&=,)rr`8*TD@aO"7r@QmHsoSl'C6,!P(XMs,R*^oJ$>.jK@_Jc8pI~> -!B:&NirG%MrrA"Kirn7$!&=,)rr`83X82#["8/mln*U,Ul_EA;!P(XMs,R*^oJ$>-hlbu?_`*)~> -!BpJTm/X,trrB$gm/u,g!)\[S"9,<^pZVVZ]6M6mn,EF?Qf%fDcn9nLNrK2Y!$g:$m/bd$J,~> -!BU8Qkl@9drrAU[kl]T`!)\[S"9,Wtpuq_Z_hZA%rrLlLhu<`(/qO%_rrZ*u,MB3`!R<`V~> -!B:&NirG%MrrA"JirdaS!)\[S"9-!5q<7h[bEpTDrrM&\hu<`(/qO%_rrZ*u,1E[S!Q-jH~> -!BpJTm/X,trrB$fm/tKB!-!kr"9,B_p?;MYlB%>#nG`O1VVhCSk8/^LO8f<$!"d;Sm/bd$J,~> -!BU8Qkl@9drrAUZkl\p9!-!hq!k+Tmkl1bPS>,QCrrLELhu<`?(P2UIrr[3?&&t^8!R<`V~> -!B:&NirG%MrrA"Iird+.!-!hq!l(]/kl1bRWNGa\rrLZ]hu<`?(P2UIrr[3?&&G@-!Q-jH~> -!BpJTm/X,trrB$em/sg%!03!;"9,K_p#uDXrO[I"nc&X$[GUucr!!"Ls,m<`NW99mX6fr=4b*~> -!BU8Qkl@9drrAUYkl\9r!02s:!k=Zlkl1ba_i)n3rrKsLhu -!B:&NirG%MrrA"HircLh!02s:!l:c.kl1babF7#PrrL6\hu -!BpJTm/X,trrB$dm/rgY!ih.X!j[aVkPkYGMOjA1rrK. -!BU8Qkl@9drrAUXkl[:R!ih.X!kXimkPkYJQ`0QJrrKLLhZ!TmkCNYrrr]8&!LTnO!R<`V~> -!B:&NirG%MrrA"GirbMH!ih.X!lLl.kPkYMUpKacrrKg\hZ!TmkCNYrrr]8&!L0VE!Q-jH~> -!BpJTm/X,trrB$cm/qn>#f;K!!k!mVkPkY]Z[U?prrJY=hZ!U/d"24\rr^+D!.h-:!S0Da~> -!BU8Qkl@9drrAUWklZD8#f;K!!kjolkPkY^]StJ7rrK%MhZ!U/d"24\rr^+D!.V!4!R<`V~> -!B:&NirG%MrrA"FiraW.#f;K!!l^u.kPkY^`1,QSrrKF]hZ!U/d"24\rr^+D!.1^*!Q-jH~> -!BpJTm/X,trrB$bm/pl!'%Vs?!k=$Vk5PP@Kr+P;rrJ);hZ!UF\UjdFrr^gb!+`%q!S0Da~> -!BU8Qkl@9drrAUVklYAp'%Vs?!l1)mk5PPCP-=ZSrrJPLhZ!UF\UjdFrr^gb!+Mnk!R<`V~> -!B:&NirG%MrrA"Eir`Zh'%Vs?!m%,/k5PPGTXjjkrrK"\hZ!UF\UjdFrr^gb!+;bc!Q-jH~> -!BpJTm/X,trrB$bm0)]I!$:NbrrTfenE0`Qq5\epp\t8CnD=0G>bZfLQ2_!S*WSjuW9jW:4b*~> -!BU8Qkl@9drrAUVklg-@!$:NbrrU'$o&frSqR).9p\t8Qo%sBI>bZfLQ2_!S*WSgpW9F?.3e.~> -!B:&NirG%MrrA"Eirn:2!$:NbrrU?:oB-&TqS&bZfLQ2_!S*WSahW8dor2h1~> -!BpJTm/X,trrB$am0)T,!%R>mrrTofn)aQOgO-!pqYpWqF8atq!HX0Ms-EZflm_uikGR\JeieN~> -!BU8Qkl@9drrAUUklg'$!%R>mrrU0&n`BcQhhnc8qYpWqKDsa-!HX0Ms-EZflm_uhjJV5Cc8pI~> -!B:&NirG%MrrA"Dirn3l!%R>mrrUE;o&]lRj-dRUqYpWqPQ'G=!HX0Ms-EZflm_ughP]B7_`*)~> -!BpJTm/X,trrB$`m0)5p!&jD*rrTugmH+?MpSi_rqu6]cJ)1,*N,jLLQi@3Z2?55_VX4E84b*~> -!BU8Qkl@9drrAUTklf]h!&jD*rrU6'n)aQOpp6%:qu6]eNSXU8N,jLLQi@3Z2?52[VWe-,3e.~> -!B:&NirG%MrrA"Cirmj[!&jD*rrUK -!BpJTm/X,trrB$_m0(u_!(6O=rrU)ilfA'Jfn-0srVloWNns^;Pt0!ZJcD2="Sb=a+P*CV!S0Da~> -!BU8Qkl@9drrAUSklfEW!(6O=rrU?)mc=BMh2nr;rVloZRbduGPt0!ZJcD2="Sb=a+O[+N!R<`V~> -!B:&NirG%MrrA"BirmUK!(6O=rrUT>nDsTOih!dWrVlo^Vqq@TPt0!ZJcD2="Sb=a+3gYB!Q-jH~> -!BpJTm/X,trrB$^m0(]O!)`WNrrU2klK%sIpo8nsrr3#ISDaDR\8P_pK84\YDn(AuT)Srj;#hHY -V!S364b*~> -!BU8Qkl@9drrAURklf-G!)`WNrrUE*mH"9Lq6Z4;rr3#NVr7R]\8P_pK84\YDn(AuT)Srj;#hHU -V!.p*3e.~> -!B:&NirG%MrrA"Airm=;!)`WNrrUZ?n)XKNq7W?Wrr3#SZJb`h\8P_pK84\YDn(AuT)Srj;#hEO -UuMKn2h1~> -!BpJTm/X,trrB$]m/t9=!+(N^!m,uWj8T>;JuAAC_lMes!o-t24]/T`5+#!"m/Em/bd$ -J,~> -!BU8Qkl@9drrAUQkl\a5!+(N^!mcnmj8T>?OKnT\b-g7/!o-t24]/T`5+#!"cuAklK'j -J,~> -!B:&NirG%MrrA"@ircq*!+(N^!nEh/j8T>CT"=^sdD"W?!o-t24]/T`5+#!"cf -!BpJTm/X,trrB$\m0's,!,DLjrrUAjki;[HpoAqr[(>;t!lerfpV$^BBuY`(U]1JrC&eUOU?r!4 -4b*~> -!BU8Qkl@9drrAUPkleF%!,DLjrrUT)lf8!Kq6c7;]Y`_/!lerfpV$^BBuY`(U]1JrC&eULU?M^( -3e.~> -!B:&NirG%MrrA"?irlUo!,DLjrrUf>mGn3MqS&NX`6.-?!lerfpV$^BBuY`(U]1JrC&eUGU>l9l -2h1~> -!BpJTm/X,trrB$[m/s^#!,m_o!n2PTir9,=JqLr$rrLPZo=b6:dXhForr[0>#IL2l!S0Da~> -!BU8Qkl@9drrAUOkl\0q!,m_o!n`Flir9,AOHIZGrrLPZo=b6:dXhForr[0>#I0ue!R<`V~> -!B:&NirG%MrrA">irc@f!,m_o!o9=.ir9,DStFBjrrLPZo=b6:dXhForr[0>#HXWZ!Q-jH~> -!BpJTm/X,trrB$Zm/s?n!-O.u!nMbQir9,VJU5W(rrW1$]^ri=]N>)`s/,euFT;ZHT^;d24b*~> -!BU8Qkl@9drrAUNkl[gf!-O.u!nrRhir9,WO,;?JrrW1$]^ri=]N>)`s/,euFT;WDT]lL&3e.~> -!B:&NirG%MrrA"=irc%\!-O.u!oKI+ir9,WSXA*mrrW1$]^ri=]N>)`s/,euFT;W@T]6'j2h1~> -!BpJTm/X,trrB$Ym/s3i!.0S&!o8:Qir9.:cAA"Ykl1[uMuC?l!5?/Iq7Zlf^OcE_rr[TJ#,\$[ -!S0Da~> -!BU8Qkl@9drrAUMkl[[b!.0S&!o]'hir9.He<[!%kl1[uMuC?l!5?/Iq7Zlf^OcE_rr[TJ#,@gT -!R<`V~> -!B:&NirG%MrrA" -!BpJTm/X,trrB$Xm/s$b!.p(-!p"jRj8T=.pADIK`;]'%!Hl*S^&nAL^&[uC!PNW,s/>r"JcGqI -T'ZR04b*~> -!BU8Qkl@9drrAULkl[L[!.p(-!p>Qij8T==p\hpcbPpf,!Hl*S^&nAL^&[uC!PNW,s/>r"JcGqF -T'6:$3e.~> -!B:&NirG%MrrA";irb_Q!.p(-!pZ9+j8T=Mq#/=&dJiG2!Hl*S^&nAL^&[uC!PNW,s/>r"JcGqB -T&Tjh2h1~> -!BpJTm/X,trrB$Wm/rj\!.p(-!pP9Pjo5AVG5hLDk`M%mli-s(r4W75^:jUH^&e9<:]A'.E.S%g -rr[iQ".YqL!S0Da~> -!BU8Qkl@9drrAUKkl[@V!.p(-!pkuhjo5AWL&V)Sl^aX6li-s(r4W75^:jUH^&e9<:]A'.E.S%g -rr[iQ".GeF!R<`V~> -!B:&NirG%MrrA":irbSL!.p(-!q)W*jo5AXQ2^dcmAd2Sli-s(r4W75^:jUH^&e9<:]A'.E.S%g -rr[iQ".#M -!BpJTm/X,trrB$Vm/s'a!.0S&!q1lPk5PJHL&M#Srkj,qr9aLaE;[EV!5,oE^:mk[!! -!BU8Qkl@9drrAUJkl[OZ!.0S&!qDJhk5PJJPPtLarlU,8rU'UbE;[EV!5,oE^:mk[!! -!B:&NirG%MrrA"9irbbP!.0S&!qN&*k5PJMT`+lnrm@.VrU'UbE;[EV!5,oE^:mk[!! -!BpJTm/X,trrB$Um/rj]!-O.u"7qJRroj@_g6MR8"7DS7mI'uTFhRaf%2k+`)SWohR$7Tb^:eZ? -s/Z/%FT;Q7S*^7-4b*~> -!BU8Qkl@9drrAUIkl[@W!-O.u"8&"iroj@_hP'iH"7W.Rn*^2VFhRaf%2k+`)SWohR$7Tb^:eZ? -s/Z/%FT;Q5S*9t!3e.~> -!B:&NirG%MrrA"8irbSM!-O.u"8/P+roj@_iiW+X"7i[lna?DXFhRaf%2k+`)SWohR$7Tb^:eZ? -s/Z/%FT;Q1S)XOe2h1~> -!BpJTm/X,trrB$Tm0'*e!,qjorr`"ZV#BQX!Qq56rr^PnX7l&_!PaQk^(#N$%Y2:-:'F;k^:oN? -JcDkP"TE<>#,.LQ!S0Da~> -!BU8Qkl@9drrAUHkldR^!,qjorr`%gY5RVb!RS"Frr^`-[.j(i!PaQk^(#N$%Y2:-:'F;k^:oN? -JcDkP"TE<>#+h:J!R<`V~> -!B:&NirG%MrrA"7irkeS!,qjorr`%s\Gb[l!S4dVrr^rB^A.3t!PaQk^(#N$%Y2:-:'F;k^:oN? -JcDkP"TE<>"e(n?!Q-jH~> -!BpJTm/X,trrB$Sm0'9k!,DLjrr`+dSGVUO!P>`6rr_tqJ'IN`!rc96o=b:==8mdNY5\Y(C&eL9 -RI(%+4b*~> -!BU8Qkl@9drrAUGkldac!,DLjrr`.pVu,cZ!Q)MErr`#&NRI@s!rc96o=b:==8mdNY5\Y(C&eI5 -RHXat3e.~> -!B:&NirG%MrrA"6irktY!,DLjrr`/'ZMa"f!Qr@Urr`&1S(R92!rc96o=b:==8mdNY5\Y(C&eI1 -RH"=c2h1~> -!BpJTm/X,trrB$Rm0'Ep!*9#Trr`1nPkaSE!NX-3rr_2;QKn&@!RbKL^&^orJcDnQ"T2:##ca9Z -!S0Da~> -!BU8Qkl@9drrAUFkldmi!*9#Trr`5$T_[pR!OU#Crr_>LU@%OO!RbKL^&^orJcDnQ"T2:##cF'S -!R<`V~> -!B:&NirG%MrrA"5irl+_!*9#Trr`5/XSM2^!PZtTrr_G\Xmbi\!RbKL^&^orJcDnQ"T2:##c!dI -!Q-jH~> -!BpJTm/X,trrB$Qm0'Wr!)`NKrr`8$NqD]eTmG"heW5'NsUMs0;S, -pe_"oYa=_XeieN~> -!BU8Qkl@9drrAUEkle*k!)`NKrr`8-ReH+J!N4TCrri;@MST/^rr^.P>eTmG"heW5'NsUMs0;S, -pe_"oXdA8Qc8pI~> -!B:&NirG%MrrA"4irl:`!)`NKrr`87Vt]QX!OCPSrri;GRE5eTmG"heW5'NsUMs0;S, -pe_"oW0cNF_`*)~> -!BpJTm/X,trrB$Pm0's3!(6=6rrTQ_nEp5VN8jI/"7Mh8g@kOMT+Jcm>)`9k#`MsBs7U^RR/MU9 -[/U:"6N@_/QL+_(4b*~> -!BU8Qkl@9drrAUDkleF+!(6=6rrTiuo'QGXRH=&?"7`@ShY-sQT+Jcm>)`9k#`MsBs7U^RR/MU9 -[/U:"6N@\+QK\Fq3e.~> -!B:&NirG%MrrA"3irlUu!(6=6rrU-5oBlPYVWdXO"7rmmiqEBUT+Jcm>)`9k#`MsBs7U^RR/MU9 -[/U:"6N@\&QK&"`2h1~> -!BpJTm/X,trrB$Om0(?E!&j2#rrTodlgFcRIIcq."4`!uo(r@grd5sBrr3;7DdRaBMg/TI\GZ@/ -dlKP=JcE1Y"RJ#H(rV^,!S0Da~> -!BU8Qkl@9drrAUCkleg>!&j2#rrU0$mI'uTMt?K="5/d=o_SRird5sBrr3;7DdRaBMg/TI\GZ@/ -dlKP=JcE1Y"RJ#H(r;L%!R<`V~> -!B:&NirG%MrrA"2irm"2!&j2#rrUH:n*^2VRe?4N"5]WZp%n[jrd5sBrr3;7DdRaBMg/TI\GZ@/ -dlKP=JcE1Y"RJ#H(VH$n!Q-jH~> -!BpJTm/X,trrB$Nm0(]W!%R&drrU5fkOAKQr,hr-rri/'I)Z*`rr`!t46l\B"6O0&k4nrZrKn@G -p4<7SrrhC4!$KROm/bd$J,~> -!BU8Qkl@9drrAUBklf-O!%R&drrUH&lL=fTr.G" -!B:&NirG%MrrA"1irm=C!%R&drrU] -!BpJTm/X,trrB$Mm0(ui!$0mPrrUYrg@>1Dm=F[)$0IA3jo>AG4';7Ps8RTArr_Fe'Yf5!]Di#i -*<7S?PO/D%4b*~> -!BU8Qkl@9drrAUAklfE`!$0mPrrUi0hXUUHmuQl9$0e"Nkl:\J4';7Ps8RTArr_Fe'Yf5!]Di#i -*<7P:PN`+n3e.~> -!B:&NirG%MrrA"0irmUT!$0mPrrV#Dipm$LnX](I$1+[kli7"M4';7Ps8RTArr_Fe'Yf5!]Di#i -*<7M4PN)\]2h1~> -!BpJTm/X,trrB$Lm0)H)!#!/*rrUu(c1:l8h3%((#QDblYgObDrqHEnNc4Oh"1f(eq18R[rrg1O -!&EStm/bd$J,~> -!BU8Qkl@9drrAU@klflu!#!/*rrV,:e+3M>iLT<7#0i(:dj'8>p\t8SDtEu2\e0)\JcEIa"MtcO -1#J/Y!R<`V~> -!B:&NirG%MrrA"/irn$h!#!/*rrV8Mf^f%Cjf7YH#1T*Ye0BA?p\t8SDtEu2\e0)\JcEIa"MtcO -0\MWL!Q-jH~> -!BpJTm/X,trrB$Lm02n=9)o6tM>mY>J\UgV!R@A'rr_kQA -!BU8Qkl@9drrAU@klp>18cT-sM>mYAO2gek!Rn+7rr_q]F-ZFu!No5hrr_Ua1=q*W_#FP;#QRKU -Om)nl3e.~> -!B:&NirG%MrrA"/is"Jt8,rpqM>mYDS^$d+!SOmGrr_tiJXZ93!No5hrr_Ua1=q*W_#FP;#QREM -OlHJ[2h1~> -!BpJTm/X,trrB$LmJlPVl=9krNf!c'-Yj25lR1ZTWSF6.O!R<@frrST'R=YCTrre>` -!+bAVm/bd$J,~> -!BU8Qkl@9drrAU@l2TuNk$e;lNf!c'4\a'1uR1Z`hVssH\!R<@frrST'R=YCTrre>` -!+P)PklK'jJ,~> -!B:&NirG%MrrA"/j8\-Bi*ZNdNf!c';_` -!+=`HirR%VJ,~> -!BpJTm/X,trrB$LmJZDTJH5airJLUWp6;6IpAY/s^[1t,r,*t -!BU8Qkl@9drrAU@l2BiLIfTOgrJLUWpRnSbpAY0'`pE^3r,*t -!B:&NirG%MrrA"/j8J!@HN=+crJLUWpoLn$pAY00cKtQ;r,*t -!BpJTm/X,trrB$LmJQ>SRg/phoSWYNqk95Ip\t8dcgC`7n4-" -!BU8Qkl@9drrAU@l29cKQj*OdoSWYNr2ZIap\t8oeF!82c8pI~> -!B:&NirG%MrrA"/j8@p?PQh+`oSWYNr3i[$p\t9%g?nnBn4-" -!BpJTm/X,trrB$LmJH8RZNgIbj,3j=ri_1Iq#:AVhX:CGgF7% -!BU8Qkl@9drrAU@l20]JYQk._j,3j=rj\9aq#:AbipQgKgF7% -!B:&NirG%MrrA"/j87j>Ws8VZj,3j=rkYB$q#:AojmN-NgF7% -!BpJTm/X,trrB$LmJ?2Qas-m(b)--"^ObPCrrI]=n,EI2&XiCn"Sf6L_YsH5!DflbrrTqN^OcF/ -rrgI^!$fXEm/bd$J,~> -!BU8Qkl@9drrAU@l2'WI`ZkI$b)--"`fKB[rrJ2Mn,EI2&XiCn"SoWdao22 -!B:&NirG%MrrA"/j8.d=_'/jsb)--"cCO=trrJ\]n,EI2&XiCn"Sop&d/EqC!DflbrrTqN^OcF/ -rrgI^!$]7;irR%VJ,~> -!BpJTm/X,trrB$LmJ6,PgcYWDWep`Wc@+LFrrW1@r:'^fgD7Qrrr_JMMV\:3!H4"arrTqN^OcF1 -rrf>.!'T+pm/bd$J,~> -!BU8Qkl@9drrAU@l1sQHffT6@Wep`Wdu3/]rrW1PrUBgggD7Qrrr_S\Qf7rD!H4"arrTqN^OcF1 -rrf>.!'JqlklK'jJ,~> -!B:&NirG%MrrA"/j8%^.!'AYeirR%VJ,~> -!BpJTm/X,trrB$LmJ-&Ok["5iO,p4b*~> -!BU8Qkl@9drrAU@l1jKGjBV`dO, -!B:&NirG%MrrA"/j7qX;hc^!\O, -!BpJTm/X,trrB$LmIooMKED3Qnr!GKjab/FrrM) -!BU8Qkl@9drrAU@l1X?EJcc!Onr!GKk`3^^rrM5Mnc&[g7rIeq"o>lha+&U'rrTqN^OcF6rrhmk -!!@h.klK'jJ,~> -!B:&NirG%MrrA"/j7_L9Iff[Lnr!GKl^c?"rrM>]nc&[g7rIeq"o?0*c@:?.rrTqN^OcF6rrhmk -!!@_+irR%VJ,~> -!BpJTm/X,trrB$LmIfiLYR:F]g5>n8mYJ+Hs8UN;nc&Z.8,VcS"6u7pHg(J2^CnM:s4.,Pg+*.2 -Y_MNGeieN~> -!BU8Qkl@9drrAU@l1O9DXU>+Zg5>n8n -!B:&NirG%MrrA"/j7VF8W!`SUg5>n8ntX)$s8Ul[nc&Z.8,VcS"7NFQKBW=:^CnM:s4.,Pg+*.2 -W.s=5_`*)~> -!BpJTm/X,trrB$LmI]cKb:!?%[>Otgp623Is21r/rrST;nEU#UH?,bLl2Lh('#0"tfDbu]&-+-% -L$\ol4b*~> -!BU8Qkl@9drrAU@l1F3Ca!Uiu[>OtgpRePbs2h\>rrST;nEU#UIt4Wkl2Lh('#0"tfDbu]&-+)u -L$8W`3e.~> -!B:&NirG%MrrA"/j7M@7_Bo6o[>OtgpoCk$s3SLNrrST;nEU#UKT -!BpJTm/X,trrB$LmIT]Ki_9CSK`6o0"oFpVpThF&rrU(RgZe_AIt"eP^AR9r!l#McJcFI("oa/V -!);I+m/bd$J,~> -!BU8Qkl@9drrAU@l1=-ChFmnNK`6o0"oG -!B:&NirG%MrrA"/j7D:7fLc,FK`6o0"oPa/pr(AIrrU(RgZe_AIt5P,bl-i,!l#McJcFI("oa/V -!(tmsirR%VJ,~> -!BpJTm/X,trrB$LmIKWJm!Jj78G%i?"TGN[T?Hm,!l#Ahkl:[4"TReVLY:tm!l#McJcFO*"nY=c -!ds?em/bd$J,~> -!BU8Qkl@9drrAU@l14'Bk^!:18G%i?"TGlrX3pS>!l#Ahkl:[4"TRkcPhkX)!l#McJcFO*"nY=c -!da'_klK'jJ,~> -!B:&NirG%MrrA"/j7;46icbG(8G%i?"TH33[Fb'N!l#Ahkl:[4"TRqqU>kJ -!BpJTm/X,trrB$LmI9KGZ4?p[c&2N&`,s#lrrTqN^ZYXsJ,]HMe:XC^li.%$(;GG#hZ!`',6/7[ -JaEKh4b*~> -!BU8Qkl@9drrAU@l1!p?Y7CUXc&2N&b(S"3rrTqN^ZYXsJ,]HMfo`<)li.%$(;GG#hZ!`',6/7X -Ja!3\3e.~> -!B:&NirG%MrrA"/j7)(3WX]"Rc&2N&d?E#OrrTqN^ZYXsJ,]HMhOh4Hli.%$(;GG#hZ!`',6/4R -J`?dK2h1~> -!BpJTm/X,trrB$LmI0EFc7f5(Q\teEIX9Q=rrTqN^ZPRrJ,TBMqm_!bqs==a^CnV=s5 -!BU8Qkl@9drrAU@l0mj>b:`i$Q\teEN/?9_rrTqN^ZPRrJ,TBMqnS*,r9XFb^CnV=s5?~> -!B:&NirG%MrrA"/j6u"2`\%5sQ\teES!`(,rrTqN^ZPRrJ,TBMr5b;Lr9XFb^CnV=s5 -!BpJTm/X,trrB$LmI'?Fk@+Dk>4[^Q"*WIL`;0E7^D=TGs8RTGrr_YYL"G\k!lGf.JcFd1"nPmt -!+P,BmJlPSeieN~> -!BU8Qkl@9drrAU@l0dd>j'Vie>4[^Q",5Zmb5)&=^D=TGs8RTGrr__fPM>I(!lGf.JcFd1"nPmt -!+=i -!B:&NirG%MrrA"/j6kq2h-L']>4[^Q"-hi8dJ -!BpJTm/X,trrB$LmHj3CS.#BFpJ,0*HeqK[^mJd6U.I_ogjo5J6 -*<6M -!BU8Qkl@9drrAU@l0RX;R1''9eW0Y6p5&b;Pe$ekrrU=U^Z>FpJ,0*HgQJN(mJd6U.I_ogjo5J6 -*<6M9Ja*-t!R<`V~> -!B:&NirG%MrrA"/j6Ye/PmdX5eW0Y6pQtpMU;Hp-rrU=U^Z>FpJ,0*Hhk7=GmJd6U.I_ogjo5J6 -*<6M5J`H^h!Q-jH~> -!BpJTm/X,trrB$LmHa-CaXR8sQ2ZmF#N^gBs7V\KqYpKrpa*T5s8RTDrri51Hb'%ArrR(.r.4n3 -rrrCe#llHsJaNC&!S0Da~> -!BU8Qkl@9drrAU@l0IR;`[LloQ2ZmF#O%KRs7`1cqu6Tspa*T5s8RTDrri8:MS]2XrrR(.r.4n3 -rrrCe#llEoJa**s!R<`V~> -!B:&NirG%MrrA"/j6P_/^aK0hQ2ZmF#OA/bs7i\&qu6Tspa*T5s8RTDrri8BRE>BprrR(.r.4n3 -rrrCe#llBhJ`H[g!Q-jH~> -!BpJTm/X,trrB$LmHX'Bl>ck):[=/C!S3Y;rs/ItO7WDOKMgb/s*sbB"7Db6eaNM>r'tXUs69Oe -lV@K\EpA5Cqs=F84b*~> -!BU8Qkl@9drrAU@l0@L:k&:;#:[=/C!SaFLrs/J)S+Qa\KMgb/s*sbB"7W:Pg$eqBr'tXUs69Oe -lV@K\E9;`9qrn.,3e.~> -!B:&NirG%MrrA"/j6GY.i,&Go:[=/C!T1*[rs/J3W:g2jKMgb/s*sbB"7igkhXCIGr'tXUs69Oe -lV@K\D;^!*qr7^p2h1~> -!BpJTm/X,trrB$LmHEp?T+CuA]orBra/Jt:#6))akhm05irB%.o`#$GL7[r)rrV[=R=YD(rrg"S -!"bcRmJ6,MeieN~> -!BU8Qkl@9drrAU@l0.@7SIbc?]orBrc*I9I"i$2ci"Y,/s8RT@rr_)AWUoWZ!q7Y,JcG'9"MG`S -&=nC:q<7q*3e.~> -!B:&NirG%MrrA"/j65M+R1B9:]orBre%>PX"im8&i"Y,/s8RT@rr_5R[.Nkf!q7Y,JcG'9"MG`S -&"/"/q;VLn2h1~> -!BpJTm/X,trrB$LmH -!BU8Qkl@9drrAU@l0%:7c8Ye*Gl![)s1eI2"42s3K]2t2J+N[Cr5FN+qXORegD7k]s6fmjqKN&A -36m*>puqh)3e.~> -!B:&NirG%MrrA"/j6,G+a>O#"Gl![)s2Y$:"4ioLK]2t2J+N[Cr61PIqXORegD7k]s6fmjqKN&A -2TUI0pu;Cm2h1~> -!BpJTm/X,trrB$LmH3d>l?EF31Y%cj!N4!7rrT68a5R'uJ+ -!BU8Qkl@9drrAU@l/q46k&pk-1Y%cj!O9oGrrTBKbi/U%J+ -!B:&NirG%MrrA"/j6#A*i,]#$1Y%cj!P?kXrrTN]dc(6+J+ -!BpJTm/X,trrB$LmH!X -!BU8Qkl@9drrAU@l/_(4a;t -!B:&NirG%MrrA"/j5f5(_]8^_N;]+C!O(DXrrh6s^7WL+s8RT;rr_D\X6]?V!E"N$s760nrJV!^ -*Q*Hgp#?(j2h1~> -!BpJTm/X,trrB$LmGmR;iEcNb52M\,!K#t:rs/6QO8ng4V>TESs*sJ:"T?>gXS)5c!oOdNJcGBB -"l;EC!FF`9mI]cHeieN~> -!BU8Qkl@9drrAU@l/V"3h-9s\52M\,!LE!Jrs/6QO8njAYPdJ]s*sJ:"THW'[J'7m!oOdNJcGBB -"l;EC!F4H3l1F3@c8pI~> -!B:&NirG%MrrA"/j5]/'f3/1T52M\,!MeuYrs/6QO8nmO\btOgs*sJ:"THl=^A%:"!oOdNJcGBB -"l;EC!F"*+j7M@4_`*)~> -!BpJTm/X,trrB$LmG[F9W##FCRf8cU!I=A9s8Q@'rr`(gPkO5=s*sD8"SJjE`VoK0!JF=$s7ZHr -rgF8r(T;oPo'HJ/4b*~> -!BU8Qkl@9drrAU@l/Ck1VAB4ARf8cU!JpIIs8Q@'rr`+sT_IRJs*sD8"ST6]bl7;8!JF=$s7ZHr -rgF8r(T)cJo'$2#3e.~> -!B:&NirG%MrrA"/j5K#%Tb[V;Rf8cU!LNQYs8Q@'rr`/*XSCoWs*sD8"S]X!df/q>!JF=$s7ZHr -rgF8r(86<>o&Bbg2h1~> -!BpJTm/X,trrB$LmGR@8gJIqN6fX^:!Vpp:rrS6:pAP!nrih1Fk5YI2lMgtJPDe;krrVsA^OcF[ -rrqFM!!#mNJaN!p!S0Da~> -!BU8Qkl@9drrAU@l/:e0fM;JI6fX^:!W%NJrrS6:pAP!nrje9^k5YI2lMgtMT:"X3rrVsA^OcF[ -rrqFM!!#gIJa)^h!R<`V~> -!B:&NirG%MrrA"/j5Ar$dS0]A6fX^:!W&&YrrS6:pAP!nrkbE"k5YI2lMgtPX/4qOrrVsA^OcF[ -rrqFM!!#aAJ`H:\!Q-jH~> -!BpJTm/X,trrB$LmG@46S.Yf2PPq*Q!U5=:rrU7Yi;3HT`.-_.s8RT5rri>HJ>;W.rrU4Xi.:q* -rrr@b%0.$2JaMpn!S0Da~> -!BU8Qkl@9drrAU@l/(Y.R1TE.PPq*Q!UQ!JrrU7Yi;3HTb)PKFs8RT4rr^`1Y4D>e!ll/9JcGWI -"oXVo!"kWMl0mj;c8pI~> -!B:&NirG%MrrA"/j5/f"Pn=!*PPq*Q!UcWZrrU7Yi;3HTd@9=^s8RT4rr^rF\FfOq!ll/9JcGWI -"oXVo!"kKIj6u"/_`*)~> -!BpJTm/X,trrB$LmG7.5fMDPJ4P6;+!SWe;rrW0TXn_nteU5d.s8RT3rri/)HbK@PrrS6:p4<8B -rrq%;!!#jJJaMmm!S0Da~> -!BU8Qkl@9drrAU@l.tS-e4ouD4P6;+!T'LKrrW0TXn_ntg5FPGs8RT3rri23MT#GfrrS6:p4<8B -rrq%;!!#dDJa)Ue!R<`V~> -!B:&NirG%MrrA"/j5&`!cV+<=4P6;+!TL3[rrW0TXn_nthO<3_s8RT3rri2;REYU(rrS6:p4<8B -rrq%;!!#^=J`H1Y!Q-jH~> -!BpJTm/X,trrB$LmG%"3UDNt:LAR\E!Qq2:rrTD[rqHEojFG#0s8RT1rr_SVL"?&!s'1-Ts8N9" -L'RbrUOhh!m/bd$J,~> -!BU8Qkl@9drrAU@l.bG+TGRY7LAR\E!RS"KrrTD[rqHEokDmRHs8RT1rr_\dPM>m4s'1-Ts8N9" -L'RbrTRl@oklK'jJ,~> -!B:&NirG%MrrA"/j4iStS/2/2LAR\E!S4d[rrTD[rqHEolCH2as8RT1rr_bqT\oPEs'1-Ts8N9" -L'RbqS:T_eirR%VJ,~> -!BpJTm/X,trrB$LmFpq2hHU']/]sgf#.q5As8FdXp&>-_MP^=nr -/H>fVhLY([m/bd$J,~> -!BU8Qkl@9drrAU@l.YA*g0+LW/]sgf#/\%Qs8FdXp&>-aQ`pDSs8RT/rr_#>VXF<\!qnC1Jc>nr -/H>fTg4AMSklK'jJ,~> -!B:&NirG%MrrA"/j4`MseQ;hP/]sgf#0Omas8FdXp&>-bUq-Kjs8RT/rr_/OZ1.Vi!qnC1Jc>nr -/H>fReUccHirR%VJ,~> -!BpJTm/X,trrB$LmF^e0^)m=VB'lJq#j09cYlFa+1B-qG"8J%Hp[%q[J)^J2r4RHaq>:0ti#'Q) -fZ;.dn;@5Lm:HD"+23 -!BU8Qkl@9drrAU@l.G5(],gqRB'lJq#j09k[f?B11B-qG"8SOaq!A%\J)^J2r5=K+qYU9ui#'Q) -fZ;.dn;@5Lm:HD"*kR!fl0/5o3e.~> -!B:&NirG%MrrA"/j4NAq[N,>LB'lJq#j09r^&S,81B-qG"8St#q<\.]J)^J2r61SJqYU9ui#'Q) -fZ;.dn;@5Lm:HD"*O^OZl/Mf^2h1~> -!BpJTm/X,trrB$LmFU_0j`1P*'qkQ,rsH8S?[.BdFC/\sa7B64rMteCmJm39i;WrLUO^Yhrr3H( -WE2E.J;T26FD5ZmqN1^]rh'u+#'/gVmHEp -!BU8Qkl@9drrAU@l.>/(iG\r#'qkQ,rsH8S?[.BdF^Jeta7B64rO%s\mJm39i;WoMY)_!0rseh( -=$h"ZMMZk*BlC!IOT,OaTG7G1E8cB4kii,n3e.~> -!B:&NirG%MrrA"/j4E;qgMI)o'qkQ,rsH8S?[.BdF^Jeta7B64rP#)umJm39i;WoO\=M=Orseh( -=$h"ZMMZk*BlC!IOT,OaTG7G1D;0X%ki2]]2h1~> -!BpJTm/X,trrB$LmFCS-a?0G&2qY;5!o-t28ZJ!l0RmH3d:eieN~> -!BU8Qkl@9drrAU@l.,#%`B+&"2qY;5!o-t28ZJ!lp;^mf3<:hZ!i?R@i^:KP6eJ^&sd: -K_CW0"kYa6!'A/Nl/q42c8pI~> -!B:&NirG%MrrA"/j43/n^cDGq2qY;5!o-t28ZJ!m[>"mf3<:hZ!iBVQ9%VKP6eJ^&sd: -K_CW0"kYa6!'7oHj6#A&_`*)~> -!BpJTm/X,trrB$LmF:M-m$JLf"`a"9rrU2S^%]5B]kPLVrrU\tdI7,8J)1,-rP`MEZ1G[2YuoJ@ -rs%q3"TT:)m"+Qcm/bd$J,~> -!BU8Qkl@9drrAU@l."r%k`lk_"`a"9rrU2S^%]5B]kPLVrrUl3f'iY=J)1,-rlfIXZ1G[2YuoJ@ -rs%q3"TT:&k^i![klK'jJ,~> -!B:&NirG%MrrA"/j4*)nifOoT"`a"9rrU2S^%]5B]kPLVrrV&Gg[G1BJ)1,-rmH?mZ1G[2YuoJ@ -rs%q3"TT7!idp.OirR%VJ,~> -!BpJTm/X,trrB$LmF(A+jCJ>l(7P3/rrLPZo=b6:ddd>=jFFu6s8RT(rrTl>^%&f<]jAC?rs&Fj -('"AHjFQ^Ym/bd$J,~> -!BU8Qkl@9drrAU@l-ef#i*ucf(7P3/rrLPZo=b6:ddd>=kDmONs8RT(rrTl>^%&f<]jAC?rs&Fj -('"AFi.:.QklK'jJ,~> -!B:&NirG%MrrA"/j3lrlg0k!^(7P3/rrLPZo=b6:ddd>=lCH/gs8RT(rrTl?^%&f<]jAC?rs&Fj -('"ADg4A;EirR%VJ,~> -!BpJTm/X,trrB$LmEk5(_)_Pr1;gR#!rc96o=b:==8qai"7V5Ir:9mfJ)1,*iF;2g!Fk#Wrrp:q -!!#'rJaMF`!S0Da~> -!BU8Qkl@9drrAU@l-SYu^,Z/n1;gR#!rc96o=b:==8qai"7hhbrUU!gJ)1,*iF;2g!Fk#Wrrp:q -!!#$nJa).X!R<`V~> -!B:&NirG%MrrA"/j3Zfi\MsQh1;gR#!rc96o=b:==8qai"7rA%rUU!gJ)1,*iF;2g!Fk#Wrrp:q -!!#!hJ`G_L!Q-jH~> -!BpJTm/X,trrB$LmEY)&SK%V0DXb19!PaQk^Ae07$TkBb^&a/,nG`UcS!Nd>s8RT)rrHuIrk8I7 -^:jU>^&bc]Sc8l_D?'YVSUp1cm/bd$J,~> -!BU8Qkl@9drrAU@l-AMsRi;>-DXb19!PaQk^Ae07$TkBb^&a/,nG`UdVP^&bc]Sc8l_D?'YURt9h]klK'jJ,~> -!B:&NirG%MrrA"/j3HZgQQ#o)DXb19!PaQk^Ae07$TkBb^&a/,nG`UeZ*!fms8RT)rrHuIrk8I7 -^:jU>^&bc]Sc8l_D?'YUQ\"2SirR%VJ,~> -!BpJTm/X,trrB$LmEP#&jE:h0#^,RHrrI8UrOrC7^9LKnqS!!DFmo>4rN:qCo`+r@hZ!WMAc9=F -!5?/Io=b6:p7VEimWAd8$$PB\mG@42eieN~> -!BU8Qkl@9drrAU@l-8Gsi,f8*#^,RHrrI8UrOrC7^9LKnqS!!DFmo>4rjS0]o`+r@hZ!WMAc9=F -!5?/Io=b6:p7VEimWAd8$$>*Vl/(Y*c8pI~> -!B:&NirG%MrrA"/j3?Tgg2RE!#^,RHrrI8UrOrC7^9LKnqS!!DFmo>4rkP8uo`+r@hZ!WMAc9=F -!5?/Io=b6:p7VEimWAd8$$"[Mj5/es_`*)~> -!BpJTm/X,trrB$LmE=l$d8U,H'9;k#rr@$9^'OeR^9S!X^&S=4rk8AOmJd7*J)Br!s*ro*!RZT! -^&nAL^&\/H#64p'^:jRN:]A'/K[HOo#5F2l!!-'HJaM7[!S0Da~> -!BU8Qkl@9drrAU@l-&;qc;O`D'9;k#rr@$9^'OeR^9S!X^&S=4rk8AOmJd71NT9^3s*ro*!RZT! -^&nAL^&\/H#64p'^:jRN:]A'/K[HOo#5F2l!!-$DJa(tS!R<`V~> -!B:&NirG%MrrA"/j3-HeaADs<'9;k#rr@$9^'OeR^9S!X^&S=4rk8AOmJd78S*'DDs*ro*!RZT! -^&nAL^&\/H#64p'^:jRN:]A'/K[HOo#5F2l!!,s -!BpJTm/X,trrB$LmE+`"^HDPs,,bFSrr@$9^'OeR^9\*Z>m^Q5rk8AOm/I.m^Q5^0M'G!rfn7K[HUq#6(ME!!#0sJaM1Y!S0Da~> -!BU8Qkl@9drrAU@l,i/o]0$&n,,bFSrr@$9^'OeR^9\*Z>m^Q5rk8AOm/I.AMq%J#s*ro*!RZT! -^((.U])fX[>m^Q5^0M'G!rfn7K[HUq#6(ME!!#-nJa(nQ!R<`V~> -!B:&NirG%MrrA"/j2pm^Q5rk8AOm/I.ERb@E7s*ro*!RZT! -^((.U])fX[>m^Q5^0M'G!rfn7K[HUq#6(ME!!#*iJ`GJE!Q-jH~> -!BpJTm/X,trrB$LmDnStW$q]H1:Fst!Hl*S^'t(VZ;ETq"dkMS^:q:'li.%JJ\(UUs*ro*!VU+' -^()$>N#KFE"dkMS^'0mg!<0\5AbMu#"h$/d!%FjtmF^e,eieN~> -!BU8Qkl@9drrAU@l,W#lVC2EE1:Fst!Hl*S^'t(VZ;ETq"dkMS^:q:'li.%MO2CYks*ro*!VU+' -^()$>N#KFE"dkMS^'0mg!<0\5AbMu#"h$/d!%=^ql.G5$c8pI~> -!B:&NirG%MrrA"/j2^0`TdKg?1:Fst!Hl*S^'t(VZ;ETq"dkMS^:q:'li.%PS]^^,s*ro*!VU+' -^()$>N#KFE"dkMS^'0mg!<0\5AbMu#"h$/d!%4Ikj4NAm_`*)~> -!BpJTm/X,trrB$LmDeMtl]E"a!'@s3rrKlmrP&:3$OT"s^.ni*!5?1*^Zth$nVsFDq>^JEh>[Lm -\c0;UILZj<^:m>G9E;e%"\\p1^:A*Xrs$5"!!!jul[eHTm/bd$J,~> -!BU8Qkl@9drrAU@l,MrlkDpG[!'@s3rrKlmrP&:3$OT"s^.ni*!5?1*^Zth$o9uo]q>^JEh>[Lm -\c0;UILZj<^:m>G9E;e%"\\p1^:A*Xrs$5"!!!jskCMmLklK'jJ,~> -!B:&NirG%MrrA"/j2U*`iJSKP!'@s3rrKlmrP&:3$OT"s^.ni*!5?1*^Zth$oV]:uq>^JEh>[Lm -\c0;UILZj<^:m>G9E;e%"\\p1^:A*Xrs$5"!!!gniIU%@irR%VJ,~> -!BpJTm/X,trrB$LmDSArjb"3H!(=oGrrW1!]^ri=]N>*srr`(fPkFtS"n:/TAD$D/rrM(fmCiU1 -iMcb\a@$".'8,CtmFCS)eieN~> -!BU8Qkl@9drrAU@l,;fjiIMXB!(=oGrrW1!]^ri=]N>*srr`+rT_A<`"n:/TAD$D/rrM(fmCiU1 -iMcb\a@$".'7o+nl.,#!c8pI~> -!B:&NirG%MrrA"/j2Bs^gO9e9!(=oGrrW1!]^ri=]N>*srr`/)XS;Ym"n:/TAD$D/rrM(fmCiU1 -iMcb\a@$".'7S\ej43/j_`*)~> -!BpJTm/X,trrB$LmDA5pid219!*J$rrr`%]&68>9!G0^Brt578L?n]8DeX -!BU8Qkl@9drrAU@l,)ZhhK]V3!*J$rrr`%]&68>9!G0^Brt57APO84GDeX -!B:&NirG%MrrA"/j20g\fQI`)!*J$rrr`%]&68>9!G0^Brt57JU$qiWDeX -!BpJTm/X,trrB$LmD/)nh/Nf&!(b&Nrs-S>#Yr(QBta8T!ki -!BU8Qkl@9drrAU@l+lNfg2@?!!(b&Nrs-S>#Yr(QBta8T!ki%:Lfge^&sd:K_FI+!n18V -o=b:2=OX;M#/j%4!"3`!Ja(SH!R<`V~> -!B:&NirG%MrrA"/j1s[Ze8,Km!(b&Nrs-S>#Yr(QBta8T!ki+ -!BpJTm/X,trrB$LmCqrlg275t!("?MrrqoEaN3$'rr3)8&X<+jrrUtZN;:0hN*>#trrUYOZ1G[2 -YuoK8rr_tJBUSV/". -!BU8Qkl@9drrAU@l+ZBdenbZn!("?MrrqoEaN3$'rr3)8&X<+jrrUtZN;:0hN*>#trrUYOZ1G[2 -YuoK8rr_tJBUSV/".e:El-JSpc8pI~> -!B:&NirG%MrrA"/j1aOXctWmf!("?MrrqoEaN3$'rr3)8&X<+jrrUtZN;:0hN*>#trrUYOZ1G[2 -YuoK8rr_tJBUSV/".Rq=j3Q`d_`*)~> -!BpJTm/X,trrB$LmC_fkgiX,-!$@a1h>[u]WGcKmJ;TA;FD5ZH'#4;C$+On\G_hE"7W5fsrrTl? -^%&f<]jAD3rseh(DeX -!BU8Qkl@9drrAU@l+H6cflIZ(!$@a1h>[u]WGcKmJ;TA;FD5ZH'#4;C$+On\G_hE"7W5fsrrTl? -^%&f<]jAD3rseh(DeX -!B:&NirG%MrrA"/j1OCWdr5cs!$@a1h>[u]WGcKmJ;TA;FD5ZH'#4;C$+On\G_hE"7W5fsrrTl? -^%&f<]jAD3rseh(DeX -!BpJTm/X,trrB$LmCMZihg6":!%X];iVs#RKP6eJ^&sa0K_G3@"m3tMfamW5rrM(fpq?_.rOr73 -r4W2@iSXY=nCYh'f^Pp@#PjuB!!![Zhgt1 -!BU8Qkl@9drrAU@l+6*agNaD3!%X];iVs#RKP6eJ^&sa0K_G3@"m3tMfamW5rrM(fpq?_.rOr73 -r4W2@iSXY=nCYh'f^Pp@#PjuB!!!XWgO\V4klK'jJ,~> -!B:&NirG%MrrA"/j1=7UeohZ+!%X];iVs#RKP6eJ^&sa0K_G3@"m3tMfamW5rrM(fpq?_.rOr73 -r4W2@iSXY=nCYh'f^Pp@#PjuB!!!XTeq)l)irR%VJ,~> -!BpJTm/X,trrB$LmC;Ngl&-/S!#pdajSo;1=L%J3!jPkVp&>%fUZ;@TD7TY["ouBO!5?/IrOr73 -r4W3BD1qoon;/(a!"t4SJaLSH!S0Da~> -!BU8Qkl@9drrAU@l+#s_jbXQL!#pdajSo;1=L%J3!jPkVp&>%fUZ;@TD7TY["ouBO!5?/IrOr73 -r4W3BD1qoon;/(a!"k(LJa(;@!R<`V~> -!B:&NirG%MrrA"/j1++Shh;XB!#pdajSo;1=L%J3!jPkVp&>%fUZ;@TD7TY["ouBO!5?/IrOr73 -r4W3BD1qoon;/(a!"jqBJ`Fl4!Q-jH~> -!BpJTm/X,trrB$LmC)Beka*e"!!n#BkPkUs?G5mC!khpRpAY/CJE6_2p1=3:"ouBO!5?/IrOr73 -qn<)Bp4rYQn9kQB!%XE"JaLMF!S0Da~> -!BU8Qkl@9drrAU@l*fg]jHM+o!!n#BkPkUs?G5mC!khpRpAY/CJE6_2p1=3:"ouBO!5?/IrOr73 -qn<)Bp4rYQn9kQB!%O5oJa(5>!R<`V~> -!B:&NirG%MrrA"/j0mtQhiT>f!!n#BkPkUs?G5mC!khpRpAY/CJE6_2p1=3:"ouBO!5?/IrOr73 -qn<)Bp4rYQn9kQB!%F&fJ`Ff2!Q-jH~> -!BpJTm/X,trrB$LmBl6cm&N;M!!?*4lMgnD@edY;!<'V3!;sP3@c@(]s*s,0!RZT!^((.W^&Ym] -!(@04^&US-E;mQPK[GYV#JO%;!!#3`m"+QCm/bd$J,~> -!BU8Qkl@9drrAU@l*T[[kbpWE!!?*4lMgnD@edY;!<'V3!;sP3@c@(]s*s,0!RZT!^((.W^&Ym] -!(@04^&US-E;mQPK[GYV#JO%;!!#0\k^i!;klK'jJ,~> -!B:&NirG%MrrA"/j0[hOihSX9!!?*4lMgnD@edY;!<'V3!;sP3@c@(]s*s,0!RZT!^((.W^&Ym] -!(@04^&US-E;mQPK[GYV#JO%;!!#*Vidp./irR%VJ,~> -!BpJTm/X,trrB$LmBQ$`^K(I;!%jZ4mJd3(\c0>C!!EZkWkJK3^&S02^&bc]p](8CjSo8.K`/Up -!5,oE^:jT6QO^_0Q^83]^&`o7N;j.UROnL>"BN9gmDA5keieN~> -!BU8Qkl@9drrAU@l*9IX]2\t6!%jZ4mJd3(\c0>C!!EZkWkJK3^&S02^&bc]p](8CjSo8.K`/Up -!5,oE^:jT6QO^_0Q^83]^&`o7N;j.UROnL>"BE'bl,)Zcc8pI~> -!B:&NirG%MrrA"/j0@VL[o*>/!%jZ4mJd3(\c0>C!!EZkWkJK3^&S02^&bc]p](8CjSo8.K`/Up -!5,oE^:jT6QO^_0Q^83]^&`o7N;j.UROnL>"B)^[j20gW_`*)~> -!BpJTm/X,trrB$LmB>m^fQ\55!!dH+nG`O_Ac9=I!5>^72nf:j^&S01^&_g=q#CADjSo8SAc9=Q -)2sLm^:jT6QO^_0Q^83]^&_g=NrK@JD[-7B(jO\amD/)ieieN~> -!BU8Qkl@9drrAU@l*'=Ve92Z/!!dH+nG`O_Ac9=I!5>^72nf:j^&S01^&_g=q#CADjSo8SAc9=Q -)2sLm^:jT6QO^_0Q^83]^&_g=NrK@JD[-7B(j=D[l+lNac8pI~> -!B:&NirG%MrrA"/j0.JJcZ9m&!!dH+nG`O_Ac9=I!5>^72nf:j^&S01^&_g=q#CADjSo8SAc9=Q -)2sLm^:jT6QO^_0Q^83]^&_g=NrK@JD[-7B(N[oRj1s[U_`*)~> -!BpJTm/X,trrB$LmB,a]kaOF0!!,B`q"+Ldd=hJ4%KO5WZ3S)D70mkH!(@04rk8DddJEkHnCV8^ -f^S#&!H#CH^(Pl)%Y2:-!(.!0^&UM*Dn`rrD34c'pnpCY!!"mGk^i-8m/bd$J,~> -!BU8Qkl@9drrAU@l)j1UjHqb(!!,B`q"+Ldd=hJ4%KO5WZ3S)D70mkH!(@04rk8DddJEkHnCV8^ -f^S#&!H#CH^(Pl)%Y2:-!(.!0^&UM*Dn`rrD34c'pnpCY!!"jCjFQR0klK'jJ,~> -!B:&NirG%MrrA"/j/q>Ihions!!,B`q"+Ldd=hJ4%KO5WZ3S)D70mkH!(@04rk8DddJEkHnCV8^ -f^S#&!H#CH^(Pl)%Y2:-!(.!0^&UM*Dn`rrD34c'pnpCY!!"g>hgsh%irR%VJ,~> -!BpJTm/X,trrB$LmAfOY^Kh*F!#9V/p&>'?K`/Up!5?1R#eg;*QO^_0Q^83]^&`o7rr3H(WGcKm -J;9/8FD5ZmqW\"\iF;2g!Fk#Nrs.5!'`\4>?,(sX]BoXM4b*~> -!BU8Qkl@9drrAU@l)NtQ]3>O@!#9V/p&>'?K`/Up!5?1R#eg;*QO^_0Q^83]^&`o7rr3H(WGcKm -J;9/8FD5ZmqW\"\iF;2g!Fk#Nrs.5!'`\4>>J#IN]BK@A3e.~> -!B:&NirG%MrrA"/j/V,E[oit:!#9V/p&>'?K`/Up!5?1R#eg;*QO^_0Q^83]^&`o7rr3H(WGcKm -J;9/8FD5ZmqW\"\iF;2g!Fk#Nrs.5!'`\4>=grtB]Aiq02h1~> -!BpJTm/X,trrB$LmATCRi/K>f!!56QoD&=dp1=3:%KO5K;)l8iQ^82r!10#^rk8SJpAai>BUSV/ -". -!BU8Qkl@9drrAU@l)BUSV/ -". -!B:&NirG%MrrA"/j/Cu>f7tmU!!56QoD&=dp1=3:%KO5K;)l8iQ^82r!10#^rk8SJpAai>BUSV/ -". -!BpJTm/X,trrB$LmA91U]NkjE!")rArVHNpD7TY[rr<`?4KH0r6O.PD!(.!0^:q-ps3k)To=b:2 -=OZR8!n18Vo=b:2=OWT9#lV>=$31&5?+baU[d=+H4b*~> -!BU8Qkl@9drrAU@l)!VM\Q]C@!")rArVHNpD7TY[rr<`?4KH0r6O.PD!(.!0^:q-ps3k)To=b:2 -=OZR8!n18Vo=b:2=OWT9#lV>=$31&5>If=L[cmh<3e.~> -!B:&NirG%MrrA"/j/(cAZrm_9!")rArVHNpD7TY[rr<`?4KH0r6O.PD!(.!0^:q-ps3k)To=b:2 -=OZR8!n18Vo=b:2=OWT9#lV>=$31&5=gWb?[c7D+2h1~> -!BpJTm/X,trrB$LmA'%SiflM*!!!Ucmem(ciF;2g"Cg?'?G5mC!khpRlMgt[KP6eJ^&sd:K_Cc4 -#k!EZ!!!$]Pi@8][-[nF4b*~> -!BU8Qkl@9drrAU@l(dJKhNBo#!!!Ucmem(ciF;2g"Cg?'?G5mC!khpRlMgt[KP6eJ^&sd:K_Cc4 -#k!EZ!!!$\P2:cS[-7V:3e.~> -!B:&NirG%MrrA"/j.kW?fT%rm!!!Ucmem(ciF;2g"Cg?'?G5mC!khpRlMgt[KP6eJ^&sd:K_Cc4 -#k!EZ!!!$[NnApC[,V2)2h1~> -!BpJTm/X,trrB$Lm@`hJcZgT3!!4^)g]%3S]jADB^'),U^# -!BU8Qkl@9drrAU@l(I8Bb]Y-.!!4^)g]%3S]jADB^'),U^# -!B:&NirG%MrrA"/j.PE6a)`@%!!4^)g]%3S]jADB^'),U^# -!BpJTm/X,trrB$Lm@EVG[;-*J!!Y -!BU8Qkl@9drrAU@l(.&?Z>'^F!!Y -!B:&NirG%MrrA"/j.533Y%J(?!!Y -!BpJTm/X,trrB$Lm@3JOkbqMk!!!$ZM:.&jRJ4E"R:q9Is7U%&^'"GMYu!CO^&_g=JcGQG$/14q -!<<*/ -!BU8Qkl@9drrAU@l'poGjJGod!!!$ZM:.&jRJ4E"R:q9Is7U%&^'"GMYu!CO^&_g=JcGQG$/14q -!<<*/ -!B:&NirG%MrrA"/j.#';hk -!BpJTm/X,trrB$Lm?m8CkFkZXrW!EZH\u`UFF]70J95LDWVZVo!RZT!^((.W^9S!X^&S=4^:jRN -:]A'/K[GANrVm!!c@%8C!! -!BU8Qkl@9drrAU@l'U];j.8sOrW!EZH\u`UFF]70J95LDWVZVo!RZT!^((.W^9S!X^&S=4^:jRN -:]A'/K[GANrVm!!c@%8C!! -!B:&NirG%MrrA"/j-\j/h3ptCrW!EZH\u`UFF]70J95LDWVZVo!RZT!^((.W^9S!X^&S=4^:jRN -:]A'/K[GANrVm!!c@%8C!! -!BpJTm/X,trrB$Lm?R&@jJ#ZdrW!0FC9#\&^tA/QrrLN#rOraA^:poZ^0M'G!kqqI!! -!BU8Qkl@9drrAU@l':K8i1F![rW!0FC9#\&^tA/QrrLN#rOraA^:poZ^0M'G!kqqI!! -!B:&NirG%MrrA"/j-AX,g7(tNrW!0FC9#\&^tA/QrrLN#rOraA^:poZ^0M'G!kqqI!! -!BpJTm/X,trrB$Lm?6i=kcJ81rW!$,8sJ3.rrMh)rOraA^9UTq^'0mg!58W(PQ:]s!G1tWrr_,B -8dYIs!uPIKk^i,rm/bd$J,~> -!BU8Qkl@9drrAU@l&t95jJlT)rW!$,8sJ3.rrMh)rOraA^9UTq^'0mg!58W(PQ:]s!G1tWrr_,B -8dYIs!uPFGjFQQjklK'jJ,~> -!B:&NirG%MrrA"/j-&F)hkjZqrW!$,8sJ3.rrMh)rOraA^9UTq^'0mg!58W(PQ:]s!G1tWrr_,B -8dYIs!uG7?hgsg_irR%VJ,~> -!BpJTm/X,trrB$Lm>gQ9^3244rW!$UD6`^1rrHuIrkAC4&.1P#^.ni*!5;239E;f@\S[*$"7rd7 -1B%7U!\nl4JaK)s!S0Da~> -!BU8Qkl@9drrAU@l&P!1]6#_.rW!$UD6`^1rrHuIrkAC4&.1P#^.ni*!5;239E;f@\S[*$"7rd7 -1B%7U!\e`.Ja&fk!R<`V~> -!B:&NirG%MrrA"/j,W.%[W*r%rW!$UD6`^1rrHuIrkAC4&.1P#^.ni*!5;239E;f@\S[*$"7rd7 -1B%7U!\\Q%J`EB_!Q-jH~> -!BpJTm/X,trrB$Lm>L?6fTf8DrW!0+3./L9s5@GS^&_^%MZ3hS^O/!DrW!$2:mK[am@ -!BU8Qkl@9drrAU@l&4d.e< -!B:&NirG%MrrA"/j,;q"c]:a0rW!0+3./L9s5@GS^&_^%MZ3hS^O/!DrW!$19TRMNj.,-1_`*)~> -!BpJTm/X,trrB$Lm>('2\T^":rW!*/6%4bu^%&f<]jAC3rrhu+IR+>?!! -!BU8Qkl@9drrAU@l%eL*[WOP5rW!*/6%4bu^%&f<]jAC3rrhu+IR+>?!! -!B:&NirG%MrrA"/j+lXsZ#V`*rW!*/6%4bu^%&f<]jAC3rrhu+IR+>?!! -!BpJTm/X,trrB$Lm=aj0ii$TB!WE'#"urmZ^&kQAduaS4poncr"9&9'!@qo`idpK^m/bd$J,~> -!BU8Qkl@9drrAU@l%J:(hPOs9!WE'#"urmZ^&kQAduaS4poncr"9&9'!@hc[hLXpVklK'jJ,~> -!B:&NirG%MrrA"/j+QFqfV)k*!WE'#"urmZ^&kQAduaS4poncr"9&9'!@_TRfR`(JirR%VJ,~> -!BpJTm/X,trrB$Lm=FX2mFn=M1'IXe5+))Y".R[o>$5_*rQ'A"Yshfg4AXRm/bd$J,~> -!BU8Qkl@9drrAU@l%/(*l.;SB0a.Od5+))Y".R[o>$5_*rQ'A"Yj_af7E1KklK'jJ,~> -!B:&NirG%MrrA"/j+64sj3aB/0E_@b5+))Y".R[o>$5_*rQ'A">FGXd=L>?irR%VJ,~> -!BpJTm/X,trrB$Lm=F[&m1AE_G"2c_3EpHUNHT#ACT7/srrqu.O'apKr;Zs(89V/uJaJHa!S0Da~> -!BU8Qkl@9drrAU@l%/*skn)jTF@HK\3EpHUNHT#ACT7/srrqu.O'apKr;Zs(7s(fkJa&0Y!R<`V~> -!B:&NirG%MrrA"/j+67git1"DEC:$W3EpHUNHT#ACT7/srrqu.O'apKr;Zs'7<,6\J`DaM!Q-jH~> -!BpJTm/X,trrB$Lm=F["m02grQ!>^?qu?mB:Pc($r1X,or7%d':ETK7"U-PgQ,i3Am>:32eieN~> -!BU8Qkl@9drrAU@l%/*oklp7gP?K=:qu?mB:Pc($r1X,or7%d':ETK7"U-MdPJlX8l&"X*c8pI~> -!B:&NirG%MrrA"/j+67cis"DVO'!_2qu?mB:Pc($r1X,or7%d':ETK7"U$D`O2'Y)j,)ds_`*)~> -!BpJTm/X,trrB$Lm=FZrm02gbNF+IHqu?p'-rG;c_ -!BU8Qkl@9drrAU@l%/*jklp7WMI&%Cqu?p'-rG;c_ -!B:&NirG%MrrA"/j+67^is"DGLKcJ -!BpJTm/X,trrB$Lm=FZmm0;mtS8Ce?!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHI88Xm -!BU8Qkl@9drrAU@l%/*ekm$=iR;5;9!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHI7r+O3kCMlK -l2TuKc8pI~> -!B:&NirG%MrrA"/j+67Yis+JXQ"`Z0!W)j%%5_.4S\*YT^&J?9gUj#&=#:B`!!WHH7;8%&iIU$? -j8\-?_`*)~> -!BpJTm/X,trrB$Lm=FZgm0;ajS97IU"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQW96HcA -kCN#OmJ6,MeieN~> -!BU8Qkl@9drrAU@l%/*_km$4`R<(tO"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQW8opE8 -jFQQHl1sQEc8pI~> -!B:&NirG%MrrA"/j+67Sis+AOQ#K8E"Si$('f&O"M4V)tiVV%&$2`])[%<+i:,3R[!!WQV88sj* -hLX^ -!BpJTm/X,trrB$Lm=FZ`m0D=SR!2Us*s20:0+KNl7oj5FL6eR:\&$59h<4(knauSPrVcTeo^VA7 -kM=V0_7-SAQA0Qp<_#)"%efr.!Zs[/GF5nnJaJ$Uo'HJ/4b*~> -!BU8Qkl@9drrAU@l%/*Xkm,bHQ$$+l*Wl'90+KNl7oj5FL6eR:\&$59h<4(knauSPrVcTeo^VA7 -kM=V0_7-SAQA0Qp<_#)"%efr.!ZjR,Fd9AbJa%aMo'$2#3e.~> -!B:&NirG%MrrA"/j+67Lis3o7O`FA`* -!BpJTm/X,trrB$Lm=FZYm0`43]V:0u=@=b["47)U!u`d[=D`hf][uM$m=FZjm/bd$J,~> -!BU8Qkl@9drrAU@l%/*QkmHY'\Y"Rk<^JDV"47)U!uW^X -!B:&NirG%MrrA"/j+67EisOek[$uV\<'`&Q"47)U!uWXU<,$oQ[*IZ^j+67VirR%VJ,~> -!BpJTm/X,trrB$Lm=FZNm4[>7\Z20[IrA^q91(]o-m'3<&.JsO"TSN+#7:nO',DZ<0f_To -!BU8Qkl@9drrAU@l%/*FkqCc,[\oRPI;N=k8jYKk-Qa*;%h/jN"TSN+#7:nN',DZ;0K;Bk -!B:&NirG%MrrA"/j+67:j"JrqZ(mV@H"pS^83f*e-6 -!BpJTmCB3Im=FYUm=FYUmJcJReieN~> -!BU8Ql+*@9l%/)Ml%/)Ml2KoJc8pI~> -!B:&Nj11,"j+66Aj+66Aj8S'>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6m=FYUm=FYUmA]IReieN~> -!BU73l%/)Ml%/)Ml)EnJc8pI~> -!B:%0j+66Aj+66Aj/M&>_`*)~> -!BpI6eq)D'eq)D'eu7."4b*~> -!BU73c@O8lc@O8lcD]"g3e.~> -!B:%0_h#^V_h#^V_l1HQ2h1~> -JN\QIJN\QIJN]hmJ,~> -JNA?CJNA?CJNBVgJ,~> -JN&-=JN&-=JN'DaJ,~> -%%EndData -showpage -%%Trailer -end -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/perpendiculaire.eps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/perpendiculaire.eps deleted file mode 100755 index fb56063e86..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/perpendiculaire.eps +++ /dev/null @@ -1,1478 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1,17 by Peter Kirchgessner -%%Title: perpendiculaire.eps -%%CreationDate: Thu Jun 7 01:26:39 2007 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 14 14 655 495 -%%EndComments -%%BeginProlog -% Use own dictionary to avoid conflicts -10 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -14.173228346456694 14.173228346456694 translate -% Translate to begin of first scanline -0 480.00000000000011 translate -640.00000000000011 -480.00000000000011 scale -% Image geometry -640 480 8 -% Transformation matrix -[ 640 0 0 480 0 0 ] -% Strings to hold RGB-samples per scanline -/rstr 640 string def -/gstr 640 string def -/bstr 640 string def -{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} -true 3 -%%BeginData: 52176 ASCII Bytes -colorimage -JcDDCp&G*\mf7q=JcC<$!<7Q~> -JcDDCirFZ1JcC<$!<7Q~> -JcDDCirFZ1JcC<$!<7Q~> -JcDhOo`4^c"7H3h!:p0_!.k0$s,?u.~> -JcDhOo`4^c!s&B$!:p0_!.k0$s,?u.~> -JcDhOo`4^c!s&B$!:p0_!.k0$s,?u.~> -JcE+Wq#K^["7H3h!9X=W!.k0$s-3P6~> -JcE+Wq#K^[!s&B$!9X=W!.k0$s-3P6~> -JcE+Wq#K^[!s&B$!9X=W!.k0$s-3P6~> -JcE=]qZ,XUrU/PBqZ)3IJcD2=J,~> -JcE=]qZ,XUr;b^SqZ)3IJcD2=J,~> -JcE=]qZ,XUr;b^SqZ)3IJcD2=J,~> -JcELbquGFM!!([OquD -JcELbquGFM!!([OquD -JcELbquGFM!!([OquD -JcE[gquG7H!!(LJquD -JcE[gquG7H!!(LJquD -JcE[gquG7H!!(LJquD -JcEgkr;b1D!!(=Er;_EKJcD\KJ,~> -JcEgkr;b1D!!(=Er;_EKJcD\KJ,~> -JcEgkr;b1D!!(=Er;_EKJcD\KJ,~> -JcEsor;b%@!!(1Ar;_EKJcDhOJ,~> -JcEsor;b%@!!(1Ar;_EKJcDhOJ,~> -JcEsor;b%@!!(1Ar;_EKJcDhOJ,~> -JcF*sr;an -JcF*sr;an -JcF*sr;an -JcF7"r;ab8!!'n9r;_EKJcE+WJ,~> -JcF7"r;ab8!!'n9r;_EKJcE+WJ,~> -JcF7"r;ab8!!'n9r;_EKJcE+WJ,~> -JcF@%rW'_5!!'b5rW%NLJcE4ZJ,~> -JcF@%rW'_5!!'b5rW%NLJcE4ZJ,~> -JcF@%rW'_5!!'b5rW%NLJcE4ZJ,~> -JcFI(rW'V2!!'Y2rW%NLJcE=]J,~> -JcFI(rW'V2!!'Y2rW%NLJcE=]J,~> -JcFI(rW'V2!!'Y2rW%NLJcE=]J,~> -JcFR+rW'M/!!'P/rW%NLJcEF`J,~> -JcFR+rW'M/!!'P/rW%NLJcEF`J,~> -JcFR+rW'M/!!'P/rW%NLJcEF`J,~> -JcF[.rW'D,!!'G,rW%NLJcEOcJ,~> -JcF[.rW'D,!!'G,rW%NLJcEOcJ,~> -JcF[.rW'D,!!'G,rW%NLJcEOcJ,~> -JcFd1rW';)!!'>)rW%NLJcEXfJ,~> -JcFd1rW';)!!'>)rW%NLJcEXfJ,~> -JcFd1rW';)!!'>)rW%NLJcEXfJ,~> -JcFm4rW'2&!!'5&rW%NLJcEaiJ,~> -JcFm4rW'2&!!'5&rW%NLJcEaiJ,~> -JcFm4rW'2&!!'5&rW%NLJcEaiJ,~> -JcFs6rrB2$!!',#rr@WMJcEgkJ,~> -JcFs6rrB2$!!',#rr@WMJcEgkJ,~> -JcFs6rrB2$!!',#rr@WMJcEgkJ,~> -JcG'9rW'#!!!'&!rW%NLJcEpnJ,~> -JcG'9rW'#!!!'&!rW%NLJcEpnJ,~> -JcG'9rW'#!!!'&!rW%NLJcEpnJ,~> -JcG-;rrB"t!!&qsrr@WMJcF!pJ,~> -JcG-;rrB"t!!&qsrr@WMJcF!pJ,~> -JcG-;rrB"t!!&qsrr@WMJcF!pJ,~> -JcG6>rW&hq!!&kqrW%NLJcF*sJ,~> -JcG6>rW&hq!!&kqrW%NLJcF*sJ,~> -JcG6>rW&hq!!&kqrW%NLJcF*sJ,~> -JcG<@rrAho!!&bnrr@WMJcF0uJ,~> -JcG<@rrAho!!&bnrr@WMJcF0uJ,~> -JcG<@rrAho!!&bnrr@WMJcF0uJ,~> -JcGBBrrAbm!!&\lrr@WMJcF7"J,~> -JcGBBrrAbm!!&\lrr@WMJcF7"J,~> -JcGBBrrAbm!!&\lrr@WMJcF7"J,~> -JcGHDrrA\k!!&Vjrr@WMJcF=$J,~> -JcGHDrrA\k!!&Vjrr@WMJcF=$J,~> -JcGHDrrA\k!!&Vjrr@WMJcF=$J,~> -JcGNFrrAVi!!&Phrr@WMJcFC&J,~> -JcGNFrrAVi!!&Phrr@WMJcFC&J,~> -JcGNFrrAVi!!&Phrr@WMJcFC&J,~> -JcGWIrW&Gf!!&JfrW%NLJcFL)J,~> -JcGWIrW&Gf!!&JfrW%NLJcFL)J,~> -JcGWIrW&Gf!!&JfrW%NLJcFL)J,~> -JcG]KrrAGd!!&Acrr@WMJcFR+J,~> -JcG]KrrAGd!!&Acrr@WMJcFR+J,~> -JcG]KrrAGd!!&Acrr@WMJcFR+J,~> -JcGcMrrAAb!!&;arr@WMJcFX-J,~> -JcGcMrrAAb!!&;arr@WMJcFX-J,~> -JcGcMrrAAb!!&;arr@WMJcFX-J,~> -Jc>cN!0mK`!0dE_!.k0$s5 -Jc>cN!0mK`!0dE_!.k0$s5 -Jc>cN!0mK`!0dE_!.k0$s5 -K)biNPQ(U_P5kO^JcC<$ir=N~> -K)biNPQ(U_P5kO^JcC<$ir=N~> -K)biNPQ(U_P5kO^JcC<$ir=N~> -K`D&POoGC]OT5=\JcC<$jSs`~> -K`D&POoGC]OT5=\JcC<$jSs`~> -K`D&POoGC]OT5=\JcC<$jSs`~> -LB%8RO8f1[NrT+ZJcC<$k5Tr~> -LB%8RO8f1[NrT+ZJcC<$k5Tr~> -LB%8RO8f1[NrT+ZJcC<$k5Tr~> -M#[JTNW/tYN;rnXJcC<$kl6/~> -M#[JTNW/tYN;rnXJcC<$kl6/~> -M#[JTNW/tYN;rnXJcC<$kl6/~> -M>mPUMuNbWMZ3YVJcC<$l2Q8~> -M>mPUMuNbWMZ3YVJcC<$l2Q8~> -M>mPUMuNbWMZ3YVJcC<$l2Q8~> -MuWeWMZ3YVM?!SUJcC<$li2J~> -MuWeWMZ3YVM?!SUJcC<$li2J~> -MuWeWMZ3YVM?!SUJcC<$li2J~> -NW9"YM#RGTL]@ASJcC<$mJh\~> -NW9"YM#RGTL]@ASJcC<$mJh\~> -NW9"YM#RGTL]@ASJcC<$mJh\~> -NrK(ZLAq5RL&V,QJcC<$mf.e~> -NrK(ZLAq5RL&V,QJcC<$mf.e~> -NrK(ZLAq5RL&V,QJcC<$mf.e~> -OT5=\L&V,QK`D&PJcC<$nGe"~> -OT5=\L&V,QK`D&PJcC<$nGe"~> -OT5=\L&V,QK`D&PJcC<$nGe"~> -P5kO^KDtoOK)biNJcC<$o)F4~> -P5kO^KDtoOK)biNJcC<$o)F4~> -P5kO^KDtoOK)biNJcC<$o)F4~> -PQ(U_Jc>]MJc>cN!.k0$s7?8@~> -PQ(U_Jc>]MJc>cN!.k0$s7?8@~> -PQ(U_Jc>]MJc>cN!.k0$s7?8@~> -Q2gjaJc>cN!.k1Ms8N(Ms+14Cs*t~> -Q2gjaJc>cN!.k1Ms8N(Ms+14Cs*t~> -Q2gjaJc>cN!.k1Ms8N(Ms+14Cs*t~> -QN$pbJcG`L!!%TMrVlitJcC<$pA]X~> -QN$pbJcG`L!!%TMrVlitJcC<$pA]X~> -QN$pbJcG`L!!%TMrVlitJcC<$pA]X~> -R/d0dJcG]K!!%TMr;ZcsJcC<$q#>j~> -R/d0dJcG]K!!%TMr;ZcsJcC<$q#>j~> -R/d0dJcG]K!!%TMr;ZcsJcC<$q#>j~> -RK!6eJcGWI!!%TMqYpNqJcC<$q>Ys~> -RK!6eJcGWI!!%TMqYpNqJcC<$q>Ys~> -RK!6eJcGWI!!%TMqYpNqJcC<$q>Ys~> -S,`KgJcGTH!!%TMq>^HpJcC<$qu;0~> -S,`KgJcGTH!!%TMq>^HpJcC<$qu;0~> -S,`KgJcGTH!!%TMq>^HpJcC<$qu;0~> -SGrQhJcGNF!!%TMp\t3nJcC<$r;V9~> -SGrQhJcGNF!!%TMp\t3nJcC<$r;V9~> -SGrQhJcGNF!!%TMp\t3nJcC<$r;V9~> -Sc8ZiJcGKE!!%TMpAY*mJcC<$rVqB~> -Sc8ZiJcGKE!!%TMpAY*mJcC<$rVqB~> -Sc8ZiJcGKE!!%TMpAY*mJcC<$rVqB~> -TE"okJcGHD!!%TMp&G$lJcC<$s8RT~> -TE"okJcGHD!!%TMp&G$lJcC<$s8RT~> -TE"okJcGHD!!%TMp&G$lJcC<$s8RT~> -T`4ulJcGBB!!%TMoD\djJcC<$!<7Q~> -T`4ulJcGBB!!%TMoD\djJcC<$!<7Q~> -T`4ulJcGBB!!%TMoD\djJcC<$!<7Q~> -U&P)mJcG?A!!%TMo)A[iJcC<$J,~> -U&P)mJcG?A!!%TMo)A[iJcC<$J,~> -U&P)mJcG?A!!%TMo)A[iJcC<$J,~> -U]:>oJcG<@!!%TMnc/UhJcCB&J,~> -U]:>oJcG<@!!%TMnc/UhJcCB&J,~> -U]:>oJcG<@!!%TMnc/UhJcCB&J,~> -V#LDpJcG6>!!%TMn,E@fJcCE'J,~> -V#LDpJcG6>!!%TMn,E@fJcCE'J,~> -V#LDpJcG6>!!%TMn,E@fJcCE'J,~> -V>gMqJcG3=!!%TMmf*7eJcCH(J,~> -V>gMqJcG3=!!%TMmf*7eJcCH(J,~> -V>gMqJcG3=!!%TMmf*7eJcCH(J,~> -VuQbsJcG0 -VuQbsJcG0 -VuQbsJcG0 -W;chtJcG*:!!%TMli-qbJcCQ+J,~> -W;chtJcG*:!!%TMli-qbJcCQ+J,~> -W;chtJcG*:!!%TMli-qbJcCQ+J,~> -WW)quJcG'9!!%TMlMghaJcCT,J,~> -WW)quJcG'9!!%TMlMghaJcCT,J,~> -WW)quJcG'9!!%TMlMghaJcCT,J,~> -WrE&!JcG$8!!%TMl2L_`JcCW-J,~> -WrE&!JcG$8!!%TMl2L_`JcCW-J,~> -WrE&!JcG$8!!%TMl2L_`JcCW-J,~> -XT/;#JcG!7!!%TMkl:Y_JcC]/J,~> -XT/;#JcG!7!!%TMkl:Y_JcC]/J,~> -XT/;#JcG!7!!%TMkl:Y_JcC]/J,~> -XoAA$JcFp5!!%TMk5PD]JcC`0J,~> -XoAA$JcFp5!!%TMk5PD]JcC`0J,~> -XoAA$JcFp5!!%TMk5PD]JcC`0J,~> -Y5\J%JcFm4!!%TMjo5;\JcCc1J,~> -Y5\J%JcFm4!!%TMjo5;\JcCc1J,~> -Y5\J%JcFm4!!%TMjo5;\JcCc1J,~> -YQ"S&JcFj3!!%TMjSo2[JcCf2J,~> -YQ"S&JcFj3!!%TMjSo2[JcCf2J,~> -YQ"S&JcFj3!!%TMjSo2[JcCf2J,~> -Yl=\'JcFg2!!%TMj8T)ZJcCi3J,~> -Yl=\'JcFg2!!%TMj8T)ZJcCi3J,~> -Yl=\'JcFg2!!%TMj8T)ZJcCi3J,~> -Z2Xe(JcFd1!!%TMir8uYJcCl4J,~> -Z2Xe(JcFd1!!%TMir8uYJcCl4J,~> -Z2Xe(JcFd1!!%TMir8uYJcCl4J,~> -ZMsn)JcFa0!!%TMiVrlXJcCo5J,~> -ZMsn)JcFa0!!%TMiVrlXJcCo5J,~> -ZMsn)JcFa0!!%TMiVrlXJcCo5J,~> -Zi:"*JcF^/!!%TMi;WcWJcCr6J,~> -Zi:"*JcF^/!!%TMi;WcWJcCr6J,~> -Zi:"*JcF^/!!%TMi;WcWJcCr6J,~> -[K$7,JcF[.!!%TMhuE]VJcD#8J,~> -[K$7,JcF[.!!%TMhuE]VJcD#8J,~> -[K$7,JcF[.!!%TMhuE]VJcD#8J,~> -[f6=-JcFU,!!%TMh>[HTJcD&9J,~> -[f6=-JcFU,!!%TMh>[HTJcD&9J,~> -[f6=-JcFU,!!%TMh>[HTJcD&9J,~> -\,QF.JcFR+!!%TMh#@?SJcD):J,~> -\,QF.JcFR+!!%TMh#@?SJcD):J,~> -\,QF.JcFR+!!%TMh#@?SJcD):J,~> -\GlO/JcFO*!!%TMg]%6RJcD,;J,~> -\GlO/JcFO*!!%TMg]%6RJcD,;J,~> -\GlO/JcFO*!!%TMg]%6RJcD,;J,~> -\c2X0JcFL)!!%TMgA_-QJcD/ -\c2X0JcFL)!!%TMgA_-QJcD/ -\c2X0JcFL)!!%TMgA_-QJcD/ -])Ma1JcFI(!!%TMg&D$PJcD2=J,~> -])Ma1JcFI(!!%TMg&D$PJcD2=J,~> -])Ma1JcFI(!!%TMg&D$PJcD2=J,~> -]Dhj2JcFF'!!%TMf`(pOJcD5>J,~> -]Dhj2JcFF'!!%TMf`(pOJcD5>J,~> -]Dhj2JcFF'!!%TMf`(pOJcD5>J,~> -]`.s3JcFC&!!%TMfDbgNJcD8?J,~> -]`.s3JcFC&!!%TMfDbgNJcD8?J,~> -]`.s3JcFC&!!%TMfDbgNJcD8?J,~> -^&J'4JcF@%!!%TMf)G^MJcD;@J,~> -^&J'4JcF@%!!%TMf)G^MJcD;@J,~> -^&J'4JcF@%!!%TMf)G^MJcD;@J,~> -^Ae05JcF=$!!%TMec,ULJcD>AJ,~> -^Ae05JcF=$!!%TMec,ULJcD>AJ,~> -^Ae05JcF=$!!%TMec,ULJcD>AJ,~> -^]+96JcF:#!!%TMeGfLKJcDABJ,~> -^]+96JcF:#!!%TMeGfLKJcDABJ,~> -^]+96JcF:#!!%TMeGfLKJcDABJ,~> -_#FB7JcF7"!!%TMe,KCJJcDDCJ,~> -_#FB7JcF7"!!%TMe,KCJJcDDCJ,~> -_#FB7JcF7"!!%TMe,KCJJcDDCJ,~> -_>aK8JcF4!!!%TMdf0:IJcDGDJ,~> -_>aK8JcF4!!!%TMdf0:IJcDGDJ,~> -_>aK8JcF4!!!%TMdf0:IJcDGDJ,~> -_>aK8JcF4!!!%TMdf0:IJcDGDJ,~> -_>aK8JcF4!!!%TMdf0:IJcDGDJ,~> -_>aK8JcF4!!!%TMdf0:IJcDGDJ,~> -_Z'T9JcF0u!!%TMdJj1HJcDJEJ,~> -_Z'T9JcF0u!!%TMdJj1HJcDJEJ,~> -_Z'T9JcF0u!!%TMdJj1HJcDJEJ,~> -_uB]:JcF-t!!%TMd/O(GJcDMFJ,~> -_uB]:JcF-t!!%TMd/O(GJcDMFJ,~> -_uB]:JcF-t!!%TMd/O(GJcDMFJ,~> -`;]f;JcF*s!!%TMci3tFJcDPGJ,~> -`;]f;JcF*s!!%TMci3tFJcDPGJ,~> -`;]f;JcF*s!!%TMci3tFJcDPGJ,~> -`W#o -`W#o -`W#o -`r?#=JcF$q!!%TMc2RbDJcDVIJ,~> -`r?#=JcF$q!!%TMc2RbDJcDVIJ,~> -`r?#=JcF$q!!%TMc2RbDJcDVIJ,~> -a8Z,>JcF!p!!%TMbl7YCJcDYJJ,~> -a8Z,>JcF!p!!%TMbl7YCJcDYJJ,~> -a8Z,>JcF!p!!%TMbl7YCJcDYJJ,~> -aSu5?JcEso!!%TMbPqPBJcD\KJ,~> -aSu5?JcEso!!%TMbPqPBJcD\KJ,~> -aSu5?JcEso!!%TMbPqPBJcD\KJ,~> -ao;>@JcEpn!!%TMb5VGAJcD_LJ,~> -ao;>@JcEpn!!%TMb5VGAJcD_LJ,~> -ao;>@JcEpn!!%TMb5VGAJcD_LJ,~> -ao;>@JcEpn!!%TMb5VGAJcD_LJ,~> -ao;>@JcEpn!!%TMb5VGAJcD_LJ,~> -ao;>@JcEpn!!%TMb5VGAJcD_LJ,~> -b5VGAJcEmm!!%TMao;>@JcDbMJ,~> -b5VGAJcEmm!!%TMao;>@JcDbMJ,~> -b5VGAJcEmm!!%TMao;>@JcDbMJ,~> -bPqPBJcEjl!!%TMaSu5?JcDeNJ,~> -bPqPBJcEjl!!%TMaSu5?JcDeNJ,~> -bPqPBJcEjl!!%TMaSu5?JcDeNJ,~> -bl7YCJcEgk!!%TMa8Z,>JcDhOJ,~> -bl7YCJcEgk!!%TMa8Z,>JcDhOJ,~> -bl7YCJcEgk!!%TMa8Z,>JcDhOJ,~> -c2RbDJcEdj!!%TM`r?#=JcDkPJ,~> -c2RbDJcEdj!!%TM`r?#=JcDkPJ,~> -c2RbDJcEdj!!%TM`r?#=JcDkPJ,~> -c2RbDJcEdj!!%TM`r?#=JcDkPJ,~> -c2RbDJcEdj!!%TM`r?#=JcDkPJ,~> -c2RbDJcEdj!!%TM`r?#=JcDkPJ,~> -cMmkEJcEai!!%TM`W#o -cMmkEJcEai!!%TM`W#o -cMmkEJcEai!!%TM`W#o -ci3tFJcE^h!!%TM`;]f;JcDqRJ,~> -ci3tFJcE^h!!%TM`;]f;JcDqRJ,~> -ci3tFJcE^h!!%TM`;]f;JcDqRJ,~> -d/O(GJcE[g!!%TM_uB]:JcDtSJ,~> -d/O(GJcE[g!!%TM_uB]:JcDtSJ,~> -d/O(GJcE[g!!%TM_uB]:JcDtSJ,~> -d/O(GJcE[g!!%TM_uB]:JcDtSJ,~> -d/O(GJcE[g!!%TM_uB]:JcDtSJ,~> -d/O(GJcE[g!!%TM_uB]:JcDtSJ,~> -dJj1HJcEXf!!%TM_Z'T9JcE"TJ,~> -dJj1HJcEXf!!%TM_Z'T9JcE"TJ,~> -dJj1HJcEXf!!%TM_Z'T9JcE"TJ,~> -df0:IJcEUe!!%TM_>aK8JcE%UJ,~> -df0:IJcEUe!!%TM_>aK8JcE%UJ,~> -df0:IJcEUe!!%TM_>aK8JcE%UJ,~> -e,KCJJcERd!!%TM_#FB7JcE(VJ,~> -e,KCJJcERd!!%TM_#FB7JcE(VJ,~> -e,KCJJcERd!!%TM_#FB7JcE(VJ,~> -e,KCJJcERd!!%TM_#FB7JcE(VJ,~> -e,KCJJcERd!!%TM_#FB7JcE(VJ,~> -e,KCJJcERd!!%TM_#FB7JcE(VJ,~> -eGfLKJcEOc!!%TM^]+96JcE+WJ,~> -eGfLKJcEOc!!%TM^]+96JcE+WJ,~> -eGfLKJcEOc!!%TM^]+96JcE+WJ,~> -ec,ULJcELb!!%TM^Ae05JcE.XJ,~> -ec,ULJcELb!!%TM^Ae05JcE.XJ,~> -ec,ULJcELb!!%TM^Ae05JcE.XJ,~> -f)G^MJcEIa!!%TM^&J'4JcE1YJ,~> -f)G^MJcEIa!!%TM^&J'4JcE1YJ,~> -f)G^MJcEIa!!%TM^&J'4JcE1YJ,~> -f)G^MJcEIa!!%TM^&J'4JcE1YJ,~> -f)G^MJcEIa!!%TM^&J'4JcE1YJ,~> -f)G^MJcEIa!!%TM^&J'4JcE1YJ,~> -fDbgNJcEF`!!%TM]`.s3JcE4ZJ,~> -fDbgNJcEF`!!%TM]`.s3JcE4ZJ,~> -fDbgNJcEF`!!%TM]`.s3JcE4ZJ,~> -f`(pOJcEC_!!%TM]Dhj2JcE7[J,~> -f`(pOJcEC_!!%TM]Dhj2JcE7[J,~> -f`(pOJcEC_!!%TM]Dhj2JcE7[J,~> -f`(pOJcEC_!!%TM]Dhj2JcE7[J,~> -f`(pOJcEC_!!%TM]Dhj2JcE7[J,~> -f`(pOJcEC_!!%TM]Dhj2JcE7[J,~> -g&D$PJcE@^!!%TM])Ma1JcE:\J,~> -g&D$PJcE@^!!%TM])Ma1JcE:\J,~> -g&D$PJcE@^!!%TM])Ma1JcE:\J,~> -gA_-QJcE=]!!%TM\c2X0JcE=]J,~> -gA_-QJcE=]!!%TM\c2X0JcE=]J,~> -gA_-QJcE=]!!%TM\c2X0JcE=]J,~> -gA_-QJcE=]!!%TM\c2X0JcE=]J,~> -gA_-QJcE=]!!%TM\c2X0JcE=]J,~> -gA_-QJcE=]!!%TM\c2X0JcE=]J,~> -g]%6RhuEQRJcF^/!!%TM\GlO/JcE@^J,~> -g]%6RhuEQRJcF^/!!%TM\GlO/JcE@^J,~> -g]%6RhuEQRJcF^/!!%TM\GlO/JcE@^J,~> -h#@?Sjo>>\!ri6#rr2rurr;uuJcFa0!!%TM\,QF.JcEC_J,~> -h#@?Sjo>>\!ri6#rr2rurr;uuJcFa0!!%TM\,QF.JcEC_J,~> -h#@?Sjo>>\!ri6#rr2rurr;uuJcFa0!!%TM\,QF.JcEC_J,~> -h#@?SjSo8]rrE#t!!)ut!!%TMir8uYJcE4Z!!%TM]`3K~> -h#@?SjSo8]rrE#t!!)ut!!%TMir8uYJcE4Z!!%TM]`3K~> -h#@?SjSo8]rrE#t!!)ut!!%TMir8uYJcE4Z!!%TM]`3K~> -h>[HTir8uYr;Q`srr;uuJcFa0!!%TM[f6=-JcEF`J,~> -h>[HTir8uYr;Q`srr;uuJcFa0!!%TM[f6=-JcEF`J,~> -h>[HTir8uYr;Q`srr;uuJcFa0!!%TM[f6=-JcEF`J,~> -h>[HTj8T/\rrE#tquD -h>[HTj8T/\rrE#tquD -h>[HTj8T/\rrE#tquD -hZ!QUj8],Z!ri6#rr2rurr;uuJcFa0!!%TM[Jp4,JcEIaJ,~> -hZ!QUj8],Z!ri6#rr2rurr;uuJcFa0!!%TM[Jp4,JcEIaJ,~> -hZ!QUj8],Z!ri6#rr2rurr;uuJcFa0!!%TM[Jp4,JcEIaJ,~> -hu -hu -hu -hu -hu -hu -i;WcWg&D$Prr;uuJcFa0!!%TMZi:"*JcEOcJ,~> -i;WcWg&D$Prr;uuJcFa0!!%TMZi:"*JcEOcJ,~> -i;WcWg&D$Prr;uuJcFa0!!%TMZi:"*JcEOcJ,~> -i;WcWgAh$MJcF^/!!%TMZi:"*JcEOcJ,~> -i;WcWgAh$MJcF^/!!%TMZi:"*JcEOcJ,~> -i;WcWgAh$MJcF^/!!%TMZi:"*JcEOcJ,~> -iVrlXJcE(V!!%TMZMsn)JcERdJ,~> -iVrlXJcE(V!!%TMZMsn)JcERdJ,~> -iVrlXJcE(V!!%TMZMsn)JcERdJ,~> -ir8uYJcE%U!!%TMZ2Xe(JcEUeJ,~> -ir8uYJcE%U!!%TMZ2Xe(JcEUeJ,~> -ir8uYJcE%U!!%TMZ2Xe(JcEUeJ,~> -ir8uYJcE%U!!%TMZ2Xe(JcEUeJ,~> -ir8uYJcE%U!!%TMZ2Xe(JcEUeJ,~> -ir8uYJcE%U!!%TMZ2Xe(JcEUeJ,~> -j8T)ZJcE"T!!%TMYl=\'JcEXfJ,~> -j8T)ZJcE"T!!%TMYl=\'JcEXfJ,~> -j8T)ZJcE"T!!%TMYl=\'JcEXfJ,~> -j8T)ZJcE"T!!%TMYl=\'JcEXfJ,~> -j8T)ZJcE"T!!%TMYl=\'JcEXfJ,~> -j8T)ZJcE"T!!%TMYl=\'JcEXfJ,~> -jSo2[JcDtS!!%TMYQ"S&JcE[gJ,~> -jSo2[JcDtS!!%TMYQ"S&JcE[gJ,~> -jSo2[JcDtS!!%TMYQ"S&JcE[gJ,~> -jSo2[JcDtS!!%TMYQ"S&JcE[gJ,~> -jSo2[JcDtS!!%TMYQ"S&JcE[gJ,~> -jSo2[JcDtS!!%TMYQ"S&JcE[gJ,~> -jo5;\JcDqR!!%TMY5\J%JcE^hJ,~> -jo5;\JcDqR!!%TMY5\J%JcE^hJ,~> -jo5;\JcDqR!!%TMY5\J%JcE^hJ,~> -jo5;\JcDqR!!%TMY5\J%JcE^hJ,~> -jo5;\JcDqR!!%TMY5\J%JcE^hJ,~> -jo5;\JcDqR!!%TMY5\J%JcE^hJ,~> -k5PD]JcDnQ!!%TMXoAA$JcEaiJ,~> -k5PD]JcDnQ!!%TMXoAA$JcEaiJ,~> -k5PD]JcDnQ!!%TMXoAA$JcEaiJ,~> -kPkM^JcDkP!!%TMXT&8#JcEdjJ,~> -kPkM^JcDkP!!%TMXT&8#JcEdjJ,~> -kPkM^JcDkP!!%TMXT&8#JcEdjJ,~> -kPkM^JcDkP!!%TMXT&8#JcEdjJ,~> -kPkM^JcDkP!!%TMXT&8#JcEdjJ,~> -kPkM^JcDkP!!%TMXT&8#JcEdjJ,~> -kl1V_JcDhO!!%TMX8`/"JcEgkJ,~> -kl1V_JcDhO!!%TMX8`/"JcEgkJ,~> -kl1V_JcDhO!!%TMX8`/"JcEgkJ,~> -kl1V_JcDhO!!%TMX8`/"JcEgkJ,~> -kl1V_JcDhO!!%TMX8`/"JcEgkJ,~> -kl1V_JcDhO!!%TMX8`/"JcEgkJ,~> -l2L_`JcDeN!!%TMWrE&!JcEjlJ,~> -l2L_`JcDeN!!%TMWrE&!JcEjlJ,~> -l2L_`JcDeN!!%TMWrE&!JcEjlJ,~> -l2L_`JcDeN!!%TMWrE&!JcEjlJ,~> -l2L_`JcDeN!!%TMWrE&!JcEjlJ,~> -l2L_`JcDeN!!%TMWrE&!JcEjlJ,~> -l2L_`JcDeN!!%TMWrE&!JcEjlJ,~> -l2L_`JcDeN!!%TMWrE&!JcEjlJ,~> -l2L_`JcDeN!!%TMWrE&!JcEjlJ,~> -lMghaJcDbM!!%TMWW)quJcEmmJ,~> -lMghaJcDbM!!%TMWW)quJcEmmJ,~> -lMghaJcDbM!!%TMWW)quJcEmmJ,~> -lMghaJcDbM!!%TMWW)quJcEmmJ,~> -lMghaJcDbM!!%TMWW)quJcEmmJ,~> -lMghaJcDbM!!%TMWW)quJcEmmJ,~> -li-qbJcD_L!!%TMW;chtJcEpnJ,~> -li-qbJcD_L!!%TMW;chtJcEpnJ,~> -li-qbJcD_L!!%TMW;chtJcEpnJ,~> -li-qbJcD_L!!%TMW;chtJcEpnJ,~> -li-qbJcD_L!!%TMW;chtJcEpnJ,~> -li-qbJcD_L!!%TMW;chtJcEpnJ,~> -m/I%cJcD\K!!%TMVuH_sJcEsoJ,~> -m/I%cJcD\K!!%TMVuH_sJcEsoJ,~> -m/I%cJcD\K!!%TMVuH_sJcEsoJ,~> -m/I%cJcD\K!!%TMVuH_sJcEsoJ,~> -m/I%cJcD\K!!%TMVuH_sJcEsoJ,~> -m/I%cJcD\K!!%TMVuH_sJcEsoJ,~> -mJd.dJcDYJ!!%TMVZ-VrJcF!pJ,~> -mJd.dJcDYJ!!%TMVZ-VrJcF!pJ,~> -mJd.dJcDYJ!!%TMVZ-VrJcF!pJ,~> -mJd.dJcDYJ!!%TMVZ-VrJcF!pJ,~> -mJd.dJcDYJ!!%TMVZ-VrJcF!pJ,~> -mJd.dJcDYJ!!%TMVZ-VrJcF!pJ,~> -mf*7eJcDVI!!%TMV>gMqJcF$qJ,~> -mf*7eJcDVI!!%TMV>gMqJcF$qJ,~> -mf*7eJcDVI!!%TMV>gMqJcF$qJ,~> -mf*7eJcDVI!!%TMV>gMqJcF$qJ,~> -mf*7eJcDVI!!%TMV>gMqJcF$qJ,~> -mf*7eJcDVI!!%TMV>gMqJcF$qJ,~> -mf*7eJcDVI!!%TMV>gMqJcF$qJ,~> -mf*7eJcDVI!!%TMV>gMqJcF$qJ,~> -mf*7eJcDVI!!%TMV>gMqJcF$qJ,~> -n,E@fJcDSH!!%TMV#LDpJcF'rJ,~> -n,E@fJcDSH!!%TMV#LDpJcF'rJ,~> -n,E@fJcDSH!!%TMV#LDpJcF'rJ,~> -n,E@fJcDSH!!%TMV#LDpJcF'rJ,~> -n,E@fJcDSH!!%TMV#LDpJcF'rJ,~> -n,E@fJcDSH!!%TMV#LDpJcF'rJ,~> -nG`IgJcDPG!!%TMU]1;omJe"'rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!JcG]KJ,~> -nG`IgJcDPG!!%TMU]1;omJe"'rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!JcG]KJ,~> -nG`IgJcDPG!!%TMU]1;omJe"'rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!JcG]KJ,~> -nG`IgJcDPG!!%TMU]1;oo`#*qrrE'!rrD6^"9AH%rr@]OJ,~> -nG`IgJcDPG!!%TMU]1;oo`#*qrrE'!rrD6^"9AH%rr@]OJ,~> -nG`IgJcDPG!!%TMU]1;oo`#*qrrE'!rrD6^"9AH%rr@]OJ,~> -nG`IgJcDPG!!%TMU]1;op\t9prrCdQ!W`6#L];l~> -nG`IgJcDPG!!%TMU]1;op\t9prrCdQ!W`6#L];l~> -nG`IgJcDPG!!%TMU]1;op\t9prrCdQ!W`6#L];l~> -nc&RhJcDMF!!%TMUAk2nqu6]trrCOJ!W`6#MuS;~> -nc&RhJcDMF!!%TMUAk2nqu6]trrCOJ!W`6#MuS;~> -nc&RhJcDMF!!%TMUAk2nqu6]trrCOJ!W`6#MuS;~> -nc&RhJcDMF!!%TMUAkAss8N*!!6kHE!<3%Zs*t~> -nc&RhJcDMF!!%TMUAkAss8N*!!6kHE!<3%Zs*t~> -nc&RhJcDMF!!%TMUAkAss8N*!!6kHE!<3%Zs*t~> -o)A[iJcDJE!!%TMU]:;n`W#u>rrA2]J,~> -o)A[iJcDJE!!%TMU]:;n`W#u>rrA2]J,~> -o)A[iJcDJE!!%TMU]:;n`W#u>rrA2]J,~> -o)A[iJcG$8!!'V1!!%TMV>pMp!WN/:rr<%^s*t~> -o)A[iJcG$8!!'V1!!%TMV>pMp!WN/:rr<%^s*t~> -o)A[iJcG$8!!'V1!!%TMV>pMp!WN/:rr<%^s*t~> -o)A[iJcGKErr<-#!!)ip!!'V1!!%TMW;lkt!:Kgc!!'h7!W`6#QN)I~> -o)A[iJcGKErr<-#!!)ip!!'V1!!%TMW;lhsrVlit_#FH9rrAAbJ,~> -o)A[iJcGKErr<-#!!)ip!!'V1!!%TMW;lhsrVlit_#FH9rrAAbJ,~> -oD\djJcGEC!W`6#q>UKrrrB\2!!%TMWrN%us8N)err3#e!5AI5!13_9~> -oD\djJcGEC!W`6#q>UKrrrB\2!!%TMWrN%us8N'!rr;uu^Ae05QiDR~> -oD\djJcGEC!W`6#q>UKrrrB\2!!%TMWrN%us8N'!rr;uu^Ae05QiDR~> -oD\djJcGBB!!)fo!W`6#]Dhj2JcDhOrW)os"n)EYmf*:#rrN3#!1Nq<~> -oD\djJcGBB!!)fo!W`6#]Dhj2JcDhOrW)os"T\Q&!<3&4rrN3#!1Nq<~> -oD\djJcGBB!!)fo!W`6#]Dhj2JcDhOrW)os"T\Q&!<3&4rrN3#!1Nq<~> -oD\djJcGEC!W`6#qYpNqrr2ru]`.s3JcDnQrW)fp!:Kjd!!'V1!!&MgJ,~> -oD\djJcGEC!W`6#qYpNqrr2ru]`.s3JcDnQrW)fp!!*#u!!'V1!!&MgJ,~> -oD\djJcGEC!W`6#qYpNqrr2ru]`.s3JcDnQrW)fp!!*#u!!'V1!!&MgJ,~> -o`"mkJcGECrr<-#!!)or!!*#u!!'\3!!%TMYQ+V&oD\dj])Ma1SH"*~> -o`"mkJcGECrr<-#!!)or!!*#u!!'\3!!%TMYQ+V&oD\dj])Ma1SH"*~> -o`"mkJcGECrr<-#!!)or!!*#u!!'\3!!%TMYQ+V&oD\dj])Ma1SH"*~> -o`"mkJcG$8quFD0!!%TMec5IGrVufrm/R(cnc&Rh\GlO/T)X<~> -o`"mkJcG$8quFD0!!%TMec5IGrVufrm/R(cnc&Rh\GlO/T)X<~> -o`"mkJcG$8quFD0!!%TMec5IGrVufrm/R(cnc&Rh\GlO/T)X<~> -o`"mkJcG'9!!)rs!!'_4!!%TMe,KCJrr;uus8N'!rr;uun,N@enG`Ig[f6=-T`9N~> -o`"mkJcG'9!!)rs!!'_4!!%TMe,KCJrr;uus8N'!rr;uun,N@enG`Ig[f6=-T`9N~> -o`"mkJcG'9!!)rs!!'_4!!%TMe,KCJrr;uus8N'!rr;uun,N@enG`Ig[f6=-T`9N~> -p&>!lJcG$8!!)rs!!'_4!!%TMe,KCJrVlitqYpNqnGiLgmJd.d[f6=-U&TW~> -p&>!lJcG$8!!)rs!!'_4!!%TMe,KCJrVlitqYpNqnGiLgmJd.d[f6=-U&TW~> -p&>!lJcG$8!!)rs!!'_4!!%TMe,KCJrVlitqYpNqnGiLgmJd.d[f6=-U&TW~> -p&>!lJcG'9rW)rtrW'\4!!%TMe,KCJr;Q`sr;Q`snc/Uhli-qb[/U++U]5i~> -p&>!lJcG'9rW)rtrW'\4!!%TMe,KCJr;Q`sr;Q`snc/Uhli-qb[/U++U]5i~> -p&>!lJcG'9rW)rtrW'\4!!%TMe,KCJr;Q`sr;Q`snc/Uhli-qb[/U++U]5i~> -p&>!lJcDAB!!%TMe,KCJr;Q`srr;uunc/UhlMghaZi:"*V#Pr~> -p&>!lJcDAB!!%TMe,KCJr;Q`srr;uunc/UhlMghaZi:"*V#Pr~> -p&>!lJcDAB!!%TMe,KCJr;Q`srr;uunc/UhlMghaZi:"*V#Pr~> -pAY*mJcD>A!!%TMe,KCJr;Q`srr;rtoD\djkPkM^ZMsn)VZ2/~> -pAY*mJcD>A!!%TMe,KCJr;Q`srr;rtoD\djkPkM^ZMsn)VZ2/~> -pAY*mJcD>A!!%TMe,KCJr;Q`srr;rtoD\djkPkM^ZMsn)VZ2/~> -pAY*mJcD>A!!%TMe,KCJr;Q`squ6WrpAb-mk5PD]Z2Xe(VuM8~> -pAY*mJcD>A!!%TMe,KCJr;Q`squ6WrpAb-mk5PD]Z2Xe(VuM8~> -pAY*mJcD>A!!%TMe,KCJr;Q`squ6WrpAb-mk5PD]Z2Xe(VuM8~> -pAY*mJcD>A!!%TMe,KCJrVlitqYpNqp](6njo5;\Yl=\'W;hA~> -pAY*mJcD>A!!%TMe,KCJrVlitqYpNqp](6njo5;\Yl=\'W;hA~> -pAY*mJcD>A!!%TMe,KCJrVlitqYpNqp](6njo5;\Yl=\'W;hA~> -p\t3nJcD;@!!%TMe,KCJrr;uus8W*!s8W*!q#C?oj8T)ZYQ"S&WrIS~> -p\t3nJcD;@!!%TMe,KCJrr;uus8W*!s8W*!q#C?oj8T)ZYQ"S&WrIS~> -p\t3nJcD;@!!%TMe,KCJrr;uus8W*!s8W*!q#C?oj8T)ZYQ"S&WrIS~> -p\t3nJcD;@!!%TMec5IGrVufrq#C?oir8uYXoAA$XT*e~> -p\t3nJcD;@!!%TMec5IGrVufrq#C?oir8uYXoAA$XT*e~> -p\t3nJcD;@!!%TMec5IGrVufrq#C?oir8uYXoAA$XT*e~> -p\t3nJcD;@!!%TM^Ae05i;WcWXT&8#XoEn~> -p\t3nJcD;@!!%TM^Ae05i;WcWXT&8#XoEn~> -p\t3nJcD;@!!%TM^Ae05i;WcWXT&8#XoEn~> -q#: -q#: -q#: -q#:jN8h>[HTX8`/"YQ'+~> -q#:jN8h>[HTX8`/"YQ'+~> -q#:jN8h>[HTX8`/"YQ'+~> -q#: -q#: -q#: -q#: -q#: -q#: -q>UEpJcD5>!!%TM`;fi;g&D$PWW)quZN#F~> -q>UEpJcD5>!!%TM`;fi;g&D$PWW)quZN#F~> -q>UEpJcD5>!!%TM`;fi;g&D$PWW)quZN#F~> -q>UEpJcD5>!!%TM`;]f;f`(pOW;chtZi>O~> -q>UEpJcD5>!!%TM`;]f;f`(pOW;chtZi>O~> -q>UEpJcD5>!!%TM`;]f;f`(pOW;chtZi>O~> -q>UEpJcD5>!!%TM`rH&=fDbgNVuH_s[/YX~> -q>UEpJcD5>!!%TM`rH&=fDbgNVuH_s[/YX~> -q>UEpJcD5>!!%TM`rH&=fDbgNVuH_s[/YX~> -q>UEpJcD5>!!%TM`r?#=f)G^MVZ-Vr[Jta~> -q>UEpJcD5>!!%TM`r?#=f)G^MVZ-Vr[Jta~> -q>UEpJcD5>!!%TM`r?#=f)G^MVZ-Vr[Jta~> -qYpNqJcD2=!!%TMa8Z,>eGfLKVZ-Vr[f:j~> -qYpNqJcD2=!!%TMa8Z,>eGfLKVZ-Vr[f:j~> -qYpNqJcD2=!!%TMa8Z,>eGfLKVZ-Vr[f:j~> -qYpNqJcD2=!!%TMaSu5?e,KCJV>gMq\,Us~> -qYpNqJcD2=!!%TMaSu5?e,KCJV>gMq\,Us~> -qYpNqJcD2=!!%TMaSu5?e,KCJV>gMq\,Us~> -qYpNqJcD2=!!%TMaoDA@e,KCJJcFI(J,~> -qYpNqJcD2=!!%TMaoDA@e,KCJJcFI(J,~> -qYpNqJcD2=!!%TMaoDA@e,KCJJcFI(J,~> -qYpNqJcD2=!!%TMb5_JAdf0:IV#LDp\Gq'~> -qYpNqJcD2=!!%TMb5_JAdf0:IV#LDp\Gq'~> -qYpNqJcD2=!!%TMb5_JAdf0:IV#LDp\Gq'~> -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -r;Q`sJcD,;!!%TMc2RbDbl7YCU]1;o]DmB~> -r;Q`sJcD,;!!%TMc2RbDbl7YCU]1;o]DmB~> -r;Q`sJcD,;!!%TMc2RbDbl7YCU]1;o]DmB~> -r;Q`sJcD,;!!%TMcMmkEbPqPBUAk2n]`3K~> -r;Q`sJcD,;!!%TMcMmkEbPqPBUAk2n]`3K~> -r;Q`sJcD,;!!%TMcMmkEbPqPBUAk2n]`3K~> -r;Q`sJcD,;!!%TMcMmkEbPqPBU&P)m^&NT~> -r;Q`sJcD,;!!%TMcMmkEbPqPBU&P)m^&NT~> -r;Q`sJcD,;!!%TMcMmkEbPqPBU&P)m^&NT~> -r;Q`sJcD,;!!%TMci3tFb5VGAT`4ul^Ai]~> -r;Q`sJcD,;!!%TMci3tFb5VGAT`4ul^Ai]~> -r;Q`sJcD,;!!%TMci3tFb5VGAT`4ul^Ai]~> -r;Q`sJcD,;!!%TMd/X+Gb5VGAJcFO*J,~> -r;Q`sJcD,;!!%TMd/X+Gb5VGAJcFO*J,~> -r;Q`sJcD,;!!%TMd/X+Gb5VGAJcFO*J,~> -rVlitJcD):!!%TMd/O(GaSu5?T`4ul^]/f~> -rVlitJcD):!!%TMd/O(GaSu5?T`4ul^]/f~> -rVlitJcD):!!%TMd/O(GaSu5?T`4ul^]/f~> -rVlitJcD):!!%TMdJj1Ha8Z,>TDnlk_#Jo~> -rVlitJcD):!!%TMdJj1Ha8Z,>TDnlk_#Jo~> -rVlitJcD):!!%TMdJj1Ha8Z,>TDnlk_#Jo~> -rVlitJcD):!!%TMdJj1Ha8Z,>JcFR+J,~> -rVlitJcD):!!%TMdJj1Ha8Z,>JcFR+J,~> -rVlitJcD):!!%TMdJj1Ha8Z,>JcFR+J,~> -rVlitJcD):!!%TMdf0:I`r?#=TDnlk_#Jo~> -rVlitJcD):!!%TMdf0:I`r?#=TDnlk_#Jo~> -rVlitJcD):!!%TMdf0:I`r?#=TDnlk_#Jo~> -rVlitJcD):!!%TMe,TFJ`r?#=T)Scj_>f#~> -rVlitJcD):!!%TMe,TFJ`r?#=T)Scj_>f#~> -rVlitJcD):!!%TMe,TFJ`r?#=T)Scj_>f#~> -rr2ruJcD&9!!%TMe,KCJ`;]f;T)Scj_Z,,~> -rr2ruJcD&9!!%TMe,KCJ`;]f;T)Scj_Z,,~> -rr2ruJcD&9!!%TMe,KCJ`;]f;T)Scj_Z,,~> -rr2ruJcD&9!!%TMeGfLK_uB]:JcFU,J,~> -rr2ruJcD&9!!%TMeGfLK_uB]:JcFU,J,~> -rr2ruJcD&9!!%TMeGfLK_uB]:JcFU,J,~> -rr2ruJcD&9!!%TMeGfLK_uB]:T)Scj_Z,,~> -rr2ruJcD&9!!%TMeGfLK_uB]:T)Scj_Z,,~> -rr2ruJcD&9!!%TMeGfLK_uB]:T)Scj_Z,,~> -rr2ruJcD&9!!%TMec5XL_uB]:Sc8Zi_uG5~> -rr2ruJcD&9!!%TMec5XL_uB]:Sc8Zi_uG5~> -rr2ruJcD&9!!%TMec5XL_uB]:Sc8Zi_uG5~> -rr2ruJcD&9!!%TMec,UL_Z'T9SGrQh`;b>~> -rr2ruJcD&9!!%TMec,UL_Z'T9SGrQh`;b>~> -rr2ruJcD&9!!%TMec,UL_Z'T9SGrQh`;b>~> -rr2ruJcD&9!!%TMf)PaM_Z'T9JcFU,J,~> -rr2ruJcD&9!!%TMf)PaM_Z'T9JcFU,J,~> -rr2ruJcD&9!!%TMf)PaM_Z'T9JcFU,J,~> -s8N'!JcD#8!!%TMf)G^M_#FB7Sc8Zi`;b>~> -s8N'!JcD#8!!%TMf)G^M_#FB7Sc8Zi`;b>~> -s8N'!JcD#8!!%TMf)G^M_#FB7Sc8Zi`;b>~> -s8N'!JcD#8!!%TMf)G^M_#FB7JcFX-J,~> -s8N'!JcD#8!!%TMf)G^M_#FB7JcFX-J,~> -s8N'!JcD#8!!%TMf)G^M_#FB7JcFX-J,~> -s8N'!JcD#8!!%TMfDbgN^]+96SGrQh`W(G~> -s8N'!JcD#8!!%TMfDbgN^]+96SGrQh`W(G~> -s8N'!JcD#8!!%TMfDbgN^]+96SGrQh`W(G~> -s8N'!JcD#8!!%TMfDbgN^]+96S,WHg`rCP~> -s8N'!JcD#8!!%TMfDbgN^]+96S,WHg`rCP~> -s8N'!JcD#8!!%TMfDbgN^]+96S,WHg`rCP~> -s8N'!JcD#8!!%TMfDbgN^]+96JcFX-J,~> -s8N'!JcD#8!!%TMfDbgN^]+96JcFX-J,~> -s8N'!JcD#8!!%TMfDbgN^]+96JcFX-J,~> -s8N'!JcD#8!!%TMf`(pO^Ae05S,WHg`rCP~> -s8N'!JcD#8!!%TMf`(pO^Ae05S,WHg`rCP~> -s8N'!JcD#8!!%TMf`(pO^Ae05S,WHg`rCP~> -s8N'!JcD#8!!%TMf`(pO^Ae05JcFX-J,~> -s8N'!JcD#8!!%TMf`(pO^Ae05JcFX-J,~> -s8N'!JcD#8!!%TMf`(pO^Ae05JcFX-J,~> -s8N'!JcD#8!!%TMg&M'P^Ae05Rf -s8N'!JcD#8!!%TMg&M'P^Ae05Rf -s8N'!JcD#8!!%TMg&M'P^Ae05Rf -!WN.Ns-3N`!.k1'rr<&3rr<%Ms5 -!WN.Ns-3N`!.k1'rr<&3rr<%Ms5 -!WN.Ns-3N`!.k1'rr<&3rr<%Ms5 -!WN.Ns-3N`!.k1'rr<&3rr<%frr<&?s*t~> -!WN.Ns-3N`!.k1'rr<&3rr<%frr<&?s*t~> -!WN.Ns-3N`!.k1'rr<&3rr<%frr<&?s*t~> -!WN.Ns-3N`!.k1'rr<&3rr<%Ms5 -!WN.Ns-3N`!.k1'rr<&3rr<%Ms5 -!WN.Ns-3N`!.k1'rr<&3rr<%Ms5 -!WN.Ns-3N`!.k1(rr<&2rr<%frr<&?s*t~> -!WN.Ns-3N`!.k1(rr<&2rr<%frr<&?s*t~> -!WN.Ns-3N`!.k1(rr<&2rr<%frr<&?s*t~> -!WN.Ns-3N`!.k1(rr<&2rr<%Ms5 -!WN.Ns-3N`!.k1(rr<&2rr<%Ms5 -!WN.Ns-3N`!.k1(rr<&2rr<%Ms5 -!WN.Ns-3N`!.k1(rr<&2rr<%err<&@s*t~> -!WN.Ns-3N`!.k1(rr<&2rr<%err<&@s*t~> -!WN.Ns-3N`!.k1(rr<&2rr<%err<&@s*t~> -!WN.Ns-3N`!.k1(rr<&2rr<%Ms5 -!WN.Ns-3N`!.k1(rr<&2rr<%Ms5 -!WN.Ns-3N`!.k1(rr<&2rr<%Ms5 -!WN.Ns-3N`!.k1)rr<&1rr<%err<&@s*t~> -!WN.Ns-3N`!.k1)rr<&1rr<%err<&@s*t~> -!WN.Ns-3N`!.k1)rr<&1rr<%err<&@s*t~> -!WN.Ns-3N`!.k1)rr<&1rr<%Ms5 -!WN.Ns-3N`!.k1)rr<&1rr<%Ms5 -!WN.Ns-3N`!.k1)rr<&1rr<%Ms5 -!WN.Ns-3N`!.k1)rr<&1rr<%drr<&As*t~> -!WN.Ns-3N`!.k1)rr<&1rr<%drr<&As*t~> -!WN.Ns-3N`!.k1)rr<&1rr<%drr<&As*t~> -!WN.Ns-3N`!.k1)rr<&1rr<%Ms5 -!WN.Ns-3N`!.k1)rr<&1rr<%Ms5 -!WN.Ns-3N`!.k1)rr<&1rr<%Ms5 -!WN.Ns-3N`!.k1)rr<&1rr<%drr<&As*t~> -!WN.Ns-3N`!.k1)rr<&1rr<%drr<&As*t~> -!WN.Ns-3N`!.k1)rr<&1rr<%drr<&As*t~> -!!%TMPQ(U_JcFO*!!'P/!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!'P/!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!'P/!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!'P/!!&Ge!!(1AJ,~> -!!%TMPQ(U_JcFO*!!'P/!!&Ge!!(1AJ,~> -!!%TMPQ(U_JcFO*!!'P/!!&Ge!!(1AJ,~> -!!%TMPQ(U_JcFO*!!'P/!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFO*!!'P/!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFO*!!'P/!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFO*!!'P/!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!'P/!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!'P/!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!'P/!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFO*!!'P/!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFO*!!'P/!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFO*!!'P/!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!'P/!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!'P/!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!'P/!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFO*!!'P/!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFO*!!'P/!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+rrBS/!!%TMiW"E~> -!!%TMPQ(U_JcFR+rrBS/!!%TMiW"E~> -!!%TMPQ(U_JcFR+rrBS/!!%TMiW"E~> -!!%TMPQ(U_JcFR+!!'M.!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!'M.!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!'M.!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!'M.!!%TMiW"E~> -!!%TMPQ(U_JcFR+!!'M.!!%TMiW"E~> -!!%TMPQ(U_JcFR+!!'M.!!%TMiW"E~> -!!%TMPQ(U_JcFR+!!'M.!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!'M.!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!'M.!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!'M.!!%TMiW"E~> -!!%TMPQ(U_JcFR+!!'M.!!%TMiW"E~> -!!%TMPQ(U_JcFR+!!'M.!!%TMiW"E~> -!!%TMPQ(U_JcFR+!!'M.!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!'M.!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!'M.!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!'M.!!%TMiW"E~> -!!%TMPQ(U_JcFR+!!'M.!!%TMiW"E~> -!!%TMPQ(U_JcFR+!!'M.!!%TMiW"E~> -!!%TMPQ(U_JcFR+!!'M.!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!'M.!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!'M.!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!'M.!!%TMiW"E~> -!!%TMPQ(U_JcFR+!!'M.!!%TMiW"E~> -!!%TMPQ(U_JcFR+!!'M.!!%TMiW"E~> -!!%TMPQ(U_JcFR+!!'M.!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!'M.!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!'M.!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!'q:p](<^rW%NLiW"E~> -!!%TMPQ(U_JcFR+!!'q:oDjIBiW"E~> -!!%TMPQ(U_JcFR+!!'q:oDjIBiW"E~> -!!%TMPQ(U_JcFR+!!(=Ep&Omf"7H3h!1 -!!%TMPQ(U_JcFR+!!(=Ep&Omf!s&B$!1 -!!%TMPQ(U_JcFR+!!(=Ep&Omf!s&B$!1 -!!%TMPQ(U_JcFR+!!(RLq>fp_"7H3h!.k1/s*t~> -!!%TMPQ(U_JcFR+!!(RLq>fp_!s&B$!.k1/s*t~> -!!%TMPQ(U_JcFR+!!(RLq>fp_!s&B$!.k1/s*t~> -!!%TMPQ(U_JcFR+!!(gSq>f[XrU-'Q!!(4BJ,~> -!!%TMPQ(U_JcFR+!!(gSq>f[Xr;`5b!!(4BJ,~> -!!%TMPQ(U_JcFR+!!(gSq>f[Xr;`5b!!(4BJ,~> -!!%TMPQ(U_JcFR+!!)$YqZ,FO!!%TMiW"E~> -!!%TMPQ(U_JcFR+!!)$YqZ,FO!!%TMiW"E~> -!!%TMPQ(U_JcFR+!!)$YqZ,FO!!%TMiW"E~> -!!%TMPQ(U_JcFR+!!)0]r;bFK!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!)0]r;bFK!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFR+!!)0]r;bFK!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFO*!!)?br;b:G!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!)?br;b:G!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!)?br;b:G!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!)Kfr;b.C!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFO*!!)Kfr;b.C!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFO*!!)Kfr;b.C!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFO*!!)Wjr;b"?!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!)Wjr;b"?!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!)Wjr;b"?!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!)`mrW't -!!%TMPQ(U_JcFO*!!)`mrW't -!!%TMPQ(U_JcFO*!!)`mrW't -!!%TMPQ(U_JcFO*!!)orquFY7!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!)orquFY7!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!)orquFY7!!%TMiW"E~> -!!%TMPQ(U_JcFO*!!*#urW'\4!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFO*!!*#urW'\4!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFO*!!*#urW'\4!!&Dd!!(4BJ,~> -!!%TMPQ(U_JcFO*r;aJ0!!%TMiW"E~> -!!%TMPQ(U_JcFO*r;aJ0!!%TMiW"E~> -!!%TMPQ(U_JcFO*r;aJ0!!%TMiW"E~> -!WN.Ns-3N`!.k1,s8E#/rr<%drr<&As*t~> -!WN.Ns-3N`!.k1,s8E#/rr<%drr<&As*t~> -!WN.Ns-3N`!.k1,s8E#/rr<%drr<&As*t~> -!WN.Ns-3N`!.k1.s8N)urr<&1rr<%Ms5 -!WN.Ns-3N`!.k1.s8N)urr<&1rr<%Ms5 -!WN.Ns-3N`!.k1.s8N)urr<&1rr<%Ms5 -!WN.Ns-3N`!.k11s8E#rrr<&1rr<%drr<&As*t~> -!WN.Ns-3N`!.k11s8E#rrr<&1rr<%drr<&As*t~> -!WN.Ns-3N`!.k11s8E#rrr<&1rr<%drr<&As*t~> -!WN.Ns-3N`!.k14s8E#orr<&1rr<%Ms5 -!WN.Ns-3N`!.k14s8E#orr<&1rr<%Ms5 -!WN.Ns-3N`!.k14s8E#orr<&1rr<%Ms5 -!WN.Ns-3N`!.k16s8N)mrr<&1rr<%drr<&As*t~> -!WN.Ns-3N`!.k16s8N)mrr<&1rr<%drr<&As*t~> -!WN.Ns-3N`!.k16s8N)mrr<&1rr<%drr<&As*t~> -!WN.Ns-3N`!.k19s8E#jrr<&1rr<%err<&@s*t~> -!WN.Ns-3N`!.k19s8E#jrr<&1rr<%err<&@s*t~> -!WN.Ns-3N`!.k19s8E#jrr<&1rr<%err<&@s*t~> -!WN.Ns-3N`!.k1;s8N)grr<&2rr<%Ms5 -!WN.Ns-3N`!.k1;s8N)grr<&2rr<%Ms5 -!WN.Ns-3N`!.k1;s8N)grr<&2rr<%Ms5 -!WN.Ns-3N`!.k1=s8N)err<&2rr<%err<&@s*t~> -!WN.Ns-3N`!.k1=s8N)err<&2rr<%err<&@s*t~> -!WN.Ns-3N`!.k1=s8N)err<&2rr<%err<&@s*t~> -!WN.Ns-3N`!.k1@s8E#brr<&2rr<%frr<&?s*t~> -!WN.Ns-3N`!.k1@s8E#brr<&2rr<%frr<&?s*t~> -!WN.Ns-3N`!.k1@s8E#brr<&2rr<%frr<&?s*t~> -!WN.Ns-3N`!.k1Bs8N)`rr<&2rr<%Ms5 -!WN.Ns-3N`!.k1Bs8N)`rr<&2rr<%Ms5 -!WN.Ns-3N`!.k1Bs8N)`rr<&2rr<%Ms5 -!WN.Ns-3N`!.k1Ds8N)]rr<&3rr<%frr<&?s*t~> -!WN.Ns-3N`!.k1Ds8N)]rr<&3rr<%frr<&?s*t~> -!WN.Ns-3N`!.k1Ds8N)]rr<&3rr<%frr<&?s*t~> -!WN.Ns-3N`!.k1Fs8N)[rr<&3rr<%Ms5 -!WN.Ns-3N`!.k1Fs8N)[rr<&3rr<%Ms5 -!WN.Ns-3N`!.k1Fs8N)[rr<&3rr<%Ms5 -s8N'!JcD#8!!%TMqZ$Qqir8uY^&J'4Rf -s8N'!JcD#8!!%TMqZ$Qqir8uY^&J'4Rf -s8N'!JcD#8!!%TMqZ$Qqir8uY^&J'4Rf -s8N'!JcD#8!!%TMr;Zcshu -s8N'!JcD#8!!%TMr;Zcshu -s8N'!JcD#8!!%TMr;Zcshu -s8N'!JcD#8!!%TMrVlith>[HT^Ae05Rf -s8N'!JcD#8!!%TMrVlith>[HT^Ae05Rf -s8N'!JcD#8!!%TMrVlith>[HT^Ae05Rf -s8N'!JcD#8!!%TMs8W*!h#@?S^Ae05JcFX-J,~> -s8N'!JcD#8!!%TMs8W*!h#@?S^Ae05JcFX-J,~> -s8N'!JcD#8!!%TMs8W*!h#@?S^Ae05JcFX-J,~> -s8N'!JcD#8!!%TMrrCdQrrBh6!!&Mg!!(%=J,~> -s8N'!JcD#8!!%TMrrCdQrrBh6!!&Mg!!(%=J,~> -s8N'!JcD#8!!%TMrrCdQrrBh6!!&Mg!!(%=J,~> -s8N'!JcD#8!!%ZOrrC[N!!'e6!!%TMhuA3~> -s8N'!JcD#8!!%ZOrrC[N!!'e6!!%TMhuA3~> -s8N'!JcD#8!!%ZOrrC[N!!'e6!!%TMhuA3~> -s8N'!JcD#8!!%`QrrCUL!!'e6!!&Ph!!(" -s8N'!JcD#8!!%`QrrCUL!!'e6!!&Ph!!(" -s8N'!JcD#8!!%`QrrCUL!!'e6!!&Ph!!(" -s8N'!JcD#8!!%fSrrCLI!!'h7!!%TMhuA3~> -s8N'!JcD#8!!%fSrrCLI!!'h7!!%TMhuA3~> -s8N'!JcD#8!!%fSrrCLI!!'h7!!%TMhuA3~> -rr2ruJcD&9!!%iT!!(CG!!'k8!!&Mg!!(" -rr2ruJcD&9!!%iT!!(CG!!'k8!!&Mg!!(" -rr2ruJcD&9!!%iT!!(CG!!'k8!!&Mg!!(" -rr2ruJcD&9!!%oVrrC@E!!'n9!!&Ph!!'t;J,~> -rr2ruJcD&9!!%oVrrC@E!!'n9!!&Ph!!'t;J,~> -rr2ruJcD&9!!%oVrrC@E!!'n9!!&Ph!!'t;J,~> -rr2ruJcD&9!!%uXrrC:C!!'n9!!%TMhZ&*~> -rr2ruJcD&9!!%uXrrC:C!!'n9!!%TMhZ&*~> -rr2ruJcD&9!!%uXrrC:C!!'n9!!%TMhZ&*~> -rr2ruJcD&9!!&&ZrrC1@!!'q:!!&Si!!'q:J,~> -rr2ruJcD&9!!&&ZrrC1@!!'q:!!&Si!!'q:J,~> -rr2ruJcD&9!!&&ZrrC1@!!'q:!!&Si!!'q:J,~> -rr2ruJcD&9!!&)[!!((>!!'q:!!%TMhZ&*~> -rr2ruJcD&9!!&)[!!((>!!'q:!!%TMhZ&*~> -rr2ruJcD&9!!&)[!!((>!!'q:!!%TMhZ&*~> -rr2ruJcD&9!!&,\rrC+>!!'q:!!&Si!!'q:J,~> -rr2ruJcD&9!!&,\rrC+>!!'q:!!&Si!!'q:J,~> -rr2ruJcD&9!!&,\rrC+>!!'q:!!&Si!!'q:J,~> -rVlitJcD):!!&2^rrC";!!(" -rVlitJcD):!!&2^rrC";!!(" -rVlitJcD):!!&2^rrC";!!(" -rVlitJcD):!!)utq>gEm!!&kq!!)ipq>gHnrW(XO!!("`!~> -rVlitJcD):!!)utq>gEm!!&kq!!)ipq>gHnrW(XO!!("`!~> -rVlitJcD):!!)utq>gEm!!&kq!!)ipq>gHnrW(XO!!("`!~> -rVlitJcD):!!)or!!*#urrE&urW&krrrDcm!!*#urrE&urr<-#!!(^P!!(%=!!&Vj!!'k8J,~> -rVlitJcD):!!)or!!*#urrE&urW&krrrDcm!!*#urrE&urr<-#!!(^P!!(%=!!&Vj!!'k8J,~> -rVlitJcD):!!)or!!*#urrE&urW&krrrDcm!!*#urrE&urr<-#!!(^P!!(%=!!&Vj!!'k8J,~> -rVlitJcD):!!)or!!)ut!!)rs!!'"urrD]k!!)ut!!*#u!!*#u!!([O!!((>!!%TMh>`!~> -rVlitJcD):!!)or!!)ut!!)rs!!'"urrD]k!!)ut!!*#u!!*#u!!([O!!((>!!%TMh>`!~> -rVlitJcD):!!)or!!)ut!!)rs!!'"urrD]k!!)ut!!*#u!!*#u!!([O!!((>!!%TMh>`!~> -rVlitJcD):!!)or!!)rs!!)ut!!'&!!!)Ti!!)rs!!)or!!([O!!((>!!&Yk!!'h7J,~> -rVlitJcD):!!)or!!)rs!!)ut!!'&!!!)Ti!!)rs!!)or!!([O!!((>!!&Yk!!'h7J,~> -rVlitJcD):!!)or!!)rs!!)ut!!'&!!!)Ti!!)rs!!)or!!([O!!((>!!&Yk!!'h7J,~> -r;Q`sJcD,;!!)or!!)rs!!)ut!!')"!!)Qh!!)rs!!)rsrrC[N!!(.@!!%TMh#Dm~> -r;Q`sJcD,;!!)or!!)rs!!)ut!!')"!!)Qh!!)rs!!)rsrrC[N!!(.@!!%TMh#Dm~> -r;Q`sJcD,;!!)or!!)rs!!)ut!!')"!!)Qh!!)rs!!)rsrrC[N!!(.@!!%TMh#Dm~> -r;Q`sJcD,;!!)or!!)rs!!)ut!!',#!!)Ng!!)rs!!)rs!!(UM!!(.@!!&Yk!!'e6J,~> -r;Q`sJcD,;!!)or!!)rs!!)ut!!',#!!)Ng!!)rs!!)rs!!(UM!!(.@!!&Yk!!'e6J,~> -r;Q`sJcD,;!!)or!!)rs!!)ut!!',#!!)Ng!!)rs!!)rs!!(UM!!(.@!!&Yk!!'e6J,~> -r;Q`sJcD,;!!)or!!)rs!!)ut!!'2%rrDNf!!)rs!!)ut!!(OK!!(1A!!&\l!!'b5J,~> -r;Q`sJcD,;!!)or!!)rs!!)ut!!'2%rrDNf!!)rs!!)ut!!(OK!!(1A!!&\l!!'b5J,~> -r;Q`sJcD,;!!)or!!)rs!!)ut!!'2%rrDNf!!)rs!!)ut!!(OK!!(1A!!&\l!!'b5J,~> -r;Q`sJcD,;!!)or!!)ut!!)rs!!'8'rrDHd!!)ut!!)ut!!(II!!(4B!!&_m!!'_4J,~> -r;Q`sJcD,;!!)or!!)ut!!)rs!!'8'rrDHd!!)ut!!)ut!!(II!!(4B!!&_m!!'_4J,~> -r;Q`sJcD,;!!)or!!)ut!!)rs!!'8'rrDHd!!)ut!!)ut!!(II!!(4B!!&_m!!'_4J,~> -r;Q`sJcD,;!!)or!!*#urrDus!!';(!!)?b!!*#urrE&u!!*#u!!(RL!!(4B!!&bn!!'\3J,~> -r;Q`sJcD,;!!)or!!*#urrDus!!';(!!)?b!!*#urrE&u!!*#u!!(RL!!(4B!!&bn!!'\3J,~> -r;Q`sJcD,;!!)or!!*#urrDus!!';(!!)?b!!*#urrE&u!!*#u!!(RL!!(4B!!&bn!!'\3J,~> -qu6WrJcD/gKoquF,(!!)Bcq>gKoquG7H!!(:D!!%TMg])d~> -qu6WrJcD/gKoquF,(!!)Bcq>gKoquG7H!!(:D!!%TMg])d~> -qu6WrJcD/gKoquF,(!!)Bcq>gKoquG7H!!(:D!!%TMg])d~> -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -qu6WrJcD/ -qYpNqJcD2=!!&nrrrAts!!(FH!!%TMgAc[~> -qYpNqJcD2=!!&nrrrAts!!(FH!!%TMgAc[~> -qYpNqJcD2=!!&nrrrAts!!(FH!!%TMgAc[~> -qYpNqJcD2=!!&nr!!&kq!!(II!!&eo!!'S0J,~> -qYpNqJcD2=!!&nr!!&kq!!(II!!&eo!!'S0J,~> -qYpNqJcD2=!!&nr!!&kq!!(II!!&eo!!'S0J,~> -qYpNqJcD2=!!&qs!!&hp!!(II!!&hp!!'P/J,~> -qYpNqJcD2=!!&qs!!&hp!!(II!!&hp!!'P/J,~> -qYpNqJcD2=!!&qs!!&hp!!(II!!&hp!!'P/J,~> -qYpNqJcD2=!!'"urrAen!!(LJ!!&kq!!'M.J,~> -qYpNqJcD2=!!'"urrAen!!(LJ!!&kq!!'M.J,~> -qYpNqJcD2=!!'"urrAen!!(LJ!!&kq!!'M.J,~> -q>UEpJcD5>!!'&!!!&Yk!!(RL!!&kq!!'J-J,~> -q>UEpJcD5>!!'&!!!&Yk!!(RL!!&kq!!'J-J,~> -q>UEpJcD5>!!'&!!!&Yk!!(RL!!&kq!!'J-J,~> -q>UEpJcD5>!!',#rrAVi!!(UM!!%TMg&HR~> -q>UEpJcD5>!!',#rrAVi!!(UM!!%TMg&HR~> -q>UEpJcD5>!!',#rrAVi!!(UM!!%TMg&HR~> -q>UEpJcD5>!!',#!!&Mg!!(XN!!&qs!!'D+J,~> -q>UEpJcD5>!!',#!!&Mg!!(XN!!&qs!!'D+J,~> -q>UEpJcD5>!!',#!!&Mg!!(XN!!&qs!!'D+J,~> -q>UEpJcD5>!!'/$!!&Ge!!([O!!%TMg&HR~> -q>UEpJcD5>!!'/$!!&Ge!!([O!!%TMg&HR~> -q>UEpJcD5>!!'/$!!&Ge!!([O!!%TMg&HR~> -q#: -q#: -q#: -q#:)J,~> -q#:)J,~> -q#:)J,~> -q#: -q#: -q#: -q#:)rrA5^rrCmT!!'&!!!'8'J,~> -q#:)rrA5^rrCmT!!'&!!!'8'J,~> -q#:)rrA5^rrCmT!!'&!!!'8'J,~> -p\t3nJcD;@!!'A*!!&&Z!!(pV!!')"!!'2%J,~> -p\t3nJcD;@!!'A*!!&&Z!!(pV!!')"!!'2%J,~> -p\t3nJcD;@!!'A*!!&&Z!!(pV!!')"!!'2%J,~> -p\t3nJcD;@!!'D+!!%uX!!(sW!!%TMfDg@~> -p\t3nJcD;@!!'D+!!%uX!!(sW!!%TMfDg@~> -p\t3nJcD;@!!'D+!!%uX!!(sW!!%TMfDg@~> -p\t3nJcD;@!!'G,rr@uW!!)!X!!'/$!!',#J,~> -p\t3nJcD;@!!'G,rr@uW!!)!X!!'/$!!',#J,~> -p\t3nJcD;@!!'G,rr@uW!!)!X!!'/$!!',#J,~> -pAY*mJcD>A!!'J-!!%iTrrD-[!!'2%!!'&!J,~> -pAY*mJcD>A!!'J-!!%iTrrD-[!!'2%!!'&!J,~> -pAY*mJcD>A!!'J-!!%iTrrD-[!!'2%!!'&!J,~> -pAY*mJcD>A!!'M.!!%cR!!)*[!!'5&!!'"uJ,~> -pAY*mJcD>A!!'M.!!%cR!!)*[!!'5&!!'"uJ,~> -pAY*mJcD>A!!'M.!!%cR!!)*[!!'5&!!'"uJ,~> -pAY*mJcD>A!!'P/!!%]PrrD3]!!'8'!!&ttJ,~> -pAY*mJcD>A!!'P/!!%]PrrD3]!!'8'!!&ttJ,~> -pAY*mJcD>A!!'P/!!%]PrrD3]!!'8'!!&ttJ,~> -p&>!lJcDAB!!'S0!!%TMrrD<`!!%TMec1.~> -p&>!lJcDAB!!'S0!!%TMrrD<`!!%TMec1.~> -p&>!lJcDAB!!'S0!!%TMrrD<`!!%TMec1.~> -p&>!lJcDAB!!'V1!!%TMs8N'!l2L_`Z2Xe(VZ2/~> -p&>!lJcDAB!!'V1!!%TMs8N'!l2L_`Z2Xe(VZ2/~> -p&>!lJcDAB!!'V1!!%TMs8N'!l2L_`Z2Xe(VZ2/~> -p&>!lJcDAB!!'Y2!!%TMrVultli-qbZMsn)V>l&~> -p&>!lJcDAB!!'Y2!!%TMrVultli-qbZMsn)V>l&~> -p&>!lJcDAB!!'Y2!!%TMrVultli-qbZMsn)V>l&~> -o`"mkJcDDC!!'\3!!%TMqZ$Qqmf*7eZi:"*U]5i~> -o`"mkJcDDC!!'\3!!%TMqZ$Qqmf*7eZi:"*U]5i~> -o`"mkJcDDC!!'\3!!%TMqZ$Qqmf*7eZi:"*U]5i~> -o`"mkJcDDC!!'_4!!%TMp](6nnG`Ig[/U++UAo`~> -o`"mkJcDDC!!'_4!!%TMp](6nnG`Ig[/U++UAo`~> -o`"mkJcDDC!!'_4!!%TMp](6nnG`Ig[/U++UAo`~> -o`"mkJcDDC!!'b5!!%TMp&G$lnc&Rh[f6=-T`9N~> -o`"mkJcDDC!!'b5!!%TMp&G$lnc&Rh[f6=-T`9N~> -o`"mkJcDDC!!'b5!!%TMp&G$lnc&Rh[f6=-T`9N~> -oD\djJcDGD!!'e6rr@WMoDegjo`"mk\GlU1rrA\kJ,~> -oD\djJcDGD!!'e6rr@WMoDegjo`"mk\GlU1rrA\kJ,~> -oD\djJcDGD!!'e6rr@WMoDegjo`"mk\GlU1rrA\kJ,~> -oD\djJcDGD!!'h7!!%TMn,NCfpAY*m\c2X0SH"*~> -oD\djJcDGD!!'h7!!%TMn,NCfpAY*m\c2X0SH"*~> -oD\djJcDGD!!'h7!!%TMn,NCfpAY*m\c2X0SH"*~> -oD\djJcDGD!!'k8!!%TMm/R(cr;Z``!!'V1!!&MgJ,~> -oD\djJcDGD!!'k8!!%TMm/R(cr;ZZp])Ma1S,\!~> -oD\djJcDGD!!'k8!!%TMm/R(cr;ZZp])Ma1S,\!~> -o)A[iJcDJE!!'k8!!%TMlMpkas8N)err2ru]Dhj2RK%d~> -o)A[iJcDJE!!'k8!!%TMlMpkas8N'!rr2ru]Dhj2RK%d~> -o)A[iJcDJE!!'k8!!%TMlMpkas8N'!rr2ru]Dhj2RK%d~> -o)A[iJcDJE!!'n9!!%TMkl:V^!:Kjd!!'e6!W`6#QiDR~> -o)A[iJcDJE!!'n9!!%TMkl:S]rr2ru^]+?8rrADcJ,~> -o)A[iJcDJE!!'n9!!%TMkl:S]rr2ru^]+?8rrADcJ,~> -o)A[iJcDJE!!'t;rr@WMjT#5[s8N'!_#FB7PlH7~> -o)A[iJcDJE!!'t;rr@WMjT#5[s8N'!_#FB7PlH7~> -o)A[iJcDJE!!'t;rr@WMjT#5[s8N'!_#FB7PlH7~> -nc&RhJcDMF!!'t;!!%TMiW&lW`;]l=rrA5^J,~> -nc&RhJcDMF!!'t;!!%TMiW&lW`;]l=rrA5^J,~> -nc&RhJcDMF!!'t;!!%TMiW&lW`;]l=rrA5^J,~> -nc&RhJcDMF!!(" -nc&RhJcDMF!!(" -nc&RhJcDMF!!(" -nG`IgJcDPG!!(%=!!%TMhu -nG`IgJcDPG!!(%=!!%TMhu -nG`IgJcDPG!!(%=!!%TMhu -nG`IgJcDPG!!((>rr@WMhuUQtrrE'!g&D*Rrr@lTJ,~> -nG`IgJcDPG!!((>rr@WMhuUQtrrE'!g&D*Rrr@lTJ,~> -nG`IgJcDPG!!((>rr@WMhuUQtrrE'!g&D*Rrr@lTJ,~> -nG`IgJcDPG!!(+?!!%TMh>[HTo`#$orrE'!jSo>_rrE'!K`?Q~> -nG`IgJcDPG!!(+?!!%TMh>[HTo`#$orrE'!jSo>_rrE'!K`?Q~> -nG`IgJcDPG!!(+?!!%TMh>[HTo`#$orrE'!jSo>_rrE'!K`?Q~> -n,E@fJcDSH!!(.@!!%TMh>[HTmf*IkrrE'!rrDZj"p"Z'rrE'!JcG`LJ,~> -n,E@fJcDSH!!(.@!!%TMh>[HTmf*IkrrE'!rrDZj"p"Z'rrE'!JcG`LJ,~> -n,E@fJcDSH!!(.@!!%TMh>[HTmf*IkrrE'!rrDZj"p"Z'rrE'!JcG`LJ,~> -n,E@fJcDSH!!(.@!!%TMh>[HTk5PhirrE'!rrE'!rrE'!JcGKEJ,~> -n,E@fJcDSH!!(.@!!%TMh>[HTk5PhirrE'!rrE'!rrE'!JcGKEJ,~> -n,E@fJcDSH!!(.@!!%TMh>[HTk5PhirrE'!rrE'!rrE'!JcGKEJ,~> -mf*7eJcDVI!!(1A!!%TMh>[HTJcF$qJ,~> -mf*7eJcDVI!!(1A!!%TMh>[HTJcF$qJ,~> -mf*7eJcDVI!!(1A!!%TMh>[HTJcF$qJ,~> -mf*7eJcDVI!!(4B!!%TMh#@?SJcF$qJ,~> -mf*7eJcDVI!!(4B!!%TMh#@?SJcF$qJ,~> -mf*7eJcDVI!!(4B!!%TMh#@?SJcF$qJ,~> -mf*7eJcDVI!!(7Crr@WMh#@?SJcF$qJ,~> -mf*7eJcDVI!!(7Crr@WMh#@?SJcF$qJ,~> -mf*7eJcDVI!!(7Crr@WMh#@?SJcF$qJ,~> -mJd.dJcDYJ!!(:D!!%TMg]%6RJcF!pJ,~> -mJd.dJcDYJ!!(:D!!%TMg]%6RJcF!pJ,~> -mJd.dJcDYJ!!(:D!!%TMg]%6RJcF!pJ,~> -mJd.dJcDYJ!!(:D!!%TMg]%6RJcF!pJ,~> -mJd.dJcDYJ!!(:D!!%TMg]%6RJcF!pJ,~> -mJd.dJcDYJ!!(:D!!%TMg]%6RJcF!pJ,~> -m/I%cJcD\K!!(=E!!%TMg]%6RJcEsoJ,~> -m/I%cJcD\K!!(=E!!%TMg]%6RJcEsoJ,~> -m/I%cJcD\K!!(=E!!%TMg]%6RJcEsoJ,~> -m/I%cJcD\K!!(@F!!%TMgA_-QJcEsoJ,~> -m/I%cJcD\K!!(@F!!%TMgA_-QJcEsoJ,~> -m/I%cJcD\K!!(@F!!%TMgA_-QJcEsoJ,~> -li-qbJcD_L!!(@F!!%TMg]%6RJcEpnJ,~> -li-qbJcD_L!!(@F!!%TMg]%6RJcEpnJ,~> -li-qbJcD_L!!(@F!!%TMg]%6RJcEpnJ,~> -li-qbJcD_L!!(CG!!%TMgA_-QJcEpnJ,~> -li-qbJcD_L!!(CG!!%TMgA_-QJcEpnJ,~> -li-qbJcD_L!!(CG!!%TMgA_-QJcEpnJ,~> -lMghaJcDbM!!(FH!!%TMgA_-QJcEmmJ,~> -lMghaJcDbM!!(FH!!%TMgA_-QJcEmmJ,~> -lMghaJcDbM!!(FH!!%TMgA_-QJcEmmJ,~> -lMghaJcDbM!!(II!!%TMg&D$PJcEmmJ,~> -lMghaJcDbM!!(II!!%TMg&D$PJcEmmJ,~> -lMghaJcDbM!!(II!!%TMg&D$PJcEmmJ,~> -l2L_`JcDeN!!(II!!%TMgA_-QJcEjlJ,~> -l2L_`JcDeN!!(II!!%TMgA_-QJcEjlJ,~> -l2L_`JcDeN!!(II!!%TMgA_-QJcEjlJ,~> -l2L_`JcDeN!!(LJ!!%TMg&D$PJcEjlJ,~> -l2L_`JcDeN!!(LJ!!%TMg&D$PJcEjlJ,~> -l2L_`JcDeN!!(LJ!!%TMg&D$PJcEjlJ,~> -l2L_`JcDeN!!(OK!!%TMf`(pOJcEjlJ,~> -l2L_`JcDeN!!(OK!!%TMf`(pOJcEjlJ,~> -l2L_`JcDeN!!(OK!!%TMf`(pOJcEjlJ,~> -kl1V_JcDhO!!(OK!!%TMg&D$PJcEgkJ,~> -kl1V_JcDhO!!(OK!!%TMg&D$PJcEgkJ,~> -kl1V_JcDhO!!(OK!!%TMg&D$PJcEgkJ,~> -kl1V_JcDhO!!(RL!!%TMf`(pOJcEgkJ,~> -kl1V_JcDhO!!(RL!!%TMf`(pOJcEgkJ,~> -kl1V_JcDhO!!(RL!!%TMf`(pOJcEgkJ,~> -kPkM^JcDkP!!(UM!!%TMf`(pOJcEdjJ,~> -kPkM^JcDkP!!(UM!!%TMf`(pOJcEdjJ,~> -kPkM^JcDkP!!(UM!!%TMf`(pOJcEdjJ,~> -kPkM^JcDkP!!(XNrr@WMf`(pOJcEdjJ,~> -kPkM^JcDkP!!(XNrr@WMf`(pOJcEdjJ,~> -kPkM^JcDkP!!(XNrr@WMf`(pOJcEdjJ,~> -k5PD]JcDnQ!!(XN!!%TMf`(pOJcEaiJ,~> -k5PD]JcDnQ!!(XN!!%TMf`(pOJcEaiJ,~> -k5PD]JcDnQ!!(XN!!%TMf`(pOJcEaiJ,~> -jo5;\JcDqR!!([O!!%TMf`(pOJcE^hJ,~> -jo5;\JcDqR!!([O!!%TMf`(pOJcE^hJ,~> -jo5;\JcDqR!!([O!!%TMf`(pOJcE^hJ,~> -jo5;\JcDqR!!(^P!!%TMfDbgNJcE^hJ,~> -jo5;\JcDqR!!(^P!!%TMfDbgNJcE^hJ,~> -jo5;\JcDqR!!(^P!!%TMfDbgNJcE^hJ,~> -jSo2[JcDtS!!(^P!!%TMf`(pOJcE[gJ,~> -jSo2[JcDtS!!(^P!!%TMf`(pOJcE[gJ,~> -jSo2[JcDtS!!(^P!!%TMf`(pOJcE[gJ,~> -jSo2[JcDtS!!(aQ!!%TMfDbgNJcE[gJ,~> -jSo2[JcDtS!!(aQ!!%TMfDbgNJcE[gJ,~> -jSo2[JcDtS!!(aQ!!%TMfDbgNJcE[gJ,~> -j8T)ZJcE"T!!(aQ!!%TMf`(pOJcEXfJ,~> -j8T)ZJcE"T!!(aQ!!%TMf`(pOJcEXfJ,~> -j8T)ZJcE"T!!(aQ!!%TMf`(pOJcEXfJ,~> -j8T)ZJcE"T!!(dR!!%TMfDbgNJcEXfJ,~> -j8T)ZJcE"T!!(dR!!%TMfDbgNJcEXfJ,~> -j8T)ZJcE"T!!(dR!!%TMfDbgNJcEXfJ,~> -ir8uYJcE%U!!(dR!!%TMf`(pOJcEUeJ,~> -ir8uYJcE%U!!(dR!!%TMf`(pOJcEUeJ,~> -ir8uYJcE%U!!(dR!!%TMf`(pOJcEUeJ,~> -ir8uYJcE%U!!(gS!!%TMfDbgNJcEUeJ,~> -ir8uYJcE%U!!(gS!!%TMfDbgNJcEUeJ,~> -ir8uYJcE%U!!(gS!!%TMfDbgNJcEUeJ,~> -iVrlXJcE(V!!(jT!!%TMfDbgNJcERdJ,~> -iVrlXJcE(V!!(jT!!%TMfDbgNJcERdJ,~> -iVrlXJcE(V!!(jT!!%TMfDbgNJcERdJ,~> -i;WcWJcE+W!!(mUrr@WMf`(pOJcEOcJ,~> -i;WcWJcE+W!!(mUrr@WMf`(pOJcEOcJ,~> -i;WcWJcE+W!!(mUrr@WMf`(pOJcEOcJ,~> -i;WcWJcE+W!!(mU!!%TMfDbgNJcEOcJ,~> -i;WcWJcE+W!!(mU!!%TMfDbgNJcEOcJ,~> -i;WcWJcE+W!!(mU!!%TMfDbgNJcEOcJ,~> -hu -hu -hu -hu -hu -hu -hZ!QUJcE1Y!!(sW!!%TMfDbgNJcEIaJ,~> -hZ!QUJcE1Y!!(sW!!%TMfDbgNJcEIaJ,~> -hZ!QUJcE1Y!!(sW!!%TMfDbgNJcEIaJ,~> -h>[HTJcE4Z!!(sW!!%TMf`(pOJcEF`J,~> -h>[HTJcE4Z!!(sW!!%TMf`(pOJcEF`J,~> -h>[HTJcE4Z!!(sW!!%TMf`(pOJcEF`J,~> -h>[HTJcE4Z!!)!X!!%TMfDbgNJcEF`J,~> -h>[HTJcE4Z!!)!X!!%TMfDbgNJcEF`J,~> -h>[HTJcE4Z!!)!X!!%TMfDbgNJcEF`J,~> -h#@?SJcE7[!!)!X!!%TMf`(pOJcEC_J,~> -h#@?SJcE7[!!)!X!!%TMf`(pOJcEC_J,~> -h#@?SJcE7[!!)!X!!%TMf`(pOJcEC_J,~> -h#@?SJcE7[!!)$Y!!%TMfDbgNJcEC_J,~> -h#@?SJcE7[!!)$Y!!%TMfDbgNJcEC_J,~> -h#@?SJcE7[!!)$Y!!%TMfDbgNJcEC_J,~> -g]%6RJcE:\!!)$Y!!%TMf`(pOJcE@^J,~> -g]%6RJcE:\!!)$Y!!%TMf`(pOJcE@^J,~> -g]%6RJcE:\!!)$Y!!%TMf`(pOJcE@^J,~> -gA_-QJcE=]!!)'Z!!%TMf`(pOJcE=]J,~> -gA_-QJcE=]!!)'Z!!%TMf`(pOJcE=]J,~> -gA_-QJcE=]!!)'Z!!%TMf`(pOJcE=]J,~> -gA_-QJcE=]!!)'Z!!%TMf`(pOJcE=]J,~> -gA_-QJcE=]!!)'Z!!%TMf`(pOJcE=]J,~> -gA_-QJcE=]!!)'Z!!%TMf`(pOJcE=]J,~> -g&D$PJcE@^!!)*[!!%TMf`(pOJcE:\J,~> -g&D$PJcE@^!!)*[!!%TMf`(pOJcE:\J,~> -g&D$PJcE@^!!)*[!!%TMf`(pOJcE:\J,~> -f`(pOJcEC_!!)*[!!%TMg&D$PJcE7[J,~> -f`(pOJcEC_!!)*[!!%TMg&D$PJcE7[J,~> -f`(pOJcEC_!!)*[!!%TMg&D$PJcE7[J,~> -f`(pOJcEC_!!)-\!!%TMf`(pOJcE7[J,~> -f`(pOJcEC_!!)-\!!%TMf`(pOJcE7[J,~> -f`(pOJcEC_!!)-\!!%TMf`(pOJcE7[J,~> -fDbgNJcEF`!!)-\!!%TMg&D$PJcE4ZJ,~> -fDbgNJcEF`!!)-\!!%TMg&D$PJcE4ZJ,~> -fDbgNJcEF`!!)-\!!%TMg&D$PJcE4ZJ,~> -f)G^MJcEIa!!)0]!!%TMg&D$PJcE1YJ,~> -f)G^MJcEIa!!)0]!!%TMg&D$PJcE1YJ,~> -f)G^MJcEIa!!)0]!!%TMg&D$PJcE1YJ,~> -f)G^MJcEIa!!)0]!!%TMg&D$PJcE1YJ,~> -f)G^MJcEIa!!)0]!!%TMg&D$PJcE1YJ,~> -f)G^MJcEIa!!)0]!!%TMg&D$PJcE1YJ,~> -ec,ULJcELb!!)3^!!%TMg&D$PJcE.XJ,~> -ec,ULJcELb!!)3^!!%TMg&D$PJcE.XJ,~> -ec,ULJcELb!!)3^!!%TMg&D$PJcE.XJ,~> -eGfLKJcEOc!!)6_rr@WMgA_-QJcE+WJ,~> -eGfLKJcEOc!!)6_rr@WMgA_-QJcE+WJ,~> -eGfLKJcEOc!!)6_rr@WMgA_-QJcE+WJ,~> -e,KCJJcERd!!)6_!!%TMgA_-QJcE(VJ,~> -e,KCJJcERd!!)6_!!%TMgA_-QJcE(VJ,~> -e,KCJJcERd!!)6_!!%TMgA_-QJcE(VJ,~> -e,KCJJcERd!!)9`!!%TMg&D$PJcE(VJ,~> -e,KCJJcERd!!)9`!!%TMg&D$PJcE(VJ,~> -e,KCJJcERd!!)9`!!%TMg&D$PJcE(VJ,~> -df0:IJcEUe!!)9`!!%TMgA_-QJcE%UJ,~> -df0:IJcEUe!!)9`!!%TMgA_-QJcE%UJ,~> -df0:IJcEUe!!)9`!!%TMgA_-QJcE%UJ,~> -dJj1HJcEXf!!) -dJj1HJcEXf!!) -dJj1HJcEXf!!) -d/O(GJcE[g!!) -d/O(GJcE[g!!) -d/O(GJcE[g!!) -d/O(GJcE[g!!) -d/O(GJcE[g!!) -d/O(GJcE[g!!) -ci3tFJcE^h!!)?b!!%TMg]%6RJcDqRJ,~> -ci3tFJcE^h!!)?b!!%TMg]%6RJcDqRJ,~> -ci3tFJcE^h!!)?b!!%TMg]%6RJcDqRJ,~> -cMmkEJcEai!!)?b!!%TMh#@?SJcDnQJ,~> -cMmkEJcEai!!)?b!!%TMh#@?SJcDnQJ,~> -cMmkEJcEai!!)?b!!%TMh#@?SJcDnQJ,~> -c2RbDJcEdj!!)Bc!!%TMh#@?SJcDkPJ,~> -c2RbDJcEdj!!)Bc!!%TMh#@?SJcDkPJ,~> -c2RbDJcEdj!!)Bc!!%TMh#@?SJcDkPJ,~> -c2RbDJcEdj!!)Bc!!%TMh#@?SJcDkPJ,~> -c2RbDJcEdj!!)Bc!!%TMh#@?SJcDkPJ,~> -c2RbDJcEdj!!)Bc!!%TMh#@?SJcDkPJ,~> -bl7YCJcEgk!!)Ed!!%TMh#@?SJcDhOJ,~> -bl7YCJcEgk!!)Ed!!%TMh#@?SJcDhOJ,~> -bl7YCJcEgk!!)Ed!!%TMh#@?SJcDhOJ,~> -bPqPBJcEjl!!)Ed!!%TMh>[HTJcDeNJ,~> -bPqPBJcEjl!!)Ed!!%TMh>[HTJcDeNJ,~> -bPqPBJcEjl!!)Ed!!%TMh>[HTJcDeNJ,~> -b5VGAJcEmm!!)Ed!!%TMhZ!QUJcDbMJ,~> -b5VGAJcEmm!!)Ed!!%TMhZ!QUJcDbMJ,~> -b5VGAJcEmm!!)Ed!!%TMhZ!QUJcDbMJ,~> -ao;>@JcEpn!!)He!!%TMhZ!QUJcD_LJ,~> -ao;>@JcEpn!!)He!!%TMhZ!QUJcD_LJ,~> -ao;>@JcEpn!!)He!!%TMhZ!QUJcD_LJ,~> -ao;>@JcEpn!!)He!!%TMhZ!QUJcD_LJ,~> -ao;>@JcEpn!!)He!!%TMhZ!QUJcD_LJ,~> -ao;>@JcEpn!!)He!!%TMhZ!QUJcD_LJ,~> -aSu5?JcEso!!)Kf!!%TMhZ!QUJcD\KJ,~> -aSu5?JcEso!!)Kf!!%TMhZ!QUJcD\KJ,~> -aSu5?JcEso!!)Kf!!%TMhZ!QUJcD\KJ,~> -a8Z,>JcF!p!!)Kf!!%TMhu -a8Z,>JcF!p!!)Kf!!%TMhu -a8Z,>JcF!p!!)Kf!!%TMhu -`r?#=JcF$q!!)Kf!!%TMi;WcWJcDVIJ,~> -`r?#=JcF$q!!)Kf!!%TMi;WcWJcDVIJ,~> -`r?#=JcF$q!!)Kf!!%TMi;WcWJcDVIJ,~> -`W#o -`W#o -`W#o -`;]f;JcF*s!!)Ng!!%TMiVrlXJcDPGJ,~> -`;]f;JcF*s!!)Ng!!%TMiVrlXJcDPGJ,~> -`;]f;JcF*s!!)Ng!!%TMiVrlXJcDPGJ,~> -_uB]:JcF-t!!)Ng!!%TMir8uYJcDMFJ,~> -_uB]:JcF-t!!)Ng!!%TMir8uYJcDMFJ,~> -_uB]:JcF-t!!)Ng!!%TMir8uYJcDMFJ,~> -_Z'T9JcF0u!!)Qh!!%TMir8uYJcDJEJ,~> -_Z'T9JcF0u!!)Qh!!%TMir8uYJcDJEJ,~> -_Z'T9JcF0u!!)Qh!!%TMir8uYJcDJEJ,~> -_>aK8JcF4!!!)Qh!!%TMj8T)ZJcDGDJ,~> -_>aK8JcF4!!!)Qh!!%TMj8T)ZJcDGDJ,~> -_>aK8JcF4!!!)Qh!!%TMj8T)ZJcDGDJ,~> -_>aK8JcF4!!!)Qh!!%TMj8T)ZJcDGDJ,~> -_>aK8JcF4!!!)Qh!!%TMj8T)ZJcDGDJ,~> -_>aK8JcF4!!!)Qh!!%TMj8T)ZJcDGDJ,~> -_#FB7JcF7"!!)Ti!!%TMj8T)ZJcDDCJ,~> -_#FB7JcF7"!!)Ti!!%TMj8T)ZJcDDCJ,~> -_#FB7JcF7"!!)Ti!!%TMj8T)ZJcDDCJ,~> -^]+96JcF:#!!)Ti!!%TMjSo2[JcDABJ,~> -^]+96JcF:#!!)Ti!!%TMjSo2[JcDABJ,~> -^]+96JcF:#!!)Ti!!%TMjSo2[JcDABJ,~> -^Ae05JcF=$!!)Wj!!%TMjSo2[JcD>AJ,~> -^Ae05JcF=$!!)Wj!!%TMjSo2[JcD>AJ,~> -^Ae05JcF=$!!)Wj!!%TMjSo2[JcD>AJ,~> -^&J'4JcF@%!!)Wj!!%TMjo5;\JcD;@J,~> -^&J'4JcF@%!!)Wj!!%TMjo5;\JcD;@J,~> -^&J'4JcF@%!!)Wj!!%TMjo5;\JcD;@J,~> -]`.s3JcFC&!!)Wj!!%TMk5PD]JcD8?J,~> -]`.s3JcFC&!!)Wj!!%TMk5PD]JcD8?J,~> -]`.s3JcFC&!!)Wj!!%TMk5PD]JcD8?J,~> -]Dhj2JcFF'!!)Zk!!%TMk5PD]JcD5>J,~> -]Dhj2JcFF'!!)Zk!!%TMk5PD]JcD5>J,~> -]Dhj2JcFF'!!)Zk!!%TMk5PD]JcD5>J,~> -])Ma1JcFI(!!)Zk!!%TMkPkM^JcD2=J,~> -])Ma1JcFI(!!)Zk!!%TMkPkM^JcD2=J,~> -])Ma1JcFI(!!)Zk!!%TMkPkM^JcD2=J,~> -\c2X0JcFL)!!)Zk!!%TMkl1V_JcD/ -\c2X0JcFL)!!)Zk!!%TMkl1V_JcD/ -\c2X0JcFL)!!)Zk!!%TMkl1V_JcD/ -\GlO/JcFO*!!)Zk!!%TMl2L_`JcD,;J,~> -\GlO/JcFO*!!)Zk!!%TMl2L_`JcD,;J,~> -\GlO/JcFO*!!)Zk!!%TMl2L_`JcD,;J,~> -\,QF.JcFR+!!)]l!!%TMl2L_`JcD):J,~> -\,QF.JcFR+!!)]l!!%TMl2L_`JcD):J,~> -\,QF.JcFR+!!)]l!!%TMl2L_`JcD):J,~> -[f6=-JcFU,!!)]l!!%TMlMghaJcD&9J,~> -[f6=-JcFU,!!)]l!!%TMlMghaJcD&9J,~> -[f6=-JcFU,!!)]l!!%TMlMghaJcD&9J,~> -[K$7,JcF[.!!)]l!!%TMm/R(cJcD#8J,~> -[K$7,JcF[.!!)]l!!%TMm/R(cJcD#8J,~> -[K$7,JcF[.!!)]l!!%TMm/R(cJcD#8J,~> -Zi:"*JcF^/!!)`m!!%TMm/I%cJcCr6J,~> -Zi:"*JcF^/!!)`m!!%TMm/I%cJcCr6J,~> -Zi:"*JcF^/!!)`m!!%TMm/I%cJcCr6J,~> -ZMsn)JcFa0!!)`m!!%TMmJd.dJcCo5J,~> -ZMsn)JcFa0!!)`m!!%TMmJd.dJcCo5J,~> -ZMsn)JcFa0!!)`m!!%TMmJd.dJcCo5J,~> -Z2Xe(JcFd1!!)`m!!%TMmf*7eJcCl4J,~> -Z2Xe(JcFd1!!)`m!!%TMmf*7eJcCl4J,~> -Z2Xe(JcFd1!!)`m!!%TMmf*7eJcCl4J,~> -Yl=\'JcFg2!!)cn!!%TMmf*7eJcCi3J,~> -Yl=\'JcFg2!!)cn!!%TMmf*7eJcCi3J,~> -Yl=\'JcFg2!!)cn!!%TMmf*7eJcCi3J,~> -YQ"S&JcFj3!!)cn!!%TMn,E@fJcCf2J,~> -YQ"S&JcFj3!!)cn!!%TMn,E@fJcCf2J,~> -YQ"S&JcFj3!!)cn!!%TMn,E@fJcCf2J,~> -Y5\J%JcFm4!!)cn!!%TMnG`IgJcCc1J,~> -Y5\J%JcFm4!!)cn!!%TMnG`IgJcCc1J,~> -Y5\J%JcFm4!!)cn!!%TMnG`IgJcCc1J,~> -XoAA$JcFp5!!)cn!!%TMnc&RhJcC`0J,~> -XoAA$JcFp5!!)cn!!%TMnc&RhJcC`0J,~> -XoAA$JcFp5!!)cn!!%TMnc&RhJcC`0J,~> -XT/;#JcG!7!!)fo!!%TMo)J^iJcC]/J,~> -XT/;#JcG!7!!)fo!!%TMo)J^iJcC]/J,~> -XT/;#JcG!7!!)fo!!%TMo)J^iJcC]/J,~> -WrE&!JcG$8!!)fo!!%TMoD\djJcCW-J,~> -WrE&!JcG$8!!)fo!!%TMoD\djJcCW-J,~> -WrE&!JcG$8!!)fo!!%TMoD\djJcCW-J,~> -WW)quJcG'9!!)fo!!%TMo`"mkJcCT,J,~> -WW)quJcG'9!!)fo!!%TMo`"mkJcCT,J,~> -WW)quJcG'9!!)fo!!%TMo`"mkJcCT,J,~> -W;chtJcG*:!!)fo!!%TMp&>!lJcCQ+J,~> -W;chtJcG*:!!)fo!!%TMp&>!lJcCQ+J,~> -W;chtJcG*:!!)fo!!%TMp&>!lJcCQ+J,~> -VuQbsJcG0 -VuQbsJcG0 -VuQbsJcG0 -V>gMqJcG3=!!)ip!!%TMp\t3nJcCH(J,~> -V>gMqJcG3=!!)ip!!%TMp\t3nJcCH(J,~> -V>gMqJcG3=!!)ip!!%TMp\t3nJcCH(J,~> -V#LDpJcG6>!!)ip!!%TMq#: -V#LDpJcG6>!!)ip!!%TMq#: -V#LDpJcG6>!!)ip!!%TMq#: -U]:>oJcG<@!!)ip!!%TMqZ$QqJcCB&J,~> -U]:>oJcG<@!!)ip!!%TMqZ$QqJcCB&J,~> -U]:>oJcG<@!!)ip!!%TMqZ$QqJcCB&J,~> -U&P)mJcG?A!!)ip!!%TMqu6WrJcC<$J,~> -U&P)mJcG?A!!)ip!!%TMqu6WrJcC<$J,~> -U&P)mJcG?A!!)ip!!%TMqu6WrJcC<$J,~> -T`4ulJcGBB!!)lq!!%TMqu6WrJcC<$!<7Q~> -T`4ulJcGBB!!)lq!!%TMqu6WrJcC<$!<7Q~> -T`4ulJcGBB!!)lq!!%TMqu6WrJcC<$!<7Q~> -TE"okJcGHD!!)lq!!%TMrVultJcC<$s8RT~> -TE"okJcGHD!!)lq!!%TMrVultJcC<$s8RT~> -TE"okJcGHD!!)lq!!%TMrVultJcC<$s8RT~> -Sc8ZiJcGKE!!)lq!!&5_r;Zlu!:p-i!.k0$s8DtJ~> -Sc8ZiJcGKE!!)lq!!&5_r;Zlu!:p-i!.k0$s8DtJ~> -Sc8ZiJcGKE!!)lq!!&5_r;Zlu!:p-i!.k0$s8DtJ~> -SGrQhJcGNF!!)lq!!&8`rrE&urrDZj!!%TMJcGZJJ,~> -SGrQhJcGNF!!)lq!!&8`rrE&urrDZj!!%TMJcGZJJ,~> -SGrQhJcGNF!!)lq!!&8`rrE&urrDZj!!%TMJcGZJJ,~> -S,`KgJcGTH!!)or!!&5_!!)rs!!)]lrr@WMJcGWIJ,~> -S,`KgJcGTH!!)or!!&5_!!)rs!!)]lrr@WMJcGWIJ,~> -S,`KgJcGTH!!)or!!&5_!!)rs!!)]lrr@WMJcGWIJ,~> -RK!6eJcGWI!!)or!!&8`!!)or!!)`m!!%TMJcGQGJ,~> -RK!6eJcGWI!!)or!!&8`!!)or!!)`m!!%TMJcGQGJ,~> -RK!6eJcGWI!!)or!!&8`!!)or!!)`m!!%TMJcGQGJ,~> -R/d0dJcG]K!!)or!!&8`!!)Qhrr@WMJcGNFJ,~> -R/d0dJcG]K!!)or!!&8`!!)Qhrr@WMJcGNFJ,~> -R/d0dJcG]K!!)or!!&8`!!)Qhrr@WMJcGNFJ,~> -QN$pbJcG`L!!)or!!&8`!!)Ti!!%TMJcGHDJ,~> -QN$pbJcG`L!!)or!!&8`!!)Ti!!%TMJcGHDJ,~> -QN$pbJcG`L!!)or!!&8`!!)Ti!!%TMJcGHDJ,~> -Q2gjaJc>cN!;lcr!0mK`!;- -Q2gjaJc>cN!;lcr!0mK`!;- -Q2gjaJc>cN!;lcr!0mK`!;- -PQ(U_Jc>]Mqu6WrPlLa`r;Q`sr;Q`sJcC<$oDa=~> -PQ(U_Jc>]Mqu6WrPlLa`r;Q`sr;Q`sJcC<$oDa=~> -PQ(U_Jc>]Mqu6WrPlLa`r;Q`sr;Q`sJcC<$oDa=~> -P5kO^KDtoOqu6WrPQ1X_rr2rurVultJcC<$o)F4~> -P5kO^KDtoOqu6WrPQ1X_rr2rurVultJcC<$o)F4~> -P5kO^KDtoOqu6WrPQ1X_rr2rurVultJcC<$o)F4~> -OT5=\L&V,Qr;Q`sOoP@[rr;uuJcC<$nGe"~> -OT5=\L&V,Qr;Q`sOoP@[rr;uuJcC<$nGe"~> -OT5=\L&V,Qr;Q`sOoP@[rr;uuJcC<$nGe"~> -NrK(ZLAq5Rr;Q`sMuNbWJcC<$mf.e~> -NrK(ZLAq5Rr;Q`sMuNbWJcC<$mf.e~> -NrK(ZLAq5Rr;Q`sMuNbWJcC<$mf.e~> -NW9"YM#RGTr;Q`sNW9"YJcC<$mJh\~> -NW9"YM#RGTr;Q`sNW9"YJcC<$mJh\~> -NW9"YM#RGTr;Q`sNW9"YJcC<$mJh\~> -MuWeWMZ3YVr;Q`sO8o4[JcC<$li2J~> -MuWeWMZ3YVr;Q`sO8o4[JcC<$li2J~> -MuWeWMZ3YVr;Q`sO8o4[JcC<$li2J~> -M>mPUMuNbWr;Q`sOT,:\JcC<$l2Q8~> -M>mPUMuNbWr;Q`sOT,:\JcC<$l2Q8~> -M>mPUMuNbWr;Q`sOT,:\JcC<$l2Q8~> -M#[JTNW/tYr;Q`sP5kO^JcC<$kl6/~> -M#[JTNW/tYr;Q`sP5kO^JcC<$kl6/~> -M#[JTNW/tYr;Q`sP5kO^JcC<$kl6/~> -LB%8RO8f1[rVlitPQ1X_JcC<$k5Tr~> -LB%8RO8f1[rVlitPQ1X_JcC<$k5Tr~> -LB%8RO8f1[rVlitPQ1X_JcC<$k5Tr~> -K`D&POoGC]rVlitQ2gjaJcC<$jSs`~> -K`D&POoGC]rVlitQ2gjaJcC<$jSs`~> -K`D&POoGC]rVlitQ2gjaJcC<$jSs`~> -K)biNPQ(U_rVlitQiI'cJcC<$ir=N~> -K)biNPQ(U_rVlitQiI'cJcC<$ir=N~> -K)biNPQ(U_rVlitQiI'cJcC<$ir=N~> -Jc>cN!0mK`!<)ot!1 -Jc>cN!0mK`!<)ot!1 -Jc>cN!0mK`!<)ot!1 -JcGcMrrAAb!!)ut!!&Jfrr@WMJcFX-J,~> -JcGcMrrAAb!!)ut!!&Jfrr@WMJcFX-J,~> -JcGcMrrAAb!!)ut!!&Jfrr@WMJcFX-J,~> -JcG]KrrAGd!!)ut!!&Phrr@WMJcFR+J,~> -JcG]KrrAGd!!)ut!!&Phrr@WMJcFR+J,~> -JcG]KrrAGd!!)ut!!&Phrr@WMJcFR+J,~> -JcGWIrW&Gf!!)ut!!&YkrW%NLJcFL)J,~> -JcGWIrW&Gf!!)ut!!&YkrW%NLJcFL)J,~> -JcGWIrW&Gf!!)ut!!&YkrW%NLJcFL)J,~> -JcGNFrrAVi!!*#u!!&\lrr@WMJcFC&J,~> -JcGNFrrAVi!!*#u!!&\lrr@WMJcFC&J,~> -JcGNFrrAVi!!*#u!!&\lrr@WMJcFC&J,~> -JcGHDrrA\k!!*#u!!&bnrr@WMJcF=$J,~> -JcGHDrrA\k!!*#u!!&bnrr@WMJcF=$J,~> -JcGHDrrA\k!!*#u!!&bnrr@WMJcF=$J,~> -JcGBBrrAbm!!*#u!!&hprr@WMJcF7"J,~> -JcGBBrrAbm!!*#u!!&hprr@WMJcF7"J,~> -JcGBBrrAbm!!*#u!!&hprr@WMJcF7"J,~> -JcG<@rrAho!!*#u!!&nrrr@WMJcF0uJ,~> -JcG<@rrAho!!*#u!!&nrrr@WMJcF0uJ,~> -JcG<@rrAho!!*#u!!&nrrr@WMJcF0uJ,~> -JcG6>rW&hq!!*#u!!'"urW%NLJcF*sJ,~> -JcG6>rW&hq!!*#u!!'"urW%NLJcF*sJ,~> -JcG6>rW&hq!!*#u!!'"urW%NLJcF*sJ,~> -JcG-;rrB"t!!*#u!!')"rr@WMJcF!pJ,~> -JcG-;rrB"t!!*#u!!')"rr@WMJcF!pJ,~> -JcG-;rrB"t!!*#u!!')"rr@WMJcF!pJ,~> -JcG'9rW'#!!!*#u!!'2%rW%NLJcEpnJ,~> -JcG'9rW'#!!!*#u!!'2%rW%NLJcEpnJ,~> -JcG'9rW'#!!!*#u!!'2%rW%NLJcEpnJ,~> -JcFs6rrB2$!!*#u!!'8'rr@WMJcEgkJ,~> -JcFs6rrB2$!!*#u!!'8'rr@WMJcEgkJ,~> -JcFs6rrB2$!!*#u!!'8'rr@WMJcEgkJ,~> -JcFm4rW'2&!!*#u!!'A*rW%NLJcEaiJ,~> -JcFm4rW'2&!!*#u!!'A*rW%NLJcEaiJ,~> -JcFm4rW'2&!!*#u!!'A*rW%NLJcEaiJ,~> -JcFd1rW';)!!*#u!!'J-rW%NLJcEXfJ,~> -JcFd1rW';)!!*#u!!'J-rW%NLJcEXfJ,~> -JcFd1rW';)!!*#u!!'J-rW%NLJcEXfJ,~> -JcF[.rW'D,!!*#u!!'S0rW%NLJcEOcJ,~> -JcF[.rW'D,!!*#u!!'S0rW%NLJcEOcJ,~> -JcF[.rW'D,!!*#u!!'S0rW%NLJcEOcJ,~> -JcFR+rW'M/!!*#u!!'\3rW%NLJcEF`J,~> -JcFR+rW'M/!!*#u!!'\3rW%NLJcEF`J,~> -JcFR+rW'M/!!*#u!!'\3rW%NLJcEF`J,~> -JcFI(rW'V2!s&B$!5AL4!.k0$s185\~> -JcFI(rW'V2!s&B$!5AL4!.k0$s185\~> -JcFI(rW'V2!s&B$!5AL4!.k0$s185\~> -JcF@%rW'_5!s&B$!5\^7!.k0$s0r#Y~> -JcF@%rW'_5!s&B$!5\^7!.k0$s0r#Y~> -JcF@%rW'_5!s&B$!5\^7!.k0$s0r#Y~> -JcF7"r;ab8!s&B$!6,!:!.k0$s0VfV~> -JcF7"r;ab8!s&B$!6,!:!.k0$s0VfV~> -JcF7"r;ab8!s&B$!6,!:!.k0$s0VfV~> -JcF*sr;an!.k0$s02NR~> -JcF*sr;an!.k0$s02NR~> -JcF*sr;an!.k0$s02NR~> -JcEsor;b%@!s&B$!6tQB!.k0$s/c6N~> -JcEsor;b%@!s&B$!6tQB!.k0$s/c6N~> -JcEsor;b%@!s&B$!6tQB!.k0$s/c6N~> -JcEgkr;b1D!s&B$!7CiF!.k0$s/>sJ~> -JcEgkr;b1D!s&B$!7CiF!.k0$s/>sJ~> -JcEgkr;b1D!s&B$!7CiF!.k0$s/>sJ~> -JcE[gquG7H!s&B$!7q2J!.k0$s.o[F~> -JcE[gquG7H!s&B$!7q2J!.k0$s.o[F~> -JcE[gquG7H!s&B$!7q2J!.k0$s.o[F~> -JcELbquGFM!s&B$!8IPO!.k0$s.B=A~> -JcELbquGFM!s&B$!8IPO!.k0$s.B=A~> -JcELbquGFM!s&B$!8IPO!.k0$s.B=A~> -JcE=]qZ,XUrU0^crU/bHqZ)3IJcD2=J,~> -JcE=]qZ,XUr;cltr;bpYqZ)3IJcD2=J,~> -JcE=]qZ,XUr;cltr;bpYqZ)3IJcD2=J,~> -JcE+Wq#K^[$1@in!<<'!s8VNRs7lYGs+137s*t~> -JcE+Wq#K^[#lt#*!<<'!s8N)cs7lYGs+137s*t~> -JcE+Wq#K^[#lt#*!<<'!s8N)cs7lYGs+137s*t~> -JcDhOo`4^c$1@in!<<'!s8VN^s7HACs+13/s*t~> -JcDhOo`4^c#lt#*!<<'!s8N)os7HACs+13/s*t~> -JcDhOo`4^c#lt#*!<<'!s8N)os7HACs+13/s*t~> -JcDDCp&G*\q#CE_p],mFJcC<$!<7Q~> -JcDDCirFZ1JcC<$!<7Q~> -JcDDCirFZ1JcC<$!<7Q~> -%%EndData -showpage -%%Trailer -end -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/perpendiculaire.ps b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/perpendiculaire.ps deleted file mode 100755 index 71881a5dc2..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/perpendiculaire.ps and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/pp.mll b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/pp.mll deleted file mode 100755 index 2b02b43afb..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/pp.mll +++ /dev/null @@ -1,128 +0,0 @@ - -(* préprocesseur pour les environnement ocaml (avec alltt) *) - -{ - open Lexing - - let slides = ref false - - let ocaml_keywords = - let h = Hashtbl.create 97 in - List.iter (fun s -> Hashtbl.add h s ()) - [ - "fun"; "match"; "with"; "begin"; - "end"; "try"; "as"; "let"; "rec"; "in"; - "function"; "if"; "then"; "else"; "sig"; "val"; "type"; "module"; - "while"; "do"; "done"; - ]; - h - - let is_keyword s = Hashtbl.mem ocaml_keywords s - -} - -let space = [' ' '\t'] -let ident = ['a'-'z' 'A'-'Z' '_'] ['a'-'z' 'A'-'Z' '_' '0'-'9']* - -rule alltt = parse - | '{' { print_string "\\{"; alltt lexbuf } - | '}' { print_string "\\}"; alltt lexbuf } -(* - | '\\' { print_string "\\ensuremath{\\backslash}"; alltt lexbuf } -*) - | '#' { print_string "\\diese{}"; alltt lexbuf } - | '_' { print_string "\\_{}"; alltt lexbuf } - | '%' { print_string "\\%{}"; alltt lexbuf } - | '&' { print_string "\\&{}"; alltt lexbuf } - | '%' { print_string "\\%{}"; alltt lexbuf } - | '\n' { print_string "\n"; alltt lexbuf } - | "->" { print_string "\\ensuremath{\\rightarrow}"; alltt lexbuf } - | "<-" { print_string "\\ensuremath{\\leftarrow}"; alltt lexbuf } - | "=>" { print_string "\\ensuremath{\\Rightarrow}"; alltt lexbuf } - | "<->" { print_string "\\ensuremath{\\leftrightarrow}"; alltt lexbuf } - | '\n' "\\end{" ( "ocaml" | "coq" ) "}\n" { print_newline () } - | "\\emph{" [^'}']* '}' { print_string (lexeme lexbuf); alltt lexbuf } - | eof { () } - | "'a" { print_string "\\ensuremath{\\alpha}"; alltt lexbuf } - | "*" { print_string "\\ensuremath{\\times}"; alltt lexbuf } - | ident as s - { if !slides && is_keyword s then begin - print_string "{\\color{blue}"; print_string (lexeme lexbuf); - print_string "}" - end else - print_string (lexeme lexbuf); - alltt lexbuf - } - | _ { print_string (lexeme lexbuf); alltt lexbuf } - -and coq = parse - | '{' { print_string "\\{"; coq lexbuf } - | '}' { print_string "\\}"; coq lexbuf } - | '\\' { print_string "\\ensuremath{\\backslash}"; coq lexbuf } - | '#' { print_string "\\diese{}"; coq lexbuf } - | '_' { print_string "\\_{}"; coq lexbuf } - | '%' { print_string "\\%{}"; coq lexbuf } - | '&' { print_string "\\&{}"; coq lexbuf } - | '%' { print_string "\\%{}"; coq lexbuf } - | '\n' { print_string "\n"; coq lexbuf } - | "/\\" { print_string "\\ensuremath{\\land}"; coq lexbuf } - | "\\/" { print_string "\\ensuremath{\\lor}"; coq lexbuf } - | "->" { print_string "\\ensuremath{\\rightarrow}"; coq lexbuf } - | "<=" { print_string "\\ensuremath{\\le}"; coq lexbuf } - | "<" { print_string "\\ensuremath{<}"; coq lexbuf } - | "=>" { print_string "\\ensuremath{\\Rightarrow}"; coq lexbuf } - | "<->" { print_string "\\ensuremath{\\leftrightarrow}"; coq lexbuf } - | '\n' "\\end{" ( "ocaml" | "coq" ) "}\n" { print_newline () } - | "\\emph{" [^'}']* '}' { print_string (lexeme lexbuf); coq lexbuf } - | eof { () } - | "'a" { print_string "\\ensuremath{\\alpha}"; coq lexbuf } - | "*" { print_string "\\ensuremath{\\times}"; coq lexbuf } - | "forall" space* { print_string "\\ensuremath{\\forall}"; coq lexbuf } - | "exists" space* { print_string "\\ensuremath{\\exists}"; coq lexbuf } - (* une ou deux lettres, avec prime ou chiffre = variable *) - | (['a'-'z'] '\''?) as s - { print_string "\\ensuremath{"; print_string s; print_string "}"; - coq lexbuf } - | (['a'-'z'] as s) (['0'-'9'] as n) - { print_string "\\varind{"; print_char s; - print_string "}{"; print_char n; print_string "}"; - coq lexbuf } -(** - | (['a'-'z']['a'-'z'] '\''?) as s - { print_string "\\ensuremath{\\mathit{"; print_string s; - print_string "}}"; - coq lexbuf } -**) - | (ident '.' ident | ident) as s - { if !slides && is_keyword s then begin - print_string "{\\color{blue}"; print_string (lexeme lexbuf); - print_string "}" - end else - print_string (lexeme lexbuf); - coq lexbuf - } - | _ { print_string (lexeme lexbuf); coq lexbuf } - -and pp = parse - | "\\begin{ocaml}\n" - { print_endline "\\begin{alltt}"; - alltt lexbuf; - print_endline "\\end{alltt}"; - pp lexbuf } - | "\\begin{coq}\n" - { print_endline "\\begin{alltt}"; - coq lexbuf; - print_endline "\\end{alltt}"; - pp lexbuf } - | eof - { () } - | _ - { print_string (lexeme lexbuf); pp lexbuf } - -{ - let f = Sys.argv.(1) - let () = slides := (String.length f > 6 && String.sub f 0 7 = "slides-") - let cin = open_in f - let lb = from_channel cin - let _ = pp lb -} diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/rapport.tex b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/rapport.tex deleted file mode 100755 index c554c20722..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/rapport.tex +++ /dev/null @@ -1,572 +0,0 @@ -\documentclass{llncs} - -\usepackage[latin1]{inputenc} -\usepackage[french]{babel} -\usepackage{url} -\usepackage{graphicx} -%\usepackage{alltt} - -\newcommand{\ocaml}{OCaml} -\newcommand{\ocamlgraph}{Ocamlgraph} -\newcommand{\graphviz}{Graphviz} -\newcommand{\miquel}{A. Miquel} -\newcommand{\noeud}{n\oe ud} -\newcommand{\noeuds}{n\oe uds} - -\newcommand{\figs}[1]{(fig. \ref{fig:#1})} -\newcommand{\figl}[1]{figure \ref{fig:#1}} -\newcommand{\figa}[2]{(fig. \ref{fig:#1} #2)} - -\pagestyle{plain} -\begin{document} - -\title{Édition interactive de graphes\\ en géométrie hyperbolique} - -\author{Benjamin Vadon} - -\institute{Stage de TER 2006--2007 \\ -effectué sous la direction de Jean-Christophe Filliâtre \\ -à l'INRIA Futurs, dans l'équipe ProVal \\ -Parc Club Université, 91893 ORSAY} - -\maketitle - -\section{Introduction} -Nous nous intéressons à la visualisation et à l'édition de graphes. -La visualisation d'un graphe comportant peu de \noeuds\ et d'arêtes est -un problème trivial, mais le sujet se complique très rapidement dès -que le nombre de ces composants augmente. -En effet, la représentation d'un graphe pose un problème dès qu'il -commence à être d'une taille conséquente, et notamment quand le -nombre d'arêtes est relativement élevé en proportion du nombre de -\noeuds\ : les arêtes se croisent, ce qui est à même de gêner la -compréhension. - -De nombreux auteurs se sont penchés sur ce thème et un grand nombre -d'algorithmes de placement dans le plan en ont résulté. On peut citer -\graphviz~\cite{graphviz} comme suite logicielle très connue dans le -domaine de la visualisation planaire de graphes utilisant certain de -ces algorithmes. Ce problème a aussi été abordé d'une manière -différente, en tentant de réaliser une représentation dans l'espace. -Certes, avec cette méthode on peut arriver à ce que les arêtes ne -s'entrecroisent pas, mais cela ne répond pas tout à fait au problème -d'amélioration de lisibilité du graphe, car un graphe contenant -beaucoup d'éléments restera indéchiffrable, même en trois dimensions. - -L'objectif de ce stage est de se pencher sur ce sujet mais en -l'abordant d'une façon encore différente, et ce en utilisant une -représentation planaire, mais dans le plan hyperbolique de Poincaré, -contrairement au plan euclidien couramment utilisé. -Le point de départ de ce TER est le travail effectué par -\miquel~\cite{miquel} sur la représentation d'arbres à l'aide de la -géométrie hyperbolique. -Nous allons tout d'abord expliquer les grands principes de la géométrie -hyperbolique, et plus particulièrement dans le plan hyperbolique de -Poincaré. -Ensuite, nous ferons le lien entre cette géométrie non euclidienne et -son application à la représentation de graphes, par le biais du -travail de \miquel. -Et enfin, nous nous pencherons sur sa réalisation en \ocaml~\cite{ocaml} dans le -cadre de la librairie \ocamlgraph~\cite{ocamlgraph}, servant à la fois de support de -développement et de médium de diffusion. - - -\section{Géométrie hyperbolique} - -\subsection{Principe} - -La géométrie euclidienne est fondée sur cinq postulats dictés par Euclide -dans ses ``Éléments''. Le cinquième postulat, pouvant être formulé comme ceci -\begin{quote} -``Étant donnés une droite $D$ et un point M, il n'existe qu'une seule -droite passant par $M$ et qui soit parallèle à $D$.'' -\end{quote} -a été remis en question dès la renaissance, et c'est -environ en 1850 que Bolyai et Lobatchevsky ont indépendamment -découvert une nouvelle géométrie vérifiant les quatre premiers axiomes -d'Euclide, mais réfutant le postulat des parallèles. Certains principes de -la géométrie euclidienne sont conservés, tels que : -\begin{itemize} -\item une droite est le chemin le plus court reliant deux points ; -\item deux droites sont parallèles si elles ne s'intersectent pas. -\end{itemize} -Cette géométrie dite hyperbolique est donc basée sur le fait qu'en un -point $M$, il peut passer une infinité de droites parallèles à la -droite $D$. Ainsi exprimé, ce concept peut paraître difficile à -imaginer, mais plusieurs modèles permettant de se représenter la -géométrie hyperbolique ont été développé depuis sa découverte. La -\figl{parallels} illustre l'un de ces modèles. On peut y voir que les -trois droites $d_1$, $d_2$ et $d_3$ passent par $M$ et sont parallèles -à $D$ (et non parallèles entre elles car elles se croisent en $M$). -Précisons que dans cette géométrie, les droites nous apparaissent -courbes, mais ce sont bien des droites au sens où elles représentent -le plus court chemin entre deux points. - -\begin{figure} - \centering - \includegraphics[scale=0.50]{images/parallels.eps} - \caption{Théorème des parallèles en géométrie hyperbolique} - \label{fig:parallels} -\end{figure} -\subsection{Le modèle de Poincaré} -Henri Poincaré a imaginé un modèle pour la géométrie hyperbolique que -l'on appelle le disque de Poincaré. Ce modèle est composé d'un cercle $C$, -dénommé horizon, et d'un ensemble de point se trouvant à l'intérieur -strict de ce cercle. Les points de l'horizon sont dits idéaux pour le modèle. -Pour essayer de faciliter la compréhension de ce modèle, on peut se -pencher sur la \figl{passage} ci-après qui représente le plan euclidien sur -lequel on a déposé une lentille plan convexe convergente (semblable à -un bol transparent rempli d'eau), et dont la surface plane est notre -disque de Poincaré. -\begin{figure} - \centering - \begin{minipage}{0.49\linewidth} - \includegraphics[scale=0.25]{images/lentille1.eps} - \label{fig:lentille1} - \end{minipage} - \begin{minipage}{0.49\linewidth} - \includegraphics[scale=0.25]{images/lentille2.eps} - \label{fig:lentille2} - \end{minipage} - \caption{Représentation de passage entre le plan euclidien et le plan - hyperbolique} - \label{fig:passage} -\end{figure} - - On peut voir \figa{passage}{de gauche} que pour représenter un -point sur ce plan, on trace une droite $D$ entre le centre du -disque unité et le point dans le plan euclidien, et ensuite on prend -la normal $N$ au plan hyperbolique où $D$ a traversé la lentille. -La \figa{passage}{de droite} représente grossièrement le passage d'un dessin du -plan euclidien au dessin sur le disque de Poincaré. - -Les droites sont des arcs portés par des cercles perpendiculaires à -$C$ comme illustré par la droite $D_3$ ci-après \figs{cercles}. -\begin{figure}[!b] - \centering - \includegraphics[scale=0.31]{images/perpendiculaire.eps} - \caption{Représentation de quelques éléments dans un disque de Poincaré} - \label{fig:cercles} -\end{figure} -On peut noter que les droites $D_2$ et $D_3$ sont parallèles à $D_1$, mais, -étant donné qu'elles se coupent, $D_2$ et $D_3$ ne sont pas parallèles entre -elles. Remarquons aussi que la droite $D_1$ est portée par un cercle -de rayon infini ce qui fait d'elle un diamètre du cercle $C$. - -Ce modèle est doté d'une fonction $\delta$, que l'on -appelle une métrique, permettant de calculer la distance entre deux -points $A$ et $B$ du disque de Poincaré, dont la formule est la -suivante : -$$ -\delta(A,B) = \mathrm{ath}\left(\left|\frac{A-B}{1-\overline{A}B}\right|\right) -\quad\mbox{où}~ -\mathrm{ath}(x) = \frac{1}{2}\ln\left(\frac{1+x}{1-x}\right) -$$ - -On remarque \figs{cercles} que si l'un des point, $A$ ou $B$, se -rapproche fortement du bord $C$ du disque, alors la distance -$\delta(A,B)$ tend vers l'infini. Pour bien comprendre ce principe, -qui nous sera fort important dans notre application de ce modèle à la -représentation des graphes, on peut imaginer que nous observons un -petit être vivant sur ce plan hyperbolique et se déplaçant dessus. À -chaque pas qu'il fait dans la direction de l'horizon (le bord du -disque pour l'observateur), la distance par unité de pas qu'il -parcourt paraît de plus en plus petite pour l'observateur. Ainsi le -bord du disque est inatteignable pour ce petit être vivant sur le plan -de Poincaré. - -\medskip - -C'est en utilisant ce point de vue que nous avons réalisé le traçage -des segments de droites dans le plan hyperbolique, en implantant une -tortue LOGO se déplaçant sur ce plan. - -\subsection{Tortue hyperbolique} - -Ce principe de tortue LOGO, emprunté à \miquel, rend bien plus aisé la -compréhension de la géométrie hyperbolique. Il faut clairement -comprendre que nous aurons deux mondes : - -\begin{itemize} -\item le point de vue de l'observateur qui voit un disque unité, par -définition un espace borné, sur le lequel se déplace la tortue ; -\item le point de vue de la tortue qui se déplace dans le plan -hyperbolique, par définition un espace infini. -\end{itemize} - -Une tortue est définie par un type \texttt{turtle} composé d'une position et -d'une direction. -\begin{center} -\texttt{type turtle = -\{ - pos : coord; - dir : coord; -\} -} -\end{center} -Elle peut avancer et tourner, à gauche et à droite, tout comme son -équivalente en géométrie euclidienne. Bien entendu, pour représenter -ce déplacement, il nous faut des fonctions pour connaître la position -et la direction après un pas de mouvement. Ces foncions sont détaillés -dans \cite{miquel}. Les fonctions de déplacement et de rotations -(angle en radian) sont les suivantes : -\begin{itemize} -\item -\texttt{val advance : turtle -> float -> turtle = } -\item -\texttt{val turn\_left : turtle -> float -> turtle = } -\item -\texttt{val turn\_right : turtle -> float -> turtle = } -\end{itemize} - -\medskip - -On peut voir \figs{parcours} le parcours de différentes tortues se -déplaçant sur le plan de Poincaré. On peut observer, entre deux pas de -temps identiques, la différence de distance parcourue qui apparaît à -l'observateur. - -\begin{figure} - \centering - \begin{minipage}{0.49\linewidth} - \includegraphics[scale=0.27]{images/parcours.eps} - \caption{Parcours de différentes tortues sur le plan de Poincaré} - \label{fig:parcours} - \end{minipage} - \begin{minipage}{0.49\linewidth} - \includegraphics[scale=0.50]{images/dictateurs.eps} - \caption{Le paradoxe des $n$ dictateurs} - \label{fig:dictateurs} - \end{minipage} -\end{figure} - -Nous avons maintenant un moyen de tracer facilement des droites sur le -plan hyperbolique, et nous pouvons nous intéresser au dessin d'un -graphe sur ce plan. - -\section{Visualisation de graphes en géométrie hyperbolique} - -Nous allons commencé par présenter brièvement le travail effectué par -\miquel~\cite{miquel} sur la représentation des arbres dans le plan de -Poincaré. Ensuite, nous montrerons comment nous avons choisi de -représenter les graphes dans le même modèle géométrique. Et enfin, -nous expliquerons les problèmes de placement auxquels nous avons dû -faire face et comment nous les avons résolus. - -\subsection{Visualisation d'arbres en géométrie hyperbolique} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\label{arbres} -Nous nous intéressons d'abord au travail effectué par -\miquel~\cite{miquel} sur les arbres qui sont un cas particulier, et -simplifié, de graphes ayant une seule source et aucun cycle. Le -problème est bien-sûr de placer correctement les \noeuds. Ensuite le -traçage des arêtes est relativement trivial avec l'aide de notre -tortue et de ses fonctions de mouvement l'accompagnement. - -Pour répartir les \noeuds\ d'un arbre dans le plan hyperbolique, \miquel se -base sur deux propriétés de ce plan : -\begin{itemize} -\item une droite du plan le sépare en deux demi-plans, tout comme en - géométrie euclidienne ; -\item quelque soit $n$, on peut disposer de $n$ demi-plans deux à deux - disjoints, contrairement à la géométrie euclidienne. -\end{itemize} - -Pour arriver à séparer l'espace en $n$ demi-plans, \miquel\ illustre -le problème par le paradoxe des $n$ dictateurs. Le principe en est -simple : dans un espace fini à deux dimensions, $n$ dictateurs situés en -un même point désirent se partager le monde de façon à régner chacun -sur un demi-espace. Pour ce faire, ils se mettent en marche dans n -directions régulièrement espacées de $\frac{360}{n}$ -degrés \figs{dictateurs}. Lorsqu'ils ont tous parcouru une distance $d$, les $n$ dictateurs -s'arrêtent, et chacun d'entre eux s'approprie le demi-espace en face -de lui (et dont la frontière est une droite imaginaire passant par -ses deux pieds). - - Dans le plan hyperbolique, quel que soit $n$, il existe une distance $d$ - à partir de laquelle les demi-espaces attribués aux dictateurs sont - deux à deux disjoints. Pour calculer cette distance $d$, \miquel\ utilise la - formule suivante : -$$ -d_n= \mathrm{ath}\left(\mathrm{tan}\left(\frac{\pi}{4}-\frac{\pi}{2n}\right)\right) -$$ -Pour le placement des \noeuds, il pose donc la racine au centre du -disque, sépare l'espace en $n$ demi-plans, où $n$ est le nombre de fils de -la racine, et enfin fait avancer la tortue de chaque fils suivant la -direction et la distance données. Ensuite, il fait de même -récursivement pour l'ensemble des successeurs de ces \noeuds. On peut voir \figs{htree} -le résultat final sur une arborescence de répertoire Unix. - -\begin{figure} - \centering - \includegraphics[scale=0.30]{images/htree.eps} - \caption{Affichage d'arbres} - \label{fig:htree} -\end{figure} - - -Après avoir déterminé où placer les \noeuds\ d'un arbre, on peut -s'intéresser au placement des \noeuds\ d'un graphe qui pose certains -problèmes comme, par exemple, le fait que des arêtes peuvent se croiser. - -\subsection{Adaptation aux graphes} - -Le graphe diffère sur deux points importants, pour notre sujet, par -rapport à un arbre : -\begin{itemize} -\item il n'y a pas de racine, ce qui implique un choix arbitraire pour - commencer le tracé ; -\item il peut, avec une forte certitude, y avoir des arêtes qui - s'entrecroisent. -\end{itemize} - -On reporte le choix de la racine sur la librairie -\ocamlgraph\ sous la forme d'une fonction donnant un \noeud\ -arbitraire. À partir de cette racine, on procède comme pour -l'affichage d'un arbre, c'est-à-dire qu'on affecte à chacun de ses -successeurs immédiats un demi-plan puis, récursivement, on procède à -l'affichage des descendants de chacun de ses successeurs. Mais il y a -cependant deux différences importantes. En effet, il peut y avoir -plusieurs chemins différents menant de la racine à un \noeud\ donné. -Dès lors, un \noeud\ peut déjà avoir été affiché comme successeur -immédiat d'un descendant de la racine déjà traité, et ne doit donc -plus être considéré comme successeur de tout autre \noeud. -Cependant, les arêtes correspondantes doivent être affichées, ce -qui amène à ajouter des arêtes transversales par rapport au dessin -d'un arbre, c'est-à-dire des arêtes s'affranchissant des frontières -entre demi-plans. - -Ces deux dissemblances peuvent avoir des conséquences importantes pour -l'affichage d'un graphe, ce qui implique de considérer avec soin les -deux paramètres suivants : d'une part, le type de parcours effectué à -partir de la racine, qui va déterminer si un \noeud\ est visité plus ou -moins tôt ; et d'autre part, l'ordonnancement des successeurs d'un -\noeud, qui peut rapprocher ou éloigner les \noeuds\ reliés par des -arêtes transversales. Nous allons maintenant présenter des -heuristiques concernant ces deux points. - -\subsection{Heuristiques de placement} - -Pour parcourir un graphe, on a principalement deux choix : le parcours -en profondeur (Dfs, de l'anglais \textit{Depth-first search}) et le -parcours en largeur (Bfs, de l'anglais \textit{Breadth-first search}). Nous avons -implanté les deux, ce qui a permis de voir les conséquences d'un tel -choix. En observant les deux figures suivantes (fig. \ref{fig:dfs}, -\ref{fig:bfs}), on se doute que le choix entre les deux n'est pas -évident. - - Au premier coup d'oeil, le Dfs semble moins croiser -les arêtes et le Bfs paraît mieux équilibrer la représentation du -graphe. En effet, sur la \figl{dfs} de gauche, on voit une tendance à regrouper les -\noeuds\ et à éviter trop de croisement d'arêtes, contrairement à la -\figl{dfs} de droite qui a tendance, elle, à se faire croiser une grande -quantité d'arêtes. Mais à la décharge de Bfs, il permet d'afficher -plus de \noeuds\ que Dfs (respectivement 16 contre 11, pour la -\figl{dfs}), ce qui implique l'affichage de plus d'arêtes et donc un -risque plus grand que certaines se croisent. - -\begin{figure} - \centering - \begin{minipage}{0.49\linewidth} - \includegraphics[scale=0.30]{images/db4_dfs.eps} - \label{fig:dfs-dfs} - \end{minipage} - \begin{minipage}{0.49\linewidth} - \includegraphics[scale=0.30]{images/db4_bfs.eps} - \label{fig:dfs-bfs} - \end{minipage} - \caption{Intérêt d'un parcours en profondeur} - \label{fig:dfs} -\end{figure} - -Pour la \figl{bfs}, la différence du nombre de \noeuds\ affichés est -moins flagrante, mais reste plus grande pour Bfs (16 contre 14 pour -Dfs). La \figl{bfs} de gauche montre par contre bien que le Dfs compresse -tout le graphe dans un coin du plan, alors que le Bfs \figa{bfs} {de droite} -utilise pleinement le plan hyperbolique, sans pour autant trop croiser les -arêtes. - - -\begin{figure} - \centering - \begin{minipage}{0.49\linewidth} - \includegraphics[scale=0.30]{images/parcours_dfs.eps} - \label{fig:bfs-dfs} - \end{minipage} - \begin{minipage}{0.49\linewidth} - \includegraphics[scale=0.30]{images/parcours_bfs.eps} - \label{fig:bfs-bfs} - \end{minipage} - \caption{Intérêt d'un parcours en largeur} - \label{fig:bfs} -\end{figure} - -Pour choisir un parcours par défaut, nous avons préféré nous appuyer -sur le fait que le but était tout de même de visualiser le plus de -\noeuds\ possibles, et aussi d'utiliser le maximum du plan -hyperbolique. Le choix s'est donc objectivement porté sur le parcours -Bfs comme parcours par défaut, mais une option de la ligne de commande -permet de choisir Dfs. - -\medskip - -Pour palier les défauts de placement engendrés par le Bfs, on a décidé -d'ordonnancer les successeurs d'un \noeud\ de sorte que le moins -d'arêtes possibles ne se croisent. Pour ce faire, on commence tout -d'abord par construire la liste de tous les successeurs d'un noeud qui -ne sont pas déjà affichés. De cette liste, on construit la liste des -composantes fortement connexes. Ensuite, pour ordonner chaque -composante, on son \noeud\ de degré minimal et on effectue à partir de -lui un parcours en profondeur. Les listes résultantes de l'ensemble -des composantes sont ensuite concaténées pour donner la liste -ordonnée des successeurs du \noeud\ étudié. - -\section{Réalisation dans \ocamlgraph} - -\subsection {Présentation de \ocamlgraph} - -\ocamlgraph~\cite{ocamlgraph} est une bibliothèque, -développée pour le langage \ocaml~\cite{ocaml}, qui propose de multiples structures -de données de graphes ainsi que plusieurs opérations et algorithmes -classiques sur les graphes. Cette librairie permet de s'abstraire -complètement des données utilisées dans les graphes grâce à -l'attention portée par les développeurs sur la généricité de leur -code, ce qui est un atout majeur pour un usage dans tous les domaines. -Pour arriver à cette généricité, la bibliothèque exploite le système de -modules du langage \ocaml~\cite{ocaml}, et notamment les modules paramétrés, -communément appelés les foncteurs. Ces foncteurs permettent d'avoir -des structures de données et des algorithmes indépendants. Ainsi, -l'utilisateur peut utiliser sa propre structure de données et créer -les modules correspondants. Pour le programmeur, les foncteurs évitent -une duplication inutile de code. -\ocamlgraph\ , sans être une librairie complète, en ce sens où tous les -algorithmes existants sur les graphes n'y sont pas implantés, est bien -plus qu'une base car pleinement fonctionnelle et d'une utilisation -relativement aisée, une fois que le principe de fonctionnement à été compris. - -L'objectif pratique de ce TER est d'étendre \ocamlgraph\ par un outil graphique -permettant de visualiser et d'éditer des graphes. Pour le développement de -cet éditeur graphique, la bibliothèque est principalement utilisée pour la structure -de données des graphes, et aussi pour des fonctionnalités internes à -l'éditeur comme calculer des composantes connexes, ou bien trouver les -successeurs d'un \noeud. - -L'éditeur est donc indépendant de la bibliothèque pour son utilisation -(il n'est pas utile de posséder la librairie pour utiliser l'éditeur), -mais il sera tout de même livré avec \ocamlgraph\ pour des raisons -pratiques et ``historiques''(il a été développé avec et pour -\ocamlgraph). - -\subsection {Fonctionnalités} -L'éditeur de graphes comporte certaines fonctions de base pour remplir -son objectif de visualisation et d'édition. Il permet de traiter les -fichiers aux formats Dot \cite{graphviz} et Gml \cite{gml}. On peut donc ouvrir un fichier, créer -un nouveau graphe, et sauvegarder sous ces formats. -Concernant l'édition, on peut ajouter des \noeuds\ isolés et des successeurs -à un \noeud. Il est possible de créer des arêtes entre un \noeud\ et un -ensemble de \noeuds\ sélectionnés. Il existe bien entendu les -réciproques qui sont la suppression d'un \noeud, d'un ensemble de -\noeuds\ et aussi d'arêtes reliant un ensemble de \noeuds. -Il est aussi possible de changer le \noeud\ racine à partir duquel le -graphe est dessiné. - -À la ligne de commande, il est possible de lancer l'éditeur en -chargeant directement un graphe (format Gml ou Dot), et aussi de -spécifier certains paramètres : -\begin{itemize} -\item le taux de rafraîchissement, option \texttt{-rr} $n$, où $n > 0$; -\item la désactivation du mode anti-aliasé, option \texttt{-aa}; -\item le choix entre Dfs et Bfs, options respectivement \texttt{-dfs} et \texttt{-bfs}. -\end{itemize} - - -\section{Conclusion} - -Dans ce stage, nous nous sommes intéressés au problème complexe et -bien connu de l'affichage de graphes. Pour cela, nous avons repris le -travail effectué par \miquel~\cite{miquel} sur l'affichage d'arbres -infinis avec une représentation dans la géométrie hyperbolique, et -plus précisément dans le modèle de Poincaré. Nous avons étendu ce -travail à la visualisation des graphes. Nous avons porté le tout sous -une bibliothèque graphique de plus haut niveau, GTK+ \cite{gtk} dont -le portage en \ocaml\ s'appelle Lablgtk2 \cite{lablgtk}, qui permet -des interactions bien plus intéressantes avec l'utilisateur que la -bibliothèque Graphics d'\ocaml\ utilisée par \miquel. Au final, nous -nous sommes intéressés à l'implantation des fonctionnalités d'édition -de base (ajout/suppression de \noeuds\ et d'arêtes). - -Durant ce stage, plusieurs points plus ou moins nouveaux et plus ou -moins difficiles ont dû être abordés : -\begin{itemize} -\item la découverte et l'utilisation de \texttt {subversion}; -\item la découverte des modules et de la couche objet - d'\ocaml~\cite{ocaml}; -\item l'utilisation intensive de Linux; -\item la découverte d'Emacs \cite{emacs}; -\item la découverte de GTK et de son pendant en \ocaml, Lablgtk; -\item la découverte de Latex. -\end{itemize} -Les sujets les plus difficiles à aborder, à mon avis, ont été d'une -part les foncteurs d'\ocaml\ ce qui fût nécessaire pour la reprise des -idées du code d'\miquel\ et aussi l'utilisation d'\ocamlgraph, et -d'autre part, la librairie graphique Lablgtk basée sur la couche objet -d'\ocaml\ ce qui l'a rendait un peu plus difficile à appréhender, ne -connaissant ni la syntaxe ni les principes de la couche objet d'\ocaml. - -Le travail effectué à l'heure actuelle n'est qu'une base qui peut être -améliorée. Quelques grands thèmes peuvent être envisagés pour son -évolution. D'une part, on peut effectuer des ajouts triviaux pour -permettre un peu plus de diversité dans les fonctions d'édition tels -que : -\begin{itemize} -\item la gestion des graphes orientés; -\item l'ajout d'étiquette aux arêtes; -\item la création d'une clique avec un ensemble de \noeuds\ sélectionnés; -\item la création d'un graphe plein de $n$ \noeuds. -\end{itemize} - -D'autre part, on pourrait étudier le passage à l'échelle, et voir comment -réagirait l'éditeur face à des milliers, voire des millions de \noeuds. On -peut penser qu'une optimisation du code serait nécessaire pour arriver -à gérer une grande quantité d'éléments. Mais le problème ne se -situerait pas seulement au niveau des ressources consommées, mais aussi de -l'interface graphique actuelle. On peut imaginer une modification de -l'abre situé en partie droite de l'application en permettant -d'englober les \noeuds\ dans leur composante respective. - -On pourrait aussi améliorer l'intégration d'\ocamlgraph\ à -l'éditeur, en ajoutant des possibilités de visualiser des algorithmes -implantés dans \ocamlgraph\ comme afficher le plus court chemin entre -deux \noeuds, faire une k-coloration d'un graphe. Ceux-ci -permettraient à cet éditeur de prendre une tournure pédagogique en -permettant ce genre d'opérations. - -Et enfin, la transformation probablement la plus intéressante pour un -usage professionnel serait de transformer l'éditeur en un foncteur, et -ainsi, cela permettrait à l'utilisateur de se créer son propre éditeur -de graphe avec ses structures de données et ses algorithmes -appropriés. - -\section*{Remerciement} - -Je tiens à remercier Mme Marie-Christine Rousset qui m'a mis en -rapport avec l'équipe Proval et sans qui je n'aurai sans doute jamais -pu avoir la chance de faire ce stage aussi enrichissant. Je tiens -aussi à remercier Mme Christine Paulin qui m'a accueilli dans son -équipe, et qui m'a accordé des fonds pour pouvoir effectuer les -trajets nécessaires. Et bien entendu, je suis extrêmement -reconnaissant à l'égard de M. Jean-Christophe Filliâtre qui a toujours -été là pour m'orienter, me conseiller et me corriger. Le fait de -travailler à ses côtés m'a énormément appris, aussi bien sur les -outils utilisés, que par les méthodes de travail qu'il emploie. - - - -\bibliographystyle{plain} -\bibliography{./biblio} - -\end{document} - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: t -%%% End: diff --git a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/soutenance.tex b/jscomp/build_tests/ocamlgraph/editor/rapport-ter/soutenance.tex deleted file mode 100755 index e0765dd959..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/rapport-ter/soutenance.tex +++ /dev/null @@ -1,218 +0,0 @@ -\documentclass{beamer} - -\usetheme{Singapore} - -\usepackage[latin1]{inputenc} -\usepackage[french]{babel} -\usepackage{graphicx} - - -\begin{document} - -\title[Édition interactive de graphes]{Édition interactive de graphes\\ en géométrie hyperbolique} - -\author{Benjamin Vadon} - -\institute[TER 2006--2007]{Stage de TER 2006--2007 \\ -effectué sous la direction de Jean-Christophe Filliâtre \\ -à l'INRIA Futurs, dans l'équipe ProVal \\ -Parc Club Université, 91893 ORSAY} - -\begin{frame} -\titlepage -\end{frame} - -\begin{frame} - \frametitle{La visualisation de graphes} - \begin{itemize} - \item Un problème complexe - \item De nombreux algorithmes de placement, mais aucune solution générale - \item Une approche différente - \begin{itemize} - \item A. Miquel, \emph{Affichage générique d'arbres à l'aide de la géométrie hyperbolique} (JFLA 2000) - \end{itemize} - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{Visualisation d'arbre en géométrie hyperbolique} - \begin{figure} - \begin{center} - \includegraphics[scale=0.3]{images/htree.pdf} - \end{center} - \end{figure} -\end{frame} - -\begin{frame} - \frametitle{Plan} - \begin{itemize} - \item La géométrie hyperbolique - \item La visualisation de graphes en géométrie hyperbolique - \item Démonstration - \end{itemize} -\end{frame} - - -\begin{frame} - \frametitle{Historique} - \begin{itemize} - \item $V^e$ postulat de la géométrie euclidienne - \begin{quote} - \og Étant donnés une droite $D$ et un point $M$, il n'existe qu'une seule - droite passant par $M$ et qui soit parallèle à $D$. \fg - \end{quote} - \item Théories de Bolyai et Lobatchevsky contredisant ce postulat - et introduisant la géométrie hyperbolique - \item En un point $M$, il peut passer une infinité de droites - parallèles à la droite $D$ - \bigskip - \begin{center} - \includegraphics[height=2.5cm]{images/parallels.png} - \end{center} - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{Modèle du disque de Poincaré} - - Passage du plan euclidien au plan de Poincaré - - \begin{center} - \includegraphics[scale=0.5]{images/lentille1.jpg} - \end{center} -\end{frame} - -\begin{frame} - \frametitle{Disque de Poincaré} - \begin{itemize} - \item Les droites sont des arcs de cercles - \begin{center} - \includegraphics[scale=0.3]{images/perpendiculaire.png} - \end{center} - \item On peut définir, dans le plan de Poincaré, une tortue \og à la LOGO \fg - \end{itemize} - - -\end{frame} - -\begin{frame} - \frametitle{Application à la visualisation de graphes} -Répartition du plan entre les successeurs d'un n\oe ud - \begin{center} - \includegraphics[scale=0.3027]{images/dictateurs.jpg} - \end{center} -\end{frame} - -\begin{frame} - \frametitle{Application à la visualisation de graphes} - Répartition d'un demi-plan entre les successeurs d'un n\oe ud - \begin{center} - \begin{minipage}{0.3\linewidth} -\begin{tabular}{l} - A $\rightarrow$ [1; 2; 3 ] \\ - B $\rightarrow$ [3; 4; 5 ] -\end{tabular} - \end{minipage} \quad - \begin{minipage}{0.6\linewidth} - \includegraphics[scale=0.3]{images/dictateursniv2.jpg} - \end{minipage} - \end{center} -\end{frame} - -\begin{frame} - \frametitle{Application à la visualisation de graphes} -Arêtes s'affranchissant des frontières entre demi-plans \smallskip - \begin{center} - \begin{minipage}{0.3\linewidth} -\begin{tabular}{l} - A $\rightarrow$ [1; 2; 3 ] \\ - B $\rightarrow$ [3; 4; 5 ] -\end{tabular} - \end{minipage} \quad - \begin{minipage}{0.6\linewidth} - \includegraphics[scale=0.3]{images/intern-edge.jpg} - \end{minipage} -\end{center} -\end{frame} - -\begin{frame} - \frametitle{Parcours des graphes} - Deux parcours possibles : - \begin{center} - en profondeur (Dfs) et en largeur (Bfs) - \end{center} - \begin{center} - \begin{minipage}{0.49\linewidth} - \includegraphics[scale=0.27]{images/parcours_dfs.jpg} - \end{minipage} - \begin{minipage}{0.49\linewidth} - \includegraphics[scale=0.27]{images/parcours_bfs.jpg} - \end{minipage} - - \end{center} -\end{frame} - - -\begin{frame} -\frametitle{Ordonnancement des successeurs d'un n\oe ud} - \begin{itemize} - \item regrouper les composantes - \begin{center} - \includegraphics[scale=0.27]{images/composantes.jpg} - \end{center} - \item parcourir chaque composante - \begin{center} - \includegraphics[scale=0.27]{images/parcours-composante.jpg} - \end{center} - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{Réalisation en Ocaml} - \begin{minipage}{0.70\linewidth} - \begin{itemize} - \item Intégration dans Ocamlgraph - \begin{itemize} - \item utilise Ocamlgraph de manière interne - \item livré avec Ocamlgraph - \end{itemize} - \item Utilisation de la bibliothèque graphique GTK2+ (par le biais - de lablgtk2) - \item Environ 1600 lignes de code - \end{itemize} - \end{minipage} - \begin{minipage}{0.28\linewidth} - \begin{center} - \includegraphics[scale=0.4]{images/dep.jpg} - \end{center} - \end{minipage} -\end{frame} - - -\begin{frame} - \begin{center} - Démonstration - \end{center} -\end{frame} - -\begin{frame} - \frametitle{Améliorations et extensions possibles} - \begin{itemize} - \item Fonctionnalités de base - \begin{itemize} - \item Gestion des graphes orientés - \item Arêtes étiquetées - \item Opérations avancées (clôture transitive, noyau, clique, etc.) - \end{itemize} - \item Optimisation du code et animation plus fluide - \item Visualisation d'algorithmes (plus court chemin, parcours, etc.) - \item Fonctorisation du code - \end{itemize} -\end{frame} - -\end{document} - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: t -%%% End: diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/de_bruijn4.gml b/jscomp/build_tests/ocamlgraph/editor/tests/de_bruijn4.gml deleted file mode 100755 index b0d97c7902..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/de_bruijn4.gml +++ /dev/null @@ -1,222 +0,0 @@ -graph [ - node [ - id 1 - label 0 - ] - node [ - id 2 - label 1 - ] - node [ - id 3 - label 2 - ] - node [ - id 4 - label 3 - ] - node [ - id 5 - label 4 - ] - node [ - id 6 - label 5 - ] - node [ - id 7 - label 6 - ] - node [ - id 8 - label 7 - ] - node [ - id 9 - label 8 - ] - node [ - id 10 - label 9 - ] - node [ - id 11 - label 10 - ] - node [ - id 12 - label 11 - ] - node [ - id 13 - label 12 - ] - node [ - id 14 - label 13 - ] - node [ - id 15 - label 14 - ] - node [ - id 16 - label 15 - ] - edge [ - source 1 - target 1 - label 0 - ] - edge [ - source 2 - target 1 - label 0 - ] - edge [ - source 3 - target 2 - label 0 - ] - edge [ - source 4 - target 2 - label 0 - ] - edge [ - source 5 - target 3 - label 0 - ] - edge [ - source 6 - target 3 - label 0 - ] - edge [ - source 7 - target 4 - label 0 - ] - edge [ - source 8 - target 4 - label 0 - ] - edge [ - source 9 - target 1 - label 0 - ] - edge [ - source 9 - target 2 - label 0 - ] - edge [ - source 9 - target 5 - label 0 - ] - edge [ - source 10 - target 3 - label 0 - ] - edge [ - source 10 - target 4 - label 0 - ] - edge [ - source 10 - target 5 - label 0 - ] - edge [ - source 11 - target 5 - label 0 - ] - edge [ - source 11 - target 6 - label 0 - ] - edge [ - source 12 - target 6 - label 0 - ] - edge [ - source 12 - target 7 - label 0 - ] - edge [ - source 12 - target 8 - label 0 - ] - edge [ - source 13 - target 7 - label 0 - ] - edge [ - source 13 - target 9 - label 0 - ] - edge [ - source 13 - target 10 - label 0 - ] - edge [ - source 14 - target 7 - label 0 - ] - edge [ - source 14 - target 11 - label 0 - ] - edge [ - source 14 - target 12 - label 0 - ] - edge [ - source 15 - target 8 - label 0 - ] - edge [ - source 15 - target 13 - label 0 - ] - edge [ - source 15 - target 14 - label 0 - ] - edge [ - source 16 - target 8 - label 0 - ] - edge [ - source 16 - target 15 - label 0 - ] - edge [ - source 16 - target 16 - label 0 - ] -] - diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/dep_ed.dot b/jscomp/build_tests/ocamlgraph/editor/tests/dep_ed.dot deleted file mode 100755 index b749e430b8..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/dep_ed.dot +++ /dev/null @@ -1,9 +0,0 @@ -digraph G { - size="7.5,10" ; - rankdir = TB ; - "Ed_main" -> "Ed_display" ; - "Ed_main" -> "Ed_draw" ; - "Ed_graph" -> "Ed_hyper" ; - "Ed_draw" -> "Ed_graph" ; - "Ed_display" -> "Ed_graph" ; -} diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/dep_why.dot b/jscomp/build_tests/ocamlgraph/editor/tests/dep_why.dot deleted file mode 100755 index 9b549042d7..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/dep_why.dot +++ /dev/null @@ -1,103 +0,0 @@ -digraph G { - size="7.5,10" ; - rankdir = TB ; - "Why" -> "Main" ; - "Theoryreducer" -> "Logic_decl" ; - "Theoryreducer" -> "Pp" ; - "Theoryreducer" -> "Unionfind" ; - "Theory_filtering" -> "Logic_decl" ; - "Theory_filtering" -> "Pp" ; - "Theory_filtering" -> "Unionfind" ; - "Options" -> "Lib" ; - "Options" -> "Version" ; - "Main" -> "Coq" ; - "Main" -> "Dispatcher" ; - "Main" -> "Fastwp" ; - "Main" -> "Gappa" ; - "Main" -> "Hol4" ; - "Main" -> "Holl" ; - "Main" -> "Hypotheses_filtering" ; - "Main" -> "Isabelle" ; - "Main" -> "Mizar" ; - "Main" -> "Monad" ; - "Main" -> "Ocaml" ; - "Main" -> "PredDefExpansor" ; - "Main" -> "Pvs" ; - "Main" -> "Wp" ; - "Hypotheses_filtering" -> "Util" ; - "Encoding_mono" -> "Util" ; - "Zenon" -> "Encoding" ; - "Zenon" -> "Ltyping" ; - "Wp" -> "Typing" ; - "Vcg" -> "Log" ; - "Vcg" -> "Util" ; - "Util" -> "Logic_decl" ; - "Util" -> "Rename" ; - "Typing" -> "Ltyping" ; - "Types" -> "Effect" ; - "Smtlib" -> "Encoding" ; - "Simplify" -> "Encoding" ; - "Report" -> "Lexer" ; - "Report" -> "Misc" ; - "Rename" -> "Pp" ; - "Rename" -> "Report" ; - "Regen" -> "Vcg" ; - "Red" -> "Util" ; - "Pvs" -> "Vcg" ; - "Purify" -> "Env" ; - "Ptree" -> "Loc" ; - "Ptree" -> "Types" ; - "Pretty" -> "Logic_decl" ; - "Pretty" -> "Pp" ; - "PredDefExpansor" -> "Util" ; - "Parser" -> "Error" ; - "Parser" -> "Float_lexer" ; - "Parser" -> "Ptree" ; - "Ocaml" -> "Util" ; - "Monomorph" -> "Vcg" ; - "Monad" -> "Typing" ; - "Mlize" -> "Monad" ; - "Mizar" -> "Regen" ; - "Misc" -> "Ast" ; - "Misc" -> "Option_misc" ; - "Misc" -> "Options" ; - "Ltyping" -> "Util" ; - "Logic" -> "Ident" ; - "Logic_decl" -> "Env" ; - "Lexer" -> "Parser" ; - "Isabelle" -> "Regen" ; - "Holl" -> "Vcg" ; - "Hol4" -> "Vcg" ; - "Harvey" -> "Encoding" ; - "Gappa" -> "Logic_decl" ; - "Gappa" -> "Pp" ; - "Fpi" -> "Misc" ; - "Fpi" -> "Pp" ; - "Fastwp" -> "Util" ; - "Error" -> "Effect" ; - "Env" -> "Report" ; - "Encoding_strat" -> "Util" ; - "Encoding_rec" -> "Logic_decl" ; - "Encoding_pred" -> "Logic_decl" ; - "Encoding" -> "Encoding_mono" ; - "Encoding" -> "Encoding_pred" ; - "Encoding" -> "Encoding_rec" ; - "Encoding" -> "Encoding_strat" ; - "Encoding" -> "Monomorph" ; - "Effect" -> "Logic" ; - "Dispatcher" -> "Cvcl" ; - "Dispatcher" -> "Harvey" ; - "Dispatcher" -> "Pretty" ; - "Dispatcher" -> "Simplify" ; - "Dispatcher" -> "Smtlib" ; - "Dispatcher" -> "Theory_filtering" ; - "Dispatcher" -> "Zenon" ; - "Cvcl" -> "Encoding" ; - "Cvcl" -> "Ltyping" ; - "Coq" -> "Regen" ; - "Cc" -> "Loc" ; - "Cc" -> "Logic" ; - "Ast" -> "Cc" ; - "Ast" -> "Ptree" ; - "Annot" -> "Util" ; -} diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/divisors12.gml b/jscomp/build_tests/ocamlgraph/editor/tests/divisors12.gml deleted file mode 100755 index ca1b864d1a..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/divisors12.gml +++ /dev/null @@ -1,107 +0,0 @@ -graph [ - node [ - id 1 - label 1 - ] - node [ - id 2 - label 2 - ] - node [ - id 3 - label 3 - ] - node [ - id 4 - label 4 - ] - node [ - id 5 - label 5 - ] - node [ - id 6 - label 6 - ] - node [ - id 7 - label 7 - ] - node [ - id 8 - label 8 - ] - node [ - id 9 - label 9 - ] - node [ - id 10 - label 10 - ] - node [ - id 11 - label 11 - ] - edge [ - source 3 - target 1 - - ] - edge [ - source 5 - target 1 - - ] - edge [ - source 5 - target 2 - - ] - edge [ - source 7 - target 1 - - ] - edge [ - source 7 - target 3 - - ] - edge [ - source 8 - target 2 - - ] - edge [ - source 9 - target 1 - - ] - edge [ - source 9 - target 4 - - ] - edge [ - source 11 - target 1 - - ] - edge [ - source 11 - target 2 - - ] - edge [ - source 11 - target 3 - - ] - edge [ - source 11 - target 5 - - ] -] - diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/fsm.dot b/jscomp/build_tests/ocamlgraph/editor/tests/fsm.dot deleted file mode 100755 index 6c9c55f7d5..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/fsm.dot +++ /dev/null @@ -1,16 +0,0 @@ -digraph finite_state_machine { - LR_0 -> LR_2 [ label = "SS(B)" ]; - LR_0 -> LR_1 [ label = "SS(S)" ]; - LR_1 -> LR_3 [ label = "S($end)" ]; - LR_2 -> LR_6 [ label = "SS(b)" ]; - LR_2 -> LR_5 [ label = "SS(a)" ]; - LR_2 -> LR_4 [ label = "S(A)" ]; - LR_5 -> LR_7 [ label = "S(b)" ]; - LR_5 -> LR_5 [ label = "S(a)" ]; - LR_6 -> LR_6 [ label = "S(b)" ]; - LR_6 -> LR_5 [ label = "S(a)" ]; - LR_7 -> LR_8 [ label = "S(b)" ]; - LR_7 -> LR_5 [ label = "S(a)" ]; - LR_8 -> LR_6 [ label = "S(b)" ]; - LR_8 -> LR_5 [ label = "S(a)" ]; -} diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/full10.gml b/jscomp/build_tests/ocamlgraph/editor/tests/full10.gml deleted file mode 100755 index fb48490c9e..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/full10.gml +++ /dev/null @@ -1,318 +0,0 @@ -graph [ - node [ - id 1 - label 1 - ] - node [ - id 2 - label 2 - ] - node [ - id 3 - label 3 - ] - node [ - id 4 - label 4 - ] - node [ - id 5 - label 5 - ] - node [ - id 6 - label 6 - ] - node [ - id 7 - label 7 - ] - node [ - id 8 - label 8 - ] - node [ - id 9 - label 9 - ] - node [ - id 10 - label 10 - ] - edge [ - source 1 - target 1 - label 0 - ] - edge [ - source 2 - target 1 - label 0 - ] - edge [ - source 2 - target 2 - label 0 - ] - edge [ - source 3 - target 1 - label 0 - ] - edge [ - source 3 - target 2 - label 0 - ] - edge [ - source 3 - target 3 - label 0 - ] - edge [ - source 4 - target 1 - label 0 - ] - edge [ - source 4 - target 2 - label 0 - ] - edge [ - source 4 - target 3 - label 0 - ] - edge [ - source 4 - target 4 - label 0 - ] - edge [ - source 5 - target 1 - label 0 - ] - edge [ - source 5 - target 2 - label 0 - ] - edge [ - source 5 - target 3 - label 0 - ] - edge [ - source 5 - target 4 - label 0 - ] - edge [ - source 5 - target 5 - label 0 - ] - edge [ - source 6 - target 1 - label 0 - ] - edge [ - source 6 - target 2 - label 0 - ] - edge [ - source 6 - target 3 - label 0 - ] - edge [ - source 6 - target 4 - label 0 - ] - edge [ - source 6 - target 5 - label 0 - ] - edge [ - source 6 - target 6 - label 0 - ] - edge [ - source 7 - target 1 - label 0 - ] - edge [ - source 7 - target 2 - label 0 - ] - edge [ - source 7 - target 3 - label 0 - ] - edge [ - source 7 - target 4 - label 0 - ] - edge [ - source 7 - target 5 - label 0 - ] - edge [ - source 7 - target 6 - label 0 - ] - edge [ - source 7 - target 7 - label 0 - ] - edge [ - source 8 - target 1 - label 0 - ] - edge [ - source 8 - target 2 - label 0 - ] - edge [ - source 8 - target 3 - label 0 - ] - edge [ - source 8 - target 4 - label 0 - ] - edge [ - source 8 - target 5 - label 0 - ] - edge [ - source 8 - target 6 - label 0 - ] - edge [ - source 8 - target 7 - label 0 - ] - edge [ - source 8 - target 8 - label 0 - ] - edge [ - source 9 - target 1 - label 0 - ] - edge [ - source 9 - target 2 - label 0 - ] - edge [ - source 9 - target 3 - label 0 - ] - edge [ - source 9 - target 4 - label 0 - ] - edge [ - source 9 - target 5 - label 0 - ] - edge [ - source 9 - target 6 - label 0 - ] - edge [ - source 9 - target 7 - label 0 - ] - edge [ - source 9 - target 8 - label 0 - ] - edge [ - source 9 - target 9 - label 0 - ] - edge [ - source 10 - target 1 - label 0 - ] - edge [ - source 10 - target 2 - label 0 - ] - edge [ - source 10 - target 3 - label 0 - ] - edge [ - source 10 - target 4 - label 0 - ] - edge [ - source 10 - target 5 - label 0 - ] - edge [ - source 10 - target 6 - label 0 - ] - edge [ - source 10 - target 7 - label 0 - ] - edge [ - source 10 - target 8 - label 0 - ] - edge [ - source 10 - target 9 - label 0 - ] - edge [ - source 10 - target 10 - label 0 - ] -] - diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/full20.gml b/jscomp/build_tests/ocamlgraph/editor/tests/full20.gml deleted file mode 100755 index ed1df87ddf..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/full20.gml +++ /dev/null @@ -1,1133 +0,0 @@ -graph [ - node [ - id 1 - label 1 - ] - node [ - id 2 - label 2 - ] - node [ - id 3 - label 3 - ] - node [ - id 4 - label 4 - ] - node [ - id 5 - label 5 - ] - node [ - id 6 - label 6 - ] - node [ - id 7 - label 7 - ] - node [ - id 8 - label 8 - ] - node [ - id 9 - label 9 - ] - node [ - id 10 - label 10 - ] - node [ - id 11 - label 11 - ] - node [ - id 12 - label 12 - ] - node [ - id 13 - label 13 - ] - node [ - id 14 - label 14 - ] - node [ - id 15 - label 15 - ] - node [ - id 16 - label 16 - ] - node [ - id 17 - label 17 - ] - node [ - id 18 - label 18 - ] - node [ - id 19 - label 19 - ] - node [ - id 20 - label 20 - ] - edge [ - source 1 - target 1 - label 0 - ] - edge [ - source 2 - target 1 - label 0 - ] - edge [ - source 2 - target 2 - label 0 - ] - edge [ - source 3 - target 1 - label 0 - ] - edge [ - source 3 - target 2 - label 0 - ] - edge [ - source 3 - target 3 - label 0 - ] - edge [ - source 4 - target 1 - label 0 - ] - edge [ - source 4 - target 2 - label 0 - ] - edge [ - source 4 - target 3 - label 0 - ] - edge [ - source 4 - target 4 - label 0 - ] - edge [ - source 5 - target 1 - label 0 - ] - edge [ - source 5 - target 2 - label 0 - ] - edge [ - source 5 - target 3 - label 0 - ] - edge [ - source 5 - target 4 - label 0 - ] - edge [ - source 5 - target 5 - label 0 - ] - edge [ - source 6 - target 1 - label 0 - ] - edge [ - source 6 - target 2 - label 0 - ] - edge [ - source 6 - target 3 - label 0 - ] - edge [ - source 6 - target 4 - label 0 - ] - edge [ - source 6 - target 5 - label 0 - ] - edge [ - source 6 - target 6 - label 0 - ] - edge [ - source 7 - target 1 - label 0 - ] - edge [ - source 7 - target 2 - label 0 - ] - edge [ - source 7 - target 3 - label 0 - ] - edge [ - source 7 - target 4 - label 0 - ] - edge [ - source 7 - target 5 - label 0 - ] - edge [ - source 7 - target 6 - label 0 - ] - edge [ - source 7 - target 7 - label 0 - ] - edge [ - source 8 - target 1 - label 0 - ] - edge [ - source 8 - target 2 - label 0 - ] - edge [ - source 8 - target 3 - label 0 - ] - edge [ - source 8 - target 4 - label 0 - ] - edge [ - source 8 - target 5 - label 0 - ] - edge [ - source 8 - target 6 - label 0 - ] - edge [ - source 8 - target 7 - label 0 - ] - edge [ - source 8 - target 8 - label 0 - ] - edge [ - source 9 - target 1 - label 0 - ] - edge [ - source 9 - target 2 - label 0 - ] - edge [ - source 9 - target 3 - label 0 - ] - edge [ - source 9 - target 4 - label 0 - ] - edge [ - source 9 - target 5 - label 0 - ] - edge [ - source 9 - target 6 - label 0 - ] - edge [ - source 9 - target 7 - label 0 - ] - edge [ - source 9 - target 8 - label 0 - ] - edge [ - source 9 - target 9 - label 0 - ] - edge [ - source 10 - target 1 - label 0 - ] - edge [ - source 10 - target 2 - label 0 - ] - edge [ - source 10 - target 3 - label 0 - ] - edge [ - source 10 - target 4 - label 0 - ] - edge [ - source 10 - target 5 - label 0 - ] - edge [ - source 10 - target 6 - label 0 - ] - edge [ - source 10 - target 7 - label 0 - ] - edge [ - source 10 - target 8 - label 0 - ] - edge [ - source 10 - target 9 - label 0 - ] - edge [ - source 10 - target 10 - label 0 - ] - edge [ - source 11 - target 1 - label 0 - ] - edge [ - source 11 - target 2 - label 0 - ] - edge [ - source 11 - target 3 - label 0 - ] - edge [ - source 11 - target 4 - label 0 - ] - edge [ - source 11 - target 5 - label 0 - ] - edge [ - source 11 - target 6 - label 0 - ] - edge [ - source 11 - target 7 - label 0 - ] - edge [ - source 11 - target 8 - label 0 - ] - edge [ - source 11 - target 9 - label 0 - ] - edge [ - source 11 - target 10 - label 0 - ] - edge [ - source 11 - target 11 - label 0 - ] - edge [ - source 12 - target 1 - label 0 - ] - edge [ - source 12 - target 2 - label 0 - ] - edge [ - source 12 - target 3 - label 0 - ] - edge [ - source 12 - target 4 - label 0 - ] - edge [ - source 12 - target 5 - label 0 - ] - edge [ - source 12 - target 6 - label 0 - ] - edge [ - source 12 - target 7 - label 0 - ] - edge [ - source 12 - target 8 - label 0 - ] - edge [ - source 12 - target 9 - label 0 - ] - edge [ - source 12 - target 10 - label 0 - ] - edge [ - source 12 - target 11 - label 0 - ] - edge [ - source 12 - target 12 - label 0 - ] - edge [ - source 13 - target 1 - label 0 - ] - edge [ - source 13 - target 2 - label 0 - ] - edge [ - source 13 - target 3 - label 0 - ] - edge [ - source 13 - target 4 - label 0 - ] - edge [ - source 13 - target 5 - label 0 - ] - edge [ - source 13 - target 6 - label 0 - ] - edge [ - source 13 - target 7 - label 0 - ] - edge [ - source 13 - target 8 - label 0 - ] - edge [ - source 13 - target 9 - label 0 - ] - edge [ - source 13 - target 10 - label 0 - ] - edge [ - source 13 - target 11 - label 0 - ] - edge [ - source 13 - target 12 - label 0 - ] - edge [ - source 13 - target 13 - label 0 - ] - edge [ - source 14 - target 1 - label 0 - ] - edge [ - source 14 - target 2 - label 0 - ] - edge [ - source 14 - target 3 - label 0 - ] - edge [ - source 14 - target 4 - label 0 - ] - edge [ - source 14 - target 5 - label 0 - ] - edge [ - source 14 - target 6 - label 0 - ] - edge [ - source 14 - target 7 - label 0 - ] - edge [ - source 14 - target 8 - label 0 - ] - edge [ - source 14 - target 9 - label 0 - ] - edge [ - source 14 - target 10 - label 0 - ] - edge [ - source 14 - target 11 - label 0 - ] - edge [ - source 14 - target 12 - label 0 - ] - edge [ - source 14 - target 13 - label 0 - ] - edge [ - source 14 - target 14 - label 0 - ] - edge [ - source 15 - target 1 - label 0 - ] - edge [ - source 15 - target 2 - label 0 - ] - edge [ - source 15 - target 3 - label 0 - ] - edge [ - source 15 - target 4 - label 0 - ] - edge [ - source 15 - target 5 - label 0 - ] - edge [ - source 15 - target 6 - label 0 - ] - edge [ - source 15 - target 7 - label 0 - ] - edge [ - source 15 - target 8 - label 0 - ] - edge [ - source 15 - target 9 - label 0 - ] - edge [ - source 15 - target 10 - label 0 - ] - edge [ - source 15 - target 11 - label 0 - ] - edge [ - source 15 - target 12 - label 0 - ] - edge [ - source 15 - target 13 - label 0 - ] - edge [ - source 15 - target 14 - label 0 - ] - edge [ - source 15 - target 15 - label 0 - ] - edge [ - source 16 - target 1 - label 0 - ] - edge [ - source 16 - target 2 - label 0 - ] - edge [ - source 16 - target 3 - label 0 - ] - edge [ - source 16 - target 4 - label 0 - ] - edge [ - source 16 - target 5 - label 0 - ] - edge [ - source 16 - target 6 - label 0 - ] - edge [ - source 16 - target 7 - label 0 - ] - edge [ - source 16 - target 8 - label 0 - ] - edge [ - source 16 - target 9 - label 0 - ] - edge [ - source 16 - target 10 - label 0 - ] - edge [ - source 16 - target 11 - label 0 - ] - edge [ - source 16 - target 12 - label 0 - ] - edge [ - source 16 - target 13 - label 0 - ] - edge [ - source 16 - target 14 - label 0 - ] - edge [ - source 16 - target 15 - label 0 - ] - edge [ - source 16 - target 16 - label 0 - ] - edge [ - source 17 - target 1 - label 0 - ] - edge [ - source 17 - target 2 - label 0 - ] - edge [ - source 17 - target 3 - label 0 - ] - edge [ - source 17 - target 4 - label 0 - ] - edge [ - source 17 - target 5 - label 0 - ] - edge [ - source 17 - target 6 - label 0 - ] - edge [ - source 17 - target 7 - label 0 - ] - edge [ - source 17 - target 8 - label 0 - ] - edge [ - source 17 - target 9 - label 0 - ] - edge [ - source 17 - target 10 - label 0 - ] - edge [ - source 17 - target 11 - label 0 - ] - edge [ - source 17 - target 12 - label 0 - ] - edge [ - source 17 - target 13 - label 0 - ] - edge [ - source 17 - target 14 - label 0 - ] - edge [ - source 17 - target 15 - label 0 - ] - edge [ - source 17 - target 16 - label 0 - ] - edge [ - source 17 - target 17 - label 0 - ] - edge [ - source 18 - target 1 - label 0 - ] - edge [ - source 18 - target 2 - label 0 - ] - edge [ - source 18 - target 3 - label 0 - ] - edge [ - source 18 - target 4 - label 0 - ] - edge [ - source 18 - target 5 - label 0 - ] - edge [ - source 18 - target 6 - label 0 - ] - edge [ - source 18 - target 7 - label 0 - ] - edge [ - source 18 - target 8 - label 0 - ] - edge [ - source 18 - target 9 - label 0 - ] - edge [ - source 18 - target 10 - label 0 - ] - edge [ - source 18 - target 11 - label 0 - ] - edge [ - source 18 - target 12 - label 0 - ] - edge [ - source 18 - target 13 - label 0 - ] - edge [ - source 18 - target 14 - label 0 - ] - edge [ - source 18 - target 15 - label 0 - ] - edge [ - source 18 - target 16 - label 0 - ] - edge [ - source 18 - target 17 - label 0 - ] - edge [ - source 18 - target 18 - label 0 - ] - edge [ - source 19 - target 1 - label 0 - ] - edge [ - source 19 - target 2 - label 0 - ] - edge [ - source 19 - target 3 - label 0 - ] - edge [ - source 19 - target 4 - label 0 - ] - edge [ - source 19 - target 5 - label 0 - ] - edge [ - source 19 - target 6 - label 0 - ] - edge [ - source 19 - target 7 - label 0 - ] - edge [ - source 19 - target 8 - label 0 - ] - edge [ - source 19 - target 9 - label 0 - ] - edge [ - source 19 - target 10 - label 0 - ] - edge [ - source 19 - target 11 - label 0 - ] - edge [ - source 19 - target 12 - label 0 - ] - edge [ - source 19 - target 13 - label 0 - ] - edge [ - source 19 - target 14 - label 0 - ] - edge [ - source 19 - target 15 - label 0 - ] - edge [ - source 19 - target 16 - label 0 - ] - edge [ - source 19 - target 17 - label 0 - ] - edge [ - source 19 - target 18 - label 0 - ] - edge [ - source 19 - target 19 - label 0 - ] - edge [ - source 20 - target 1 - label 0 - ] - edge [ - source 20 - target 2 - label 0 - ] - edge [ - source 20 - target 3 - label 0 - ] - edge [ - source 20 - target 4 - label 0 - ] - edge [ - source 20 - target 5 - label 0 - ] - edge [ - source 20 - target 6 - label 0 - ] - edge [ - source 20 - target 7 - label 0 - ] - edge [ - source 20 - target 8 - label 0 - ] - edge [ - source 20 - target 9 - label 0 - ] - edge [ - source 20 - target 10 - label 0 - ] - edge [ - source 20 - target 11 - label 0 - ] - edge [ - source 20 - target 12 - label 0 - ] - edge [ - source 20 - target 13 - label 0 - ] - edge [ - source 20 - target 14 - label 0 - ] - edge [ - source 20 - target 15 - label 0 - ] - edge [ - source 20 - target 16 - label 0 - ] - edge [ - source 20 - target 17 - label 0 - ] - edge [ - source 20 - target 18 - label 0 - ] - edge [ - source 20 - target 19 - label 0 - ] - edge [ - source 20 - target 20 - label 0 - ] -] - diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/full30.gml b/jscomp/build_tests/ocamlgraph/editor/tests/full30.gml deleted file mode 100755 index fae6fbda4f..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/full30.gml +++ /dev/null @@ -1,2448 +0,0 @@ -graph [ - node [ - id 1 - label 1 - ] - node [ - id 2 - label 2 - ] - node [ - id 3 - label 3 - ] - node [ - id 4 - label 4 - ] - node [ - id 5 - label 5 - ] - node [ - id 6 - label 6 - ] - node [ - id 7 - label 7 - ] - node [ - id 8 - label 8 - ] - node [ - id 9 - label 9 - ] - node [ - id 10 - label 10 - ] - node [ - id 11 - label 11 - ] - node [ - id 12 - label 12 - ] - node [ - id 13 - label 13 - ] - node [ - id 14 - label 14 - ] - node [ - id 15 - label 15 - ] - node [ - id 16 - label 16 - ] - node [ - id 17 - label 17 - ] - node [ - id 18 - label 18 - ] - node [ - id 19 - label 19 - ] - node [ - id 20 - label 20 - ] - node [ - id 21 - label 21 - ] - node [ - id 22 - label 22 - ] - node [ - id 23 - label 23 - ] - node [ - id 24 - label 24 - ] - node [ - id 25 - label 25 - ] - node [ - id 26 - label 26 - ] - node [ - id 27 - label 27 - ] - node [ - id 28 - label 28 - ] - node [ - id 29 - label 29 - ] - node [ - id 30 - label 30 - ] - edge [ - source 1 - target 1 - label 0 - ] - edge [ - source 2 - target 1 - label 0 - ] - edge [ - source 2 - target 2 - label 0 - ] - edge [ - source 3 - target 1 - label 0 - ] - edge [ - source 3 - target 2 - label 0 - ] - edge [ - source 3 - target 3 - label 0 - ] - edge [ - source 4 - target 1 - label 0 - ] - edge [ - source 4 - target 2 - label 0 - ] - edge [ - source 4 - target 3 - label 0 - ] - edge [ - source 4 - target 4 - label 0 - ] - edge [ - source 5 - target 1 - label 0 - ] - edge [ - source 5 - target 2 - label 0 - ] - edge [ - source 5 - target 3 - label 0 - ] - edge [ - source 5 - target 4 - label 0 - ] - edge [ - source 5 - target 5 - label 0 - ] - edge [ - source 6 - target 1 - label 0 - ] - edge [ - source 6 - target 2 - label 0 - ] - edge [ - source 6 - target 3 - label 0 - ] - edge [ - source 6 - target 4 - label 0 - ] - edge [ - source 6 - target 5 - label 0 - ] - edge [ - source 6 - target 6 - label 0 - ] - edge [ - source 7 - target 1 - label 0 - ] - edge [ - source 7 - target 2 - label 0 - ] - edge [ - source 7 - target 3 - label 0 - ] - edge [ - source 7 - target 4 - label 0 - ] - edge [ - source 7 - target 5 - label 0 - ] - edge [ - source 7 - target 6 - label 0 - ] - edge [ - source 7 - target 7 - label 0 - ] - edge [ - source 8 - target 1 - label 0 - ] - edge [ - source 8 - target 2 - label 0 - ] - edge [ - source 8 - target 3 - label 0 - ] - edge [ - source 8 - target 4 - label 0 - ] - edge [ - source 8 - target 5 - label 0 - ] - edge [ - source 8 - target 6 - label 0 - ] - edge [ - source 8 - target 7 - label 0 - ] - edge [ - source 8 - target 8 - label 0 - ] - edge [ - source 9 - target 1 - label 0 - ] - edge [ - source 9 - target 2 - label 0 - ] - edge [ - source 9 - target 3 - label 0 - ] - edge [ - source 9 - target 4 - label 0 - ] - edge [ - source 9 - target 5 - label 0 - ] - edge [ - source 9 - target 6 - label 0 - ] - edge [ - source 9 - target 7 - label 0 - ] - edge [ - source 9 - target 8 - label 0 - ] - edge [ - source 9 - target 9 - label 0 - ] - edge [ - source 10 - target 1 - label 0 - ] - edge [ - source 10 - target 2 - label 0 - ] - edge [ - source 10 - target 3 - label 0 - ] - edge [ - source 10 - target 4 - label 0 - ] - edge [ - source 10 - target 5 - label 0 - ] - edge [ - source 10 - target 6 - label 0 - ] - edge [ - source 10 - target 7 - label 0 - ] - edge [ - source 10 - target 8 - label 0 - ] - edge [ - source 10 - target 9 - label 0 - ] - edge [ - source 10 - target 10 - label 0 - ] - edge [ - source 11 - target 1 - label 0 - ] - edge [ - source 11 - target 2 - label 0 - ] - edge [ - source 11 - target 3 - label 0 - ] - edge [ - source 11 - target 4 - label 0 - ] - edge [ - source 11 - target 5 - label 0 - ] - edge [ - source 11 - target 6 - label 0 - ] - edge [ - source 11 - target 7 - label 0 - ] - edge [ - source 11 - target 8 - label 0 - ] - edge [ - source 11 - target 9 - label 0 - ] - edge [ - source 11 - target 10 - label 0 - ] - edge [ - source 11 - target 11 - label 0 - ] - edge [ - source 12 - target 1 - label 0 - ] - edge [ - source 12 - target 2 - label 0 - ] - edge [ - source 12 - target 3 - label 0 - ] - edge [ - source 12 - target 4 - label 0 - ] - edge [ - source 12 - target 5 - label 0 - ] - edge [ - source 12 - target 6 - label 0 - ] - edge [ - source 12 - target 7 - label 0 - ] - edge [ - source 12 - target 8 - label 0 - ] - edge [ - source 12 - target 9 - label 0 - ] - edge [ - source 12 - target 10 - label 0 - ] - edge [ - source 12 - target 11 - label 0 - ] - edge [ - source 12 - target 12 - label 0 - ] - edge [ - source 13 - target 1 - label 0 - ] - edge [ - source 13 - target 2 - label 0 - ] - edge [ - source 13 - target 3 - label 0 - ] - edge [ - source 13 - target 4 - label 0 - ] - edge [ - source 13 - target 5 - label 0 - ] - edge [ - source 13 - target 6 - label 0 - ] - edge [ - source 13 - target 7 - label 0 - ] - edge [ - source 13 - target 8 - label 0 - ] - edge [ - source 13 - target 9 - label 0 - ] - edge [ - source 13 - target 10 - label 0 - ] - edge [ - source 13 - target 11 - label 0 - ] - edge [ - source 13 - target 12 - label 0 - ] - edge [ - source 13 - target 13 - label 0 - ] - edge [ - source 14 - target 1 - label 0 - ] - edge [ - source 14 - target 2 - label 0 - ] - edge [ - source 14 - target 3 - label 0 - ] - edge [ - source 14 - target 4 - label 0 - ] - edge [ - source 14 - target 5 - label 0 - ] - edge [ - source 14 - target 6 - label 0 - ] - edge [ - source 14 - target 7 - label 0 - ] - edge [ - source 14 - target 8 - label 0 - ] - edge [ - source 14 - target 9 - label 0 - ] - edge [ - source 14 - target 10 - label 0 - ] - edge [ - source 14 - target 11 - label 0 - ] - edge [ - source 14 - target 12 - label 0 - ] - edge [ - source 14 - target 13 - label 0 - ] - edge [ - source 14 - target 14 - label 0 - ] - edge [ - source 15 - target 1 - label 0 - ] - edge [ - source 15 - target 2 - label 0 - ] - edge [ - source 15 - target 3 - label 0 - ] - edge [ - source 15 - target 4 - label 0 - ] - edge [ - source 15 - target 5 - label 0 - ] - edge [ - source 15 - target 6 - label 0 - ] - edge [ - source 15 - target 7 - label 0 - ] - edge [ - source 15 - target 8 - label 0 - ] - edge [ - source 15 - target 9 - label 0 - ] - edge [ - source 15 - target 10 - label 0 - ] - edge [ - source 15 - target 11 - label 0 - ] - edge [ - source 15 - target 12 - label 0 - ] - edge [ - source 15 - target 13 - label 0 - ] - edge [ - source 15 - target 14 - label 0 - ] - edge [ - source 15 - target 15 - label 0 - ] - edge [ - source 16 - target 1 - label 0 - ] - edge [ - source 16 - target 2 - label 0 - ] - edge [ - source 16 - target 3 - label 0 - ] - edge [ - source 16 - target 4 - label 0 - ] - edge [ - source 16 - target 5 - label 0 - ] - edge [ - source 16 - target 6 - label 0 - ] - edge [ - source 16 - target 7 - label 0 - ] - edge [ - source 16 - target 8 - label 0 - ] - edge [ - source 16 - target 9 - label 0 - ] - edge [ - source 16 - target 10 - label 0 - ] - edge [ - source 16 - target 11 - label 0 - ] - edge [ - source 16 - target 12 - label 0 - ] - edge [ - source 16 - target 13 - label 0 - ] - edge [ - source 16 - target 14 - label 0 - ] - edge [ - source 16 - target 15 - label 0 - ] - edge [ - source 16 - target 16 - label 0 - ] - edge [ - source 17 - target 1 - label 0 - ] - edge [ - source 17 - target 2 - label 0 - ] - edge [ - source 17 - target 3 - label 0 - ] - edge [ - source 17 - target 4 - label 0 - ] - edge [ - source 17 - target 5 - label 0 - ] - edge [ - source 17 - target 6 - label 0 - ] - edge [ - source 17 - target 7 - label 0 - ] - edge [ - source 17 - target 8 - label 0 - ] - edge [ - source 17 - target 9 - label 0 - ] - edge [ - source 17 - target 10 - label 0 - ] - edge [ - source 17 - target 11 - label 0 - ] - edge [ - source 17 - target 12 - label 0 - ] - edge [ - source 17 - target 13 - label 0 - ] - edge [ - source 17 - target 14 - label 0 - ] - edge [ - source 17 - target 15 - label 0 - ] - edge [ - source 17 - target 16 - label 0 - ] - edge [ - source 17 - target 17 - label 0 - ] - edge [ - source 18 - target 1 - label 0 - ] - edge [ - source 18 - target 2 - label 0 - ] - edge [ - source 18 - target 3 - label 0 - ] - edge [ - source 18 - target 4 - label 0 - ] - edge [ - source 18 - target 5 - label 0 - ] - edge [ - source 18 - target 6 - label 0 - ] - edge [ - source 18 - target 7 - label 0 - ] - edge [ - source 18 - target 8 - label 0 - ] - edge [ - source 18 - target 9 - label 0 - ] - edge [ - source 18 - target 10 - label 0 - ] - edge [ - source 18 - target 11 - label 0 - ] - edge [ - source 18 - target 12 - label 0 - ] - edge [ - source 18 - target 13 - label 0 - ] - edge [ - source 18 - target 14 - label 0 - ] - edge [ - source 18 - target 15 - label 0 - ] - edge [ - source 18 - target 16 - label 0 - ] - edge [ - source 18 - target 17 - label 0 - ] - edge [ - source 18 - target 18 - label 0 - ] - edge [ - source 19 - target 1 - label 0 - ] - edge [ - source 19 - target 2 - label 0 - ] - edge [ - source 19 - target 3 - label 0 - ] - edge [ - source 19 - target 4 - label 0 - ] - edge [ - source 19 - target 5 - label 0 - ] - edge [ - source 19 - target 6 - label 0 - ] - edge [ - source 19 - target 7 - label 0 - ] - edge [ - source 19 - target 8 - label 0 - ] - edge [ - source 19 - target 9 - label 0 - ] - edge [ - source 19 - target 10 - label 0 - ] - edge [ - source 19 - target 11 - label 0 - ] - edge [ - source 19 - target 12 - label 0 - ] - edge [ - source 19 - target 13 - label 0 - ] - edge [ - source 19 - target 14 - label 0 - ] - edge [ - source 19 - target 15 - label 0 - ] - edge [ - source 19 - target 16 - label 0 - ] - edge [ - source 19 - target 17 - label 0 - ] - edge [ - source 19 - target 18 - label 0 - ] - edge [ - source 19 - target 19 - label 0 - ] - edge [ - source 20 - target 1 - label 0 - ] - edge [ - source 20 - target 2 - label 0 - ] - edge [ - source 20 - target 3 - label 0 - ] - edge [ - source 20 - target 4 - label 0 - ] - edge [ - source 20 - target 5 - label 0 - ] - edge [ - source 20 - target 6 - label 0 - ] - edge [ - source 20 - target 7 - label 0 - ] - edge [ - source 20 - target 8 - label 0 - ] - edge [ - source 20 - target 9 - label 0 - ] - edge [ - source 20 - target 10 - label 0 - ] - edge [ - source 20 - target 11 - label 0 - ] - edge [ - source 20 - target 12 - label 0 - ] - edge [ - source 20 - target 13 - label 0 - ] - edge [ - source 20 - target 14 - label 0 - ] - edge [ - source 20 - target 15 - label 0 - ] - edge [ - source 20 - target 16 - label 0 - ] - edge [ - source 20 - target 17 - label 0 - ] - edge [ - source 20 - target 18 - label 0 - ] - edge [ - source 20 - target 19 - label 0 - ] - edge [ - source 20 - target 20 - label 0 - ] - edge [ - source 21 - target 1 - label 0 - ] - edge [ - source 21 - target 2 - label 0 - ] - edge [ - source 21 - target 3 - label 0 - ] - edge [ - source 21 - target 4 - label 0 - ] - edge [ - source 21 - target 5 - label 0 - ] - edge [ - source 21 - target 6 - label 0 - ] - edge [ - source 21 - target 7 - label 0 - ] - edge [ - source 21 - target 8 - label 0 - ] - edge [ - source 21 - target 9 - label 0 - ] - edge [ - source 21 - target 10 - label 0 - ] - edge [ - source 21 - target 11 - label 0 - ] - edge [ - source 21 - target 12 - label 0 - ] - edge [ - source 21 - target 13 - label 0 - ] - edge [ - source 21 - target 14 - label 0 - ] - edge [ - source 21 - target 15 - label 0 - ] - edge [ - source 21 - target 16 - label 0 - ] - edge [ - source 21 - target 17 - label 0 - ] - edge [ - source 21 - target 18 - label 0 - ] - edge [ - source 21 - target 19 - label 0 - ] - edge [ - source 21 - target 20 - label 0 - ] - edge [ - source 21 - target 21 - label 0 - ] - edge [ - source 22 - target 1 - label 0 - ] - edge [ - source 22 - target 2 - label 0 - ] - edge [ - source 22 - target 3 - label 0 - ] - edge [ - source 22 - target 4 - label 0 - ] - edge [ - source 22 - target 5 - label 0 - ] - edge [ - source 22 - target 6 - label 0 - ] - edge [ - source 22 - target 7 - label 0 - ] - edge [ - source 22 - target 8 - label 0 - ] - edge [ - source 22 - target 9 - label 0 - ] - edge [ - source 22 - target 10 - label 0 - ] - edge [ - source 22 - target 11 - label 0 - ] - edge [ - source 22 - target 12 - label 0 - ] - edge [ - source 22 - target 13 - label 0 - ] - edge [ - source 22 - target 14 - label 0 - ] - edge [ - source 22 - target 15 - label 0 - ] - edge [ - source 22 - target 16 - label 0 - ] - edge [ - source 22 - target 17 - label 0 - ] - edge [ - source 22 - target 18 - label 0 - ] - edge [ - source 22 - target 19 - label 0 - ] - edge [ - source 22 - target 20 - label 0 - ] - edge [ - source 22 - target 21 - label 0 - ] - edge [ - source 22 - target 22 - label 0 - ] - edge [ - source 23 - target 1 - label 0 - ] - edge [ - source 23 - target 2 - label 0 - ] - edge [ - source 23 - target 3 - label 0 - ] - edge [ - source 23 - target 4 - label 0 - ] - edge [ - source 23 - target 5 - label 0 - ] - edge [ - source 23 - target 6 - label 0 - ] - edge [ - source 23 - target 7 - label 0 - ] - edge [ - source 23 - target 8 - label 0 - ] - edge [ - source 23 - target 9 - label 0 - ] - edge [ - source 23 - target 10 - label 0 - ] - edge [ - source 23 - target 11 - label 0 - ] - edge [ - source 23 - target 12 - label 0 - ] - edge [ - source 23 - target 13 - label 0 - ] - edge [ - source 23 - target 14 - label 0 - ] - edge [ - source 23 - target 15 - label 0 - ] - edge [ - source 23 - target 16 - label 0 - ] - edge [ - source 23 - target 17 - label 0 - ] - edge [ - source 23 - target 18 - label 0 - ] - edge [ - source 23 - target 19 - label 0 - ] - edge [ - source 23 - target 20 - label 0 - ] - edge [ - source 23 - target 21 - label 0 - ] - edge [ - source 23 - target 22 - label 0 - ] - edge [ - source 23 - target 23 - label 0 - ] - edge [ - source 24 - target 1 - label 0 - ] - edge [ - source 24 - target 2 - label 0 - ] - edge [ - source 24 - target 3 - label 0 - ] - edge [ - source 24 - target 4 - label 0 - ] - edge [ - source 24 - target 5 - label 0 - ] - edge [ - source 24 - target 6 - label 0 - ] - edge [ - source 24 - target 7 - label 0 - ] - edge [ - source 24 - target 8 - label 0 - ] - edge [ - source 24 - target 9 - label 0 - ] - edge [ - source 24 - target 10 - label 0 - ] - edge [ - source 24 - target 11 - label 0 - ] - edge [ - source 24 - target 12 - label 0 - ] - edge [ - source 24 - target 13 - label 0 - ] - edge [ - source 24 - target 14 - label 0 - ] - edge [ - source 24 - target 15 - label 0 - ] - edge [ - source 24 - target 16 - label 0 - ] - edge [ - source 24 - target 17 - label 0 - ] - edge [ - source 24 - target 18 - label 0 - ] - edge [ - source 24 - target 19 - label 0 - ] - edge [ - source 24 - target 20 - label 0 - ] - edge [ - source 24 - target 21 - label 0 - ] - edge [ - source 24 - target 22 - label 0 - ] - edge [ - source 24 - target 23 - label 0 - ] - edge [ - source 24 - target 24 - label 0 - ] - edge [ - source 25 - target 1 - label 0 - ] - edge [ - source 25 - target 2 - label 0 - ] - edge [ - source 25 - target 3 - label 0 - ] - edge [ - source 25 - target 4 - label 0 - ] - edge [ - source 25 - target 5 - label 0 - ] - edge [ - source 25 - target 6 - label 0 - ] - edge [ - source 25 - target 7 - label 0 - ] - edge [ - source 25 - target 8 - label 0 - ] - edge [ - source 25 - target 9 - label 0 - ] - edge [ - source 25 - target 10 - label 0 - ] - edge [ - source 25 - target 11 - label 0 - ] - edge [ - source 25 - target 12 - label 0 - ] - edge [ - source 25 - target 13 - label 0 - ] - edge [ - source 25 - target 14 - label 0 - ] - edge [ - source 25 - target 15 - label 0 - ] - edge [ - source 25 - target 16 - label 0 - ] - edge [ - source 25 - target 17 - label 0 - ] - edge [ - source 25 - target 18 - label 0 - ] - edge [ - source 25 - target 19 - label 0 - ] - edge [ - source 25 - target 20 - label 0 - ] - edge [ - source 25 - target 21 - label 0 - ] - edge [ - source 25 - target 22 - label 0 - ] - edge [ - source 25 - target 23 - label 0 - ] - edge [ - source 25 - target 24 - label 0 - ] - edge [ - source 25 - target 25 - label 0 - ] - edge [ - source 26 - target 1 - label 0 - ] - edge [ - source 26 - target 2 - label 0 - ] - edge [ - source 26 - target 3 - label 0 - ] - edge [ - source 26 - target 4 - label 0 - ] - edge [ - source 26 - target 5 - label 0 - ] - edge [ - source 26 - target 6 - label 0 - ] - edge [ - source 26 - target 7 - label 0 - ] - edge [ - source 26 - target 8 - label 0 - ] - edge [ - source 26 - target 9 - label 0 - ] - edge [ - source 26 - target 10 - label 0 - ] - edge [ - source 26 - target 11 - label 0 - ] - edge [ - source 26 - target 12 - label 0 - ] - edge [ - source 26 - target 13 - label 0 - ] - edge [ - source 26 - target 14 - label 0 - ] - edge [ - source 26 - target 15 - label 0 - ] - edge [ - source 26 - target 16 - label 0 - ] - edge [ - source 26 - target 17 - label 0 - ] - edge [ - source 26 - target 18 - label 0 - ] - edge [ - source 26 - target 19 - label 0 - ] - edge [ - source 26 - target 20 - label 0 - ] - edge [ - source 26 - target 21 - label 0 - ] - edge [ - source 26 - target 22 - label 0 - ] - edge [ - source 26 - target 23 - label 0 - ] - edge [ - source 26 - target 24 - label 0 - ] - edge [ - source 26 - target 25 - label 0 - ] - edge [ - source 26 - target 26 - label 0 - ] - edge [ - source 27 - target 1 - label 0 - ] - edge [ - source 27 - target 2 - label 0 - ] - edge [ - source 27 - target 3 - label 0 - ] - edge [ - source 27 - target 4 - label 0 - ] - edge [ - source 27 - target 5 - label 0 - ] - edge [ - source 27 - target 6 - label 0 - ] - edge [ - source 27 - target 7 - label 0 - ] - edge [ - source 27 - target 8 - label 0 - ] - edge [ - source 27 - target 9 - label 0 - ] - edge [ - source 27 - target 10 - label 0 - ] - edge [ - source 27 - target 11 - label 0 - ] - edge [ - source 27 - target 12 - label 0 - ] - edge [ - source 27 - target 13 - label 0 - ] - edge [ - source 27 - target 14 - label 0 - ] - edge [ - source 27 - target 15 - label 0 - ] - edge [ - source 27 - target 16 - label 0 - ] - edge [ - source 27 - target 17 - label 0 - ] - edge [ - source 27 - target 18 - label 0 - ] - edge [ - source 27 - target 19 - label 0 - ] - edge [ - source 27 - target 20 - label 0 - ] - edge [ - source 27 - target 21 - label 0 - ] - edge [ - source 27 - target 22 - label 0 - ] - edge [ - source 27 - target 23 - label 0 - ] - edge [ - source 27 - target 24 - label 0 - ] - edge [ - source 27 - target 25 - label 0 - ] - edge [ - source 27 - target 26 - label 0 - ] - edge [ - source 27 - target 27 - label 0 - ] - edge [ - source 28 - target 1 - label 0 - ] - edge [ - source 28 - target 2 - label 0 - ] - edge [ - source 28 - target 3 - label 0 - ] - edge [ - source 28 - target 4 - label 0 - ] - edge [ - source 28 - target 5 - label 0 - ] - edge [ - source 28 - target 6 - label 0 - ] - edge [ - source 28 - target 7 - label 0 - ] - edge [ - source 28 - target 8 - label 0 - ] - edge [ - source 28 - target 9 - label 0 - ] - edge [ - source 28 - target 10 - label 0 - ] - edge [ - source 28 - target 11 - label 0 - ] - edge [ - source 28 - target 12 - label 0 - ] - edge [ - source 28 - target 13 - label 0 - ] - edge [ - source 28 - target 14 - label 0 - ] - edge [ - source 28 - target 15 - label 0 - ] - edge [ - source 28 - target 16 - label 0 - ] - edge [ - source 28 - target 17 - label 0 - ] - edge [ - source 28 - target 18 - label 0 - ] - edge [ - source 28 - target 19 - label 0 - ] - edge [ - source 28 - target 20 - label 0 - ] - edge [ - source 28 - target 21 - label 0 - ] - edge [ - source 28 - target 22 - label 0 - ] - edge [ - source 28 - target 23 - label 0 - ] - edge [ - source 28 - target 24 - label 0 - ] - edge [ - source 28 - target 25 - label 0 - ] - edge [ - source 28 - target 26 - label 0 - ] - edge [ - source 28 - target 27 - label 0 - ] - edge [ - source 28 - target 28 - label 0 - ] - edge [ - source 29 - target 1 - label 0 - ] - edge [ - source 29 - target 2 - label 0 - ] - edge [ - source 29 - target 3 - label 0 - ] - edge [ - source 29 - target 4 - label 0 - ] - edge [ - source 29 - target 5 - label 0 - ] - edge [ - source 29 - target 6 - label 0 - ] - edge [ - source 29 - target 7 - label 0 - ] - edge [ - source 29 - target 8 - label 0 - ] - edge [ - source 29 - target 9 - label 0 - ] - edge [ - source 29 - target 10 - label 0 - ] - edge [ - source 29 - target 11 - label 0 - ] - edge [ - source 29 - target 12 - label 0 - ] - edge [ - source 29 - target 13 - label 0 - ] - edge [ - source 29 - target 14 - label 0 - ] - edge [ - source 29 - target 15 - label 0 - ] - edge [ - source 29 - target 16 - label 0 - ] - edge [ - source 29 - target 17 - label 0 - ] - edge [ - source 29 - target 18 - label 0 - ] - edge [ - source 29 - target 19 - label 0 - ] - edge [ - source 29 - target 20 - label 0 - ] - edge [ - source 29 - target 21 - label 0 - ] - edge [ - source 29 - target 22 - label 0 - ] - edge [ - source 29 - target 23 - label 0 - ] - edge [ - source 29 - target 24 - label 0 - ] - edge [ - source 29 - target 25 - label 0 - ] - edge [ - source 29 - target 26 - label 0 - ] - edge [ - source 29 - target 27 - label 0 - ] - edge [ - source 29 - target 28 - label 0 - ] - edge [ - source 29 - target 29 - label 0 - ] - edge [ - source 30 - target 1 - label 0 - ] - edge [ - source 30 - target 2 - label 0 - ] - edge [ - source 30 - target 3 - label 0 - ] - edge [ - source 30 - target 4 - label 0 - ] - edge [ - source 30 - target 5 - label 0 - ] - edge [ - source 30 - target 6 - label 0 - ] - edge [ - source 30 - target 7 - label 0 - ] - edge [ - source 30 - target 8 - label 0 - ] - edge [ - source 30 - target 9 - label 0 - ] - edge [ - source 30 - target 10 - label 0 - ] - edge [ - source 30 - target 11 - label 0 - ] - edge [ - source 30 - target 12 - label 0 - ] - edge [ - source 30 - target 13 - label 0 - ] - edge [ - source 30 - target 14 - label 0 - ] - edge [ - source 30 - target 15 - label 0 - ] - edge [ - source 30 - target 16 - label 0 - ] - edge [ - source 30 - target 17 - label 0 - ] - edge [ - source 30 - target 18 - label 0 - ] - edge [ - source 30 - target 19 - label 0 - ] - edge [ - source 30 - target 20 - label 0 - ] - edge [ - source 30 - target 21 - label 0 - ] - edge [ - source 30 - target 22 - label 0 - ] - edge [ - source 30 - target 23 - label 0 - ] - edge [ - source 30 - target 24 - label 0 - ] - edge [ - source 30 - target 25 - label 0 - ] - edge [ - source 30 - target 26 - label 0 - ] - edge [ - source 30 - target 27 - label 0 - ] - edge [ - source 30 - target 28 - label 0 - ] - edge [ - source 30 - target 29 - label 0 - ] - edge [ - source 30 - target 30 - label 0 - ] -] - diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/full50.gml b/jscomp/build_tests/ocamlgraph/editor/tests/full50.gml deleted file mode 100755 index 243e80bd48..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/full50.gml +++ /dev/null @@ -1,6578 +0,0 @@ -graph [ - node [ - id 1 - label 1 - ] - node [ - id 2 - label 2 - ] - node [ - id 3 - label 3 - ] - node [ - id 4 - label 4 - ] - node [ - id 5 - label 5 - ] - node [ - id 6 - label 6 - ] - node [ - id 7 - label 7 - ] - node [ - id 8 - label 8 - ] - node [ - id 9 - label 9 - ] - node [ - id 10 - label 10 - ] - node [ - id 11 - label 11 - ] - node [ - id 12 - label 12 - ] - node [ - id 13 - label 13 - ] - node [ - id 14 - label 14 - ] - node [ - id 15 - label 15 - ] - node [ - id 16 - label 16 - ] - node [ - id 17 - label 17 - ] - node [ - id 18 - label 18 - ] - node [ - id 19 - label 19 - ] - node [ - id 20 - label 20 - ] - node [ - id 21 - label 21 - ] - node [ - id 22 - label 22 - ] - node [ - id 23 - label 23 - ] - node [ - id 24 - label 24 - ] - node [ - id 25 - label 25 - ] - node [ - id 26 - label 26 - ] - node [ - id 27 - label 27 - ] - node [ - id 28 - label 28 - ] - node [ - id 29 - label 29 - ] - node [ - id 30 - label 30 - ] - node [ - id 31 - label 31 - ] - node [ - id 32 - label 32 - ] - node [ - id 33 - label 33 - ] - node [ - id 34 - label 34 - ] - node [ - id 35 - label 35 - ] - node [ - id 36 - label 36 - ] - node [ - id 37 - label 37 - ] - node [ - id 38 - label 38 - ] - node [ - id 39 - label 39 - ] - node [ - id 40 - label 40 - ] - node [ - id 41 - label 41 - ] - node [ - id 42 - label 42 - ] - node [ - id 43 - label 43 - ] - node [ - id 44 - label 44 - ] - node [ - id 45 - label 45 - ] - node [ - id 46 - label 46 - ] - node [ - id 47 - label 47 - ] - node [ - id 48 - label 48 - ] - node [ - id 49 - label 49 - ] - node [ - id 50 - label 50 - ] - edge [ - source 1 - target 1 - label 0 - ] - edge [ - source 2 - target 1 - label 0 - ] - edge [ - source 2 - target 2 - label 0 - ] - edge [ - source 3 - target 1 - label 0 - ] - edge [ - source 3 - target 2 - label 0 - ] - edge [ - source 3 - target 3 - label 0 - ] - edge [ - source 4 - target 1 - label 0 - ] - edge [ - source 4 - target 2 - label 0 - ] - edge [ - source 4 - target 3 - label 0 - ] - edge [ - source 4 - target 4 - label 0 - ] - edge [ - source 5 - target 1 - label 0 - ] - edge [ - source 5 - target 2 - label 0 - ] - edge [ - source 5 - target 3 - label 0 - ] - edge [ - source 5 - target 4 - label 0 - ] - edge [ - source 5 - target 5 - label 0 - ] - edge [ - source 6 - target 1 - label 0 - ] - edge [ - source 6 - target 2 - label 0 - ] - edge [ - source 6 - target 3 - label 0 - ] - edge [ - source 6 - target 4 - label 0 - ] - edge [ - source 6 - target 5 - label 0 - ] - edge [ - source 6 - target 6 - label 0 - ] - edge [ - source 7 - target 1 - label 0 - ] - edge [ - source 7 - target 2 - label 0 - ] - edge [ - source 7 - target 3 - label 0 - ] - edge [ - source 7 - target 4 - label 0 - ] - edge [ - source 7 - target 5 - label 0 - ] - edge [ - source 7 - target 6 - label 0 - ] - edge [ - source 7 - target 7 - label 0 - ] - edge [ - source 8 - target 1 - label 0 - ] - edge [ - source 8 - target 2 - label 0 - ] - edge [ - source 8 - target 3 - label 0 - ] - edge [ - source 8 - target 4 - label 0 - ] - edge [ - source 8 - target 5 - label 0 - ] - edge [ - source 8 - target 6 - label 0 - ] - edge [ - source 8 - target 7 - label 0 - ] - edge [ - source 8 - target 8 - label 0 - ] - edge [ - source 9 - target 1 - label 0 - ] - edge [ - source 9 - target 2 - label 0 - ] - edge [ - source 9 - target 3 - label 0 - ] - edge [ - source 9 - target 4 - label 0 - ] - edge [ - source 9 - target 5 - label 0 - ] - edge [ - source 9 - target 6 - label 0 - ] - edge [ - source 9 - target 7 - label 0 - ] - edge [ - source 9 - target 8 - label 0 - ] - edge [ - source 9 - target 9 - label 0 - ] - edge [ - source 10 - target 1 - label 0 - ] - edge [ - source 10 - target 2 - label 0 - ] - edge [ - source 10 - target 3 - label 0 - ] - edge [ - source 10 - target 4 - label 0 - ] - edge [ - source 10 - target 5 - label 0 - ] - edge [ - source 10 - target 6 - label 0 - ] - edge [ - source 10 - target 7 - label 0 - ] - edge [ - source 10 - target 8 - label 0 - ] - edge [ - source 10 - target 9 - label 0 - ] - edge [ - source 10 - target 10 - label 0 - ] - edge [ - source 11 - target 1 - label 0 - ] - edge [ - source 11 - target 2 - label 0 - ] - edge [ - source 11 - target 3 - label 0 - ] - edge [ - source 11 - target 4 - label 0 - ] - edge [ - source 11 - target 5 - label 0 - ] - edge [ - source 11 - target 6 - label 0 - ] - edge [ - source 11 - target 7 - label 0 - ] - edge [ - source 11 - target 8 - label 0 - ] - edge [ - source 11 - target 9 - label 0 - ] - edge [ - source 11 - target 10 - label 0 - ] - edge [ - source 11 - target 11 - label 0 - ] - edge [ - source 12 - target 1 - label 0 - ] - edge [ - source 12 - target 2 - label 0 - ] - edge [ - source 12 - target 3 - label 0 - ] - edge [ - source 12 - target 4 - label 0 - ] - edge [ - source 12 - target 5 - label 0 - ] - edge [ - source 12 - target 6 - label 0 - ] - edge [ - source 12 - target 7 - label 0 - ] - edge [ - source 12 - target 8 - label 0 - ] - edge [ - source 12 - target 9 - label 0 - ] - edge [ - source 12 - target 10 - label 0 - ] - edge [ - source 12 - target 11 - label 0 - ] - edge [ - source 12 - target 12 - label 0 - ] - edge [ - source 13 - target 1 - label 0 - ] - edge [ - source 13 - target 2 - label 0 - ] - edge [ - source 13 - target 3 - label 0 - ] - edge [ - source 13 - target 4 - label 0 - ] - edge [ - source 13 - target 5 - label 0 - ] - edge [ - source 13 - target 6 - label 0 - ] - edge [ - source 13 - target 7 - label 0 - ] - edge [ - source 13 - target 8 - label 0 - ] - edge [ - source 13 - target 9 - label 0 - ] - edge [ - source 13 - target 10 - label 0 - ] - edge [ - source 13 - target 11 - label 0 - ] - edge [ - source 13 - target 12 - label 0 - ] - edge [ - source 13 - target 13 - label 0 - ] - edge [ - source 14 - target 1 - label 0 - ] - edge [ - source 14 - target 2 - label 0 - ] - edge [ - source 14 - target 3 - label 0 - ] - edge [ - source 14 - target 4 - label 0 - ] - edge [ - source 14 - target 5 - label 0 - ] - edge [ - source 14 - target 6 - label 0 - ] - edge [ - source 14 - target 7 - label 0 - ] - edge [ - source 14 - target 8 - label 0 - ] - edge [ - source 14 - target 9 - label 0 - ] - edge [ - source 14 - target 10 - label 0 - ] - edge [ - source 14 - target 11 - label 0 - ] - edge [ - source 14 - target 12 - label 0 - ] - edge [ - source 14 - target 13 - label 0 - ] - edge [ - source 14 - target 14 - label 0 - ] - edge [ - source 15 - target 1 - label 0 - ] - edge [ - source 15 - target 2 - label 0 - ] - edge [ - source 15 - target 3 - label 0 - ] - edge [ - source 15 - target 4 - label 0 - ] - edge [ - source 15 - target 5 - label 0 - ] - edge [ - source 15 - target 6 - label 0 - ] - edge [ - source 15 - target 7 - label 0 - ] - edge [ - source 15 - target 8 - label 0 - ] - edge [ - source 15 - target 9 - label 0 - ] - edge [ - source 15 - target 10 - label 0 - ] - edge [ - source 15 - target 11 - label 0 - ] - edge [ - source 15 - target 12 - label 0 - ] - edge [ - source 15 - target 13 - label 0 - ] - edge [ - source 15 - target 14 - label 0 - ] - edge [ - source 15 - target 15 - label 0 - ] - edge [ - source 16 - target 1 - label 0 - ] - edge [ - source 16 - target 2 - label 0 - ] - edge [ - source 16 - target 3 - label 0 - ] - edge [ - source 16 - target 4 - label 0 - ] - edge [ - source 16 - target 5 - label 0 - ] - edge [ - source 16 - target 6 - label 0 - ] - edge [ - source 16 - target 7 - label 0 - ] - edge [ - source 16 - target 8 - label 0 - ] - edge [ - source 16 - target 9 - label 0 - ] - edge [ - source 16 - target 10 - label 0 - ] - edge [ - source 16 - target 11 - label 0 - ] - edge [ - source 16 - target 12 - label 0 - ] - edge [ - source 16 - target 13 - label 0 - ] - edge [ - source 16 - target 14 - label 0 - ] - edge [ - source 16 - target 15 - label 0 - ] - edge [ - source 16 - target 16 - label 0 - ] - edge [ - source 17 - target 1 - label 0 - ] - edge [ - source 17 - target 2 - label 0 - ] - edge [ - source 17 - target 3 - label 0 - ] - edge [ - source 17 - target 4 - label 0 - ] - edge [ - source 17 - target 5 - label 0 - ] - edge [ - source 17 - target 6 - label 0 - ] - edge [ - source 17 - target 7 - label 0 - ] - edge [ - source 17 - target 8 - label 0 - ] - edge [ - source 17 - target 9 - label 0 - ] - edge [ - source 17 - target 10 - label 0 - ] - edge [ - source 17 - target 11 - label 0 - ] - edge [ - source 17 - target 12 - label 0 - ] - edge [ - source 17 - target 13 - label 0 - ] - edge [ - source 17 - target 14 - label 0 - ] - edge [ - source 17 - target 15 - label 0 - ] - edge [ - source 17 - target 16 - label 0 - ] - edge [ - source 17 - target 17 - label 0 - ] - edge [ - source 18 - target 1 - label 0 - ] - edge [ - source 18 - target 2 - label 0 - ] - edge [ - source 18 - target 3 - label 0 - ] - edge [ - source 18 - target 4 - label 0 - ] - edge [ - source 18 - target 5 - label 0 - ] - edge [ - source 18 - target 6 - label 0 - ] - edge [ - source 18 - target 7 - label 0 - ] - edge [ - source 18 - target 8 - label 0 - ] - edge [ - source 18 - target 9 - label 0 - ] - edge [ - source 18 - target 10 - label 0 - ] - edge [ - source 18 - target 11 - label 0 - ] - edge [ - source 18 - target 12 - label 0 - ] - edge [ - source 18 - target 13 - label 0 - ] - edge [ - source 18 - target 14 - label 0 - ] - edge [ - source 18 - target 15 - label 0 - ] - edge [ - source 18 - target 16 - label 0 - ] - edge [ - source 18 - target 17 - label 0 - ] - edge [ - source 18 - target 18 - label 0 - ] - edge [ - source 19 - target 1 - label 0 - ] - edge [ - source 19 - target 2 - label 0 - ] - edge [ - source 19 - target 3 - label 0 - ] - edge [ - source 19 - target 4 - label 0 - ] - edge [ - source 19 - target 5 - label 0 - ] - edge [ - source 19 - target 6 - label 0 - ] - edge [ - source 19 - target 7 - label 0 - ] - edge [ - source 19 - target 8 - label 0 - ] - edge [ - source 19 - target 9 - label 0 - ] - edge [ - source 19 - target 10 - label 0 - ] - edge [ - source 19 - target 11 - label 0 - ] - edge [ - source 19 - target 12 - label 0 - ] - edge [ - source 19 - target 13 - label 0 - ] - edge [ - source 19 - target 14 - label 0 - ] - edge [ - source 19 - target 15 - label 0 - ] - edge [ - source 19 - target 16 - label 0 - ] - edge [ - source 19 - target 17 - label 0 - ] - edge [ - source 19 - target 18 - label 0 - ] - edge [ - source 19 - target 19 - label 0 - ] - edge [ - source 20 - target 1 - label 0 - ] - edge [ - source 20 - target 2 - label 0 - ] - edge [ - source 20 - target 3 - label 0 - ] - edge [ - source 20 - target 4 - label 0 - ] - edge [ - source 20 - target 5 - label 0 - ] - edge [ - source 20 - target 6 - label 0 - ] - edge [ - source 20 - target 7 - label 0 - ] - edge [ - source 20 - target 8 - label 0 - ] - edge [ - source 20 - target 9 - label 0 - ] - edge [ - source 20 - target 10 - label 0 - ] - edge [ - source 20 - target 11 - label 0 - ] - edge [ - source 20 - target 12 - label 0 - ] - edge [ - source 20 - target 13 - label 0 - ] - edge [ - source 20 - target 14 - label 0 - ] - edge [ - source 20 - target 15 - label 0 - ] - edge [ - source 20 - target 16 - label 0 - ] - edge [ - source 20 - target 17 - label 0 - ] - edge [ - source 20 - target 18 - label 0 - ] - edge [ - source 20 - target 19 - label 0 - ] - edge [ - source 20 - target 20 - label 0 - ] - edge [ - source 21 - target 1 - label 0 - ] - edge [ - source 21 - target 2 - label 0 - ] - edge [ - source 21 - target 3 - label 0 - ] - edge [ - source 21 - target 4 - label 0 - ] - edge [ - source 21 - target 5 - label 0 - ] - edge [ - source 21 - target 6 - label 0 - ] - edge [ - source 21 - target 7 - label 0 - ] - edge [ - source 21 - target 8 - label 0 - ] - edge [ - source 21 - target 9 - label 0 - ] - edge [ - source 21 - target 10 - label 0 - ] - edge [ - source 21 - target 11 - label 0 - ] - edge [ - source 21 - target 12 - label 0 - ] - edge [ - source 21 - target 13 - label 0 - ] - edge [ - source 21 - target 14 - label 0 - ] - edge [ - source 21 - target 15 - label 0 - ] - edge [ - source 21 - target 16 - label 0 - ] - edge [ - source 21 - target 17 - label 0 - ] - edge [ - source 21 - target 18 - label 0 - ] - edge [ - source 21 - target 19 - label 0 - ] - edge [ - source 21 - target 20 - label 0 - ] - edge [ - source 21 - target 21 - label 0 - ] - edge [ - source 22 - target 1 - label 0 - ] - edge [ - source 22 - target 2 - label 0 - ] - edge [ - source 22 - target 3 - label 0 - ] - edge [ - source 22 - target 4 - label 0 - ] - edge [ - source 22 - target 5 - label 0 - ] - edge [ - source 22 - target 6 - label 0 - ] - edge [ - source 22 - target 7 - label 0 - ] - edge [ - source 22 - target 8 - label 0 - ] - edge [ - source 22 - target 9 - label 0 - ] - edge [ - source 22 - target 10 - label 0 - ] - edge [ - source 22 - target 11 - label 0 - ] - edge [ - source 22 - target 12 - label 0 - ] - edge [ - source 22 - target 13 - label 0 - ] - edge [ - source 22 - target 14 - label 0 - ] - edge [ - source 22 - target 15 - label 0 - ] - edge [ - source 22 - target 16 - label 0 - ] - edge [ - source 22 - target 17 - label 0 - ] - edge [ - source 22 - target 18 - label 0 - ] - edge [ - source 22 - target 19 - label 0 - ] - edge [ - source 22 - target 20 - label 0 - ] - edge [ - source 22 - target 21 - label 0 - ] - edge [ - source 22 - target 22 - label 0 - ] - edge [ - source 23 - target 1 - label 0 - ] - edge [ - source 23 - target 2 - label 0 - ] - edge [ - source 23 - target 3 - label 0 - ] - edge [ - source 23 - target 4 - label 0 - ] - edge [ - source 23 - target 5 - label 0 - ] - edge [ - source 23 - target 6 - label 0 - ] - edge [ - source 23 - target 7 - label 0 - ] - edge [ - source 23 - target 8 - label 0 - ] - edge [ - source 23 - target 9 - label 0 - ] - edge [ - source 23 - target 10 - label 0 - ] - edge [ - source 23 - target 11 - label 0 - ] - edge [ - source 23 - target 12 - label 0 - ] - edge [ - source 23 - target 13 - label 0 - ] - edge [ - source 23 - target 14 - label 0 - ] - edge [ - source 23 - target 15 - label 0 - ] - edge [ - source 23 - target 16 - label 0 - ] - edge [ - source 23 - target 17 - label 0 - ] - edge [ - source 23 - target 18 - label 0 - ] - edge [ - source 23 - target 19 - label 0 - ] - edge [ - source 23 - target 20 - label 0 - ] - edge [ - source 23 - target 21 - label 0 - ] - edge [ - source 23 - target 22 - label 0 - ] - edge [ - source 23 - target 23 - label 0 - ] - edge [ - source 24 - target 1 - label 0 - ] - edge [ - source 24 - target 2 - label 0 - ] - edge [ - source 24 - target 3 - label 0 - ] - edge [ - source 24 - target 4 - label 0 - ] - edge [ - source 24 - target 5 - label 0 - ] - edge [ - source 24 - target 6 - label 0 - ] - edge [ - source 24 - target 7 - label 0 - ] - edge [ - source 24 - target 8 - label 0 - ] - edge [ - source 24 - target 9 - label 0 - ] - edge [ - source 24 - target 10 - label 0 - ] - edge [ - source 24 - target 11 - label 0 - ] - edge [ - source 24 - target 12 - label 0 - ] - edge [ - source 24 - target 13 - label 0 - ] - edge [ - source 24 - target 14 - label 0 - ] - edge [ - source 24 - target 15 - label 0 - ] - edge [ - source 24 - target 16 - label 0 - ] - edge [ - source 24 - target 17 - label 0 - ] - edge [ - source 24 - target 18 - label 0 - ] - edge [ - source 24 - target 19 - label 0 - ] - edge [ - source 24 - target 20 - label 0 - ] - edge [ - source 24 - target 21 - label 0 - ] - edge [ - source 24 - target 22 - label 0 - ] - edge [ - source 24 - target 23 - label 0 - ] - edge [ - source 24 - target 24 - label 0 - ] - edge [ - source 25 - target 1 - label 0 - ] - edge [ - source 25 - target 2 - label 0 - ] - edge [ - source 25 - target 3 - label 0 - ] - edge [ - source 25 - target 4 - label 0 - ] - edge [ - source 25 - target 5 - label 0 - ] - edge [ - source 25 - target 6 - label 0 - ] - edge [ - source 25 - target 7 - label 0 - ] - edge [ - source 25 - target 8 - label 0 - ] - edge [ - source 25 - target 9 - label 0 - ] - edge [ - source 25 - target 10 - label 0 - ] - edge [ - source 25 - target 11 - label 0 - ] - edge [ - source 25 - target 12 - label 0 - ] - edge [ - source 25 - target 13 - label 0 - ] - edge [ - source 25 - target 14 - label 0 - ] - edge [ - source 25 - target 15 - label 0 - ] - edge [ - source 25 - target 16 - label 0 - ] - edge [ - source 25 - target 17 - label 0 - ] - edge [ - source 25 - target 18 - label 0 - ] - edge [ - source 25 - target 19 - label 0 - ] - edge [ - source 25 - target 20 - label 0 - ] - edge [ - source 25 - target 21 - label 0 - ] - edge [ - source 25 - target 22 - label 0 - ] - edge [ - source 25 - target 23 - label 0 - ] - edge [ - source 25 - target 24 - label 0 - ] - edge [ - source 25 - target 25 - label 0 - ] - edge [ - source 26 - target 1 - label 0 - ] - edge [ - source 26 - target 2 - label 0 - ] - edge [ - source 26 - target 3 - label 0 - ] - edge [ - source 26 - target 4 - label 0 - ] - edge [ - source 26 - target 5 - label 0 - ] - edge [ - source 26 - target 6 - label 0 - ] - edge [ - source 26 - target 7 - label 0 - ] - edge [ - source 26 - target 8 - label 0 - ] - edge [ - source 26 - target 9 - label 0 - ] - edge [ - source 26 - target 10 - label 0 - ] - edge [ - source 26 - target 11 - label 0 - ] - edge [ - source 26 - target 12 - label 0 - ] - edge [ - source 26 - target 13 - label 0 - ] - edge [ - source 26 - target 14 - label 0 - ] - edge [ - source 26 - target 15 - label 0 - ] - edge [ - source 26 - target 16 - label 0 - ] - edge [ - source 26 - target 17 - label 0 - ] - edge [ - source 26 - target 18 - label 0 - ] - edge [ - source 26 - target 19 - label 0 - ] - edge [ - source 26 - target 20 - label 0 - ] - edge [ - source 26 - target 21 - label 0 - ] - edge [ - source 26 - target 22 - label 0 - ] - edge [ - source 26 - target 23 - label 0 - ] - edge [ - source 26 - target 24 - label 0 - ] - edge [ - source 26 - target 25 - label 0 - ] - edge [ - source 26 - target 26 - label 0 - ] - edge [ - source 27 - target 1 - label 0 - ] - edge [ - source 27 - target 2 - label 0 - ] - edge [ - source 27 - target 3 - label 0 - ] - edge [ - source 27 - target 4 - label 0 - ] - edge [ - source 27 - target 5 - label 0 - ] - edge [ - source 27 - target 6 - label 0 - ] - edge [ - source 27 - target 7 - label 0 - ] - edge [ - source 27 - target 8 - label 0 - ] - edge [ - source 27 - target 9 - label 0 - ] - edge [ - source 27 - target 10 - label 0 - ] - edge [ - source 27 - target 11 - label 0 - ] - edge [ - source 27 - target 12 - label 0 - ] - edge [ - source 27 - target 13 - label 0 - ] - edge [ - source 27 - target 14 - label 0 - ] - edge [ - source 27 - target 15 - label 0 - ] - edge [ - source 27 - target 16 - label 0 - ] - edge [ - source 27 - target 17 - label 0 - ] - edge [ - source 27 - target 18 - label 0 - ] - edge [ - source 27 - target 19 - label 0 - ] - edge [ - source 27 - target 20 - label 0 - ] - edge [ - source 27 - target 21 - label 0 - ] - edge [ - source 27 - target 22 - label 0 - ] - edge [ - source 27 - target 23 - label 0 - ] - edge [ - source 27 - target 24 - label 0 - ] - edge [ - source 27 - target 25 - label 0 - ] - edge [ - source 27 - target 26 - label 0 - ] - edge [ - source 27 - target 27 - label 0 - ] - edge [ - source 28 - target 1 - label 0 - ] - edge [ - source 28 - target 2 - label 0 - ] - edge [ - source 28 - target 3 - label 0 - ] - edge [ - source 28 - target 4 - label 0 - ] - edge [ - source 28 - target 5 - label 0 - ] - edge [ - source 28 - target 6 - label 0 - ] - edge [ - source 28 - target 7 - label 0 - ] - edge [ - source 28 - target 8 - label 0 - ] - edge [ - source 28 - target 9 - label 0 - ] - edge [ - source 28 - target 10 - label 0 - ] - edge [ - source 28 - target 11 - label 0 - ] - edge [ - source 28 - target 12 - label 0 - ] - edge [ - source 28 - target 13 - label 0 - ] - edge [ - source 28 - target 14 - label 0 - ] - edge [ - source 28 - target 15 - label 0 - ] - edge [ - source 28 - target 16 - label 0 - ] - edge [ - source 28 - target 17 - label 0 - ] - edge [ - source 28 - target 18 - label 0 - ] - edge [ - source 28 - target 19 - label 0 - ] - edge [ - source 28 - target 20 - label 0 - ] - edge [ - source 28 - target 21 - label 0 - ] - edge [ - source 28 - target 22 - label 0 - ] - edge [ - source 28 - target 23 - label 0 - ] - edge [ - source 28 - target 24 - label 0 - ] - edge [ - source 28 - target 25 - label 0 - ] - edge [ - source 28 - target 26 - label 0 - ] - edge [ - source 28 - target 27 - label 0 - ] - edge [ - source 28 - target 28 - label 0 - ] - edge [ - source 29 - target 1 - label 0 - ] - edge [ - source 29 - target 2 - label 0 - ] - edge [ - source 29 - target 3 - label 0 - ] - edge [ - source 29 - target 4 - label 0 - ] - edge [ - source 29 - target 5 - label 0 - ] - edge [ - source 29 - target 6 - label 0 - ] - edge [ - source 29 - target 7 - label 0 - ] - edge [ - source 29 - target 8 - label 0 - ] - edge [ - source 29 - target 9 - label 0 - ] - edge [ - source 29 - target 10 - label 0 - ] - edge [ - source 29 - target 11 - label 0 - ] - edge [ - source 29 - target 12 - label 0 - ] - edge [ - source 29 - target 13 - label 0 - ] - edge [ - source 29 - target 14 - label 0 - ] - edge [ - source 29 - target 15 - label 0 - ] - edge [ - source 29 - target 16 - label 0 - ] - edge [ - source 29 - target 17 - label 0 - ] - edge [ - source 29 - target 18 - label 0 - ] - edge [ - source 29 - target 19 - label 0 - ] - edge [ - source 29 - target 20 - label 0 - ] - edge [ - source 29 - target 21 - label 0 - ] - edge [ - source 29 - target 22 - label 0 - ] - edge [ - source 29 - target 23 - label 0 - ] - edge [ - source 29 - target 24 - label 0 - ] - edge [ - source 29 - target 25 - label 0 - ] - edge [ - source 29 - target 26 - label 0 - ] - edge [ - source 29 - target 27 - label 0 - ] - edge [ - source 29 - target 28 - label 0 - ] - edge [ - source 29 - target 29 - label 0 - ] - edge [ - source 30 - target 1 - label 0 - ] - edge [ - source 30 - target 2 - label 0 - ] - edge [ - source 30 - target 3 - label 0 - ] - edge [ - source 30 - target 4 - label 0 - ] - edge [ - source 30 - target 5 - label 0 - ] - edge [ - source 30 - target 6 - label 0 - ] - edge [ - source 30 - target 7 - label 0 - ] - edge [ - source 30 - target 8 - label 0 - ] - edge [ - source 30 - target 9 - label 0 - ] - edge [ - source 30 - target 10 - label 0 - ] - edge [ - source 30 - target 11 - label 0 - ] - edge [ - source 30 - target 12 - label 0 - ] - edge [ - source 30 - target 13 - label 0 - ] - edge [ - source 30 - target 14 - label 0 - ] - edge [ - source 30 - target 15 - label 0 - ] - edge [ - source 30 - target 16 - label 0 - ] - edge [ - source 30 - target 17 - label 0 - ] - edge [ - source 30 - target 18 - label 0 - ] - edge [ - source 30 - target 19 - label 0 - ] - edge [ - source 30 - target 20 - label 0 - ] - edge [ - source 30 - target 21 - label 0 - ] - edge [ - source 30 - target 22 - label 0 - ] - edge [ - source 30 - target 23 - label 0 - ] - edge [ - source 30 - target 24 - label 0 - ] - edge [ - source 30 - target 25 - label 0 - ] - edge [ - source 30 - target 26 - label 0 - ] - edge [ - source 30 - target 27 - label 0 - ] - edge [ - source 30 - target 28 - label 0 - ] - edge [ - source 30 - target 29 - label 0 - ] - edge [ - source 30 - target 30 - label 0 - ] - edge [ - source 31 - target 1 - label 0 - ] - edge [ - source 31 - target 2 - label 0 - ] - edge [ - source 31 - target 3 - label 0 - ] - edge [ - source 31 - target 4 - label 0 - ] - edge [ - source 31 - target 5 - label 0 - ] - edge [ - source 31 - target 6 - label 0 - ] - edge [ - source 31 - target 7 - label 0 - ] - edge [ - source 31 - target 8 - label 0 - ] - edge [ - source 31 - target 9 - label 0 - ] - edge [ - source 31 - target 10 - label 0 - ] - edge [ - source 31 - target 11 - label 0 - ] - edge [ - source 31 - target 12 - label 0 - ] - edge [ - source 31 - target 13 - label 0 - ] - edge [ - source 31 - target 14 - label 0 - ] - edge [ - source 31 - target 15 - label 0 - ] - edge [ - source 31 - target 16 - label 0 - ] - edge [ - source 31 - target 17 - label 0 - ] - edge [ - source 31 - target 18 - label 0 - ] - edge [ - source 31 - target 19 - label 0 - ] - edge [ - source 31 - target 20 - label 0 - ] - edge [ - source 31 - target 21 - label 0 - ] - edge [ - source 31 - target 22 - label 0 - ] - edge [ - source 31 - target 23 - label 0 - ] - edge [ - source 31 - target 24 - label 0 - ] - edge [ - source 31 - target 25 - label 0 - ] - edge [ - source 31 - target 26 - label 0 - ] - edge [ - source 31 - target 27 - label 0 - ] - edge [ - source 31 - target 28 - label 0 - ] - edge [ - source 31 - target 29 - label 0 - ] - edge [ - source 31 - target 30 - label 0 - ] - edge [ - source 31 - target 31 - label 0 - ] - edge [ - source 32 - target 1 - label 0 - ] - edge [ - source 32 - target 2 - label 0 - ] - edge [ - source 32 - target 3 - label 0 - ] - edge [ - source 32 - target 4 - label 0 - ] - edge [ - source 32 - target 5 - label 0 - ] - edge [ - source 32 - target 6 - label 0 - ] - edge [ - source 32 - target 7 - label 0 - ] - edge [ - source 32 - target 8 - label 0 - ] - edge [ - source 32 - target 9 - label 0 - ] - edge [ - source 32 - target 10 - label 0 - ] - edge [ - source 32 - target 11 - label 0 - ] - edge [ - source 32 - target 12 - label 0 - ] - edge [ - source 32 - target 13 - label 0 - ] - edge [ - source 32 - target 14 - label 0 - ] - edge [ - source 32 - target 15 - label 0 - ] - edge [ - source 32 - target 16 - label 0 - ] - edge [ - source 32 - target 17 - label 0 - ] - edge [ - source 32 - target 18 - label 0 - ] - edge [ - source 32 - target 19 - label 0 - ] - edge [ - source 32 - target 20 - label 0 - ] - edge [ - source 32 - target 21 - label 0 - ] - edge [ - source 32 - target 22 - label 0 - ] - edge [ - source 32 - target 23 - label 0 - ] - edge [ - source 32 - target 24 - label 0 - ] - edge [ - source 32 - target 25 - label 0 - ] - edge [ - source 32 - target 26 - label 0 - ] - edge [ - source 32 - target 27 - label 0 - ] - edge [ - source 32 - target 28 - label 0 - ] - edge [ - source 32 - target 29 - label 0 - ] - edge [ - source 32 - target 30 - label 0 - ] - edge [ - source 32 - target 31 - label 0 - ] - edge [ - source 32 - target 32 - label 0 - ] - edge [ - source 33 - target 1 - label 0 - ] - edge [ - source 33 - target 2 - label 0 - ] - edge [ - source 33 - target 3 - label 0 - ] - edge [ - source 33 - target 4 - label 0 - ] - edge [ - source 33 - target 5 - label 0 - ] - edge [ - source 33 - target 6 - label 0 - ] - edge [ - source 33 - target 7 - label 0 - ] - edge [ - source 33 - target 8 - label 0 - ] - edge [ - source 33 - target 9 - label 0 - ] - edge [ - source 33 - target 10 - label 0 - ] - edge [ - source 33 - target 11 - label 0 - ] - edge [ - source 33 - target 12 - label 0 - ] - edge [ - source 33 - target 13 - label 0 - ] - edge [ - source 33 - target 14 - label 0 - ] - edge [ - source 33 - target 15 - label 0 - ] - edge [ - source 33 - target 16 - label 0 - ] - edge [ - source 33 - target 17 - label 0 - ] - edge [ - source 33 - target 18 - label 0 - ] - edge [ - source 33 - target 19 - label 0 - ] - edge [ - source 33 - target 20 - label 0 - ] - edge [ - source 33 - target 21 - label 0 - ] - edge [ - source 33 - target 22 - label 0 - ] - edge [ - source 33 - target 23 - label 0 - ] - edge [ - source 33 - target 24 - label 0 - ] - edge [ - source 33 - target 25 - label 0 - ] - edge [ - source 33 - target 26 - label 0 - ] - edge [ - source 33 - target 27 - label 0 - ] - edge [ - source 33 - target 28 - label 0 - ] - edge [ - source 33 - target 29 - label 0 - ] - edge [ - source 33 - target 30 - label 0 - ] - edge [ - source 33 - target 31 - label 0 - ] - edge [ - source 33 - target 32 - label 0 - ] - edge [ - source 33 - target 33 - label 0 - ] - edge [ - source 34 - target 1 - label 0 - ] - edge [ - source 34 - target 2 - label 0 - ] - edge [ - source 34 - target 3 - label 0 - ] - edge [ - source 34 - target 4 - label 0 - ] - edge [ - source 34 - target 5 - label 0 - ] - edge [ - source 34 - target 6 - label 0 - ] - edge [ - source 34 - target 7 - label 0 - ] - edge [ - source 34 - target 8 - label 0 - ] - edge [ - source 34 - target 9 - label 0 - ] - edge [ - source 34 - target 10 - label 0 - ] - edge [ - source 34 - target 11 - label 0 - ] - edge [ - source 34 - target 12 - label 0 - ] - edge [ - source 34 - target 13 - label 0 - ] - edge [ - source 34 - target 14 - label 0 - ] - edge [ - source 34 - target 15 - label 0 - ] - edge [ - source 34 - target 16 - label 0 - ] - edge [ - source 34 - target 17 - label 0 - ] - edge [ - source 34 - target 18 - label 0 - ] - edge [ - source 34 - target 19 - label 0 - ] - edge [ - source 34 - target 20 - label 0 - ] - edge [ - source 34 - target 21 - label 0 - ] - edge [ - source 34 - target 22 - label 0 - ] - edge [ - source 34 - target 23 - label 0 - ] - edge [ - source 34 - target 24 - label 0 - ] - edge [ - source 34 - target 25 - label 0 - ] - edge [ - source 34 - target 26 - label 0 - ] - edge [ - source 34 - target 27 - label 0 - ] - edge [ - source 34 - target 28 - label 0 - ] - edge [ - source 34 - target 29 - label 0 - ] - edge [ - source 34 - target 30 - label 0 - ] - edge [ - source 34 - target 31 - label 0 - ] - edge [ - source 34 - target 32 - label 0 - ] - edge [ - source 34 - target 33 - label 0 - ] - edge [ - source 34 - target 34 - label 0 - ] - edge [ - source 35 - target 1 - label 0 - ] - edge [ - source 35 - target 2 - label 0 - ] - edge [ - source 35 - target 3 - label 0 - ] - edge [ - source 35 - target 4 - label 0 - ] - edge [ - source 35 - target 5 - label 0 - ] - edge [ - source 35 - target 6 - label 0 - ] - edge [ - source 35 - target 7 - label 0 - ] - edge [ - source 35 - target 8 - label 0 - ] - edge [ - source 35 - target 9 - label 0 - ] - edge [ - source 35 - target 10 - label 0 - ] - edge [ - source 35 - target 11 - label 0 - ] - edge [ - source 35 - target 12 - label 0 - ] - edge [ - source 35 - target 13 - label 0 - ] - edge [ - source 35 - target 14 - label 0 - ] - edge [ - source 35 - target 15 - label 0 - ] - edge [ - source 35 - target 16 - label 0 - ] - edge [ - source 35 - target 17 - label 0 - ] - edge [ - source 35 - target 18 - label 0 - ] - edge [ - source 35 - target 19 - label 0 - ] - edge [ - source 35 - target 20 - label 0 - ] - edge [ - source 35 - target 21 - label 0 - ] - edge [ - source 35 - target 22 - label 0 - ] - edge [ - source 35 - target 23 - label 0 - ] - edge [ - source 35 - target 24 - label 0 - ] - edge [ - source 35 - target 25 - label 0 - ] - edge [ - source 35 - target 26 - label 0 - ] - edge [ - source 35 - target 27 - label 0 - ] - edge [ - source 35 - target 28 - label 0 - ] - edge [ - source 35 - target 29 - label 0 - ] - edge [ - source 35 - target 30 - label 0 - ] - edge [ - source 35 - target 31 - label 0 - ] - edge [ - source 35 - target 32 - label 0 - ] - edge [ - source 35 - target 33 - label 0 - ] - edge [ - source 35 - target 34 - label 0 - ] - edge [ - source 35 - target 35 - label 0 - ] - edge [ - source 36 - target 1 - label 0 - ] - edge [ - source 36 - target 2 - label 0 - ] - edge [ - source 36 - target 3 - label 0 - ] - edge [ - source 36 - target 4 - label 0 - ] - edge [ - source 36 - target 5 - label 0 - ] - edge [ - source 36 - target 6 - label 0 - ] - edge [ - source 36 - target 7 - label 0 - ] - edge [ - source 36 - target 8 - label 0 - ] - edge [ - source 36 - target 9 - label 0 - ] - edge [ - source 36 - target 10 - label 0 - ] - edge [ - source 36 - target 11 - label 0 - ] - edge [ - source 36 - target 12 - label 0 - ] - edge [ - source 36 - target 13 - label 0 - ] - edge [ - source 36 - target 14 - label 0 - ] - edge [ - source 36 - target 15 - label 0 - ] - edge [ - source 36 - target 16 - label 0 - ] - edge [ - source 36 - target 17 - label 0 - ] - edge [ - source 36 - target 18 - label 0 - ] - edge [ - source 36 - target 19 - label 0 - ] - edge [ - source 36 - target 20 - label 0 - ] - edge [ - source 36 - target 21 - label 0 - ] - edge [ - source 36 - target 22 - label 0 - ] - edge [ - source 36 - target 23 - label 0 - ] - edge [ - source 36 - target 24 - label 0 - ] - edge [ - source 36 - target 25 - label 0 - ] - edge [ - source 36 - target 26 - label 0 - ] - edge [ - source 36 - target 27 - label 0 - ] - edge [ - source 36 - target 28 - label 0 - ] - edge [ - source 36 - target 29 - label 0 - ] - edge [ - source 36 - target 30 - label 0 - ] - edge [ - source 36 - target 31 - label 0 - ] - edge [ - source 36 - target 32 - label 0 - ] - edge [ - source 36 - target 33 - label 0 - ] - edge [ - source 36 - target 34 - label 0 - ] - edge [ - source 36 - target 35 - label 0 - ] - edge [ - source 36 - target 36 - label 0 - ] - edge [ - source 37 - target 1 - label 0 - ] - edge [ - source 37 - target 2 - label 0 - ] - edge [ - source 37 - target 3 - label 0 - ] - edge [ - source 37 - target 4 - label 0 - ] - edge [ - source 37 - target 5 - label 0 - ] - edge [ - source 37 - target 6 - label 0 - ] - edge [ - source 37 - target 7 - label 0 - ] - edge [ - source 37 - target 8 - label 0 - ] - edge [ - source 37 - target 9 - label 0 - ] - edge [ - source 37 - target 10 - label 0 - ] - edge [ - source 37 - target 11 - label 0 - ] - edge [ - source 37 - target 12 - label 0 - ] - edge [ - source 37 - target 13 - label 0 - ] - edge [ - source 37 - target 14 - label 0 - ] - edge [ - source 37 - target 15 - label 0 - ] - edge [ - source 37 - target 16 - label 0 - ] - edge [ - source 37 - target 17 - label 0 - ] - edge [ - source 37 - target 18 - label 0 - ] - edge [ - source 37 - target 19 - label 0 - ] - edge [ - source 37 - target 20 - label 0 - ] - edge [ - source 37 - target 21 - label 0 - ] - edge [ - source 37 - target 22 - label 0 - ] - edge [ - source 37 - target 23 - label 0 - ] - edge [ - source 37 - target 24 - label 0 - ] - edge [ - source 37 - target 25 - label 0 - ] - edge [ - source 37 - target 26 - label 0 - ] - edge [ - source 37 - target 27 - label 0 - ] - edge [ - source 37 - target 28 - label 0 - ] - edge [ - source 37 - target 29 - label 0 - ] - edge [ - source 37 - target 30 - label 0 - ] - edge [ - source 37 - target 31 - label 0 - ] - edge [ - source 37 - target 32 - label 0 - ] - edge [ - source 37 - target 33 - label 0 - ] - edge [ - source 37 - target 34 - label 0 - ] - edge [ - source 37 - target 35 - label 0 - ] - edge [ - source 37 - target 36 - label 0 - ] - edge [ - source 37 - target 37 - label 0 - ] - edge [ - source 38 - target 1 - label 0 - ] - edge [ - source 38 - target 2 - label 0 - ] - edge [ - source 38 - target 3 - label 0 - ] - edge [ - source 38 - target 4 - label 0 - ] - edge [ - source 38 - target 5 - label 0 - ] - edge [ - source 38 - target 6 - label 0 - ] - edge [ - source 38 - target 7 - label 0 - ] - edge [ - source 38 - target 8 - label 0 - ] - edge [ - source 38 - target 9 - label 0 - ] - edge [ - source 38 - target 10 - label 0 - ] - edge [ - source 38 - target 11 - label 0 - ] - edge [ - source 38 - target 12 - label 0 - ] - edge [ - source 38 - target 13 - label 0 - ] - edge [ - source 38 - target 14 - label 0 - ] - edge [ - source 38 - target 15 - label 0 - ] - edge [ - source 38 - target 16 - label 0 - ] - edge [ - source 38 - target 17 - label 0 - ] - edge [ - source 38 - target 18 - label 0 - ] - edge [ - source 38 - target 19 - label 0 - ] - edge [ - source 38 - target 20 - label 0 - ] - edge [ - source 38 - target 21 - label 0 - ] - edge [ - source 38 - target 22 - label 0 - ] - edge [ - source 38 - target 23 - label 0 - ] - edge [ - source 38 - target 24 - label 0 - ] - edge [ - source 38 - target 25 - label 0 - ] - edge [ - source 38 - target 26 - label 0 - ] - edge [ - source 38 - target 27 - label 0 - ] - edge [ - source 38 - target 28 - label 0 - ] - edge [ - source 38 - target 29 - label 0 - ] - edge [ - source 38 - target 30 - label 0 - ] - edge [ - source 38 - target 31 - label 0 - ] - edge [ - source 38 - target 32 - label 0 - ] - edge [ - source 38 - target 33 - label 0 - ] - edge [ - source 38 - target 34 - label 0 - ] - edge [ - source 38 - target 35 - label 0 - ] - edge [ - source 38 - target 36 - label 0 - ] - edge [ - source 38 - target 37 - label 0 - ] - edge [ - source 38 - target 38 - label 0 - ] - edge [ - source 39 - target 1 - label 0 - ] - edge [ - source 39 - target 2 - label 0 - ] - edge [ - source 39 - target 3 - label 0 - ] - edge [ - source 39 - target 4 - label 0 - ] - edge [ - source 39 - target 5 - label 0 - ] - edge [ - source 39 - target 6 - label 0 - ] - edge [ - source 39 - target 7 - label 0 - ] - edge [ - source 39 - target 8 - label 0 - ] - edge [ - source 39 - target 9 - label 0 - ] - edge [ - source 39 - target 10 - label 0 - ] - edge [ - source 39 - target 11 - label 0 - ] - edge [ - source 39 - target 12 - label 0 - ] - edge [ - source 39 - target 13 - label 0 - ] - edge [ - source 39 - target 14 - label 0 - ] - edge [ - source 39 - target 15 - label 0 - ] - edge [ - source 39 - target 16 - label 0 - ] - edge [ - source 39 - target 17 - label 0 - ] - edge [ - source 39 - target 18 - label 0 - ] - edge [ - source 39 - target 19 - label 0 - ] - edge [ - source 39 - target 20 - label 0 - ] - edge [ - source 39 - target 21 - label 0 - ] - edge [ - source 39 - target 22 - label 0 - ] - edge [ - source 39 - target 23 - label 0 - ] - edge [ - source 39 - target 24 - label 0 - ] - edge [ - source 39 - target 25 - label 0 - ] - edge [ - source 39 - target 26 - label 0 - ] - edge [ - source 39 - target 27 - label 0 - ] - edge [ - source 39 - target 28 - label 0 - ] - edge [ - source 39 - target 29 - label 0 - ] - edge [ - source 39 - target 30 - label 0 - ] - edge [ - source 39 - target 31 - label 0 - ] - edge [ - source 39 - target 32 - label 0 - ] - edge [ - source 39 - target 33 - label 0 - ] - edge [ - source 39 - target 34 - label 0 - ] - edge [ - source 39 - target 35 - label 0 - ] - edge [ - source 39 - target 36 - label 0 - ] - edge [ - source 39 - target 37 - label 0 - ] - edge [ - source 39 - target 38 - label 0 - ] - edge [ - source 39 - target 39 - label 0 - ] - edge [ - source 40 - target 1 - label 0 - ] - edge [ - source 40 - target 2 - label 0 - ] - edge [ - source 40 - target 3 - label 0 - ] - edge [ - source 40 - target 4 - label 0 - ] - edge [ - source 40 - target 5 - label 0 - ] - edge [ - source 40 - target 6 - label 0 - ] - edge [ - source 40 - target 7 - label 0 - ] - edge [ - source 40 - target 8 - label 0 - ] - edge [ - source 40 - target 9 - label 0 - ] - edge [ - source 40 - target 10 - label 0 - ] - edge [ - source 40 - target 11 - label 0 - ] - edge [ - source 40 - target 12 - label 0 - ] - edge [ - source 40 - target 13 - label 0 - ] - edge [ - source 40 - target 14 - label 0 - ] - edge [ - source 40 - target 15 - label 0 - ] - edge [ - source 40 - target 16 - label 0 - ] - edge [ - source 40 - target 17 - label 0 - ] - edge [ - source 40 - target 18 - label 0 - ] - edge [ - source 40 - target 19 - label 0 - ] - edge [ - source 40 - target 20 - label 0 - ] - edge [ - source 40 - target 21 - label 0 - ] - edge [ - source 40 - target 22 - label 0 - ] - edge [ - source 40 - target 23 - label 0 - ] - edge [ - source 40 - target 24 - label 0 - ] - edge [ - source 40 - target 25 - label 0 - ] - edge [ - source 40 - target 26 - label 0 - ] - edge [ - source 40 - target 27 - label 0 - ] - edge [ - source 40 - target 28 - label 0 - ] - edge [ - source 40 - target 29 - label 0 - ] - edge [ - source 40 - target 30 - label 0 - ] - edge [ - source 40 - target 31 - label 0 - ] - edge [ - source 40 - target 32 - label 0 - ] - edge [ - source 40 - target 33 - label 0 - ] - edge [ - source 40 - target 34 - label 0 - ] - edge [ - source 40 - target 35 - label 0 - ] - edge [ - source 40 - target 36 - label 0 - ] - edge [ - source 40 - target 37 - label 0 - ] - edge [ - source 40 - target 38 - label 0 - ] - edge [ - source 40 - target 39 - label 0 - ] - edge [ - source 40 - target 40 - label 0 - ] - edge [ - source 41 - target 1 - label 0 - ] - edge [ - source 41 - target 2 - label 0 - ] - edge [ - source 41 - target 3 - label 0 - ] - edge [ - source 41 - target 4 - label 0 - ] - edge [ - source 41 - target 5 - label 0 - ] - edge [ - source 41 - target 6 - label 0 - ] - edge [ - source 41 - target 7 - label 0 - ] - edge [ - source 41 - target 8 - label 0 - ] - edge [ - source 41 - target 9 - label 0 - ] - edge [ - source 41 - target 10 - label 0 - ] - edge [ - source 41 - target 11 - label 0 - ] - edge [ - source 41 - target 12 - label 0 - ] - edge [ - source 41 - target 13 - label 0 - ] - edge [ - source 41 - target 14 - label 0 - ] - edge [ - source 41 - target 15 - label 0 - ] - edge [ - source 41 - target 16 - label 0 - ] - edge [ - source 41 - target 17 - label 0 - ] - edge [ - source 41 - target 18 - label 0 - ] - edge [ - source 41 - target 19 - label 0 - ] - edge [ - source 41 - target 20 - label 0 - ] - edge [ - source 41 - target 21 - label 0 - ] - edge [ - source 41 - target 22 - label 0 - ] - edge [ - source 41 - target 23 - label 0 - ] - edge [ - source 41 - target 24 - label 0 - ] - edge [ - source 41 - target 25 - label 0 - ] - edge [ - source 41 - target 26 - label 0 - ] - edge [ - source 41 - target 27 - label 0 - ] - edge [ - source 41 - target 28 - label 0 - ] - edge [ - source 41 - target 29 - label 0 - ] - edge [ - source 41 - target 30 - label 0 - ] - edge [ - source 41 - target 31 - label 0 - ] - edge [ - source 41 - target 32 - label 0 - ] - edge [ - source 41 - target 33 - label 0 - ] - edge [ - source 41 - target 34 - label 0 - ] - edge [ - source 41 - target 35 - label 0 - ] - edge [ - source 41 - target 36 - label 0 - ] - edge [ - source 41 - target 37 - label 0 - ] - edge [ - source 41 - target 38 - label 0 - ] - edge [ - source 41 - target 39 - label 0 - ] - edge [ - source 41 - target 40 - label 0 - ] - edge [ - source 41 - target 41 - label 0 - ] - edge [ - source 42 - target 1 - label 0 - ] - edge [ - source 42 - target 2 - label 0 - ] - edge [ - source 42 - target 3 - label 0 - ] - edge [ - source 42 - target 4 - label 0 - ] - edge [ - source 42 - target 5 - label 0 - ] - edge [ - source 42 - target 6 - label 0 - ] - edge [ - source 42 - target 7 - label 0 - ] - edge [ - source 42 - target 8 - label 0 - ] - edge [ - source 42 - target 9 - label 0 - ] - edge [ - source 42 - target 10 - label 0 - ] - edge [ - source 42 - target 11 - label 0 - ] - edge [ - source 42 - target 12 - label 0 - ] - edge [ - source 42 - target 13 - label 0 - ] - edge [ - source 42 - target 14 - label 0 - ] - edge [ - source 42 - target 15 - label 0 - ] - edge [ - source 42 - target 16 - label 0 - ] - edge [ - source 42 - target 17 - label 0 - ] - edge [ - source 42 - target 18 - label 0 - ] - edge [ - source 42 - target 19 - label 0 - ] - edge [ - source 42 - target 20 - label 0 - ] - edge [ - source 42 - target 21 - label 0 - ] - edge [ - source 42 - target 22 - label 0 - ] - edge [ - source 42 - target 23 - label 0 - ] - edge [ - source 42 - target 24 - label 0 - ] - edge [ - source 42 - target 25 - label 0 - ] - edge [ - source 42 - target 26 - label 0 - ] - edge [ - source 42 - target 27 - label 0 - ] - edge [ - source 42 - target 28 - label 0 - ] - edge [ - source 42 - target 29 - label 0 - ] - edge [ - source 42 - target 30 - label 0 - ] - edge [ - source 42 - target 31 - label 0 - ] - edge [ - source 42 - target 32 - label 0 - ] - edge [ - source 42 - target 33 - label 0 - ] - edge [ - source 42 - target 34 - label 0 - ] - edge [ - source 42 - target 35 - label 0 - ] - edge [ - source 42 - target 36 - label 0 - ] - edge [ - source 42 - target 37 - label 0 - ] - edge [ - source 42 - target 38 - label 0 - ] - edge [ - source 42 - target 39 - label 0 - ] - edge [ - source 42 - target 40 - label 0 - ] - edge [ - source 42 - target 41 - label 0 - ] - edge [ - source 42 - target 42 - label 0 - ] - edge [ - source 43 - target 1 - label 0 - ] - edge [ - source 43 - target 2 - label 0 - ] - edge [ - source 43 - target 3 - label 0 - ] - edge [ - source 43 - target 4 - label 0 - ] - edge [ - source 43 - target 5 - label 0 - ] - edge [ - source 43 - target 6 - label 0 - ] - edge [ - source 43 - target 7 - label 0 - ] - edge [ - source 43 - target 8 - label 0 - ] - edge [ - source 43 - target 9 - label 0 - ] - edge [ - source 43 - target 10 - label 0 - ] - edge [ - source 43 - target 11 - label 0 - ] - edge [ - source 43 - target 12 - label 0 - ] - edge [ - source 43 - target 13 - label 0 - ] - edge [ - source 43 - target 14 - label 0 - ] - edge [ - source 43 - target 15 - label 0 - ] - edge [ - source 43 - target 16 - label 0 - ] - edge [ - source 43 - target 17 - label 0 - ] - edge [ - source 43 - target 18 - label 0 - ] - edge [ - source 43 - target 19 - label 0 - ] - edge [ - source 43 - target 20 - label 0 - ] - edge [ - source 43 - target 21 - label 0 - ] - edge [ - source 43 - target 22 - label 0 - ] - edge [ - source 43 - target 23 - label 0 - ] - edge [ - source 43 - target 24 - label 0 - ] - edge [ - source 43 - target 25 - label 0 - ] - edge [ - source 43 - target 26 - label 0 - ] - edge [ - source 43 - target 27 - label 0 - ] - edge [ - source 43 - target 28 - label 0 - ] - edge [ - source 43 - target 29 - label 0 - ] - edge [ - source 43 - target 30 - label 0 - ] - edge [ - source 43 - target 31 - label 0 - ] - edge [ - source 43 - target 32 - label 0 - ] - edge [ - source 43 - target 33 - label 0 - ] - edge [ - source 43 - target 34 - label 0 - ] - edge [ - source 43 - target 35 - label 0 - ] - edge [ - source 43 - target 36 - label 0 - ] - edge [ - source 43 - target 37 - label 0 - ] - edge [ - source 43 - target 38 - label 0 - ] - edge [ - source 43 - target 39 - label 0 - ] - edge [ - source 43 - target 40 - label 0 - ] - edge [ - source 43 - target 41 - label 0 - ] - edge [ - source 43 - target 42 - label 0 - ] - edge [ - source 43 - target 43 - label 0 - ] - edge [ - source 44 - target 1 - label 0 - ] - edge [ - source 44 - target 2 - label 0 - ] - edge [ - source 44 - target 3 - label 0 - ] - edge [ - source 44 - target 4 - label 0 - ] - edge [ - source 44 - target 5 - label 0 - ] - edge [ - source 44 - target 6 - label 0 - ] - edge [ - source 44 - target 7 - label 0 - ] - edge [ - source 44 - target 8 - label 0 - ] - edge [ - source 44 - target 9 - label 0 - ] - edge [ - source 44 - target 10 - label 0 - ] - edge [ - source 44 - target 11 - label 0 - ] - edge [ - source 44 - target 12 - label 0 - ] - edge [ - source 44 - target 13 - label 0 - ] - edge [ - source 44 - target 14 - label 0 - ] - edge [ - source 44 - target 15 - label 0 - ] - edge [ - source 44 - target 16 - label 0 - ] - edge [ - source 44 - target 17 - label 0 - ] - edge [ - source 44 - target 18 - label 0 - ] - edge [ - source 44 - target 19 - label 0 - ] - edge [ - source 44 - target 20 - label 0 - ] - edge [ - source 44 - target 21 - label 0 - ] - edge [ - source 44 - target 22 - label 0 - ] - edge [ - source 44 - target 23 - label 0 - ] - edge [ - source 44 - target 24 - label 0 - ] - edge [ - source 44 - target 25 - label 0 - ] - edge [ - source 44 - target 26 - label 0 - ] - edge [ - source 44 - target 27 - label 0 - ] - edge [ - source 44 - target 28 - label 0 - ] - edge [ - source 44 - target 29 - label 0 - ] - edge [ - source 44 - target 30 - label 0 - ] - edge [ - source 44 - target 31 - label 0 - ] - edge [ - source 44 - target 32 - label 0 - ] - edge [ - source 44 - target 33 - label 0 - ] - edge [ - source 44 - target 34 - label 0 - ] - edge [ - source 44 - target 35 - label 0 - ] - edge [ - source 44 - target 36 - label 0 - ] - edge [ - source 44 - target 37 - label 0 - ] - edge [ - source 44 - target 38 - label 0 - ] - edge [ - source 44 - target 39 - label 0 - ] - edge [ - source 44 - target 40 - label 0 - ] - edge [ - source 44 - target 41 - label 0 - ] - edge [ - source 44 - target 42 - label 0 - ] - edge [ - source 44 - target 43 - label 0 - ] - edge [ - source 44 - target 44 - label 0 - ] - edge [ - source 45 - target 1 - label 0 - ] - edge [ - source 45 - target 2 - label 0 - ] - edge [ - source 45 - target 3 - label 0 - ] - edge [ - source 45 - target 4 - label 0 - ] - edge [ - source 45 - target 5 - label 0 - ] - edge [ - source 45 - target 6 - label 0 - ] - edge [ - source 45 - target 7 - label 0 - ] - edge [ - source 45 - target 8 - label 0 - ] - edge [ - source 45 - target 9 - label 0 - ] - edge [ - source 45 - target 10 - label 0 - ] - edge [ - source 45 - target 11 - label 0 - ] - edge [ - source 45 - target 12 - label 0 - ] - edge [ - source 45 - target 13 - label 0 - ] - edge [ - source 45 - target 14 - label 0 - ] - edge [ - source 45 - target 15 - label 0 - ] - edge [ - source 45 - target 16 - label 0 - ] - edge [ - source 45 - target 17 - label 0 - ] - edge [ - source 45 - target 18 - label 0 - ] - edge [ - source 45 - target 19 - label 0 - ] - edge [ - source 45 - target 20 - label 0 - ] - edge [ - source 45 - target 21 - label 0 - ] - edge [ - source 45 - target 22 - label 0 - ] - edge [ - source 45 - target 23 - label 0 - ] - edge [ - source 45 - target 24 - label 0 - ] - edge [ - source 45 - target 25 - label 0 - ] - edge [ - source 45 - target 26 - label 0 - ] - edge [ - source 45 - target 27 - label 0 - ] - edge [ - source 45 - target 28 - label 0 - ] - edge [ - source 45 - target 29 - label 0 - ] - edge [ - source 45 - target 30 - label 0 - ] - edge [ - source 45 - target 31 - label 0 - ] - edge [ - source 45 - target 32 - label 0 - ] - edge [ - source 45 - target 33 - label 0 - ] - edge [ - source 45 - target 34 - label 0 - ] - edge [ - source 45 - target 35 - label 0 - ] - edge [ - source 45 - target 36 - label 0 - ] - edge [ - source 45 - target 37 - label 0 - ] - edge [ - source 45 - target 38 - label 0 - ] - edge [ - source 45 - target 39 - label 0 - ] - edge [ - source 45 - target 40 - label 0 - ] - edge [ - source 45 - target 41 - label 0 - ] - edge [ - source 45 - target 42 - label 0 - ] - edge [ - source 45 - target 43 - label 0 - ] - edge [ - source 45 - target 44 - label 0 - ] - edge [ - source 45 - target 45 - label 0 - ] - edge [ - source 46 - target 1 - label 0 - ] - edge [ - source 46 - target 2 - label 0 - ] - edge [ - source 46 - target 3 - label 0 - ] - edge [ - source 46 - target 4 - label 0 - ] - edge [ - source 46 - target 5 - label 0 - ] - edge [ - source 46 - target 6 - label 0 - ] - edge [ - source 46 - target 7 - label 0 - ] - edge [ - source 46 - target 8 - label 0 - ] - edge [ - source 46 - target 9 - label 0 - ] - edge [ - source 46 - target 10 - label 0 - ] - edge [ - source 46 - target 11 - label 0 - ] - edge [ - source 46 - target 12 - label 0 - ] - edge [ - source 46 - target 13 - label 0 - ] - edge [ - source 46 - target 14 - label 0 - ] - edge [ - source 46 - target 15 - label 0 - ] - edge [ - source 46 - target 16 - label 0 - ] - edge [ - source 46 - target 17 - label 0 - ] - edge [ - source 46 - target 18 - label 0 - ] - edge [ - source 46 - target 19 - label 0 - ] - edge [ - source 46 - target 20 - label 0 - ] - edge [ - source 46 - target 21 - label 0 - ] - edge [ - source 46 - target 22 - label 0 - ] - edge [ - source 46 - target 23 - label 0 - ] - edge [ - source 46 - target 24 - label 0 - ] - edge [ - source 46 - target 25 - label 0 - ] - edge [ - source 46 - target 26 - label 0 - ] - edge [ - source 46 - target 27 - label 0 - ] - edge [ - source 46 - target 28 - label 0 - ] - edge [ - source 46 - target 29 - label 0 - ] - edge [ - source 46 - target 30 - label 0 - ] - edge [ - source 46 - target 31 - label 0 - ] - edge [ - source 46 - target 32 - label 0 - ] - edge [ - source 46 - target 33 - label 0 - ] - edge [ - source 46 - target 34 - label 0 - ] - edge [ - source 46 - target 35 - label 0 - ] - edge [ - source 46 - target 36 - label 0 - ] - edge [ - source 46 - target 37 - label 0 - ] - edge [ - source 46 - target 38 - label 0 - ] - edge [ - source 46 - target 39 - label 0 - ] - edge [ - source 46 - target 40 - label 0 - ] - edge [ - source 46 - target 41 - label 0 - ] - edge [ - source 46 - target 42 - label 0 - ] - edge [ - source 46 - target 43 - label 0 - ] - edge [ - source 46 - target 44 - label 0 - ] - edge [ - source 46 - target 45 - label 0 - ] - edge [ - source 46 - target 46 - label 0 - ] - edge [ - source 47 - target 1 - label 0 - ] - edge [ - source 47 - target 2 - label 0 - ] - edge [ - source 47 - target 3 - label 0 - ] - edge [ - source 47 - target 4 - label 0 - ] - edge [ - source 47 - target 5 - label 0 - ] - edge [ - source 47 - target 6 - label 0 - ] - edge [ - source 47 - target 7 - label 0 - ] - edge [ - source 47 - target 8 - label 0 - ] - edge [ - source 47 - target 9 - label 0 - ] - edge [ - source 47 - target 10 - label 0 - ] - edge [ - source 47 - target 11 - label 0 - ] - edge [ - source 47 - target 12 - label 0 - ] - edge [ - source 47 - target 13 - label 0 - ] - edge [ - source 47 - target 14 - label 0 - ] - edge [ - source 47 - target 15 - label 0 - ] - edge [ - source 47 - target 16 - label 0 - ] - edge [ - source 47 - target 17 - label 0 - ] - edge [ - source 47 - target 18 - label 0 - ] - edge [ - source 47 - target 19 - label 0 - ] - edge [ - source 47 - target 20 - label 0 - ] - edge [ - source 47 - target 21 - label 0 - ] - edge [ - source 47 - target 22 - label 0 - ] - edge [ - source 47 - target 23 - label 0 - ] - edge [ - source 47 - target 24 - label 0 - ] - edge [ - source 47 - target 25 - label 0 - ] - edge [ - source 47 - target 26 - label 0 - ] - edge [ - source 47 - target 27 - label 0 - ] - edge [ - source 47 - target 28 - label 0 - ] - edge [ - source 47 - target 29 - label 0 - ] - edge [ - source 47 - target 30 - label 0 - ] - edge [ - source 47 - target 31 - label 0 - ] - edge [ - source 47 - target 32 - label 0 - ] - edge [ - source 47 - target 33 - label 0 - ] - edge [ - source 47 - target 34 - label 0 - ] - edge [ - source 47 - target 35 - label 0 - ] - edge [ - source 47 - target 36 - label 0 - ] - edge [ - source 47 - target 37 - label 0 - ] - edge [ - source 47 - target 38 - label 0 - ] - edge [ - source 47 - target 39 - label 0 - ] - edge [ - source 47 - target 40 - label 0 - ] - edge [ - source 47 - target 41 - label 0 - ] - edge [ - source 47 - target 42 - label 0 - ] - edge [ - source 47 - target 43 - label 0 - ] - edge [ - source 47 - target 44 - label 0 - ] - edge [ - source 47 - target 45 - label 0 - ] - edge [ - source 47 - target 46 - label 0 - ] - edge [ - source 47 - target 47 - label 0 - ] - edge [ - source 48 - target 1 - label 0 - ] - edge [ - source 48 - target 2 - label 0 - ] - edge [ - source 48 - target 3 - label 0 - ] - edge [ - source 48 - target 4 - label 0 - ] - edge [ - source 48 - target 5 - label 0 - ] - edge [ - source 48 - target 6 - label 0 - ] - edge [ - source 48 - target 7 - label 0 - ] - edge [ - source 48 - target 8 - label 0 - ] - edge [ - source 48 - target 9 - label 0 - ] - edge [ - source 48 - target 10 - label 0 - ] - edge [ - source 48 - target 11 - label 0 - ] - edge [ - source 48 - target 12 - label 0 - ] - edge [ - source 48 - target 13 - label 0 - ] - edge [ - source 48 - target 14 - label 0 - ] - edge [ - source 48 - target 15 - label 0 - ] - edge [ - source 48 - target 16 - label 0 - ] - edge [ - source 48 - target 17 - label 0 - ] - edge [ - source 48 - target 18 - label 0 - ] - edge [ - source 48 - target 19 - label 0 - ] - edge [ - source 48 - target 20 - label 0 - ] - edge [ - source 48 - target 21 - label 0 - ] - edge [ - source 48 - target 22 - label 0 - ] - edge [ - source 48 - target 23 - label 0 - ] - edge [ - source 48 - target 24 - label 0 - ] - edge [ - source 48 - target 25 - label 0 - ] - edge [ - source 48 - target 26 - label 0 - ] - edge [ - source 48 - target 27 - label 0 - ] - edge [ - source 48 - target 28 - label 0 - ] - edge [ - source 48 - target 29 - label 0 - ] - edge [ - source 48 - target 30 - label 0 - ] - edge [ - source 48 - target 31 - label 0 - ] - edge [ - source 48 - target 32 - label 0 - ] - edge [ - source 48 - target 33 - label 0 - ] - edge [ - source 48 - target 34 - label 0 - ] - edge [ - source 48 - target 35 - label 0 - ] - edge [ - source 48 - target 36 - label 0 - ] - edge [ - source 48 - target 37 - label 0 - ] - edge [ - source 48 - target 38 - label 0 - ] - edge [ - source 48 - target 39 - label 0 - ] - edge [ - source 48 - target 40 - label 0 - ] - edge [ - source 48 - target 41 - label 0 - ] - edge [ - source 48 - target 42 - label 0 - ] - edge [ - source 48 - target 43 - label 0 - ] - edge [ - source 48 - target 44 - label 0 - ] - edge [ - source 48 - target 45 - label 0 - ] - edge [ - source 48 - target 46 - label 0 - ] - edge [ - source 48 - target 47 - label 0 - ] - edge [ - source 48 - target 48 - label 0 - ] - edge [ - source 49 - target 1 - label 0 - ] - edge [ - source 49 - target 2 - label 0 - ] - edge [ - source 49 - target 3 - label 0 - ] - edge [ - source 49 - target 4 - label 0 - ] - edge [ - source 49 - target 5 - label 0 - ] - edge [ - source 49 - target 6 - label 0 - ] - edge [ - source 49 - target 7 - label 0 - ] - edge [ - source 49 - target 8 - label 0 - ] - edge [ - source 49 - target 9 - label 0 - ] - edge [ - source 49 - target 10 - label 0 - ] - edge [ - source 49 - target 11 - label 0 - ] - edge [ - source 49 - target 12 - label 0 - ] - edge [ - source 49 - target 13 - label 0 - ] - edge [ - source 49 - target 14 - label 0 - ] - edge [ - source 49 - target 15 - label 0 - ] - edge [ - source 49 - target 16 - label 0 - ] - edge [ - source 49 - target 17 - label 0 - ] - edge [ - source 49 - target 18 - label 0 - ] - edge [ - source 49 - target 19 - label 0 - ] - edge [ - source 49 - target 20 - label 0 - ] - edge [ - source 49 - target 21 - label 0 - ] - edge [ - source 49 - target 22 - label 0 - ] - edge [ - source 49 - target 23 - label 0 - ] - edge [ - source 49 - target 24 - label 0 - ] - edge [ - source 49 - target 25 - label 0 - ] - edge [ - source 49 - target 26 - label 0 - ] - edge [ - source 49 - target 27 - label 0 - ] - edge [ - source 49 - target 28 - label 0 - ] - edge [ - source 49 - target 29 - label 0 - ] - edge [ - source 49 - target 30 - label 0 - ] - edge [ - source 49 - target 31 - label 0 - ] - edge [ - source 49 - target 32 - label 0 - ] - edge [ - source 49 - target 33 - label 0 - ] - edge [ - source 49 - target 34 - label 0 - ] - edge [ - source 49 - target 35 - label 0 - ] - edge [ - source 49 - target 36 - label 0 - ] - edge [ - source 49 - target 37 - label 0 - ] - edge [ - source 49 - target 38 - label 0 - ] - edge [ - source 49 - target 39 - label 0 - ] - edge [ - source 49 - target 40 - label 0 - ] - edge [ - source 49 - target 41 - label 0 - ] - edge [ - source 49 - target 42 - label 0 - ] - edge [ - source 49 - target 43 - label 0 - ] - edge [ - source 49 - target 44 - label 0 - ] - edge [ - source 49 - target 45 - label 0 - ] - edge [ - source 49 - target 46 - label 0 - ] - edge [ - source 49 - target 47 - label 0 - ] - edge [ - source 49 - target 48 - label 0 - ] - edge [ - source 49 - target 49 - label 0 - ] - edge [ - source 50 - target 1 - label 0 - ] - edge [ - source 50 - target 2 - label 0 - ] - edge [ - source 50 - target 3 - label 0 - ] - edge [ - source 50 - target 4 - label 0 - ] - edge [ - source 50 - target 5 - label 0 - ] - edge [ - source 50 - target 6 - label 0 - ] - edge [ - source 50 - target 7 - label 0 - ] - edge [ - source 50 - target 8 - label 0 - ] - edge [ - source 50 - target 9 - label 0 - ] - edge [ - source 50 - target 10 - label 0 - ] - edge [ - source 50 - target 11 - label 0 - ] - edge [ - source 50 - target 12 - label 0 - ] - edge [ - source 50 - target 13 - label 0 - ] - edge [ - source 50 - target 14 - label 0 - ] - edge [ - source 50 - target 15 - label 0 - ] - edge [ - source 50 - target 16 - label 0 - ] - edge [ - source 50 - target 17 - label 0 - ] - edge [ - source 50 - target 18 - label 0 - ] - edge [ - source 50 - target 19 - label 0 - ] - edge [ - source 50 - target 20 - label 0 - ] - edge [ - source 50 - target 21 - label 0 - ] - edge [ - source 50 - target 22 - label 0 - ] - edge [ - source 50 - target 23 - label 0 - ] - edge [ - source 50 - target 24 - label 0 - ] - edge [ - source 50 - target 25 - label 0 - ] - edge [ - source 50 - target 26 - label 0 - ] - edge [ - source 50 - target 27 - label 0 - ] - edge [ - source 50 - target 28 - label 0 - ] - edge [ - source 50 - target 29 - label 0 - ] - edge [ - source 50 - target 30 - label 0 - ] - edge [ - source 50 - target 31 - label 0 - ] - edge [ - source 50 - target 32 - label 0 - ] - edge [ - source 50 - target 33 - label 0 - ] - edge [ - source 50 - target 34 - label 0 - ] - edge [ - source 50 - target 35 - label 0 - ] - edge [ - source 50 - target 36 - label 0 - ] - edge [ - source 50 - target 37 - label 0 - ] - edge [ - source 50 - target 38 - label 0 - ] - edge [ - source 50 - target 39 - label 0 - ] - edge [ - source 50 - target 40 - label 0 - ] - edge [ - source 50 - target 41 - label 0 - ] - edge [ - source 50 - target 42 - label 0 - ] - edge [ - source 50 - target 43 - label 0 - ] - edge [ - source 50 - target 44 - label 0 - ] - edge [ - source 50 - target 45 - label 0 - ] - edge [ - source 50 - target 46 - label 0 - ] - edge [ - source 50 - target 47 - label 0 - ] - edge [ - source 50 - target 48 - label 0 - ] - edge [ - source 50 - target 49 - label 0 - ] - edge [ - source 50 - target 50 - label 0 - ] -] - diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/parcours.dot b/jscomp/build_tests/ocamlgraph/editor/tests/parcours.dot deleted file mode 100755 index dca53cf1f1..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/parcours.dot +++ /dev/null @@ -1,32 +0,0 @@ -digraph g { - -r -> U; -r -> D; -r -> T; - -U -> Ua; -U -> Ub; -Ua -> Uaa; -Ub -> Ubb; -Ua -> Ubb; -Ub -> Uaa; - -D -> Da; -D -> Db; -Da -> Daa; -Db -> Dbb; -Da -> Dbb; -Db -> Daa; - -T -> Ta; -T -> Tb; -Ta -> Taa; -Tb -> Tbb; -Ta -> Tbb; -Tb -> Taa; - -Ua -> Da; -Db -> Ta; -Tb -> Ub; - -} \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/rand_100_10.gml b/jscomp/build_tests/ocamlgraph/editor/tests/rand_100_10.gml deleted file mode 100755 index ce3e2b812b..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/rand_100_10.gml +++ /dev/null @@ -1,453 +0,0 @@ -graph [ - node [ - id 1 - label 0 - ] - node [ - id 2 - label 1 - ] - node [ - id 3 - label 2 - ] - node [ - id 4 - label 3 - ] - node [ - id 5 - label 4 - ] - node [ - id 6 - label 5 - ] - node [ - id 7 - label 6 - ] - node [ - id 8 - label 7 - ] - node [ - id 9 - label 8 - ] - node [ - id 10 - label 9 - ] - node [ - id 11 - label 10 - ] - node [ - id 12 - label 11 - ] - node [ - id 13 - label 12 - ] - node [ - id 14 - label 13 - ] - node [ - id 15 - label 14 - ] - node [ - id 16 - label 15 - ] - node [ - id 17 - label 16 - ] - node [ - id 18 - label 17 - ] - node [ - id 19 - label 18 - ] - node [ - id 20 - label 19 - ] - node [ - id 21 - label 20 - ] - node [ - id 22 - label 21 - ] - node [ - id 23 - label 22 - ] - node [ - id 24 - label 23 - ] - node [ - id 25 - label 24 - ] - node [ - id 26 - label 25 - ] - node [ - id 27 - label 26 - ] - node [ - id 28 - label 27 - ] - node [ - id 29 - label 28 - ] - node [ - id 30 - label 29 - ] - node [ - id 31 - label 30 - ] - node [ - id 32 - label 31 - ] - node [ - id 33 - label 32 - ] - node [ - id 34 - label 33 - ] - node [ - id 35 - label 34 - ] - node [ - id 36 - label 35 - ] - node [ - id 37 - label 36 - ] - node [ - id 38 - label 37 - ] - node [ - id 39 - label 38 - ] - node [ - id 40 - label 39 - ] - node [ - id 41 - label 40 - ] - node [ - id 42 - label 41 - ] - node [ - id 43 - label 42 - ] - node [ - id 44 - label 43 - ] - node [ - id 45 - label 44 - ] - node [ - id 46 - label 45 - ] - node [ - id 47 - label 46 - ] - node [ - id 48 - label 47 - ] - node [ - id 49 - label 48 - ] - node [ - id 50 - label 49 - ] - node [ - id 51 - label 50 - ] - node [ - id 52 - label 51 - ] - node [ - id 53 - label 52 - ] - node [ - id 54 - label 53 - ] - node [ - id 55 - label 54 - ] - node [ - id 56 - label 55 - ] - node [ - id 57 - label 56 - ] - node [ - id 58 - label 57 - ] - node [ - id 59 - label 58 - ] - node [ - id 60 - label 59 - ] - node [ - id 61 - label 60 - ] - node [ - id 62 - label 61 - ] - node [ - id 63 - label 62 - ] - node [ - id 64 - label 63 - ] - node [ - id 65 - label 64 - ] - node [ - id 66 - label 65 - ] - node [ - id 67 - label 66 - ] - node [ - id 68 - label 67 - ] - node [ - id 69 - label 68 - ] - node [ - id 70 - label 69 - ] - node [ - id 71 - label 70 - ] - node [ - id 72 - label 71 - ] - node [ - id 73 - label 72 - ] - node [ - id 74 - label 73 - ] - node [ - id 75 - label 74 - ] - node [ - id 76 - label 75 - ] - node [ - id 77 - label 76 - ] - node [ - id 78 - label 77 - ] - node [ - id 79 - label 78 - ] - node [ - id 80 - label 79 - ] - node [ - id 81 - label 80 - ] - node [ - id 82 - label 81 - ] - node [ - id 83 - label 82 - ] - node [ - id 84 - label 83 - ] - node [ - id 85 - label 84 - ] - node [ - id 86 - label 85 - ] - node [ - id 87 - label 86 - ] - node [ - id 88 - label 87 - ] - node [ - id 89 - label 88 - ] - node [ - id 90 - label 89 - ] - node [ - id 91 - label 90 - ] - node [ - id 92 - label 91 - ] - node [ - id 93 - label 92 - ] - node [ - id 94 - label 93 - ] - node [ - id 95 - label 94 - ] - node [ - id 96 - label 95 - ] - node [ - id 97 - label 96 - ] - node [ - id 98 - label 97 - ] - node [ - id 99 - label 98 - ] - node [ - id 100 - label 99 - ] - edge [ - source 18 - target 1 - label 0 - ] - edge [ - source 29 - target 15 - label 0 - ] - edge [ - source 48 - target 35 - label 0 - ] - edge [ - source 49 - target 26 - label 0 - ] - edge [ - source 66 - target 58 - label 0 - ] - edge [ - source 75 - target 33 - label 0 - ] - edge [ - source 77 - target 61 - label 0 - ] - edge [ - source 84 - target 76 - label 0 - ] - edge [ - source 89 - target 13 - label 0 - ] - edge [ - source 93 - target 21 - label 0 - ] -] - diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/rand_100_300.gml b/jscomp/build_tests/ocamlgraph/editor/tests/rand_100_300.gml deleted file mode 100755 index 7a62381da1..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/rand_100_300.gml +++ /dev/null @@ -1,1903 +0,0 @@ -graph [ - node [ - id 1 - label 0 - ] - node [ - id 2 - label 1 - ] - node [ - id 3 - label 2 - ] - node [ - id 4 - label 3 - ] - node [ - id 5 - label 4 - ] - node [ - id 6 - label 5 - ] - node [ - id 7 - label 6 - ] - node [ - id 8 - label 7 - ] - node [ - id 9 - label 8 - ] - node [ - id 10 - label 9 - ] - node [ - id 11 - label 10 - ] - node [ - id 12 - label 11 - ] - node [ - id 13 - label 12 - ] - node [ - id 14 - label 13 - ] - node [ - id 15 - label 14 - ] - node [ - id 16 - label 15 - ] - node [ - id 17 - label 16 - ] - node [ - id 18 - label 17 - ] - node [ - id 19 - label 18 - ] - node [ - id 20 - label 19 - ] - node [ - id 21 - label 20 - ] - node [ - id 22 - label 21 - ] - node [ - id 23 - label 22 - ] - node [ - id 24 - label 23 - ] - node [ - id 25 - label 24 - ] - node [ - id 26 - label 25 - ] - node [ - id 27 - label 26 - ] - node [ - id 28 - label 27 - ] - node [ - id 29 - label 28 - ] - node [ - id 30 - label 29 - ] - node [ - id 31 - label 30 - ] - node [ - id 32 - label 31 - ] - node [ - id 33 - label 32 - ] - node [ - id 34 - label 33 - ] - node [ - id 35 - label 34 - ] - node [ - id 36 - label 35 - ] - node [ - id 37 - label 36 - ] - node [ - id 38 - label 37 - ] - node [ - id 39 - label 38 - ] - node [ - id 40 - label 39 - ] - node [ - id 41 - label 40 - ] - node [ - id 42 - label 41 - ] - node [ - id 43 - label 42 - ] - node [ - id 44 - label 43 - ] - node [ - id 45 - label 44 - ] - node [ - id 46 - label 45 - ] - node [ - id 47 - label 46 - ] - node [ - id 48 - label 47 - ] - node [ - id 49 - label 48 - ] - node [ - id 50 - label 49 - ] - node [ - id 51 - label 50 - ] - node [ - id 52 - label 51 - ] - node [ - id 53 - label 52 - ] - node [ - id 54 - label 53 - ] - node [ - id 55 - label 54 - ] - node [ - id 56 - label 55 - ] - node [ - id 57 - label 56 - ] - node [ - id 58 - label 57 - ] - node [ - id 59 - label 58 - ] - node [ - id 60 - label 59 - ] - node [ - id 61 - label 60 - ] - node [ - id 62 - label 61 - ] - node [ - id 63 - label 62 - ] - node [ - id 64 - label 63 - ] - node [ - id 65 - label 64 - ] - node [ - id 66 - label 65 - ] - node [ - id 67 - label 66 - ] - node [ - id 68 - label 67 - ] - node [ - id 69 - label 68 - ] - node [ - id 70 - label 69 - ] - node [ - id 71 - label 70 - ] - node [ - id 72 - label 71 - ] - node [ - id 73 - label 72 - ] - node [ - id 74 - label 73 - ] - node [ - id 75 - label 74 - ] - node [ - id 76 - label 75 - ] - node [ - id 77 - label 76 - ] - node [ - id 78 - label 77 - ] - node [ - id 79 - label 78 - ] - node [ - id 80 - label 79 - ] - node [ - id 81 - label 80 - ] - node [ - id 82 - label 81 - ] - node [ - id 83 - label 82 - ] - node [ - id 84 - label 83 - ] - node [ - id 85 - label 84 - ] - node [ - id 86 - label 85 - ] - node [ - id 87 - label 86 - ] - node [ - id 88 - label 87 - ] - node [ - id 89 - label 88 - ] - node [ - id 90 - label 89 - ] - node [ - id 91 - label 90 - ] - node [ - id 92 - label 91 - ] - node [ - id 93 - label 92 - ] - node [ - id 94 - label 93 - ] - node [ - id 95 - label 94 - ] - node [ - id 96 - label 95 - ] - node [ - id 97 - label 96 - ] - node [ - id 98 - label 97 - ] - node [ - id 99 - label 98 - ] - node [ - id 100 - label 99 - ] - edge [ - source 6 - target 5 - label 0 - ] - edge [ - source 7 - target 1 - label 0 - ] - edge [ - source 8 - target 2 - label 0 - ] - edge [ - source 10 - target 2 - label 0 - ] - edge [ - source 12 - target 6 - label 0 - ] - edge [ - source 12 - target 11 - label 0 - ] - edge [ - source 13 - target 1 - label 0 - ] - edge [ - source 14 - target 9 - label 0 - ] - edge [ - source 15 - target 3 - label 0 - ] - edge [ - source 16 - target 14 - label 0 - ] - edge [ - source 18 - target 1 - label 0 - ] - edge [ - source 19 - target 11 - label 0 - ] - edge [ - source 21 - target 17 - label 0 - ] - edge [ - source 22 - target 5 - label 0 - ] - edge [ - source 22 - target 13 - label 0 - ] - edge [ - source 22 - target 17 - label 0 - ] - edge [ - source 23 - target 15 - label 0 - ] - edge [ - source 23 - target 19 - label 0 - ] - edge [ - source 27 - target 22 - label 0 - ] - edge [ - source 28 - target 4 - label 0 - ] - edge [ - source 28 - target 19 - label 0 - ] - edge [ - source 29 - target 12 - label 0 - ] - edge [ - source 29 - target 15 - label 0 - ] - edge [ - source 29 - target 19 - label 0 - ] - edge [ - source 29 - target 20 - label 0 - ] - edge [ - source 29 - target 28 - label 0 - ] - edge [ - source 31 - target 10 - label 0 - ] - edge [ - source 31 - target 24 - label 0 - ] - edge [ - source 32 - target 3 - label 0 - ] - edge [ - source 32 - target 22 - label 0 - ] - edge [ - source 32 - target 28 - label 0 - ] - edge [ - source 34 - target 3 - label 0 - ] - edge [ - source 35 - target 26 - label 0 - ] - edge [ - source 35 - target 29 - label 0 - ] - edge [ - source 36 - target 16 - label 0 - ] - edge [ - source 37 - target 23 - label 0 - ] - edge [ - source 37 - target 28 - label 0 - ] - edge [ - source 38 - target 32 - label 0 - ] - edge [ - source 38 - target 33 - label 0 - ] - edge [ - source 39 - target 4 - label 0 - ] - edge [ - source 39 - target 15 - label 0 - ] - edge [ - source 39 - target 33 - label 0 - ] - edge [ - source 40 - target 4 - label 0 - ] - edge [ - source 40 - target 6 - label 0 - ] - edge [ - source 40 - target 7 - label 0 - ] - edge [ - source 40 - target 20 - label 0 - ] - edge [ - source 40 - target 29 - label 0 - ] - edge [ - source 40 - target 34 - label 0 - ] - edge [ - source 41 - target 25 - label 0 - ] - edge [ - source 43 - target 22 - label 0 - ] - edge [ - source 44 - target 4 - label 0 - ] - edge [ - source 44 - target 9 - label 0 - ] - edge [ - source 44 - target 28 - label 0 - ] - edge [ - source 44 - target 32 - label 0 - ] - edge [ - source 45 - target 17 - label 0 - ] - edge [ - source 45 - target 30 - label 0 - ] - edge [ - source 46 - target 19 - label 0 - ] - edge [ - source 46 - target 43 - label 0 - ] - edge [ - source 47 - target 37 - label 0 - ] - edge [ - source 47 - target 43 - label 0 - ] - edge [ - source 48 - target 28 - label 0 - ] - edge [ - source 48 - target 35 - label 0 - ] - edge [ - source 49 - target 5 - label 0 - ] - edge [ - source 49 - target 26 - label 0 - ] - edge [ - source 50 - target 9 - label 0 - ] - edge [ - source 51 - target 13 - label 0 - ] - edge [ - source 51 - target 30 - label 0 - ] - edge [ - source 52 - target 3 - label 0 - ] - edge [ - source 52 - target 11 - label 0 - ] - edge [ - source 52 - target 13 - label 0 - ] - edge [ - source 52 - target 46 - label 0 - ] - edge [ - source 52 - target 48 - label 0 - ] - edge [ - source 53 - target 9 - label 0 - ] - edge [ - source 53 - target 14 - label 0 - ] - edge [ - source 53 - target 23 - label 0 - ] - edge [ - source 53 - target 24 - label 0 - ] - edge [ - source 53 - target 25 - label 0 - ] - edge [ - source 53 - target 36 - label 0 - ] - edge [ - source 53 - target 41 - label 0 - ] - edge [ - source 53 - target 46 - label 0 - ] - edge [ - source 53 - target 47 - label 0 - ] - edge [ - source 54 - target 7 - label 0 - ] - edge [ - source 54 - target 9 - label 0 - ] - edge [ - source 54 - target 26 - label 0 - ] - edge [ - source 55 - target 3 - label 0 - ] - edge [ - source 55 - target 4 - label 0 - ] - edge [ - source 55 - target 19 - label 0 - ] - edge [ - source 55 - target 39 - label 0 - ] - edge [ - source 56 - target 23 - label 0 - ] - edge [ - source 56 - target 40 - label 0 - ] - edge [ - source 56 - target 42 - label 0 - ] - edge [ - source 57 - target 3 - label 0 - ] - edge [ - source 57 - target 24 - label 0 - ] - edge [ - source 57 - target 25 - label 0 - ] - edge [ - source 57 - target 44 - label 0 - ] - edge [ - source 57 - target 51 - label 0 - ] - edge [ - source 57 - target 55 - label 0 - ] - edge [ - source 58 - target 1 - label 0 - ] - edge [ - source 58 - target 4 - label 0 - ] - edge [ - source 58 - target 37 - label 0 - ] - edge [ - source 60 - target 37 - label 0 - ] - edge [ - source 61 - target 4 - label 0 - ] - edge [ - source 61 - target 27 - label 0 - ] - edge [ - source 62 - target 2 - label 0 - ] - edge [ - source 62 - target 14 - label 0 - ] - edge [ - source 62 - target 43 - label 0 - ] - edge [ - source 63 - target 17 - label 0 - ] - edge [ - source 63 - target 32 - label 0 - ] - edge [ - source 64 - target 23 - label 0 - ] - edge [ - source 64 - target 27 - label 0 - ] - edge [ - source 64 - target 48 - label 0 - ] - edge [ - source 64 - target 61 - label 0 - ] - edge [ - source 65 - target 7 - label 0 - ] - edge [ - source 65 - target 9 - label 0 - ] - edge [ - source 65 - target 19 - label 0 - ] - edge [ - source 65 - target 42 - label 0 - ] - edge [ - source 65 - target 49 - label 0 - ] - edge [ - source 66 - target 11 - label 0 - ] - edge [ - source 66 - target 43 - label 0 - ] - edge [ - source 66 - target 50 - label 0 - ] - edge [ - source 66 - target 51 - label 0 - ] - edge [ - source 66 - target 58 - label 0 - ] - edge [ - source 67 - target 23 - label 0 - ] - edge [ - source 67 - target 24 - label 0 - ] - edge [ - source 67 - target 28 - label 0 - ] - edge [ - source 67 - target 29 - label 0 - ] - edge [ - source 67 - target 31 - label 0 - ] - edge [ - source 67 - target 49 - label 0 - ] - edge [ - source 67 - target 56 - label 0 - ] - edge [ - source 68 - target 1 - label 0 - ] - edge [ - source 68 - target 27 - label 0 - ] - edge [ - source 70 - target 2 - label 0 - ] - edge [ - source 70 - target 35 - label 0 - ] - edge [ - source 70 - target 53 - label 0 - ] - edge [ - source 71 - target 15 - label 0 - ] - edge [ - source 71 - target 24 - label 0 - ] - edge [ - source 71 - target 29 - label 0 - ] - edge [ - source 71 - target 39 - label 0 - ] - edge [ - source 72 - target 33 - label 0 - ] - edge [ - source 72 - target 71 - label 0 - ] - edge [ - source 73 - target 26 - label 0 - ] - edge [ - source 73 - target 56 - label 0 - ] - edge [ - source 73 - target 62 - label 0 - ] - edge [ - source 74 - target 22 - label 0 - ] - edge [ - source 74 - target 28 - label 0 - ] - edge [ - source 74 - target 60 - label 0 - ] - edge [ - source 75 - target 15 - label 0 - ] - edge [ - source 75 - target 18 - label 0 - ] - edge [ - source 75 - target 26 - label 0 - ] - edge [ - source 75 - target 33 - label 0 - ] - edge [ - source 75 - target 53 - label 0 - ] - edge [ - source 75 - target 54 - label 0 - ] - edge [ - source 76 - target 73 - label 0 - ] - edge [ - source 76 - target 74 - label 0 - ] - edge [ - source 77 - target 61 - label 0 - ] - edge [ - source 77 - target 65 - label 0 - ] - edge [ - source 77 - target 76 - label 0 - ] - edge [ - source 78 - target 12 - label 0 - ] - edge [ - source 78 - target 14 - label 0 - ] - edge [ - source 78 - target 19 - label 0 - ] - edge [ - source 78 - target 35 - label 0 - ] - edge [ - source 78 - target 48 - label 0 - ] - edge [ - source 78 - target 76 - label 0 - ] - edge [ - source 79 - target 24 - label 0 - ] - edge [ - source 79 - target 25 - label 0 - ] - edge [ - source 79 - target 35 - label 0 - ] - edge [ - source 79 - target 67 - label 0 - ] - edge [ - source 80 - target 9 - label 0 - ] - edge [ - source 80 - target 23 - label 0 - ] - edge [ - source 80 - target 56 - label 0 - ] - edge [ - source 80 - target 57 - label 0 - ] - edge [ - source 80 - target 67 - label 0 - ] - edge [ - source 81 - target 61 - label 0 - ] - edge [ - source 82 - target 39 - label 0 - ] - edge [ - source 82 - target 41 - label 0 - ] - edge [ - source 82 - target 44 - label 0 - ] - edge [ - source 82 - target 52 - label 0 - ] - edge [ - source 82 - target 63 - label 0 - ] - edge [ - source 82 - target 65 - label 0 - ] - edge [ - source 82 - target 72 - label 0 - ] - edge [ - source 82 - target 77 - label 0 - ] - edge [ - source 83 - target 7 - label 0 - ] - edge [ - source 83 - target 36 - label 0 - ] - edge [ - source 83 - target 46 - label 0 - ] - edge [ - source 83 - target 47 - label 0 - ] - edge [ - source 83 - target 54 - label 0 - ] - edge [ - source 83 - target 81 - label 0 - ] - edge [ - source 83 - target 82 - label 0 - ] - edge [ - source 84 - target 10 - label 0 - ] - edge [ - source 84 - target 67 - label 0 - ] - edge [ - source 84 - target 68 - label 0 - ] - edge [ - source 84 - target 76 - label 0 - ] - edge [ - source 85 - target 20 - label 0 - ] - edge [ - source 85 - target 21 - label 0 - ] - edge [ - source 85 - target 27 - label 0 - ] - edge [ - source 85 - target 31 - label 0 - ] - edge [ - source 85 - target 59 - label 0 - ] - edge [ - source 86 - target 13 - label 0 - ] - edge [ - source 86 - target 15 - label 0 - ] - edge [ - source 86 - target 39 - label 0 - ] - edge [ - source 86 - target 54 - label 0 - ] - edge [ - source 86 - target 64 - label 0 - ] - edge [ - source 86 - target 79 - label 0 - ] - edge [ - source 87 - target 34 - label 0 - ] - edge [ - source 87 - target 37 - label 0 - ] - edge [ - source 87 - target 46 - label 0 - ] - edge [ - source 87 - target 50 - label 0 - ] - edge [ - source 87 - target 60 - label 0 - ] - edge [ - source 87 - target 76 - label 0 - ] - edge [ - source 88 - target 29 - label 0 - ] - edge [ - source 88 - target 40 - label 0 - ] - edge [ - source 88 - target 41 - label 0 - ] - edge [ - source 88 - target 44 - label 0 - ] - edge [ - source 88 - target 48 - label 0 - ] - edge [ - source 88 - target 61 - label 0 - ] - edge [ - source 88 - target 78 - label 0 - ] - edge [ - source 88 - target 85 - label 0 - ] - edge [ - source 89 - target 4 - label 0 - ] - edge [ - source 89 - target 9 - label 0 - ] - edge [ - source 89 - target 13 - label 0 - ] - edge [ - source 89 - target 43 - label 0 - ] - edge [ - source 89 - target 49 - label 0 - ] - edge [ - source 89 - target 81 - label 0 - ] - edge [ - source 90 - target 16 - label 0 - ] - edge [ - source 90 - target 17 - label 0 - ] - edge [ - source 90 - target 54 - label 0 - ] - edge [ - source 90 - target 89 - label 0 - ] - edge [ - source 91 - target 1 - label 0 - ] - edge [ - source 91 - target 4 - label 0 - ] - edge [ - source 91 - target 14 - label 0 - ] - edge [ - source 91 - target 48 - label 0 - ] - edge [ - source 91 - target 59 - label 0 - ] - edge [ - source 91 - target 63 - label 0 - ] - edge [ - source 91 - target 70 - label 0 - ] - edge [ - source 91 - target 74 - label 0 - ] - edge [ - source 92 - target 1 - label 0 - ] - edge [ - source 92 - target 3 - label 0 - ] - edge [ - source 92 - target 23 - label 0 - ] - edge [ - source 92 - target 32 - label 0 - ] - edge [ - source 92 - target 42 - label 0 - ] - edge [ - source 92 - target 53 - label 0 - ] - edge [ - source 92 - target 55 - label 0 - ] - edge [ - source 92 - target 58 - label 0 - ] - edge [ - source 92 - target 61 - label 0 - ] - edge [ - source 92 - target 81 - label 0 - ] - edge [ - source 92 - target 84 - label 0 - ] - edge [ - source 93 - target 19 - label 0 - ] - edge [ - source 93 - target 21 - label 0 - ] - edge [ - source 93 - target 25 - label 0 - ] - edge [ - source 93 - target 38 - label 0 - ] - edge [ - source 93 - target 53 - label 0 - ] - edge [ - source 93 - target 60 - label 0 - ] - edge [ - source 93 - target 81 - label 0 - ] - edge [ - source 94 - target 39 - label 0 - ] - edge [ - source 94 - target 53 - label 0 - ] - edge [ - source 94 - target 56 - label 0 - ] - edge [ - source 94 - target 70 - label 0 - ] - edge [ - source 94 - target 83 - label 0 - ] - edge [ - source 95 - target 6 - label 0 - ] - edge [ - source 95 - target 18 - label 0 - ] - edge [ - source 95 - target 35 - label 0 - ] - edge [ - source 95 - target 54 - label 0 - ] - edge [ - source 95 - target 71 - label 0 - ] - edge [ - source 96 - target 6 - label 0 - ] - edge [ - source 96 - target 17 - label 0 - ] - edge [ - source 96 - target 21 - label 0 - ] - edge [ - source 96 - target 32 - label 0 - ] - edge [ - source 96 - target 38 - label 0 - ] - edge [ - source 96 - target 52 - label 0 - ] - edge [ - source 96 - target 59 - label 0 - ] - edge [ - source 96 - target 60 - label 0 - ] - edge [ - source 96 - target 93 - label 0 - ] - edge [ - source 97 - target 3 - label 0 - ] - edge [ - source 97 - target 17 - label 0 - ] - edge [ - source 97 - target 30 - label 0 - ] - edge [ - source 97 - target 51 - label 0 - ] - edge [ - source 97 - target 52 - label 0 - ] - edge [ - source 97 - target 80 - label 0 - ] - edge [ - source 97 - target 81 - label 0 - ] - edge [ - source 97 - target 85 - label 0 - ] - edge [ - source 97 - target 93 - label 0 - ] - edge [ - source 98 - target 4 - label 0 - ] - edge [ - source 98 - target 10 - label 0 - ] - edge [ - source 98 - target 11 - label 0 - ] - edge [ - source 98 - target 50 - label 0 - ] - edge [ - source 98 - target 56 - label 0 - ] - edge [ - source 98 - target 63 - label 0 - ] - edge [ - source 98 - target 68 - label 0 - ] - edge [ - source 98 - target 74 - label 0 - ] - edge [ - source 98 - target 91 - label 0 - ] - edge [ - source 99 - target 13 - label 0 - ] - edge [ - source 99 - target 32 - label 0 - ] - edge [ - source 99 - target 67 - label 0 - ] - edge [ - source 99 - target 73 - label 0 - ] - edge [ - source 100 - target 2 - label 0 - ] - edge [ - source 100 - target 25 - label 0 - ] - edge [ - source 100 - target 27 - label 0 - ] - edge [ - source 100 - target 31 - label 0 - ] - edge [ - source 100 - target 86 - label 0 - ] - edge [ - source 100 - target 87 - label 0 - ] -] - diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/rand_10_10.gml b/jscomp/build_tests/ocamlgraph/editor/tests/rand_10_10.gml deleted file mode 100755 index c3767d6917..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/rand_10_10.gml +++ /dev/null @@ -1,93 +0,0 @@ -graph [ - node [ - id 1 - label 0 - ] - node [ - id 2 - label 1 - ] - node [ - id 3 - label 2 - ] - node [ - id 4 - label 3 - ] - node [ - id 5 - label 4 - ] - node [ - id 6 - label 5 - ] - node [ - id 7 - label 6 - ] - node [ - id 8 - label 7 - ] - node [ - id 9 - label 8 - ] - node [ - id 10 - label 9 - ] - edge [ - source 3 - target 1 - label 0 - ] - edge [ - source 5 - target 2 - label 0 - ] - edge [ - source 5 - target 3 - label 0 - ] - edge [ - source 6 - target 3 - label 0 - ] - edge [ - source 7 - target 3 - label 0 - ] - edge [ - source 9 - target 5 - label 0 - ] - edge [ - source 9 - target 6 - label 0 - ] - edge [ - source 10 - target 6 - label 0 - ] - edge [ - source 10 - target 7 - label 0 - ] - edge [ - source 10 - target 9 - label 0 - ] -] - diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/rand_10_40.gml b/jscomp/build_tests/ocamlgraph/editor/tests/rand_10_40.gml deleted file mode 100755 index b837cafe4e..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/rand_10_40.gml +++ /dev/null @@ -1,243 +0,0 @@ -graph [ - node [ - id 1 - label 0 - ] - node [ - id 2 - label 1 - ] - node [ - id 3 - label 2 - ] - node [ - id 4 - label 3 - ] - node [ - id 5 - label 4 - ] - node [ - id 6 - label 5 - ] - node [ - id 7 - label 6 - ] - node [ - id 8 - label 7 - ] - node [ - id 9 - label 8 - ] - node [ - id 10 - label 9 - ] - edge [ - source 2 - target 1 - label 0 - ] - edge [ - source 3 - target 1 - label 0 - ] - edge [ - source 3 - target 2 - label 0 - ] - edge [ - source 4 - target 1 - label 0 - ] - edge [ - source 4 - target 2 - label 0 - ] - edge [ - source 5 - target 1 - label 0 - ] - edge [ - source 5 - target 2 - label 0 - ] - edge [ - source 5 - target 3 - label 0 - ] - edge [ - source 5 - target 4 - label 0 - ] - edge [ - source 6 - target 1 - label 0 - ] - edge [ - source 6 - target 2 - label 0 - ] - edge [ - source 6 - target 5 - label 0 - ] - edge [ - source 7 - target 1 - label 0 - ] - edge [ - source 7 - target 2 - label 0 - ] - edge [ - source 7 - target 3 - label 0 - ] - edge [ - source 7 - target 4 - label 0 - ] - edge [ - source 7 - target 5 - label 0 - ] - edge [ - source 7 - target 6 - label 0 - ] - edge [ - source 8 - target 1 - label 0 - ] - edge [ - source 8 - target 2 - label 0 - ] - edge [ - source 8 - target 3 - label 0 - ] - edge [ - source 8 - target 4 - label 0 - ] - edge [ - source 8 - target 5 - label 0 - ] - edge [ - source 8 - target 6 - label 0 - ] - edge [ - source 8 - target 7 - label 0 - ] - edge [ - source 9 - target 1 - label 0 - ] - edge [ - source 9 - target 2 - label 0 - ] - edge [ - source 9 - target 3 - label 0 - ] - edge [ - source 9 - target 4 - label 0 - ] - edge [ - source 9 - target 5 - label 0 - ] - edge [ - source 9 - target 6 - label 0 - ] - edge [ - source 9 - target 8 - label 0 - ] - edge [ - source 10 - target 1 - label 0 - ] - edge [ - source 10 - target 3 - label 0 - ] - edge [ - source 10 - target 4 - label 0 - ] - edge [ - source 10 - target 5 - label 0 - ] - edge [ - source 10 - target 6 - label 0 - ] - edge [ - source 10 - target 7 - label 0 - ] - edge [ - source 10 - target 8 - label 0 - ] - edge [ - source 10 - target 9 - label 0 - ] -] - diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/rand_50_300.gml b/jscomp/build_tests/ocamlgraph/editor/tests/rand_50_300.gml deleted file mode 100755 index dddfb3ba40..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/rand_50_300.gml +++ /dev/null @@ -1,1703 +0,0 @@ -graph [ - node [ - id 1 - label 0 - ] - node [ - id 2 - label 1 - ] - node [ - id 3 - label 2 - ] - node [ - id 4 - label 3 - ] - node [ - id 5 - label 4 - ] - node [ - id 6 - label 5 - ] - node [ - id 7 - label 6 - ] - node [ - id 8 - label 7 - ] - node [ - id 9 - label 8 - ] - node [ - id 10 - label 9 - ] - node [ - id 11 - label 10 - ] - node [ - id 12 - label 11 - ] - node [ - id 13 - label 12 - ] - node [ - id 14 - label 13 - ] - node [ - id 15 - label 14 - ] - node [ - id 16 - label 15 - ] - node [ - id 17 - label 16 - ] - node [ - id 18 - label 17 - ] - node [ - id 19 - label 18 - ] - node [ - id 20 - label 19 - ] - node [ - id 21 - label 20 - ] - node [ - id 22 - label 21 - ] - node [ - id 23 - label 22 - ] - node [ - id 24 - label 23 - ] - node [ - id 25 - label 24 - ] - node [ - id 26 - label 25 - ] - node [ - id 27 - label 26 - ] - node [ - id 28 - label 27 - ] - node [ - id 29 - label 28 - ] - node [ - id 30 - label 29 - ] - node [ - id 31 - label 30 - ] - node [ - id 32 - label 31 - ] - node [ - id 33 - label 32 - ] - node [ - id 34 - label 33 - ] - node [ - id 35 - label 34 - ] - node [ - id 36 - label 35 - ] - node [ - id 37 - label 36 - ] - node [ - id 38 - label 37 - ] - node [ - id 39 - label 38 - ] - node [ - id 40 - label 39 - ] - node [ - id 41 - label 40 - ] - node [ - id 42 - label 41 - ] - node [ - id 43 - label 42 - ] - node [ - id 44 - label 43 - ] - node [ - id 45 - label 44 - ] - node [ - id 46 - label 45 - ] - node [ - id 47 - label 46 - ] - node [ - id 48 - label 47 - ] - node [ - id 49 - label 48 - ] - node [ - id 50 - label 49 - ] - edge [ - source 8 - target 1 - label 0 - ] - edge [ - source 8 - target 3 - label 0 - ] - edge [ - source 8 - target 5 - label 0 - ] - edge [ - source 9 - target 1 - label 0 - ] - edge [ - source 9 - target 2 - label 0 - ] - edge [ - source 9 - target 4 - label 0 - ] - edge [ - source 10 - target 2 - label 0 - ] - edge [ - source 12 - target 2 - label 0 - ] - edge [ - source 12 - target 7 - label 0 - ] - edge [ - source 13 - target 1 - label 0 - ] - edge [ - source 13 - target 8 - label 0 - ] - edge [ - source 13 - target 9 - label 0 - ] - edge [ - source 14 - target 1 - label 0 - ] - edge [ - source 14 - target 4 - label 0 - ] - edge [ - source 14 - target 6 - label 0 - ] - edge [ - source 14 - target 9 - label 0 - ] - edge [ - source 15 - target 2 - label 0 - ] - edge [ - source 15 - target 3 - label 0 - ] - edge [ - source 15 - target 5 - label 0 - ] - edge [ - source 15 - target 6 - label 0 - ] - edge [ - source 15 - target 8 - label 0 - ] - edge [ - source 15 - target 13 - label 0 - ] - edge [ - source 16 - target 7 - label 0 - ] - edge [ - source 16 - target 12 - label 0 - ] - edge [ - source 16 - target 15 - label 0 - ] - edge [ - source 17 - target 1 - label 0 - ] - edge [ - source 17 - target 4 - label 0 - ] - edge [ - source 17 - target 8 - label 0 - ] - edge [ - source 17 - target 9 - label 0 - ] - edge [ - source 17 - target 11 - label 0 - ] - edge [ - source 17 - target 13 - label 0 - ] - edge [ - source 17 - target 16 - label 0 - ] - edge [ - source 18 - target 1 - label 0 - ] - edge [ - source 18 - target 2 - label 0 - ] - edge [ - source 18 - target 3 - label 0 - ] - edge [ - source 18 - target 9 - label 0 - ] - edge [ - source 18 - target 14 - label 0 - ] - edge [ - source 18 - target 17 - label 0 - ] - edge [ - source 19 - target 6 - label 0 - ] - edge [ - source 19 - target 9 - label 0 - ] - edge [ - source 19 - target 11 - label 0 - ] - edge [ - source 19 - target 12 - label 0 - ] - edge [ - source 20 - target 4 - label 0 - ] - edge [ - source 20 - target 10 - label 0 - ] - edge [ - source 20 - target 11 - label 0 - ] - edge [ - source 20 - target 12 - label 0 - ] - edge [ - source 21 - target 4 - label 0 - ] - edge [ - source 21 - target 6 - label 0 - ] - edge [ - source 21 - target 9 - label 0 - ] - edge [ - source 21 - target 11 - label 0 - ] - edge [ - source 21 - target 12 - label 0 - ] - edge [ - source 22 - target 7 - label 0 - ] - edge [ - source 22 - target 8 - label 0 - ] - edge [ - source 22 - target 9 - label 0 - ] - edge [ - source 22 - target 13 - label 0 - ] - edge [ - source 23 - target 1 - label 0 - ] - edge [ - source 23 - target 8 - label 0 - ] - edge [ - source 23 - target 9 - label 0 - ] - edge [ - source 23 - target 13 - label 0 - ] - edge [ - source 23 - target 16 - label 0 - ] - edge [ - source 23 - target 18 - label 0 - ] - edge [ - source 23 - target 19 - label 0 - ] - edge [ - source 23 - target 20 - label 0 - ] - edge [ - source 23 - target 21 - label 0 - ] - edge [ - source 24 - target 1 - label 0 - ] - edge [ - source 24 - target 2 - label 0 - ] - edge [ - source 24 - target 4 - label 0 - ] - edge [ - source 24 - target 6 - label 0 - ] - edge [ - source 24 - target 10 - label 0 - ] - edge [ - source 24 - target 12 - label 0 - ] - edge [ - source 24 - target 13 - label 0 - ] - edge [ - source 24 - target 14 - label 0 - ] - edge [ - source 24 - target 16 - label 0 - ] - edge [ - source 24 - target 18 - label 0 - ] - edge [ - source 25 - target 2 - label 0 - ] - edge [ - source 25 - target 3 - label 0 - ] - edge [ - source 25 - target 6 - label 0 - ] - edge [ - source 25 - target 8 - label 0 - ] - edge [ - source 25 - target 14 - label 0 - ] - edge [ - source 25 - target 24 - label 0 - ] - edge [ - source 26 - target 5 - label 0 - ] - edge [ - source 26 - target 9 - label 0 - ] - edge [ - source 26 - target 10 - label 0 - ] - edge [ - source 26 - target 14 - label 0 - ] - edge [ - source 26 - target 15 - label 0 - ] - edge [ - source 26 - target 23 - label 0 - ] - edge [ - source 27 - target 3 - label 0 - ] - edge [ - source 27 - target 8 - label 0 - ] - edge [ - source 27 - target 12 - label 0 - ] - edge [ - source 27 - target 18 - label 0 - ] - edge [ - source 27 - target 23 - label 0 - ] - edge [ - source 28 - target 2 - label 0 - ] - edge [ - source 28 - target 7 - label 0 - ] - edge [ - source 28 - target 10 - label 0 - ] - edge [ - source 28 - target 15 - label 0 - ] - edge [ - source 28 - target 18 - label 0 - ] - edge [ - source 28 - target 19 - label 0 - ] - edge [ - source 28 - target 20 - label 0 - ] - edge [ - source 28 - target 22 - label 0 - ] - edge [ - source 28 - target 27 - label 0 - ] - edge [ - source 29 - target 1 - label 0 - ] - edge [ - source 29 - target 7 - label 0 - ] - edge [ - source 29 - target 8 - label 0 - ] - edge [ - source 29 - target 9 - label 0 - ] - edge [ - source 29 - target 13 - label 0 - ] - edge [ - source 29 - target 14 - label 0 - ] - edge [ - source 29 - target 18 - label 0 - ] - edge [ - source 29 - target 19 - label 0 - ] - edge [ - source 29 - target 20 - label 0 - ] - edge [ - source 30 - target 1 - label 0 - ] - edge [ - source 30 - target 3 - label 0 - ] - edge [ - source 30 - target 4 - label 0 - ] - edge [ - source 30 - target 17 - label 0 - ] - edge [ - source 30 - target 20 - label 0 - ] - edge [ - source 30 - target 21 - label 0 - ] - edge [ - source 30 - target 26 - label 0 - ] - edge [ - source 31 - target 2 - label 0 - ] - edge [ - source 31 - target 4 - label 0 - ] - edge [ - source 31 - target 7 - label 0 - ] - edge [ - source 31 - target 8 - label 0 - ] - edge [ - source 31 - target 14 - label 0 - ] - edge [ - source 31 - target 18 - label 0 - ] - edge [ - source 31 - target 19 - label 0 - ] - edge [ - source 31 - target 26 - label 0 - ] - edge [ - source 31 - target 28 - label 0 - ] - edge [ - source 32 - target 13 - label 0 - ] - edge [ - source 32 - target 18 - label 0 - ] - edge [ - source 32 - target 22 - label 0 - ] - edge [ - source 32 - target 29 - label 0 - ] - edge [ - source 33 - target 7 - label 0 - ] - edge [ - source 33 - target 16 - label 0 - ] - edge [ - source 33 - target 18 - label 0 - ] - edge [ - source 33 - target 22 - label 0 - ] - edge [ - source 33 - target 24 - label 0 - ] - edge [ - source 33 - target 25 - label 0 - ] - edge [ - source 33 - target 27 - label 0 - ] - edge [ - source 34 - target 1 - label 0 - ] - edge [ - source 34 - target 3 - label 0 - ] - edge [ - source 34 - target 4 - label 0 - ] - edge [ - source 34 - target 5 - label 0 - ] - edge [ - source 34 - target 6 - label 0 - ] - edge [ - source 34 - target 8 - label 0 - ] - edge [ - source 34 - target 15 - label 0 - ] - edge [ - source 34 - target 16 - label 0 - ] - edge [ - source 34 - target 22 - label 0 - ] - edge [ - source 34 - target 23 - label 0 - ] - edge [ - source 34 - target 26 - label 0 - ] - edge [ - source 35 - target 2 - label 0 - ] - edge [ - source 35 - target 7 - label 0 - ] - edge [ - source 35 - target 8 - label 0 - ] - edge [ - source 35 - target 11 - label 0 - ] - edge [ - source 35 - target 14 - label 0 - ] - edge [ - source 35 - target 22 - label 0 - ] - edge [ - source 35 - target 32 - label 0 - ] - edge [ - source 36 - target 13 - label 0 - ] - edge [ - source 36 - target 16 - label 0 - ] - edge [ - source 36 - target 19 - label 0 - ] - edge [ - source 36 - target 23 - label 0 - ] - edge [ - source 37 - target 2 - label 0 - ] - edge [ - source 37 - target 3 - label 0 - ] - edge [ - source 37 - target 6 - label 0 - ] - edge [ - source 37 - target 7 - label 0 - ] - edge [ - source 37 - target 9 - label 0 - ] - edge [ - source 37 - target 16 - label 0 - ] - edge [ - source 37 - target 21 - label 0 - ] - edge [ - source 37 - target 23 - label 0 - ] - edge [ - source 37 - target 24 - label 0 - ] - edge [ - source 37 - target 26 - label 0 - ] - edge [ - source 37 - target 27 - label 0 - ] - edge [ - source 37 - target 29 - label 0 - ] - edge [ - source 37 - target 32 - label 0 - ] - edge [ - source 37 - target 33 - label 0 - ] - edge [ - source 37 - target 34 - label 0 - ] - edge [ - source 38 - target 2 - label 0 - ] - edge [ - source 38 - target 3 - label 0 - ] - edge [ - source 38 - target 4 - label 0 - ] - edge [ - source 38 - target 7 - label 0 - ] - edge [ - source 38 - target 9 - label 0 - ] - edge [ - source 38 - target 17 - label 0 - ] - edge [ - source 38 - target 18 - label 0 - ] - edge [ - source 38 - target 33 - label 0 - ] - edge [ - source 38 - target 34 - label 0 - ] - edge [ - source 38 - target 37 - label 0 - ] - edge [ - source 39 - target 4 - label 0 - ] - edge [ - source 39 - target 8 - label 0 - ] - edge [ - source 39 - target 15 - label 0 - ] - edge [ - source 39 - target 18 - label 0 - ] - edge [ - source 39 - target 19 - label 0 - ] - edge [ - source 39 - target 28 - label 0 - ] - edge [ - source 39 - target 29 - label 0 - ] - edge [ - source 39 - target 31 - label 0 - ] - edge [ - source 40 - target 3 - label 0 - ] - edge [ - source 40 - target 4 - label 0 - ] - edge [ - source 40 - target 7 - label 0 - ] - edge [ - source 40 - target 8 - label 0 - ] - edge [ - source 40 - target 14 - label 0 - ] - edge [ - source 40 - target 18 - label 0 - ] - edge [ - source 40 - target 19 - label 0 - ] - edge [ - source 40 - target 20 - label 0 - ] - edge [ - source 40 - target 23 - label 0 - ] - edge [ - source 40 - target 25 - label 0 - ] - edge [ - source 40 - target 35 - label 0 - ] - edge [ - source 41 - target 1 - label 0 - ] - edge [ - source 41 - target 2 - label 0 - ] - edge [ - source 41 - target 3 - label 0 - ] - edge [ - source 41 - target 5 - label 0 - ] - edge [ - source 41 - target 27 - label 0 - ] - edge [ - source 41 - target 29 - label 0 - ] - edge [ - source 41 - target 39 - label 0 - ] - edge [ - source 42 - target 1 - label 0 - ] - edge [ - source 42 - target 5 - label 0 - ] - edge [ - source 42 - target 20 - label 0 - ] - edge [ - source 42 - target 21 - label 0 - ] - edge [ - source 42 - target 35 - label 0 - ] - edge [ - source 42 - target 37 - label 0 - ] - edge [ - source 43 - target 3 - label 0 - ] - edge [ - source 43 - target 4 - label 0 - ] - edge [ - source 43 - target 13 - label 0 - ] - edge [ - source 43 - target 14 - label 0 - ] - edge [ - source 43 - target 20 - label 0 - ] - edge [ - source 43 - target 25 - label 0 - ] - edge [ - source 43 - target 32 - label 0 - ] - edge [ - source 43 - target 37 - label 0 - ] - edge [ - source 43 - target 41 - label 0 - ] - edge [ - source 44 - target 1 - label 0 - ] - edge [ - source 44 - target 7 - label 0 - ] - edge [ - source 44 - target 8 - label 0 - ] - edge [ - source 44 - target 14 - label 0 - ] - edge [ - source 44 - target 19 - label 0 - ] - edge [ - source 44 - target 20 - label 0 - ] - edge [ - source 44 - target 22 - label 0 - ] - edge [ - source 44 - target 30 - label 0 - ] - edge [ - source 44 - target 39 - label 0 - ] - edge [ - source 44 - target 40 - label 0 - ] - edge [ - source 45 - target 4 - label 0 - ] - edge [ - source 45 - target 17 - label 0 - ] - edge [ - source 45 - target 21 - label 0 - ] - edge [ - source 45 - target 30 - label 0 - ] - edge [ - source 45 - target 35 - label 0 - ] - edge [ - source 45 - target 38 - label 0 - ] - edge [ - source 46 - target 2 - label 0 - ] - edge [ - source 46 - target 6 - label 0 - ] - edge [ - source 46 - target 7 - label 0 - ] - edge [ - source 46 - target 20 - label 0 - ] - edge [ - source 46 - target 32 - label 0 - ] - edge [ - source 46 - target 34 - label 0 - ] - edge [ - source 46 - target 36 - label 0 - ] - edge [ - source 46 - target 37 - label 0 - ] - edge [ - source 46 - target 38 - label 0 - ] - edge [ - source 46 - target 39 - label 0 - ] - edge [ - source 47 - target 5 - label 0 - ] - edge [ - source 47 - target 6 - label 0 - ] - edge [ - source 47 - target 8 - label 0 - ] - edge [ - source 47 - target 10 - label 0 - ] - edge [ - source 47 - target 13 - label 0 - ] - edge [ - source 47 - target 15 - label 0 - ] - edge [ - source 47 - target 16 - label 0 - ] - edge [ - source 47 - target 17 - label 0 - ] - edge [ - source 47 - target 21 - label 0 - ] - edge [ - source 47 - target 23 - label 0 - ] - edge [ - source 47 - target 25 - label 0 - ] - edge [ - source 47 - target 26 - label 0 - ] - edge [ - source 47 - target 28 - label 0 - ] - edge [ - source 47 - target 31 - label 0 - ] - edge [ - source 47 - target 33 - label 0 - ] - edge [ - source 47 - target 38 - label 0 - ] - edge [ - source 47 - target 41 - label 0 - ] - edge [ - source 47 - target 43 - label 0 - ] - edge [ - source 47 - target 46 - label 0 - ] - edge [ - source 48 - target 3 - label 0 - ] - edge [ - source 48 - target 9 - label 0 - ] - edge [ - source 48 - target 11 - label 0 - ] - edge [ - source 48 - target 12 - label 0 - ] - edge [ - source 48 - target 15 - label 0 - ] - edge [ - source 48 - target 20 - label 0 - ] - edge [ - source 48 - target 22 - label 0 - ] - edge [ - source 48 - target 30 - label 0 - ] - edge [ - source 48 - target 33 - label 0 - ] - edge [ - source 48 - target 39 - label 0 - ] - edge [ - source 48 - target 43 - label 0 - ] - edge [ - source 48 - target 46 - label 0 - ] - edge [ - source 48 - target 47 - label 0 - ] - edge [ - source 49 - target 2 - label 0 - ] - edge [ - source 49 - target 13 - label 0 - ] - edge [ - source 49 - target 18 - label 0 - ] - edge [ - source 49 - target 28 - label 0 - ] - edge [ - source 49 - target 39 - label 0 - ] - edge [ - source 49 - target 43 - label 0 - ] - edge [ - source 49 - target 44 - label 0 - ] - edge [ - source 49 - target 47 - label 0 - ] - edge [ - source 50 - target 4 - label 0 - ] - edge [ - source 50 - target 13 - label 0 - ] - edge [ - source 50 - target 23 - label 0 - ] - edge [ - source 50 - target 26 - label 0 - ] - edge [ - source 50 - target 27 - label 0 - ] - edge [ - source 50 - target 28 - label 0 - ] - edge [ - source 50 - target 33 - label 0 - ] - edge [ - source 50 - target 39 - label 0 - ] - edge [ - source 50 - target 40 - label 0 - ] - edge [ - source 50 - target 45 - label 0 - ] -] - diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/ring_100.gml b/jscomp/build_tests/ocamlgraph/editor/tests/ring_100.gml deleted file mode 100755 index 046eed3ab0..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/ring_100.gml +++ /dev/null @@ -1,903 +0,0 @@ -graph [ - node [ - id 1 - label 0 - ] - node [ - id 2 - label 1 - ] - node [ - id 3 - label 2 - ] - node [ - id 4 - label 3 - ] - node [ - id 5 - label 4 - ] - node [ - id 6 - label 5 - ] - node [ - id 7 - label 6 - ] - node [ - id 8 - label 7 - ] - node [ - id 9 - label 8 - ] - node [ - id 10 - label 9 - ] - node [ - id 11 - label 10 - ] - node [ - id 12 - label 11 - ] - node [ - id 13 - label 12 - ] - node [ - id 14 - label 13 - ] - node [ - id 15 - label 14 - ] - node [ - id 16 - label 15 - ] - node [ - id 17 - label 16 - ] - node [ - id 18 - label 17 - ] - node [ - id 19 - label 18 - ] - node [ - id 20 - label 19 - ] - node [ - id 21 - label 20 - ] - node [ - id 22 - label 21 - ] - node [ - id 23 - label 22 - ] - node [ - id 24 - label 23 - ] - node [ - id 25 - label 24 - ] - node [ - id 26 - label 25 - ] - node [ - id 27 - label 26 - ] - node [ - id 28 - label 27 - ] - node [ - id 29 - label 28 - ] - node [ - id 30 - label 29 - ] - node [ - id 31 - label 30 - ] - node [ - id 32 - label 31 - ] - node [ - id 33 - label 32 - ] - node [ - id 34 - label 33 - ] - node [ - id 35 - label 34 - ] - node [ - id 36 - label 35 - ] - node [ - id 37 - label 36 - ] - node [ - id 38 - label 37 - ] - node [ - id 39 - label 38 - ] - node [ - id 40 - label 39 - ] - node [ - id 41 - label 40 - ] - node [ - id 42 - label 41 - ] - node [ - id 43 - label 42 - ] - node [ - id 44 - label 43 - ] - node [ - id 45 - label 44 - ] - node [ - id 46 - label 45 - ] - node [ - id 47 - label 46 - ] - node [ - id 48 - label 47 - ] - node [ - id 49 - label 48 - ] - node [ - id 50 - label 49 - ] - node [ - id 51 - label 50 - ] - node [ - id 52 - label 51 - ] - node [ - id 53 - label 52 - ] - node [ - id 54 - label 53 - ] - node [ - id 55 - label 54 - ] - node [ - id 56 - label 55 - ] - node [ - id 57 - label 56 - ] - node [ - id 58 - label 57 - ] - node [ - id 59 - label 58 - ] - node [ - id 60 - label 59 - ] - node [ - id 61 - label 60 - ] - node [ - id 62 - label 61 - ] - node [ - id 63 - label 62 - ] - node [ - id 64 - label 63 - ] - node [ - id 65 - label 64 - ] - node [ - id 66 - label 65 - ] - node [ - id 67 - label 66 - ] - node [ - id 68 - label 67 - ] - node [ - id 69 - label 68 - ] - node [ - id 70 - label 69 - ] - node [ - id 71 - label 70 - ] - node [ - id 72 - label 71 - ] - node [ - id 73 - label 72 - ] - node [ - id 74 - label 73 - ] - node [ - id 75 - label 74 - ] - node [ - id 76 - label 75 - ] - node [ - id 77 - label 76 - ] - node [ - id 78 - label 77 - ] - node [ - id 79 - label 78 - ] - node [ - id 80 - label 79 - ] - node [ - id 81 - label 80 - ] - node [ - id 82 - label 81 - ] - node [ - id 83 - label 82 - ] - node [ - id 84 - label 83 - ] - node [ - id 85 - label 84 - ] - node [ - id 86 - label 85 - ] - node [ - id 87 - label 86 - ] - node [ - id 88 - label 87 - ] - node [ - id 89 - label 88 - ] - node [ - id 90 - label 89 - ] - node [ - id 91 - label 90 - ] - node [ - id 92 - label 91 - ] - node [ - id 93 - label 92 - ] - node [ - id 94 - label 93 - ] - node [ - id 95 - label 94 - ] - node [ - id 96 - label 95 - ] - node [ - id 97 - label 96 - ] - node [ - id 98 - label 97 - ] - node [ - id 99 - label 98 - ] - node [ - id 100 - label 99 - ] - edge [ - source 2 - target 1 - label 0 - ] - edge [ - source 3 - target 2 - label 0 - ] - edge [ - source 4 - target 3 - label 0 - ] - edge [ - source 5 - target 4 - label 0 - ] - edge [ - source 6 - target 5 - label 0 - ] - edge [ - source 7 - target 6 - label 0 - ] - edge [ - source 8 - target 7 - label 0 - ] - edge [ - source 9 - target 8 - label 0 - ] - edge [ - source 10 - target 9 - label 0 - ] - edge [ - source 11 - target 10 - label 0 - ] - edge [ - source 12 - target 11 - label 0 - ] - edge [ - source 13 - target 12 - label 0 - ] - edge [ - source 14 - target 13 - label 0 - ] - edge [ - source 15 - target 14 - label 0 - ] - edge [ - source 16 - target 15 - label 0 - ] - edge [ - source 17 - target 16 - label 0 - ] - edge [ - source 18 - target 17 - label 0 - ] - edge [ - source 19 - target 18 - label 0 - ] - edge [ - source 20 - target 19 - label 0 - ] - edge [ - source 21 - target 20 - label 0 - ] - edge [ - source 22 - target 21 - label 0 - ] - edge [ - source 23 - target 22 - label 0 - ] - edge [ - source 24 - target 23 - label 0 - ] - edge [ - source 25 - target 24 - label 0 - ] - edge [ - source 26 - target 25 - label 0 - ] - edge [ - source 27 - target 26 - label 0 - ] - edge [ - source 28 - target 27 - label 0 - ] - edge [ - source 29 - target 28 - label 0 - ] - edge [ - source 30 - target 29 - label 0 - ] - edge [ - source 31 - target 30 - label 0 - ] - edge [ - source 32 - target 31 - label 0 - ] - edge [ - source 33 - target 32 - label 0 - ] - edge [ - source 34 - target 33 - label 0 - ] - edge [ - source 35 - target 34 - label 0 - ] - edge [ - source 36 - target 35 - label 0 - ] - edge [ - source 37 - target 36 - label 0 - ] - edge [ - source 38 - target 37 - label 0 - ] - edge [ - source 39 - target 38 - label 0 - ] - edge [ - source 40 - target 39 - label 0 - ] - edge [ - source 41 - target 40 - label 0 - ] - edge [ - source 42 - target 41 - label 0 - ] - edge [ - source 43 - target 42 - label 0 - ] - edge [ - source 44 - target 43 - label 0 - ] - edge [ - source 45 - target 44 - label 0 - ] - edge [ - source 46 - target 45 - label 0 - ] - edge [ - source 47 - target 46 - label 0 - ] - edge [ - source 48 - target 47 - label 0 - ] - edge [ - source 49 - target 48 - label 0 - ] - edge [ - source 50 - target 49 - label 0 - ] - edge [ - source 51 - target 50 - label 0 - ] - edge [ - source 52 - target 51 - label 0 - ] - edge [ - source 53 - target 52 - label 0 - ] - edge [ - source 54 - target 53 - label 0 - ] - edge [ - source 55 - target 54 - label 0 - ] - edge [ - source 56 - target 55 - label 0 - ] - edge [ - source 57 - target 56 - label 0 - ] - edge [ - source 58 - target 57 - label 0 - ] - edge [ - source 59 - target 58 - label 0 - ] - edge [ - source 60 - target 59 - label 0 - ] - edge [ - source 61 - target 60 - label 0 - ] - edge [ - source 62 - target 61 - label 0 - ] - edge [ - source 63 - target 62 - label 0 - ] - edge [ - source 64 - target 63 - label 0 - ] - edge [ - source 65 - target 64 - label 0 - ] - edge [ - source 66 - target 65 - label 0 - ] - edge [ - source 67 - target 66 - label 0 - ] - edge [ - source 68 - target 67 - label 0 - ] - edge [ - source 69 - target 68 - label 0 - ] - edge [ - source 70 - target 69 - label 0 - ] - edge [ - source 71 - target 70 - label 0 - ] - edge [ - source 72 - target 71 - label 0 - ] - edge [ - source 73 - target 72 - label 0 - ] - edge [ - source 74 - target 73 - label 0 - ] - edge [ - source 75 - target 74 - label 0 - ] - edge [ - source 76 - target 75 - label 0 - ] - edge [ - source 77 - target 76 - label 0 - ] - edge [ - source 78 - target 77 - label 0 - ] - edge [ - source 79 - target 78 - label 0 - ] - edge [ - source 80 - target 79 - label 0 - ] - edge [ - source 81 - target 80 - label 0 - ] - edge [ - source 82 - target 81 - label 0 - ] - edge [ - source 83 - target 82 - label 0 - ] - edge [ - source 84 - target 83 - label 0 - ] - edge [ - source 85 - target 84 - label 0 - ] - edge [ - source 86 - target 85 - label 0 - ] - edge [ - source 87 - target 86 - label 0 - ] - edge [ - source 88 - target 87 - label 0 - ] - edge [ - source 89 - target 88 - label 0 - ] - edge [ - source 90 - target 89 - label 0 - ] - edge [ - source 91 - target 90 - label 0 - ] - edge [ - source 92 - target 91 - label 0 - ] - edge [ - source 93 - target 92 - label 0 - ] - edge [ - source 94 - target 93 - label 0 - ] - edge [ - source 95 - target 94 - label 0 - ] - edge [ - source 96 - target 95 - label 0 - ] - edge [ - source 97 - target 96 - label 0 - ] - edge [ - source 98 - target 97 - label 0 - ] - edge [ - source 99 - target 98 - label 0 - ] - edge [ - source 100 - target 1 - label 0 - ] - edge [ - source 100 - target 99 - label 0 - ] -] - diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/softmaint.dot b/jscomp/build_tests/ocamlgraph/editor/tests/softmaint.dot deleted file mode 100755 index 17d1f26f3c..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/softmaint.dot +++ /dev/null @@ -1,377 +0,0 @@ -digraph G { -// size="7,10" -// page="8.5,11" -// center="" -// node[width=.25,height=.375,fontsize=9] - fcfpr1_1_2t_17 -> 341411; - fcfpr1_1t_1 -> 341411; - rdlfpr2_0_rdlt_4 -> 341411; - fpfpr1_0_1t_1 -> 341411; - fpfpr1_1_2t_11 -> 341411; - rtafpr1_1_2t_28 -> 341411; - rtafpr1_1_3t_6 -> 341411; - rdlfpr1_1t_1 -> 358866; - rtafpr1_1_3t_6 -> 358866; - tmfpr1_1_3t_5 -> 358930; - fcfpr1_1_3t_9 -> 358930; - pcfpr1_1_3t_7 -> 358930; - fpfpr1_1_3g_1 -> 358930; - fpfpr1_1_3t_1 -> 358930; - aufpr1_1_3t_1 -> 358930; - rtafpr1_0_3g_1 -> 358930; - rtafpr1_1_3t_6 -> 358930; - msgfpr1_1_1g_12 -> 371943; - rtafpr1_1_1g_8 -> 371943; - rtafpr1_1_1t_35 -> 371943; - rtafpr1_1_1t_45 -> 371943; - rtafpr1_1_3t_6 -> 371943; - tlfpr2_0_rdlg_2 -> 374300; - fcfpr1_1_3t_8 -> 374300; - fcfpr1_1_3t_9 -> 374300; - rtafpr1_1_3t_6 -> 374300; - fcfpr1_0_5g_1 -> 371942; - fcfpr1_1_1t_19 -> 371942; - fcfpr1_1_3t_9 -> 371942; - fcfpr1_1_3t_9 -> 374700; - tymsgfpr1_1_3t_3 -> 374700; - fpfpr1_1_3t_1 -> 374700; - rtafpr1_1_3t_7 -> 374700; - fcfpr1_1_3g_2 -> 374741; - fcfpr1_1_3t_9 -> 374741; - fpfpr1_1_3t_1 -> 374741; - rtafpr1_1_3t_7 -> 374741; - fcfpr1_1_1t_18 -> 374886; - fcfpr1_1_3t_9 -> 374886; - fpfpr1_1_3t_1 -> 374886; - rtafpr1_1_3t_7 -> 374886; - fcfpr1_1_3t_9 -> 375039; - fpfpr1_1_3t_1 -> 375039; - fcfpr1_1_3t_42 -> 375507; - fcfpr1_1_3t_9 -> 375507; - rdlfpr2_0_rdlt_158 -> 375507; - rtafpr1_1_3t_7 -> 375507; - rtafpr1_1_3t_71 -> 375507; - dbfpr1_1_3t_2 -> 375507; - fcfpr1_1_3t_9 -> 375508; - rdlfpr1_1g_13 -> 375508; - rtafpr1_1_3t_7 -> 375508; - rtafpr2_1_rdlg_1 -> 375508; - dbfpr1_1_3t_2 -> 375508; - fcfpr1_1_3t_9 -> 375519; - fpfpr1_1_3g_1 -> 375519; - fpfpr1_1_3t_1 -> 375519; - fcfpr1_1_3t_9 -> 377380; - rdlfpr1_1g_16 -> 377380; - rdlfpr1_1t_100 -> 377380; - fcfpr1_0_2g_1 -> 377719; - fcfpr1_1_3t_10 -> 377719; - fcfpr1_1_3t_7 -> 377719; - fcfpr1_1_3t_9 -> 377719; - rdlfpr2_0_rdlg_12 -> 377719; - rdlfpr2_0_rdlt_108 -> 377719; - rdlfpr2_0_rdlt_27 -> 377719; - rdlfpr2_0_rdlt_30 -> 377719; - fcfpr1_1_3t_9 -> 377763; - fcfpr1_1_3t_9 -> 379848; - fpfpr1_1_3t_1 -> 379848; - fcfpr1_1_3t_9 -> 380571; - fcfpr1_1_3t_9 -> 380604; - fpfpr1_1_3t_1 -> 380604; - fcfpr1_1_3t_9 -> 381211; - fpfpr1_1_3t_1 -> 381211; - fcfpr1_1_3t_9 -> 381835; - fcfpr1_1_3t_9 -> 381897; - fcfpr1_1_3t_9 -> 381901; - fpfpr1_1_3t_1 -> 381901; - fcfpr1_1_3t_9 -> 382103; - rtafpr1_1_3t_7 -> 382103; - fcfpr1_1_3t_9 -> 382161; - fcfpr1_1_3t_9 -> 383174; - fpfpr1_1_3t_1 -> 383174; - rtafpr1_1_3t_7 -> 383174; - fpfpr1_1_3g_1 -> 352010; - fpfpr1_1_3t_1 -> 352010; - fpfpr1_1_3t_1 -> 382409; - fpfpr1_1_3t_1 -> 382827; - fpfpr1_1_3t_1 -> 382928; - rtafpr1_1_3t_7 -> 382928; - tlfpr1_1_1t_5 -> 358224; - tymsgfpr1_1_1t_23 -> 358224; - tymsgfpr1_1_3t_3 -> 358224; - rcfpr0_0_1t_9 -> 358224; - rcfpr1_1_1t_5 -> 358224; - odfpr0_0_1t_8 -> 358224; - odfpr1_1_1t_6 -> 358224; - ecdsgfpr1_1_1t_4 -> 358224; - tymsgfpr1_1_1t_18 -> 358900; - tymsgfpr1_1_3t_3 -> 358900; - rcfpr1_1_1t_100 -> 358900; - rcfpr1_1_1t_22 -> 358900; - rcfpr1_1_1t_37 -> 358900; - odfpr1_1_1t_21 -> 358900; - tymsgfpr1_1_3t_3 -> 372568; - rcfpr1_1_1t_30 -> 372568; - odfpr1_1_1t_31 -> 372568; - tlfpr1_1_1t_20 -> 375557; - tymsgfpr1_1_1t_24 -> 375557; - tymsgfpr1_1_3t_3 -> 375557; - rcfpr1_1_1t_11 -> 375557; - odfpr1_1_1t_9 -> 375557; - ecdsgfpr1_1_1t_19 -> 375557; - rtafpr1_1_1g_14 -> 376956; - rtafpr1_1_1t_64 -> 376956; - rtafpr1_1_2t_18 -> 376956; - rtafpr1_1_3t_30 -> 376956; - rtafpr1_1_3t_7 -> 376956; - rtafpr1_1_3t_7 -> 379339; - rtafpr1_1_1t_14 -> 379422; - rtafpr1_1_1t_20 -> 379422; - rtafpr1_1_3t_7 -> 379422; - rtafpr1_1_3t_7 -> 383039; - fcfpr1_1_1t_18 -> 359471; - fcfpr2_0_1t_1 -> 359471; - fcfpr2_0_1t_2 -> 359471; - ccsfpr2_0_1t_99 -> 359471; - fcfpr1_1_3t_42 -> 384096; - rtafpr1_1_3t_71 -> 384096; - tlfpr1_0_4g_4 -> 354290; - rcfpr0_0_1t_9 -> 354290; - odfpr0_0_1t_8 -> 354290; - pagfpr1_1_1t_23 -> 354290; - rcfpr1_1_1t_5 -> 379864; - rcfpr1_1_1t_100 -> 382574; - rcfpr1_1_1t_22 -> 382574; - rcfpr1_1_1t_37 -> 382574; - rcfpr1_1_1t_30 -> 370706; - rcfpr1_1_1t_30 -> 377908; - rcfpr1_1_1t_30 -> 377924; - rcfpr1_1_1t_30 -> 377971; - rcfpr1_1_1t_30 -> 377980; - odfpr1_1_1t_31 -> 377980; - rcfpr1_1_1t_30 -> 378362; - rcfpr1_1_1t_30 -> 378656; - rcfpr1_1_1t_30 -> 378666; - rcfpr1_1_1t_30 -> 379169; - odfpr1_1_1t_31 -> 379169; - rcfpr1_1_1t_110 -> 379341; - rcfpr1_1_1t_30 -> 379341; - rcfpr1_1_1t_62 -> 379341; - odfpr1_1_1t_31 -> 379341; - rcfpr1_1_1t_30 -> 379972; - rcfpr1_1_1t_30 -> 380298; - rcfpr1_1_1t_30 -> 380448; - rcfpr1_1_1t_30 -> 380475; - odfpr1_1_1t_31 -> 380475; - rcfpr1_1_1t_30 -> 380526; - odfpr1_1_1t_31 -> 357430; - rcfpr1_1_1t_11 -> 379968; - odfpr1_1_1t_9 -> 379968; - ccsfpr2_0_1t_99 -> 359100; - ccsfpr2_0_1t_99 -> 376529; - ccsfpr2_0_1t_99 -> 377801; - ccsfpr2_0_1t_99 -> 379126; - ccsfpr2_0_1t_99 -> 379212; - ccsfpr2_0_1t_99 -> 380285; - ccsfpr2_0_1t_99 -> 380963; - ccsfpr2_0_1t_99 -> 384909; - tlfpr1_0_4g_4 -> 358471; - odfpr0_0_1t_7 -> 358471; - odfpr1_0_1t_36 -> 358471; - odfpr1_0_3t_18 -> 358471; - odfpr1_0_3t_21 -> 358471; - tlfpr1_0_4g_4 -> 375024; - tlfpr1_0_4g_4 -> 375027; - rcfpr1_1_1t_110 -> 381710; - rcfpr1_1_1t_62 -> 381710; - rcfpr1_1_1t_110 -> 381775; - rcfpr1_1_1t_62 -> 381775; - rcfpr1_1_1t_110 -> 382436; - fcfpr1_1_3t_34 -> 382528; - rcfpr1_1_1t_110 -> 382528; - rtafpr1_1_3t_48 -> 382528; - rcfpr1_1_1t_110 -> 382566; - rcfpr1_1_1t_110 -> 382572; - odfpr0_0_1t_7 -> 353506; - rcfpr1_0_1t_35 -> 370509; - odfpr0_0_1t_7 -> 370509; - odfpr0_0_1t_7 -> 370510; - odfpr1_0_1t_38 -> 370510; - tlfpr1_0_4g_5 -> 354546; - rcfpr1_1_1t_61 -> 354546; - odfpr1_0_3t_18 -> 354546; - odfpr1_0_3t_20 -> 354546; - odfpr1_0_3t_18 -> 354757; - odfpr1_0_3t_20 -> 354757; - odfpr1_0_3t_18 -> 354766; - odfpr1_0_3t_20 -> 354766; - odfpr1_0_3t_18 -> 354771; - odfpr1_0_3t_20 -> 354771; - odfpr1_0_3t_18 -> 354785; - odfpr1_0_3t_23 -> 354785; - odfpr1_0_3t_24 -> 354785; - odfpr1_0_3t_18 -> 354878; - odfpr1_0_3t_23 -> 354878; - odfpr1_0_3t_24 -> 354878; - odfpr1_0_3t_18 -> 355080; - odfpr1_0_3t_23 -> 355080; - odfpr1_0_3t_24 -> 355080; - odfpr1_0_3t_18 -> 355288; - odfpr1_0_3t_23 -> 355288; - odfpr1_0_3t_24 -> 355288; - odfpr2_0_03t_13 -> 355288; - odfpr1_0_3t_18 -> 355800; - odfpr1_0_3t_21 -> 355800; - odfpr1_0_3t_18 -> 356116; - odfpr1_0_3t_21 -> 356116; - odfpr1_0_3t_18 -> 356741; - odfpr1_0_3t_21 -> 356741; - odfpr1_0_3t_18 -> 357340; - odfpr1_0_3t_21 -> 357340; - odfpr1_0_3t_18 -> 357538; - odfpr1_0_3t_21 -> 357538; - odfpr1_0_3t_18 -> 357769; - odfpr1_0_3t_21 -> 357769; - odfpr1_0_3t_18 -> 357793; - odfpr1_0_3t_21 -> 357793; - odfpr1_0_3t_18 -> 358155; - odfpr1_0_3t_21 -> 358155; - odfpr1_0_3t_18 -> 358157; - odfpr1_0_3t_21 -> 358157; - odfpr1_0_3t_18 -> 358159; - odfpr1_0_3t_21 -> 358159; - odfpr1_0_3t_18 -> 358584; - odfpr1_0_3t_21 -> 358584; - odfpr1_0_3t_18 -> 360104; - odfpr1_0_3t_21 -> 360104; - odfpr1_0_3t_18 -> 360144; - odfpr1_0_3t_21 -> 360144; - odfpr1_0_3t_18 -> 360672; - odfpr1_0_3t_21 -> 360672; - odfpr1_0_3t_5 -> 360672; - odfpr1_0_3t_18 -> 360839; - odfpr1_0_3t_21 -> 360839; - odfpr1_0_3t_18 -> 371187; - tlfpr1_0_3g_5 -> 373300; - odfpr1_0_3t_12 -> 373300; - odfpr1_0_3t_18 -> 373300; - odfpr1_0_3t_18 -> 375134; - odfpr1_0_5t_18 -> 375134; - rcfpr0_0_1t_10 -> 375319; - odfpr1_0_3t_18 -> 375319; - odfpr1_0_3t_36 -> 375319; - odfpr1_0_5t_17 -> 375319; - odfpr1_0_5t_19 -> 375319; - odfpr1_0_3t_18 -> 375499; - odfpr1_0_3t_18 -> 377220; - odfpr1_0_5t_21 -> 377220; - tlfpr1_0_3g_7 -> 377562; - tlfpr1_1_1t_3 -> 377562; - odfpr1_0_3t_18 -> 377562; - odfpr1_0_3t_36 -> 377562; - odfpr1_0_5t_20 -> 377562; - odfpr1_0_3t_18 -> 378108; - odfpr1_0_3t_6 -> 378108; - odfpr1_0_5t_20 -> 354221; - - odfpr0_0_1t_7 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - tlfpr1_0_3g_5 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr0_0_1t_8 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rcfpr1_1_1t_61 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fcfpr1_1t_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_0_3t_18 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - tlfpr1_0_3g_7 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rcfpr1_1_1t_62 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - ccsfpr2_0_1t_99 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - tymsgfpr1_1_3t_3 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rcfpr0_0_1t_9 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rtafpr1_1_1t_14 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rtafpr1_1_3t_30 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rcfpr1_1_1t_110 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - dbfpr1_1_3t_2 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rtafpr1_1_1g_8 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rcfpr1_1_1t_30 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - tlfpr1_1_1t_20 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rtafpr1_1_1t_64 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - tlfpr2_0_rdlg_2 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rtafpr1_1_2t_28 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - tlfpr1_1_1t_3 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_1_1t_6 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fpfpr1_1_3t_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - aufpr1_1_3t_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fcfpr1_1_3t_34 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rcfpr1_1_1t_5 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fcfpr1_1_1t_18 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_0_3t_36 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - tlfpr1_1_1t_5 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fcfpr1_1_1t_19 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_1_1t_9 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fcfpr1_1_3t_7 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rcfpr1_1_1t_37 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fcfpr1_1_3t_8 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_1_1t_21 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fcfpr1_1_3t_9 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rdlfpr2_0_rdlt_27 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fcfpr1_1_3g_2 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rtafpr1_1_1t_35 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_0_5t_20 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fpfpr1_1_3g_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_0_5t_21 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fpfpr1_1_2t_11 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - ecdsgfpr1_1_1t_19 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_0_1t_36 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rtafpr1_1_1g_14 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - tymsgfpr1_1_1t_23 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - tymsgfpr1_1_1t_24 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_0_1t_38 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fcfpr1_0_2g_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rdlfpr1_1t_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rcfpr0_0_1t_10 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rcfpr1_1_1t_100 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rdlfpr2_0_rdlt_108 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - pcfpr1_1_3t_7 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_0_3t_20 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - ecdsgfpr1_1_1t_4 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - tmfpr1_1_3t_5 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_0_3t_21 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fpfpr1_0_1t_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_0_3t_23 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rcfpr1_1_1t_22 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - pagfpr1_1_1t_23 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rtafpr1_1_3t_71 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rtafpr1_1_2t_18 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rdlfpr2_0_rdlt_158 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rtafpr1_1_3t_6 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_0_3t_24 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rtafpr1_1_3t_7 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rtafpr1_0_3g_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rtafpr1_1_1t_20 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rdlfpr1_1g_13 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rcfpr1_0_1t_35 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fcfpr1_1_2t_17 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rtafpr2_1_rdlg_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rdlfpr2_0_rdlt_4 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rdlfpr1_1g_16 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fcfpr2_0_1t_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fcfpr2_0_1t_2 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rdlfpr1_1t_100 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - msgfpr1_1_1g_12 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rdlfpr2_0_rdlt_30 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_0_3t_5 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - tlfpr1_0_4g_4 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fcfpr1_1_3t_42 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_0_3t_6 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - tlfpr1_0_4g_5 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rtafpr1_1_3t_48 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_0_5t_17 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_0_5t_18 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - tymsgfpr1_1_1t_18 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_0_5t_19 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fcfpr1_1_3t_10 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - fcfpr1_0_5g_1 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_0_3t_12 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr2_0_03t_13 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rcfpr1_1_1t_11 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - odfpr1_1_1t_31 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rdlfpr2_0_rdlg_12 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; - rtafpr1_1_1t_45 [label="",shape=circle,height=0.12,width=0.12,fontsize=1]; -} diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/test.gml b/jscomp/build_tests/ocamlgraph/editor/tests/test.gml deleted file mode 100755 index e76f9a7b82..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/test.gml +++ /dev/null @@ -1,32 +0,0 @@ -graph [ - comment "This is a sample graph" - directed 1 - id 42 - label "Hello, I am a graph" - node [ id 1 label "Node 1" ] - node [ id 2 label "node 2" ] - node [ id 3 label "node 3" ] - node [ id 4 label "node 3" ] - node [ id 5 label "node 3" ] - node [ id 6 label "node 3" ] - node [ id 7 label "node 3" ] - node [ id 8 label "node 3" ] - node [ id 9 label "node 3" ] - node [ id 10 label "node 3" ] - node [ id 11 label "node 3" ] - node [ id 12 label "node 3" ] - edge [ source 1 target 2 ] - edge [ source 1 target 4 ] - edge [ source 1 target 5 ] - edge [ source 1 target 6 ] - edge [ source 1 target 7 ] - edge [ source 2 target 7 ] - edge [ source 3 target 7 ] - edge [ source 1 target 8 ] - edge [ source 2 target 3 ] - edge [ source 3 target 1 ] - edge [ source 8 target 9 ] - edge [ source 8 target 10 ] - edge [ source 8 target 11 ] - edge [ source 8 target 12 ] -] \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/test2,1_2.gml b/jscomp/build_tests/ocamlgraph/editor/tests/test2,1_2.gml deleted file mode 100755 index a0047c3ce3..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/test2,1_2.gml +++ /dev/null @@ -1,20 +0,0 @@ -graph [ - comment "This is a sample graph" - directed 1 - id 42 - label "Hello, I am a graph" - node [ id 1 label "Node 1" ] - node [ id 2 label "node 2" ] - node [ id 3 label "node 3" ] - node [ id 4 label "node 4" ] - node [ id 5 label "node 5" ] - node [ id 6 label "node 6" ] - edge [ source 1 target 2 ] - edge [ source 1 target 3 ] - edge [ source 1 target 4 ] - edge [ source 1 target 5 ] - edge [ source 1 target 6 ] - edge [ source 2 target 4 ] - edge [ source 5 target 6] - -] \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/test2,1_3.gml b/jscomp/build_tests/ocamlgraph/editor/tests/test2,1_3.gml deleted file mode 100755 index 656a07cea1..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/test2,1_3.gml +++ /dev/null @@ -1,23 +0,0 @@ -graph [ - comment "This is a sample graph" - directed 1 - id 42 - label "Hello, I am a graph" - node [ id 1 label "Node 1" ] - node [ id 2 label "node 2" ] - node [ id 3 label "node 3" ] - node [ id 4 label "node 4" ] - node [ id 5 label "node 5" ] - node [ id 6 label "node 6" ] - node [ id 7 label "node 7" ] - edge [ source 1 target 2 ] - edge [ source 1 target 3 ] - edge [ source 1 target 4 ] - edge [ source 1 target 6 ] - edge [ source 1 target 5 ] - edge [ source 1 target 7 ] - edge [ source 2 target 4 ] - edge [ source 6 target 5 ] - edge [ source 5 target 7 ] - -] \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/test2,1_3tot.gml b/jscomp/build_tests/ocamlgraph/editor/tests/test2,1_3tot.gml deleted file mode 100755 index 854f8a20c6..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/test2,1_3tot.gml +++ /dev/null @@ -1,24 +0,0 @@ -graph [ - comment "This is a sample graph" - directed 1 - id 42 - label "Hello, I am a graph" - node [ id 1 label "Node 1" ] - node [ id 2 label "node 2" ] - node [ id 3 label "node 3" ] - node [ id 4 label "node 4" ] - node [ id 5 label "node 5" ] - node [ id 6 label "node 6" ] - node [ id 7 label "node 7" ] - edge [ source 1 target 2 ] - edge [ source 1 target 3 ] - edge [ source 1 target 4 ] - edge [ source 1 target 5 ] - edge [ source 1 target 6 ] - edge [ source 1 target 7 ] - edge [ source 2 target 4 ] - edge [ source 5 target 6 ] - edge [ source 6 target 7 ] - edge [ source 5 target 7 ] - -] \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/test2_2.gml b/jscomp/build_tests/ocamlgraph/editor/tests/test2_2.gml deleted file mode 100755 index 66f6def33d..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/test2_2.gml +++ /dev/null @@ -1,18 +0,0 @@ -graph [ - comment "This is a sample graph" - directed 1 - id 42 - label "Hello, I am a graph" - node [ id 1 label "Node 1" ] - node [ id 2 label "node 2" ] - node [ id 3 label "node 3" ] - node [ id 4 label "node 4" ] - node [ id 5 label "node 5" ] - edge [ source 1 target 2 ] - edge [ source 1 target 3 ] - edge [ source 1 target 4 ] - edge [ source 1 target 5 ] - edge [ source 2 target 3 ] - edge [ source 4 target 5 ] - -] \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/transparency.dot b/jscomp/build_tests/ocamlgraph/editor/tests/transparency.dot deleted file mode 100755 index 0cba87e13e..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/transparency.dot +++ /dev/null @@ -1,105 +0,0 @@ -graph G { - graph [splines=true overlap=false] - graph [truecolor bgcolor="#ff00005f"] - node [style=filled fillcolor="#00ff005f"] - 1 -- 30 [f=1]; - 1 -- 40 [f=14]; - 8 -- 46 [f=1]; - 8 -- 16 [f=18]; - 10 -- 25 [f=1]; - 10 -- 19 [f=5]; - 10 -- 33 [f=1]; - 12 -- 8 [f=1]; - 12 -- 36 [f=5]; - 12 -- 17 [f=16]; - 13 -- 38 [f=1]; - 13 -- 24 [f=19]; - 24 -- 49 [f=1]; - 24 -- 13 [f=1]; - 24 -- 47 [f=12]; - 24 -- 12 [f=19]; - 25 -- 27 [f=1]; - 25 -- 12 [f=1]; - 27 -- 12 [f=1]; - 27 -- 14 [f=8]; - 29 -- 10 [f=1]; - 29 -- 8 [f=17]; - 30 -- 24 [f=1]; - 30 -- 44 [f=15]; - 38 -- 29 [f=1]; - 38 -- 35 [f=15]; - 2 -- 42 [f=2]; - 2 -- 35 [f=3]; - 2 -- 11 [f=19]; - 14 -- 18 [f=2]; - 14 -- 24 [f=15]; - 14 -- 38 [f=18]; - 18 -- 49 [f=2]; - 18 -- 47 [f=20]; - 26 -- 41 [f=2]; - 26 -- 42 [f=15]; - 31 -- 39 [f=2]; - 31 -- 47 [f=17]; - 31 -- 25 [f=14]; - 37 -- 26 [f=2]; - 37 -- 16 [f=14]; - 39 -- 50 [f=2]; - 39 -- 14 [f=2]; - 39 -- 18 [f=17]; - 39 -- 47 [f=10]; - 41 -- 31 [f=2]; - 41 -- 8 [f=16]; - 42 -- 44 [f=2]; - 42 -- 29 [f=12]; - 44 -- 37 [f=2]; - 44 -- 32 [f=15]; - 3 -- 20 [f=2]; - 3 -- 28 [f=19]; - 6 -- 45 [f=2]; - 6 -- 28 [f=10]; - 9 -- 6 [f=2]; - 9 -- 16 [f=1]; - 15 -- 16 [f=2]; - 15 -- 48 [f=2]; - 16 -- 50 [f=2]; - 16 -- 32 [f=14]; - 16 -- 39 [f=8]; - 20 -- 33 [f=2]; - 33 -- 9 [f=2]; - 33 -- 46 [f=3]; - 33 -- 48 [f=17]; - 45 -- 15 [f=2]; - 4 -- 17 [f=4]; - 4 -- 15 [f=6]; - 4 -- 12 [f=16]; - 17 -- 21 [f=4]; - 19 -- 35 [f=4]; - 19 -- 15 [f=9]; - 19 -- 43 [f=4]; - 21 -- 19 [f=4]; - 21 -- 50 [f=4]; - 23 -- 36 [f=4]; - 34 -- 23 [f=4]; - 34 -- 24 [f=11]; - 35 -- 34 [f=4]; - 35 -- 16 [f=6]; - 35 -- 18 [f=16]; - 36 -- 46 [f=4]; - 5 -- 7 [f=1]; - 5 -- 36 [f=6]; - 7 -- 32 [f=1]; - 7 -- 11 [f=2]; - 7 -- 14 [f=17]; - 11 -- 40 [f=1]; - 11 -- 50 [f=1]; - 22 -- 46 [f=1]; - 28 -- 43 [f=1]; - 28 -- 8 [f=18]; - 32 -- 28 [f=1]; - 32 -- 39 [f=13]; - 32 -- 42 [f=15]; - 40 -- 22 [f=1]; - 40 -- 47 [f=1]; - 43 -- 11 [f=1]; - 43 -- 17 [f=19]; -} diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/twopi2.dot b/jscomp/build_tests/ocamlgraph/editor/tests/twopi2.dot deleted file mode 100755 index 72b28fa7a3..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/twopi2.dot +++ /dev/null @@ -1,2212 +0,0 @@ -digraph G { - ranksep=3; - ratio=auto; -"1" [ label="02f5daf56e299b8a8ecea892",shape="hexagon",style="filled",color="green" ]; -"189E" [ label="ca5af2",shape="box",style="filled",color="grey" ]; -"790E" [ label="b4dfef6",shape="box",style="filled",color="grey" ]; -"2" [ label="171192dc1f8e6ea551548a910c00",shape="hexagon",style="filled",color="green" ]; -"191E" [ label="629e42",shape="box",style="filled",color="grey" ]; -"3" [ label="6bce02baf91781a831e1b95",shape="hexagon",style="filled",color="green" ]; -"193E" [ label="1c08373",shape="box",style="filled",color="grey" ]; -"4" [ label="6236a67933a619a6a3d48",shape="hexagon",style="filled",color="green" ]; -"195E" [ label="be8f4199f",shape="box",style="filled",color="grey" ]; -"5" [ label="50962c93b4cb293f5beb59eb",shape="hexagon",style="filled",color="green" ]; -"197E" [ label="be8f4199f",shape="box",style="filled",color="grey" ]; -"6" [ label="05d4b1ed6a6135eec3abd3f2",shape="hexagon",style="filled",color="green" ]; -"199E" [ label="",shape="box",style="filled",color="grey" ]; -"7" [ label="08769f73d31c1a99be2d9363f",shape="hexagon",style="filled",color="green" ]; -"201E" [ label="629e42",shape="box",style="filled",color="grey" ]; -"8" [ label="a6a196a504c3a7657d1fa41",shape="hexagon",style="filled",color="green" ]; -"203E" [ label="cd856f",shape="box",style="filled",color="grey" ]; -"9" [ label="837ebf4bde22e1f1535cb662",shape="hexagon",style="filled",color="green" ]; -"725E" [ label="d0eb84",shape="box",style="filled",color="grey" ]; -"785E" [ label="dd2ba36",shape="box",style="filled",color="grey" ]; -"10" [ label="5f865c374cb3fe976dd376b8",shape="hexagon",style="filled",color="green" ]; -"205E" [ label="23ad1",shape="box",style="filled",color="grey" ]; -"11" [ label="8be752bc95d436a90493bec9",shape="hexagon",style="filled",color="green" ]; -"207E" [ label="ee91c97828",shape="box",style="filled",color="grey" ]; -"12" [ label="969a58db14386cb9d2f51ec",shape="hexagon",style="filled",color="green" ]; -"209E" [ label="7c7c",shape="box",style="filled",color="grey" ]; -"13" [ label="da24f74aad2ff519009d1f38c",shape="hexagon",style="filled",color="green" ]; -"211E" [ label="460aed10cc9",shape="box",style="filled",color="grey" ]; -"14" [ label="3124d3a6ed3381a6341c6",shape="hexagon",style="filled",color="green" ]; -"213E" [ label="bbe0a8f93dc1",shape="box",style="filled",color="grey" ]; -"15" [ label="71512ec7d43f958f2b6da",shape="hexagon",style="filled",color="green" ]; -"215E" [ label="3f0a2b4eb62f",shape="box",style="filled",color="grey" ]; -"16" [ label="3828a2c682419423cf",shape="hexagon",style="filled",color="green" ]; -"727E" [ label="2",shape="box",style="filled",color="grey" ]; -"784E" [ label="",shape="box",style="filled",color="grey" ]; -"17" [ label="aa868f65c34cdb64f1fad19a",shape="hexagon",style="filled",color="green" ]; -"217E" [ label="3089106e3b",shape="box",style="filled",color="grey" ]; -"787E" [ label="1aaaab063",shape="box",style="filled",color="grey" ]; -"18" [ label="dca32af03698c988b22",shape="hexagon",style="filled",color="green" ]; -"219E" [ label="eb8",shape="box",style="filled",color="grey" ]; -"19" [ label="d8f4a9e463a1e89217f",shape="hexagon",style="filled",color="green" ]; -"221E" [ label="4c6c8c",shape="box",style="filled",color="grey" ]; -"20" [ label="c96782ef56711c5d6a3f69",shape="hexagon",style="filled",color="green" ]; -"223E" [ label="6a8f5bafb1",shape="box",style="filled",color="grey" ]; -"21" [ label="4f04c39708f",shape="hexagon",style="filled",color="green" ]; -"225E" [ label="a49284e9",shape="box",style="filled",color="grey" ]; -"22" [ label="97284d4c3a5d499853f0e",shape="hexagon",style="filled",color="green" ]; -"227E" [ label="53069e384a2",shape="box",style="filled",color="grey" ]; -"792E" [ label="79b69c612",shape="box",style="filled",color="grey" ]; -"23" [ label="c4d32527b670afb370d643",shape="hexagon",style="filled",color="green" ]; -"231E" [ label="e851f5ddd920",shape="box",style="filled",color="grey" ]; -"24" [ label="5e9156098c064",shape="hexagon",style="filled",color="green" ]; -"233E" [ label="",shape="box",style="filled",color="grey" ]; -"25" [ label="3d475ea3aeca51b60212dd",shape="hexagon",style="filled",color="green" ]; -"235E" [ label="4280833ef80172",shape="box",style="filled",color="grey" ]; -"26" [ label="966d271c22e75c7538",shape="hexagon",style="filled",color="green" ]; -"237E" [ label="cab04b7c14a",shape="box",style="filled",color="grey" ]; -"27" [ label="b630e1af6ae1997f0e8ba750",shape="hexagon",style="filled",color="green" ]; -"239E" [ label="bb828f1a326",shape="box",style="filled",color="grey" ]; -"783E" [ label="499f6985db294c",shape="box",style="filled",color="grey" ]; -"28" [ label="ebd8ffc2ac3a90efb8af9",shape="hexagon",style="filled",color="green" ]; -"241E" [ label="1ebeec",shape="box",style="filled",color="grey" ]; -"791E" [ label="c0b727",shape="box",style="filled",color="grey" ]; -"29" [ label="69fdd1a1f4768c5efe7",shape="hexagon",style="filled",color="green" ]; -"243E" [ label="35b8742610",shape="box",style="filled",color="grey" ]; -"30" [ label="d93a80739fc1edb41a11b7294",shape="hexagon",style="filled",color="green" ]; -"245E" [ label="e03b8bc0435a",shape="box",style="filled",color="grey" ]; -"31" [ label="bf65cfddeb00ff847feae0c",shape="hexagon",style="filled",color="green" ]; -"247E" [ label="8df",shape="box",style="filled",color="grey" ]; -"32" [ label="916c686a1e82dba72524a",shape="hexagon",style="filled",color="green" ]; -"249E" [ label="a849f9d352e",shape="box",style="filled",color="grey" ]; -"33" [ label="f496bcf0889b301d77819c",shape="hexagon",style="filled",color="green" ]; -"251E" [ label="f29dfb9",shape="box",style="filled",color="grey" ]; -"34" [ label="76889f7d35e",shape="hexagon",style="filled",color="green" ]; -"253E" [ label="e7ef998",shape="box",style="filled",color="grey" ]; -"35" [ label="668d636002",shape="hexagon",style="filled",color="green" ]; -"255E" [ label="4379b5ed",shape="box",style="filled",color="grey" ]; -"36" [ label="e1e4c23db39d8bd633c3a",shape="hexagon",style="filled",color="green" ]; -"257E" [ label="1ed5d7f63b8c6",shape="box",style="filled",color="grey" ]; -"37" [ label="842bc5775657c1e0d67",shape="hexagon",style="filled",color="green" ]; -"259E" [ label="a387210a27b",shape="box",style="filled",color="grey" ]; -"38" [ label="e4e2f4e6d",shape="hexagon",style="filled",color="green" ]; -"261E" [ label="1f4f0fdf",shape="box",style="filled",color="grey" ]; -"39" [ label="04390dec6f1779353c07f5",shape="hexagon",style="filled",color="green" ]; -"263E" [ label="bac77c3f414a",shape="box",style="filled",color="grey" ]; -"40" [ label="69f2611acc42c36ed7cc",shape="hexagon",style="filled",color="green" ]; -"265E" [ label="cab04b7c14a",shape="box",style="filled",color="grey" ]; -"41" [ label="1562abef0d8241",shape="hexagon",style="filled",color="green" ]; -"267E" [ label="6a8f5bafb1",shape="box",style="filled",color="grey" ]; -"42" [ label="e49aaa5cc4e44355d6a0",shape="hexagon",style="filled",color="green" ]; -"269E" [ label="cc3f63d",shape="box",style="filled",color="grey" ]; -"43" [ label="e8ebe1bf5f421c1223",shape="hexagon",style="filled",color="green" ]; -"271E" [ label="96325ea",shape="box",style="filled",color="grey" ]; -"44" [ label="2759e82e30d6d",shape="hexagon",style="filled",color="green" ]; -"273E" [ label="ca5af2",shape="box",style="filled",color="grey" ]; -"45" [ label="23c1ec53358d237c1",shape="hexagon",style="filled",color="green" ]; -"275E" [ label="cab04b7c14a",shape="box",style="filled",color="grey" ]; -"46" [ label="5838586c293d455",shape="hexagon",style="filled",color="green" ]; -"277E" [ label="83c397b8bf7f",shape="box",style="filled",color="grey" ]; -"47" [ label="f841118350a27b7ea29a9c9d",shape="hexagon",style="filled",color="green" ]; -"279E" [ label="69f4ecb77d",shape="box",style="filled",color="grey" ]; -"48" [ label="658d208447d8ec5d6de8",shape="hexagon",style="filled",color="green" ]; -"281E" [ label="f7b22b9640",shape="box",style="filled",color="grey" ]; -"49" [ label="11180ae7706510211bc4",shape="hexagon",style="filled",color="green" ]; -"283E" [ label="052bb6e3",shape="box",style="filled",color="grey" ]; -"50" [ label="5807acd8d58e006f43",shape="hexagon",style="filled",color="green" ]; -"285E" [ label="",shape="box",style="filled",color="grey" ]; -"51" [ label="fe4e848cb5291ee59a2",shape="hexagon",style="filled",color="green" ]; -"287E" [ label="e3aefac763",shape="box",style="filled",color="grey" ]; -"52" [ label="c4f31ea3844e12da27ad47c6",shape="hexagon",style="filled",color="green" ]; -"289E" [ label="fb16636aae",shape="box",style="filled",color="grey" ]; -"53" [ label="00cbeb87c182ca0785f",shape="hexagon",style="filled",color="green" ]; -"291E" [ label="3089106e3b",shape="box",style="filled",color="grey" ]; -"54" [ label="11f088bfd8",shape="hexagon",style="filled",color="green" ]; -"293E" [ label="6a80cbe",shape="box",style="filled",color="grey" ]; -"55" [ label="64a9ec24428099ad8ed82ba6",shape="hexagon",style="filled",color="green" ]; -"745E" [ label="68d8993e61d8c82cd29e8d0182b0",shape="box",style="filled",color="grey" ]; -"56" [ label="3c2a62e0e5e9f7",shape="hexagon",style="filled",color="green" ]; -"295E" [ label="ae32701",shape="box",style="filled",color="grey" ]; -"57" [ label="dd84fe6a65cfac7bca03ebd",shape="hexagon",style="filled",color="green" ]; -"297E" [ label="",shape="box",style="filled",color="grey" ]; -"58" [ label="b06bbfa920aa95dd",shape="hexagon",style="filled",color="green" ]; -"299E" [ label="07",shape="box",style="filled",color="grey" ]; -"59" [ label="6b5aaa4bdf44b2c898854",shape="hexagon",style="filled",color="green" ]; -"301E" [ label="4c6c8c",shape="box",style="filled",color="grey" ]; -"789E" [ label="3a0ff0",shape="box",style="filled",color="grey" ]; -"60" [ label="855d26296eda4eb7",shape="hexagon",style="filled",color="green" ]; -"303E" [ label="53069e384a2",shape="box",style="filled",color="grey" ]; -"61" [ label="e82f47b8d4949ba4af69b38cbc19",shape="hexagon",style="filled",color="green" ]; -"305E" [ label="b62cd1d0a0",shape="box",style="filled",color="grey" ]; -"62" [ label="86569bffb49adf6b3d0ebac",shape="hexagon",style="filled",color="green" ]; -"307E" [ label="660ffeb76fc59",shape="box",style="filled",color="grey" ]; -"63" [ label="a96e47ff37983425a3e452095",shape="hexagon",style="filled",color="green" ]; -"309E" [ label="cab04b7c14a",shape="box",style="filled",color="grey" ]; -"64" [ label="71a48d11b2e7e56b1df128bd",shape="hexagon",style="filled",color="green" ]; -"311E" [ label="be8f4199f",shape="box",style="filled",color="grey" ]; -"65" [ label="a0befe6dd1ca7b165786835",shape="hexagon",style="filled",color="green" ]; -"313E" [ label="3cfae",shape="box",style="filled",color="grey" ]; -"66" [ label="f33ec11db496f7bfcb024f",shape="hexagon",style="filled",color="green" ]; -"315E" [ label="71e6b",shape="box",style="filled",color="grey" ]; -"67" [ label="fe6be3206549f5b5564acde84783",shape="hexagon",style="filled",color="green" ]; -"317E" [ label="",shape="box",style="filled",color="grey" ]; -"68" [ label="e4dba079d5fcb1f165920a3bf",shape="hexagon",style="filled",color="green" ]; -"319E" [ label="",shape="box",style="filled",color="grey" ]; -"69" [ label="35dfbee3123dc389cba0b15",shape="hexagon",style="filled",color="green" ]; -"746E" [ label="4c865eec228e41e7f4e5fc68a9a6",shape="box",style="filled",color="grey" ]; -"70" [ label="16c508ab98483d430bbe",shape="hexagon",style="filled",color="green" ]; -"321E" [ label="cab04b7c14a",shape="box",style="filled",color="grey" ]; -"71" [ label="9c9e2e0f2da8758e436c",shape="hexagon",style="filled",color="green" ]; -"327E" [ label="cd0d985a366cad7e",shape="box",style="filled",color="grey" ]; -"72" [ label="fb039d7a2a9fe73b5f468eba9",shape="hexagon",style="filled",color="green" ]; -"329E" [ label="81dabfaba8",shape="box",style="filled",color="grey" ]; -"73" [ label="2ef949c4a39b",shape="hexagon",style="filled",color="green" ]; -"331E" [ label="617809d979f",shape="box",style="filled",color="grey" ]; -"74" [ label="a9497e0757b0969bde707ed5",shape="hexagon",style="filled",color="green" ]; -"333E" [ label="541ab86a2e",shape="box",style="filled",color="grey" ]; -"75" [ label="230cc6bbc66b24eae94fa03d",shape="hexagon",style="filled",color="green" ]; -"335E" [ label="",shape="box",style="filled",color="grey" ]; -"76" [ label="1d163eac141def176461c",shape="hexagon",style="filled",color="green" ]; -"337E" [ label="0acc5bb8ca4",shape="box",style="filled",color="grey" ]; -"77" [ label="32979f8cf86",shape="hexagon",style="filled",color="green" ]; -"339E" [ label="a7e89580",shape="box",style="filled",color="grey" ]; -"78" [ label="37d80ae421dba4a70730338860",shape="hexagon",style="filled",color="green" ]; -"341E" [ label="",shape="box",style="filled",color="grey" ]; -"79" [ label="fbba7215e7c13173a60206",shape="hexagon",style="filled",color="green" ]; -"343E" [ label="617809d979f",shape="box",style="filled",color="grey" ]; -"80" [ label="2dd8cc4d693415f93c0f8fc",shape="hexagon",style="filled",color="green" ]; -"345E" [ label="94da691e20e3",shape="box",style="filled",color="grey" ]; -"81" [ label="00880e6f50c765ebc1f85d3e9",shape="hexagon",style="filled",color="green" ]; -"347E" [ label="e7ef998",shape="box",style="filled",color="grey" ]; -"82" [ label="ef13d45b1277ac9a0444adb",shape="hexagon",style="filled",color="green" ]; -"349E" [ label="a7fe7",shape="box",style="filled",color="grey" ]; -"83" [ label="2573e1bf51f1b307f4640",shape="hexagon",style="filled",color="green" ]; -"351E" [ label="84e4ede82074",shape="box",style="filled",color="grey" ]; -"84" [ label="162d8039483d8",shape="hexagon",style="filled",color="green" ]; -"353E" [ label="a8e9",shape="box",style="filled",color="grey" ]; -"85" [ label="f490de272a7f6e4af346d40",shape="hexagon",style="filled",color="green" ]; -"355E" [ label="460aed10cc9",shape="box",style="filled",color="grey" ]; -"788E" [ label="391256c872",shape="box",style="filled",color="grey" ]; -"86" [ label="678bf739c344b9ad41da1",shape="hexagon",style="filled",color="green" ]; -"357E" [ label="396b16a892fe",shape="box",style="filled",color="grey" ]; -"87" [ label="876d120b38b0e88817",shape="hexagon",style="filled",color="green" ]; -"359E" [ label="e5",shape="box",style="filled",color="grey" ]; -"88" [ label="503737b64d432c60d6ac557e0e6",shape="hexagon",style="filled",color="green" ]; -"361E" [ label="9937ccba1469",shape="box",style="filled",color="grey" ]; -"89" [ label="b36e0be6f67fc25286127456",shape="hexagon",style="filled",color="green" ]; -"363E" [ label="87a7e69a72412",shape="box",style="filled",color="grey" ]; -"90" [ label="4cc20a0b7651e486",shape="hexagon",style="filled",color="green" ]; -"365E" [ label="e079d2c",shape="box",style="filled",color="grey" ]; -"91" [ label="08dade990b2282",shape="hexagon",style="filled",color="green" ]; -"367E" [ label="45827dbdd8",shape="box",style="filled",color="grey" ]; -"92" [ label="f8128d574c356631b8a9",shape="hexagon",style="filled",color="green" ]; -"369E" [ label="",shape="box",style="filled",color="grey" ]; -"93" [ label="88a4f0337c2189c3fc7b31",shape="hexagon",style="filled",color="green" ]; -"729E" [ label="da0d7bbcf30",shape="box",style="filled",color="grey" ]; -"94" [ label="1b13908a9f0763c0ae54af9062080",shape="hexagon",style="filled",color="green" ]; -"371E" [ label="8b06a67a",shape="box",style="filled",color="grey" ]; -"95" [ label="e2a5d11499b7e",shape="hexagon",style="filled",color="green" ]; -"373E" [ label="66abc181ac4",shape="box",style="filled",color="grey" ]; -"96" [ label="90cc275011c2013c61eb11",shape="hexagon",style="filled",color="green" ]; -"375E" [ label="",shape="box",style="filled",color="grey" ]; -"97" [ label="1e003bfe8fc840df0163f4c",shape="hexagon",style="filled",color="green" ]; -"747E" [ label="8983ffbc30deb364dd92c3ad85c9",shape="box",style="filled",color="grey" ]; -"98" [ label="1927c743a0d440a5a0",shape="hexagon",style="filled",color="green" ]; -"377E" [ label="b12441ecff15fa12c",shape="box",style="filled",color="grey" ]; -"99" [ label="155d892827c33ed3cae3",shape="hexagon",style="filled",color="green" ]; -"379E" [ label="71e6b",shape="box",style="filled",color="grey" ]; -"100" [ label="9f24ba80192c339a64c0",shape="hexagon",style="filled",color="green" ]; -"381E" [ label="",shape="box",style="filled",color="grey" ]; -"101" [ label="3e814305b42beb41b8c706",shape="hexagon",style="filled",color="green" ]; -"383E" [ label="1c08373",shape="box",style="filled",color="grey" ]; -"102" [ label="eccfe5ff0af70fe9fbec8b2360f90",shape="hexagon",style="filled",color="green" ]; -"385E" [ label="be8f4199f",shape="box",style="filled",color="grey" ]; -"103" [ label="8fa622d9f842c5572a545ed72982",shape="hexagon",style="filled",color="green" ]; -"387E" [ label="4dccb",shape="box",style="filled",color="grey" ]; -"104" [ label="ad9142a65f5eab78b4ca5e",shape="hexagon",style="filled",color="green" ]; -"389E" [ label="f36cce089",shape="box",style="filled",color="grey" ]; -"105" [ label="20f234fdcd0e1fc50261ce8",shape="hexagon",style="filled",color="green" ]; -"391E" [ label="67219ef689f0146b544",shape="box",style="filled",color="grey" ]; -"106" [ label="e06cc38155ff6781cf944d745",shape="hexagon",style="filled",color="green" ]; -"393E" [ label="87a7e69a72412",shape="box",style="filled",color="grey" ]; -"107" [ label="cfdf1932665dcb4cd3c",shape="hexagon",style="filled",color="green" ]; -"395E" [ label="964b86fc1bba0e",shape="box",style="filled",color="grey" ]; -"108" [ label="6d4a4a5a5af91b895272c30",shape="hexagon",style="filled",color="green" ]; -"397E" [ label="b5e86c73d1198f",shape="box",style="filled",color="grey" ]; -"109" [ label="e0ad365c2fb444358201",shape="hexagon",style="filled",color="green" ]; -"399E" [ label="bb5e89c8963",shape="box",style="filled",color="grey" ]; -"110" [ label="b07bbdc8cca5985d4c4",shape="hexagon",style="filled",color="green" ]; -"401E" [ label="50023f6f88",shape="box",style="filled",color="grey" ]; -"111" [ label="df5dba74c75b228de48c",shape="hexagon",style="filled",color="green" ]; -"403E" [ label="7e493ee44b28",shape="box",style="filled",color="grey" ]; -"112" [ label="0b8694c9ef9b27b9c3d8",shape="hexagon",style="filled",color="green" ]; -"405E" [ label="2342b759c03",shape="box",style="filled",color="grey" ]; -"113" [ label="81e20155999fa64e0ae6fd",shape="hexagon",style="filled",color="green" ]; -"407E" [ label="4280833ef80172",shape="box",style="filled",color="grey" ]; -"114" [ label="3ef07ae75d29a707",shape="hexagon",style="filled",color="green" ]; -"409E" [ label="4280833ef80172",shape="box",style="filled",color="grey" ]; -"115" [ label="4a36db80f1ab1e97",shape="hexagon",style="filled",color="green" ]; -"411E" [ label="460aed10cc9",shape="box",style="filled",color="grey" ]; -"116" [ label="16da5f1301b36df4df0f",shape="hexagon",style="filled",color="green" ]; -"413E" [ label="460aed10cc9",shape="box",style="filled",color="grey" ]; -"117" [ label="6b3f3fa236bb90592d23a",shape="hexagon",style="filled",color="green" ]; -"415E" [ label="83c397b8bf7f",shape="box",style="filled",color="grey" ]; -"118" [ label="f2a57e4d4f0cec516891e3",shape="hexagon",style="filled",color="green" ]; -"417E" [ label="bd2484",shape="box",style="filled",color="grey" ]; -"119" [ label="deb3089920548bf1ecb23f0d",shape="hexagon",style="filled",color="green" ]; -"419E" [ label="87a7e69a72412",shape="box",style="filled",color="grey" ]; -"120" [ label="bf01c8a262",shape="hexagon",style="filled",color="green" ]; -"421E" [ label="01",shape="box",style="filled",color="grey" ]; -"121" [ label="23dc3a52fed9c119610b5e8",shape="hexagon",style="filled",color="green" ]; -"423E" [ label="71e6b",shape="box",style="filled",color="grey" ]; -"122" [ label="aff7fc220edc93572bb2",shape="hexagon",style="filled",color="green" ]; -"748E" [ label="68d8993e61d8c82cd29e8d0182b0",shape="box",style="filled",color="grey" ]; -"123" [ label="78cc16f965adc5f712ea2372c6",shape="hexagon",style="filled",color="green" ]; -"425E" [ label="23ad1",shape="box",style="filled",color="grey" ]; -"124" [ label="5be631dff7b97697be7dc0a2f07f2",shape="hexagon",style="filled",color="green" ]; -"427E" [ label="",shape="box",style="filled",color="grey" ]; -"786E" [ label="421",shape="box",style="filled",color="grey" ]; -"125" [ label="48398d080dfcccced48da1980",shape="hexagon",style="filled",color="green" ]; -"431E" [ label="866808df",shape="box",style="filled",color="grey" ]; -"126" [ label="03716a2c341e5edaa31",shape="hexagon",style="filled",color="green" ]; -"433E" [ label="21407f8a6d7",shape="box",style="filled",color="grey" ]; -"127" [ label="ddfeabe456a9de5f5784",shape="hexagon",style="filled",color="green" ]; -"435E" [ label="aac615ae78",shape="box",style="filled",color="grey" ]; -"128" [ label="d550a7f392c787661aadd48",shape="hexagon",style="filled",color="green" ]; -"437E" [ label="e3aefac763",shape="box",style="filled",color="grey" ]; -"129" [ label="4c82921f4ad3f07066540",shape="hexagon",style="filled",color="green" ]; -"439E" [ label="a7fe7",shape="box",style="filled",color="grey" ]; -"130" [ label="0bc7f8f513e0e74b270",shape="hexagon",style="filled",color="green" ]; -"441E" [ label="a849f9d352e",shape="box",style="filled",color="grey" ]; -"131" [ label="3b1563a23eb9",shape="hexagon",style="filled",color="green" ]; -"443E" [ label="a8e9",shape="box",style="filled",color="grey" ]; -"132" [ label="be233fafa38d931d894",shape="hexagon",style="filled",color="green" ]; -"445E" [ label="a849f9d352e",shape="box",style="filled",color="grey" ]; -"133" [ label="f906dc5244ee6a371f8",shape="hexagon",style="filled",color="green" ]; -"749E" [ label="4c865eec228e41e7f4e5fc68a9a6",shape="box",style="filled",color="grey" ]; -"134" [ label="e7a887d88c2318beba51",shape="hexagon",style="filled",color="green" ]; -"447E" [ label="9d8988c0945d6",shape="box",style="filled",color="grey" ]; -"135" [ label="be6b73bd46a7a5183e8c91a",shape="hexagon",style="filled",color="green" ]; -"449E" [ label="ee91c97828",shape="box",style="filled",color="grey" ]; -"769E" [ label="444189d179b5db71fe",shape="box",style="filled",color="grey" ]; -"770E" [ label="1e1fbbe14ac24e0518",shape="box",style="filled",color="grey" ]; -"136" [ label="644f112bb0aa452ee7040a",shape="hexagon",style="filled",color="green" ]; -"451E" [ label="52f247fc3b",shape="box",style="filled",color="grey" ]; -"137" [ label="010957669f3770aac",shape="hexagon",style="filled",color="green" ]; -"453E" [ label="78",shape="box",style="filled",color="grey" ]; -"138" [ label="0a185946ee443342b07d8e1",shape="hexagon",style="filled",color="green" ]; -"455E" [ label="87a7e69a72412",shape="box",style="filled",color="grey" ]; -"139" [ label="f66fe4df3d189e69ce10c9c",shape="hexagon",style="filled",color="green" ]; -"457E" [ label="21407f8a6d7",shape="box",style="filled",color="grey" ]; -"140" [ label="247e407f45b353f8",shape="hexagon",style="filled",color="green" ]; -"459E" [ label="",shape="box",style="filled",color="grey" ]; -"141" [ label="84907547f36d0ff7",shape="hexagon",style="filled",color="green" ]; -"461E" [ label="e920b915087",shape="box",style="filled",color="grey" ]; -"142" [ label="805004328dad9d315d",shape="hexagon",style="filled",color="green" ]; -"463E" [ label="4280833ef80172",shape="box",style="filled",color="grey" ]; -"143" [ label="4f0cbd3fbf0cb1e8c",shape="hexagon",style="filled",color="green" ]; -"465E" [ label="403126",shape="box",style="filled",color="grey" ]; -"144" [ label="4869e993f2bb10f",shape="hexagon",style="filled",color="green" ]; -"467E" [ label="ff",shape="box",style="filled",color="grey" ]; -"145" [ label="665b76844ff78fc2cf66ca2",shape="hexagon",style="filled",color="green" ]; -"469E" [ label="af0268dddd",shape="box",style="filled",color="grey" ]; -"146" [ label="3f16509139c7dad5163b91799",shape="hexagon",style="filled",color="green" ]; -"471E" [ label="3089106e3b",shape="box",style="filled",color="grey" ]; -"147" [ label="01db23a60422ba93a68611cc0",shape="hexagon",style="filled",color="green" ]; -"473E" [ label="",shape="box",style="filled",color="grey" ]; -"148" [ label="46125fcc583c0f494a3a1d3",shape="hexagon",style="filled",color="green" ]; -"475E" [ label="db6c4213a717bc",shape="box",style="filled",color="grey" ]; -"149" [ label="731857fe189fb398e80a0594",shape="hexagon",style="filled",color="green" ]; -"477E" [ label="3089106e3b",shape="box",style="filled",color="grey" ]; -"150" [ label="6fb7a84e370ef70feac5cb",shape="hexagon",style="filled",color="green" ]; -"479E" [ label="396b16a892fe",shape="box",style="filled",color="grey" ]; -"151" [ label="e343cea291b79a2ed4e",shape="hexagon",style="filled",color="green" ]; -"481E" [ label="88d8b220746882d",shape="box",style="filled",color="grey" ]; -"152" [ label="5f2592b20f13356b7fc8b42",shape="hexagon",style="filled",color="green" ]; -"483E" [ label="",shape="box",style="filled",color="grey" ]; -"153" [ label="275a0407e33e9b8aa9cdd051",shape="hexagon",style="filled",color="green" ]; -"731E" [ label="",shape="box",style="filled",color="grey" ]; -"154" [ label="011d119375cf494ca2fa8d59",shape="hexagon",style="filled",color="green" ]; -"750E" [ label="8983ffbc30deb364dd92c3ad85c9",shape="box",style="filled",color="grey" ]; -"155" [ label="173fd00917644f0f1f3e3",shape="hexagon",style="filled",color="green" ]; -"485E" [ label="0acc5bb8ca4",shape="box",style="filled",color="grey" ]; -"156" [ label="c72df69b40156a3254",shape="hexagon",style="filled",color="green" ]; -"487E" [ label="fff03efcd",shape="box",style="filled",color="grey" ]; -"157" [ label="6c632ad9c42228bb337",shape="hexagon",style="filled",color="green" ]; -"489E" [ label="eb8",shape="box",style="filled",color="grey" ]; -"158" [ label="bbb13dc62adf2de2a42b6",shape="hexagon",style="filled",color="green" ]; -"491E" [ label="69ce90c9b2",shape="box",style="filled",color="grey" ]; -"159" [ label="6282bc21f6",shape="hexagon",style="filled",color="green" ]; -"495E" [ label="de34214b4c258c9333ec3",shape="box",style="filled",color="grey" ]; -"160" [ label="71cf45dd4e91bcca945137b40e",shape="hexagon",style="filled",color="green" ]; -"499E" [ label="65fd8495",shape="box",style="filled",color="grey" ]; -"161" [ label="a3b6df27179b175c88fa4c9cf9f",shape="hexagon",style="filled",color="green" ]; -"501E" [ label="6577",shape="box",style="filled",color="grey" ]; -"162" [ label="284f14a259991806654e74",shape="hexagon",style="filled",color="green" ]; -"503E" [ label="4280833ef80172",shape="box",style="filled",color="grey" ]; -"163" [ label="a7c99ccf6ddf6f5ebbe",shape="hexagon",style="filled",color="green" ]; -"505E" [ label="c4fd8",shape="box",style="filled",color="grey" ]; -"164" [ label="c32d2697e8",shape="hexagon",style="filled",color="green" ]; -"507E" [ label="52f247fc3b",shape="box",style="filled",color="grey" ]; -"165" [ label="d12bd75c24b110ef90cdd35d3",shape="hexagon",style="filled",color="green" ]; -"509E" [ label="0668",shape="box",style="filled",color="grey" ]; -"166" [ label="1c07453d584f3d14b1876fdb",shape="hexagon",style="filled",color="green" ]; -"511E" [ label="460aed10cc9",shape="box",style="filled",color="grey" ]; -"167" [ label="f713a8b311ffa05ce3683ad10",shape="hexagon",style="filled",color="green" ]; -"513E" [ label="30d6138b63eb",shape="box",style="filled",color="grey" ]; -"168" [ label="3cdc90c57243373efaba65a",shape="hexagon",style="filled",color="green" ]; -"515E" [ label="fa2afbd869",shape="box",style="filled",color="grey" ]; -"169" [ label="e3bdbca0e2256fffa8a59018",shape="hexagon",style="filled",color="green" ]; -"517E" [ label="81dabfaba8",shape="box",style="filled",color="grey" ]; -"170" [ label="75ba8d840070942eb4e737849",shape="hexagon",style="filled",color="green" ]; -"519E" [ label="81dabfaba8",shape="box",style="filled",color="grey" ]; -"171" [ label="fbdc3ca37406f66635c8b226e",shape="hexagon",style="filled",color="green" ]; -"521E" [ label="8cbcf5cb5",shape="box",style="filled",color="grey" ]; -"172" [ label="40b49a5a9bb256c7a3286e56",shape="hexagon",style="filled",color="green" ]; -"523E" [ label="f72564578be",shape="box",style="filled",color="grey" ]; -"173" [ label="3b2f08d52e4bca3f9ca7bbbd6",shape="hexagon",style="filled",color="green" ]; -"525E" [ label="81dabfaba8",shape="box",style="filled",color="grey" ]; -"174" [ label="4a38abc630c82b0c48dfbf5271",shape="hexagon",style="filled",color="green" ]; -"527E" [ label="f0bd1521",shape="box",style="filled",color="grey" ]; -"175" [ label="2d7b7fb6c9ad6821752651f7",shape="hexagon",style="filled",color="green" ]; -"529E" [ label="47b2da3d",shape="box",style="filled",color="grey" ]; -"176" [ label="910b00285f11bb90d0a15641",shape="hexagon",style="filled",color="green" ]; -"531E" [ label="81dabfaba8",shape="box",style="filled",color="grey" ]; -"177" [ label="24431c3eb075102f07cc2c1be",shape="hexagon",style="filled",color="green" ]; -"533E" [ label="",shape="box",style="filled",color="grey" ]; -"178" [ label="07f8a9e55a16beddb3c9153b0",shape="hexagon",style="filled",color="green" ]; -"535E" [ label="81dabfaba8",shape="box",style="filled",color="grey" ]; -"179" [ label="c1c30f30d40c4f1f84924622f",shape="hexagon",style="filled",color="green" ]; -"537E" [ label="c5d5be3942",shape="box",style="filled",color="grey" ]; -"180" [ label="86276bb1e23f2c7ffcbe82a0",shape="hexagon",style="filled",color="green" ]; -"539E" [ label="0f940646",shape="box",style="filled",color="grey" ]; -"181" [ label="f78e145a127014eb43345a0c",shape="hexagon",style="filled",color="green" ]; -"541E" [ label="d370c12dbc",shape="box",style="filled",color="grey" ]; -"182" [ label="a27037332d9fa5c43bcfe94c0",shape="hexagon",style="filled",color="green" ]; -"543E" [ label="80874aa8",shape="box",style="filled",color="grey" ]; -"183" [ label="c29ce10bb8d19b498355aa04",shape="hexagon",style="filled",color="green" ]; -"545E" [ label="1c08373",shape="box",style="filled",color="grey" ]; -"184" [ label="4f8c642b53c349c687534bda35db",shape="hexagon",style="filled",color="green" ]; -"547E" [ label="46969c4",shape="box",style="filled",color="grey" ]; -"185" [ label="30cc206b1878485",shape="hexagon",style="filled",color="green" ]; -"549E" [ label="23ad1",shape="box",style="filled",color="grey" ]; -"186" [ label="5d69639a5e3bdd3d",shape="hexagon",style="filled",color="green" ]; -"551E" [ label="6139fa6adc88d",shape="box",style="filled",color="grey" ]; -"187" [ label="b656f0ed2202b8e46eb",shape="hexagon",style="filled",color="green" ]; -"553E" [ label="f6e6236b48bc3",shape="box",style="filled",color="grey" ]; -"188" [ label="3b566eaa70ed401479d43a9",shape="hexagon",style="filled",color="green" ]; -"555E" [ label="4c6c8c",shape="box",style="filled",color="grey" ]; -"189" [ label="d6125ef42bd9958",shape="hexagon",style="filled",color="green" ]; -"557E" [ label="4c6c8c",shape="box",style="filled",color="grey" ]; -"190" [ label="dd12f26f8d9bb55",shape="hexagon",style="filled",color="green" ]; -"559E" [ label="83c397b8bf7f",shape="box",style="filled",color="grey" ]; -"191" [ label="ea890ccca2f7c2107351",shape="hexagon",style="filled",color="green" ]; -"561E" [ label="eb8",shape="box",style="filled",color="grey" ]; -"192" [ label="84e4f1c582427a98d7b",shape="hexagon",style="filled",color="green" ]; -"563E" [ label="eb8",shape="box",style="filled",color="grey" ]; -"193" [ label="d378760b814eaecb6efe636e0efc4",shape="hexagon",style="filled",color="green" ]; -"565E" [ label="81bcc35f82891",shape="box",style="filled",color="grey" ]; -"194" [ label="f722890f70a32dce3baff371a",shape="hexagon",style="filled",color="green" ]; -"567E" [ label="84e4ede82074",shape="box",style="filled",color="grey" ]; -"195" [ label="666f11bb45c3a8dcf26e1ed79",shape="hexagon",style="filled",color="green" ]; -"569E" [ label="c90f755c8b6612d",shape="box",style="filled",color="grey" ]; -"196" [ label="91ecbe29a71f00ed5a3",shape="hexagon",style="filled",color="green" ]; -"571E" [ label="0a963fef9",shape="box",style="filled",color="grey" ]; -"197" [ label="30c3f3bf8463d3843dc57d8e98",shape="hexagon",style="filled",color="green" ]; -"573E" [ label="3089106e3b",shape="box",style="filled",color="grey" ]; -"198" [ label="8ea965ab6ee8dedb6c3333e9",shape="hexagon",style="filled",color="green" ]; -"575E" [ label="84e4ede82074",shape="box",style="filled",color="grey" ]; -"199" [ label="3eecb304bab2136a76deda",shape="hexagon",style="filled",color="green" ]; -"577E" [ label="8df",shape="box",style="filled",color="grey" ]; -"200" [ label="d886e4b76537a99bc71b8a9331c94",shape="hexagon",style="filled",color="green" ]; -"579E" [ label="1172dca23",shape="box",style="filled",color="grey" ]; -"201" [ label="dcc5d5e9d6c4e",shape="hexagon",style="filled",color="green" ]; -"581E" [ label="a8e9",shape="box",style="filled",color="grey" ]; -"202" [ label="8292af691429f8d9ed481ff71ffd",shape="hexagon",style="filled",color="green" ]; -"583E" [ label="212af4",shape="box",style="filled",color="grey" ]; -"203" [ label="12fcb26b3de00ef98719c2ca",shape="hexagon",style="filled",color="green" ]; -"585E" [ label="",shape="box",style="filled",color="grey" ]; -"204" [ label="a141a557a60912051f3c135",shape="hexagon",style="filled",color="green" ]; -"587E" [ label="",shape="box",style="filled",color="grey" ]; -"205" [ label="64eeeddfc34489ff396",shape="hexagon",style="filled",color="green" ]; -"751E" [ label="8983ffbc30deb364dd92c3ad85c9",shape="box",style="filled",color="grey" ]; -"206" [ label="f5d636e14a6cd716362158d",shape="hexagon",style="filled",color="green" ]; -"589E" [ label="32c958c9997",shape="box",style="filled",color="grey" ]; -"207" [ label="84e4978afc069d5a1aecbf2b",shape="hexagon",style="filled",color="green" ]; -"593E" [ label="56caa96d171a9ac2da7c",shape="box",style="filled",color="grey" ]; -"208" [ label="52a6c2063bccd83110c32",shape="hexagon",style="filled",color="green" ]; -"597E" [ label="",shape="box",style="filled",color="grey" ]; -"209" [ label="46f754ea06f070dbc023e571a876",shape="hexagon",style="filled",color="green" ]; -"599E" [ label="ffccaa9e3",shape="box",style="filled",color="grey" ]; -"210" [ label="c10cb9baf4dcb43e24",shape="hexagon",style="filled",color="green" ]; -"601E" [ label="ac6e99186",shape="box",style="filled",color="grey" ]; -"211" [ label="3dafe1619016463f521f",shape="hexagon",style="filled",color="green" ]; -"603E" [ label="b9",shape="box",style="filled",color="grey" ]; -"212" [ label="0f5db6ce12751ddcc64e",shape="hexagon",style="filled",color="green" ]; -"605E" [ label="bb828f1a326",shape="box",style="filled",color="grey" ]; -"213" [ label="34c8c8dc0f6e41c7e7b2",shape="hexagon",style="filled",color="green" ]; -"607E" [ label="2832ed5cea6",shape="box",style="filled",color="grey" ]; -"214" [ label="0a49c95f107c0aa57c9b5748",shape="hexagon",style="filled",color="green" ]; -"609E" [ label="",shape="box",style="filled",color="grey" ]; -"215" [ label="3b4fdad8e0429d112",shape="hexagon",style="filled",color="green" ]; -"611E" [ label="cab04b7c14a",shape="box",style="filled",color="grey" ]; -"216" [ label="17dafa5ebaafd48440e3",shape="hexagon",style="filled",color="green" ]; -"613E" [ label="b5f038f79a3",shape="box",style="filled",color="grey" ]; -"217" [ label="f4c69e5e212f89348122e8",shape="hexagon",style="filled",color="green" ]; -"615E" [ label="396b16a892fe",shape="box",style="filled",color="grey" ]; -"218" [ label="4f2e020854dfacce46a12",shape="hexagon",style="filled",color="green" ]; -"617E" [ label="e079d2c",shape="box",style="filled",color="grey" ]; -"219" [ label="6448451ac2ceade90715378b",shape="hexagon",style="filled",color="green" ]; -"619E" [ label="",shape="box",style="filled",color="grey" ]; -"220" [ label="7d7b14baa649330",shape="hexagon",style="filled",color="green" ]; -"621E" [ label="77d145b32328880440c7a",shape="box",style="filled",color="grey" ]; -"221" [ label="d7c27cc6f7b02a31eb64d",shape="hexagon",style="filled",color="green" ]; -"623E" [ label="87a7e69a72412",shape="box",style="filled",color="grey" ]; -"222" [ label="8f5a69ece1",shape="hexagon",style="filled",color="green" ]; -"752E" [ label="eb9cf6456613d4cd06f7c0894bd6",shape="box",style="filled",color="grey" ]; -"223" [ label="eccf7c722ddf",shape="hexagon",style="filled",color="green" ]; -"625E" [ label="df61d5f5fc",shape="box",style="filled",color="grey" ]; -"224" [ label="86633c26be93ada8b",shape="hexagon",style="filled",color="green" ]; -"627E" [ label="08500a6044",shape="box",style="filled",color="grey" ]; -"225" [ label="3f9ddf1ffbc0d38b",shape="hexagon",style="filled",color="green" ]; -"629E" [ label="07",shape="box",style="filled",color="grey" ]; -"226" [ label="e33792703",shape="hexagon",style="filled",color="green" ]; -"631E" [ label="6a8f5bafb1",shape="box",style="filled",color="grey" ]; -"227" [ label="293a225dc56dd1e0564e6bb",shape="hexagon",style="filled",color="green" ]; -"633E" [ label="e3aefac763",shape="box",style="filled",color="grey" ]; -"228" [ label="57c77c341f94afddef07e6",shape="hexagon",style="filled",color="green" ]; -"635E" [ label="5e80f85274",shape="box",style="filled",color="grey" ]; -"229" [ label="3bbfc7bfdbbb1ba1bfad7517",shape="hexagon",style="filled",color="green" ]; -"637E" [ label="",shape="box",style="filled",color="grey" ]; -"230" [ label="a7167d5eb5408b3839903",shape="hexagon",style="filled",color="green" ]; -"639E" [ label="8c8b5bde6",shape="box",style="filled",color="grey" ]; -"231" [ label="34d7bb6af4fcd8d630de72500c8",shape="hexagon",style="filled",color="green" ]; -"641E" [ label="32fe7eee5283",shape="box",style="filled",color="grey" ]; -"232" [ label="8e69341faa4489",shape="hexagon",style="filled",color="green" ]; -"643E" [ label="cab04b7c14a",shape="box",style="filled",color="grey" ]; -"233" [ label="459236f07c73814faf5",shape="hexagon",style="filled",color="green" ]; -"645E" [ label="18083a711d",shape="box",style="filled",color="grey" ]; -"234" [ label="c71aa521578164debd0c5",shape="hexagon",style="filled",color="green" ]; -"647E" [ label="78",shape="box",style="filled",color="grey" ]; -"235" [ label="a5520019b8a73bc141b5fd416a",shape="hexagon",style="filled",color="green" ]; -"649E" [ label="3219b6b71443",shape="box",style="filled",color="grey" ]; -"236" [ label="6c89dc59ee7aaebbbd6bb64",shape="hexagon",style="filled",color="green" ]; -"651E" [ label="8c8b5bde6",shape="box",style="filled",color="grey" ]; -"237" [ label="a9a36ef02f",shape="hexagon",style="filled",color="green" ]; -"653E" [ label="6a80cbe",shape="box",style="filled",color="grey" ]; -"238" [ label="3db761b596844f133c",shape="hexagon",style="filled",color="green" ]; -"655E" [ label="e920b915087",shape="box",style="filled",color="grey" ]; -"239" [ label="383db224d7508ef072bea21d0",shape="hexagon",style="filled",color="green" ]; -"657E" [ label="975fedfb64df",shape="box",style="filled",color="grey" ]; -"240" [ label="8e307415fb435445ced7",shape="hexagon",style="filled",color="green" ]; -"659E" [ label="21dff35936370ae5f",shape="box",style="filled",color="grey" ]; -"241" [ label="aff6d7896e0e142bbc3e78",shape="hexagon",style="filled",color="green" ]; -"661E" [ label="d2498",shape="box",style="filled",color="grey" ]; -"242" [ label="e153c6e676c7369b285b4e9033a",shape="hexagon",style="filled",color="green" ]; -"663E" [ label="",shape="box",style="filled",color="grey" ]; -"243" [ label="f3c4311de0e931f08c232b",shape="hexagon",style="filled",color="green" ]; -"665E" [ label="a849f9d352e",shape="box",style="filled",color="grey" ]; -"244" [ label="0c72a426929600000f5",shape="hexagon",style="filled",color="green" ]; -"667E" [ label="45827dbdd8",shape="box",style="filled",color="grey" ]; -"245" [ label="38fa61352f5086d2cb51",shape="hexagon",style="filled",color="green" ]; -"669E" [ label="af0268dddd",shape="box",style="filled",color="grey" ]; -"246" [ label="ad1dd724f1c3e",shape="hexagon",style="filled",color="green" ]; -"671E" [ label="cab04b7c14a",shape="box",style="filled",color="grey" ]; -"247" [ label="11bb8ed3ae227d3acefc",shape="hexagon",style="filled",color="green" ]; -"673E" [ label="eb8",shape="box",style="filled",color="grey" ]; -"248" [ label="f2c7b3bb4d44f977d0ab8a42351",shape="hexagon",style="filled",color="green" ]; -"675E" [ label="",shape="box",style="filled",color="grey" ]; -"249" [ label="51e045ca826077ae765",shape="hexagon",style="filled",color="green" ]; -"679E" [ label="e842",shape="box",style="filled",color="grey" ]; -"250" [ label="aa0adc8978020629574",shape="hexagon",style="filled",color="green" ]; -"753E" [ label="68d8993e61d8c82cd29e8d0182b0",shape="box",style="filled",color="grey" ]; -"251" [ label="3b6b2c549de670d7bf5fc0ee",shape="hexagon",style="filled",color="green" ]; -"681E" [ label="",shape="box",style="filled",color="grey" ]; -"252" [ label="5eea496cc301b2a9721",shape="hexagon",style="filled",color="green" ]; -"683E" [ label="",shape="box",style="filled",color="grey" ]; -"253" [ label="bfc6564cbdeeffac00a141",shape="hexagon",style="filled",color="green" ]; -"685E" [ label="3b0a8a1c2e5050bd",shape="box",style="filled",color="grey" ]; -"254" [ label="c360aaeb167487c9578a8f",shape="hexagon",style="filled",color="green" ]; -"687E" [ label="d",shape="box",style="filled",color="grey" ]; -"255" [ label="39d025b265f9790490781cb201",shape="hexagon",style="filled",color="green" ]; -"689E" [ label="5e80f85274",shape="box",style="filled",color="grey" ]; -"256" [ label="b4ce21e0a3df1d097277d6",shape="hexagon",style="filled",color="green" ]; -"691E" [ label="a849f9d352e",shape="box",style="filled",color="grey" ]; -"257" [ label="8bdb6a91c6dee925b557c705b3",shape="hexagon",style="filled",color="green" ]; -"693E" [ label="53069e384a2",shape="box",style="filled",color="grey" ]; -"258" [ label="ac487676a04e4",shape="hexagon",style="filled",color="green" ]; -"695E" [ label="a8e9",shape="box",style="filled",color="grey" ]; -"259" [ label="18115fa32ff1cb99",shape="hexagon",style="filled",color="green" ]; -"697E" [ label="45827dbdd8",shape="box",style="filled",color="grey" ]; -"260" [ label="b7b899dc8bc6a32b28cb098fa16",shape="hexagon",style="filled",color="green" ]; -"699E" [ label="32fe7eee5283",shape="box",style="filled",color="grey" ]; -"261" [ label="b69e426d974e1907e88",shape="hexagon",style="filled",color="green" ]; -"703E" [ label="e842",shape="box",style="filled",color="grey" ]; -"262" [ label="60d0128bdb61ae40e98638bd1391",shape="hexagon",style="filled",color="green" ]; -"705E" [ label="23ad1",shape="box",style="filled",color="grey" ]; -"264" [ label="8fb60d769e4c387",shape="hexagon",style="filled",color="green" ]; -"709E" [ label="6a8f5bafb1",shape="box",style="filled",color="grey" ]; -"265" [ label="e1fa7f549e5a0893bb42da5",shape="hexagon",style="filled",color="green" ]; -"711E" [ label="6a3c6921b0aeceda3",shape="box",style="filled",color="grey" ]; -"266" [ label="a77622f2ff77ffeeb2",shape="hexagon",style="filled",color="green" ]; -"713E" [ label="21dff35936370ae5f",shape="box",style="filled",color="grey" ]; -"267" [ label="30d9d350943c0e3ff7594b50",shape="hexagon",style="filled",color="green" ]; -"715E" [ label="b5e86c73d1198f",shape="box",style="filled",color="grey" ]; -"268" [ label="89ced1a7906d58d687d5a04",shape="hexagon",style="filled",color="green" ]; -"717E" [ label="c0174bbe7ae8",shape="box",style="filled",color="grey" ]; -"269" [ label="1de26f6b12b0d292f94184",shape="hexagon",style="filled",color="green" ]; -"719E" [ label="65fd8495",shape="box",style="filled",color="grey" ]; -"270" [ label="26fa7360ab81be9d4434a",shape="hexagon",style="filled",color="green" ]; -"721E" [ label="af0268dddd",shape="box",style="filled",color="grey" ]; -"272" [ label="4a9d79c960b8d33e39251e5f66",shape="hexagon" ]; -"34E" [ label="330342f283ef2",shape="box",style="filled",color="grey" ]; -"252E" [ label="3dafb9a29c00",shape="box",style="filled",color="grey" ]; -"436E" [ label="8d5137b16a",shape="box",style="filled",color="grey" ]; -"274" [ label="10a7d61c201c67a5e78542807cd",shape="hexagon" ]; -"59E" [ label="ef6361295eba07",shape="box",style="filled",color="grey" ]; -"500E" [ label="a8f0fe2eb7bc1471",shape="box",style="filled",color="grey" ]; -"720E" [ label="cfff3acd8e9d",shape="box",style="filled",color="grey" ]; -"275" [ label="f8ff39eab120851f143bf19",shape="hexagon" ]; -"98E" [ label="4e3cfd27a",shape="box",style="filled",color="grey" ]; -"278" [ label="4995c71223c9f6067324d387a2",shape="hexagon" ]; -"35E" [ label="57948adb5dead",shape="box",style="filled",color="grey" ]; -"488E" [ label="a738ba39",shape="box",style="filled",color="grey" ]; -"598E" [ label="be7d637c50c",shape="box",style="filled",color="grey" ]; -"604E" [ label="8d52f183ec",shape="box",style="filled",color="grey" ]; -"628E" [ label="cef12b6",shape="box",style="filled",color="grey" ]; -"279" [ label="b9ae94e6935503603341ecf4",shape="hexagon" ]; -"99E" [ label="14a3c17f3d",shape="box",style="filled",color="grey" ]; -"280" [ label="fd28c194a46fde909b019c52f",shape="hexagon" ]; -"242E" [ label="9fe65061641",shape="box",style="filled",color="grey" ]; -"270E" [ label="34d06d1ed6",shape="box",style="filled",color="grey" ]; -"272E" [ label="713db1c1",shape="box",style="filled",color="grey" ]; -"284E" [ label="90dccb18c0",shape="box",style="filled",color="grey" ]; -"286E" [ label="e17fea65",shape="box",style="filled",color="grey" ]; -"288E" [ label="aebb7b91b",shape="box",style="filled",color="grey" ]; -"586E" [ label="4348f3abcb7716",shape="box",style="filled",color="grey" ]; -"763E" [ label="b082f7a5ff",shape="box",style="filled",color="grey" ]; -"281" [ label="7c0ab977f5a3c4ab6d625f5033",shape="hexagon" ]; -"45E" [ label="20949455f573f",shape="box",style="filled",color="grey" ]; -"470E" [ label="c338481d79773",shape="box",style="filled",color="grey" ]; -"670E" [ label="e1d01ef89f",shape="box",style="filled",color="grey" ]; -"722E" [ label="c4507c22d19",shape="box",style="filled",color="grey" ]; -"282" [ label="7e0b91491c8c8566892cd9a0889",shape="hexagon" ]; -"103E" [ label="de9efa12873949",shape="box",style="filled",color="grey" ]; -"283" [ label="d58478d9c273ad4f4b2e091324",shape="hexagon" ]; -"165E" [ label="1a220eb692c",shape="box",style="filled",color="grey" ]; -"284" [ label="8be0efdd94a6383e87fbfded4f",shape="hexagon" ]; -"39E" [ label="c8a6c26d4fd9f",shape="box",style="filled",color="grey" ]; -"224E" [ label="8cbae42a3900",shape="box",style="filled",color="grey" ]; -"268E" [ label="fc73",shape="box",style="filled",color="grey" ]; -"632E" [ label="",shape="box",style="filled",color="grey" ]; -"710E" [ label="102f1",shape="box",style="filled",color="grey" ]; -"285" [ label="3aeb78ea51020a44f2d2615436dae",shape="hexagon" ]; -"53E" [ label="96deede0c6b44119",shape="box",style="filled",color="grey" ]; -"286" [ label="6bbd5b422edb8e358dcc20eecf9",shape="hexagon" ]; -"38E" [ label="4f2de229621272",shape="box",style="filled",color="grey" ]; -"166E" [ label="d495de0b35f6",shape="box",style="filled",color="grey" ]; -"288" [ label="4856000a6802ddfc121ef40432297",shape="hexagon",style="filled",color="#ff0000" ]; -"40E" [ label="04904a458422a5b9",shape="box",style="filled",color="grey" ]; -"218E" [ label="8cd4d",shape="box",style="filled",color="grey" ]; -"244E" [ label="",shape="box",style="filled",color="grey" ]; -"246E" [ label="9be88247",shape="box",style="filled",color="grey" ]; -"258E" [ label="4f05b",shape="box",style="filled",color="grey" ]; -"290E" [ label="8b092",shape="box",style="filled",color="grey" ]; -"292E" [ label="c3bbf4",shape="box",style="filled",color="grey" ]; -"308E" [ label="6331b3f",shape="box",style="filled",color="grey" ]; -"318E" [ label="",shape="box",style="filled",color="grey" ]; -"388E" [ label="3711",shape="box",style="filled",color="grey" ]; -"472E" [ label="c5255d",shape="box",style="filled",color="grey" ]; -"478E" [ label="5c6a2",shape="box",style="filled",color="grey" ]; -"566E" [ label="51ec95518d1b3",shape="box",style="filled",color="grey" ]; -"570E" [ label="82a65ed4b69",shape="box",style="filled",color="grey" ]; -"574E" [ label="05fed5e",shape="box",style="filled",color="grey" ]; -"608E" [ label="bf",shape="box",style="filled",color="grey" ]; -"614E" [ label="ce",shape="box",style="filled",color="grey" ]; -"658E" [ label="1a830d9f",shape="box",style="filled",color="grey" ]; -"664E" [ label="",shape="box",style="filled",color="grey" ]; -"682E" [ label="",shape="box",style="filled",color="grey" ]; -"289" [ label="2e31175cbd52fcd08360fe86d20",shape="hexagon" ]; -"41E" [ label="4ad5d68f07981a",shape="box",style="filled",color="grey" ]; -"636E" [ label="51192117f9b4",shape="box",style="filled",color="grey" ]; -"642E" [ label="6bf214d9e7fa5f2df",shape="box",style="filled",color="grey" ]; -"690E" [ label="558d8534f92fddfe",shape="box",style="filled",color="grey" ]; -"700E" [ label="6819fd5a6cdd280dd",shape="box",style="filled",color="grey" ]; -"290" [ label="3aa0ce5efcf79bc3ecced1886e89",shape="hexagon" ]; -"56E" [ label="ff9d64ddf49a20f",shape="box",style="filled",color="grey" ]; -"264E" [ label="6c93f24516f01d",shape="box",style="filled",color="grey" ]; -"510E" [ label="32b98f11f3d01d6",shape="box",style="filled",color="grey" ]; -"718E" [ label="8f7c875500073",shape="box",style="filled",color="grey" ]; -"291" [ label="7c1767485953d9c2",shape="hexagon" ]; -"66E" [ label="086",shape="box",style="filled",color="grey" ]; -"76E" [ label="",shape="box",style="filled",color="grey" ]; -"610E" [ label="450d3a2d49cbfd",shape="box",style="filled",color="grey" ]; -"292" [ label="9c1305d59c37e9be9f13d7d049c",shape="hexagon" ]; -"73E" [ label="817",shape="box",style="filled",color="grey" ]; -"293" [ label="efe092824916a5637ee35d439589",shape="hexagon" ]; -"49E" [ label="",shape="box",style="filled",color="grey" ]; -"214E" [ label="",shape="box",style="filled",color="grey" ]; -"216E" [ label="",shape="box",style="filled",color="grey" ]; -"236E" [ label="",shape="box",style="filled",color="grey" ]; -"278E" [ label="",shape="box",style="filled",color="grey" ]; -"358E" [ label="",shape="box",style="filled",color="grey" ]; -"398E" [ label="",shape="box",style="filled",color="grey" ]; -"400E" [ label="",shape="box",style="filled",color="grey" ]; -"402E" [ label="",shape="box",style="filled",color="grey" ]; -"404E" [ label="",shape="box",style="filled",color="grey" ]; -"406E" [ label="",shape="box",style="filled",color="grey" ]; -"408E" [ label="",shape="box",style="filled",color="grey" ]; -"412E" [ label="",shape="box",style="filled",color="grey" ]; -"438E" [ label="",shape="box",style="filled",color="grey" ]; -"448E" [ label="",shape="box",style="filled",color="grey" ]; -"476E" [ label="",shape="box",style="filled",color="grey" ]; -"504E" [ label="",shape="box",style="filled",color="grey" ]; -"552E" [ label="",shape="box",style="filled",color="grey" ]; -"634E" [ label="",shape="box",style="filled",color="grey" ]; -"768E" [ label="",shape="box",style="filled",color="grey" ]; -"295" [ label="70815f0352b43dc1562133ab6eb",shape="hexagon",style="filled",color="#A52A2A" ]; -"44E" [ label="ef2d4636934472",shape="box",style="filled",color="grey" ]; -"92E" [ label="22bd92e302816",shape="box",style="filled",color="grey" ]; -"250E" [ label="74e86",shape="box",style="filled",color="grey" ]; -"316E" [ label="",shape="box",style="filled",color="grey" ]; -"380E" [ label="",shape="box",style="filled",color="grey" ]; -"424E" [ label="c",shape="box",style="filled",color="grey" ]; -"442E" [ label="a5a",shape="box",style="filled",color="grey" ]; -"446E" [ label="bce",shape="box",style="filled",color="grey" ]; -"454E" [ label="",shape="box",style="filled",color="grey" ]; -"460E" [ label="",shape="box",style="filled",color="grey" ]; -"462E" [ label="",shape="box",style="filled",color="grey" ]; -"648E" [ label="",shape="box",style="filled",color="grey" ]; -"656E" [ label="e9",shape="box",style="filled",color="grey" ]; -"666E" [ label="b701e7",shape="box",style="filled",color="grey" ]; -"692E" [ label="f2e7cc",shape="box",style="filled",color="grey" ]; -"712E" [ label="8a9eb2806b0aa",shape="box",style="filled",color="grey" ]; -"296" [ label="e287d497450664a4c0f4efc338",shape="hexagon",style="filled",color="#ff0000" ]; -"47E" [ label="06eff1db45cdf",shape="box",style="filled",color="grey" ]; -"330E" [ label="c0f34a600",shape="box",style="filled",color="grey" ]; -"514E" [ label="bd7aca295ca",shape="box",style="filled",color="grey" ]; -"516E" [ label="0da9135",shape="box",style="filled",color="grey" ]; -"518E" [ label="fe821bce",shape="box",style="filled",color="grey" ]; -"520E" [ label="e64f22a31",shape="box",style="filled",color="grey" ]; -"522E" [ label="46e412a3",shape="box",style="filled",color="grey" ]; -"526E" [ label="99da1f8a5",shape="box",style="filled",color="grey" ]; -"528E" [ label="0f167280",shape="box",style="filled",color="grey" ]; -"530E" [ label="82d201",shape="box",style="filled",color="grey" ]; -"532E" [ label="1d529eb4",shape="box",style="filled",color="grey" ]; -"534E" [ label="",shape="box",style="filled",color="grey" ]; -"536E" [ label="bf141dbce",shape="box",style="filled",color="grey" ]; -"538E" [ label="e3fd0c7b3",shape="box",style="filled",color="grey" ]; -"540E" [ label="c96cb3",shape="box",style="filled",color="grey" ]; -"542E" [ label="0fabab47",shape="box",style="filled",color="grey" ]; -"544E" [ label="1b82200",shape="box",style="filled",color="grey" ]; -"297" [ label="2ced414a91575a48f2dd29a",shape="hexagon" ]; -"46E" [ label="85221d5e9e",shape="box",style="filled",color="grey" ]; -"93E" [ label="97a7eea3f",shape="box",style="filled",color="grey" ]; -"206E" [ label="4d22e1",shape="box",style="filled",color="grey" ]; -"426E" [ label="e65185ca",shape="box",style="filled",color="grey" ]; -"550E" [ label="",shape="box",style="filled",color="grey" ]; -"706E" [ label="a9012b7bb5",shape="box",style="filled",color="grey" ]; -"298" [ label="38f162cf917ce7298663a1f1c607",shape="hexagon" ]; -"36E" [ label="a031c9192ae8e75",shape="box",style="filled",color="grey" ]; -"95E" [ label="062fc905b9eb35",shape="box",style="filled",color="grey" ]; -"364E" [ label="c8fc17180bea86",shape="box",style="filled",color="grey" ]; -"394E" [ label="09e64744536c5e1",shape="box",style="filled",color="grey" ]; -"420E" [ label="af4a1fac3e2076",shape="box",style="filled",color="grey" ]; -"456E" [ label="238805e2194c3",shape="box",style="filled",color="grey" ]; -"624E" [ label="73e6ed83012",shape="box",style="filled",color="grey" ]; -"299" [ label="549fa15d68f0b3bee6192f888cd8",shape="hexagon" ]; -"48E" [ label="d17f8f4eeb8e63d",shape="box",style="filled",color="grey" ]; -"168E" [ label="cca7040e47789",shape="box",style="filled",color="grey" ]; -"260E" [ label="47ebc3f17",shape="box",style="filled",color="grey" ]; -"282E" [ label="cf5a6049ad",shape="box",style="filled",color="grey" ]; -"554E" [ label="2a47a6a27",shape="box",style="filled",color="grey" ]; -"590E" [ label="eff3468631dd4",shape="box",style="filled",color="grey" ]; -"767E" [ label="efb52b499303115c33fd",shape="box",style="filled",color="grey" ]; -"300" [ label="8593dcf973b110d00cecdc1e756",shape="hexagon",style="filled",color="#ff7f00" ]; -"62E" [ label="472a156cf2b55f",shape="box",style="filled",color="grey" ]; -"190E" [ label="647",shape="box",style="filled",color="grey" ]; -"226E" [ label="",shape="box",style="filled",color="grey" ]; -"238E" [ label="8a",shape="box",style="filled",color="grey" ]; -"254E" [ label="",shape="box",style="filled",color="grey" ]; -"256E" [ label="",shape="box",style="filled",color="grey" ]; -"262E" [ label="",shape="box",style="filled",color="grey" ]; -"266E" [ label="e8b",shape="box",style="filled",color="grey" ]; -"274E" [ label="",shape="box",style="filled",color="grey" ]; -"276E" [ label="f",shape="box",style="filled",color="grey" ]; -"294E" [ label="",shape="box",style="filled",color="grey" ]; -"296E" [ label="",shape="box",style="filled",color="grey" ]; -"310E" [ label="1b34fb150",shape="box",style="filled",color="grey" ]; -"320E" [ label="",shape="box",style="filled",color="grey" ]; -"322E" [ label="a7d2",shape="box",style="filled",color="grey" ]; -"332E" [ label="",shape="box",style="filled",color="grey" ]; -"340E" [ label="",shape="box",style="filled",color="grey" ]; -"344E" [ label="f55670",shape="box",style="filled",color="grey" ]; -"346E" [ label="1ed67841",shape="box",style="filled",color="grey" ]; -"348E" [ label="07283",shape="box",style="filled",color="grey" ]; -"374E" [ label="73ba1714ee",shape="box",style="filled",color="grey" ]; -"378E" [ label="27709106",shape="box",style="filled",color="grey" ]; -"452E" [ label="93ea0",shape="box",style="filled",color="grey" ]; -"508E" [ label="",shape="box",style="filled",color="grey" ]; -"524E" [ label="1d792d81",shape="box",style="filled",color="grey" ]; -"612E" [ label="a",shape="box",style="filled",color="grey" ]; -"626E" [ label="",shape="box",style="filled",color="grey" ]; -"638E" [ label="",shape="box",style="filled",color="grey" ]; -"644E" [ label="",shape="box",style="filled",color="grey" ]; -"654E" [ label="",shape="box",style="filled",color="grey" ]; -"672E" [ label="",shape="box",style="filled",color="grey" ]; -"302" [ label="23f94655294d3ff537f2915fa",shape="hexagon" ]; -"797E" [ label="",shape="box",style="filled",color="grey" ]; -"798E" [ label="a2eab7c9fa641e5f",shape="box",style="filled",color="grey" ]; -"303" [ label="a9058241db5b6b6c25569acdf5",shape="hexagon" ]; -"52E" [ label="b2babf3244213",shape="box",style="filled",color="grey" ]; -"650E" [ label="b354cd9e9dbb0bfa",shape="box",style="filled",color="grey" ]; -"304" [ label="bdbdb31bd777fb65dd6dd2d0e7",shape="hexagon" ]; -"50E" [ label="3bec1c012b498",shape="box",style="filled",color="grey" ]; -"640E" [ label="c54f0fc1e05",shape="box",style="filled",color="grey" ]; -"646E" [ label="9ab6c66dc",shape="box",style="filled",color="grey" ]; -"652E" [ label="699e3db878047",shape="box",style="filled",color="grey" ]; -"306" [ label="1d4ea80c7194689d69f9592186",shape="hexagon" ]; -"55E" [ label="8066f87a88f4e",shape="box",style="filled",color="grey" ]; -"220E" [ label="3a8173d6c",shape="box",style="filled",color="grey" ]; -"338E" [ label="24dfe1a997a",shape="box",style="filled",color="grey" ]; -"368E" [ label="65a1",shape="box",style="filled",color="grey" ]; -"486E" [ label="59a8b435ccd",shape="box",style="filled",color="grey" ]; -"490E" [ label="86e9b0428",shape="box",style="filled",color="grey" ]; -"562E" [ label="5a7a610a8a",shape="box",style="filled",color="grey" ]; -"564E" [ label="8f143077e",shape="box",style="filled",color="grey" ]; -"600E" [ label="6472c2861e0e0dd681",shape="box",style="filled",color="grey" ]; -"668E" [ label="f0f45e707",shape="box",style="filled",color="grey" ]; -"674E" [ label="95e93c4a13",shape="box",style="filled",color="grey" ]; -"698E" [ label="33e1de",shape="box",style="filled",color="grey" ]; -"307" [ label="7204950f6233bf9c9e1f00d4a870",shape="hexagon" ]; -"107E" [ label="ccceeef40edda78",shape="box",style="filled",color="grey" ]; -"308" [ label="a2c4b1d72e2da483a86ae0c62e5",shape="hexagon" ]; -"108E" [ label="eedc819a68add6",shape="box",style="filled",color="grey" ]; -"309" [ label="f603819d560c5603259aa05dca",shape="hexagon" ]; -"109E" [ label="acacfc83af504",shape="box",style="filled",color="grey" ]; -"310" [ label="2f43cba12702078b4e0d3bfdae2bc",shape="hexagon" ]; -"110E" [ label="3c1edc8de4795936",shape="box",style="filled",color="grey" ]; -"311" [ label="8f9cdc26798117dd3e9ee4a8770",shape="hexagon" ]; -"58E" [ label="881d373",shape="box",style="filled",color="grey" ]; -"234E" [ label="",shape="box",style="filled",color="grey" ]; -"300E" [ label="",shape="box",style="filled",color="grey" ]; -"306E" [ label="8c7cd9b93b1cbe48e1",shape="box",style="filled",color="grey" ]; -"314E" [ label="616d8a7b",shape="box",style="filled",color="grey" ]; -"342E" [ label="",shape="box",style="filled",color="grey" ]; -"354E" [ label="",shape="box",style="filled",color="grey" ]; -"370E" [ label="",shape="box",style="filled",color="grey" ]; -"382E" [ label="",shape="box",style="filled",color="grey" ]; -"422E" [ label="",shape="box",style="filled",color="grey" ]; -"444E" [ label="",shape="box",style="filled",color="grey" ]; -"582E" [ label="",shape="box",style="filled",color="grey" ]; -"620E" [ label="",shape="box",style="filled",color="grey" ]; -"630E" [ label="",shape="box",style="filled",color="grey" ]; -"684E" [ label="",shape="box",style="filled",color="grey" ]; -"696E" [ label="",shape="box",style="filled",color="grey" ]; -"801E" [ label="",shape="box",style="filled",color="grey" ]; -"312" [ label="97c9d726e27304311901a52ce",shape="hexagon",style="filled",color="#ff0000" ]; -"42E" [ label="1112164c2f7a",shape="box",style="filled",color="grey" ]; -"192E" [ label="5c609b12c",shape="box",style="filled",color="grey" ]; -"194E" [ label="00265",shape="box",style="filled",color="grey" ]; -"196E" [ label="04767",shape="box",style="filled",color="grey" ]; -"198E" [ label="f0d99f16",shape="box",style="filled",color="grey" ]; -"200E" [ label="",shape="box",style="filled",color="grey" ]; -"202E" [ label="6e186b",shape="box",style="filled",color="grey" ]; -"204E" [ label="d382",shape="box",style="filled",color="grey" ]; -"312E" [ label="c6b5321a",shape="box",style="filled",color="grey" ]; -"336E" [ label="",shape="box",style="filled",color="grey" ]; -"376E" [ label="",shape="box",style="filled",color="grey" ]; -"384E" [ label="aeb8",shape="box",style="filled",color="grey" ]; -"386E" [ label="2e53009d4a375",shape="box",style="filled",color="grey" ]; -"428E" [ label="",shape="box",style="filled",color="grey" ]; -"474E" [ label="",shape="box",style="filled",color="grey" ]; -"484E" [ label="",shape="box",style="filled",color="grey" ]; -"546E" [ label="dea1d1",shape="box",style="filled",color="grey" ]; -"548E" [ label="5a0b4b906a",shape="box",style="filled",color="grey" ]; -"314" [ label="1727041c622518c9dd24f7c211",shape="hexagon" ]; -"113E" [ label="49704867bee95",shape="box",style="filled",color="grey" ]; -"315" [ label="31f2f9aef958979f9f3532b9b",shape="hexagon",style="filled",color="#ff0000" ]; -"43E" [ label="47cd70f",shape="box",style="filled",color="grey" ]; -"240E" [ label="248df40dae",shape="box",style="filled",color="grey" ]; -"298E" [ label="",shape="box",style="filled",color="grey" ]; -"334E" [ label="9dd5bf47f",shape="box",style="filled",color="grey" ]; -"360E" [ label="",shape="box",style="filled",color="grey" ]; -"390E" [ label="28533c",shape="box",style="filled",color="grey" ]; -"418E" [ label="",shape="box",style="filled",color="grey" ]; -"492E" [ label="a4c7d0",shape="box",style="filled",color="grey" ]; -"502E" [ label="4f6f7f",shape="box",style="filled",color="grey" ]; -"584E" [ label="7ab64a969",shape="box",style="filled",color="grey" ]; -"588E" [ label="",shape="box",style="filled",color="grey" ]; -"602E" [ label="69",shape="box",style="filled",color="grey" ]; -"606E" [ label="67513d",shape="box",style="filled",color="grey" ]; -"662E" [ label="cf",shape="box",style="filled",color="grey" ]; -"316" [ label="a54092a3033f7d5e41e0a76c1",shape="hexagon" ]; -"51E" [ label="1467f017b74e",shape="box",style="filled",color="grey" ]; -"317" [ label="2043b477ac0393676a4309514d0",shape="hexagon" ]; -"116E" [ label="bdec8c86db51b9",shape="box",style="filled",color="grey" ]; -"318" [ label="ab48d1f65812bc0f8ab6941c3b5",shape="hexagon" ]; -"74E" [ label="81",shape="box",style="filled",color="grey" ]; -"319" [ label="ca3d67754cf62fdafbf0a1e0",shape="hexagon" ]; -"57E" [ label="75b14f1719d",shape="box",style="filled",color="grey" ]; -"94E" [ label="62f36ea98a",shape="box",style="filled",color="grey" ]; -"350E" [ label="e3a76d31ca59a",shape="box",style="filled",color="grey" ]; -"440E" [ label="b3cadc253f7",shape="box",style="filled",color="grey" ]; -"466E" [ label="fb58e11",shape="box",style="filled",color="grey" ]; -"676E" [ label="8606837526d81cdec",shape="box",style="filled",color="grey" ]; -"320" [ label="a7a7f3681dad1250b01cf80bc17",shape="hexagon" ]; -"60E" [ label="2c514b0cd8f7d3",shape="box",style="filled",color="grey" ]; -"366E" [ label="7e494b",shape="box",style="filled",color="grey" ]; -"434E" [ label="15d44ab97",shape="box",style="filled",color="grey" ]; -"458E" [ label="78b2d75d00166",shape="box",style="filled",color="grey" ]; -"618E" [ label="761e0f72f95",shape="box",style="filled",color="grey" ]; -"321" [ label="275afb2b215b966d9fac51b96b9",shape="hexagon" ]; -"72E" [ label="ac284d73563",shape="box",style="filled",color="grey" ]; -"362E" [ label="7e74e1587f3a4d208",shape="box",style="filled",color="grey" ]; -"372E" [ label="ffd1b1af3b6864078f3",shape="box",style="filled",color="grey" ]; -"572E" [ label="b38049e00",shape="box",style="filled",color="grey" ]; -"322" [ label="c3c93c700edc0cb4f95f03c04",shape="hexagon" ]; -"54E" [ label="99237fce1358",shape="box",style="filled",color="grey" ]; -"222E" [ label="3dcf8f454",shape="box",style="filled",color="grey" ]; -"302E" [ label="c5acd20cad2",shape="box",style="filled",color="grey" ]; -"556E" [ label="6c998bf2a5edd",shape="box",style="filled",color="grey" ]; -"558E" [ label="4b683",shape="box",style="filled",color="grey" ]; -"323" [ label="63a3d4fb9d38a0182be6e39e76",shape="hexagon" ]; -"37E" [ label="bba6e6e194ccf",shape="box",style="filled",color="grey" ]; -"208E" [ label="01938827",shape="box",style="filled",color="grey" ]; -"210E" [ label="9",shape="box",style="filled",color="grey" ]; -"352E" [ label="64ef1d545",shape="box",style="filled",color="grey" ]; -"450E" [ label="b473716",shape="box",style="filled",color="grey" ]; -"568E" [ label="7c13bf753da",shape="box",style="filled",color="grey" ]; -"576E" [ label="4e4a79111d",shape="box",style="filled",color="grey" ]; -"686E" [ label="af4abb0d6a99",shape="box",style="filled",color="grey" ]; -"324" [ label="4399cf78123dedd0dfe9776104",shape="hexagon" ]; -"228E" [ label="af9c489df53",shape="box",style="filled",color="grey" ]; -"248E" [ label="3703059dbc5a8",shape="box",style="filled",color="grey" ]; -"304E" [ label="8a46e6",shape="box",style="filled",color="grey" ]; -"468E" [ label="f9d09",shape="box",style="filled",color="grey" ]; -"578E" [ label="cd1e9af3dec2",shape="box",style="filled",color="grey" ]; -"660E" [ label="9e650e89bb",shape="box",style="filled",color="grey" ]; -"688E" [ label="f62b136b2171",shape="box",style="filled",color="grey" ]; -"694E" [ label="4727c415d06bcbef",shape="box",style="filled",color="grey" ]; -"714E" [ label="38b3b0d9",shape="box",style="filled",color="grey" ]; -"766E" [ label="a153512d982",shape="box",style="filled",color="grey" ]; -"325" [ label="40f253cd228f7ac2d0aee",shape="hexagon" ]; -"97E" [ label="a3ff993",shape="box",style="filled",color="grey" ]; -"506E" [ label="7528dd86b",shape="box",style="filled",color="grey" ]; -"326" [ label="89a2505da6179a80202d4a6c3",shape="hexagon" ]; -"61E" [ label="75eea05672a5",shape="box",style="filled",color="grey" ]; -"175E" [ label="3b0c08dd2ca",shape="box",style="filled",color="grey" ]; -"482E" [ label="a3781072b",shape="box",style="filled",color="grey" ]; -"328" [ label="2601085bde1b2450d64509f36",shape="hexagon" ]; -"75E" [ label="0efbd",shape="box",style="filled",color="grey" ]; -"580E" [ label="bb92d1da1f38d52f8ff",shape="box",style="filled",color="grey" ]; -"329" [ label="5c81103c751345d0ee0f4bd",shape="hexagon" ]; -"96E" [ label="b23526044",shape="box",style="filled",color="grey" ]; -"330" [ label="fcbd9ad14139718bc6fcc8b4",shape="hexagon" ]; -"100E" [ label="73ca543bf1",shape="box",style="filled",color="grey" ]; -"170E" [ label="c2f32e2cf9",shape="box",style="filled",color="grey" ]; -"333" [ label="44cbb41a9cfc15497eacd294",color="yellow",style="filled",shape="doubleoctagon" ]; -"63E" [ label="6a91",shape="box",style="filled",color="grey" ]; -"67E" [ label="b074e",shape="box",style="filled",color="grey" ]; -"68E" [ label="06209",shape="box",style="filled",color="grey" ]; -"69E" [ label="58e3dcc618",shape="box",style="filled",color="grey" ]; -"70E" [ label="eee44624da",shape="box",style="filled",color="grey" ]; -"71E" [ label="6a91",shape="box",style="filled",color="grey" ]; -"802E" [ label="e1e8c",shape="box",style="filled",color="grey" ]; -"793E" [ label="",shape="box",style="filled",color="grey" ]; -"334" [ label="b46b0756dba915943839e90a55",color="yellow",style="filled",shape="doubleoctagon" ]; -"64E" [ label="5fdf",shape="box",style="filled",color="grey" ]; -"81E" [ label="3eca1f94dc181",shape="box",style="filled",color="grey" ]; -"82E" [ label="6b1bb9b0e",shape="box",style="filled",color="grey" ]; -"83E" [ label="a54d477232",shape="box",style="filled",color="grey" ]; -"84E" [ label="a164d9f60fbbdd",shape="box",style="filled",color="grey" ]; -"85E" [ label="78c8463ea",shape="box",style="filled",color="grey" ]; -"86E" [ label="c110ba7",shape="box",style="filled",color="grey" ]; -"87E" [ label="3b63cdc0f",shape="box",style="filled",color="grey" ]; -"88E" [ label="6f578c5128",shape="box",style="filled",color="grey" ]; -"89E" [ label="3e048573fd",shape="box",style="filled",color="grey" ]; -"336" [ URL="tes hi",area="test",label="825c7994d5da13afe519861818",color="#ff0000",style="filled",shape="tripleoctagon" ]; -"1E" [ label="f4bef37b6a94bfd00",shape="box",style="filled",color="grey" ]; -"2E" [ label="d2647f8b6d8661d08",shape="box",style="filled",color="grey" ]; -"3E" [ label="964cb56d8f69ff058",shape="box",style="filled",color="grey" ]; -"4E" [ label="4f35e206816c3bd22",shape="box",style="filled",color="grey" ]; -"5E" [ label="affb2d716803a2d3e",shape="box",style="filled",color="grey" ]; -"6E" [ label="e4ae306d9bd669c70",shape="box",style="filled",color="grey" ]; -"7E" [ label="4dbf4395236fb03ed",shape="box",style="filled",color="grey" ]; -"8E" [ label="15b3ad672cd2f713a",shape="box",style="filled",color="grey" ]; -"9E" [ label="8d6e6e0cd9b842a47",shape="box",style="filled",color="grey" ]; -"10E" [ label="00d0dd018fe879f96",shape="box",style="filled",color="grey" ]; -"11E" [ label="f28b78d4803c",shape="box",style="filled",color="grey" ]; -"12E" [ label="2d886da042b5384b4",shape="box",style="filled",color="grey" ]; -"13E" [ label="548c0081a62132b44",shape="box",style="filled",color="grey" ]; -"14E" [ label="52126553e52385d16",shape="box",style="filled",color="grey" ]; -"15E" [ label="9fe716e738eaea34e",shape="box",style="filled",color="grey" ]; -"16E" [ label="5782807b5f575e0a8",shape="box",style="filled",color="grey" ]; -"17E" [ label="792fd6f9df1fa1e33",shape="box",style="filled",color="grey" ]; -"18E" [ label="c471b6fdbfb852661",shape="box",style="filled",color="grey" ]; -"19E" [ label="a84844dfd0052b3b5",shape="box",style="filled",color="grey" ]; -"20E" [ label="724dabdce9744d061",shape="box",style="filled",color="grey" ]; -"21E" [ label="57f7fd2eecec93c8b",shape="box",style="filled",color="grey" ]; -"22E" [ label="baba65f670ee34a88",shape="box",style="filled",color="grey" ]; -"23E" [ label="ac34ec0f0488b17ec",shape="box",style="filled",color="grey" ]; -"24E" [ label="51e74bec5513083bb",shape="box",style="filled",color="grey" ]; -"25E" [ label="8e2d970b2f820ee35",shape="box",style="filled",color="grey" ]; -"26E" [ label="19398d3cd6b9c674f",shape="box",style="filled",color="grey" ]; -"27E" [ label="6505e29f4a11d9530",shape="box",style="filled",color="grey" ]; -"28E" [ label="bc4824f07a9d2bba6",shape="box",style="filled",color="grey" ]; -"29E" [ label="3acbf8a1537e4e1a1",shape="box",style="filled",color="grey" ]; -"30E" [ label="536264e787cf70469",shape="box",style="filled",color="grey" ]; -"31E" [ label="d",shape="box",style="filled",color="grey" ]; -"65E" [ label="d4b2",shape="box",style="filled",color="grey" ]; -"119E" [ label="2a9caef7",shape="box",style="filled",color="grey" ]; -"150E" [ label="73d12",shape="box",style="filled",color="grey" ]; -"176E" [ label="8896166adc0",shape="box",style="filled",color="grey" ]; -"743E" [ label="9f",shape="box",style="filled",color="grey" ]; -"744E" [ label="2e1313c",shape="box",style="filled",color="grey" ]; -"764E" [ label="cd6",shape="box",style="filled",color="grey" ]; -"337" [ label="8304a439f91fc90b3fe8dd35be8",color="yellow",style="filled",shape="doubleoctagon" ]; -"120E" [ label="345d26b3f821fe",shape="box",style="filled",color="grey" ]; -"121E" [ label="357679fea1e2f",shape="box",style="filled",color="grey" ]; -"122E" [ label="c71043819b6a79",shape="box",style="filled",color="grey" ]; -"123E" [ label="f9df653b86fb8df",shape="box",style="filled",color="grey" ]; -"124E" [ label="020df871874cd",shape="box",style="filled",color="grey" ]; -"125E" [ label="4c52fdd8e396692",shape="box",style="filled",color="grey" ]; -"126E" [ label="8b98c3ddbe0b336",shape="box",style="filled",color="grey" ]; -"127E" [ label="d9f4abac731a9e",shape="box",style="filled",color="grey" ]; -"128E" [ label="50f4d9b97aefe",shape="box",style="filled",color="grey" ]; -"129E" [ label="ea920d9f5b295119",shape="box",style="filled",color="grey" ]; -"130E" [ label="ff5c9b242337c",shape="box",style="filled",color="grey" ]; -"131E" [ label="4e12f7ff0918",shape="box",style="filled",color="grey" ]; -"132E" [ label="ee3b6be71d59b",shape="box",style="filled",color="grey" ]; -"133E" [ label="615cd6b5e3d21c",shape="box",style="filled",color="grey" ]; -"134E" [ label="6d52dd1b198bb",shape="box",style="filled",color="grey" ]; -"135E" [ label="8c932e1e502dca",shape="box",style="filled",color="grey" ]; -"136E" [ label="e84330eef281284a",shape="box",style="filled",color="grey" ]; -"137E" [ label="85fc23f1c88b4",shape="box",style="filled",color="grey" ]; -"138E" [ label="5997cb0c083422",shape="box",style="filled",color="grey" ]; -"339" [ label="b1ffbabb24d71f67d1e0ce23c51",color="yellow",style="filled",shape="doubleoctagon" ]; -"151E" [ label="",shape="box",style="filled",color="grey" ]; -"153E" [ label="41a8b095c7fd3",shape="box",style="filled",color="grey" ]; -"154E" [ label="151bcc2a8de7ea634",shape="box",style="filled",color="grey" ]; -"155E" [ label="6c541cad8de1b15",shape="box",style="filled",color="grey" ]; -"156E" [ label="c935c7f4d1090ac",shape="box",style="filled",color="grey" ]; -"157E" [ label="5ce1fcfb042b",shape="box",style="filled",color="grey" ]; -"158E" [ label="531806429433",shape="box",style="filled",color="grey" ]; -"159E" [ label="d285240b89cb",shape="box",style="filled",color="grey" ]; -"160E" [ label="f22c27c0f0a54e",shape="box",style="filled",color="grey" ]; -"161E" [ label="8d0d8314d211d80",shape="box",style="filled",color="grey" ]; -"162E" [ label="",shape="box",style="filled",color="grey" ]; -"347" [ label="9652ab8b55fdb2a36d1f3fe020",shape="hexagon" ]; -"139E" [ label="ef8b68bb5772f3",shape="box",style="filled",color="grey" ]; -"795E" [ label="16c3ae29c0bc713",shape="box",style="filled",color="grey" ]; -"348" [ label="676bbe7d1c1fb71742df534ce8",shape="hexagon" ]; -"799E" [ label="a78eb40ae56aaa9",shape="box",style="filled",color="grey" ]; -"800E" [ label="6aae8d25951",shape="box",style="filled",color="grey" ]; -"349" [ label="66c0220688a999aaf7f1702d1",shape="hexagon" ]; -"141E" [ label="67b6a4dca3a6d",shape="box",style="filled",color="grey" ]; -"350" [ label="1322fb0818783e6f9a4f173d47c52",shape="hexagon" ]; -"142E" [ label="9696c0950295d8cb5",shape="box",style="filled",color="grey" ]; -"678E" [ label="b5c747cc9",shape="box",style="filled",color="grey" ]; -"351" [ label="ff07977fca5513098d220d1eb3a",shape="hexagon" ]; -"143E" [ label="89a36b13f8c344b",shape="box",style="filled",color="grey" ]; -"232E" [ label="56292d076643",shape="box",style="filled",color="grey" ]; -"680E" [ label="b5c747cc9",shape="box",style="filled",color="grey" ]; -"704E" [ label="431430c49",shape="box",style="filled",color="grey" ]; -"352" [ label="a97ef281eafc34b1630d450a1df",shape="hexagon" ]; -"144E" [ label="4ff4e275c710c3b",shape="box",style="filled",color="grey" ]; -"432E" [ label="d13da6273c9b4da",shape="box",style="filled",color="grey" ]; -"353" [ label="72cbb37db85ed3c6eda5dcf8",shape="hexagon" ]; -"145E" [ label="33ff9e43d5ab",shape="box",style="filled",color="grey" ]; -"354" [ label="0f6784e49852c0be0da23b16",shape="hexagon" ]; -"146E" [ label="d4f958b03a98",shape="box",style="filled",color="grey" ]; -"396E" [ label="8e24e9b4e",shape="box",style="filled",color="grey" ]; -"355" [ label="383f5c65cc6c25aa0a0e6dbb",shape="hexagon" ]; -"147E" [ label="1ff8ff951ee9",shape="box",style="filled",color="grey" ]; -"356" [ label="f52a45620969f0df4e6ae1dcd7",shape="hexagon" ]; -"148E" [ label="5256925081c812",shape="box",style="filled",color="grey" ]; -"357" [ label="1f5df34ad75a55a76ef4afa0a47",shape="hexagon" ]; -"149E" [ label="26a185dde9a93dd",shape="box",style="filled",color="grey" ]; -"358" [ label="45ba4d4c61c9601a26d59e47e0260",shape="hexagon" ]; -"167E" [ label="99bd3e7feeb710",shape="box",style="filled",color="grey" ]; -"359" [ label="f95344b0ae31693f3a2746597d4",shape="hexagon" ]; -"169E" [ label="4e8259973f1f",shape="box",style="filled",color="grey" ]; -"360" [ label="b79798b186d6b82288e8be4017d",shape="hexagon" ]; -"171E" [ label="63b079bd5847",shape="box",style="filled",color="grey" ]; -"361" [ label="47e0067f4d853afd2012f04daa8",shape="hexagon" ]; -"172E" [ label="92fb5d4a0805",shape="box",style="filled",color="grey" ]; -"362" [ label="f2b6201774de40a29b504b1f716",shape="hexagon" ]; -"173E" [ label="d7203571944b",shape="box",style="filled",color="grey" ]; -"363" [ label="800422ab81d804eef3e7b91dfba91",shape="hexagon" ]; -"174E" [ label="952316a1a5a785",shape="box",style="filled",color="grey" ]; -"364" [ label="35b941379e1af658078cffb83a2",shape="hexagon" ]; -"101E" [ label="331675c046693f",shape="box",style="filled",color="grey" ]; -"365" [ label="d4f7b7fba7afcf7a72397353ec",shape="hexagon" ]; -"102E" [ label="32c4684b55361",shape="box",style="filled",color="grey" ]; -"367" [ label="e4b45b7a2f884d3734bfd5985656",shape="hexagon" ]; -"104E" [ label="1333074979f2d0b",shape="box",style="filled",color="grey" ]; -"368" [ label="02c2ba83680ab57f236a33d702",shape="hexagon" ]; -"105E" [ label="084d4bfa5853e",shape="box",style="filled",color="grey" ]; -"369" [ label="9ccd974150a18260b207b6584caa",shape="hexagon" ]; -"106E" [ label="28f7bfc40c88e6a",shape="box",style="filled",color="grey" ]; -"374" [ label="653ae44d45dcadeb481b53027d",shape="hexagon" ]; -"111E" [ label="8f95518f48528",shape="box",style="filled",color="grey" ]; -"375" [ label="d66f542ef1ce4d02c59bec65e",shape="hexagon" ]; -"112E" [ label="2ef209509e2a",shape="box",style="filled",color="grey" ]; -"377" [ label="a2984b7a11e49440420058c1d80",shape="hexagon" ]; -"114E" [ label="ef42184297591d",shape="box",style="filled",color="grey" ]; -"378" [ label="31055116421c96b37f72a262bb",shape="hexagon" ]; -"115E" [ label="be9c5958196ed",shape="box",style="filled",color="grey" ]; -"380" [ label="8462bb2eec1a62d19a15865e57c92",shape="hexagon" ]; -"117E" [ label="16a795a1d63f30df",shape="box",style="filled",color="grey" ]; -"392E" [ label="85a34bc9616ff",shape="box",style="filled",color="grey" ]; -"381" [ label="c21eb96fe100a1efaa128181b7",shape="hexagon" ]; -"118E" [ label="f1b0d754353a6",shape="box",style="filled",color="grey" ]; -"382" [ label="e3e284d0cc803d98d674f9c3f6d",color="yellow",style="filled",shape="doubleoctagon" ]; -"177E" [ label="30417faf916",shape="box",style="filled",color="grey" ]; -"178E" [ label="e618df70814a",shape="box",style="filled",color="grey" ]; -"179E" [ label="fa90ddf10bd574",shape="box",style="filled",color="grey" ]; -"180E" [ label="815cc0b83d733",shape="box",style="filled",color="grey" ]; -"181E" [ label="f787d827958c",shape="box",style="filled",color="grey" ]; -"182E" [ label="f20f7f513e",shape="box",style="filled",color="grey" ]; -"183E" [ label="290907417e13",shape="box",style="filled",color="grey" ]; -"184E" [ label="e8386a8e1c8a",shape="box",style="filled",color="grey" ]; -"185E" [ label="319bc900218b",shape="box",style="filled",color="grey" ]; -"186E" [ label="3ba7afb0e48ae1",shape="box",style="filled",color="grey" ]; -"187E" [ label="6ba0776fc8e",shape="box",style="filled",color="grey" ]; -"188E" [ label="09847696ae",shape="box",style="filled",color="grey" ]; -"383" [ label="908f9ad506eae9ab6ada185e3",color="yellow",style="filled",shape="doubleoctagon" ]; -"730E" [ label="65694ca6d575",shape="box",style="filled",color="grey" ]; -"732E" [ label="37f57e81ebed95",shape="box",style="filled",color="grey" ]; -"741E" [ label="9b6c",shape="box",style="filled",color="grey" ]; -"765E" [ label="88ebe2e8782c",shape="box",style="filled",color="grey" ]; -"796E" [ label="901b2105a902ee7791",shape="box",style="filled",color="grey" ]; -"384" [ label="593caebf2037317648bb451aa79",color="yellow",style="filled",shape="doubleoctagon" ]; -"726E" [ label="351dd0aefe480c",shape="box",style="filled",color="grey" ]; -"728E" [ label="56e1a896",shape="box",style="filled",color="grey" ]; -"742E" [ label="5ba4693031",shape="box",style="filled",color="grey" ]; -"385" [ label="717c254aeffbb527dabfc",shape="hexagon" ]; -"328E" [ label="123cc6d1ac",shape="box",style="filled",color="grey" ]; -"496E" [ label="",shape="box",style="filled",color="grey" ]; -"594E" [ label="7f8c557bcf3889",shape="box",style="filled",color="grey" ]; -"622E" [ label="da3d5",shape="box",style="filled",color="grey" ]; -"754E" [ label="68d8993e61d8c82cd29e8d0182b0",shape="box",style="filled",color="grey" ]; -"755E" [ label="4c865eec228e41e7f4e5fc68a9a6",shape="box",style="filled",color="grey" ]; -"756E" [ label="8983ffbc30deb364dd92c3ad85c9",shape="box",style="filled",color="grey" ]; -"757E" [ label="68d8993e61d8c82cd29e8d0182b0",shape="box",style="filled",color="grey" ]; -"758E" [ label="4c865eec228e41e7f4e5fc68a9a6",shape="box",style="filled",color="grey" ]; -"759E" [ label="8983ffbc30deb364dd92c3ad85c9",shape="box",style="filled",color="grey" ]; -"760E" [ label="8983ffbc30deb364dd92c3ad85c9",shape="box",style="filled",color="grey" ]; -"761E" [ label="eb9cf6456613d4cd06f7c0894bd6",shape="box",style="filled",color="grey" ]; -"762E" [ label="1e2298c4bb",shape="box",style="filled",color="grey" ]; -"1" -> "189E" [ label=" ",color="blue",arrowhead="dot" ]; -"1" -> "790E" [ label=" ",color="blue",arrowhead="dot" ]; -"2" -> "191E" [ label=" ",color="blue",arrowhead="dot" ]; -"3" -> "193E" [ label=" ",color="blue",arrowhead="dot" ]; -"4" -> "195E" [ label=" ",color="blue",arrowhead="dot" ]; -"5" -> "197E" [ label=" ",color="blue",arrowhead="dot" ]; -"6" -> "199E" [ label=" ",color="blue",arrowhead="dot" ]; -"7" -> "201E" [ label=" ",color="blue",arrowhead="dot" ]; -"8" -> "203E" [ label=" ",color="blue",arrowhead="dot" ]; -"9" -> "725E" [ label=" ",color="blue",arrowhead="dot" ]; -"9" -> "785E" [ label=" ",color="blue",arrowhead="dot" ]; -"10" -> "205E" [ label=" ",color="blue",arrowhead="dot" ]; -"11" -> "207E" [ label=" ",color="blue",arrowhead="dot" ]; -"12" -> "209E" [ label=" ",color="blue",arrowhead="dot" ]; -"13" -> "211E" [ label=" ",color="blue",arrowhead="dot" ]; -"14" -> "213E" [ label=" ",color="blue",arrowhead="dot" ]; -"15" -> "215E" [ label=" ",color="blue",arrowhead="dot" ]; -"16" -> "727E" [ label=" ",color="blue",arrowhead="dot" ]; -"16" -> "784E" [ label=" ",color="blue",arrowhead="dot" ]; -"17" -> "217E" [ label=" ",color="blue",arrowhead="dot" ]; -"17" -> "787E" [ label=" ",color="blue",arrowhead="dot" ]; -"18" -> "219E" [ label=" ",color="blue",arrowhead="dot" ]; -"19" -> "221E" [ label=" ",color="blue",arrowhead="dot" ]; -"20" -> "223E" [ label=" ",color="blue",arrowhead="dot" ]; -"21" -> "225E" [ label=" ",color="blue",arrowhead="dot" ]; -"22" -> "227E" [ label=" ",color="blue",arrowhead="dot" ]; -"22" -> "792E" [ label=" ",color="blue",arrowhead="dot" ]; -"23" -> "231E" [ label=" ",color="blue",arrowhead="dot" ]; -"24" -> "233E" [ label=" ",color="blue",arrowhead="dot" ]; -"25" -> "235E" [ label=" ",color="blue",arrowhead="dot" ]; -"26" -> "237E" [ label=" ",color="blue",arrowhead="dot" ]; -"27" -> "239E" [ label=" ",color="blue",arrowhead="dot" ]; -"27" -> "783E" [ label=" ",color="blue",arrowhead="dot" ]; -"28" -> "241E" [ label=" ",color="blue",arrowhead="dot" ]; -"28" -> "791E" [ label=" ",color="blue",arrowhead="dot" ]; -"29" -> "243E" [ label=" ",color="blue",arrowhead="dot" ]; -"30" -> "245E" [ label=" ",color="blue",arrowhead="dot" ]; -"31" -> "247E" [ label=" ",color="blue",arrowhead="dot" ]; -"32" -> "249E" [ label=" ",color="blue",arrowhead="dot" ]; -"33" -> "251E" [ label=" ",color="blue",arrowhead="dot" ]; -"34" -> "253E" [ label=" ",color="blue",arrowhead="dot" ]; -"35" -> "255E" [ label=" ",color="blue",arrowhead="dot" ]; -"36" -> "257E" [ label=" ",color="blue",arrowhead="dot" ]; -"37" -> "259E" [ label=" ",color="blue",arrowhead="dot" ]; -"38" -> "261E" [ label=" ",color="blue",arrowhead="dot" ]; -"39" -> "263E" [ label=" ",color="blue",arrowhead="dot" ]; -"40" -> "265E" [ label=" ",color="blue",arrowhead="dot" ]; -"41" -> "267E" [ label=" ",color="blue",arrowhead="dot" ]; -"42" -> "269E" [ label=" ",color="blue",arrowhead="dot" ]; -"43" -> "271E" [ label=" ",color="blue",arrowhead="dot" ]; -"44" -> "273E" [ label=" ",color="blue",arrowhead="dot" ]; -"45" -> "275E" [ label=" ",color="blue",arrowhead="dot" ]; -"46" -> "277E" [ label=" ",color="blue",arrowhead="dot" ]; -"47" -> "279E" [ label=" ",color="blue",arrowhead="dot" ]; -"48" -> "281E" [ label=" ",color="blue",arrowhead="dot" ]; -"49" -> "283E" [ label=" ",color="blue",arrowhead="dot" ]; -"50" -> "285E" [ label=" ",color="blue",arrowhead="dot" ]; -"51" -> "287E" [ label=" ",color="blue",arrowhead="dot" ]; -"52" -> "289E" [ label=" ",color="blue",arrowhead="dot" ]; -"53" -> "291E" [ label=" ",color="blue",arrowhead="dot" ]; -"54" -> "293E" [ label=" ",color="blue",arrowhead="dot" ]; -"55" -> "745E" [ label=" ",color="blue",arrowhead="dot" ]; -"56" -> "295E" [ label=" ",color="blue",arrowhead="dot" ]; -"57" -> "297E" [ label=" ",color="blue",arrowhead="dot" ]; -"58" -> "299E" [ label=" ",color="blue",arrowhead="dot" ]; -"59" -> "301E" [ label=" ",color="blue",arrowhead="dot" ]; -"59" -> "789E" [ label=" ",color="blue",arrowhead="dot" ]; -"60" -> "303E" [ label=" ",color="blue",arrowhead="dot" ]; -"61" -> "305E" [ label=" ",color="blue",arrowhead="dot" ]; -"62" -> "307E" [ label=" ",color="blue",arrowhead="dot" ]; -"63" -> "309E" [ label=" ",color="blue",arrowhead="dot" ]; -"64" -> "311E" [ label=" ",color="blue",arrowhead="dot" ]; -"65" -> "313E" [ label=" ",color="blue",arrowhead="dot" ]; -"66" -> "315E" [ label=" ",color="blue",arrowhead="dot" ]; -"67" -> "317E" [ label=" ",color="blue",arrowhead="dot" ]; -"68" -> "319E" [ label=" ",color="blue",arrowhead="dot" ]; -"69" -> "746E" [ label=" ",color="blue",arrowhead="dot" ]; -"70" -> "321E" [ label=" ",color="blue",arrowhead="dot" ]; -"71" -> "327E" [ label=" ",color="blue",arrowhead="dot" ]; -"72" -> "329E" [ label=" ",color="blue",arrowhead="dot" ]; -"73" -> "331E" [ label=" ",color="blue",arrowhead="dot" ]; -"74" -> "333E" [ label=" ",color="blue",arrowhead="dot" ]; -"75" -> "335E" [ label=" ",color="blue",arrowhead="dot" ]; -"76" -> "337E" [ label=" ",color="blue",arrowhead="dot" ]; -"77" -> "339E" [ label=" ",color="blue",arrowhead="dot" ]; -"78" -> "341E" [ label=" ",color="blue",arrowhead="dot" ]; -"79" -> "343E" [ label=" ",color="blue",arrowhead="dot" ]; -"80" -> "345E" [ label=" ",color="blue",arrowhead="dot" ]; -"81" -> "347E" [ label=" ",color="blue",arrowhead="dot" ]; -"82" -> "349E" [ label=" ",color="blue",arrowhead="dot" ]; -"83" -> "351E" [ label=" ",color="blue",arrowhead="dot" ]; -"84" -> "353E" [ label=" ",color="blue",arrowhead="dot" ]; -"85" -> "355E" [ label=" ",color="blue",arrowhead="dot" ]; -"85" -> "788E" [ label=" ",color="blue",arrowhead="dot" ]; -"86" -> "357E" [ label=" ",color="blue",arrowhead="dot" ]; -"87" -> "359E" [ label=" ",color="blue",arrowhead="dot" ]; -"88" -> "361E" [ label=" ",color="blue",arrowhead="dot" ]; -"89" -> "363E" [ label=" ",color="blue",arrowhead="dot" ]; -"90" -> "365E" [ label=" ",color="blue",arrowhead="dot" ]; -"91" -> "367E" [ label=" ",color="blue",arrowhead="dot" ]; -"92" -> "369E" [ label=" ",color="blue",arrowhead="dot" ]; -"93" -> "729E" [ label=" ",color="blue",arrowhead="dot" ]; -"94" -> "371E" [ label=" ",color="blue",arrowhead="dot" ]; -"95" -> "373E" [ label=" ",color="blue",arrowhead="dot" ]; -"96" -> "375E" [ label=" ",color="blue",arrowhead="dot" ]; -"97" -> "747E" [ label=" ",color="blue",arrowhead="dot" ]; -"98" -> "377E" [ label=" ",color="blue",arrowhead="dot" ]; -"99" -> "379E" [ label=" ",color="blue",arrowhead="dot" ]; -"100" -> "381E" [ label=" ",color="blue",arrowhead="dot" ]; -"101" -> "383E" [ label=" ",color="blue",arrowhead="dot" ]; -"102" -> "385E" [ label=" ",color="blue",arrowhead="dot" ]; -"103" -> "387E" [ label=" ",color="blue",arrowhead="dot" ]; -"104" -> "389E" [ label=" ",color="blue",arrowhead="dot" ]; -"105" -> "391E" [ label=" ",color="blue",arrowhead="dot" ]; -"106" -> "393E" [ label=" ",color="blue",arrowhead="dot" ]; -"107" -> "395E" [ label=" ",color="blue",arrowhead="dot" ]; -"108" -> "397E" [ label=" ",color="blue",arrowhead="dot" ]; -"109" -> "399E" [ label=" ",color="blue",arrowhead="dot" ]; -"110" -> "401E" [ label=" ",color="blue",arrowhead="dot" ]; -"111" -> "403E" [ label=" ",color="blue",arrowhead="dot" ]; -"112" -> "405E" [ label=" ",color="blue",arrowhead="dot" ]; -"113" -> "407E" [ label=" ",color="blue",arrowhead="dot" ]; -"114" -> "409E" [ label=" ",color="blue",arrowhead="dot" ]; -"115" -> "411E" [ label=" ",color="blue",arrowhead="dot" ]; -"116" -> "413E" [ label=" ",color="blue",arrowhead="dot" ]; -"117" -> "415E" [ label=" ",color="blue",arrowhead="dot" ]; -"118" -> "417E" [ label=" ",color="blue",arrowhead="dot" ]; -"119" -> "419E" [ label=" ",color="blue",arrowhead="dot" ]; -"120" -> "421E" [ label=" ",color="blue",arrowhead="dot" ]; -"121" -> "423E" [ label=" ",color="blue",arrowhead="dot" ]; -"122" -> "748E" [ label=" ",color="blue",arrowhead="dot" ]; -"123" -> "425E" [ label=" ",color="blue",arrowhead="dot" ]; -"124" -> "427E" [ label=" ",color="blue",arrowhead="dot" ]; -"124" -> "786E" [ label=" ",color="blue",arrowhead="dot" ]; -"125" -> "431E" [ label=" ",color="blue",arrowhead="dot" ]; -"126" -> "433E" [ label=" ",color="blue",arrowhead="dot" ]; -"127" -> "435E" [ label=" ",color="blue",arrowhead="dot" ]; -"128" -> "437E" [ label=" ",color="blue",arrowhead="dot" ]; -"129" -> "439E" [ label=" ",color="blue",arrowhead="dot" ]; -"130" -> "441E" [ label=" ",color="blue",arrowhead="dot" ]; -"131" -> "443E" [ label=" ",color="blue",arrowhead="dot" ]; -"132" -> "445E" [ label=" ",color="blue",arrowhead="dot" ]; -"133" -> "749E" [ label=" ",color="blue",arrowhead="dot" ]; -"134" -> "447E" [ label=" ",color="blue",arrowhead="dot" ]; -"135" -> "449E" [ label=" ",color="blue",arrowhead="dot" ]; -"135" -> "769E" [ label=" ",color="blue",arrowhead="dot" ]; -"135" -> "770E" [ label=" ",color="blue",arrowhead="dot" ]; -"136" -> "451E" [ label=" ",color="blue",arrowhead="dot" ]; -"137" -> "453E" [ label=" ",color="blue",arrowhead="dot" ]; -"138" -> "455E" [ label=" ",color="blue",arrowhead="dot" ]; -"139" -> "457E" [ label=" ",color="blue",arrowhead="dot" ]; -"140" -> "459E" [ label=" ",color="blue",arrowhead="dot" ]; -"141" -> "461E" [ label=" ",color="blue",arrowhead="dot" ]; -"142" -> "463E" [ label=" ",color="blue",arrowhead="dot" ]; -"143" -> "465E" [ label=" ",color="blue",arrowhead="dot" ]; -"144" -> "467E" [ label=" ",color="blue",arrowhead="dot" ]; -"145" -> "469E" [ label=" ",color="blue",arrowhead="dot" ]; -"146" -> "471E" [ label=" ",color="blue",arrowhead="dot" ]; -"147" -> "473E" [ label=" ",color="blue",arrowhead="dot" ]; -"148" -> "475E" [ label=" ",color="blue",arrowhead="dot" ]; -"149" -> "477E" [ label=" ",color="blue",arrowhead="dot" ]; -"150" -> "479E" [ label=" ",color="blue",arrowhead="dot" ]; -"151" -> "481E" [ label=" ",color="blue",arrowhead="dot" ]; -"152" -> "483E" [ label=" ",color="blue",arrowhead="dot" ]; -"153" -> "731E" [ label=" ",color="blue",arrowhead="dot" ]; -"154" -> "750E" [ label=" ",color="blue",arrowhead="dot" ]; -"155" -> "485E" [ label=" ",color="blue",arrowhead="dot" ]; -"156" -> "487E" [ label=" ",color="blue",arrowhead="dot" ]; -"157" -> "489E" [ label=" ",color="blue",arrowhead="dot" ]; -"158" -> "491E" [ label=" ",color="blue",arrowhead="dot" ]; -"159" -> "495E" [ label=" ",color="blue",arrowhead="dot" ]; -"160" -> "499E" [ label=" ",color="blue",arrowhead="dot" ]; -"161" -> "501E" [ label=" ",color="blue",arrowhead="dot" ]; -"162" -> "503E" [ label=" ",color="blue",arrowhead="dot" ]; -"163" -> "505E" [ label=" ",color="blue",arrowhead="dot" ]; -"164" -> "507E" [ label=" ",color="blue",arrowhead="dot" ]; -"165" -> "509E" [ label=" ",color="blue",arrowhead="dot" ]; -"166" -> "511E" [ label=" ",color="blue",arrowhead="dot" ]; -"167" -> "513E" [ label=" ",color="blue",arrowhead="dot" ]; -"168" -> "515E" [ label=" ",color="blue",arrowhead="dot" ]; -"169" -> "517E" [ label=" ",color="blue",arrowhead="dot" ]; -"170" -> "519E" [ label=" ",color="blue",arrowhead="dot" ]; -"171" -> "521E" [ label=" ",color="blue",arrowhead="dot" ]; -"172" -> "523E" [ label=" ",color="blue",arrowhead="dot" ]; -"173" -> "525E" [ label=" ",color="blue",arrowhead="dot" ]; -"174" -> "527E" [ label=" ",color="blue",arrowhead="dot" ]; -"175" -> "529E" [ label=" ",color="blue",arrowhead="dot" ]; -"176" -> "531E" [ label=" ",color="blue",arrowhead="dot" ]; -"177" -> "533E" [ label=" ",color="blue",arrowhead="dot" ]; -"178" -> "535E" [ label=" ",color="blue",arrowhead="dot" ]; -"179" -> "537E" [ label=" ",color="blue",arrowhead="dot" ]; -"180" -> "539E" [ label=" ",color="blue",arrowhead="dot" ]; -"181" -> "541E" [ label=" ",color="blue",arrowhead="dot" ]; -"182" -> "543E" [ label=" ",color="blue",arrowhead="dot" ]; -"183" -> "545E" [ label=" ",color="blue",arrowhead="dot" ]; -"184" -> "547E" [ label=" ",color="blue",arrowhead="dot" ]; -"185" -> "549E" [ label=" ",color="blue",arrowhead="dot" ]; -"186" -> "551E" [ label=" ",color="blue",arrowhead="dot" ]; -"187" -> "553E" [ label=" ",color="blue",arrowhead="dot" ]; -"188" -> "555E" [ label=" ",color="blue",arrowhead="dot" ]; -"189" -> "557E" [ label=" ",color="blue",arrowhead="dot" ]; -"190" -> "559E" [ label=" ",color="blue",arrowhead="dot" ]; -"191" -> "561E" [ label=" ",color="blue",arrowhead="dot" ]; -"192" -> "563E" [ label=" ",color="blue",arrowhead="dot" ]; -"193" -> "565E" [ label=" ",color="blue",arrowhead="dot" ]; -"194" -> "567E" [ label=" ",color="blue",arrowhead="dot" ]; -"195" -> "569E" [ label=" ",color="blue",arrowhead="dot" ]; -"196" -> "571E" [ label=" ",color="blue",arrowhead="dot" ]; -"197" -> "573E" [ label=" ",color="blue",arrowhead="dot" ]; -"198" -> "575E" [ label=" ",color="blue",arrowhead="dot" ]; -"199" -> "577E" [ label=" ",color="blue",arrowhead="dot" ]; -"200" -> "579E" [ label=" ",color="blue",arrowhead="dot" ]; -"201" -> "581E" [ label=" ",color="blue",arrowhead="dot" ]; -"202" -> "583E" [ label=" ",color="blue",arrowhead="dot" ]; -"203" -> "585E" [ label=" ",color="blue",arrowhead="dot" ]; -"204" -> "587E" [ label=" ",color="blue",arrowhead="dot" ]; -"205" -> "751E" [ label=" ",color="blue",arrowhead="dot" ]; -"206" -> "589E" [ label=" ",color="blue",arrowhead="dot" ]; -"207" -> "593E" [ label=" ",color="blue",arrowhead="dot" ]; -"208" -> "597E" [ label=" ",color="blue",arrowhead="dot" ]; -"209" -> "599E" [ label=" ",color="blue",arrowhead="dot" ]; -"210" -> "601E" [ label=" ",color="blue",arrowhead="dot" ]; -"211" -> "603E" [ label=" ",color="blue",arrowhead="dot" ]; -"212" -> "605E" [ label=" ",color="blue",arrowhead="dot" ]; -"213" -> "607E" [ label=" ",color="blue",arrowhead="dot" ]; -"214" -> "609E" [ label=" ",color="blue",arrowhead="dot" ]; -"215" -> "611E" [ label=" ",color="blue",arrowhead="dot" ]; -"216" -> "613E" [ label=" ",color="blue",arrowhead="dot" ]; -"217" -> "615E" [ label=" ",color="blue",arrowhead="dot" ]; -"218" -> "617E" [ label=" ",color="blue",arrowhead="dot" ]; -"219" -> "619E" [ label=" ",color="blue",arrowhead="dot" ]; -"220" -> "621E" [ label=" ",color="blue",arrowhead="dot" ]; -"221" -> "623E" [ label=" ",color="blue",arrowhead="dot" ]; -"222" -> "752E" [ label=" ",color="blue",arrowhead="dot" ]; -"223" -> "625E" [ label=" ",color="blue",arrowhead="dot" ]; -"224" -> "627E" [ label=" ",color="blue",arrowhead="dot" ]; -"225" -> "629E" [ label=" ",color="blue",arrowhead="dot" ]; -"226" -> "631E" [ label=" ",color="blue",arrowhead="dot" ]; -"227" -> "633E" [ label=" ",color="blue",arrowhead="dot" ]; -"228" -> "635E" [ label=" ",color="blue",arrowhead="dot" ]; -"229" -> "637E" [ label=" ",color="blue",arrowhead="dot" ]; -"230" -> "639E" [ label=" ",color="blue",arrowhead="dot" ]; -"231" -> "641E" [ label=" ",color="blue",arrowhead="dot" ]; -"232" -> "643E" [ label=" ",color="blue",arrowhead="dot" ]; -"233" -> "645E" [ label=" ",color="blue",arrowhead="dot" ]; -"234" -> "647E" [ label=" ",color="blue",arrowhead="dot" ]; -"235" -> "649E" [ label=" ",color="blue",arrowhead="dot" ]; -"236" -> "651E" [ label=" ",color="blue",arrowhead="dot" ]; -"237" -> "653E" [ label=" ",color="blue",arrowhead="dot" ]; -"238" -> "655E" [ label=" ",color="blue",arrowhead="dot" ]; -"239" -> "657E" [ label=" ",color="blue",arrowhead="dot" ]; -"240" -> "659E" [ label=" ",color="blue",arrowhead="dot" ]; -"241" -> "661E" [ label=" ",color="blue",arrowhead="dot" ]; -"242" -> "663E" [ label=" ",color="blue",arrowhead="dot" ]; -"243" -> "665E" [ label=" ",color="blue",arrowhead="dot" ]; -"244" -> "667E" [ label=" ",color="blue",arrowhead="dot" ]; -"245" -> "669E" [ label=" ",color="blue",arrowhead="dot" ]; -"246" -> "671E" [ label=" ",color="blue",arrowhead="dot" ]; -"247" -> "673E" [ label=" ",color="blue",arrowhead="dot" ]; -"248" -> "675E" [ label=" ",color="blue",arrowhead="dot" ]; -"249" -> "679E" [ label=" ",color="blue",arrowhead="dot" ]; -"250" -> "753E" [ label=" ",color="blue",arrowhead="dot" ]; -"251" -> "681E" [ label=" ",color="blue",arrowhead="dot" ]; -"252" -> "683E" [ label=" ",color="blue",arrowhead="dot" ]; -"253" -> "685E" [ label=" ",color="blue",arrowhead="dot" ]; -"254" -> "687E" [ label=" ",color="blue",arrowhead="dot" ]; -"255" -> "689E" [ label=" ",color="blue",arrowhead="dot" ]; -"256" -> "691E" [ label=" ",color="blue",arrowhead="dot" ]; -"257" -> "693E" [ label=" ",color="blue",arrowhead="dot" ]; -"258" -> "695E" [ label=" ",color="blue",arrowhead="dot" ]; -"259" -> "697E" [ label=" ",color="blue",arrowhead="dot" ]; -"260" -> "699E" [ label=" ",color="blue",arrowhead="dot" ]; -"261" -> "703E" [ label=" ",color="blue",arrowhead="dot" ]; -"262" -> "705E" [ label=" ",color="blue",arrowhead="dot" ]; -"264" -> "709E" [ label=" ",color="blue",arrowhead="dot" ]; -"265" -> "711E" [ label=" ",color="blue",arrowhead="dot" ]; -"266" -> "713E" [ label=" ",color="blue",arrowhead="dot" ]; -"267" -> "715E" [ label=" ",color="blue",arrowhead="dot" ]; -"268" -> "717E" [ label=" ",color="blue",arrowhead="dot" ]; -"269" -> "719E" [ label=" ",color="blue",arrowhead="dot" ]; -"270" -> "721E" [ label=" ",color="blue",arrowhead="dot" ]; -"272" -> "34E" [ label=" ",color="blue",arrowhead="dot" ]; -"272" -> "252E" [ label=" ",color="blue",arrowhead="dot" ]; -"272" -> "436E" [ label=" ",color="blue",arrowhead="dot" ]; -"274" -> "59E" [ label=" ",color="blue",arrowhead="dot" ]; -"274" -> "500E" [ label=" ",color="blue",arrowhead="dot" ]; -"274" -> "720E" [ label=" ",color="blue",arrowhead="dot" ]; -"275" -> "98E" [ label=" ",color="blue",arrowhead="dot" ]; -"278" -> "35E" [ label=" ",color="blue",arrowhead="dot" ]; -"278" -> "488E" [ label=" ",color="blue",arrowhead="dot" ]; -"278" -> "598E" [ label=" ",color="blue",arrowhead="dot" ]; -"278" -> "604E" [ label=" ",color="blue",arrowhead="dot" ]; -"278" -> "628E" [ label=" ",color="blue",arrowhead="dot" ]; -"279" -> "99E" [ label=" ",color="blue",arrowhead="dot" ]; -"280" -> "242E" [ label=" ",color="blue",arrowhead="dot" ]; -"280" -> "270E" [ label=" ",color="blue",arrowhead="dot" ]; -"280" -> "272E" [ label=" ",color="blue",arrowhead="dot" ]; -"280" -> "284E" [ label=" ",color="blue",arrowhead="dot" ]; -"280" -> "286E" [ label=" ",color="blue",arrowhead="dot" ]; -"280" -> "288E" [ label=" ",color="blue",arrowhead="dot" ]; -"280" -> "586E" [ label=" ",color="blue",arrowhead="dot" ]; -"280" -> "763E" [ label=" ",color="blue",arrowhead="dot" ]; -"281" -> "45E" [ label=" ",color="blue",arrowhead="dot" ]; -"281" -> "470E" [ label=" ",color="blue",arrowhead="dot" ]; -"281" -> "670E" [ label=" ",color="blue",arrowhead="dot" ]; -"281" -> "722E" [ label=" ",color="blue",arrowhead="dot" ]; -"282" -> "103E" [ label=" ",color="blue",arrowhead="dot" ]; -"283" -> "165E" [ label=" ",color="blue",arrowhead="dot" ]; -"284" -> "39E" [ label=" ",color="blue",arrowhead="dot" ]; -"284" -> "224E" [ label=" ",color="blue",arrowhead="dot" ]; -"284" -> "268E" [ label=" ",color="blue",arrowhead="dot" ]; -"284" -> "632E" [ label=" ",color="blue",arrowhead="dot" ]; -"284" -> "710E" [ label=" ",color="blue",arrowhead="dot" ]; -"285" -> "53E" [ label=" ",color="blue",arrowhead="dot" ]; -"286" -> "38E" [ label=" ",color="blue",arrowhead="dot" ]; -"286" -> "166E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "40E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "218E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "244E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "246E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "258E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "290E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "292E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "308E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "318E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "388E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "472E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "478E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "566E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "570E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "574E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "608E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "614E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "658E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "664E" [ label=" ",color="blue",arrowhead="dot" ]; -"288" -> "682E" [ label=" ",color="blue",arrowhead="dot" ]; -"289" -> "41E" [ label=" ",color="blue",arrowhead="dot" ]; -"289" -> "636E" [ label=" ",color="blue",arrowhead="dot" ]; -"289" -> "642E" [ label=" ",color="blue",arrowhead="dot" ]; -"289" -> "690E" [ label=" ",color="blue",arrowhead="dot" ]; -"289" -> "700E" [ label=" ",color="blue",arrowhead="dot" ]; -"290" -> "56E" [ label=" ",color="blue",arrowhead="dot" ]; -"290" -> "264E" [ label=" ",color="blue",arrowhead="dot" ]; -"290" -> "510E" [ label=" ",color="blue",arrowhead="dot" ]; -"290" -> "718E" [ label=" ",color="blue",arrowhead="dot" ]; -"291" -> "66E" [ label=" ",color="blue",arrowhead="dot" ]; -"291" -> "76E" [ label=" ",color="blue",arrowhead="dot" ]; -"291" -> "610E" [ label=" ",color="blue",arrowhead="dot" ]; -"292" -> "73E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "49E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "214E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "216E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "236E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "278E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "358E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "398E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "400E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "402E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "404E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "406E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "408E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "412E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "438E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "448E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "476E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "504E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "552E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "634E" [ label=" ",color="blue",arrowhead="dot" ]; -"293" -> "768E" [ label=" ",color="blue",arrowhead="dot" ]; -"295" -> "44E" [ label=" ",color="blue",arrowhead="dot" ]; -"295" -> "92E" [ label=" ",color="blue",arrowhead="dot" ]; -"295" -> "250E" [ label=" ",color="blue",arrowhead="dot" ]; -"295" -> "316E" [ label=" ",color="blue",arrowhead="dot" ]; -"295" -> "380E" [ label=" ",color="blue",arrowhead="dot" ]; -"295" -> "424E" [ label=" ",color="blue",arrowhead="dot" ]; -"295" -> "442E" [ label=" ",color="blue",arrowhead="dot" ]; -"295" -> "446E" [ label=" ",color="blue",arrowhead="dot" ]; -"295" -> "454E" [ label=" ",color="blue",arrowhead="dot" ]; -"295" -> "460E" [ label=" ",color="blue",arrowhead="dot" ]; -"295" -> "462E" [ label=" ",color="blue",arrowhead="dot" ]; -"295" -> "648E" [ label=" ",color="blue",arrowhead="dot" ]; -"295" -> "656E" [ label=" ",color="blue",arrowhead="dot" ]; -"295" -> "666E" [ label=" ",color="blue",arrowhead="dot" ]; -"295" -> "692E" [ label=" ",color="blue",arrowhead="dot" ]; -"295" -> "712E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "47E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "330E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "514E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "516E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "518E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "520E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "522E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "526E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "528E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "530E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "532E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "534E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "536E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "538E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "540E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "542E" [ label=" ",color="blue",arrowhead="dot" ]; -"296" -> "544E" [ label=" ",color="blue",arrowhead="dot" ]; -"297" -> "46E" [ label=" ",color="blue",arrowhead="dot" ]; -"297" -> "93E" [ label=" ",color="blue",arrowhead="dot" ]; -"297" -> "206E" [ label=" ",color="blue",arrowhead="dot" ]; -"297" -> "426E" [ label=" ",color="blue",arrowhead="dot" ]; -"297" -> "550E" [ label=" ",color="blue",arrowhead="dot" ]; -"297" -> "706E" [ label=" ",color="blue",arrowhead="dot" ]; -"298" -> "36E" [ label=" ",color="blue",arrowhead="dot" ]; -"298" -> "95E" [ label=" ",color="blue",arrowhead="dot" ]; -"298" -> "364E" [ label=" ",color="blue",arrowhead="dot" ]; -"298" -> "394E" [ label=" ",color="blue",arrowhead="dot" ]; -"298" -> "420E" [ label=" ",color="blue",arrowhead="dot" ]; -"298" -> "456E" [ label=" ",color="blue",arrowhead="dot" ]; -"298" -> "624E" [ label=" ",color="blue",arrowhead="dot" ]; -"299" -> "48E" [ label=" ",color="blue",arrowhead="dot" ]; -"299" -> "168E" [ label=" ",color="blue",arrowhead="dot" ]; -"299" -> "260E" [ label=" ",color="blue",arrowhead="dot" ]; -"299" -> "282E" [ label=" ",color="blue",arrowhead="dot" ]; -"299" -> "554E" [ label=" ",color="blue",arrowhead="dot" ]; -"299" -> "590E" [ label=" ",color="blue",arrowhead="dot" ]; -"299" -> "767E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "62E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "190E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "226E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "238E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "254E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "256E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "262E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "266E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "274E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "276E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "294E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "296E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "310E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "320E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "322E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "332E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "340E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "344E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "346E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "348E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "374E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "378E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "452E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "508E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "524E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "612E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "626E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "638E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "644E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "654E" [ label=" ",color="blue",arrowhead="dot" ]; -"300" -> "672E" [ label=" ",color="blue",arrowhead="dot" ]; -"302" -> "797E" [ label=" ",color="blue",arrowhead="dot" ]; -"302" -> "798E" [ label=" ",color="blue",arrowhead="dot" ]; -"303" -> "52E" [ label=" ",color="blue",arrowhead="dot" ]; -"303" -> "650E" [ label=" ",color="blue",arrowhead="dot" ]; -"304" -> "50E" [ label=" ",color="blue",arrowhead="dot" ]; -"304" -> "640E" [ label=" ",color="blue",arrowhead="dot" ]; -"304" -> "646E" [ label=" ",color="blue",arrowhead="dot" ]; -"304" -> "652E" [ label=" ",color="blue",arrowhead="dot" ]; -"306" -> "55E" [ label=" ",color="blue",arrowhead="dot" ]; -"306" -> "220E" [ label=" ",color="blue",arrowhead="dot" ]; -"306" -> "338E" [ label=" ",color="blue",arrowhead="dot" ]; -"306" -> "368E" [ label=" ",color="blue",arrowhead="dot" ]; -"306" -> "486E" [ label=" ",color="blue",arrowhead="dot" ]; -"306" -> "490E" [ label=" ",color="blue",arrowhead="dot" ]; -"306" -> "562E" [ label=" ",color="blue",arrowhead="dot" ]; -"306" -> "564E" [ label=" ",color="blue",arrowhead="dot" ]; -"306" -> "600E" [ label=" ",color="blue",arrowhead="dot" ]; -"306" -> "668E" [ label=" ",color="blue",arrowhead="dot" ]; -"306" -> "674E" [ label=" ",color="blue",arrowhead="dot" ]; -"306" -> "698E" [ label=" ",color="blue",arrowhead="dot" ]; -"307" -> "107E" [ label=" ",color="blue",arrowhead="dot" ]; -"308" -> "108E" [ label=" ",color="blue",arrowhead="dot" ]; -"309" -> "109E" [ label=" ",color="blue",arrowhead="dot" ]; -"310" -> "110E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "58E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "234E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "300E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "306E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "314E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "342E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "354E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "370E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "382E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "422E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "444E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "582E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "620E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "630E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "684E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "696E" [ label=" ",color="blue",arrowhead="dot" ]; -"311" -> "801E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "42E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "192E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "194E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "196E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "198E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "200E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "202E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "204E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "312E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "336E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "376E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "384E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "386E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "428E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "474E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "484E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "546E" [ label=" ",color="blue",arrowhead="dot" ]; -"312" -> "548E" [ label=" ",color="blue",arrowhead="dot" ]; -"314" -> "113E" [ label=" ",color="blue",arrowhead="dot" ]; -"315" -> "43E" [ label=" ",color="blue",arrowhead="dot" ]; -"315" -> "240E" [ label=" ",color="blue",arrowhead="dot" ]; -"315" -> "298E" [ label=" ",color="blue",arrowhead="dot" ]; -"315" -> "334E" [ label=" ",color="blue",arrowhead="dot" ]; -"315" -> "360E" [ label=" ",color="blue",arrowhead="dot" ]; -"315" -> "390E" [ label=" ",color="blue",arrowhead="dot" ]; -"315" -> "418E" [ label=" ",color="blue",arrowhead="dot" ]; -"315" -> "492E" [ label=" ",color="blue",arrowhead="dot" ]; -"315" -> "502E" [ label=" ",color="blue",arrowhead="dot" ]; -"315" -> "584E" [ label=" ",color="blue",arrowhead="dot" ]; -"315" -> "588E" [ label=" ",color="blue",arrowhead="dot" ]; -"315" -> "602E" [ label=" ",color="blue",arrowhead="dot" ]; -"315" -> "606E" [ label=" ",color="blue",arrowhead="dot" ]; -"315" -> "662E" [ label=" ",color="blue",arrowhead="dot" ]; -"316" -> "51E" [ label=" ",color="blue",arrowhead="dot" ]; -"317" -> "116E" [ label=" ",color="blue",arrowhead="dot" ]; -"318" -> "74E" [ label=" ",color="blue",arrowhead="dot" ]; -"319" -> "57E" [ label=" ",color="blue",arrowhead="dot" ]; -"319" -> "94E" [ label=" ",color="blue",arrowhead="dot" ]; -"319" -> "350E" [ label=" ",color="blue",arrowhead="dot" ]; -"319" -> "440E" [ label=" ",color="blue",arrowhead="dot" ]; -"319" -> "466E" [ label=" ",color="blue",arrowhead="dot" ]; -"319" -> "676E" [ label=" ",color="blue",arrowhead="dot" ]; -"320" -> "60E" [ label=" ",color="blue",arrowhead="dot" ]; -"320" -> "366E" [ label=" ",color="blue",arrowhead="dot" ]; -"320" -> "434E" [ label=" ",color="blue",arrowhead="dot" ]; -"320" -> "458E" [ label=" ",color="blue",arrowhead="dot" ]; -"320" -> "618E" [ label=" ",color="blue",arrowhead="dot" ]; -"321" -> "72E" [ label=" ",color="blue",arrowhead="dot" ]; -"321" -> "362E" [ label=" ",color="blue",arrowhead="dot" ]; -"321" -> "372E" [ label=" ",color="blue",arrowhead="dot" ]; -"321" -> "572E" [ label=" ",color="blue",arrowhead="dot" ]; -"322" -> "54E" [ label=" ",color="blue",arrowhead="dot" ]; -"322" -> "222E" [ label=" ",color="blue",arrowhead="dot" ]; -"322" -> "302E" [ label=" ",color="blue",arrowhead="dot" ]; -"322" -> "556E" [ label=" ",color="blue",arrowhead="dot" ]; -"322" -> "558E" [ label=" ",color="blue",arrowhead="dot" ]; -"323" -> "37E" [ label=" ",color="blue",arrowhead="dot" ]; -"323" -> "208E" [ label=" ",color="blue",arrowhead="dot" ]; -"323" -> "210E" [ label=" ",color="blue",arrowhead="dot" ]; -"323" -> "352E" [ label=" ",color="blue",arrowhead="dot" ]; -"323" -> "450E" [ label=" ",color="blue",arrowhead="dot" ]; -"323" -> "568E" [ label=" ",color="blue",arrowhead="dot" ]; -"323" -> "576E" [ label=" ",color="blue",arrowhead="dot" ]; -"323" -> "686E" [ label=" ",color="blue",arrowhead="dot" ]; -"324" -> "228E" [ label=" ",color="blue",arrowhead="dot" ]; -"324" -> "248E" [ label=" ",color="blue",arrowhead="dot" ]; -"324" -> "304E" [ label=" ",color="blue",arrowhead="dot" ]; -"324" -> "468E" [ label=" ",color="blue",arrowhead="dot" ]; -"324" -> "578E" [ label=" ",color="blue",arrowhead="dot" ]; -"324" -> "660E" [ label=" ",color="blue",arrowhead="dot" ]; -"324" -> "688E" [ label=" ",color="blue",arrowhead="dot" ]; -"324" -> "694E" [ label=" ",color="blue",arrowhead="dot" ]; -"324" -> "714E" [ label=" ",color="blue",arrowhead="dot" ]; -"324" -> "766E" [ label=" ",color="blue",arrowhead="dot" ]; -"325" -> "97E" [ label=" ",color="blue",arrowhead="dot" ]; -"325" -> "506E" [ label=" ",color="blue",arrowhead="dot" ]; -"326" -> "61E" [ label=" ",color="blue",arrowhead="dot" ]; -"326" -> "175E" [ label=" ",color="blue",arrowhead="dot" ]; -"326" -> "482E" [ label=" ",color="blue",arrowhead="dot" ]; -"328" -> "75E" [ label=" ",color="blue",arrowhead="dot" ]; -"328" -> "580E" [ label=" ",color="blue",arrowhead="dot" ]; -"329" -> "96E" [ label=" ",color="blue",arrowhead="dot" ]; -"330" -> "100E" [ label=" ",color="blue",arrowhead="dot" ]; -"330" -> "170E" [ label=" ",color="blue",arrowhead="dot" ]; -"333" -> "63E" [ label=" ",color="blue",arrowhead="dot" ]; -"333" -> "67E" [ label=" ",color="blue",arrowhead="dot" ]; -"333" -> "68E" [ label=" ",color="blue",arrowhead="dot" ]; -"333" -> "69E" [ label=" ",color="blue",arrowhead="dot" ]; -"333" -> "70E" [ label=" ",color="blue",arrowhead="dot" ]; -"333" -> "71E" [ label=" ",color="blue",arrowhead="dot" ]; -"333" -> "802E" [ label=" ",color="blue",arrowhead="dot" ]; -"333" -> "793E" [ label=" ",color="blue",arrowhead="dot" ]; -"334" -> "64E" [ label=" ",color="blue",arrowhead="dot" ]; -"334" -> "81E" [ label=" ",color="blue",arrowhead="dot" ]; -"334" -> "82E" [ label=" ",color="blue",arrowhead="dot" ]; -"334" -> "83E" [ label=" ",color="blue",arrowhead="dot" ]; -"334" -> "84E" [ label=" ",color="blue",arrowhead="dot" ]; -"334" -> "85E" [ label=" ",color="blue",arrowhead="dot" ]; -"334" -> "86E" [ label=" ",color="blue",arrowhead="dot" ]; -"334" -> "87E" [ label=" ",color="blue",arrowhead="dot" ]; -"334" -> "88E" [ label=" ",color="blue",arrowhead="dot" ]; -"334" -> "89E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "1E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "2E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "3E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "4E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "5E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "6E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "7E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "8E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "9E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "10E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "11E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "12E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "13E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "14E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "15E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "16E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "17E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "18E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "19E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "20E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "21E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "22E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "23E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "24E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "25E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "26E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "27E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "28E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "29E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "30E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "31E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "65E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "119E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "150E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "176E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "743E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "744E" [ label=" ",color="blue",arrowhead="dot" ]; -"336" -> "764E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "120E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "121E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "122E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "123E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "124E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "125E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "126E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "127E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "128E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "129E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "130E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "131E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "132E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "133E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "134E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "135E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "136E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "137E" [ label=" ",color="blue",arrowhead="dot" ]; -"337" -> "138E" [ label=" ",color="blue",arrowhead="dot" ]; -"339" -> "151E" [ label=" ",color="blue",arrowhead="dot" ]; -"339" -> "153E" [ label=" ",color="blue",arrowhead="dot" ]; -"339" -> "154E" [ label=" ",color="blue",arrowhead="dot" ]; -"339" -> "155E" [ label=" ",color="blue",arrowhead="dot" ]; -"339" -> "156E" [ label=" ",color="blue",arrowhead="dot" ]; -"339" -> "157E" [ label=" ",color="blue",arrowhead="dot" ]; -"339" -> "158E" [ label=" ",color="blue",arrowhead="dot" ]; -"339" -> "159E" [ label=" ",color="blue",arrowhead="dot" ]; -"339" -> "160E" [ label=" ",color="blue",arrowhead="dot" ]; -"339" -> "161E" [ label=" ",color="blue",arrowhead="dot" ]; -"339" -> "162E" [ label=" ",color="blue",arrowhead="dot" ]; -"347" -> "139E" [ label=" ",color="blue",arrowhead="dot" ]; -"347" -> "795E" [ label=" ",color="blue",arrowhead="dot" ]; -"348" -> "799E" [ label=" ",color="blue",arrowhead="dot" ]; -"348" -> "800E" [ label=" ",color="blue",arrowhead="dot" ]; -"349" -> "141E" [ label=" ",color="blue",arrowhead="dot" ]; -"350" -> "142E" [ label=" ",color="blue",arrowhead="dot" ]; -"350" -> "678E" [ label=" ",color="blue",arrowhead="dot" ]; -"351" -> "143E" [ label=" ",color="blue",arrowhead="dot" ]; -"351" -> "232E" [ label=" ",color="blue",arrowhead="dot" ]; -"351" -> "680E" [ label=" ",color="blue",arrowhead="dot" ]; -"351" -> "704E" [ label=" ",color="blue",arrowhead="dot" ]; -"352" -> "144E" [ label=" ",color="blue",arrowhead="dot" ]; -"352" -> "432E" [ label=" ",color="blue",arrowhead="dot" ]; -"353" -> "145E" [ label=" ",color="blue",arrowhead="dot" ]; -"354" -> "146E" [ label=" ",color="blue",arrowhead="dot" ]; -"354" -> "396E" [ label=" ",color="blue",arrowhead="dot" ]; -"355" -> "147E" [ label=" ",color="blue",arrowhead="dot" ]; -"356" -> "148E" [ label=" ",color="blue",arrowhead="dot" ]; -"357" -> "149E" [ label=" ",color="blue",arrowhead="dot" ]; -"358" -> "167E" [ label=" ",color="blue",arrowhead="dot" ]; -"359" -> "169E" [ label=" ",color="blue",arrowhead="dot" ]; -"360" -> "171E" [ label=" ",color="blue",arrowhead="dot" ]; -"361" -> "172E" [ label=" ",color="blue",arrowhead="dot" ]; -"362" -> "173E" [ label=" ",color="blue",arrowhead="dot" ]; -"363" -> "174E" [ label=" ",color="blue",arrowhead="dot" ]; -"364" -> "101E" [ label=" ",color="blue",arrowhead="dot" ]; -"365" -> "102E" [ label=" ",color="blue",arrowhead="dot" ]; -"367" -> "104E" [ label=" ",color="blue",arrowhead="dot" ]; -"368" -> "105E" [ label=" ",color="blue",arrowhead="dot" ]; -"369" -> "106E" [ label=" ",color="blue",arrowhead="dot" ]; -"374" -> "111E" [ label=" ",color="blue",arrowhead="dot" ]; -"375" -> "112E" [ label=" ",color="blue",arrowhead="dot" ]; -"377" -> "114E" [ label=" ",color="blue",arrowhead="dot" ]; -"378" -> "115E" [ label=" ",color="blue",arrowhead="dot" ]; -"380" -> "117E" [ label=" ",color="blue",arrowhead="dot" ]; -"380" -> "392E" [ label=" ",color="blue",arrowhead="dot" ]; -"381" -> "118E" [ label=" ",color="blue",arrowhead="dot" ]; -"382" -> "177E" [ label=" ",color="blue",arrowhead="dot" ]; -"382" -> "178E" [ label=" ",color="blue",arrowhead="dot" ]; -"382" -> "179E" [ label=" ",color="blue",arrowhead="dot" ]; -"382" -> "180E" [ label=" ",color="blue",arrowhead="dot" ]; -"382" -> "181E" [ label=" ",color="blue",arrowhead="dot" ]; -"382" -> "182E" [ label=" ",color="blue",arrowhead="dot" ]; -"382" -> "183E" [ label=" ",color="blue",arrowhead="dot" ]; -"382" -> "184E" [ label=" ",color="blue",arrowhead="dot" ]; -"382" -> "185E" [ label=" ",color="blue",arrowhead="dot" ]; -"382" -> "186E" [ label=" ",color="blue",arrowhead="dot" ]; -"382" -> "187E" [ label=" ",color="blue",arrowhead="dot" ]; -"382" -> "188E" [ label=" ",color="blue",arrowhead="dot" ]; -"383" -> "730E" [ label=" ",color="blue",arrowhead="dot" ]; -"383" -> "732E" [ label=" ",color="blue",arrowhead="dot" ]; -"383" -> "741E" [ label=" ",color="blue",arrowhead="dot" ]; -"383" -> "765E" [ label=" ",color="blue",arrowhead="dot" ]; -"383" -> "796E" [ label=" ",color="blue",arrowhead="dot" ]; -"384" -> "726E" [ label=" ",color="blue",arrowhead="dot" ]; -"384" -> "728E" [ label=" ",color="blue",arrowhead="dot" ]; -"384" -> "742E" [ label=" ",color="blue",arrowhead="dot" ]; -"385" -> "328E" [ label=" ",color="blue",arrowhead="dot" ]; -"385" -> "496E" [ label=" ",color="blue",arrowhead="dot" ]; -"385" -> "594E" [ label=" ",color="blue",arrowhead="dot" ]; -"385" -> "622E" [ label=" ",color="blue",arrowhead="dot" ]; -"385" -> "754E" [ label=" ",color="blue",arrowhead="dot" ]; -"385" -> "755E" [ label=" ",color="blue",arrowhead="dot" ]; -"385" -> "756E" [ label=" ",color="blue",arrowhead="dot" ]; -"385" -> "757E" [ label=" ",color="blue",arrowhead="dot" ]; -"385" -> "758E" [ label=" ",color="blue",arrowhead="dot" ]; -"385" -> "759E" [ label=" ",color="blue",arrowhead="dot" ]; -"385" -> "760E" [ label=" ",color="blue",arrowhead="dot" ]; -"385" -> "761E" [ label=" ",color="blue",arrowhead="dot" ]; -"385" -> "762E" [ label=" ",color="blue",arrowhead="dot" ]; -"1E" -> "34E" [ color="purple",arrowhead="none" ]; -"2E" -> "35E" [ color="purple",arrowhead="none" ]; -"3E" -> "36E" [ color="purple",arrowhead="none" ]; -"4E" -> "37E" [ color="purple",arrowhead="none" ]; -"5E" -> "38E" [ color="purple",arrowhead="none" ]; -"6E" -> "39E" [ color="purple",arrowhead="none" ]; -"7E" -> "40E" [ color="purple",arrowhead="none" ]; -"9E" -> "41E" [ color="purple",arrowhead="none" ]; -"10E" -> "42E" [ color="purple",arrowhead="none" ]; -"11E" -> "43E" [ color="purple",arrowhead="none" ]; -"12E" -> "44E" [ color="purple",arrowhead="none" ]; -"13E" -> "45E" [ color="purple",arrowhead="none" ]; -"14E" -> "46E" [ color="purple",arrowhead="none" ]; -"15E" -> "47E" [ color="purple",arrowhead="none" ]; -"16E" -> "48E" [ color="purple",arrowhead="none" ]; -"49E" -> "17E" [ color="purple",arrowhead="none" ]; -"18E" -> "50E" [ color="purple",arrowhead="none" ]; -"19E" -> "51E" [ color="purple",arrowhead="none" ]; -"20E" -> "52E" [ color="purple",arrowhead="none" ]; -"21E" -> "53E" [ color="purple",arrowhead="none" ]; -"22E" -> "54E" [ color="purple",arrowhead="none" ]; -"23E" -> "55E" [ color="purple",arrowhead="none" ]; -"24E" -> "56E" [ color="purple",arrowhead="none" ]; -"25E" -> "57E" [ color="purple",arrowhead="none" ]; -"26E" -> "58E" [ color="purple",arrowhead="none" ]; -"27E" -> "59E" [ color="purple",arrowhead="none" ]; -"28E" -> "60E" [ color="purple",arrowhead="none" ]; -"29E" -> "61E" [ color="purple",arrowhead="none" ]; -"30E" -> "62E" [ color="purple",arrowhead="none" ]; -"31E" -> "63E" [ color="purple",arrowhead="none" ]; -"64E" -> "65E" [ color="purple",arrowhead="none" ]; -"66E" -> "8E" [ color="purple",arrowhead="none" ]; -"71E" -> "76E" [ color="purple",arrowhead="none" ]; -"67E" -> "72E" [ color="purple",arrowhead="none" ]; -"68E" -> "73E" [ color="purple",arrowhead="none" ]; -"69E" -> "74E" [ color="purple",arrowhead="none" ]; -"70E" -> "75E" [ color="purple",arrowhead="none" ]; -"81E" -> "92E" [ color="purple",arrowhead="none" ]; -"82E" -> "93E" [ color="purple",arrowhead="none" ]; -"83E" -> "94E" [ color="purple",arrowhead="none" ]; -"84E" -> "95E" [ color="purple",arrowhead="none" ]; -"85E" -> "96E" [ color="purple",arrowhead="none" ]; -"86E" -> "97E" [ color="purple",arrowhead="none" ]; -"87E" -> "98E" [ color="purple",arrowhead="none" ]; -"88E" -> "99E" [ color="purple",arrowhead="none" ]; -"89E" -> "100E" [ color="purple",arrowhead="none" ]; -"101E" -> "120E" [ color="purple",arrowhead="none" ]; -"102E" -> "121E" [ color="purple",arrowhead="none" ]; -"103E" -> "122E" [ color="purple",arrowhead="none" ]; -"104E" -> "123E" [ color="purple",arrowhead="none" ]; -"105E" -> "124E" [ color="purple",arrowhead="none" ]; -"106E" -> "125E" [ color="purple",arrowhead="none" ]; -"107E" -> "126E" [ color="purple",arrowhead="none" ]; -"108E" -> "127E" [ color="purple",arrowhead="none" ]; -"109E" -> "128E" [ color="purple",arrowhead="none" ]; -"110E" -> "129E" [ color="purple",arrowhead="none" ]; -"111E" -> "130E" [ color="purple",arrowhead="none" ]; -"112E" -> "131E" [ color="purple",arrowhead="none" ]; -"113E" -> "132E" [ color="purple",arrowhead="none" ]; -"114E" -> "133E" [ color="purple",arrowhead="none" ]; -"115E" -> "134E" [ color="purple",arrowhead="none" ]; -"116E" -> "135E" [ color="purple",arrowhead="none" ]; -"117E" -> "136E" [ color="purple",arrowhead="none" ]; -"118E" -> "137E" [ color="purple",arrowhead="none" ]; -"119E" -> "138E" [ color="purple",arrowhead="none" ]; -"139E" -> "151E" [ color="purple",arrowhead="none" ]; -"141E" -> "153E" [ color="purple",arrowhead="none" ]; -"142E" -> "154E" [ color="purple",arrowhead="none" ]; -"143E" -> "155E" [ color="purple",arrowhead="none" ]; -"144E" -> "156E" [ color="purple",arrowhead="none" ]; -"145E" -> "157E" [ color="purple",arrowhead="none" ]; -"146E" -> "158E" [ color="purple",arrowhead="none" ]; -"147E" -> "159E" [ color="purple",arrowhead="none" ]; -"148E" -> "160E" [ color="purple",arrowhead="none" ]; -"149E" -> "161E" [ color="purple",arrowhead="none" ]; -"150E" -> "162E" [ color="purple",arrowhead="none" ]; -"165E" -> "177E" [ color="purple",arrowhead="none" ]; -"166E" -> "178E" [ color="purple",arrowhead="none" ]; -"167E" -> "179E" [ color="purple",arrowhead="none" ]; -"168E" -> "180E" [ color="purple",arrowhead="none" ]; -"169E" -> "181E" [ color="purple",arrowhead="none" ]; -"170E" -> "182E" [ color="purple",arrowhead="none" ]; -"171E" -> "183E" [ color="purple",arrowhead="none" ]; -"172E" -> "184E" [ color="purple",arrowhead="none" ]; -"173E" -> "185E" [ color="purple",arrowhead="none" ]; -"174E" -> "186E" [ color="purple",arrowhead="none" ]; -"175E" -> "187E" [ color="purple",arrowhead="none" ]; -"176E" -> "188E" [ color="purple",arrowhead="none" ]; -"189E" -> "190E" [ color="purple",arrowhead="none" ]; -"191E" -> "192E" [ color="purple",arrowhead="none" ]; -"193E" -> "194E" [ color="purple",arrowhead="none" ]; -"195E" -> "196E" [ color="purple",arrowhead="none" ]; -"197E" -> "198E" [ color="purple",arrowhead="none" ]; -"199E" -> "200E" [ color="purple",arrowhead="none" ]; -"201E" -> "202E" [ color="purple",arrowhead="none" ]; -"203E" -> "204E" [ color="purple",arrowhead="none" ]; -"205E" -> "206E" [ color="purple",arrowhead="none" ]; -"207E" -> "208E" [ color="purple",arrowhead="none" ]; -"209E" -> "210E" [ color="purple",arrowhead="none" ]; -"412E" -> "211E" [ color="purple",arrowhead="none" ]; -"214E" -> "213E" [ color="purple",arrowhead="none" ]; -"216E" -> "215E" [ color="purple",arrowhead="none" ]; -"217E" -> "218E" [ color="purple",arrowhead="none" ]; -"219E" -> "220E" [ color="purple",arrowhead="none" ]; -"221E" -> "222E" [ color="purple",arrowhead="none" ]; -"223E" -> "224E" [ color="purple",arrowhead="none" ]; -"225E" -> "226E" [ color="purple",arrowhead="none" ]; -"227E" -> "228E" [ color="purple",arrowhead="none" ]; -"231E" -> "232E" [ color="purple",arrowhead="none" ]; -"233E" -> "234E" [ color="purple",arrowhead="none" ]; -"236E" -> "235E" [ color="purple",arrowhead="none" ]; -"237E" -> "238E" [ color="purple",arrowhead="none" ]; -"239E" -> "240E" [ color="purple",arrowhead="none" ]; -"241E" -> "242E" [ color="purple",arrowhead="none" ]; -"243E" -> "244E" [ color="purple",arrowhead="none" ]; -"245E" -> "246E" [ color="purple",arrowhead="none" ]; -"247E" -> "248E" [ color="purple",arrowhead="none" ]; -"249E" -> "250E" [ color="purple",arrowhead="none" ]; -"251E" -> "252E" [ color="purple",arrowhead="none" ]; -"253E" -> "254E" [ color="purple",arrowhead="none" ]; -"255E" -> "256E" [ color="purple",arrowhead="none" ]; -"257E" -> "258E" [ color="purple",arrowhead="none" ]; -"259E" -> "260E" [ color="purple",arrowhead="none" ]; -"261E" -> "262E" [ color="purple",arrowhead="none" ]; -"263E" -> "264E" [ color="purple",arrowhead="none" ]; -"265E" -> "266E" [ color="purple",arrowhead="none" ]; -"267E" -> "268E" [ color="purple",arrowhead="none" ]; -"269E" -> "270E" [ color="purple",arrowhead="none" ]; -"271E" -> "272E" [ color="purple",arrowhead="none" ]; -"273E" -> "274E" [ color="purple",arrowhead="none" ]; -"275E" -> "276E" [ color="purple",arrowhead="none" ]; -"278E" -> "277E" [ color="purple",arrowhead="none" ]; -"279E" -> "767E" [ color="purple",arrowhead="none" ]; -"281E" -> "282E" [ color="purple",arrowhead="none" ]; -"283E" -> "284E" [ color="purple",arrowhead="none" ]; -"285E" -> "286E" [ color="purple",arrowhead="none" ]; -"768E" -> "287E" [ color="purple",arrowhead="none" ]; -"289E" -> "290E" [ color="purple",arrowhead="none" ]; -"291E" -> "292E" [ color="purple",arrowhead="none" ]; -"293E" -> "294E" [ color="purple",arrowhead="none" ]; -"295E" -> "296E" [ color="purple",arrowhead="none" ]; -"297E" -> "298E" [ color="purple",arrowhead="none" ]; -"299E" -> "300E" [ color="purple",arrowhead="none" ]; -"301E" -> "302E" [ color="purple",arrowhead="none" ]; -"303E" -> "304E" [ color="purple",arrowhead="none" ]; -"305E" -> "306E" [ color="purple",arrowhead="none" ]; -"307E" -> "308E" [ color="purple",arrowhead="none" ]; -"309E" -> "310E" [ color="purple",arrowhead="none" ]; -"311E" -> "312E" [ color="purple",arrowhead="none" ]; -"313E" -> "314E" [ color="purple",arrowhead="none" ]; -"315E" -> "316E" [ color="purple",arrowhead="none" ]; -"317E" -> "318E" [ color="purple",arrowhead="none" ]; -"319E" -> "320E" [ color="purple",arrowhead="none" ]; -"321E" -> "322E" [ color="purple",arrowhead="none" ]; -"327E" -> "800E" [ color="purple",arrowhead="none" ]; -"329E" -> "330E" [ color="purple",arrowhead="none" ]; -"331E" -> "332E" [ color="purple",arrowhead="none" ]; -"333E" -> "334E" [ color="purple",arrowhead="none" ]; -"335E" -> "336E" [ color="purple",arrowhead="none" ]; -"337E" -> "338E" [ color="purple",arrowhead="none" ]; -"339E" -> "340E" [ color="purple",arrowhead="none" ]; -"341E" -> "342E" [ color="purple",arrowhead="none" ]; -"343E" -> "344E" [ color="purple",arrowhead="none" ]; -"345E" -> "346E" [ color="purple",arrowhead="none" ]; -"347E" -> "348E" [ color="purple",arrowhead="none" ]; -"349E" -> "350E" [ color="purple",arrowhead="none" ]; -"351E" -> "352E" [ color="purple",arrowhead="none" ]; -"353E" -> "354E" [ color="purple",arrowhead="none" ]; -"412E" -> "355E" [ color="purple",arrowhead="none" ]; -"357E" -> "358E" [ color="purple",arrowhead="none" ]; -"359E" -> "360E" [ color="purple",arrowhead="none" ]; -"361E" -> "362E" [ color="purple",arrowhead="none" ]; -"363E" -> "364E" [ color="purple",arrowhead="none" ]; -"365E" -> "366E" [ color="purple",arrowhead="none" ]; -"367E" -> "368E" [ color="purple",arrowhead="none" ]; -"369E" -> "370E" [ color="purple",arrowhead="none" ]; -"371E" -> "372E" [ color="purple",arrowhead="none" ]; -"373E" -> "374E" [ color="purple",arrowhead="none" ]; -"375E" -> "376E" [ color="purple",arrowhead="none" ]; -"377E" -> "378E" [ color="purple",arrowhead="none" ]; -"379E" -> "380E" [ color="purple",arrowhead="none" ]; -"381E" -> "382E" [ color="purple",arrowhead="none" ]; -"383E" -> "384E" [ color="purple",arrowhead="none" ]; -"385E" -> "386E" [ color="purple",arrowhead="none" ]; -"387E" -> "388E" [ color="purple",arrowhead="none" ]; -"389E" -> "390E" [ color="purple",arrowhead="none" ]; -"391E" -> "392E" [ color="purple",arrowhead="none" ]; -"393E" -> "394E" [ color="purple",arrowhead="none" ]; -"395E" -> "396E" [ color="purple",arrowhead="none" ]; -"397E" -> "398E" [ color="purple",arrowhead="none" ]; -"399E" -> "400E" [ color="purple",arrowhead="none" ]; -"402E" -> "401E" [ color="purple",arrowhead="none" ]; -"404E" -> "403E" [ color="purple",arrowhead="none" ]; -"406E" -> "405E" [ color="purple",arrowhead="none" ]; -"408E" -> "407E" [ color="purple",arrowhead="none" ]; -"236E" -> "409E" [ color="purple",arrowhead="none" ]; -"412E" -> "411E" [ color="purple",arrowhead="none" ]; -"412E" -> "413E" [ color="purple",arrowhead="none" ]; -"278E" -> "415E" [ color="purple",arrowhead="none" ]; -"417E" -> "418E" [ color="purple",arrowhead="none" ]; -"419E" -> "420E" [ color="purple",arrowhead="none" ]; -"421E" -> "422E" [ color="purple",arrowhead="none" ]; -"423E" -> "424E" [ color="purple",arrowhead="none" ]; -"425E" -> "426E" [ color="purple",arrowhead="none" ]; -"427E" -> "428E" [ color="purple",arrowhead="none" ]; -"431E" -> "432E" [ color="purple",arrowhead="none" ]; -"433E" -> "434E" [ color="purple",arrowhead="none" ]; -"435E" -> "436E" [ color="purple",arrowhead="none" ]; -"438E" -> "437E" [ color="purple",arrowhead="none" ]; -"439E" -> "440E" [ color="purple",arrowhead="none" ]; -"441E" -> "442E" [ color="purple",arrowhead="none" ]; -"443E" -> "444E" [ color="purple",arrowhead="none" ]; -"445E" -> "446E" [ color="purple",arrowhead="none" ]; -"448E" -> "447E" [ color="purple",arrowhead="none" ]; -"449E" -> "450E" [ color="purple",arrowhead="none" ]; -"451E" -> "452E" [ color="purple",arrowhead="none" ]; -"453E" -> "454E" [ color="purple",arrowhead="none" ]; -"455E" -> "456E" [ color="purple",arrowhead="none" ]; -"457E" -> "458E" [ color="purple",arrowhead="none" ]; -"459E" -> "460E" [ color="purple",arrowhead="none" ]; -"461E" -> "462E" [ color="purple",arrowhead="none" ]; -"236E" -> "463E" [ color="purple",arrowhead="none" ]; -"465E" -> "466E" [ color="purple",arrowhead="none" ]; -"467E" -> "468E" [ color="purple",arrowhead="none" ]; -"469E" -> "470E" [ color="purple",arrowhead="none" ]; -"471E" -> "472E" [ color="purple",arrowhead="none" ]; -"473E" -> "474E" [ color="purple",arrowhead="none" ]; -"476E" -> "475E" [ color="purple",arrowhead="none" ]; -"477E" -> "478E" [ color="purple",arrowhead="none" ]; -"479E" -> "358E" [ color="purple",arrowhead="none" ]; -"481E" -> "482E" [ color="purple",arrowhead="none" ]; -"483E" -> "484E" [ color="purple",arrowhead="none" ]; -"485E" -> "486E" [ color="purple",arrowhead="none" ]; -"487E" -> "488E" [ color="purple",arrowhead="none" ]; -"489E" -> "490E" [ color="purple",arrowhead="none" ]; -"491E" -> "492E" [ color="purple",arrowhead="none" ]; -"495E" -> "795E" [ color="purple",arrowhead="none" ]; -"499E" -> "500E" [ color="purple",arrowhead="none" ]; -"501E" -> "502E" [ color="purple",arrowhead="none" ]; -"504E" -> "503E" [ color="purple",arrowhead="none" ]; -"505E" -> "506E" [ color="purple",arrowhead="none" ]; -"507E" -> "508E" [ color="purple",arrowhead="none" ]; -"509E" -> "510E" [ color="purple",arrowhead="none" ]; -"412E" -> "511E" [ color="purple",arrowhead="none" ]; -"513E" -> "514E" [ color="purple",arrowhead="none" ]; -"515E" -> "516E" [ color="purple",arrowhead="none" ]; -"517E" -> "518E" [ color="purple",arrowhead="none" ]; -"519E" -> "520E" [ color="purple",arrowhead="none" ]; -"521E" -> "522E" [ color="purple",arrowhead="none" ]; -"523E" -> "524E" [ color="purple",arrowhead="none" ]; -"525E" -> "526E" [ color="purple",arrowhead="none" ]; -"527E" -> "528E" [ color="purple",arrowhead="none" ]; -"529E" -> "530E" [ color="purple",arrowhead="none" ]; -"531E" -> "532E" [ color="purple",arrowhead="none" ]; -"533E" -> "534E" [ color="purple",arrowhead="none" ]; -"535E" -> "536E" [ color="purple",arrowhead="none" ]; -"537E" -> "538E" [ color="purple",arrowhead="none" ]; -"539E" -> "540E" [ color="purple",arrowhead="none" ]; -"541E" -> "542E" [ color="purple",arrowhead="none" ]; -"543E" -> "544E" [ color="purple",arrowhead="none" ]; -"545E" -> "546E" [ color="purple",arrowhead="none" ]; -"547E" -> "548E" [ color="purple",arrowhead="none" ]; -"549E" -> "550E" [ color="purple",arrowhead="none" ]; -"551E" -> "552E" [ color="purple",arrowhead="none" ]; -"553E" -> "554E" [ color="purple",arrowhead="none" ]; -"555E" -> "556E" [ color="purple",arrowhead="none" ]; -"557E" -> "558E" [ color="purple",arrowhead="none" ]; -"278E" -> "559E" [ color="purple",arrowhead="none" ]; -"561E" -> "562E" [ color="purple",arrowhead="none" ]; -"563E" -> "564E" [ color="purple",arrowhead="none" ]; -"565E" -> "566E" [ color="purple",arrowhead="none" ]; -"567E" -> "568E" [ color="purple",arrowhead="none" ]; -"569E" -> "570E" [ color="purple",arrowhead="none" ]; -"571E" -> "572E" [ color="purple",arrowhead="none" ]; -"573E" -> "574E" [ color="purple",arrowhead="none" ]; -"575E" -> "576E" [ color="purple",arrowhead="none" ]; -"577E" -> "578E" [ color="purple",arrowhead="none" ]; -"579E" -> "580E" [ color="purple",arrowhead="none" ]; -"581E" -> "582E" [ color="purple",arrowhead="none" ]; -"583E" -> "584E" [ color="purple",arrowhead="none" ]; -"585E" -> "586E" [ color="purple",arrowhead="none" ]; -"587E" -> "588E" [ color="purple",arrowhead="none" ]; -"589E" -> "590E" [ color="purple",arrowhead="none" ]; -"593E" -> "594E" [ color="purple",arrowhead="none" ]; -"597E" -> "598E" [ color="purple",arrowhead="none" ]; -"599E" -> "600E" [ color="purple",arrowhead="none" ]; -"601E" -> "602E" [ color="purple",arrowhead="none" ]; -"603E" -> "604E" [ color="purple",arrowhead="none" ]; -"605E" -> "606E" [ color="purple",arrowhead="none" ]; -"607E" -> "608E" [ color="purple",arrowhead="none" ]; -"609E" -> "610E" [ color="purple",arrowhead="none" ]; -"611E" -> "612E" [ color="purple",arrowhead="none" ]; -"613E" -> "614E" [ color="purple",arrowhead="none" ]; -"615E" -> "358E" [ color="purple",arrowhead="none" ]; -"617E" -> "618E" [ color="purple",arrowhead="none" ]; -"619E" -> "620E" [ color="purple",arrowhead="none" ]; -"621E" -> "622E" [ color="purple",arrowhead="none" ]; -"623E" -> "624E" [ color="purple",arrowhead="none" ]; -"625E" -> "626E" [ color="purple",arrowhead="none" ]; -"627E" -> "628E" [ color="purple",arrowhead="none" ]; -"629E" -> "630E" [ color="purple",arrowhead="none" ]; -"631E" -> "632E" [ color="purple",arrowhead="none" ]; -"634E" -> "633E" [ color="purple",arrowhead="none" ]; -"635E" -> "636E" [ color="purple",arrowhead="none" ]; -"637E" -> "638E" [ color="purple",arrowhead="none" ]; -"639E" -> "640E" [ color="purple",arrowhead="none" ]; -"641E" -> "642E" [ color="purple",arrowhead="none" ]; -"643E" -> "644E" [ color="purple",arrowhead="none" ]; -"645E" -> "646E" [ color="purple",arrowhead="none" ]; -"647E" -> "648E" [ color="purple",arrowhead="none" ]; -"649E" -> "650E" [ color="purple",arrowhead="none" ]; -"651E" -> "652E" [ color="purple",arrowhead="none" ]; -"653E" -> "654E" [ color="purple",arrowhead="none" ]; -"655E" -> "656E" [ color="purple",arrowhead="none" ]; -"657E" -> "658E" [ color="purple",arrowhead="none" ]; -"659E" -> "660E" [ color="purple",arrowhead="none" ]; -"661E" -> "662E" [ color="purple",arrowhead="none" ]; -"663E" -> "664E" [ color="purple",arrowhead="none" ]; -"665E" -> "666E" [ color="purple",arrowhead="none" ]; -"667E" -> "668E" [ color="purple",arrowhead="none" ]; -"669E" -> "670E" [ color="purple",arrowhead="none" ]; -"671E" -> "672E" [ color="purple",arrowhead="none" ]; -"673E" -> "674E" [ color="purple",arrowhead="none" ]; -"675E" -> "676E" [ color="purple",arrowhead="none" ]; -"679E" -> "680E" [ color="purple",arrowhead="none" ]; -"681E" -> "682E" [ color="purple",arrowhead="none" ]; -"683E" -> "684E" [ color="purple",arrowhead="none" ]; -"685E" -> "686E" [ color="purple",arrowhead="none" ]; -"687E" -> "688E" [ color="purple",arrowhead="none" ]; -"689E" -> "690E" [ color="purple",arrowhead="none" ]; -"691E" -> "692E" [ color="purple",arrowhead="none" ]; -"693E" -> "694E" [ color="purple",arrowhead="none" ]; -"695E" -> "696E" [ color="purple",arrowhead="none" ]; -"697E" -> "698E" [ color="purple",arrowhead="none" ]; -"699E" -> "700E" [ color="purple",arrowhead="none" ]; -"703E" -> "704E" [ color="purple",arrowhead="none" ]; -"705E" -> "706E" [ color="purple",arrowhead="none" ]; -"709E" -> "710E" [ color="purple",arrowhead="none" ]; -"711E" -> "712E" [ color="purple",arrowhead="none" ]; -"713E" -> "714E" [ color="purple",arrowhead="none" ]; -"715E" -> "398E" [ color="purple",arrowhead="none" ]; -"717E" -> "718E" [ color="purple",arrowhead="none" ]; -"719E" -> "720E" [ color="purple",arrowhead="none" ]; -"721E" -> "722E" [ color="purple",arrowhead="none" ]; -"725E" -> "726E" [ color="purple",arrowhead="none" ]; -"727E" -> "728E" [ color="purple",arrowhead="none" ]; -"729E" -> "730E" [ color="purple",arrowhead="none" ]; -"731E" -> "732E" [ color="purple",arrowhead="none" ]; -"741E" -> "743E" [ color="purple",arrowhead="none" ]; -"742E" -> "744E" [ color="purple",arrowhead="none" ]; -"745E" -> "754E" [ color="purple",arrowhead="none" ]; -"746E" -> "755E" [ color="purple",arrowhead="none" ]; -"747E" -> "756E" [ color="purple",arrowhead="none" ]; -"748E" -> "757E" [ color="purple",arrowhead="none" ]; -"749E" -> "758E" [ color="purple",arrowhead="none" ]; -"750E" -> "759E" [ color="purple",arrowhead="none" ]; -"751E" -> "760E" [ color="purple",arrowhead="none" ]; -"752E" -> "761E" [ color="purple",arrowhead="none" ]; -"753E" -> "762E" [ color="purple",arrowhead="none" ]; -"763E" -> "764E" [ color="purple",arrowhead="none" ]; -"765E" -> "766E" [ color="purple",arrowhead="none" ]; -"770E" -> "783E" [ color="purple",arrowhead="none" ]; -"770E" -> "784E" [ color="purple",arrowhead="none" ]; -"769E" -> "785E" [ color="purple",arrowhead="none" ]; -"769E" -> "786E" [ color="purple",arrowhead="none" ]; -"769E" -> "787E" [ color="purple",arrowhead="none" ]; -"770E" -> "788E" [ color="purple",arrowhead="none" ]; -"770E" -> "789E" [ color="purple",arrowhead="none" ]; -"769E" -> "790E" [ color="purple",arrowhead="none" ]; -"770E" -> "791E" [ color="purple",arrowhead="none" ]; -"769E" -> "792E" [ color="purple",arrowhead="none" ]; -"793E" -> "769E" [ color="purple",arrowhead="none" ]; -"769E" -> "784E" [ color="purple",arrowhead="none" ]; -"770E" -> "785E" [ color="purple",arrowhead="none" ]; -"788E" -> "787E" [ color="purple",arrowhead="none" ]; -"770E" -> "792E" [ color="purple",arrowhead="none" ]; -"798E" -> "799E" [ color="purple",arrowhead="none" ]; -"796E" -> "797E" [ color="purple",arrowhead="none" ]; -"793E" -> "789E" [ color="purple",arrowhead="none" ]; -"783E" -> "787E" [ color="purple",arrowhead="none" ]; -"784E" -> "792E" [ color="purple",arrowhead="none" ]; -"787E" -> "789E" [ color="purple",arrowhead="none" ]; -"769E" -> "791E" [ color="purple",arrowhead="none" ]; -"802E" -> "801E" [ color="purple",arrowhead="none" ]; -} diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/unix.dot b/jscomp/build_tests/ocamlgraph/editor/tests/unix.dot deleted file mode 100755 index e314a9e26b..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/unix.dot +++ /dev/null @@ -1,53 +0,0 @@ -/* courtesy Ian Darwin and Geoff Collyer, Softquad Inc. */ -digraph unix { - "5th Edition" -> "6th Edition"; - "5th Edition" -> "PWB 1.0"; - "6th Edition" -> "LSX"; - "6th Edition" -> "1 BSD"; - "6th Edition" -> "Mini Unix"; - "6th Edition" -> "Wollongong"; - "6th Edition" -> "Interdata"; - "Interdata" -> "Unix/TS 3.0"; - "Interdata" -> "PWB 2.0"; - "Interdata" -> "7th Edition"; - "7th Edition" -> "8th Edition"; - "7th Edition" -> "32V"; - "7th Edition" -> "V7M"; - "7th Edition" -> "Ultrix-11"; - "7th Edition" -> "Xenix"; - "7th Edition" -> "UniPlus+"; - "V7M" -> "Ultrix-11"; - "8th Edition" -> "9th Edition"; - "1 BSD" -> "2 BSD"; - "2 BSD" -> "2.8 BSD"; - "2.8 BSD" -> "Ultrix-11"; - "2.8 BSD" -> "2.9 BSD"; - "32V" -> "3 BSD"; - "3 BSD" -> "4 BSD"; - "4 BSD" -> "4.1 BSD"; - "4.1 BSD" -> "4.2 BSD"; - "4.1 BSD" -> "2.8 BSD"; - "4.1 BSD" -> "8th Edition"; - "4.2 BSD" -> "4.3 BSD"; - "4.2 BSD" -> "Ultrix-32"; - "PWB 1.0" -> "PWB 1.2"; - "PWB 1.0" -> "USG 1.0"; - "PWB 1.2" -> "PWB 2.0"; - "USG 1.0" -> "CB Unix 1"; - "USG 1.0" -> "USG 2.0"; - "CB Unix 1" -> "CB Unix 2"; - "CB Unix 2" -> "CB Unix 3"; - "CB Unix 3" -> "Unix/TS++"; - "CB Unix 3" -> "PDP-11 Sys V"; - "USG 2.0" -> "USG 3.0"; - "USG 3.0" -> "Unix/TS 3.0"; - "PWB 2.0" -> "Unix/TS 3.0"; - "Unix/TS 1.0" -> "Unix/TS 3.0"; - "Unix/TS 3.0" -> "TS 4.0"; - "Unix/TS++" -> "TS 4.0"; - "CB Unix 3" -> "TS 4.0"; - "TS 4.0" -> "System V.0"; - "System V.0" -> "System V.2"; - "System V.2" -> "System V.3"; -} - diff --git a/jscomp/build_tests/ocamlgraph/editor/tests/world.dot b/jscomp/build_tests/ocamlgraph/editor/tests/world.dot deleted file mode 100755 index 3e6e4e3708..0000000000 --- a/jscomp/build_tests/ocamlgraph/editor/tests/world.dot +++ /dev/null @@ -1,67 +0,0 @@ -digraph world { -size="7,7"; - {rank=same; S8 S24 S1 S35 S30;} - {rank=same; T8 T24 T1 T35 T30;} - {rank=same; 43 37 36 10 2;} - {rank=same; 25 9 38 40 13 17 12 18;} - {rank=same; 26 42 11 3 33 19 39 14 16;} - {rank=same; 4 31 34 21 41 28 20;} - {rank=same; 27 5 22 32 29 15;} - {rank=same; 6 23;} - {rank=same; 7;} - - S8 -> 9; - S24 -> 25; - S24 -> 27; - S1 -> 2; - S1 -> 10; - S35 -> 43; - S35 -> 36; - S30 -> 31; - S30 -> 33; - 9 -> 42; - 9 -> T1; - 25 -> T1; - 25 -> 26; - 27 -> T24; - 2 -> {3 ; 16 ; 17 ; T1 ; 18} - 10 -> { 11 ; 14 ; T1 ; 13; 12;} - 31 -> T1; - 31 -> 32; - 33 -> T30; - 33 -> 34; - 42 -> 4; - 26 -> 4; - 3 -> 4; - 16 -> 15; - 17 -> 19; - 18 -> 29; - 11 -> 4; - 14 -> 15; - 37 -> {39 ; 41 ; 38 ; 40;} - 13 -> 19; - 12 -> 29; - 43 -> 38; - 43 -> 40; - 36 -> 19; - 32 -> 23; - 34 -> 29; - 39 -> 15; - 41 -> 29; - 38 -> 4; - 40 -> 19; - 4 -> 5; - 19 -> {21 ; 20 ; 28;} - 5 -> {6 ; T35 ; 23;} - 21 -> 22; - 20 -> 15; - 28 -> 29; - 6 -> 7; - 15 -> T1; - 22 -> T35; - 22 -> 23; - 29 -> T30; - 7 -> T8; - 23 -> T24; - 23 -> T1; -} diff --git a/jscomp/build_tests/ocamlgraph/examples/color.ml b/jscomp/build_tests/ocamlgraph/examples/color.ml deleted file mode 100755 index ef4c6107cf..0000000000 --- a/jscomp/build_tests/ocamlgraph/examples/color.ml +++ /dev/null @@ -1,281 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2007 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* 4-coloring planar graphs *) - -open Printf -open Graph - -(* command line *) -let n_ = ref 30 -let prob_ = ref 0.5 -let seed_ = ref None - -let arg_spec = - ["-v", Arg.Int (fun i -> n_ := i), - " number of vertices"; - "-prob", Arg.Float (fun f -> prob_ := f), - " probability to discrad an edge"; - "-seed", Arg.Int (fun n -> seed_ := Some n), - " random seed" - ] -let () = Arg.parse arg_spec (fun _ -> ()) "usage: color " - -let n = !n_ -let prob = !prob_ - -let seed = match !seed_ with - | None -> Random.self_init (); Random.int (1 lsl 29) - | Some s -> s -let () = Format.printf "seed = %d@." seed; Random.init seed - -(* undirected graphs with integer coordinates and integer labels on edges *) - -module IntInt = struct - type t = int * int -end -module Int = struct - type t = int - let compare = compare - let hash = Hashtbl.hash - let equal = (=) - let default = 0 -end -module G = Imperative.Graph.AbstractLabeled(IntInt)(Int) -open G - -(* a random graph with n vertices *) -module R = Rand.Planar.I(G) -let g0 = R.graph ~xrange:(20,780) ~yrange:(20,580) ~prob n - -(* drawing *) -let round f = truncate (f +. 0.5) -let pi = 4.0 *. atan 1.0 - -open Graphics -let () = open_graph " 800x600" - -let vertex_radius = 5 - -let draw_edge v1 v2 = - let (xu,yu) = G.V.label v1 in - let (xv,yv) = G.V.label v2 in - set_color black; - let dx = float (xv - xu) in - let dy = float (yv - yu) in - let r = sqrt (dx *. dx +. dy *. dy) in - let d = float vertex_radius +. 3. in - let xs, ys = float xu +. d *. dx /. r, float yu +. d *. dy /. r in - let xd, yd = float xv -. d *. dx /. r, float yv -. d *. dy /. r in - moveto (round xs) (round ys); - lineto (round xd) (round yd) - -let draw_vertex v = - let (x,y) = G.V.label v in - set_color red; - draw_circle x y vertex_radius - -let color_vertex v color = - let x,y = G.V.label v in - set_color color; - fill_circle x y vertex_radius - -let draw_graph () = - clear_graph (); - set_color red; - set_line_width 1; - G.iter_vertex draw_vertex g0; - G.iter_edges draw_edge g0 - -module Dfs = Traverse.Dfs(G) -module Bfs = Traverse.Bfs(G) - -let test_bfs () = - let rec loop i = - let v = Bfs.get i in - color_vertex v red; - ignore (Graphics.wait_next_event [ Key_pressed ]); - loop (Bfs.step i) - in - try loop (Bfs.start g0) with Exit -> () - -let test_dfs () = - let rec loop i = - let v = Dfs.get i in - color_vertex v red; - ignore (Graphics.wait_next_event [ Key_pressed ]); - loop (Dfs.step i) - in - try loop (Dfs.start g0) with Exit -> () - -let cols = [| white; red; green; blue; yellow; black |] -exception NoColor - -(* Algo I. Brute force. *) - -module C = Coloring.Mark(G) - -let coloring_a k = - Mark.clear g0; - C.coloring g0 4; - iter_vertex (fun v -> color_vertex v cols.(Mark.get v)) g0 - -(* Algo II. - - we use marks to color; bits are used as follows: - 0: set if node is discarded at step 1 - 1-4: available colors - 5-7: the color (0 = not colored, else color in 1..4 - *) - -let print_8_bits x = - for i = 7 downto 0 do - if (x lsr i) land 1 = 1 then printf "1" else printf "0" - done - -let dump () = - let dump_mark v = printf "["; print_8_bits (Mark.get v); printf "]" in - iter_vertex dump_mark g0; - printf "\n"; flush stdout - -let mask_color = [| 0; 0b11101; 0b11011; 0b10111; 0b01111 |] - -let coloring_b () = - (* initially all 4 colors available and every vertex to be colored *) - iter_vertex (fun v -> Mark.set v 0b11110) g0; - (* first step: we eliminate vertices with less than 4 successors *) - let stack = Stack.create () in - let finish = ref false in - let round = ref 1 in - let nb_to_color = ref n in - while not !finish do - let c = ref 0 in - finish := true; - let erase v = - incr c; finish := false; Mark.set v 0b11111; Stack.push v stack - in - G.iter_vertex - (fun v -> if Mark.get v = 0 && out_degree g0 v < 4 then erase v) - g0; - printf "round %d: removed %d vertices\n" !round !c; - incr round; - nb_to_color := !nb_to_color - !c - done; - flush stdout; - (* second step: we 4-color the remaining of the graph *) - (* [try_color v i] tries to assigne color [i] to vertex [v] *) - let try_color v i = - assert (1 <= i && i <= 4); - let m = Mark.get v in - assert (m lsr 5 = 0); - if (m lsr i) land 1 = 0 then raise NoColor; (* color [i] not available *) - let remove_color w = - (* make color [i] unavailable for [w] *) - let m = Mark.get w in - if m lsr 5 > 0 then - assert (m lsr 5 <> i) (* [w] already colored *) - else begin - let m' = m land mask_color.(i) in - if m' = 0 then raise NoColor; (* no more color available for [w] *) - Mark.set w m' - end - in - iter_succ remove_color g0 v; - Mark.set v (m lor (i lsl 5)) - in - let uncolor v = - let m = Mark.get v in - let c = m lsr 5 in - assert (0 <= c && c <= 4); - if c > 0 then begin - Mark.set v (m land 0b11111); - let update w = - (* give back color [c] to [w] only when no more succ. has color [c] *) - try - iter_succ (fun u -> if Mark.get u lsr 5 = c then raise Exit) g0 w; - Mark.set w ((Mark.get w) lor (1 lsl c)) - with Exit -> - () - in - iter_succ update g0 v - end - in - if !nb_to_color > 0 then begin - let rec iterate iter = - let v = Bfs.get iter in - if Mark.get v land 1 = 1 then - (* no need to color this vertex *) - iterate (Bfs.step iter) - else begin - for i = 1 to 4 do - try try_color v i; iterate (Bfs.step iter); assert false - with NoColor -> uncolor v - done; - raise NoColor - end - in - try iterate (Bfs.start g0) with Exit -> () - end; - (* third step: we color the eliminated vertices, in reverse order *) - Stack.iter - (fun v -> - assert (Mark.get v land 1 = 1); - try - for i = 1 to 4 do - try try_color v i; raise Exit with NoColor -> uncolor v - done; - assert false (* we must succeed *) - with Exit -> ()) - stack; - (* finally we display the coloring *) - iter_vertex - (fun v -> - let c = (Mark.get v) lsr 5 in - assert (1 <= c && c <= 4); - color_vertex v cols.(c)) - g0 - -open Unix - -let utime f x = - let u = (times()).tms_utime in - let y = f x in - let ut = (times()).tms_utime -. u in - (y,ut) - -let print_utime f x = - let (y,ut) = utime f x in - Format.printf "user time: %2.2f@." ut; - y - -let () = - draw_graph (); - (* test_bfs (); *) - (* test_dfs (); *) - print_utime coloring_a 4; - (*ignore (Graphics.wait_next_event [ Key_pressed ]);*) - (*draw_graph ();*) - print_utime coloring_b (); - ignore (Graphics.wait_next_event [ Key_pressed ]); - close_graph () - - -(* -Local Variables: -compile-command: "make -C .. bin/color.opt" -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/examples/compare_prim_kruskal.ml b/jscomp/build_tests/ocamlgraph/examples/compare_prim_kruskal.ml deleted file mode 100755 index cb8606727f..0000000000 --- a/jscomp/build_tests/ocamlgraph/examples/compare_prim_kruskal.ml +++ /dev/null @@ -1,123 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2007 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* Kruskal and Prim tests *) - -open Printf -open Graph - -(* command line *) -let v_ = ref 30 -let e_ = ref 50 -let seed_ = ref None -let debug_ = ref false - -let arg_spec = - ["-v", Arg.Int (fun i -> v_ := i), - " number of vertices"; - "-e", Arg.Int (fun i -> e_ := i), - " number of edges"; - "-seed", Arg.Int (fun n -> seed_ := Some n), - " random seed"; - "--debug", Arg.Set debug_, "set the debug flag"; - ] -let () = Arg.parse arg_spec (fun _ -> ()) "usage: color " - -let v = !v_ -let e = !e_ -let debug = !debug_ - -let seed = match !seed_ with - | None -> Random.self_init (); Random.int (1 lsl 29) - | Some s -> s -let () = Format.printf "seed = %d@." seed; Random.init seed - -(* undirected graphs with integer coordinates and integer labels on edges *) - -module IntInt = struct - type t = int * int -end -module Int = struct - type t = int - let compare = compare - let hash = Hashtbl.hash - let equal = (=) - let default = 0 -end - -module G = Imperative.Graph.AbstractLabeled(Int)(Int) - -module R = Rand.I(G) - - - -module W = struct - type label = G.E.label - type t = int - let weight x = x - let zero = 0 - let add = (+) - let compare = compare -end - -module Time = struct - - open Unix - - let utime f x = - let u = (times()).tms_utime in - let y = f x in - let ut = (times()).tms_utime -. u in - y, ut - - (* runs f 5 times, removes minimum and maximum timings, and - returns the mean of the remaining three timings *) - let time5 f x = - let t = Array.init 5 (fun _ -> snd (utime f x)) in - if debug then Array.iter (fun x -> Printf.printf "%2.2f\n" x) t; - Array.sort Pervasives.compare t; - (t.(1) +. t.(2) +. t.(3)) /. 3. - - let print f x = - let (y,ut) = utime f x in - printf "user time: %2.2f@." ut; - y - -end - -module P1 = Kruskal.Make(G)(W) -module P2 = Prim.Make(G)(W) - -let testp g =Time.time5 P1.spanningtree g -let testk g = Time.time5 P2.spanningtree g - -let test nb_v nb_e = - Printf.printf "Execution time v=%d - e=%d\n" nb_v nb_e; - let g = R.graph ~v:nb_v ~e:nb_e () in - - let resp = testp g in - Printf.printf "PRIM : %2.2fs\n" resp; - let resk = testk g in - Printf.printf "KRUSKAL : %2.2fs\n%!" resk - -let () = test v e - -(* -Local Variables: -compile-command: "make -C .. bin/compare_prim_kruskal.opt" -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/examples/demo.ml b/jscomp/build_tests/ocamlgraph/examples/demo.ml deleted file mode 100755 index 4b5a8f8522..0000000000 --- a/jscomp/build_tests/ocamlgraph/examples/demo.ml +++ /dev/null @@ -1,299 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2007 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -open Sys -open Format -open Graph - -let v_ = ref 30 -let prob_ = ref 0.5 -let seed_ = ref None -let interactive_ = ref false - -type algo = TransitiveClosure | TransitiveReduction | Prim | Kruskal | - Dijkstra | Bfs | Dfs -let algo = ref None - -let arg_spec = - ["-v", Arg.Int (fun i -> v_ := i), - " number of vertices"; - "--prob", Arg.Float (fun f -> prob_ := f), - " probability to discrad an edge"; - "--seed", Arg.Int (fun n -> seed_ := Some n), - " random seed"; - "--transitive-closure", Arg.Unit (fun () -> algo := Some TransitiveClosure), - " display transitive closure in blue"; - "--transitive-reduction", Arg.Unit (fun () -> - algo := Some TransitiveReduction), - " display useless edges in blue"; - "--prim", Arg.Unit (fun () -> algo := Some Prim), - " Prim's algorithm"; - "--kruskal", Arg.Unit (fun () -> algo := Some Kruskal), - " Kruskal's algorithm"; - "--dijkstra", Arg.Unit (fun () -> algo := Some Dijkstra), - " Dijkstra's algorithm"; - "--dfs", Arg.Unit (fun () -> algo := Some Dfs), - " Depth-First Search's algorithm"; - "--bfs", Arg.Unit (fun () -> algo := Some Bfs), - " Breadth-First Search's algorithm"; - "-i", Arg.Set interactive_, " run algorithms interactively"; - ] -let () = Arg.parse arg_spec (fun _ -> ()) "usage: color " - -let v = !v_ -let prob = !prob_ -let interactive = !interactive_ - -let seed = match !seed_ with - | None -> Random.self_init (); Random.int (1 lsl 29) - | Some s -> s -let () = printf "seed = %d@." seed; Random.init seed - -let () = if interactive then - printf "interactive mode (press any key to step in algorithm, q to quit)@." - -module G = struct - - module IntInt = struct - type t = int * int - let compare = Pervasives.compare - let equal = (=) - let hash = Hashtbl.hash - end - module Int = struct - type t = int - let compare = Pervasives.compare - let hash = Hashtbl.hash - let equal = (=) - let default = 0 - end - - include Imperative.Digraph.ConcreteLabeled(IntInt)(Int) - -end - -(* a random graph with n vertices *) -module R = Rand.Planar.I(G) -let g = R.graph ~xrange:(20,780) ~yrange:(20,580)~prob v - -module Draw = struct - - open Graphics - let () = open_graph " 800x600" - - let vertex_radius = 5 - let round f = truncate (f +. 0.5) - let pi = 4.0 *. atan 1.0 - - let draw_arrow ?(color=black) ?(width=1) (xu,yu) (xv,yv) = - set_color color; - set_line_width width; - let dx = float (xv - xu) in - let dy = float (yv - yu) in - let alpha = atan2 dy dx in - let r = sqrt (dx *. dx +. dy *. dy) in - let ra = float vertex_radius *. 1.5 in - let d = float vertex_radius +. 3. in - let xs, ys = float xu +. d *. dx /. r, float yu +. d *. dy /. r in - let xd, yd = float xv -. d *. dx /. r, float yv -. d *. dy /. r in - let coords theta = - round (xd +. ra *. cos (pi +. alpha +. theta)), - round (yd +. ra *. sin (pi +. alpha +. theta)) - in - moveto (round xs) (round ys); - lineto (round xd) (round yd); - let x1,y1 = coords (pi /. 6.) in - moveto (round xd) (round yd); lineto x1 y1; - let x2,y2 = coords (-. pi /. 6.) in - moveto (round xd) (round yd); lineto x2 y2 - - let draw_edge ?color ?width v1 v2 = - draw_arrow ?color ?width (G.V.label v1) (G.V.label v2) - - let draw_vertex ?(color=red) ?(width=1) v = - let (x,y) = G.V.label v in - set_line_width width; - set_color color; - draw_circle x y vertex_radius - - let color_vertex v color = - let x,y = G.V.label v in - set_color color; - fill_circle x y vertex_radius - - let draw_graph ?color ?width g = - clear_graph (); - G.iter_vertex draw_vertex g; - G.iter_edges (draw_edge ?color ?width) g - - let draw_edges ?(color=blue) ?(width=2) el = - List.iter - (fun e -> - draw_edge ~color ~width (G.E.src e) (G.E.dst e); - draw_vertex ~color ~width (G.E.src e); - draw_vertex ~color ~width (G.E.dst e) - ) el - - let pause () = - let st = wait_next_event [Key_pressed] in - if st.key = 'q' then begin close_graph (); exit 0 end - - let draw_iteration ?(interactive=false) f g = - f (fun v -> color_vertex v Graphics.red; if interactive then pause ()) g - -end - -module W = struct - type edge = G.E.t - type t = int - let weight = G.E.label - let zero = 0 - let add = (+) - let sub = (-) - let compare = compare -end - -module PathWeight = struct - type edge = G.E.t - type t = int - let weight x = G.E.label x - let zero = 0 - let add = (+) - let sub = (-) - let compare = compare -end - -module Selection = struct - - type selection = - | No - | One of G.V.t - | Two of G.V.t * G.V.t - - let selection = ref No - - let draw_selection () = match !selection with - | No -> () - | One v1 -> Draw.color_vertex v1 Graphics.blue - | Two (v1, v2) -> Draw.color_vertex v1 Graphics.blue; - Draw.color_vertex v2 Graphics.green - - let distance (x1,y1) (x2,y2) = - let dx = float (x1 - x2) in - let dy = float (y1 - y2) in - Draw.round (sqrt (dx *. dx +. dy *. dy)) - - let select g = - let select_vertex v = match !selection with - | No -> selection := One v - | One v1 -> selection := Two (v1, v) - | Two (_, v2) -> selection := Two (v2, v) - in - let p = Graphics.mouse_pos () in - try - G.iter_vertex - (fun v -> - if distance p (G.V.label v) <= Draw.vertex_radius then begin - select_vertex v; Draw.draw_graph g; draw_selection (); raise Exit - end) - g - with Exit -> () - - let select2 g = - printf "please select two vertices...@."; - printf "press r to run...@."; - printf "press q to quit...@."; - let continue = ref true in - while !continue do - let st = Graphics.wait_next_event [ Graphics.Key_pressed; - Graphics.Button_down ] in - if st.Graphics.keypressed then match st.Graphics.key with - | 'r' -> - begin match !selection with - | Two (_,_) -> continue := false - | _ -> printf "please select two vertices...@." - end - | 'q' -> raise Exit - | _ -> () - else if st.Graphics.button then - select g - done; - match !selection with - | Two (v1,v2) -> (v1,v2) - | _ -> assert false -end - -let () = Draw.draw_graph g - -let () = match !algo with - | Some Dijkstra -> () - | _ -> ignore (Graphics.wait_next_event [Graphics.Key_pressed ]) - -let () = match !algo with - | Some TransitiveClosure -> - let module O = Oper.I(G) in - let tg = O.transitive_closure g in - G.iter_edges - (fun v1 v2 -> - if not (G.mem_edge g v1 v2) then - Draw.draw_edge ~color:Graphics.blue v1 v2) tg - | Some TransitiveReduction -> - Draw.draw_graph ~color:Graphics.blue g; - let module O = Oper.I(G) in - let tr = O.transitive_reduction g in - G.iter_edges Draw.draw_edge tr; - ignore (Graphics.wait_next_event [Graphics.Key_pressed ]); - Draw.draw_graph tr - | Some Prim -> - let module P = Prim.Make(G)(W) in - let el = P.spanningtree g in - Draw.draw_edges el - | Some Kruskal -> - let module P = Kruskal.Make(G)(W) in - let el = P.spanningtree g in - Draw.draw_edges el - | Some Dijkstra -> - let module Dij = Path.Dijkstra(G)(PathWeight) in - let rec recherche () = - let (v1, v2) = Selection.select2 g in - begin - try - let (p, _) = Dij.shortest_path g v1 v2 in - Draw.draw_edges ~color:Graphics.red p - with Not_found -> - printf "no path found...@."; - recherche () - end - in - recherche () - | Some Dfs -> - let module Dfs = Traverse.Dfs(G) in - Draw.draw_iteration ~interactive Dfs.prefix g - | Some Bfs -> - let module Bfs = Traverse.Bfs(G) in - Draw.draw_iteration ~interactive Bfs.iter g - | None -> () - -let () = - ignore (Graphics.wait_next_event [Graphics.Key_pressed ]); - Graphics.close_graph () - -(* -Local Variables: -compile-command: "make -C .. bin/demo.opt" -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/examples/demo_planar.ml b/jscomp/build_tests/ocamlgraph/examples/demo_planar.ml deleted file mode 100755 index 8c7f8b3aa7..0000000000 --- a/jscomp/build_tests/ocamlgraph/examples/demo_planar.ml +++ /dev/null @@ -1,389 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2007 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -open Printf -open Graph - -module U = Unix - -let utime f x = - let u = (U.times()).U.tms_utime in - let y = f x in - let ut = (U.times()).U.tms_utime -. u in - (y,ut) - -let print_utime f x = - let (y,ut) = utime f x in - Printf.printf "user time: %2.2f\n" ut; flush Pervasives.stdout; - y - -let () = - printf "planar graphs demo - use mouse to select two vertices (blue = source, green = destination) - keys are - - `r' generates a new random graph - - `d' runs DFS - - `b' runs BFS - - `p' runs Dijkstra's shortest path - - `c' runs SCC - - `j' runs Johnson shortest path - - `q' to quit - "; - flush stdout - -(* directed graphs with integer coordinates and integer labels on edges *) - -module IntInt = struct - type t = int * int -end -module Int = struct - type t = int - let compare = compare - let hash = Hashtbl.hash - let equal = (=) - let default = 0 -end -module G = Imperative.Digraph.AbstractLabeled(IntInt)(Int) -open G - -let n_ = ref 30 -let prob_ = ref 0.5 -let () = - Arg.parse - ["-v", Arg.Int (fun i -> n_ := i), - " number of vertices"; - "-prob", Arg.Float (fun f -> prob_ := f), - " probability to discrad an edge"; - ] - (fun _ -> ()) - "usage: demo_planar " -let n = !n_ -let prob = !prob_ - -let round f = truncate (f +. 0.5) -let pi = 4.0 *. atan 1.0 - -module Point = struct - type point = V.t - let ccw v1 v2 v3 = - Delaunay.IntPoints.ccw (V.label v1) (V.label v2) (V.label v3) - let in_circle v1 v2 v3 v4 = - Delaunay.IntPoints.in_circle - (V.label v1) (V.label v2) (V.label v3) (V.label v4) - let distance v1 v2 = - let x1,y1 = V.label v1 in - let x2,y2 = V.label v2 in - let sqr x = let x = float x in x *. x in - truncate (sqrt (sqr (x1 - x2) +. sqr (y1 - y2))) -end -module Triangulation = Delaunay.Make(Point) - -let read_graph f = - let c = open_in f in - let l = ref [] in - try - while true do - let s = input_line c in - let x,y = Scanf.sscanf s "%d %f %f" (fun _ x y -> x,y) in - printf "x=%f y=%f\n" x y; - l := (x,y) :: !l - done; - assert false - with End_of_file -> - close_in c; - let rec min_list cmp = function - | [] -> assert false - | [x] -> x - | x :: l -> let m = min_list cmp l in if cmp x m then x else m - in - let xmin,_ = min_list (fun (x,_) (x',_) -> x < x') !l in - let xmax,_ = min_list (fun (x,_) (x',_) -> x > x') !l in - let _,ymin = min_list (fun (_,y) (_,y') -> y < y') !l in - let _,ymax = min_list (fun (_,y) (_,y') -> y > y') !l in - let calibrate (x,y) = - round (20. +. 760. *. (x -. xmin) /. (xmax -. xmin)), - round (20. +. 560. *. (y -. ymin) /. (ymax -. ymin)) - in - let vertices = - Array.map (fun xy -> V.create (calibrate xy)) (Array.of_list !l) - in - let t = Triangulation.triangulate vertices in - let g = create () in - Array.iter (G.add_vertex g) vertices; - let add_edge v1 v2 = - let e = E.create v1 (Point.distance v1 v2) v2 in G.add_edge_e g e - in - Triangulation.iter (fun v1 v2 -> add_edge v1 v2; add_edge v2 v1) t; - g - -(* a random digraph with n vertices *) -let () = Random.self_init () -module R = Rand.Planar.I(G) -let new_graph () = R.graph ~xrange:(20,780) ~yrange:(20,580) ~prob n -let g = ref (new_graph ()) - -let () = printf "nb edges : %d\n" (G.nb_edges !g); flush stdout - -let dump_graph () = - G.iter_edges (fun v1 v2 -> - let x1, y1 = G.V.label v1 in - let x2, y2 = G.V.label v2 in - Format.printf "%d,%d,%d,%d@\n" x1 y1 x2 y2) !g; - Format.printf "@?" - -(* let () = g := read_graph "tmp/carron.txt" *) - -open Graphics -let () = open_graph " 800x600" - -let vertex_radius = 5 - -let draw_arrow ?(color=black) ?(width=1) (xu,yu) (xv,yv) = - set_color color; - set_line_width width; - let dx = float (xv - xu) in - let dy = float (yv - yu) in - let alpha = atan2 dy dx in - let r = sqrt (dx *. dx +. dy *. dy) in - let ra = float vertex_radius *. 1.5 in - let d = float vertex_radius +. 3. in - let xs, ys = float xu +. d *. dx /. r, float yu +. d *. dy /. r in - let xd, yd = float xv -. d *. dx /. r, float yv -. d *. dy /. r in - let coords theta = - round (xd +. ra *. cos (pi +. alpha +. theta)), - round (yd +. ra *. sin (pi +. alpha +. theta)) - in - moveto (round xs) (round ys); - lineto (round xd) (round yd); - let x1,y1 = coords (pi /. 6.) in - moveto (round xd) (round yd); lineto x1 y1; - let x2,y2 = coords (-. pi /. 6.) in - moveto (round xd) (round yd); lineto x2 y2 - -let color_vertex v color = - let x,y = G.V.label v in - set_color color; - fill_circle x y vertex_radius - -type selection = - | No - | One of G.V.t - | Two of G.V.t * G.V.t - -let selection = ref No - -let draw_selection () = match !selection with - | No -> () - | One v1 -> color_vertex v1 blue - | Two (v1, v2) -> color_vertex v1 blue; color_vertex v2 green - -let draw_graph () = - clear_graph (); - set_color red; - set_line_width 1; - G.iter_vertex - (fun v -> - let (x,y) = G.V.label v in - draw_circle x y vertex_radius) - !g; - set_color black; - G.iter_edges - (fun v1 v2 -> draw_arrow (G.V.label v1) (G.V.label v2)) - !g; - draw_selection () - -let distance (x1,y1) (x2,y2) = - let dx = float (x1 - x2) in - let dy = float (y1 - y2) in - round (sqrt (dx *. dx +. dy *. dy)) - -let select () = - let select_vertex v = match !selection with - | No -> selection := One v - | One v1 -> selection := Two (v1, v) - | Two (_, v2) -> selection := Two (v2, v) - in - let p = mouse_pos () in - try - G.iter_vertex - (fun v -> - if distance p (G.V.label v) <= vertex_radius then begin - select_vertex v; draw_graph (); raise Exit - end) - !g - with Exit -> - () - -module W = struct - type edge = G.E.t - type t = int - let weight x = G.E.label x - let zero = 0 - let add = (+) - let sub = (-) - let compare = compare -end -module Dij = Path.Dijkstra(G)(W) - -let dijkstra () = match !selection with - | Two (v1, v2) -> - printf "running Dijkstra... "; flush stdout; - let t_ = ref 0.0 in - begin try - let (p,l),t = utime (Dij.shortest_path !g v1) v2 in - t_ := t; - printf "path of length %d (%d nodes) (%2.2f s)\n" l (List.length p) t; - flush stdout; - List.iter - (fun e -> - let v1 = G.E.src e in - let v2 = G.E.dst e in - draw_arrow ~color:red ~width:3 (G.V.label v1) (G.V.label v2)) - p; - ignore (Graphics.wait_next_event [ Key_pressed; Button_down ]); - draw_graph () - with Not_found -> - printf "no path (%2.2f s)\n" !t_; flush stdout - end - | _ -> - () - -module J = Path.Johnson(G)(W) - -let johnson () = - match !selection with - | Two (v1, v2) -> - printf "running Johnson... "; flush stdout; - let t_ = ref 0.0 in - begin try - let paths, t = utime (J.all_pairs_shortest_paths) !g in - t_ := t; - printf "path of length %d (%2.2f s)\n" (J.HVV.find paths (v1, v2)) t; - flush stdout - with Not_found -> - printf "no path (%2.2f s)\n" !t_; flush stdout - end - | _ -> () - -let draw_iteration f = - let pause () = for i = 1 to 10000000 do () done in - f (fun v -> color_vertex v red; pause ()) !g; - ignore (Graphics.wait_next_event [ Key_pressed; Button_down ]); - draw_graph () - -module Dfs = Traverse.Dfs(G) -let dfs () = draw_iteration Dfs.prefix -module Bfs = Traverse.Bfs(G) -let bfs () = draw_iteration Bfs.iter - -let golden_ratio = 0.618033988749895 - -let hsv_to_rgb h s v = - let c = v *. s in - let h = int_of_float h in - let hh = (h mod 360)/60 in - let hhf = (mod_float (float_of_int h) 360.) /. 60. in - let x = c *. (1. -. (abs_float (mod_float hhf 2. -. 1.))) in - let m = v -. c in - let cc = int_of_float ((c +. m) *. 255.) in - let xx = int_of_float ((x +. m) *. 255.) in - let mm = int_of_float (m *. 255.) in - match hh with - | 0 -> cc, xx, mm - | 1 -> xx, cc, mm - | 2 -> mm, cc, xx - | 3 -> mm, xx, cc - | 4 -> xx, mm, cc - | 5 -> cc, mm, xx - | _ -> mm, mm, mm - -module Scc = Components.Make(G) -let scc () = - printf "running scc ... "; flush stdout; - let (n_scc, map_scc) = Scc.scc !g in - printf "number of components: %d\n" n_scc; flush stdout; - let colors = Hashtbl.create n_scc in - let inc = golden_ratio *. 360. in - Random.self_init (); - let h = ref (Random.float 360.) in - G.iter_vertex ( - fun v -> try let color = Hashtbl.find colors (map_scc v) in - color_vertex v color - with Not_found -> - let color = hsv_to_rgb !h 0.7 0.95 in - h := !h +. inc; - let rgb (r, g, b) = rgb r g b in - let c = rgb color in - Hashtbl.add colors (map_scc v) c; - color_vertex v c) !g - -(* brute-force coloring *) -let four_colors () = - (* vertices still to be colored are queued in [q] *) - let q = Queue.create () in - let rec loop () = - if not (Queue.is_empty q) then begin - let v = Queue.pop q in - assert (Mark.get v == 0); - try_color v 1 || - try_color v 2 || - try_color v 3 || - try_color v 4 || - (Mark.set v 0; Queue.add v q; false) - end else - true - and try_color v c = - (try - G.iter_succ (fun w -> if Mark.get w == c then raise Exit) !g v; true - with Exit -> - false) && - (Mark.set v c; loop ()) - in - G.iter_vertex (fun v -> Queue.add v q) !g; - Mark.clear !g; - assert (loop ()); - let color = [| black; red; green; blue; yellow |] in - G.iter_vertex (fun v -> color_vertex v (color.(Mark.get v))) !g; - ignore (Graphics.wait_next_event [ Key_pressed; Button_down ]) - -let () = - try - let () = draw_graph () in - while true do - let st = Graphics.wait_next_event [ Key_pressed; Button_down ] in - if st.keypressed then match st.key with - | 'q' -> raise Exit - | 'r' -> g := new_graph (); selection := No; draw_graph () - | 'p' -> dijkstra () - | 'd' -> dfs () - | 'b' -> bfs () - | 'x' -> dump_graph () - | 'c' -> scc () - | 'j' -> johnson () - (* | 'c' -> four_colors () *) - | _ -> () - else if st.button then - select () - done - with Exit -> - close_graph () - -(* -Local Variables: -compile-command: "make -C .. bin/demo_planar.opt" -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/examples/demo_prim.ml b/jscomp/build_tests/ocamlgraph/examples/demo_prim.ml deleted file mode 100755 index 10e8237805..0000000000 --- a/jscomp/build_tests/ocamlgraph/examples/demo_prim.ml +++ /dev/null @@ -1,132 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2007 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* Demo of Prim's algorithm *) - -open Printf -open Graph - -(* command line *) -let n_ = ref 30 -let prob_ = ref 0.5 -let seed_ = ref None - -let arg_spec = - ["-v", Arg.Int (fun i -> n_ := i), - " number of vertices"; - "-prob", Arg.Float (fun f -> prob_ := f), - " probability to discrad an edge"; - "-seed", Arg.Int (fun n -> seed_ := Some n), - " random seed" - ] -let () = Arg.parse arg_spec (fun _ -> ()) "usage: color " - -let n = !n_ -let prob = !prob_ - -let seed = match !seed_ with - | None -> Random.self_init (); Random.int (1 lsl 29) - | Some s -> s -let () = Format.printf "seed = %d@." seed; Random.init seed - -(* undirected graphs with integer coordinates and integer labels on edges *) - -module IntInt = struct - type t = int * int -end -module Int = struct - type t = int - let compare = compare - let hash = Hashtbl.hash - let equal = (=) - let default = 0 -end -module G = Imperative.Graph.AbstractLabeled(IntInt)(Int) -open G - -(* a random graph with n vertices *) -module R = Rand.Planar.I(G) -let g0 = R.graph ~xrange:(20,780) ~yrange:(20,580) ~prob n - -(* drawing *) -let round f = truncate (f +. 0.5) -let pi = 4.0 *. atan 1.0 - -open Graphics -let () = open_graph " 800x600" - -let vertex_radius = 5 - -let draw_edge ?(color=black) v1 v2 = - let (xu,yu) = G.V.label v1 in - let (xv,yv) = G.V.label v2 in - set_color color; - let dx = float (xv - xu) in - let dy = float (yv - yu) in - let r = sqrt (dx *. dx +. dy *. dy) in - let d = float vertex_radius +. 3. in - let xs, ys = float xu +. d *. dx /. r, float yu +. d *. dy /. r in - let xd, yd = float xv -. d *. dx /. r, float yv -. d *. dy /. r in - moveto (round xs) (round ys); - lineto (round xd) (round yd) - -let draw_vertex ?(color=red) v = - let (x,y) = G.V.label v in - set_color color; - draw_circle x y vertex_radius - -let color_vertex v color = - let x,y = G.V.label v in - set_color color; - fill_circle x y vertex_radius - -let draw_graph () = - clear_graph (); - set_color red; - set_line_width 1; - G.iter_vertex draw_vertex g0; - G.iter_edges draw_edge g0 -module W = struct - type label = G.E.label - type t = int - let weight x = x - let zero = 0 - let add = (+) - let compare = compare -end -module P = Prim.Make(G)(W) - -let () = - draw_graph (); - ignore (Graphics.wait_next_event [ Key_pressed ]); - let el = P.spanningtree g0 in - set_line_width 2; - List.iter - (fun e -> - draw_edge ~color:blue (G.E.src e) (G.E.dst e); - draw_vertex ~color:blue (G.E.src e); - draw_vertex ~color:blue (G.E.dst e) - ) el; - ignore (Graphics.wait_next_event [ Key_pressed ]); - close_graph () - - -(* -Local Variables: -compile-command: "make -C .. bin/demo_prim.opt" -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/examples/sudoku.ml b/jscomp/build_tests/ocamlgraph/examples/sudoku.ml deleted file mode 100755 index cf87176d5e..0000000000 --- a/jscomp/build_tests/ocamlgraph/examples/sudoku.ml +++ /dev/null @@ -1,85 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2007 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* Ocamlgraph demo program: solving the Sudoku puzzle using graph coloring *) - -open Format -open Graph - -(* We use undirected graphs with nodes containing a pair of integers - (the cell coordinates in 0..8 x 0..8). - The integer marks of the nodes will store the colors. *) -module G = Imperative.Graph.Abstract(struct type t = int * int end) - -(* The Sudoku grid = a graph with 9x9 nodes *) -let g = G.create () - -(* We create the 9x9 nodes, add them to the graph and keep them in a matrix - for later access *) -let nodes = - let new_node i j = let v = G.V.create (i, j) in G.add_vertex g v; v in - Array.init 9 (fun i -> Array.init 9 (new_node i)) - -let node i j = nodes.(i).(j) (* shortcut for easier access *) - -(* We add the edges: - two nodes are connected whenever they can't have the same value, - i.e. they belong to the same line, the same column or the same 3x3 group *) -let () = - for i = 0 to 8 do for j = 0 to 8 do - for k = 0 to 8 do - if k <> i then G.add_edge g (node i j) (node k j); - if k <> j then G.add_edge g (node i j) (node i k); - done; - let gi = 3 * (i / 3) and gj = 3 * (j / 3) in - for di = 0 to 2 do for dj = 0 to 2 do - let i' = gi + di and j' = gj + dj in - if i' <> i || j' <> j then G.add_edge g (node i j) (node i' j') - done done - done done - -(* Displaying the current state of the graph *) -let display () = - for i = 0 to 8 do - for j = 0 to 8 do printf "%d" (G.Mark.get (node i j)) done; - printf "\n"; - done; - printf "@?" - -(* We read the initial constraints from standard input and we display g *) -let () = - for i = 0 to 8 do - let s = read_line () in - for j = 0 to 8 do match s.[j] with - | '1'..'9' as ch -> G.Mark.set (node i j) (Char.code ch - Char.code '0') - | _ -> () - done - done; - display (); - printf "---------@." - -(* We solve the Sudoku by 9-coloring the graph g and we display the solution *) -module C = Coloring.Mark(G) - -let () = C.coloring g 9; display () - - -(* -Local Variables: -compile-command: "make -C .. bin/sudoku.opt" -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/input.js b/jscomp/build_tests/ocamlgraph/input.js deleted file mode 100644 index 103a9cdf08..0000000000 --- a/jscomp/build_tests/ocamlgraph/input.js +++ /dev/null @@ -1,41 +0,0 @@ -//@ts-check - -var p = require('child_process') -var path = require('path') -var fs = require('fs') -var assert = require('assert') -p.execSync(`bsb`,{cwd: __dirname, stdio:[0,1,2],encoding : 'utf8'}) -var check_file = path.join(__dirname,'tests','check.bs.js') -var xs = p.spawnSync('node', - [check_file], - { encoding: 'utf8'} -).output - -var ys= fs.readFileSync(path.join(__dirname,'tests','check.ref'),'utf8') -// console.log(fs.readFileSync(check_file,'utf8')) -// console.log(`output begin ...`) -// console.log(xs) -// console.log(`output end...`) -assert.equal(xs[1],ys) - - -var xs = p.spawnSync('node', - [path.join(__dirname,'tests','test_topsort.bs.js')], - { encoding: 'ascii'} -).output -var ys = fs.readFileSync(path.join(__dirname,'tests','test_topsort.ref'),'ascii') -assert.equal( - xs[1] , ys -) - -var xs = p.spawnSync('node', - [path.join(__dirname,'tests','test_johnson.bs.js')], - { encoding: 'ascii'} -).output -var ys = fs.readFileSync(path.join(__dirname,'tests','test_johnson.ref'),'ascii') -assert.equal( - xs[1], ys -) - - -// debugger \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/libx/bitv.ml b/jscomp/build_tests/ocamlgraph/libx/bitv.ml deleted file mode 100755 index 2268b12504..0000000000 --- a/jscomp/build_tests/ocamlgraph/libx/bitv.ml +++ /dev/null @@ -1,612 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(*i $Id: bitv.ml,v 1.18 2008/04/01 09:59:03 filliatr Exp $ i*) - -(*s Bit vectors. The interface and part of the code are borrowed from the - [Array] module of the ocaml standard library (but things are simplified - here since we can always initialize a bit vector). This module also - provides bitwise operations. *) - -(*s We represent a bit vector by a vector of integers (field [bits]), - and we keep the information of the size of the bit vector since it - can not be found out with the size of the array (field [length]). *) - -type t = { - length : int; - bits : int array } - -let length v = v.length - -(*s Each element of the array is an integer containing [bpi] bits, where - [bpi] is determined according to the machine word size. Since we do not - use the sign bit, [bpi] is 30 on a 32-bits machine and 62 on a 64-bits - machines. We maintain the following invariant: - {\em The unused bits of the last integer are always - zeros.} This is ensured by [create] and maintained in other functions - using [normalize]. [bit_j], [bit_not_j], [low_mask] and [up_mask] - are arrays used to extract and mask bits in a single integer. *) - -let bpi = Sys.word_size - 2 - -let max_length = Sys.max_array_length * bpi - -let bit_j = Array.init bpi (fun j -> 1 lsl j) -let bit_not_j = Array.init bpi (fun j -> max_int - bit_j.(j)) - -let low_mask = Array.make (succ bpi) 0 -let _ = - for i = 1 to bpi do low_mask.(i) <- low_mask.(i-1) lor bit_j.(pred i) done - -let keep_lowest_bits a j = a land low_mask.(j) - -let high_mask = Array.init (succ bpi) (fun j -> low_mask.(j) lsl (bpi-j)) - -let keep_highest_bits a j = a land high_mask.(j) - -(*s Creating and normalizing a bit vector is easy: it is just a matter of - taking care of the invariant. Copy is immediate. *) - -let create n b = - let initv = if b then max_int else 0 in - let r = n mod bpi in - if r = 0 then - { length = n; bits = Array.make (n / bpi) initv } - else begin - let s = n / bpi in - let b = Array.make (succ s) initv in - b.(s) <- b.(s) land low_mask.(r); - { length = n; bits = b } - end - -let normalize v = - let r = v.length mod bpi in - if r > 0 then - let b = v.bits in - let s = Array.length b in - b.(s-1) <- b.(s-1) land low_mask.(r) - -let copy v = { length = v.length; bits = Array.copy v.bits } - -(*s Access and assignment. The [n]th bit of a bit vector is the [j]th - bit of the [i]th integer, where [i = n / bpi] and [j = n mod - bpi]. Both [i] and [j] and computed by the function [pos]. - Accessing a bit is testing whether the result of the corresponding - mask operation is non-zero, and assigning it is done with a - bitwiwe operation: an {\em or} with [bit_j] to set it, and an {\em - and} with [bit_not_j] to unset it. *) - -let pos n = - let i = n / bpi and j = n mod bpi in - if j < 0 then (i - 1, j + bpi) else (i,j) - -let unsafe_get v n = - let (i,j) = pos n in - ((Array.unsafe_get v.bits i) land (Array.unsafe_get bit_j j)) > 0 - -let unsafe_set v n b = - let (i,j) = pos n in - if b then - Array.unsafe_set v.bits i - ((Array.unsafe_get v.bits i) lor (Array.unsafe_get bit_j j)) - else - Array.unsafe_set v.bits i - ((Array.unsafe_get v.bits i) land (Array.unsafe_get bit_not_j j)) - -(*s The corresponding safe operations test the validiy of the access. *) - -let get v n = - if n < 0 || n >= v.length then invalid_arg "Bitv.get"; - let (i,j) = pos n in - ((Array.unsafe_get v.bits i) land (Array.unsafe_get bit_j j)) > 0 - -let set v n b = - if n < 0 || n >= v.length then invalid_arg "Bitv.set"; - let (i,j) = pos n in - if b then - Array.unsafe_set v.bits i - ((Array.unsafe_get v.bits i) lor (Array.unsafe_get bit_j j)) - else - Array.unsafe_set v.bits i - ((Array.unsafe_get v.bits i) land (Array.unsafe_get bit_not_j j)) - -(*s [init] is implemented naively using [unsafe_set]. *) - -let init n f = - let v = create n false in - for i = 0 to pred n do - unsafe_set v i (f i) - done; - v - -(*s Handling bits by packets is the key for efficiency of functions - [append], [concat], [sub] and [blit]. - We start by a very general function [blit_bits a i m v n] which blits - the bits [i] to [i+m-1] of a native integer [a] - onto the bit vector [v] at index [n]. It assumes that [i..i+m-1] and - [n..n+m-1] are respectively valid subparts of [a] and [v]. - It is optimized when the bits fit the lowest boundary of an integer - (case [j == 0]). *) - -let blit_bits a i m v n = - let (i',j) = pos n in - if j == 0 then - Array.unsafe_set v i' - ((keep_lowest_bits (a lsr i) m) lor - (keep_highest_bits (Array.unsafe_get v i') (bpi - m))) - else - let d = m + j - bpi in - if d > 0 then begin - Array.unsafe_set v i' - (((keep_lowest_bits (a lsr i) (bpi - j)) lsl j) lor - (keep_lowest_bits (Array.unsafe_get v i') j)); - Array.unsafe_set v (succ i') - ((keep_lowest_bits (a lsr (i + bpi - j)) d) lor - (keep_highest_bits (Array.unsafe_get v (succ i')) (bpi - d))) - end else - Array.unsafe_set v i' - (((keep_lowest_bits (a lsr i) m) lsl j) lor - ((Array.unsafe_get v i') land (low_mask.(j) lor high_mask.(-d)))) - -(*s [blit_int] implements [blit_bits] in the particular case when - [i=0] and [m=bpi] i.e. when we blit all the bits of [a]. *) - -let blit_int a v n = - let (i,j) = pos n in - if j == 0 then - Array.unsafe_set v i a - else begin - Array.unsafe_set v i - ( (keep_lowest_bits (Array.unsafe_get v i) j) lor - ((keep_lowest_bits a (bpi - j)) lsl j)); - Array.unsafe_set v (succ i) - ((keep_highest_bits (Array.unsafe_get v (succ i)) (bpi - j)) lor - (a lsr (bpi - j))) - end - -(*s When blitting a subpart of a bit vector into another bit vector, there - are two possible cases: (1) all the bits are contained in a single integer - of the first bit vector, and a single call to [blit_bits] is the - only thing to do, or (2) the source bits overlap on several integers of - the source array, and then we do a loop of [blit_int], with two calls - to [blit_bits] for the two bounds. *) - -let unsafe_blit v1 ofs1 v2 ofs2 len = - if len > 0 then - let (bi,bj) = pos ofs1 in - let (ei,ej) = pos (ofs1 + len - 1) in - if bi == ei then - blit_bits (Array.unsafe_get v1 bi) bj len v2 ofs2 - else begin - blit_bits (Array.unsafe_get v1 bi) bj (bpi - bj) v2 ofs2; - let n = ref (ofs2 + bpi - bj) in - for i = succ bi to pred ei do - blit_int (Array.unsafe_get v1 i) v2 !n; - n := !n + bpi - done; - blit_bits (Array.unsafe_get v1 ei) 0 (succ ej) v2 !n - end - -let blit v1 ofs1 v2 ofs2 len = - if len < 0 || ofs1 < 0 || ofs1 + len > v1.length - || ofs2 < 0 || ofs2 + len > v2.length - then invalid_arg "Bitv.blit"; - unsafe_blit v1.bits ofs1 v2.bits ofs2 len - -(*s Extracting the subvector [ofs..ofs+len-1] of [v] is just creating a - new vector of length [len] and blitting the subvector of [v] inside. *) - -let sub v ofs len = - if ofs < 0 || len < 0 || ofs + len > v.length then invalid_arg "Bitv.sub"; - let r = create len false in - unsafe_blit v.bits ofs r.bits 0 len; - r - -(*s The concatenation of two bit vectors [v1] and [v2] is obtained by - creating a vector for the result and blitting inside the two vectors. - [v1] is copied directly. *) - -let append v1 v2 = - let l1 = v1.length - and l2 = v2.length in - let r = create (l1 + l2) false in - let b1 = v1.bits in - let b2 = v2.bits in - let b = r.bits in - for i = 0 to Array.length b1 - 1 do - Array.unsafe_set b i (Array.unsafe_get b1 i) - done; - unsafe_blit b2 0 b l1 l2; - r - -(*s The concatenation of a list of bit vectors is obtained by iterating - [unsafe_blit]. *) - -let concat vl = - let size = List.fold_left (fun sz v -> sz + v.length) 0 vl in - let res = create size false in - let b = res.bits in - let pos = ref 0 in - List.iter - (fun v -> - let n = v.length in - unsafe_blit v.bits 0 b !pos n; - pos := !pos + n) - vl; - res - -(*s Filling is a particular case of blitting with a source made of all - ones or all zeros. Thus we instanciate [unsafe_blit], with 0 and - [max_int]. *) - -let blit_zeros v ofs len = - if len > 0 then - let (bi,bj) = pos ofs in - let (ei,ej) = pos (ofs + len - 1) in - if bi == ei then - blit_bits 0 bj len v ofs - else begin - blit_bits 0 bj (bpi - bj) v ofs; - let n = ref (ofs + bpi - bj) in - for _i = succ bi to pred ei do - blit_int 0 v !n; - n := !n + bpi - done; - blit_bits 0 0 (succ ej) v !n - end - -let blit_ones v ofs len = - if len > 0 then - let (bi,bj) = pos ofs in - let (ei,ej) = pos (ofs + len - 1) in - if bi == ei then - blit_bits max_int bj len v ofs - else begin - blit_bits max_int bj (bpi - bj) v ofs; - let n = ref (ofs + bpi - bj) in - for _i = succ bi to pred ei do - blit_int max_int v !n; - n := !n + bpi - done; - blit_bits max_int 0 (succ ej) v !n - end - -let fill v ofs len b = - if ofs < 0 || len < 0 || ofs + len > v.length then invalid_arg "Bitv.fill"; - if b then blit_ones v.bits ofs len else blit_zeros v.bits ofs len - -(*s All the iterators are implemented as for traditional arrays, using - [unsafe_get]. For [iter] and [map], we do not precompute [(f - true)] and [(f false)] since [f] is likely to have - side-effects. *) - -let iter f v = - for i = 0 to v.length - 1 do f (unsafe_get v i) done - -let map f v = - let l = v.length in - let r = create l false in - for i = 0 to l - 1 do - unsafe_set r i (f (unsafe_get v i)) - done; - r - -let iteri f v = - for i = 0 to v.length - 1 do f i (unsafe_get v i) done - -let mapi f v = - let l = v.length in - let r = create l false in - for i = 0 to l - 1 do - unsafe_set r i (f i (unsafe_get v i)) - done; - r - -let fold_left f x v = - let r = ref x in - for i = 0 to v.length - 1 do - r := f !r (unsafe_get v i) - done; - !r - -let fold_right f v x = - let r = ref x in - for i = v.length - 1 downto 0 do - r := f (unsafe_get v i) !r - done; - !r - -let foldi_left f x v = - let r = ref x in - for i = 0 to v.length - 1 do - r := f !r i (unsafe_get v i) - done; - !r - -let foldi_right f v x = - let r = ref x in - for i = v.length - 1 downto 0 do - r := f i (unsafe_get v i) !r - done; - !r - -(*s Bitwise operations. It is straigthforward, since bitwise operations - can be realized by the corresponding bitwise operations over integers. - However, one has to take care of normalizing the result of [bwnot] - which introduces ones in highest significant positions. *) - -let bw_and v1 v2 = - let l = v1.length in - if l <> v2.length then invalid_arg "Bitv.bw_and"; - let b1 = v1.bits - and b2 = v2.bits in - let n = Array.length b1 in - let a = Array.make n 0 in - for i = 0 to n - 1 do - a.(i) <- b1.(i) land b2.(i) - done; - { length = l; bits = a } - -let bw_or v1 v2 = - let l = v1.length in - if l <> v2.length then invalid_arg "Bitv.bw_or"; - let b1 = v1.bits - and b2 = v2.bits in - let n = Array.length b1 in - let a = Array.make n 0 in - for i = 0 to n - 1 do - a.(i) <- b1.(i) lor b2.(i) - done; - { length = l; bits = a } - -let bw_xor v1 v2 = - let l = v1.length in - if l <> v2.length then invalid_arg "Bitv.bw_xor"; - let b1 = v1.bits - and b2 = v2.bits in - let n = Array.length b1 in - let a = Array.make n 0 in - for i = 0 to n - 1 do - a.(i) <- b1.(i) lxor b2.(i) - done; - { length = l; bits = a } - -let bw_not v = - let b = v.bits in - let n = Array.length b in - let a = Array.make n 0 in - for i = 0 to n - 1 do - a.(i) <- max_int land (lnot b.(i)) - done; - let r = { length = v.length; bits = a } in - normalize r; - r - -(*s Shift operations. It is easy to reuse [unsafe_blit], although it is - probably slightly less efficient than a ad-hoc piece of code. *) - -let rec shiftl v d = - if d == 0 then - copy v - else if d < 0 then - shiftr v (-d) - else begin - let n = v.length in - let r = create n false in - if d < n then unsafe_blit v.bits 0 r.bits d (n - d); - r - end - -and shiftr v d = - if d == 0 then - copy v - else if d < 0 then - shiftl v (-d) - else begin - let n = v.length in - let r = create n false in - if d < n then unsafe_blit v.bits d r.bits 0 (n - d); - r - end - -(*s Testing for all zeros and all ones. *) - -let all_zeros v = - let b = v.bits in - let n = Array.length b in - let rec test i = - (i == n) || ((Array.unsafe_get b i == 0) && test (succ i)) - in - test 0 - -let all_ones v = - let b = v.bits in - let n = Array.length b in - let rec test i = - if i == n - 1 then - let m = v.length mod bpi in - (Array.unsafe_get b i) == (if m == 0 then max_int else low_mask.(m)) - else - ((Array.unsafe_get b i) == max_int) && test (succ i) - in - test 0 - -(*s Conversions to and from strings. *) - -let to_string v = - let n = v.length in - let s = Bytes.make n '0' in - for i = 0 to n - 1 do - if unsafe_get v i then s.[i] <- '1' - done; - Bytes.to_string s - -let print fmt v = Format.pp_print_string fmt (to_string v) - -let of_string s = - let n = String.length s in - let v = create n false in - for i = 0 to n - 1 do - let c = String.unsafe_get s i in - if c = '1' then - unsafe_set v i true - else - if c <> '0' then invalid_arg "Bitv.of_string" - done; - v - -(*s Iteration on all bit vectors of length [n] using a Gray code. *) - -let first_set v n = - let rec lookup i = - if i = n then raise Not_found ; - if unsafe_get v i then i else lookup (i + 1) - in - lookup 0 - -let gray_iter f n = - let bv = create n false in - let rec iter () = - f bv; - unsafe_set bv 0 (not (unsafe_get bv 0)); - f bv; - let pos = succ (first_set bv n) in - if pos < n then begin - unsafe_set bv pos (not (unsafe_get bv pos)); - iter () - end - in - if n > 0 then iter () - - -(*s Coercions to/from lists of integers *) - -let of_list l = - let n = List.fold_left max 0 l in - let b = create (succ n) false in - let add_element i = - (* negative numbers are invalid *) - if i < 0 then invalid_arg "Bitv.of_list"; - unsafe_set b i true - in - List.iter add_element l; - b - -let of_list_with_length l len = - let b = create len false in - let add_element i = - if i < 0 || i >= len then invalid_arg "Bitv.of_list_with_length"; - unsafe_set b i true - in - List.iter add_element l; - b - -let to_list b = - let n = length b in - let rec make i acc = - if i < 0 then acc - else make (pred i) (if unsafe_get b i then i :: acc else acc) - in - make (pred n) [] - - -(*s To/from integers. *) - -(* [int] *) -let of_int_us i = - { length = bpi; bits = [| i land max_int |] } -let to_int_us v = - if v.length < bpi then invalid_arg "Bitv.to_int_us"; - v.bits.(0) - -let of_int_s i = - { length = succ bpi; bits = [| i land max_int; (i lsr bpi) land 1 |] } -let to_int_s v = - if v.length < succ bpi then invalid_arg "Bitv.to_int_s"; - v.bits.(0) lor (v.bits.(1) lsl bpi) - -(* [Int32] *) -let of_int32_us i = match Sys.word_size with - | 32 -> { length = 31; - bits = [| (Int32.to_int i) land max_int; - let hi = Int32.shift_right_logical i 30 in - (Int32.to_int hi) land 1 |] } - | 64 -> { length = 31; bits = [| (Int32.to_int i) land 0x7fffffff |] } - | _ -> assert false -let to_int32_us v = - if v.length < 31 then invalid_arg "Bitv.to_int32_us"; - match Sys.word_size with - | 32 -> - Int32.logor (Int32.of_int v.bits.(0)) - (Int32.shift_left (Int32.of_int (v.bits.(1) land 1)) 30) - | 64 -> - Int32.of_int (v.bits.(0) land 0x7fffffff) - | _ -> assert false - -(* this is 0xffffffff (ocaml >= 3.08 checks for literal overflow) *) -let ffffffff = (0xffff lsl 16) lor 0xffff - -let of_int32_s i = match Sys.word_size with - | 32 -> { length = 32; - bits = [| (Int32.to_int i) land max_int; - let hi = Int32.shift_right_logical i 30 in - (Int32.to_int hi) land 3 |] } - | 64 -> { length = 32; bits = [| (Int32.to_int i) land ffffffff |] } - | _ -> assert false -let to_int32_s v = - if v.length < 32 then invalid_arg "Bitv.to_int32_s"; - match Sys.word_size with - | 32 -> - Int32.logor (Int32.of_int v.bits.(0)) - (Int32.shift_left (Int32.of_int (v.bits.(1) land 3)) 30) - | 64 -> - Int32.of_int (v.bits.(0) land ffffffff) - | _ -> assert false - -(* [Int64] *) -let of_int64_us i = match Sys.word_size with - | 32 -> { length = 63; - bits = [| (Int64.to_int i) land max_int; - (let mi = Int64.shift_right_logical i 30 in - (Int64.to_int mi) land max_int); - let hi = Int64.shift_right_logical i 60 in - (Int64.to_int hi) land 1 |] } - | 64 -> { length = 63; - bits = [| (Int64.to_int i) land max_int; - let hi = Int64.shift_right_logical i 62 in - (Int64.to_int hi) land 1 |] } - | _ -> assert false -let to_int64_us _ = failwith "todo" - -let of_int64_s _ = failwith "todo" -let to_int64_s _ = failwith "todo" - -#if 0 then -(* [Nativeint] *) -let select_of f32 f64 = match Sys.word_size with - | 32 -> (fun i -> f32 (Nativeint.to_int32 i)) - | 64 -> (fun i -> f64 (Int64.of_nativeint i)) - | _ -> assert false -let of_nativeint_s = select_of of_int32_s of_int64_s -let of_nativeint_us = select_of of_int32_us of_int64_us -let select_to f32 f64 = match Sys.word_size with - | 32 -> (fun i -> Nativeint.of_int32 (f32 i)) - | 64 -> (fun i -> Int64.to_nativeint (f64 i)) - | _ -> assert false -let to_nativeint_s = select_to to_int32_s to_int64_s -let to_nativeint_us = select_to to_int32_us to_int64_us -#end diff --git a/jscomp/build_tests/ocamlgraph/libx/bitv.mli b/jscomp/build_tests/ocamlgraph/libx/bitv.mli deleted file mode 100755 index f34befdc96..0000000000 --- a/jscomp/build_tests/ocamlgraph/libx/bitv.mli +++ /dev/null @@ -1,196 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(*s {\bf Module Bitv}. - This module implements bit vectors, as an abstract datatype [t]. - Since bit vectors are particular cases of arrays, this module provides - the same operations as the module [Array] (Sections~\ref{barray} - up to \ref{earray}). It also provides bitwise operations - (Section~\ref{bitwise}). In the following, [false] stands for the bit 0 - and [true] for the bit 1. *) - -type t - -(*s {\bf Creation, access and assignment.} \label{barray} - [(Bitv.create n b)] creates a new bit vector of length [n], - initialized with [b]. - [(Bitv.init n f)] returns a fresh vector of length [n], - with bit number [i] initialized to the result of [(f i)]. - [(Bitv.set v n b)] sets the [n]th bit of [v] to the value [b]. - [(Bitv.get v n)] returns the [n]th bit of [v]. - [Bitv.length] returns the length (number of elements) of the given - vector. *) - -val create : int -> bool -> t - -val init : int -> (int -> bool) -> t - -val set : t -> int -> bool -> unit - -val get : t -> int -> bool - -val length : t -> int - -(*s [max_length] is the maximum length of a bit vector (System dependent). *) - -val max_length : int - -(*s {\bf Copies and concatenations.} - [(Bitv.copy v)] returns a copy of [v], - that is, a fresh vector containing the same elements as - [v]. [(Bitv.append v1 v2)] returns a fresh vector containing the - concatenation of the vectors [v1] and [v2]. [Bitv.concat] is - similar to [Bitv.append], but catenates a list of vectors. *) - -val copy : t -> t - -val append : t -> t -> t - -val concat : t list -> t - -(*s {\bf Sub-vectors and filling.} - [(Bitv.sub v start len)] returns a fresh - vector of length [len], containing the bits number [start] to - [start + len - 1] of vector [v]. Raise [Invalid_argument - "Bitv.sub"] if [start] and [len] do not designate a valid - subvector of [v]; that is, if [start < 0], or [len < 0], or [start - + len > Bitv.length a]. - - [(Bitv.fill v ofs len b)] modifies the vector [v] in place, - storing [b] in elements number [ofs] to [ofs + len - 1]. Raise - [Invalid_argument "Bitv.fill"] if [ofs] and [len] do not designate - a valid subvector of [v]. - - [(Bitv.blit v1 o1 v2 o2 len)] copies [len] elements from vector - [v1], starting at element number [o1], to vector [v2], starting at - element number [o2]. It {\em does not work} correctly if [v1] and [v2] are - the same vector with the source and destination chunks overlapping. - Raise [Invalid_argument "Bitv.blit"] if [o1] and [len] do not - designate a valid subvector of [v1], or if [o2] and [len] do not - designate a valid subvector of [v2]. *) - -val sub : t -> int -> int -> t - -val fill : t -> int -> int -> bool -> unit - -val blit : t -> int -> t -> int -> int -> unit - -(*s {\bf Iterators.} \label{earray} - [(Bitv.iter f v)] applies function [f] in turn to all - the elements of [v]. Given a function [f], [(Bitv.map f v)] applies - [f] to all - the elements of [v], and builds a vector with the results returned - by [f]. [Bitv.iteri] and [Bitv.mapi] are similar to [Bitv.iter] - and [Bitv.map] respectively, but the function is applied to the - index of the element as first argument, and the element itself as - second argument. - - [(Bitv.fold_left f x v)] computes [f (... (f (f x (get v 0)) (get - v 1)) ...) (get v (n-1))], where [n] is the length of the vector - [v]. - - [(Bitv.fold_right f a x)] computes [f (get v 0) (f (get v 1) - ( ... (f (get v (n-1)) x) ...))], where [n] is the length of the - vector [v]. *) - -val iter : (bool -> unit) -> t -> unit -val map : (bool -> bool) -> t -> t - -val iteri : (int -> bool -> unit) -> t -> unit -val mapi : (int -> bool -> bool) -> t -> t - -val fold_left : ('a -> bool -> 'a) -> 'a -> t -> 'a -val fold_right : (bool -> 'a -> 'a) -> t -> 'a -> 'a -val foldi_left : ('a -> int -> bool -> 'a) -> 'a -> t -> 'a -val foldi_right : (int -> bool -> 'a -> 'a) -> t -> 'a -> 'a - -(*s [gray_iter f n] iterates function [f] on all bit vectors - of length [n], once each, using a Gray code. The order in which - bit vectors are processed is unspecified. *) - -val gray_iter : (t -> unit) -> int -> unit - -(*s {\bf Bitwise operations.} \label{bitwise} [bwand], [bwor] and - [bwxor] implement logical and, or and exclusive or. They return - fresh vectors and raise [Invalid_argument "Bitv.xxx"] if the two - vectors do not have the same length (where \texttt{xxx} is the - name of the function). [bwnot] implements the logical negation. - It returns a fresh vector. - [shiftl] and [shiftr] implement shifts. They return fresh vectors. - [shiftl] moves bits from least to most significant, and [shiftr] - from most to least significant (think [lsl] and [lsr]). - [all_zeros] and [all_ones] respectively test for a vector only - containing zeros and only containing ones. *) - -val bw_and : t -> t -> t -val bw_or : t -> t -> t -val bw_xor : t -> t -> t -val bw_not : t -> t - -val shiftl : t -> int -> t -val shiftr : t -> int -> t - -val all_zeros : t -> bool -val all_ones : t -> bool - -(*s {\bf Conversions to and from strings.} - Least significant bit comes first. *) - -val to_string : t -> string -val of_string : string -> t -val print : Format.formatter -> t -> unit - -(*s {\bf Conversions to and from lists of integers.} - The list gives the indices of bits which are set (ie [true]). *) - -val to_list : t -> int list -val of_list : int list -> t -val of_list_with_length : int list -> int -> t - -(*s Interpretation of bit vectors as integers. Least significant bit - comes first (ie is at index 0 in the bit vector). - [to_xxx] functions truncate when the bit vector is too wide, - and raise [Invalid_argument] when it is too short. - Suffix [_s] indicates that sign bit is kept, - and [_us] that it is discarded. *) - -(* type [int] (length 31/63 with sign, 30/62 without) *) -val of_int_s : int -> t -val to_int_s : t -> int -val of_int_us : int -> t -val to_int_us : t -> int -(* type [Int32.t] (length 32 with sign, 31 without) *) -val of_int32_s : Int32.t -> t -val to_int32_s : t -> Int32.t -val of_int32_us : Int32.t -> t -val to_int32_us : t -> Int32.t -(* type [Int64.t] (length 64 with sign, 63 without) *) -val of_int64_s : Int64.t -> t -val to_int64_s : t -> Int64.t -val of_int64_us : Int64.t -> t -val to_int64_us : t -> Int64.t -#if 0 then -(* type [Nativeint.t] (length 32/64 with sign, 31/63 without) *) -val of_nativeint_s : Nativeint.t -> t -val to_nativeint_s : t -> Nativeint.t -val of_nativeint_us : Nativeint.t -> t -val to_nativeint_us : t -> Nativeint.t -#end -(*s Only if you know what you are doing... *) - -val unsafe_set : t -> int -> bool -> unit -val unsafe_get : t -> int -> bool diff --git a/jscomp/build_tests/ocamlgraph/libx/heap.ml b/jscomp/build_tests/ocamlgraph/libx/heap.ml deleted file mode 100755 index 0298ca9092..0000000000 --- a/jscomp/build_tests/ocamlgraph/libx/heap.ml +++ /dev/null @@ -1,117 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -module type Ordered = sig - type t - val compare : t -> t -> int -end - -exception EmptyHeap - -module Imperative(X : Ordered) = struct - - (* The heap is encoded in the array [data], where elements are stored - from [0] to [size - 1]. From an element stored at [i], the left - (resp. right) subtree, if any, is rooted at [2*i+1] (resp. [2*i+2]). *) - - type t = { mutable size : int; mutable data : X.t array } - - (* When [create n] is called, we cannot allocate the array, since there is - no known value of type [X.t]; we'll wait for the first addition to - do it, and we remember this situation with a negative size. *) - - let create n = - if n <= 0 then invalid_arg "create"; - { size = -n; data = [||] } - - let is_empty h = h.size <= 0 - - (* [resize] doubles the size of [data] *) - - let resize h = - let n = h.size in - assert (n > 0); - let n' = 2 * n in - let d = h.data in - let d' = Array.make n' d.(0) in - Array.blit d 0 d' 0 n; - h.data <- d' - - let add h x = - (* first addition: we allocate the array *) - if h.size < 0 then begin - h.data <- Array.make (- h.size) x; h.size <- 0 - end; - let n = h.size in - (* resizing if needed *) - if n == Array.length h.data then resize h; - let d = h.data in - (* moving [x] up in the heap *) - let rec moveup i = - let fi = (i - 1) / 2 in - if i > 0 && X.compare d.(fi) x < 0 then begin - d.(i) <- d.(fi); - moveup fi - end else - d.(i) <- x - in - moveup n; - h.size <- n + 1 - - let maximum h = - if h.size <= 0 then raise EmptyHeap; - h.data.(0) - - let remove h = - if h.size <= 0 then raise EmptyHeap; - let n = h.size - 1 in - h.size <- n; - let d = h.data in - let x = d.(n) in - (* moving [x] down in the heap *) - let rec movedown i = - let j = 2 * i + 1 in - if j < n then - let j = - let j' = j + 1 in - if j' < n && X.compare d.(j') d.(j) > 0 then j' else j - in - if X.compare d.(j) x > 0 then begin - d.(i) <- d.(j); - movedown j - end else - d.(i) <- x - else - d.(i) <- x - in - movedown 0 - - let pop_maximum h = let m = maximum h in remove h; m - - let iter f h = - let d = h.data in - for i = 0 to h.size - 1 do f d.(i) done - - let fold f h x0 = - let n = h.size in - let d = h.data in - let rec foldrec x i = - if i >= n then x else foldrec (f d.(i) x) (succ i) - in - foldrec x0 0 - -end diff --git a/jscomp/build_tests/ocamlgraph/libx/heap.mli b/jscomp/build_tests/ocamlgraph/libx/heap.mli deleted file mode 100755 index 4b94f4564e..0000000000 --- a/jscomp/build_tests/ocamlgraph/libx/heap.mli +++ /dev/null @@ -1,63 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Priority queues *) - -module type Ordered = sig - type t - val compare : t -> t -> int -end - -exception EmptyHeap - -module Imperative(X: Ordered) : sig - - (* Type of imperative heaps. - (In the following [n] refers to the number of elements in the heap) *) - - type t - - (* [create c] creates a new heap, with initial capacity of [c] *) - val create : int -> t - - (* [is_empty h] checks the emptiness of [h] *) - val is_empty : t -> bool - - (* [add x h] adds a new element [x] in heap [h]; size of [h] is doubled - when maximum capacity is reached; complexity $O(log(n))$ *) - val add : t -> X.t -> unit - - (* [maximum h] returns the maximum element of [h]; raises [EmptyHeap] - when [h] is empty; complexity $O(1)$ *) - val maximum : t -> X.t - - (* [remove h] removes the maximum element of [h]; raises [EmptyHeap] - when [h] is empty; complexity $O(log(n))$ *) - val remove : t -> unit - - (* [pop_maximum h] removes the maximum element of [h] and returns it; - raises [EmptyHeap] when [h] is empty; complexity $O(log(n))$ *) - val pop_maximum : t -> X.t - - (* usual iterators and combinators; elements are presented in - arbitrary order *) - val iter : (X.t -> unit) -> t -> unit - - val fold : (X.t -> 'a -> 'a) -> t -> 'a -> 'a - -end - diff --git a/jscomp/build_tests/ocamlgraph/libx/unionfind.ml b/jscomp/build_tests/ocamlgraph/libx/unionfind.ml deleted file mode 100755 index 4697b7c887..0000000000 --- a/jscomp/build_tests/ocamlgraph/libx/unionfind.ml +++ /dev/null @@ -1,117 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id$ *) - -module type HashedOrderedType = sig - type t - val equal : t -> t -> bool - val hash : t -> int - val compare : t -> t -> int -end - -module type S = sig - type elt - type t - - val init : elt list -> t - val find : elt -> t -> elt - val union : elt -> elt -> t -> unit -end - -module Make(X:HashedOrderedType) = struct - - type elt = X.t - - module H = Hashtbl.Make(X) - - type cell = { - mutable c : int; - data : elt; - mutable father : cell - } - - type t = cell H.t (* a forest *) - - let init l = - let h = H.create 997 in - List.iter - (fun x -> - let rec cell = { c = 0; data = x; father = cell } in - H.add h x cell) - l; - h - - let rec find_aux cell = - if cell.father == cell then - cell - else - let r = find_aux cell.father in - cell.father <- r; - r - - let find x h = (find_aux (H.find h x)).data - - let union x y h = - let rx = find_aux (H.find h x) in - let ry = find_aux (H.find h y) in - if rx != ry then begin - if rx.c > ry.c then - ry.father <- rx - else if rx.c < ry.c then - rx.father <- ry - else begin - rx.c <- rx.c + 1; - ry.father <- rx - end - end -end - -(*** test ***) -(*** - -module M = Make (struct - type t = int let - hash = Hashtbl.hash - let compare = compare - let equal = (=) - end) - -open Printf - -let saisir s = - printf "%s = " s; flush stdout; - let x = read_int () in - x - -let h = M.init [0;1;2;3;4;5;6;7;8;9] -let () = if not !Sys.interactive then - while true do - printf "1) find\n2) union\n"; - match read_int () with - 1 -> begin - let x = saisir "x" in - printf "%d\n" (M.find x h) - end - | 2 -> begin - let x, y = saisir "x", saisir "y" in - M.union x y h - end - | _ -> () - done - -***) diff --git a/jscomp/build_tests/ocamlgraph/libx/unionfind.mli b/jscomp/build_tests/ocamlgraph/libx/unionfind.mli deleted file mode 100755 index 584992cf25..0000000000 --- a/jscomp/build_tests/ocamlgraph/libx/unionfind.mli +++ /dev/null @@ -1,49 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - - - -(* Unionfind structure over hash-ordered types. - - This module implements a unionfind data structure, given a total ordering - function and a hash function over the elements. - -*) - - -module type HashedOrderedType = sig - (* The type of the elements*) - type t - val equal : t -> t -> bool - val hash : t -> int - val compare : t -> t -> int -end - -(* Input signature of the functor Unionfind.Make *) - -module type S = sig - type elt - type t - - val init : elt list -> t - val find : elt -> t -> elt - val union : elt -> elt -> t -> unit -end - -module Make (X : HashedOrderedType) : S with type elt = X.t - - diff --git a/jscomp/build_tests/ocamlgraph/misc/headache_config.txt b/jscomp/build_tests/ocamlgraph/misc/headache_config.txt deleted file mode 100755 index e0d23d8b4b..0000000000 --- a/jscomp/build_tests/ocamlgraph/misc/headache_config.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Objective Caml source -| ".*\\.ml[il4]?" -> frame open:"(*" line:"*" close:"*)" -| ".*\\.mly" -> frame open:"/*" line:"*" close:"*/" -# C source -| ".*\\.c" -> frame open:"/*" line:"*" close:"*/" -# Misc -| "configure.in" -> frame open:"#" line:"#" close:"#" -| "Makefile.in" -> frame open:"#" line:"#" close:"#" -| "README" -> frame open:"*" line:"*" close:"*" diff --git a/jscomp/build_tests/ocamlgraph/misc/header.txt b/jscomp/build_tests/ocamlgraph/misc/header.txt deleted file mode 100755 index 16f346174f..0000000000 --- a/jscomp/build_tests/ocamlgraph/misc/header.txt +++ /dev/null @@ -1,14 +0,0 @@ - -OCamlgraph: a generic graph library for OCaml -Copyright (C) 2004-2013 -Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles - -This software is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License version 2.1, with the special exception on linking -described in file LICENSE. - -This software is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - diff --git a/jscomp/build_tests/ocamlgraph/misc/make_intf.ml b/jscomp/build_tests/ocamlgraph/misc/make_intf.ml deleted file mode 100755 index 1dabd44792..0000000000 --- a/jscomp/build_tests/ocamlgraph/misc/make_intf.ml +++ /dev/null @@ -1,50 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2007 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id:$ *) - -(* script to build graph.mli from the set of all .mli files passed on the - command line *) - -open Printf - -let cout = open_out "graph.mli" - -let is_cvs_line s = String.length s > 5 && String.sub s 0 6 = "(* $Id" - -let copy f = - let cin = open_in f in - while not (is_cvs_line (input_line cin)) do () done; - begin - try while true do fprintf cout " %s\n" (input_line cin) done - with End_of_file -> () - end; - close_in cin - -let () = - for i = 1 to Array.length Sys.argv - 1 do - let f = Sys.argv.(i) in - if not (Sys.file_exists f) then failwith (f ^ ": no suh file"); - let m = String.capitalize (Filename.chop_suffix f ".mli") in - fprintf cout "module %s : sig\n" m; - copy f; - fprintf cout "end\n\n" - - done - -let () = close_out cout - diff --git a/jscomp/build_tests/ocamlgraph/opam b/jscomp/build_tests/ocamlgraph/opam deleted file mode 100755 index 1daccb4e6b..0000000000 --- a/jscomp/build_tests/ocamlgraph/opam +++ /dev/null @@ -1,32 +0,0 @@ -opam-version: "1" -maintainer: "filliatr@lri.fr" -authors: [ - "Sylvain Conchon" - "Jean-Christophe Filliâtre" - "Julien Signoles" -] -homepage: "http://ocamlgraph.lri.fr/" -license: "GNU Library General Public License version 2.1" -doc: ["http://ocamlgraph.lri.fr/doc"] -tags: [ - "graph" - "library" - "algorithms" - "directed graph" - "vertice" - "edge" - "persistent" - "imperative" -] -build: [ - ["autoconf"] - ["./configure"] - [make] - [make "install-findlib"] -] -remove: [["ocamlfind" "remove" "ocamlgraph"]] -depends: ["ocamlfind"] -depopts: [ - "lablgtk" - "conf-gnomecanvas" -] diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/.cvsignore b/jscomp/build_tests/ocamlgraph/papers/gpce2006/.cvsignore deleted file mode 100755 index 325c258cb4..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -main.ps diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench.plot b/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench.plot deleted file mode 100755 index 2ea2f2e6e1..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench.plot +++ /dev/null @@ -1,28 +0,0 @@ -set style data line - -set terminal latex -set size 0.7,0.7 -set key left - -set xlabel "number of nodes $V$" -set output "bench1c.tex" -plot "ia_c" t "IA", "ic_c" t "IC", "pa_c" t "PA", "pc_c" t "PC" - -set output "bench1d.tex" -plot "ia_d" t "IA", "ic_d" t "IC", "pa_d" t "PA", "pc_d" t "PC" - -# plot "ia_mem_full" t "IA", "pa_mem_full" t "PA", "ic_mem_full" t "IC", "pc_mem_full" using ($1*$1):$2 t "PC" - -set xlabel "maze width $N$" -set output "bench2dij.tex" -plot "ia_dij" t "IA", "ic_dij" t "IC", "pa_dij" t "PA", "pc_dij" t "PC" - -set output "bench2dfs.tex" -plot "ia_dfs" t "IA", "ic_dfs" t "IC", "pa_dfs" t "PA", "pc_dfs" t "PC" - -set output "bench2bfs.tex" -plot "ia_bfs" t "IA", "ic_bfs" t "IC", "pa_bfs" t "PA", "pc_bfs" t "PC" - -set output "bench2mem.tex" -plot "ia_mem" t "IA", "ic_mem" t "IC", "pa_mem" t "PA", "pc_mem" t "PC" - diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench1c.tex b/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench1c.tex deleted file mode 100755 index 6bb89cba3a..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench1c.tex +++ /dev/null @@ -1,156 +0,0 @@ -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(120.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,123){\makebox(0,0)[r]{ 0}} -\put(969.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,170.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,170){\makebox(0,0)[r]{ 2}} -\put(969.0,170.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,216.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,216){\makebox(0,0)[r]{ 4}} -\put(969.0,216.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,263.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,263){\makebox(0,0)[r]{ 6}} -\put(969.0,263.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,310.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,310){\makebox(0,0)[r]{ 8}} -\put(969.0,310.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,357.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,357){\makebox(0,0)[r]{ 10}} -\put(969.0,357.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,403.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,403){\makebox(0,0)[r]{ 12}} -\put(969.0,403.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,450.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,450){\makebox(0,0)[r]{ 14}} -\put(969.0,450.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,497.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,497){\makebox(0,0)[r]{ 16}} -\put(969.0,497.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,543.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,543){\makebox(0,0)[r]{ 18}} -\put(969.0,543.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,590){\makebox(0,0)[r]{ 20}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(120,82){\makebox(0,0){ 100}} -\put(120.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(217.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(217,82){\makebox(0,0){ 200}} -\put(217.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(313.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(313,82){\makebox(0,0){ 300}} -\put(313.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(410.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(410,82){\makebox(0,0){ 400}} -\put(410.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(506.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(506,82){\makebox(0,0){ 500}} -\put(506.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(603.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(603,82){\makebox(0,0){ 600}} -\put(603.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(699.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(699,82){\makebox(0,0){ 700}} -\put(699.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(796.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(796,82){\makebox(0,0){ 800}} -\put(796.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(892.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(892,82){\makebox(0,0){ 900}} -\put(892.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,82){\makebox(0,0){ 1000}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(120.0,123.0){\rule[-0.200pt]{209.342pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(120.0,590.0){\rule[-0.200pt]{209.342pt}{0.400pt}} -\put(120.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(554,21){\makebox(0,0){number of nodes $V$}} -\put(180,550){\makebox(0,0)[r]{IA}} -\put(200.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(120,124){\usebox{\plotpoint}} -\multiput(120.00,124.60)(14.080,0.468){5}{\rule{9.800pt}{0.113pt}} -\multiput(120.00,123.17)(76.660,4.000){2}{\rule{4.900pt}{0.400pt}} -\multiput(217.00,128.58)(4.505,0.492){19}{\rule{3.591pt}{0.118pt}} -\multiput(217.00,127.17)(88.547,11.000){2}{\rule{1.795pt}{0.400pt}} -\multiput(313.00,139.58)(2.739,0.495){33}{\rule{2.256pt}{0.119pt}} -\multiput(313.00,138.17)(92.318,18.000){2}{\rule{1.128pt}{0.400pt}} -\multiput(410.00,157.58)(1.939,0.497){47}{\rule{1.636pt}{0.120pt}} -\multiput(410.00,156.17)(92.604,25.000){2}{\rule{0.818pt}{0.400pt}} -\multiput(506.00,182.58)(1.479,0.497){63}{\rule{1.276pt}{0.120pt}} -\multiput(506.00,181.17)(94.352,33.000){2}{\rule{0.638pt}{0.400pt}} -\multiput(603.00,215.58)(2.111,0.496){43}{\rule{1.770pt}{0.120pt}} -\multiput(603.00,214.17)(92.327,23.000){2}{\rule{0.885pt}{0.400pt}} -\multiput(699.00,238.58)(1.188,0.498){79}{\rule{1.046pt}{0.120pt}} -\multiput(699.00,237.17)(94.828,41.000){2}{\rule{0.523pt}{0.400pt}} -\multiput(796.00,279.58)(0.801,0.499){117}{\rule{0.740pt}{0.120pt}} -\multiput(796.00,278.17)(94.464,60.000){2}{\rule{0.370pt}{0.400pt}} -\multiput(892.00,339.58)(1.249,0.498){75}{\rule{1.095pt}{0.120pt}} -\multiput(892.00,338.17)(94.728,39.000){2}{\rule{0.547pt}{0.400pt}} -\put(180,509){\makebox(0,0)[r]{IC}} -\multiput(200,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(300,509){\usebox{\plotpoint}} -\put(120,124){\usebox{\plotpoint}} -\multiput(120,124)(20.685,1.706){5}{\usebox{\plotpoint}} -\multiput(217,132)(20.665,1.937){5}{\usebox{\plotpoint}} -\multiput(313,141)(20.368,3.990){5}{\usebox{\plotpoint}} -\multiput(410,160)(20.086,5.231){4}{\usebox{\plotpoint}} -\multiput(506,185)(20.572,2.757){5}{\usebox{\plotpoint}} -\multiput(603,198)(18.564,9.282){5}{\usebox{\plotpoint}} -\multiput(699,246)(18.293,9.806){6}{\usebox{\plotpoint}} -\multiput(796,298)(19.299,7.639){5}{\usebox{\plotpoint}} -\multiput(892,336)(18.135,10.096){5}{\usebox{\plotpoint}} -\put(989,390){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(180,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(200.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(120,124){\usebox{\plotpoint}} -\multiput(120.00,125.40)(5.330,0.514){13}{\rule{7.960pt}{0.124pt}} -\multiput(120.00,122.34)(80.479,10.000){2}{\rule{3.980pt}{0.800pt}} -\multiput(217.00,135.40)(5.975,0.516){11}{\rule{8.733pt}{0.124pt}} -\multiput(217.00,132.34)(77.874,9.000){2}{\rule{4.367pt}{0.800pt}} -\multiput(313.00,144.41)(2.377,0.505){35}{\rule{3.895pt}{0.122pt}} -\multiput(313.00,141.34)(88.915,21.000){2}{\rule{1.948pt}{0.800pt}} -\multiput(410.00,165.41)(1.311,0.503){67}{\rule{2.276pt}{0.121pt}} -\multiput(410.00,162.34)(91.277,37.000){2}{\rule{1.138pt}{0.800pt}} -\multiput(506.00,202.41)(0.996,0.502){91}{\rule{1.784pt}{0.121pt}} -\multiput(506.00,199.34)(93.298,49.000){2}{\rule{0.892pt}{0.800pt}} -\multiput(603.00,251.41)(1.311,0.503){67}{\rule{2.276pt}{0.121pt}} -\multiput(603.00,248.34)(91.277,37.000){2}{\rule{1.138pt}{0.800pt}} -\multiput(699.00,288.41)(0.854,0.502){107}{\rule{1.561pt}{0.121pt}} -\multiput(699.00,285.34)(93.759,57.000){2}{\rule{0.781pt}{0.800pt}} -\multiput(796.00,345.41)(0.640,0.501){143}{\rule{1.224pt}{0.121pt}} -\multiput(796.00,342.34)(93.460,75.000){2}{\rule{0.612pt}{0.800pt}} -\multiput(892.00,420.41)(0.614,0.501){151}{\rule{1.182pt}{0.121pt}} -\multiput(892.00,417.34)(94.546,79.000){2}{\rule{0.591pt}{0.800pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(180,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(200,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(300,427){\usebox{\plotpoint}} -\put(120,125){\usebox{\plotpoint}} -\multiput(120,125)(20.598,2.548){5}{\usebox{\plotpoint}} -\multiput(217,137)(20.595,2.574){5}{\usebox{\plotpoint}} -\multiput(313,149)(19.941,5.756){5}{\usebox{\plotpoint}} -\multiput(410,177)(18.718,8.969){5}{\usebox{\plotpoint}} -\multiput(506,223)(17.652,10.918){5}{\usebox{\plotpoint}} -\multiput(603,283)(18.793,8.809){5}{\usebox{\plotpoint}} -\multiput(699,328)(15.215,14.117){7}{\usebox{\plotpoint}} -\multiput(796,418)(16.771,12.229){6}{\usebox{\plotpoint}} -\multiput(892,488)(14.377,14.970){6}{\usebox{\plotpoint}} -\put(989,589){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(120.0,123.0){\rule[-0.200pt]{209.342pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(120.0,590.0){\rule[-0.200pt]{209.342pt}{0.400pt}} -\put(120.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\end{picture} diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench1d.tex b/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench1d.tex deleted file mode 100755 index 4b7a9d958b..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench1d.tex +++ /dev/null @@ -1,152 +0,0 @@ -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(100.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,123){\makebox(0,0)[r]{ 0}} -\put(969.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,175.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,175){\makebox(0,0)[r]{ 1}} -\put(969.0,175.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,227.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,227){\makebox(0,0)[r]{ 2}} -\put(969.0,227.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,279.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,279){\makebox(0,0)[r]{ 3}} -\put(969.0,279.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,331.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,331){\makebox(0,0)[r]{ 4}} -\put(969.0,331.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,382.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,382){\makebox(0,0)[r]{ 5}} -\put(969.0,382.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,434.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,434){\makebox(0,0)[r]{ 6}} -\put(969.0,434.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,486.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,486){\makebox(0,0)[r]{ 7}} -\put(969.0,486.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,538.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,538){\makebox(0,0)[r]{ 8}} -\put(969.0,538.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,590){\makebox(0,0)[r]{ 9}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(100,82){\makebox(0,0){ 100}} -\put(100.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(199.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(199,82){\makebox(0,0){ 200}} -\put(199.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(298.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(298,82){\makebox(0,0){ 300}} -\put(298.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(396.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(396,82){\makebox(0,0){ 400}} -\put(396.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(495.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(495,82){\makebox(0,0){ 500}} -\put(495.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(594.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(594,82){\makebox(0,0){ 600}} -\put(594.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(693.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(693,82){\makebox(0,0){ 700}} -\put(693.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(791.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(791,82){\makebox(0,0){ 800}} -\put(791.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(890.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(890,82){\makebox(0,0){ 900}} -\put(890.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,82){\makebox(0,0){ 1000}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(100.0,123.0){\rule[-0.200pt]{214.160pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(100.0,590.0){\rule[-0.200pt]{214.160pt}{0.400pt}} -\put(100.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(544,21){\makebox(0,0){number of nodes $V$}} -\put(160,550){\makebox(0,0)[r]{IA}} -\put(180.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(100,124){\usebox{\plotpoint}} -\multiput(100.00,124.61)(21.895,0.447){3}{\rule{13.300pt}{0.108pt}} -\multiput(100.00,123.17)(71.395,3.000){2}{\rule{6.650pt}{0.400pt}} -\multiput(199.00,127.59)(8.898,0.482){9}{\rule{6.700pt}{0.116pt}} -\multiput(199.00,126.17)(85.094,6.000){2}{\rule{3.350pt}{0.400pt}} -\multiput(298.00,133.58)(4.600,0.492){19}{\rule{3.664pt}{0.118pt}} -\multiput(298.00,132.17)(90.396,11.000){2}{\rule{1.832pt}{0.400pt}} -\multiput(396.00,144.58)(2.964,0.495){31}{\rule{2.429pt}{0.119pt}} -\multiput(396.00,143.17)(93.958,17.000){2}{\rule{1.215pt}{0.400pt}} -\multiput(495.00,161.58)(3.370,0.494){27}{\rule{2.740pt}{0.119pt}} -\multiput(495.00,160.17)(93.313,15.000){2}{\rule{1.370pt}{0.400pt}} -\multiput(594.00,176.58)(0.739,0.499){131}{\rule{0.691pt}{0.120pt}} -\multiput(594.00,175.17)(97.566,67.000){2}{\rule{0.346pt}{0.400pt}} -\multiput(693.00,241.92)(3.867,-0.493){23}{\rule{3.115pt}{0.119pt}} -\multiput(693.00,242.17)(91.534,-13.000){2}{\rule{1.558pt}{0.400pt}} -\multiput(791.58,230.00)(0.499,0.576){195}{\rule{0.120pt}{0.561pt}} -\multiput(790.17,230.00)(99.000,112.836){2}{\rule{0.400pt}{0.280pt}} -\multiput(890.00,344.58)(1.156,0.498){83}{\rule{1.021pt}{0.120pt}} -\multiput(890.00,343.17)(96.881,43.000){2}{\rule{0.510pt}{0.400pt}} -\put(160,509){\makebox(0,0)[r]{IC}} -\multiput(180,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(280,509){\usebox{\plotpoint}} -\put(100,124){\usebox{\plotpoint}} -\multiput(100,124)(20.739,0.838){5}{\usebox{\plotpoint}} -\multiput(199,128)(20.717,1.256){5}{\usebox{\plotpoint}} -\multiput(298,134)(20.602,2.523){5}{\usebox{\plotpoint}} -\multiput(396,146)(20.754,0.210){5}{\usebox{\plotpoint}} -\multiput(495,147)(17.350,11.391){5}{\usebox{\plotpoint}} -\multiput(594,212)(20.751,-0.419){5}{\usebox{\plotpoint}} -\multiput(693,210)(15.918,13.319){6}{\usebox{\plotpoint}} -\multiput(791,292)(18.750,8.901){5}{\usebox{\plotpoint}} -\multiput(890,339)(17.028,11.868){6}{\usebox{\plotpoint}} -\put(989,408){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(160,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(180.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(100,125){\usebox{\plotpoint}} -\multiput(100.00,126.40)(8.534,0.526){7}{\rule{11.514pt}{0.127pt}} -\multiput(100.00,123.34)(75.102,7.000){2}{\rule{5.757pt}{0.800pt}} -\multiput(199.00,133.41)(3.032,0.507){27}{\rule{4.859pt}{0.122pt}} -\multiput(199.00,130.34)(88.915,17.000){2}{\rule{2.429pt}{0.800pt}} -\multiput(298.00,150.41)(4.378,0.511){17}{\rule{6.733pt}{0.123pt}} -\multiput(298.00,147.34)(84.025,12.000){2}{\rule{3.367pt}{0.800pt}} -\multiput(396.00,162.41)(1.801,0.504){49}{\rule{3.029pt}{0.121pt}} -\multiput(396.00,159.34)(92.714,28.000){2}{\rule{1.514pt}{0.800pt}} -\multiput(495.00,190.41)(0.828,0.502){113}{\rule{1.520pt}{0.121pt}} -\multiput(495.00,187.34)(95.845,60.000){2}{\rule{0.760pt}{0.800pt}} -\multiput(594.00,250.41)(1.084,0.502){85}{\rule{1.922pt}{0.121pt}} -\multiput(594.00,247.34)(95.011,46.000){2}{\rule{0.961pt}{0.800pt}} -\multiput(693.00,296.41)(0.819,0.502){113}{\rule{1.507pt}{0.121pt}} -\multiput(693.00,293.34)(94.873,60.000){2}{\rule{0.753pt}{0.800pt}} -\multiput(791.00,356.41)(0.688,0.501){137}{\rule{1.300pt}{0.121pt}} -\multiput(791.00,353.34)(96.302,72.000){2}{\rule{0.650pt}{0.800pt}} -\multiput(890.00,428.41)(0.669,0.501){141}{\rule{1.270pt}{0.121pt}} -\multiput(890.00,425.34)(96.363,74.000){2}{\rule{0.635pt}{0.800pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(160,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(180,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(280,427){\usebox{\plotpoint}} -\put(100,125){\usebox{\plotpoint}} -\multiput(100,125)(20.704,1.464){5}{\usebox{\plotpoint}} -\multiput(199,132)(20.171,4.890){5}{\usebox{\plotpoint}} -\multiput(298,156)(20.414,3.750){5}{\usebox{\plotpoint}} -\multiput(396,174)(19.569,6.918){5}{\usebox{\plotpoint}} -\multiput(495,209)(17.350,11.391){6}{\usebox{\plotpoint}} -\multiput(594,274)(20.261,4.503){5}{\usebox{\plotpoint}} -\multiput(693,296)(13.599,15.680){7}{\usebox{\plotpoint}} -\multiput(791,409)(15.435,13.876){6}{\usebox{\plotpoint}} -\multiput(890,498)(15.984,13.240){6}{\usebox{\plotpoint}} -\put(989,580){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(100.0,123.0){\rule[-0.200pt]{214.160pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(100.0,590.0){\rule[-0.200pt]{214.160pt}{0.400pt}} -\put(100.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\end{picture} diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench2bfs.tex b/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench2bfs.tex deleted file mode 100755 index 92af744e6f..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench2bfs.tex +++ /dev/null @@ -1,137 +0,0 @@ -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,123){\makebox(0,0)[r]{ 0}} -\put(969.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,190.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,190){\makebox(0,0)[r]{ 0.5}} -\put(969.0,190.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,256.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,256){\makebox(0,0)[r]{ 1}} -\put(969.0,256.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,323.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,323){\makebox(0,0)[r]{ 1.5}} -\put(969.0,323.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,390.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,390){\makebox(0,0)[r]{ 2}} -\put(969.0,390.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,457.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,457){\makebox(0,0)[r]{ 2.5}} -\put(969.0,457.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,523.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,523){\makebox(0,0)[r]{ 3}} -\put(969.0,523.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,590){\makebox(0,0)[r]{ 3.5}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140,82){\makebox(0,0){ 0}} -\put(140.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282,82){\makebox(0,0){ 100}} -\put(282.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423,82){\makebox(0,0){ 200}} -\put(423.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565,82){\makebox(0,0){ 300}} -\put(565.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706,82){\makebox(0,0){ 400}} -\put(706.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848,82){\makebox(0,0){ 500}} -\put(848.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,82){\makebox(0,0){ 600}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(564,21){\makebox(0,0){maze width $N$}} -\put(200,550){\makebox(0,0)[r]{IA}} -\put(220.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(225,124){\usebox{\plotpoint}} -\multiput(225.00,124.61)(18.770,0.447){3}{\rule{11.433pt}{0.108pt}} -\multiput(225.00,123.17)(61.270,3.000){2}{\rule{5.717pt}{0.400pt}} -\multiput(310.00,127.59)(6.442,0.485){11}{\rule{4.957pt}{0.117pt}} -\multiput(310.00,126.17)(74.711,7.000){2}{\rule{2.479pt}{0.400pt}} -\multiput(395.00,134.59)(5.579,0.488){13}{\rule{4.350pt}{0.117pt}} -\multiput(395.00,133.17)(75.971,8.000){2}{\rule{2.175pt}{0.400pt}} -\multiput(480.00,142.58)(4.404,0.491){17}{\rule{3.500pt}{0.118pt}} -\multiput(480.00,141.17)(77.736,10.000){2}{\rule{1.750pt}{0.400pt}} -\multiput(565.00,152.58)(3.068,0.494){25}{\rule{2.500pt}{0.119pt}} -\multiput(565.00,151.17)(78.811,14.000){2}{\rule{1.250pt}{0.400pt}} -\multiput(649.00,166.58)(1.426,0.497){57}{\rule{1.233pt}{0.120pt}} -\multiput(649.00,165.17)(82.440,30.000){2}{\rule{0.617pt}{0.400pt}} -\multiput(734.00,196.58)(1.123,0.498){73}{\rule{0.995pt}{0.120pt}} -\multiput(734.00,195.17)(82.935,38.000){2}{\rule{0.497pt}{0.400pt}} -\multiput(819.00,234.58)(0.852,0.498){97}{\rule{0.780pt}{0.120pt}} -\multiput(819.00,233.17)(83.381,50.000){2}{\rule{0.390pt}{0.400pt}} -\multiput(904.00,284.58)(1.186,0.498){69}{\rule{1.044pt}{0.120pt}} -\multiput(904.00,283.17)(82.832,36.000){2}{\rule{0.522pt}{0.400pt}} -\put(200,509){\makebox(0,0)[r]{IC}} -\multiput(220,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,509){\usebox{\plotpoint}} -\put(225,138){\usebox{\plotpoint}} -\multiput(225,138)(20.743,-0.732){5}{\usebox{\plotpoint}} -\multiput(310,135)(20.733,0.976){4}{\usebox{\plotpoint}} -\multiput(395,139)(20.397,3.839){4}{\usebox{\plotpoint}} -\multiput(480,155)(20.150,4.978){4}{\usebox{\plotpoint}} -\multiput(565,176)(19.159,7.983){4}{\usebox{\plotpoint}} -\multiput(649,211)(17.982,10.366){5}{\usebox{\plotpoint}} -\multiput(734,260)(18.164,10.043){5}{\usebox{\plotpoint}} -\multiput(819,307)(18.073,10.206){5}{\usebox{\plotpoint}} -\multiput(904,355)(13.135,16.071){6}{\usebox{\plotpoint}} -\put(989,459){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(220.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(225,127){\usebox{\plotpoint}} -\put(225,125.84){\rule{20.476pt}{0.800pt}} -\multiput(225.00,125.34)(42.500,1.000){2}{\rule{10.238pt}{0.800pt}} -\multiput(310.00,129.40)(6.111,0.520){9}{\rule{8.700pt}{0.125pt}} -\multiput(310.00,126.34)(66.943,8.000){2}{\rule{4.350pt}{0.800pt}} -\multiput(395.00,137.41)(3.790,0.511){17}{\rule{5.867pt}{0.123pt}} -\multiput(395.00,134.34)(72.823,12.000){2}{\rule{2.933pt}{0.800pt}} -\multiput(480.00,149.41)(2.446,0.506){29}{\rule{3.978pt}{0.122pt}} -\multiput(480.00,146.34)(76.744,18.000){2}{\rule{1.989pt}{0.800pt}} -\multiput(565.00,167.41)(1.288,0.503){59}{\rule{2.236pt}{0.121pt}} -\multiput(565.00,164.34)(79.358,33.000){2}{\rule{1.118pt}{0.800pt}} -\multiput(649.00,200.41)(1.544,0.504){49}{\rule{2.629pt}{0.121pt}} -\multiput(649.00,197.34)(79.544,28.000){2}{\rule{1.314pt}{0.800pt}} -\multiput(734.00,228.41)(1.603,0.504){47}{\rule{2.719pt}{0.121pt}} -\multiput(734.00,225.34)(79.358,27.000){2}{\rule{1.359pt}{0.800pt}} -\multiput(819.00,255.41)(0.531,0.501){153}{\rule{1.050pt}{0.121pt}} -\multiput(819.00,252.34)(82.821,80.000){2}{\rule{0.525pt}{0.800pt}} -\multiput(904.00,335.41)(1.982,0.505){37}{\rule{3.291pt}{0.122pt}} -\multiput(904.00,332.34)(78.170,22.000){2}{\rule{1.645pt}{0.800pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(220,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,427){\usebox{\plotpoint}} -\put(225,127){\usebox{\plotpoint}} -\multiput(225,127)(20.685,1.704){5}{\usebox{\plotpoint}} -\multiput(310,134)(20.552,2.901){4}{\usebox{\plotpoint}} -\multiput(395,146)(19.975,5.640){4}{\usebox{\plotpoint}} -\multiput(480,170)(19.572,6.908){4}{\usebox{\plotpoint}} -\multiput(565,200)(19.077,8.176){5}{\usebox{\plotpoint}} -\multiput(649,236)(16.394,12.729){5}{\usebox{\plotpoint}} -\multiput(734,302)(16.675,12.359){5}{\usebox{\plotpoint}} -\multiput(819,365)(15.746,13.523){5}{\usebox{\plotpoint}} -\multiput(904,438)(13.442,15.814){7}{\usebox{\plotpoint}} -\put(989,538){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\end{picture} diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench2dfs.tex b/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench2dfs.tex deleted file mode 100755 index d664bb38ce..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench2dfs.tex +++ /dev/null @@ -1,134 +0,0 @@ -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,123){\makebox(0,0)[r]{ 0}} -\put(969.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,201.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,201){\makebox(0,0)[r]{ 0.5}} -\put(969.0,201.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,279.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,279){\makebox(0,0)[r]{ 1}} -\put(969.0,279.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,356.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,356){\makebox(0,0)[r]{ 1.5}} -\put(969.0,356.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,434.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,434){\makebox(0,0)[r]{ 2}} -\put(969.0,434.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,512.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,512){\makebox(0,0)[r]{ 2.5}} -\put(969.0,512.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,590){\makebox(0,0)[r]{ 3}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140,82){\makebox(0,0){ 0}} -\put(140.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282,82){\makebox(0,0){ 100}} -\put(282.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423,82){\makebox(0,0){ 200}} -\put(423.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565,82){\makebox(0,0){ 300}} -\put(565.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706,82){\makebox(0,0){ 400}} -\put(706.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848,82){\makebox(0,0){ 500}} -\put(848.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,82){\makebox(0,0){ 600}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(564,21){\makebox(0,0){maze width $N$}} -\put(200,550){\makebox(0,0)[r]{IA}} -\put(220.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(225,125){\usebox{\plotpoint}} -\multiput(225.00,125.61)(18.770,0.447){3}{\rule{11.433pt}{0.108pt}} -\multiput(225.00,124.17)(61.270,3.000){2}{\rule{5.717pt}{0.400pt}} -\multiput(310.00,128.60)(12.325,0.468){5}{\rule{8.600pt}{0.113pt}} -\multiput(310.00,127.17)(67.150,4.000){2}{\rule{4.300pt}{0.400pt}} -\multiput(395.00,132.59)(5.579,0.488){13}{\rule{4.350pt}{0.117pt}} -\multiput(395.00,131.17)(75.971,8.000){2}{\rule{2.175pt}{0.400pt}} -\multiput(480.00,140.59)(4.922,0.489){15}{\rule{3.878pt}{0.118pt}} -\multiput(480.00,139.17)(76.951,9.000){2}{\rule{1.939pt}{0.400pt}} -\multiput(565.00,149.58)(3.312,0.493){23}{\rule{2.685pt}{0.119pt}} -\multiput(565.00,148.17)(78.428,13.000){2}{\rule{1.342pt}{0.400pt}} -\multiput(649.00,162.58)(0.947,0.498){87}{\rule{0.856pt}{0.120pt}} -\multiput(649.00,161.17)(83.224,45.000){2}{\rule{0.428pt}{0.400pt}} -\multiput(734.00,207.59)(7.633,0.482){9}{\rule{5.767pt}{0.116pt}} -\multiput(734.00,206.17)(73.031,6.000){2}{\rule{2.883pt}{0.400pt}} -\multiput(819.00,213.58)(0.852,0.498){97}{\rule{0.780pt}{0.120pt}} -\multiput(819.00,212.17)(83.381,50.000){2}{\rule{0.390pt}{0.400pt}} -\multiput(904.00,263.58)(0.582,0.499){143}{\rule{0.566pt}{0.120pt}} -\multiput(904.00,262.17)(83.826,73.000){2}{\rule{0.283pt}{0.400pt}} -\put(200,509){\makebox(0,0)[r]{IC}} -\multiput(220,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,509){\usebox{\plotpoint}} -\put(225,134){\usebox{\plotpoint}} -\multiput(225,134)(20.754,0.244){5}{\usebox{\plotpoint}} -\multiput(310,135)(20.720,1.219){4}{\usebox{\plotpoint}} -\multiput(395,140)(20.352,4.070){4}{\usebox{\plotpoint}} -\multiput(480,157)(19.782,6.284){4}{\usebox{\plotpoint}} -\multiput(565,184)(19.472,7.186){4}{\usebox{\plotpoint}} -\multiput(649,215)(16.207,12.966){6}{\usebox{\plotpoint}} -\multiput(734,283)(18.343,9.711){4}{\usebox{\plotpoint}} -\multiput(819,328)(15.026,14.319){6}{\usebox{\plotpoint}} -\multiput(904,409)(18.608,9.194){5}{\usebox{\plotpoint}} -\put(989,451){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(220.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(225,128){\usebox{\plotpoint}} -\put(225,126.84){\rule{20.476pt}{0.800pt}} -\multiput(225.00,126.34)(42.500,1.000){2}{\rule{10.238pt}{0.800pt}} -\multiput(310.00,130.40)(6.111,0.520){9}{\rule{8.700pt}{0.125pt}} -\multiput(310.00,127.34)(66.943,8.000){2}{\rule{4.350pt}{0.800pt}} -\multiput(395.00,138.40)(4.179,0.512){15}{\rule{6.382pt}{0.123pt}} -\multiput(395.00,135.34)(71.754,11.000){2}{\rule{3.191pt}{0.800pt}} -\multiput(480.00,149.41)(3.790,0.511){17}{\rule{5.867pt}{0.123pt}} -\multiput(480.00,146.34)(72.823,12.000){2}{\rule{2.933pt}{0.800pt}} -\multiput(565.00,161.41)(1.288,0.503){59}{\rule{2.236pt}{0.121pt}} -\multiput(565.00,158.34)(79.358,33.000){2}{\rule{1.118pt}{0.800pt}} -\multiput(649.00,194.41)(0.972,0.502){81}{\rule{1.745pt}{0.121pt}} -\multiput(649.00,191.34)(81.377,44.000){2}{\rule{0.873pt}{0.800pt}} -\multiput(734.00,238.41)(2.446,0.506){29}{\rule{3.978pt}{0.122pt}} -\multiput(734.00,235.34)(76.744,18.000){2}{\rule{1.989pt}{0.800pt}} -\multiput(819.00,256.41)(0.761,0.502){105}{\rule{1.414pt}{0.121pt}} -\multiput(819.00,253.34)(82.065,56.000){2}{\rule{0.707pt}{0.800pt}} -\multiput(904.00,312.41)(0.761,0.502){105}{\rule{1.414pt}{0.121pt}} -\multiput(904.00,309.34)(82.065,56.000){2}{\rule{0.707pt}{0.800pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(220,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,427){\usebox{\plotpoint}} -\put(225,128){\usebox{\plotpoint}} -\multiput(225,128)(20.685,1.704){5}{\usebox{\plotpoint}} -\multiput(310,135)(20.480,3.373){4}{\usebox{\plotpoint}} -\multiput(395,149)(19.912,5.857){4}{\usebox{\plotpoint}} -\multiput(480,174)(19.192,7.903){4}{\usebox{\plotpoint}} -\multiput(565,209)(18.739,8.923){5}{\usebox{\plotpoint}} -\multiput(649,249)(15.293,14.033){5}{\usebox{\plotpoint}} -\multiput(734,327)(18.865,8.656){5}{\usebox{\plotpoint}} -\multiput(819,366)(10.605,17.842){8}{\usebox{\plotpoint}} -\multiput(904,509)(18.432,9.541){5}{\usebox{\plotpoint}} -\put(989,553){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\end{picture} diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench2dij.tex b/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench2dij.tex deleted file mode 100755 index 1188e6229c..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench2dij.tex +++ /dev/null @@ -1,131 +0,0 @@ -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,123){\makebox(0,0)[r]{ 0}} -\put(969.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,216.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,216){\makebox(0,0)[r]{ 0.5}} -\put(969.0,216.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,310.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,310){\makebox(0,0)[r]{ 1}} -\put(969.0,310.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,403.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,403){\makebox(0,0)[r]{ 1.5}} -\put(969.0,403.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,497.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,497){\makebox(0,0)[r]{ 2}} -\put(969.0,497.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,590){\makebox(0,0)[r]{ 2.5}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140,82){\makebox(0,0){ 0}} -\put(140.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282,82){\makebox(0,0){ 100}} -\put(282.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423,82){\makebox(0,0){ 200}} -\put(423.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565,82){\makebox(0,0){ 300}} -\put(565.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706,82){\makebox(0,0){ 400}} -\put(706.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848,82){\makebox(0,0){ 500}} -\put(848.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,82){\makebox(0,0){ 600}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(564,21){\makebox(0,0){maze width $N$}} -\put(200,550){\makebox(0,0)[r]{IA}} -\put(220.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(225,125){\usebox{\plotpoint}} -\multiput(225.00,125.59)(9.393,0.477){7}{\rule{6.900pt}{0.115pt}} -\multiput(225.00,124.17)(70.679,5.000){2}{\rule{3.450pt}{0.400pt}} -\multiput(310.00,130.58)(3.641,0.492){21}{\rule{2.933pt}{0.119pt}} -\multiput(310.00,129.17)(78.912,12.000){2}{\rule{1.467pt}{0.400pt}} -\multiput(395.00,142.58)(2.706,0.494){29}{\rule{2.225pt}{0.119pt}} -\multiput(395.00,141.17)(80.382,16.000){2}{\rule{1.113pt}{0.400pt}} -\multiput(480.00,158.58)(2.543,0.495){31}{\rule{2.100pt}{0.119pt}} -\multiput(480.00,157.17)(80.641,17.000){2}{\rule{1.050pt}{0.400pt}} -\multiput(565.00,175.58)(2.513,0.495){31}{\rule{2.076pt}{0.119pt}} -\multiput(565.00,174.17)(79.690,17.000){2}{\rule{1.038pt}{0.400pt}} -\multiput(649.00,192.58)(0.760,0.499){109}{\rule{0.707pt}{0.120pt}} -\multiput(649.00,191.17)(83.532,56.000){2}{\rule{0.354pt}{0.400pt}} -\multiput(734.00,248.58)(2.543,0.495){31}{\rule{2.100pt}{0.119pt}} -\multiput(734.00,247.17)(80.641,17.000){2}{\rule{1.050pt}{0.400pt}} -\multiput(819.58,265.00)(0.499,0.647){167}{\rule{0.120pt}{0.618pt}} -\multiput(818.17,265.00)(85.000,108.718){2}{\rule{0.400pt}{0.309pt}} -\multiput(904.58,372.28)(0.499,-0.694){167}{\rule{0.120pt}{0.655pt}} -\multiput(903.17,373.64)(85.000,-116.640){2}{\rule{0.400pt}{0.328pt}} -\put(200,509){\makebox(0,0)[r]{IC}} -\multiput(220,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,509){\usebox{\plotpoint}} -\put(225,125){\usebox{\plotpoint}} -\multiput(225,125)(20.584,2.664){5}{\usebox{\plotpoint}} -\multiput(310,136)(20.640,2.185){4}{\usebox{\plotpoint}} -\multiput(395,145)(20.256,4.528){4}{\usebox{\plotpoint}} -\multiput(480,164)(19.848,6.071){4}{\usebox{\plotpoint}} -\multiput(565,190)(19.239,7.787){5}{\usebox{\plotpoint}} -\multiput(649,224)(15.563,13.732){5}{\usebox{\plotpoint}} -\multiput(734,299)(18.865,8.656){5}{\usebox{\plotpoint}} -\multiput(819,338)(10.885,17.672){7}{\usebox{\plotpoint}} -\multiput(904,476)(8.985,-18.710){10}{\usebox{\plotpoint}} -\put(989,299){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(220.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(225,127){\usebox{\plotpoint}} -\multiput(225.00,128.38)(13.857,0.560){3}{\rule{13.800pt}{0.135pt}} -\multiput(225.00,125.34)(56.357,5.000){2}{\rule{6.900pt}{0.800pt}} -\multiput(310.00,133.41)(3.790,0.511){17}{\rule{5.867pt}{0.123pt}} -\multiput(310.00,130.34)(72.823,12.000){2}{\rule{2.933pt}{0.800pt}} -\multiput(395.00,145.41)(2.772,0.507){25}{\rule{4.450pt}{0.122pt}} -\multiput(395.00,142.34)(75.764,16.000){2}{\rule{2.225pt}{0.800pt}} -\multiput(480.00,161.41)(2.599,0.507){27}{\rule{4.200pt}{0.122pt}} -\multiput(480.00,158.34)(76.283,17.000){2}{\rule{2.100pt}{0.800pt}} -\multiput(565.00,178.41)(1.421,0.503){53}{\rule{2.440pt}{0.121pt}} -\multiput(565.00,175.34)(78.936,30.000){2}{\rule{1.220pt}{0.800pt}} -\multiput(649.00,208.41)(0.909,0.502){87}{\rule{1.647pt}{0.121pt}} -\multiput(649.00,205.34)(81.582,47.000){2}{\rule{0.823pt}{0.800pt}} -\multiput(734.00,255.41)(0.710,0.502){113}{\rule{1.333pt}{0.121pt}} -\multiput(734.00,252.34)(82.233,60.000){2}{\rule{0.667pt}{0.800pt}} -\multiput(820.41,314.00)(0.501,0.600){163}{\rule{0.121pt}{1.160pt}} -\multiput(817.34,314.00)(85.000,99.592){2}{\rule{0.800pt}{0.580pt}} -\multiput(905.41,410.87)(0.501,-0.647){163}{\rule{0.121pt}{1.235pt}} -\multiput(902.34,413.44)(85.000,-107.436){2}{\rule{0.800pt}{0.618pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(220,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,427){\usebox{\plotpoint}} -\put(225,127){\usebox{\plotpoint}} -\multiput(225,127)(20.640,2.185){5}{\usebox{\plotpoint}} -\multiput(310,136)(20.352,4.070){4}{\usebox{\plotpoint}} -\multiput(395,153)(19.713,6.494){4}{\usebox{\plotpoint}} -\multiput(480,181)(19.713,6.494){4}{\usebox{\plotpoint}} -\multiput(565,209)(20.078,5.259){5}{\usebox{\plotpoint}} -\multiput(649,231)(15.746,13.523){5}{\usebox{\plotpoint}} -\multiput(734,304)(17.144,11.699){5}{\usebox{\plotpoint}} -\multiput(819,362)(9.690,18.355){9}{\usebox{\plotpoint}} -\multiput(904,523)(8.823,-18.787){9}{\usebox{\plotpoint}} -\put(989,342){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\end{picture} diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench2mem.tex b/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench2mem.tex deleted file mode 100755 index 4f3b65f7fd..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench2mem.tex +++ /dev/null @@ -1,136 +0,0 @@ -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(180.0,82.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(160,82){\makebox(0,0)[r]{ 0}} -\put(969.0,82.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(180.0,155.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(160,155){\makebox(0,0)[r]{ 5000}} -\put(969.0,155.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(180.0,227.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(160,227){\makebox(0,0)[r]{ 10000}} -\put(969.0,227.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(180.0,300.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(160,300){\makebox(0,0)[r]{ 15000}} -\put(969.0,300.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(180.0,372.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(160,372){\makebox(0,0)[r]{ 20000}} -\put(969.0,372.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(180.0,445.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(160,445){\makebox(0,0)[r]{ 25000}} -\put(969.0,445.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(180.0,517.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(160,517){\makebox(0,0)[r]{ 30000}} -\put(969.0,517.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(180.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(160,590){\makebox(0,0)[r]{ 35000}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(180.0,82.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(180,41){\makebox(0,0){ 0}} -\put(180.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(315.0,82.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(315,41){\makebox(0,0){ 100}} -\put(315.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(450.0,82.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(450,41){\makebox(0,0){ 200}} -\put(450.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(585.0,82.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(585,41){\makebox(0,0){ 300}} -\put(585.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(719.0,82.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(719,41){\makebox(0,0){ 400}} -\put(719.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(854.0,82.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(854,41){\makebox(0,0){ 500}} -\put(854.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,82.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,41){\makebox(0,0){ 600}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(180.0,82.0){\rule[-0.200pt]{194.888pt}{0.400pt}} -\put(989.0,82.0){\rule[-0.200pt]{0.400pt}{122.377pt}} -\put(180.0,590.0){\rule[-0.200pt]{194.888pt}{0.400pt}} -\put(180.0,82.0){\rule[-0.200pt]{0.400pt}{122.377pt}} -\put(240,550){\makebox(0,0)[r]{IA}} -\put(260.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(261,86){\usebox{\plotpoint}} -\multiput(261.00,86.58)(2.957,0.494){25}{\rule{2.414pt}{0.119pt}} -\multiput(261.00,85.17)(75.989,14.000){2}{\rule{1.207pt}{0.400pt}} -\multiput(342.00,100.58)(1.862,0.496){41}{\rule{1.573pt}{0.120pt}} -\multiput(342.00,99.17)(77.736,22.000){2}{\rule{0.786pt}{0.400pt}} -\multiput(423.00,122.58)(1.359,0.497){57}{\rule{1.180pt}{0.120pt}} -\multiput(423.00,121.17)(78.551,30.000){2}{\rule{0.590pt}{0.400pt}} -\multiput(504.00,152.58)(0.991,0.498){79}{\rule{0.890pt}{0.120pt}} -\multiput(504.00,151.17)(79.152,41.000){2}{\rule{0.445pt}{0.400pt}} -\multiput(585.00,193.58)(0.786,0.498){99}{\rule{0.727pt}{0.120pt}} -\multiput(585.00,192.17)(78.490,51.000){2}{\rule{0.364pt}{0.400pt}} -\multiput(665.00,244.58)(0.737,0.499){107}{\rule{0.689pt}{0.120pt}} -\multiput(665.00,243.17)(79.570,55.000){2}{\rule{0.345pt}{0.400pt}} -\multiput(746.00,299.58)(0.623,0.499){127}{\rule{0.598pt}{0.120pt}} -\multiput(746.00,298.17)(79.758,65.000){2}{\rule{0.299pt}{0.400pt}} -\multiput(827.00,364.58)(0.506,0.499){157}{\rule{0.505pt}{0.120pt}} -\multiput(827.00,363.17)(79.952,80.000){2}{\rule{0.253pt}{0.400pt}} -\multiput(908.00,444.58)(0.500,0.499){159}{\rule{0.500pt}{0.120pt}} -\multiput(908.00,443.17)(79.962,81.000){2}{\rule{0.250pt}{0.400pt}} -\put(240,509){\makebox(0,0)[r]{IC}} -\multiput(260,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(360,509){\usebox{\plotpoint}} -\put(261,86){\usebox{\plotpoint}} -\multiput(261,86)(20.599,2.543){4}{\usebox{\plotpoint}} -\multiput(342,96)(20.207,4.740){4}{\usebox{\plotpoint}} -\multiput(423,115)(19.900,5.896){5}{\usebox{\plotpoint}} -\multiput(504,139)(19.222,7.831){4}{\usebox{\plotpoint}} -\multiput(585,172)(18.377,9.648){4}{\usebox{\plotpoint}} -\multiput(665,214)(18.144,10.080){5}{\usebox{\plotpoint}} -\multiput(746,259)(17.466,11.213){4}{\usebox{\plotpoint}} -\multiput(827,311)(15.993,13.229){5}{\usebox{\plotpoint}} -\multiput(908,378)(16.188,12.990){5}{\usebox{\plotpoint}} -\put(989,443){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(240,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(260.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(261,86){\usebox{\plotpoint}} -\multiput(261.00,87.41)(3.048,0.509){21}{\rule{4.829pt}{0.123pt}} -\multiput(261.00,84.34)(70.978,14.000){2}{\rule{2.414pt}{0.800pt}} -\multiput(342.00,101.41)(1.887,0.505){37}{\rule{3.145pt}{0.122pt}} -\multiput(342.00,98.34)(74.471,22.000){2}{\rule{1.573pt}{0.800pt}} -\multiput(423.00,123.41)(1.281,0.503){57}{\rule{2.225pt}{0.121pt}} -\multiput(423.00,120.34)(76.382,32.000){2}{\rule{1.113pt}{0.800pt}} -\multiput(504.00,155.41)(1.020,0.502){73}{\rule{1.820pt}{0.121pt}} -\multiput(504.00,152.34)(77.222,40.000){2}{\rule{0.910pt}{0.800pt}} -\multiput(585.00,195.41)(0.803,0.502){93}{\rule{1.480pt}{0.121pt}} -\multiput(585.00,192.34)(76.928,50.000){2}{\rule{0.740pt}{0.800pt}} -\multiput(665.00,245.41)(0.699,0.502){109}{\rule{1.317pt}{0.121pt}} -\multiput(665.00,242.34)(78.266,58.000){2}{\rule{0.659pt}{0.800pt}} -\multiput(746.00,303.41)(0.604,0.501){127}{\rule{1.167pt}{0.121pt}} -\multiput(746.00,300.34)(78.577,67.000){2}{\rule{0.584pt}{0.800pt}} -\multiput(827.00,370.41)(0.525,0.501){147}{\rule{1.042pt}{0.121pt}} -\multiput(827.00,367.34)(78.838,77.000){2}{\rule{0.521pt}{0.800pt}} -\multiput(909.41,446.00)(0.501,0.524){155}{\rule{0.121pt}{1.040pt}} -\multiput(906.34,446.00)(81.000,82.842){2}{\rule{0.800pt}{0.520pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(240,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(260,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(360,427){\usebox{\plotpoint}} -\put(261,86){\usebox{\plotpoint}} -\multiput(261,86)(20.531,3.042){4}{\usebox{\plotpoint}} -\multiput(342,98)(20.207,4.740){4}{\usebox{\plotpoint}} -\multiput(423,117)(19.690,6.563){5}{\usebox{\plotpoint}} -\multiput(504,144)(19.053,8.233){4}{\usebox{\plotpoint}} -\multiput(585,179)(18.282,9.827){4}{\usebox{\plotpoint}} -\multiput(665,222)(17.662,10.902){5}{\usebox{\plotpoint}} -\multiput(746,272)(16.875,12.084){5}{\usebox{\plotpoint}} -\multiput(827,330)(16.090,13.111){5}{\usebox{\plotpoint}} -\multiput(908,396)(15.324,13.999){5}{\usebox{\plotpoint}} -\put(989,470){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(180.0,82.0){\rule[-0.200pt]{194.888pt}{0.400pt}} -\put(989.0,82.0){\rule[-0.200pt]{0.400pt}{122.377pt}} -\put(180.0,590.0){\rule[-0.200pt]{194.888pt}{0.400pt}} -\put(180.0,82.0){\rule[-0.200pt]{0.400pt}{122.377pt}} -\end{picture} diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench_build.ml b/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench_build.ml deleted file mode 100755 index 26b6f9eae4..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/bench_build.ml +++ /dev/null @@ -1,114 +0,0 @@ - -open Format -open Graph - -(*let () = Random.self_init ()*) - -module Time = struct - - open Unix - - let utime f x = - let u = (times()).tms_utime in - let y = f x in - let ut = (times()).tms_utime -. u in - (y,ut) - - let print_utime f x = - let (y,ut) = utime f x in - Format.printf "user time: %2.2f@." ut; - y - -end - -module Make - (G : Sig.G with type V.label = int) - (C : Classic.S with type graph = G.t) - (R : sig val destruct : G.t -> unit end) = -struct - - let bench s = - let c = open_out (s ^ "_c") in - let fc = formatter_of_out_channel c in - let d = open_out (s ^ "_d") in - let fd = formatter_of_out_channel d in - let m = open_out (s ^ "_mem_full") in - let fm = formatter_of_out_channel m in - for i = 1 to 10 do - let v = 100 * i in - let g,t = Time.utime C.full v in - fprintf fc "%d %2.2f@." v t; - fprintf fm "%d %d@." v (Size.size_kb g); - let _,t = Time.utime R.destruct g in - fprintf fd "%d %2.2f@." v t - done; - close_out c; - close_out d; - close_out m - -end - -module DestructP(G : Sig.P) = struct - - let destruct g = - let g = G.fold_edges_e (fun e g -> G.remove_edge_e g e) g g in - let _ = G.fold_vertex (fun v g -> G.remove_vertex g v) g g in - () - -end - -module DestructI(G : Sig.I) = struct - - let destruct g = - G.iter_edges_e (fun e -> G.remove_edge_e g e) g; - G.iter_vertex (fun v -> G.remove_vertex g v) g - -end - -module IA = Imperative.Graph.Abstract(struct type t = int end) -module BIA = Make(IA)(Classic.I(IA))(DestructI(IA)) -let () = BIA.bench "ia" - -module PA = Persistent.Graph.Abstract(struct type t = int end) -module BPA = Make(PA)(Classic.P(PA))(DestructP(PA)) -let () = BPA.bench "pa" - -module Int = struct - type t = int - let compare = compare - let equal = (=) - let hash = Hashtbl.hash -end - -module IC = Imperative.Graph.Concrete(Int) -module BIC = Make(IC)(Classic.I(IC))(DestructI(IC)) -let () = BIC.bench "ic" - -module PC = Persistent.Graph.Concrete(Int) -module BPC = Make(PC)(Classic.P(PC))(DestructP(PC)) -let () = BPC.bench "pc" - -module M = Imperative.Matrix.Graph -module Mfull = struct - type graph = M.t - - let fold_for i0 i1 f = - let rec loop i v = if i > i1 then v else loop (i + 1) (f v i) in - loop i0 - - let full ?(self=true) n = - let g = M.make n in - for i = 0 to n-1 do - for j = 0 to n-1 do - if self || i <> j then M.add_edge g i j - done - done; - g - - let divisors _ = assert false (*TODO*) - let de_bruijn _ = assert false (*TODO*) - let vertex_only _ = assert false (*TODO*) -end -module BM = Make(M)(Mfull)(DestructI(M)) -let () = BM.bench "m" - diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/biblio.bib b/jscomp/build_tests/ocamlgraph/papers/gpce2006/biblio.bib deleted file mode 100755 index 5d6922d8ec..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/biblio.bib +++ /dev/null @@ -1,122 +0,0 @@ - -@misc{ObjectiveCaml, - title = {{The Objective Caml language}}, - note = {\url{http://caml.inria.fr/}} -} - - -@misc{Jdsl, - title = {{The Data Structures Library in Java}}, - note = {\url{http://www.cs.brown.edu/cgc/jdsl/}} -} - - -@misc{Mlrisc, - title = {{The MLRISC System}}, - note = {\url{http://cs1.cs.nyu.edu/leunga/www/MLRISC/Doc/html/INTRO.html}} -} - -@misc{Baire, - title = {{Baire}}, - note = {\url{http://www.edite-de-paris.com.fr/~fpons/Caml/Baire/}} -} - -@misc{Fgl, - title = {{FGL - A Functional Graph Library}}, - note = {\url{http://web.engr.oregonstate.edu/~erwig/fgl/}} -} - -@misc{Gtl, - title = {{The Graph Template Library}}, - note = {\url{http://infosun.fmi.uni-passau.de/GTL/}} -} - -@misc{Bgl, - title = {{BGL - The Boost Graph Library}}, - note = {\url{http://www.boost.org/libs/graph/doc/}} -} - -@article{Leda, - author = {Kurt Mehlhorn and Stefan Näher}, - title = {LEDA: a platform for combinatorial and geometric computing}, - journal = {Commun. ACM}, - volume = {38}, - number = {1}, - year = {1995}, - issn = {0001-0782}, - pages = {96--102}, - publisher = {ACM Press}, - } - -@article{Erwig, - author = "Martin Erwig", - title = "Inductive Graphs and Functional Graph Algorithms", - year = "2001", - journal = "{Journal of Functional Programming}", - volume = 11, - number = 5, - pages = "467--492", -} - - - -@ARTICLE{leroy00, - AUTHOR = {Xavier Leroy}, - TITLE = {A modular module system}, - JOURNAL = {Journal of Functional Programming}, - VOLUME = 10, - NUMBER = 3, - YEAR = 2000, - PAGES = {269--303}, - URL = {http://pauillac.inria.fr/~xleroy/publi/modular-modules-jfp.ps.gz} -} - - -@PhdThesis{Goldberg, - author = {Andrew V. Goldberg}, - title = {Efficient graph algorithms for sequential and parallel computers}, - school = {MIT, Cambridge, Massachusetts}, - year = 1987, - month = {January}, -} - -@Article{FF, - author = {L. R. Jr. Ford and D. R. Fulkerson}, - title = {Maximal Flow Through a Network}, - journal = {Canadian Journal of Mathematics}, - year = 1956, - pages = {99-404}, -} - -@BOOK{okasaki98, - AUTHOR = {Chris Okasaki}, - TITLE = {{Purely Functional Data Structures}}, - PUBLISHER = {Cambridge University Press}, - YEAR = 1998 -} - -@Book{coplien92, - author = {James O. Coplien}, - title = {{Advanced C++ Programming Styles and Idioms}}, - publisher = {Addison-Wesley}, - year = 1992 -} - -@TechReport{filliatre06, - author = {Jean-Christophe Filli\^atre}, - title = {{Backtracking Iterators}}, - institution = {LRI, Universit\'e Paris-Sud}, - year = 2006, - type = {{Research Report}}, - number = 1428, - month = {January}, - note = {\url{http://www.lri.fr/~filliatr/ftp/publis/enum-rr.ps.gz}} -} - -@InProceedings{ramsey05, - author = {Norman Ramsey}, - title = {{ML Module Mania: A Type-Safe Separately Compiled, Extensible Interpreter}}, - booktitle = {{ACM SIGPLAN Workshop on ML}}, - year = 2005 -} - diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/filesdep.ml b/jscomp/build_tests/ocamlgraph/papers/gpce2006/filesdep.ml deleted file mode 100755 index 20ecb8b2b1..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/filesdep.ml +++ /dev/null @@ -1,128 +0,0 @@ -type file = { name : string ; mutable deps : file list } - -module G = struct - - type t = file list - - module V = struct - type t = file - let compare n1 n2 = compare n1.name n2.name - let hash n = Hashtbl.hash n.name - let equal n1 n2 = n1.name = n2.name - end - -(* module E = struct - type t = file * file - type label = unit - let label _ = () - let dst (_,n) = n - end -*) - - let iter_vertex = List.iter - let fold_vertex = List.fold_right - let iter_succ f _ v = List.iter f v.deps -(* let iter_succ_e f _ v = List.iter (fun w -> f (v,w)) v.deps*) - let fold_succ f _ v = List.fold_right f v.deps -end - -module Dfs = Graph.Traverse.Dfs(G) -(* -module W = struct - type label = unit - type t = int - let weight _ = 1 - let zero = 0 - let add = (+) - let compare = compare -end - -module Dij = Graph.Path.Dijkstra(G)(W) - -let n = 10000 -let e = 1000000 -let depart = 0 -let arrivee = 765 - -let files = Array.init n (fun i -> {name=string_of_int i;deps=[]} ) -let g = Array.to_list files -let _ = - for i=1 to e do - let n1 = files.(Random.int n) in - let n2 = files.(Random.int n) in - n1.deps <- n2::n1.deps - done - -open Unix - -let utime f x = - let u = (times()).tms_utime in - let y = f x in - let ut = (times()).tms_utime -. u in - (y,ut) - -let print_utime f x = - let (y,ut) = utime f x in - Format.printf "user time: %2.2f@." ut; - y - -(*let () = print_utime (Dfs.prefix (fun _ -> ())) g*) -let _ = print_utime (Dij.shortest_path g files.(depart)) files.(arrivee) - -module G' = Graph.Pack.Digraph -let g' = G'.create () -let files' = Array.map - (fun n -> let v = G'.V.create (int_of_string n.name) in G'.add_vertex g' v; v) files -let () = - List.iter - (fun n1 -> - List.iter (fun n2 -> G'.add_edge g' files'.(int_of_string n1.name) files'.(int_of_string n2.name)) - n1.deps) - g - -module Dfs' = Graph.Traverse.Dfs(G') - -module W' = struct - type label = G'.E.label - type t = int - let weight _ = 1 - let zero = 0 - let add = (+) - let compare = compare -end -module Dij' = Graph.Path.Dijkstra(G')(W') - -(*let () = print_utime (Dfs'.prefix (fun _ -> ())) g'*) -let _ = print_utime (Dij'.shortest_path g' files'.(depart)) files'.(arrivee) - -module G'' = Graph.Persistent.Digraph.Abstract(struct type t = int end) -let g'' = G''.empty -let files'' = Array.map (fun n -> G''.V.create (int_of_string n.name)) files -let g'' = Array.fold_right (fun v g'' -> G''.add_vertex g'' v) files'' g'' -let g'' = - List.fold_right - (fun n1 g'' -> - List.fold_right - (fun n2 g'' -> G''.add_edge g'' files''.(int_of_string n1.name) files''.(int_of_string n2.name)) - n1.deps g'') - g g'' - -module Dfs'' = Graph.Traverse.Dfs(G'') - -module W'' = struct - - type label = G''.E.label - type t = int - let weight _ = 1 - let zero = 0 - let add = (+) - let compare = compare -end -module Dij'' = Graph.Path.Dijkstra(G'')(W'') - -(*let () = print_utime (Dfs''.prefix (fun _ -> ())) g''*) -let _ = print_utime (Dij''.shortest_path g'' files''.(depart)) files''.(arrivee) - - - -*) diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/interface.eps b/jscomp/build_tests/ocamlgraph/papers/gpce2006/interface.eps deleted file mode 100755 index 012b7fbe43..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/interface.eps +++ /dev/null @@ -1,565 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: interface.fig -%%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 -%%CreationDate: Fri May 12 16:12:19 2006 -%%For: conchon@pc8-144 (Sylvain Conchon) -%%BoundingBox: 0 0 967 429 -%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 429 moveto 0 0 lineto 967 0 lineto 967 429 lineto closepath clip newpath -130.0 440.1 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 50 -% Polyline -0 slj -0 slc -7.500 slw -n 225 4050 m 1350 4050 l 1350 4500 l 225 4500 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -810 4320 m -gs 1 -1 sc (Abstract) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 7560 4050 m 8685 4050 l 8685 4500 l 7560 4500 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -8100 4320 m -gs 1 -1 sc (Concrete) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 9315 4050 m 11790 4050 l 11790 4500 l 9315 4500 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -10575 4320 m -gs 1 -1 sc (ConcreteBidirectional) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 12600 3060 675 270 0 360 DrawEllipse gs col0 s gr - -/Times-Roman ff 190.50 scf sf -12600 3105 m -gs 1 -1 sc (G) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 8190 5625 405 225 0 360 DrawEllipse gs col0 s gr - -/Times-Roman ff 222.25 scf sf -8190 5670 m -gs 1 -1 sc (I) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 225 1575 m 1350 1575 l 1350 2025 l 225 2025 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -810 1845 m -gs 1 -1 sc (Abstract) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 7560 1575 m 8685 1575 l 8685 2025 l 7560 2025 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -7785 1845 m -gs 1 -1 sc (Concrete) col0 sh gr -% Ellipse -n 4500 495 450 180 0 360 DrawEllipse gs col0 s gr - -/Times-Roman ff 222.25 scf sf -4500 540 m -gs 1 -1 sc (P) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 9270 6525 m 11295 6525 l 11295 6975 l 9270 6975 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -10305 6795 m -gs 1 -1 sc (Matrix.Digraph) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 5625 6525 m 7200 6525 l 7200 6975 l 5625 6975 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -6435 6795 m -gs 1 -1 sc (Matrix.Graph) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -15.000 slw - [15 68] 68 sd -gs clippath -12362 1228 m 12682 1227 l 12681 1107 l 12361 1108 l 12361 1108 l 12602 1168 l 12362 1228 l cp -eoclip -n 10935 1170 m - 12667 1168 l gs col0 s gr gr - [] 0 sd -% arrowhead -n 12362 1228 m 12602 1168 l 12361 1108 l 12362 1228 l cp gs 0.00 setgray ef gr col0 s -/Times-Roman ff 190.50 scf sf -10935 1035 m -gs 1 -1 sc (signature subtyping) col0 sh gr -% Polyline -7.500 slw -n 1800 1575 m 3600 1575 l 3600 2025 l 1800 2025 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -2700 1845 m -gs 1 -1 sc (AbstractLabelled) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 5175 1575 m 6975 1575 l 6975 2025 l 5175 2025 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -6120 1845 m -gs 1 -1 sc (ConcreteLabelled) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 1755 4050 m 3555 4050 l 3555 4500 l 1755 4500 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -2700 4320 m -gs 1 -1 sc (AbstractLabelled) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 5175 4050 m 6975 4050 l 6975 4500 l 5175 4500 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -6075 4320 m -gs 1 -1 sc (ConcreteLabelled) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 1575 5625 405 225 0 360 DrawEllipse gs col0 s gr - -/Times-Roman ff 222.25 scf sf -1575 5670 m -gs 1 -1 sc (IM) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4410 3015 1260 360 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 1710 3015 1035 360 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 8100 3015 1035 360 0 360 DrawEllipse gs col0 s gr - -% Polyline -15.000 slw -gs clippath -923 3770 m 671 3966 l 744 4061 l 997 3865 l 997 3865 l 771 3965 l 923 3770 l cp -eoclip -n 1530 3375 m - 720 4005 l gs col0 s gr gr - -% arrowhead -n 923 3770 m 771 3965 l 997 3865 l 923 3770 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -1126 5184 m 1309 5446 l 1407 5377 l 1224 5115 l 1224 5115 l 1313 5347 l 1126 5184 l cp -eoclip -n 720 4500 m - 1350 5400 l gs col0 s gr gr - -% arrowhead -n 1126 5184 m 1313 5347 l 1224 5115 l 1126 5184 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2422 3865 m 2675 4061 l 2748 3966 l 2496 3770 l 2496 3770 l 2649 3965 l 2422 3865 l cp -eoclip -n 1890 3375 m - 2700 4005 l gs col0 s gr gr - -% arrowhead -n 2422 3865 m 2649 3965 l 2496 3770 l 2422 3865 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -1973 5096 m 1746 5323 l 1831 5408 l 2058 5181 l 2058 5181 l 1846 5309 l 1973 5096 l cp -eoclip -n 2610 4545 m - 1800 5355 l gs col0 s gr gr - -% arrowhead -n 1973 5096 m 1846 5309 l 2058 5181 l 1973 5096 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3088 3824 m 2796 3956 l 2846 4065 l 3137 3933 l 3137 3933 l 2894 3978 l 3088 3824 l cp -eoclip -n 4230 3375 m - 2835 4005 l gs col0 s gr gr - -% arrowhead -n 3088 3824 m 2894 3978 l 3137 3933 l 3088 3824 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -5772 3933 m 6063 4065 l 6113 3956 l 5821 3824 l 5821 3824 l 6016 3978 l 5772 3933 l cp -eoclip -n 4680 3375 m - 6075 4005 l gs col0 s gr gr - -% arrowhead -n 5772 3933 m 6016 3978 l 5821 3824 l 5772 3933 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6604 3833 m 6308 3955 l 6353 4066 l 6649 3944 l 6649 3944 l 6405 3980 l 6604 3833 l cp -eoclip -n 7875 3375 m - 6345 4005 l gs col0 s gr gr - -% arrowhead -n 6604 3833 m 6405 3980 l 6649 3944 l 6604 3833 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8040 3700 m 8040 4020 l 8160 4020 l 8160 3700 l 8160 3700 l 8100 3940 l 8040 3700 l cp -eoclip -n 8100 3375 m - 8100 4005 l gs col0 s gr gr - -% arrowhead -n 8040 3700 m 8100 3940 l 8160 3700 l 8040 3700 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -10220 3978 m 10527 4066 l 10560 3951 l 10253 3863 l 10253 3863 l 10468 3987 l 10220 3978 l cp -eoclip -n 8325 3375 m - 10530 4005 l gs col0 s gr gr - -% arrowhead -n 10220 3978 m 10468 3987 l 10253 3863 l 10220 3978 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -7491 5389 m 7767 5549 l 7828 5445 l 7551 5285 l 7551 5285 l 7729 5458 l 7491 5389 l cp -eoclip -n 6075 4500 m - 7785 5490 l gs col0 s gr gr - -% arrowhead -n 7491 5389 m 7729 5458 l 7551 5285 l 7491 5389 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8040 5050 m 8040 5370 l 8160 5370 l 8160 5050 l 8160 5050 l 8100 5290 l 8040 5050 l cp -eoclip -n 8100 4500 m - 8100 5355 l gs col0 s gr gr - -% arrowhead -n 8040 5050 m 8100 5290 l 8160 5050 l 8040 5050 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8843 5259 m 8555 5397 l 8607 5505 l 8895 5367 l 8895 5367 l 8653 5417 l 8843 5259 l cp -eoclip -n 10575 4500 m - 8595 5445 l gs col0 s gr gr - -% arrowhead -n 8843 5259 m 8653 5417 l 8895 5367 l 8843 5259 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -1038 2172 m 791 1969 l 715 2061 l 962 2264 l 962 2264 l 815 2066 l 1038 2172 l cp -eoclip -n 1530 2655 m - 765 2025 l gs col0 s gr gr - -% arrowhead -n 1038 2172 m 815 2066 l 962 2264 l 1038 2172 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2442 2297 m 2702 2109 l 2632 2012 l 2372 2199 l 2372 2199 l 2602 2108 l 2442 2297 l cp -eoclip -n 1845 2655 m - 2655 2070 l gs col0 s gr gr - -% arrowhead -n 2442 2297 m 2602 2108 l 2372 2199 l 2442 2297 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3227 2139 m 2935 2009 l 2886 2118 l 3178 2248 l 3178 2248 l 2984 2096 l 3227 2139 l cp -eoclip -n 4230 2655 m - 2925 2070 l gs col0 s gr gr - -% arrowhead -n 3227 2139 m 2984 2096 l 3178 2248 l 3227 2139 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -5776 2248 m 6068 2118 l 6019 2009 l 5727 2139 l 5727 2139 l 5971 2096 l 5776 2248 l cp -eoclip -n 4725 2655 m - 6030 2070 l gs col0 s gr gr - -% arrowhead -n 5776 2248 m 5971 2096 l 5727 2139 l 5776 2248 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6650 2122 m 6352 2008 l 6309 2120 l 6607 2234 l 6607 2234 l 6405 2093 l 6650 2122 l cp -eoclip -n 7875 2655 m - 6345 2070 l gs col0 s gr gr - -% arrowhead -n 6650 2122 m 6405 2093 l 6607 2234 l 6650 2122 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8160 2330 m 8160 2010 l 8040 2010 l 8040 2330 l 8040 2330 l 8100 2090 l 8160 2330 l cp -eoclip -n 8100 2655 m - 8100 2025 l gs col0 s gr gr - -% arrowhead -n 8160 2330 m 8100 2090 l 8040 2330 l 8160 2330 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3994 808 m 4304 729 l 4274 613 l 3964 692 l 3964 692 l 4212 691 l 3994 808 l cp -eoclip -n 765 1575 m - 4275 675 l gs col0 s gr gr - -% arrowhead -n 3994 808 m 4212 691 l 3964 692 l 3994 808 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -4164 909 m 4450 766 l 4396 659 l 4110 802 l 4110 802 l 4352 749 l 4164 909 l cp -eoclip -n 2700 1575 m - 4410 720 l gs col0 s gr gr - -% arrowhead -n 4164 909 m 4352 749 l 4110 802 l 4164 909 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -5214 700 m 4906 613 l 4874 728 l 5181 815 l 5181 815 l 4967 693 l 5214 700 l cp -eoclip -n 8100 1575 m - 4905 675 l gs col0 s gr gr - -% arrowhead -n 5214 700 m 4967 693 l 5181 815 l 5214 700 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -7704 6063 m 8001 5945 l 7956 5833 l 7659 5952 l 7659 5952 l 7905 5919 l 7704 6063 l cp -eoclip -n 6390 6525 m - 7965 5895 l gs col0 s gr gr - -% arrowhead -n 7704 6063 m 7905 5919 l 7659 5952 l 7704 6063 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8768 5977 m 8464 5878 l 8427 5992 l 8731 6091 l 8731 6091 l 8522 5960 l 8768 5977 l cp -eoclip -n 10260 6525 m - 8460 5940 l gs col0 s gr gr - -% arrowhead -n 8768 5977 m 8522 5960 l 8731 6091 l 8768 5977 l cp gs 0.00 setgray ef gr col0 s -% Polyline -30.000 slw -n 0 225 m - 0 2925 l gs col0 s gr -% Polyline -n 0 225 m - 225 225 l gs col0 s gr -% Polyline -n 0 2925 m - 225 2925 l gs col0 s gr -% Polyline -n 225 3150 m 0 3150 l 0 6075 l - 225 6075 l gs col0 s gr -% Polyline -15.000 slw -gs clippath -4842 854 m 4559 704 l 4503 811 l 4786 960 l 4786 960 l 4602 795 l 4842 854 l cp -eoclip -n 6075 1575 m - 4545 765 l gs col0 s gr gr - -% arrowhead -n 4842 854 m 4602 795 l 4786 960 l 4842 854 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -12362 778 m 12682 777 l 12681 657 l 12361 658 l 12361 658 l 12602 718 l 12362 778 l cp -eoclip -n 10935 720 m - 12667 718 l gs col0 s gr gr - -% arrowhead -n 12362 778 m 12602 718 l 12361 658 l 12362 778 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [15 68] 68 sd -gs clippath -12266 2585 m 12535 2758 l 12600 2657 l 12331 2484 l 12331 2484 l 12501 2665 l 12266 2585 l cp -eoclip -n 4950 495 m 4951 495 l 4954 495 l 4959 495 l 4966 495 l 4978 495 l - 4993 496 l 5014 496 l 5039 497 l 5069 497 l 5105 498 l - 5147 499 l 5194 500 l 5248 501 l 5307 503 l 5372 504 l - 5442 506 l 5518 508 l 5598 510 l 5682 513 l 5771 515 l - 5863 518 l 5958 521 l 6056 524 l 6155 528 l 6256 532 l - 6359 536 l 6461 540 l 6564 544 l 6667 549 l 6770 553 l - 6871 558 l 6971 564 l 7070 569 l 7168 574 l 7263 580 l - 7357 586 l 7449 593 l 7539 599 l 7626 606 l 7712 613 l - 7795 620 l 7876 627 l 7955 635 l 8032 643 l 8107 651 l - 8180 660 l 8252 668 l 8321 678 l 8389 687 l 8455 697 l - 8520 707 l 8583 718 l 8645 728 l 8706 740 l 8766 752 l - 8825 764 l 8883 776 l 8940 790 l 8997 803 l 9052 817 l - 9108 832 l 9163 847 l 9218 863 l 9275 880 l 9333 897 l - 9390 916 l 9448 935 l 9505 954 l 9562 975 l 9619 996 l - 9676 1018 l 9734 1041 l 9792 1066 l 9850 1091 l 9910 1117 l - 9969 1144 l 10030 1172 l 10091 1202 l 10154 1233 l 10218 1265 l - 10282 1298 l 10348 1333 l 10416 1369 l 10484 1406 l 10554 1445 l - 10626 1485 l 10699 1527 l 10773 1570 l 10848 1614 l 10925 1659 l - 11003 1706 l 11082 1754 l 11162 1802 l 11242 1852 l 11323 1902 l - 11404 1952 l 11484 2003 l 11565 2054 l 11644 2104 l 11722 2154 l - 11799 2203 l 11873 2251 l 11945 2297 l 12014 2342 l 12080 2385 l - 12142 2426 l 12200 2464 l 12254 2500 l 12304 2532 l 12348 2562 l - 12388 2588 l 12423 2612 l 12454 2632 l 12480 2649 l 12501 2664 l - 12518 2675 l 12531 2684 l 12541 2691 l - 12555 2700 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 12266 2585 m 12501 2665 l 12331 2484 l 12266 2585 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [15 68] 68 sd -gs clippath -7390 5685 m 7710 5685 l 7710 5565 l 7390 5565 l 7390 5565 l 7630 5625 l 7390 5685 l cp -eoclip -n 1980 5625 m - 7695 5625 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 7390 5685 m 7630 5625 l 7390 5565 l 7390 5685 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [15 68] 68 sd -gs clippath -12709 3722 m 12840 3430 l 12731 3381 l 12599 3673 l 12599 3673 l 12753 3479 l 12709 3722 l cp -eoclip -n 8595 5625 m 8596 5625 l 8599 5625 l 8605 5625 l 8615 5625 l 8628 5624 l - 8646 5624 l 8670 5623 l 8699 5622 l 8733 5621 l 8774 5620 l - 8821 5619 l 8873 5617 l 8931 5615 l 8994 5613 l 9062 5610 l - 9135 5607 l 9211 5604 l 9291 5600 l 9373 5597 l 9457 5593 l - 9543 5588 l 9630 5583 l 9717 5578 l 9804 5573 l 9890 5568 l - 9975 5562 l 10059 5556 l 10141 5549 l 10222 5542 l 10300 5535 l - 10376 5528 l 10449 5520 l 10521 5512 l 10589 5504 l 10656 5495 l - 10720 5486 l 10781 5477 l 10840 5467 l 10897 5457 l 10952 5446 l - 11005 5435 l 11055 5424 l 11104 5411 l 11151 5399 l 11196 5386 l - 11240 5372 l 11283 5358 l 11324 5343 l 11363 5327 l 11402 5311 l - 11440 5294 l 11477 5276 l 11513 5258 l 11554 5235 l 11594 5212 l - 11633 5187 l 11671 5161 l 11709 5134 l 11745 5106 l 11781 5075 l - 11816 5044 l 11851 5010 l 11886 4975 l 11920 4938 l 11954 4898 l - 11988 4857 l 12022 4813 l 12057 4767 l 12091 4719 l 12125 4668 l - 12160 4615 l 12195 4560 l 12230 4502 l 12265 4442 l 12301 4381 l - 12336 4318 l 12372 4253 l 12407 4188 l 12442 4122 l 12476 4055 l - 12509 3990 l 12541 3926 l 12572 3863 l 12602 3803 l 12629 3746 l - 12655 3692 l 12678 3643 l 12699 3599 l 12717 3559 l 12733 3525 l - 12746 3496 l 12756 3473 l 12765 3454 l 12771 3440 l - 12780 3420 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 12709 3722 m 12753 3479 l 12599 3673 l 12709 3722 l cp gs 0.00 setgray ef gr col0 s -/Times-Roman ff 222.25 scf sf --1125 1845 m -gs 1 -1 sc (Persistent.[Di]Graph) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 222.25 scf sf --1125 4320 m -gs 1 -1 sc (Imperative.[Di]Graph) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 190.50 scf sf -10935 630 m -gs 1 -1 sc (functor application) col0 sh gr -/Times-Roman ff 190.50 scf sf -1710 3060 m -gs 1 -1 sc (ANY_TYPE) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 190.50 scf sf -4455 3060 m -gs 1 -1 sc (ORDERED_TYPE_DFT) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 190.50 scf sf -8145 3060 m -gs 1 -1 sc (COMPARABLE) dup sw pop 2 div neg 0 rm col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage -%%Trailer -%EOF diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/interface.fig b/jscomp/build_tests/ocamlgraph/papers/gpce2006/interface.fig deleted file mode 100755 index 84e8e8a5db..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/interface.fig +++ /dev/null @@ -1,192 +0,0 @@ -#FIG 3.2 Produced by xfig version 3.2.5-alpha5 -Landscape -Center -Metric -A4 -100.00 -Single --2 -1200 2 -6 225 4050 1350 4500 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 225 4050 1350 4050 1350 4500 225 4500 225 4050 -4 1 0 50 -1 0 14 0.0000 2 135 720 810 4320 Abstract\001 --6 -6 7560 4050 8685 4500 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 7560 4050 8685 4050 8685 4500 7560 4500 7560 4050 -4 1 0 50 -1 0 14 0.0000 2 135 720 8100 4320 Concrete\001 --6 -6 9315 4050 11790 4500 -6 9315 4050 11790 4500 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 9315 4050 11790 4050 11790 4500 9315 4500 9315 4050 -4 1 0 50 -1 0 14 0.0000 2 135 1890 10575 4320 ConcreteBidirectional\001 --6 --6 -6 11925 2790 13275 3330 -1 1 0 1 0 7 50 -1 -1 0.000 1 0.0000 12600 3060 675 270 12600 3060 11925 3330 -4 1 0 50 -1 0 12 0.0000 0 135 90 12600 3105 G\001 --6 -6 7785 5400 8595 5850 -1 1 0 1 0 7 50 -1 -1 0.000 1 0.0000 8190 5625 405 225 8190 5625 7785 5850 -4 1 0 50 -1 0 14 0.0000 2 135 90 8190 5670 I\001 --6 -6 225 1575 1350 2025 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 225 1575 1350 1575 1350 2025 225 2025 225 1575 -4 1 0 50 -1 0 14 0.0000 2 135 720 810 1845 Abstract\001 --6 -6 7560 1575 8685 2025 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 7560 1575 8685 1575 8685 2025 7560 2025 7560 1575 -4 0 0 50 -1 0 14 0.0000 0 135 720 7785 1845 Concrete\001 --6 -6 4050 315 4950 675 -1 1 0 1 0 7 50 -1 -1 0.000 1 0.0000 4500 495 450 180 4500 495 4950 495 -4 1 0 50 -1 0 14 0.0000 2 135 90 4500 540 P\001 --6 -6 9270 6525 11295 6975 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 9270 6525 11295 6525 11295 6975 9270 6975 9270 6525 -4 1 0 50 -1 0 14 0.0000 2 165 1260 10305 6795 Matrix.Digraph\001 --6 -6 5625 6525 7200 6975 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 5625 6525 7200 6525 7200 6975 5625 6975 5625 6525 -4 1 0 50 -1 0 14 0.0000 2 165 1080 6435 6795 Matrix.Graph\001 --6 -6 10890 900 12690 1260 -2 1 2 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 10935 1170 12667 1168 -4 0 0 50 -1 0 12 0.0000 4 165 1710 10935 1035 signature subtyping\001 --6 -6 1800 1575 3600 2025 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 1800 1575 3600 1575 3600 2025 1800 2025 1800 1575 -4 1 0 50 -1 0 14 0.0000 2 135 1440 2700 1845 AbstractLabelled\001 --6 -6 5175 1575 6975 2025 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 5175 1575 6975 1575 6975 2025 5175 2025 5175 1575 -4 1 0 50 -1 0 14 0.0000 2 135 1440 6120 1845 ConcreteLabelled\001 --6 -6 1755 4050 3555 4500 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 1755 4050 3555 4050 3555 4500 1755 4500 1755 4050 -4 1 0 50 -1 0 14 0.0000 2 135 1440 2700 4320 AbstractLabelled\001 --6 -6 5175 4050 6975 4500 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 5175 4050 6975 4050 6975 4500 5175 4500 5175 4050 -4 1 0 50 -1 0 14 0.0000 2 135 1440 6075 4320 ConcreteLabelled\001 --6 -6 1170 5400 1980 5850 -1 1 0 1 0 7 50 -1 -1 0.000 1 0.0000 1575 5625 405 225 1575 5625 1170 5850 -4 1 0 50 -1 0 14 0.0000 2 135 180 1575 5670 IM\001 --6 -1 1 0 1 0 7 50 -1 -1 0.000 1 0.0000 4410 3015 1260 360 4410 3015 5670 3015 -1 1 0 1 0 7 50 -1 -1 0.000 1 0.0000 1710 3015 1035 360 1710 3015 2745 3015 -1 1 0 1 0 7 50 -1 -1 0.000 1 0.0000 8100 3015 1035 360 8100 3015 9135 3015 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 1530 3375 720 4005 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 720 4500 1350 5400 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 1890 3375 2700 4005 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 2610 4545 1800 5355 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4230 3375 2835 4005 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4680 3375 6075 4005 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 7875 3375 6345 4005 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8100 3375 8100 4005 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8325 3375 10530 4005 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6075 4500 7785 5490 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8100 4500 8100 5355 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 10575 4500 8595 5445 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 1530 2655 765 2025 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 1845 2655 2655 2070 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4230 2655 2925 2070 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4725 2655 6030 2070 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 7875 2655 6345 2070 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8100 2655 8100 2025 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 765 1575 4275 675 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 2700 1575 4410 720 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8100 1575 4905 675 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6390 6525 7965 5895 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 10260 6525 8460 5940 -2 1 0 3 0 7 50 -1 -1 6.000 0 0 -1 0 0 2 - 0 225 0 2925 -2 1 0 3 0 7 50 -1 -1 6.000 0 0 -1 0 0 2 - 0 225 225 225 -2 1 0 3 0 7 50 -1 -1 6.000 0 0 -1 0 0 2 - 0 2925 225 2925 -2 1 0 3 0 7 50 -1 -1 6.000 0 0 -1 0 0 4 - 225 3150 0 3150 0 6075 225 6075 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6075 1575 4545 765 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 10935 720 12667 718 -3 0 2 2 0 7 50 -1 -1 4.500 0 1 0 3 - 1 1 2.00 120.00 240.00 - 4950 495 9450 495 12555 2700 - 0.000 1.000 0.000 -3 0 2 2 0 7 50 -1 -1 4.500 0 1 0 2 - 1 1 2.00 120.00 240.00 - 1980 5625 7695 5625 - 0.000 0.000 -3 0 2 2 0 7 50 -1 -1 4.500 0 1 0 3 - 1 1 2.00 120.00 240.00 - 8595 5625 11925 5625 12780 3420 - 0.000 1.000 0.000 -4 1 0 50 -1 0 14 0.0000 2 180 1800 -1125 1845 Persistent.[Di]Graph\001 -4 1 0 50 -1 0 14 0.0000 2 180 1800 -1125 4320 Imperative.[Di]Graph\001 -4 0 0 50 -1 0 12 0.0000 4 165 1710 10935 630 functor application\001 -4 1 0 50 -1 0 12 0.0000 2 150 720 1710 3060 ANY_TYPE\001 -4 1 0 50 -1 0 12 0.0000 0 150 1440 4455 3060 ORDERED_TYPE_DFT\001 -4 1 0 50 -1 0 12 0.0000 2 135 900 8145 3060 COMPARABLE\001 diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/interface.latex b/jscomp/build_tests/ocamlgraph/papers/gpce2006/interface.latex deleted file mode 100755 index 33e9f38544..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/interface.latex +++ /dev/null @@ -1,358 +0,0 @@ -\setlength{\unitlength}{2901sp}% -% -\begingroup\makeatletter\ifx\SetFigFont\undefined% -\gdef\SetFigFont#1#2#3#4#5{% - \reset@font\fontsize{#1}{#2pt}% - \fontfamily{#3}\fontseries{#4}\fontshape{#5}% - \selectfont}% -\fi\endgroup% -\begin{picture}(12485,7534)(214,-7183) -\thinlines -{\color[rgb]{0,0,0}\put(226,-1186){\framebox(1125,450){}} -}% -{\color[rgb]{0,0,0}\put(1801,-1186){\framebox(1800,450){}} -}% -{\color[rgb]{0,0,0}\put(4276,-1186){\framebox(1800,450){}} -}% -{\color[rgb]{0,0,0}\put(6526,-1186){\framebox(1125,450){}} -}% -\put(811,-1006){\makebox(0,0)[b]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}Abstract}% -}}}} -\put(2701,-1006){\makebox(0,0)[b]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}AbstractLabeled}% -}}}} -\put(5221,-1006){\makebox(0,0)[b]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}ConcreteLabeled}% -}}}} -\put(6751,-1006){\makebox(0,0)[lb]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}Concrete}% -}}}} -{\color[rgb]{0,0,0}\put(4006,164){\oval(900,360)} -}% -\put(4006,119){\makebox(0,0)[b]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}P}% -}}}} -{\color[rgb]{0,0,0}\put(1576,-2041){\oval(1800,540)} -}% -\put(1036,-2086){\makebox(0,0)[b]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}sig}% -}}}} -\put(1621,-2086){\makebox(0,0)[b]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}type t}% -}}}} -\put(2161,-2086){\makebox(0,0)[b]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}end}% -}}}} -{\color[rgb]{0,0,0}\put(4006,-2041){\oval(1980,540)} -}% -\put(3961,-2086){\makebox(0,0)[b]{\smash{{\SetFigFont{8}{9.6}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}ORDERED\_TYPE\_DFT}% -}}}} -{\color[rgb]{0,0,0}\put(1576,-4336){\oval(810,450)} -}% -\put(1576,-4381){\makebox(0,0)[b]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}IA}% -}}}} -{\color[rgb]{0,0,0}\put(12016,-2041){\oval(1350,540)} -}% -\put(12016,-2086){\makebox(0,0)[b]{\smash{{\SetFigFont{8}{9.6}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}G}% -}}}} -{\color[rgb]{0,0,0}\put(6301,-2041){\oval(1800,540)} -}% -{\color[rgb]{0,0,0}\put(7156,-4291){\oval(810,450)} -}% -{\color[rgb]{0,0,0}\put(226,-3436){\framebox(1125,450){}} -}% -{\color[rgb]{0,0,0}\put(1801,-3436){\framebox(1800,450){}} -}% -{\color[rgb]{0,0,0}\put(4276,-3436){\framebox(1800,450){}} -}% -{\color[rgb]{0,0,0}\put(6526,-3436){\framebox(1125,450){}} -}% -{\color[rgb]{0,0,0}\put(7876,-3436){\framebox(2475,450){}} -}% -{\color[rgb]{0,0,0}\put(2566,-6046){\vector( 1,-3){351}} -}% -{\color[rgb]{0,0,0}\put(3916,-6181){\vector(-3,-4){750.600}} -}% -{\color[rgb]{0,0,0}\put(5176,-5686){\framebox(1575,450){}} -}% -{\color[rgb]{0,0,0}\put(7651,-5686){\framebox(2025,450){}} -}% -\thicklines -{\color[rgb]{0,0,0}\multiput(7606,-4291)(1.00000,0.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7607,-4291)(2.00000,0.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7609,-4291)(4.00000,-1.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7613,-4292)(6.00000,0.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7619,-4292)(7.94590,-1.32432){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7627,-4293)(12.00000,-2.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7639,-4295)(15.00000,0.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7654,-4296)(17.83780,-2.97297){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7672,-4298)(10.45945,-1.74324){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7693,-4301)(13.00000,0.00000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7719,-4303)(14.35135,-2.39189){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7748,-4306)(15.89190,-2.64865){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7780,-4310)(11.83783,-1.97297){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7816,-4313)(12.86487,-2.14414){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7855,-4317)(13.83783,-2.30631){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7897,-4321)(14.81080,-2.46847){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7942,-4325)(15.45947,-2.57658){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7989,-4329)(12.36487,-2.06081){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8039,-4334)(12.75000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8090,-4338)(13.25000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8143,-4342)(13.75000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8198,-4346)(14.00000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8254,-4350)(14.50000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8312,-4353)(14.50000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8370,-4356)(15.00000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8430,-4359)(15.00000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8490,-4362)(12.40000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8552,-4364)(12.60000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8615,-4365)(12.60000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8678,-4366)(13.00000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8743,-4367)(13.40000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8810,-4366)(13.40000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8877,-4366)(13.80000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8946,-4364)(14.20000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9017,-4361)(14.40000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9089,-4358)(14.80000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9163,-4354)(12.66667,0.00000){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9239,-4348)(13.00000,0.00000){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9317,-4342)(13.02703,2.17117){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9396,-4334)(13.37838,2.22973){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9477,-4325)(13.40540,2.23423){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9558,-4315)(13.59460,2.26577){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9640,-4304)(13.48648,2.24775){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9721,-4291)(13.15830,2.19305){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9813,-4275)(12.69231,2.53846){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9902,-4258)(14.00642,2.80128){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9986,-4241)(13.04487,2.60897){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10064,-4224)(14.16470,3.54117){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10135,-4207)(12.75294,3.18823){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10199,-4192)(14.47060,3.61765){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10257,-4178)(12.52940,3.13235){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10307,-4165)(14.66667,3.66667){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10351,-4154)(12.70587,3.17647){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10389,-4144)(16.11765,4.02941){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10421,-4135)(13.05880,3.26470){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10447,-4128)(11.05880,2.76470){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10469,-4122)(18.11760,4.52940){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10487,-4117)(15.05880,3.76470){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10502,-4113)(11.10000,3.70000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10513,-4109)(9.90000,3.30000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10523,-4106)(7.93100,3.17240){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10531,-4103)(7.93100,3.17240){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10539,-4100)(6.91180,4.14708){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10546,-4096)(7.06900,2.82760){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10553,-4093)(8.08820,4.85292){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10561,-4088)(10.00000,5.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10571,-4083)(11.91180,7.14708){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10583,-4076)(15.00000,9.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10598,-4067)(8.82355,5.29413){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10616,-4057)(11.20000,5.60000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10638,-4045)(12.50000,7.50000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10663,-4030)(10.00000,6.00000){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10693,-4012)(11.66667,7.00000){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10728,-3991)(13.33333,8.00000){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10768,-3967)(11.25000,6.75000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10813,-3940)(12.42647,7.45589){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10862,-3909)(10.94118,6.56471){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10916,-3875)(11.53846,7.69231){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10974,-3837)(12.23076,8.15384){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11035,-3796)(10.65385,7.10257){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11098,-3752)(10.40000,7.80000){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11161,-3706)(10.45333,7.84000){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11223,-3658)(9.91803,8.26503){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11283,-3609)(9.62295,8.01912){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11340,-3560)(10.40000,10.40000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11394,-3510)(9.90000,9.90000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11445,-3462)(9.60000,9.60000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11493,-3414)(9.20000,9.20000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11538,-3367)(9.00000,9.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11581,-3320)(9.63115,11.55738){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11621,-3275)(9.32377,11.18853){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11658,-3230)(8.78050,10.97563){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11693,-3186)(8.25000,11.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11726,-3142)(8.04000,10.72000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11758,-3099)(7.74000,10.32000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11788,-3057)(7.00000,10.50000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11816,-3015)(6.80770,10.21155){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11843,-2974)(6.17647,10.29412){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11868,-2933)(8.08823,13.48039){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11893,-2893)(7.76470,12.94117){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11916,-2854)(7.52940,12.54900){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11938,-2816)(7.44117,12.40194){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11959,-2778)(6.91177,11.51961){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11979,-2743)(5.73333,11.46667){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11997,-2709)(5.53333,11.06667){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(12014,-2676)(5.06667,10.13333){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(12030,-2646)(6.80000,13.60000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(12044,-2619)(6.40000,12.80000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(12056,-2593)(5.60000,11.20000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(12068,-2571)(4.70000,9.40000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(12077,-2552)(8.40000,16.80000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(12085,-2535)(6.60000,13.20000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(12092,-2522)(5.40000,10.80000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(12097,-2511)(3.17240,7.93100){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\put(12106,-2491){\vector( 1, 2){0}} -\multiput(12100,-2503)(6.00000,12.00000){1}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -}% -{\color[rgb]{0,0,0}\multiput(4456,164)(1.00000,0.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4457,164)(1.00000,0.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4458,164)(3.00000,0.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4461,164)(4.00000,1.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4465,165)(7.00000,0.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4472,165)(8.00000,0.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4480,165)(10.86490,1.81082){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4491,166)(14.00000,0.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4505,167)(17.00000,0.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4522,168)(19.00000,0.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4541,169)(11.50000,0.00000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4564,170)(13.00000,0.00000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4590,172)(14.50000,0.00000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4619,173)(16.00000,0.00000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4651,175)(11.66667,0.00000){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4686,177)(12.66667,0.00000){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4724,179)(13.66667,0.00000){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4765,181)(14.33333,0.00000){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4808,183)(15.33333,0.00000){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4854,185)(12.00000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4902,187)(12.75000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(4953,189)(13.00000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(5005,191)(13.75000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(5060,194)(14.00000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(5116,196)(14.25000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(5173,198)(14.75000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(5232,200)(12.20000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(5293,202)(12.40000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(5355,203)(12.60000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(5418,205)(13.00000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(5483,206)(13.20000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(5549,208)(13.60000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(5617,209)(13.80000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(5686,209)(14.00000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(5756,210)(14.40000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(5828,210)(14.80000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(5902,211)(12.66667,0.00000){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(5978,210)(13.00000,0.00000){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(6056,210)(13.33333,0.00000){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(6136,209)(13.83333,0.00000){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(6219,208)(14.16667,0.00000){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(6304,206)(14.50000,0.00000){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(6391,204)(12.85714,0.00000){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(6481,202)(13.28571,0.00000){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(6574,199)(13.71429,0.00000){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(6670,196)(14.00000,0.00000){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(6768,192)(14.42857,0.00000){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(6869,187)(12.87500,0.00000){9}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(6972,182)(13.12500,0.00000){9}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7077,177)(13.37500,0.00000){9}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7184,171)(13.37500,0.00000){9}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7291,164)(13.37500,0.00000){9}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7398,157)(13.25000,0.00000){9}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7504,149)(12.87500,0.00000){9}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7607,142)(14.28571,0.00000){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7707,134)(13.57143,0.00000){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7802,127)(13.14286,0.00000){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7894,120)(14.16667,0.00000){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(7979,114)(13.50000,0.00000){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8060,108)(12.50000,0.00000){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8135,103)(14.00000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8205, 98)(12.80000,0.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8269, 95)(14.50000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8327, 91)(13.25000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8380, 89)(12.25000,0.00000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8429, 87)(14.33333,0.00000){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8472, 86)(13.00000,0.00000){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8511, 85)(11.66667,0.00000){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8546, 85)(16.00000,0.00000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8578, 86)(14.00000,0.00000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8606, 87)(12.50000,0.00000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8631, 88)(10.86485,1.81081){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8653, 90)(10.37840,1.72973){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8674, 92)(18.81080,3.13513){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8693, 94)(16.86490,2.81082){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8710, 96)(15.89190,2.64865){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8726, 98)(15.89190,2.64865){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8742,100)(15.89190,2.64865){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8758,102)(15.89190,2.64865){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8774,104)(17.00000,0.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8791,105)(18.00000,0.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8809,106)(19.00000,0.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8828,107)(11.00000,0.00000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8850,107)(11.50000,0.00000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8873,106)(13.00000,0.00000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8899,104)(14.35135,-2.39189){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8928,101)(16.37840,-2.72973){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8961, 97)(11.94593,-1.99099){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(8997, 92)(13.29730,-2.21622){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9037, 86)(14.70270,-2.45045){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9081, 78)(12.25962,-2.45193){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9130, 68)(13.26923,-2.65385){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9183, 57)(14.56730,-2.91346){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9241, 44)(12.37648,-3.09412){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9303, 29)(13.36470,-3.34117){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9370, 13)(12.03922,-3.00980){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9442, -6)(12.74510,-3.18628){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9518,-27)(13.45098,-3.36275){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9598,-50)(13.85000,-4.61667){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9682,-75)(12.25714,-4.08571){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9768,-103)(12.68571,-4.22857){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9857,-132)(12.77143,-4.25714){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(9946,-163)(12.70936,-5.08374){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10036,-196)(11.93965,-4.77586){9}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10132,-233)(13.37439,-5.34975){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10225,-272)(13.17734,-5.27094){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10316,-312)(12.22857,-6.11429){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10403,-352)(11.94286,-5.97143){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10487,-393)(11.48571,-5.74286){8}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10567,-434)(13.00000,-6.50000){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10644,-475)(11.96078,-7.17647){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10717,-516)(11.39707,-6.83824){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10786,-556)(11.10293,-6.66176){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10852,-597)(10.78432,-6.47059){7}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10916,-637)(12.00000,-8.00000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(10976,-677)(11.58462,-7.72308){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11033,-717)(10.88000,-8.16000){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11088,-757)(10.62400,-7.96800){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11141,-797)(10.12196,-8.09757){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11192,-837)(9.65854,-7.72683){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11240,-876)(9.38360,-7.81967){6}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11287,-915)(11.43442,-9.52869){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11332,-954)(11.13935,-9.28279){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11375,-993)(10.12500,-10.12500){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11417,-1032)(9.75000,-9.75000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11457,-1070)(9.62500,-9.62500){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11496,-1108)(9.37500,-9.37500){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11534,-1145)(9.12500,-9.12500){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11570,-1182)(8.75000,-8.75000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11604,-1218)(8.50000,-8.50000){5}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11637,-1253)(11.00000,-11.00000){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11669,-1287)(9.37160,-11.24592){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11698,-1320)(9.07103,-10.88524){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11726,-1352)(8.60657,-10.32788){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11753,-1382)(7.86887,-9.44264){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11777,-1410)(7.56830,-9.08196){4}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11800,-1437)(10.20490,-12.24588){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11821,-1461)(9.12195,-11.40244){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11839,-1484)(8.40165,-10.08198){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11856,-1504)(7.50000,-9.00000){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11871,-1522)(6.43900,-8.04875){3}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11884,-1538)(9.84000,-13.12000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11894,-1551)(9.09840,-10.91808){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11903,-1562)(7.12200,-8.90250){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11910,-1571)(5.90160,-7.08192){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\multiput(11916,-1578)(4.00000,-5.00000){2}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -\put(11926,-1591){\vector( 3,-4){0}} -\multiput(11920,-1583)(6.00000,-8.00000){1}{\makebox(9.0714,13.6071){\normalsize{\rmdefault}{\mddefault}{\updefault}.}} -}% -\put(6301,-2086){\makebox(0,0)[b]{\smash{{\SetFigFont{8}{9.6}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}COMPARABLE}% -}}}} -\put(811,-3256){\makebox(0,0)[b]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}Abstract}% -}}}} -\put(2746,-3256){\makebox(0,0)[b]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}AbstractLabeled}% -}}}} -\put(5176,-3256){\makebox(0,0)[b]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}ConcreteLabeled}% -}}}} -\put(7066,-3256){\makebox(0,0)[b]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}Concrete}% -}}}} -\put(9136,-3256){\makebox(0,0)[b]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}ConcreteBidirectional}% -}}}} -\put(7156,-4336){\makebox(0,0)[b]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}I}% -}}}} -\put(5986,-5506){\makebox(0,0)[b]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}Matrix.Graph}% -}}}} -\put(8686,-5506){\makebox(0,0)[b]{\smash{{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}Matrix.Digraph}% -}}}} -\end{picture}% diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/interface.pdf b/jscomp/build_tests/ocamlgraph/papers/gpce2006/interface.pdf deleted file mode 100755 index ee339223e6..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/papers/gpce2006/interface.pdf and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/lab.ml b/jscomp/build_tests/ocamlgraph/papers/gpce2006/lab.ml deleted file mode 100755 index 35a1d2df1c..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/lab.ml +++ /dev/null @@ -1,126 +0,0 @@ - -open Graph - -module Time = struct - - open Unix - - let utime f x = - let u = (times()).tms_utime in - let y = f x in - let ut = (times()).tms_utime -. u in - (y,ut) - - let print_utime f x = - let (y,ut) = utime f x in - Printf.printf "user time: %2.2f\n" ut; - y - -end - -let n = 40 -let m = 20 -let min_path = n + m + (max n m / 2) - -module LabP(G : Sig.P with type V.label = int*int) = -struct - - let nodes = - Array.init n (fun i -> Array.init m (fun j -> G.V.create (i,j))) - let g = - Array.fold_left (Array.fold_left (fun g v -> G.add_vertex g v)) - G.empty nodes - - let src = nodes.(0).(0) - let dst = nodes.(n-1).(m-1) - - module W = struct - type label = G.E.label - type t = int - let weight _ = 1 - let zero = 0 - let add = (+) - let compare = compare - end - module Dij = Path.Dijkstra(G)(W) - - let rec lab g = - try - let p,l = Dij.shortest_path g src dst in - if l >= min_path then - g - else - let g = - List.fold_left - (fun g e -> if Random.int 2 < 1 then G.remove_edge_e g e else g) - g p - in - lab g - with Not_found -> - let rec add g i = - if i < min n m then - let i = Random.int n in - let j = Random.int m in - let v = nodes.(i).(j) in - let g = match Random.int 4 with - | 0 (*gauche*) when i > 0 -> G.add_edge g v nodes.(i-1).(j) - | 1 (*droite*) when i < n-1 -> G.add_edge g v nodes.(i+1).(j) - | 2 (*bas*) when j > 0 -> G.add_edge g v nodes.(i).(j-1) - | 3 (*haut*) when j < m-1 -> G.add_edge g v nodes.(i).(j+1) - | _ -> g - in - add g (i+1) - else - g - in - lab (add g 0) - - let g = lab g - - open Graphics - let w = 800 - let h = 600 - let () = open_graph (Printf.sprintf " %dx%d" w h) - let sx = w / n - let sy = h / m - let () = - for i = 0 to n-1 do - for j = 0 to m-1 do - let v = nodes.(i).(j) in - let x = sx * (i+1) in - let y = sy * (j+1) in - if i < n-1 && not (G.mem_edge g v nodes.(i+1).(j)) then begin - moveto x y; lineto x (y-sy) - end; - if j < m-1 && not (G.mem_edge g v nodes.(i).(j+1)) then begin - moveto x y; lineto (x-sx) y - end - done - done; - ignore (read_key ()) - -(*** - module Gr = Graphviz.Neato - (struct - include G - let graph_attributes _ = [] - let default_vertex_attributes _ = [] - let vertex_name v = - let i,j = G.V.label v in string_of_int (i+j*m) - let vertex_attributes _ = [] - let default_edge_attributes _ = [] - let edge_attributes _ = [] - end) - - let () = - let c = open_out "test.dot" in - Gr.output_graph c g; - close_out c; - ignore (Sys.command "dot -Tps test.dot | gv --orientation=landscape -") -***) - - -end - -module G = Persistent.Graph.Abstract(struct type t=int*int end) -module M = LabP(G) diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/main.tex b/jscomp/build_tests/ocamlgraph/papers/gpce2006/main.tex deleted file mode 100755 index 20f58b2fe5..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/main.tex +++ /dev/null @@ -1,1317 +0,0 @@ -%----------------------------------------------------------------------------- -% -% Template for LaTeX Class/Style File -% -% Name: sigplanconf-template.tex -% Purpose: A template for sigplanconf.cls, which is a LaTeX 2e class -% file for SIGPLAN conference proceedings. -% -% Author: Paul C. Anagnostopoulos -% Windfall Software -% 978 371-2316 -% paul@windfall.com -% -% Created: 15 February 2005 -% -%----------------------------------------------------------------------------- - - -\documentclass[preprint]{sigplanconf} - -\usepackage{amsmath} -\usepackage{url} -\usepackage{xspace} -\usepackage{alltt} -\usepackage{verbatim} -%\usepackage{color} -%\usepackage[dvips]{epsfig} -\usepackage[pdftex]{graphicx} - -\newcommand{\ocamlgraph}{\textsc{Ocamlgraph}\xspace} -\newcommand{\ocaml}{\textsc{Ocaml}\xspace} -\newcommand{\fl}{\ensuremath{\rightarrow}} - -\begin{document} - -\conferenceinfo{GPCE '06}{October 22--26 2006, Portland, Oregon.} -\copyrightyear{2006} -\copyrightdata{[to be supplied]} - -\titlebanner{} % These are ignored unless -\preprintfooter{} % 'preprint' option specified. - -\title{Designing a Generic Graph Library using ML Functors} -\subtitle{} - -\authorinfo{Submitted for blind review}{}{} -%\authorinfo{S. Conchon\and J.-C. Filli\^atre\and J. Signoles} -% {LRI Universit\'e Paris Sud 91405 Orsay France} -% {\{conchon,filliatr,signoles\}@lri.fr} - -\maketitle - -\begin{abstract} - This article details the design and implementation of \ocamlgraph, a - generic graph library for the programming language \ocaml. This - library features a large set of graph data structures---directed or - undirected, with or without labels on vertices and edges, as persistent - or mutable data structures, etc.---and a large set of graph - algorithms written independently of the graph data structure. Such a - genericity is obtained through a massive use of \ocaml module system - and of its functions, the so-called \emph{functors}. -\end{abstract} - -\category{D.2}{Software Engineering}{Software Architectures; Design; - Reusable Software} - -%\terms -%term1, term2 - -\keywords -Graph library, Generic programming, Functors - -\section{Introduction} - -Finding a graph library for one's favorite programming language is -usually easy. But using the provided algorithms on one's -own graph data structure or building undirected persistent graphs with -vertices and edges labeled with something else than integers is -likely to be more difficult. - -This article introduces -\ocamlgraph\footnote{\url{http://www.lri.fr/~filliatr/ocamlgraph/}}, a -generic graph library for the programming language -\ocaml~\cite{ObjectiveCaml}. Beside the mere presentation of this -library, this article demonstrates how \ocaml has been used to -introduce genericity at two levels in this library. First, \ocamlgraph -does not provide a single data structure for graphs but many of them, -enumerating all possible variations---directed or undirected graphs, -persistent or mutable data structures, user-defined labels on vertices -or edges, etc.---under a common interface. -Second, \ocamlgraph provides a large set of graph algorithms that are -written independently of the underlying graph data structure. Then -they can be applied on the data structures provided by \ocamlgraph -itself but also on user-defined data structures as soon as they -implement a minimal set of functionalities. - -The genericity of \ocamlgraph, on both levels of data structures and -algorithms, is realized through a massive use of \ocaml module -system~\cite{leroy00}. In the first case, it is used to avoid code -duplication between the many variations of graph data structures, -which is mandatory here seen the high number (19) of similar but all -different implementations. In the second case, it is used to write -the graph algorithms independently of the underlying graph data -structure, with as much genericity as possible but also with an -efficiency concern in mind. In both cases, the technical solution -comes from the functions of \ocaml module system, the so-called -\emph{functors} in the functional programming jargon (that should not -be confused with C++ functors). This article aims at explaining these -two different uses of functors and thus is more a software engineering -article than a graph library description. - -This article is organized as follows. Section~\ref{systememodules} -briefly introduces the \ocaml module system. Then -Section~\ref{structuresdedonnees} exposes the design of the common -interface for all graph data structures and explains how the code is -shared among the various implementations. Section~\ref{algos} -describes the algorithms provided in \ocamlgraph and how the -genericity with respect to the graph data structure is obtained. -Section~\ref{exemples} illustrates the use of \ocamlgraph\ on two -typical situations. Finally Section~\ref{bench} presents some -benchmarks and Section~\ref{comparaison} compares \ocamlgraph with -several existing graph libraries. - -\section{\ocaml Module System}\label{systememodules} - -This section quickly describes the \ocaml module system. Any reader -familiar with \ocaml can safely skip this section. - -The module system of \ocaml is a language by itself, on top of the -core \ocaml language, which only fulfills software engineering -purposes: separate compilation, names space structuring, encapsulation -and genericity. This language appears to be independent of the core -language~\cite{leroy00} and may be unfolded statically. It is a -strongly typed higher-order functional language. Its terms are called -\emph{modules} or \emph{structures}. They are the basic blocks in -\ocaml programs, that package together types, values, exceptions -and sub-modules. - -\subsection{Structures} - -Modules are introduced using the \texttt{struct...end} construct and -the (optional) \texttt{module} binding is used to give them a name. -Outside a module, its components can be referred to using the -\emph{dot notation}: \texttt{M.c} denotes the component -\texttt{c} defined in the module \texttt{M}. - -For instance, a module packaging together a type for a graph data -structure and some basic operations can be implemented in the -following way: -\begin{alltt} -module Graph = struct - type label = int - type t = (int * label) list array - let create n = Array.create n [] - let add_edge g v1 v2 l = g.(v1) <- (v2,l)::g.(v1) - let iter_succ g f v = List.iter f g.(v) -end -\end{alltt} -The type \texttt{Graph.t} defines a naive graph data structure using -adjacency lists with edges labeled with integers: a graph is an array -(indexed by integers representing vertices) whose elements are lists of -pairs of integers and labels (declared as an alias for the type -\texttt{int}). - -\subsection{Signatures} - -The type of a module is called a \emph{signature} or an -\emph{interface}\footnote{with the same meaning as in \textsc{Modula} - but not as in \textsc{Java}} and can be used to hide some components -or the definition of a type (then called an \emph{abstract data - type}). Signatures are defined using the \texttt{sig...end} -construct and the (optional) \texttt{module type} binding is used to -give them a name. Constants and functions are declared -via the keyword \texttt{val} and types via the keyword \texttt{type}. - -For instance, a possible signature for the \texttt{Graph} module -above, that hides the graph representation and the type of labels, -could be the following: -\begin{alltt} -module type GRAPH = sig - type label - type t - val create : int -> t - val add_edge : t -> int -> int -> label -> unit - val iter_succ : - t -> (int * label -> unit) -> int -> unit -end -\end{alltt} -Restricting a structure by a signature results in another view of the -structure. This is done as follows: -\begin{alltt} -module G' = (G : GRAPH) -\end{alltt} -Since interfaces and structures are clearly separated, it is possible -to have several implementations for the same interface. Conversely, a -structure may have several signatures (hiding and restricting more -or less components). - -\subsection{Functors} - -The functions of the module system are called \emph{functors} and -allow us to define modules parameterized by other modules. Then they -can be applied one or several times to particular modules with the -expected signature. The benefits of functors in software engineering -are appreciated as soon as one has to parameterize a \emph{set} of -types and functions by another \emph{set} of types and functions, in a -sound way\footnote{See for instance Norman Ramsey's \emph{ML Module - Mania}~\cite{ramsey05} as an example of a massive use of ML - functors.}. -For instance, to implement Dijkstra's shortest path -algorithm for any graph implementation where edges are labeled with -integers, one can write a functor looking like: -\begin{alltt} -module type S = sig - type label - type t - val iter_succ : - t -> (int * label -> unit) -> int -> unit -end - -module Dijkstra (G : S with type label = int) = - struct - let dijkstra g v1 v2 = (* ... *) - end -\end{alltt} -The \texttt{with type} annotation is used here to unify the abstract -type \texttt{label} from the signature \texttt{S} with the type -\texttt{int}. One may also notice that the signature \texttt{S} -required for the functor's argument only contains what is necessary to -implement the algorithm. However, we can apply the functor to any -module whose signature contains \emph{at least} \texttt{S} i.e. is a -\emph{subtype} of \texttt{S}. - -Functors are also first-class values, i.e they can be passed as -arguments to other functors. Finally, it is possible to aggregate -signatures or modules using the \texttt{include} construct which can -be naively seen as a textual inclusion. - -\section{Graph Data Structures}\label{structuresdedonnees} - -\ocamlgraph does not provide a single data structure for graphs but a -set of functors to build customized data structures. More precisely, -the user must answer the following questions: -\begin{itemize} -\item \emph{What are the graph's vertices?} - The user must define the type of the values stored in each vertex. - He also has to choose between \emph{concrete} vertices (where vertices and - their values are identical) and \emph{abstract} vertices (where the - values are hidden inside an abstract data type for vertices). In the - latter case, it allows a more efficient implementation of some - operations. - -\item \emph{Are the graphs directed or not?} - -\item \emph{Are the edges labeled or not?} - When they are labeled, the user must define the type of these labels. - -\item \emph{Are the graphs imperative or persistent?} An imperative - graph is a mutable data structure where modifications are performed - in-place, while a persistent graph is an immutable data structure. - In the latter case, operations such as adding or removing edges and - vertices are still available but are returning new - graphs\footnote{Implementing persistent (sometimes also called - \emph{functional}) data structures can be done efficiently; see - for instance Okasaki's book~\cite{okasaki98}.}. -\end{itemize} - -Altogether, not less than 16 different data structures must be -implemented to provide all possible combinations. They are provided as -functors, since they are parameterized by user types. These 16 -functors are displayed Figure~\ref{fig:interfaces} as square boxes -mapping signatures of input modules to signatures of output modules. -For instance, a persistent directed graph with abstract vertices and -labeled edges is obtained by applying the functor -\begin{center} - \texttt{Persistent.Digraph.AbstractLabelled} -\end{center} -to a module defining the type for the vertices values (with signature -\texttt{ANY\_TYPE} defined as \texttt{sig type t end}) -and to a module defining the type for the edges -labels (with signature \texttt{ORDERED\_TYPE\_DFT} that declares a -type \texttt{t}, a total order over \texttt{t} and a default value of -type \texttt{t}). - -\begin{figure*} - \centering - \includegraphics[width=\textwidth]{interface.pdf} - \caption{\ocamlgraph's data structures components}\label{fig:interfaces} -\end{figure*} - -Three other implementations complete the set of graph data structures, -namely \texttt{ConcreteBidirectional} for graphs with an efficient -access to predecessors, and -\texttt{Matrix.}(\texttt{Graph},\texttt{Digraph}) for graphs -implemented as adjacency matrices. - -The remaining of this section details the signatures and the modules -displayed Figure~\ref{fig:interfaces}. More precisely, -Section~\ref{interfaces} shows how the interfaces for all the -data structures are unified in order to ease the access to the library. -Then Section~\ref{codesharing} explains how the code is shared between -the various implementations. - -\subsection{Interfaces}\label{interfaces} - -The various graph data structures interfaces are gathered in the -module \texttt{Sig}. There are three main signatures: a common -signature \texttt{G} for all data structures, a signature \texttt{P} -for persistent data structures and a signature \texttt{I} for -imperative data structures. The common interface \texttt{G} contains -all access operations. The interfaces \texttt{P} and \texttt{I} extend -\texttt{G} by adding creation and modification operations, obviously -different for persistent and imperative data structures. - -The common interface \texttt{G} introduces an abstract data type -\texttt{t} for graphs: -\begin{alltt} -module type G = sig - type t \hfill(* the type of graphs *) -\end{alltt} -The type of vertices is also an abstract type\footnote{The type of - vertices is abstract in this generic interface but a particular - implementation may declare a manifest type.}. -Since we do not know yet whether the vertices will be labeled or not, -we also introduce a type for vertices labels. (One could have -considered a polymorphic type for vertices but polymorphism does not -marry nicely with functors.) Finally, most graph algorithms require to -store vertices in data structures such as sets or dictionaries and -thus it is convenient to have the type of vertices equipped with -comparison and hashing functions. We gather all these types and -functions within a sub-module \texttt{V}: -\begin{alltt} - module V : sig - type t \hfill(* the type of vertices *) - type label \hfill(* vertices labels *) - val create : label -> t - val label : t -> label - val compare : t -> t -> int - val hash : t -> int - val equal : t -> t -> bool - end -\end{alltt} -Introducing a sub-module has several advantages: first, it avoids -polluting the name space; second, it allows this sub-module to be -directly used as an argument of functors from \ocaml's -standard library. Yet we introduce an alias for the type -\texttt{V.t} for a greater clarity in the following: -\begin{alltt} - type vertex = V.t -\end{alltt} -For graphs where vertices are unlabeled, we will identify the types -\texttt{V.t} and \texttt{V.label} and we will implement the operations -\texttt{V.create} and \texttt{V.label} as the identity. - -Similarly, we introduce a sub-module \texttt{E} for edges. Again, we -assume that the edges may be labeled and an edge is thus built from -two vertices and a label. Finally, we equip the edges type with a -comparison function as we did for vertices. -\begin{alltt} - module E : sig - type t \hfill(* the type of edges *) - type label \hfill(* edges labels *) - val create : vertex -> label -> vertex -> t - val src : t -> vertex - val dst : t -> vertex - val label : t -> label - val compare : t -> t -> int - end - type edge = E.t -\end{alltt} -For unlabeled edges, we will implement the type \texttt{E.t} as -\texttt{V.t * V.t} and we will ignore the type \texttt{E.label} -(implementing it with the \texttt{unit} type for instance). - -Then we introduce a large set of test, access and iteration -functions over vertices and edges, whose meaning is immediate: -\begin{alltt} - val is_directed : bool - val nb_vertex : t -> int - val out_degree : t -> vertex -> int - val iter_vertex : (vertex -> unit) -> t -> unit - (* ... *) -\end{alltt} -The central part of the interface is the set of functions giving -access to the graph structure. One can find for instance a function -returning the successors of a vertex as a list of vertices: -\begin{alltt} - val succ : t -> vertex -> vertex list - (* ... *) -\end{alltt} -In practice, however, it is more useful to iterate a given function -over the successors (or the predecessors), to avoid building a list -that would be immediately deconstructed. This set of iterators -completes the signature \texttt{G}: -\begin{alltt} - val iter_succ : - (vertex -> unit) -> t -> vertex -> unit - val fold_succ : - (vertex -> 'a -> 'a) -> t -> vertex -> 'a -> 'a - (* ... *) -end -\end{alltt} -As demonstrated in Section~\ref{algos}, implementing a graph algorithm -usually requires a small subset of these operations. Using signatures -sub-typing, any implementation of the signature \texttt{G} will also -be an adequate signature for our algorithms. - -The interface \texttt{P} for persistent graphs then extends the interface -\texttt{G} with a set of creation functions: -\begin{alltt} -module type P = sig - include G - val empty : t - val add_vertex : t -> vertex -> t - val remove_vertex : t -> vertex -> t - val add_edge : t -> vertex -> vertex -> t - (* ... *) -end -\end{alltt} -Similarly, the interface \texttt{I} for imperative graphs extends -\texttt{G} with creation and modification functions: -\begin{alltt} -module type I = sig - include G - val create : unit -> t - val copy : t -> t - val add_vertex : t -> vertex -> unit - val add_edge : t -> vertex -> vertex -> unit - (* ... *) -end -\end{alltt} -One can notice the \texttt{copy} function which has no counterpart in -the interface \texttt{P}. - -In Section~\ref{builder} we will show how to give a common interface -to graphs creation, whatever their persistent or imperative nature is, -in order to share code in some algorithms that need to build graphs. -But it would have been unfortunate to do it here, since the mutability -of the graph must appear clearly to the user when looking at the signature. - -Finally, the module \texttt{Sig} introduces a fourth (and last) -signature for graphs, \texttt{IM}, for imperative data structures -where vertices are equipped with integers \emph{marks} which can be -modified in-place: -\begin{alltt} -module type IM = sig - include I - module Mark : sig - val clear : t -> unit \hfill (* set all marks to 0 *) - val get : vertex -> int - val set : vertex -> int -> unit - end -end -\end{alltt} -Such a signature is useful when one wants to provide an efficient -implementation of an algorithm based on a specific marking of the -vertices. Moreover, such marks can then be exploited by the user once the -algorithm's run is completed, since they are exposed in the signature. -The typical example is a depth-first traversal. - -One can notice that the directed nature of the graph does appear -nowhere in the signature. Only the \emph{implementations} will set -it. - -\subsection{Code Sharing}\label{codesharing} - -The implementations of the various data structures for graphs are -gathered in the two modules \texttt{Persistent} and -\texttt{Imperative}. Each of these two modules is divided into two -sub-modules: \texttt{Graph} for undirected graphs and \texttt{Digraph} -for directed ones. Each of these sub-modules contains four functors, -corresponding to concrete or abstract data types\footnote{An abstract - graph hides the representation of vertices and edges, allowing an - optimized implementation of some operations.} with labeled or -unlabeled edges (vertices are always labeled). These functors are -parameterized by a module \texttt{V} giving the type of the vertices and, -when meaningful, by a module \texttt{E} giving the type of the edges. -For instance, the functor \texttt{Persistent.Digraph.Abstract} -implements directed persistent graphs, implemented as an abstract data -type and with no labels on edges. Its signature is the following: -\begin{alltt} - module Abstract(V: sig type t end) : - Sig.P with type V.label = V.t -\end{alltt} - -In the remaining of this section, we show how functors are used to -share as much code as possible among these 16 data structures. Note -the code presented here is not useful (and actually not visible) for -the user of the library. - -The module \texttt{Per\_imp}, which is internal to \ocamlgraph, -gathers a few functors implementing operations that are common to -persistent and imperative graphs. Each functor has a dedicated task, -such as adding labels on edges (functor \texttt{Labelled}), makes the -graph abstract (functor \texttt{Make\_Abstract}) or adding the -operations on predecessors (functor \texttt{Pred}). Then implementing -a given graph data structure is a matter of assembling the various -functors as in a construction game and adding the few operations that -could not be factorized. - -\paragraph{Abstracting the persistent or imperative nature.} -In our library, graphs are represented as dictionaries mapping each -vertex to the set of its successors (with the corresponding edge's label -if any). These dictionaries are either persistent or imperative. In -\ocaml, it results in operations with different types. Indeed, adding -a mapping into an hash table does not return any value but adding it -into a persistent map (an AVL for instance) returns a new map. -Yet it is possible to give these persistent and imperative maps a -common signature using an explicit \texttt{'a return} type for the -returned value: -\begin{alltt} -module type HM = sig - type 'a return - \hfill (* return type for [add] and [remove] *) - type 'a t - type key - val add: key -> 'a -> 'a t -> 'a return - val mem: key -> 'a t -> bool - val find: key -> 'a t -> 'a - (* ... *) -end -\end{alltt} -It is then possible to get a persistent implementation of \texttt{HM} -using \ocaml's \texttt{Map} module by instantiating the type -\texttt{'a return} with the type of persistent maps: -\begin{alltt} -module Make_Map(X: (* ... *) ) = struct - include Map.Make(X) - type 'a return = 'a t - (* ... *) -end -\end{alltt} -Beside, it is also possible to get an imperative implementation using -\ocaml's \texttt{Hashtbl} module by instantiating the type \texttt{'a - return} with \texttt{unit}: -\begin{alltt} -module Make_Hashtbl(X: (* ... *) ) = struct - include Hashtbl.Make(X) - type 'a return = unit - let add k v h = replace h k v - (* ... *) -end -\end{alltt} - -Now, using an implementation of \texttt{HM} together with an -implementation of finite sets, it is possible to write a functor -implementing the operations which are common to all graphs: -\begin{alltt} -module Minimal(S: Set.S)(HM: HM) = struct - let mem_vertex g v = - HM.mem v g - let unsafe_add_edge g v1 v2 = - HM.add v1 (S.add v2 (HM.find v1 g)) g - (* ... *) -end -\end{alltt} - -\paragraph{Functors as building blocks.} -Operations over predecessors are always implemented the same way. They -are provided by the \texttt{Pred} functor: -\begin{alltt} -module Pred(S: (* ... *) ) = struct - let fold_pred f g v = (* ... *) - let pred g v = - fold_pred (fun v l -> v :: l) g v [] - (* ... *) -end -\end{alltt} -% JCF: je supprimme ceci car ce n'est pas fait ainsi dans le code -% -% En outre, dans le cas des graphes non orientés, les opérations sur les -% prédécesseurs peuvent être optimisées en tenant compte du fait que l'ensemble -% des prédécesseurs d'un sommet $s$ est égal à l'ensemble des successeurs de $s$. -% On peut alors redéfinir \texttt{Pred}: -% \begin{alltt} -% module Pred(S: (* ... *) ) = struct -% let fold_pred = S.fold_succ -% let pred = S.succ -% (* ... *) -% end -% \end{alltt} -Similarly, two functors \texttt{Labeled} and \texttt{Unlabeled} -introduce all operations that depend on the presence or absence of -labels on edges, such as iterating over the edges, over the successors -of some vertex, etc. - -The abstraction of a graph data structure is an operation that -encapsulates the type of vertices given by the user in some more -efficient data structure (typically a record with a unique integer). -When this is done, some operations can be optimized, such as counting -the number of vertices in the graph, since the user does not have a -direct access to the vertices anymore. The functor -\texttt{Make\_Abstract} realizes such an optimization: -\begin{alltt} -module Make_Abstract(G: Sig.G) = struct - module I = struct - type t = \{ edges: G.t; mutable size: int \} - let iter_vertex f g = G.iter_vertex f g.edges - (* ... *) - end - include I - include Pred(I) - let nb_vertex g = g.size \hfill (* optimization *) - (* ... *) -end -\end{alltt} - -Finally, it is possible to implement the concrete version of the -module \texttt{V} and the corresponding association table, given a -user data type for the vertices, using a higher-order functor: -\begin{alltt} -module ConcreteVertex - (F: functor(X: (* ... *) ) -> - HM with type key = X.t) - (V: (* ... *) ) = -struct - module V = struct - include V - type label = t - let label v = v - let create v = v - end - module HM = F(V) -end -\end{alltt} - -\paragraph{Assembling the blocks.} -Using all these functors, it is now possible to implement in a generic -and easy way the major part of the modules \texttt{Digraph} and -\texttt{Graph} as the following higher-order functor: -\begin{alltt} -module Make(F: functor(X: (* ... *) ) -> - HM with type key = X.t) = -struct - module Digraph = struct - module Concrete(V: (* ... *) ) = struct - include ConcreteVertex(F)(V) - \hfill (* vertices are concrete *) - include Unlabeled(V)(HM) - \hfill (* edges are unlabeled *) - include Minimal(S)(HM) - \hfill (* common operations *) - end - module ConcreteLabelled = (* ... *) - module Abstract = (* ... *) - module AbstractLabelled = (* ... *) - end - end - module Graph = struct (* ... *) end -end -\end{alltt} -The persistent and imperative implementations are then obtained by -applying this functor respectively to \texttt{Make\_Map} and -\texttt{Make\_Hashtbl}: -\begin{alltt} -module P = Make(Make_Map) -module I = Make(Make_Hashtbl) -\end{alltt} -Finally, to get the functors provided to the user, we simply need to -add the operations that could not be factorized: -\begin{alltt} -module Digraph = struct - module Concrete(V: (* ... *) ) = struct - include P.Digraph.Concrete(V) - let add_vertex g v1 v2 = - if HM.mem v g then g else add_vertex g v - (* ... *) - end - (* ... *) -end -\end{alltt} - -Putting all together, the code for the 19 graph data structures amounts -to 1059 lines. This is clearly small enough to be easily -maintained. In Section~\ref{bench} we will show that this code is also -quite efficient. - -\section{Algorithms}\label{algos} - -This section introduces the second use of functors in \ocamlgraph: the -generic programming of graph algorithms. - -\subsection{Generic Programming} - -As demonstrated in the previous section, our library provides many -graph data structures. Therefore, it is necessary to figure out how to -implement graph algorithms without duplicating code for each data -structure. Exactly as functors helped factorizing code in the previous -section, they provide a nice way to code the algorithms in a generic -way. - -The basic idea is to code an algorithm without worrying about the -underlying graph data structure but focusing only on the required -operations over this data structure. Then the algorithm is naturally a -functor parameterized by these operations. Such operations usually -make a subset of the operations provided by \ocamlgraph's own data -structures, but some algorithms may require specific operations, -independent of the graph data structure. In such a case, they will be -provided as an additional functor parameter. - -Such a ``functorization'' of algorithms has two benefits: first, it -allows to quickly add a new algorithm to the library, without code -duplication for all data structures; second, it allows the user to -apply an algorithm on its own graph data structure, which is an -original feature of \ocamlgraph\ w.r.t. other graph libraries. - -\subsection{Example: Flow Algorithms} -\label{algos-flot} - -We illustrate the generic implementation of algorithms in \ocamlgraph\ -through two algorithms to compute the maximal flow of a -network\footnote{that is a directed graph with two distinguished - vertices, a source and a terminal.}, namely the -Ford-Fulkerson~\cite{FF} and Goldberg~\cite{Goldberg} algorithms. -They appear as two functors with the following signatures: -\begin{alltt} -module Ford_Fulkerson - (G: G_FORD_FULKERSON) - (F: FLOW with type label = G.E.label) : -sig - val maxflow : - G.t -> G.V.t -> G.V.t -> (G.E.t -> F.t) * F.t -end - -module Goldberg - (G: G_GOLDBERG) - (F: FLOW with type label = G.E.label) : -sig - val maxflow : - G.t -> G.V.t -> G.V.t -> (G.E.t -> F.t) * F.t -end -\end{alltt} -Each functor body implements a \texttt{maxflow} function expecting a -network, a source vertex and a terminal vertex, and returning a -pair \texttt{(f, delta)} where \texttt{f} maps each edge of the -network to its new flow and where \texttt{delta} is the difference -between the computed maximal flow and the initial flow of the network. - -The signature of the first parameter \texttt{G} of these two functors -describes the minimal set of graph operations required for the -implementation of \texttt{maxflow}. Since the two algorithms are -different, the signatures \texttt{G\_FORD\_FULKERSON} and -\texttt{G\_GOLDBERG} are thus different. For instance, Goldberg -algorithm requires to iterates over the vertices and edges of the graph, -whereas Ford-Fulkerson algorithm only requires to iterate over the -successors and predecessors of a vertex. This appears clearly in the -signatures: -\begin{alltt} -module type G_GOLDBERG = sig - type t - module V : sig type t (* ... *) end - module E : sig type t (* ... *) end - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_edges_e : (E.t -> unit) -> t -> unit - (* ... *) -end - -module type G_FORD_FULKERSON = sig - type t - module V : sig type t (* ... *) end - module E : sig type t (* ... *) end - val iter_succ_e : - (E.t -> unit) -> t -> V.t -> unit - val iter_pred_e : - (E.t -> unit) -> t -> V.t -> unit -end -\end{alltt} - -The signature of the second parameter \texttt{F} is common to both -algorithms. It gathers all operations to manipulate the labels on edges -as flows: -\begin{alltt} -module type FLOW = sig - type label \hfill(* type of edges labels *) - type t \hfill(* type of flow *) - val flow : label -> t \hfill(* initial flow *) - val max_capacity : label -> t \hfill(* max. capacity *) - val min_capacity : label -> t \hfill(* min. capacity *) - val add : t -> t -> t \hfill(* addition *) - val sub : t -> t -> t \hfill(* subtraction *) - val zero : t \hfill (* neutral element *) - val compare : t -> t -> int \hfill(* comparison *) -end -\end{alltt} -This signature \texttt{FLOW} is easily implemented, whatever the -data type is. For instance, a possible implementation for a graph where -edges are labeled with integers representing the maximal capacities of -edges and with an initial empty flow would be the following: -\begin{alltt} -module Flow = struct - type label = int - type t = int - let max_capacity x = x - let min_capacity _ = 0 - let flow _ = 0 - let add = (+) - let sub = (-) - let compare = compare - let zero = 0 -end -\end{alltt} - -\subsection{Example: Graph Traversal} -\label{dfs} - -We give here another example of generic programming with the classical -depth-first and breadth-first traversals. To traverse a graph, we -need very few operations. Basically, we need to iterate over the -successors of a vertex. To reach all the connected components of the -graph, we also need to iterate over all vertices. Finally, we have to -mark the visited vertices. Regarding this last point, the simplest way is -to use a hash table (when no particular assumption can be made about -the graph data structure). To build such a hash table, we simply need -the type of vertices to be equipped with suitable \texttt{hash} and -\texttt{equal} functions. Therefore, the minimal expected signature -for traversal algorithms is the following: -\begin{alltt} -module type G = sig - type t - module V : sig type t - val hash : t -> int - val equal : t -> t -> bool end - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_succ : (V.t -> unit) -> t -> V.t -> unit -end -\end{alltt} -Then traversal algorithms can be provided with a signature like: -\begin{alltt} -module Dfs(G : G) : - sig val iter : (G.V.t -> unit) -> G.t -> unit end -\end{alltt} -In practice, however, several variants of each traversal are provided: -traversal of a single connected component, application of the visitor -function after the successors are visited (instead of before), -etc. The depth-first traversal functor also provides a cycle detection -function. Finally, there is a functor specialized for graphs equipped -with marks (see signature \texttt{IM} in Section~\ref{interfaces}), -since such marks can be directly used to mark the visited vertices (and -for further use by the library client). - -Graph traversals are also provided as \emph{cursors}, -i.e. step-by-step iterators similar to those used in object-oriented -programming~\cite{coplien92} (e.g. the \textsc{Java} -\texttt{Iterator} interface). -Such a cursor is given the following signature: -\begin{alltt} -module Dfs(G : G) : sig - type iterator - val start : G.t -> iterator - val step : iterator -> iterator - val get : iterator -> G.V.t -end -\end{alltt} -The abstract type \texttt{iterator} represents a state of the -iterator, or equivalently a position in the ongoing iteration. We get -the starting point with the \texttt{start} function. Then we can -advance in the iteration using the \texttt{step} function and we can -obtain the currently visited vertex using the \texttt{get} function. -These two functions raise the \texttt{Exit} exception whenever the -iteration is over. There is a huge difference w.r.t. usual cursors in -imperative programming, however: the data type \texttt{iterator} is -persistent. It means that the iterator is not modified when the step -function is called, but a new iterator is returned instead. Therefore -it is easy to use such iterators in \emph{backtracking} algorithms -that may need to come back to previous positions in an -iteration~\cite{filliatre06}. - -Here is for instance a simple implementation of a $k$-coloring -algorithm based on a breadth-first traversal implemented as a -persistent cursor. We assume that the graph \texttt{g} contains -integer marks that we use to indicate the color (the value 0 meaning -that there is no assigned color yet). -\begin{alltt} -let coloring g k = - Mark.clear g; - let try_color v i = - iter_succ - (fun w -> - if Mark.get w = i then raise NoColor) - g v; - Mark.set v i - in - let rec iterate iter = - let v = Bfs.get iter in - for i = 1 to k do - try try_color v i; iterate (Bfs.step iter); - assert false - with NoColor -> () - done; - Mark.set v 0; raise NoColor - in - try iterate (Bfs.start g); assert false - with Exit -> () -\end{alltt} -The benefits of the persistent cursor are twofold: first, we could use -an existing traversal function without having to mix its code with the -coloring algorithm itself; second, the persistent nature of the -iterator avoids an explicit backtracking in the above code. - -\subsection{Building Graphs}\label{builder} - -In Section~\ref{interfaces}, we have shown that persistent and -imperative graphs have creation functions with different -signatures. However, as we have written algorithms in a generic way, -we may want to build graphs in a generic way, that is independently of -the underlying data structure. For instance, we may want to implement -graph operations (such as union, transitive closure, etc.) or to build -some classic graphs (such as the full graph with $n$ vertices, the de -Bruijn graph of order $n$, etc.) or even random graphs. In all these -cases, the persistent or imperative nature of the graph is not really -significant but the signature difference disallows genericity. - -To solve this issue, we introduce a module \texttt{Builder}. It -defines a common interface for graphs building: -\begin{alltt} -module type S = sig - module G : Sig.G - val empty : unit -> G.t - val copy : G.t -> G.t - val add_vertex : G.t -> G.V.t -> G.t - val add_edge : G.t -> G.V.t -> G.V.t -> G.t - val add_edge_e : G.t -> G.E.t -> G.t -end -\end{alltt} -It is immediate to realize such a signature for persistent or -imperative graphs: -\begin{alltt} -module P(G : Sig.P) : S with module G = G -module I(G : Sig.I) : S with module G = G -\end{alltt} -It is important to notice that for imperative graphs the values -returned by the functions \texttt{add\_vertex}, -\texttt{add\_edge} and \texttt{add\_edge\_e} are meaningless. - -Therefore, it is easy to write a generic algorithm that builds -graphs. First we write a highly generic version as a functor taking a -module of signature \texttt{Builder.S} as argument: -\begin{alltt} -module Make(B : Builder.S) = struct ... end -\end{alltt} -and then we can trivially provide two variants of this functor for -both persistent and imperative graphs, with the following two lines: -\begin{alltt} -module P(G : Sig.P) = Make(Builder.P(G)) -module I(G : Sig.I) = Make(Builder.I(G)) -\end{alltt} -Thus the use of the module \texttt{Builder} is entirely hidden from -the user point of view. - -\section{Using \ocamlgraph}\label{exemples} - -This section demonstrates how to use \ocamlgraph's functors on two -typical situations: first, a direct use of \ocamlgraph's data -structures and algorithms to solve a problem; second, a more complex -situation where the user applies an \ocamlgraph's algorithm on his own -graph data structure. - -\subsection{Sudoku} - -This section illustrates the use of \ocamlgraph\ to solve the Sudoku -puzzle using graph coloring. This idea is to represent the Sudoku grid -as an undirected graph with $9\times 9$ vertices, each vertex being -connected to the other vertices on the same row, column or $3\times 3$ -group. Then solving the Sudoku is equivalent to 9-coloring this graph. - -First, we create a new graph data structure where vertices are labeled with -pairs of integers (the coordinates in the grid, as integers in the -range 0..8): -\begin{alltt} -module G = Imperative.Graph.Abstract - (struct type t = int * int end) -\end{alltt} -We use the \texttt{Imperative} module since persistence is not -needed here, the \texttt{Graph} sub-module to indicate undirected -graphs and the \texttt{Abstract} functor both for efficiency and -simplicity. Indeed, such graphs come with integers marks on the vertices -that will be used here to store the colors. - -Then we can create the graph itself: -\begin{alltt} -let g = G.create () -\end{alltt} -This graph is initially empty. We need to create and add the 81 -vertices. We could do it as simply as: -\begin{alltt} -for i = 0 to 8 do for j = 0 to 8 do - G.add_vertex g (G.V.create (i,j)) -done done -\end{alltt} -but in order to access the vertices in the remaining of the code we -store them in a matrix: -\begin{alltt} -let vert = - let new_vertex i j = - let v = G.V.create (i, j) in - G.add_vertex g v; v in - Array.init 9 (fun i -> Array.init 9 (new_vertex i)) -\end{alltt} -Then we add the edges, connecting the vertices on a same row, column or group: -\begin{alltt} -for i = 0 to 8 do for j = 0 to 8 do - for k = 0 to 8 do - if k <> i then - G.add_edge g vert.(i).(j) vert.(k).(j); - if k <> j then - G.add_edge g vert.(i).(j) vert.(i).(k); - done; - let gi = 3 * (i / 3) and gj = 3 * (j / 3) in - for di = 0 to 2 do for dj = 0 to 2 do - let i' = gi + di and j' = gj + dj in - if i' <> i || j' <> j then - G.add_edge g vert.(i).(j) vert.(i').(j') - done done -done done -\end{alltt} -The initial constraints in the Sudoku puzzle are set using the -\texttt{G.Mark.set} function. - -To get the coloring algorithm for our graph data structure, we simply -apply the \texttt{Coloring.Mark} functor on \texttt{G}: -\begin{alltt} -module C = Coloring.Mark(G) -\end{alltt} -Finally, solving the Sudoku amounts to 9-coloring the graph \texttt{g}: -\begin{alltt} -C.coloring g 9 -\end{alltt} - -This code is almost as efficient as a hand-coded Sudoku solver: on the -average, a Sudoku puzzle is solved in 0.2 seconds (on a Pentium 4 2.4 GHz). - -\subsection{Topological Sorting} - -This section illustrates the use of one of \ocamlgraph's traversal -algorithms to perform some topological sorting on a set of files -dependencies. We assume given the following user-defined data -structure representing a file with its dependencies: -\begin{alltt} -type file = - \{ name : string ; mutable deps : file list \} -\end{alltt} -In order to get the set of dependencies for a given file, we just have -to visit the underlying graph using a depth-first traversal. For that -purpose, we can use \ocamlgraph's \texttt{Graph.Traverse.Dfs} -functor (which is similar to the one presented Section~\ref{dfs}). To -do so, we need to build a -module that implements the required graph operations. -First, we embed the \texttt{file} data type in a \texttt{Vertex} module: -\begin{alltt} -module Vertex = struct - type t = file - let compare n1 n2 = compare n1.name n2.name - let hash n = Hashtbl.hash n.name - let equal n1 n2 = n1.name = n2.name -end -\end{alltt} -Then viewing a list of files as a graph is easily implemented by the -following module: -\begin{alltt} -module G = struct - type t = file list - - module V = Vertex - - let iter_vertex = List.iter - let fold_vertex = List.fold_right - let iter_succ f _ v = List.iter f v.deps - let fold_succ f _ v = List.fold_right f v.deps -end -\end{alltt} -Finally, we obtain the depth-first traversal module as a functor -instantiation: -\begin{alltt} -module Dfs = Graph.Traverse.Dfs(G) -\end{alltt} - -\section{Benchmarks}\label{bench} - -Surprisingly, we could not find any standard benchmark for graph -libraries. Thus we present here the results of a little benchmark of -our own, mostly to give the reader a rough idea of \ocamlgraph efficiency. -We test four different data structures for undirected -graphs with unlabeled edges, that are either persistent (P) or -imperative (I) and with either abstract (A) or concrete (C) vertices. In -the following they are referred to as PA, PC, IA and IC, respectively. -All tests were performed on a Pentium 4 2.4 GHz. - -We first test the efficiency of graph creation and mutation. -For that purpose, we build full graphs with $V$ vertices (and thus -$E=V(V+1)/2$ edges since we include self loops). -Then we repeatedly delete all edges and vertices in these graphs. -Figure~\ref{fig:bench:build} displays the creation and deletion -timings in seconds up to $V=1000$ (that is half a million of edges). -The creation speed observed is roughly 100,000 edges per second for -imperative graphs. The creation of persistent graphs is slower but -within a constant factor (less than 2). Deletion is roughly twice -faster than creation. -Regarding memory consumption, all four data structures roughly use 5 -machine words (typically 20 bytes) per edge. - -\begin{figure*} - \centering\hspace*{-2em} - \begin{tabular}{cc} - \begin{minipage}{0.5\linewidth} - \input{./bench1c.tex} - \end{minipage} & - \begin{minipage}{0.5\linewidth} - \input{./bench1d.tex} - \end{minipage} - \end{tabular} - \caption{Benchmarking creation (left) and deletion (right)} - \label{fig:bench:build} -\end{figure*} - -Our second benchmark consists in building graphs corresponding to 2D -mazes, using a percolation algorithm, and then traversing them using -depth-first and breadth-first traversals. Given an integer $N$, we -build a graph with $V=N^2$ vertices and $E=V-1$ -edges. Figure~\ref{fig:bench:maze} displays the timings in seconds for various -values of $N$ up to 600 (i.e. 360,000 vertices). The observed speed is -between 500,000 and 1 million traversed edges per second. - -% on enleve Dijkstra parce que le resultat est bizarre -% \input{./bench2dij} - -\begin{figure*} - \centering\hspace*{-2em} - \begin{tabular}{cc} - \begin{minipage}{0.5\linewidth} -\input{./bench2dfs} - \end{minipage} & - \begin{minipage}{0.5\linewidth} -\input{./bench2bfs} - \end{minipage} - \end{tabular} - \caption{Benchmarking DFS (left) and BFS (right)} - \label{fig:bench:maze} -\end{figure*} - -% memory use : pas probant ; donner plutot les chiffres directement -% ou mieux comparer avec la representation matricielle -% \input{./bench2mem} - -We also tested the adjacency matrix-based data structure. Creation and -deletion are much faster in that case, and the data structure for -a dense graph is usually much more compact (it is implemented using bit -vectors). However, the use of this particular implementation is -limited to unlabeled imperative graphs with integer vertices. -The above benchmarks, on the contrary, do not depend on the nature of -vertices and edges types. Thus they are much more representative of -\ocamlgraph average performances. - -\section{Related Work} -\label{comparaison} - -This section details the features of several other graph libraries, in -order to make a comparison with \ocamlgraph. Our list is not -exhaustive and only focuses on programming languages where some kind -of generic programming is possible. Figure~\ref{comparison:tab} -summarizes our comparison criteria which are mainly based on the -genericity of the data structures and algorithms proposed by some -other libraries. - -\begin{figure*}[htbp] -\newcommand{\present}{\large\boldmath $\surd$} -\newcommand{\absent}{\large\boldmath $\oslash$} - - \centering - \begin{tabular}{|l||c|c|c|c|c|} - \hline - & language & persistent/imperative& generic algorithms & - signature\emph{s} & graph data structures \\\hline\hline - LEDA & C++ & I & \absent & \absent & 1 \\\hline - GTL & C++ & I & \absent & \absent & 1 \\\hline - MLRisc & SML & I & \absent & \absent & 1 \\\hline - FGL & Haskell & P & \absent & \absent & 1 \\\hline - Baire & \ocaml &P/I& --- & \absent & 8 \\\hline - JDSL & Java & I & \present & \present & 1 \\\hline - BGL & C++ & I & \present & \present & 1 \\\hline - \ocamlgraph& \ocaml &P/I& \present & \present & 19 \\\hline - \end{tabular} - \medskip - \caption{Comparison with other graph libraries} - \label{comparison:tab} -\end{figure*} - - -\paragraph{\textsc{Jdsl~\cite{Jdsl}}} This \textsc{Java} library -provides implementations and algorithms for various data structures -(lists, vectors, priority queues, dictionaries and -graphs). Regarding graphs, JDSL introduces several distinct signatures -for access and modification to the underlying data structure: one can -find \emph{accessors} for constant-time access to graph elements, -\emph{iterators} to traverse the graph structure, and \emph{modifiers} -to add or suppress vertices and edges. The use of \textsc{Java} -interfaces makes JDSL algorithms highly generic. However, the library -only provides an implementation of graphs as adjacency lists and there -is no notion of persistent graph. Moreover, there is no way to -distinguish between directed and undirected graphs (edges and arcs -may coexist within a same graph). Finally, vertices and edges may be -labeled with values in the class \texttt{Object} which is the usual -but risky and inefficient way to get polymorphism in \textsc{Java} -(at least before generics were introduced in \textsc{Java} 1.5). - -\paragraph{\textsc{Mlrisc~\cite{Mlrisc}}} This generic compiler -back-end provides a graph library for SML which contains a unique -signature for directed multi-graphs together with a unique imperative -implementation. Vertices and edges may be labeled with information of any -type. Modifiers and iterators allow respectively to update and -traverse the graph data structure. Combinators are also provided to -build different \emph{views} of a single graph. One may for instance -build a view where arcs are reversed, where vertices are renamed or where -vertices are gathered in subsets of the initial set of vertices, etc. A -mechanism of behavioral views, similar to the principles of aspect -programming, allows to connect actions to the modifiers of a graph. It -is therefore possible to perform some given action before the addition -of a new vertex, for instance. The library also contains many -algorithms implemented as functors to be abstracted over specific -operations independent of the graph data structure. For instance, the -flow algorithm of \textsc{Mlrisc} is parameterized by a structure of -Abelian group, as \ocamlgraph's ones presented in -Section~\ref{algos-flot}. - - -\paragraph{\textsc{Leda~\cite{Leda}}} This \textsc{C++} library -provides several data structures (graphs, lists, sets, dictionaries, -trees, partitions, priority queues, etc.) and several algorithms -related to graphs, geometry, networks and graphics. \textsc{Leda}'s -graphs are imperative. They may be directed or not, planar or not, and -vertices and edges may be parameterized by user types. Macros are -provided to iterate over vertices and edges. Many operations are -implemented, such as access functions, modifiers, graph generators and -property tests (cyclicity, planarity, convexity, etc.). Unfortunately, -the algorithms are not generic and only one implementation is provided -(using double-linked lists for vertices and edges). - -\paragraph{\textsc{Fgl~\cite{Fgl,Erwig}}} This \textsc{Haskell} -library --- the SML version does not seem to be maintained anymore --- -provides an inductive representation of graphs and a set of graph -algorithms for this data structure. FGL's graphs are multi-graphs, -directed or not, persistent, with vertices and edges labeled with any -type. The graph data structure is implemented using purely applicative -arrays and AVLs. This library is the only one with \ocamlgraph\ and -\textsc{Baire} (see below) to provide persistent graphs. However, the -purely applicative philosophy of \textsc{Fgl} makes a huge difference -with our approach. Indeed, \ocamlgraph\ includes out-of-the-box -imperative algorithms over graphs, thanks to a common interface -between persistent and imperative graphs. - -\paragraph{\textsc{Bgl~\cite{Bgl}}} This C++ library provides generic -algorithms implemented as \emph{templates} (a purely syntactic -counterpart of \ocaml's functors). The parameters of these templates -describe the minimal interface that the graph data structure must -implement for the algorithm to apply. This library is the only one, -with \ocamlgraph, to implement such generic algorithms. However, only -two graph data structures are provided and the interface of -\textsc{Bgl}'s graphs is less complete than \ocamlgraph's one. For -instance, the labeling of vertices and edges is not part of the interface -and is instead realized as external dictionaries passed to the -algorithms as additional parameters. - -\paragraph{\textsc{Baire~\cite{Baire}}} This \ocaml\ library provides -8 different implementations of graph data structures, without any code -sharing (functors are not used in \textsc{Baire}). Each data structure -implements directed graphs with labeled edges (there is no unlabeled -graphs). Operations over vertices and edges are provided, and so are -iterators and observers. \textsc{Baire} does not provide any graph -algorithm. - -\paragraph{\textsc{Gtl~\cite{Gtl}}} This C++ library provides a unique -imperative data structure for directed and unlabeled graphs -(undirected graphs can be obtained by ``canceling'' the direction of -edges). As in \textsc{Bgl} the labeling is realized by external -dictionaries. \textsc{Gtl} provides several graph algorithms which -only apply to its own data structure. - -\section{Conclusion} - -We have presented \ocamlgraph, a generic graph library for \ocaml\ -providing several graph data structures and, independently, several -graph algorithms. This genericity is obtained using \ocaml's module -system and especially its functors which allow to share large pieces -of code. - -To our knowledge, there is no library for any applicative language as -generic as \ocamlgraph. Regarding imperative languages, graph -libraries are rarely as generic and, anyway, never provide as many -different data structures. - -Since its first release (Feb. 2004), the number of \ocamlgraph's users -is steadily increasing and several of them contributed code to the -library. Some of them provided new graph data structures (such as -\texttt{ConcreteBidirectional}) and others new algorithms -(e.g. minimal separators). It clearly shows the benefits of a generic -library where data structures and algorithms are separated. - -% \appendix -% \section{Appendix Title} - -% This is the text of the appendix, if you need one. - -% \acks - -% Acknowledgments, if needed. - -\nocite{*} -\bibliographystyle{plain} -\bibliography{./biblio} -% \begin{thebibliography}{} - -% \bibitem{smith02} -% Smith, P. Q. reference text - -% \end{thebibliography} - -\end{document} -1-59593-090-6/05/0007 diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/maze.ml b/jscomp/build_tests/ocamlgraph/papers/gpce2006/maze.ml deleted file mode 100755 index 5af33dcd58..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/maze.ml +++ /dev/null @@ -1,256 +0,0 @@ - -open Format -open Graph - -(*let () = Random.self_init ()*) - -module Time = struct - - open Unix - - let utime f x = - let u = (times()).tms_utime in - let y = f x in - let ut = (times()).tms_utime -. u in - (y,ut) - - let print_utime f x = - let (y,ut) = utime f x in - Format.printf "user time: %2.2f@." ut; - y - -end - -let draw = false - -module MakeMaze - (G : Sig.G with type V.label = int * int) - (B : Builder.S with module G = G) = -struct - - module Visited = Set.Make(G.V) - - let make_maze n m = - let nodes = - Array.init n (fun i -> Array.init m (fun j -> G.V.create (i,j))) - in - let g = - Array.fold_left (Array.fold_left (fun g v -> B.add_vertex g v)) - (B.empty ()) nodes - in - (* code from Jon Harrop *) - let on_board x y = x >= 0 && x < n && y >= 0 && y < m in - let random_neighbor visited v = - let aux choices (i,j) = - if on_board i j then - let cell = nodes.(i).(j) in - if not (Visited.mem cell visited) then cell :: choices else choices - else - choices - in - let x,y = G.V.label v in - let choices = List.fold_left aux [] [x-1, y; x+1, y; x, y-1; x, y+1] in - if choices = [] then - None - else - Some (List.nth choices (Random.int (List.length choices))) - in - let rec make g visited stack cell = - let visited = Visited.add cell visited in - match random_neighbor visited cell with - | Some neighbor -> - let g = B.add_edge g cell neighbor in - make g visited (cell :: stack) neighbor - | _ -> - match stack with - | [] -> g - | cell :: stack -> make g visited stack cell - in - let g = make g Visited.empty [] nodes.(0).(0) in - eprintf "make_maze: V=%d E=%d@." (G.nb_vertex g) (G.nb_edges g); - nodes, g - -end - -module Bench - (G : Sig.G with type V.label = int * int) - (Maze : sig val make_maze : int -> int -> G.V.t array array * G.t end) = -struct - - module W = struct - type label = G.E.label - type t = int - let weight _ = 1 - let zero = 0 - let add = (+) - let compare = compare - end - module Dij = Path.Dijkstra(G)(W) - - module Dfs = Traverse.Dfs(G) - - module Bfs = Traverse.Bfs(G) - - let bench s = - Random.init 123; - let dij = open_out (s ^ "_dij") in - let fdij = formatter_of_out_channel dij in - let dfs = open_out (s ^ "_dfs") in - let fdfs = formatter_of_out_channel dfs in - let bfs = open_out (s ^ "_bfs") in - let fbfs = formatter_of_out_channel bfs in - let mem = open_out (s ^ "_mem") in - let fmem = formatter_of_out_channel mem in - for i = 1 to 10 do - eprintf "benchmarking %s i=%d/10@." s i; - let n = 60 * i in - let t_dij = ref 0.0 in - let t_dfs = ref 0.0 in - let t_bfs = ref 0.0 in - for k = 1 to 5 do - let nodes,g = Maze.make_maze n n in - let src = nodes.(0).(0) in - let dst = nodes.(n-1).(n-1) in - let _,t = Time.utime (Dij.shortest_path g src) dst in - t_dij := !t_dij +. t; - let _,t = Time.utime (Dfs.prefix (fun v -> ())) g in - t_dfs := !t_dfs +. t; - let _,t = Time.utime (Bfs.iter (fun v -> ())) g in - t_bfs := !t_bfs +. t - done; - fprintf fdij "%d %2.2f@." n (!t_dij /. 5.); - fprintf fdfs "%d %2.2f@." n (!t_dfs /. 5.); - fprintf fbfs "%d %2.2f@." n (!t_bfs /. 5.); - let _,g = Maze.make_maze n n in - fprintf fmem "%d %d@." n (Size.size_kb g); - done - -end - -(*** - - open Graphics - - let gstep = 10 - let w = n * gstep - let h = m * gstep - let () = if draw then open_graph (Printf.sprintf " %dx%d" w h) - - let draw_path p = - set_color red; - let draw_edge e = - let sx,sy = G.V.label (G.E.src e) in - let dx,dy = G.V.label (G.E.dst e) in - moveto (sx * gstep + gstep/2) (sy * gstep + gstep/2); - lineto (dx * gstep + gstep/2) (dy * gstep + gstep/2); - in - List.iter draw_edge p - - let draw_maze g = - clear_graph (); - set_color black; - for i = 0 to n-1 do - for j = 0 to m-1 do - let v = nodes.(i).(j) in - let x = gstep * (i+1) in - let y = gstep * (j+1) in - if i < n-1 && not (G.mem_edge g v nodes.(i+1).(j)) then begin - moveto x y; lineto x (y-gstep) - end; - if j < m-1 && not (G.mem_edge g v nodes.(i).(j+1)) then begin - moveto x y; lineto (x-gstep) y - end - done - done - - let min_path = 4 * max n m - let max_path = 5 * max n m - - let () = - printf "n = %d m = %d min_path = %d max_path = %d@." - n m min_path max_path - - let add g v = - let i,j = G.V.label v in - match Random.int 4 with - | 0 (*gauche*) when i > 0 -> G.add_edge g v nodes.(i-1).(j) - | 1 (*droite*) when i < n-1 -> G.add_edge g v nodes.(i+1).(j) - | 2 (*bas*) when j > 0 -> G.add_edge g v nodes.(i).(j-1) - | 3 (*haut*) when j < m-1 -> G.add_edge g v nodes.(i).(j+1) - | _ -> g - - let rec lab g0 g = - if draw then draw_maze g; - let p,l = Time.print_utime (Dij.shortest_path g src) dst in - eprintf "path length = %d@." l; - if draw then begin - draw_path p; - if read_key () = 'q' then exit 0 - end; - if l <= min_path then - match g0 with - | None -> assert false - | Some g0 -> lab None g0 - else begin - if l <= max_path then exit 0; - let g1 = - List.fold_left - (fun g e -> if Random.int 10 = 0 then add g (G.E.src e) else g) - g p - in - lab (Some g) g1 - end - - let () = lab None g -***) - - -(*** - module Gr = Graphviz.Neato - (struct - include G - let graph_attributes _ = [] - let default_vertex_attributes _ = [] - let vertex_name v = - let i,j = G.V.label v in string_of_int (i+j*m) - let vertex_attributes _ = [] - let default_edge_attributes _ = [] - let edge_attributes _ = [] - end) - - let () = - let c = open_out "test.dot" in - Gr.output_graph c g; - close_out c; - ignore (Sys.command "dot -Tps test.dot | gv --orientation=landscape -") -***) - -(* -module IA = Imperative.Graph.Abstract(struct type t = int * int end) -module BIA = Bench(IA)(MakeMaze(IA)(Builder.I(IA))) -let () = BIA.bench "ia" - -module PA = Persistent.Graph.Abstract(struct type t = int * int end) -module BPA = Bench(PA)(MakeMaze(PA)(Builder.P(PA))) -let () = BPA.bench "pa" - -module Int = struct - type t = int * int - let compare = compare - let equal = (=) - let hash = Hashtbl.hash -end - -module IC = Imperative.Graph.Concrete(Int) -module BIC = Bench(IC)(MakeMaze(IC)(Builder.I(IC))) -let () = BIC.bench "ic" - -module PC = Persistent.Graph.Concrete(Int) -module BPC = Bench(PC)(MakeMaze(PC)(Builder.P(PC))) -let () = BPC.bench "pc" -*) - -module IA = Imperative.Graph.Abstract(struct type t = int * int end) -module MazeIA = MakeMaze(IA)(Builder.I(IA)) -let _ = MazeIA.make_maze 200 200 - diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/reviews.txt b/jscomp/build_tests/ocamlgraph/papers/gpce2006/reviews.txt deleted file mode 100755 index 25a7954059..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/reviews.txt +++ /dev/null @@ -1,278 +0,0 @@ ----------------------------- Original Message ---------------------------- -Subject: GPCE paper reviews -From: "GPCE" -Date: Sat, July 1, 2006 4:43 am -To: "Sylvain Conchon" --------------------------------------------------------------------------- - -Paper: 18 -Title: Designing a Generic Graph Library using ML Functors - --------------------- review 1 -------------------- - -REVIEWER'S CONFIDENCE: 4 (expert) ------------------------ REVIEW -------------------- - -Relevance to the conference (+3 .. -3): -+3 - -Short summary of the paper: -The paper describes design and implementation of a general graph -library in OCaml, which relies to the great extent on OCaml module system -to enforce abstractions in graph representations and to factor out the -implementation in easily composable units and to prevent code duplication. -The graph library contains not only the implementation of various graph -interfaces but graph algorithms as well. The algorithms can work on any -suitable (satisfying the interface) graph -representation -- included in the library or developed by the user. - -Pros and cons of the paper: -OCAMLGraph is probably the best example of component engineering. The -promises of components can be fully fulfilled; so OCAMLGraph belongs to -the `component engineering Hall of fame', seriously. I wish to see a web -page dedicated to the best practices of GPCE, and wish to see OCAMLGraph -there. It is the submitted paper that I have doubts -about. Unlike OCAMLGraph, the paper is poorly designed and leaves the -reader unsatisfied. - -First of all, the paper dives too fast and too much into specific -details; when details are presented, they are given no motivation; only in -hindsight (e.g., when one sees the module Digraph) one -understands the significance of the design decisions. Because most of the -examples include "...", one cannot meaningfully follow the -presented code examples. Perhaps the paper should start with the -related work -- with the description of the existing graph libraries and -the discussion of their limitations. Only then the design -decisions of OCAMLGraph become meaningful. A simple running example would -have helped as well. - -The paper leaves unanswered (and more seriously, un-posed) the -question of overhead (space + time) of all of the generality and -abstraction of OCAMLGraph. To answer the question, one must compare -OCAMLGraph with something else. Alas, the only performance numbers in the -paper refer to the OCAMLGraph itself. I would like to see their benchmark -(DFS/BFS traversal of mazes) implemented, first, by hand in OCaml, and -then in Baire (which is also an OCaml system) -- and see the run time, -compilation time, the sizes of final executables and the run-time space -requirements. - -Detailed comments to the authors to improve the paper: -p2, section 2.3. It's worth calling 'with type' annotations by their -proper name, sharing annotations, and refer to Harper et al for more -discussion. - -p3: -``(One could have considered a polymorphic type for vertices but -polymorphism does not marry nicely with functors.)'' - -That is a bad phrase to write in an academic paper. In general, any claim -must be justified: by an example, proof, or by -reference. Reading empty assertions like the above does not give the -reader any clue and any knowledge; it only perplexes the reader. If the -author has no justification or illustration for the claim, it's better not -to make it at all. Incidentally, the paper itself shows many examples of -functors whose members have polymorphic types (e.g., fold_succ on the same -page). - -p7, Sec 4.4. When we unify building of imperative and functional graphs -under the same signature, care must be taken! For example, the user may -wish to build two graphs, as in - let g = empty () in - let g1 = add_edge g 1 2 in - let g2 = add_edge g 3 4 in - (g1,g2) -In case of imperative graphs, the end result will be quite -unexpected. So, one can't really unify building of imperative and -functional graphs, the difference is easy observable (in sharing, -etc). That has to be explained and the user must be warned. Alas, the type -system does not enforce the linearity of using constructed graph values. - - --------------------- review 2 -------------------- - -REVIEWER'S CONFIDENCE: 2 (medium) ------------------------ REVIEW -------------------- - -Relevance to the conference (+3 .. -3): - --1 - -Short summary of the paper: - -The paper describes the design and implementation of a generic graph -library for the O'Caml programming language. The library supports -directed and undirected edges, labeled vertices and edges, as well as -persistent and mutable data structures. It also provides a set of graph -algorithms which are independent of these structures. - -Pros and cons of the paper: - -Pros: - -- Designing (graph) libraries supporting a large set of features will, - without proper parametrization, result in an unmanageable - set of variants, due to explosion of feature combinations. The - paper shows how thoughtful and judicious use of meta programming, in -this instance using functors, can be employed in practice to manage -variants. - -- The techniques described in the paper results in a small and very - manageable code size, without (significantly) compromising - performance. - -- The choice of data structure representation is largely - independent of the graph algorithms, leading to better reuse of - both algorithms and representation code. - -- Overall, the paper gives a good description of how to construct a - library, maximizing reuse without compromising performance, using -well-known meta programming techniques, - -Cons: - -- The paper does not describe any novel techniques, and should be - taken as an experience paper, but as an experience paper, a proper case -study is missing. The discussion of experiences with applying the -library and more importantly, the functor-based design philosophy, to a -larger applications than Sudoku and topological sorting is - warranted. - - Compared to "standard" graph libraries, what are the actual, - experienced benefits with this generic, more flexible library? - - An interesting question here would be whether actual improvements of -maintenance or reuse costs due to the improved genericity - could be found, i.e. does improved genericity improve reuse/reduce -maintenance costs? - -- The benchmarking part is a bit weak: It should include benchmarks of - identical algorithms in competing libraries, preferably with a - side-by-side comparison of algorithm code using other libraries, when -there are noteworthy differences. - - The algorithms written by the authors for the benchmarks in - Figure 2 and 3 should be readily available for many of the - other libraries in "Related Work", so designing a mini benchmark for -these ought to be feasible. - -Detailed comments to the authors to improve the paper: - -page 2, sec 3, para -3, line 3 - "the edges labels" -> "edge labels" - -page 4, sec 3.1, para -4, line 2 - "to graphs creation" -> "to graph creation" - -page 5, sec 4.2, para 3, line 5 - "requires to iterates" -> "requires iteration" - -page 5, sec 4.2, para 3, line 7 - "requires to iterates -> "requires iteration" - -page 5, sec 4.2, para 4, line 2 - "operations to manipulate" -> "operations for manipulating" - - --------------------- review 3 -------------------- - -REVIEWER'S CONFIDENCE: 3 (high) ------------------------ REVIEW -------------------- - -Relevance to the conference (+3 .. -3): 1 - -Short summary of the paper: -=========================== - -The authors describe the design and implementation of a graph library -using OCaml's modules system. The library is generic in two -directions: different graph implementations are provided (such as -directed/undirected, labelled/unlabelled or persistent/imperative -graphs) without unnecessary code duplication; graph algorithms work on all -graph implementations (even used-defined ones) that match a -certain signature. Genericity is obtained through the use of functors. - -Pros and cons of the paper: -=========================== - -* Pros: - - + The library seems to be mature. - + All common kinds of graphs are provided. - + Graph algorithms work for user-defined graphs. - + It is interesting to see how a graph library can be structured using - OCaml functors. - -* Cons: - + The implementation techniques described in the paper are not new. + -The paper is, in large parts, only a description of a library. + The -code presented is not fully self-contained. For example, - argument and result signatures of functors are often missing, which -makes them hard to understand and impossible to execute. It would be -better to present a self-contained and executable version of the -graph library. - + There are some factual errors in the related work section (see below). - - -Detailed comments to the authors to improve the paper: -====================================================== - -* Section 3 - - + You should mention that the ellipses in Fig.1 represent signatures. - -* Section 3.1 - - + Why does polymorphism not marry nicely with functors? After all, the - HM signature from Section 3.2 has a polymorphic type component. - + Shouldn't the type of "is_directed" be "t -> bool"? - + What do the first two "(* ... *)" on page 3 stand for? I think - you should not use "(* ... *)" at all in your paper. At several -points, "(* ... *)" replaces the argument signature of a functor; this -is unfortunate because argument signatures convey important type -information to the reader. If "(* ... *)" stands for some irrelevant -functions, than just omit these functions. - + Why has the "iter_succ" function type "(vertex -> unit) -> t -> - vertex -> unit" and not "(vertex -> 'a) -> t -> vertex -> 'a" - -* Section 3.2 - - + The argument and result signatures of "Make_Map" are missing. - This might be ok for this particular module but there are other -modules in the remainder of the article for which argument and result -signatures would really improve understandability. - + Module "Make_Abstract": what is "g.edges"? You write that the - abstraction of a graph encapsulates the types of vertices; - I can't see this from the code. - -* Section 4.3 - - + The body of the second Dfs module is missing. - -* Section 4.4 - - + The bodies of P and I (page 7, left column) are missing. - + I really didn't get what the Make module does. There is no - result signature and the body is missing as well. - -* Section 5.1 - - + Is C.coloring the same as the coloring function defined in - Section 4.3? If yes, then your algorithm does not work because -"coloring" from Section 4.3 unsets all marks before doing its work. - -* Section 7 - - + The table in Fig.4 is wrong with respect to FGL. The FGL - library has generic algorithms, for example the "maxflow" - function has type "(DynGraph gr, Num b, Ord b) => gr a b -> - Node -> Node -> b", so we can compute the maximum flow of - every instance of type class "DynGraph". Moreover, - FGL also supports signatures in form of type classes. - - + I think it's a bit unfair to state that OCamlGraph supports 19 - graph data structures whereas (say) LEDA supports only five. For -OCamlGraph, you count (say) directed and undirected implementations -as 2 data structures. LEAD also has directed and undirected graphs -but obviously you count them as a single data structure. - - diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/sigplanconf-template.tex b/jscomp/build_tests/ocamlgraph/papers/gpce2006/sigplanconf-template.tex deleted file mode 100755 index 285d27f86c..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/sigplanconf-template.tex +++ /dev/null @@ -1,77 +0,0 @@ -%----------------------------------------------------------------------------- -% -% Template for LaTeX Class/Style File -% -% Name: sigplanconf-template.tex -% Purpose: A template for sigplanconf.cls, which is a LaTeX 2e class -% file for SIGPLAN conference proceedings. -% -% Author: Paul C. Anagnostopoulos -% Windfall Software -% 978 371-2316 -% paul@windfall.com -% -% Created: 15 February 2005 -% -%----------------------------------------------------------------------------- - - -\documentclass[preprint]{sigplanconf} - -\usepackage{amsmath} - -\begin{document} - -\conferenceinfo{WXYZ '05}{date, City.} -\copyrightyear{2005} -\copyrightdata{[to be supplied]} - -\titlebanner{banner above paper title} % These are ignored unless -\preprintfooter{short description of paper} % 'preprint' option specified. - -\title{Title Text} -\subtitle{Subtitle Text, if any} - -\authorinfo{Name1} - {Affiliation1} - {Email1} -\authorinfo{Name2\and Name3} - {Affiliation2/3} - {Email2/3} - -\maketitle - -\begin{abstract} -This is the text of the abstract. -\end{abstract} - -\category{CR-number}{subcategory}{third-level} - -\terms -term1, term2 - -\keywords -keyword1, keyword2 - -\section{Introduction} - -The text of the paper begins here. - -\appendix -\section{Appendix Title} - -This is the text of the appendix, if you need one. - -\acks - -Acknowledgments, if needed. - -\begin{thebibliography}{} - -\bibitem{smith02} -Smith, P. Q. reference text - -\end{thebibliography} - -\end{document} -1-59593-090-6/05/0007 \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/sigplanconf.cls b/jscomp/build_tests/ocamlgraph/papers/gpce2006/sigplanconf.cls deleted file mode 100755 index 43eaeb96bb..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/sigplanconf.cls +++ /dev/null @@ -1,1132 +0,0 @@ -%----------------------------------------------------------------------------- -% -% LaTeX Class/Style File -% -% Name: sigplanconf.cls -% Purpose: A LaTeX 2e class file for SIGPLAN conference proceedings. -% This class file supercedes acm_proc_article-sp, -% sig-alternate, and sigplan-proc. -% -% Author: Paul C. Anagnostopoulos -% Windfall Software -% 978 371-2316 -% paul@windfall.com -% -% Created: 12 September 2004 -% -% Revisions: See end of file. -% -%----------------------------------------------------------------------------- - - -\NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesClass{sigplanconf}[2005/07/14 v1.2 ACM SIGPLAN Proceedings] - -% The following few pages contain LaTeX programming extensions adapted -% from the ZzTeX macro package. - -% Token Hackery -% ----- ------- - - -\def \@expandaftertwice {\expandafter\expandafter\expandafter} -\def \@expandafterthrice {\expandafter\expandafter\expandafter\expandafter - \expandafter\expandafter\expandafter} - -% This macro discards the next token. - -\def \@discardtok #1{}% token - -% This macro removes the `pt' following a dimension. - -{\catcode `\p = 12 \catcode `\t = 12 - -\gdef \@remover #1pt{#1} - -} % \catcode - -% This macro extracts the contents of a macro and returns it as plain text. -% Usage: \expandafter\@defof \meaning\macro\@mark - -\def \@defof #1:->#2\@mark{#2} - -% Control Sequence Names -% ------- -------- ----- - - -\def \@name #1{% {\tokens} - \csname \expandafter\@discardtok \string#1\endcsname} - -\def \@withname #1#2{% {\command}{\tokens} - \expandafter#1\csname \expandafter\@discardtok \string#2\endcsname} - -% Flags (Booleans) -% ----- ---------- - -% The boolean literals \@true and \@false are appropriate for use with -% the \if command, which tests the codes of the next two characters. - -\def \@true {TT} -\def \@false {FL} - -\def \@setflag #1=#2{\edef #1{#2}}% \flag = boolean - -% IF and Predicates -% -- --- ---------- - -% A "predicate" is a macro that returns \@true or \@false as its value. -% Such values are suitable for use with the \if conditional. For example: -% -% \if \@oddp{\x} \else \fi - -% A predicate can be used with \@setflag as follows: -% -% \@setflag \flag = {} - -% Here are the predicates for TeX's repertoire of conditional -% commands. These might be more appropriately interspersed with -% other definitions in this module, but what the heck. -% Some additional "obvious" predicates are defined. - -\def \@eqlp #1#2{\ifnum #1 = #2\@true \else \@false \fi} -\def \@neqlp #1#2{\ifnum #1 = #2\@false \else \@true \fi} -\def \@lssp #1#2{\ifnum #1 < #2\@true \else \@false \fi} -\def \@gtrp #1#2{\ifnum #1 > #2\@true \else \@false \fi} -\def \@zerop #1{\ifnum #1 = 0\@true \else \@false \fi} -\def \@onep #1{\ifnum #1 = 1\@true \else \@false \fi} -\def \@posp #1{\ifnum #1 > 0\@true \else \@false \fi} -\def \@negp #1{\ifnum #1 < 0\@true \else \@false \fi} -\def \@oddp #1{\ifodd #1\@true \else \@false \fi} -\def \@evenp #1{\ifodd #1\@false \else \@true \fi} -\def \@rangep #1#2#3{\if \@orp{\@lssp{#1}{#2}}{\@gtrp{#1}{#3}}\@false \else - \@true \fi} -\def \@tensp #1{\@rangep{#1}{10}{19}} - -\def \@dimeqlp #1#2{\ifdim #1 = #2\@true \else \@false \fi} -\def \@dimneqlp #1#2{\ifdim #1 = #2\@false \else \@true \fi} -\def \@dimlssp #1#2{\ifdim #1 < #2\@true \else \@false \fi} -\def \@dimgtrp #1#2{\ifdim #1 > #2\@true \else \@false \fi} -\def \@dimzerop #1{\ifdim #1 = 0pt\@true \else \@false \fi} -\def \@dimposp #1{\ifdim #1 > 0pt\@true \else \@false \fi} -\def \@dimnegp #1{\ifdim #1 < 0pt\@true \else \@false \fi} - -\def \@vmodep {\ifvmode \@true \else \@false \fi} -\def \@hmodep {\ifhmode \@true \else \@false \fi} -\def \@mathmodep {\ifmmode \@true \else \@false \fi} -\def \@textmodep {\ifmmode \@false \else \@true \fi} -\def \@innermodep {\ifinner \@true \else \@false \fi} - -\long\def \@codeeqlp #1#2{\if #1#2\@true \else \@false \fi} - -\long\def \@cateqlp #1#2{\ifcat #1#2\@true \else \@false \fi} - -\long\def \@tokeqlp #1#2{\ifx #1#2\@true \else \@false \fi} -\long\def \@xtokeqlp #1#2{\expandafter\ifx #1#2\@true \else \@false \fi} - -\long\def \@definedp #1{% - \expandafter\ifx \csname \expandafter\@discardtok \string#1\endcsname - \relax \@false \else \@true \fi} - -\long\def \@undefinedp #1{% - \expandafter\ifx \csname \expandafter\@discardtok \string#1\endcsname - \relax \@true \else \@false \fi} - -\def \@emptydefp #1{\ifx #1\@empty \@true \else \@false \fi}% {\name} - -\let \@emptylistp = \@emptydefp - -\long\def \@emptyargp #1{% {#n} - \@empargp #1\@empargq\@mark} -\long\def \@empargp #1#2\@mark{% - \ifx #1\@empargq \@true \else \@false \fi} -\def \@empargq {\@empargq} - -\def \@emptytoksp #1{% {\tokenreg} - \expandafter\@emptoksp \the#1\@mark} - -\long\def \@emptoksp #1\@mark{\@emptyargp{#1}} - -\def \@voidboxp #1{\ifvoid #1\@true \else \@false \fi} -\def \@hboxp #1{\ifhbox #1\@true \else \@false \fi} -\def \@vboxp #1{\ifvbox #1\@true \else \@false \fi} - -\def \@eofp #1{\ifeof #1\@true \else \@false \fi} - - -% Flags can also be used as predicates, as in: -% -% \if \flaga \else \fi - - -% Now here we have predicates for the common logical operators. - -\def \@notp #1{\if #1\@false \else \@true \fi} - -\def \@andp #1#2{\if #1% - \if #2\@true \else \@false \fi - \else - \@false - \fi} - -\def \@orp #1#2{\if #1% - \@true - \else - \if #2\@true \else \@false \fi - \fi} - -\def \@xorp #1#2{\if #1% - \if #2\@false \else \@true \fi - \else - \if #2\@true \else \@false \fi - \fi} - -% Arithmetic -% ---------- - -\def \@increment #1{\advance #1 by 1\relax}% {\count} - -\def \@decrement #1{\advance #1 by -1\relax}% {\count} - -% Options -% ------- - - -\@setflag \@blockstyle = \@false -\@setflag \@copyrightwanted = \@true -\@setflag \@explicitsize = \@false -\@setflag \@mathtime = \@false -\@setflag \@ninepoint = \@true -\@setflag \@onecolumn = \@false -\@setflag \@preprint = \@false -\newcount{\@numheaddepth} \@numheaddepth = 3 -\@setflag \@times = \@false - -% Note that all the dangerous article class options are trapped. - -\DeclareOption{9pt}{\@setflag \@ninepoint = \@true - \@setflag \@explicitsize = \@true} - -\DeclareOption{10pt}{\PassOptionsToClass{10pt}{article}% - \@setflag \@ninepoint = \@false - \@setflag \@explicitsize = \@true} - -\DeclareOption{11pt}{\PassOptionsToClass{11pt}{article}% - \@setflag \@ninepoint = \@false - \@setflag \@explicitsize = \@true} - -\DeclareOption{12pt}{\@unsupportedoption{12pt}} - -\DeclareOption{a4paper}{\@unsupportedoption{a4paper}} - -\DeclareOption{a5paper}{\@unsupportedoption{a5paper}} - -\DeclareOption{b5paper}{\@unsupportedoption{b5paper}} - -\DeclareOption{blockstyle}{\@setflag \@blockstyle = \@true} - -\DeclareOption{cm}{\@setflag \@times = \@false} - -\DeclareOption{computermodern}{\@setflag \@times = \@false} - -\DeclareOption{executivepaper}{\@unsupportedoption{executivepaper}} - -\DeclareOption{indentedstyle}{\@setflag \@blockstyle = \@false} - -\DeclareOption{landscape}{\@unsupportedoption{landscape}} - -\DeclareOption{legalpaper}{\@unsupportedoption{legalpaper}} - -\DeclareOption{letterpaper}{\@unsupportedoption{letterpaper}} - -\DeclareOption{mathtime}{\@setflag \@mathtime = \@true} - -\DeclareOption{nocopyrightspace}{\@setflag \@copyrightwanted = \@false} - -\DeclareOption{notitlepage}{\@unsupportedoption{notitlepage}} - -\DeclareOption{numberedpars}{\@numheaddepth = 4} - -%%%\DeclareOption{onecolumn}{\@setflag \@onecolumn = \@true} - -\DeclareOption{preprint}{\@setflag \@preprint = \@true} - -\DeclareOption{times}{\@setflag \@times = \@true} - -\DeclareOption{titlepage}{\@unsupportedoption{titlepage}} - -\DeclareOption{twocolumn}{\@setflag \@onecolumn = \@false} - -\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} - -\ExecuteOptions{9pt,indentedstyle,times} -\@setflag \@explicitsize = \@false -\ProcessOptions - -\if \@onecolumn - \if \@notp{\@explicitsize}% - \@setflag \@ninepoint = \@false - \PassOptionsToClass{11pt}{article}% - \fi - \PassOptionsToClass{twoside,onecolumn}{article} -\else - \PassOptionsToClass{twoside,twocolumn}{article} -\fi -\LoadClass{article} - -\def \@unsupportedoption #1{% - \ClassError{proc}{The standard '#1' option is not supported.}} - -% Utilities -% --------- - - -\newcommand{\setvspace}[2]{% - #1 = #2 - \advance #1 by -1\parskip} - -% Document Parameters -% -------- ---------- - - -% Page: - -\setlength{\hoffset}{-1in} -\setlength{\voffset}{-1in} - -\setlength{\topmargin}{1in} -\setlength{\headheight}{0pt} -\setlength{\headsep}{0pt} - -\if \@onecolumn - \setlength{\evensidemargin}{.75in} - \setlength{\oddsidemargin}{.75in} -\else - \setlength{\evensidemargin}{.75in} - \setlength{\oddsidemargin}{.75in} -\fi - -% Text area: - -\newdimen{\standardtextwidth} -\setlength{\standardtextwidth}{42pc} - -\if \@onecolumn - \setlength{\textwidth}{40.5pc} -\else - \setlength{\textwidth}{\standardtextwidth} -\fi - -\setlength{\topskip}{8pt} -\setlength{\columnsep}{2pc} -\setlength{\textheight}{54.5pc} - -% Running foot: - -\setlength{\footskip}{30pt} - -% Paragraphs: - -\if \@blockstyle - \setlength{\parskip}{5pt plus .1pt minus .5pt} - \setlength{\parindent}{0pt} -\else - \setlength{\parskip}{0pt} - \setlength{\parindent}{12pt} -\fi - -\setlength{\lineskip}{.5pt} -\setlength{\lineskiplimit}{\lineskip} - -\frenchspacing -\pretolerance = 400 -\tolerance = \pretolerance -\setlength{\emergencystretch}{5pt} -\clubpenalty = 10000 -\widowpenalty = 10000 -\setlength{\hfuzz}{.5pt} - -% Standard vertical spaces: - -\newskip{\standardvspace} -\setvspace{\standardvspace}{5pt plus 1pt minus .5pt} - -% Margin paragraphs: - -\setlength{\marginparwidth}{36pt} -\setlength{\marginparsep}{2pt} -\setlength{\marginparpush}{8pt} - - -\setlength{\skip\footins}{8pt plus 3pt minus 1pt} -\setlength{\footnotesep}{9pt} - -\renewcommand{\footnoterule}{% - \hrule width .5\columnwidth height .33pt depth 0pt} - -\renewcommand{\@makefntext}[1]{% - \noindent \@makefnmark \hspace{1pt}#1} - -% Floats: - -\setcounter{topnumber}{4} -\setcounter{bottomnumber}{1} -\setcounter{totalnumber}{4} - -\renewcommand{\fps@figure}{tp} -\renewcommand{\fps@table}{tp} -\renewcommand{\topfraction}{0.90} -\renewcommand{\bottomfraction}{0.30} -\renewcommand{\textfraction}{0.10} -\renewcommand{\floatpagefraction}{0.75} - -\setcounter{dbltopnumber}{4} - -\renewcommand{\dbltopfraction}{\topfraction} -\renewcommand{\dblfloatpagefraction}{\floatpagefraction} - -\setlength{\floatsep}{18pt plus 4pt minus 2pt} -\setlength{\textfloatsep}{18pt plus 4pt minus 3pt} -\setlength{\intextsep}{10pt plus 4pt minus 3pt} - -\setlength{\dblfloatsep}{18pt plus 4pt minus 2pt} -\setlength{\dbltextfloatsep}{20pt plus 4pt minus 3pt} - -% Miscellaneous: - -\errorcontextlines = 5 - -% Fonts -% ----- - - -\if \@times - \renewcommand{\rmdefault}{ptm}% - \if \@mathtime - \usepackage[mtbold,noTS1]{mathtime}% - \else -%%% \usepackage{mathptm}% - \fi -\else - \relax -\fi - -\if \@ninepoint - -\renewcommand{\normalsize}{% - \@setfontsize{\normalsize}{9pt}{10pt}% - \setlength{\abovedisplayskip}{5pt plus 1pt minus .5pt}% - \setlength{\belowdisplayskip}{\abovedisplayskip}% - \setlength{\abovedisplayshortskip}{3pt plus 1pt minus 2pt}% - \setlength{\belowdisplayshortskip}{\abovedisplayshortskip}} - -\renewcommand{\tiny}{\@setfontsize{\tiny}{5pt}{6pt}} - -\renewcommand{\scriptsize}{\@setfontsize{\scriptsize}{7pt}{8pt}} - -\renewcommand{\small}{% - \@setfontsize{\small}{8pt}{9pt}% - \setlength{\abovedisplayskip}{4pt plus 1pt minus 1pt}% - \setlength{\belowdisplayskip}{\abovedisplayskip}% - \setlength{\abovedisplayshortskip}{2pt plus 1pt}% - \setlength{\belowdisplayshortskip}{\abovedisplayshortskip}} - -\renewcommand{\footnotesize}{% - \@setfontsize{\footnotesize}{8pt}{9pt}% - \setlength{\abovedisplayskip}{4pt plus 1pt minus .5pt}% - \setlength{\belowdisplayskip}{\abovedisplayskip}% - \setlength{\abovedisplayshortskip}{2pt plus 1pt}% - \setlength{\belowdisplayshortskip}{\abovedisplayshortskip}} - -\renewcommand{\large}{\@setfontsize{\large}{11pt}{13pt}} - -\renewcommand{\Large}{\@setfontsize{\Large}{14pt}{18pt}} - -\renewcommand{\LARGE}{\@setfontsize{\LARGE}{18pt}{20pt}} - -\renewcommand{\huge}{\@setfontsize{\huge}{20pt}{25pt}} - -\renewcommand{\Huge}{\@setfontsize{\Huge}{25pt}{30pt}} - -\fi - -% Abstract -% -------- - - -\renewenvironment{abstract}{% - \section*{Abstract}% - \normalsize}{% - } - -% Bibliography -% ------------ - - -\renewenvironment{thebibliography}[1] - {\section*{\refname - \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}% - \list{\@biblabel{\@arabic\c@enumiv}}% - {\settowidth\labelwidth{\@biblabel{#1}}% - \leftmargin\labelwidth - \advance\leftmargin\labelsep - \@openbib@code - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand\theenumiv{\@arabic\c@enumiv}}% - \small - \softraggedright%%%\sloppy - \clubpenalty4000 - \@clubpenalty \clubpenalty - \widowpenalty4000% - \sfcode`\.\@m} - {\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist} - -% Categories -% ---------- - - -\@setflag \@firstcategory = \@true - -\newcommand{\category}[3]{% - \if \@firstcategory - \paragraph*{Categories and Subject Descriptors}% - \@setflag \@firstcategory = \@false - \else - \unskip ;\hspace{.75em}% - \fi - \@ifnextchar [{\@category{#1}{#2}{#3}}{\@category{#1}{#2}{#3}[]}} - -\def \@category #1#2#3[#4]{% - {\let \and = \relax - #1 [\textit{#2}]% - \if \@emptyargp{#4}% - \if \@notp{\@emptyargp{#3}}: #3\fi - \else - :\space - \if \@notp{\@emptyargp{#3}}#3---\fi - \textrm{#4}% - \fi}} - -% Copyright Notice -% --------- ------ - - -\def \ftype@copyrightbox {8} -\def \@toappear {} -\def \@permission {} - - -\def \@copyrightspace {% - \@float{copyrightbox}[b]% - \vbox to 1in{% - \vfill - \if \@preprint - [copyright notice will appear here]\par - \else - \@toappear - \fi}% - \end@float} - -\long\def \toappear #1{% - \def \@toappear {\parbox[b]{20pc}{\scriptsize #1}}} - -\toappear{% - \noindent \@permission \par - \vspace{2pt} - \noindent \textsl{\@conferencename}\quad \@conferenceinfo \par - Copyright \copyright\ \@copyrightyear\ ACM \@copyrightdata\dots \$5.00.} - -\newcommand{\permission}[1]{% - \gdef \@permission {#1}} - -\permission{% - Permission to make digital or hard copies of all or - part of this work for personal or classroom use is granted without - fee provided that copies are not made or distributed for profit or - commercial advantage and that copies bear this notice and the full - citation on the first page. To copy otherwise, to republish, to - post on servers or to redistribute to lists, requires prior specific - permission and/or a fee.} - -% Here we have some alternate permission statements and copyright lines: - -\newcommand{\ACMCanadapermission}{% - \permission{% - Copyright \@copyrightyear\ Association for Computing Machinery. - ACM acknowledges that - this contribution was authored or co-authored by an affiliate of the - National Research Council of Canada (NRC). As such, the Crown in Right of - Canada retains an equal interest in the copyright, however granting - nonexclusive, royalty-free right to publish or reproduce this article, - or to allow others to do so, provided that clear attribution - is also given to the authors and the NRC.}} - -\newcommand{\ACMUSpermission}{% - \permission{% - Copyright \@copyrightyear\ Association for - Computing Machinery. ACM acknowledges that - this contribution was authored or co-authored by a contractor or affiliate - of the U.S. Government. As such, the Government retains a nonexclusive, - royalty-free right to publish or reproduce this article, - or to allow others to do so, for Government purposes only.}} - -\newcommand{\authorpermission}{% - \permission{% - Copyright is held by the author/owner(s).} - \toappear{% - \noindent \@permission \par - \vspace{2pt} - \noindent \textsl{\@conferencename}\quad \@conferenceinfo \par - ACM \@copyrightdata.}} - -\newcommand{\Sunpermission}{% - \permission{% - Copyright is held by Sun Microsystems, Inc.}% - \toappear{% - \noindent \@permission \par - \vspace{2pt} - \noindent \textsl{\@conferencename}\quad \@conferenceinfo \par - ACM \@copyrightdata.}} - -\newcommand{\USpublicpermission}{% - \permission{% - This paper is authored by an employee(s) of the United States - Government and is in the public domain.}% - \toappear{% - \noindent \@permission \par - \vspace{2pt} - \noindent \textsl{\@conferencename}\quad \@conferenceinfo \par - ACM \@copyrightdata.}} - -% Enunciations -% ------------ - - -\def \@begintheorem #1#2{% {name}{number} - \trivlist - \item[\hskip \labelsep \textsc{#1 #2.}]% - \itshape\selectfont - \ignorespaces} - -\def \@opargbegintheorem #1#2#3{% {name}{number}{title} - \trivlist - \item[% - \hskip\labelsep \textsc{#1\ #2}% - \if \@notp{\@emptyargp{#3}}\nut (#3).\fi]% - \itshape\selectfont - \ignorespaces} - -% Figures -% ------- - - -\@setflag \@caprule = \@true - -\long\def \@makecaption #1#2{% - \addvspace{4pt} - \if \@caprule - \hrule width \hsize height .33pt - \vspace{4pt} - \fi - \setbox \@tempboxa = \hbox{\@setfigurenumber{#1.}\nut #2}% - \if \@dimgtrp{\wd\@tempboxa}{\hsize}% - \noindent \@setfigurenumber{#1.}\nut #2\par - \else - \centerline{\box\@tempboxa}% - \fi} - -\newcommand{\nocaptionrule}{% - \@setflag \@caprule = \@false} - -\def \@setfigurenumber #1{% - {\rmfamily \bfseries \selectfont #1}} - -% Hierarchy -% --------- - - -\setcounter{secnumdepth}{\@numheaddepth} - -\newskip{\@sectionaboveskip} -\setvspace{\@sectionaboveskip}{10pt plus 3pt minus 2pt} - -\newskip{\@sectionbelowskip} -\if \@blockstyle - \setlength{\@sectionbelowskip}{0.1pt}% -\else - \setlength{\@sectionbelowskip}{4pt}% -\fi - -\renewcommand{\section}{% - \@startsection - {section}% - {1}% - {0pt}% - {-\@sectionaboveskip}% - {\@sectionbelowskip}% - {\large \bfseries \raggedright}} - -\newskip{\@subsectionaboveskip} -\setvspace{\@subsectionaboveskip}{8pt plus 2pt minus 2pt} - -\newskip{\@subsectionbelowskip} -\if \@blockstyle - \setlength{\@subsectionbelowskip}{0.1pt}% -\else - \setlength{\@subsectionbelowskip}{4pt}% -\fi - -\renewcommand{\subsection}{% - \@startsection% - {subsection}% - {2}% - {0pt}% - {-\@subsectionaboveskip}% - {\@subsectionbelowskip}% - {\normalsize \bfseries \raggedright}} - -\renewcommand{\subsubsection}{% - \@startsection% - {subsubsection}% - {3}% - {0pt}% - {-\@subsectionaboveskip} - {\@subsectionbelowskip}% - {\normalsize \bfseries \raggedright}} - -\newskip{\@paragraphaboveskip} -\setvspace{\@paragraphaboveskip}{6pt plus 2pt minus 2pt} - -\renewcommand{\paragraph}{% - \@startsection% - {paragraph}% - {4}% - {0pt}% - {\@paragraphaboveskip} - {-1em}% - {\normalsize \bfseries \if \@times \itshape \fi}} - -\renewcommand{\subparagraph}{% - \@startsection% - {subparagraph}% - {4}% - {0pt}% - {\@paragraphaboveskip} - {-1em}% - {\normalsize \itshape}} - -% Standard headings: - -\newcommand{\acks}{\section*{Acknowledgments}} - -\newcommand{\keywords}{\paragraph*{Keywords}} - -\newcommand{\terms}{\paragraph*{General Terms}} - -% Identification -% -------------- - - -\def \@conferencename {} -\def \@conferenceinfo {} -\def \@copyrightyear {} -\def \@copyrightdata {[to be supplied]} - - -\newcommand{\conferenceinfo}[2]{% - \gdef \@conferencename {#1}% - \gdef \@conferenceinfo {#2}} - -\newcommand{\copyrightyear}[1]{% - \gdef \@copyrightyear {#1}} - -\let \CopyrightYear = \copyrightyear - -\newcommand{\copyrightdata}[1]{% - \gdef \@copyrightdata {#1}} - -\let \crdata = \copyrightdata - -% Lists -% ----- - - -\setlength{\leftmargini}{13pt} -\setlength\leftmarginii{13pt} -\setlength\leftmarginiii{13pt} -\setlength\leftmarginiv{13pt} -\setlength{\labelsep}{3.5pt} - -\setlength{\topsep}{\standardvspace} -\if \@blockstyle - \setlength{\itemsep}{1pt} - \setlength{\parsep}{3pt} -\else - \setlength{\itemsep}{1pt} - \setlength{\parsep}{3pt} -\fi - -\renewcommand{\labelitemi}{{\small \centeroncapheight{\textbullet}}} -\renewcommand{\labelitemii}{\centeroncapheight{\rule{2.5pt}{2.5pt}}} -\renewcommand{\labelitemiii}{$-$} -\renewcommand{\labelitemiv}{{\Large \textperiodcentered}} - -\renewcommand{\@listi}{% - \leftmargin = \leftmargini - \listparindent = 0pt} -%%% \itemsep = 1pt -%%% \parsep = 3pt} -%%% \listparindent = \parindent} - -\let \@listI = \@listi - -\renewcommand{\@listii}{% - \leftmargin = \leftmarginii - \topsep = 1pt - \labelwidth = \leftmarginii - \advance \labelwidth by -\labelsep - \listparindent = \parindent} - -\renewcommand{\@listiii}{% - \leftmargin = \leftmarginiii - \labelwidth = \leftmarginiii - \advance \labelwidth by -\labelsep - \listparindent = \parindent} - -\renewcommand{\@listiv}{% - \leftmargin = \leftmarginiv - \labelwidth = \leftmarginiv - \advance \labelwidth by -\labelsep - \listparindent = \parindent} - -% Mathematics -% ----------- - - -\def \theequation {\arabic{equation}} - -% Miscellaneous -% ------------- - - -\newcommand{\balancecolumns}{% - \vfill\eject - \global\@colht = \textheight - \global\ht\@cclv = \textheight} - -\newcommand{\nut}{\hspace{.5em}} - -\newcommand{\softraggedright}{% - \let \\ = \@centercr - \leftskip = 0pt - \rightskip = 0pt plus 10pt} - -% Program Code -% ------- ---- - - -\newcommand{\mono}[1]{% - {\@tempdima = \fontdimen2\font - \texttt{\spaceskip = 1.1\@tempdima #1}}} - -% Running Heads and Feet -% ------- ----- --- ---- - - -\def \@preprintfooter {} - -\newcommand{\preprintfooter}[1]{% - \gdef \@preprintfooter {#1}} - -\if \@preprint - -\def \ps@plain {% - \let \@mkboth = \@gobbletwo - \let \@evenhead = \@empty - \def \@evenfoot {\scriptsize \textit{\@preprintfooter}\hfil \thepage \hfil - \textit{\@formatyear}}% - \let \@oddhead = \@empty - \let \@oddfoot = \@evenfoot} - -\else - -\let \ps@plain = \ps@empty -\let \ps@headings = \ps@empty -\let \ps@myheadings = \ps@empty - -\fi - -\def \@formatyear {% - \number\year/\number\month/\number\day} - -% Special Characters -% ------- ---------- - - -\DeclareRobustCommand{\euro}{% - \protect{\rlap{=}}{\sf \kern .1em C}} - -% Title Page -% ----- ---- - - -\@setflag \@addauthorsdone = \@false - -\def \@titletext {\@latex@error{No title was provided}{}} -\def \@subtitletext {} - -\newcount{\@authorcount} - -\newcount{\@titlenotecount} -\newtoks{\@titlenotetext} - -\def \@titlebanner {} - -\renewcommand{\title}[1]{% - \gdef \@titletext {#1}} - -\newcommand{\subtitle}[1]{% - \gdef \@subtitletext {#1}} - -\newcommand{\authorinfo}[3]{% {names}{affiliation}{email/URL} - \global\@increment \@authorcount - \@withname\gdef {\@authorname\romannumeral\@authorcount}{#1}% - \@withname\gdef {\@authoraffil\romannumeral\@authorcount}{#2}% - \@withname\gdef {\@authoremail\romannumeral\@authorcount}{#3}} - -\renewcommand{\author}[1]{% - \@latex@error{The \string\author\space command is obsolete; - use \string\authorinfo}{}} - -\newcommand{\titlebanner}[1]{% - \gdef \@titlebanner {#1}} - -\renewcommand{\maketitle}{% - \pagestyle{plain}% - \if \@onecolumn - {\hsize = \standardtextwidth - \@maketitle}% - \else - \twocolumn[\@maketitle]% - \fi - \@placetitlenotes - \if \@copyrightwanted \@copyrightspace \fi} - -\def \@maketitle {% - \begin{center} - \@settitlebanner - \let \thanks = \titlenote - \noindent \LARGE \bfseries \@titletext \par - \vskip 6pt - \noindent \Large \@subtitletext \par - \vskip 12pt - \ifcase \@authorcount - \@latex@error{No authors were specified for this paper}{}\or - \@titleauthors{i}{}{}\or - \@titleauthors{i}{ii}{}\or - \@titleauthors{i}{ii}{iii}\or - \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{}{}\or - \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{}\or - \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}\or - \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}% - \@titleauthors{vii}{}{}\or - \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}% - \@titleauthors{vii}{viii}{}\or - \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}% - \@titleauthors{vii}{viii}{ix}\or - \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}% - \@titleauthors{vii}{viii}{ix}\@titleauthors{x}{}{}% - \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}% - \@titleauthors{vii}{viii}{ix}\@titleauthors{x}{xi}{}% - \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}% - \@titleauthors{vii}{viii}{ix}\@titleauthors{x}{xi}{xii}% - \else - \@latex@error{Cannot handle more than 12 authors}{}% - \fi - \vspace{1.75pc} - \end{center}} - -\def \@settitlebanner {% - \if \@notp{\@emptydefp{\@titlebanner}}% - \vbox to 0pt{% - \vskip -32pt - \noindent \textbf{\@titlebanner}\par - \vss}% - \nointerlineskip - \fi} - -\def \@titleauthors #1#2#3{% - \if \@andp{\@emptyargp{#2}}{\@emptyargp{#3}}% - \noindent \@setauthor{40pc}{#1}{\@false}\par - \else\if \@emptyargp{#3}% - \noindent \@setauthor{17pc}{#1}{\@false}\hspace{3pc}% - \@setauthor{17pc}{#2}{\@false}\par - \else - \noindent \@setauthor{12.5pc}{#1}{\@false}\hspace{2pc}% - \@setauthor{12.5pc}{#2}{\@false}\hspace{2pc}% - \@setauthor{12.5pc}{#3}{\@true}\par - \relax - \fi\fi - \vspace{20pt}} - -\def \@setauthor #1#2#3{% {width}{text}{unused} - \vtop{% - \def \and {% - \hspace{16pt}} - \hsize = #1 - \normalfont - \centering - \large \@name{\@authorname#2}\par - \vspace{5pt} - \normalsize \@name{\@authoraffil#2}\par - \vspace{2pt} - \textsf{\@name{\@authoremail#2}}\par}} - -\def \@maybetitlenote #1{% - \if \@andp{#1}{\@gtrp{\@authorcount}{3}}% - \titlenote{See page~\pageref{@addauthors} for additional authors.}% - \fi} - -\newtoks{\@fnmark} - -\newcommand{\titlenote}[1]{% - \global\@increment \@titlenotecount - \ifcase \@titlenotecount \relax \or - \@fnmark = {\ast}\or - \@fnmark = {\dagger}\or - \@fnmark = {\ddagger}\or - \@fnmark = {\S}\or - \@fnmark = {\P}\or - \@fnmark = {\ast\ast}% - \fi - \,$^{\the\@fnmark}$% - \edef \reserved@a {\noexpand\@appendtotext{% - \noexpand\@titlefootnote{\the\@fnmark}}}% - \reserved@a{#1}} - -\def \@appendtotext #1#2{% - \global\@titlenotetext = \expandafter{\the\@titlenotetext #1{#2}}} - -\newcount{\@authori} - -\iffalse -\def \additionalauthors {% - \if \@gtrp{\@authorcount}{3}% - \section{Additional Authors}% - \label{@addauthors}% - \noindent - \@authori = 4 - {\let \\ = ,% - \loop - \textbf{\@name{\@authorname\romannumeral\@authori}}, - \@name{\@authoraffil\romannumeral\@authori}, - email: \@name{\@authoremail\romannumeral\@authori}.% - \@increment \@authori - \if \@notp{\@gtrp{\@authori}{\@authorcount}} \repeat}% - \par - \fi - \global\@setflag \@addauthorsdone = \@true} -\fi - -\let \addauthorsection = \additionalauthors - -\def \@placetitlenotes { - \the\@titlenotetext} - -% Utilities -% --------- - - -\newcommand{\centeroncapheight}[1]{% - {\setbox\@tempboxa = \hbox{#1}% - \@measurecapheight{\@tempdima}% % Calculate ht(CAP) - ht(text) - \advance \@tempdima by -\ht\@tempboxa % ------------------ - \divide \@tempdima by 2 % 2 - \raise \@tempdima \box\@tempboxa}} - -\newbox{\@measbox} - -\def \@measurecapheight #1{% {\dimen} - \setbox\@measbox = \hbox{ABCDEFGHIJKLMNOPQRSTUVWXYZ}% - #1 = \ht\@measbox} - -\long\def \@titlefootnote #1#2{% - \insert\footins{% - \reset@font\footnotesize - \interlinepenalty\interfootnotelinepenalty - \splittopskip\footnotesep - \splitmaxdepth \dp\strutbox \floatingpenalty \@MM - \hsize\columnwidth \@parboxrestore -%%% \protected@edef\@currentlabel{% -%%% \csname p@footnote\endcsname\@thefnmark}% - \color@begingroup - \def \@makefnmark {$^{#1}$}% - \@makefntext{% - \rule\z@\footnotesep\ignorespaces#2\@finalstrut\strutbox}% - \color@endgroup}} - -% LaTeX Modifications -% ----- ------------- - -\def \@seccntformat #1{% - \@name{\the#1}% - \@expandaftertwice\@seccntformata \csname the#1\endcsname.\@mark - \quad} - -\def \@seccntformata #1.#2\@mark{% - \if \@emptyargp{#2}.\fi} - -% Revision History -% -------- ------- - - -% Date Person Ver. Change -% ---- ------ ---- ------ - -% 2004.09.12 PCA 0.1--5 Preliminary development. - -% 2004.11.18 PCA 0.5 Start beta testing. - -% 2004.11.19 PCA 0.6 Obsolete \author and replace with -% \authorinfo. -% Add 'nocopyrightspace' option. -% Compress article opener spacing. -% Add 'mathtime' option. -% Increase text height by 6 points. - -% 2004.11.28 PCA 0.7 Add 'cm/computermodern' options. -% Change default to Times text. - -% 2004.12.14 PCA 0.8 Remove use of mathptm.sty; it cannot -% coexist with latexym or amssymb. - -% 2005.01.20 PCA 0.9 Rename class file to sigplanconf.cls. - -% 2005.03.05 PCA 0.91 Change default copyright data. - -% 2005.03.06 PCA 0.92 Add at-signs to some macro names. - -% 2005.03.07 PCA 0.93 The 'onecolumn' option defaults to '11pt', -% and it uses the full type width. - -% 2005.03.15 PCA 0.94 Add at-signs to more macro names. -% Allow margin paragraphs during review. - -% 2005.03.22 PCA 0.95 Implement \euro. -% Remove proof and newdef environments. - -% 2005.05.06 PCA 1.0 Eliminate 'onecolumn' option. -% Change footer to small italic and eliminate -% left portion of no \preprintfooter. -% Eliminate copyright notice if preprint. -% Clean up and shrink copyright box. - -% 2005.05.30 PCA 1.1 Add alternate permission statements. - -% 2005.06.29 PCA 1.1 Publish final first edition of guide. - -% 2005.07.11 PCA 1.2 Add \subparagraph. -% Use block paragraphs in lists, and adjust -% spacing between items and paragraphs. diff --git a/jscomp/build_tests/ocamlgraph/papers/gpce2006/size.ml b/jscomp/build_tests/ocamlgraph/papers/gpce2006/size.ml deleted file mode 100755 index 245001c33a..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/gpce2006/size.ml +++ /dev/null @@ -1,84 +0,0 @@ -(* - * Size: computes the memory size of an ocaml value. - * Copyright (C) 2000 Jean-Christophe FILLIATRE - * - * This software is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License version 2, as published by the Free Software Foundation. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * See the GNU Library General Public License version 2 for more details - * (enclosed in the file LGPL). - *) - -(*i $Id: size.ml,v 1.1 2006-05-11 14:29:21 filliatr Exp $ i*) - -(*i*) -open Obj -(*i*) - -(*s Pointers already visited are stored in a hash-table, where - comparisons are done using physical equality. *) - -module H = Hashtbl.Make( - struct - type t = Obj.t - let equal = (==) - let hash o = Hashtbl.hash (magic o : int) - end) - -let node_table = (H.create 257 : unit H.t) - -let in_table o = try H.find node_table o; true with Not_found -> false - -let add_in_table o = H.add node_table o () - -let reset_table () = H.clear node_table - -(*s Objects are traversed recursively, as soon as their tags are less than - [no_scan_tag]. [count] records the numbers of words already visited. *) - -let size_of_double = size (repr 1.0) - -let count = ref 0 - -let rec traverse t = - if not (in_table t) then begin - add_in_table t; - if is_block t then begin - let n = size t in - let tag = tag t in - if tag < no_scan_tag then begin - count := !count + 1 + n; - for i = 0 to n - 1 do - let f = field t i in - if is_block f then traverse f - done - end else if tag = string_tag then - count := !count + 1 + n - else if tag = double_tag then - count := !count + size_of_double - else if tag = double_array_tag then - count := !count + 1 + size_of_double * n - else - incr count - end - end - -(*s Sizes of objects in words and in bytes. The size in bytes is computed - system-independently according to [Sys.word_size]. *) - -let size_w o = - reset_table (); - count := 0; - traverse (repr o); - !count - -let size_b o = (size_w o) * (Sys.word_size / 8) - -let size_kb o = (size_w o) / (8192 / Sys.word_size) - - diff --git a/jscomp/build_tests/ocamlgraph/papers/jfla2005/.cvsignore b/jscomp/build_tests/ocamlgraph/papers/jfla2005/.cvsignore deleted file mode 100755 index a2fb6073c4..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/jfla2005/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -main.ps -a.out -color.ml -conchon* diff --git a/jscomp/build_tests/ocamlgraph/papers/jfla2005/actes.sty b/jscomp/build_tests/ocamlgraph/papers/jfla2005/actes.sty deleted file mode 100755 index 65fd0ee392..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/jfla2005/actes.sty +++ /dev/null @@ -1,378 +0,0 @@ -% LaTeX Style for Actes de colloques - - -% Version générique pour la série ``Actes de colloques''. -% In the documentation examples are given for the workshop WAGA, -% ``International Workshop of Attribute Grammars and their Applications'' -% P.Weis entretien 2000 2001 2002 2003. -% P.Weis & E.Duris (01/99) Migration from jfla99 style to waga99 style. -% P.Weis (change 98 en 99). Adaptation \`a Latex2e, documentation. -% C.Queinnec (change 97 en 98) ainsi que le mois. -% C.Queinnec (pour 97, parametre pour date) -% B.Serpette (Guy Lapalme pour 96) -% Origine: -% Richard Furuta December 9, 1987 -% (adapte pour Bigre - Ph Louarn & J.Andre 88-89, 91) - - - -% ---------------------------------------------------------------------- -% Author's instructions -% ---------------------------------------------------------------------- - - -% In order to ease the proceedings publishing and the printout process, we ask -% authors to respect the following instructions. Thanks for your attention. -% -% 1) create a directory named by the first author of your article -% For instance: ``firstauthor'' -% -% 2) down-load this actes.sty file and put it into this directory. -% -% 3) in this directory, copy one of the latex squeleton files given below, -% that you will fill in with your own latex text (see example in the -% squeleton). Save this file with the same name. -% For instance: ``firstauthor.tex'' -% -% 4) put into the directory ``firstauthor'' all other required files, for -% instance postscript files for images and specific latex style files. -% -% 5) once the file ``firstauthor.tex'' is complete, and before the -% real submission: -% -% - include your bibliography directly in your latex file (from the -% .bbl file). -% -% - compile ``firstauthor.tex'' and verify the layout of your paper. -% -% - from the parent directory, create one single tar file -% ``firstauthor.tar'' which contains all the files inside your -% directory. Then, gzip and uuencode it. -% For instance: -% cd ..; tar cf firstauthor.tar ./firstauthor -% gzip [--best] firstauthor.tar -% uuencode firstauthor.tar.gz firstauthor.tar.gz > firstauthor.tar.gz.uu -% -% 6) Finally send this single tar file ``firstauthor.tar.gz.uu'' -% to (colloque name address, for instance WAGA-subm@inria.fr), -% before the (deadline). -% - -%--------------------------------------------------------------------- -% A squeleton (example) of your latex file ``firstauthor.tex'' -% Copy this code as ``firstauthor.tex'' file and fill it. -%--------------------------------------------------------------------- - -%% If you are writing in english and using new latex: latex2e - -% \documentclass[twoside]{article} -% \usepackage{actes} -% %% Title page... -% \title{The title of your article} -% \author{G. McHulott$^1$ -% \& E. Massinture$^2$} -% %% Headers for other pages... -% \titlehead{Short title of your article} % for odd pages -% \authorhead{McHulott \& Massinture} % for even pages -% \affiliation{\begin{tabular}{rr} % for institute(s) -% \\ 1: Laboratoire d'Informatique de l'\'Ecole UniTechnique, -% \\ 99999 Petit Oiseau CEDEX, France -% \\ {\tt mchulott@info.unitechnique.fr} -% \\ 2: Universit\'e de Par-ici,CP 6666, Montr\'eal, Qu\'ebec, -% \\ {\tt massinture@uparici.qc} -% \end{tabular}} -% -% \begin{document} -% \setcounter{page}{1} -% \maketitle -% % Here is the place for your text... -% -% % And do NOT FORGET to include your bibliography for submission -% \begin{thebibliography}{10} -% \bibitem{...} -% \end{thebibliography} -% -% \pagebreak -% \thispagestyle{colloquetitle} -% \cleardoublepage -% \end{document} - - -%% If you are writing in english using old latex - -% \documentstyle[twoside,actes]{article} -% %% Title page... -% \title{The title of your article} -% \author{G. McHulott$^1$ -% \& E. Massinture$^2$} -% %% Headers for other pages -% \titlehead{Short title of your article} % for odd pages -% \authorhead{McHulott \& Massinture} % for even pages -% \affiliation{\begin{tabular}{rr} % for institute(s) -% \\ 1: Laboratoire d'Informatique de l'\'Ecole UniTechnique, -% \\ 99999 Petit Oiseau CEDEX, France -% \\ {\tt mchulott@info.unitechnique.fr} -% \\ 2: Universit\'e de Par-ici,CP 6666, Montr\'eal, Qu\'ebec, -% \\ {\tt massinture@uparici.qc} -% \end{tabular}} -% -% \begin{document} -% \setcounter{page}{1} -% \maketitle -% % Here is the place for your text... -% -% % And do NOT FORGET to include your bibliography for submission -% \begin{thebibliography}{10} -% \bibitem{...} -% \end{thebibliography} -% -% \pagebreak -% \thispagestyle{colloquetitle} -% \cleardoublepage -% \end{document} - -% ---------------------------------------------------------------------- -% End of author's instructions -% ---------------------------------------------------------------------- - -%---------------------------------------------------------------------- -% Mode d'emploi pour les auteurs. -%---------------------------------------------------------------------- - -%% Si vous écrivez en français en utilisant latex2e, -%% voici le squelette du corps de votre article sans le texte! - -% Si vous êtes en Latex2e -% \documentclass[twoside]{article} -% \usepackage[latin1]{inputenc} -% \usepackage[T1]{fontenc} -% \usepackage{actes} -% \usepackage{french} -% \title{ le titre de votre article } -% \author{G. McHulott$^1$ -% \& E. Massinture$^2$} -% % les titres de haut de pages -% \titlehead{Titre de l'article en quelques mots}% a droite (page impaire) -% \authorhead{McHulott \& Massinture}% a gauche (page paire) -% \affiliation{\begin{tabular}{rr} -% \\ 1: Laboratoire d'Informatique de l'\'Ecole UniTechnique, -% \\ 99999 Petit Oiseau CEDEX, France -% \\ {\tt mchulott@info.unitechnique.fr} -% \\ 2: Universit\'e de Par-ici,CP 6666, Montr\'eal, Qu\'ebec, -% \\ {\tt massinture@uparici.qc} -% \end{tabular}} -% -% \begin{document} -% \setcounter{page}{1} -% \maketitle -% Ici commence votre texte -% -% % La bibliographie -% \begin{thebibliography}{10} % N'oubliez pas de l'inclure lors -% \bibitem{...} % de votre soumission. -% \end{thebibliography} -% -% \pagebreak -% \thispagestyle{colloquetitle} -% \cleardoublepage -% \end{document} - -%% Si vous écrivez en français en utilisant le latex traditionnel, -%% voici le squelette du corps de votre article sans le texte! - -% \documentstyle[french,frtypo,twoside,actes]{article} -% \title{Le titre de votre article } -% \author{G. McHulott$^1$ -% \& E. Massinture$^2$} -% les titres de haut de pages -% \titlehead{Titre de l'article en quelques mots}% a droite (page impaire) -% \authorhead{McHulott \& Massinture}% a gauche (page paire) -% \affiliation{\begin{tabular}{rr} -% \\ 1: Laboratoire d'Informatique de l'\'Ecole UniTechnique, -% \\ 99999 Petit Oiseau CEDEX, France -% \\ {\tt mchulott@info.unitechnique.fr} -% \\ 2: Universit\'e de Par-ici,CP 6666, Montr\'eal, Qu\'ebec, -% \\ {\tt massinture@uparici.qc} -% \end{tabular}} -% .... -% \begin{document} -% \setcounter{page}{1} -% \maketitle -% %Ici commence votre texte -% -% % La bibliographie -% \begin{thebibliography}{10} % N'oubliez pas de l'inclure lors -% \bibitem{...} % de votre soumission. -% \end{thebibliography} -% -% \pagebreak -% \thispagestyle{colloquetitle} -% \cleardoublepage -% \end{document} - -% ---------------------------------------------------------------------- -% Editor's instructions -% ---------------------------------------------------------------------- - -%% To fit to the colloque or conference at hand, you must change the -%% following macros: -% Namecolloque, Namecolloqueplain -% Yearcolloque, Yearcolloqueplain -% Monthcolloque, the month of the colloque - -% ---------------------------------------------------------------------- -% End of Editor's instructions -% ---------------------------------------------------------------------- - - - -% LaTeX Style for Actes de colloques - - -% beginning of actes.sty -\def\Namecolloque{JFLA} -\def\Namecolloqueplain{Journ\'ees Francophones des Langages Applicatifs} -\def\Yearcolloque{04} -\def\Yearcolloqueplain{20\Yearcolloque} -\def\Monthcolloque{janvier} - -\ds@twoside - -%%%%%%%%%%%%%%%%%%%% The sizes %%%%%%%%%%%%%%%%%%%% -\oddsidemargin 0.21cm % (21 - (2*2.54) - textwidth)/2 -\evensidemargin 0.21cm -\marginparwidth 0cm -\marginparsep 0pt -\topmargin 0.7cm -\headheight 0cm -\headsep 0.5cm -\textheight 22cm -\textwidth 15.5cm -\topskip 0.7cm -\footskip 0.7cm - -%\footnotesep 8.4pt - -\parindent 0.5cm -\parskip 0.1cm - -\hfuzz2pt -\tolerance3500 -\pretolerance3500 -\hbadness10000 -\hyphenpenalty50 -\exhyphenpenalty50 - -%%%%%%%%%%%%%%%%%%%% Style of the first page of each paper %%%%%%%%%%%%%%%%%%%% -\def\DateC#1{\gdef\D@teC{#1}} -\DateC{\Monthcolloque{} \Yearcolloqueplain{} -- -\Namecolloqueplain -- - \Namecolloque\Yearcolloque{} -} - -\def\ps@colloquetitle{\let\@mkboth\@gobbletwo% - \def\@oddhead{ - \vbox to\headheight - {\vfil \hbox to\headwidth{\footnotesize \D@teC} - \vskip 4pt - \hbox to\headwidth{\hrulefill} - }} - \def\@oddfoot{\rm\hfil\thepage\hfil} - \let\@evenhead\@oddhead - \let\@evenfoot\@oddfoot} -\thispagestyle{colloquetitle} - -%%%%%%%%%%%%%%%%%%%% Style of other pages %%%%%%%%%%%%%%%%%%%% -\def\authorhead#1{\gdef\@authorhead{#1}} -\def\titlehead#1{\gdef\@titlehead{#1}} - -\newlength{\headwidth}\setlength{\headwidth}{\textwidth} -\addtolength{\headwidth}{-1pt} - -\def\ps@colloque{\let\@mkboth\@gobbletwo% - \def\@oddhead{ - \vbox to\headheight - {\vfil \hbox to\headwidth{\rm\normalsize\hfil{\@titlehead}} - \vskip 4pt - \hbox to\headwidth{\hrulefill} - }} - \def\@oddfoot{\rm\hfil\thepage\hfil} - \def\@evenhead{ - \vbox to\headheight - {\vfil \hbox to\headwidth{\rm\normalsize{\@authorhead}\hfil} - \vskip 4pt - \hbox to\headwidth{\hrulefill} - }} - \let\@evenfoot\@oddfoot} - -%%%%%%%%%%%%%%%%%%%% Title %%%%%%%%%%%%%%%%%%%% -\def\affiliation#1{\gdef\@affiliation{#1}} -\def\titlesize{\@setsize\titlesize{25pt}\xxpt\@xxpt} % title large -\def\authsize{\@setsize\authsize{14pt}\xipt\@xipt} % author size -\def\affilsize{\@setsize\affilsize{12pt}\xpt\@xpt} % affiliation - -% title needs adjusting, no date in title -\def\@maketitle{\newpage - \null - \vspace*{-20pt} - \begin{flushright} - {\titlesize \@title \par} - \vskip 10pt % Vertical space after title. 8pt - \hrule height 1.5pt % one point rule - \vskip 14pt % 14 points below rule (adjusted for baseline) - {\authsize \@author \par} - % there should be 18 pts between author and affiliation baselines - \vskip 6pt % Vertical space after author. 18pt - 6pt - {\affilsize\it \@affiliation \par} - \end{flushright} - \par - \vskip 16pt} % Vertical space after title. 26pt - 10pt - -\def\maketitle{\par -\begingroup -\def\thefootnote{\fnsymbol{footnote}} -\def\@makefnmark{\hbox -to 0pt{$^{\@thefnmark}$\hss}} -\if@twocolumn -\twocolumn[\@maketitle] -\else \newpage -\global\@topnum\z@ \@maketitle \fi\thispagestyle{colloquetitle}\@thanks -\endgroup -\setcounter{footnote}{0} -\let\maketitle\relax -\let\@maketitle\relax -\gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax} - -%%%%%%%%%%%%%%%%%%%% environnement "abst" %%%%%%%%%%%%%%%%%%%% -\def\abstsize{\@setsize\abstsize{11pt}\viiipt\@viiipt} % for abstract -\def\abst{\list{}{\leftmargin0pc}\abstsize\item[]} -\def\endabst{\endlist\vskip-7pt} - -%%%%%%%%%%%%%%%%%%%% need a period after section numbers %%%%%%%%%%%%%%%%%%%% -\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth - \def\@svsec{}\else - \refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname{.}\hskip 1em }\fi - \@tempskipa #5\relax - \ifdim \@tempskipa>\z@ - \begingroup #6\relax - \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par} - \endgroup - \csname #1mark\endcsname{#7}\addcontentsline - {toc}{#1}{\ifnum #2>\c@secnumdepth \else - \protect\numberline{\csname the#1\endcsname}\fi - #7}\else - \def\@svsechd{#6\hskip #3\@svsec #8\csname #1mark\endcsname - {#7}\addcontentsline - {toc}{#1}{\ifnum #2>\c@secnumdepth \else - \protect\numberline{\csname the#1\endcsname}\fi - #7}}\fi - \@xsect{#5}} - -\pagestyle{colloque} -\thispagestyle{colloquetitle} -\def\abstractname{R\'esum\'e} -\def\refname{Bibliographie} - -\endinput - -% end of actes.sty diff --git a/jscomp/build_tests/ocamlgraph/papers/jfla2005/biblio.bib b/jscomp/build_tests/ocamlgraph/papers/jfla2005/biblio.bib deleted file mode 100755 index 10fa607c83..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/jfla2005/biblio.bib +++ /dev/null @@ -1,89 +0,0 @@ - -@misc{ObjectiveCaml, - title = {{The Objective Caml language}}, - note = {\url{http://caml.inria.fr/}} -} - - -@misc{Jdsl, - title = {{The Data Structures Library in Java}}, - note = {\url{http://www.cs.brown.edu/cgc/jdsl/}} -} - - -@misc{Mlrisc, - title = {{The MLRISC System}}, - note = {\url{http://cs1.cs.nyu.edu/leunga/www/MLRISC/Doc/html/INTRO.html}} -} - -@misc{Baire, - title = {{Baire}}, - note = {\url{http://www.edite-de-paris.com.fr/~fpons/Caml/Baire/}} -} - -@misc{Fgl, - title = {{FGL - A Functional Graph Library}}, - note = {\url{http://web.engr.oregonstate.edu/~erwig/fgl/}} -} - -@misc{Gtl, - title = {{The Graph Template Library}}, - note = {\url{http://infosun.fmi.uni-passau.de/GTL/}} -} - -@misc{Bgl, - title = {{BGL - The Boost Graph Library}}, - note = {\url{http://www.boost.org/libs/graph/doc/}} -} - -@article{Leda, - author = {Kurt Mehlhorn and Stefan Näher}, - title = {LEDA: a platform for combinatorial and geometric computing}, - journal = {Commun. ACM}, - volume = {38}, - number = {1}, - year = {1995}, - issn = {0001-0782}, - pages = {96--102}, - publisher = {ACM Press}, - } - -@article{Erwig, - author = "Martin Erwig", - title = "Inductive Graphs and Functional Graph Algorithms", - year = "2001", - journal = "{Journal of Functional Programming}", - volume = 11, - number = 5, - pages = "467--492", -} - - - -@ARTICLE{leroy00, - AUTHOR = {Xavier Leroy}, - TITLE = {A modular module system}, - JOURNAL = {Journal of Functional Programming}, - VOLUME = 10, - NUMBER = 3, - YEAR = 2000, - PAGES = {269--303}, - URL = {http://pauillac.inria.fr/~xleroy/publi/modular-modules-jfp.ps.gz} -} - - -@PhdThesis{Goldberg, - author = {Andrew V. Goldberg}, - title = {Efficient graph algorithms for sequential and parallel computers}, - school = {MIT, Cambridge, Massachusetts}, - year = 1987, - month = {January}, -} - -@Article{FF, - author = {L. R. Jr. Ford and D. R. Fulkerson}, - title = {Maximal Flow Through a Network}, - journal = {Canadian Journal of Mathematics}, - year = 1956, - pages = {99-404}, -} diff --git a/jscomp/build_tests/ocamlgraph/papers/jfla2005/main.tex b/jscomp/build_tests/ocamlgraph/papers/jfla2005/main.tex deleted file mode 100755 index 4ccae896d1..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/jfla2005/main.tex +++ /dev/null @@ -1,1019 +0,0 @@ -\documentclass[twoside]{article} -\usepackage[latin1]{inputenc} -\usepackage[T1]{fontenc} -\usepackage{actes} -\usepackage[french]{babel} -\usepackage{url,xspace} -\usepackage{alltt} - -\newcommand{\ocamlgraph}{\textsc{Ocamlgraph}\xspace} -\newcommand{\ocaml}{\textsc{OCaml}\xspace} -\newcommand{\fl}{\ensuremath{\rightarrow}} - -%% Title page... -\title{Le foncteur sonne toujours deux fois} -\author{S. Conchon$^1$ - \& J.-C. Filliâtre$^1$ - \& J. Signoles$^1$} -%% Headers for other pages... -\titlehead{Le foncteur sonne toujours deux fois} % for odd pages -\authorhead{Conchon \& Filliâtre \& Signoles} % for even pages -\affiliation{\begin{tabular}{rr} % for institute(s) -\\ 1: Laboratoire de Recherche en Informatique -- CNRS 8623 -\\ Bât 490 Université Paris Sud 91405 ORSAY CEDEX, France -\\ {\tt \{conchon,filliatr,signoles\}@lri.fr} -\end{tabular}} - -\begin{document} -\setcounter{page}{1} -\maketitle - -\begin{abstract} - Cet article présente \ocamlgraph, une bibliothèque générique de graphes pour - le langage de programmation \ocaml. L'originalité de cette - bibliothèque est de proposer d'une part un grand nombre de - structures de données différentes pour représenter les graphes --- - graphes orientés ou non, structures persistantes ou modifiées en - place, sommets et arcs avec ou sans étiquettes, marques sur les - sommets, etc. --- et d'autre part des algorithmes sur les graphes - écrits indépendamment de la structure de données représentant les - graphes. Le codage de ces deux aspects originaux a été rendu - possible par une utilisation massive du système de modules d'\ocaml - et notamment de ses fonctions, les foncteurs. -\end{abstract} - -\section{Introduction} - -Trouver une bibliothèque de graphes pour son langage de programmation -préféré n'est souvent pas très difficile. Mais pouvoir utiliser les -algorithmes fournis par cette bibliothèque sur sa propre structure de -graphe ou attendre de cette bibliothèque qu'elle permette de créer des -graphes persistants, non-orientés dont les sommets et les arêtes sont -étiquetés par autre chose que des entiers devient plus difficile. - -\medskip - -Cet article présente -\textsc{Ocamlgraph}\footnote{\url{http://www.lri.fr/~filliatr/ocamlgraph/}}, -une bibliothèque générique de graphes pour le langage de programmation -\ocaml~\cite{ObjectiveCaml}. Au delà de la simple présentation de -l'interface de cette bibliothèque, cet article est surtout l'occasion -de montrer comment le langage \ocaml a été utilisé pour introduire -deux aspects originaux pour une telle bibliothèque. Le premier -consiste à fournir non pas une structure de données de graphes mais de -multiples structures de données énumérant toutes les variations -possibles autour d'un certain nombre de critères --- graphes orientés -ou non, structures persistantes ou modifiées en place, sommets et arcs -avec ou sans étiquettes, marques sur les sommets, etc. --- mais -regroupées sous des interfaces communes. La seconde originalité -consiste à fournir un grand nombre d'algorithmes sur les graphes -indépendamment de la structure de graphes sous-jacente. Ceux-ci -peuvent être alors instanciés sur les nombreuses structures de données -fournies par la bibliothèque mais également sur d'autres structures -apportées par l'utilisateur, si tant est qu'elles satisfassent à des -interfaces minimales. - -Ces deux originalités sont rendues possibles par une utilisation massive -du système de modules d'\ocaml. Dans le premier cas, il s'agit -d'éviter la duplication de code entre les différentes variantes de -structures de données, une règle d'or en programmation et un impératif -ici vu le nombre très élevé (17) de structures très semblables mais -toutes différentes. Dans le second cas, il s'agit tout simplement de -parvenir à écrire des algorithmes indépendamment des structures de -données sous-jacentes, avec le plus de généricité possible mais avec -un soucis constant d'efficacité du code final. -Dans les deux cas ce sont les fonctions du système de modules -d'\ocaml, appelées \emph{foncteurs} dans le jargon de la programmation -fonctionnelle, qui apportent la solution technique. Cet article a pour -but d'expliquer ces deux utilisations très différentes des foncteurs --- -d'où le titre accrocheur --- et il s'agit donc plus d'un article de -génie logiciel que d'un article présentant une bibliothèque. - -%\medskip - -Le plan de cet article est le suivant. La section~\ref{systememodules} -présente brièvement le système de modules d'\ocaml. La -section~\ref{structuresdedonnees} présente ensuite la conception de la -signature commune à toutes les structures de données de graphes et -montre comment le code de ses différentes réalisations a pu être -factorisé. La section~\ref{algos} décrit les algorithmes -proposés dans \ocamlgraph et comment leur généricité vis-à-vis de la -structure de graphes à pu être obtenue. -Enfin la section~\ref{comparaison} compare \ocamlgraph avec un -certain nombre de bibliothèques existantes. - - -\section{Le système de modules d'\ocaml}\label{systememodules} - -Dans cette section, nous rappelons les caractéristiques du système de -modules d'\ocaml pour le lecteur qui n'en serait pas familier. Il -s'agit d'un langage à part entière au dessus du langage de base -d'\ocaml, remplissant uniquement des fonctions de génie logiciel : -compilation séparée, structuration de l'espace de noms, encapsulation, -et généricité du code. Ce langage de modules pourrait être -intégralement supprimé statiquement, et se trouve être en réalité -indépendant du langage de base~\cite{leroy00}. - -C'est un langage fonctionnel d'ordre supérieur fortement typé dont les -termes sont appelés \emph{modules}. Les briques de base sont les -\emph{structures}, unités regroupant entre eux des types, valeurs, -exceptions et/ou définitions de modules. Par exemple, une implantation -naïve sous forme de matrices d'adjacence des graphes orientés, -étiquetés sur les arcs et modifiables en place peut être la suivante: -% -\begin{alltt} -module Graph = struct - type label = int - type t = label array array - let create n = Array.make_matrix n n 0 - let add_edge g v1 v2 l = g.(v1).(v2) <- l - let iter g f v = Array.iter f g.(v) -end -\end{alltt} - -Les types des structures, appelés \emph{signatures}, permettent de -restreindre la visibilité des composantes d'une structure en lui -adjoignant une \emph{interface}\footnote{au sens de \textsc{Modula} et - non de \textsc{Java}} et de masquer la définition de certains types -(on parle alors de \emph{type abstrait}). Ainsi, une signature -possible masquant les types des graphes et des étiquettes de -\texttt{Graph} est: -% -\begin{alltt} -module type GRAPH = sig - type label - type t - val create : int -> t - val add_edge : t -> int -> int -> label -> unit - val iter : t -> (label -> unit) -> int -> unit -end -\end{alltt} - -Les fonctions de ce langage, appelées \emph{foncteurs}, permettent -d'écrire des modules paramétrés par d'autres modules et de les -appliquer ensuite à des modules particuliers. L'apport des foncteurs -en terme de génie logiciel est important lorsqu'il s'agit de -paramétrer un \emph{ensemble} de types et de fonctions par un autre -\emph{ensemble} de types et de fonctions, de manière cohérente. Par -exemple, pour rester indépendant de l'implantation de la structure de -graphe, l'algorithme de Dijkstra, pour des graphes dont les arcs sont -étiquetés par des entiers, peut être << fonctorisé >> de la manière -suivante: -% -\begin{alltt} -module type S = sig - type label - type t - val iter : t -> (label -> unit) -> int -> unit -end - -module Dijkstra (G : S with type label = int) = struct - let dijkstra g v1 v2 = (* ... *) -end -\end{alltt} -% -L'annotation \texttt{with type} permet d'unifier ici le type abstrait -\texttt{label} de la signature \texttt{S} avec le type \texttt{int}. -D'autre part, la signature \texttt{S} exigée pour l'argument du -foncteur ne contient que ce qui est nécessaire à l'implantation de -l'algorithme. On pourra cependant appliquer ce foncteur à tout module -dont la signature contient \emph{au moins} \texttt{S}, c'est-à-dire -qui est \emph{sous-type} de \texttt{S}. - -Enfin, il est possible de construire des aggrégats de signatures ou de -modules à l'aide de la construction \texttt{include} qui peut être vue -naïvement comme une inclusion textuelle. - -\section{Structures de données}\label{structuresdedonnees} - -Fournir de multiples structures de données de graphes est un des deux -aspects originaux d'\ocamlgraph. En effet, un graphe peut être orienté -ou non, ses sommets et ses arcs peuvent être avec ou sans étiquettes -et la structure de données sous-jacente peut être \emph{persistante} -ou \emph{modifiable en place} (\emph{impérative)}: pas moins de seize -structures de données différentes doivent donc être fournies pour -rendre compte de ces diverses combinaisons. Par conséquent, il -convient, d'une part, d'unifier au maximum les interfaces de ces -structures de données pour permettre leur compréhension par -l'utilisateur et, d'autre part, de factoriser le plus possible leurs -implantations de manière à limiter la taille du code, et donc les -bogues. - -\subsection{Les interfaces}\label{interfaces} - -Les interfaces des diverses structures de données de graphes sont -regroupées dans le module \texttt{Sig} et sont essentiellement au -nombre de trois : une interface \texttt{G} commune à toutes les -structures de données, une interface \texttt{P} commune à toutes les -structures persistantes (\emph{i.e.} immuables d'un point de vue -observationnel) et une interface \texttt{I} commune à toutes les -structures impératives. L'interface commune \texttt{G} contient toutes -les opérations d'accès à la structure du graphe. Les interfaces -\texttt{P} et \texttt{I} étendent \texttt{G} en ajoutant les fonctions -de création et de modification du graphe, nécessairement différentes -selon le caractère persistant ou impératif. - -L'interface commune \texttt{G} introduit un type abstrait \texttt{t} pour les -graphes~: -\begin{alltt} -module type G = sig - type t \hfill(* le type des graphes *) -\end{alltt} -Le type des sommets est également un type abstrait\footnote{Le type - des sommets est abstrait \emph{a priori} mais une réalisation - particulière de la signature \texttt{G} peut tout à fait - déclarer un type de sommets manifeste.}. Vu que l'on ne préjuge pas -du caractère étiqueté ou non des sommets, on introduit également un type -pour les étiquettes des sommets (on aurait pu choisir un type de -sommets polymorphe mais le polymorphisme se marrie mal avec les foncteurs). -Enfin, la plupart des algorithmes sur les graphes ont besoin de -stocker des sommets dans des structures de données de type ensembles -ou dictionnaires et il est pour cela très utile que le type des -sommets soit équipé de fonctions de comparaison et de hachage adéquates. -On regroupe tout cela dans un sous-module \texttt{V}~: -\begin{alltt} - module V : sig - type t \hfil(* le types des sommets *) - type label \hfill(* le type des étiquettes des sommets *) - val create : label -> t - val label : t -> label - val compare : t -> t -> int - val hash : t -> int - val equal : t -> t -> bool - end -\end{alltt} -L'intérêt d'introduire un sous-module est double : d'une part il évite -de polluer l'espace de noms et d'autre part, il permet à ce -sous-module d'être directement l'argument d'un foncteur tel que -\texttt{Map.Make} ou \texttt{Hashtbl.Make}. -On introduit tout de même un alias pour le type \texttt{V.t} pour plus -de lisibilité par la suite~: -\begin{alltt} - type vertex = V.t -\end{alltt} -Pour les graphes dont les sommets ne sont pas étiquetés, il suffira -d'identifier les types \texttt{V.t} et \texttt{V.label} et de réaliser -les deux fonctions \texttt{V.create} et \texttt{V.label} par l'identité. - -De même on introduit un sous-module \texttt{E} pour les arcs. Là -encore on suppose que les arcs peuvent être étiquetées et un arc est -donc construit à partir de deux sommets et d'une étiquette. Enfin, -comme pour les sommets, on équipe le type des arcs d'une fonction de -comparaison. -\begin{alltt} - module E : sig - type t - type label - val create : vertex -> label -> vertex -> t - val src : t -> vertex - val dst : t -> vertex - val label : t -> label - val compare : t -> t -> int - end - type edge = E.t -\end{alltt} -Pour des arcs non étiquetés, il suffira de prendre pour \texttt{E.t} -le type \texttt{V.t * V.t} et d'ignorer le type \texttt{E.label} (en -le réalisant par exemple par le type \texttt{unit}). - -Viennent ensuite un grand nombre de fonctions de tests, de fonctions -d'accès et d'itérateurs sur les sommets et les arcs dont la -signification est immédiate~: -\begin{alltt} - val is_directed : bool - val nb_vertex : t -> int - val out_degree : t -> vertex -> int - val iter_vertex : (vertex -> unit) -> t -> unit - (* ... *) -\end{alltt} -La partie essentielle de l'interface réside dans les fonctions -donnant accès à la relation d'adjacence dans le graphe. On trouve par -exemple une fonction donnant les successeurs -d'un sommet sous la forme d'une listes de sommets~: -\begin{alltt} - val succ : t -> vertex -> vertex list - (* ... *) -\end{alltt} -En pratique, cependant, il sera plus utile de pouvoir itérer une -fonction sur les successeurs (ou les prédécesseurs), afin d'éviter de -construire des liste pour immédiatement les déstructurer. -Cet ensemble d'itérateurs complète la signature \texttt{G}~: -\begin{alltt} - val iter_succ : (vertex -> unit) -> t -> vertex -> unit - val fold_succ : (vertex -> 'a -> 'a) -> t -> vertex -> 'a -> 'a - (* ... *) -end -\end{alltt} -Comme nous le montrerons dans la section~\ref{algos}, l'écriture d'un -algorithme sur les graphes ne nécessite généralement qu'un très petit -sous-ensemble de ces opérations. Grâce au sous-typage des signatures, -une réalisation de l'interface \texttt{G} sera également une interface -adéquate pour nos algorithmes. - -L'interface \texttt{P} des graphes persistants étend alors l'interface -\texttt{G} par un ensemble de fonctions de création de graphes~: -\begin{alltt} -module type P = sig - include G - val empty : t - val add_vertex : t -> vertex -> t - val remove_vertex : t -> vertex -> t - val add_edge : t -> vertex -> vertex -> t - (* ... *) -end -\end{alltt} -De même l'interface \texttt{I} étend l'interface \texttt{G} par un -ensemble de fonctions de création et de modification de graphes impératifs~: -\begin{alltt} -module type I = sig - include G - val create : unit -> t - val copy : t -> t - val add_vertex : t -> vertex -> unit - val add_edge : t -> vertex -> vertex -> unit - (* ... *) -end -\end{alltt} -On notera la présence d'une fonction \texttt{copy} qui n'a pas de -correspondant dans l'interface \texttt{P}. - -Dans la section~\ref{builder} nous montrerons comment il est possible -de donner une interface commune à la construction de graphes, qu'ils -soient persistants ou impératifs, afin de factoriser du code -construisant des graphes. Mais il aurait été malheureux de le faire -ici, car le caractère persistant ou impératif doit apparaître -clairement à l'utilisateur et pour cela transparaître dans la signature. - -En réalité, le module \texttt{Sig} introduit une quatrième et dernière -signature de graphes, \texttt{IA}, pour les structures -impératives où les sommets sont munis de \emph{marques} entières que -l'on peut modifier en place~: -\begin{alltt} -module type IA = sig - include I - module Mark : sig - val clear : t -> unit \hfill (* met toutes les marques à 0 *) - val get : vertex -> int - val set : vertex -> int -> unit - end -end -\end{alltt} -Une telle signature est utile lorsque l'on veut proposer un codage -efficace d'un algorithme basé sur un marquage particulier des -sommets, \emph{a fortiori} si ces marques peuvent être ensuite -exploitées par l'utilisateur. L'exemple typique est celui d'un -parcours en profondeur. - -On notera enfin qu'à aucun moment il n'a été nécessaire d'expliciter -le caractère orienté ou non des graphes. Seule l'\emph{implantation} -le définira. - -\subsection{Le partage du code} - -Les implantations des diverses structures de données sont partagées -entre les modules \texttt{Persistent} et \texttt{Imperative}. Chacun -de ces deux modules se divise en deux sous-modules appelés -\texttt{Graph} (graphes non orientés) et \texttt{Digraph} (graphes -orientés). Ces derniers regroupent chacun quatre foncteurs; chacun -d'eux correspondent à des graphes concrets ou abstraits\footnote{Un - graphe abstrait masque le type (et donc l'implantation) des sommets - et des arcs à l'utilisateur et permet une implantation optimisée de - certaines opérations.} possédant ou non des étiquettes sur ses -arcs (un sommet est toujours étiqueté). Ils sont paramétrés par un -module \texttt{V} correspondant aux sommets du graphe et, dans le cas -des graphes étiquetés aux arcs, par un module \texttt{E} correspondant -aux arcs. Par exemple, le foncteur -\texttt{Persistent.Digraph.Abstract} implante les graphes persistants -non orientés, abstraits et sans étiquette. Sa signature est la -suivante: -\begin{alltt} -module Abstract(V: sig type t end) : - Sig.P with type V.t = V.t and type V.label = V.t and type E.t = V.t * V.t -\end{alltt} - -Dans la suite de cette section, nous montrons comment les foncteurs -sont utilisés pour factoriser un maximum de code entre ces seize -structures de données. Il est important de noter que le code présenté -ici n'est ni visible ni utile pour l'utilisateur de la bibliothèque. - -Le module \texttt{Per\_imp}, interne à \ocamlgraph, -regroupe un certain nombre de foncteurs réalisant -les opérations sur les graphes pour lesquelles il est possible de -s'abstraire du caractère persistant ou impératif. -Chaque foncteur est dédié à une -tâche particulière comme poser des étiquettes sur les arcs (foncteur -\texttt{Labelled}), rendre le graphe abstrait (foncteur -\texttt{Make\_Abstract}) ou coder les opérations sur les prédécesseurs -(foncteur \texttt{Pred}). Coder une structure de données de graphes -particulière revient alors à assembler les différents foncteurs comme -dans un jeu de construction et à coder les quelques opérations qui ne -peuvent pas être factorisées. - -\paragraph{S'abstraire du caractère persistant ou impératif} - -Dans notre bibliothèque, les graphes sont représentés sous la forme d'une table -associant à chaque sommet du graphe l'ensemble de ses successeurs (auxquels -est adjoint l'étiquette de l'arc correspondant si nécessaire). Ces tables -d'association sont persistantes ou impératives selon le type de graphes -considérés. En \ocaml, cela se traduit par des opérations de types -différents. Ainsi, la fonction d'ajout dans une table de -hachage ne retourne aucune valeur (car la modification est faite en -place) alors que celle d'ajout dans une table persistante retourne une -nouvelle table. -Mais on peut toutefois donner une signature commune à ces tables -persistantes et impératives en introduisant un type explicite -\texttt{'a return} de la manière suivante~: -\begin{alltt} -module type HM = sig - type 'a return \hfill (* type de retour de [add] et [remove] *) - type 'a t - type key - val add: key -> 'a -> 'a t -> 'a return - val mem: key -> 'a t -> bool - val find: key -> 'a t -> 'a - (* ... *) -end -\end{alltt} -Il est alors possible d'obtenir une implantation persistante de -\texttt{HM} basée sur -le module \texttt{Map} d'\ocaml\ en instanciant le type \texttt{'a - return} par le type des tables persistantes~: -\begin{alltt} -module Make_Map(X: (* ... *) ) = struct - include Map.Make(X) - type 'a return = 'a t - (* ... *) -end -\end{alltt} -Et il en est de même pour une version impérative basée sur le module -\texttt{Hashtbl} d'\ocaml\ en instanciant le type \texttt{'a return} -par \texttt{unit}~: -\begin{alltt} -module Make_Hashtbl(X: (* ... *) ) = struct - include Hashtbl.Make(X) - type 'a return = unit - let add k v h = replace h k v - (* ... *) -end -\end{alltt} - -Dès lors, en utilisant une implantation de \texttt{HM} ainsi qu'une -implantation des -ensembles, il est possible d'écrire un foncteur implantant les opérations -communes à tous les types de graphe: -\begin{alltt} -module Minimal(S: Set.S)(HM: HM) = struct - let mem_vertex g v = HM.mem v g - let out_degree g v = - S.cardinal (try HM.find v g with Not_found -> invalid_arg "out_degree") - (* ... *) -end -\end{alltt} - -\paragraph{Foncteurs comme briques d'assemblage} - -Les opérations sur les prédécesseurs se programment toujours de la même -manière. Elles sont regroupées dans le foncteur \texttt{Pred}: -\begin{alltt} -module Pred(S: (* ... *) ) = struct - let fold_pred f g v = (* ... *) - let pred g v = fold_pred (fun v l -> v :: l) g v [] - (* ... *) -end -\end{alltt} -En outre, dans le cas des graphes non orientés, les opérations sur les -prédécesseurs peuvent être optimisées en tenant compte du fait que l'ensemble -des prédécesseurs d'un sommet $s$ est égal à l'ensemble des successeurs de $s$. -On peut alors redéfinir \texttt{Pred}: -\begin{alltt} -module Pred(S: (* ... *) ) = struct - let fold_pred = S.fold_succ - let pred = S.succ - (* ... *) -end -\end{alltt} - -Un certain nombre d'opérations, comme itérer sur les arcs d'un graphe, -dépendent de la présence ou non d'étiquettes sur les arcs du graphe. Ceci -entraîne l'implantation de deux foncteurs \texttt{Labelled} et -\texttt{Unlabelled} (non détaillés dans cet article). - -Il est possible de rendre un graphe abstrait à partir de sa version concrète -et, ainsi, d'optimiser certaines opérations. C'est le rôle dédié au foncteur -\texttt{Make\_Abstract}: -\begin{alltt} -module Make_Abstract(G: Sig.G) = struct - module I = struct - type t = \{ edges: G.t; mutable size: int \} - let iter_vertex f g = G.iter_vertex f g.edges - (* ... *) - end - include I - include Pred(I) - let nb_vertex g = g.size \hfill (* optimisation *) - (* ... *) -end -\end{alltt} - -Enfin, il est possible d'implanter la version concrète du module \texttt{V} et -la table d'association l'utilisant à l'aide d'un foncteur d'ordre supérieur: -\begin{alltt} -module ConcreteVertex - (F: functor(X: (* ... *) ) -> HM with type key = X.t)(V: (* ... *) ) = -struct - module V = struct - include V - type label = t - (* ... *) - end - module HM = F(V) -end -\end{alltt} - -\paragraph{Assemblage des briques} - -A l'aide de l'ensemble de ces foncteurs, il est possible d'implanter de manière -générique --- et aisément ! --- la majeure partie des modules \texttt{Digraph} -et \texttt{Graph}: -\begin{alltt} -module Make(F: functor(X: (* ... *) ) -> HM with type key = X.t) = struct - module Digraph = struct - module Concrete(V: (* ... *) ) = struct - include ConcreteVertex(F)(V) \hfill (* les sommets sont concrets *) - include Unlabeled(V)(HM) \hfill (* les arcs ne sont pas étiquetés *) - include Minimal(S)(HM) \hfill (* opérations communes à tous *) - end - module ConcreteLabelled = (* ... *) - module Abstract = (* ... *) - module AbstractLabelled = (* ... *) - end - end - module Graph = struct (* ... *) end -end -\end{alltt} -Les implantations persistantes et impératives sont obtenues en appliquant ce -foncteur: -\begin{alltt} -module P = Make(Make_Map) -module I = Make(Make_Hashtbl) -\end{alltt} - -Pour obtenir les foncteurs visibles par l'utilisateur, il reste à étendre -les foncteurs obtenus en ajoutant les quelques fonctions qui ne peuvent pas -être factorisées: -\begin{alltt} -module Digraph = struct - module Concrete(V: (* ... *) ) = struct - include P.Digraph.Concrete(V) - let add_vertex g v1 v2 = if HM.mem v g then g else add_vertex g v - (* ... *) - end - (* ... *) -end -\end{alltt} - -\section{Algorithmes}\label{algos} - -Nous présentons dans cette section la deuxième utilisation des -foncteurs dans \ocamlgraph~: la programmation générique d'algorithmes -sur les graphes. - -\subsection{Programmation générique} - -Comme nous l'avons vu en partie~\ref{structuresdedonnees}, notre -bibliothèque fournit de nombreuses implantations de graphe. Le -problème se pose alors d'écrire des algorithmes pour toutes ces -structures sans avoir à les réécrire pour chacune d'elles. Tout comme -les foncteurs nous ont permis d'implanter ces structures de données -avec un minimum de duplication de code, ils vont également nous -permettre de programmer des algorithmes génériques à moindre frais. - -L'idée de base est d'écrire un algorithme sans se soucier de -l'implantation des graphes mais en se concentrant uniquement sur les -opérations nécessaires et suffisantes à la manipulation de ces -structures de données. L'algorithme devient alors naturellement un -foncteur paramétré par ces opérations et la signature qu'elles -engendrent est le type de son paramètre. Ces opérations correspondent -en général à un sous-ensemble de celles fournies par \ocamlgraph mais, -comme nous le verrons dans les exemples donnés par la suite, certains -algorithmes ont besoin d'opérations spécifiques, indépendantes de la -structure du graphe, qui seront alors fournies comme des paramètres -supplémentaires au foncteur. - -Cette << fonctorisation >> des algorithmes permet, d'une part, -d'ajouter facilement des algorithmes à la bibliothèque et, d'autre -part, d'utiliser facilement les algorithmes d'\ocamlgraph sur des -structures de données non fournies par la bibliothèque. - -\subsection{Exemple : algorithmes de flots} -\label{algos-flot} - -Nous illustrons l'aspect générique des algorithmes d'\ocamlgraph à -travers deux exemples pour calculer le flot maximal d'un -réseau\footnote{\emph{i.e.} un graphe orienté possédant deux sommets - distingués appelés \emph{source} et \emph{puits}}, l'algorithme de -Ford et Fulkerson~\cite{FF} et celui de Goldberg~\cite{Goldberg}. Ils se -présentent sous forme de deux foncteurs dont les signatures sont les -suivantes: -\begin{alltt} -module Ford_Fulkerson (G: G_FORD_FULKERSON)(F: FLOW with type label = G.E.label) : -sig - val maxflow : G.t -> G.V.t -> G.V.t -> (G.E.t -> F.t) * F.t -end - -module Goldberg(G: G_GOLDBERG)(F: FLOW with type label = G.E.label) : -sig - val maxflow : G.t -> G.V.t -> G.V.t -> (G.E.t -> F.t) * F.t -end -\end{alltt} -% -Les corps de ces foncteurs implantent une fonction \texttt{maxflow} de -même signature prenant en paramètre un réseau, une source et un puits et -retournant une paire \texttt{(f,delta)} où \texttt{f} associe à chaque -arc du réseau son nouveau flot et où \texttt{delta} représente la -différence entre le flot maximal calculé et le flot initial du réseau. - -La signature du premier paramètre \texttt{G} de ces deux foncteurs -décrit les opérations minimales du graphe pour l'implantation de -\texttt{maxflow}. Puisque les deux algorithmes implantés par ces -foncteurs sont différents, les signatures \texttt{G\_FORD\_FULKERSON} -et \texttt{G\_GOLDBERG} sont également différentes. Par exemple -l'algorithme de Goldberg nécessite d'itérer sur tous les -sommets et arcs du graphe tandis que celui de Ford et -Fulkerson a besoin d'itérer sur les arcs issus d'un sommet, -comme le montrent leurs signatures respectives: -\begin{alltt} -module type G_GOLDBERG = sig - type t - module V : sig type t (* ... *) end - module E : sig type t (* ... *) end - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_edges_e : (E.t -> unit) -> t -> unit - (* ... *) -end - -module type G_FORD_FULKERSON = sig - type t - module V : sig type t (* ... *) end - module E : sig type t (* ... *) end - val iter_succ_e : (E.t -> unit) -> t -> V.t -> unit - val iter_pred_e : (E.t -> unit) -> t -> V.t -> unit -end -\end{alltt} - -La signature du second paramètre \texttt{F} est commune aux deux -foncteurs. Elle rassemble les opérations pour manipuler les étiquettes -des arcs comme des flots: -\begin{alltt} -module type FLOW = sig - type label \hfill(* type des étiquettes d'un arc *) - type t \hfill(* type des flots passant sur un arc *) - val flow : label -> t \hfill(* flot actuel *) - val max_capacity : label -> t \hfill(* capacité maximale *) - val min_capacity : label -> t \hfill(* capacité minimale *) - val add : t -> t -> t \hfill(* addition *) - val sub : t -> t -> t \hfill(* soustraction *) - val zero : t \hfill (* élément neutre *) - val compare : t -> t -> int \hfill(* fonction de comparaison *) -end -\end{alltt} - -Cette signature \texttt{FLOW} s'implante facilement quelque soit le -type de données. Par exemple, une implantation possible pour un graphe -dont les étiquettes des arcs seraient des entiers correspondant à la -capacité maximale de chaque arc et dont le flot initial serait nul est -la suivante~: -\begin{alltt} -module Flow = struct - type label = int - type t = int - let max_capacity x = x - let min_capacity _ = 0 - let flow _ = 0 - let add = (+) - let sub = (-) - let compare = compare - let zero = 0 -end -\end{alltt} - -\subsection{Autre exemple : parcours de graphes} - -Nous donnons ici un second exemple de programmation générique avec les -algorithmes classiques de parcours en profondeur et en largeur. -Pour parcourir un graphe, il y a besoin de très peu -d'opérations. Principalement, il faut pouvoir itérer une fonction sur -tous les successeurs d'un sommet. Il faut également pouvoir -parcourir l'ensemble des sommets pour parcourir toutes les -composantes connexes. Enfin il faut pouvoir marquer les sommets -visités. Concernant ce dernier point, et en l'absence de toute -hypothèse sur les sommets du graphe, le plus simple est d'utiliser -une table de hachage contenant les sommets déjà visités. Pour cela, -il suffit que le type des sommets soit équipé de fonctions -\texttt{hash} et \texttt{equal} convenables. L'interface minimale -requise pour les algorithmes de parcours de graphes est donc la suivante~: -\begin{alltt} -module type G = sig - type t - module V : sig type t val hash : t -> int val equal : t -> t -> bool end - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_succ : (V.t -> unit) -> t -> V.t -> unit -end -\end{alltt} -Dès lors les algorithmes de parcours se présentent sous la forme de -foncteurs ressemblant à ceci~: -\begin{alltt} -module Dfs(G : G) : sig val iter : (G.V.t -> unit) -> G.t -> unit end -\end{alltt} -En réalité, plusieurs variantes de chaque parcours sont offertes~: -composante à partir d'un sommet donné uniquement, application de la -fonction après les successeurs plutôt qu'avant, etc. Le foncteur de -parcours en profondeur propose également une fonction de détection de cycle. -Enfin, il y a un foncteur spécialisé pour les graphes équipés de -marques (voir la signature \texttt{IA} au paragraphe~\ref{interfaces}), -car celles-ci peuvent être alors utilisées de manière directe pour -noter les sommets déjà visités. - -Les fonctions de parcours de graphes sont également proposées dans des -versions « pas à pas », à l'instar des itérateurs que l'on trouve -plutôt dans des contextes de programmation impérative (telles que les -classes réalisant l'interface \texttt{Enumeration} en \textsc{Java}). -Un tel itérateur se présente sous la forme suivante~: -\begin{alltt} -module Dfs(G : G) : sig - type iterator - val start : G.t -> iterator - val step : iterator -> iterator - val get : iterator -> G.V.t -end -\end{alltt} -Le type abstrait \texttt{iterator} représente un état de l'itérateur, -ou si l'on préfère un point dans l'itération en cours. On obtient le -point de départ avec la fonction \texttt{start}. Dès lors, on peut -avancer dans l'itération avec la fonction \texttt{step} ou récupérer -le sommet en cours de visite avec \texttt{get}. Ces deux fonctions -lève l'exception \texttt{Exit} lorsque l'on se trouve dans l'état -final. Cette séparation en -deux fonctions distinctes \texttt{step} et \texttt{get} constitue une -différence importante avec les -itérateurs « pas à pas » que l'on trouve habituellement en -programmation impérative, où une seule fonction retourne l'élément -courant \emph{et} avance l'itérateur. D'autre part, et c'est là une -différence encore plus importante, le type \texttt{iterator} est un -type \emph{persistant} : l'itérateur n'est pas modifié par la fonction -\texttt{step}. Dès lors, il est très facile d'utiliser ces itérateurs -dans des algorithmes de \emph{backtracking} impliquant des graphes. - -Voici par exemple comment peut être codée la $k$-coloration d'un -graphe \texttt{g} sur la base d'un parcours en largeur pas à pas -\texttt{Bfs}. Le graphe possède des marques que l'on utilise pour -indiquer la couleur (0 signifiant qu'il n'y a pas encore de couleur -assignée). -\begin{alltt} -let coloring g k = - Mark.clear g; - let try_color v i = - iter_succ (fun w -> if Mark.get w = i then raise NoColor) g v; - Mark.set v i - in - let rec iterate iter = - let v = Bfs.get iter in - for i = 1 to k do - try try_color v i; iterate (Bfs.step iter); assert false - with NoColor -> () - done; - Mark.set v 0; raise NoColor - in - try iterate (Bfs.start g); assert false with Exit -> () -\end{alltt} -Le gain de l'itérateur pas à pas persistant est double~: non seulement -on a pu utiliser une fonction de parcours existante sans avoir besoin -de la réécrire au sein même de l'algorithme de coloration, mais la -persistance de l'itérateur a également permis d'éviter une écriture -explicite du \emph{backtrack} dans le code ci-dessus. - -\subsection{Constructions de graphes}\label{builder} - -Nous avons montré au paragraphe~\ref{interfaces} que les opérations de -constructions de graphes différaient entre les graphes persistants et -les graphes impératifs, ce qui est parfaitement justifié. Cependant, -de même que nous avons écrit des algorithmes sur les graphes de -manière générique, on peut souhaiter \emph{construire} des graphes de -manière générique, \emph{i.e.} indépendamment de la structure de -données les représentant. On peut ainsi vouloir définir des -opérations telles que l'union de deux graphes, la clôture transitive -d'un graphe ou encore construire des graphes classiques (graphe -complet à $n$ sommets, graphe de de Bruijn d'ordre $n$, graphe des -diviseurs, etc.) ou des graphes aléatoires, etc. Dans tous ces cas, -le caractère persistant ou impératif des graphes n'est pas -significatif mais la différence d'interfaces s'oppose à la généricité. - -Pour remédier à cela, on introduit un module \texttt{Builder}. Il définit une -interface de construction commune aux graphes persistants et -impératifs~: -\begin{alltt} -module type S = sig - module G : Sig.G - val empty : unit -> G.t - val copy : G.t -> G.t - val add_vertex : G.t -> G.V.t -> G.t - val add_edge : G.t -> G.V.t -> G.V.t -> G.t - val add_edge_e : G.t -> G.E.t -> G.t -end -\end{alltt} -Il est immédiat d'implanter une telle signature à partir d'une -structure persistante ou d'une structure impérative~: -\begin{alltt} -module P(G : Sig.P) : S with module G = G -module I(G : Sig.I) : S with module G = G -\end{alltt} -Il est important de noter que, pour une structure impérative, les -graphes retournés par les fonctions \texttt{add\_vertex}, -\texttt{add\_edge} et \texttt{add\_edge\_e} ne sont pas -significatifs. Il y a même là une illusion trompeuse de -persistance. Mais cette interface commune se limite à ce module -\texttt{Builder} et comporte un avertissement adéquat. - -Dès lors, il est facile de coder un algorithme générique de -construction de graphes. On commence par écrire une version très -générique prenant en argument un module de type \texttt{Builder.S}~: -\begin{alltt} -module Make(B : Builder.S) = struct ... end -\end{alltt} -puis on peut trivialement proposer deux variantes de ce foncteur pour -les graphes persistants et les graphes impératifs avec les deux -lignes suivantes~: -\begin{alltt} -module P(G : Sig.P) = Make(Builder.P(G)) -module I(G : Sig.I) = Make(Builder.I(G)) -\end{alltt} -Ainsi l'utilisation du module \texttt{Builder} est entièrement cachée -à l'utilisateur de la bibliothèque. - -\section{\ocamlgraph et les autres bibliothèques de graphes} -\label{comparaison} - -Nous présentons dans cette section les fonctionnalités de quelques -bibliothèques de graphes afin de donner au lecteur des éléments de -comparaison sur les possibilités qu'offrent ces bibliothèques et ce -que nous fournissons avec \ocamlgraph. - -Loin d'être exhaustive, notre liste présente des bibliothèques écrites -dans (ou pour) des langages de programmation permettant une certaine -forme de programmation générique. Par conséquent, les critères de -comparaison que nous avons retenus portent principalement sur la -variété de structures de données de graphes et d'opérations associées -(itérateurs, modificateurs etc.) proposée dans ces bibliothèques et -sur la généricité des algorithmes fournis. - -\paragraph{\textsc{Jdsl} \cite{Jdsl}} Cette bibliothèque \textsc{Java} -fournit des implantations et des algorithmes pour plusieurs structures -de données (listes, vecteurs, files à priorité, dictionnaires et -graphes). En ce qui concerne les graphes, les interfaces définies -dans JDSL regroupent --- dans des signatures distinctes --- les -opérations d'accès en lecture et en écriture à la structure de données -sous-jacente: On trouve des \emph{accesseurs} pour l'accès en temps -constant aux éléments du graphe, des \emph{itérateurs} pour parcourir -la structure de données et des \emph{modificateurs} pour ajouter ou -supprimer des sommets et des arcs. L'utilisation du système -d'interfaces et des classes abstraites de \texttt{Java} rend les -algorithmes de JDSL très génériques. La bibliothèque ne propose -cependant qu'une seule implantation de graphe par listes d'adjacences -et on ne trouve pas de notion de graphe persistant dans les signatures -des interfaces. De plus, aucun type de données ne permet de distinguer -les graphes orientés des graphes non-orientés (arêtes et arcs pouvant -coexister dans un même graphe). Enfin, les sommets et les arcs -peuvent être étiquetés par des informations de type \texttt{Object}, -mais cette technique de programmation, bien connue des programmeurs -\textsc{Java}, offre une forme de polymorphisme non sûre qui oblige à -effectuer des vérifications de typage au moment de l'exécution. - -\paragraph{\textsc{Mlrisc} \cite{Mlrisc}} Ce Back-End de compilateur -paramétrable fournit une bibliothèque de graphes pour SML ne -contennant qu'une unique signature de multi-graphes orientés ainsi -qu'une unique implantation impérative. Les sommets et les arcs d'un -graphe peuvent être étiquetés par des informations de type quelconque. -Des modificateurs et des itérateurs permettent respectivement de -mettre à jour et de parcourir la structure de données sous-jacente. -On trouve également des combinateurs pour construire des \emph{vues} -différentes d'un même graphe. On peut par exemple construire une vue -d'un graphe où les arcs sont inversés, où les sommets (resp. les -arcs) sont renommés ou forment un sous-ensemble de l'ensemble des -sommets (resp. des arcs) du graphe etc. Un système de vues -\emph{comportementales}, semblable aux principes de la programmation -par aspect, permet d'attacher des actions aux modificateurs d'un -graphe afin, par exemple, de réaliser telles ou telles actions avant -l'ajout d'un sommet. La bibliothèque contient également de nombreux -algorithmes dont certains sont implantés sous forme de foncteurs afin -de s'abstraire d'opérations spécifiques, indépendantes de la structure -de graphes (par exemple, l'algorithme de flot de \textsc{Mlrisc} est, -comme ceux d'\ocamlgraph présentés en section~\ref{algos-flot}, -paramétré par une structure de groupe abélien). - -\paragraph{\textsc{Leda} \cite{Leda}} Cette bibliothèque en -\textsc{C++} fournit de nombreuses structures de données (graphes, -listes, ensembles, dictionnaires, arbres, partitions, file de -priorités, lignes, points, surfaces etc.) ainsi que de nombreux -algorithmes sur les graphes, la géométrie, les réseaux et le -graphisme. Les graphes de \textsc{Leda} sont impératifs. Ils peuvent -être orientés ou non, paramétrés par un type de sommet et un type -d'arc quelconques, statiques ou planaires. Des macros permettent -d'itérer sur les sommets et sur les arcs. On trouve également de -nombreuses fonctions d'accès, des modificateurs, des générateurs de -graphes et des tests de toutes sortes (cyclicité, planarité, -convexité, etc.). Malheureusement, les algorithmes de cette -bibliothèque ne sont pas génériques et une seule implantation est -fournie (à l'aide de deux listes doublement chaînées de sommets et -d'arcs). - -\paragraph{\textsc{Fgl} \cite{Fgl,Erwig}} Cette bibliothèque de -graphes pour \textsc{Haskell} (la version pour \textsc{Sml} ne semble -plus être maintenue) propose une représentation inductive des graphes -et fournit un ensemble d'algorithmes fonctionnels pour cette nouvelle -structure de données. Les graphes de FGL sont des multi-graphes, -orientés ou non, persistants, dont les sommets et les arcs sont -étiquetés avec des informations de type quelconque. L'implantation -des graphes est réalisée par des tableaux fonctionnels ou des arbres -AVL. Cette bibliothèque est la seule, avec \ocamlgraph et -\textsc{Baire} (voir ci-dessous), à proposer des graphes persistants. -Cependant, la <> purement fonctionnelle de \textsc{Fgl} -est bien différente de celle avec laquelle nous avons conçu notre -bibliothèque. Par exemple, l'interface de nos graphes persistants -partage une importante signature avec nos graphes impératifs et les -algorithmes que l'on fournit sont directement inspirés des algorithmes -\emph{impératifs} de la littérature. - -\paragraph{\textsc{Bgl} \cite{Bgl}} Cette bibliothèque de graphes pour -C++ propose des algorithmes génériques implantés à l'aide de -\emph{templates} (forme purement <> des foncteurs -d'\ocaml). Les paramètres de ces templates décrivent l'interface -minimale que la structure de données de graphes doit remplir pour -appliquer l'algorithme. Cette bibliothèque est la seule, avec -\ocamlgraph, à proposer de tels algorithmes génériques. Cependant, on -ne trouve que deux implantations de graphes et la liste des interfaces -définies dans \textsc{Bgl} est moins complète que celle de notre -bibliothèque: on ne retrouve pas, par exemple, d'interfaces permettant -aux algorithmes de profiter du caractère persistant d'une structure de -données. De plus, l'étiquetage des sommets ou des arcs est réalisé à -l'aide de dictionnaires passés comme paramètres aux algorithmes qui en -ont besoin, et ne fait donc pas parti de la signature des graphes. - -\paragraph{\textsc{Baire} \cite{Baire}} Cette bibliothèque de structures de -données pour \textsc{Caml} fournit huit implantations différentes de -graphes sans aucun partage de code (la bibliothèque n'utilisant pas le -système de foncteurs d'\textsc{Ocaml}). Chaque structure implante des -graphes orientés et étiquetés sur les arcs (il n'y a pas de graphes -non étiquetés) et possède des opérations sur les arcs et les sommets -ainsi qu'un ensemble d'itérateurs et d'observateurs. \textsc{Baire} ne -fournit aucun algorithme sur les graphes. - -\paragraph{\textsc{Gtl} \cite{Gtl}} Cette bibliothèque en C++ propose -une unique structure de graphes impératifs, orientés (un graphe -non-orienté est obtenu en <> la direction des arcs d'un -graphe orienté) et non-étiquetés. Tout comme \textsc{Bgl}, -l'étiquetage des sommets ou des arcs est réalisé à l'aide de -dictionnaires. Enfin, la bibliothèque fournit plusieurs algorithmes -pouvant être appliqués uniquement sur sa structure de données. - -\vspace*{-1em} - -\section{Conclusion} - -Nous avons présenté dans cet article \ocamlgraph, une bibliothèque de -graphes pour \ocaml, proposant de nombreuses structures de données de -graphes ainsi que des algorithmes implantés indépendamment de ces -structures. Cette généricité est réalisée grâce au système de modules -d'\ocaml, et tout particulièrement à ses foncteurs qui permettent une -large factorisation du code au niveau des implantations tant des -différentes structures de données que des algorithmes. - -À notre connaissance, aucune bibliothèque d'un langage applicatif -n'est aussi générique qu'\ocamlgraph. Celles des langages impératifs -ne le sont que rarement et, quoi qu'il en soit, ne fournissent jamais -une telle diversité de structures de données. - -Il reste à comparer les performances d'\ocamlgraph\ à celles des -bibliothèques existantes. Cependant l'attention portée à l'efficacité -des structures de données utilisées dans \ocamlgraph\ autorise un -certain optimisme, qui semble confirmé par les toutes premières -expériences. - -\vspace*{-1em} - -\nocite{*} -\bibliographystyle{plain} -\bibliography{./biblio} -% And do NOT FORGET to include your bibliography for submission -%\begin{thebibliography}{10} -%\bibitem{...} -%\end{thebibliography} -\vfill -\pagebreak -\thispagestyle{colloquetitle} -\cleardoublepage -\end{document} - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: t -%%% End: diff --git a/jscomp/build_tests/ocamlgraph/papers/jfla2005/slides/.cvsignore b/jscomp/build_tests/ocamlgraph/papers/jfla2005/slides/.cvsignore deleted file mode 100755 index 9f9b5efc68..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/jfla2005/slides/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -slides.ps diff --git a/jscomp/build_tests/ocamlgraph/papers/jfla2005/slides/slides.tex b/jscomp/build_tests/ocamlgraph/papers/jfla2005/slides/slides.tex deleted file mode 100755 index 1da19f426c..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/jfla2005/slides/slides.tex +++ /dev/null @@ -1,357 +0,0 @@ -\documentclass[a4]{seminar} - -\usepackage{./talkadvi} -\usepackage[T1]{fontenc} -\usepackage[latin1]{inputenc} -\usepackage[french]{babel} -\usepackage{pstricks} -\usepackage{pst-node} -%\usepackage{color} -\usepackage{alltt} -\usepackage{url} -\usepackage{amsmath} -\usepackage{amssymb} - -\newcommand{\rouge}[1]{\color{red}#1} -\newcommand{\monvert}[1]{\color{ForestGreen}#1} -\newcommand{\motcle}[1]{{\color{Blue}#1}} -\newcommand{\ocamlgraph}{\textsf{OcamlGraph}} -\newcommand{\fleche}{\ensuremath{\rightarrow}} - -\begin{document} -\sffamily -\parindent=0mm - -\begin{slide} -~\vfill -\begin{center} - \textcolor{red}{\rule{\linewidth}{0.1em}} \\[0.7em] - \textcolor{red}{\Large\bfseries - Le foncteur sonne toujours deux fois} \\ - \textcolor{red}{\rule{\linewidth}{0.1em}} \\[2em] - \textcolor{royalblue}{\large Sylvain Conchon, Jean-Christophe Filliâtre, Julien Signoles} - \\[3em] - \textcolor{orange}{{\large LRI -- CNRS 8623}} -\end{center} -\vfill\vfill -\end{slide} - -\begin{slide}\slidetitle{Ocamlgraph} - - \begin{center} - Une bibliothèque de graphes pour Ocaml - - ~\\[2em] - \pause - \emph{Pourquoi ?} - -\bigskip - - Contrairement à C++ ou Java, pas de telle bibliothèque - \end{center} - -\end{slide} - -\begin{slide}\slidetitle{Caractéristiques} - - \begin{points} - \item Nombreuses structures de données\medskip - - \begin{itemize} - \item Persistantes - \item Impératives - \item Étiquetées ou non - \item etc. - \end{itemize} - - \pause - \item Algorithmes « génériques » \medskip - - \begin{itemize} - \item Flots - \item Parcours - \item Génération aléatoire - \item etc. - \end{itemize} - \end{points} - - \pause - \begin{center} - \emph{Rendu possible par l'utilisation massive de foncteurs} - \end{center} -\end{slide} - -\talkpart{I}{Structures de données} - -\begin{slide}\slidetitle{Interfaces} - -Interface commune à tous les graphes : -\begin{alltt} -\motcle{module type} G = \motcle{sig} ... \motcle{end} -\end{alltt} - -\pause -Interface des graphes persistants : -\begin{alltt} -\motcle{module type} P = \motcle{sig} - \emph{include} G - ... -\motcle{end} -\end{alltt} - -\pause -Interface des graphes impératifs : -\begin{alltt} -\motcle{module type} I = \motcle{sig} - \emph{include} G - ... -\motcle{end} -\end{alltt} -\end{slide} - -\begin{slide}\slidetitle{Partage du code} - -Au total, \ocamlgraph\ implante \emph{18} structures de données -\pause - -A priori, \emph{8} variantes d'interface \texttt{G} : -\begin{center} - orienté ? $\times$ sommets abstraits ? $\times$ arêtes étiquetées ? -\end{center} -\pause - -\begin{points} -\item \emph{8} persistantes : table ({\monvert\texttt{Map}}) associant - à chaque sommet l'ensemble ({\monvert \texttt{Set}}) de ses - successeurs -\item \emph{8} impératives : même chose avec {\monvert - \texttt{Hashtbl}} au lieu de \texttt{Map} -\item \emph{2} impératives par matrices d'adjacence \linebreak - (sommets = entiers, pas d'étiquette) -\end{points} - -\pause -Mais partage du code maximal à l'aide de \emph{foncteurs} -\end{slide} - -\begin{slide}\slidetitle{Code commun aux graphes persistants et impératifs} -\begin{points} - -\item Uniformisation de {\monvert \texttt{Hashtbl}} et {\monvert - \texttt{Map}} dans une signature commune - -\begin{alltt} -\motcle{module type} HM = \motcle{sig} - \motcle{type} \emph{'a return} - \motcle{type} 'a t - \motcle{type} key - \motcle{val} add: key -> 'a -> 'a t -> \emph{'a return} - \motcle{val} mem: key -> 'a t -> bool - \motcle{val} find: key -> 'a t -> 'a - (* ... *) -\motcle{end} -\end{alltt} -\adviwait -\item \texttt{Minimal} : opérations communes à toutes les structures - de données - -\item \texttt{Pred} : opérations sur les - prédécesseurs en utilisant les successeurs - -\item \texttt{Labeled} / \texttt{Unlabeled} : opérations communes aux - arêtes (non) étiquetées - -\item \texttt{Make\_Abstract} : graphe abstrait à partir de sa version - concrète - -\end{points} -\end{slide} - -\begin{slide}\slidetitle{Assemblage des briques} -\begin{alltt} -\motcle{module} Make - (F: \motcle{functor}(X: COMPARABLE) \fleche\ HM \motcle{with type} key = X.t) = -\motcle{struct} - \motcle{module} Digraph = \motcle{struct} - - \motcle{module} Concrete(V: COMPARABLE) = \motcle{struct} - \emph{include} ConcreteVertex(F)(V) - \emph{include} Unlabeled(V)(HM) - \emph{include} Minimal(S)(HM) - \motcle{end} - - \motcle{module} ConcreteLabeled(V: COMPARABLE)(E: ORDERED_TYPE_DFT) = - ... -\end{alltt} -\end{slide} - -\talkpart{II}{Algorithmes} - -\begin{slide}\slidetitle{Programmation générique} - -\bigskip -\begin{center} -Chaque algorithme est écrit indépendamment de la structure de graphe. - -\bigskip - -C'est un \emph{foncteur}. - -\bigskip - -Son argument contient uniquement les opérations dont il a besoin. -\end{center} - -\bigskip -\pause -\emph{Intérêts :} - -\begin{points} -\item Codage facilité.\medskip - -\item Utilisation sur des structures autres que celles d'\ocamlgraph. -\end{points} -\end{slide} - -\begin{slide}\slidetitle{Algorithmes fournis} - -\begin{points} -\item -Parcours : 7 DFS, 2 BFS, 2 détections de cycle - -\item -Constructions : -\begin{itemize} -\item 4 classiques (ex. graphe de de Bruijn) -\item 2 aléatoires (ex. planaires) -\end{itemize} - -\item -Plus court chemin (Dijkstra) - -\item -Composantes fortement connexes - -\item -Flot maximal (Goldberg, Ford-Fulkerson) - -\item -Tri topologique - -\item -Arbre couvrant minimal (Kruskal) - -\item -Opérations : clôture transitive, complémentaire, miroir, voisinages, etc. - -\item -Ensemble des séparateurs minimaux - -\item -Graphes sans cordes, cliques - -\item -Sortie DOT (Graphviz) -\end{points} -\end{slide} - - -\begin{slide}\slidetitle{Exemples} - -\bigskip -\begin{points} -\item Algorithmes de flots : {\monvert Ford-Fulkerson \& Goldberg} - -\bigskip - -Deux foncteurs à deux paramètres: - -\medskip - -\begin{itemize} -\item \texttt{G}: les fonctions de manipulation du graphe\medskip - -\item \texttt{F}: les fonctions de représentation du flot -\end{itemize} - -\bigskip -\bigskip - -\item Algorithmes de {\monvert parcours en profondeur et en largeur} -\end{points} -\end{slide} - - - -\talkpart{III}{Conclusion} - -\newcommand{\present}{\monvert\large\boldmath $\surd$} -\newcommand{\absent}{\rouge\large\boldmath $\oslash$} - -\begin{slide}\slidetitle{Comparaisons} - -\bigskip -\begin{center} - \begin{tabular}{|l||c|c|c|c|c|} - \hline - & langage &P/I& algo gén & signature\emph{s} & str données \\\hline\hline - LEDA & C++ & I & \absent & \absent & 1 \\\hline - GTL & C++ & I & \absent & \absent & 1 \\\hline - MLRisc & SML & I & \absent & \absent & 1 \\\hline - FGL & Haskell & P & \absent & \absent & 1 \\\hline - Baire & Ocaml &P/I& --- & \absent & 8 \\\hline - JDSL & Java & I & \present & \present & 1 \\\hline - BGL & C++ & I & \present & \present & 1 \\\hline - OcamlGraph& Ocaml &P/I& \present & \present & 18 \\\hline - \end{tabular} -\end{center} -\end{slide} - -\begin{slide}\slidetitle{Chiffres} - -\begin{points} -\item 6000 lignes (dont 1000 lignes de contribution)\bigskip - -\item 9 personnes-semaines de travail\bigskip - -\item Performances : peu de comparaisons à ce jour - -\medskip -{\monvert Exemples} (sur Pentium 4 2.8 GHz) : -\medskip -\begin{itemize} -\item DFS sur 200\,000 sommets et 500\,000 arêtes : 0.63 s\medskip - -\item Dijkstra 70\,000 s. et 210\,000 ar. : chemin de 400 - sommets en 1.38 s -\end{itemize} - -\end{points} -\end{slide} - -\begin{slide}\slidetitle{Remarques concernant les foncteurs} - -\bigskip - \begin{points} - - \item Quelques limitations du système de modules nous ont gênés \linebreak -(bug report \#2049). - -\bigskip -Principalement, ne pas pouvoir réunir deux structures ayant un type ou -un module en commun. - -\bigskip -\item -Trop de foncteurs dans l'interface = frein à l'utilisation d'\ocamlgraph\ ? - - \end{points} - -\end{slide} - -\end{document} - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: t -%%% End: diff --git a/jscomp/build_tests/ocamlgraph/papers/jfla2005/slides/talkadvi.sty b/jscomp/build_tests/ocamlgraph/papers/jfla2005/slides/talkadvi.sty deleted file mode 100755 index efa322f8bb..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/jfla2005/slides/talkadvi.sty +++ /dev/null @@ -1,96 +0,0 @@ -%%% -%%% talk.sty -%%% ======== -%%% Macros to use with the class seminar for presentations. -%%% Usage: -%%% -%%% \documentclass[a4]{seminar} -%%% \usepackage{talk} -%%% \begin{document} -%%% \sf -%%% \begin{slide}...\end{slide} -%%% -%%% Macros provided are: -%%% -%%% \talktitle{The Title}{The author}{Place, date, etc.} -%%% -%%% \talkpart{Title of the part}{subtitle} -%%% -%%% \slidehead{This slide is about...} - -\usepackage[latin1]{inputenc} -\usepackage[T1]{fontenc} -\usepackage[usenames]{color} -\usepackage{graphicx} -\usepackage{advi} -\usepackage{advi-annot} -\usepackage{alltt} - -\def\_{\kern.08em\vbox{\hrule width.35em height.6pt}\kern.08em} - -% taille page -\slidewidth 235mm -\slideheight 174mm -\centerslidesfalse -\renewcommand{\sliderightmargin}{0mm} -\renewcommand{\slideleftmargin}{20mm} -\renewcommand{\slidetopmargin}{30mm} -\renewcommand{\slidebottommargin}{10mm} -\slideframe{none} - -% des couleurs -\definecolor{red}{rgb}{1.0,0.0,0.0} -\definecolor{darkred}{rgb}{0.8,0.2,0.2} -\definecolor{green}{rgb}{0.13,0.55,0.13} % forestgreen, en fait -\definecolor{blue}{rgb}{0.0,0.0,1.0} -\definecolor{royalblue}{rgb}{0.25,0.41,0.88} -\definecolor{orange}{rgb}{1.00,0.27,0.00} - -\newcommand{\red}[1]{\textcolor{red}{#1}} -\newcommand{\blue}[1]{\textcolor{blue}{#1}} -\newcommand{\green}[1]{\textcolor{green}{#1}} -\newcommand{\remph}[1]{\textcolor{red}{#1}} -\let\bemph\blue - -\newcommand{\unixtilde}{\raisebox{-0.22em}{\~{}}} - -% page style -% \newpagestyle{jcf}{}{\hfil\rouge{\thepage}\qquad\qquad} -\slidepagestyle{empty} -\slideframe{none} -% \def\advifooter{\vbox to 0em{\vbox to \vsize {\vfill\hfill{\thepage}}\vss}} -% \let \Newpage \newpage -% \def \newpage {\Newpage \advifooter} - -% macros -\newcommand{\talktitle}[3]{\begin{slide}\pagestyle{empty}~\vfill -{\begin{center}% - \textcolor{orange}{\rule{\linewidth}{0.1em}} \\[0.7em] - \textcolor{orange}{{\LARGE\vbox{#1}}} \\ - \textcolor{orange}{\rule{\linewidth}{0.1em}} \\[2em] - \textcolor{royalblue}{#2} \\[3em] - \textcolor{orange}{#3} - \end{center}} -\vfill\vfill\end{slide}} - -\newcommand{\slidetitle}[1]{% -\textcolor{royalblue}{{\hfill\bfseries#1\hfill}}\par% -\vspace{-1.3em}\textcolor{royalblue}{{\rule{\linewidth}{0.1em}}}} - -\newcommand{\talkpart}[2]{\begin{slide}\pagestyle{empty}~\vfill - \begin{center} - {\sf\textcolor{royalblue}{\bfseries#1}}\\ - {\textcolor{royalblue}{\hrulefill}}\\[1em] - {\sf\Large\textcolor{royalblue}{\bfseries#2}}\end{center}\vfill\vfill\end{slide}} - -\let\emph\remph - -\newenvironment{points}% -{\begin{list}{\emph{$\bullet$}}{\setlength{\itemsep}{0.3em}}}% -{\end{list}} - -\usepackage{url} -\newcommand{\redurl}[1]{\textcolor{red}{\url{#1}}} - -\newcommand{\pause}{\vspace*{1em}\adviwait} - diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/.gitignore b/jscomp/build_tests/ocamlgraph/papers/slides/.gitignore deleted file mode 100755 index 45c76ed87c..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/.gitignore +++ /dev/null @@ -1,19 +0,0 @@ -lsl/slides.aux -lsl/slides.dvi -lsl/slides.log -oups-july-2014.aux -oups-july-2014.log -oups-july-2014.nav -oups-july-2014.out -oups-july-2014.pdf -oups-july-2014.snm -oups-july-2014.toc -oups-july-2014.vrb -tfp07/slides.aux -tfp07/slides.log -tfp07/slides.nav -tfp07/slides.out -tfp07/slides.pdf -tfp07/slides.snm -tfp07/slides.toc -tfp07/slides.vrb diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/lsl/bench1c.tex b/jscomp/build_tests/ocamlgraph/papers/slides/lsl/bench1c.tex deleted file mode 100755 index 6bb89cba3a..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/lsl/bench1c.tex +++ /dev/null @@ -1,156 +0,0 @@ -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(120.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,123){\makebox(0,0)[r]{ 0}} -\put(969.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,170.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,170){\makebox(0,0)[r]{ 2}} -\put(969.0,170.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,216.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,216){\makebox(0,0)[r]{ 4}} -\put(969.0,216.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,263.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,263){\makebox(0,0)[r]{ 6}} -\put(969.0,263.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,310.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,310){\makebox(0,0)[r]{ 8}} -\put(969.0,310.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,357.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,357){\makebox(0,0)[r]{ 10}} -\put(969.0,357.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,403.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,403){\makebox(0,0)[r]{ 12}} -\put(969.0,403.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,450.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,450){\makebox(0,0)[r]{ 14}} -\put(969.0,450.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,497.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,497){\makebox(0,0)[r]{ 16}} -\put(969.0,497.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,543.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,543){\makebox(0,0)[r]{ 18}} -\put(969.0,543.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,590){\makebox(0,0)[r]{ 20}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(120,82){\makebox(0,0){ 100}} -\put(120.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(217.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(217,82){\makebox(0,0){ 200}} -\put(217.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(313.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(313,82){\makebox(0,0){ 300}} -\put(313.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(410.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(410,82){\makebox(0,0){ 400}} -\put(410.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(506.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(506,82){\makebox(0,0){ 500}} -\put(506.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(603.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(603,82){\makebox(0,0){ 600}} -\put(603.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(699.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(699,82){\makebox(0,0){ 700}} -\put(699.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(796.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(796,82){\makebox(0,0){ 800}} -\put(796.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(892.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(892,82){\makebox(0,0){ 900}} -\put(892.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,82){\makebox(0,0){ 1000}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(120.0,123.0){\rule[-0.200pt]{209.342pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(120.0,590.0){\rule[-0.200pt]{209.342pt}{0.400pt}} -\put(120.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(554,21){\makebox(0,0){number of nodes $V$}} -\put(180,550){\makebox(0,0)[r]{IA}} -\put(200.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(120,124){\usebox{\plotpoint}} -\multiput(120.00,124.60)(14.080,0.468){5}{\rule{9.800pt}{0.113pt}} -\multiput(120.00,123.17)(76.660,4.000){2}{\rule{4.900pt}{0.400pt}} -\multiput(217.00,128.58)(4.505,0.492){19}{\rule{3.591pt}{0.118pt}} -\multiput(217.00,127.17)(88.547,11.000){2}{\rule{1.795pt}{0.400pt}} -\multiput(313.00,139.58)(2.739,0.495){33}{\rule{2.256pt}{0.119pt}} -\multiput(313.00,138.17)(92.318,18.000){2}{\rule{1.128pt}{0.400pt}} -\multiput(410.00,157.58)(1.939,0.497){47}{\rule{1.636pt}{0.120pt}} -\multiput(410.00,156.17)(92.604,25.000){2}{\rule{0.818pt}{0.400pt}} -\multiput(506.00,182.58)(1.479,0.497){63}{\rule{1.276pt}{0.120pt}} -\multiput(506.00,181.17)(94.352,33.000){2}{\rule{0.638pt}{0.400pt}} -\multiput(603.00,215.58)(2.111,0.496){43}{\rule{1.770pt}{0.120pt}} -\multiput(603.00,214.17)(92.327,23.000){2}{\rule{0.885pt}{0.400pt}} -\multiput(699.00,238.58)(1.188,0.498){79}{\rule{1.046pt}{0.120pt}} -\multiput(699.00,237.17)(94.828,41.000){2}{\rule{0.523pt}{0.400pt}} -\multiput(796.00,279.58)(0.801,0.499){117}{\rule{0.740pt}{0.120pt}} -\multiput(796.00,278.17)(94.464,60.000){2}{\rule{0.370pt}{0.400pt}} -\multiput(892.00,339.58)(1.249,0.498){75}{\rule{1.095pt}{0.120pt}} -\multiput(892.00,338.17)(94.728,39.000){2}{\rule{0.547pt}{0.400pt}} -\put(180,509){\makebox(0,0)[r]{IC}} -\multiput(200,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(300,509){\usebox{\plotpoint}} -\put(120,124){\usebox{\plotpoint}} -\multiput(120,124)(20.685,1.706){5}{\usebox{\plotpoint}} -\multiput(217,132)(20.665,1.937){5}{\usebox{\plotpoint}} -\multiput(313,141)(20.368,3.990){5}{\usebox{\plotpoint}} -\multiput(410,160)(20.086,5.231){4}{\usebox{\plotpoint}} -\multiput(506,185)(20.572,2.757){5}{\usebox{\plotpoint}} -\multiput(603,198)(18.564,9.282){5}{\usebox{\plotpoint}} -\multiput(699,246)(18.293,9.806){6}{\usebox{\plotpoint}} -\multiput(796,298)(19.299,7.639){5}{\usebox{\plotpoint}} -\multiput(892,336)(18.135,10.096){5}{\usebox{\plotpoint}} -\put(989,390){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(180,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(200.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(120,124){\usebox{\plotpoint}} -\multiput(120.00,125.40)(5.330,0.514){13}{\rule{7.960pt}{0.124pt}} -\multiput(120.00,122.34)(80.479,10.000){2}{\rule{3.980pt}{0.800pt}} -\multiput(217.00,135.40)(5.975,0.516){11}{\rule{8.733pt}{0.124pt}} -\multiput(217.00,132.34)(77.874,9.000){2}{\rule{4.367pt}{0.800pt}} -\multiput(313.00,144.41)(2.377,0.505){35}{\rule{3.895pt}{0.122pt}} -\multiput(313.00,141.34)(88.915,21.000){2}{\rule{1.948pt}{0.800pt}} -\multiput(410.00,165.41)(1.311,0.503){67}{\rule{2.276pt}{0.121pt}} -\multiput(410.00,162.34)(91.277,37.000){2}{\rule{1.138pt}{0.800pt}} -\multiput(506.00,202.41)(0.996,0.502){91}{\rule{1.784pt}{0.121pt}} -\multiput(506.00,199.34)(93.298,49.000){2}{\rule{0.892pt}{0.800pt}} -\multiput(603.00,251.41)(1.311,0.503){67}{\rule{2.276pt}{0.121pt}} -\multiput(603.00,248.34)(91.277,37.000){2}{\rule{1.138pt}{0.800pt}} -\multiput(699.00,288.41)(0.854,0.502){107}{\rule{1.561pt}{0.121pt}} -\multiput(699.00,285.34)(93.759,57.000){2}{\rule{0.781pt}{0.800pt}} -\multiput(796.00,345.41)(0.640,0.501){143}{\rule{1.224pt}{0.121pt}} -\multiput(796.00,342.34)(93.460,75.000){2}{\rule{0.612pt}{0.800pt}} -\multiput(892.00,420.41)(0.614,0.501){151}{\rule{1.182pt}{0.121pt}} -\multiput(892.00,417.34)(94.546,79.000){2}{\rule{0.591pt}{0.800pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(180,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(200,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(300,427){\usebox{\plotpoint}} -\put(120,125){\usebox{\plotpoint}} -\multiput(120,125)(20.598,2.548){5}{\usebox{\plotpoint}} -\multiput(217,137)(20.595,2.574){5}{\usebox{\plotpoint}} -\multiput(313,149)(19.941,5.756){5}{\usebox{\plotpoint}} -\multiput(410,177)(18.718,8.969){5}{\usebox{\plotpoint}} -\multiput(506,223)(17.652,10.918){5}{\usebox{\plotpoint}} -\multiput(603,283)(18.793,8.809){5}{\usebox{\plotpoint}} -\multiput(699,328)(15.215,14.117){7}{\usebox{\plotpoint}} -\multiput(796,418)(16.771,12.229){6}{\usebox{\plotpoint}} -\multiput(892,488)(14.377,14.970){6}{\usebox{\plotpoint}} -\put(989,589){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(120.0,123.0){\rule[-0.200pt]{209.342pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(120.0,590.0){\rule[-0.200pt]{209.342pt}{0.400pt}} -\put(120.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\end{picture} diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/lsl/bench2dfs.tex b/jscomp/build_tests/ocamlgraph/papers/slides/lsl/bench2dfs.tex deleted file mode 100755 index d664bb38ce..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/lsl/bench2dfs.tex +++ /dev/null @@ -1,134 +0,0 @@ -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,123){\makebox(0,0)[r]{ 0}} -\put(969.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,201.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,201){\makebox(0,0)[r]{ 0.5}} -\put(969.0,201.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,279.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,279){\makebox(0,0)[r]{ 1}} -\put(969.0,279.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,356.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,356){\makebox(0,0)[r]{ 1.5}} -\put(969.0,356.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,434.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,434){\makebox(0,0)[r]{ 2}} -\put(969.0,434.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,512.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,512){\makebox(0,0)[r]{ 2.5}} -\put(969.0,512.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,590){\makebox(0,0)[r]{ 3}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140,82){\makebox(0,0){ 0}} -\put(140.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282,82){\makebox(0,0){ 100}} -\put(282.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423,82){\makebox(0,0){ 200}} -\put(423.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565,82){\makebox(0,0){ 300}} -\put(565.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706,82){\makebox(0,0){ 400}} -\put(706.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848,82){\makebox(0,0){ 500}} -\put(848.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,82){\makebox(0,0){ 600}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(564,21){\makebox(0,0){maze width $N$}} -\put(200,550){\makebox(0,0)[r]{IA}} -\put(220.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(225,125){\usebox{\plotpoint}} -\multiput(225.00,125.61)(18.770,0.447){3}{\rule{11.433pt}{0.108pt}} -\multiput(225.00,124.17)(61.270,3.000){2}{\rule{5.717pt}{0.400pt}} -\multiput(310.00,128.60)(12.325,0.468){5}{\rule{8.600pt}{0.113pt}} -\multiput(310.00,127.17)(67.150,4.000){2}{\rule{4.300pt}{0.400pt}} -\multiput(395.00,132.59)(5.579,0.488){13}{\rule{4.350pt}{0.117pt}} -\multiput(395.00,131.17)(75.971,8.000){2}{\rule{2.175pt}{0.400pt}} -\multiput(480.00,140.59)(4.922,0.489){15}{\rule{3.878pt}{0.118pt}} -\multiput(480.00,139.17)(76.951,9.000){2}{\rule{1.939pt}{0.400pt}} -\multiput(565.00,149.58)(3.312,0.493){23}{\rule{2.685pt}{0.119pt}} -\multiput(565.00,148.17)(78.428,13.000){2}{\rule{1.342pt}{0.400pt}} -\multiput(649.00,162.58)(0.947,0.498){87}{\rule{0.856pt}{0.120pt}} -\multiput(649.00,161.17)(83.224,45.000){2}{\rule{0.428pt}{0.400pt}} -\multiput(734.00,207.59)(7.633,0.482){9}{\rule{5.767pt}{0.116pt}} -\multiput(734.00,206.17)(73.031,6.000){2}{\rule{2.883pt}{0.400pt}} -\multiput(819.00,213.58)(0.852,0.498){97}{\rule{0.780pt}{0.120pt}} -\multiput(819.00,212.17)(83.381,50.000){2}{\rule{0.390pt}{0.400pt}} -\multiput(904.00,263.58)(0.582,0.499){143}{\rule{0.566pt}{0.120pt}} -\multiput(904.00,262.17)(83.826,73.000){2}{\rule{0.283pt}{0.400pt}} -\put(200,509){\makebox(0,0)[r]{IC}} -\multiput(220,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,509){\usebox{\plotpoint}} -\put(225,134){\usebox{\plotpoint}} -\multiput(225,134)(20.754,0.244){5}{\usebox{\plotpoint}} -\multiput(310,135)(20.720,1.219){4}{\usebox{\plotpoint}} -\multiput(395,140)(20.352,4.070){4}{\usebox{\plotpoint}} -\multiput(480,157)(19.782,6.284){4}{\usebox{\plotpoint}} -\multiput(565,184)(19.472,7.186){4}{\usebox{\plotpoint}} -\multiput(649,215)(16.207,12.966){6}{\usebox{\plotpoint}} -\multiput(734,283)(18.343,9.711){4}{\usebox{\plotpoint}} -\multiput(819,328)(15.026,14.319){6}{\usebox{\plotpoint}} -\multiput(904,409)(18.608,9.194){5}{\usebox{\plotpoint}} -\put(989,451){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(220.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(225,128){\usebox{\plotpoint}} -\put(225,126.84){\rule{20.476pt}{0.800pt}} -\multiput(225.00,126.34)(42.500,1.000){2}{\rule{10.238pt}{0.800pt}} -\multiput(310.00,130.40)(6.111,0.520){9}{\rule{8.700pt}{0.125pt}} -\multiput(310.00,127.34)(66.943,8.000){2}{\rule{4.350pt}{0.800pt}} -\multiput(395.00,138.40)(4.179,0.512){15}{\rule{6.382pt}{0.123pt}} -\multiput(395.00,135.34)(71.754,11.000){2}{\rule{3.191pt}{0.800pt}} -\multiput(480.00,149.41)(3.790,0.511){17}{\rule{5.867pt}{0.123pt}} -\multiput(480.00,146.34)(72.823,12.000){2}{\rule{2.933pt}{0.800pt}} -\multiput(565.00,161.41)(1.288,0.503){59}{\rule{2.236pt}{0.121pt}} -\multiput(565.00,158.34)(79.358,33.000){2}{\rule{1.118pt}{0.800pt}} -\multiput(649.00,194.41)(0.972,0.502){81}{\rule{1.745pt}{0.121pt}} -\multiput(649.00,191.34)(81.377,44.000){2}{\rule{0.873pt}{0.800pt}} -\multiput(734.00,238.41)(2.446,0.506){29}{\rule{3.978pt}{0.122pt}} -\multiput(734.00,235.34)(76.744,18.000){2}{\rule{1.989pt}{0.800pt}} -\multiput(819.00,256.41)(0.761,0.502){105}{\rule{1.414pt}{0.121pt}} -\multiput(819.00,253.34)(82.065,56.000){2}{\rule{0.707pt}{0.800pt}} -\multiput(904.00,312.41)(0.761,0.502){105}{\rule{1.414pt}{0.121pt}} -\multiput(904.00,309.34)(82.065,56.000){2}{\rule{0.707pt}{0.800pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(220,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,427){\usebox{\plotpoint}} -\put(225,128){\usebox{\plotpoint}} -\multiput(225,128)(20.685,1.704){5}{\usebox{\plotpoint}} -\multiput(310,135)(20.480,3.373){4}{\usebox{\plotpoint}} -\multiput(395,149)(19.912,5.857){4}{\usebox{\plotpoint}} -\multiput(480,174)(19.192,7.903){4}{\usebox{\plotpoint}} -\multiput(565,209)(18.739,8.923){5}{\usebox{\plotpoint}} -\multiput(649,249)(15.293,14.033){5}{\usebox{\plotpoint}} -\multiput(734,327)(18.865,8.656){5}{\usebox{\plotpoint}} -\multiput(819,366)(10.605,17.842){8}{\usebox{\plotpoint}} -\multiput(904,509)(18.432,9.541){5}{\usebox{\plotpoint}} -\put(989,553){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\end{picture} diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/lsl/interface.eps b/jscomp/build_tests/ocamlgraph/papers/slides/lsl/interface.eps deleted file mode 100755 index 012b7fbe43..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/lsl/interface.eps +++ /dev/null @@ -1,565 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: interface.fig -%%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 -%%CreationDate: Fri May 12 16:12:19 2006 -%%For: conchon@pc8-144 (Sylvain Conchon) -%%BoundingBox: 0 0 967 429 -%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 429 moveto 0 0 lineto 967 0 lineto 967 429 lineto closepath clip newpath -130.0 440.1 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 50 -% Polyline -0 slj -0 slc -7.500 slw -n 225 4050 m 1350 4050 l 1350 4500 l 225 4500 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -810 4320 m -gs 1 -1 sc (Abstract) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 7560 4050 m 8685 4050 l 8685 4500 l 7560 4500 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -8100 4320 m -gs 1 -1 sc (Concrete) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 9315 4050 m 11790 4050 l 11790 4500 l 9315 4500 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -10575 4320 m -gs 1 -1 sc (ConcreteBidirectional) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 12600 3060 675 270 0 360 DrawEllipse gs col0 s gr - -/Times-Roman ff 190.50 scf sf -12600 3105 m -gs 1 -1 sc (G) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 8190 5625 405 225 0 360 DrawEllipse gs col0 s gr - -/Times-Roman ff 222.25 scf sf -8190 5670 m -gs 1 -1 sc (I) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 225 1575 m 1350 1575 l 1350 2025 l 225 2025 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -810 1845 m -gs 1 -1 sc (Abstract) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 7560 1575 m 8685 1575 l 8685 2025 l 7560 2025 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -7785 1845 m -gs 1 -1 sc (Concrete) col0 sh gr -% Ellipse -n 4500 495 450 180 0 360 DrawEllipse gs col0 s gr - -/Times-Roman ff 222.25 scf sf -4500 540 m -gs 1 -1 sc (P) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 9270 6525 m 11295 6525 l 11295 6975 l 9270 6975 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -10305 6795 m -gs 1 -1 sc (Matrix.Digraph) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 5625 6525 m 7200 6525 l 7200 6975 l 5625 6975 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -6435 6795 m -gs 1 -1 sc (Matrix.Graph) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -15.000 slw - [15 68] 68 sd -gs clippath -12362 1228 m 12682 1227 l 12681 1107 l 12361 1108 l 12361 1108 l 12602 1168 l 12362 1228 l cp -eoclip -n 10935 1170 m - 12667 1168 l gs col0 s gr gr - [] 0 sd -% arrowhead -n 12362 1228 m 12602 1168 l 12361 1108 l 12362 1228 l cp gs 0.00 setgray ef gr col0 s -/Times-Roman ff 190.50 scf sf -10935 1035 m -gs 1 -1 sc (signature subtyping) col0 sh gr -% Polyline -7.500 slw -n 1800 1575 m 3600 1575 l 3600 2025 l 1800 2025 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -2700 1845 m -gs 1 -1 sc (AbstractLabelled) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 5175 1575 m 6975 1575 l 6975 2025 l 5175 2025 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -6120 1845 m -gs 1 -1 sc (ConcreteLabelled) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 1755 4050 m 3555 4050 l 3555 4500 l 1755 4500 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -2700 4320 m -gs 1 -1 sc (AbstractLabelled) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 5175 4050 m 6975 4050 l 6975 4500 l 5175 4500 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -6075 4320 m -gs 1 -1 sc (ConcreteLabelled) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 1575 5625 405 225 0 360 DrawEllipse gs col0 s gr - -/Times-Roman ff 222.25 scf sf -1575 5670 m -gs 1 -1 sc (IM) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4410 3015 1260 360 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 1710 3015 1035 360 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 8100 3015 1035 360 0 360 DrawEllipse gs col0 s gr - -% Polyline -15.000 slw -gs clippath -923 3770 m 671 3966 l 744 4061 l 997 3865 l 997 3865 l 771 3965 l 923 3770 l cp -eoclip -n 1530 3375 m - 720 4005 l gs col0 s gr gr - -% arrowhead -n 923 3770 m 771 3965 l 997 3865 l 923 3770 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -1126 5184 m 1309 5446 l 1407 5377 l 1224 5115 l 1224 5115 l 1313 5347 l 1126 5184 l cp -eoclip -n 720 4500 m - 1350 5400 l gs col0 s gr gr - -% arrowhead -n 1126 5184 m 1313 5347 l 1224 5115 l 1126 5184 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2422 3865 m 2675 4061 l 2748 3966 l 2496 3770 l 2496 3770 l 2649 3965 l 2422 3865 l cp -eoclip -n 1890 3375 m - 2700 4005 l gs col0 s gr gr - -% arrowhead -n 2422 3865 m 2649 3965 l 2496 3770 l 2422 3865 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -1973 5096 m 1746 5323 l 1831 5408 l 2058 5181 l 2058 5181 l 1846 5309 l 1973 5096 l cp -eoclip -n 2610 4545 m - 1800 5355 l gs col0 s gr gr - -% arrowhead -n 1973 5096 m 1846 5309 l 2058 5181 l 1973 5096 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3088 3824 m 2796 3956 l 2846 4065 l 3137 3933 l 3137 3933 l 2894 3978 l 3088 3824 l cp -eoclip -n 4230 3375 m - 2835 4005 l gs col0 s gr gr - -% arrowhead -n 3088 3824 m 2894 3978 l 3137 3933 l 3088 3824 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -5772 3933 m 6063 4065 l 6113 3956 l 5821 3824 l 5821 3824 l 6016 3978 l 5772 3933 l cp -eoclip -n 4680 3375 m - 6075 4005 l gs col0 s gr gr - -% arrowhead -n 5772 3933 m 6016 3978 l 5821 3824 l 5772 3933 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6604 3833 m 6308 3955 l 6353 4066 l 6649 3944 l 6649 3944 l 6405 3980 l 6604 3833 l cp -eoclip -n 7875 3375 m - 6345 4005 l gs col0 s gr gr - -% arrowhead -n 6604 3833 m 6405 3980 l 6649 3944 l 6604 3833 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8040 3700 m 8040 4020 l 8160 4020 l 8160 3700 l 8160 3700 l 8100 3940 l 8040 3700 l cp -eoclip -n 8100 3375 m - 8100 4005 l gs col0 s gr gr - -% arrowhead -n 8040 3700 m 8100 3940 l 8160 3700 l 8040 3700 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -10220 3978 m 10527 4066 l 10560 3951 l 10253 3863 l 10253 3863 l 10468 3987 l 10220 3978 l cp -eoclip -n 8325 3375 m - 10530 4005 l gs col0 s gr gr - -% arrowhead -n 10220 3978 m 10468 3987 l 10253 3863 l 10220 3978 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -7491 5389 m 7767 5549 l 7828 5445 l 7551 5285 l 7551 5285 l 7729 5458 l 7491 5389 l cp -eoclip -n 6075 4500 m - 7785 5490 l gs col0 s gr gr - -% arrowhead -n 7491 5389 m 7729 5458 l 7551 5285 l 7491 5389 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8040 5050 m 8040 5370 l 8160 5370 l 8160 5050 l 8160 5050 l 8100 5290 l 8040 5050 l cp -eoclip -n 8100 4500 m - 8100 5355 l gs col0 s gr gr - -% arrowhead -n 8040 5050 m 8100 5290 l 8160 5050 l 8040 5050 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8843 5259 m 8555 5397 l 8607 5505 l 8895 5367 l 8895 5367 l 8653 5417 l 8843 5259 l cp -eoclip -n 10575 4500 m - 8595 5445 l gs col0 s gr gr - -% arrowhead -n 8843 5259 m 8653 5417 l 8895 5367 l 8843 5259 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -1038 2172 m 791 1969 l 715 2061 l 962 2264 l 962 2264 l 815 2066 l 1038 2172 l cp -eoclip -n 1530 2655 m - 765 2025 l gs col0 s gr gr - -% arrowhead -n 1038 2172 m 815 2066 l 962 2264 l 1038 2172 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2442 2297 m 2702 2109 l 2632 2012 l 2372 2199 l 2372 2199 l 2602 2108 l 2442 2297 l cp -eoclip -n 1845 2655 m - 2655 2070 l gs col0 s gr gr - -% arrowhead -n 2442 2297 m 2602 2108 l 2372 2199 l 2442 2297 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3227 2139 m 2935 2009 l 2886 2118 l 3178 2248 l 3178 2248 l 2984 2096 l 3227 2139 l cp -eoclip -n 4230 2655 m - 2925 2070 l gs col0 s gr gr - -% arrowhead -n 3227 2139 m 2984 2096 l 3178 2248 l 3227 2139 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -5776 2248 m 6068 2118 l 6019 2009 l 5727 2139 l 5727 2139 l 5971 2096 l 5776 2248 l cp -eoclip -n 4725 2655 m - 6030 2070 l gs col0 s gr gr - -% arrowhead -n 5776 2248 m 5971 2096 l 5727 2139 l 5776 2248 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6650 2122 m 6352 2008 l 6309 2120 l 6607 2234 l 6607 2234 l 6405 2093 l 6650 2122 l cp -eoclip -n 7875 2655 m - 6345 2070 l gs col0 s gr gr - -% arrowhead -n 6650 2122 m 6405 2093 l 6607 2234 l 6650 2122 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8160 2330 m 8160 2010 l 8040 2010 l 8040 2330 l 8040 2330 l 8100 2090 l 8160 2330 l cp -eoclip -n 8100 2655 m - 8100 2025 l gs col0 s gr gr - -% arrowhead -n 8160 2330 m 8100 2090 l 8040 2330 l 8160 2330 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3994 808 m 4304 729 l 4274 613 l 3964 692 l 3964 692 l 4212 691 l 3994 808 l cp -eoclip -n 765 1575 m - 4275 675 l gs col0 s gr gr - -% arrowhead -n 3994 808 m 4212 691 l 3964 692 l 3994 808 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -4164 909 m 4450 766 l 4396 659 l 4110 802 l 4110 802 l 4352 749 l 4164 909 l cp -eoclip -n 2700 1575 m - 4410 720 l gs col0 s gr gr - -% arrowhead -n 4164 909 m 4352 749 l 4110 802 l 4164 909 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -5214 700 m 4906 613 l 4874 728 l 5181 815 l 5181 815 l 4967 693 l 5214 700 l cp -eoclip -n 8100 1575 m - 4905 675 l gs col0 s gr gr - -% arrowhead -n 5214 700 m 4967 693 l 5181 815 l 5214 700 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -7704 6063 m 8001 5945 l 7956 5833 l 7659 5952 l 7659 5952 l 7905 5919 l 7704 6063 l cp -eoclip -n 6390 6525 m - 7965 5895 l gs col0 s gr gr - -% arrowhead -n 7704 6063 m 7905 5919 l 7659 5952 l 7704 6063 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8768 5977 m 8464 5878 l 8427 5992 l 8731 6091 l 8731 6091 l 8522 5960 l 8768 5977 l cp -eoclip -n 10260 6525 m - 8460 5940 l gs col0 s gr gr - -% arrowhead -n 8768 5977 m 8522 5960 l 8731 6091 l 8768 5977 l cp gs 0.00 setgray ef gr col0 s -% Polyline -30.000 slw -n 0 225 m - 0 2925 l gs col0 s gr -% Polyline -n 0 225 m - 225 225 l gs col0 s gr -% Polyline -n 0 2925 m - 225 2925 l gs col0 s gr -% Polyline -n 225 3150 m 0 3150 l 0 6075 l - 225 6075 l gs col0 s gr -% Polyline -15.000 slw -gs clippath -4842 854 m 4559 704 l 4503 811 l 4786 960 l 4786 960 l 4602 795 l 4842 854 l cp -eoclip -n 6075 1575 m - 4545 765 l gs col0 s gr gr - -% arrowhead -n 4842 854 m 4602 795 l 4786 960 l 4842 854 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -12362 778 m 12682 777 l 12681 657 l 12361 658 l 12361 658 l 12602 718 l 12362 778 l cp -eoclip -n 10935 720 m - 12667 718 l gs col0 s gr gr - -% arrowhead -n 12362 778 m 12602 718 l 12361 658 l 12362 778 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [15 68] 68 sd -gs clippath -12266 2585 m 12535 2758 l 12600 2657 l 12331 2484 l 12331 2484 l 12501 2665 l 12266 2585 l cp -eoclip -n 4950 495 m 4951 495 l 4954 495 l 4959 495 l 4966 495 l 4978 495 l - 4993 496 l 5014 496 l 5039 497 l 5069 497 l 5105 498 l - 5147 499 l 5194 500 l 5248 501 l 5307 503 l 5372 504 l - 5442 506 l 5518 508 l 5598 510 l 5682 513 l 5771 515 l - 5863 518 l 5958 521 l 6056 524 l 6155 528 l 6256 532 l - 6359 536 l 6461 540 l 6564 544 l 6667 549 l 6770 553 l - 6871 558 l 6971 564 l 7070 569 l 7168 574 l 7263 580 l - 7357 586 l 7449 593 l 7539 599 l 7626 606 l 7712 613 l - 7795 620 l 7876 627 l 7955 635 l 8032 643 l 8107 651 l - 8180 660 l 8252 668 l 8321 678 l 8389 687 l 8455 697 l - 8520 707 l 8583 718 l 8645 728 l 8706 740 l 8766 752 l - 8825 764 l 8883 776 l 8940 790 l 8997 803 l 9052 817 l - 9108 832 l 9163 847 l 9218 863 l 9275 880 l 9333 897 l - 9390 916 l 9448 935 l 9505 954 l 9562 975 l 9619 996 l - 9676 1018 l 9734 1041 l 9792 1066 l 9850 1091 l 9910 1117 l - 9969 1144 l 10030 1172 l 10091 1202 l 10154 1233 l 10218 1265 l - 10282 1298 l 10348 1333 l 10416 1369 l 10484 1406 l 10554 1445 l - 10626 1485 l 10699 1527 l 10773 1570 l 10848 1614 l 10925 1659 l - 11003 1706 l 11082 1754 l 11162 1802 l 11242 1852 l 11323 1902 l - 11404 1952 l 11484 2003 l 11565 2054 l 11644 2104 l 11722 2154 l - 11799 2203 l 11873 2251 l 11945 2297 l 12014 2342 l 12080 2385 l - 12142 2426 l 12200 2464 l 12254 2500 l 12304 2532 l 12348 2562 l - 12388 2588 l 12423 2612 l 12454 2632 l 12480 2649 l 12501 2664 l - 12518 2675 l 12531 2684 l 12541 2691 l - 12555 2700 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 12266 2585 m 12501 2665 l 12331 2484 l 12266 2585 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [15 68] 68 sd -gs clippath -7390 5685 m 7710 5685 l 7710 5565 l 7390 5565 l 7390 5565 l 7630 5625 l 7390 5685 l cp -eoclip -n 1980 5625 m - 7695 5625 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 7390 5685 m 7630 5625 l 7390 5565 l 7390 5685 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [15 68] 68 sd -gs clippath -12709 3722 m 12840 3430 l 12731 3381 l 12599 3673 l 12599 3673 l 12753 3479 l 12709 3722 l cp -eoclip -n 8595 5625 m 8596 5625 l 8599 5625 l 8605 5625 l 8615 5625 l 8628 5624 l - 8646 5624 l 8670 5623 l 8699 5622 l 8733 5621 l 8774 5620 l - 8821 5619 l 8873 5617 l 8931 5615 l 8994 5613 l 9062 5610 l - 9135 5607 l 9211 5604 l 9291 5600 l 9373 5597 l 9457 5593 l - 9543 5588 l 9630 5583 l 9717 5578 l 9804 5573 l 9890 5568 l - 9975 5562 l 10059 5556 l 10141 5549 l 10222 5542 l 10300 5535 l - 10376 5528 l 10449 5520 l 10521 5512 l 10589 5504 l 10656 5495 l - 10720 5486 l 10781 5477 l 10840 5467 l 10897 5457 l 10952 5446 l - 11005 5435 l 11055 5424 l 11104 5411 l 11151 5399 l 11196 5386 l - 11240 5372 l 11283 5358 l 11324 5343 l 11363 5327 l 11402 5311 l - 11440 5294 l 11477 5276 l 11513 5258 l 11554 5235 l 11594 5212 l - 11633 5187 l 11671 5161 l 11709 5134 l 11745 5106 l 11781 5075 l - 11816 5044 l 11851 5010 l 11886 4975 l 11920 4938 l 11954 4898 l - 11988 4857 l 12022 4813 l 12057 4767 l 12091 4719 l 12125 4668 l - 12160 4615 l 12195 4560 l 12230 4502 l 12265 4442 l 12301 4381 l - 12336 4318 l 12372 4253 l 12407 4188 l 12442 4122 l 12476 4055 l - 12509 3990 l 12541 3926 l 12572 3863 l 12602 3803 l 12629 3746 l - 12655 3692 l 12678 3643 l 12699 3599 l 12717 3559 l 12733 3525 l - 12746 3496 l 12756 3473 l 12765 3454 l 12771 3440 l - 12780 3420 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 12709 3722 m 12753 3479 l 12599 3673 l 12709 3722 l cp gs 0.00 setgray ef gr col0 s -/Times-Roman ff 222.25 scf sf --1125 1845 m -gs 1 -1 sc (Persistent.[Di]Graph) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 222.25 scf sf --1125 4320 m -gs 1 -1 sc (Imperative.[Di]Graph) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 190.50 scf sf -10935 630 m -gs 1 -1 sc (functor application) col0 sh gr -/Times-Roman ff 190.50 scf sf -1710 3060 m -gs 1 -1 sc (ANY_TYPE) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 190.50 scf sf -4455 3060 m -gs 1 -1 sc (ORDERED_TYPE_DFT) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 190.50 scf sf -8145 3060 m -gs 1 -1 sc (COMPARABLE) dup sw pop 2 div neg 0 rm col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage -%%Trailer -%EOF diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/lsl/slides.tex b/jscomp/build_tests/ocamlgraph/papers/slides/lsl/slides.tex deleted file mode 100755 index 6c28b13499..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/lsl/slides.tex +++ /dev/null @@ -1,428 +0,0 @@ -\documentclass[a4]{seminar} - -\usepackage{./talkadvi} -\usepackage[T1]{fontenc} -\usepackage[latin1]{inputenc} -\usepackage[french]{babel} -\usepackage{epsfig} -\usepackage{alltt} -\usepackage{url} - -\newcommand{\rouge}[1]{{\color{red}#1}} -\newcommand{\bleu}[1]{{\color{royalblue}#1}} -\newcommand{\monvert}[1]{{\color{ForestGreen}#1}} -\newcommand{\motcle}[1]{{\color{Blue}#1}} -\newcommand{\ocamlgraph}{\textsf{OcamlGraph}} -\newcommand{\fleche}{\ensuremath{\rightarrow}} -\newcommand{\vara}{\ensuremath{\alpha}} -\newcommand{\varb}{\ensuremath{\beta}} - -\newcommand{\code}[1]{\bleu{\texttt{#1}}} - -\begin{document} -\sffamily -\parindent=0mm - -\begin{slide} -~\vfill -\begin{center} - \textcolor{red}{\rule{\linewidth}{0.1em}} \\[0.7em] - \textcolor{red}{\Large\bfseries - \ocamlgraph:\\[0.7em] \textcolor{orange}{une bibliothèque générique - de graphes massivement fonctorisée}} \\ - \textcolor{red}{\rule{\linewidth}{0.1em}} \\[2em] - \textcolor{royalblue}{\large Julien Signoles}\\[1em] - \textcolor{orange}{\large LSL}\\[2em] - \textcolor{royalblue}{\large Sylvain Conchon, Jean-Christophe Filliâtre} - \\[1em] - \textcolor{orange}{\large LRI, université Paris XI} -\end{center} -\vfill\vfill -\end{slide} - -\begin{slide}\slidetitle{OcamlGraph} - - ~ - - \emph{Pourquoi \ocamlgraph?} - \begin{center} - Contrairement à C++ ou Java, pas de telle bibliothèque - \end{center} - \pause - - \emph{Quand l'utiliser ?} - \begin{center} - Ocaml + graphes - - \bleu{\url{http://www.lri.fr/~filliatr/ocamlgraph}} - \end{center} - \pause - - \emph{But de l'exposé ?} - - \begin{center} - \begin{points} - \item Comprendre (la philosophie de) la bibliothèque - \item Démocratiser les foncteurs - \end{points} - \end{center} - -\end{slide} - -\begin{slide}\slidetitle{Caractéristiques} - - \begin{points} - \item \bleu{Nombreuses structures de données} - \begin{itemize} - \item persistantes - \item impératives - \item étiquetées ou non - \item etc. - \end{itemize} - - \pause - \item \bleu{Algorithmes « génériques »} - \begin{itemize} - \item flots - \item parcours - \item génération aléatoire - \item etc. - \end{itemize} - \end{points} - - \pause - \begin{center} - \emph{Rendu possible par l'utilisation massive de foncteurs} - \end{center} -\end{slide} - -\talkpart{I}{Structures de données: interface} - -\begin{slide}\slidetitle{Interfaces} - -\emph{Interface commune à tous les graphes :} -\begin{alltt} -module type G = sig ... end -\end{alltt} - -\pause -\emph{Interface des graphes persistants :} -\begin{alltt} -module type P = sig - include G - ... -end -\end{alltt} - -\pause -\emph{Interface des graphes impératifs :} -\begin{alltt} -module type I = sig - include G - ... -end -\end{alltt} -\end{slide} - -\begin{slide}\slidetitle{Structure de données} - -\begin{center} - \emph{19} structures de données sous forme de \emph{foncteurs} - \pause - - \emph{Comment choisir ?} -\end{center} -\begin{points} -\item \bleu{Modifiable en place ?} - \hfill \texttt{Imperative} ou \texttt{Persistent} -\item \bleu{Orienté ?} - \hfill \texttt{Digraph} ou \texttt{Graph} -\item \bleu{Sommets abstraits ?} - \hfill \texttt{Abstract} ou \texttt{Concrete} -\item \bleu{Arêtes étiquetées ?} - \hfill \texttt{Labeled} (ou rien) -\end{points} - -\begin{center} - Exemple: \monvert{\texttt{Imperative.Digraph.AbstractLabeled}}\medskip - - $2 \times 2 \times 2 \times 2 = \emph{16}$ -\end{center} -\end{slide} - -\begin{slide}\slidetitle{Composants} -~\\ -\psfig{file=interface.eps,width=\textwidth} - -\begin{points} -\item 8 \bleu{persistantes}: - table (\code{Map}) associant à chaque sommet l'ensemble (\code{Set}) de - ses successeurs. -\item 8 \bleu{impératives}: même chose avec \code{Hashtbl} au lieu de - \code{Map}. -\item 3 impératives \bleu{spécialisés}: matrices d'adjacence et bidirectionnel. -\end{points} -\end{slide} - -\talkpart{II}{Structures de données: l'envers du décors} - -\begin{slide}\slidetitle{Décomposition en briques} - -~\\[-5mm] -\begin{center} - \emph{Partage du code maximal grâce aux foncteurs} -\end{center} -\smallskip - -\begin{points} -\item uniformisation de \code{Hashtbl} et \code{Map} dans une - signature commune \code{HM} -\smallskip -\item \code{Minimal} : opérations communes à toutes les structures - de données -\smallskip -\item \code{Pred} : opérations sur les - prédécesseurs en utilisant les successeurs -\smallskip -\item \code{Labeled} / \code{Unlabeled} : opérations communes aux - arêtes (non) étiquetées -\smallskip -\item \code{Make\_Abstract} : graphe abstrait à partir de sa version - concrète -\end{points} -\end{slide} - -\begin{slide}\slidetitle{Assemblage des briques} - -\begin{center} -\emph{Make}: un foncteur d'ordre supérieur. -\end{center} - -\begin{alltt} -\motcle{module} Make - (F: \motcle{functor}(X: COMPARABLE) \fleche\ HM \motcle{with type} key = X.t) = -\motcle{struct} - \motcle{module} Digraph = \motcle{struct} - \motcle{module} Concrete(V: COMPARABLE) = \motcle{struct} - \emph{include} ConcreteVertex(F)(V) - \emph{include} Unlabeled(V)(HM) - \emph{include} Minimal(S)(HM) - \motcle{end} - - \motcle{module} ConcreteLabeled(V: COMPARABLE)(E: ORDERED_TYPE_DFT) = - ... -\end{alltt} -\end{slide} - -\begin{slide}\slidetitle{Instantiation et spécialisation} - -\begin{alltt} -\motcle{module} P = Make(Make_Map) - -\motcle{module} Digraph = struct - \motcle{module} Concrete (V: COMPARABLE) = \motcle{struct} - \emph{include} P.Digraph.Concrete(V) - - \motcle{let} add_vertex g v = - \motcle{if} HM.mem v g \motcle{then} g \motcle{else} unsafe_add_vertex g v - - \motcle{let} add_edge g v1 v2 = - \motcle{let} g = add_vertex g v1 \motcle{in} - \motcle{let} g = add_vertex g v2 \motcle{in} - unsafe_add_edge g v1 v2 - ... -\end{alltt} - -\end{slide} - -\talkpart{III}{Algorithmes} - -\begin{slide}\slidetitle{Programmation générique} - -\bigskip -\begin{center} -Chaque algorithme est écrit indépendamment de la structure de graphe - -c'est un \emph{foncteur} - -dont l'argument contient uniquement les opérations nécessaires. -\end{center} - -\bigskip -\pause -\emph{Intérêts :} - -\begin{enumerate} -\item \bleu{Utilisation} sur des structures autres que celles d'\ocamlgraph -\smallskip - -\item \bleu{Codage} facilité -\smallskip - -\item \bleu{Extension de la bibliothèque} facilitée -\end{enumerate} -\end{slide} - -\begin{slide}\slidetitle{Algorithmes fournis} - -\begin{points} -\item -parcours : 7 DFS, 2 BFS, 2 détections de cycle - -\item -constructions : -\begin{itemize} -\item 4 classiques (ex. graphe de de Bruijn) -\item 2 aléatoires (ex. planaires) -\end{itemize} - -\item -plus court chemin (Dijkstra) - -\item -composantes fortement connexes - -\item -flot maximal (Goldberg, Ford-Fulkerson) - -\item -k-coloriage - -\item -tri topologique - -\item -arbre couvrant minimal (Kruskal) - -\item -opérations : clôture transitive, complémentaire, miroir, voisinages, etc. - -\item -sortie DOT (Graphviz) - -\item -parseur GML -\end{points} -\end{slide} - - -\begin{slide}\slidetitle{Exemples} - -~\\ -\begin{center} -\emph{Algorithmes de flots} : Ford-Fulkerson \& Goldberg - -\bigskip - -\emph{Parcours} en profondeur et en largeur -\end{center} -\end{slide} - - - -\talkpart{III}{Conclusion} - -\newcommand{\present}{{\monvert{\large\boldmath $\surd$}}} -\newcommand{\absent}{\rouge{\large\boldmath $\oslash$}} - -\begin{slide}\slidetitle{Comparaisons} - -\bigskip -\begin{center} - \begin{tabular}{|l||c|c|c|c|c|} - \hline - & langage &P/I& algo gén & signature\emph{s} & str données \\\hline\hline - LEDA & C++ & I & \absent & \absent & 1 \\\hline - GTL & C++ & I & \absent & \absent & 1 \\\hline - MLRisc & SML & I & \absent & \absent & 1 \\\hline - FGL & Haskell & P & \absent & \absent & 1 \\\hline - Baire & Ocaml &P/I& --- & \absent & 8 \\\hline - JDSL & Java & I & \present & \present & 1 \\\hline - BGL & C++ & I & \present & \present & 1 \\\hline - OcamlGraph& Ocaml &P/I& \present & \present & 19 \\\hline - \end{tabular} -\end{center} -\end{slide} - -\begin{slide}\slidetitle{Performances} -\begin{center} - \emph{Création d'un graphe complet} - - \input{./bench1c.tex} - - \bleu{100 000 arêtes créées par seconde} (graphes impératifs) -\end{center} -\end{slide} - -\begin{slide}\slidetitle{Performances (2)} -\begin{center} - \emph{Parcours DFS d'un labyrinthe} - - \input{./bench2dfs.tex} - - \bleu{Entre 500 000 et 1 million d'arêtes visitées par seconde} -\end{center} -\end{slide} - -\begin{slide}\slidetitle{Pour finir} - -~\\ -\emph{\ocamlgraph\ en chiffre:} - -\begin{points} -\item $\approx$ \bleu{7000} lignes de code - (dont $\approx$ \bleu{2000} lignes de contribution) - -\item \bleu{9} personnes-semaines de travail -\end{points} - -\emph{Quelques remarques sur les foncteurs:} - -\begin{points} -\item \bleu{Quelques limitations} du système de modules nous ont gênées - \begin{itemize} - \item Bug report \#2049 (faiblesse des modules applicatifs) - \item Principalement, ne pas pouvoir réunir deux structures ayant un type ou - un module en commun - \end{itemize} - -\item - \bleu{Trop de foncteurs} dans l'interface = frein à l'utilisation - d'\ocamlgraph\ \bleu{?} -\end{points} - -\end{slide} - -%% \begin{slide}\slidetitle{foncteurs vs polymorphisme} - -%% \bigskip -%% quelles limitations avec -%% \begin{alltt} -%% type (\vara,\varb) graph = ... \textrm{?} -%% \end{alltt} -%% % (\vara * (\vara * \varb) list) list \textrm{?} - -%% \pause -%% \begin{points} -%% \item moins bonnes structures de données -%% \begin{itemize} -%% \item moins efficaces -%% \begin{alltt} -%% type (\vara,\varb) graph = (\vara * (\vara * \varb) list) list -%% \end{alltt}\adviwait -%% \item et/ou moins nombreuses -%% \begin{alltt} -%% type \vara node = \vara * int -%% type (\vara,\varb) graph = (\vara node * \varb) list IntMap.t -%% \end{alltt} -%% \end{itemize}\pause -%% \item généricité des algos « à la Caml Light » -%% \end{points} -%% \end{slide} - -\end{document} - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: t -%%% End: diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/lsl/talkadvi.sty b/jscomp/build_tests/ocamlgraph/papers/slides/lsl/talkadvi.sty deleted file mode 100755 index efa322f8bb..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/lsl/talkadvi.sty +++ /dev/null @@ -1,96 +0,0 @@ -%%% -%%% talk.sty -%%% ======== -%%% Macros to use with the class seminar for presentations. -%%% Usage: -%%% -%%% \documentclass[a4]{seminar} -%%% \usepackage{talk} -%%% \begin{document} -%%% \sf -%%% \begin{slide}...\end{slide} -%%% -%%% Macros provided are: -%%% -%%% \talktitle{The Title}{The author}{Place, date, etc.} -%%% -%%% \talkpart{Title of the part}{subtitle} -%%% -%%% \slidehead{This slide is about...} - -\usepackage[latin1]{inputenc} -\usepackage[T1]{fontenc} -\usepackage[usenames]{color} -\usepackage{graphicx} -\usepackage{advi} -\usepackage{advi-annot} -\usepackage{alltt} - -\def\_{\kern.08em\vbox{\hrule width.35em height.6pt}\kern.08em} - -% taille page -\slidewidth 235mm -\slideheight 174mm -\centerslidesfalse -\renewcommand{\sliderightmargin}{0mm} -\renewcommand{\slideleftmargin}{20mm} -\renewcommand{\slidetopmargin}{30mm} -\renewcommand{\slidebottommargin}{10mm} -\slideframe{none} - -% des couleurs -\definecolor{red}{rgb}{1.0,0.0,0.0} -\definecolor{darkred}{rgb}{0.8,0.2,0.2} -\definecolor{green}{rgb}{0.13,0.55,0.13} % forestgreen, en fait -\definecolor{blue}{rgb}{0.0,0.0,1.0} -\definecolor{royalblue}{rgb}{0.25,0.41,0.88} -\definecolor{orange}{rgb}{1.00,0.27,0.00} - -\newcommand{\red}[1]{\textcolor{red}{#1}} -\newcommand{\blue}[1]{\textcolor{blue}{#1}} -\newcommand{\green}[1]{\textcolor{green}{#1}} -\newcommand{\remph}[1]{\textcolor{red}{#1}} -\let\bemph\blue - -\newcommand{\unixtilde}{\raisebox{-0.22em}{\~{}}} - -% page style -% \newpagestyle{jcf}{}{\hfil\rouge{\thepage}\qquad\qquad} -\slidepagestyle{empty} -\slideframe{none} -% \def\advifooter{\vbox to 0em{\vbox to \vsize {\vfill\hfill{\thepage}}\vss}} -% \let \Newpage \newpage -% \def \newpage {\Newpage \advifooter} - -% macros -\newcommand{\talktitle}[3]{\begin{slide}\pagestyle{empty}~\vfill -{\begin{center}% - \textcolor{orange}{\rule{\linewidth}{0.1em}} \\[0.7em] - \textcolor{orange}{{\LARGE\vbox{#1}}} \\ - \textcolor{orange}{\rule{\linewidth}{0.1em}} \\[2em] - \textcolor{royalblue}{#2} \\[3em] - \textcolor{orange}{#3} - \end{center}} -\vfill\vfill\end{slide}} - -\newcommand{\slidetitle}[1]{% -\textcolor{royalblue}{{\hfill\bfseries#1\hfill}}\par% -\vspace{-1.3em}\textcolor{royalblue}{{\rule{\linewidth}{0.1em}}}} - -\newcommand{\talkpart}[2]{\begin{slide}\pagestyle{empty}~\vfill - \begin{center} - {\sf\textcolor{royalblue}{\bfseries#1}}\\ - {\textcolor{royalblue}{\hrulefill}}\\[1em] - {\sf\Large\textcolor{royalblue}{\bfseries#2}}\end{center}\vfill\vfill\end{slide}} - -\let\emph\remph - -\newenvironment{points}% -{\begin{list}{\emph{$\bullet$}}{\setlength{\itemsep}{0.3em}}}% -{\end{list}} - -\usepackage{url} -\newcommand{\redurl}[1]{\textcolor{red}{\url{#1}}} - -\newcommand{\pause}{\vspace*{1em}\adviwait} - diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/oups-july-2014.tex b/jscomp/build_tests/ocamlgraph/papers/slides/oups-july-2014.tex deleted file mode 100755 index 41d446c6a3..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/oups-july-2014.tex +++ /dev/null @@ -1,487 +0,0 @@ -\documentclass{beamer} -%\usetheme{Madrid} -\usepackage[utf8]{inputenc} -\usepackage{alltt} -\usepackage{graphicx} -\usepackage{hyperref} -\usepackage{listings} -\beamertemplatenavigationsymbolsempty -\setbeamertemplate{enumerate items}[ball] -\setbeamertemplate{frametitle}{\vspace*{0.5em}\hfill\insertframetitle} - -\newcommand{\rd}[1]{\textcolor{red}{#1}} -\newcommand{\bl}[1]{\textcolor{blue}{#1}} -\newcommand{\mt}[1]{\ensuremath{\mathtt{#1}}} -%\newcommand{\rouge}[1]{{\color{orange}#1}} -\newcommand{\bleu}[1]{{\color{blue}#1}} -\newcommand{\monvert}[1]{{\color{blue}#1}} -\newcommand{\ocamlgraph}{\textsf{OCamlGraph}} -\newcommand{\vara}{\ensuremath{\alpha}} -\newcommand{\varb}{\ensuremath{\beta}} -\newcommand{\excode}[1]{\monvert{\texttt{#1}}} -\newcommand{\present}{{\monvert{\large\boldmath $\surd$}}} -\newcommand{\absent}{\textcolor{red}{\large\boldmath $\oslash$}} -\let\emph\alert - -\lstdefinelanguage{ocaml} -{ -basicstyle=\ttfamily, -morekeywords=[1]{module,struct,end,val,sig,let,type,functor,with,include},% -keywordstyle=[1]{\color{blue!80}},% -commentstyle=\itshape,% -columns=[l]fullflexible,% -sensitive=true,% -morecomment=[s]{(*}{*)},% -escapeinside={*?}{?*},% -keepspaces=true, -literate=% -%{'a}{$\alpha$}{1}% -%{'b}{$\beta$}{1}% -{<}{$<$}{1}% -{>}{$>$}{1}% -{<=}{$\le$}{1}% -{>=}{$\ge$}{1}% -{<>}{$\ne$}{1}% -{/\\}{$\land$}{1}% -{\\/}{ $\lor$ }{3}% -{\ or(}{ $\lor$(}{3}% -% {not\ }{$\lnot$ }{1}% -% {not(}{$\lnot$(}{1}% -{+->}{\texttt{+->}}{2}% -% {+->}{$\mapsto$}{2}% -{-->}{\texttt{-\relax->}}{2}% -%{-->}{$\longrightarrow$}{2}% -{->}{$\rightarrow$}{2}% -{<-}{$\leftarrow$}{2}% -{<->}{$\leftrightarrow$}{2}% -% -% -} -\lstnewenvironment{ocaml}{\lstset{language=ocaml}}{} -\newcommand{\of}[1]{\lstinline[language=ocaml]{#1}} - -\title{Lessons from the implementation of a graph library, OCamlGraph} -\author{Jean-Christophe Filli\^atre} -\institute{CNRS} -\date{Meetup OCaml-Paris (OUPS) \\ July 8, 2014} - -\begin{document} -\addtocounter{framenumber}{-1} - -\maketitle - -\setbeamertemplate{footline}{\vspace*{-0.5em}\hfill \color{blue}OCamlGraph --- \insertframenumber/\inserttotalframenumber} - -\begin{frame}\frametitle{OCamlGraph} - - \begin{description} - \item[what] a graph library for OCaml \\ - LGPL 2.1 + special exception for linking - - \bigskip - \item[when] - started in 2004 - - \bigskip - \item[who] Sylvain Conchon (Univ Paris Sud) \\ - Jean-Christophe Filliâtre (CNRS) \\ - Julien Signoles (CEA) \\ - + external contributors - - \bigskip - \item[where] - \url{http://ocamlgraph.lri.fr/} \\ - code on github - \end{description} -\end{frame} - -\begin{frame}\frametitle{overview} - \begin{itemize} - \item using OCamlGraph - \begin{itemize} - \item data structures - \item algorithms - \end{itemize} - \vskip15pt - \item implementing OCamlGraph - \vskip15pt - \item lessons - \end{itemize} -\end{frame} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%\section[Interface]{} - -\begin{frame}[containsverbatim] - \frametitle{what kind of graphs do you need?} - - \begin{itemize} - \item mutable graph? - \hfill \excode{Imperative} or \excode{Persistent} - \vskip10pt - \item directed? - \hfill \excode{Digraph} or \excode{Graph} - \vskip10pt - \item labels on edges? - \hfill \excode{Labeled} (or unlabeled) - \vskip10pt - \item abstract data type for vertices? - \hfill \excode{Abstract} or \excode{Concrete} - \vskip10pt - \end{itemize} - -\bigskip -\begin{center} -all 16 possibilities provided, as \emph{functors} -\end{center} -\end{frame} - -\begin{frame}[fragile] - \frametitle{examples} - \begin{itemize} - \item imperative directed graphs with integer vertices and unlabeled edges -\medskip - \begin{ocaml} -module G = - Imperative.Digraph.Abstract(struct type t = int end) - \end{ocaml} - - \item persistent undirected graphs with string vertices and edges -\medskip - \begin{ocaml} -module S = struct type t = string ... end -module G = Persistent.Graph.ConcreteLabeled(S)(S) - \end{ocaml} - \end{itemize} -\end{frame} - -% \begin{frame}[containsverbatim] -% \frametitle{Interfaces} -% \emph{Common interface for all graphs:} -% \begin{alltt} -% module type \bleu{G} = sig ... end -% \end{alltt} -% \emph{Interface for persistent graphs:} -% \begin{alltt} -% module type \bleu{P} = sig -% include \bleu{G} -% ... -% end -% \end{alltt} -% \emph{Interface for imperative graphs:} -% \begin{alltt} -% module type \bleu{I} = sig -% include \bleu{G} -% ... -% end -% \end{alltt} -% \end{frame} - - -\begin{frame}\frametitle{19 graph data structures} - \includegraphics[width=\textwidth]{tfp07/interface.pdf} -%\vskip-1pt -\begin{itemize} -\item 8 \bleu{persistent}: implemented with AVLs -\item 8 \bleu{imperative}: implemented with hash tables -\item 3 \bleu{specialized}: adjacency matrices and bidirectional graphs -\end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{graph operations} - \begin{itemize} - \item \emph{creation} (insertion, suppression, etc.) - \begin{ocaml} - val add_vertex : t -> vertex -> unit - \end{ocaml} - \item \emph{test functions} - \begin{ocaml} - val mem_edge : t -> vertex -> vertex -> bool - \end{ocaml} - \item \emph{iterators} (vertices, edges, successors, etc.) - \begin{ocaml} - val iter_vertex : (vertex -> unit) -> t -> unit - \end{ocaml} - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{graph algorithms} - - \begin{center} - written independently of the graph implementation\\[1.2em] - \emph{algorithm = functor}\\[1em] - \end{center} -\end{frame} - -\begin{frame}[fragile] - \frametitle{example: shortest path} - - \begin{enumerate} - \item \emph{instantiating} the functor - \begin{ocaml} - module W = struct - type t = int - let zero = 0 - let add = (+) - ... - end - module Dij = Path.Dijkstra(G)(W) - \end{ocaml} - - \item \emph{using} the resulting module - \begin{ocaml} - let path,w = Dij.shortest_path g v1 v2 - \end{ocaml} - \end{enumerate} -\end{frame} - -\begin{frame}[fragile] - \frametitle{minimal functor signature} -only the \emph{required operations} as functor parameters - \begin{ocaml} -module type G = sig - type t - module V : sig type t ... end - module E : sig type t ... end - val iter_succ_e : (E.t -> unit) -> t -> V.t -> unit -end -module Dijkstra - (G: G) - (W: sig type t val weight : G.E.t -> t ... end) -sig - val shortest_path : G.t -> G.V.t -> G.V.t -> - G.E.t list * W.t -end - \end{ocaml} -\end{frame} - -\begin{frame} - \frametitle{benefits of functorized algorithms} - - \begin{itemize} - \item clearly \emph{separates} algorithms from data structures\vskip8pt - \item possible use on \emph{non-\ocamlgraph} data structures\vskip8pt - \item easy \emph{extension} with new algorithms\vskip8pt - \end{itemize} - -\end{frame} - -\begin{frame} - \frametitle{some algorithms in \ocamlgraph} - \begin{itemize} - \item traversal: 7 DFS, 2 BFS, 2 cycle detections - \item topological sorting - \item strongly connected components - \item shortest path: Dijkstra, Bellman-Ford - \item minimum spanning tree: Kruskal, Prim - \item maximal flow: Goldberg, Ford-Fulkerson - \item $k$-coloring - \item transitive closure, complement, mirror, - neighborhood, \dots - \item building: - \begin{itemize} - \item classic graphs (e.g. de Bruijn's) - \item random graphs (e.g. planar graph) - \end{itemize} - \item interfaces with Graphviz and GML -\end{itemize} -\end{frame} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%\section[Implementation]{} - -\begin{frame} - \frametitle{overview} - \begin{itemize} - \item \textcolor{black!30}{using OCamlGraph\vskip15pt} - \item implementing OCamlGraph\vskip15pt - \item \textcolor{black!30}{lessons\vskip15pt} - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{software engineering} - \begin{center} - how to code and to maintain 19 graph implementations? - \end{center} -\end{frame} - -\begin{frame} - \frametitle{factorizing code with functors} - \begin{itemize} - \item - abstracting the underlying implementation (AVL or hash table) by using a - common signature \excode{HM} - - \vskip8pt - \item - one functor for each feature - \vskip1pt - \begin{itemize} - \item \excode{Minimal}: common operations - \vskip6pt - \item \excode{Labeled}/\excode{Unlabeled} - \vskip6pt - \item \excode{Pred}: predecessors from successors - \vskip6pt - \item \excode{Make\_Abstract}: abstract graphs from concrete ones - \end{itemize} - \end{itemize} -\end{frame} - -\begin{frame}[containsverbatim] - \frametitle{example} - -persistent or imperative unlabeled directed graphs - -\begin{ocaml} -module Make - (F: functor(X: COMPARABLE) -> HM with type key = X.t) = -struct - module Digraph = struct - module Concrete(V: COMPARABLE) = struct - include ConcreteVertex(F)(V) - include Unlabeled(V)(HM) - include Minimal(S)(HM) - end -end -module I = Make(Make_Hashtbl) -module P = Make(Make_Map) -\end{ocaml} -\end{frame} - -\begin{frame} - \frametitle{code factorization} - - altogether, - - 19 data structures $\times$ 45 operations each = 855 operations - - \bigskip - only \emph{1,000 lines} of code -\end{frame} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -\begin{frame} - \frametitle{overview} - \begin{itemize} - \item \textcolor{black!30}{using OCamlGraph\vskip15pt - \item implementing OCamlGraph\vskip15pt} - \item lessons - \end{itemize} -\end{frame} - -% \begin{frame} -% \frametitle{comparison} -% \begin{center} -% \begin{tabular}{|l||c|c|c|c|c|} -% \hline -% Library & Language &P/I& Genericity & Data struct. \\\hline\hline -% GTL & C++ & I & \absent & 1 \\\hline -% LEDA & C++ & I & \absent & 2 \\\hline -% BGL & C++ & I & \present & 2 \\\hline -% JDSL & Java & I & \present & 1 \\\hline -% FGL & Haskell & P & \absent & 1 \\\hline -% MLRisc & SML & I & \absent & 1 \\\hline -% % Baire & Ocaml &P/I& --- & 8 \\\hline -% \emph{\ocamlgraph}& Ocaml &P/I& \present & \emph{19} \\\hline -% \end{tabular} -% \end{center} -% \end{frame} - -\begin{frame}\frametitle{lesson 1: make it simple} - \begin{itemize} - \item simple - \begin{itemize} - \item initially 9 men-weeks - \item 7,000 loc (later 2,000 loc by external contributors) - \end{itemize} - % \begin{center} - % \emph{only possible thanks to ML functors} - % \end{center}\vskip10pt - - \bigskip - \item yet efficient - \begin{itemize} - \item creation $\approx$ 100,000 edges per second - \item traversal $\approx$ 1 million edges per second - \end{itemize} - % \begin{center} - % \emph{compares well to other graph libraries} - % \end{center} - \end{itemize} -\end{frame} - -\begin{frame}\frametitle{lesson 1: make it simple} - \begin{itemize} - \item \emph{the first principle of optimization is \textit{don't}} \par - (Kernighan \& Pike, \textit{The Practice of Programming}) - - \bigskip - \item implement algorithms as in textbooks - \begin{itemize} - \item iterators and functors make it easy - \end{itemize} - - \bigskip - \item yet, don't be naive when it comes to data structures - \begin{itemize} - \item do care about complexity - \end{itemize} - \end{itemize} -\end{frame} - -\begin{frame}\frametitle{lesson 2: functors} - there are modules and functors all over the place - - (450 occurrences of the \of{module} keyword) - - \bigskip - \begin{itemize} - \item a few bugs/limitations of the module system - \begin{itemize} - \item cf BTS \#2049 (weakness of applicative modules) - \item two signatures with a common type or a module - \end{itemize} - \end{itemize} -\end{frame} - -\begin{frame}\frametitle{lesson 2: functors} - too many functors in the API can be a pain for the user - - \bigskip - \begin{itemize} - \item many functors are used internally only - - \bigskip - \item a module \of{Pack} provides a simple API, with no functor - \begin{itemize} - \item one particular graph data structure - \item all functors already applied for you - \end{itemize} - - \bigskip - \item refrain yourself from making everything as generic as possible - \end{itemize} -\end{frame} - -\begin{frame} - \begin{center} - questions ? - \end{center} -\end{frame} - -\end{document} - - -% Local Variables: -% compile-command: "rubber -d oups-july-2014" -% ispell-local-dictionary: "american" -% End: diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/slides.tex b/jscomp/build_tests/ocamlgraph/papers/slides/slides.tex deleted file mode 100755 index 628204c6ce..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/slides.tex +++ /dev/null @@ -1,348 +0,0 @@ -\documentclass[a4]{seminar} - -\usepackage{./talkadvi} -\usepackage[T1]{fontenc} -\usepackage[latin1]{inputenc} -\usepackage[french]{babel} -\usepackage{pstricks} -\usepackage{pst-node} -%\usepackage{color} -\usepackage{alltt} -\usepackage{url} -\usepackage{amsmath} -\usepackage{amssymb} - -\newcommand{\rouge}[1]{\color{red}#1} -\newcommand{\monvert}[1]{\color{ForestGreen}#1} -\newcommand{\motcle}[1]{{\color{Blue}#1}} -\newcommand{\ocamlgraph}{\textsf{OcamlGraph}} -\newcommand{\fleche}{\ensuremath{\rightarrow}} -\newcommand{\vara}{\ensuremath{\alpha}} -\newcommand{\varb}{\ensuremath{\beta}} - -\begin{document} -\sffamily -\parindent=0mm - -\begin{slide} -~\vfill -\begin{center} - \textcolor{red}{\rule{\linewidth}{0.1em}} \\[0.7em] - \textcolor{red}{\Large\bfseries - Le foncteur sonne toujours deux fois} \\ - \textcolor{red}{\rule{\linewidth}{0.1em}} \\[2em] - \textcolor{royalblue}{\large Sylvain Conchon, Jean-Christophe Filliâtre, Julien Signoles} - \\[3em] - \textcolor{orange}{{\large LRI -- CNRS 8623}} -\end{center} -\vfill\vfill -\end{slide} - -\begin{slide}\slidetitle{Ocamlgraph} - - \begin{center} - une bibliothèque de graphes pour Ocaml - - ~\\[2em] - \pause - \emph{pourquoi ?} - - contrairement à C++ ou Java, pas de telle bibliothèque - \end{center} - -\end{slide} - -\begin{slide}\slidetitle{Caractéristiques} - - \begin{points} - \item nombreuses structures de données - \begin{itemize} - \item persistantes - \item impératives - \item étiquetées ou non - \item etc. - \end{itemize} - - \pause - \item algorithmes « génériques » - \begin{itemize} - \item flots - \item parcours - \item génération aléatoire - \item etc. - \end{itemize} - \end{points} - - \pause - \begin{center} - \emph{rendu possible par l'utilisation massive de foncteurs} - \end{center} -\end{slide} - -\talkpart{I}{structures de données} - -\begin{slide}\slidetitle{Interfaces} - -\emph{Interface commune à tous les graphes :} -\begin{alltt} -module type G = sig ... end -\end{alltt} - -\pause -\emph{Interface des graphes persistants :} -\begin{alltt} -module type P = sig - include G - ... -end -\end{alltt} - -\pause -\emph{Interface des graphes impératifs :} -\begin{alltt} -module type I = sig - include G - ... -end -\end{alltt} -\end{slide} - -\begin{slide}\slidetitle{Partage du code} - -Au total, \ocamlgraph\ implante \emph{18} structures de données -\pause - -A priori, 8 variantes d'interface \texttt{G} : -\begin{center} - orienté ? $\times$ sommets abstraits ? $\times$ arêtes étiquetées ? -\end{center} -\pause - -\begin{points} -\item 8 persistantes : table (\texttt{Map}) associant à chaque sommet - l'ensemble (\texttt{Set}) de ses successeurs -\item 8 impératives : même chose avec \texttt{Hashtbl} au lieu de \texttt{Map} -\item 2 impératives par matrices d'adjacence \linebreak - (sommets = entiers, pas d'étiquette) -\end{points} - -\pause -Mais partage du code maximal à l'aide de \emph{foncteurs} -\end{slide} - -\begin{slide}\slidetitle{Code commun aux graphes persistants et impératifs} -\begin{points} - -\item uniformisation de \texttt{Hashtbl} et \texttt{Map} dans une - signature commune \texttt{HM} - -\item \texttt{Minimal} : opérations communes à toutes les structures - de données - -\item \texttt{Pred} : opérations sur les - prédécesseurs en utilisant les successeurs - -\item \texttt{Labeled} / \texttt{Unlabeled} : opérations communes aux - arêtes (non) étiquetées - -\item \texttt{Make\_Abstract} : graphe abstrait à partir de sa version - concrète - -\end{points} -\end{slide} - -\begin{slide}\slidetitle{Assemblage des briques} -\begin{alltt} -\motcle{module} Make - (F: \motcle{functor}(X: COMPARABLE) \fleche\ HM \motcle{with type} key = X.t) = -\motcle{struct} - \motcle{module} Digraph = \motcle{struct} - - \motcle{module} Concrete(V: COMPARABLE) = \motcle{struct} - \emph{include} ConcreteVertex(F)(V) - \emph{include} Unlabeled(V)(HM) - \emph{include} Minimal(S)(HM) - \motcle{end} - - \motcle{module} ConcreteLabeled(V: COMPARABLE)(E: ORDERED_TYPE_DFT) = - ... -\end{alltt} -\end{slide} - -\talkpart{II}{algorithmes} - -\begin{slide}\slidetitle{programmation générique} - -\bigskip -\begin{center} -chaque algorithme est écrit indépendamment de la structure de graphe - -c'est un \emph{foncteur} - -son argument contient uniquement les opérations dont il a besoin -\end{center} - -\bigskip -\pause -\emph{intérêts :} - -1. codage facilité - -2. utilisation sur des structures autres que celles d'\ocamlgraph -\end{slide} - -\begin{slide}\slidetitle{Algorithmes fournis} - -\begin{points} -\item -parcours : 7 DFS, 2 BFS, 2 détections de cycle - -\item -constructions : -\begin{itemize} -\item 4 classiques (ex. graphe de de Bruijn) -\item 2 aléatoires (ex. planaires) -\end{itemize} - -\item -plus court chemin (Dijkstra) - -\item -composantes fortement connexes - -\item -flot maximal (Goldberg, Ford-Fulkerson) - -\item -tri topologique - -\item -arbre couvrant minimal (Kruskal) - -\item -opérations : clôture transitive, complémentaire, miroir, voisinages, etc. - -\item -ensemble des séparateurs minimaux - -\item -graphes sans cordes, cliques - -\item -sortie DOT (Graphviz) -\end{points} -\end{slide} - - -\begin{slide}\slidetitle{exemples} - -\bigskip -\begin{center} -algorithmes de flots : Ford-Fulkerson \& Goldberg - -\bigskip - -parcours en profondeur et en largeur -\end{center} -\end{slide} - - - -\talkpart{III}{conclusion} - -\newcommand{\present}{\monvert\large\boldmath $\surd$} -\newcommand{\absent}{\rouge\large\boldmath $\oslash$} - -\begin{slide}\slidetitle{comparaisons} - -\bigskip -\begin{center} - \begin{tabular}{|l||c|c|c|c|c|} - \hline - & langage &P/I& algo gén & signature\emph{s} & str données \\\hline\hline - LEDA & C++ & I & \absent & \absent & 1 \\\hline - GTL & C++ & I & \absent & \absent & 1 \\\hline - MLRisc & SML & I & \absent & \absent & 1 \\\hline - FGL & Haskell & P & \absent & \absent & 1 \\\hline - Baire & Ocaml &P/I& --- & \absent & 8 \\\hline - JDSL & Java & I & \present & \present & 1 \\\hline - BGL & C++ & I & \present & \present & 1 \\\hline - OcamlGraph& Ocaml &P/I& \present & \present & 18 \\\hline - \end{tabular} -\end{center} -\end{slide} - -\begin{slide}\slidetitle{Chiffres} - -\begin{points} -\item 6000 lignes (dont 1000 lignes de contribution) - -\item 9 personnes-semaines de travail - -\item performances : peu de comparaisons à ce jour - -exemples (sur Pentium 4 2.8 GHz) : -\begin{itemize} -\item DFS sur 200\,000 sommets et 500\,000 arêtes : 0.63 s - -\item Dijkstra 70\,000 s. et 210\,000 ar. : chemin de 400 - sommets en 1.38 s -\end{itemize} - -\end{points} -\end{slide} - -\begin{slide}\slidetitle{foncteurs vs polymorphisme} - -\bigskip -quelles limitations avec -\begin{alltt} - type (\vara,\varb) graph = ... \textrm{?} -\end{alltt} -% (\vara * (\vara * \varb) list) list \textrm{?} - -\pause -\begin{points} -\item moins bonnes structures de données - \begin{itemize} - \item moins efficaces - \begin{alltt} - type (\vara,\varb) graph = (\vara * (\vara * \varb) list) list - \end{alltt}\adviwait - \item et/ou moins nombreuses - \begin{alltt} - type \vara node = \vara * int - type (\vara,\varb) graph = (\vara node * \varb) list IntMap.t - \end{alltt} - \end{itemize}\pause -\item généricité des algos « à la Caml Light » -\end{points} -\end{slide} - - -\begin{slide}\slidetitle{remarques concernant les foncteurs} - -\bigskip - \begin{points} - - \item quelques limitations du système de modules nous ont gênés \linebreak -(bug report \#2049) - -\bigskip -principalement, ne pas pouvoir réunir deux structures ayant un type ou -un module en commun - -\bigskip -\item -trop de foncteurs dans l'interface = frein à l'utilisation d'\ocamlgraph\ ? - - \end{points} - -\end{slide} - -\end{document} - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: t -%%% End: diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/talkadvi.sty b/jscomp/build_tests/ocamlgraph/papers/slides/talkadvi.sty deleted file mode 100755 index efa322f8bb..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/talkadvi.sty +++ /dev/null @@ -1,96 +0,0 @@ -%%% -%%% talk.sty -%%% ======== -%%% Macros to use with the class seminar for presentations. -%%% Usage: -%%% -%%% \documentclass[a4]{seminar} -%%% \usepackage{talk} -%%% \begin{document} -%%% \sf -%%% \begin{slide}...\end{slide} -%%% -%%% Macros provided are: -%%% -%%% \talktitle{The Title}{The author}{Place, date, etc.} -%%% -%%% \talkpart{Title of the part}{subtitle} -%%% -%%% \slidehead{This slide is about...} - -\usepackage[latin1]{inputenc} -\usepackage[T1]{fontenc} -\usepackage[usenames]{color} -\usepackage{graphicx} -\usepackage{advi} -\usepackage{advi-annot} -\usepackage{alltt} - -\def\_{\kern.08em\vbox{\hrule width.35em height.6pt}\kern.08em} - -% taille page -\slidewidth 235mm -\slideheight 174mm -\centerslidesfalse -\renewcommand{\sliderightmargin}{0mm} -\renewcommand{\slideleftmargin}{20mm} -\renewcommand{\slidetopmargin}{30mm} -\renewcommand{\slidebottommargin}{10mm} -\slideframe{none} - -% des couleurs -\definecolor{red}{rgb}{1.0,0.0,0.0} -\definecolor{darkred}{rgb}{0.8,0.2,0.2} -\definecolor{green}{rgb}{0.13,0.55,0.13} % forestgreen, en fait -\definecolor{blue}{rgb}{0.0,0.0,1.0} -\definecolor{royalblue}{rgb}{0.25,0.41,0.88} -\definecolor{orange}{rgb}{1.00,0.27,0.00} - -\newcommand{\red}[1]{\textcolor{red}{#1}} -\newcommand{\blue}[1]{\textcolor{blue}{#1}} -\newcommand{\green}[1]{\textcolor{green}{#1}} -\newcommand{\remph}[1]{\textcolor{red}{#1}} -\let\bemph\blue - -\newcommand{\unixtilde}{\raisebox{-0.22em}{\~{}}} - -% page style -% \newpagestyle{jcf}{}{\hfil\rouge{\thepage}\qquad\qquad} -\slidepagestyle{empty} -\slideframe{none} -% \def\advifooter{\vbox to 0em{\vbox to \vsize {\vfill\hfill{\thepage}}\vss}} -% \let \Newpage \newpage -% \def \newpage {\Newpage \advifooter} - -% macros -\newcommand{\talktitle}[3]{\begin{slide}\pagestyle{empty}~\vfill -{\begin{center}% - \textcolor{orange}{\rule{\linewidth}{0.1em}} \\[0.7em] - \textcolor{orange}{{\LARGE\vbox{#1}}} \\ - \textcolor{orange}{\rule{\linewidth}{0.1em}} \\[2em] - \textcolor{royalblue}{#2} \\[3em] - \textcolor{orange}{#3} - \end{center}} -\vfill\vfill\end{slide}} - -\newcommand{\slidetitle}[1]{% -\textcolor{royalblue}{{\hfill\bfseries#1\hfill}}\par% -\vspace{-1.3em}\textcolor{royalblue}{{\rule{\linewidth}{0.1em}}}} - -\newcommand{\talkpart}[2]{\begin{slide}\pagestyle{empty}~\vfill - \begin{center} - {\sf\textcolor{royalblue}{\bfseries#1}}\\ - {\textcolor{royalblue}{\hrulefill}}\\[1em] - {\sf\Large\textcolor{royalblue}{\bfseries#2}}\end{center}\vfill\vfill\end{slide}} - -\let\emph\remph - -\newenvironment{points}% -{\begin{list}{\emph{$\bullet$}}{\setlength{\itemsep}{0.3em}}}% -{\end{list}} - -\usepackage{url} -\newcommand{\redurl}[1]{\textcolor{red}{\url{#1}}} - -\newcommand{\pause}{\vspace*{1em}\adviwait} - diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/README b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/README deleted file mode 100755 index 2c3941285f..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/README +++ /dev/null @@ -1,16 +0,0 @@ - -Makefile Fichier de make pour faciliter les manips -README Ce fichier -beamer.tex Le source beamer -beamercolorthemeCea.sty Les couleurs du thème Cea -beamerouterthemeCea.sty La mise en page du thème Cea -beamerthemeCea.sty Le thème Cea -cealist.eps Logo du cea list -greenpixel.eps Pixel 1x1 vert -lrqa.eps Logo qualité -orangepixel.eps Pixel 1x1 orange - -Pour créer un ps : 'make ps' ou juste 'make' -Pour créer un pdf : 'make pdf' - - diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/beamercolorthemeCea.sty b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/beamercolorthemeCea.sty deleted file mode 100755 index 7c24f26879..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/beamercolorthemeCea.sty +++ /dev/null @@ -1,43 +0,0 @@ -% Copyright 2006 by Fabrice Derepas -% -% This program can be redistributed and/or modified under the terms -% of the GNU Public License, version 2. - -\ProvidesPackage{beamercolorthemeCea}[2006/07/03] - -\definecolor{OrangeCEA}{rgb}{1,0.7,0.03} -\definecolor{VertCEA}{rgb}{0.45,1,0} -\definecolor{GrisCEA}{cmyk}{0.11,0,0,0.65} - -\mode - -\setbeamercolor{title in head/foot}{fg=GrisCEA} -\setbeamercolor{footrule}{fg=VertCEA} -\setbeamercolor{headrule}{fg=OrangeCEA} - -\setbeamercolor*{palette primary}{use=structure,fg=GrisCEA,bg=white} -\setbeamercolor*{palette secondary}{use=structure,fg=GrisCEA,bg=white} -\setbeamercolor*{palette tertiary}{use=structure,fg=GrisCEA,bg=white} -\setbeamercolor*{palette quaternary}{fg=GrisCEA,bg=white} - -\setbeamercolor*{sidebar}{use=structure,bg=white} - -\setbeamercolor*{palette sidebar primary}{use=structure,fg=black} -\setbeamercolor*{palette sidebar secondary}{fg=black} -\setbeamercolor*{palette sidebar tertiary}{use=structure,fg=black} -\setbeamercolor*{palette sidebar quaternary}{fg=black} - -\setbeamercolor*{titlelike}{parent=palette primary} - -\setbeamercolor*{separation line}{} -\setbeamercolor*{fine separation line}{} - -\setbeamercolor*{title in sidebar}{fg=GrisCEA,bg=white} -\setbeamercolor{sidebar}{fg=GrisCEA,bg=white} - -\setbeamercolor{item}{fg=OrangeCEA} -\setbeamercolor{subitem}{fg=VertCEA} -\setbeamercolor{subsubitem}{fg=GrisCEA} - -\mode - diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/beamerouterthemeCea.sty b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/beamerouterthemeCea.sty deleted file mode 100755 index dc8cdc6f9f..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/beamerouterthemeCea.sty +++ /dev/null @@ -1,210 +0,0 @@ -% Copyright 2006 by Fabrice Derepas -% -% Modified by V. Prevosto 2006-09-25 -% This program can be redistributed and/or modified under the terms -% of the GNU Public License, version 2. - -\ProvidesPackage{beamerouterthemeCea}[2006/09/25] - -\pgfdeclareimage[height=3em,interpolate=true]{cealistlogo}{logoceaquadri2002} -\pgfdeclareimage[height=1ex,interpolate=true]{listlogo}{list_g} -\pgfdeclareimage[height=.3em,width=12.5cm,interpolate=false]{greenpixel}{greenpixel} -\pgfdeclareimage[height=.3em,width=12.5cm,interpolate=false]{orangepixel}{orangepixel} -\pgfdeclareimage[height=1.5em,width=1.5em,interpolate=true]{lrqa}{lrqa} - - -\newdimen\beamer@sidebarwidth -\newdimen\beamer@headheight -\newdimen\beamercea@projectlogoheight -\newdimen\beamercea@projectlogoheightaux -\newdimen\beamercea@skiplogo -\beamercea@skiplogo=31ex -\usebeamerfont{frametitle} -\beamer@sidebarwidth=2.5\baselineskip -\beamer@headheight=2.5\baselineskip -\reset@font - -\def\beamer@lefttext{left} - -\DeclareOptionBeamer{hideothersubsections}[]{\beamer@nav@subsectionstyle{show/show/hide}} -\DeclareOptionBeamer{hideallsubsections}[]{\beamer@nav@subsectionstyle{hide}} - -\DeclareOptionBeamer{width}{\beamer@sidebarwidth=#1} -\DeclareOptionBeamer{height}{\beamer@headheight=#1} -\DeclareOptionBeamer{left}{\def\beamer@sidebarside{left}} -\DeclareOptionBeamer{right}{\def\beamer@sidebarside{right}} -\ExecuteOptionsBeamer{left} -\DeclareOptionBeamer{projectlogoheight}[2em]{\beamercea@projectlogoheightaux=#1} -\ExecuteOptionsBeamer{projectlogoheight} -\DeclareOptionBeamer{projectlogo}{% -\beamercea@projectlogoheight=\beamercea@projectlogoheightaux -\advance\beamercea@skiplogo by -\beamercea@projectlogoheightaux -\pgfdeclareimage[height=\beamercea@projectlogoheight,interpolate=true]{projetlogo}{#1} -} - -\ProcessOptionsBeamer - - -\mode - -\ifdim\beamer@headheight>0pt -% if head height is 0pt, use default frame title - - \setbeamercolor*{frametitle}{parent=sidebar,fg=GrisCEA} - - \defbeamertemplate*{frametitle}{sidebar theme}% - {% - \nointerlineskip% - \vskip-\beamer@headheight% - \vbox to \beamer@headheight{% - \vfil - \leftskip=-\beamer@leftmargin% - \advance\leftskip by0.3cm% - \rightskip=-\beamer@rightmargin% - \advance\rightskip by0.3cm plus1fil% - {\usebeamercolor[fg]{frametitle}% - \usebeamerfont{frametitle}\insertframetitle\par} - {\usebeamercolor[fg]{framesubtitle}\usebeamerfont{framesubtitle}% - \insertframesubtitle\par}% - \vbox{}% - \vskip-1em - \vfil% - }% - } - - \defbeamertemplate*{headline}{sidebar theme} - {% - \begin{beamercolorbox}[wd=13cm]{frametitle} - \ifx\beamer@sidebarside\beamer@lefttext% - \else% - \hfill% - \fi% - \ifdim\beamer@sidebarwidth>0pt% - \usebeamercolor[bg]{logo}% - \vrule width\beamer@sidebarwidth height \beamer@headheight% - \hskip-\beamer@sidebarwidth% - \hbox to \beamer@sidebarwidth{\hss\vbox to - \beamer@headheight{\vss\hbox{\color{fg}\insertlogo}\vss}\hss}% - \else% - \vrule width0pt height \beamer@headheight% - \fi% - \end{beamercolorbox} - } -\fi - -\def\beamer@sidebarformat#1#2#3{% - \begin{beamercolorbox}[wd=\beamer@sidebarwidth,leftskip=#1,rightskip=1ex plus1fil,vmode]{#2} - \vbox{}% - #3\par% - \vbox{}% - \vskip-1.5ex% - \end{beamercolorbox} -} - -\defbeamertemplate*{section in sidebar}{sidebar theme} -{% - \vbox{% - \vskip1ex% - \beamer@sidebarformat{3pt}{section in sidebar}{\insertsectionhead}% - }% -} - -\defbeamertemplate*{section in sidebar shaded}{sidebar theme} -{% - \vbox{% - \vskip1ex% - \beamer@sidebarformat{3pt}{section in sidebar shaded}{\insertsectionhead}% - }% -} - -\defbeamertemplate*{subsection in sidebar}{sidebar theme} -{% - \beamer@sidebarformat{5pt}{subsection in sidebar}{\insertsubsectionhead}% -} - -\defbeamertemplate*{subsection in sidebar shaded}{sidebar theme} -{% - \beamer@sidebarformat{5pt}{subsection in sidebar shaded}{\insertsubsectionhead}% -} - - -\ifdim\beamer@sidebarwidth>0pt - - % Sidebar - \setbeamersize{sidebar width \beamer@sidebarside=\beamer@sidebarwidth} - \defbeamertemplate*{sidebar \beamer@sidebarside}{sidebar theme} - { - \beamer@tempdim=\beamer@sidebarwidth% - \advance\beamer@tempdim by -6pt% - {\usebeamerfont{title in sidebar}% - \vskip1.5em% - \hskip3pt% - \usebeamercolor[fg]{title in sidebar}% - \pgfuseimage{cealistlogo}% - \vskip10ex% - \ifdim\beamercea@projectlogoheight>0pt% - \hskip3pt\pgfuseimage{projetlogo}% - \fi% - \vskip\beamercea@skiplogo% - \ \ \ \ \pgfuseimage{lrqa} % - }% - {% -% \hskip3pt% -% \usebeamercolor[fg]{author in sidebar}% -% \usebeamerfont{author in sidebar}% -% \insertshortauthor[width=\beamer@tempdim,center,respectlinebreaks]\par% -% \vskip1.25em% - }% - %\insertverticalnavigation{\beamer@sidebarwidth}% - \vfill - \ifx\beamer@sidebarside\beamer@lefttext% - \else% - \usebeamercolor{normal text}% - \llap{\usebeamertemplate***{navigation symbols}\hskip0.1cm}% - \vskip2pt% - \fi% - }% - - \ifx\beamer@sidebarside\beamer@lefttext% - \defbeamertemplate*{sidebar right}{sidebar theme} - {% - \vfill% -% \llap{\usebeamertemplate***{navigation symbols}\hskip0.1cm}% - \vskip2pt} - \fi - % Margins - \setbeamersize{text margin left=0.5cm,text margin right=0.5cm} -\fi - -\defbeamertemplate*{footline}{cea theme} -{ - \leavevmode -\hskip\beamer@sidebarwidth -\usebeamercolor[fg]{footrule}{\rule{\paperwidth-\beamer@sidebarwidth}{0.6ex}} - \begin{pgftranslate}{\pgfpoint{\beamer@sidebarwidth}{0pt}} - \pgfuseimage{greenpixel} - \end{pgftranslate} - \hbox{ -\begin{beamercolorbox}[wd=\paperwidth,ht=2.3ex,dp=1.125ex,leftskip=.3cm,rightskip=.3cm]{title in head/foot} -\hskip\beamer@sidebarwidth \usebeamerfont{title in head/foot} -\pgfuseimage{listlogo}\hfill -\insertshorttitle\hfill\usebeamerfont{author in head/foot} -\insertshortdate -\hfill -\insertframenumber{} -\end{beamercolorbox} -} -\vskip0pt -} - -\addtobeamertemplate{headline} -{} -{\hskip\beamer@sidebarwidth -\usebeamercolor[fg]{headrule}{\rule{\paperwidth-\beamer@sidebarwidth}{0.6ex}} - - %\vskip-0.2pt - %\pgfuseshading{beamer@topshade} - %\vskip-2pt -} -\mode - diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/beamerthemeCea.sty b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/beamerthemeCea.sty deleted file mode 100755 index fe26df3361..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/beamerthemeCea.sty +++ /dev/null @@ -1,41 +0,0 @@ - -% Copyright 2006 by Fabrice Derepas -% -% This program can be redistributed and/or modified under the terms -% of the GNU Public License, version 2. - -\ProvidesPackage{beamerthemeCea}[2006/07/03] - -\PassOptionsToPackage{left}{beamerouterthemeCea} -\PassOptionsToPackage{width=2cm}{beamerouterthemeCea} - -\DeclareOptionBeamer{hideothersubsections}{\PassOptionsToPackage{hideothersubsections=#1}{beamerouterthemeCea}} -\DeclareOptionBeamer{hideallsubsections}{\PassOptionsToPackage{hideallsubsections=#1}{beamerouterthemeCea}} - -\DeclareOptionBeamer{width}{\PassOptionsToPackage{width=#1}{beamerouterthemeCea}} -\DeclareOptionBeamer{left}{\PassOptionsToPackage{left}{beamerouterthemeCea}} -\DeclareOptionBeamer{right}{\PassOptionsToPackage{right}{beamerouterthemeCea}} -\DeclareOptionBeamer{projectlogoheight}{\PassOptionsToPackage{projectlogoheight=#1}{beamerouterthemeCea}} -\DeclareOptionBeamer{projectlogo}{\PassOptionsToPackage{projectlogo=#1}{beamerouterthemeCea}} -\ProcessOptionsBeamer - - - -\mode - -\usecolortheme{Cea} - -\setbeamercolor*{titlelike}{use=structure,fg=structure.fg} - -%\useoutertheme[height=0pt]{Cea} -\useoutertheme[height=20pt]{Cea} - -\setbeamercolor{sidebar}{parent=palette primary} - -{\usebeamercolor{palette quaternary}} -{\usebeamercolor{palette primary}} - -\setbeamertemplate{sidebar canvas \beamer@sidebarside}[vertical shading][top=palette quaternary.bg,bottom=palette primary.bg] - -\mode - diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/cealist.eps b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/cealist.eps deleted file mode 100755 index 8b71d36aaf..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/cealist.eps +++ /dev/null @@ -1,1316 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner -%%Title: cea-list.eps -%%CreationDate: Mon Jul 3 23:35:53 2006 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 14 14 317 437 -%%EndComments -%%BeginProlog -% Use own dictionary to avoid conflicts -10 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -14.173228346456694 14.173228346456694 translate -% Translate to begin of first scanline -0 422 translate -301.99999999999994 -422 scale -% Image geometry -302 422 8 -% Transformation matrix -[ 302 0 0 422 0 0 ] -% Strings to hold RGB-samples per scanline -/rstr 302 string def -/gstr 302 string def -/bstr 302 string def -{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} -true 3 -%%BeginData: 32968 ASCII Bytes -colorimage -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -k5U"YP0X-khZ&*~> -k5U!9P$.jfhZ&*~> -JcC<$e,Op~> -kl1YGJ[1BC!9`8>J,~> -kl1XbJI%>C!3P/YJ,~> -JcC<$e,Op~> -kl64>Nj8ZJi;\<~> -kl62>NX,Wei;\<~> -JcC<$e,Op~> -l2Lb0J[1 -l2L`eJI%8A!*\=\J,~> -JcC<$e,Op~> -l2Lb0J[19@i;\<~> -l2L`eJI%5@i;\<~> -JcC<$e,Op~> -l2Lb0J[19@i;\<~> -l2L`eJI%5@i;\<~> -JcC<$e,Op~> -l2Lb0J[1 -l2L`eJI%8A!*\=\J,~> -JcC<$e,Op~> -l2LbHJ[1 -l2LacJI%8A!3P2ZJ,~> -JcC<$e,Op~> -kl1Y/J[1BC!70R&J,~> -kl1WdJI%>C!*\:[J,~> -JcC<$e,Op~> -kPkP.J[1HE!70O%J,~> -kPkNcJI%DE!*\7ZJ,~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -^&J)Gqg/<'qg/=VaoD6bs#Kt'a8Z.Qpj3"SZ2]=~> -^&J)UqiUq^qiUs&aoD7$s&o5^a8Z._plYX#Z2]=~> -^&J)Xqih(aqih*+aoD7&s'#;aa8Z.bplkd(Z2]=~> -_Z'\NH[G0@s*FaZe,TDomQ(;odJs5nn2^Mq!55lAJ,~> -_Z'\\P*569s,mB*e,TE1mTKRQdJs60n6,dS!6_kOJ,~> -_Z'\_Pa(T>s-*N/e,TE3mTTXTdJs62n65jV!7&(RJ,~> -`W#tPHfd?gHeJH!Hfd -`W#t^P3,pIP1fm8P3,mJP0;PY!R$Yi=oXZIrrC7AOoW\Zs*t~> -`W#taPic0LPhH*:Pic-MPg7t^!R?qn>5siLrrC@DPQ9"_s*t~> -a8Z-di&Lgb^#/hj]mJ]us*NW&!PNj>3WFHkrr@ED3<6bIs*t~> -a8Z.&i)p)DbMW=#bECges,u7=!R$Yc=oXZMrrA5[=THY"s*t~> -a8Z.(i*$/GcJSX&cBR9ks-2C?!R?qh>5siPrrA;]=ock&s*t~> -b5VLUHe^U^HbJJ>!.3H\!.3`*!.3K]!.4,5!.4Q&!571fJ,~> -b5VLcP2'1@P0;nc!0Z)>!0Z@A!0Z,?!0ZaL!0[1]!6a0tJ,~> -b5VLfPh]FCPg8=h!0l5A!0lLC!0l8B!0lmN!0m=`!7'C"J,~> -bl7^WHe:=ZHbJVB!.3 -bl7^eP1Wn -bl7^hPh9.?Pg8Il!0l)=!0lXG!0l,>!0lsPpfcJQJ,~> -c2Rcje2[PV^$G[u^!etAHg:V2^!o%BHh.1:Hh]VVs*t~> -c2Rd,e6)g8bNo0.bL9SoP3W&IbLBYpP4JVQP5&28s*t~> -c2Rd.e62m;cKkK1cI5qsPj88KcI?"tPk+hSPk\G;s*t~> -ci3ulcoD)Qmf*=$HdOhSHbJkI!PNj-3<6bbrr@E@3SaXb~> -ci4!.crg@3mf*=2P0mD5P0<:n!R$YR=THY;rrA5W=ks%-~> -ci4!0crpF6mf*=5PgNY8Pg8^s!R?qW=ock?rrA;Y>29..~> -d/O)mbrGd;nc&T9brGcNnG`K8c8blOp&>#=pc7.0J,~> -d/O*/buk%inc&TPbuk%0nG`KOc<1.1p&>#TpfZDPJ,~> -d/O*1but+mnc&TRbut+3nG`KQc<:44p&>#VpfcJQJ,~> -df0<\auKHKoD\f;b;fTM^%D=*]mIp_!58.,!.4K$h#Dm~> -df0 -df0 -e,KDplT+ojr;Z_BlT"rlpAY-+lT+lirVll2rHmij!58++!57VWpNu0c!.4M@!.4K$h#Dm~> -e,KE2lWO1Lr;Z_YlWF4NpAY-9lWO.KrVll@rK?JL!6b*9!6aV0pQFfE!0[-W!0[+[h#Dm~> -e,KE4lWX7Or;Z_[lWO:QpAY- -eGfMqmQ(;onG`R'H[G3A!581-!57e\s*FaZnGiN8mPt8op]'V@s*O>:!kir-mPt8oq>UGApc7.0 -J,~> -eGfN3mTKRQnG`R5P*59:!6b0;!6ae5s,mB*nGiNOmTBOQp]'V`s,usQ!m?aimTBOQq>UGXpfZDP -J,~> -eGfN5mTTXTnG`R8Pa(W?!7(B>!7("9s-*N/nGiNQmTKUTp]'Vas-3*S!m[$pmTKUTq>UGZpfcJQ -J,~> -ec,Vrn2UMr^$5OsHgs)rHhm[A^$n&^Hg1S1Hgj#qHhm[AHgj#qHg:Y2Hgj#qHi!aBHh]VVs*t~> -ec,W4n6#dTbN]$,P4;ZTP55+XbOA[7P3N#HP42TSP55+XP42TSP3W)IP42TSP5>1YP5&28s*t~> -ec,W6n6,jWcKY?/PjqoWPkk=ZcL>$;Pj/5JPjhiVPkk=ZPjhiVPj8;KPjhiVPktC[Pk\G;s*t~> -f)G_snMpSrjSo7oHh08orr@E93<=K?jSo4,nMpSrqYpPBo/Qhu^#f7oHgj#q^&7m1Hh]VVs*t~> -f)G`5nQ>jTjSo8(P4MiQrrA5P=TO]/jSo4CnQ>jTqYpPYo2u*WbN8a(P42TSbP_A?P5&28s*t~> -f)G`7nQGpWjSo8+Pk/)TrrA;R=ojl5jSo4EnQGpWqYpP[o3)0ZcK5'+PjhiVcM[\BPk\G;s*t~> -fDbhtni6\si;WhkHhBDrrr@E:3<=K?i;We(ni6\squ6YCof3&"^#AtkHgs)r^&@s2Hh]VVs*t~> -fDbi6nlYsUi;Wi$P4_uTrrA5Q=TO]/i;We?nlYsUqu6YZoiV -fDbi8nlc$Xi;Wi'PkA5WrrA;S=ojl5i;WeAnlc$Xqu6Y\oi_B\cJed'PjqoWcMdbCPk\G;s*t~> -f`(quo/Qeth#@AfpGi5#r;Qc1o/Qhu^"r\h]mK?2!.4YD!.4H#!IMN9rr@E:3W8sXHh]VVs*t~> -f`(r7o2u'Vh#@AtpK7KZr;Qc?o2u*WbME1!bEDI"!0[9[!0[(Z!KtX^rrA5Q=oJ@#P5&28s*t~> -f`(r9o3)-Yh#@B"pK@Q]r;QcBo3)0ZcJAL$cBRp(!0mE]!0m4]!L1mcrrA;S>5eI$Pk\G;s*t~> -g&D&!oJlr!^"NDcHhfZ%^&@s2^%45aHeJE!^%45aHi3p=3<4E[rrKf[oJlnurr2tFpc7.0J,~> -g&D&8oN;3XbLumqP5/5\bPhG@bO\j:P1fj8bO\j:P5P@T=TFW=rrL<+oN;0Wrr2t]pfZDPJ,~> -g&D&:oND9[cIr3tPkeJ_cMdbCcLY3>PhH':cLY3>Pl1RV=oaf@rrLE0oND6Zrr2t_pfcJQJ,~> -gA_/"oJlnuf)G``q`+YirVll2oJlr!^"32`Hh9;u^&@s2^&'ejHbJ&2!.4>u"+1(JHh]VVs*t~> -gA_/9oN;0Wf)G`nqcNpBrVll@oN;3XbLZ[nP4VlWbPhG@bPPECP0;JW!0ZtW"-W]aP5&28s*t~> -gA_/;oND6Zf)G`qqcX!FrVllCoND9[cIW!qPk8,ZcMdbCcMLcGPg7n\!0m+Z"-iicPk\G;s*t~> -g]%8#oJlobe,TAnqu?:K!.32p!.4>u!58@2"hf7C3I?,&rrBb)3 -g]%8:oN;1;e,TB0qu?:k!0Yh2!0ZtW!6b?@"j<'3=d"rtrrC77=TXcdP5&28s*t~> -g]%8*P9$rrC@:=osrgPk\G;s*t~> -h#@AfoJlobao;?fof3#!dJj3[oJt%n!PNjQ3 -h#@AtoN;1;ao;@(oiV9XdJj3ioNB<9!R$Z!=TQ^/pfZDPJ,~> -h#@B"oND7?ao;@*oi_?[dJj3loNKB:!R?r&=olp5pfcJQJ,~> -h#I%-!.2fe!.4B!!56_Y!58%c!.2fe!.4B!!.4K$h#Dm~> -h#I%M!0YG'!0["X!6`^g!6b% -h#I%N!0kS)!0m.[!7&pj!7(7@!0kS)!0m.[!0m7^h#Dm~> -h>[J%p,N,"aSu7Rof3#cc2RdWof3#!aSu6eloEl$J,~> -h>[J

-h>[J>p0%H\aSu7coi_@@c2Rdhoi_?[aSu7)lrr3EJ,~> -hZ!Shof:(m!.4E"!.2oh!58%ca8Z-dm5`u%J,~> -hZ!T!oi]?8!0[%Y!0YP*!6b% -hZ!T$oifE9!0m1\!0k\,!7(7@a8Z.(m98 -hZ*7/!56JR!.4E"!.2if!58(d!.2cdm5`u%J,~> -hZ*7O!6`I`!0[%Y!0YJ(!6b(=!0YD&m9/6EJ,~> -hZ*7P!7&[c!0m1\!0kV*!7(:A!0kP(m98 -hu<\'p,N,da8bin!.2cd!.4E"!56JR!57e\h#Dm~> -hu<\>p/qC=a8bj9!0YD&!0[%Y!6`I`!6ae5h#Dm~> -hu<\@p0%IAa8bj:!0kP(!0m1\!7&[c!7("9h#Dm~> -huEC1!.2cd!.4E"`W#pbpGi5#a8Z.QmlB2'J,~> -huECQ!0YD&!0[%Y`W#q$pK7KZa8Z._moeHGJ,~> -huECR!0kP(!0m1\`W#q&pK@Q]a8Z.bmonNHJ,~> -i;We(pGi5#`rG`m!56>Np,N,da8Z-dn2];(J,~> -i;We?pK7KZ`rGa8!6`=\p/qC=a8Z.&n6+QHJ,~> -i;WeApK@Q]`rGa9!7&O_p0%IAa8Z.(n64WIJ,~> -i;`L2!56GQ!.4H#!.2W`!58+e!.2`cn2];(J,~> -i;`LR!6`F_!0[(Z!0Y8"!6b+>!0YA%n6+QHJ,~> -i;`LS!7&Xb!0m4]!0kD$!7(=B!0kM'n64WIJ,~> -iVrn)pGi5#`rG`m_>aL^pGi5ea8Z.QnN#D)J,~> -iVrn@pK7KZ`rGa8_>aLupK7L>a8Z._nQFZIJ,~> -iVrnBpK@Q]`rGa9_>aM"pK@RBa8Z.bnQO`JJ,~> -iW&U3`r?$cpGi5#_>aMKpGi5#`r?$cni>M*J,~> -iW&US`r?%%pK7KZ_>aMYpK7KZ`r?%%nlacJJ,~> -iW&UT`r?%'pK@Q]_>aM\pK@Q]`r?%'nljiKJ,~> -ir9"*pGi5e`rGcn!.2K\!.4H#!56GQ!57q`h#Dm~> -ir9"ApK7L>`rGd9!0Y+s!0[(Z!6`F_!6aq9h#Dm~> -ir9"CpK@RB`rGd:!0k7u!0m4]!7&Xb!7(.=h#Dm~> -ir9"*pc/>$`r?%PpGi5e^Ampf!.2`c!.4;th#Dm~> -ir9"ApfRT[`r?%^pK7L>^Amq1!0YA%!0ZqVh#Dm~> -ir9"Cpf[Z^`r?%apK@RB^Amq2!0kM'!0m(Yh#Dm~> -j8T+mpGi5e`r?$cpc/>$^&J(ZpGp4mo/YV+J,~> -j8T,&pK7L>`r?%%pfRT[^&J(qpK>K8o3'lKJ,~> -j8T,)pK@RB`r?%'pf[Z^^&J(spKGQ9o30rLJ,~> -j8T++pGp4mpGi5#^&J)GpGi5e`r?$coJt_,J,~> -j8T+BpK>K8pK7KZ^&J)UpK7L>`r?%%oNBuLJ,~> -j8T+DpKGQ9pK@Q]^&J)XpK@RB`r?%'oNL&MJ,~> -j8T++pc/>$`r?$cpGokc!.4K$!.2`c!58"bh#Dm~> -j8T+BpfRT[`r?%%pK>-.!0[+[!0YA%!6b";h#Dm~> -j8T+Dpf[Z^`r?%'pKG3/!0m7^!0kM'!7(4?h#Dm~> -j8\j6`W#pbpc/>$]DhkXpGp4m!.4B!h#Dm~> -j8\jV`W#q$pfRT[]DhkopK>K8!0["Xh#Dm~> -j8\jW`W#q&pf[Z^]DhkqpKGQ9!0m.[h#Dm~> -jSo4,pc/>$`W,Zm!55uDpGp4m!.4B!h#Dm~> -jSo4CpfRT[`W,[8!6_tRpK>K8!0["Xh#Dm~> -jSo4Epf[Z^`W,[9!7&1UpKGQ9!0m.[h#Dm~> -jSo4,pc/>$`W,Zm\c2YVpc/>$`W,Tkh#Dm~> -jSo4CpfRT[`W,[8\c2YmpfRT[`W,U6h#Dm~> -jSo4Epf[Z^`W,[9\c2Yopf[Z^`W,U7h#Dm~> -jT"s7`W#pbpc/>$\c2YVpc/>$`W,Tkh#Dm~> -jT"sW`W#q$pfRT[\c2YmpfRT[`W,U6h#Dm~> -jT"sX`W#q&pf[Z^\c2Yopf[Z^`W,U7h#Dm~> -jT"s7`W#pbpc/>$\Gu:``W#pbp,Uq.J,~> -jT"sW`W#q$pfRT[\Gu;+`W#q$p0$2NJ,~> -jT"sX`W#q&pf[Z^\Gu;,`W#q&p0-8OJ,~> -jo5=opc/>$`W,Zm\,Z1_`W#pbp,Uq.J,~> -jo5>(pfRT[`W,[8\,Z2*`W#q$p0$2NJ,~> -jo5>+pf[Z^`W,[9\,Z2+`W#q&p0-8OJ,~> -jo5=-pc/>$`W,Zm\,QGTpc/>f`W,Wlh#Dm~> -jo5=DpfRT[`W,[8\,QGkpfRU?`W,X7h#Dm~> -jo5=Fpf[Z^`W,[9\,QGmpf[[C`W,X8h#Dm~> -jo5=-pc6:mpc/>$\,QGTpc/>$`W,Wlh#Dm~> -jo5=DpfYQ8pfRT[\,QGkpfRT[`W,X7h#Dm~> -jo5=FpfbW9pf[Z^\,QGmpf[Z^`W,X8h#Dm~> -jo5=-pc6=n!58.f!.23T!58.f!.2]b!.4H#h#Dm~> -jo5=DpfYT9!6b.?!0Xhk!6b.?!0Y>$!0[(Zh#Dm~> -jo5=FpfbZ:!7(@C!0jtm!7(@C!0kJ&!0m4]h#Dm~> -jo>'8`W#pbpc/>$[f?+_!.2]b!.4H#h#Dm~> -jo>'X`W#q$pfRT[[f?,*!0Y>$!0[(Zh#Dm~> -jo>'Y`W#q&pf[Z^[f?,+!0kJ&!0m4]h#Dm~> -jo>*9!.2]b!.1J$!.2]b!.4H#h#Dm~> -jo>*Y!0Y>$!0X*[!0Y>$!0[(Zh#Dm~> -jo>*Z!0kJ&!0j6^!0kJ&!0m4]h#Dm~> -jo>*9!.2]b!.1J$!.2]b!.4H#h#Dm~> -jo>*Y!0Y>$!0X*[!0Y>$!0[(Zh#Dm~> -jo>*Z!0kJ&!0j6^!0kJ&!0m4]h#Dm~> -jo>*9!.2]b!.1G#`W#pbpGq%/J,~> -jo>*Y!0Y>$!0X'Z`W#q$pK?;OJ,~> -jo>*Z!0kJ&!0j3]`W#q&pKHAPJ,~> -jo>*9!.2]b!.1G#`W#qOpGq%/J,~> -jo>*Y!0Y>$!0X'Z`W#q]pK?;OJ,~> -jo>*Z!0kJ&!0j3]`W#q`pKHAPJ,~> -jo>*9!.2]b!.1G#`;fQlh#Dm~> -jo>*Y!0Y>$!0X'Z`;fR7h#Dm~> -jo>*Z!0kJ&!0j3]`;fR8h#Dm~> -jo>*9!.2]b!.1G#`;fQlh#Dm~> -jo>*Y!0Y>$!0X'Z`;fR7h#Dm~> -jo>*Z!0kJ&!0j3]`;fR8h#Dm~> -jo>*9!.2]b!.1G#`W#pbpGq%/J,~> -jo>*Y!0Y>$!0X'Z`W#q$pK?;OJ,~> -jo>*Z!0kJ&!0j3]`W#q&pKHAPJ,~> -jo>*9!.2]b!.1J$!.2]b!.4H#h#Dm~> -jo>*Y!0Y>$!0X*[!0Y>$!0[(Zh#Dm~> -jo>*Z!0kJ&!0j6^!0kJ&!0m4]h#Dm~> -jo>*9!.2]b!.1J$!.2]b!.4H#h#Dm~> -jo>*Y!0Y>$!0X*[!0Y>$!0[(Zh#Dm~> -jo>*Z!0kJ&!0j6^!0kJ&!0m4]h#Dm~> -jo>'8`W#pbpc5F&!56AO!.4H#h#Dm~> -jo>'X`W#q$pfX\]!6`@]!0[(Zh#Dm~> -jo>'Y`W#q&pfab`!7&R`!0m4]h#Dm~> -jo5=-pc6=n!58.f!.0:snG`K8pGq%/J,~> -jo5=DpfYT9!6b.?!0Vp5nG`KOpK?;OJ,~> -jo5=FpfbZ:!7(@C!0i'7nG`KQpKHAPJ,~> -jo5=-pc6:mpc/>$JcG6>p,Uq.J,~> -jo5=DpfYQ8pfRT[JcG6>p0$2NJ,~> -jo5=FpfbW9pf[Z^JcG6>p0-8OJ,~> -jo5=-pc/>$`W,ZmJcG6>p,Uq.J,~> -jo5=DpfRT[`W,[8JcG6>p0$2NJ,~> -jo5=Fpf[Z^`W,[9JcG6>p0-8OJ,~> -jo5=opc/>$`W,ZmJcG6>p,Uq.J,~> -jo5>(pfRT[`W,[8JcG6>p0$2NJ,~> -jo5>+pf[Z^`W,[9JcG6>p0-8OJ,~> -jT#!8!.2]b!.4K$!.0:so)A]:p,Uq.J,~> -jT#!X!0Y>$!0[+[!0Vp5o)A]Qp0$2NJ,~> -jT#!Y!0kJ&!0m7^!0i'7o)A]Sp0-8OJ,~> -jT"s7`W#pbpc/>$JcG<@!.4E"h#Dm~> -jT"sW`W#q$pfRT[JcG<@!0[%Yh#Dm~> -jT"sX`W#q&pf[Z^JcG<@!0m1\h#Dm~> -jSo4,pc/>$`W,ZmJcG<@of:h-J,~> -jSo4CpfRT[`W,[8JcG<@oi^)MJ,~> -jSo4Epf[Z^`W,[9JcG<@oig/NJ,~> -jSo4,pc/>$`W,Zm!53s`o`"p)of:h-J,~> -jSo4CpfRT[`W,[8!6]rno`"p7oi^)MJ,~> -jSo4Epf[Z^`W,[9!7$/qo`"p:oig/NJ,~> -j8\j6`W#pbpc/>$JcGBB!.4B!h#Dm~> -j8\jV`W#q$pfRT[JcGBB!0["Xh#Dm~> -j8\jW`W#q&pf[Z^JcGBB!0m.[h#Dm~> -j8\j6!.2`c!.4H#JcGBBoJt_,J,~> -j8\jV!0YA%!0[(ZJcGBBoNBuLJ,~> -j8\jW!0kM'!0m4]JcGBBoNL&MJ,~> -j8T++pGp4mpGi5#JcGHD!.4>uh#Dm~> -j8T+BpK>K8pK7KZJcGHD!0ZtWh#Dm~> -j8T+DpKGQ9pK@Q]JcGHD!0m+Zh#Dm~> -j8T+mpGi5e`r?$cpc/>$JcGHDo/YV+J,~> -j8T,&pK7L>`r?%%pfRT[JcGHDo3'lKJ,~> -j8T,)pK@RB`r?%'pf[Z^JcGHDo30rLJ,~> -ir9"*pc/>$`r?%PpGi5eJcGNF!57tah#Dm~> -ir9"ApfRT[`r?%^pK7L>JcGNF!6at:h#Dm~> -ir9"Cpf[Z^`r?%apK@RBJcGNF!7(1>h#Dm~> -ir9"*pGi5e`rGcn!.0:sq#:>@o/YV+J,~> -ir9"ApK7L>`rGd9!0Vp5q#:>Wo3'lKJ,~> -ir9"CpK@RB`rGd:!0i'7q#:>Yo30rLJ,~> -iW&X4!.2`c!.4H#!53s`qYpPBni>M*J,~> -iW&XT!0YA%!0[(Z!6]rnqYpPYnlacJJ,~> -iW&XU!0kM'!0m4]!7$/qqYpP[nljiKJ,~> -iVrn)pGi5#`rG`m_>aPLHi?#*Hbf[O3SaXb~> -iVrn@pK7KZ`rGa8_>aPZP5\SaP/.+f=ks%-~> -iVrnBpK@Q]`rGa9_>aP]Pl=hdPed=h>29..~> -i;`L2!56GQ!.4H#!.2W`!587i!.2T_!.45rh#Dm~> -i;`LR!6`F_!0[(Z!0Y8"!6b7B!0Y5!!0ZkTh#Dm~> -i;`LS!7&Xb!0m4]!0kD$!7(IF!0kA#!0m"Wh#Dm~> -i;We(pGi5#a8Z.Qp,N,d`;fWn!.2Za!57k^h#Dm~> -i;We?pK7KZa8Z._p/qC=`;fX9!0Y;#!6ak7h#Dm~> -i;WeApK@Q]a8Z.bp0%IA`;fX:!0kG%!7((;h#Dm~> -huEC1!.2cd!.4E"`W#pbpc/>f`W,Beh#Dm~> -huECQ!0YD&!0[%Y`W#q$pfRU?`W,C0h#Dm~> -huECR!0kP(!0m1\`W#q&pf[[C`W,C1h#Dm~> -hu<\'p,N,da8bin!.2cd!.4E"!56GQ!.4/ph#Dm~> -hu<\>p/qC=a8bj9!0YD&!0[%Y!6`F_!0ZeRh#Dm~> -hu<\@p0%IAa8bj:!0kP(!0m1\!7&Xb!0lqUh#Dm~> -hZ*7/!56MS!.4B!!.2if!58%c!.2fe!.4,oh#Dm~> -hZ*7O!6`La!0["X!0YJ(!6b% -hZ*7P!7&^d!0m.[!0kV*!7(7@!0kS)!0lnTh#Dm~> -hZ!Shof:1p!.4;t!56SU!57ta!.2lg!57b[h#Dm~> -hZ!T!oi]H;!0ZqV!6`Rc!6at:!0YM)!6ab4h#Dm~> -hZ!T$oifN!0kY+!7't8h#Dm~> -h>[J%p,N,"bl7ZinMpT_c2RdWnMpSrbl7[VloEl$J,~> -h>[J

k8c2RdenQ>jTbl7[dlri-DJ,~> -h>[J>p0%H\bl7[-nQGq -h#I%-!.3#k!.4/p!56_Y!57h]!.3#k!57\Yh#Dm~> -h#I%M!0YY-!0ZeR!6`^g!6ah6!0YY-!6a\2h#Dm~> -h#I%N!0ke/!0lqU!7&pj!7(%:!0ke/!7'n6h#Dm~> -h#@AfoJlobdJj2nm5Y/ndJj3[m5Y/nd/O*Zof<&!pc7.0J,~> -h#@AtoN;1;dJj30m9'FPdJj3im9'FPd/O*hoi_ -h#@B"oND7?dJj32m90LSdJj3lm90LSd/O*koihB[pfcJQJ,~> -g]%8#oJlobeGfQ_Hgu!WRNA3SaXb~> -g]%8:oN;1;eGfQmP3Z6NP10F2P3Z6OP0;>S!0ZtW!WS>X=ks%-~> -g]%829..~> -gA_/"oJlnuf)G``kW&Zj^"32`Hg!Hi^"*,_Hh9<"^&NHS3SaXb~> -gA_/9oN;0Wf)G`nkZIqLbLZ[nP3?$KbLQUmP4VlYbQ!b#=ks%-~> -gA_/;oND6Zf)G`qkZS"OcIW!qPiu9NcIMppPk8,\cMs.(>29..~> -g&D&!oJlr!^"NDcHf[6fHeJE!^#_6SHeA>u^%45d^&S+Zpc7.0J,~> -g&D&8oN;3XbLumqP3#gHP1fj8bN2k,P1]d7bO\j=bQ%U*pfZDPJ,~> -g&D&:oND9[cIr3tPiZ'KPhH':cK/40Ph?!9cLY3AcN!p/pfcJQJ,~> -f`(quo/Qeth#@Afni6`aHh05uHbJ57!.4;t!IMNO3<=K?g]%8#o/Qetrr2tFpc7.0J,~> -f`(r7o2u'Vh#@AtnlZ":P4MfWP0;Y\!0ZqV!KtXt=TO]/g]%8:o2u'Vrr2t]pfZDPJ,~> -f`(r9o3)-Yh#@B"nlc(>Pk/&ZPg8(a!0m(Y!L1n$=ojl5g]%8 -f`(rbnMpT_i;WhkHh'0!^&S+Zni6\shu<\'ni6f!s8Te'3<=K?hu<\'ni6\srVlkEpc7.0J,~> -f`(rpnQ>k8i;Wi$P4D`XbQ%U*nlYsUhu<\>nlZ'Xs8U:5=TO]/hu<\>nlYsUrVlk\pfZDPJ,~> -f`(rsnQGq -fDbianN$VrjSo7oHgs)r^&@s2Hgs)sHbJM?!.45r!.4\E!57n_!IMN?rr@E93<4F(rr@E@3SaXb~> -fDbionQGmTjSo8(P4;ZTbPhG@P4;ZUP0;qd!0ZkT!0[<\!6an8!KtXdrrA5P=TFW_rrA5W=ks%-~> -fDbirnQPsWjSo8+PjqoWcMdbCPjqoXPg8@i!0m"W!0mH^!7(+29..~> -ec,Vrn2UMr^$5RsHgj#q^&.g0Hgj&qHg1P2]mK6/!.4VC!57k^!IMNDrrKf[n2UJqqu6YCpc7.0 -J,~> -ec,W4n6#dTbN]',P42TSbPV;>P42WSP3MuIbED?t!0[6Z!6ak7!KtXirrL<+n6#aSqu6YZpfZDP -J,~> -ec,W6n6,jWcKYB/PjhiVcMRVAPjhlVPj/2KcBRg%!0mB\!7((;!L1mnrrLE0n6,gVqu6Y\pfcJQ -J,~> -eGfMqmPt;p^$u%']mG+o3<6bgrrBb#3WFF+^$u(%HgWloHhm[A^$[o\Hg^n7]mK0-!587/!.4K$ -h#Dm~> -eGfN3mTBRRbOGN5bEA%V=THY@rrC71=oXWbbOGQ3P3uHQP55+XbO/O5P4&>NbED9r!6b6=!0[+[ -h#Dm~> -eGfN5mTKXUcLCi8cBOR]=ockDrrC@4>5sfecLCl6PjV]TPkk=ZcL+m9Pj\PPcBRa#!7(H@!0m7^ -h#Dm~> -e,KDplT+rk!58=1!58>Xlo>&mpAY-+lT+oj!58=1rHmij!58++!.4&ms*FaZp](5>lo>'Zq>UGA -pc7.0J,~> -e,KE2lWO4M!6b(lra=OpAY-9lWO1L!6b3q>UGX -pfZDPJ,~> -e,KE4lWX:P!7(NB!7(P-lrjCRpAY-UGZ -pfcJQJ,~> -df0<\auKHKoD\f;b;fTM^%D=)Hce>LHbK4S!.4K$h#Dm~> -df0 -df0 -dJj6\Hd+PN^%)+&Hd+PNHh%+9^!&J:HhRI>Hh]VVs*t~> -dJj6jP0I,0bOPT4P0I,0P4APPbKO)hP4nnUP5&28s*t~> -dJj6mPg*A3cLLo7Pg*A3Pk"bRcHKGlPkP+WPk\G;s*t~> -ci3ulcoD)Qmf*=$HdFbQ^$bn#HdFbRHbK+P!.4K$h#Dm~> -ci4!.crg@3mf*=2P0d>3bO5B1P0d>4P0 -ci4!0crpF6mf*=5PgES6cL1]4PgES7Pg8t%!0m7^h#Dm~> -c2Rcje2[PV^$G[uHdatTHgC\4]mJ3g!.4>;!.4K$h#Dm~> -c2Rd,e6)g8bNo0.P1*P6P3`,KbEC=W!0ZsR!0[+[h#Dm~> -c2Rd.e62m;cKkK1Pg`e9PjA>McBQd]!0m*T!0m7^h#Dm~> -bl7^WHe17XHftD/He17XHftD/He(1WHgq(13SaXb~> -bl7^eP1Nh:P3;iFP1Nh:P3;iFP1Eb9P48MH=ks%-~> -bl7^hPh0(=Pir&HPh0(=Pir&HPh'"29..~> -b5VLUHe^X]HfP,+HeUO\HfP,+HeLI\HbJnJ!.4Q&!571fJ,~> -b5VLcP2'4?P2lQBP1s+>P2lQBP1j%>P0<=o!0[1]!6a0tJ,~> -b5VLfPh]IBPiMcDPhT@APiMcDPhK:APg8at!0m=`!7'C"J,~> -a8Z-di&Lgb^#/kiHf7!bHf+l'Hf$g`HgC\3Hi,l(He\RN~> -a8Z.&i)p)DbMW@"P2TRDP2H<>P2BCBP3`,JP5JG_P2$"e~> -a8Z.(i*$/GcJS[%Pi5gGPi)N@Pi#XEPjA>LPl+\bPhZ4g~> -`W#tPHfd?gHeJH!Hfd -`W#t^P3,pIP1fm8P3,mJP0;V[!R$Ye=TO]/kl1Y+rfR9)gAc[~> -`W#taPic0LPhH*:Pic-MPg8%`!R?qj=ojl5kl1Y.rfdE.gAc[~> -_Z'\NH[G0@s*FaZe,TGpm5b2ne,TGploG)m!55rCJ,~> -_Z'\\P*569s,mB*e,TH2m90IPe,TH2lrj@O!6_qQJ,~> -_Z'\_Pa(T>s-*N/e,TH4m99OSe,TH4lrsFR!7&.TJ,~> -^&J)Gr-SB&r-QQcr-SB&r-JFWbQ%NfpGr5"!55f?J,~> -^&J)Ur0%"]r0#2%r0%"]r/q''bQ%O(pK@KY!6_eMJ,~> -^&J)Xr07.`r05>'r07.`r0.3,bQ%O*pKIQ\!7&"PJ,~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -kPkS6V1E]PEri,ghZ&*~> -JcC<$e,Op~> -kPkRb;Lnh4!!-!"hZ&*~> -kl1Y6JTHoo!7p'-J,~> -JcC<$e,Op~> -kl1XbJH1c3!3P/YJ,~> -kl63TNcP3Oi;\<~> -JcC<$e,Op~> -kl626NW9']i;\<~> -l2La[JTHim!2\WRJ,~> -JcC<$e,Op~> -l2L`]JH1]1!)hbTJ,~> -l2La[JTHfli;\<~> -JcC<$e,Op~> -l2L`]JH1Z0i;\<~> -l2La[JTHfli;\<~> -JcC<$e,Op~> -l2L`]JH1Z0i;\<~> -l2La[JTHim!2\WRJ,~> -JcC<$e,Op~> -l2L`]JH1]1!)hbTJ,~> -l2Lb7JTHim!7p*.J,~> -JcC<$e,Op~> -l2LacJH1]1!3P2ZJ,~> -kl1Y6JTHoo!2\TQJ,~> -JcC<$e,Op~> -kl1XbJH1c3!)h_SJ,~> -kPkS6V1E]PF8r)ns*t~> -JcC<$e,Op~> -kPkRb;Lnh4!<5sRs*t~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -mJkk9!7'R'!U%JaV#\2^rrD6VV#]]2s*t~> -mJkkB!8$30!p@b4k,na*qh>%Mlh@O^le)5f~> -mJkkA!7p-/!p@k:k,eX'K`;&@pT4Gaf`-I~> -mJkk9!7'X)!S4C3V#eU1L]7@opS@lQf`-I~> -mJkkB!8$<3!rL`\iiW?gbP-el!6b,>!:/;;J,~> -mJkkA!7p31!T(6DXTGoUpP8bKcM+F@n(@Yj~> -mJkk9!7'[*gnb%kpPStNp\(E`kLffb~> -mJkkB!8$<3!4(F`!R(4prrDfeXoRe?s*t~> -mJkkA!7p62!4CXb!RCFsrrDfeXT7hBs*t~> -mJkk9!7'd-!8cA)!60ut!:TTW!9`#7J,~> -mJkkB!8$E6!9;_7!6^?$!:TT`!:/;;J,~> -mJkkA!7p?5!9`":!7$Q'!:TT_!:SS?J,~> -mJkk9!7'g.!8c;'!61#u!58'%!9`#7J,~> -mJkkB!8$H7!9;Y5!6^B%!5nK4!:/;;J,~> -mJkkA!7pB6!9_q8!7$T(!64]6!:SS?J,~> -mJkk9!7'j/!;G!>!7$W)oVDQNf`-I~> -mJkkB!8$K8!V`nMXoR(6s7EGole)5f~> -mJkkA!7pE7!Va"PXT6q4s7EDnn(@Yj~> -mJkk9!7'j/!63KaNrSaJ!9`#7J,~> -mJkkB!8$K8!6`lp!ODTarrDrgXoRe?s*t~> -mJkkA!7pE7!7')r!4@jeoW8,^f`-I~> -mJkk9!7'j/d\Qs#OT, -mJkkB!8$K8d]NT1OT, -mJkkA!7pE7d]EN4OT,=#oW8,^f`-I~> -mJkk9!7'j/d\QrhOoGF,o;)HMf`-I~> -mJkkB!8$K8d]NT%OoGF5o<&)Zf`-I~> -mJkkA!7pE7d]EN#OoGF4o;r#]f`-I~> -mJkk9!7'j/d\QrhP5bOFntc?Lf`-I~> -mJkkB!8$K8d]NT%P5bOJnu_uYf`-I~> -mJkkA!7pE7d]EN#P5bONnuVo\f`-I~> -mJkk9!7'j/!7')j!3MFan>--Jf`-I~> -mJkkB!8$K8!8#`'!4J*k!W01mXoRe?s*t~> -mJkkA!7pE7!7oZ%!4A!i!4D@!!:SS?J,~> -mJkk9!7'g.!4C@R!9]RG!4D -mJkkB!8$K8!W0U]XoRdOrrBe&XoRe?s*t~> -mJkkA!7pB6!56pb!:Q-O!57m(!:SS?J,~> -mJkk9!7'g.!:SL8!8`n=n"g$If`-I~> -mJkkB!8$H7!Um>GXoRLGrrDrbXoRe?s*t~> -mJkkA!7pB6!UmGJXT7OIs6m&in(@Yj~> -mJkk9!7'a,!4CLV!9]RG!UmGbV#]]2s*t~> -mJkkB!8$E6!W0UaXoRXKrrMT&n#cZVf`-I~> -mJkkA!7p<4!57'f!9]RG!Um_jXT7hBs*t~> -mJkk9!7'^+!7'>q!54Tr!:T -mJkkB!8$?4!8#u.!5k$#!Um>^XoRe?s*t~> -mJkkA!7p93!7oo,!616&!UmGaXT7hBs*t~> -mJkk9!7'[*!63ll!NkOKrrCpBV#]]2s*t~> -mJkkB!8$<3!6a6%!Oh0TrrD*GXoRe?s*t~> -mJkkA!7p62!7'H'!O_*SrrD6KXT7hBs*t~> -mJkk9!7'X)!Van!V#e9mP5bO%l_OUEf`-I~> -mJkkB!8$92!r(0Lj/rF'l]_>Lqoe<.!:/;;J,~> -mJkkA!7p31!r(9Rj/i@%mum\NcKhS4n(@Yj~> -mJkk9!7'O&!U%JcV#e9d_Z'`4kNC_"cMbH4rrBIlV#]]2s*t~> -mJkkB!8$0/!U%YhXoZT'_Z'`4lg*U0f)X:u_qk=m^?Vj$le)5f~> -mJkkA!7p*.!U%bkXT?H)_Z'`4n*fH;f) -mJkk9!7'9t"6\7\cM>0RcN!(FrrM;jm\SkA!U$TKV#]]2s*t~> -mJkkB!8#p("7+^nfD3>afDk0SrrMH"m]PLJ!U$oTXoRe?s*t~> -mJkkA!7oj'"7P*tf(m>cf)P3VrrMT%m]GFI!U$lSXT7hBs*t~> -mJkk9!7$W)!U%JgV;hLUkIp#S!9`#7J,~> -mJkkB!8!82!pe%8m&o@J!UIYcXoRe?s*t~> -mJkkA!7m21!q4FBm&f:I!Un%jXT7hBs*t~> -mJkk9!7$]+!T'sCV;qRUkN&H>kLffb~> -mJkkB!8!>4!TUWQY2fN^lf>2Kle)5f~> -mJkkA!7m83!U$lTXlKE]n)USNn(@Yj~> -mJkk9!7$`,!8cn8jo5A -mJkkB!8!A5!9<7Fk5PM[j0n!N!9;`3J,~> -mJkkA!7m;4!9`OIjo5AE[H"@hkLffb~> -mJkk9!7$f.!Va:iV -mJkkB!8!G7!VaLoY3>lekKC0iXoQAls*t~> -mJkkA!7mA6!VaUrXm#cdkK^KoXT6Ans*t~> -mJkk9!7'a,!Vb1#rrMlNf`(s.jJD/A!U%JYV#eU1gAc[~> -mJkkB!8$B5!Vb@(rrMlSf`)!4ZK87TrrW)\bMB<%bP0`jJ,~> -mJkkA!7p<4!VbI+rrMlWf`)!8[H4OUrrM<.h5p_'pY,Xt~> -mJkk9!7'a,#3VhZ[Dpe\jo5DVcFs4Rg&D&tj/)2D!p@kBe"mⅈ\<~> -mJkkB!8$B5#OAOq^<>9sqr[n^pXdHkY--IX!7Tu2mf*@Of>H(?!8$0/J,~> -mJkkA!7p<4#4J[r^!>L'jo5MYf#G,"XkE^Sf&Nn#rrVB7`m_$if&6RY~> -mJkk9!7'a,!9a!N!3Q76qTf,So;11@!64#po`"p)bG>3ai;\<~> -mJkkB!8$B5!:09["1H+ba84Ef_Z7"7Y1imUbMo\srrBs[XoR)3s*t~> -mJkkA!7p<4!:TQ^!4DgGqUY\d!4DI$gA_/uiiVkQ!633a!7p*.J,~> -mJkk9!7'a,!9`%3g]%9!iMH2H!56RP!7'O&J,~> -mJkkB!8$B5!:/=@g]%9*iNDhQ!5m!_!8$0/J,~> -mJkkA!7p<4!:SUCg]%9)iN;bP!633a!7p*.J,~> -mJkk9!7'a,!9`%3h#@B;i2-)G!56RP!7'O&J,~> -mJkkB!8$B5!:/=@h#@B;i3)_P!5m!_!8$0/J,~> -mJkkA!7p<4!:SUCh#@B;i2uYO!633a!7p*.J,~> -mJkk9!7'a,!9`%3h#H9.o`"p)bG>3ai;\<~> -mJkkB!8$B5!:/=@h>[NQZJ_nXrrBs[XoR)3s*t~> -mJkkA!7p<4!:SUCh#@A^i2uYO!633a!7p*.J,~> -mJkk9!7'a,!9`%3h>[JghkfuF!56RP!7'O&J,~> -mJkkB!8$B5!:/=@h>[JqhlcVO!5m!_!8$0/J,~> -mJkkA!7p<4!:SUCh>[JphlZPN!633a!7p*.J,~> -mJkk9!7'a,!9`%3hZ!T=hPKlE!56RP!7'O&J,~> -mJkkB!8$B5!:/=@hZ!TAhQHMN!5m!_!8$0/J,~> -mJkkA!7p<4!:SUChZ!TEhQ?GM!633a!7p*.J,~> -mJkk9!7'a,!9`%3hZ!ShhPKlE!56RP!7'O&J,~> -mJkkB!8$B5!:/=@hZ!SnhQHMN!5m!_!8$0/J,~> -mJkkA!7p<4!:SUChZ!SqhQ?GM!633a!7p*.J,~> -mJkk9!7'a,!9`%3hu<\ih50cD!56RP!7'O&J,~> -mJkkB!8$B5!:/=@hu<\oh6-DM!5m!_!8$0/J,~> -mJkkA!7p<4!:SUChu<\rh6$>L!633a!7p*.J,~> -mJkk9!7'a,!9`%3huDK.o`"p)bG>3ai;\<~> -mJkkB!8$B5!:/=@huDK7o`"p/bH:isi;\<~> -mJkkA!7p<4!:SUChuDK6o`"p2bH1cqi;\<~> -mJkk9!7'a,!9`%3huDK.o`"p)bG>3ai;\<~> -mJkkB!8$B5!:/=@huDK7o`"p/bH:isi;\<~> -mJkkA!7p<4!:SUChuDK6o`"p2bH1cqi;\<~> -mJkk9!7'a,!9`%3huDK.o`"p)bG>3ai;\<~> -mJkkB!8$B5!:/=@huDK7o`"p/bH:isi;\<~> -mJkkA!7p<4!:SUChuDK6o`"p2bH1cqi;\<~> -mJkk9!7'a,!9`%3i;WfGgnjZC!56RP!7'O&J,~> -mJkkB!8$B5!:/=@i;WfGgog;L!5m!_!8$0/J,~> -mJkkA!7p<4!:SUCi;WfGgo^5K!633a!7p*.J,~> -mJkk9!7'a,!9`%3i;Wf.gnjZC!56RP!7'O&J,~> -mJkkB!8$B5!:/=@i;Wf3gog;L!5m!_!8$0/J,~> -mJkkA!7p<4!:SUCi;Wf6go^5K!633a!7p*.J,~> -mJkk9!7'a,!9`%3i;WejgnjZC!56RP!7'O&J,~> -mJkkB!8$B5!:/=@i;Wepgog;L!5m!_!8$0/J,~> -mJkkA!7p<4!:SUCi;Wesgo^5K!633a!7p*.J,~> -mJkk9!7'a,!9`%3i;_Q.o`"p[r9)Y-!58 -mJkkB!8$B5!:/=@i;_Q7o`"p[r9Mq:!6>$'!;GFOJ,~> -mJkkA!7p<4!:SUCi;_Q6o`+gWeu\qlr9jX[i;\<~> -mJkk9!7'a,!9`%3iVro7gSO<;!63]g!;G1HJ,~> -mJkkB!8$B5!:/=@iVro -mJkkA!7p<4!:SUCiVro@gTBlC!7'9"!;G1HJ,~> -mJkk9!7'a,!9`%3iVro'gSO<;!9`%3f`-I~> -mJkkB!8$B5!:/=@iVro,gTKrD!:/=@f`-I~> -mJkkA!7p<4!:SUCiVro/gTBlC!:SUCf`-I~> -mJkk9!7'a,!9`%3iVrnkhPC:U]tNh5!9`%3f`-I~> -mJkkB!8$B5!:/=@iVrnqhQ?pg_o(mA!:/=@f`-I~> -mJkkA!7p<4!:SUCiVrnthQ6je`l@EG!:SUCf`-I~> -mJkk9!7'a,!9`%3iVrn[iM?UXf&u>u!9`%3f`-I~> -mJkkB!8$B5!:/=@iVrndiN<6jg["/)!:/=@f`-I~> -mJkkA!7p<4!:SUCiVrnciN30hhXBb0!:SUCf`-I~> -mJkk9!7'a,!9`%3iW%l5!7'd-!9`%3f`-I~> -mJkkB!8$B5!:/=@iW%l>!8$E6!:/=@f`-I~> -mJkkA!7p<4!:SUCiW%l=!7p?5!:SUCf`-I~> -mJkk9!7'a,!9`%3iW%o6!8cl -mJkkB!8$B5!:/=@ir9#UiiW:Ak5PGIfrj!-J,~> -mJkkA!7p<4!:SUCiW%o>!9`ME!:SUCf`-I~> -mJkk9!7'a,!9`%3ir9#Aj.uahjo5>Dfqm@$J,~> -mJkkB!8$B5!:/=@ir9#Ej/rC&jo5>Hfrj!-J,~> -mJkkA!7p<4!:SUCir9#Ij/i=$jo5>Lfr`p,J,~> -mJkk9!7'a,!9`%3ir9#Aj/(i:!9`%3f`-I~> -mJkkB!8$B5!:/=@ir9#Ej0%JC!:/=@f`-I~> -mJkkA!7p<4!:SUCir9#Ij/qDB!:SUCf`-I~> -mJkk9!7'a,!9`%3ir9#(j/(i:!9`%3f`-I~> -mJkkB!8$B5!:/=@ir9#1j0%JC!:/=@f`-I~> -mJkkA!7p<4!:SUCir9#0j/qDB!:SUCf`-I~> -mJkk9!7'a,!9`%3ir9#(j/(i:!9`%3f`-I~> -mJkkB!8$B5!:/=@ir9#1j0%JC!:/=@f`-I~> -mJkkA!7p<4!:SUCir9#0j/qDB!:SUCf`-I~> -mJkk9!7'a,!9`%3ir9#(j/(i:!9`%3f`-I~> -mJkkB!8$B5!:/=@ir9#1j0%JC!:/=@f`-I~> -mJkkA!7p<4!:SUCir9#0j/qDB!:SUCf`-I~> -mJkk9!7'a,!9`%3ir9#(j/(i:!9`%3f`-I~> -mJkkB!8$B5!:/=@ir9#1j0%JC!:/=@f`-I~> -mJkkA!7p<4!:SUCir9#0j/qDB!:SUCf`-I~> -mJkk9!7'a,!9`%3ir9#(j/(i:!9`%3f`-I~> -mJkkB!8$B5!:/=@ir9#1j0%JC!:/=@f`-I~> -mJkkA!7p<4!:SUCir9#0j/qDB!:SUCf`-I~> -mJkk9!7'a,!9`%3ir9#(j/(i:!9`%3f`-I~> -mJkkB!8$B5!:/=@ir9#1j0%JC!:/=@f`-I~> -mJkkA!7p<4!:SUCir9#0j/qDB!:SUCf`-I~> -mJkk9!7'a,!9`%3ir9#(j/(i:!9`%3f`-I~> -mJkkB!8$B5!:/=@ir9#1j0%JC!:/=@f`-I~> -mJkkA!7p<4!:SUCir9#0j/qDB!:SUCf`-I~> -mJkk9!7'a,!9`%3ir9"lj/(i:!9`%3f`-I~> -mJkkB!8$B5!:/=@ir9"rj0%JC!:/=@f`-I~> -mJkkA!7p<4!:SUCir9"uj/qDB!:SUCf`-I~> -mJkk9!7'a,!9`%3ir9"dj/(i:!9`%3f`-I~> -mJkkB!8$B5!:/=@ir9"mj0%JC!:/=@f`-I~> -mJkkA!7p<4!:SUCir9"lj/qDB!:SUCf`-I~> -mJkk9!7'a,!9`%3irA#7jSo5Cfqm@$J,~> -mJkkB!8$B5!:/=@j8T,Vii_AB!:/=@f`-I~> -mJkkA!7p<4!:SUCirA#?jSo5Kfr`p,J,~> -mJkk9!7'a,!9`%3j8T,9ihb`9!9`%3f`-I~> -mJkkB!8$B5!:/=@j8T,>ii_AB!:/=@f`-I~> -mJkkA!7p<4!:SUCj8T,BiiV;A!:SUCf`-I~> -mJkk9!7'a,!9`%3j8T+mihb`9!9`%3f`-I~> -mJkkB!8$B5!:/=@j8T+sii_AB!:/=@f`-I~> -mJkkA!7p<4!:SUCj8T,!iiV;A!:SUCf`-I~> -mJkk9!7'a,!9`%3jSo52iMGW8!9`%3f`-I~> -mJkkB!8$B5!:/=@jSo57iND8A!:/=@f`-I~> -mJkkA!7p<4!:SUCjSo5:iN;2@!:SUCf`-I~> -mJkk9!7'a,!9`%3k5PJF^#>df^#]1nkLl]as*t~> -mJkkB!8$B5!:/=@k5PJJ_r7`u_rUgtle/Gns*t~> -mJkkA!7p<4!:SUCk5PJN`o4$"`oR."n(Fhqs*t~> -mJkk9!7'a,!9`%3li.+^f$:t2hk^=ujSo5Cfqm@$J,~> -mJkkB!8$B5!:/=@li.+^gXjKShlZt.jSo5Gfrj!-J,~> -mJkkA!7p<4!:SUCli.+^hU]]ShlQn0jSo5Kfr`p,J,~> -mJkk9!7'a,!9`%3li-t1gSFnqjSo5Cfqm@$J,~> -mJkkB!8$B5!:/=@li-t:gTCP.jSo5Gfrj!-J,~> -mJkkA!7p<4!:SUCli-t9gT:J,jSo5Kfr`p,J,~> -mJkk9!57Op!9`%3li-t1gSFo5jSo5Cfqe]Cg&HR~> -mJkkB!5mt!!:/=@li-t:gTCPBjSo5Gfrb>Lg&HR~> -mJkkA!641$!:SUCli-t9gT:JEjSo5KfrY8Kg&HR~> -mJkk9!3PD`!9`%3li-t1gSNs1!9`%3!8cE/J,~> -mJkkB!4M%i!:/=@li-t:gTCPRjSo5Gfrb>8g&HR~> -mJkkA!4Cth!:SUCli-t9gTBN9!:SUC!9`&8J,~> -mJkh8!7p?5!9`%3!8d)B!7'Ar!3P;]!9`"2g&HR~> -mJkhA!8H]:!:/=@!9 -mJkh@!8co=!:SUC!9`_K!7or-!4Cke!:SUC!4CM[J,~> -mJke7kPkPFfVJSnmJd13gnb"jj8T,BfVJVNkM-#e~> -mJke@!;l![!:/:?!S@5:rrC[+XoQZ*rrDB;XoYusg])d~> -mJke?kPkPNfW>/)mJd1;goUS%j8T,JfW>1^n([km~> -mJkb6!3Q(1!:TLY!9_q0#.;.@V6.Gop&>$;gnb#-j8T,Betr,Sjo9i~> -mJkb?!4M^@!:TLY!:/4=#/8!XY-u76p&>$Dgo^Y;j8T,Feunbbjo9i~> -mJkb>!4DXB!:TLY!:SL@#//$YXgQ1;p&>$CgoUS>j8T,Jeue\djo9i~> -mJkJ.!64R/!9_b+!4DJ!!7'Ds!4Chd!9_S&jo9i~> -mJkJ7!6ap4!:/%8!5A+*!8$&0!5@Im!:.k3jo9i~> -mJkJ6!7(-7!:S=;!58%)!7ou.!57Cl!:S.6jo9i~> -mJkJ.!9`nP!9_b+!7(6:!7'Ds!7p00!9_S&jo9i~> -mJkJ7!9`nP!:/%8!8$lC!8$&0!8HN5!:.k3jo9i~> -mJkJ6!9`nP!:S=;!7pfB!7ou.!8c`8!:S.6jo9i~> -mJkJ.nG`LOdA6j3o`"p:h5(,Gir9#Ac(tERjo9i~> -mJkM8!4)+o!:/%8!:TR[!8$&0!;GLQ!:.n4!6=4$J,~> -mJkM7!4D=r!:S=;!:TR[!7ou.!;GLQ!:S17!64.#J,~> -mJkM/!64O.!9_b+oD\g9hPC4ciVro@c(tEsjo9i~> -mJkM8!6am3!:/(9!4)4r!8$)1!6='u!:.n4!9<2@J,~> -mJkM7!7(*6!:S@ -mJkM/!9`kO!9_e,!64X1!7'Gt!9`>@!9_V'jSs`~> -mJkM8!9`kO!:/(9!6b!6!8$)1!:/VD!:.n4!;kmXJ,~> -mJkM7!9`kO!:S@ -mJkM/n,ECNd\Qs#oD\g9hk^=di;Wf?cD:N\jSs`~> -mJkP9!4)(n!:/(9!9<\N!8$,2!5map!:.q5!6aI'J,~> -mJkP8!4D:q!:S@ -mJkP0!64L-!9_e,o)A^8hk^>9i;Wf?cD:O(jSs`~> -mJkP9!6aj2!:/(9!;lBf!8$,2!:/SC!:.q5!9`GCJ,~> -mJkP8!7('5!:S@ -mJkP0mf*:Me"m&qo)A^8hkf61!9_\)!64(!J,~> -mJkS:!4)%m!:/+:!8I)E!8$/3!4(M^!:.t6!6aF&J,~> -mJkS9!4D7p!:SC=!8d;H!7p)1!4C_a!:S79!7'X)J,~> -mJkS1!64I,!9_h-!:TLY!7'N!!7p'-!9_\)!9`DBJ,~> -mJkS:!6ag1!:/+:!:TLY!8$/3!8HE2!:.t6!9`DBJ,~> -mJkS9!7($4!:SC=!:TLY!7p)1!8cW5!:S79!9`DBJ,~> -mJkS1!9`eM!9_h-nc&U7iM?OohZ!T=c_]Y$J,~> -mJkS:!9`eM!:/+:nc&U@iN<1(hZ!TAd&mASir=N~> -mJkS9!9`eM!:SC=nc&U?iN3+*hZ!TEd&d;Uir=N~> -mJkS1mJd1Le"uU7!7'T#!4CY_!;Fj:!7'U(J,~> -mJkS:mJd1Pe#r6@!8$55!P\HfrrDf?XoQr1s*t~> -mJkS9mJd1Te#i0?!7p/3!574g!;FjB!7p00J,~> -mJkS1mJd1Le"uU7!7'W$!4CS]d%pa2ir=N~> -mJkS:mJd1Pe#r6@!8$86!P\Hds3RnKn)F@t~> -mJkS9mJd1Te#i0?!7p24!57.ed&d<:ir=N~> -mJkS1mJd1\e"uU7!7'Z%!4CP\!4C4NiW"E~> -mJkS:mJd1\e#r6@!8$;7!P\HcrrBd\Y2TD2~> -mJkS9mJd1\e#i0?!7p55!57+d!56d^iW"E~> -mJd0gd\Z=1e>3/Ync&U7jeVssg&D''dA>h%J,~> -mJd0pe#i\Vm/I'keZJnmnc&U@jfSU,g&D',dB;I.J,~> -mJd0oe#`VXm/I'neZAhknc&U?jfJO.g&D'/dB2C-J,~> -mJd1Te"m'-m/I(KeYN9?nc&U7kG80uf)G`qe"m&HiW"E~> -mJd1Te#i]6m/I(OeZJoHnc&U@kH4j/qq(iJf@-l&[c.7:~> -mJd1Te#`W5m/I(SeZAiGnc&U?kH+a0f)Ga$e#`VXiW"E~> -m/I(*e>;I1etiAKnG`L6l(nEokLBM3[FD#Qf&?XZ~> -m/I(/eZJnXlMoG -m/I(2eZAhZlMoG;!4D=r!7pD:!QOTXrrBa^XT75:s*t~> -li-smetiA[lMgjdf;/JmnG`L6l_OX%pX9'An'n06pYl.&~> -m/I+`^=KFea6N[)[b%Y^e+!A;fB]R?bP0Hb!Um>EXoS4Ts*t~> -li-sueu\qllMgjlf<#&(nG`L>l`C35pX9'Bn$U]J!;GIPJ,~> -li-tRetiB'lMgnRXk9HMkOAKOcL%G/`ok\J!:SL8!4CbbJ,~> -li-tReuf#5lMgnR[b.__kOAKOfC#dCZHMFWrrDN=XoQ2os*t~> -li-tReu\r8lMgnR[FhS]kOAKOf']XA[Eds]rrDN=XT6&ms*t~> -lMgjtf;7[1!63]gn,EC5nYH;pf'gf^!7'2m!7p*.J,~> -lMgk)f<,,Nl2Le]bM'*!ZL@enfC?!F^>&,"rrCO"XoR57s*t~> -lMgk(f<+69!7'<#!4D:q!7p\B!kmIZbPqRnf<#&0i;\<~> -l2LbPg!0TSk5PGMgWffUn,ECNp!*WikO6Fj!;G-k!;GFOJ,~> -l2LbPg"-5ak5PGMgXcGcn,ECRp"'9"lgMjn!;G-t!;GFOJ,~> -l2LbPg"$/dk5PGMgXZAfn,ECVp!s3$n*e9r!;G-s!;GFOJ,~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -JcC<$e,Op~> -%%EndData -showpage -%%Trailer -end -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/cealist.pdf b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/cealist.pdf deleted file mode 100755 index 573a2ff375..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/cealist.pdf and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/greenpixel.eps b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/greenpixel.eps deleted file mode 100755 index 36a65bd7fe..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/greenpixel.eps +++ /dev/null @@ -1,41 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner -%%Title: greenpixel.eps -%%CreationDate: Tue Jul 4 00:06:18 2006 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 14 14 16 16 -%%EndComments -%%BeginProlog -% Use own dictionary to avoid conflicts -10 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -14.173228346456694 14.173228346456694 translate -% Translate to begin of first scanline -0 0.99212598425196852 translate -0.99212598425196852 -0.99212598425196852 scale -% Image geometry -1 1 8 -% Transformation matrix -[ 1 0 0 1 0 0 ] -% Strings to hold RGB-samples per scanline -/rstr 1 string def -/gstr 1 string def -/bstr 1 string def -{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} -true 3 -%%BeginData: 32 ASCII Bytes -colorimage -!- -!<7Q~> -!!%N~> -%%EndData -showpage -%%Trailer -end -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/greenpixel.pdf b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/greenpixel.pdf deleted file mode 100755 index b0f180172b..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/greenpixel.pdf and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/interface.pdf b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/interface.pdf deleted file mode 100755 index 2befe0f6d9..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/interface.pdf and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/list_g.eps b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/list_g.eps deleted file mode 100755 index 1b61ee8c1d..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/list_g.eps +++ /dev/null @@ -1,339 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%Title: (list_g.eps) -%%CreationDate: (Mon Sep 25 18:22:24 2006) -%%BoundingBox: 0 0 72 25 -%%HiResBoundingBox: 0 0 72 25 -%%DocumentData: Clean7Bit -%%LanguageLevel: 1 -%%Pages: 1 -%%EndComments - -%%BeginDefaults -%%EndDefaults - -%%BeginProlog -% -% Display a color image. The image is displayed in color on -% Postscript viewers or printers that support color, otherwise -% it is displayed as grayscale. -% -/DirectClassPacket -{ - % - % Get a DirectClass packet. - % - % Parameters: - % red. - % green. - % blue. - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - compression 0 eq - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/DirectClassImage -{ - % - % Display a DirectClass image. - % - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { DirectClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayDirectClassPacket } image - } ifelse -} bind def - -/GrayDirectClassPacket -{ - % - % Get a DirectClass packet; convert to grayscale. - % - % Parameters: - % red - % green - % blue - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 eq - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/GrayPseudoClassPacket -{ - % - % Get a PseudoClass packet; convert to grayscale. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 eq - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassPacket -{ - % - % Get a PseudoClass packet. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - compression 0 eq - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassImage -{ - % - % Display a PseudoClass image. - % - % Parameters: - % class: 0-PseudoClass or 1-Grayscale. - % - currentfile buffer readline pop - token pop /class exch def pop - class 0 gt - { - currentfile buffer readline pop - token pop /depth exch def pop - /grays columns 8 add depth sub depth mul 8 idiv string def - columns rows depth - [ - columns 0 0 - rows neg 0 rows - ] - { currentfile grays readhexstring pop } image - } - { - % - % Parameters: - % colors: number of colors in the colormap. - % colormap: red, green, blue color packets. - % - currentfile buffer readline pop - token pop /colors exch def pop - /colors colors 3 mul def - /colormap colors string def - currentfile colormap readhexstring pop pop - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { PseudoClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayPseudoClassPacket } image - } ifelse - } ifelse -} bind def - -/DisplayImage -{ - % - % Display a DirectClass or PseudoClass image. - % - % Parameters: - % x & y translation. - % x & y scale. - % label pointsize. - % image label. - % image columns & rows. - % class: 0-DirectClass or 1-PseudoClass. - % compression: 0-none or 1-RunlengthEncoded. - % hex color packets. - % - gsave - /buffer 512 string def - /byte 1 string def - /color_packet 3 string def - /pixels 768 string def - - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - x y translate - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - currentfile buffer readline pop - token pop /pointsize exch def pop - /Times-Roman findfont pointsize scalefont setfont - x y scale - currentfile buffer readline pop - token pop /columns exch def - token pop /rows exch def pop - currentfile buffer readline pop - token pop /class exch def pop - currentfile buffer readline pop - token pop /compression exch def pop - class 0 gt { PseudoClassImage } { DirectClassImage } ifelse - grestore -} bind def -%%EndProlog -%%Page: 1 1 -%%PageBoundingBox: 0 0 72 25 -userdict begin -DisplayImage -0 0 -72 25 -12.000000 -72 25 -1 -0 -0 -8 -F8F9F9 -D8DBDD -E4E6E7 -CFD3D5 -ECEDEE -C5CACC -FFFFFF -B2B8BB -050505050505050505050502060606060606060602050707070707070501000606060606 -060606060606060606060606060606060606060606060606060606060005050506060606 -070707070707070707070701060606060606000507070707070707070707070406060606 -060606060606060606060606060606060606060606060606060606060307070706060606 -070707070707070707070701060606060606030707070707070707070707070506060606 -060606060606060606060606060606060606060606060606060606040707070706060606 -070707070707070707070701060606060606010707070707070707070707070506060606 -060606060606060606060606060606060606060606060606060604070707070706060606 -070707070707070707070701060606060606060107070707070707070707030006060606 -060606060606060606060606060606060606060606060606060407070707070706060606 -070707070707070707070701060606060606060600020105050505030100060606060606 -060606060606060602010505070707060606060606060600010707070707070706060606 -070707070707070707070701060606060606060400060606060606060606040606060606 -060606060606040507070707070707060606060606020307070707070707070702040006 -070707070707070707070701060606060606060507070505010103050507070606060606 -060606060602070707070707070707060606020507070707070707070707070707070406 -070707070707070707070701060606060606060507070707070707070707070606060606 -060606060007070707070707070707060606010707070707070707070707070707070406 -070707070707070707070701060606060606060507070707070707070707070606060606 -060606060107070707070707070707060606010707070707070707070707070707070406 -070707070707070707070701060606060606060507070707070707070707070606060606 -060606060507070707070707070707060606010707070707070707070707070707070406 -070707070707070707070701060606060606060507070707070707070707070606060606 -060606000707070707070707070707060606000401070707070707070707070701040006 -070707070707070707070701060606060606060507070707070707070707070606060606 -060606040707070707070707070104060606060604070707070707070707070704060606 -070707070707070707070701060606060606060507070707070707070707070606060606 -060606040707070707070707010606060606060604070707070707070707070704060606 -070707070707070707070701060606060606060507070707070707070707070606060606 -060606010707070707070707010606060606060604070707070707070707070704060606 -070707070707070707070701060606060606060507070707070707070707070606060606 -060606010707070707070707010606060606060604070707070707070707070704060606 -070707070707070707070701060606060606060507070707070707070707070606060606 -060606050707070707070707020606060606060604070707070707070707070704060606 -070707070707070707070701060606060606060507070707070707070707070606060606 -060105070707070707070707040606060606060604070707070707070707070704060606 -070707070707070707070705040404060606060507070707070707070707070204000606 -060707070707070707070707000606060606060604070707070707070707070703040404 -070707070707070707070707070703060606060507070707070707070707070707010606 -060707070707070707070705060606060606060604070707070707070707070707070707 -070707070707070707070707070702060606060507070707070707070707070707000606 -060707070707070707070701060606060606060604070707070707070707070707070703 -070707070707070707070707070700060606060507070707070707070707070705060606 -060707070707070707070500060606060606060604070707070707070707070707070702 -070707070707070707070707070506060606060507070707070707070707070703060606 -060707070707070707070406060606060606060604070707070707070707070707070706 -050707070707070707070707070206060606060207070707070707070707070704060606 -060707070707070703000606060606060606060606050707070707070707070707070306 -000305050505050505050505050006060606060602050505050505050505050506060606 -060505050501020006060606060606060606060606000305050505050505050505050406 - -end -%%PageTrailer -%%Trailer -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/list_g.gif b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/list_g.gif deleted file mode 100755 index b879f0a343..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/list_g.gif and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/list_g.pdf b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/list_g.pdf deleted file mode 100755 index bdc30d21d5..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/list_g.pdf and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/logocat.png b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/logocat.png deleted file mode 100755 index 9205826d91..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/logocat.png and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/logoceaquadri2002.eps b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/logoceaquadri2002.eps deleted file mode 100755 index 09cfe51773..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/logoceaquadri2002.eps +++ /dev/null @@ -1,1620 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%Title: (logoceaquadri2002.eps) -%%CreationDate: (Mon Sep 25 18:22:10 2006) -%%BoundingBox: 0 0 198 197 -%%HiResBoundingBox: 0 0 198 197 -%%DocumentData: Clean7Bit -%%LanguageLevel: 1 -%%Pages: 1 -%%EndComments - -%%BeginDefaults -%%EndDefaults - -%%BeginProlog -% -% Display a color image. The image is displayed in color on -% Postscript viewers or printers that support color, otherwise -% it is displayed as grayscale. -% -/DirectClassPacket -{ - % - % Get a DirectClass packet. - % - % Parameters: - % red. - % green. - % blue. - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - compression 0 eq - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/DirectClassImage -{ - % - % Display a DirectClass image. - % - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { DirectClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayDirectClassPacket } image - } ifelse -} bind def - -/GrayDirectClassPacket -{ - % - % Get a DirectClass packet; convert to grayscale. - % - % Parameters: - % red - % green - % blue - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 eq - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/GrayPseudoClassPacket -{ - % - % Get a PseudoClass packet; convert to grayscale. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 eq - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassPacket -{ - % - % Get a PseudoClass packet. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - compression 0 eq - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassImage -{ - % - % Display a PseudoClass image. - % - % Parameters: - % class: 0-PseudoClass or 1-Grayscale. - % - currentfile buffer readline pop - token pop /class exch def pop - class 0 gt - { - currentfile buffer readline pop - token pop /depth exch def pop - /grays columns 8 add depth sub depth mul 8 idiv string def - columns rows depth - [ - columns 0 0 - rows neg 0 rows - ] - { currentfile grays readhexstring pop } image - } - { - % - % Parameters: - % colors: number of colors in the colormap. - % colormap: red, green, blue color packets. - % - currentfile buffer readline pop - token pop /colors exch def pop - /colors colors 3 mul def - /colormap colors string def - currentfile colormap readhexstring pop pop - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { PseudoClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayPseudoClassPacket } image - } ifelse - } ifelse -} bind def - -/DisplayImage -{ - % - % Display a DirectClass or PseudoClass image. - % - % Parameters: - % x & y translation. - % x & y scale. - % label pointsize. - % image label. - % image columns & rows. - % class: 0-DirectClass or 1-PseudoClass. - % compression: 0-none or 1-RunlengthEncoded. - % hex color packets. - % - gsave - /buffer 512 string def - /byte 1 string def - /color_packet 3 string def - /pixels 768 string def - - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - x y translate - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - currentfile buffer readline pop - token pop /pointsize exch def pop - /Times-Roman findfont pointsize scalefont setfont - x y scale - currentfile buffer readline pop - token pop /columns exch def - token pop /rows exch def pop - currentfile buffer readline pop - token pop /class exch def pop - currentfile buffer readline pop - token pop /compression exch def pop - class 0 gt { PseudoClassImage } { DirectClassImage } ifelse - grestore -} bind def -%%EndProlog -%%Page: 1 1 -%%PageBoundingBox: 0 0 198 197 -userdict begin -DisplayImage -0 0 -198 197 -12.000000 -198 197 -1 -0 -0 -256 -A3ACB2 -C4C9CD -FFD18D -88C04E -FDFCFA -FBAD25 -F4F7F9 -8D9AA1 -8A969E -C7CDD1 -FAFCFC -5E7078 -D4E4BD -CCD0D4 -E1E3E5 -B2B9BE -FCB135 -FFEBCF -D6D9DD -FFFCFC -D0D2D5 -F5F5F6 -85C04E -A9B2B8 -5C6E78 -FAFAFD -8CC154 -5D6E76 -FAFDFF -E6E9EB -5C7078 -F5F9FB -DBDEE1 -7A8991 -D1D6D9 -75858D -62727C -DDE0E3 -FDFAFA -EDF0F2 -B4D591 -62747C -B4BBC0 -BDC3C9 -929DA5 -60747A -FEFDFA -D9DCDF -E4E6E9 -718189 -64767E -BBC1C6 -859199 -86BE4A -697A82 -F1F2F5 -FDC46B -808E95 -ECEEF0 -E9ECEE -F6F8F6 -B8BEC3 -6E7E86 -60747C -F3F2F3 -C0C7CA -ADB4BA -FBFBFB -E9EAED -FCF5EB -FAB134 -F2F4F5 -85BE4C -9DA6AD -FDDDAC -96A1A8 -FBAE2A -8C989F -FBF9F3 -99A4AA -9BA5AC -AEB6BC -77868E -939FA5 -6B7C84 -677880 -5D7077 -FEFBFC -EEEDEE -829199 -A8B1B7 -7E8C94 -586E77 -87BF51 -5A6D76 -5E7179 -60717A -596C74 -9EA8AE -5A7078 -7C8A91 -FEFEFA -98A2A9 -FAFCF9 -607078 -95A0A7 -566C75 -FAAF31 -A6AFB5 -C2DCA4 -F0F0F1 -CEE3B5 -919CA3 -839097 -5A6D74 -89BF4C -D0E4BD -6C7C84 -FCB132 -5C707A -607279 -6C7E86 -FCB33A -FCFBF8 -5E7279 -87959C -6F8088 -C7CBCF -5A6E75 -FBF8F8 -FCBC57 -95C65E -63747E -73828A -596E75 -A0A9AF -5F727C -8EC153 -9CA4AB -7C8B92 -5F747C -C0C3C6 -576D76 -80BD45 -62767E -99C768 -FEFEF9 -5D727A -9DA7AF -E8E9EB -86949B -86939B -65787F -65777F -6D7E85 -F4F2F3 -6B7C83 -F3F1F2 -8F9BA2 -6A7A83 -627279 -7A888F -74848B -73858D -ABB6BC -6C7D85 -86C04A -82BE48 -718088 -707F87 -61737C -FFFEFE -88C050 -FDFEFF -61737B -FFFFFC -61727B -FDFDFC -61727A -FDFDFD -62737B -60737C -60737B -5F737B -FDFEFC -5F737A -5A6E77 -60727A -5E727A -61737A -FDFCFD -62727B -FCFDFD -5F727A -FDFDFE -5A6E76 -5F727B -5B6E76 -5A6F77 -62727A -61727C -5C6F77 -5B6E77 -60727B -62737A -60737A -F9F9F9 -6E7F87 -5E737B -F0F1F2 -5B6F76 -F8F8FA -F8FBFD -F8FCFF -ABB3B9 -60737D -5E737A -5A6F76 -5E727B -63737C -6E7D86 -8BC153 -FEFDF8 -F7FAFA -FAF9FB -63727C -6D7B82 -A3B0B9 -F7F7F7 -B0B7BE -ECEBEB -F7B134 -68777E -FCB437 -E9F1DE -5E747B -FEE2B9 -F0EFF1 -86C050 -72838B -72848B -FECD83 -83BF4D -F8F6FA -F0F3F3 -61757D -61767F -7B8B93 -88C052 -FAB131 -F3F3F8 -B8C0C5 -63737D -6D7D85 -FCB134 -FFFFFF -FF113810F910FE76FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFE761046824AAF117A4C46466B4610FEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEE776466B4C4A -384C10FE461010F9FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFE10FE46FE4C8246FEFE10FE10FE46FEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE76FE1046 -E9F946FE10F910FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFE10F910FE76E9F10576104646FEE710101010101010101010 -101010101010101010101010101010101010101010101010101010101010101010101010 -101010101010101010101010101010101010101010101010101010101010101010101010 -101010101010101010101010101010101010101010101010101010101010101010101010 -101010101010101010101010101010101010101010101010101010101010101010101010 -101010101010101010101010101010101010101010101010101010101010467AE7764C38 -4E384C050505050505050505050505050505050505050505050505050505050505050505 -050505050505050505050505050505050505050505050505050505050505050505050505 -050505050505050505050505050505050505050505050505050505050505050505050505 -050505050505050505050505050505050505050505050505050505050505050505050505 -050505050505050505050505050505050505050505050505050505050505050505050505 -050505050505050505050505050505058211FF13EC020202020202020202020202020202 -020202020202020202020202020202020202020202020202020202020202020202020202 -020202020202020202020202020202020202020202020202020202020202020202020202 -020202020202020202020202020202020202020202020202020202020202020202020202 -020202020202020202020202020202020202020202020202020202020202020202020202 -0202020202020202020202020202020202020202020202020202020202020202024A45AF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADB3FFFFFFFFFFB8FFFFADFF -FFABFFB3FFFFABABABFFFF04ABFFFFABABFFADFFADFFFFFFFFFFFFB3FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF042EFFFFFFAFFFFFFFFF0404FFFFADADFFFFFFFFFFFFAFB8FFFF -FFFFFFFFABABB1FFFF04FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1FFB1AFFFABB1FF -FFFFFFAFFFFFFFC2FFFFFFFFFFFFFFFFFFB3FFFFFFFFFFFFFFFFC0AD43ABB1FFFFFFFFFF -FFFFFFFFFF43FFB3FFB3FFAFFFFF13AFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFABFF43AFAF2EFFFFFFFFABFFFFFFFFABFFFFFFADADADADB3FFB1AFAFB1FF -ABABAB13FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB804FFFFFFADFFABFFFF -FFFFFFB3ABABFFFFFFFFFFFFFFC0C2BEFFADADB1FFADB8AFFFFFFFFFFFABFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFB1FFFFFFAB26FFFFB1FFAFAFFFFFFFFFFFFFFFFFADAD -ADB1FFB3FFB8FFB1FFFFFFFF2EAFFFFFFFFFFFFFFFFF04FFB3AFAFB1FFBEADFFABFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFB3B3FFFFB1ABBEBEFFADAD -FFABAFAFABFFFFB1ADFFABABABABB1B1FFFFFFFFB8ADADFFFFFFFFC2FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFB3FFAFAFAFADAFFFFFB1FFFFFF2EABB3FFADADB1B3AFFFB3FFFF -C2FFAB13C0FFABABFFFFADADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFB1B3FFFFB1FF2E -FFFF43FFFFB1FFB1FFFFB3B3FFFFFFFFBEB1B1FFB1C2FFFFFFADADFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF13BE1CADABAFAF13ABB1ADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFADFFC2ADB1FF7BB8ADADFFFFFFB3FFFFB8AFAFBEABFFB1FFFFFFB3ADB8AF -ABFFFFFFFFFFADC043ABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABFFAFFFFFFFFFAFABB1 -FFB1FFFFFFADFFFFFF43FFFFFF04FFFFB3ABAFB8B1ABABABAFAFFFFFABABFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFC0FFABAFAFB1FFFFFFFFADFFFFFFFFFFB3FFFFFFB1FFFFABB8AD -FF13ABFFB1AFB1ABAFFFADB1ABFFFFFFFFFFFFFFFFFFFFB3AFAFB1ABB3ADBEB8AFC2FFAF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFFFB313ABADAD1304C0950D -2A00694D9739717D2C5017331237ABABFFFFAB2EC2FFFFFFFFFFFFAFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFABFFAF04FFFFFF4313AB0A1D7F5162694D343934087049D68D2006B3 -B1FFB1FFABFFADADFFFFADADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABFFFFFFFFFFFFB8 -FFFFFFE4254142945308347134082C50420130D4B3FFFFFFFFAD0AADFFFFB1AFFFFFFFFF -FFFFFFFF7BADC0B1B313ABB8ABBEFFB3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFADB1FFFFBEFF44FB4B2136291E5EC55ED2C6C6C6C35E5E5F297E084212D4 -04ADAFAFAFFFABABFFB8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFC0ADFFABABD40E2A53 -5255CB18615ECAC9C9CAC5C55EC59390EF075112E0FFFFFFB1FFABABFFAFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFF43ADFFB1FFABAF250F705299C4C9725EC3D2C6C6C6C55ED2B5 -99A2070F20B1FFFFB3AB13ADADFFFFFFFFFFFFFFFFFFAB57ADB32EFF0AE0FFB8ABAFAF57 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1374107540B5EC9C4C4 -B7C1B6B6BDAEAEAAAAAAB5B5C156C5C584A18712FFFFFFFFFFFFFFABFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFADAD2EAB27337D99C65E0B60C1B9B6B4BFAAAAB5B5B5B6B2C8BB0B5E -C684A1D61DC0AFAF43ADFFABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFADFF26AF3BA4F7 -321BC51E1E88D7CBAAAAB0B9B6B5B5B7B45FAA18BAD232592A1DAB26B8B12EAFFFFFFFFF -FFFFFFFF0AABAFAFFA1721528A30C0ADB3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF191487851EC35F2DB6B6B6B2DBB4AAB0AEB0AAAAAEAEAEAEAAB7B5B47C1E -C3329E2B3BAFAFB8FFABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFE40D50CFC6C360AEC4 -3FB0AEB4AEB6B7AAAAAAAAAAAAAEB6AEB2AEB9C4C9BA36704158FFB1FFC2FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFD17F4BDCC518C1AEB0B4B4BFBDB6B0AAAAAEB2B0AAB0B5AA -BFAAB7B5BB1BC654537F37FFFFABFFFFFFFFFFFFFFFFABB8AF37346A180B5EA20EFFBEC0 -FFFFFFFFFFFFFFFFFFABFF04FFAB13ADAD13FFADAF13AD2296C75E5FAAB5B5DBB9AEC7B2 -B6B7B4BFB0B0AAAAB4AAAAAEAAAABDB9B6AEB260C51EFD003BB1FFFFADABB1AFB1FFABB3 -ABFFFFADAFB1ADAF2B2393CA0BB6B0AAB4AAAAAEAAB0B0B5AAAAB0AAB0B0B6B6AEB6B6B2 -AEB9B7AA5FC50BCF5A27B3FFFFADFFABB3FF19ABFFAFFF1CB3B8AFAD060FA20B5E56B9B4 -AEB2B2AEAEAEAAAAAAAAAAAAAEB2AEB2AAAEB4AAB2AEB6B9B41EBA5F852BADAFB1FFFFFF -FFBEB1AFFFFFAFE361AEAAAAB46108ADFF13FFFFFFFFFFFFFFFFFFB1ABADADFFAD2EAFFF -B1FFAB3053291B5F2DAEAAC129BFAAB5B5B7B4AAB6B9B2AEB6BCB9B5AEAEAAAAAAB4B4C4 -B7AAB2AA5686DC3D0AADFF57AFB3ABB1C00AADABAD04C0FF2507DAC9B2B6AAC8AEBBBFB4 -AAB7AEAABDB4B4AAAEB2B929AEAAB4BBAADBB2B9AABFB784B2568E52140AB1AFADADFF43 -AFFFADABFFDEFFABAD12640B1EB9C7AEBDBDC4B0B4AAB7B6B6B2B0AAAEB7B7B7AAAAB4AE -BBB5AAAAAEB4BBAEB92D565F3412AB0AABFFAF04FFDFB1FFAF4D5EAEAABBAAC9A215B1AB -FFFFFFFFFFFFFFFFADFFFFFFABFFB3ABBEB1FFC02A545EBBAEAAAA2DB4BDB4B7BDB2B229 -B05FC1561EC9C90B5F60BBB9BFAEAAB0AAAAAAB9AECB29BB0B1E2C44AFAFADABB3ADAB04 -B1ABBEADC0513680B2AAB4AAB7B5B4B53FB7B6AEAEBB60BC5FC9C50B0B5F60BBB7B4B0B5 -B0AEB2B6B229BFB4B4C6B65027FFAF04ABFF67FFABAFBEAFFFE06C99C9C4AAB4B0AAAAAE -AEB9B6B029B0BCBC600B0BC9C956BCBCB7B5B7AEAEB0AACBAAAEBFB0B0AEC5F60006FFB8 -0AFF13FFFFFFB808C3B5B2AAB55F9A9DB1ADFFFFFFFFFFFFFFFFABADFFABFFC0ABD4FFAB -3A4D1E56B4B2AA3FB6B6AAB4BFBDC85FC35EC4999C23216464A1CF99F5775C1EC1B9AEB4 -B0B5D8B4B4AACCBC86317F1343AD13ADB3FFADB8AB0E34BA5FAAB5B5B0B6B7B4BFB6CCB0 -0BCA1BBF55542321F72152CF55291E865FBC3FB2AEB2BDBC29C1EBAEBBBA5214AFFFFFB1 -B3ABFFFFFFB82F8B8060C8B6CDBD29B2AEAEB2AEBB565E1E8499FD23F7F72152A55529D2 -C5C97CAEAEAAB5B0BDD8B6B9BDCBC5212FAFABFFFFFFFFB3AD4DBAB5B2B4B50BCF40FFAD -FFFFFFFFFFFFFFFFABADAFADADFF04ADB830395E5F2DB9B0B2AAAEB0AAAAC98E78FD7D6C -4120D13CDFC0CECE471D223D49A184C6C55FBDAEAAB62DC1B5B5AE0BC10FADABFFAFAF13 -ABFF09FDBABCDBBFAAB4B4B9C7B4BB0B5EB9CF08D6090ED106C0434343470E142A532384 -5EC9B7AAB2DBB7AAAABB29BDC632E5FFBEFF04B3AFBEAD149F18B0AEB4BDB9B5B0AEAEBC -C6BAC4EF690F0D303706C0B1CECED1300D429EA2B4C5C9BCB6BDB4B4AEBDDBBDBB1E5509 -FF13AD43FFFFFF08C6AA29AAAE5F3E15FFFFFFFFFFFFFFFFFFFFC004FFC0B12EAFFF0185 -8629AAC7AEB5AEB2AABBCAB952497F27FF26ABB1FFFFC2FFADADFFFFFFABFFD312177D79 -1E0BCCB0AAAAB9BBB4B5603212FFADAF13B8AD2B55D2AEB4B729B029AAB2B28632398709 -37AF040AC013FFFFAFAFFFFFFFB3FFBECE226C349FD260AEB7AAB4B7B7AEB45F638A19AF -B1ADFFFFF352C6B7B7B6BDAEB0DBAACB1B5571001447AFAFFFADABABB3FFFFFFFFFFADFF -FF0614005999BAC4B2AAAAAAB0B6AAAA0B552AC0FFB8FFB1FF4D5EAABDAAAE0B7E15FFAB -FFFFFFFFFFFFFFFFFF1CB313B3AFAB5ACB0BAEB2BD29B2CDC43FC3294D0DC0ADFFFFB8B8 -AFFFFFFFFFFFFFFFFFABBEFFFFC0ADAFAF6E2A235E5FB6B7B6B424AEAE8E00ABADADFFAD -62C55FDBB2AEAAB42DBBCB1B322C22AFB3FFFFFFFFB1FFABABFFFFADADADB1FF04B1B31C -AFAB3B0036865FBDB2B2B6B4AAB6B25C973AABBEFFAD7FC1C1AEC8B0B4B2B2BBBA326230 -FFB3ADADFFB1FFFFB3FFADADC0ADFF4343FF2EAFAFADD42F4F55D268BD3FC4B5B4AAB40B -D9531FFFFFFFB3085E29B2AAB05FA940FFB1FFFFFFFFFFFFFFFFABB3FFC0AFC06CC65F3F -AEB4B4B2B5BF5F0B9722FFFFADABFFFFFFB3FFFFB3FFFFFFFFFFB1FFFFFF2EFFFFABFFAD -C09D0055C5BDB7AAB4B6AA726CAFFFABC066BAC7B6D0AAB2AEB7B00B5F4D2FFFB3ABADFF -FFFFFFFFAFAFFFFFFFFFFFFFFFFFFFB3FFB3FFFFFFFF304932BABBAAAAB0B0AAB2B78634 -D1C0FFAF7FC4B0B4AAB4B9AE56B2072FABABAFAFFFFFFFFFFFFFFFFFFFFFFFB1FFFFFFB1 -FFFFFFFFFFC0AB0E69F5C6BFAEBDAAB2AEAAC4C30806FFFFAF4D5EB4AEAAB05FCF15B1FF -FFFFFFFFFFFFFFFFABB8B3ADB11718BBB4B4B2CDB2AABFBA9C2BB1AFADFFFFBEFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF207DD25FAA8CB65FCB226713FF49BA -602DB0B4B2B5AAC7D9237FABFF13ABADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFAFAF2F71C35FB0AECDB0E1B9B68E9747FFAF585418B4B5C1BBC32301B1BE13B3 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13AFFF225BC55FBBB4B5CCB7 -B0FCC670431CAD4DCAB9B4B2AE0BCF40FFFFFFFFFFFFFFFFFFFF1C13AFFF3D5FBBB7AAB2 -AAB0AEB2D9642F19AFB1FFFFADADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFAFAD2A988E68C6C549FF13B817D2C1CD2429BFB4B5DA5C2CFAAB1CC0FFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13FFB1D6840BB0B5AAB629B9B6 -C307AD13FF2A5FC56018604F27AFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFD4ABB3AF1F53C993AABDAEB2AAB060C550B3AB08CAB7AEAEAE0BCF40FFFF -FFFFFFFFFFFFFFFFADABC00EA5C988AEB2AA2DAA0B564B06AFDEAFFFAB04FFABFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADFFAFFF1207EF392A0AC0FF2BD060C1 -B6B6C8B6B0C9BB8743B3ABAFFFFFADB3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFADB3FFAF0155D2AAB0B4B4FCB0C15E00FFADFF4139A552331CAFABB367AFBE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2B3AFB804FF5132C9B2C129 -B7AA29601E0FAB4D5EB6AAB9AE0BCF40FFFFFFFFFFFFFFFFFFFFABFF3B21C9DBAEAEB7AE -CB1E7541AB13AD0AADFFFFB8ADABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFABFFB31304B8060AAFB1AB25A51EBBAABDAEB6B0C9CF0919AFADABFFAD13FFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABFFAD2EFFFF2F39C6B6AE3FC8C8 -BD601EE50404AFB1473CAFFFFFC0FFB3FFABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF2EAD13FFADB1AD12A15CBFC7B4C4E1B65F55129E5EAA783FAE0BCF40FFFF -FFFFFFFFFFFFFFFFADAB4D5EB7B0BDAEB6BF1E9A12AF2EFFABC2ADFFFFAFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB804ABB3B1ADFFABABFFDF34C3C4B4BD -AEBFB0C9A225B8FFADFFFFAB43AD26FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFABB3ABFFFFBEFFD1348EB5AEB6BBB5B20B9C3013ADFFB3FFB8ADABAFB8FFADC0 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBEABFFAFFFFF923B5B86B4 -B729B9B4B0C9F759C9C82DBFAE0BCF40FFFFFFFFFFFFFFFFFFFFB13356BCFCC1AAAAB00B -5522C0ADABAFFFFFAFFFFFABABB8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFAFADFFB1B843AB0413AB425CBBB4BBAEAEBD56CF25AFFFFFABFFFFB1FFBEAB1CFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92FFC0ADFFFFADAF3771C3B2AE29 -60AAB0C59EFFB3FF04AFAFFFADFFB8B804ADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFB8B3AB26AFC0FFAFE664D2B4B2B7B629CCBC84B6B2B0DBAE0BCF40FFFF -FFFFFFFFFFFFFFFF303E56DBBDDBB5AABB0BE5B3AFFFC0FFAFB1ABABFF19FF0AFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABFFFFFFC2FF43ADAD209F5FB7DBBDB0 -B0563612ADFFFFABFFAD04ADFFABADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFAD2EABFFFFAB04AD043B2318B2BF8CBFAEBB0B41ABB3ABAD57ADAFB3B12EADAB -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFB1ADC0FFB3AFABAB920EA5 -0BB43FA0B2AEAED7B2BDCBAEAE0BCF40FFFFFFFFFFFFFFFFFFFF665C88C1BFB0B6AEBA53 -ADAFADFFABAFB3ADFFBEFFFFABABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFB1C0FFFFFFAFAD9EC3B9B6C8AAB0B0D22AABABADAFFFFFB1FFABABADFFAFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABADADFFB8AFABBEFFAB2F3677C7 -B7AAAAB50B5227ADB1AFADB1ADFFABFFADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFC0FFABFFB1FFAFADFFAB2A0BC1BDAADBB7AAC7B424B6B9AE0BCF40FFFF -ABFFB8C004B3AB228478C1FCB5AEB95E2137AFADABFFABFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADB3FFADABAF09B078AAB4AEB7AA -5C7119B8FFFFAFABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFAB0AAB0FC3CCAAB2AEB2B5D2D6FFFF2EFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13AD65FF -535CCCAABFB4AAB7AAB0B6B9AE0BCF40FFFFB3FF43FFFFFF4371C5BBB6B5BFB60B9A20FF -2EADFFB82EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFB1ADFFFFC01F21C9B7AAB4AAB40BF030FFFFFFFFFFB1FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2AB1CD57D1B -B6B5B9B4BB569C2543FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFADB3FFFFFA39CAB9B5AEBDAEAEAEB7AEAE0BCF40FFFF -1CABFFAFBEB17F5FC1B4B0B2B5C15F3DFF7BFFFFFF0404FFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADB1ABADB3FFFF3DC6B4AEAAB029BB60 -4113FFABFFABC0AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFB304AF253656AAB6AEB43F6150FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0413C0AB -AF12995FAEB6B6AEAAAEB0B0AE0BCF40FFFFB8ABAB04FFAD075EAEB424B4B5C659C2B8AD -ABBEFFABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFAFB1ABFFB1FF391829BFB2B6B2C64D131CAF43ABFF04ABFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1ADAFFF576C -C6C7AEB5BDC45F9F30ADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFF04B3B1FFAFFF495EB2B4B4B7B2AAAAB0AE0BCF40FFFF -ABFFFFABAD27310BAEB4B5B9E1BB09FFFF43ABAD1CFFC0FFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB04ADFFFFFF0DB660B2AAAEC1BC9922 -2EADABAD43C0AFABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFC004FFFF27310BB4AAAEAAB9CA5104FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADC0FFFF -FFB830545FBFAEB7AAAEB6AAAE0BCF40FFFFFFABADABFF7FC1BBAEB4B0B5D297B1C0ABAB -B3B1FFABADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFF1CAFAD4BC6B9AE88B4B05E9EABFFFFFF0AAFB3B3ADFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3FFABAFABAF -425CB4BDFC292D188BB1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFAD2EADABFFFFBE878629B0AA29AEB9AAAE0BCF40FFFF -FFBEC0FFC2535EB2AAB5B4C4BC7FAB13FFFFFFFFABBEFFB1FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADABAFADAF3B7E0BB6C7D7B4C49914FF -57ADADABB3ABAD04FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFB1BEFFAFFF2E3B7E68B7B4B6B4D0AA22FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD -04FFFF0E9C563FBFAAB6AEAAAE0BCF40FFFFABADABAF3B3693B0AEB5AE1B71ADFFB8FFB3 -B1AD0AFF43ADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFF1CBE2EFFB10D7CB2B4B4CDB5C608ABB8B8ABFFFFC2AD2EAFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFFF1CFFFF -AB6CC3B978B5AAC75E50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFADFF43ABC0AFFFFF941BB9B4AE2DBFAAAE0BCF40FFFF -FFFFABAF415FBBB2AEAEB0C5D6ABADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABADABFF51BAAEB529B4B61E8DABB8 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFC0FFFFFFC02099C4B2B2B7B4C9211FFFABFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF22B7BBB0AEB6B4B5AE0BCF40FFFFFFFFFF2E625EBBB4B0B2B0B909FFADB3FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFB1B3FF5318B2AAB2B456A51DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3B1 -ADD439D9AAAAAEB2C49930FFFFB1B1FFABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0652C9B029B6B4AAAE0BCF40FFFF -FFFFADAB39C9AAB0AEC70B3644FFADABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABADD3A156AAAEB9AECA7DFFB8FF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFABFFFFB1ABABB1AD00C560B2AAAEBBB20DC0FFFFFFFFABFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFF4F5EAEB0B5AEB0AE0BCF40FFFFAFFFADEDA50BAAAEB2AA1839B1FFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFABAD30365FAAB08CB45E6C26B1ABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1FFFFFFFF -AFAF09AE60B6B7AAB25F3DADFFFFFFFFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF132A1EB9AAAAAEAAAE0BCF40FFFF -AFABFF1284BCAA29AEAAC362AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADFFFFFF7FB5C1AAAAB9B26033FF1C0A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1FFFF1D5456B629B2AABA6CFFFFFFFFFFAFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFF0DB560AAAAAEB7AE0BCF40FFFFFFABAB3377C4AEB0AEB71E33B8ABFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFAD13FFB151C6B9AAAAAAC1321292AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FF04AF71C9BBB4B63F5E53FFB1ABFFFFB8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD0E99BBB0AAB0B5AE0BCF40FFFF -FFFFAB17C3B0AAB6B6608422C0ABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADABFFAF9461B9B2B5B45F9941221414 -141414141414141414141414141414141414141414141414141414141414141414141414 -141414141414141414141414141414141414141422971BAAB0AEBBC934FFFFFFFFFFB8FF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFF37FD0BBBAEC8AEAE0BCF40FFFFFFAD04876AAABFB6B90B5530FFABC0ABFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFADABFFAF695EAEAEBFB6B4AA292984F5848484848484848484848484848484848484 -8484848484848484848484848484848484848484848484848484848484842984292984F5 -F5842929B9B6AAB2AAD252CEADFFAFAB04FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABCE21C9B5B9AAAEAE0BCF40FFFF -ADFFB34B86BFC7B5B00B5437B313FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABB308C5BFB5AAB2B9AEBC60BBBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC -BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC5FB7AAB0B0AAB55685F304AFFFADFFAB -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFAD34C9AAAAB6AAAE0BCF40FFFFFFFFFF705EAAAEB5AA0B3115ADBEB3FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF97C9AAB73FAEBFB9AAC12DAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAB0B0AAB0B0AAB00B3ED1FFFFFFB3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08C5AAAAB6AAAE0BCF40FFFF -FFABFF4D5EAAB0B0AAD252E4ADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADFF71C9AAB0CDAAC72DB4B5AA24 -AEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE -AEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEB4AEAEB2AEAEAE5FCF47FFBEFFAFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFB3AB075EB5AAAEAAAE0BCF40FFFFFFABB39E5EB7AAAAB05623E4ADFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFABADB334C9B5AAB0AAB0AEB0B2AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAB7B5B7B0AAB5B55F3E9BABFFFFAFFFB1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB08C5B5AAB2AAAE0BCF40FFFF -FFFFFF535EB7B0AAAA5FDC37FFFFB3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABADFF08C9B5AAAEB0BDA03FB0BBB4 -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAB0B0AAAA6031E4AFFFB1B1FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFADAB341BB7B4BBAAAE0BCF40FFFFFFFFFF5086AAAEB0AABC551DFFFFFFABFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF705E3FAAB4BBAAD7CAC65EBABABABABABABABABABABABABABABABABABABA -BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA -BABABABABA5EBABABA6AA2E4AD04ABFF43FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF435BC9B0B2AEAAAE0BCF40FFFF -FFFFB16C5CB0AEB0AEC4322FFFFFADABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABFF6286B6AAB2BDB02900424217 -D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 -D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D65A33ADADAFABABADB3 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFF407E5FAAB2AEAAAE0BCF40FFFFFFADFF2A77B4B2AAAEC4B741FFFFADFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFAF2ED65CB9AAAEB6DA322FB8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFABADABFFAB67ABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB34498DAB4B22DAAAE0BCF40FFFF -B8FFAF143FBBB2B0B6C7CA00FFC2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13FF01B0AEB6B5DBB0B941BEAFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1FFFF -B1ADADB8FF14F5BBB0AABBB4AE0BCF40FFFFFFABAD44365FAEAABDB41B7D0AFFABC0FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFAF0E9968AEAAAAB01E42FFABADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFB1FFC0ADFFABFFABAB331EBBB4B5BFAAAE0BCF40FFFF -ABBEC0DF21C9AAB2B4AA5679F4ABB1ADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13AD7BE4A20BBDB2AEAE5E2C04FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABADAD -ABABFF43AB8786B2AAB7B4B5AE0BCF40FFFFB3FFBEAD53BAC4AEAAB4C1B42204FFABFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFABADAFAB075E29AEB4B40B8540ADABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFC013B1B3ABB31CADC039C9B2AAB9AAB9AE0BCF40FFFF -B1FFB3AB3DC6B5B0AAB9AED22A2EFFABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADFF135AC6B2B4AABFBCBF09AFB1 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -B1ADADBE25995FB6B029B0AEAE0BCF40FFFFFFB3B8130E98C4BFAAB9AAC64DFFC2AFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFADB3FF7FC1C4AAB0B4AED269AFADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1FFB3FFAFBEAB5A1EB4B9B7B4B9AAAE0BCF40FFFF -FFC2B8ABBE7DC3AAAE29B05F9922FFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADFF1DE20BB0AEAEAE0B9F25C0 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1 -AD26AB27851EB2BBAEB0BDB0AE0BCF40FFFFFFAB2EADFFFBC6B7B5C7AAB25E53ABAFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFABADBEAD075EAAB2B9B5B65E62ABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFB8FFABFFC0ABAD0FC9B5B929BBB5B4AAAE0BCF40FFFF -ADADFFFFFF44755FB4B4B5B660552FFFAFFFFFAFFFADB8FFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFFFAD13AB2E415FBBB4B6B0B60B5430 -ADAD04FFBEAFFFB3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFC0FFFFFFC0ABADFFADAFABFFFFC0ABAFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFBEAD04 -ABAF15230BBBAAB0AAAAAAAAAE0BCF40FFFFFFB1FFFF431C34BAB6AAB0B4DBC353ABFFFF -FF2EAFB1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFAB0AABC0AFFA52D2AAAEAAB2BDD2492EFFAFABB8C2AFADFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFFFB1ABC2 -AFADAFB3AD132EFFB8ABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFB1FF04B3B8FFE5C9BBAAAAB0AAAAAAAAAE0BCF40FFFF -FFB3AF26FFB82ABABB3FAAB0BD60290DAB1CAFC0FFB3FFAFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13ADABADAFFFD6C5C8B0DBB2B60B55 -12B3ABAF04B3B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFABAFADAB3A014130ADAB67C0AFADADFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABABAF -AF303156AAAAAAAAAAAAB0AAAE0BCF40FFFFFFFF04FFFFC0F4520BAEC4AAC129C3643AFF -ABADFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFABFFFFAFFFFFC03A3177B478B5B7AED271FAADFFB3AF13C2FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF2EADAD2A79 -DAD09CE5AFB1FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFABC013AFC02CC3AAAAB0AAAAAAB0B0B4AE0BCF40FFFF -FF04FFFFAFFF2E411EBBB6C8B2B6B4CA0713ABFF04AB04FFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1FFB3FFFFB1AD13FB63B0B6BBBFB5BD -C366FF13ABFFFFABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFAB01565F60B2C69341ABAB13AFADFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0AFFF -5AD260B6AAB0B0AAAAAAAAAAAE0BCF40FFFFC2B8B1FFAFFFAB0A7D8EAEBFAEB2B4CB1E51 -43AFFFB1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFADABFF13FFADABC0AB590BB7B0AEAEBDC4C409ABFFFFAD04FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A3A520BB5 -FCC7B4C9792519ADAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB040DF560AEB9AAAAAAAAAAAAAAAAAE0BCF40FFFF -ABB8FFFFAF43ABAF22995FAEBDBFB7AA0B297FFFABB8FFABFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADBEFFB3B1FFABADAB2CC3B4AEB9AAB0 -B0C9231D1CFFB1B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFB1C04DC3BD29B7B7B7295EF74719ABAFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3AD0652 -C5AABDAEB0AAAAAAAAAAB0AAAE0BCF40FFFFABC0B3AFB3B8FFFFFF005EB7AAB5AEB6AA1E -A244AFADAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFB3ABFF1CABAF1CAB6C1E8CC8AAB4B5AAAAB51B3415ABADFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF134FC6B7AAAE -BDB4B2AE291B081FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFAD042CC9B9B9C82DAAAE60BBAAAAB0AAAE0BCF40FFFF -FFFFFFFFFFFFFFFFAF0664C6B7B4B7B4B5B0BA713AFFABAFADB1FFC0AF04FFB1FFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFADADFFFFFFFFFFABADFFB1B8AFAD4293BBAE2DAE29B9B7 -AACCAA5C7D06BEADFFFFADB3FFB3ABADFFFFFFFFFFFFFFB1FFFFFFFFFFFFFFFFADABABFF -BEFFADAFC0ABFF04AFAF0AFF871ECBAAB7B4AEB6B0BBB4BBC307D3B3FFADFFABFF0AFFFF -B8FFFFFFFFADFFFFFFFFFFFFFFFFFFFFABB1ADFFFFABABABFFBEFFADFFB3ADAFFF4BCA24 -AEB7B5B0AA0B3E215FB2B4B6AE0BCF40FFFFFFFFFFFFFFFFFFFFFFD52F790BB6B5BDAEAE -AAC6642F2EFF13FFABABFFC0B1BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFFFFFABFFAD -FF43AD04AFFF133C8760BBB2B7AAB4C1B424B7C1B6BBC9340EFFADFFABFFB3B1ADABFFFF -FFFFB3B113BEFFFFFFFFFFFFFFFFADABFFADFFAFFFABFF0AABAD1CFF37691E7CB4BFAE29 -BDAAB2AAB7FCBFC69630BEFFFFB12EFFFFAFBEABFFFFFFAFFFFFFFFFFFFFFFFFFFFFABFF -FFFFADADADADAFAFC0FFAFB3C23B9E1E2DB9AEB4AEB5882D41705EB0B0BDAE0BCF40FFFF -FFFFFFFFFFFFFFFFFFFF040D84C1B6B2AEAABFB9D2553DFFADFF13ABFFAFB31CFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFAF67FFAB43ADB8AFFFFFB1AD9B075C60AA3FB7BFB2B4B5AE -C8BDB229BFC6364113AD13AF04FFB1AFFFBEABFFB3FFFFB1FFFFFFFFFFFFFFFFAD13ABFF -B1FFFFABAFAFB8FFFF2552BAB4B7AAB5B4AEB4B229B0AEB5B4AAC63E22AB57B8AD43FFB3 -ADADFFB3FFFFFFFFFFFFFFFFFFFFFFFFB1FFABAB13ABFFFFADFFABAB43AB14EFCAB4DAB5 -BDDBB7B45E62B14D5EB7AABDAE0BCF40FFFFFFFFFFFFFFFFFFFFBE04FFAB878EAEB4AA8C -AEBDB60B5F4F40FFFFB1C0FFB1AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADAB26C00A2E -ABFFADABFF122186C1B9B4B9B48CB20B5FCDB4D7AAB2B4B60BB00FD5AFABFFC0ABFFFFFF -FFFFABB1ADADFFFFFFFFFFFFFFFFFFFFADC0AF2EAFADABADC0AF14EFD9B6AEAAB7BF3F3F -7756B2B2B4AEB9B72DD23641FFADC0ABBEFFABABABFFADADFFABFFFFFFFFFFFFFFFFFFFF -ABAFB8B8FFABFFFFFF7BFF0F321BB4B7AAB6B6B0AE5E7106AB0880B4AAB2AE0BCF40FFFF -FFFFFFFFFFFFFFFFABB8FF19C04D5EB0B6B2AAB4B0B6BB5E5B25AF04FF13FFC2FFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFB1FFADFF43ABFFC0FF3C17551B2DAAB7AEB2AEBB0BA9390B -AEC7AA3FB2B2CD601E9E1DFF0AABFFADFFADADB1ABABABB3FFFFFFFFFFFFFFFFAB13ABAB -FFFFFFADABFF150032C9AEB4B4B2B229B4C6A321C9B6C1B6AEDBBBBD0BDA6944BEADC0B3 -FFFFFFFFFFFFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABAF26FFD1507C0BB5B6DBC7B2 -B4B472211DB1AD085CB2AEAAAE0BCF40FFFFFFFFFFFFFFFFFFFFFFFFFFFFAD060880B53F -BBAADBB7C7AAC5366C9B7BADABAFFFFFB1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABAB -FF047F64C6568C24AEB4B2B5B05F54121F395CB4B98CAEB7AAAEBF1BA55147AF7BABAB13 -FFADB1B3ABFFFFFFFFFFFFFFFFFFADFF13FFC0B3ABB3FF41A3C6C1AEB5AAC4B4B2AEBAA8 -253B215EB4BFBB29AAC8B460C5A83DCEAFB8AFB1B8FFABABABB8FFFFFFFFFFFFFFFFAFAF -FFFFFFFFFFADFFC03331C3BBB2AEC8B6B2B48861A30E2EFFFF4DCABDB4B9AE0BCF40FFFF -FFFFFFFFFFFFFFFFFFFFAFFFB3FF064DC65F29B2B9CCB6D0B656D931E5582EFFC0ADFFFF -FFFFFFFFFFFFFFFFFFFFFFFFB113BEAD7BFF122C5F1EB4B4CCB0B5C7DBAE182901ABFF58 -34C55FAEAEDBC4B5B5BD5FC6232A37040AFFABFFFFADADFFFFFFFFFFFFFFFFFFABADADAF -AFABD47F395F56DBBFB9B6BFB4C1BDC9EF2FFFAF302186B0B4BBAABDB78CB00B1E217FFF -FFFFAF04FFFFBEABFFFFFFFFFFFFFFFFABFFADFFAB13FF1533F71E0BB4B4AEB0B7AAAABC -5EA10EFFFFAFB34D5EB9AAB6AE0BCF40FFFFFFFFFFFFFFFFFFFFADAF13B8FFBEFFCE4232 -63AEBFB4CCE1B2AEB00BC99C08FB6EC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF060D625B -32C6BBAA3FAEAABBBF2DB95C23220AB3ABAF156C935FBDB6AAB7B5AABFAA1EC93E538D3B -FFABFFADFFABFFFFFFFFFFFFFFFFFFB1FF47094921C1C6B4BFAAB6BDAEAAAABF5E7144AF -2EFFAD1D34C3C1B0B0AABFCCAE78B4C6B6524F0137ABB3ADADAFFFFFFFFFFFFFFFFFADAD -AFAF6E7F4F851EC93FB2AEB9B7AAAEAACB0B4F6EB3ABFFB3AD085EAEC1B4AE0BCF40FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF0954C9AAC1B4B6B6B6B2AAB0DAC51E547D5A09 -9543FFFFFFB1FFFFB3AD47252B4BA2B586C9B9B2AEB6AAAAB6B5AABCC30895AFB8AFFFFF -ABFF42B20BB4B4B5AABBB4B02DB70B860B7508D61427C02EFFFFFFFFFFFF0A15202A2C31 -B75EC9B0B02DB0B4B0B6B6AA60D270272EFF13FFFFAF06505656AEAAB4AABFB5D8B2BD63 -5E60CF073D2F37C0ABFFFFAF2EFF1C0A6E22E570CF5FC50BAAC7B2D03FBFB4B6AE1E5642 -B1AFAD04FFADB34D5EB2B6C7AA0BCF47AFBEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8 -2FEFC3CBAA29B5AABBAAB4AEAEB90BC5D2B95552972C4F4F4F69085B7E325FC31EB7B0AE -AAB5AAAEB7B0C8B5C9296CD3C2ADABFFB3AD2EFFC27F9A5C7CBFBDB4B2AEAEB2AAB7AA5F -C3C32D7521962C66505069088BA9321E5E60603FB9BDB4BBB5B0AAB4AA809951FFABC0AD -AFAFFFFFFFFF3D9F637CB6B2B5B5B4AABBB4B9C1BC5E56849AF77D2C4F944F537D5BA529 -C55E0BB6B7B5B0B0AAB4C7B4B0B9BA363DC0ADABFFABAFADFF08CAAEAA88AA56CF37B30A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8FFAB44535FC6C8B2B0AAB9B9AEB5B52DC1BBAE -DA0B1B1B5E5E865E1B0B5FC4D0AABFAA29B4AEB2AAAEBDAEBDCA5214FFAFAF13B3AD43FF -FFAFFFFF1D077756B5AAB2B4AAB4BBB5B9AEAAB4605F1EC6C3865E865ECA0B0BBCB5B7B5 -AECCB4AAAABDB9BDAA1E1B5B22ADAFC0ABAFB8ABFFFFABB8FF20970B5FBBAAAAAEB7B5B4 -AEAABF24DBB25F0BC55E5E5E86C3C65660603FB6B2AEAAAAB5B9B2B0B4BB0BC65920B3AD -2EFFBEB1FFFFAB4DCAB2AADBB75FCFD1B1B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBEFF -FFB1B87FA15C0BB229BDB4AEB4C7BDB4B2B2AEAAB0B0B4B0AAB0B2AEAEB6B4B0B6BD78B5 -B5B4B4B55F1BB56647AFABD5B1B3ADBEFFB3FFFFFFC0ADFF41EF5C5FAAAEAAB2B4B2B5B7 -AAAEBDB2B0AAAAAAC4B5B5B9B6B6AAAAB4BFAE8CC1B4B9AEB4BB5E99A4D3AF26B3B804FF -ADABC0ABFFFFADB3192A36C30BDBB2B6B0B7B0BBB6B6B9C1AEB0AABBB5B5B5C4AAAAB4B7 -B7AAAEB2B4B4CCBFB0B4BB5CA52A19FFAF130A0AAFABBEB8AB085EB6B2B5E15FA947FF26 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADADFFFFABFFFA517EC6C6BBB4B4B9B0B4AEB0AA -B0B029B9B2B9B5B5B7AAAAC8B7AEC8B5B5AEB4240BBA84710DABAD0AFFABFFFFABAFFFAD -AB2E13ABFFAFC23749E8C6C960B6B9B4C7AEB0B0B4AEB2AEB9AEBDAEB4AAAAB729B6C1B4 -AAB73FDBB418CA849712ABFFFFFFB1FFFFFF43B8ABADC0ADAB13AD65200799CAC9B9B4AA -B0AAAAAEB4B9B9B6B9B6AAB4BFAAAEC1BDB6B2B2AAB73FB9C8B5C9BA328A3BB3ABB12EB3 -FFABC0B1FFAFB8496AB5A0B4BD5E71B1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAF -C0ABFFC2FF2E3B2A5929CA1E5FAAC4B5B5B2AEAEAAB0B0AAB4B0B0B2B2AEB5AABFAAAEBB -C963850022DFAB13B3FFABABC0BEAB1CFFFFC2B804ABC2B8AFBEFF0EE55BC4BA5FAEB0B5 -B5B6AEB2AEB7CCB2B23FAAB0B4DBB5B7AAAEB0B45F801E236C12ADFFB3AFC0FFABFFFFAD -FFAFFFFFFFAB7BAFFFB1FFAB2017F7B7D25FB2AEAEB229AAAAC8B0B0B7B5B5B5AAAAAAB7 -B7AAB4B0BB5F80BB52D620ADFFAFADAFC0ABAFFFC2B8ADFFB330856AC8BC80990DABBEAF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67FFABC0FFAB0AABFFABAB2250EFBC860BBCB2B2 -B4BFB0AAAEAEBDB2AEAEAEB4C8C15F1BCA32392A1504ABAFAFBE13FFADAFAFADB3FFADAB -FFFFADB8B1ADADFFFFAF7BB31466A95F1B0BBCAEAAAAB088B7B5B5AAAEB4AEB2B4BB600B -C5D2994D011FABFFAB04ADADFFFF13AFABBEFFB8AD13ADB8AFB1C0FFABFFADAFC2090855 -1E860BBBB9B6B2B4B0AAB4AAAAAAAAB0AAAEB7BC0B5EC9A553091FAFB3ADADFFAF13C00A -FFFFB3B11CBEAFB8207D3232640DC0B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB -BEFFB1ABABFFFFFFFFADAF1509665299C4BA5EC9560B5F5F5F5F0B1EBA5E5629CF085125 -FFABADC2FFFFFFFFFFADFFFFAFABFFAB13B3FFAFFFFFABB1B8AFFFABFFC0ADFF27335352 -325FBAC5C90B5F60605F0B0BC9BA5E0BF57E4D0F0EAFABADADFFADFF13FF261CADABFFB8 -FFABFFFFABFFD4B1AB0AADFFABFFC0ABB3303D2C85907761C3D20B0B5F5F5F5F0BC9C3C3 -93F5319E2AE6FFFFFFFFAFAFAFAFADB313B3B8ABABAD2EFFABAFADC21D25DF13B8ABADAD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF190E015A -5371527E363655A5A264084F0F2247FFABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F202B6C075B52A99F5536CF235B08492A1206 -FF13FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -ABFF4720FB624D5B23CF9F3636CF235B0700332FE4FFAFAFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADADADC0CE476EED3AD1D3B1FFAFADFFABFFADAD -C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1FF -FFFFFFFFFFCE156E583A403C81AFADFFB1AFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC23C406E585840E4B1ABAB -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1FFFFFF -FFFFABABFFFFFFFFFFFFADC0FFFFAFAFADFFFFABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFFFFFFFFFFFFFFFFFFFADADFFFFFFABABABFF -ADADFFB1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -ADADADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADADFFFFABFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3FFFFFFB1AF04AFABABFFFFFFADADADFFB3FF -FFADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3FF -FFFFB1FFFFFFFFFFFFFFB3FFFFFFADFFFFAB13FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFABABFFFFADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFADADFFFFADADADFFFFB1ABFFFFFFFFC243ADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABFFFFFFFFFFADB8FFFFFFABFFFFFFFFAFAFFFFF -FFFFFFB3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -ABABFFFFFFFFB8B8FFFFFFFFFFFFFFFFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFADFFAFFFFFABABAB13ABFFADADADFFFFFFFFADC0FFAB -ABAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFABABADFFFFFFFFFFB3FF2EAFADADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADADFFFFB1C2FFFFFFFFFFFFFFFFFFFFAB13 -FFFFFFFFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFABAB13FFFFFFAFAFFFFFFFB3FFADADC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFFFFFFFFFFFFFFFFFABABABAB -ABFFFFADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFB1FFFFFFFFFFFFFFFFADADADFFB1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1FFFFFFFFFFC0ADFFFFFFFFFFFFFFABABFFFFFF -FFABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFB1FFFFC2ABFFFFFFFFFFFFFFFFFFADADFFB1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADFFFFFFFFFFFFFFFFFFFFFFFFFFFFABABAB -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFB8FF0AADABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFADAB13AFFFABAFADFFAFFFFF04FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFABADADFFFF -FFC0FFB1AFAFFFABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFAFB8AFADFFAFFFAFFFFFABADFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13FFFFC0ABFF -ADADABC2ADADAD13FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFB813B857C0FFAFEA0C740C0C0C0C0C0C0C0C0C0C0C0C0C -0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C -0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C -0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C -0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C -0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C740C0CEA65B8 -FF6D1A1648A635F235353535353535353535353535353535353535353535353535353535 -353535353535353535353535353535353535353535353535353535353535353535353535 -353535353535353535353535353535353535353535353535353535353535353535353535 -353535353535353535353535353535353535353535353535353535353535353535353535 -353535353535353535353535353535353535353535353535353535353535353535353535 -35353535353535353535353548F248A6283C6DA716735D73EE7303030303030303030303 -030303030303030303030303030303030303030303030303030303030303030303030303 -030303030303030303030303030303030303030303030303030303030303030303030303 -030303030303030303030303030303030303030303030303030303030303030303030303 -030303030303030303030303030303030303030303030303030303030303030303030303 -030303030303030303030303030303030303030303030303030303030303030303168F28 -1A0303AC035D0303ACACACACACACACACACACACACACACACACACACACACACACACACACACACAC -ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC -ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC -ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC -ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC -ACACACACACACACACACACACAC03735D5D35DD035D035D035D5D03ACACACACACACACACACAC -ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC -ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC -ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC -ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC -ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC5DAC03030303 -91A65D030303F873ACACACACACACACACACACACACACACACACACACACACACACACACACACACAC -ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC -ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC -ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC -ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC -ACACACACACACACACACACACAC0303ACAC73836FA7481603735DEE03030303030303030303 -030303030303030303030303030303030303030303030303030303030303030303030303 -030303030303030303030303030303030303030303030303030303030303030303030303 -030303030303030303030303030303030303030303030303030303030303030303030303 -030303030303030303030303030303030303030303030303030303030303030303030303 -0303030303030303030303030303030303030303030303030303030303035DEE03038F28 -046F91DDDD89891A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A -1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A -1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A -1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A -1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A -1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A83287B -end -%%PageTrailer -%%Trailer -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/logoceaquadri2002.gif b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/logoceaquadri2002.gif deleted file mode 100755 index 5f4454837d..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/logoceaquadri2002.gif and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/logoceaquadri2002.pdf b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/logoceaquadri2002.pdf deleted file mode 100755 index f772186e0d..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/logoceaquadri2002.pdf and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/lrilogo.jpg b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/lrilogo.jpg deleted file mode 100755 index 207cec4cbb..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/lrilogo.jpg and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/lrqa.eps b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/lrqa.eps deleted file mode 100755 index b983599c5b..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/lrqa.eps +++ /dev/null @@ -1,3950 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1,17 by Peter Kirchgessner -%%Title: lrqa.eps -%%CreationDate: Tue Jul 04 00:35:21 2006 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 14 14 445 445 -%%EndComments -%%BeginProlog -% Use own dictionary to avoid conflicts -10 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -14.173228346456694 14.173228346456694 translate -% Translate to begin of first scanline -0 429.98740157480319 translate -429.98740157480319 -429.98740157480319 scale -% Image geometry -430 430 8 -% Transformation matrix -[ 430 0 0 430 0 0 ] -% Strings to hold RGB-samples per scanline -/rstr 430 string def -/gstr 430 string def -/bstr 430 string def -{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} -true 3 -%%BeginData: 252317 ASCII Bytes -colorimage -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcFC&$NC))rVulsrVuirrr)orrVd<,rr)iqrVl]ns8Drrs8M`ls8E<(rr<#srr2lrrr*f6s8W)t -rVliqrr2lqs8Doqs8Drrs8N#trdk*ss*t~> -JcFC&$NC))rVulsrVuirrr)orrVd<,rr)iqrVl]ns8Drrs8M`ls8E<(rr<#srr2lrrr*f6s8W)t -rVliqrr2lqs8Doqs8Drrs8N#trdk*ss*t~> -JcFC&$NC))rVulsrVuirrr)orrVd<,rr)iqrVl]ns8Drrs8M`ls8E<(rr<#srr2lrrr*f6s8W)t -rVliqrr2lqs8Doqs8Drrs8N#trdk*ss*t~> -JcFC&+o_NArr)fpr;Z`prr)iqr;?HhqY9gXnaYr0l/gsaiS<5^h&>))h;$oIioB4dlgF<9p\FX^ -qYL0jrVlfprVc^$rVZ]orr;rsrdk*ss*t~> -JcFC&+o_NArr)fpr;Z`prr)iqr;?HhqY9gXnaYr0l/gsaiS<5^h&>))h;$oIioB4dlgF<9p\FX^ -qYL0jrVlfprVc^$rVZ]orr;rsrdk*ss*t~> -JcFC&+o_NArr)fpr;Z`prr)iqr;?HhqY9gXnaYr0l/gsaiS<5^h&>))h;$oIioB4dlgF<9p\FX^ -qYL0jrVlfprVc^$rVZ]orr;rsrdk*ss*t~> -JcF@%s8E#ur;Q`o(&.CjmH -JcF@%s8E#ur;Q`o(&.CjmH -JcF@%s8E#ur;Q`o(&.CjmH -JcF@%(&n11qtTaKjl"IpU5F/, -JcF@%(&n11qtTaKjl"IpU5F/, -JcF@%(&n11qtTaKjl"IpU5F/, -JcFI(,Q.?-mGldA\sIP>2^]U]%0Zh;$4.1O&J5j!+!`-^1+t=:3;,B43WV5sr\#?A-6sNK'bCla -#mgb -JcFI(,Q.?-mGldA\sIP>2^]U]%0Zh;$4.1O&J5j!+!`-^1+t=:3;,B43WV5sr\#?A-6sNK'bCla -#mgb -JcFI(,Q.?-mGldA\sIP>2^]U]%0Zh;$4.1O&J5j!+!`-^1+t=:3;,B43WV5sr\#?A-6sNK'bCla -#mgb -JcG-;!ri6!qu6Zqr;S/Dp[@7m\=.eO3#Mf!!W`B0$kjEt-o=Fi?u(":OdrD^^<>?ghrX\,s"= -JcG-;!ri6!qu6Zqr;S/Dp[@7m\=.eO3#Mf!!W`B0$kjEt-o=Fi?u(":OdrD^^<>?ghrX\,s"= -JcG-;!ri6!qu6Zqr;S/Dp[@7m\=.eO3#Mf!!W`B0$kjEt-o=Fi?u(":OdrD^^<>?ghrX\,s"= -JcG-;/,fJGs8W&trVlfoq=O%6fX$!/3$f.B#RUtQ(a(+X;/:r]\&6JDhs9k2ro!hVr[7X;m,?UB -_m>nc@RDUg)%d8b#6Y&-!X^&2;K]G&jmVm -JcG-;/,fJGs8W&trVlfoq=O%6fX$!/3$f.B#RUtQ(a(+X;/:r]\&6JDhs9k2ro!hVr[7X;m,?UB -_m>nc@RDUg)%d8b#6Y&-!X^&2;K]G&jmVm -JcG-;/,fJGs8W&trVlfoq=O%6fX$!/3$f.B#RUtQ(a(+X;/:r]\&6JDhs9k2ro!hVr[7X;m,?UB -_m>nc@RDUg)%d8b#6Y&-!X^&2;K]G&jmVm -JcG3=rVe#=rr;rrr:K:*]UX+,'*J@A$PFI04]c -JcG3=rVe#=rr;rrr:K:*]UX+,'*J@A$PFI04]c -JcG3=rVe#=rr;rrr:K:*]UX+,'*J@A$PFI04]c -JcG0rqZ6RhpA0<8LY)Q#7hUo2dCj/][?0Brr)iqs8Doqqu6Zqh#IERs8<'!rVulqr?_LB -s8N#qn'ebALKu\X((CNQ!s8`?1/iP%f]_l%qu6Qns8N&tJcFp5J,~> -JcG0rqZ6RhpA0<8LY)Q#7hUo2dCj/][?0Brr)iqs8Doqqu6Zqh#IERs8<'!rVulqr?_LB -s8N#qn'ebALKu\X((CNQ!s8`?1/iP%f]_l%qu6Qns8N&tJcFp5J,~> -JcG0rqZ6RhpA0<8LY)Q#7hUo2dCj/][?0Brr)iqs8Doqqu6Zqh#IERs8<'!rVulqr?_LB -s8N#qn'ebALKu\X((CNQ!s8`?1/iP%f]_l%qu6Qns8N&tJcFp5J,~> -JcG0<(B+."k00uP3#W>7$5"F=:2loTkjS3Brr)orrVd!#rVlcprVld!s8N#rro!hVr=&`)s8Drq -r;Zfrs8DoqrZ1t;s8Dlkn`J2jBh^K.*"`J[!sfPd?Br:Wlh12Rrr.KKkPp&~> -JcG0<(B+."k00uP3#W>7$5"F=:2loTkjS3Brr)orrVd!#rVlcprVld!s8N#rro!hVr=&`)s8Drq -r;Zfrs8DoqrZ1t;s8Dlkn`J2jBh^K.*"`J[!sfPd?Br:Wlh12Rrr.KKkPp&~> -JcG0<(B+."k00uP3#W>7$5"F=:2loTkjS3Brr)orrVd!#rVlcprVld!s8N#rro!hVr=&`)s8Drq -r;Zfrs8DoqrZ1t;s8Dlkn`J2jBh^K.*"`J[!sfPd?Br:Wlh12Rrr.KKkPp&~> -JcG9?.fTA8" -JcG9?.fTA8" -JcG9?.fTA8" -JcGcM*WH$:s8W)trVlcprqc-FbFMEV&-N1I(bAFNe*-Mss8W'+s8N&rs8Murs8Muro)J[f"oSE# -rquclrs8W(rVlirs8MuqrrE&qrrE&qrrE&pruM+=rq5J,~> -JcGcM*WH$:s8W)trVlcprqc-FbFMEV&-N1I(bAFNe*-Mss8W'+s8N&rs8Murs8Muro)J[f"oSE# -rquclrs8W(rVlirs8MuqrrE&qrrE&qrrE&pruM+=rq5J,~> -JcGcM*WH$:s8W)trVlcprqc-FbFMEV&-N1I(bAFNe*-Mss8W'+s8N&rs8Murs8Muro)J[f"oSE# -rquclrs8W(rVlirs8MuqrrE&qrrE&qrrE&pruM+=rq5J,~> -Jc>iPrr2lprW)lqr=SeeacU!L!W`E5*^"2$des.DnG`UhrqucprVuj$rVulqrr)igrsA]'r;QZo -rr)ipqu7$&rVlfprqu`krVbjX)u]d5r9Cb>="P*n!s&E/2KG_GmJ?k^rVc`pr.4n=s*t~> -Jc>iPrr2lprW)lqr=SeeacU!L!W`E5*^"2$des.DnG`UhrqucprVuj$rVulqrr)igrsA]'r;QZo -rr)ipqu7$&rVlfprqu`krVbjX)u]d5r9Cb>="P*n!s&E/2KG_GmJ?k^rVc`pr.4n=s*t~> -Jc>iPrr2lprW)lqr=SeeacU!L!W`E5*^"2$des.DnG`UhrqucprVuj$rVulqrr)igrsA]'r;QZo -rr)ipqu7$&rVlfprqu`krVbjX)u]d5r9Cb>="P*n!s&E/2KG_GmJ?k^rVc`pr.4n=s*t~> -Jc>`MrVcfsrr*W.n_^ic1^sTn%N.':YL2k>rr2rrnG`Rgrr;io"onT#rVZZfs8W$"p?_29rq$9d -rVl`p!<)or#6"K!rVQQljo5A\s8Dp4q;oDV -Jc>`MrVcfsrr*W.n_^ic1^sTn%N.':YL2k>rr2rrnG`Rgrr;io"onT#rVZZfs8W$"p?_29rq$9d -rVl`p!<)or#6"K!rVQQljo5A\s8Dp4q;oDV -Jc>`MrVcfsrr*W.n_^ic1^sTn%N.':YL2k>rr2rrnG`Rgrr;io"onT#rVZZfs8W$"p?_29rq$9d -rVl`p!<)or#6"K!rVQQljo5A\s8Dp4q;oDV -JcGcM!WN,urYG1e_N6ec":#DX6?0-sqtp?lrVulrrUKpfrX\u*rqu`loBto.l0Im8r;QEi$NBe@ -L3\TFStj:"qu7''qtTL@kiq -JcGcM!WN,urYG1e_N6ec":#DX6?0-sqtp?lrVulrrUKpfrX\u*rqu`loBto.l0Im8r;QEi$NBe@ -L3\TFStj:"qu7''qtTL@kiq -JcGcM!WN,urYG1e_N6ec":#DX6?0-sqtp?lrVulrrUKpfrX\u*rqu`loBto.l0Im8r;QEi$NBe@ -L3\TFStj:"qu7''qtTL@kiq -JcGcMs8Ef1o%gHZ/dV^g(+j6sebT1Arr)fpr;HWonGa+"r;QQ_il.L9@U -JcGcMs8Ef1o%gHZ/dV^g(+j6sebT1Arr)fpr;HWonGa+"r;QQ_il.L9@U -JcGcMs8Ef1o%gHZ/dV^g(+j6sebT1Arr)fpr;HWonGa+"r;QQ_il.L9@U -Jc?bjrqGTuPsQ5j#8T'mQ.kg,rr)fps8N&urr)iorp]q'rql-0O%:9%$3C52"qMbNVqLeCrr;us -rsSi+rr2JU&c_q>>O;4d$NBthIgH)W"!*m'mJd1cr;Qcrr;Qcrrr2utrr3Z0s8DcZc%&8,%g;t: -(IXY8lhCDUrrE%Ls8DtJ~> -Jc?bjrqGTuPsQ5j#8T'mQ.kg,rr)fps8N&urr)iorp]q'rql-0O%:9%$3C52"qMbNVqLeCrr;us -rsSi+rr2JU&c_q>>O;4d$NBthIgH)W"!*m'mJd1cr;Qcrr;Qcrrr2utrr3Z0s8DcZc%&8,%g;t: -(IXY8lhCDUrrE%Ls8DtJ~> -Jc?bjrqGTuPsQ5j#8T'mQ.kg,rr)fps8N&urr)iorp]q'rql-0O%:9%$3C52"qMbNVqLeCrr;us -rsSi+rr2JU&c_q>>O;4d$NBthIgH)W"!*m'mJd1cr;Qcrr;Qcrrr2utrr3Z0s8DcZc%&8,%g;t: -(IXY8lhCDUrrE%Ls8DtJ~> -MuNhWr;?O)s8Mrjija%a"p,2V8VY:YjSo8Zs8N!8pXtNm"9JW/$kEjX"Te],&l5k$qu-Hmrr2oq -$3'_4*L -MuNhWr;?O)s8Mrjija%a"p,2V8VY:YjSo8Zs8N!8pXtNm"9JW/$kEjX"Te],&l5k$qu-Hmrr2oq -$3'_4*L -MuNhWr;?O)s8Mrjija%a"p,2V8VY:YjSo8Zs8N!8pXtNm"9JW/$kEjX"Te],&l5k$qu-Hmrr2oq -$3'_4*L -MuORlrVl`prr2cbhm6K4#mV(n?*3#XrVYdW/H,MFs8DQ.=V:fA(+DXbIX>lr,S:.\"YGYmqYU3i -rqu`lrqah_!X8mIL)Ns8;lrrpTk"rr)iom`^\[*Y&>U -#UWuji:HgDrdk+Ks*t~> -MuORlrVl`prr2cbhm6K4#mV(n?*3#XrVYdW/H,MFs8DQ.=V:fA(+DXbIX>lr,S:.\"YGYmqYU3i -rqu`lrqah_!X8mIL)Ns8;lrrpTk"rr)iom`^\[*Y&>U -#UWuji:HgDrdk+Ks*t~> -MuORlrVl`prr2cbhm6K4#mV(n?*3#XrVYdW/H,MFs8DQ.=V:fA(+DXbIX>lr,S:.\"YGYmqYU3i -rqu`lrqah_!X8mIL)Ns8;lrrpTk"rr)iom`^\[*Y&>U -#UWuji:HgDrdk+Ks*t~> -MuORlrVlcpr:/=+;@N[6)af/$q#:0hrr2$Z/,oJGr:7$J!s&loK['5frquch_/C\)!s00_kPbDX -rr2rqrqt\'!.@rrE&fs8W'!r;HWo%IpN5 -1(aWi!tn>#fCSt?rW2usJcC6~> -MuORlrVlcpr:/=+;@N[6)af/$q#:0hrr2$Z/,oJGr:7$J!s&loK['5frquch_/C\)!s00_kPbDX -rr2rqrqt\'!.@rrE&fs8W'!r;HWo%IpN5 -1(aWi!tn>#fCSt?rW2usJcC6~> -MuORlrVlcpr:/=+;@N[6)af/$q#:0hrr2$Z/,oJGr:7$J!s&loK['5frquch_/C\)!s00_kPbDX -rr2rqrqt\'!.@rrE&fs8W'!r;HWo%IpN5 -1(aWi!tn>#fCSt?rW2usJcC6~> -MuWhV&,c=ph4.%P":H5CRaq03rVlfrrT4&1r;HWe^,?,s'NWENrr)iqr;Z]ml_u<;! -MuWhV&,c=ph4.%P":H5CRaq03rVlfrrT4&1r;HWe^,?,s'NWENrr)iqr;Z]ml_u<;! -MuWhV&,c=ph4.%P":H5CRaq03rVlfrrT4&1r;HWe^,?,s'NWENrr)iqr;Z]ml_u<;! -MuOIiq=)gq64*i*.pTRQqtpBjrVuosroO.erVQE356Cs&CZ#-jru_7 -MuOIiq=)gq64*i*.pTRQqtpBjrVuosroO.erVQE356Cs&CZ#-jru_7 -MuOIiq=)gq64*i*.pTRQqtpBjrVuosroO.erVQE356Cs&CZ#-jru_7 -P5cI"s8N#trquE=Q:h_j%OYnukl:V]rr)lrs8W)t"TAB"s8W)tm/I@ij_"i!#Y3YJqu7Z8s8N#t -s7NH9!WrQdirAuVrr;rl_&i[`4ja3,qYpg"qoBBN!?A]Cs8W'-rV=Dn!X/T)$:`bJrr2Kg!WE#o -s8W)srtYM0g6PMP#m1287ZuU"r;HZorr)ipM>r)~> -P5cI"s8N#trquE=Q:h_j%OYnukl:V]rr)lrs8W)t"TAB"s8W)tm/I@ij_"i!#Y3YJqu7Z8s8N#t -s7NH9!WrQdirAuVrr;rl_&i[`4ja3,qYpg"qoBBN!?A]Cs8W'-rV=Dn!X/T)$:`bJrr2Kg!WE#o -s8W)srtYM0g6PMP#m1287ZuU"r;HZorr)ipM>r)~> -P5cI"s8N#trquE=Q:h_j%OYnukl:V]rr)lrs8W)t"TAB"s8W)tm/I@ij_"i!#Y3YJqu7Z8s8N#t -s7NH9!WrQdirAuVrr;rl_&i[`4ja3,qYpg"qoBBN!?A]Cs8W'-rV=Dn!X/T)$:`bJrr2Kg!WE#o -s8W)srtYM0g6PMP#m1287ZuU"r;HZorr)ipM>r)~> -Q2gm`!<<#s%fQ%NU-fIq&1_D-mJ[%^qu7!$rr<#trr<#rrVccrrpTjnp9tS6"!OcCs8DWj(%-ba -!WWmoq>UBnrVu`4*rlL.df07CrsJc*pq%(C7\n].r;Q]orVhZRJ,~> -Q2gm`!<<#s%fQ%NU-fIq&1_D-mJ[%^qu7!$rr<#trr<#rrVccrrpTjnp9tS6"!OcCs8DWj(%-ba -!WWmoq>UBnrVu`4*rlL.df07CrsJc*pq%(C7\n].r;Q]orVhZRJ,~> -Q2gm`!<<#s%fQ%NU-fIq&1_D-mJ[%^qu7!$rr<#trr<#rrVccrrpTjnp9tS6"!OcCs8DWj(%-ba -!WWmoq>UBnrVu`4*rlL.df07CrsJc*pq%(C7\n].r;Q]orVhZRJ,~> -QN%^!s8W&ts8D`OW_X61%4Z5&pAY$hrql`nrr2iurr;usrr<#tnG`dmk$e;k#ZBg_rr2Wk(&H6< -"9A`thYmKQrVlW.*rlL6gA_*KrsJc*ppq";">J!trq?@'rr)>W&-XVE-NaK!\GlI+rq69pr;6Kk -rVlfrs8Moq(&n12rVcWTU/N->!sB02X5WgNqu6PNs*t~> -QN%^!s8W&ts8D`OW_X61%4Z5&pAY$hrql`nrr2iurr;usrr<#tnG`dmk$e;k#ZBg_rr2Wk(&H6< -"9A`thYmKQrVlW.*rlL6gA_*KrsJc*ppq";">J!trq?@'rr)>W&-XVE-NaK!\GlI+rq69pr;6Kk -rVlfrs8Moq(&n12rVcWTU/N->!sB02X5WgNqu6PNs*t~> -QN%^!s8W&ts8D`OW_X61%4Z5&pAY$hrql`nrr2iurr;usrr<#tnG`dmk$e;k#ZBg_rr2Wk(&H6< -"9A`thYmKQrVlW.*rlL6gA_*KrsJc*ppq";">J!trq?@'rr)>W&-XVE-NaK!\GlI+rq69pr;6Kk -rVlfrs8Moq(&n12rVcWTU/N->!sB02X5WgNqu6PNs*t~> -QN%Nprr;usq<5S!*sE*$A%V()rr)usrr)cp!WN,urW;urrVlfrrrN)tmf*Xi`@h8q'8H8\rquHh -#QL$e(B4:3rqucprVGBJ8/hm<"Wq'ekkG)UM>r)~> -QN%Nprr;usq<5S!*sE*$A%V()rr)usrr)cp!WN,urW;urrVlfrrrN)tmf*Xi`@h8q'8H8\rquHh -#QL$e(B4:3rqucprVGBJ8/hm<"Wq'ekkG)UM>r)~> -QN%Nprr;usq<5S!*sE*$A%V()rr)usrr)cp!WN,urW;urrVlfrrrN)tmf*Xi`@h8q'8H8\rquHh -#QL$e(B4:3rqucprVGBJ8/hm<"Wq'ekkG)UM>r)~> -QN%^!s8Ml``-!%$#q9H#qYgEnrqucorql`orWrDmlK@ -&WQ\frr)liUD3b8;sF;[qYpg"pppt9"ZXj#rsekV=9].+l027O!>V4'rVlQk$Mhh:MTP/[s8W)t -qu7H2rVc`qrr)fqrVPlT9c+$:"<)3oo)+@EJ,~> -QN%^!s8Ml``-!%$#q9H#qYgEnrqucorql`orWrDmlK@ -&WQ\frr)liUD3b8;sF;[qYpg"pppt9"ZXj#rsekV=9].+l027O!>V4'rVlQk$Mhh:MTP/[s8W)t -qu7H2rVc`qrr)fqrVPlT9c+$:"<)3oo)+@EJ,~> -QN%^!s8Ml``-!%$#q9H#qYgEnrqucorql`orWrDmlK@ -&WQ\frr)liUD3b8;sF;[qYpg"pppt9"ZXj#rsekV=9].+l027O!>V4'rVlQk$Mhh:MTP/[s8W)t -qu7H2rVc`qrr)fqrVPlT9c+$:"<)3oo)+@EJ,~> -Q2_?mp">]j$4%MAZf_5arVc]o!r`,tr;R<+qsrmlS7YYp;Ko\7r;Q]arsJ4F"T\`V]`%j/rV$9k -rY>4F,67fTF7]>/rVlGb'`\P?li6t`qYpfpZ46m@7bRb6rt57sL_'bBYPmj/! -Q2_?mp">]j$4%MAZf_5arVc]o!r`,tr;R<+qsrmlS7YYp;Ko\7r;Q]arsJ4F"T\`V]`%j/rV$9k -rY>4F,67fTF7]>/rVlGb'`\P?li6t`qYpfpZ46m@7bRb6rt57sL_'bBYPmj/! -Q2_?mp">]j$4%MAZf_5arVc]o!r`,tr;R<+qsrmlS7YYp;Ko\7r;Q]arsJ4F"T\`V]`%j/rV$9k -rY>4F,67fTF7]>/rVlGb'`\P?li6t`qYpfpZ46m@7bRb6rt57sL_'bBYPmj/! -S,X#srr)ipqW+bJ$O%;8SEg(GrtYJ1rr2c[cC\/O#Qt52! -S,X#srr)ipqW+bJ$O%;8SEg(GrtYJ1rr2c[cC\/O#Qt52! -S,X#srr)ipqW+bJ$O%;8SEg(GrtYJ1rr2c[cC\/O#Qt52! -RfV$*s8N&upTt))!Ws6Re,B7EnGa7%rr2lg`GHq."9]c^an#?/rr)corfmG5~> -RfV$*s8N&upTt))!Ws6Re,B7EnGa7%rr2lg`GHq."9]c^an#?/rr)corfmG5~> -RfV$*s8N&upTt))!Ws6Re,B7EnGa7%rr2lg`GHq."9]c^an#?/rr)corfmG5~> -S,X#tqY&^82@9a;B#aKArr2ihrtkY+g9><8%0HnP0geAo-jg%X"Y-kWrr2Kg$NB=0! -4RW4Irr2iq!<)os%0#O/!X&Q7AEj$jr;Q6d!ri/urr*<&l`s;*"p,)fPhZ!3rW2usQ2c@~> -S,X#tqY&^82@9a;B#aKArr2ihrtkY+g9><8%0HnP0geAo-jg%X"Y-kWrr2Kg$NB=0! -4RW4Irr2iq!<)os%0#O/!X&Q7AEj$jr;Q6d!ri/urr*<&l`s;*"p,)fPhZ!3rW2usQ2c@~> -S,X#tqY&^82@9a;B#aKArr2ihrtkY+g9><8%0HnP0geAo-jg%X"Y-kWrr2Kg$NB=0! -4RW4Irr2iq!<)os%0#O/!X&Q7AEj$jr;Q6d!ri/urr*<&l`s;*"p,)fPhZ!3rW2usQ2c@~> -SGs3#r9h@,'*T%AW9sW`qu?WnrqHF/q8m4_!W`?114daHr:%*g$NgG@FnG\4nc&m_Hiap#rWr"M$NLZOs8W)qrs8W&o9K^a$Y/MurtYM1n>$Kq(PD,PrVlZ0'EJ@c -kl(M[qYq!'s8Df?2ZWpa3R7U%rqu6b(&n11s8DlnjcMe;!\aKCpqu6S[s*t~> -SGs3#r9h@,'*T%AW9sW`qu?WnrqHF/q8m4_!W`?114daHr:%*g$NgG@FnG\4nc&m_Hiap#rWr"M$NLZOs8W)qrs8W&o9K^a$Y/MurtYM1n>$Kq(PD,PrVlZ0'EJ@c -kl(M[qYq!'s8Df?2ZWpa3R7U%rqu6b(&n11s8DlnjcMe;!\aKCpqu6S[s*t~> -SGs3#r9h@,'*T%AW9sW`qu?WnrqHF/q8m4_!W`?114daHr:%*g$NgG@FnG\4nc&m_Hiap#rWr"M$NLZOs8W)qrs8W&o9K^a$Y/MurtYM1n>$Kq(PD,PrVlZ0'EJ@c -kl(M[qYq!'s8Df?2ZWpa3R7U%rqu6b(&n11s8DlnjcMe;!\aKCpqu6S[s*t~> -Sc9?%pY_Au"q<,3e,0.Er;QZnrr2Zl(B!$X*s)HH0s^HLrr2ll`A@Vu#YjU`nG`dbOUhEm#Z9^_ -o`#6srVY>!!!*[^pAY'urpuTl!=WW=rr2`n#kF&a!=NH)rr2fp(&djA3roL(DmS'TmI8" -Sc9?%pY_Au"q<,3e,0.Er;QZnrr2Zl(B!$X*s)HH0s^HLrr2ll`A@Vu#YjU`nG`dbOUhEm#Z9^_ -o`#6srVY>!!!*[^pAY'urpuTl!=WW=rr2`n#kF&a!=NH)rr2fp(&djA3roL(DmS'TmI8" -Sc9?%pY_Au"q<,3e,0.Er;QZnrr2Zl(B!$X*s)HH0s^HLrr2ll`A@Vu#YjU`nG`dbOUhEm#Z9^_ -o`#6srVY>!!!*[^pAY'urpuTl!=WW=rr2`n#kF&a!=NH)rr2fp(&djA3roL(DmS'TmI8" -UAt8ms8NB(n%2s1"W^d\rVlfr#laf%rr;utrr2fp(&dHM$NUD]\GlL*rr)idOTY^i5O&1:rs8>+ -+T_]J,JsHNrs8A-*WcB`V>^AlrWi+t(B=eHo)AXgs8N&u$N:"mJd28cC\.T*qu7<,fN&(S!!*0+ -)bkp[T/$EJ)SGkF$NC)(r7Y$L!s_0Jr;Q9err*!!rr)ir&H;_/s8MVq:D -UAt8ms8NB(n%2s1"W^d\rVlfr#laf%rr;utrr2fp(&dHM$NUD]\GlL*rr)idOTY^i5O&1:rs8>+ -+T_]J,JsHNrs8A-*WcB`V>^AlrWi+t(B=eHo)AXgs8N&u$N:"mJd28cC\.T*qu7<,fN&(S!!*0+ -)bkp[T/$EJ)SGkF$NC)(r7Y$L!s_0Jr;Q9err*!!rr)ir&H;_/s8MVq:D -UAt8ms8NB(n%2s1"W^d\rVlfr#laf%rr;utrr2fp(&dHM$NUD]\GlL*rr)idOTY^i5O&1:rs8>+ -+T_]J,JsHNrs8A-*WcB`V>^AlrWi+t(B=eHo)AXgs8N&u$N:"mJd28cC\.T*qu7<,fN&(S!!*0+ -)bkp[T/$EJ)SGkF$NC)(r7Y$L!s_0Jr;Q9err*!!rr)ir&H;_/s8MVq:D -VZ.5,rVuosr;HBMRkP*V/WqtpBkrgNk;~> -VZ.5,rVuosr;HBMRkP*V/WqtpBkrgNk;~> -VZ.5,rVuosr;HBMRkP*V/WqtpBkrgNk;~> -VuI>-s8N&srVZ3%BFtCgA&J-Ar;Zfrs8N?'s8MrprVlclrs/PkJHZ#X3S=?0$2jf!aqb!hHM.:, -rsJbpMZj1_"Ye3urq6:+qUSCC!"O&>r;ZfprqtS-! -!=i=oA4.sb%L<1 -VuI>-s8N&srVZ3%BFtCgA&J-Ar;Zfrs8N?'s8MrprVlclrs/PkJHZ#X3S=?0$2jf!aqb!hHM.:, -rsJbpMZj1_"Ye3urq6:+qUSCC!"O&>r;ZfprqtS-! -!=i=oA4.sb%L<1 -VuI>-s8N&srVZ3%BFtCgA&J-Ar;Zfrs8N?'s8MrprVlclrs/PkJHZ#X3S=?0$2jf!aqb!hHM.:, -rsJbpMZj1_"Ye3urq6:+qUSCC!"O&>r;ZfprqtS-! -!=i=oA4.sb%L<1 -VuI>,s8Drsr9:1C#n&GIjSSrTqu?]q#ljo&pZ:B3rr2fp(&n1/aW(?_'USgtrr2rlYQFtTYl+Ig -rsJVJ+TVTF%qsu"rqcZorWiDjR1TH'.*2Ad$iU)'l!a\q%;4l&r;Q[Es8DobVB5m?%sn9Ts8N#q -rqXc1"U-U4rqYKbQ>T)8'ak'C%;Pn?rr2iq$NC#!^EN[Z%:eu.nc'!piMkQ&r;Z`prr;uprt,,- -rr)]ILF3E1";Z:/p\k)[s*t~> -VuI>,s8Drsr9:1C#n&GIjSSrTqu?]q#ljo&pZ:B3rr2fp(&n1/aW(?_'USgtrr2rlYQFtTYl+Ig -rsJVJ+TVTF%qsu"rqcZorWiDjR1TH'.*2Ad$iU)'l!a\q%;4l&r;Q[Es8DobVB5m?%sn9Ts8N#q -rqXc1"U-U4rqYKbQ>T)8'ak'C%;Pn?rr2iq$NC#!^EN[Z%:eu.nc'!piMkQ&r;Z`prr;uprt,,- -rr)]ILF3E1";Z:/p\k)[s*t~> -VuI>,s8Drsr9:1C#n&GIjSSrTqu?]q#ljo&pZ:B3rr2fp(&n1/aW(?_'USgtrr2rlYQFtTYl+Ig -rsJVJ+TVTF%qsu"rqcZorWiDjR1TH'.*2Ad$iU)'l!a\q%;4l&r;Q[Es8DobVB5m?%sn9Ts8N#q -rqXc1"U-U4rqYKbQ>T)8'ak'C%;Pn?rr2iq$NC#!^EN[Z%:eu.nc'!piMkQ&r;Z`prr;uprt,,- -rr)]ILF3E1";Z:/p\k)[s*t~> -VuI>-r;QTeepntK(K7s=rr)iqq>U`uqWb_(BA`[eqYq9/rSqMo!=2?err2lohHU-oBBB0mnG`mq -rT\e@!p&4phrqcZprVuj* -r;H)h9b[X1%7.PkqjRP8~> -VuI>-r;QTeepntK(K7s=rr)iqq>U`uqWb_(BA`[eqYq9/rSqMo!=2?err2lohHU-oBBB0mnG`mq -rT\e@!p&4phrqcZprVuj* -r;H)h9b[X1%7.PkqjRP8~> -VuI>-r;QTeepntK(K7s=rr)iqq>U`uqWb_(BA`[eqYq9/rSqMo!=2?err2lohHU-oBBB0mnG`mq -rT\e@!p&4phrqcZprVuj* -r;H)h9b[X1%7.PkqjRP8~> -VZ.2+rUIO&":$N,jSo2Wr;HQjrsA]'pt:HS"<*^)qu?]q(&e.)W>kpA-+!RKqrESK#X-Q7rVc`a -rsJVL:Bgh#"9Yrr)]ns8EQ, -rr;usq:^$6"onfNN8OT's*t~> -VZ.2+rUIO&":$N,jSo2Wr;HQjrsA]'pt:HS"<*^)qu?]q(&e.)W>kpA-+!RKqrESK#X-Q7rVc`a -rsJVL:Bgh#"9Yrr)]ns8EQ, -rr;usq:^$6"onfNN8OT's*t~> -VZ.2+rUIO&":$N,jSo2Wr;HQjrsA]'pt:HS"<*^)qu?]q(&e.)W>kpA-+!RKqrESK#X-Q7rVc`a -rsJVL:Bgh#"9Yrr)]ns8EQ, -rr;usq:^$6"onfNN8OT's*t~> -XoAG$rVlfrrt5.mVDnhk2QQ9ErVuoss8N&srr*<(qWtq&'*/+>5iVb=s8W'/r7F[D!tfeKqVR&I -"Y6MLrr*'#rVulro`+sj)tp]i"p"`-*d6'#oChtQoBkA51C"!o?Jte]rVZZps!%!'+9DQF%lIaG -L2]6d"qCq?!=j,ErVuoso<'_J"Ym[frql^&rVlJc(BFb+gA_*KrsJbsQO*Zp(R+aqrq6:Arr)lp -pp_:E!X0ijgAV$Ls8Murr;Q`qs8N&urqu`[RPtTV";YM$p&=sjqYmAlJ,~> -XoAG$rVlfrrt5.mVDnhk2QQ9ErVuoss8N&srr*<(qWtq&'*/+>5iVb=s8W'/r7F[D!tfeKqVR&I -"Y6MLrr*'#rVulro`+sj)tp]i"p"`-*d6'#oChtQoBkA51C"!o?Jte]rVZZps!%!'+9DQF%lIaG -L2]6d"qCq?!=j,ErVuoso<'_J"Ym[frql^&rVlJc(BFb+gA_*KrsJbsQO*Zp(R+aqrq6:Arr)lp -pp_:E!X0ijgAV$Ls8Murr;Q`qs8N&urqu`[RPtTV";YM$p&=sjqYmAlJ,~> -XoAG$rVlfrrt5.mVDnhk2QQ9ErVuoss8N&srr*<(qWtq&'*/+>5iVb=s8W'/r7F[D!tfeKqVR&I -"Y6MLrr*'#rVulro`+sj)tp]i"p"`-*d6'#oChtQoBkA51C"!o?Jte]rVZZps!%!'+9DQF%lIaG -L2]6d"qCq?!=j,ErVuoso<'_J"Ym[frql^&rVlJc(BFb+gA_*KrsJbsQO*Zp(R+aqrq6:Arr)lp -pp_:E!X0ijgAV$Ls8Murr;Q`qs8N&urqu`[RPtTV";YM$p&=sjqYmAlJ,~> -XoJG#%fQD(rqP)t'a,OleG]=Equ76+s8MropXb6G!<`N<-qBg)qZ$Tp)#s2p#lt/``7&?)!=_uD -nbi@arr;utrr2Qi+8u65Zo86k!sAcXGGMd^Z(?D,$3L>52o>:frr;usrVca@rpPme"T\`,!X&K( -!XpPh.ff\YRjmrr2iq$N8jE!s/QZk5G>ZpAYp,rr)cm -l>Qh,!8dVH#l&~> -XoJG#%fQD(rqP)t'a,OleG]=Equ76+s8MropXb6G!<`N<-qBg)qZ$Tp)#s2p#lt/``7&?)!=_uD -nbi@arr;utrr2Qi+8u65Zo86k!sAcXGGMd^Z(?D,$3L>52o>:frr;usrVca@rpPme"T\`,!X&K( -!XpPh.ff\YRjmrr2iq$N8jE!s/QZk5G>ZpAYp,rr)cm -l>Qh,!8dVH#l&~> -XoJG#%fQD(rqP)t'a,OleG]=Equ76+s8MropXb6G!<`N<-qBg)qZ$Tp)#s2p#lt/``7&?)!=_uD -nbi@arr;utrr2Qi+8u65Zo86k!sAcXGGMd^Z(?D,$3L>52o>:frr;usrVca@rpPme"T\`,!X&K( -!XpPh.ff\YRjmrr2iq$N8jE!s/QZk5G>ZpAYp,rr)cm -l>Qh,!8dVH#l&~> -XoJG#%fcM*oup_T#UbGjrVcTkr;RB.qu6Qkm(-@4!WriYFgo]MqYC0krYGI_+TVTXLU/iD!P$NpM4%Ssb)qu?Wnrqud?rU#M#((1EU#n.Os -?*1[s$4.2"_YsE)``)sA"ut'1rVZZmrsSi)pTbh?"=LSQrVl`p$21M2!<`pPrr;rhrrrB#rqFJ_ -rW3KMQL=bOrVlZbqYgBlqu7<-rr)ipqqHrP#6=u[QK\2DrVZZn! -XoJG#%fcM*oup_T#UbGjrVcTkr;RB.qu6Qkm(-@4!WriYFgo]MqYC0krYGI_+TVTXLU/iD!P$NpM4%Ssb)qu?Wnrqud?rU#M#((1EU#n.Os -?*1[s$4.2"_YsE)``)sA"ut'1rVZZmrsSi)pTbh?"=LSQrVl`p$21M2!<`pPrr;rhrrrB#rqFJ_ -rW3KMQL=bOrVlZbqYgBlqu7<-rr)ipqqHrP#6=u[QK\2DrVZZn! -XoJG#%fcM*oup_T#UbGjrVcTkr;RB.qu6Qkm(-@4!WriYFgo]MqYC0krYGI_+TVTXLU/iD!P$NpM4%Ssb)qu?Wnrqud?rU#M#((1EU#n.Os -?*1[s$4.2"_YsE)``)sA"ut'1rVZZmrsSi)pTbh?"=LSQrVl`p$21M2!<`pPrr;rhrrrB#rqFJ_ -rW3KMQL=bOrVlZbqYgBlqu7<-rr)ipqqHrP#6=u[QK\2DrVZZn! -XoJG#s83>nYW`4$7]c4[s8Mrqrqud-rVZ<$rWS_Z!X&ZOHI_Taqu6Km*W,QaO'kpfarVc`hrtPD2r9&;3 -! -XoJG#s83>nYW`4$7]c4[s8Mrqrqud-rVZ<$rWS_Z!X&ZOHI_Taqu6Km*W,QaO'kpfarVc`hrtPD2r9&;3 -! -XoJG#s83>nYW`4$7]c4[s8Mrqrqud-rVZ<$rWS_Z!X&ZOHI_Taqu6Km*W,QaO'kpfarVc`hrtPD2r9&;3 -! -XoJG#%/K(U.g-Pfb52)9r;HWor;R-#mCQ.)!!3KdLu810s8Moqs8N#t'DJjU!Wa7Fq:9[3"9S`1 -."Kb=qu6Tgs8MuurVulq&Gnr;Zfrs8 -XoJG#%/K(U.g-Pfb52)9r;HWor;R-#mCQ.)!!3KdLu810s8Moqs8N#t'DJjU!Wa7Fq:9[3"9S`1 -."Kb=qu6Tgs8MuurVulq&Gnr;Zfrs8 -XoJG#%/K(U.g-Pfb52)9r;HWor;R-#mCQ.)!!3KdLu810s8Moqs8N#t'DJjU!Wa7Fq:9[3"9S`1 -."Kb=qu6Tgs8MuurVulq&Gnr;Zfrs8 -XoAe.pXap9#9\6Fr;?TorW<#srr)j+rpHC8"9AT-/&(ZSrVulr!<)co)ZKd9rqtVW!s&gBn,;OI -2\H2n!Y7]&j7rWQpAZN>r;QZos8W)ur:]6uZC?cF]@cWNn?c+8#Qk,0"rC.4dHBuioC`._rXSl) -rr)iqrVlcorqufqrVZX%rV#F,[@,PDrr)iorsJ`(pr=lc!#1CfrVca)rp"J,!WsRAr;Zcrrq6:, -rVknd"T\`R[/0e#qVd2M"T\iYN8+.*s8Ms0rr)fps8MrOGo["g$UqJpr;Zbms*t~> -XoAe.pXap9#9\6Fr;?TorW<#srr)j+rpHC8"9AT-/&(ZSrVulr!<)co)ZKd9rqtVW!s&gBn,;OI -2\H2n!Y7]&j7rWQpAZN>r;QZos8W)ur:]6uZC?cF]@cWNn?c+8#Qk,0"rC.4dHBuioC`._rXSl) -rr)iqrVlcorqufqrVZX%rV#F,[@,PDrr)iorsJ`(pr=lc!#1CfrVca)rp"J,!WsRAr;Zcrrq6:, -rVknd"T\`R[/0e#qVd2M"T\iYN8+.*s8Ms0rr)fps8MrOGo["g$UqJpr;Zbms*t~> -XoAe.pXap9#9\6Fr;?TorW<#srr)j+rpHC8"9AT-/&(ZSrVulr!<)co)ZKd9rqtVW!s&gBn,;OI -2\H2n!Y7]&j7rWQpAZN>r;QZos8W)ur:]6uZC?cF]@cWNn?c+8#Qk,0"rC.4dHBuioC`._rXSl) -rr)iqrVlcorqufqrVZX%rV#F,[@,PDrr)iorsJ`(pr=lc!#1CfrVca)rp"J,!WsRAr;Zcrrq6:, -rVknd"T\`R[/0e#qVd2M"T\iYN8+.*s8Ms0rr)fps8MrOGo["g$UqJpr;Zbms*t~> -ZN'n&')_@>=q(`lNV*2Krr)fpr;Z`qrVdK-jc2q@"9J]KWVHDjs8N#qr;QZorql^5rpuZo!g&M*N'_SmY!W`dFmf3=drVlZ; -+p%cM6KRb;+o_E6XpP42%qke;rquK.H;Q."!Wip6_=RU(rr)iqs8DrprsShmR4JOD"!jf2rVuco -X8d\~> -ZN'n&')_@>=q(`lNV*2Krr)fpr;Z`qrVdK-jc2q@"9J]KWVHDjs8N#qr;QZorql^5rpuZo!g&M*N'_SmY!W`dFmf3=drVlZ; -+p%cM6KRb;+o_E6XpP42%qke;rquK.H;Q."!Wip6_=RU(rr)iqs8DrprsShmR4JOD"!jf2rVuco -X8d\~> -ZN'n&')_@>=q(`lNV*2Krr)fpr;Z`qrVdK-jc2q@"9J]KWVHDjs8N#qr;QZorql^5rpuZo!g&M*N'_SmY!W`dFmf3=drVlZ; -+p%cM6KRb;+o_E6XpP42%qke;rquK.H;Q."!Wip6_=RU(rr)iqs8DrprsShmR4JOD"!jf2rVuco -X8d\~> -ZMtR:r;HQ\YX&L&3iV]HrVccqrVc`p*<#a1rr)fpq9N=Y"To*)d/EqBqu6Nal2CSYrVl`p)u]]c -2Zj'pMYR/Mr99h;&I&7:#rm^il1"HBqW.Y]rV"a'3#W/0r;m',)Et@Xs8W$3mZ7t\!=2'Irr;rr -rpQ!P!!*dfrp]q1qU\OE!X:EurVcTjrqlEJ]jM`_!=1fZjn\oSrr2lqrql^+rUR'S$j-Y\Pj82H -rqu]mWrIS~> -ZMtR:r;HQ\YX&L&3iV]HrVccqrVc`p*<#a1rr)fpq9N=Y"To*)d/EqBqu6Nal2CSYrVl`p)u]]c -2Zj'pMYR/Mr99h;&I&7:#rm^il1"HBqW.Y]rV"a'3#W/0r;m',)Et@Xs8W$3mZ7t\!=2'Irr;rr -rpQ!P!!*dfrp]q1qU\OE!X:EurVcTjrqlEJ]jM`_!=1fZjn\oSrr2lqrql^+rUR'S$j-Y\Pj82H -rqu]mWrIS~> -ZMtR:r;HQ\YX&L&3iV]HrVccqrVc`p*<#a1rr)fpq9N=Y"To*)d/EqBqu6Nal2CSYrVl`p)u]]c -2Zj'pMYR/Mr99h;&I&7:#rm^il1"HBqW.Y]rV"a'3#W/0r;m',)Et@Xs8W$3mZ7t\!=2'Irr;rr -rpQ!P!!*dfrp]q1qU\OE!X:EurVcTjrqlEJ]jM`_!=1fZjn\oSrr2lqrql^+rUR'S$j-Y\Pj82H -rqu]mWrIS~> -Zi;i\r;ZZZRNDYC:WND4rVccqrr;utrr2cVebfCGrr;lPD%-LG%r:b7rVl]XWGLkurr2lnru:n* -LBIY^3TBu9s8MuXJMRf=!!39F@@":Ho)@_M&,lM*mAsYQ*>B,#,[\7[r7_/XrqkYe)@m,X(7b7# -rWi>K3<93c2:M$o*USXp!oi%qiuTrqu`nrqud-rVlZ@>7CW8&:<71 -rVc`prN#sK~> -Zi;i\r;ZZZRNDYC:WND4rVccqrr;utrr2cVebfCGrr;lPD%-LG%r:b7rVl]XWGLkurr2lnru:n* -LBIY^3TBu9s8MuXJMRf=!!39F@@":Ho)@_M&,lM*mAsYQ*>B,#,[\7[r7_/XrqkYe)@m,X(7b7# -rWi>K3<93c2:M$o*USXp!oi%qiuTrqu`nrqud-rVlZ@>7CW8&:<71 -rVc`prN#sK~> -Zi;i\r;ZZZRNDYC:WND4rVccqrr;utrr2cVebfCGrr;lPD%-LG%r:b7rVl]XWGLkurr2lnru:n* -LBIY^3TBu9s8MuXJMRf=!!39F@@":Ho)@_M&,lM*mAsYQ*>B,#,[\7[r7_/XrqkYe)@m,X(7b7# -rWi>K3<93c2:M$o*USXp!oi%qiuTrqu`nrqud-rVlZ@>7CW8&:<71 -rVc`prN#sK~> -ZMu]ZqrEe\!tSAUr;Zcpr;QZnrr)lpp=4D(k5P;Wrr2fF8d,1r+LV(CpYCo_-`[%Cs8;co')q^D -+TVT\W;Z\mrqlTa]OVlerWNH5+',9+roO.krr)lprqu*'V2L.hXlKH[rS%8drVZ0#STI@I+&Lhm -qu#fD'E\FMF7Si#&,XO/!WiWqg&CpLrVlfps8N!,oXI0i!Wi`pW9sH[rr)]n%/p2(qUT9p"TfHT -g%bRGWrIS~> -ZMu]ZqrEe\!tSAUr;Zcpr;QZnrr)lpp=4D(k5P;Wrr2fF8d,1r+LV(CpYCo_-`[%Cs8;co')q^D -+TVT\W;Z\mrqlTa]OVlerWNH5+',9+roO.krr)lprqu*'V2L.hXlKH[rS%8drVZ0#STI@I+&Lhm -qu#fD'E\FMF7Si#&,XO/!WiWqg&CpLrVlfps8N!,oXI0i!Wi`pW9sH[rr)]n%/p2(qUT9p"TfHT -g%bRGWrIS~> -ZMu]ZqrEe\!tSAUr;Zcpr;QZnrr)lpp=4D(k5P;Wrr2fF8d,1r+LV(CpYCo_-`[%Cs8;co')q^D -+TVT\W;Z\mrqlTa]OVlerWNH5+',9+roO.krr)lprqu*'V2L.hXlKH[rS%8drVZ0#STI@I+&Lhm -qu#fD'E\FMF7Si#&,XO/!WiWqg&CpLrVlfps8N!,oXI0i!Wi`pW9sH[rr)]n%/p2(qUT9p"TfHT -g%bRGWrIS~> -ZMt7-hgc7@&ldW`rVld+rVZZnrr2lf]hJka\c)L+rY#/'[O;7[#t`P.[p':C$WuNirVQU7rr)cU -Ba"SG=R5qbqu6TpqrsqX2't1_T]c%IroF(irr)ipr;HQkq"a^]rVc`pgAh0N')_Y#mFe\"X7c>U -ZSV^a"!4$+nc'F)k&LS+!Ze'6r;QWnrqu`orVlfol$Ep>!^Km%fZG)ie/Tf!Y8>W -q>C9kX8d\~> -ZMt7-hgc7@&ldW`rVld+rVZZnrr2lf]hJka\c)L+rY#/'[O;7[#t`P.[p':C$WuNirVQU7rr)cU -Ba"SG=R5qbqu6TpqrsqX2't1_T]c%IroF(irr)ipr;HQkq"a^]rVc`pgAh0N')_Y#mFe\"X7c>U -ZSV^a"!4$+nc'F)k&LS+!Ze'6r;QWnrqu`orVlfol$Ep>!^Km%fZG)ie/Tf!Y8>W -q>C9kX8d\~> -ZMt7-hgc7@&ldW`rVld+rVZZnrr2lf]hJka\c)L+rY#/'[O;7[#t`P.[p':C$WuNirVQU7rr)cU -Ba"SG=R5qbqu6TpqrsqX2't1_T]c%IroF(irr)ipr;HQkq"a^]rVc`pgAh0N')_Y#mFe\"X7c>U -ZSV^a"!4$+nc'F)k&LS+!Ze'6r;QWnrqu`orVlfol$Ep>!^Km%fZG)ie/Tf!Y8>W -q>C9kX8d\~> -\,ZL-7K -\,ZL-7K -\,ZL-7K -\,ZL+#lXPPC^pXkEpET&s8EN*rr2lnlC]p9":ln[mJd%`-iDI\!s&N8$N^PO5(Trirr)fps8W)r -rr2logI_JJ%91gQrVc`qs82fVrrW/us8Dp+s8Drqrr)fprql]ps8Dip&H;_/rVlipr;Z`ps8Drr -rVZZprr26`,5q/XGV^-B!s&WSE5h,8r;QZoqY0serr2ilem/L\"td4[qYpQorr*Z.eP?5I"<:Ji -#lt8]L=uA$r;HQlrqufrrX\nZ?53PL5Jm*mrqucorr02&J,~> -\,ZL+#lXPPC^pXkEpET&s8EN*rr2lnlC]p9":ln[mJd%`-iDI\!s&N8$N^PO5(Trirr)fps8W)r -rr2logI_JJ%91gQrVc`qs82fVrrW/us8Dp+s8Drqrr)fprql]ps8Dip&H;_/rVlipr;Z`ps8Drr -rVZZprr26`,5q/XGV^-B!s&WSE5h,8r;QZoqY0serr2ilem/L\"td4[qYpQorr*Z.eP?5I"<:Ji -#lt8]L=uA$r;HQlrqufrrX\nZ?53PL5Jm*mrqucorr02&J,~> -\,ZL+#lXPPC^pXkEpET&s8EN*rr2lnlC]p9":ln[mJd%`-iDI\!s&N8$N^PO5(Trirr)fps8W)r -rr2logI_JJ%91gQrVc`qs82fVrrW/us8Dp+s8Drqrr)fprql]ps8Dip&H;_/rVlipr;Z`ps8Drr -rVZZprr26`,5q/XGV^-B!s&WSE5h,8r;QZoqY0serr2ilem/L\"td4[qYpQorr*Z.eP?5I"<:Ji -#lt8]L=uA$r;HQlrqufrrX\nZ?53PL5Jm*mrqucorr02&J,~> -\,Qd4s8(/\!X0s+n,*+brr2j)rqkc@*s)N^CV\-Rr;6L,oVr`0!s/Q73g8P$rVlfrrVlfqr"/i+ -s8MPP!W`90@F=`IrVlfXs8W'%s8N#rrr2os&cVh0s8N#trVcTep[mqDnF?#GnIG'Ynb)\Oqu-Nn -rVc`os8N!#s8N&urTaF_rZ:mfN_CQ'! -\,Qd4s8(/\!X0s+n,*+brr2j)rqkc@*s)N^CV\-Rr;6L,oVr`0!s/Q73g8P$rVlfrrVlfqr"/i+ -s8MPP!W`90@F=`IrVlfXs8W'%s8N#rrr2os&cVh0s8N#trVcTep[mqDnF?#GnIG'Ynb)\Oqu-Nn -rVc`os8N!#s8N&urTaF_rZ:mfN_CQ'! -\,Qd4s8(/\!X0s+n,*+brr2j)rqkc@*s)N^CV\-Rr;6L,oVr`0!s/Q73g8P$rVlfrrVlfqr"/i+ -s8MPP!W`90@F=`IrVlfXs8W'%s8N#rrr2os&cVh0s8N#trVcTep[mqDnF?#GnIG'Ynb)\Oqu-Nn -rVc`os8N!#s8N&urTaF_rZ:mfN_CQ'! -\Glp6rqOuT%0[u5m/?e\&,uV-ptL<>! -\Glp6rqOuT%0[u5m/?e\&,uV-ptL<>! -\Glp6rqOuT%0[u5m/?e\&,uV-ptL<>! -\Gls9ou^PB#;DJ;rr;uqrt,2,rUeEK"oncQQ2:LZrVl`ls!Rd=a?BY+#!C$)r;Zcpqu-NorVc8_ -QM^[\r6brU$m&*&g\h!Lrr2!Y&H2FrmcE-D\>u$NDGs(Q*sVZG"9J].!Wr3!'a"L=!sA]/'Iu=K -FGZWp^26t4rae0!!39DI/oD-NXE([.F7pqQU!M~> -\Gls9ou^PB#;DJ;rr;uqrt,2,rUeEK"oncQQ2:LZrVl`ls!Rd=a?BY+#!C$)r;Zcpqu-NorVc8_ -QM^[\r6brU$m&*&g\h!Lrr2!Y&H2FrmcE-D\>u$NDGs(Q*sVZG"9J].!Wr3!'a"L=!sA]/'Iu=K -FGZWp^26t4rae0!!39DI/oD-NXE([.F7pqQU!M~> -\Gls9ou^PB#;DJ;rr;uqrt,2,rUeEK"oncQQ2:LZrVl`ls!Rd=a?BY+#!C$)r;Zcpqu-NorVc8_ -QM^[\r6brU$m&*&g\h!Lrr2!Y&H2FrmcE-D\>u$NDGs(Q*sVZG"9J].!Wr3!'a"L=!sA]/'Iu=K -FGZWp^26t4rae0!!39DI/oD-NXE([.F7pqQU!M~> -\Glp1``*6K.&HJ5rVl]o&H;Y"`)d'2,SErVlirnGi@a&,c;!oBYGe]U!hG8N%k0"9&<#! -\Glp1``*6K.&HJ5rVl]o&H;Y"`)d'2,SErVlirnGi@a&,c;!oBYGe]U!hG8N%k0"9&<#! -\Glp1``*6K.&HJ5rVl]o&H;Y"`)d'2,SErVlirnGi@a&,c;!oBYGe]U!hG8N%k0"9&<#! -^&JK>s8MrlcqalO0qeC@rtYP5rVc`on$YId!<<0-7aV&3rr;oqqu70)rqteQ"p"cL\GH1'rVulr% -eeLo#:8U5s7<./^[V1#p&G$j"onT$s8N#rs8W$,qXj.0aL@LM4WP4E#QaW!!!2?b!!2lqrrEW5$ -5+IGCS8;Tg$A5*s8Muorr2otrq?@,rqPTW=uplprVZQkrTJ>/!Ws[Gr;QQm$N9u&mYhk]!t],*r -;RB-p=&R2rVYMZES^KjrVlfrrVZ[*rqu/M,R"E-]Cc+$rVlc&s*t~> -^&JK>s8MrlcqalO0qeC@rtYP5rVc`on$YId!<<0-7aV&3rr;oqqu70)rqteQ"p"cL\GH1'rVulr% -eeLo#:8U5s7<./^[V1#p&G$j"onT$s8N#rs8W$,qXj.0aL@LM4WP4E#QaW!!!2?b!!2lqrrEW5$ -5+IGCS8;Tg$A5*s8Muorr2otrq?@,rqPTW=uplprVZQkrTJ>/!Ws[Gr;QQm$N9u&mYhk]!t],*r -;RB-p=&R2rVYMZES^KjrVlfrrVZ[*rqu/M,R"E-]Cc+$rVlc&s*t~> -^&JK>s8MrlcqalO0qeC@rtYP5rVc`on$YId!<<0-7aV&3rr;oqqu70)rqteQ"p"cL\GH1'rVulr% -eeLo#:8U5s7<./^[V1#p&G$j"onT$s8N#rs8W$,qXj.0aL@LM4WP4E#QaW!!!2?b!!2lqrrEW5$ -5+IGCS8;Tg$A5*s8Muorr2otrq?@,rqPTW=uplprVZQkrTJ>/!Ws[Gr;QQm$N9u&mYhk]!t],*r -;RB-p=&R2rVYMZES^KjrVlfrrVZ[*rqu/M,R"E-]Cc+$rVlc&s*t~> -^&JH=rVcN:@KcrhVY'cc(&n11r;GrR0E_I^!W`B4AD[4]s8N#qs!%I?rVlQ#.KKSX -^&JH=rVcN:@KcrhVY'cc(&n11r;GrR0E_I^!W`B4AD[4]s8N#qs!%I?rVlQ#.KKSX -^&JH=rVcN:@KcrhVY'cc(&n11r;GrR0E_I^!W`B4AD[4]s8N#qs!%I?rVlQ#.KKSX -^AeT?rVcK?>n%#eQM(4RrtYP3s8(cC*s2W^4;S&!";Z7DrVlirqu7i=rVlc[Jdqe_)Nsgmrr)NG -V)o%f!Z$^mqu6Tprr)irrqHF.rr)lrs8Mrnr:f^Ad^=Zo-56Ua!WrN'! -^AeT?rVcK?>n%#eQM(4RrtYP3s8(cC*s2W^4;S&!";Z7DrVlirqu7i=rVlc[Jdqe_)Nsgmrr)NG -V)o%f!Z$^mqu6Tprr)irrqHF.rr)lrs8Mrnr:f^Ad^=Zo-56Ua!WrN'! -^AeT?rVcK?>n%#eQM(4RrtYP3s8(cC*s2W^4;S&!";Z7DrVlirqu7i=rVlc[Jdqe_)Nsgmrr)NG -V)o%f!Z$^mqu6Tprr)irrqHF.rr)lrs8Mrnr:f^Ad^=Zo-56Ua!WrN'! -^AeT?rVG)Z"9pEEp&+acrtk\5rqkYs'*&1\HI[Za!WiH=M":NDrVlcq!<2ur*rc#i7fiYo0?jCl -kI4=s!8?r-mrVZWnrr)lrpAb*j&HD[uhnG.X.KohR!!30%!!E3$!s8T*!mL`F!WiH*!<*!- -!!.!Wid;lM^\\qYpp#kBRU@!YfeFrVlZn$NC#&s8:_J -!!Faur;QWo&H;V+rqu5S-NOE/\bQ1&rVj8*J,~> -^AeT?rVG)Z"9pEEp&+acrtk\5rqkYs'*&1\HI[Za!WiH=M":NDrVlcq!<2ur*rc#i7fiYo0?jCl -kI4=s!8?r-mrVZWnrr)lrpAb*j&HD[uhnG.X.KohR!!30%!!E3$!s8T*!mL`F!WiH*!<*!- -!!.!Wid;lM^\\qYpp#kBRU@!YfeFrVlZn$NC#&s8:_J -!!Faur;QWo&H;V+rqu5S-NOE/\bQ1&rVj8*J,~> -^AeT?rVG)Z"9pEEp&+acrtk\5rqkYs'*&1\HI[Za!WiH=M":NDrVlcq!<2ur*rc#i7fiYo0?jCl -kI4=s!8?r-mrVZWnrr)lrpAb*j&HD[uhnG.X.KohR!!30%!!E3$!s8T*!mL`F!WiH*!<*!- -!!.!Wid;lM^\\qYpp#kBRU@!YfeFrVlZn$NC#&s8:_J -!!Faur;QWo&H;V+rqu5S-NOE/\bQ1&rVj8*J,~> -^AeT?qV5uu"s]B&s8DrortPJ1pph.@" -^AeT?qV5uu"s]B&s8DrortPJ1pph.@" -^AeT?qV5uu"s]B&s8DrortPJ1pph.@" -^AeH9idM1;.$=?)rW3&urr;us1&q-s3UBnrr<#trr;oqrr)#'$NUAP -DaX^/!F0/rr)itr;QTn!<2ut'E7t%j1LFF&d&.:!!**%!!*'""8r9#!!!&C!;up&!W`?' -!!**!!=Jr/!XBleXk)n9s8Mlp!WN,srX\r,rr;lOJh[irbl7YAs8N#t$NC)%a#!o#">%+^rr2co -rVd&pV\/t41?nf;rrE&qrtPJ4s8N#rn -^AeH9idM1;.$=?)rW3&urr;us1&q-s3UBnrr<#trr;oqrr)#'$NUAP -DaX^/!F0/rr)itr;QTn!<2ut'E7t%j1LFF&d&.:!!**%!!*'""8r9#!!!&C!;up&!W`?' -!!**!!=Jr/!XBleXk)n9s8Mlp!WN,srX\r,rr;lOJh[irbl7YAs8N#t$NC)%a#!o#">%+^rr2co -rVd&pV\/t41?nf;rrE&qrtPJ4s8N#rn -^AeH9idM1;.$=?)rW3&urr;us1&q-s3UBnrr<#trr;oqrr)#'$NUAP -DaX^/!F0/rr)itr;QTn!<2ut'E7t%j1LFF&d&.:!!**%!!*'""8r9#!!!&C!;up&!W`?' -!!**!!=Jr/!XBleXk)n9s8Mlp!WN,srX\r,rr;lOJh[irbl7YAs8N#t$NC)%a#!o#">%+^rr2co -rVd&pV\/t41?nf;rrE&qrtPJ4s8N#rn -_uC,Dr;Q]nk_p;\+cPgds8W)us8N!8r;Gr3)/SR;rVc`i`'FS-!=1s;qu6Qlrr)]n&,=4)! -_uC,Dr;Q]nk_p;\+cPgds8W)us8N!8r;Gr3)/SR;rVc`i`'FS-!=1s;qu6Qlrr)]n&,=4)! -_uC,Dr;Q]nk_p;\+cPgds8W)us8N!8r;Gr3)/SR;rVc`i`'FS-!=1s;qu6Qlrr)]n&,=4)! -_uB`8rr*,iQ6HJUK(Ag=*W5m8rVlcqrr;f3;pG:?rr)`lo<^.S!sK*3eb]7Crql]trpcB`rW*9, -$Rg/Cq>L -_uB`8rr*,iQ6HJUK(Ag=*W5m8rVlcqrr;f3;pG:?rr)`lo<^.S!sK*3eb]7Crql]trpcB`rW*9, -$Rg/Cq>L -_uB`8rr*,iQ6HJUK(Ag=*W5m8rVlcqrr;f3;pG:?rr)`lo<^.S!sK*3eb]7Crql]trpcB`rW*9, -$Rg/Cq>L -_uC,Cr;?)h*!IO8kl(MWrsJ`(rVulrrVl5_qY^='rVl>\,Q\#L&SL)"rVlfpr;RB.rVP>.!s/WE -;l]Zls8N&rrqHF!rr)inpufS=2[00]!!<*"[/^1-oDnml!!*!!#6P#>7"iSEp\t0crrW2urr2j2 -rr<#ts8Mrno -_uC,Cr;?)h*!IO8kl(MWrsJ`(rVulrrVl5_qY^='rVl>\,Q\#L&SL)"rVlfpr;RB.rVP>.!s/WE -;l]Zls8N&rrqHF!rr)inpufS=2[00]!!<*"[/^1-oDnml!!*!!#6P#>7"iSEp\t0crrW2urr2j2 -rr<#ts8Mrno -_uC,Cr;?)h*!IO8kl(MWrsJ`(rVulrrVl5_qY^='rVl>\,Q\#L&SL)"rVlfpr;RB.rVP>.!s/WE -;l]Zls8N&rrqHF!rr)inpufS=2[00]!!<*"[/^1-oDnml!!*!!#6P#>7"iSEp\t0crrW2urr2j2 -rr<#ts8Mrno -_uC)CrU[gDSY?+r:U'orql]o -s8W)trt,/+m^#(Y!s9^6qu6Nmr;HWhrs&DC"9JWRchRM?rql]rrr)iq%/\dd$NqK*m/?q^rr0S1 -J,~> -_uC)CrU[gDSY?+r:U'orql]o -s8W)trt,/+m^#(Y!s9^6qu6Nmr;HWhrs&DC"9JWRchRM?rql]rrr)iq%/\dd$NqK*m/?q^rr0S1 -J,~> -_uC)CrU[gDSY?+r:U'orql]o -s8W)trt,/+m^#(Y!s9^6qu6Nmr;HWhrs&DC"9JWRchRM?rql]rrr)iq%/\dd$NqK*m/?q^rr0S1 -J,~> -_uC,Cp;B,u)KbNKr;Q]mrs&>TY,q-krr)d1qu-Nlrr)fqrqu#-%KZY5+.D]ur;QTn#lO\gI3N[S -qu-Kms8;orq#:Qtp>;HA$j-D/"9JT*!c6HQp](6l)#XC4 -s8N&urqGBK0`_7S&od18rr;usrVlQk#4n)[!XMHXqYpWpo(i.^%fQD)rVl]F:'q(@Re-OW])R9~> -_uC,Cp;B,u)KbNKr;Q]mrs&>TY,q-krr)d1qu-Nlrr)fqrqu#-%KZY5+.D]ur;QTn#lO\gI3N[S -qu-Kms8;orq#:Qtp>;HA$j-D/"9JT*!c6HQp](6l)#XC4 -s8N&urqGBK0`_7S&od18rr;usrVlQk#4n)[!XMHXqYpWpo(i.^%fQD)rVl]F:'q(@Re-OW])R9~> -_uC,Cp;B,u)KbNKr;Q]mrs&>TY,q-krr)d1qu-Nlrr)fqrqu#-%KZY5+.D]ur;QTn#lO\gI3N[S -qu-Kms8;orq#:Qtp>;HA$j-D/"9JT*!c6HQp](6l)#XC4 -s8N&urqGBK0`_7S&od18rr;usrVlQk#4n)[!XMHXqYpWpo(i.^%fQD)rVl]F:'q(@Re-OW])R9~> -aoD>=$31#$eQi7g@c%(^rXJo,s8N#hc!_Y@RI0tMr;Q`r&,uV.s8N&qfiAF\!X(0Wq>1'ps8DoZ -J>2H0s8W)ss8W'-r;Zcrrr)cehkX3f!Wr<#rrN&urrMQgrrW&trrN-"#lt#+!<<*#! -aoD>=$31#$eQi7g@c%(^rXJo,s8N#hc!_Y@RI0tMr;Q`r&,uV.s8N&qfiAF\!X(0Wq>1'ps8DoZ -J>2H0s8W)ss8W'-r;Zcrrr)cehkX3f!Wr<#rrN&urrMQgrrW&trrN-"#lt#+!<<*#! -aoD>=$31#$eQi7g@c%(^rXJo,s8N#hc!_Y@RI0tMr;Q`r&,uV.s8N&qfiAF\!X(0Wq>1'ps8DoZ -J>2H0s8W)ss8W'-r;Zcrrr)cehkX3f!Wr<#rrN&urrMQgrrW&trrN-"#lt#+!<<*#! -ao;D@qu6R7qV#Zm%85g\s8N#trVcWlrU6I:!s&NKO7iJMrq?@-rqF`:"p"]+0?3hfrql]orVulq -qt0g[rt#,-r;HWor:Sd=7LB5"!<_B_!!<-"r;d$$!WW6&rW*3'! -ao;D@qu6R7qV#Zm%85g\s8N#trVcWlrU6I:!s&NKO7iJMrq?@-rqF`:"p"]+0?3hfrql]orVulq -qt0g[rt#,-r;HWor:Sd=7LB5"!<_B_!!<-"r;d$$!WW6&rW*3'! -ao;D@qu6R7qV#Zm%85g\s8N#trVcWlrU6I:!s&NKO7iJMrq?@-rqF`:"p"]+0?3hfrql]orVulq -qt0g[rt#,-r;HWor:Sd=7LB5"!<_B_!!<-"r;d$$!WW6&rW*3'! -ao;_Hrqu`ok_'QU6b`Nurr<#s%K,b",Qn/S'.6o9rVZZgs8W'4pqJHc!WWO%cM@G#0 -!W`<'rW*$"!S@AU!uY:EjnJ`PpAYNul'sR>!ZJHDr;Q]hs8N!6pU2@L"=CGQs8N#qqXs0h63f6E -nbi@bqu?]q#lO:c,m+KRhu(+dJ,~> -ao;_Hrqu`ok_'QU6b`Nurr<#s%K,b",Qn/S'.6o9rVZZgs8W'4pqJHc!WWO%cM@G#0 -!W`<'rW*$"!S@AU!uY:EjnJ`PpAYNul'sR>!ZJHDr;Q]hs8N!6pU2@L"=CGQs8N#qqXs0h63f6E -nbi@bqu?]q#lO:c,m+KRhu(+dJ,~> -ao;_Hrqu`ok_'QU6b`Nurr<#s%K,b",Qn/S'.6o9rVZZgs8W'4pqJHc!WWO%cM@G#0 -!W`<'rW*$"!S@AU!uY:EjnJ`PpAYNul'sR>!ZJHDr;Q]hs8N!6pU2@L"=CGQs8N#qqXs0h63f6E -nbi@bqu?]q#lO:c,m+KRhu(+dJ,~> -aou'g[W(kk>#UrVlQk%0$5(o;X>E!s/p3dJ3_?#Q4T# -rVc`mrqHF(rr)flkI=\3"9AQ)!<<-$!os=r!<<*$!W`?("pkeQ(Ek:c4$ZA0>Aa4Q'l@_n8Ol98 -3\r91*YAnj#Qt21! -aou'g[W(kk>#UrVlQk%0$5(o;X>E!s/p3dJ3_?#Q4T# -rVc`mrqHF(rr)flkI=\3"9AQ)!<<-$!os=r!<<*$!W`?("pkeQ(Ek:c4$ZA0>Aa4Q'l@_n8Ol98 -3\r91*YAnj#Qt21! -aou'g[W(kk>#UrVlQk%0$5(o;X>E!s/p3dJ3_?#Q4T# -rVc`mrqHF(rr)flkI=\3"9AQ)!<<-$!os=r!<<*$!W`?("pkeQ(Ek:c4$ZA0>Aa4Q'l@_n8Ol98 -3\r91*YAnj#Qt21! -ao;hKrr)Jq0*EG_qYpHns8N!/rVl]K>m:BLGh`2prqu`nrq6:'rr)f_PT0c*!t/&ClLt,Trqucp -!<)Wk%0$+ob^:N6!!30&!sAN'!!;6^('+I:"9SrB(F)"AD1n+Q^!bm+s8W)tr;RZ6rVlcnrVZEP -hTW^6T8.Z$9K""/&.&F>!SmbU!WN-)!FpAYKts8;l]NGR_Tr;Q?g)ZBTtE -ao;hKrr)Jq0*EG_qYpHns8N!/rVl]K>m:BLGh`2prqu`nrq6:'rr)f_PT0c*!t/&ClLt,Trqucp -!<)Wk%0$+ob^:N6!!30&!sAN'!!;6^('+I:"9SrB(F)"AD1n+Q^!bm+s8W)tr;RZ6rVlcnrVZEP -hTW^6T8.Z$9K""/&.&F>!SmbU!WN-)!FpAYKts8;l]NGR_Tr;Q?g)ZBTtE -ao;hKrr)Jq0*EG_qYpHns8N!/rVl]K>m:BLGh`2prqu`nrq6:'rr)f_PT0c*!t/&ClLt,Trqucp -!<)Wk%0$+ob^:N6!!30&!sAN'!!;6^('+I:"9SrB(F)"AD1n+Q^!bm+s8W)tr;RZ6rVlcnrVZEP -hTW^6T8.Z$9K""/&.&F>!SmbU!WN-)!FpAYKts8;l]NGR_Tr;Q?g)ZBTtE -aoDD?)#2HG#8haOrr;uts8N&trqu>U%g*Ykkl(GY!<)Qirr*<'l$a-F!Wi]`GJ*DDrWE3"s8Mcm -"oe5OU,rk`!jRN-Gr;QWnr -aoDD?)#2HG#8haOrr;uts8N&trqu>U%g*Ykkl(GY!<)Qirr*<'l$a-F!Wi]`GJ*DDrWE3"s8Mcm -"oe5OU,rk`!jRN-Gr;QWnr -aoDD?)#2HG#8haOrr;uts8N&trqu>U%g*Ykkl(GY!<)Qirr*<'l$a-F!Wi]`GJ*DDrWE3"s8Mcm -"oe5OU,rk`!jRN-Gr;QWnr -cN!kB%/g,%gh?j$A)dLdrVZTn#QFVH2$4>"k5"uWs8Mus"9/8trr2iorsSe_@13/qn3$&Y;!<`<% -!WrK(rW*$"!U9Xr! -cN!kB%/g,%gh?j$A)dLdrVZTn#QFVH2$4>"k5"uWs8Mus"9/8trr2iorsSe_@13/qn3$&Y;!<`<% -!WrK(rW*$"!U9Xr! -cN!kB%/g,%gh?j$A)dLdrVZTn#QFVH2$4>"k5"uWs8Mus"9/8trr2iorsSe_@13/qn3$&Y;!<`<% -!WrK(rW*$"!U9Xr! -cMnFSr;Q]nrTK%P#sQN1rVZWkrs&JkNXl.3]`%g1r;HQm$31#'r;?Nmqu-HirsSY@4otln.[]c) -rr2iq!WN&srX8Z&r:8Hp0EM7U!s.]f'*/.8!f#~> -cMnFSr;Q]nrTK%P#sQN1rVZWkrs&JkNXl.3]`%g1r;HQm$31#'r;?Nmqu-HirsSY@4otln.[]c) -rr2iq!WN&srX8Z&r:8Hp0EM7U!s.]f'*/.8!f#~> -cMnFSr;Q]nrTK%P#sQN1rVZWkrs&JkNXl.3]`%g1r;HQm$31#'r;?Nmqu-HirsSY@4otln.[]c) -rr2iq!WN&srX8Z&r:8Hp0EM7U!s.]f'*/.8!f#~> -c2S:OrVlcbV&]aqY5/"mrr2fp#Q<=N!X(R[qu-L's8DorrVZf#~> -c2S:OrVlcbV&]aqY5/"mrr2fp#Q<=N!X(R[qu-L's8DorrVZf#~> -c2S:OrVlcbV&]aqY5/"mrr2fp#Q<=N!X(R[qu-L's8DorrVZf#~> -cN!qD%fQD$a#X;AMt6fErr)`nr;Rc5_C>Ql9Dnehrql]nrVH6Pd[Y2T8kribjSJiSr;R0'r8'M# -\GQ:)rVc`mrs/Q%rqc9:G9Hkd"9S],!s.]frrEQ/!f!!<6(!!3'##lt)?A]4-9rr)farrE&trtbFY -cN!qD%fQD$a#X;AMt6fErr)`nr;Rc5_C>Ql9Dnehrql]nrVH6Pd[Y2T8kribjSJiSr;R0'r8'M# -\GQ:)rVc`mrs/Q%rqc9:G9Hkd"9S],!s.]frrEQ/!f!!<6(!!3'##lt)?A]4-9rr)farrE&trtbFY -cN!qD%fQD$a#X;AMt6fErr)`nr;Rc5_C>Ql9Dnehrql]nrVH6Pd[Y2T8kribjSJiSr;R0'r8'M# -\GQ:)rVc`mrs/Q%rqc9:G9Hkd"9S],!s.]frrEQ/!f!!<6(!!3'##lt)?A]4-9rr)farrE&trtbFY -cMn=Ps8DiI@0[Cnq>1*srTfTaqu6Qo -rVHO"rr)fkl)mYe!<*'"! -cMn=Ps8DiI@0[Cnq>1*srTfTaqu6Qo -rVHO"rr)fkl)mYe!<*'"! -cMn=Ps8DiI@0[Cnq>1*srTfTaqu6Qo -rVHO"rr)fkl)mYe!<*'"! -cN!qC$NBIJ'+.:Tr;Zcpr;Q`rs8EZ*\/G>J'8P]Gq=!1SJO9kH!!<-#"onZ)%:AB!qu6m"qWIkX -rqu]o')hk1rqu]hfSCXM!WW6%!WW9&mK!7f%0-D/! -cN!qC$NBIJ'+.:Tr;Zcpr;Q`rs8EZ*\/G>J'8P]Gq=!1SJO9kH!!<-#"onZ)%:AB!qu6m"qWIkX -rqu]o')hk1rqu]hfSCXM!WW6%!WW9&mK!7f%0-D/! -cN!qC$NBIJ'+.:Tr;Zcpr;Q`rs8EZ*\/G>J'8P]Gq=!1SJO9kH!!<-#"onZ)%:AB!qu6m"qWIkX -rqu]o')hk1rqu]hfSCXM!WW6%!WW9&mK!7f%0-D/! -ci4CPr;H?&+pKQsq>UBjruqC?r;QZh_CPci"<_]s\; -ci4CPr;H?&+pKQsq>UBjruqC?r;QZh_CPci"<_]s\; -ci4CPr;H?&+pKQsq>UBjruqC?r;QZh_CPci"<_]s\; -c2S+Hbt%pQLALlJrqud?rqufqqu6NRCBsq@!X&T-!!3-$!s/Q4*Ap;S+p\8P$rQ`frsJc(rquWS -TJ-?H!UBac!WE'-! -c2S+Hbt%pQLALlJrqud?rqufqqu6NRCBsq@!X&T-!!3-$!s/Q4*Ap;S+p\8P$rQ`frsJc(rquWS -TJ-?H!UBac!WE'-! -c2S+Hbt%pQLALlJrqud?rqufqqu6NRCBsq@!X&T-!!3-$!s/Q4*Ap;S+p\8P$rQ`frsJc(rquWS -TJ-?H!UBac!WE'-! -cMn7Lj`q=F=Q'/Wrr)cp$i^)'r;QWnpV&3Gk`rr'n;J,~> -cMn7Lj`q=F=Q'/Wrr)cp$i^)'r;QWnpV&3Gk`rr'n;J,~> -cMn7Lj`q=F=Q'/Wrr)cp$i^)'r;QWnpV&3Gk`rr'n;J,~> -cMn7AW>#S"_>F3-rVlcq,Q@K2rr)fprquGt2\#lh!%h~> -cMn7AW>#S"_>F3-rVlcq,Q@K2rr)fprquGt2\#lh!%h~> -cMn7AW>#S"_>F3-rVlcq,Q@K2rr)fprquGt2\#lh!%h~> -ci4CKaZoqIQ1k4Us8W)srtb=M_u'B3rVlfpoY"]T'+Y`o04(4&qYgC!rVulcI00X+`UNm3r:.B` -#6G#+!U0Ua!=TDmLtVb+r;HWnrVul%s8W'"rVl`nrW`>iW)a`?!UB^n! -ci4CKaZoqIQ1k4Us8W)srtb=M_u'B3rVlfpoY"]T'+Y`o04(4&qYgC!rVulcI00X+`UNm3r:.B` -#6G#+!U0Ua!=TDmLtVb+r;HWnrVul%s8W'"rVl`nrW`>iW)a`?!UB^n! -ci4CKaZoqIQ1k4Us8W)srtb=M_u'B3rVlfpoY"]T'+Y`o04(4&qYgC!rVulcI00X+`UNm3r:.B` -#6G#+!U0Ua!=TDmLtVb+r;HWnrVul%s8W'"rVl`nrW`>iW)a`?!UB^n! -eGfpUr;Zfpi,&i5?17djs8W':s7t#;B^,KqrVlfnrqbikOE?D`g?nh%h~> -eGfpUr;Zfpi,&i5?17djs8W':s7t#;B^,KqrVlfnrqbikOE?D`g?nh%h~> -eGfpUr;Zfpi,&i5?17djs8W':s7t#;B^,KqrVlfnrqbikOE?D`g?nh%h~> -eGoRJ#lX\mT,@r!a8Po8(&e%-i,8`?T_86\rVuiqrVc`or;QZkrrDuqr<;\K!sUpApAb-j#Q4GZ -N$89)!U9Xl!W`?'! -eGoRJ#lX\mT,@r!a8Po8(&e%-i,8`?T_86\rVuiqrVc`or;QZkrrDuqr<;\K!sUpApAb-j#Q4GZ -N$89)!U9Xl!W`?'! -eGoRJ#lX\mT,@r!a8Po8(&e%-i,8`?T_86\rVuiqrVc`or;QZkrrDuqr<;\K!sUpApAb-j#Q4GZ -N$89)!U9Xl!W`?'! -eGoRJs7urK5lr-opAFgf(B+-rOr+3'1TKjArr;rrr;Q`qs8;lqqu7$$s8Mupi`H9i=SVUi$NC#% -qV-Q=! -eGoRJs7urK5lr-opAFgf(B+-rOr+3'1TKjArr;rrr;Q`qs8;lqqu7$$s8Mupi`H9i=SVUi$NC#% -qV-Q=! -eGoRJs7urK5lr-opAFgf(B+-rOr+3'1TKjArr;rrr;Q`qs8;lqqu7$$s8Mupi`H9i=SVUi$NC#% -qV-Q=! -eGfmTrVY\s#n:;4r;HNm"8qbp,5qTK" -eGfmTrVY\s#n:;4r;HNm"8qbp,5qTK" -eGfmTrVY\s#n:;4r;HNm"8qbp,5qTK" -e,KaRo<'DE0u*\dr;6L(rS1ft#mCA3"!3*FpAFjfrWN9"rqucns8W')rVlT=;[!@khZ!9L$i^(u -d:*Ia!s8Q*"7#se!=/c716:c"r;QYarrN)urVd$"qs'n8$j#Yo$3C50!Ms*t~> -e,KaRo<'DE0u*\dr;6L(rS1ft#mCA3"!3*FpAFjfrWN9"rqucns8W')rVlT=;[!@khZ!9L$i^(u -d:*Ia!s8Q*"7#se!=/c716:c"r;QYarrN)urVd$"qs'n8$j#Yo$3C50!Ms*t~> -e,KaRo<'DE0u*\dr;6L(rS1ft#mCA3"!3*FpAFjfrWN9"rqucns8W')rVlT=;[!@khZ!9L$i^(u -d:*Ia!s8Q*"7#se!=/c716:c"r;QYarrN)urVd$"qs'n8$j#Yo$3C50!Ms*t~> -eGfmTr7X[D*0Kmms8Dip')Ub1Ti)g6!NrXJf*rVYVg$3W-?rr2rsbl<1~> -eGfmTr7X[D*0Kmms8Dip')Ub1Ti)g6!NrXJf*rVYVg$3W-?rr2rsbl<1~> -eGfmTr7X[D*0Kmms8Dip')Ub1Ti)g6!NrXJf*rVYVg$3W-?rr2rsbl<1~> -fDc7`$3LrZkPb;X -s8E<&r;H9(;Zm($l2V+k!s&H("W(e#rJU[ar8WVT"p+c)! -fDc7`$3LrZkPb;X -s8E<&r;H9(;Zm($l2V+k!s&H("W(e#rJU[ar8WVT"p+c)! -fDc7`$3LrZkPb;X -s8E<&r;H9(;Zm($l2V+k!s&H("W(e#rJU[ar8WVT"p+c)! -g&M*Os8NB(p:i?d.(B*OrVl`p(&n.1rVH*(>T*eJ!s99B`p`m+s8Dior=8YqmbGU,+pA#X8`'IF -rVZ[&rVZWlo=IEp!WrPi!<3--! -g&M*Os8NB(p:i?d.(B*OrVl`p(&n.1rVH*(>T*eJ!s99B`p`m+s8Dior=8YqmbGU,+pA#X8`'IF -rVZ[&rVZWlo=IEp!WrPi!<3--! -g&M*Os8NB(p:i?d.(B*OrVl`p(&n.1rVH*(>T*eJ!s99B`p`m+s8Dior=8YqmbGU,+pA#X8`'IF -rVZ[&rVZWlo=IEp!WrPi!<3--! -g&M*O%KHG+j(S`4FS,S3r;Q]ms!I[CrVlcpr9'"l"p+f,"u2D-qYgEmr;QQMYD-+!!p]KZH!!!!)c!"&c.!s^NRo)ARdrepd`rqlK+8IPV$"9APl!<3'*!WW9(&7O2grmUlL -rVl]nqu?]q#5m:S!t/5orr11BJ,~> -g&M*O%KHG+j(S`4FS,S3r;Q]ms!I[CrVlcpr9'"l"p+f,"u2D-qYgEmr;QQMYD-+!!p]KZH!!!!)c!"&c.!s^NRo)ARdrepd`rqlK+8IPV$"9APl!<3'*!WW9(&7O2grmUlL -rVl]nqu?]q#5m:S!t/5orr11BJ,~> -g&M*O%KHG+j(S`4FS,S3r;Q]ms!I[CrVlcpr9'"l"p+f,"u2D-qYgEmr;QQMYD-+!!p]KZH!!!!)c!"&c.!s^NRo)ARdrepd`rqlK+8IPV$"9APl!<3'*!WW9(&7O2grmUlL -rVl]nqu?]q#5m:S!t/5orr11BJ,~> -f`1sM#kkP@#=6K1r;?Nmr;Qltr;QZorZ;"-ZU,6+!e!<3*+#r/FQrVlcprepgVrWrJuaB9)Y! -f`1sM#kkP@#=6K1r;?Nmr;Qltr;QZorZ;"-ZU,6+!e!<3*+#r/FQrVlcprepgVrWrJuaB9)Y! -f`1sM#kkP@#=6K1r;?Nmr;Qltr;QZorZ;"-ZU,6+!e!<3*+#r/FQrVlcprepgVrWrJuaB9)Y! -f`)?XrqtD>!Z@R+rr2rsr;cips!IaFrr;uqrVlfohg?LO!W`<,3ihB>r;?Qln>TJ3(Ia_]r;HQl -rVQU$rV+Q0"9AK'!X%Ze$3:N'^\e'1r;QZoMZ3n[s8MrSFqsuW!!D]jrrEE-!&Permh#O -rr(rKdej%PrVulslZ*.651]`4c2W:~> -f`)?XrqtD>!Z@R+rr2rsr;cips!IaFrr;uqrVlfohg?LO!W`<,3ihB>r;?Qln>TJ3(Ia_]r;HQl -rVQU$rV+Q0"9AK'!X%Ze$3:N'^\e'1r;QZoMZ3n[s8MrSFqsuW!!D]jrrEE-!&Permh#O -rr(rKdej%PrVulslZ*.651]`4c2W:~> -f`)?XrqtD>!Z@R+rr2rsr;cips!IaFrr;uqrVlfohg?LO!W`<,3ihB>r;?Qln>TJ3(Ia_]r;HQl -rVQU$rV+Q0"9AK'!X%Ze$3:N'^\e'1r;QZoMZ3n[s8MrSFqsuW!!D]jrrEE-!&Permh#O -rr(rKdej%PrVulslZ*.651]`4c2W:~> -gA`Jus8DobPS"3nmf*7arVlfps8Dfms8W)srr2lrs8N&urp?(5$iU/:"=/EJp\k*hrqk]KMU;1u -rW)oqrs8T'rr;c>>m(3-!!!&e!;lj#%78#4r;?QprJ(=Xr8Vo<"9\`*!<*#l!!30$!<*!'!!*-5 -@,h+`rrE&lrrrE%s8Musr;Q`r!ri6"qu6Wq%fZD$p[@%90S/rtrVccqrVm*"cRK&5L%P -gA`Jus8DobPS"3nmf*7arVlfps8Dfms8W)srr2lrs8N&urp?(5$iU/:"=/EJp\k*hrqk]KMU;1u -rW)oqrs8T'rr;c>>m(3-!!!&e!;lj#%78#4r;?QprJ(=Xr8Vo<"9\`*!<*#l!!30$!<*!'!!*-5 -@,h+`rrE&lrrrE%s8Musr;Q`r!ri6"qu6Wq%fZD$p[@%90S/rtrVccqrVm*"cRK&5L%P -gA`Jus8DobPS"3nmf*7arVlfps8Dfms8W)srr2lrs8N&urp?(5$iU/:"=/EJp\k*hrqk]KMU;1u -rW)oqrs8T'rr;c>>m(3-!!!&e!;lj#%78#4r;?QprJ(=Xr8Vo<"9\`*!<*#l!!30$!<*!'!!*-5 -@,h+`rrE&lrrrE%s8Musr;Q`r!ri6"qu6Wq%fZD$p[@%90S/rtrVccqrVm*"cRK&5L%P -g&DBXr;"K!"XgSRrVld*r;Q]nmEObhrVliqs8Moq(B4$M?Ps"K!s9$(]']For;QZkp&4jgr;R-% -rr2lqq9iFP!WqWe$3:52! -g&DBXr;"K!"XgSRrVld*r;Q]nmEObhrVliqs8Moq(B4$M?Ps"K!s9$(]']For;QZkp&4jgr;R-% -rr2lqq9iFP!WqWe$3:52! -g&DBXr;"K!"XgSRrVld*r;Q]nmEObhrVliqs8Moq(B4$M?Ps"K!s9$(]']For;QZkp&4jgr;R-% -rr2lqq9iFP!WqWe$3:52! -g&M*O#jm3N&T$b2rr)iq$2jenV)reKp&+derqufrrY57jKImH3!!*6UN8XL/r;HWor;ZcnrsJc( -rqP8c$3:84!UBac!=8i2&l[H^rVlirJc>uTrr);G,m45H!<<2j!"&c-! -g&M*O#jm3N&T$b2rr)iq$2jenV)reKp&+derqufrrY57jKImH3!!*6UN8XL/r;HWor;ZcnrsJc( -rqP8c$3:84!UBac!=8i2&l[H^rVlirJc>uTrr);G,m45H!<<2j!"&c-! -g&M*O#jm3N&T$b2rr)iq$2jenV)reKp&+derqufrrY57jKImH3!!*6UN8XL/r;HWor;ZcnrsJc( -rqP8c$3:84!UBac!=8i2&l[H^rVlirJc>uTrr);G,m45H!<<2j!"&c-! -g&D'G)%0HS5#Rq7F!q>U -g&D'G)%0HS5#Rq7F!q>U -g&D'G)%0HS5#Rq7F!q>U -g&DEXk&1D8G5;.:rVZZo%/est#m1D[B\*4^rr)]ns8;or&c(%#*!?9C!X0$!Ms1':rVulnrs8Sg -L(j[l!;%7EbW-rr2iq#laP"(Bc%br;HWoe,Op~> -g&D6M\Ldt?d/O"pr;QZnrpc?l!Xq&liV!0KrVcZorqGIAqZ$NnrVucYQ7N=C!!33AM=UWDqYpm$ -s8DMi*e!"&c<;:,7>rqucorIP"Is8W'%r9AhM!Wh]h$NgD0!;%7EbW-rr2iq#laP"(Bc%br;HWoe,Op~> -g&D6M\Ldt?d/O"pr;QZnrpc?l!Xq&liV!0KrVcZorqGIAqZ$NnrVucYQ7N=C!!33AM=UWDqYpm$ -s8DMi*e!"&c<;:,7>rqucorIP"Is8W'%r9AhM!Wh]h$NgD0!;%7EbW-rr2iq#laP"(Bc%br;HWoe,Op~> -hu=)_rr)iqrSq2e)2n4ds8W'(q8OZ\$rbRQrql^2rV!f`I)GFMrVZTnrqXQ1%KZY@AF'6ls8N!% -qu65l/cc%>!<3'+!W`?'%9D'Zr;M9Ip&>6ql\?,S!PY=%2&jG"<_d#l2:JYqqkia!X:*]pAYBqqr)&j#u9jdrR1^r~> -hu=)_rr)iqrSq2e)2n4ds8W'(q8OZ\$rbRQrql^2rV!f`I)GFMrVZTnrqXQ1%KZY@AF'6ls8N!% -qu65l/cc%>!<3'+!W`?'%9D'Zr;M9Ip&>6ql\?,S!PY=%2&jG"<_d#l2:JYqqkia!X:*]pAYBqqr)&j#u9jdrR1^r~> -hu=)_rr)iqrSq2e)2n4ds8W'(q8OZ\$rbRQrql^2rV!f`I)GFMrVZTnrqXQ1%KZY@AF'6ls8N!% -qu65l/cc%>!<3'+!W`?'%9D'Zr;M9Ip&>6ql\?,S!PY=%2&jG"<_d#l2:JYqqkia!X:*]pAYBqqr)&j#u9jdrR1^r~> -hu=&]s8;cmppq+E7b@P;$NBqcD?L/(_"n!/r;RT4qqbum#rRgoo(i7^rquW;>R^osbPV;:s8W'( -r;HQfc9h[7!pTam!WW6&#sQB,s8DqJs7Hrr2f[N"5so)M.\WrsJ]'oWfbE*4#J?r6kUq~> -hu=&]s8;cmppq+E7b@P;$NBqcD?L/(_"n!/r;RT4qqbum#rRgoo(i7^rquW;>R^osbPV;:s8W'( -r;HQfc9h[7!pTam!WW6&#sQB,s8DqJs7Hrr2f[N"5so)M.\WrsJ]'oWfbE*4#J?r6kUq~> -hu=&]s8;cmppq+E7b@P;$NBqcD?L/(_"n!/r;RT4qqbum#rRgoo(i7^rquW;>R^osbPV;:s8W'( -r;HQfc9h[7!pTam!WW6&#sQB,s8DqJs7Hrr2f[N"5so)M.\WrsJ]'oWfbE*4#J?r6kUq~> -hu=&^rr2lpia2j)PPb7W$NB_"+U&jQqu-Nnqu7E)Y8RHC!tI>[eaWM7qYpB?81'l%rqud'rql]m -rV>#O"onbj!<*!)!s^cmqu?Znrdk+Ars/Q$gLgoq! -hu=&^rr2lpia2j)PPb7W$NB_"+U&jQqu-Nnqu7E)Y8RHC!tI>[eaWM7qYpB?81'l%rqud'rql]m -rV>#O"onbj!<*!)!s^cmqu?Znrdk+Ars/Q$gLgoq! -hu=&^rr2lpia2j)PPb7W$NB_"+U&jQqu-Nnqu7E)Y8RHC!tI>[eaWM7qYpB?81'l%rqud'rql]m -rV>#O"onbj!<*!)!s^cmqu?Znrdk+Ars/Q$gLgoq! -h>[cYrq*B9#!CoEqu7!%k%4`(Ydm/Ht_r;R$#r;HNP -I1HAX!pTdc!XK#XV"jrgrVukJs7HrW- -_=%=$'`S(/k^j?I%Vk;-prkYu!sV$ -h>[cYrq*B9#!CoEqu7!%k%4`(Ydm/Ht_r;R$#r;HNP -I1HAX!pTdc!XK#XV"jrgrVukJs7HrW- -_=%=$'`S(/k^j?I%Vk;-prkYu!sV$ -h>[cYrq*B9#!CoEqu7!%k%4`(Ydm/Ht_r;R$#r;HNP -I1HAX!pTdc!XK#XV"jrgrVukJs7HrW- -_=%=$'`S(/k^j?I%Vk;-prkYu!sV$ -hu=&^rr)fQ@0RX3q>L3j$N%sf"!FK=rr)ipr;RT.]0S>''F4[?!Ws?BZ/kZWp+rqcX$r;Z]l -gNC%)rr)iq'E.q-eOp#J,G"AX?NU<3.'*7Drq?BkrWiAbD$LJPjo3^.J,~> -hu=&^rr)fQ@0RX3q>L3j$N%sf"!FK=rr)ipr;RT.]0S>''F4[?!Ws?BZ/kZWp+rqcX$r;Z]l -gNC%)rr)iq'E.q-eOp#J,G"AX?NU<3.'*7Drq?BkrWiAbD$LJPjo3^.J,~> -hu=&^rr)fQ@0RX3q>L3j$N%sf"!FK=rr)ipr;RT.]0S>''F4[?!Ws?BZ/kZWp+rqcX$r;Z]l -gNC%)rr)iq'E.q-eOp#J,G"AX?NU<3.'*7Drq?BkrWiAbD$LJPjo3^.J,~> -huE`T#5n5!(^N^brr2iq#P4Ab#=R>HrVlfortb@PeFLY,3t;>n!rVlfnhT>cs -rr;uts8Drl[2T2O26V<:!!4$lnbrI[s8W'-rVlQ(/HQijrVlirs8LXMJ,~> -huE`T#5n5!(^N^brr2iq#P4Ab#=R>HrVlfortb@PeFLY,3t;>n!rVlfnhT>cs -rr;uts8Drl[2T2O26V<:!!4$lnbrI[s8W'-rVlQ(/HQijrVlirs8LXMJ,~> -huE`T#5n5!(^N^brr2iq#P4Ab#=R>HrVlfortb@PeFLY,3t;>n!rVlfnhT>cs -rr;uts8Drl[2T2O26V<:!!4$lnbrI[s8W'-rVlQ(/HQijrVlirs8LXMJ,~> -hu=#^rVktm!Z-pmr;-Esk?@oqAGc*#&H;_.qXMR=+q+PS!!3Koh>[*I"8gPN"R#gc!r`3($Vo:M -rr.KKlMh%VNXl-k!pTdc!=/fTVtU,gr;Q]mrri5irr)inrt#(mEX`*X/K4]k%9MTirqu -hu=#^rVktm!Z-pmr;-Esk?@oqAGc*#&H;_.qXMR=+q+PS!!3Koh>[*I"8gPN"R#gc!r`3($Vo:M -rr.KKlMh%VNXl-k!pTdc!=/fTVtU,gr;Q]mrri5irr)inrt#(mEX`*X/K4]k%9MTirqu -hu=#^rVktm!Z-pmr;-Esk?@oqAGc*#&H;_.qXMR=+q+PS!!3Koh>[*I"8gPN"R#gc!r`3($Vo:M -rr.KKlMh%VNXl-k!pTdc!=/fTVtU,gr;Q]mrri5irr)inrt#(mEX`*X/K4]k%9MTirqu -hu=)_qtIcD#!_8Ls8Drqrs&JW0*;fCrq?@'rr)lqrquK,@Nl0^!=;`er:^-orTA50!!2Bc$3:2. -!u8JcG!7"o[M#&-;mu!"/f/!<< -hu=)_qtIcD#!_8Ls8Drqrs&JW0*;fCrq?@'rr)lqrquK,@Nl0^!=;`er:^-orTA50!!2Bc$3:2. -!u8JcG!7"o[M#&-;mu!"/f/!<< -hu=)_qtIcD#!_8Ls8Drqrs&JW0*;fCrq?@'rr)lqrquK,@Nl0^!=;`er:^-orTA50!!2Bc$3:2. -!u8JcG!7"o[M#&-;mu!"/f/!<< -hu=&^r8qu)'8?Gbs8Mrr"oHFi!>M1"s8N!,r;Q]orqu&S3!'-pK(em;"S/]2!X%Ze$3:,."XTK0 -r;QZoJcG$8"oe;@8co.[!;up"#u':Vr;ciorri;urr)fmrsSi)p9#25!0uenG`aYAHWNU -kl(P\rn.7$~> -hu=&^r8qu)'8?Gbs8Mrr"oHFi!>M1"s8N!,r;Q]orqu&S3!'-pK(em;"S/]2!X%Ze$3:,."XTK0 -r;QZoJcG$8"oe;@8co.[!;up"#u':Vr;ciorri;urr)fmrsSi)p9#25!0uenG`aYAHWNU -kl(P\rn.7$~> -hu=&^r8qu)'8?Gbs8Mrr"oHFi!>M1"s8N!,r;Q]orqu&S3!'-pK(em;"S/]2!X%Ze$3:,."XTK0 -r;QZoJcG$8"oe;@8co.[!;up"#u':Vr;ciorri;urr)fmrsSi)p9#25!0uenG`aYAHWNU -kl(P\rn.7$~> -hu=)`pqJHe3mn!,rVc`ors&;9,Q\aWrq?@'rr;utrqufqrT%>e"=q%^rqHErq8>At!X.cgrrEB, -!>B_CrVcWmJcG$8#6+Q!pqImPlN$ka"p=r=FQrc'qu?Zp!rr5uqu76+rr(_H! -hu=)`pqJHe3mn!,rVc`ors&;9,Q\aWrq?@'rr;utrqufqrT%>e"=q%^rqHErq8>At!X.cgrrEB, -!>B_CrVcWmJcG$8#6+Q!pqImPlN$ka"p=r=FQrc'qu?Zp!rr5uqu76+rr(_H! -hu=)`pqJHe3mn!,rVc`ors&;9,Q\aWrq?@'rr;utrqufqrT%>e"=q%^rqHErq8>At!X.cgrrEB, -!>B_CrVcWmJcG$8#6+Q!pqImPlN$ka"p=r=FQrc'qu?Zp!rr5uqu76+rr(_H! -hZ!oMH3Y18pAY'hrVZ[!q7e-V&;KlX&,lM,s8DurrqXSg!=23XrV- -hZ!oMH3Y18pAY'hrVZ[!q7e-V&;KlX&,lM,s8DurrqXSg!=23XrV- -hZ!oMH3Y18pAY'hrVZ[!q7e-V&;KlX&,lM,s8DurrqXSg!=23XrV- -huUHorr<#s#kF>r!>'\Urr2fp$2sl%ntQj"!!!&b -!!NB'"=pYSrr2utJcFm4#lXYT>mCB2!!2He!!3'!#mE$!r;Q`rrVuflruM(5!XLs* -rVccrrr<#trVulrs8Dutrr2lrs8E9$orAu4.+eFJs*t~> -huUHorr<#s#kF>r!>'\Urr2fp$2sl%ntQj"!!!&b -!!NB'"=pYSrr2utJcFm4#lXYT>mCB2!!2He!!3'!#mE$!r;Q`rrVuflruM(5!XLs* -rVccrrr<#trVulrs8Dutrr2lrs8E9$orAu4.+eFJs*t~> -huUHorr<#s#kF>r!>'\Urr2fp$2sl%ntQj"!!!&b -!!NB'"=pYSrr2utJcFm4#lXYT>mCB2!!2He!!3'!#mE$!r;Q`rrVuflruM(5!XLs* -rVccrrr<#trVulrs8Dutrr2lrs8E9$orAu4.+eFJs*t~> -huL -huL -huL -i;X#Zek#rf^]+!-$i]*K!Ws@(pAY!grq??trr;c.+p/Epo`"jfrrrAur8;AsjT#Dc$;04RJcFd1 -s8N&u#Q=.P&-2k6!p]jd!=/fFII."4rr)ins8W'.rVl`nm[+Ib!u?1Rrr)ilrrE#rrr<#urqud% -rr)ieSI,Tiec,R#s*t~> -i;X#Zek#rf^]+!-$i]*K!Ws@(pAY!grq??trr;c.+p/Epo`"jfrrrAur8;AsjT#Dc$;04RJcFd1 -s8N&u#Q=.P&-2k6!p]jd!=/fFII."4rr)ins8W'.rVl`nm[+Ib!u?1Rrr)ilrrE#rrr<#urqud% -rr)ieSI,Tiec,R#s*t~> -i;X#Zek#rf^]+!-$i]*K!Ws@(pAY!grq??trr;c.+p/Epo`"jfrrrAur8;AsjT#Dc$;04RJcFd1 -s8N&u#Q=.P&-2k6!p]jd!=/fFII."4rr)ins8W'.rVl`nm[+Ib!u?1Rrr)ilrrE#rrr<#urqud% -rr)ieSI,Tiec,R#s*t~> -i;X#RTbn5Jmf)q[$L;[5!?qiFW)q2T>Unrql^"r;ZAT&ci$q!!NKV^&A!1JcFg2 -s8N&s#QO_Y@g;u8!UB^k!WrH++K##6rqHF&rqlZaY:'AP%UA2rrVc`ms8Dorrr;oqrVZ['rr)in -ejBQWQMLLYf`-I~> -i;X#RTbn5Jmf)q[$L;[5!?qiFW)q2T>Unrql^"r;ZAT&ci$q!!NKV^&A!1JcFg2 -s8N&s#QO_Y@g;u8!UB^k!WrH++K##6rqHF&rqlZaY:'AP%UA2rrVc`ms8Dorrr;oqrVZ['rr)in -ejBQWQMLLYf`-I~> -i;X#RTbn5Jmf)q[$L;[5!?qiFW)q2T>Unrql^"r;ZAT&ci$q!!NKV^&A!1JcFg2 -s8N&s#QO_Y@g;u8!UB^k!WrH++K##6rqHF&rqlZaY:'AP%UA2rrVc`ms8Dorrr;oqrVZ['rr)in -ejBQWQMLLYf`-I~> -iVs/^jBr-7U\k&arsJG)%0?M)!W<#u!UKdi!>]qK -rqq?Ij8TMdrVuors7j8[!!<>h!!iZ-!W`QpgAV'NrqufrrXJeplF&bX!XM$/r;QZoqYps&s8Dc` -m- -iVs/^jBr-7U\k&arsJG)%0?M)!W<#u!UKdi!>]qK -rqq?Ij8TMdrVuors7j8[!!<>h!!iZ-!W`QpgAV'NrqufrrXJeplF&bX!XM$/r;QZoqYps&s8Dc` -m- -iVs/^jBr-7U\k&arsJG)%0?M)!W<#u!UKdi!>]qK -rqq?Ij8TMdrVuors7j8[!!<>h!!iZ-!W`QpgAV'NrqufrrXJeplF&bX!XM$/r;QZoqYps&s8Dc` -m- -iVs,X^_mGOgA^dF$N/XM"TSQ9B@$DQqu6Zqrr3K+kaEe## -iVs,X^_mGOgA^dF$N/XM"TSQ9B@$DQqu6Zqrr3K+kaEe## -iVs,X^_mGOgA^dF$N/XM"TSQ9B@$DQqu6Zqrr3K+kaEe## -jSoScrr2;6!"t.crVlQk%0$4tW$)3D":IrrsSi'hFRnQ -!!!$"!d]!k7jm!;u]n%0#Xj495Hb! -jSoScrr2;6!"t.crVlQk%0$4tW$)3D":IrrsSi'hFRnQ -!!!$"!d]!k7jm!;u]n%0#Xj495Hb! -jSoScrr2;6!"t.crVlQk%0$4tW$)3D":IrrsSi'hFRnQ -!!!$"!d]!k7jm!;u]n%0#Xj495Hb! -jo5_fs8VuF2?G8Vs8W)mruD%9r8i)4!W`<-/T\tkmdg)Co'G2B -jo5_fs8VuF2?G8Vs8W)mruD%9r8i)4!W`<-/T\tkmdg)Co'G2B -jo5_fs8VuF2?G8Vs8W)mruD%9r8i)4!W`<-/T\tkmdg)Co'G2B -jo>A[#Q=4[&dr4Hr:L$hr>GOp?P!>@!WW<;:kbLCWg\?(%fl\7'lW[Ar;R0(s8Muqnp\spirr;uprqPgTs7cfor;HWnr;Zcqs82rts8L.?s8E<& -k%t5%!<<*#l2Uti%sIIBrqud-rVZZj_(,TuC[M-"rql]nrVZZsr7FC9!X\r1#6b/2#tW>=rql^! -j$NkbN;;-+J,~> -jo>A[#Q=4[&dr4Hr:L$hr>GOp?P!>@!WW<;:kbLCWg\?(%fl\7'lW[Ar;R0(s8Muqnp\spirr;uprqPgTs7cfor;HWnr;Zcqs82rts8L.?s8E<& -k%t5%!<<*#l2Uti%sIIBrqud-rVZZj_(,TuC[M-"rql]nrVZZsr7FC9!X\r1#6b/2#tW>=rql^! -j$NkbN;;-+J,~> -jo>A[#Q=4[&dr4Hr:L$hr>GOp?P!>@!WW<;:kbLCWg\?(%fl\7'lW[Ar;R0(s8Muqnp\spirr;uprqPgTs7cfor;HWnr;Zcqs82rts8L.?s8E<& -k%t5%!<<*#l2Uti%sIIBrqud-rVZZj_(,TuC[M-"rql]nrVZZsr7FC9!X\r1#6b/2#tW>=rql^! -j$NkbN;;-+J,~> -jSoPcrSUra+0#59VFrr)iprr2iq"o\H"qVSm6[gKRS[^aKZrqbH]\E^O7\@8ugfA,?Hm.9rIr;?QorlP0G -rVZZj`Z5'\!pBUf! -jSoPcrSUra+0#59VFrr)iprr2iq"o\H"qVSm6[gKRS[^aKZrqbH]\E^O7\@8ugfA,?Hm.9rIr;?QorlP0G -rVZZj`Z5'\!pBUf! -jSoPcrSUra+0#59VFrr)iprr2iq"o\H"qVSm6[gKRS[^aKZrqbH]\E^O7\@8ugfA,?Hm.9rIr;?QorlP0G -rVZZj`Z5'\!pBUf! -jo5\es7j2M#uBCWrquKi%0$5)qu-HVMD#JB! -jo5\es7j2M#uBCWrquKi%0$5)qu-HVMD#JB! -jo5\es7j2M#uBCWrquKi%0$5)qu-HVMD#JB! -jo>AZ$1EZQ'8?2\rr2ljrr2p6r;Z`on@2sO&-i:=!Ud!s7a/N! -jo>AZ$1EZQ'8?2\rr2ljrr2p6r;Z`on@2sO&-i:=!Ud!s7a/N! -jo>AZ$1EZQ'8?2\rr2ljrr2p6r;Z`on@2sO&-i:=!Ud!s7a/N! -jSo_gh`M#la8Gu9s8W)urVc]os8;rsqu76,qs;1K5qaE'*ZljoA#S\ipAb0k!p!eojT#Gc#Y!>C -rV$9jrXSOa%fl_7!WrE(!!**%!T3qe!<<-*:&k7_M@9Ld!!3'!rrE-%"9&<&!!*/h!"T,;))cZF -fC/P7s8Dinrr1:E#6+%M&-2h7l2V.l!s/`fbl%G=r;QWo#laJHqrjk@3oU);!<)os')/gT! -jSo_gh`M#la8Gu9s8W)urVc]os8;rsqu76,qs;1K5qaE'*ZljoA#S\ipAb0k!p!eojT#Gc#Y!>C -rV$9jrXSOa%fl_7!WrE(!!**%!T3qe!<<-*:&k7_M@9Ld!!3'!rrE-%"9&<&!!*/h!"T,;))cZF -fC/P7s8Dinrr1:E#6+%M&-2h7l2V.l!s/`fbl%G=r;QWo#laJHqrjk@3oU);!<)os')/gT! -jSo_gh`M#la8Gu9s8W)urVc]os8;rsqu76,qs;1K5qaE'*ZljoA#S\ipAb0k!p!eojT#Gc#Y!>C -rV$9jrXSOa%fl_7!WrE(!!**%!T3qe!<<-*:&k7_M@9Ld!!3'!rrE-%"9&<&!!*/h!"T,;))cZF -fC/P7s8Dinrr1:E#6+%M&-2h7l2V.l!s/`fbl%G=r;QWo#laJHqrjk@3oU);!<)os')/gT! -jo6+ppTb;: -jo6+ppTb;: -jo6+ppTb;: -jo5M`kACJ?Qi?smrVufmqqd7Gi:$F>rVQWprW<#srVHKnr;QWprq69nrSCugj8]>h9]5pJrV$9k -r!iW&kJNs`G?cpJ((16Gh>eDo!!*=!rquDm<]Mf],97I/$j["U9jcMn(=OU;-i!UBac!=/`-"Y7%[rr)inrsSi"YTX#Q=8r3rrr;us'(_Uo!s'=5rr2rtrr(ne -"Ue0*r;Zfr#k!6I%VP2,s8CdRJ,~> -jo5M`kACJ?Qi?smrVufmqqd7Gi:$F>rVQWprW<#srVHKnr;QWprq69nrSCugj8]>h9]5pJrV$9k -r!iW&kJNs`G?cpJ((16Gh>eDo!!*=!rquDm<]Mf],97I/$j["U9jcMn(=OU;-i!UBac!=/`-"Y7%[rr)inrsSi"YTX#Q=8r3rrr;us'(_Uo!s'=5rr2rtrr(ne -"Ue0*r;Zfr#k!6I%VP2,s8CdRJ,~> -jo5M`kACJ?Qi?smrVufmqqd7Gi:$F>rVQWprW<#srVHKnr;QWprq69nrSCugj8]>h9]5pJrV$9k -r!iW&kJNs`G?cpJ((16Gh>eDo!!*=!rquDm<]Mf],97I/$j["U9jcMn(=OU;-i!UBac!=/`-"Y7%[rr)inrsSi"YTX#Q=8r3rrr;us'(_Uo!s'=5rr2rtrr(ne -"Ue0*r;Zfr#k!6I%VP2,s8CdRJ,~> -jo6+nb;f_bfDbaKrVulrn<""e7?,=ds8Dlq$2jf%r;Q`orr;usrrW2sr:L!loV!-'!p'Cc)5dE4 -r;?9g&H;P+rVlipr;QZe_i._N&d7(l)Z]p>#>P6trVlcopY3KcMf`;s2' -jo6+nb;f_bfDbaKrVulrn<""e7?,=ds8Dlq$2jf%r;Q`orr;usrrW2sr:L!loV!-'!p'Cc)5dE4 -r;?9g&H;P+rVlipr;QZe_i._N&d7(l)Z]p>#>P6trVlcopY3KcMf`;s2' -jo6+nb;f_bfDbaKrVulrn<""e7?,=ds8Dlq$2jf%r;Q`orr;usrrW2sr:L!loV!-'!p'Cc)5dE4 -r;?9g&H;P+rVlipr;QZe_i._N&d7(l)Z]p>#>P6trVlcopY3KcMf`;s2' -jo5MVT+_]Kn,E:qrVlcpjBr)k$TtWkrVl]o!<2uts8N&u#6+Z&rVc`pp&>*mi_]UTjo>Ph5iM\> -r:L!hrVc`srVlfp#QO_d]m;:B"Q9=g!<<-*:&k1irVccrrr*B,rU8I^Z]JTX*>Jnb!q-*i! -jo5MVT+_]Kn,E:qrVlcpjBr)k$TtWkrVl]o!<2uts8N&u#6+Z&rVc`pp&>*mi_]UTjo>Ph5iM\> -r:L!hrVc`srVlfp#QO_d]m;:B"Q9=g!<<-*:&k1irVccrrr*B,rU8I^Z]JTX*>Jnb!q-*i! -jo5MVT+_]Kn,E:qrVlcpjBr)k$TtWkrVl]o!<2uts8N&u#6+Z&rVc`pp&>*mi_]UTjo>Ph5iM\> -r:L!hrVc`srVlfp#QO_d]m;:B"Q9=g!<<-*:&k1irVccrrr*B,rU8I^Z]JTX*>Jnb!q-*i! -li6k]"mKM"+/Sr5rs8G80EDDC`;BN1rroeU]OfqZ-]t!U9Xf!<<-*:Ab(grr)j&r:f['P?]s^$2sr0!!<9'!s&Gl -!!rZ-&Q?((qu6Nldf0FHdm4#r!!NB0;rR]Qqu6lurSC-I$!R?-s8<9's8V@k! -li6k]"mKM"+/Sr5rs8G80EDDC`;BN1rroeU]OfqZ-]t!U9Xf!<<-*:Ab(grr)j&r:f['P?]s^$2sr0!!<9'!s&Gl -!!rZ-&Q?((qu6Nldf0FHdm4#r!!NB0;rR]Qqu6lurSC-I$!R?-s8<9's8V@k! -li6k]"mKM"+/Sr5rs8G80EDDC`;BN1rroeU]OfqZ-]t!U9Xf!<<-*:Ab(grr)j&r:f['P?]s^$2sr0!!<9'!s&Gl -!!rZ-&Q?((qu6Nldf0FHdm4#r!!NB0;rR]Qqu6lurSC-I$!R?-s8<9's8V@k! -l2Lb]rr!#O,7$B[rVZ[#rplNi!Z\!6rVdT0r;Q]or;QZmr;HWnn]9\crVccrrVcTms8E9"g/J(R -!!*,d!"&c.!XVXafs8EN,n]6kf*=DrM!s8N* -!!2Qh$3:21"tG_mq>:0jeGf[NrU5OGjT#Gb![4E:rqud2rqu`^FTht7o`"adrr)ipj$3VH!\aHN -#6*k4*]eo4r;R-&s8Dc-,6K=Nrr1aRJ,~> -l2Lb]rr!#O,7$B[rVZ[#rplNi!Z\!6rVdT0r;Q]or;QZmr;HWnn]9\crVccrrVcTms8E9"g/J(R -!!*,d!"&c.!XVXafs8EN,n]6kf*=DrM!s8N* -!!2Qh$3:21"tG_mq>:0jeGf[NrU5OGjT#Gb![4E:rqud2rqu`^FTht7o`"adrr)ipj$3VH!\aHN -#6*k4*]eo4r;R-&s8Dc-,6K=Nrr1aRJ,~> -l2Lb]rr!#O,7$B[rVZ[#rplNi!Z\!6rVdT0r;Q]or;QZmr;HWnn]9\crVccrrVcTms8E9"g/J(R -!!*,d!"&c.!XVXafs8EN,n]6kf*=DrM!s8N* -!!2Qh$3:21"tG_mq>:0jeGf[NrU5OGjT#Gb![4E:rqud2rqu`^FTht7o`"adrr)ipj$3VH!\aHN -#6*k4*]eo4r;R-&s8Dc-,6K=Nrr1aRJ,~> -li6q_#QOLu"V#,>rqud?rT7bp$;0=VqYpHjmcO'6qu6TmrVulsrTJ`=bO>B-r;Q]ns8W'(s8DPg -*Wc -li6q_#QOLu"V#,>rqud?rT7bp$;0=VqYpHjmcO'6qu6TmrVulsrTJ`=bO>B-r;Q]ns8W'(s8DPg -*Wc -li6q_#QOLu"V#,>rqud?rT7bp$;0=VqYpHjmcO'6qu6TmrVulsrTJ`=bO>B-r;Q]ns8W'(s8DPg -*Wc -lMph^#3B:s(odN5r;R!!eLCS6K(f3B)#j9GFHRcaVLr;QTns8E9$iEZQe -!W`Ag!"/f/!Wt(3s8W)rs8M?arr*E+s8W)trUdTd#Qb#.!Xdgrr*B,rr)irr9^[l -*!HEF"7Qjb! -lMph^#3B:s(odN5r;R!!eLCS6K(f3B)#j9GFHRcaVLr;QTns8E9$iEZQe -!W`Ag!"/f/!Wt(3s8W)rs8M?arr*E+s8W)trUdTd#Qb#.!Xdgrr*B,rr)irr9^[l -*!HEF"7Qjb! -lMph^#3B:s(odN5r;R!!eLCS6K(f3B)#j9GFHRcaVLr;QTns8E9$iEZQe -!W`Ag!"/f/!Wt(3s8W)rs8M?arr*E+s8W)trUdTd#Qb#.!Xdgrr*B,rr)irr9^[l -*!HEF"7Qjb! -lMh4hs8W#B1BoMmrVl`p#5GM2"":JQrr!T2qS=Hd,>k$&qu6NkrVlDV&Hs;2rVlfmrsAZ"]G1GK -!!!$#lN$qc#S1bKrVlisrr23_%fQG-rr)inrr)T(4:2,jkl:he!!*="nGiFc$iKu'rVcZQQo>HX -!q63i!<<,t! -lMh4hs8W#B1BoMmrVl`p#5GM2"":JQrr!T2qS=Hd,>k$&qu6NkrVlDV&Hs;2rVlfmrsAZ"]G1GK -!!!$#lN$qc#S1bKrVlisrr23_%fQG-rr)inrr)T(4:2,jkl:he!!*="nGiFc$iKu'rVcZQQo>HX -!q63i!<<,t! -lMh4hs8W#B1BoMmrVl`p#5GM2"":JQrr!T2qS=Hd,>k$&qu6NkrVlDV&Hs;2rVlfmrsAZ"]G1GK -!!!$#lN$qc#S1bKrVlisrr23_%fQG-rr)inrr)T(4:2,jkl:he!!*="nGiFc$iKu'rVcZQQo>HX -!q63i!<<,t! -lMhUus8MYa(_1BTrVlirs8N&bEWHA.f)>RQrV3iD!=`Mjrr)lr$30qnPRRU)LA_&Hrs8W&l"U5" -!!!,c!!iW//A_;bs8N#]rseu-rVlisrr2lrq8#,orW2Xafs8E*"rr;us$ig5+rS;!- -!WW6$!qQEk!=T#1!WiB,0"q#Zrr;uNs8W)ur<24l!rrAc!$D=D"!=-2rr2rss8MusqSF`a$sh`a -rr)K!/H>hR)Q3T3s8W)lrs8W(ro$cW*1Zr_s*t~> -lMhUus8MYa(_1BTrVlirs8N&bEWHA.f)>RQrV3iD!=`Mjrr)lr$30qnPRRU)LA_&Hrs8W&l"U5" -!!!,c!!iW//A_;bs8N#]rseu-rVlisrr2lrq8#,orW2Xafs8E*"rr;us$ig5+rS;!- -!WW6$!qQEk!=T#1!WiB,0"q#Zrr;uNs8W)ur<24l!rrAc!$D=D"!=-2rr2rss8MusqSF`a$sh`a -rr)K!/H>hR)Q3T3s8W)lrs8W(ro$cW*1Zr_s*t~> -lMhUus8MYa(_1BTrVlirs8N&bEWHA.f)>RQrV3iD!=`Mjrr)lr$30qnPRRU)LA_&Hrs8W&l"U5" -!!!,c!!iW//A_;bs8N#]rseu-rVlisrr2lrq8#,orW2Xafs8E*"rr;us$ig5+rS;!- -!WW6$!qQEk!=T#1!WiB,0"q#Zrr;uNs8W)ur<24l!rrAc!$D=D"!=-2rr2rss8MusqSF`a$sh`a -rr)K!/H>hR)Q3T3s8W)lrs8W(ro$cW*1Zr_s*t~> -li/.-rVZWWEQA4NQm^qY^ -li/.-rVZWWEQA4NQm^qY^ -li/.-rVZWWEQA4NQm^qY^ -li.=krVl]D3X%Rirr)fp'E.R)* -li.=krVl]D3X%Rirr)fp'E.R)* -li.=krVl]D3X%Rirr)fp'E.R)* -lMh7irV*r9$s`/urVlfqrt=^L#lt)0!X'<-J?,Rf"!+*4rql^$qopGh(6J@krVHNsrqar,!TX4` -"[1rHrn7;SrqO)V!U9Xf!<<-*:?DK`rqucorV"!$#m(,/mf<@g#QOo,%r^Y0rVk@I"n7BR!!35e -!!WN*!WWU1oD\_)s8N&trr)W,577Sq! -lMh7irV*r9$s`/urVlfqrt=^L#lt)0!X'<-J?,Rf"!+*4rql^$qopGh(6J@krVHNsrqar,!TX4` -"[1rHrn7;SrqO)V!U9Xf!<<-*:?DK`rqucorV"!$#m(,/mf<@g#QOo,%r^Y0rVk@I"n7BR!!35e -!!WN*!WWU1oD\_)s8N&trr)W,577Sq! -lMh7irV*r9$s`/urVlfqrt=^L#lt)0!X'<-J?,Rf"!+*4rql^$qopGh(6J@krVHNsrqar,!TX4` -"[1rHrn7;SrqO)V!U9Xf!<<-*:?DK`rqucorV"!$#m(,/mf<@g#QOo,%r^Y0rVk@I"n7BR!!35e -!!WN*!WWU1oD\_)s8N&trr)W,577Sq! -li.7irVZ/?!>LIirVcs"rqtJGrWEZ4!!*-'#oP&l#!^<,rVZ['rq[morr;usr;Qs"nsp3j -!Ta:`&UaNSf`)*Rqrhr&l2Uqf!!*="jo5_fqY^?krV4Q+#m17u!"&c-!W`<%"!X-)rRCiNqS4K\ -!WhTerW3$#* -li.7irVZ/?!>LIirVcs"rqtJGrWEZ4!!*-'#oP&l#!^<,rVZ['rq[morr;usr;Qs"nsp3j -!Ta:`&UaNSf`)*Rqrhr&l2Uqf!!*="jo5_fqY^?krV4Q+#m17u!"&c-!W`<%"!X-)rRCiNqS4K\ -!WhTerW3$#* -li.7irVZ/?!>LIirVcs"rqtJGrWEZ4!!*-'#oP&l#!^<,rVZ['rq[morr;usr;Qs"nsp3j -!Ta:`&UaNSf`)*Rqrhr&l2Uqf!!*="jo5_fqY^?krV4Q+#m17u!"&c-!W`<%"!X-)rRCiNqS4K\ -!WhTerW3$#* -li.:ir;P_F"!Z(jqu$Etq8YBH,npXa!WWB%!g]%HVqu6>q'']H"!<<-*:?DK_rquZmrVcci\i^#^!"/i/!!*-%! -li.:ir;P_F"!Z(jqu$Etq8YBH,npXa!WWB%!g]%HVqu6>q'']H"!<<-*:?DK_rquZmrVcci\i^#^!"/i/!!*-%! -li.:ir;P_F"!Z(jqu$Etq8YBH,npXa!WWB%!g]%HVqu6>q'']H"!<<-*:?DK_rquZmrVcci\i^#^!"/i/!!*-%! -lMh(fqo^/d3;EFN%fH>'i2t/X@[rr*-%rr2rjXW.6@rrM]k!!3'!"T\Z+%;bV7 -rr;uurn@AUrplHi! -lMh(fqo^/d3;EFN%fH>'i2t/X@[rr*-%rr2rjXW.6@rrM]k!!3'!"T\Z+%;bV7 -rr;uurn@AUrplHi! -lMh(fqo^/d3;EFN%fH>'i2t/X@[rr*-%rr2rjXW.6@rrM]k!!3'!"T\Z+%;bV7 -rr;uurn@AUrplHi! -lMhq)o9g.!E;ok:s8N#qs8Drprr2imjJ6BJ(CUBH!!E3%$4/G/YLVTn&HjWCpAY<\Es2OE!UB^j -!<<*#!?@I'f)PaK!pNnilMq%g!!*="hZ!r\rpP^X!X&N,! -lMhq)o9g.!E;ok:s8N#qs8Drprr2imjJ6BJ(CUBH!!E3%$4/G/YLVTn&HjWCpAY<\Es2OE!UB^j -!<<*#!?@I'f)PaK!pNnilMq%g!!*="hZ!r\rpP^X!X&N,! -lMhq)o9g.!E;ok:s8N#qs8Drprr2imjJ6BJ(CUBH!!E3%$4/G/YLVTn&HjWCpAY<\Es2OE!UB^j -!<<*#!?@I'f)PaK!pNnilMq%g!!*="hZ!r\rpP^X!X&N,! -lMiF6l#$_CVuQerrr;utr;QZor;Q]orr)Z!UrVl]E(!ert,2,rVYMo$3C8/!rrKOMs('9rs&JmO9Q27nc&LHs*t~> -lMiF6l#$_CVuQerrr;utr;QZor;Q]orr)Z!UrVl]E(!ert,2,rVYMo$3C8/!rrKOMs('9rs&JmO9Q27nc&LHs*t~> -lMiF6l#$_CVuQerrr;utr;QZor;Q]orr)Z!UrVl]E(!ert,2,rVYMo$3C8/!rrKOMs('9rs&JmO9Q27nc&LHs*t~> -lMhFmdmXBoci*nCrr;uss8W)trr3i6rr)lrr:/L+;_]-s!s&K)!PjrrE0?]`.U("oeDgf?aEnrrr?!r98S=qZ-g$!>p^cqu7$&pU2.J7G@b=rr(mWJ,~> -lMhFmdmXBoci*nCrr;uss8W)trr3i6rr)lrr:/L+;_]-s!s&K)!PjrrE0?]`.U("oeDgf?aEnrrr?!r98S=qZ-g$!>p^cqu7$&pU2.J7G@b=rr(mWJ,~> -lMhFmdmXBoci*nCrr;uss8W)trr3i6rr)lrr:/L+;_]-s!s&K)!PjrrE0?]`.U("oeDgf?aEnrrr?!r98S=qZ-g$!>p^cqu7$&pU2.J7G@b=rr(mWJ,~> -li.@lpUD@R=m#_`s8N&srr;p8s8N#qrVlfps8MrpnACAf,ngLc! -li.@lpUD@R=m#_`s8N&srr;p8s8N#qrVlfps8MrpnACAf,ngLc! -li.@lpUD@R=m#_`s8N&srr;p8s8N#qrVlfps8MrpnACAf,ngLc! -li.Oqo9fapK)#?Es8N#rrr;usr;RT4s8W)rrr2lqrqb`qLIEX)#6=i;FnGY-rs&GO*ruBB!TsFg -""W4+rr)lrrn.5PrqQe*! -li.Oqo9fapK)#?Es8N#rrr;usr;RT4s8W)rrr2lqrqb`qLIEX)#6=i;FnGY-rs&GO*ruBB!TsFg -""W4+rr)lrrn.5PrqQe*! -li.Oqo9fapK)#?Es8N#rrr;usr;RT4s8W)rrr2lqrqb`qLIEX)#6=i;FnGY-rs&GO*ruBB!TsFg -""W4+rr)lrrn.5PrqQe*! -li.1glXU&?XT&.t!<2ur%0$;+s8W)srr2lrrVl]o$N9M6H9MlB,-LqDr;Zfr"8r/jS`BbR! -li.1glXU&?XT&.t!<2ur%0$;+s8W)srr2lrrVl]o$N9M6H9MlB,-LqDr;Zfr"8r/jS`BbR! -li.1glXU&?XT&.t!<2ur%0$;+s8W)srr2lrrVl]o$N9M6H9MlB,-LqDr;Zfr"8r/jS`BbR! -lMh"G1'BD_qu76,rVlcprVlfprr2rss8W)tqu7$&s8;H3D]1n+s8;fp"o\K#rT.&@!!NB'!u[U+ -df0CJpTWo_"9AK'#>WtP"n\]2!W`Dh!!N^:o)A[gg&DBXrVFo&!>oUnG`Ierr<#s -s8Vl-&c`Gbp\t*j+o_)$&cr%;2:VU(rqF)[!tT\Urr;uss8Mf+)$;ejrr)iVs*t~> -lMh"G1'BD_qu76,rVlcprVlfprr2rss8W)tqu7$&s8;H3D]1n+s8;fp"o\K#rT.&@!!NB'!u[U+ -df0CJpTWo_"9AK'#>WtP"n\]2!W`Dh!!N^:o)A[gg&DBXrVFo&!>oUnG`Ierr<#s -s8Vl-&c`Gbp\t*j+o_)$&cr%;2:VU(rqF)[!tT\Urr;uss8Mf+)$;ejrr)iVs*t~> -lMh"G1'BD_qu76,rVlcprVlfprr2rss8W)tqu7$&s8;H3D]1n+s8;fp"o\K#rT.&@!!NB'!u[U+ -df0CJpTWo_"9AK'#>WtP"n\]2!W`Dh!!N^:o)A[gg&DBXrVFo&!>oUnG`Ierr<#s -s8Vl-&c`Gbp\t*j+o_)$&cr%;2:VU(rqF)[!tT\Urr;uss8Mf+)$;ejrr)iVs*t~> -li.1ea9r5Fp&=mhrr*B*r;?Nkrqucps8Mrrrql^%rqu]nrSi'Vrr)`orr)up^*r%B"9AZ^a8XNe -!rhqul2Uqf!!*="g&D3QgHkoBl2Utl43dd'rn@DPrr;p$ltlh*!W`>e!#5M7!!F^us8N&trr;ut -rV=2@!Z\!5qu7B0k\UD&!YgIbrr)lql[0!B2>I+LrVd!!i%kEZa8Z(us*t~> -li.1ea9r5Fp&=mhrr*B*r;?Nkrqucps8Mrrrql^%rqu]nrSi'Vrr)`orr)up^*r%B"9AZ^a8XNe -!rhqul2Uqf!!*="g&D3QgHkoBl2Utl43dd'rn@DPrr;p$ltlh*!W`>e!#5M7!!F^us8N&trr;ut -rV=2@!Z\!5qu7B0k\UD&!YgIbrr)lql[0!B2>I+LrVd!!i%kEZa8Z(us*t~> -li.1ea9r5Fp&=mhrr*B*r;?Nkrqucps8Mrrrql^%rqu]nrSi'Vrr)`orr)up^*r%B"9AZ^a8XNe -!rhqul2Uqf!!*="g&D3QgHkoBl2Utl43dd'rn@DPrr;p$ltlh*!W`>e!#5M7!!F^us8N&trr;ut -rV=2@!Z\!5qu7B0k\UD&!YgIbrr)lql[0!B2>I+LrVd!!i%kEZa8Z(us*t~> -li..\T*GmJrVQU&rqucmo]Y8iip?C:rVlZn$3'u'rpmX1^]"',s8W'#r:,mZjT#Gb!"2onrR1]I -rqEY^!!E<&!=)BQrrrAhGl[sJlMq"h+K>:irrrE#oVDfpr;l0`rrEc5'U\n!rVlirrr;rpckZ^. -\c)O*rt>7]8,rYn0"q/\rr)iiYo!Kdh>[B]rVlfpl -li..\T*GmJrVQU&rqucmo]Y8iip?C:rVlZn$3'u'rpmX1^]"',s8W'#r:,mZjT#Gb!"2onrR1]I -rqEY^!!E<&!=)BQrrrAhGl[sJlMq"h+K>:irrrE#oVDfpr;l0`rrEc5'U\n!rVlirrr;rpckZ^. -\c)O*rt>7]8,rYn0"q/\rr)iiYo!Kdh>[B]rVlfpl -li..\T*GmJrVQU&rqucmo]Y8iip?C:rVlZn$3'u'rpmX1^]"',s8W'#r:,mZjT#Gb!"2onrR1]I -rqEY^!!E<&!=)BQrrrAhGl[sJlMq"h+K>:irrrE#oVDfpr;l0`rrEc5'U\n!rVlirrr;rpckZ^. -\c)O*rt>7]8,rYn0"q/\rr)iiYo!Kdh>[B]rVlfpl -li.+SDZprVq>V!)pY`&[/fQZaVqh(Fs8;imrsJ`&qW4_252H5;rVZ]qr<)rW@0>TkrrE06LA]I! -!rhqul2Uqf!!*="g&D6TpUCG/!UB^f!YL+Zf`1sM"onPS*s2WE!UB^m!<<-%$<6a!rr)lrrr -li.+SDZprVq>V!)pY`&[/fQZaVqh(Fs8;imrsJ`&qW4_252H5;rVZ]qr<)rW@0>TkrrE06LA]I! -!rhqul2Uqf!!*="g&D6TpUCG/!UB^f!YL+Zf`1sM"onPS*s2WE!UB^m!<<-%$<6a!rr)lrrr -li.+SDZprVq>V!)pY`&[/fQZaVqh(Fs8;imrsJ`&qW4_252H5;rVZ]qr<)rW@0>TkrrE06LA]I! -!rhqul2Uqf!!*="g&D6TpUCG/!UB^f!YL+Zf`1sM"onPS*s2WE!UB^m!<<-%$<6a!rr)lrrr -mJm4c#2`&T,LHDgr;RB-q9sF%!<<-$!YSnZp\b$jrr2rtrWiAmd!?iD?g@XiqYpWmbU_]R!Wa@Y -d/O1HpTWo_"9AK'#>WqO"T6ah!WhQd":S`,rr1XO!WN,urW_Rd! -mJm4c#2`&T,LHDgr;RB-q9sF%!<<-$!YSnZp\b$jrr2rtrWiAmd!?iD?g@XiqYpWmbU_]R!Wa@Y -d/O1HpTWo_"9AK'#>WqO"T6ah!WhQd":S`,rr1XO!WN,urW_Rd! -mJm4c#2`&T,LHDgr;RB-q9sF%!<<-$!YSnZp\b$jrr2rtrWiAmd!?iD?g@XiqYpWmbU_]R!Wa@Y -d/O1HpTWo_"9AK'#>WqO"T6ah!WhQd":S`,rr1XO!WN,urW_Rd! -mf*Rls8'\g#".POqu7i;kB%.8!5Rml5P55+WrqufrrWDhm"9ITa -"T\]Zn,<75rrMo!l2Uqf!!*="g&D3Sqqt!Il2Utg#!M2Lrmh#PnV[PO!WhE`!Wa:5rr)`o*p6/t -(6SLnrVlcmrod_j!!4"@rr2lrs8MoJ.0CNlr;I$&rVFbj#!C31rT!p.~> -mf*Rls8'\g#".POqu7i;kB%.8!5Rml5P55+WrqufrrWDhm"9ITa -"T\]Zn,<75rrMo!l2Uqf!!*="g&D3Sqqt!Il2Utg#!M2Lrmh#PnV[PO!WhE`!Wa:5rr)`o*p6/t -(6SLnrVlcmrod_j!!4"@rr2lrs8MoJ.0CNlr;I$&rVFbj#!C31rT!p.~> -mf*Rls8'\g#".POqu7i;kB%.8!5Rml5P55+WrqufrrWDhm"9ITa -"T\]Zn,<75rrMo!l2Uqf!!*="g&D3Sqqt!Il2Utg#!M2Lrmh#PnV[PO!WhE`!Wa:5rr)`o*p6/t -(6SLnrVlcmrod_j!!4"@rr2lrs8MoJ.0CNlr;I$&rVFbj#!C31rT!p.~> -mf*Oks7E0*%VbG/ruh$:%06S?(aLIA"p#*3m/-e]rVlQMY[.qD!=(g5rr)imrri;eD?0e"!!30/ -@K-8RrrMo!l2Uqf!!*="f`)'Ql"pLe!!NE,-/SY"ec,gJZlB)J!Ta:_%<1k:rqud*mWAX@?gI^g -r;HWlcQ<&d&L-$/s8N#trUd0-!>hO/rr2lqrWW8V;Ze5NiW"E~> -mf*Oks7E0*%VbG/ruh$:%06S?(aLIA"p#*3m/-e]rVlQMY[.qD!=(g5rr)imrri;eD?0e"!!30/ -@K-8RrrMo!l2Uqf!!*="f`)'Ql"pLe!!NE,-/SY"ec,gJZlB)J!Ta:_%<1k:rqud*mWAX@?gI^g -r;HWlcQ<&d&L-$/s8N#trUd0-!>hO/rr2lqrWW8V;Ze5NiW"E~> -mf*Oks7E0*%VbG/ruh$:%06S?(aLIA"p#*3m/-e]rVlQMY[.qD!=(g5rr)imrri;eD?0e"!!30/ -@K-8RrrMo!l2Uqf!!*="f`)'Ql"pLe!!NE,-/SY"ec,gJZlB)J!Ta:_%<1k:rqud*mWAX@?gI^g -r;HWlcQ<&d&L-$/s8N#trUd0-!>hO/rr2lqrWW8V;Ze5NiW"E~> -n,E[ms8DGE"r)mgqu7iVDP! -n,E[ms8DGE"r)mgqu7iVDP! -n,E[ms8DGE"r)mgqu7iVDP! -mJdFik@F]:WrDtpruq-C+Ts6lrVl`pqUAOL%:o&%g8.OT!s&K+%k;\irVlcnqu6j!ppM.D!Ta:a -![u(gr6YHEpos#`"9AK'#>WqO"TIt_%0>_o"9BCFs8:FI"od^t!s&Ga!!WHF]`.g-rVca>q7IRG -#tikJrr2W+1B@OY%;u+CrVliqq9!2VQ-&arrVc`p#QOeoP7\7?p>Z+&~> -mJdFik@F]:WrDtpruq-C+Ts6lrVl`pqUAOL%:o&%g8.OT!s&K+%k;\irVlcnqu6j!ppM.D!Ta:a -![u(gr6YHEpos#`"9AK'#>WqO"TIt_%0>_o"9BCFs8:FI"od^t!s&Ga!!WHF]`.g-rVca>q7IRG -#tikJrr2W+1B@OY%;u+CrVliqq9!2VQ-&arrVc`p#QOeoP7\7?p>Z+&~> -mJdFik@F]:WrDtpruq-C+Ts6lrVl`pqUAOL%:o&%g8.OT!s&K+%k;\irVlcnqu6j!ppM.D!Ta:a -![u(gr6YHEpos#`"9AK'#>WqO"TIt_%0>_o"9BCFs8:FI"od^t!s&Ga!!WHF]`.g-rVca>q7IRG -#tikJrr2W+1B@OY%;u+CrVliqq9!2VQ-&arrVc`p#QOeoP7\7?p>Z+&~> -nGiId#M_TK1s#^rrr)j?nrF.hDt3i+s8Dun^EEhL_PgNU!WiB+%4,Ghli$e[rVcTm"Rh-T!:-ro=$/~> -nGiId#M_TK1s#^rrr)j?nrF.hDt3i+s8Dun^EEhL_PgNU!WiB+%4,Ghli$e[rVcTm"Rh-T!:-ro=$/~> -nGiId#M_TK1s#^rrr)j?nrF.hDt3i+s8Dun^EEhL_PgNU!WiB+%4,Ghli$e[rVcTm"Rh-T!:-ro=$/~> -nG`jprVuc@*!]-urr2iq#OHU8)l#RLrUmE;!U9Xf!>Lgsrm^rNq7RXH!TX4`#u19rrVQU+orotL!Xq>A -F>F.&! -nG`jprVuc@*!]-urr2iq#OHU8)l#RLrUmE;!U9Xf!>Lgsrm^rNq7RXH!TX4`#u19rrVQU+orotL!Xq>A -F>F.&! -nG`jprVuc@*!]-urr2iq#OHU8)l#RLrUmE;!U9Xf!>Lgsrm^rNq7RXH!TX4`#u19rrVQU+orotL!Xq>A -F>F.&! -nG`dns8Dc+"UeZ3qu7]9j';d8\,H=(r;HWomtD#K!,XMrr;c).-^g4! -nG`dns8Dc+"UeZ3qu7]9j';d8\,H=(r;HWomtD#K!,XMrr;c).-^g4! -nG`dns8Dc+"UeZ3qu7]9j';d8\,H=(r;HWomtD#K!,XMrr;c).-^g4! -mf*IhoUQ$pJc>ZIrrrAV6j,$Qrr*H.rVlceTG@S2%2q$?]'T@nrW)ojrri&"&ci$p!!WKO\GcI, -rmC`Hpos#`"9AK'#>WtP"oeJq\gIOE!<3'%%;c%CeGf[Nl=0epj8]5`+1(tFr;R?-rTfq3%Kle4 -!WrH+&6A&oli..RAcW[>ro=$/~> -mf*IhoUQ$pJc>ZIrrrAV6j,$Qrr*H.rVlceTG@S2%2q$?]'T@nrW)ojrri&"&ci$p!!WKO\GcI, -rmC`Hpos#`"9AK'#>WtP"oeJq\gIOE!<3'%%;c%CeGf[Nl=0epj8]5`+1(tFr;R?-rTfq3%Kle4 -!WrH+&6A&oli..RAcW[>ro=$/~> -mf*IhoUQ$pJc>ZIrrrAV6j,$Qrr*H.rVlceTG@S2%2q$?]'T@nrW)ojrri&"&ci$p!!WKO\GcI, -rmC`Hpos#`"9AK'#>WtP"oeJq\gIOE!<3'%%;c%CeGf[Nl=0epj8]5`+1(tFr;R?-rTfq3%Kle4 -!WrH+&6A&oli..RAcW[>ro=$/~> -nG`gnrr25%!#MX6rVZ[9rR*%u0t-?;q#10hrq -rVuosdJj7BYj)2k!<<-*:>,XNrr)W(-irT5"9B!Mrr1CH"S7u^!WhB_"9B-bqu$6h%J[nI,nL7_ -":ZJ]fDY^7rs&(Z!>'PTroF*0~> -nG`gnrr25%!#MX6rVZ[9rR*%u0t-?;q#10hrq -rVuosdJj7BYj)2k!<<-*:>,XNrr)W(-irT5"9B!Mrr1CH"S7u^!WhB_"9B-bqu$6h%J[nI,nL7_ -":ZJ]fDY^7rs&(Z!>'PTroF*0~> -nG`gnrr25%!#MX6rVZ[9rR*%u0t-?;q#10hrq -rVuosdJj7BYj)2k!<<-*:>,XNrr)W(-irT5"9B!Mrr1CH"S7u^!WhB_"9B-bqu$6h%J[nI,nL7_ -":ZJ]fDY^7rs&(Z!>'PTroF*0~> -nGiOf$2ipZ!?K>^r;Q]prtG=R'*Jq1ArX4Mi9'FmZU]8OjSSoT"onN!rr2lirrVFi!r`5_!!WX" -q#10hrmC`Hpos#`"9AK'#>WtP"TJGr\0gG?!s&mOrmUlNrV*i7!WhB_"Tf*=mJd+_rt,2.rquZS -Y]2`S2I2j2qu-N[rrr2(!Xi60j8XW~> -nGiOf$2ipZ!?K>^r;Q]prtG=R'*Jq1ArX4Mi9'FmZU]8OjSSoT"onN!rr2lirrVFi!r`5_!!WX" -q#10hrmC`Hpos#`"9AK'#>WtP"TJGr\0gG?!s&mOrmUlNrV*i7!WhB_"Tf*=mJd+_rt,2.rquZS -Y]2`S2I2j2qu-N[rrr2(!Xi60j8XW~> -nGiOf$2ipZ!?K>^r;Q]prtG=R'*Jq1ArX4Mi9'FmZU]8OjSSoT"onN!rr2lirrVFi!r`5_!!WX" -q#10hrmC`Hpos#`"9AK'#>WtP"TJGr\0gG?!s&mOrmUlNrV*i7!WhB_"Tf*=mJd+_rt,2.rquZS -Y]2`S2I2j2qu-N[rrr2(!Xi60j8XW~> -nGiLe"kbR2..@07rs&K&s7s5,!WE-6"9o8_"9A`pec,FF -s8E?)rr;rmqY0g^qu6TprrE&irrE&rrs&DL$j];`roF*0~> -nGiLe"kbR2..@07rs&K&s7s5,!WE-6"9o8_"9A`pec,FF -s8E?)rr;rmqY0g^qu6TprrE&irrE&rrs&DL$j];`roF*0~> -nGiLe"kbR2..@07rs&K&s7s5,!WE-6"9o8_"9A`pec,FF -s8E?)rr;rmqY0g^qu6TprrE&irrE&rrs&DL$j];`roF*0~> -n,EUkqSjfc5P>$Trr!o;oUu?f!<<*$!WrK)!%U~> -n,EUkqSjfc5P>$Trr!o;oUu?f!<<*$!WrK)!%U~> -n,EUkqSjfc5P>$Trr!o;oUu?f!<<*$!WrK)!%U~> -nG`dnrUm',%:o83rr+&?rr;D<&JYoj%L`LA!<<-$!WW9($54@1;0A;1Z_;lqqYpj#s8DPY#lt#, -kQ(V`"ooadrr2rsd/O.AYj)2k!<<-*:=oLJns0L]lMq"f!#D'Prri<"mU&FZas8E#r -rVcirs8;j*r;HWlrr2lmp$9c%rr2iq"oR=O"=^k@s*t~> -nG`dnrUm',%:o83rr+&?rr;D<&JYoj%L`LA!<<-$!WW9($54@1;0A;1Z_;lqqYpj#s8DPY#lt#, -kQ(V`"ooadrr2rsd/O.AYj)2k!<<-*:=oLJns0L]lMq"f!#D'Prri<"mU&FZas8E#r -rVcirs8;j*r;HWlrr2lmp$9c%rr2iq"oR=O"=^k@s*t~> -nG`dnrUm',%:o83rr+&?rr;D<&JYoj%L`LA!<<-$!WW9($54@1;0A;1Z_;lqqYpj#s8DPY#lt#, -kQ(V`"ooadrr2rsd/O.AYj)2k!<<-*:=oLJns0L]lMq"f!#D'Prri<"mU&FZas8E#r -rVcirs8;j*r;HWlrr2lmp$9c%rr2iq"oR=O"=^k@s*t~> -nGiOf#kSg5s8N#ErrMo!l2Uqf!!*="f`)'PmXtW+!!E?()R]Oms8W'"nsC$M!<3'%%sIdJ -p](6l"TSK#r;Zcq&cMY)r;-3[n*B)mdB7p^>5eEtrs&JcBET?NroF*0~> -nGiOf#kSg5s8N#ErrMo!l2Uqf!!*="f`)'PmXtW+!!E?()R]Oms8W'"nsC$M!<3'%%sIdJ -p](6l"TSK#r;Zcq&cMY)r;-3[n*B)mdB7p^>5eEtrs&JcBET?NroF*0~> -nGiOf#kSg5s8N#ErrMo!l2Uqf!!*="f`)'PmXtW+!!E?()R]Oms8W'"nsC$M!<3'%%sIdJ -p](6l"TSK#r;Zcq&cMY)r;-3[n*B)mdB7p^>5eEtrs&JcBET?NroF*0~> -nGiOf,3sIW(ngg*rr2lqrVcK?o)8R\mbcO-STIUa-m037$3pY5quHj-@dj3os8E,uro$TM!TsFg -!=2KcrVuirrmC`Hpos#`"9AK'#>WqO"9%Fq!pK[f![,hgrm^rNrr)St+6*>'!=2Hmp&G$j)#a1" -nF,c/inDo0agIRfCK!/C*"*!HqYpBl"n7EO'Ti:Ss*t~> -nGiOf,3sIW(ngg*rr2lqrVcK?o)8R\mbcO-STIUa-m037$3pY5quHj-@dj3os8E,uro$TM!TsFg -!=2KcrVuirrmC`Hpos#`"9AK'#>WqO"9%Fq!pK[f![,hgrm^rNrr)St+6*>'!=2Hmp&G$j)#a1" -nF,c/inDo0agIRfCK!/C*"*!HqYpBl"n7EO'Ti:Ss*t~> -nGiOf,3sIW(ngg*rr2lqrVcK?o)8R\mbcO-STIUa-m037$3pY5quHj-@dj3os8E,uro$TM!TsFg -!=2KcrVuirrmC`Hpos#`"9AK'#>WqO"9%Fq!pK[f![,hgrm^rNrr)St+6*>'!=2Hmp&G$j)#a1" -nF,c/inDo0agIRfCK!/C*"*!HqYpBl"n7EO'Ti:Ss*t~> -nG`alr8qSm*kM=JrW3&srVclrrqu]o&cMCMZAEO%5:mZb#m(20'79`UrsJ`(rqaYj!<<-#!U9Xj -!<<*1D=RW*rm1TFpos#`"9AK'#>WqO"9%(>!U9Xg!tehc:c!X1=IpAb0l%fPqM -Z^Zf/Jo"LO//JBir;d-'!<<0,8F6?Qrrr"a$P7CNjSs`~> -nG`alr8qSm*kM=JrW3&srVclrrqu]o&cMCMZAEO%5:mZb#m(20'79`UrsJ`(rqaYj!<<-#!U9Xj -!<<*1D=RW*rm1TFpos#`"9AK'#>WqO"9%(>!U9Xg!tehc:c!X1=IpAb0l%fPqM -Z^Zf/Jo"LO//JBir;d-'!<<0,8F6?Qrrr"a$P7CNjSs`~> -nG`alr8qSm*kM=JrW3&srVclrrqu]o&cMCMZAEO%5:mZb#m(20'79`UrsJ`(rqaYj!<<-#!U9Xj -!<<*1D=RW*rm1TFpos#`"9AK'#>WqO"9%(>!U9Xg!tehc:c!X1=IpAb0l%fPqM -Z^Zf/Jo"LO//JBir;d-'!<<0,8F6?Qrrr"a$P7CNjSs`~> -nGa+"r7XmL0?4%krr)lrs8N&urq?@&rr<#pkL7;FLJT<."rE[+qu6m!rr2Yt+p%ZC!!2?brW**7 -Mu*FtrrMo!l2Uqf!!*="g&D3Sr6ZA_kl:hnrs/7t)[g!=rr2'[J,~> -nGa+"r7XmL0?4%krr)lrs8N&urq?@&rr<#pkL7;FLJT<."rE[+qu6m!rr2Yt+p%ZC!!2?brW**7 -Mu*FtrrMo!l2Uqf!!*="g&D3Sr6ZA_kl:hnrs/7t)[g!=rr2'[J,~> -nGa+"r7XmL0?4%krr)lrs8N&urq?@&rr<#pkL7;FLJT<."rE[+qu6m!rr2Yt+p%ZC!!2?brW**7 -Mu*FtrrMo!l2Uqf!!*="g&D3Sr6ZA_kl:hnrs/7t)[g!=rr2'[J,~> -nG`jpqTLf%6Iu/7s8M?a$i^)'rVQ68H7gGTrql`qrWE,jQji$UrrN6@U]/L;!Vina!!E<&!=)BQ -rrrDqWWN8&lMq(h&V'KPrR:cKrqu/)j8f2]!Wa1FqYps&r;Z]g_+=n6!W`E&!>,D7!WiB)! -nG`jpqTLf%6Iu/7s8M?a$i^)'rVQ68H7gGTrql`qrWE,jQji$UrrN6@U]/L;!Vina!!E<&!=)BQ -rrrDqWWN8&lMq(h&V'KPrR:cKrqu/)j8f2]!Wa1FqYps&r;Z]g_+=n6!W`E&!>,D7!WiB)! -nG`jpqTLf%6Iu/7s8M?a$i^)'rVQ68H7gGTrql`qrWE,jQji$UrrN6@U]/L;!Vina!!E<&!=)BQ -rrrDqWWN8&lMq(h&V'KPrR:cKrqu/)j8f2]!Wa1FqYps&r;Z]g_+=n6!W`E&!>,D7!WiB)! -nG`gopq\-\;WIfVrosFirr)lrrVc;e<7q0Grri?$mXbK#!!<9)._*\%!Vina!!E<&!=)BPrr_V2 -!s@fg"TfaCr;HTDs8Muuo9eS="T\]*'Ti=ks8W'>rVF`4"p+f,!X/c7#7V.Q'bq]-*?lms=C"`V -6,rp$rs/DE3 -nG`gopq\-\;WIfVrosFirr)lrrVc;e<7q0Grri?$mXbK#!!<9)._*\%!Vina!!E<&!=)BPrr_V2 -!s@fg"TfaCr;HTDs8Muuo9eS="T\]*'Ti=ks8W'>rVF`4"p+f,!X/c7#7V.Q'bq]-*?lms=C"`V -6,rp$rs/DE3 -nG`gopq\-\;WIfVrosFirr)lrrVc;e<7q0Grri?$mXbK#!!<9)._*\%!Vina!!E<&!=)BPrr_V2 -!s@fg"TfaCr;HTDs8Muuo9eS="T\]*'Ti=ks8W'>rVF`4"p+f,!X/c7#7V.Q'bq]-*?lms=C"`V -6,rp$rs/DE3 -nG`gopULkEA+9NtrosF`rr;us"onMmbk_86rr`5]@KGNi!s&Qdc--+fpos#`"9AK'#>WtP"T?q7 -!s.Ze"U-s0rql]Es8W'#s7s5.jT#Gb!rrdMrqud=rr)lsm!K*?!WrfP1I4N'>AJGCRBjHGgu@M` -mHN6#d/3hJrqtM@"=)Fqjo9i~> -nG`gopULkEA+9NtrosF`rr;us"onMmbk_86rr`5]@KGNi!s&Qdc--+fpos#`"9AK'#>WtP"T?q7 -!s.Ze"U-s0rql]Es8W'#s7s5.jT#Gb!rrdMrqud=rr)lsm!K*?!WrfP1I4N'>AJGCRBjHGgu@M` -mHN6#d/3hJrqtM@"=)Fqjo9i~> -nG`gopULkEA+9NtrosF`rr;us"onMmbk_86rr`5]@KGNi!s&Qdc--+fpos#`"9AK'#>WtP"T?q7 -!s.Ze"U-s0rql]Es8W'#s7s5.jT#Gb!rrdMrqud=rr)lsm!K*?!WrfP1I4N'>AJGCRBjHGgu@M` -mHN6#d/3hJrqtM@"=)Fqjo9i~> -nG`mqorS9*F8Z"9s8Dr`s8Doss8N#tr;lrsqu6iurqtM3!TjC^! -nG`mqorS9*F8Z"9s8Dr`s8Doss8N#tr;lrsqu6iurqtM3!TjC^! -nG`mqorS9*F8Z"9s8Dr`s8Doss8N#tr;lrsqu6iurqtM3!TjC^! -nG`jonWO%gKE(rLs8D6_qu-TorVl]o"TJH!e03lQ"9JQ0=7sc:!Vina!!E<&!=)BRrrrDbD$L.E -l2Ur%Sc8Tce,TIH"9/2O/`Qg5!=;<[qu7*(s7NN"!s9Qsjo#,Xqu-`urVlfprr**"rr2iorVQU" -rTnG+)63Z5k5Tr~> -nG`jonWO%gKE(rLs8D6_qu-TorVl]o"TJH!e03lQ"9JQ0=7sc:!Vina!!E<&!=)BRrrrDbD$L.E -l2Ur%Sc8Tce,TIH"9/2O/`Qg5!=;<[qu7*(s7NN"!s9Qsjo#,Xqu-`urVlfprr**"rr2iorVQU" -rTnG+)63Z5k5Tr~> -nG`jonWO%gKE(rLs8D6_qu-TorVl]o"TJH!e03lQ"9JQ0=7sc:!Vina!!E<&!=)BRrrrDbD$L.E -l2Ur%Sc8Tce,TIH"9/2O/`Qg5!=;<[qu7*(s7NN"!s9Qsjo#,Xqu-`urVlfprr**"rr2iorVQU" -rTnG+)63Z5k5Tr~> -nG`[kmX>3TS(.KX1Vs8N&u#Q=G7-NF5L!Ug!p!s&E* -1$AT9rVk=H$NC)(ro6fU!WW<'kPu4r# -nG`[kmX>3TS(.KX1Vs8N&u#Q=G7-NF5L!Ug!p!s&E* -1$AT9rVk=H$NC)(ro6fU!WW<'kPu4r# -nG`[kmX>3TS(.KX1Vs8N&u#Q=G7-NF5L!Ug!p!s&E* -1$AT9rVk=H$NC)(ro6fU!WW<'kPu4r# -nG`[jl=U/?ZISsYrr)iiY6!\a!s8Q9I`hZkpos#`"9AK'#>X1V$3'l&rqc#8"p"bn!;up'!YTSP -s8W)tdJjIMl"gD%!!*,c!#5M:!!b6srr<#srr;usltQY*/&;/`j8T>SPmS%Krr2'[J,~> -nG`[jl=U/?ZISsYrr)iiY6!\a!s8Q9I`hZkpos#`"9AK'#>X1V$3'l&rqc#8"p"bn!;up'!YTSP -s8W)tdJjIMl"gD%!!*,c!#5M:!!b6srr<#srr;usltQY*/&;/`j8T>SPmS%Krr2'[J,~> -nG`[jl=U/?ZISsYrr)iiY6!\a!s8Q9I`hZkpos#`"9AK'#>X1V$3'l&rqc#8"p"bn!;up'!YTSP -s8W)tdJjIMl"gD%!!*,c!#5M:!!b6srr<#srr;usltQY*/&;/`j8T>SPmS%Krr2'[J,~> -n,EOQ;$/,^ec,gPrVc8N!TX4`!rs()rlbX4W$i^&%rVlT1-NX>L"7H6h!l6rmUoIrWrQ'n;.2H! -n,EOQ;$/,^ec,gPrVc8N!TX4`!rs()rlbX4W$i^&%rVlT1-NX>L"7H6h!l6rmUoIrWrQ'n;.2H! -n,EOQ;$/,^ec,gPrVc8N!TX4`!rs()rlbX4W$i^&%rVlT1-NX>L"7H6h!l6rmUoIrWrQ'n;.2H! -nG`[jj#dGog"$-&rWE2fFp$h+"T\T((pEq^rrMo!l2Uqf!!*="hu=&_rVl`SD?g1B!Wqfj$3C2. -&Td= -nG`[jj#dGog"$-&rWE2fFp$h+"T\T((pEq^rrMo!l2Uqf!!*="hu=&_rVl`SD?g1B!Wqfj$3C2. -&Td= -nG`[jj#dGog"$-&rWE2fFp$h+"T\T((pEq^rrMo!l2Uqf!!*="hu=&_rVl`SD?g1B!Wqfj$3C2. -&Td= -n,EOL.KqHeec5[K"97Rf!Ta:a!X1V$i^2)o:df!#5P9!!*h!rVulrs8W)sn!!q^@Jg'%jo>A[#5ZIP#!i.dk5Tr~> -n,EOL.KqHeec5[K"97Rf!Ta:a!X1V$i^2)o:df!#5P9!!*h!rVulrs8W)sn!!q^@Jg'%jo>A[#5ZIP#!i.dk5Tr~> -n,EOL.KqHeec5[K"97Rf!Ta:a!X1V$i^2)o:df!#5P9!!*h!rVulrs8W)sn!!q^@Jg'%jo>A[#5ZIP#!i.dk5Tr~> -nG`XjgDU5Pq#:?nr;Qlus8W#ors8W(s8N&urr;uirri>^63.,K!!E<(+lE7ArrMo!l2Uqf!!*=" -hZ!o]qpRM*!s&H(!U]po!u?Rhrr;uss8LOJ$3'u(s7j,Q! -nG`XjgDU5Pq#:?nr;Qlus8W#ors8W(s8N&urr;uirri>^63.,K!!E<(+lE7ArrMo!l2Uqf!!*=" -hZ!o]qpRM*!s&H(!U]po!u?Rhrr;uss8LOJ$3'u(s7j,Q! -nG`XjgDU5Pq#:?nr;Qlus8W#ors8W(s8N&urr;uirri>^63.,K!!E<(+lE7ArrMo!l2Uqf!!*=" -hZ!o]qpRM*!s&H(!U]po!u?Rhrr;uss8LOJ$3'u(s7j,Q! -nG`Xg`tnn?qYpTqs8Muts8Dp$r;HWnrr;oqrW`<"s8W&rqt9slrr(V,!TX4`!WaVX=Zs8E9'rr2fQF9Vd8!"/f-!W`?&!=Vu`rVk"?#PuFr! -nG`Xg`tnn?qYpTqs8Muts8Dp$r;HWnrr;oqrW`<"s8W&rqt9slrr(V,!TX4`!WaVX=Zs8E9'rr2fQF9Vd8!"/f-!W`?&!=Vu`rVk"?#PuFr! -nG`Xg`tnn?qYpTqs8Muts8Dp$r;HWnrr;oqrW`<"s8W&rqt9slrr(V,!TX4`!WaVX=Zs8E9'rr2fQF9Vd8!"/f-!W`?&!=Vu`rVk"?#PuFr! -nG`[f]+kTMrqufrrYkb8rr)cprr;oqrqlZorVZKYk3)+&rVcZnrqHHmrWE#8-NiE0"9AW[p&N5QCccjT$&)B^Pius8N&s -rVkqY!tfP@rVl`nr;HQm"98Aur;HWpr;uQ0lM:G_j"^clf]E-`~> -nG`[f]+kTMrqufrrYkb8rr)cprr;oqrqlZorVZKYk3)+&rVcZnrqHHmrWE#8-NiE0"9AW[p&N5QCccjT$&)B^Pius8N&s -rVkqY!tfP@rVl`nr;HQm"98Aur;HWpr;uQ0lM:G_j"^clf]E-`~> -nG`[f]+kTMrqufrrYkb8rr)cprr;oqrqlZorVZKYk3)+&rVcZnrqHHmrWE#8-NiE0"9AW[p&N5QCccjT$&)B^Pius8N&s -rVkqY!tfP@rVl`nr;HQm"98Aur;HWpr;uQ0lM:G_j"^clf]E-`~> -nG`XcZ4[IHqu?]q"TSE"rr)]m%f?5$lb@pH<,e\ip\b$ipAY6opUha1!!]9EG4n!TsG2$ -nG`XcZ4[IHqu?]q"TSE"rr)]m%f?5$lb@pH<,e\ip\b$ipAY6opUha1!!]9EG4n!TsG2$ -nG`XcZ4[IHqu?]q"TSE"rr)]m%f?5$lb@pH<,e\ip\b$ipAY6opUha1!!]9EG4n!TsG2$ -nG`[aSIQ*Frql^$qtBXQp%\IarVld+rVlZNLE?^&"U,H+]CYsorrrE#p8Ao2j8];a#Z(0nbPqV< -Yj)2k!<<-*:?;E^rr)ink+*Rr!s&Jm!"&`.! -nG`[aSIQ*Frql^$qtBXQp%\IarVld+rVlZNLE?^&"U,H+]CYsorrrE#p8Ao2j8];a#Z(0nbPqV< -Yj)2k!<<-*:?;E^rr)ink+*Rr!s&Jm!"&`.! -nG`[aSIQ*Frql^$qtBXQp%\IarVld+rVlZNLE?^&"U,H+]CYsorrrE#p8Ao2j8];a#Z(0nbPqV< -Yj)2k!<<-*:?;E^rr)ink+*Rr!s&Jm!"&`.! -nG`[_RLKgZrqud&r8OiPU9)rBrVc`p%fcIcI1ZJ\!s&B&#0oo9p@s8E2d?3;I\r9"$0~> -nG`[_RLKgZrqud&r8OiPU9)rBrVc`p%fcIcI1ZJ\!s&B&#0oo9p@s8E2d?3;I\r9"$0~> -nG`[_RLKgZrqud&r8OiPU9)rBrVc`p%fcIcI1ZJ\!s&B&#0oo9p@s8E2d?3;I\r9"$0~> -nG`[^NXHGNrqud-nsUL3)cbDbrr)iqrVc/I)#XL7!!WK.1;iter;Q]ns8W'"nW"(=!!E<4C\dtQ -rrMo!l2Uqf!!*="lMpe]s8<&pg4^@4!;cd$!WW<5:tkofrrhb6"9APb!!WTgiVrfTrr)j"pq8R% -"T/9#!rN'!!<*$!!XA`+!!39((Spm,"R9P!*22KoJ,~> -nG`[^NXHGNrqud-nsUL3)cbDbrr)iqrVc/I)#XL7!!WK.1;iter;Q]ns8W'"nW"(=!!E<4C\dtQ -rrMo!l2Uqf!!*="lMpe]s8<&pg4^@4!;cd$!WW<5:tkofrrhb6"9APb!!WTgiVrfTrr)j"pq8R% -"T/9#!rN'!!<*$!!XA`+!!39((Spm,"R9P!*22KoJ,~> -nG`[^NXHGNrqud-nsUL3)cbDbrr)iqrVc/I)#XL7!!WK.1;iter;Q]ns8W'"nW"(=!!E<4C\dtQ -rrMo!l2Uqf!!*="lMpe]s8<&pg4^@4!;cd$!WW<5:tkofrrhb6"9APb!!WTgiVrfTrr)j"pq8R% -"T/9#!rN'!!<*$!!XA`+!!39((Spm,"R9P!*22KoJ,~> -nG`XYGR,"Ir;R-'k$%ih-F3RIs8;lq'_oHg"9AN*$lKro!s8m1hu -nG`XYGR,"Ir;R-'k$%ih-F3RIs8;lq'_oHg"9AN*$lKro!s8m1hu -nG`XYGR,"Ir;R-'k$%ih-F3RIs8;lq'_oHg"9AN*$lKro!s8m1hu -nG`XYGQo"_r;R!#ga<.4A*a*l(B==1j(SYu!`l!X8l9#71bJ&JZ3++se]l6s"ANGAp5/LA_)OrWW8iJccs]jo9i~> -nG`XYGQo"_r;R!#ga<.4A*a*l(B==1j(SYu!`l!X8l9#71bJ&JZ3++se]l6s"ANGAp5/LA_)OrWW8iJccs]jo9i~> -nG`XYGQo"_r;R!#ga<.4A*a*l(B==1j(SYu!`l!X8l9#71bJ&JZ3++se]l6s"ANGAp5/LA_)OrWW8iJccs]jo9i~> -nG`[ZG6\q]rr)j@rQt`L*h`N2rr2rqrpc[!!s&K=@dj6opUD^T#u9[_s8N#prrrDgEWcCDj8]8q -P5G7%rrMo!l2Uqf!!*="li.@lr;ZZ\_f$.h!W`>j!"&f0!W`KKEp3H"rl"g?p885t!!23^"U-pF -rr;uqrtbIN0aJF:/iuBk -nG`[ZG6\q]rr)j@rQt`L*h`N2rr2rqrpc[!!s&K=@dj6opUD^T#u9[_s8N#prrrDgEWcCDj8]8q -P5G7%rrMo!l2Uqf!!*="li.@lr;ZZ\_f$.h!W`>j!"&f0!W`KKEp3H"rl"g?p885t!!23^"U-pF -rr;uqrtbIN0aJF:/iuBk -nG`[ZG6\q]rr)j@rQt`L*h`N2rr2rqrpc[!!s&K=@dj6opUD^T#u9[_s8N#prrrDgEWcCDj8]8q -P5G7%rrMo!l2Uqf!!*="li.@lr;ZZ\_f$.h!W`>j!"&f0!W`KKEp3H"rl"g?p885t!!23^"U-pF -rr;uqrtbIN0aJF:/iuBk -nG`[WAd0'Prr)j#qRQb3/\M)]s8Ef4r8(ET!0n]k5Tr~> -nG`[WAd0'Prr)j#qRQb3/\M)]s8Ef4r8(ET!0n]k5Tr~> -nG`[WAd0'Prr)j#qRQb3/\M)]s8Ef4r8(ET!0n]k5Tr~> -nG`[U=TKGWr;HX0pT=N#1W]Rqrr;rroVr6#!=(R'qu6O$rqtPH!Z%:)rVulorrr>W -nG`[U=TKGWr;HX0pT=N#1W]Rqrr;rroVr6#!=(R'qu6O$rqtPH!Z%:)rVulorrr>W -nG`[U=TKGWr;HX0pT=N#1W]Rqrr;rroVr6#!=(R'qu6O$rqtPH!Z%:)rVulorrr>W -nG`XU=TBGdr;RN.])i0k`Vof6rVcZG;?6h#(Q&(hrVld"s6tjJ&:"0Qqu6ithcKm\!TX4_(p!W7 -bPqV -nG`XU=TBGdr;RN.])i0k`Vof6rVcZG;?6h#(Q&(hrVld"s6tjJ&:"0Qqu6ithcKm\!TX4_(p!W7 -bPqV -nG`XU=TBGdr;RN.])i0k`Vof6rVcZG;?6h#(Q&(hrVld"s6tjJ&:"0Qqu6ithcKm\!TX4_(p!W7 -bPqV -nG`XU=TBGdr;Ri:dKp(%X8W"prr)&9'*84B9&BUJrVlfrs7`i(%;>b?!<)iq#6+MR:&k:qjoGD^ -"<+ZIrVk%@!Vina!$D:B!=)C"rVcTgr;Q`prVuflp@Re7e\RDJ+:A8Q!6D!B> -rkAC8rn%_^!os=a*n^DirVQU!qs3qSqu6Qmrr;lorX8](s8Muqqu6NmrquZn#QFbtW;mKXrT=-1~> -nG`XU=TBGdr;Ri:dKp(%X8W"prr)&9'*84B9&BUJrVlfrs7`i(%;>b?!<)iq#6+MR:&k:qjoGD^ -"<+ZIrVk%@!Vina!$D:B!=)C"rVcTgr;Q`prVuflp@Re7e\RDJ+:A8Q!6D!B> -rkAC8rn%_^!os=a*n^DirVQU!qs3qSqu6Qmrr;lorX8](s8Muqqu6NmrquZn#QFbtW;mKXrT=-1~> -nG`XU=TBGdr;Ri:dKp(%X8W"prr)&9'*84B9&BUJrVlfrs7`i(%;>b?!<)iq#6+MR:&k:qjoGD^ -"<+ZIrVk%@!Vina!$D:B!=)C"rVcTgr;Q`prVuflp@Re7e\RDJ+:A8Q!6D!B> -rkAC8rn%_^!os=a*n^DirVQU!qs3qSqu6Qmrr;lorX8](s8Muqqu6NmrquZn#QFbtW;mKXrT=-1~> -nG`XU=TBGdr;R!#gaWC>IeY -nG`XU=TBGdr;R!#gaWC>IeY -nG`XU=TBGdr;R!#gaWC>IeY -nG`XU=TBGdr;RQ3k?J)p7a:Mrlao.Z!s&a&g]%0Nr;Zcq#k*HN%VbqBrVcWn"T6S,!&>-=Xj]r;QZqrOr44 -g(4;G!!WHMf_tgLrr)j/ro.3BJ@=+bhVR2OjlPamm-XfDs7HTiq>C-cn`K`K#QFbtW;mKXrT=-1~> -nG`XU=TBGdr;RQ3k?J)p7a:Mrlao.Z!s&a&g]%0Nr;Zcq#k*HN%VbqBrVcWn"T6S,!&>-=Xj]r;QZqrOr44 -g(4;G!!WHMf_tgLrr)j/ro.3BJ@=+bhVR2OjlPamm-XfDs7HTiq>C-cn`K`K#QFbtW;mKXrT=-1~> -nG`XU=TBGdr;RQ3k?J)p7a:Mrlao.Z!s&a&g]%0Nr;Zcq#k*HN%VbqBrVcWn"T6S,!&>-=Xj]r;QZqrOr44 -g(4;G!!WHMf_tgLrr)j/ro.3BJ@=+bhVR2OjlPamm-XfDs7HTiq>C-cn`K`K#QFbtW;mKXrT=-1~> -nG`XU=TBGdqu79"SJ)#26^aj(.g#bO![=cFs8Dorrs8P^<<Wj'LrhoM.@qu6p#s7`Jm%sIa1s*t~> -nG`XU=TBGdqu79"SJ)#26^aj(.g#bO![=cFs8Dorrs8P^<<Wj'LrhoM.@qu6p#s7`Jm%sIa1s*t~> -nG`XU=TBGdqu79"SJ)#26^aj(.g#bO![=cFs8Dorrs8P^<<Wj'LrhoM.@qu6p#s7`Jm%sIa1s*t~> -nG`[U=TKMerqud:qU7t=!<``E#6=l,!>B8=rr<#ts8N&spq\Q`'9`=nqu6fsd5V+,irB)t[)r=K -pos#`#lt#,#>Y9tmYD>L!T4,(K>r;Qits8K\2"PjRg -!!23^"pI*Irr2rrrVm-#cp.X6! -nG`[U=TKMerqud:qU7t=!<``E#6=l,!>B8=rr<#ts8N&spq\Q`'9`=nqu6fsd5V+,irB)t[)r=K -pos#`#lt#,#>Y9tmYD>L!T4,(K>r;Qits8K\2"PjRg -!!23^"pI*Irr2rrrVm-#cp.X6! -nG`[U=TKMerqud:qU7t=!<``E#6=l,!>B8=rr<#ts8N&spq\Q`'9`=nqu6fsd5V+,irB)t[)r=K -pos#`#lt#,#>Y9tmYD>L!T4,(K>r;Qits8K\2"PjRg -!!23^"pI*Irr2rrrVm-#cp.X6! -nG`XQr2crrMo! -l2VP"!!*="s8;DI)%?oV!WW3$!WW6%"7Q:$!<<3-%2:<[BsHdorVuos[f6Kd%fcS1jo>Sh46$8> -rVlcq!rBnkrW3$#"9SZ+!W`0"!!E0##6Ou.!!*'4M#72Wrr;_l!"3?&k5Tr~> -nG`XQr2crrMo! -l2VP"!!*="s8;DI)%?oV!WW3$!WW6%"7Q:$!<<3-%2:<[BsHdorVuos[f6Kd%fcS1jo>Sh46$8> -rVlcq!rBnkrW3$#"9SZ+!W`0"!!E0##6Ou.!!*'4M#72Wrr;_l!"3?&k5Tr~> -nG`XQr2crrMo! -l2VP"!!*="s8;DI)%?oV!WW3$!WW6%"7Q:$!<<3-%2:<[BsHdorVuos[f6Kd%fcS1jo>Sh46$8> -rVlcq!rBnkrW3$#"9SZ+!W`0"!!E0##6Ou.!!*'4M#72Wrr;_l!"3?&k5Tr~> -nG`XQr2crrMo! -l2VP"!!*="rquH&HZ31R,SURh!W`?)!q60t!sB>rB8X4YqY^6grr2ut[f6Kd%fcS1jo>Pg45p,: -rqud1qSFp!)]p%;)%dJh$3pb;"U"u3"TAK,!!*'"'qY=&#QFbtW;m<:lfS4t~> -nG`XQr2crrMo! -l2VP"!!*="rquH&HZ31R,SURh!W`?)!q60t!sB>rB8X4YqY^6grr2ut[f6Kd%fcS1jo>Pg45p,: -rqud1qSFp!)]p%;)%dJh$3pb;"U"u3"TAK,!!*'"'qY=&#QFbtW;m<:lfS4t~> -nG`XQr2crrMo! -l2VP"!!*="rquH&HZ31R,SURh!W`?)!q60t!sB>rB8X4YqY^6grr2ut[f6Kd%fcS1jo>Pg45p,: -rqud1qSFp!)]p%;)%dJh$3pb;"U"u3"TAK,!!*'"'qY=&#QFbtW;m<:lfS4t~> -nG`[U=9'>crqufrrXSkdMDQ1`&/[':des+Cr;?R&r8Ml,$l;q.rr)lrqu6fsd5_1-irB)s[)r=K -pos#`'`e:8#>Y9trV?'TkhX=H="Y*k!l!"8l<3Gc(UnbrFdrVul'rrh-g!!!&^!!WThir8uX -rr)j;pq9IS\B`$rTne).=[tM,/M8Cr*#]J&%LN=?(p3]8#QFbtW;m?@mcOP"~> -nG`[U=9'>crqufrrXSkdMDQ1`&/[':des+Cr;?R&r8Ml,$l;q.rr)lrqu6fsd5_1-irB)s[)r=K -pos#`'`e:8#>Y9trV?'TkhX=H="Y*k!l!"8l<3Gc(UnbrFdrVul'rrh-g!!!&^!!WThir8uX -rr)j;pq9IS\B`$rTne).=[tM,/M8Cr*#]J&%LN=?(p3]8#QFbtW;m?@mcOP"~> -nG`[U=9'>crqufrrXSkdMDQ1`&/[':des+Cr;?R&r8Ml,$l;q.rr)lrqu6fsd5_1-irB)s[)r=K -pos#`'`e:8#>Y9trV?'TkhX=H="Y*k!l!"8l<3Gc(UnbrFdrVul'rrh-g!!!&^!!WThir8uX -rr)j;pq9IS\B`$rTne).=[tM,/M8Cr*#]J&%LN=?(p3]8#QFbtW;m?@mcOP"~> -nG`[V=o]Perqud-rql]nqUM!`I?;PFrr2iqrqud(or^PI@>)AjrVlcpqu6fsd5_1-irB)s[)r=K -pos#`'`e:8#>Y -nG`[V=o]Perqud-rql]nqUM!`I?;PFrr2iqrqud(or^PI@>)AjrVlcpqu6fsd5_1-irB)s[)r=K -pos#`'`e:8#>Y -nG`[V=o]Perqud-rql]nqUM!`I?;PFrr2iqrqud(or^PI@>)AjrVlcpqu6fsd5_1-irB)s[)r=K -pos#`'`e:8#>Y -nG`XT=90Gequ?]qs8Dus!r`,sr;HcqrVl`p"o$NdfB`A3rql]ur6[M)!TO.\(pqEb!Vina!#>S8 -!=)C"rr2lqs8N#ts8N#h`*jMh!V$-j! -nG`XT=90Gequ?]qs8Dus!r`,sr;HcqrVl`p"o$NdfB`A3rql]ur6[M)!TO.\(pqEb!Vina!#>S8 -!=)C"rr2lqs8N#ts8N#h`*jMh!V$-j! -nG`XT=90Gequ?]qs8Dus!r`,sr;HcqrVl`p"o$NdfB`A3rql]ur6[M)!TO.\(pqEb!Vina!#>S8 -!=)C"rr2lqs8N#ts8N#h`*jMh!V$-j! -nG`[U=oo\grqufrrX&Q&rVc`orr2rsjo5J]d5_1-j8];b(pj5?bPqVGi>O27equ?Zp)#XC5r;5`kD%6XaNVWSQrVZWn -ro[;`+OU&c"o\.p!=sY@s*t~> -nG`[U=oo\grqufrrX&Q&rVc`orr2rsjo5J]d5_1-j8];b(pj5?bPqVGi>O27equ?Zp)#XC5r;5`kD%6XaNVWSQrVZWn -ro[;`+OU&c"o\.p!=sY@s*t~> -nG`[U=oo\grqufrrX&Q&rVc`orr2rsjo5J]d5_1-j8];b(pj5?bPqVGi>O27equ?Zp)#XC5r;5`kD%6XaNVWSQrVZWn -ro[;`+OU&c"o\.p!=sY@s*t~> -nG`XU=TBMequ?Zo"T%olrqucpjSoA\d5_1-jT#Gc!>hj9rlbXsl$iU)'n?=t] -!Mk?0hOgq>^Ko)>sL3qt/Hm/Hl.U%:A5srqu`n -s8D"W"YJ=&rs&K#pSe0(Ic^T[~> -nG`XU=TBMequ?Zo"T%olrqucpjSoA\d5_1-jT#Gc!>hj9rlbXsl$iU)'n?=t] -!Mk?0hOgq>^Ko)>sL3qt/Hm/Hl.U%:A5srqu`n -s8D"W"YJ=&rs&K#pSe0(Ic^T[~> -nG`XU=TBMequ?Zo"T%olrqucpjSoA\d5_1-jT#Gc!>hj9rlbXsl$iU)'n?=t] -!Mk?0hOgq>^Ko)>sL3qt/Hm/Hl.U%:A5srqu`n -s8D"W"YJ=&rs&K#pSe0(Ic^T[~> -nG`[V=TBJdrqud'rV,@!dc']lrr2lWrri8I3<0*@!!E?;Qhp[(rrMo!l2Uqf!!*="p&G'k"oSAn -_+=n2!Ug$f!XBKciV`]Qrr0J."THm^!WhB_"q5A -nG`[V=TBJdrqud'rV,@!dc']lrr2lWrri8I3<0*@!!E?;Qhp[(rrMo!l2Uqf!!*="p&G'k"oSAn -_+=n2!Ug$f!XBKciV`]Qrr0J."THm^!WhB_"q5A -nG`[V=TBJdrqud'rV,@!dc']lrr2lWrri8I3<0*@!!E?;Qhp[(rrMo!l2Uqf!!*="p&G'k"oSAn -_+=n2!Ug$f!XBKciV`]Qrr0J."THm^!WhB_"q5A -nG`[V=TKPdrVZ['prmP;5@BSuoDALcjo5J]d5_1-j8]8a&ruk3rrMo!l2Uqf!!*="oDeji#64G3 -0*VFYmJmOp! -nG`[V=TKPdrVZ['prmP;5@BSuoDALcjo5J]d5_1-j8]8a&ruk3rrMo!l2Uqf!!*="oDeji#64G3 -0*VFYmJmOp! -nG`[V=TKPdrVZ['prmP;5@BSuoDALcjo5J]d5_1-j8]8a&ruk3rrMo!l2Uqf!!*="oDeji#64G3 -0*VFYmJmOp! -nG`XS=p#bXqu7#mLC""`"r9A(nbqPK"T6Y.!!20]"Te];Oo,.$rrMo!l2Uqf!!*="p&>Bur;Z]o -rplU)"9Ioj!!3'$"W`crr;Q]+rrW#+$f_3k%t=6Os8W)qru:t5k-I8^!XmjrVd-%l%0?H!!**#!VHHm!=8f-!!39KYP8%qrr<#t^AeB3[gN6=!TsG2!>:Llrr;rss8N&s -rr)K8FVt2\!XL6%f`(/L! -nG`[XAHNaJrVZ[,luW=1";acS1W9:ks8N#trqZQorq$-mr7+.7!TX4`!Y^UkrQG3Apos#`"9AK' -#>XmjrVd-%l%0?H!!**#!VHHm!=8f-!!39KYP8%qrr<#t^AeB3[gN6=!TsG2!>:Llrr;rss8N&s -rr)K8FVt2\!XL6%f`(/L! -nG`[XAHNaJrVZ[,luW=1";acS1W9:ks8N#trqZQorq$-mr7+.7!TX4`!Y^UkrQG3Apos#`"9AK' -#>XmjrVd-%l%0?H!!**#!VHHm!=8f-!!39KYP8%qrr<#t^AeB3[gN6=!TsG2!>:Llrr;rss8N&s -rr)K8FVt2\!XL6%f`(/L! -nG`[[FpJn_rqud&nW4In'3!SG8A5!$!rMrqr;Zfr"98B!rq69mr7k92!!<96JbdIg!Vina!!E<& -!=)Bgs8W!%eO'H>!o! -nG`[[FpJn_rqud&nW4In'3!SG8A5!$!rMrqr;Zfr"98B!rq69mr7k92!!<96JbdIg!Vina!!E<& -!=)Bgs8W!%eO'H>!o! -nG`[[FpJn_rqud&nW4In'3!SG8A5!$!rMrqr;Zfr"98B!rq69mr7k92!!<96JbdIg!Vina!!E<& -!=)Bgs8W!%eO'H>!o! -nG`[ZGR51`rqud-qV?a*Bu^/GeD(!%qu-Nns7uWqs8N#jrrW,U=5j2_!Y0&CrlbXdg$i^)(p9G\@!s&H*!Up*h!XK3?n,3+_rquc0rr_kU#QXi)lMq(h!!!-DWVleprZ1X7-j'MR% -5rq(r;Q]or9/\J!<<*%"9AK+.]`UKqYpd!n::WZSG_OLJ,~> -nG`[ZGR51`rqud-qV?a*Bu^/GeD(!%qu-Nns7uWqs8N#jrrW,U=5j2_!Y0&CrlbXdg$i^)(p9G\@!s&H*!Up*h!XK3?n,3+_rquc0rr_kU#QXi)lMq(h!!!-DWVleprZ1X7-j'MR% -5rq(r;Q]or9/\J!<<*%"9AK+.]`UKqYpd!n::WZSG_OLJ,~> -nG`[ZGR51`rqud-qV?a*Bu^/GeD(!%qu-Nns7uWqs8N#jrrW,U=5j2_!Y0&CrlbXdg$i^)(p9G\@!s&H*!Up*h!XK3?n,3+_rquc0rr_kU#QXi)lMq(h!!!-DWVleprZ1X7-j'MR% -5rq(r;Q]or9/\J!<<*%"9AK+.]`UKqYpd!n::WZSG_OLJ,~> -nG`XYGm>%Mqu7!$rqZ!Qrr)`nrVld,r;$-`p\4IWq>C3js8W)tp\t?pr8:`;!!E<4C&7hPrrMo! -l2Uqf!!*="n,E^nr;>Mb#6Fu.!q--g!X9O@q#:3irk8=7n:V&J!U0Rf!<<-'-aimP(]OC5rT7/_ -!s]cP](Z.&rVuipqqlN3$2t)4"q)r9o)AUarrrDhD?:fMjo9i~> -nG`XYGm>%Mqu7!$rqZ!Qrr)`nrVld,r;$-`p\4IWq>C3js8W)tp\t?pr8:`;!!E<4C&7hPrrMo! -l2Uqf!!*="n,E^nr;>Mb#6Fu.!q--g!X9O@q#:3irk8=7n:V&J!U0Rf!<<-'-aimP(]OC5rT7/_ -!s]cP](Z.&rVuipqqlN3$2t)4"q)r9o)AUarrrDhD?:fMjo9i~> -nG`XYGm>%Mqu7!$rqZ!Qrr)`nrVld,r;$-`p\4IWq>C3js8W)tp\t?pr8:`;!!E<4C&7hPrrMo! -l2Uqf!!*="n,E^nr;>Mb#6Fu.!q--g!X9O@q#:3irk8=7n:V&J!U0Rf!<<-'-aimP(]OC5rT7/_ -!s]cP](Z.&rVuipqqlN3$2t)4"q)r9o)AUarrrDhD?:fMjo9i~> -nG`[\M$afGrqufrrW;urr;HR!r;HK[hTs!Hrj)j=`7aSRr;Q]grrW/aD;tU!!Xdg$i^,'rqll7Xr9"$0~> -nG`[\M$afGrqufrrW;urr;HR!r;HK[hTs!Hrj)j=`7aSRr;Q]grrW/aD;tU!!Xdg$i^,'rqll7Xr9"$0~> -nG`[\M$afGrqufrrW;urr;HR!r;HK[hTs!Hrj)j=`7aSRr;Q]grrW/aD;tU!!Xdg$i^,'rqll7Xr9"$0~> -nG`X_RLTpYqu6`rr;HWps8E`4r9_OZ=#q9,! -nG`X_RLTpYqu6`rr;HWps8E`4r9_OZ=#q9,! -nG`X_RLTpYqu6`rr;HWps8E`4r9_OZ=#q9,! -nG`[`T+2 -nG`[`T+2 -nG`[`T+2 -nG`[bXq;"Drq??qrqkAi%KZP1&c_q6!s&E(!XUb#6*OV!WW6%lMq(q=mQ(erkJI;rnU*H! -nG`[bXq;"Drq??qrqkAi%KZP1&c_q6!s&E(!XUb#6*OV!WW6%lMq(q=mQ(erkJI;rnU*H! -nG`[bXq;"Drq??qrqkAi%KZP1&c_q6!s&E(!XUb#6*OV!WW6%lMq(q=mQ(erkJI;rnU*H! -nG`[e^(^lTrV$7-qVQH-! -nG`[e^(^lTrV$7-qVQH-! -nG`[e^(^lTrV$7-qVQH-! -nG`[gaVP+ArqHF4rSr2.!Wirh>Bc.+RXo6O2&HW%!#h!WqWe":JGprqsP2"8TSZ!rW/a!!<65G5hF>$3'o%n=Qr^rVulXs8N!# -g_9iLn)aS"~> -nG`[gaVP+ArqHF4rSr2.!Wirh>Bc.+RXo6O2&HW%!#h!WqWe":JGprqsP2"8TSZ!rW/a!!<65G5hF>$3'o%n=Qr^rVulXs8N!# -g_9iLn)aS"~> -nG`[gaVP+ArqHF4rSr2.!Wirh>Bc.+RXo6O2&HW%!#h!WqWe":JGprqsP2"8TSZ!rW/a!!<65G5hF>$3'o%n=Qr^rVulXs8N!# -g_9iLn)aS"~> -nG`[jh&HMQqtL*so:[-+"sIs#nb`=bs83>oa-'"0"9AT9Eq95.rVHNrpUVLLjT#Gb!rsCbrlbXRa"oRIi"9AVi!!EELYQ"L8rrr/$*ru?BkQ(V`!Yggsr;R$$r;Pr%<7gsFrT+"Y -r<:^_#!Vt`k5Tr~> -nG`[jh&HMQqtL*so:[-+"sIs#nb`=bs83>oa-'"0"9AT9Eq95.rVHNrpUVLLjT#Gb!rsCbrlbXRa"oRIi"9AVi!!EELYQ"L8rrr/$*ru?BkQ(V`!Yggsr;R$$r;Pr%<7gsFrT+"Y -r<:^_#!Vt`k5Tr~> -nG`[jh&HMQqtL*so:[-+"sIs#nb`=bs83>oa-'"0"9AT9Eq95.rVHNrpUVLLjT#Gb!rsCbrlbXRa"oRIi"9AVi!!EELYQ"L8rrr/$*ru?BkQ(V`!Yggsr;R$$r;Pr%<7gsFrT+"Y -r<:^_#!Vt`k5Tr~> -n,EOJ,Qoa]q#;?3ej9E@-'[uurr)lsrr)iqrV>6,-O0YS.C/jMqYp]sqT:5hjT#Gb"9KOOrlbXRa"oe.h#m::p!<3'%$ -rr<#tkPkecq7R4B9DneOs*t~> -n,EOJ,Qoa]q#;?3ej9E@-'[uurr)lsrr)iqrV>6,-O0YS.C/jMqYp]sqT:5hjT#Gb"9KOOrlbXRa"oe.h#m::p!<3'%$ -rr<#tkPkecq7R4B9DneOs*t~> -n,EOJ,Qoa]q#;?3ej9E@-'[uurr)lsrr)iqrV>6,-O0YS.C/jMqYp]sqT:5hjT#Gb"9KOOrlbXRa"oe.h#m::p!<3'%$ -rr<#tkPkecq7R4B9DneOs*t~> -n,EOO5QiUiqu7$&s8V_d#6GTcp&=^c$i^+pV_S;S%:nc(rql]urqk>%!Ta:c!WrH>T`"f5rrMo! -l2Uqf!!*="lMh%er72bg!UB^h!%$OUDCroX62~> -n,EOO5QiUiqu7$&s8V_d#6GTcp&=^c$i^+pV_S;S%:nc(rql]urqk>%!Ta:c!WrH>T`"f5rrMo! -l2Uqf!!*="lMh%er72bg!UB^h!%$OUDCroX62~> -n,EOO5QiUiqu7$&s8V_d#6GTcp&=^c$i^+pV_S;S%:nc(rql]urqk>%!Ta:c!WrH>T`"f5rrMo! -l2Uqf!!*="lMh%er72bg!UB^h!%$OUDCroX62~> -nG`[jj[oY$^AS$1rWrPe>6+plc2R\9rsSi)rUHX'!X($mrr2fp"o\G]5lh#K!<*!#&r6D.rrMo! -l2Uqf!!*="lMh"ds5clSkl:hf!=`f3_uK`8"T@S*!!*!!l2^ea!@R1/rt#&#WuhKH"<(Uem/$VX -rr26`s8E5oSI#dJrVPaWJ,~> -nG`[jj[oY$^AS$1rWrPe>6+plc2R\9rsSi)rUHX'!X($mrr2fp"o\G]5lh#K!<*!#&r6D.rrMo! -l2Uqf!!*="lMh"ds5clSkl:hf!=`f3_uK`8"T@S*!!*!!l2^ea!@R1/rt#&#WuhKH"<(Uem/$VX -rr26`s8E5oSI#dJrVPaWJ,~> -nG`[jj[oY$^AS$1rWrPe>6+plc2R\9rsSi)rUHX'!X($mrr2fp"o\G]5lh#K!<*!#&r6D.rrMo! -l2Uqf!!*="lMh"ds5clSkl:hf!=`f3_uK`8"T@S*!!*!!l2^ea!@R1/rt#&#WuhKH"<(Uem/$VX -rr26`s8E5oSI#dJrVPaWJ,~> -n,EOVB*09\r;R-'s8W#I/HHE)q#0mc$NBu&msPQF&r6Gar;Zfr"9%Ik!Ta=]!s8N5E;n&\!Vina -!!E<&!=)Bbrri?"mu@V:!<3'$">%C)rri>^;ucs\!!3!sL$.h"gpJrp'Lg -rU>OJ'9)kgk5Tr~> -n,EOVB*09\r;R-'s8W#I/HHE)q#0mc$NBu&msPQF&r6Gar;Zfr"9%Ik!Ta=]!s8N5E;n&\!Vina -!!E<&!=)Bbrri?"mu@V:!<3'$">%C)rri>^;ucs\!!3!sL$.h"gpJrp'Lg -rU>OJ'9)kgk5Tr~> -n,EOVB*09\r;R-'s8W#I/HHE)q#0mc$NBu&msPQF&r6Gar;Zfr"9%Ik!Ta=]!s8N5E;n&\!Vina -!!E<&!=)Bbrri?"mu@V:!<3'$">%C)rri>^;ucs\!!3!sL$.h"gpJrp'Lg -rU>OJ'9)kgk5Tr~> -nG`[km!SsSRecshpUVCH(T70/rV$6urVlfma#3r)l;eF!Vina!!E<& -!=)BbrrrE#p:;CJlMq+i!WiB9Nr6iqs8E?)rS9=3!<<*#!U9Xe!=E*)qYq**n[>s7DC,hs!Y\kV -nG<(Jrs/JgE -nG`[km!SsSRecshpUVCH(T70/rV$6urVlfma#3r)l;eF!Vina!!E<& -!=)BbrrrE#p:;CJlMq+i!WiB9Nr6iqs8E?)rS9=3!<<*#!U9Xe!=E*)qYq**n[>s7DC,hs!Y\kV -nG<(Jrs/JgE -nG`[km!SsSRecshpUVCH(T70/rV$6urVlfma#3r)l;eF!Vina!!E<& -!=)BbrrrE#p:;CJlMq+i!WiB9Nr6iqs8E?)rS9=3!<<*#!U9Xe!=E*)qYq**n[>s7DC,hs!Y\kV -nG<(Jrs/JgE -n,EO^PlVYQr;Zcq#PP)4!?g%orq-6jr -n,EO^PlVYQr;Zcq#PP)4!?g%orq-6jr -n,EO^PlVYQr;Zcq#PP)4!?g%orq-6jr -n,F-rX8rfKqYpNos8N&toq`E),Ok^2rql]rrr;rrs8N?'pU(e?-/&:qs8W'#s7j2-irB/^#"%+g -rrMo!l2Uqf!!*="l2M(gs7)3\! -n,F-rX8rfKqYpNos8N&toq`E),Ok^2rql]rrr;rrs8N?'pU(e?-/&:qs8W'#s7j2-irB/^#"%+g -rrMo!l2Uqf!!*="l2M(gs7)3\! -n,F-rX8rfKqYpNos8N&toq`E),Ok^2rql]rrr;rrs8N?'pU(e?-/&:qs8W'#s7j2-irB/^#"%+g -rrMo!l2Uqf!!*="l2M(gs7)3\! -nGa:'pp^b@?L.XkrVlfrrq30)!$qF>rr2`nrr*9)rr;usgaE4J^A[p."9&,B%HRQn!<<-)2pBJF -!Vina!!E<&!=)BbrsAZ(rqjb`!<<-%l2UksJbd:bs8E*"oUk.D"9KjXrr2Zlrr*E*q:C0I"9Ji\ -Qf.Z -nGa:'pp^b@?L.XkrVlfrrq30)!$qF>rr2`nrr*9)rr;usgaE4J^A[p."9&,B%HRQn!<<-)2pBJF -!Vina!!E<&!=)BbrsAZ(rqjb`!<<-%l2UksJbd:bs8E*"oUk.D"9KjXrr2Zlrr*E*q:C0I"9Ji\ -Qf.Z -nGa:'pp^b@?L.XkrVlfrrq30)!$qF>rr2`nrr*9)rr;usgaE4J^A[p."9&,B%HRQn!<<-)2pBJF -!Vina!!E<&!=)BbrsAZ(rqjb`!<<-%l2UksJbd:bs8E*"oUk.D"9KjXrr2Zlrr*E*q:C0I"9Ji\ -Qf.Z -nG`dnqSFE_:uM?Nrr*9)rq3-(!%%C=s8Mrr&H;_/rVlfrs8Murj?WkfXT&+s"o\H!fII!a!<3*% -"=LY$rrMo!l2Uqf!!*="lMh1is8Du_?3($-!U9Xe#>=.W`;]r=m<&Hj!!EKfci3q;rtYJ1s8N#g -SIY`'!>Aq^o)8RerVlfop&>3k_Cc*_jQ->k~> -nG`dnqSFE_:uM?Nrr*9)rq3-(!%%C=s8Mrr&H;_/rVlfrs8Murj?WkfXT&+s"o\H!fII!a!<3*% -"=LY$rrMo!l2Uqf!!*="lMh1is8Du_?3($-!U9Xe#>=.W`;]r=m<&Hj!!EKfci3q;rtYJ1s8N#g -SIY`'!>Aq^o)8RerVlfop&>3k_Cc*_jQ->k~> -nG`dnqSFE_:uM?Nrr*9)rq3-(!%%C=s8Mrr&H;_/rVlfrs8Murj?WkfXT&+s"o\H!fII!a!<3*% -"=LY$rrMo!l2Uqf!!*="lMh1is8Du_?3($-!U9Xe#>=.W`;]r=m<&Hj!!EKfci3q;rtYJ1s8N#g -SIY`'!>Aq^o)8RerVlfop&>3k_Cc*_jQ->k~> -n,EUhbqoYidf'.Ds8NAtW##FXjo58Xr;R?-rVliqr;Q`rrqkYB!>^q!qu6fus8CkKj8f2\!Wj:6 -bPqV3k8LJ,~> -n,EUhbqoYidf'.Ds8NAtW##FXjo58Xr;R?-rVliqr;Q`rrqkYB!>^q!qu6fus8CkKj8f2\!Wj:6 -bPqV3k8LJ,~> -n,EUhbqoYidf'.Ds8NAtW##FXjo58Xr;R?-rVliqr;Q`rrqkYB!>^q!qu6fus8CkKj8f2\!Wj:6 -bPqV3k8LJ,~> -n,F.#g.MPt_>jN5rVlfrpUVCH)7BMErqud-rr<#sqtTdMl/U="1]\2=rVQTtrquc\Eo[3(!<<-5 -Mu1`u!Vina!!E<&!=)BbrsA])s8MoC2?3fTb%]So&Th$~> -n,F.#g.MPt_>jN5rVlfrpUVCH)7BMErqud-rr<#sqtTdMl/U="1]\2=rVQTtrquc\Eo[3(!<<-5 -Mu1`u!Vina!!E<&!=)BbrsA])s8MoC2?3fTb%]So&Th$~> -n,F.#g.MPt_>jN5rVlfrpUVCH)7BMErqud-rr<#sqtTdMl/U="1]\2=rVQTtrquc\Eo[3(!<<-5 -Mu1`u!Vina!!E<&!=)BbrsA])s8MoC2?3fTb%]So&Th$~> -nG`dnrT%Dh*jkqFrr4,=s8:@r!YU1arVcWiq"F:GkMY4D[@;_V:-L3XO`s8E<(rTJ;-!!<6&lMq%n9]cWrr)Tk"n7TV&rHJGs*t~> -nG`dnrT%Dh*jkqFrr4,=s8:@r!YU1arVcWiq"F:GkMY4D[@;_V:-L3XO`s8E<(rTJ;-!!<6&lMq%n9]cWrr)Tk"n7TV&rHJGs*t~> -nG`dnrT%Dh*jkqFrr4,=s8:@r!YU1arVcWiq"F:GkMY4D[@;_V:-L3XO`s8E<(rTJ;-!!<6&lMq%n9]cWrr)Tk"n7TV&rHJGs*t~> -n,E[mm^CB%LWRH"8r6&!X`0!qu7$&s8Vbj)$'a@!f!!E?C^&J!!rsJ`(rVc`nq"+F^roF(^ -rpuQm!Ta:_!ZnfLrq?@1rr;rrrnf4/)k?p)ieT9!!u5Xhl1XQ0rVlclrrhY-!Z@U/roX62~> -n,E[mm^CB%LWRH"8r6&!X`0!qu7$&s8Vbj)$'a@!f!!E?C^&J!!rsJ`(rVc`nq"+F^roF(^ -rpuQm!Ta:_!ZnfLrq?@1rr;rrrnf4/)k?p)ieT9!!u5Xhl1XQ0rVlclrrhY-!Z@U/roX62~> -n,E[mm^CB%LWRH"8r6&!X`0!qu7$&s8Vbj)$'a@!f!!E?C^&J!!rsJ`(rVc`nq"+F^roF(^ -rpuQm!Ta:_!ZnfLrq?@1rr;rrrnf4/)k?p)ieT9!!u5Xhl1XQ0rVlclrrhY-!Z@U/roX62~> -nGaR.rpYmW&:+*Mr;QZps8;+f!sU#_@o,9:(Baa@!<`<%$N^;/!!**&!")Q\rql`qrWi88/HYtS -!!2XC\!r^tJr;l0`!tKGMrp]sfrr2j#r:\@-g%>:*s8W'" -m!/fr!!EBRh>[EHru:t;rr;i8&-OE"rVl`d]O;W]$Scn(PHY#crVcZo"o[L`"Xg\;s*t~> -nGaR.rpYmW&:+*Mr;QZps8;+f!sU#_@o,9:(Baa@!<`<%$N^;/!!**&!")Q\rql`qrWi88/HYtS -!!2XC\!r^tJr;l0`!tKGMrp]sfrr2j#r:\@-g%>:*s8W'" -m!/fr!!EBRh>[EHru:t;rr;i8&-OE"rVl`d]O;W]$Scn(PHY#crVcZo"o[L`"Xg\;s*t~> -nGaR.rpYmW&:+*Mr;QZps8;+f!sU#_@o,9:(Baa@!<`<%$N^;/!!**&!")Q\rql`qrWi88/HYtS -!!2XC\!r^tJr;l0`!tKGMrp]sfrr2j#r:\@-g%>:*s8W'" -m!/fr!!EBRh>[EHru:t;rr;i8&-OE"rVl`d]O;W]$Scn(PHY#crVcZo"o[L`"Xg\;s*t~> -nG`mqs7WH1$![-&rr<#trZ1KW!WiH-!WrK+!i -!!2 -nG`mqs7WH1$![-&rr<#trZ1KW!WiH-!WrK+!i -!!2 -nG`mqs7WH1$![-&rr<#trZ1KW!WiH-!WrK+!i -!!2 -nGiOf"o?+^"ZZ2SrZV=>rr2Sb! -nGiOf"o?+^"ZZ2SrZV=>rr2Sb! -nGiOf"o?+^"ZZ2SrZV=>rr2Sb! -nGb'=rVkS."!ct-rr<#ts8Df."Tnl4$4n!o,:>-7?[J9E`Qm/tmIBZ6leftOqu6Zqrr3/kOTtpf -!U0Rf!<<*#&rHSdd/O.AYj)2k!<<-*:?;EXrT7\p!pTdc!9":83)roF*0~> -nGb'=rVkS."!ct-rr<#ts8Df."Tnl4$4n!o,:>-7?[J9E`Qm/tmIBZ6leftOqu6Zqrr3/kOTtpf -!U0Rf!<<*#&rHSdd/O.AYj)2k!<<-*:?;EXrT7\p!pTdc!9":83)roF*0~> -nGb'=rVkS."!ct-rr<#ts8Df."Tnl4$4n!o,:>-7?[J9E`Qm/tmIBZ6leftOqu6Zqrr3/kOTtpf -!U0Rf!<<*#&rHSdd/O.AYj)2k!<<-*:?;EXrT7\p!pTdc!9":83)roF*0~> -nG`als8;"M!$&cQrY,>2s8MrA)[muV>^i0Qd,tB-s8;`ms8N,ts8N#ps8DouqS3Orr)ipr;QolScB7Bir=N~> -nG`als8;"M!$&cQrY,>2s8MrA)[muV>^i0Qd,tB-s8;`ms8N,ts8N#ps8DouqS3Orr)ipr;QolScB7Bir=N~> -nG`als8;"M!$&cQrY,>2s8MrA)[muV>^i0Qd,tB-s8;`ms8N,ts8N#ps8DouqS3Orr)ipr;QolScB7Bir=N~> -nG`gnrr)5*!#D1*rVZ[#rS(+SZIA1 -nG`gnrr)5*!#D1*rVZ[#rS(+SZIA1 -nG`gnrr)5*!#D1*rVZ[#rS(+SZIA1 -n,NFe#P=Db&9RmNrr)j"rp6uNrVlfSrrqR_!WW6%jo>Pe0[Th!rm:ZGpos#`"9AK'#>X@["o\Gh -N=,dQ!"/f/!"#;:%M0I#1I4rSQJhcBr;Zcors%R\!Zf2XroF*0~> -n,NFe#P=Db&9RmNrr)j"rp6uNrVlfSrrqR_!WW6%jo>Pe0[Th!rm:ZGpos#`"9AK'#>X@["o\Gh -N=,dQ!"/f/!"#;:%M0I#1I4rSQJhcBr;Zcors%R\!Zf2XroF*0~> -n,NFe#P=Db&9RmNrr)j"rp6uNrVlfSrrqR_!WW6%jo>Pe0[Th!rm:ZGpos#`"9AK'#>X@["o\Gh -N=,dQ!"/f/!"#;:%M0I#1I4rSQJhcBr;Zcors%R\!Zf2XroF*0~> -n,NFe#l;1:$X@["oeGs -aW1EI!<3')"YSs9s8W)tpAYO"ot!3e!W`BMec#L/rr`&3(]i^u!s':+r;HZprZ_ -n,NFe#l;1:$X@["oeGs -aW1EI!<3')"YSs9s8W)tpAYO"ot!3e!W`BMec#L/rr`&3(]i^u!s':+r;HZprZ_ -n,NFe#l;1:$X@["oeGs -aW1EI!<3')"YSs9s8W)tpAYO"ot!3e!W`BMec#L/rr`&3(]i^u!s':+r;HZprZ_ -mf*UmrQuVj7,@h@rqud!rVlfprnm_YpTG21!TX4a&VBlZr;P+D!Vina!!E<&!=)B]rs&K#rr2+_ -!UB^m!"!=`Q5r;PgX"S.Za!!23^!Wt$krr2rt+8u3 -mf*UmrQuVj7,@h@rqud!rVlfprnm_YpTG21!TX4a&VBlZr;P+D!Vina!!E<&!=)B]rs&K#rr2+_ -!UB^m!"!=`Q5r;PgX"S.Za!!23^!Wt$krr2rt+8u3 -mf*UmrQuVj7,@h@rqud!rVlfprnm_YpTG21!TX4a&VBlZr;P+D!Vina!!E<&!=)B]rs&K#rr2+_ -!UB^m!"!=`Q5r;PgX"S.Za!!23^!Wt$krr2rt+8u3 -nGiOf#lX\T6j,-Trr2fp"TJB!r;>IP"o?;!!!*,^!!NdAm/R"_dJj7BYj)2k!<<-*:?;HTrWE,l -V[r(n$3C5/!tAo5rr)lqp\tZtcWpPP!W`HMYP\=tjo5GFA-2ko!$hb=nG`Cdrr;utrp=q7!X92R -01fW"Q*Sj)r;Z`ps8Drss8DusrW2rsr;QZp#5"E#%;Y_;j8XW~> -nGiOf#lX\T6j,-Trr2fp"TJB!r;>IP"o?;!!!*,^!!NdAm/R"_dJj7BYj)2k!<<-*:?;HTrWE,l -V[r(n$3C5/!tAo5rr)lqp\tZtcWpPP!W`HMYP\=tjo5GFA-2ko!$hb=nG`Cdrr;utrp=q7!X92R -01fW"Q*Sj)r;Z`ps8Drss8DusrW2rsr;QZp#5"E#%;Y_;j8XW~> -nGiOf#lX\T6j,-Trr2fp"TJB!r;>IP"o?;!!!*,^!!NdAm/R"_dJj7BYj)2k!<<-*:?;HTrWE,l -V[r(n$3C5/!tAo5rr)lqp\tZtcWpPP!W`HMYP\=tjo5GFA-2ko!$hb=nG`Cdrr;utrp=q7!X92R -01fW"Q*Sj)r;Z`ps8Drss8DusrW2rsr;QZp#5"E#%;Y_;j8XW~> -n,E^mrr(tl!ZRj3rVQU$rV63dqu?]qrVlfr!<)orr;Zfr!<)or"TA2ps8Moq!r_"[rW2*\":.EK -rr1:E!Vin`!!E<&#Z(E\s8W'$rVFc$!rW/g!"K#0! -n,E^mrr(tl!ZRj3rVQU$rV63dqu?]qrVlfr!<)orr;Zfr!<)or"TA2ps8Moq!r_"[rW2*\":.EK -rr1:E!Vin`!!E<&#Z(E\s8W'$rVFc$!rW/g!"K#0! -n,E^mrr(tl!ZRj3rVQU$rV63dqu?]qrVlfr!<)orr;Zfr!<)or"TA2ps8Moq!r_"[rW2*\":.EK -rr1:E!Vin`!!E<&#Z(E\s8W'$rVFc$!rW/g!"K#0! -nG`mprr;rdN!^,Hp\t0irs/57c/eBirVulr!<)orqZ$Km#5mf1oDJRbr;Qlun;7Y7!!NHK]Dh^, -dJj7BYibue#=RYQs8<6'rT\_9"9JZ+lMq&'R/?j[rr2lr&,lM'fP1Qj"9AK))4(7!rosF_r;QZu -p9P_>!U0Rf!WrE))R0/>#laf%qT;iXa7oT4jo5\equ6NP>Qc1Wr;>UTJ,~> -nG`mprr;rdN!^,Hp\t0irs/57c/eBirVulr!<)orqZ$Km#5mf1oDJRbr;Qlun;7Y7!!NHK]Dh^, -dJj7BYibue#=RYQs8<6'rT\_9"9JZ+lMq&'R/?j[rr2lr&,lM'fP1Qj"9AK))4(7!rosF_r;QZu -p9P_>!U0Rf!WrE))R0/>#laf%qT;iXa7oT4jo5\equ6NP>Qc1Wr;>UTJ,~> -nG`mprr;rdN!^,Hp\t0irs/57c/eBirVulr!<)orqZ$Km#5mf1oDJRbr;Qlun;7Y7!!NHK]Dh^, -dJj7BYibue#=RYQs8<6'rT\_9"9JZ+lMq&'R/?j[rr2lr&,lM'fP1Qj"9AK))4(7!rosF_r;QZu -p9P_>!U0Rf!WrE))R0/>#laf%qT;iXa7oT4jo5\equ6NP>Qc1Wr;>UTJ,~> -n,E^ns8DYk)@Ks?rql^'lYnsmOileTpA=acrr)rurVZ[&rr)ipqs0t[h#73Jrri&')?Bm#!!E<; -Q2^a/rrMo!kl:he!!=qOjo5Yds8DrhZl];L!pTau$XWE'qu6Tps8N#trqFcV%fuh3! -n,E^ns8DYk)@Ks?rql^'lYnsmOileTpA=acrr)rurVZ[&rr)ipqs0t[h#73Jrri&')?Bm#!!E<; -Q2^a/rrMo!kl:he!!=qOjo5Yds8DrhZl];L!pTau$XWE'qu6Tps8N#trqFcV%fuh3! -n,E^ns8DYk)@Ks?rql^'lYnsmOileTpA=acrr)rurVZ[&rr)ipqs0t[h#73Jrri&')?Bm#!!E<; -Q2^a/rrMo!kl:he!!=qOjo5Yds8DrhZl];L!pTau$XWE'qu6Tps8N#trqFcV%fuh3! -nGiLe#64P;0Ea>mqYq,uRK`m%(IO%`dcg -nGiLe#64P;0Ea>mqYq,uRK`m%(IO%`dcg -nGiLe#64P;0Ea>mqYq,uRK`m%(IO%`dcg -nG`mqs8N#rhFI\ga8Z)9rt,+V&-2h5!8I>PH2[^@r;Qs"rTnV- -!Ta:b! -nG`mqs8N#rhFI\ga8Z)9rt,+V&-2h5!8I>PH2[^@r;Qs"rTnV- -!Ta:b! -nG`mqs8N#rhFI\ga8Z)9rt,+V&-2h5!8I>PH2[^@r;Qs"rTnV- -!Ta:b! -nG`jprVuosm;E.CPl:LZ+o^Ob!#6Y#0&h-hI_qOJKmGH'^B/:A-!!3?moDedes8W'#pTb&* -j8]8`*l7j&rrMo!kl:kg!.00DLl2Vb1;XXM^rr;rolEW/M!WiB'!WW92A*X!l -s8N#`rs&K&rquGf"oJDe!!NB'">I[kr;Zfr"SpGcm/?q_!<)!Ys8E3#m;W1DQN$mDs*t~> -nG`jprVuosm;E.CPl:LZ+o^Ob!#6Y#0&h-hI_qOJKmGH'^B/:A-!!3?moDedes8W'#pTb&* -j8]8`*l7j&rrMo!kl:kg!.00DLl2Vb1;XXM^rr;rolEW/M!WiB'!WW92A*X!l -s8N#`rs&K&rquGf"oJDe!!NB'">I[kr;Zfr"SpGcm/?q_!<)!Ys8E3#m;W1DQN$mDs*t~> -nG`jprVuosm;E.CPl:LZ+o^Ob!#6Y#0&h-hI_qOJKmGH'^B/:A-!!3?moDedes8W'#pTb&* -j8]8`*l7j&rrMo!kl:kg!.00DLl2Vb1;XXM^rr;rolEW/M!WiB'!WW92A*X!l -s8N#`rs&K&rquGf"oJDe!!NB'">I[kr;Zfr"SpGcm/?q_!<)!Ys8E3#m;W1DQN$mDs*t~> -li.1^T*Ga4r;QWo+o^nU&2m["6mE9K!Gf8_a7C!<2*["TIS$"p+/m&-2h6!!30)0>@GbrVlWJM'`$!"TeZ*,,tP's8W'$ -r;Q"u!p'Cb!=Domrqud(rql#.,E1d\r;QZprr)rurp'Lhrr)iT4outPro*m-~> -li.1^T*Ga4r;QWo+o^nU&2m["6mE9K!Gf8_a7C!<2*["TIS$"p+/m&-2h6!!30)0>@GbrVlWJM'`$!"TeZ*,,tP's8W'$ -r;Q"u!p'Cb!=Domrqud(rql#.,E1d\r;QZprr)rurp'Lhrr)iT4outPro*m-~> -li.1^T*Ga4r;QWo+o^nU&2m["6mE9K!Gf8_a7C!<2*["TIS$"p+/m&-2h6!!30)0>@GbrVlWJM'`$!"TeZ*,,tP's8W'$ -r;Q"u!p'Cb!=Domrqud(rql#.,E1d\r;QZprr)rurp'Lhrr)iT4outPro*m-~> -li..db7FkDm/6l-rquJsC<5Q%fXZN&,T$ss!s/W;"T\Z+! -li..db7FkDm/6l-rquJsC<5Q%fXZN&,T$ss!s/W;"T\Z+! -li..db7FkDm/6l-rquJsC<5Q%fXZN&,T$ss!s/W;"T\Z+! -lMh"G1B]2Equ7fUQqoqE8`!!<9+3m?"O -"9/&!!Tj@d#>4%UrVQQTrr`/R8cnG]&-;t8! -lMh"G1B]2Equ7fUQqoqE8`!!<9+3m?"O -"9/&!!Tj@d#>4%UrVQQTrr`/R8cnG]&-;t8! -lMh"G1B]2Equ7fUQqoqE8`!!<9+3m?"O -"9/&!!Tj@d#>4%UrVQQTrr`/R8cnG]&-;t8! -li.1gl=0l6Qi?p_rr**"rr;usrVc]tos?d_rW3N4%2UNrPfr[trqY[Jrql`qr;uoC2WXoB!<<0A -V>SjC"oeQ$pT4JY!!WH@Q1t4UroO._rU>XJ!Up*h!Xf2G1k<[AqXDdU*!?0Aqu?j$!i:-O=rp0UarWqh6"r3:#rr)iVs*t~> -li.1gl=0l6Qi?p_rr**"rr;usrVc]tos?d_rW3N4%2UNrPfr[trqY[Jrql`qr;uoC2WXoB!<<0A -V>SjC"oeQ$pT4JY!!WH@Q1t4UroO._rU>XJ!Up*h!Xf2G1k<[AqXDdU*!?0Aqu?j$!i:-O=rp0UarWqh6"r3:#rr)iVs*t~> -li.1gl=0l6Qi?p_rr**"rr;usrVc]tos?d_rW3N4%2UNrPfr[trqY[Jrql`qr;uoC2WXoB!<<0A -V>SjC"oeQ$pT4JY!!WH@Q1t4UroO._rU>XJ!Up*h!Xf2G1k<[AqXDdU*!?0Aqu?j$!i:-O=rp0UarWqh6"r3:#rr)iVs*t~> -lMh%YQNn(>o)8S,rquZkr;QWmrql]prVYSn$N^G5'0'Nug@>(>rWE,uqu-El"oeH!s6=I_!!NE) -!=j&AeGf^Nrr;V\!p0Ie!=:Ztq>UBUs8W'#r6ZA_nGj.%$Q;3Ye+W\3gR:).! -lMh%YQNn(>o)8S,rquZkr;QWmrql]prVYSn$N^G5'0'Nug@>(>rWE,uqu-El"oeH!s6=I_!!NE) -!=j&AeGf^Nrr;V\!p0Ie!=:Ztq>UBUs8W'#r6ZA_nGj.%$Q;3Ye+W\3gR:).! -lMh%YQNn(>o)8S,rquZkr;QWmrql]prVYSn$N^G5'0'Nug@>(>rWE,uqu-El"oeH!s6=I_!!NE) -!=j&AeGf^Nrr;V\!p0Ie!=:Ztq>UBUs8W'#r6ZA_nGj.%$Q;3Ye+W\3gR:).! -lMh.c\KM8Oh>[HQrr<#t!r`0!rr2rr%fGCB%0?M2(2;%irr;utrVcp!rr)inrs&K#rq>VH+B=ZSqY^0PY$;YA -!!3-#! -lMh.c\KM8Oh>[HQrr<#t!r`0!rr2rr%fGCB%0?M2(2;%irr;utrVcp!rr)inrs&K#rq>VH+B=ZSqY^0PY$;YA -!!3-#! -lMh.c\KM8Oh>[HQrr<#t!r`0!rr2rr%fGCB%0?M2(2;%irr;utrVcp!rr)inrs&K#rq>VH+B=ZSqY^0PY$;YA -!!3-#! -lMh4he4'Nb^]+31s8Mrr!WMuqrX8YcN>hp"";bS/rVc0a#lXc$gGB!5!X%Tc"9KRPr;?Qng&D6T -s8M:l!Tj@i!_'*87:!X/H&&c`"?&g9A[\E(HmDjiUQdArr2rsrVuoqrVQU# -rUcWf%VtP3ro*m-~> -lMh4he4'Nb^]+31s8Mrr!WMuqrX8YcN>hp"";bS/rVc0a#lXc$gGB!5!X%Tc"9KRPr;?Qng&D6T -s8M:l!Tj@i!_'*87:!X/H&&c`"?&g9A[\E(HmDjiUQdArr2rsrVuoqrVQU# -rUcWf%VtP3ro*m-~> -lMh4he4'Nb^]+31s8Mrr!WMuqrX8YcN>hp"";bS/rVc0a#lXc$gGB!5!X%Tc"9KRPr;?Qng&D6T -s8M:l!Tj@i!_'*87:!X/H&&c`"?&g9A[\E(HmDjiUQdArr2rsrVuoqrVQU# -rUcWf%VtP3ro*m-~> -lMh+fl#-_>P5Y@Yrqud.rr)iqrTo[b!rrB=CukQlrr2Bd$3'o&m;rp'Lhrr;uoc9VL4!rW-7":5bl:3j,/r;QWfj0`tL!<`E+!Whup -"WF<=rVlfYrrrE!h*V5ElN$qcrW!-'*2EK4rr2Tj(B4@5r9:P,5o^45!Ws?FR*=jgp\"+Hrquir -qu6iul>-J=R/HsDs*t~> -lMh+fl#-_>P5Y@Yrqud.rr)iqrTo[b!rrB=CukQlrr2Bd$3'o&m;rp'Lhrr;uoc9VL4!rW-7":5bl:3j,/r;QWfj0`tL!<`E+!Whup -"WF<=rVlfYrrrE!h*V5ElN$qcrW!-'*2EK4rr2Tj(B4@5r9:P,5o^45!Ws?FR*=jgp\"+Hrquir -qu6iul>-J=R/HsDs*t~> -lMh+fl#-_>P5Y@Yrqud.rr)iqrTo[b!rrB=CukQlrr2Bd$3'o&m;rp'Lhrr;uoc9VL4!rW-7":5bl:3j,/r;QWfj0`tL!<`E+!Whup -"WF<=rVlfYrrrE!h*V5ElN$qcrW!-'*2EK4rr2Tj(B4@5r9:P,5o^45!Ws?FR*=jgp\"+Hrquir -qu6iul>-J=R/HsDs*t~> -lMh.ho9^'r>5S?tqYq-+qu6N_XX=,L!Yo8'r;6EjnGiOfs8N<&p9>eB!s@`errE9/6f.e@rRh,R -rr)Su'*71p$3:51!tA&Mnc&Lbli/.-rVlf^HO0fZ$4R[j/m=.Nh"C[Eq![(G@3c$Z!W`<'"82]u -"ZGTDrVbjX"9/&(+63D+"?G?=rVlfhs8W'9s8Drpo$X74-5-dj";Eq7UpI4hWVQJjrVl]o"lM3? -/\qACs*t~> -lMh.ho9^'r>5S?tqYq-+qu6N_XX=,L!Yo8'r;6EjnGiOfs8N<&p9>eB!s@`errE9/6f.e@rRh,R -rr)Su'*71p$3:51!tA&Mnc&Lbli/.-rVlf^HO0fZ$4R[j/m=.Nh"C[Eq![(G@3c$Z!W`<'"82]u -"ZGTDrVbjX"9/&(+63D+"?G?=rVlfhs8W'9s8Drpo$X74-5-dj";Eq7UpI4hWVQJjrVl]o"lM3? -/\qACs*t~> -lMh.ho9^'r>5S?tqYq-+qu6N_XX=,L!Yo8'r;6EjnGiOfs8N<&p9>eB!s@`errE9/6f.e@rRh,R -rr)Su'*71p$3:51!tA&Mnc&Lbli/.-rVlf^HO0fZ$4R[j/m=.Nh"C[Eq![(G@3c$Z!W`<'"82]u -"ZGTDrVbjX"9/&(+63D+"?G?=rVlfhs8W'9s8Drpo$X74-5-dj";Eq7UpI4hWVQJjrVl]o"lM3? -/\qACs*t~> -li.=kqteP]""NU7rr2`n&,l$p.fobT&nUD-r;QZorp]pprr;utr81TY!rr1UN -"o\A[C'Fb$!<3')!!39-1n*J#lMh_#rVlcj^G%3';f.fAnG3%]rql9G]8Si[rW36(!W`<%!qlTp -'Subes8M0\"odh9#lt+l!!rZ+!"X;Qrr;rqpAZ'1s8N#trqucpr:f$-="Fme! -li.=kqteP]""NU7rr2`n&,l$p.fobT&nUD-r;QZorp]pprr;utr81TY!rr1UN -"o\A[C'Fb$!<3')!!39-1n*J#lMh_#rVlcj^G%3';f.fAnG3%]rql9G]8Si[rW36(!W`<%!qlTp -'Subes8M0\"odh9#lt+l!!rZ+!"X;Qrr;rqpAZ'1s8N#trqucpr:f$-="Fme! -li.=kqteP]""NU7rr2`n&,l$p.fobT&nUD-r;QZorp]pprr;utr81TY!rr1UN -"o\A[C'Fb$!<3')!!39-1n*J#lMh_#rVlcj^G%3';f.fAnG3%]rql9G]8Si[rW36(!W`<%!qlTp -'Subes8M0\"odh9#lt+l!!rZ+!"X;Qrr;rqpAZ'1s8N#trqucpr:f$-="Fme! -li.@lr;>\L!?8?Cs8Drprt#,,o=m'_!e-urVZWUrri8N9*#(W!!iT*"!kV\s8Muhs8N!6s8N&srqucnpYDKB&-;k5!X:a3r;HWm -qu7#lL]n91rr2rqrr1sXJ,~> -li.@lr;>\L!?8?Cs8Drprt#,,o=m'_!e-urVZWUrri8N9*#(W!!iT*"!kV\s8Muhs8N!6s8N&srqucnpYDKB&-;k5!X:a3r;HWm -qu7#lL]n91rr2rqrr1sXJ,~> -li.@lr;>\L!?8?Cs8Drprt#,,o=m'_!e-urVZWUrri8N9*#(W!!iT*"!kV\s8Muhs8N!6s8N&srqucnpYDKB&-;k5!X:a3r;HWm -qu7#lL]n91rr2rqrr1sXJ,~> -li6t`#k3]Q&9R^Hr;QWo$iT\*5Qh,i&5q9[rql`qrWiK&s8W&ss8M]k"T-e$!3P_\(]OI7rr;uss8Drrs8N#pp$12>N_U;m!r`3)% -r1S4rVl`mrs&G[;$%Z@rnd[*~> -li6t`#k3]Q&9R^Hr;QWo$iT\*5Qh,i&5q9[rql`qrWiK&s8W&ss8M]k"T-e$!3P_\(]OI7rr;uss8Drrs8N#pp$12>N_U;m!r`3)% -r1S4rVl`mrs&G[;$%Z@rnd[*~> -li6t`#k3]Q&9R^Hr;QWo$iT\*5Qh,i&5q9[rql`qrWiK&s8W&ss8M]k"T-e$!3P_\(]OI7rr;uss8Drrs8N#pp$12>N_U;m!r`3)% -r1S4rVl`mrs&G[;$%Z@rnd[*~> -lMh1is7j,:#Ya.Trql^&qT1`""9K0;e,'%?s8W'(s8N&urr<#srq69prpG(9!:'gr;QZorVZTm(]XI4qu$r:g6krVucss8N&trr;m&p#sl( -F%R>O!<`9%#m;6?rVlcqrVulrrrr57/Hdofh>`!~> -lMh1is7j,:#Ya.Trql^&qT1`""9K0;e,'%?s8W'(s8N&urr<#srq69prpG(9!:'gr;QZorVZTm(]XI4qu$r:g6krVucss8N&trr;m&p#sl( -F%R>O!<`9%#m;6?rVlcqrVulrrrr57/Hdofh>`!~> -lMh1is7j,:#Ya.Trql^&qT1`""9K0;e,'%?s8W'(s8N&urr<#srq69prpG(9!:'gr;QZorVZTm(]XI4qu$r:g6krVucss8N&trr;m&p#sl( -F%R>O!<`9%#m;6?rVlcqrVulrrrr57/Hdofh>`!~> -l2M(hqpdn8.(K3Srqud'nrs4Z":e>[r;HWlrrE&ss8W'$s8N&tr:^-orqO&H! -l2M(hqpdn8.(K3Srqud'nrs4Z":e>[r;HWlrrE&ss8W'$s8N&tr:^-orqO&H! -l2M(hqpdn8.(K3Srqud'nrs4Z":e>[r;HWlrrE&ss8W'$s8N&tr:^-orqO&H! -lMpn`#lX"3"VQRcrVl`p$hpe2!Y/#XrVZWlrqcX#rr;uqrr<#srUp0orr(kd"p*fc"U-F#rVlfS -rs/Q%rVGQ;*dQX!;uru!r`3B"tW2SGDM0DTUh^>MMR%4BO4"_)[HNH!`!~> -lMpn`#lX"3"VQRcrVl`p$hpe2!Y/#XrVZWlrqcX#rr;uqrr<#srUp0orr(kd"p*fc"U-F#rVlfS -rs/Q%rVGQ;*dQX!;uru!r`3B"tW2SGDM0DTUh^>MMR%4BO4"_)[HNH!`!~> -lMpn`#lX"3"VQRcrVl`p$hpe2!Y/#XrVZWlrqcX#rr;uqrr<#srUp0orr(kd"p*fc"U-F#rVlfS -rs/Q%rVGQ;*dQX!;uru!r`3B"tW2SGDM0DTUh^>MMR%4BO4"_)[HNH!`!~> -lMh1is8;M^((4"-rVQU%rRNn53k>+brVQQirsJVro^M;:mIBiDrV$6prr;S_(^&k""TfEnp\t0M -rsJc&o@/C6!s/K("5X"Z!WW?$!>>M8!!*-%!s/K*":PnS&dnaA!Wr9#$31).!W`?&!!**#quHg" -!Up*h!=/lmg&D$Mrr)f\s8N!&r8Cl`!s&H)l2^hc""2OrrqHF4rV?'LfsQ&p,mXJQ!W`?("UYq` -04L9dht@!JrVld)s8N#trVufD0F0PVrn[U)~> -lMh1is8;M^((4"-rVQU%rRNn53k>+brVQQirsJVro^M;:mIBiDrV$6prr;S_(^&k""TfEnp\t0M -rsJc&o@/C6!s/K("5X"Z!WW?$!>>M8!!*-%!s/K*":PnS&dnaA!Wr9#$31).!W`?&!!**#quHg" -!Up*h!=/lmg&D$Mrr)f\s8N!&r8Cl`!s&H)l2^hc""2OrrqHF4rV?'LfsQ&p,mXJQ!W`?("UYq` -04L9dht@!JrVld)s8N#trVufD0F0PVrn[U)~> -lMh1is8;M^((4"-rVQU%rRNn53k>+brVQQirsJVro^M;:mIBiDrV$6prr;S_(^&k""TfEnp\t0M -rsJc&o@/C6!s/K("5X"Z!WW?$!>>M8!!*-%!s/K*":PnS&dnaA!Wr9#$31).!W`?&!!**#quHg" -!Up*h!=/lmg&D$Mrr)f\s8N!&r8Cl`!s&H)l2^hc""2OrrqHF4rV?'LfsQ&p,mXJQ!W`?("UYq` -04L9dht@!JrVld)s8N#trVufD0F0PVrn[U)~> -lMpk_#Q)k*!?TJarqud(r9//EX8W"rrr<#srr3T0qF7fM3s8N&t -rVm9(n__0PB-mrg!o)AXFs*t~> -lMpk_#Q)k*!?TJarqud(r9//EX8W"rrr<#srr3T0qF7fM3s8N&t -rVm9(n__0PB-mrg!o)AXFs*t~> -lMpk_#Q)k*!?TJarqud(r9//EX8W"rrr<#srr3T0qF7fM3s8N&t -rVm9(n__0PB-mrg!o)AXFs*t~> -k5PYPC',*-r;QWo"T@kbDY*l+s8E#urr+2>lG7m=+pJ&L!;Y!pkCAjo?_/"t[@a -rr2lqrVZZoq -k5PYPC',*-r;QWo"T@kbDY*l+s8E#urr+2>lG7m=+pJ&L!;Y!pkCAjo?_/"t[@a -rr2lqrVZZoq -k5PYPC',*-r;QWo"T@kbDY*l+s8E#urr+2>lG7m=+pJ&L!;Y!pkCAjo?_/"t[@a -rr2lqrVZZoq -k5PY[Y6YG/li-h^1&gsrchdY?r;QTkrqu?/G9$tj!tMR`jperquourr)Hg$3'u%cRf2EgAV$,s*t~> -k5PY[Y6YG/li-h^1&gsrchdY?r;QTkrqu?/G9$tj!tMR`jperquourr)Hg$3'u%cRf2EgAV$,s*t~> -k5PY[Y6YG/li-h^1&gsrchdY?r;QTkrqu?/G9$tj!tMR`jperquourr)Hg$3'u%cRf2EgAV$,s*t~> -k5PYbh'W@Y^]+02s8E0"qu-NmrVd$!mAi;Q!W`3%*Wulb(DdYh!W`EBE8LNlrVulsrr<#sm>2>R -!pCiVEKOrqucqrr)iersAZ(nXU=!;>U:ih>`!~> -k5PYbh'W@Y^]+02s8E0"qu-NmrVd$!mAi;Q!W`3%*Wulb(DdYh!W`EBE8LNlrVulsrr<#sm>2>R -!pCiVEKOrqucqrr)iersAZ(nXU=!;>U:ih>`!~> -k5PYbh'W@Y^]+02s8E0"qu-NmrVd$!mAi;Q!W`3%*Wulb(DdYh!W`EBE8LNlrVulsrr<#sm>2>R -!pCiVEKOrqucqrr)iersAZ(nXU=!;>U:ih>`!~> -jo5MLBET'/q>C9mrr`!~> -jo5MLBET'/q>C9mrr`!~> -jo5MLBET'/q>C9mrr`!~> -jo5MWW"o_8iVWX"rr)ios8DrrrUQ^1!<`E)$S-"roDS[er;HE8Ft*Xs&8(2)rr3?)s8MuonrF%W -!WhQdrrN<'"#7Xknc''tr:I05!h(!rqtjW"oe.l*!-0(!#kt^ -WrDtqrr;usrV"6]9,nHF!Wrp(Q,Dk[r;ZQk"9&6!rq?BlrWr;9.0MNPs8MuQs*t~> -jo5MWW"o_8iVWX"rr)ios8DrrrUQ^1!<`E)$S-"roDS[er;HE8Ft*Xs&8(2)rr3?)s8MuonrF%W -!WhQdrrN<'"#7Xknc''tr:I05!h(!rqtjW"oe.l*!-0(!#kt^ -WrDtqrr;usrV"6]9,nHF!Wrp(Q,Dk[r;ZQk"9&6!rq?BlrWr;9.0MNPs8MuQs*t~> -jo5MWW"o_8iVWX"rr)ios8DrrrUQ^1!<`E)$S-"roDS[er;HE8Ft*Xs&8(2)rr3?)s8MuonrF%W -!WhQdrrN<'"#7Xknc''tr:I05!h(!rqtjW"oe.l*!-0(!#kt^ -WrDtqrr;usrV"6]9,nHF!Wrp(Q,Dk[r;ZQk"9&6!rq?BlrWr;9.0MNPs8MuQs*t~> -jo5S_bWl4P^&S-2rW3&urVuor$Mht,!s/N,'iMF-rr)cp$i]Um1'RdtR/$[ZrVlisrWW5M0*2+S -jo>GqK(f0Bp&>L!s7WQ8!!!$#!!!$"!KR3a"[(*/rr2!Y"T@=m"9Rig$ipG2!=Muerr)fps8N#t -&H2@YVI_+f$3L>>1MsJUnG3(_#ljo(rVlfprr2Wk$N0qqQj=+0l2L\[h>`!~> -jo5S_bWl4P^&S-2rW3&urVuor$Mht,!s/N,'iMF-rr)cp$i]Um1'RdtR/$[ZrVlisrWW5M0*2+S -jo>GqK(f0Bp&>L!s7WQ8!!!$#!!!$"!KR3a"[(*/rr2!Y"T@=m"9Rig$ipG2!=Muerr)fps8N#t -&H2@YVI_+f$3L>>1MsJUnG3(_#ljo(rVlfprr2Wk$N0qqQj=+0l2L\[h>`!~> -jo5S_bWl4P^&S-2rW3&urVuor$Mht,!s/N,'iMF-rr)cp$i]Um1'RdtR/$[ZrVlisrWW5M0*2+S -jo>GqK(f0Bp&>L!s7WQ8!!!$#!!!$"!KR3a"[(*/rr2!Y"T@=m"9Rig$ipG2!=Muerr)fps8N#t -&H2@YVI_+f$3L>>1MsJUnG3(_#ljo(rVlfprr2Wk$N0qqQj=+0l2L\[h>`!~> -jo5_fm<&UCDuBV7rr)ios8W'.r8MGp! -jo5_fm<&UCDuBV7rr)ios8W'.r8MGp! -jo5_fm<&UCDuBV7rr)ios8W'.r8MGp! -jo5\eppUq@3TL,tbWc6k!!ce(l2V.n!Wrm=n,<7`rr2iq)ufg8rVuiok-0+h(((0F -"t4&Sf^JV5rVlforq69urqO>H"#Jg3rr;oPs*t~> -jo5\eppUq@3TL,tbWc6k!!ce(l2V.n!Wrm=n,<7`rr2iq)ufg8rVuiok-0+h(((0F -"t4&Sf^JV5rVlforq69urqO>H"#Jg3rr;oPs*t~> -jo5\eppUq@3TL,tbWc6k!!ce(l2V.n!Wrm=n,<7`rr2iq)ufg8rVuiok-0+h(((0F -"t4&Sf^JV5rVlforq69urqO>H"#Jg3rr;oPs*t~> -jo5_frSg-H*MNB0s8;lort,/.mX,3>!YB&)r;HWnrr)flrsA]'kA^_10@^"#qu6csmunCF!!EHb -dJj+:s8W'"qWGZk\GWn"\-BkErr)lrroX4_q7\'VrW2 -jo5_frSg-H*MNB0s8;lort,/.mX,3>!YB&)r;HWnrr)flrsA]'kA^_10@^"#qu6csmunCF!!EHb -dJj+:s8W'"qWGZk\GWn"\-BkErr)lrroX4_q7\'VrW2 -jo5_frSg-H*MNB0s8;lort,/.mX,3>!YB&)r;HWnrr)flrsA]'kA^_10@^"#qu6csmunCF!!EHb -dJj+:s8W'"qWGZk\GWn"\-BkErr)lrroX4_q7\'VrW2 -jo5\es7)9X%V+l*rr2fps8E>b4ot`h2:):"rVlcsrVl]os8E<&ppVRO'q>4%r;Zfr"9%"E"6BLd -!Yp:Xs8DZk"TJB!rVlZnM#IGRroX4brT.o(!WiDf!!WN.&8CV3r;QZqrVQWprYb\6r;Q]orr)fc -_LP,s#m122)-`6:f$gt?pAYKscoqOT[Jg+&rVkXQJ,~> -jo5\es7)9X%V+l*rr2fps8E>b4ot`h2:):"rVlcsrVl]os8E<&ppVRO'q>4%r;Zfr"9%"E"6BLd -!Yp:Xs8DZk"TJB!rVlZnM#IGRroX4brT.o(!WiDf!!WN.&8CV3r;QZqrVQWprYb\6r;Q]orr)fc -_LP,s#m122)-`6:f$gt?pAYKscoqOT[Jg+&rVkXQJ,~> -jo5\es7)9X%V+l*rr2fps8E>b4ot`h2:):"rVlcsrVl]os8E<&ppVRO'q>4%r;Zfr"9%"E"6BLd -!Yp:Xs8DZk"TJB!rVlZnM#IGRroX4brT.o(!WiDf!!WN.&8CV3r;QZqrVQWprYb\6r;Q]orr)fc -_LP,s#m122)-`6:f$gt?pAYKscoqOT[Jg+&rVkXQJ,~> -jo5Sbs7sP_"Y[dmrW)oorsA\W%g)kHJc,HEr;H]pqu?Zp#Q*=J!XrH7rqud"rqufgV@qtj"T\fg -bPhG6s8W&ur;Q]hs/Gttr93bRoDAOdkPkb]\LR^_! -jo5Sbs7sP_"Y[dmrW)oorsA\W%g)kHJc,HEr;H]pqu?Zp#Q*=J!XrH7rqud"rqufgV@qtj"T\fg -bPhG6s8W&ur;Q]hs/Gttr93bRoDAOdkPkb]\LR^_! -jo5Sbs7sP_"Y[dmrW)oorsA\W%g)kHJc,HEr;H]pqu?Zp#Q*=J!XrH7rqud"rqufgV@qtj"T\fg -bPhG6s8W&ur;Q]hs/Gttr93bRoDAOdkPkb]\LR^_! -jo>A[$2ijt"qcOerr;uprsAPA! -jo>A[$2ijt"qcOerr;uprsAPA! -jo>A[$2ijt"qcOerr;uprsAPA! -jo>>Z#P4T'"Zu2Pr;6L#rq-%8'*T'qS,<6bli7"a"8qr2)X@D'!Wn&977;s8W'(r;QT8(BcY=rn.7$~> -jo>>Z#P4T'"Zu2Pr;6L#rq-%8'*T'qS,<6bli7"a"8qr2)X@D'!Wn&977;s8W'(r;QT8(BcY=rn.7$~> -jo>>Z#P4T'"Zu2Pr;6L#rq-%8'*T'qS,<6bli7"a"8qr2)X@D'!Wn&977;s8W'(r;QT8(BcY=rn.7$~> -jT#8Z#lN==!>h^4rr)`o$2:k/!Y9hVrr2lis8N!&r;Q&$!sCR@qZ$Tps8= -@d*gkrr)lrQiI$`#OmEW! -jT#8Z#lN==!>h^4rr)`o$2:k/!Y9hVrr2lis8N!&r;Q&$!sCR@qZ$Tps8= -@d*gkrr)lrQiI$`#OmEW! -jT#8Z#lN==!>h^4rr)`o$2:k/!Y9hVrr2lis8N!&r;Q&$!sCR@qZ$Tps8= -@d*gkrr)lrQiI$`#OmEW! -jSoPbs8MMF"V"i+r;6L%r;4D7!>:Fks8W&spAb*j#3K.l"Z>-8r;Zfrs8N3"qTgnq!WW8e!"&`. -! -jSoPbs8MMF"V"i+r;6L%r;4D7!>:Fks8W&spAb*j#3K.l"Z>-8r;Zfrs8N3"qTgnq!WW8e!"&`. -! -jSoPbs8MMF"V"i+r;6L%r;4D7!>:Fks8W&spAb*j#3K.l"Z>-8r;Zfrs8N3"qTgnq!WW8e!"&`. -! -jo>>Z#lXSA+U'L1rVl`ps8E2T%fm?%qu-NfrsJ`(rqahu!!YFBrVZ]prWrK%rUH*e!sJbl!"&`. -!WWR#iV`WRrg!N_rWiAeKa\%`!Wqik"Tnc:EUj%orrrAtfLuGNl2^hb#64iSZ2=S#r;HX&rq+!) -'*8.9! -jo>>Z#lXSA+U'L1rVl`ps8E2T%fm?%qu-NfrsJ`(rqahu!!YFBrVZ]prWrK%rUH*e!sJbl!"&`. -!WWR#iV`WRrg!N_rWiAeKa\%`!Wqik"Tnc:EUj%orrrAtfLuGNl2^hb#64iSZ2=S#r;HX&rq+!) -'*8.9! -jo>>Z#lXSA+U'L1rVl`ps8E2T%fm?%qu-NfrsJ`(rqahu!!YFBrVZ]prWrK%rUH*e!sJbl!"&`. -!WWR#iV`WRrg!N_rWiAeKa\%`!Wqik"Tnc:EUj%orrrAtfLuGNl2^hb#64iSZ2=S#r;HX&rq+!) -'*8.9! -jSoPbs8N#[C'P8moDJUqrr;rX6idgEo`"d\s8W''rUZNn!XD!_q>^Ko#Q=Z"g0Fg^!pTal!WW3$ -'9W%es8J8_s8E-#r6[>!!Ug!o!sC:%s8W&trq-3jrVca!rpZ6\"6TXg!>9>Ir;Q]orri>mZonKh -!?2+A"9JT*! -jSoPbs8N#[C'P8moDJUqrr;rX6idgEo`"d\s8W''rUZNn!XD!_q>^Ko#Q=Z"g0Fg^!pTal!WW3$ -'9W%es8J8_s8E-#r6[>!!Ug!o!sC:%s8W&trq-3jrVca!rpZ6\"6TXg!>9>Ir;Q]orri>mZonKh -!?2+A"9JT*! -jSoPbs8N#[C'P8moDJUqrr;rX6idgEo`"d\s8W''rUZNn!XD!_q>^Ko#Q=Z"g0Fg^!pTal!WW3$ -'9W%es8J8_s8E-#r6[>!!Ug!o!sC:%s8W&trq-3jrVca!rpZ6\"6TXg!>9>Ir;Q]orri>mZonKh -!?2+A"9JT*! -i;XPbV]>mug&:sNrVufpr9f1A#ufj_rq-3trVl`I)55g]N0fDg@~> -i;XPbV]>mug&:sNrVufpr9f1A#ufj_rq-3trVl`I)55g]N0fDg@~> -i;XPbV]>mug&:sNrVufpr9f1A#ufj_rq-3trVl`I)55g]N0fDg@~> -i;XSli`-!kL]%,Ks8DrprqO5\"=CbZrquHh$NC"kPlh!f'pJUqpAb0k!pbXRj8]>lAEWsjr/q!_ -r74UG!sA#m$3:,-"ZbB;rVulqpAYO!s8W)tr8D5n!!<8e!<3-&,GG#3ru1h2cq"3="W'mi_s7-r -l,&Wk/e7s`!s0F'lL4`[rVkk^!>:"Ys8N#Ms*t~> -i;XSli`-!kL]%,Ks8DrprqO5\"=CbZrquHh$NC"kPlh!f'pJUqpAb0k!pbXRj8]>lAEWsjr/q!_ -r74UG!sA#m$3:,-"ZbB;rVulqpAYO!s8W)tr8D5n!!<8e!<3-&,GG#3ru1h2cq"3="W'mi_s7-r -l,&Wk/e7s`!s0F'lL4`[rVkk^!>:"Ys8N#Ms*t~> -i;XSli`-!kL]%,Ks8DrprqO5\"=CbZrquHh$NC"kPlh!f'pJUqpAb0k!pbXRj8]>lAEWsjr/q!_ -r74UG!sA#m$3:,-"ZbB;rVulqpAYO!s8W)tr8D5n!!<8e!<3-&,GG#3ru1h2cq"3="W'mi_s7-r -l,&Wk/e7s`!s0F'lL4`[rVkk^!>:"Ys8N#Ms*t~> -hu -hu -hu -i;XSlr80:4*Lcd%r;Zcorr2`4-NbBRmJZbY$iK@k2$*d[&8LY4rq69orVuPo.-1F4!X:[/r;MfX -"T@Il"p48o#m()-!!l0Kr;Q]frsAZ(rqO]!"9AQ+kl:hk44=*,r;Rc9n=L^%"Y$>@s8Dusr;Z`p -s8Df_X[Wd&!XCO;nG`jojD+r0B)DW-s8CUMJ,~> -i;XSlr80:4*Lcd%r;Zcorr2`4-NbBRmJZbY$iK@k2$*d[&8LY4rq69orVuPo.-1F4!X:[/r;MfX -"T@Il"p48o#m()-!!l0Kr;Q]frsAZ(rqO]!"9AQ+kl:hk44=*,r;Rc9n=L^%"Y$>@s8Dusr;Z`p -s8Df_X[Wd&!XCO;nG`jojD+r0B)DW-s8CUMJ,~> -i;XSlr80:4*Lcd%r;Zcorr2`4-NbBRmJZbY$iK@k2$*d[&8LY4rq69orVuPo.-1F4!X:[/r;MfX -"T@Il"p48o#m()-!!l0Kr;Q]frsAZ(rqO]!"9AQ+kl:hk44=*,r;Rc9n=L^%"Y$>@s8Dusr;Z`p -s8Df_X[Wd&!XCO;nG`jojD+r0B)DW-s8CUMJ,~> -hu=Mln;IY[Mb -!YB/.OT,L_rqF,M!q-*o!rr?')4^X(o)B$qr8DW%!W`E,!p]gi"!aRrrr/0.Kh*,rr)rsrn.7$~> -hu=Mln;IY[Mb -!YB/.OT,L_rqF,M!q-*o!rr?')4^X(o)B$qr8DW%!W`E,!p]gi"!aRrrr/0.Kh*,rr)rsrn.7$~> -hu=Mln;IY[Mb -!YB/.OT,L_rqF,M!q-*o!rr?')4^X(o)B$qr8DW%!W`E,!p]gi"!aRrrr/0.Kh*,rr)rsrn.7$~> -hu=&^pr58r*NAr8r;QZp./_I`"p?-3f'N))q>'m[mFedD'a"LUEnrr&/_$N9u&l[]WJ!WiH)oDejlrW!!*8au`Yp&>9rrUH6o! -hu=&^pr58r*NAr8r;QZp./_I`"p?-3f'N))q>'m[mFedD'a"LUEnrr&/_$N9u&l[]WJ!WiH)oDejlrW!!*8au`Yp&>9rrUH6o! -hu=&^pr58r*NAr8r;QZp./_I`"p?-3f'N))q>'m[mFedD'a"LUEnrr&/_$N9u&l[]WJ!WiH)oDejlrW!!*8au`Yp&>9rrUH6o! -i;X)^rVQ#4#msN#rqu]o-hjnt!s/ipK;lf2ahjs-8.kn'!WiKAC[M*"qt&suVhTB6q#:9krVZX! -pU;^T!WiDg!<3'*!X1*rr;HWnrg*Qkrqu`ldn^)I!<<5k!!NBAWVQJkpAY?rs7aAX!WhWf$ipD0 -!s&Wjh>[EPrr;us#Q*1G! -i;X)^rVQ#4#msN#rqu]o-hjnt!s/ipK;lf2ahjs-8.kn'!WiKAC[M*"qt&suVhTB6q#:9krVZX! -pU;^T!WiDg!<3'*!X1*rr;HWnrg*Qkrqu`ldn^)I!<<5k!!NBAWVQJkpAY?rs7aAX!WhWf$ipD0 -!s&Wjh>[EPrr;us#Q*1G! -i;X)^rVQ#4#msN#rqu]o-hjnt!s/ipK;lf2ahjs-8.kn'!WiKAC[M*"qt&suVhTB6q#:9krVZX! -pU;^T!WiDg!<3'*!X1*rr;HWnrg*Qkrqu`ldn^)I!<<5k!!NBAWVQJkpAY?rs7aAX!WhWf$ipD0 -!s&Wjh>[EPrr;us#Q*1G! -hu=)`rVFJY"!P5Prr)ips!7U6SKA(?.o/Trqud" -rp>dW! -hu=)`rVFJY"!P5Prr)ips!7U6SKA(?.o/Trqud" -rp>dW! -hu=)`rVFJY"!P5Prr)ips!7U6SKA(?.o/Trqud" -rp>dW! -i;X2ar;Z``Gm+X^k5G8Us!Rg:W^%$r!!*'$!s/H(!s&H*'L%cUr;Q`rqrOGM*!H?TFRT2-rVl]o -"R0;$!!2BcrrEB-!^Ko#5>qf![+TCdf4g~> -i;X2ar;Z``Gm+X^k5G8Us!Rg:W^%$r!!*'$!s/H(!s&H*'L%cUr;Q`rqrOGM*!H?TFRT2-rVl]o -"R0;$!!2BcrrEB-!^Ko#5>qf![+TCdf4g~> -i;X2ar;Z``Gm+X^k5G8Us!Rg:W^%$r!!*'$!s/H(!s&H*'L%cUr;Q`rqrOGM*!H?TFRT2-rVl]o -"R0;$!!2BcrrEB-!^Ko#5>qf![+TCdf4g~> -hu=)`r;HH.-j1m!qu6Tns![mFr:e9D+q=k^"9el."U#/E/U,;2r;?Qlrr;rnhNTf%"!=62s8Drp -rri;q`BXRk!"/i/!<`E++//B,rVi/`$NBr%rVuZ85m7;kmf3Im#=@JMp\tHrl&?5U!!;HdrW*04 - -hu=)`r;HH.-j1m!qu6Tns![mFr:e9D+q=k^"9el."U#/E/U,;2r;?Qlrr;rnhNTf%"!=62s8Drp -rri;q`BXRk!"/i/!<`E++//B,rVi/`$NBr%rVuZ85m7;kmf3Im#=@JMp\tHrl&?5U!!;HdrW*04 - -hu=)`r;HH.-j1m!qu6Tns![mFr:e9D+q=k^"9el."U#/E/U,;2r;?Qlrr;rnhNTf%"!=62s8Drp -rri;q`BXRk!"/i/!<`E++//B,rVi/`$NBr%rVuZ85m7;kmf3Im#=@JMp\tHrl&?5U!!;HdrW*04 - -hu>&&s8Do]GmOj^li-q`s8W)urVlfpnA0-40I%DK(EkJ(JBmlfs8Dors8N&s$h_5#":-lpqZ$Qp -rr2rtrW`#$.09JL!UTjf!<`<%"9gKcp\k$i!]*=5L2rp]porqb(e!"30$rr2co$N9u%qT:;k,H1M= -df4g~> -hu>&&s8Do]GmOj^li-q`s8W)urVlfpnA0-40I%DK(EkJ(JBmlfs8Dors8N&s$h_5#":-lpqZ$Qp -rr2rtrW`#$.09JL!UTjf!<`<%"9gKcp\k$i!]*=5L2rp]porqb(e!"30$rr2co$N9u%qT:;k,H1M= -df4g~> -hu>&&s8Do]GmOj^li-q`s8W)urVlfpnA0-40I%DK(EkJ(JBmlfs8Dors8N&s$h_5#":-lpqZ$Qp -rr2rtrW`#$.09JL!UTjf!<`<%"9gKcp\k$i!]*=5L2rp]porqb(e!"30$rr2co$N9u%qT:;k,H1M= -df4g~> -g]%TV_CYg1[J^%&rVlforsSi%iPMU`Pa8Aej8ScP)ufg8p9Z%H#u91OrVlcpr;QWnr:#UY!rVliprr/5`#la.9#m120!rX-j'GM!Whcj%06P3 -!<<0*/#Dt=rVlcnrWiB"rT%c.GP:J)$2i*k!=W?&s8N#ps8W!'rp"k3$ -g]%TV_CYg1[J^%&rVlforsSi%iPMU`Pa8Aej8ScP)ufg8p9Z%H#u91OrVlcpr;QWnr:#UY!rVliprr/5`#la.9#m120!rX-j'GM!Whcj%06P3 -!<<0*/#Dt=rVlcnrWiB"rT%c.GP:J)$2i*k!=W?&s8N#ps8W!'rp"k3$ -g]%TV_CYg1[J^%&rVlforsSi%iPMU`Pa8Aej8ScP)ufg8p9Z%H#u91OrVlcpr;QWnr:#UY!rVliprr/5`#la.9#m120!rX-j'GM!Whcj%06P3 -!<<0*/#Dt=rVlcnrWiB"rT%c.GP:J)$2i*k!=W?&s8N#ps8W!'rp"k3$ -gA_QJG6\L^kkkAYr;Q]mrr`6!s8W)t"98B#r:^0jrYbb6l$j9F%rLP/r;6Kms8Mrpr7u3"!<`E( -l2V.m!=Mrgqu6Tmrr/5`$i^"M9*PFu!!3-$!VZTn!>>PNIdR.3rVlisqsCC.!WW3%! -gA_QJG6\L^kkkAYr;Q]mrr`6!s8W)t"98B#r:^0jrYbb6l$j9F%rLP/r;6Kms8Mrpr7u3"!<`E( -l2V.m!=Mrgqu6Tmrr/5`$i^"M9*PFu!!3-$!VZTn!>>PNIdR.3rVlisqsCC.!WW3%! -gA_QJG6\L^kkkAYr;Q]mrr`6!s8W)t"98B#r:^0jrYbb6l$j9F%rLP/r;6Kms8Mrpr7u3"!<`E( -l2V.m!=Mrgqu6Tmrr/5`$i^"M9*PFu!!3-$!VZTn!>>PNIdR.3rVlisqsCC.!WW3%! -gA_NXc6!ZII&rVulqr;R0(rT.l%#uU3kr;HWDs*t~> -gA_NXc6!ZII&rVulqr;R0(rT.l%#uU3kr;HWDs*t~> -gA_NXc6!ZII&rVulqr;R0(rT.l%#uU3kr;HWDs*t~> -gA_NYl?3F@;rRcTrquZn!<2utrr*'!r;ZcqpAY-lrV[N*[Mo8O0=1KQrr)iqrVQNkp:i0`!=MrVZZm -s8N#qo=@\$o)A[enal_Ync'!rpsM8+"Z!snrr;uprsJc"\0M5$Vu$;irmLgs~> -gA_NYl?3F@;rRcTrquZn!<2utrr*'!r;ZcqpAY-lrV[N*[Mo8O0=1KQrr)iqrVQNkp:i0`!=MrVZZm -s8N#qo=@\$o)A[enal_Ync'!rpsM8+"Z!snrr;uprsJc"\0M5$Vu$;irmLgs~> -gA_NYl?3F@;rRcTrquZn!<2utrr*'!r;ZcqpAY-lrV[N*[Mo8O0=1KQrr)iqrVQNkp:i0`!=MrVZZm -s8N#qo=@\$o)A[enal_Ync'!rpsM8+"Z!snrr;uprsJc"\0M5$Vu$;irmLgs~> -g&DET`Ado6R/-^Yrr2iqrVlcqs8E'!r:U(.rr)ioqWr_C!X1L4r;?Qms8;lrrVlMq0*24?!"&`, -!@(4!rrDr!<3'0!W`9%)4(!nrV*oP! -g&DET`Ado6R/-^Yrr2iqrVlcqs8E'!r:U(.rr)ioqWr_C!X1L4r;?Qms8;lrrVlMq0*24?!"&`, -!@(4!rrDr!<3'0!W`9%)4(!nrV*oP! -g&DET`Ado6R/-^Yrr2iqrVlcqs8E'!r:U(.rr)ioqWr_C!X1L4r;?Qms8;lrrVlMq0*24?!"&`, -!@(4!rrDr!<3'0!W`9%)4(!nrV*oP! -g&Da/%*j5PCrr)lsrX/W'o;33)-+O!T -rm:[q~> -g&Da/%*j5PCrr)lsrX/W'o;33)-+O!T -rm:[q~> -g&Da/%*j5PCrr)lsrX/W'o;33)-+O!T -rm:[q~> -gA_Q[rVY2$!u6FZqu6TVrt,/+rr2f\\3pN%!Ws6fmem(]rri>ul[g&S!Wi?&!UB^j!'/ -gA_Q[rVY2$!u6FZqu6TVrt,/+rr2f\\3pN%!Ws6fmem(]rri>ul[g&S!Wi?&!UB^j!'/ -gA_Q[rVY2$!u6FZqu6TVrt,/+rr2f\\3pN%!Ws6fmem(]rri>ul[g&S!Wi?&!UB^j!'/ -gA_Q[qu6)K%gG&5qY^?Ss8N!,q;@5`!s8N)!t-`ir;QWo$NBu&qquQ0!rrB)l2^hc!sBm;l2:LG -rs&JoTHaI=!V$-s!U9TG7t#H!!<6(!!3'#"s/frrVlfrrr*B*oZ9l3! -gA_Q[qu6)K%gG&5qY^?Ss8N!,q;@5`!s8N)!t-`ir;QWo$NBu&qquQ0!rrB)l2^hc!sBm;l2:LG -rs&JoTHaI=!V$-s!U9TG7t#H!!<6(!!3'#"s/frrVlfrrr*B*oZ9l3! -gA_Q[qu6)K%gG&5qY^?Ss8N!,q;@5`!s8N)!t-`ir;QWo$NBu&qquQ0!rrB)l2^hc!sBm;l2:LG -rs&JoTHaI=!V$-s!U9TG7t#H!!<6(!!3'#"s/frrVlfrrr*B*oZ9l3! -gAh3P#lXSK:'D5Ho`!qO&H;Y"c>XF!!IdtY^J,~> -gAh3P#lXSK:'D5Ho`!qO&H;Y"c>XF!!IdtY^J,~> -gAh3P#lXSK:'D5Ho`!qO&H;Y"c>XF!!IdtY^J,~> -gA_Q[r;ZcgW#>[U]_hZhrt#%nX$-^i! -gA_Q[r;ZcgW#>[U]_hZhrt#%nX$-^i! -gA_Q[r;ZcgW#>[U]_hZhrt#%nX$-^i! -gAh3P$2jf#j';cq>N5VErtPJ/iKktq!W`H<5HF/Lrr)iqrVlfps8N!&s8Mi?<1!Zmp+rVlD]* -gAh3P$2jf#j';cq>N5VErtPJ/iKktq!W`H<5HF/Lrr)iqrVlfps8N!&s8Mi?<1!Zmp+rVlD]* -gAh3P$2jf#j';cq>N5VErtPJ/iKktq!W`H<5HF/Lrr)iqrVlfps8N!&s8Mi?<1!Zmp+rVlD]* -ec-'Ta!Cg)O8&YPrVl`op](0j*WQ-mg]6!XBuri;W`Ur;Zcpo&Aa/rVlforsJc(gcPoG -!WrK)!pTam!=`D`qYgHmrr)bbs8W')qu6E=;[3:(! -ec-'Ta!Cg)O8&YPrVl`op](0j*WQ-mg]6!XBuri;W`Ur;Zcpo&Aa/rVlforsJc(gcPoG -!WrK)!pTam!=`D`qYgHmrr)bbs8W')qu6E=;[3:(! -ec-'Ta!Cg)O8&YPrVl`op](0j*WQ-mg]6!XBuri;W`Ur;Zcpo&Aa/rVlforsJc(gcPoG -!WrK)!pTam!=`D`qYgHmrr)bbs8W')qu6E=;[3:(! -ec-'Wl?j$E3RRa#rqufqpAY-krr*0$rr2f[Yt5)t!YPr%R-t"Qs8;imoA-*FET[)rrqud(rr)T( -6jWns!WiH)lMq.k!tJ>Sq#:9lr;chfs8W'&r;QWh^buDr!q?6r$sM<^r;>Vs&H2b-!!r]-!<`E* -'P62#qu?]o(uouK!X0X(n,<7br:Rfm$j6S5'4fekrVZQm$NBu#r:%hfqu$HmqYpm#n -ec-'Wl?j$E3RRa#rqufqpAY-krr*0$rr2f[Yt5)t!YPr%R-t"Qs8;imoA-*FET[)rrqud(rr)T( -6jWns!WiH)lMq.k!tJ>Sq#:9lr;chfs8W'&r;QWh^buDr!q?6r$sM<^r;>Vs&H2b-!!r]-!<`E* -'P62#qu?]o(uouK!X0X(n,<7br:Rfm$j6S5'4fekrVZQm$NBu#r:%hfqu$HmqYpm#n -ec-'Wl?j$E3RRa#rqufqpAY-krr*0$rr2f[Yt5)t!YPr%R-t"Qs8;imoA-*FET[)rrqud(rr)T( -6jWns!WiH)lMq.k!tJ>Sq#:9lr;chfs8W'&r;QWh^buDr!q?6r$sM<^r;>Vs&H2b-!!r]-!<`E* -'P62#qu?]o(uouK!X0X(n,<7br:Rfm$j6S5'4fekrVZQm$NBu#r:%hfqu$HmqYpm#n -eGfmPbs_^ED"%?$r;?6f+T;<=s8Mukg5-mS!o_!_0urVi>err*3$s8DVu2[KNdnGipt&om:;rVPDa%g2t2!!**&rW*0))en1/ -rVZ[8rr)2>'*/1QHL:\1rr)inpW-JF"9SZ8@*ncLrVQTurqucmrVZWnqu7$&pVSih&9RC -eGfmPbs_^ED"%?$r;?6f+T;<=s8Mukg5-mS!o_!_0urVi>err*3$s8DVu2[KNdnGipt&om:;rVPDa%g2t2!!**&rW*0))en1/ -rVZ[8rr)2>'*/1QHL:\1rr)inpW-JF"9SZ8@*ncLrVQTurqucmrVZWnqu7$&pVSih&9RC -eGfmPbs_^ED"%?$r;?6f+T;<=s8Mukg5-mS!o_!_0urVi>err*3$s8DVu2[KNdnGipt&om:;rVPDa%g2t2!!**&rW*0))en1/ -rVZ[8rr)2>'*/1QHL:\1rr)inpW-JF"9SZ8@*ncLrVQTurqucmrVZWnqu7$&pVSih&9RC -eGfmTo;N6'-E?n?rVlNjrr2rr*W5HC@h/VB!=:E7iV`ZPrr2iom%H0!sU<=mJ["_S,Wins8N#qr:7!E"p+2n$3D'3oDSXad9R(\qZ$p'!!<6**IHZB -rVHO4qr28p!X_o\qu6QnrVulsqq+^L!!**.<6P.8rrN,trr)usrr)ir!<2or#6!Ou#mE3;rVat? -J,~> -eGfmTo;N6'-E?n?rVlNjrr2rr*W5HC@h/VB!=:E7iV`ZPrr2iom%H0!sU<=mJ["_S,Wins8N#qr:7!E"p+2n$3D'3oDSXad9R(\qZ$p'!!<6**IHZB -rVHO4qr28p!X_o\qu6QnrVulsqq+^L!!**.<6P.8rrN,trr)usrr)ir!<2or#6!Ou#mE3;rVat? -J,~> -eGfmTo;N6'-E?n?rVlNjrr2rr*W5HC@h/VB!=:E7iV`ZPrr2iom%H0!sU<=mJ["_S,Wins8N#qr:7!E"p+2n$3D'3oDSXad9R(\qZ$p'!!<6**IHZB -rVHO4qr28p!X_o\qu6QnrVulsqq+^L!!**.<6P.8rrN,trr)usrr)ir!<2or#6!Ou#mE3;rVat? -J,~> -eGfpUrT.5f$;]4Mr;Q]hrtGD/s7tcW3=#Ze!u!o*o)AXdrr2op$i/o*N'A'^!Z-COrVca%rr;or -rV+T@%K6Fp!"/f/!$Msi'!=/f3,C\qU -rr2los8W',pq83\*O5M?rr2iqr;Q[&m?A@e!s&H1:W<)+rsJc(s8N#rrr)lrrql^&o; -eGfpUrT.5f$;]4Mr;Q]hrtGD/s7tcW3=#Ze!u!o*o)AXdrr2op$i/o*N'A'^!Z-COrVca%rr;or -rV+T@%K6Fp!"/f/!$Msi'!=/f3,C\qU -rr2los8W',pq83\*O5M?rr2iqr;Q[&m?A@e!s&H1:W<)+rsJc(s8N#rrr)lrrql^&o; -eGfpUrT.5f$;]4Mr;Q]hrtGD/s7tcW3=#Ze!u!o*o)AXdrr2op$i/o*N'A'^!Z-COrVca%rr;or -rV+T@%K6Fp!"/f/!$Msi'!=/f3,C\qU -rr2los8W',pq83\*O5M?rr2iqr;Q[&m?A@e!s&H1:W<)+rsJc(s8N#rrr)lrrql^&o; -eGfgRrV+,a!=sMOq#:Bns8Dp2r:JnV[rCpAY$jrr)fqrr;]%1'%La"T\T06b2sjs8DuqrW<&trr2p0 -rr;uts8:;)!=W>qrr)irs8L:CJ,~> -eGfgRrV+,a!=sMOq#:Bns8Dp2r:JnV[rCpAY$jrr)fqrr;]%1'%La"T\T06b2sjs8DuqrW<&trr2p0 -rr;uts8:;)!=W>qrr)irs8L:CJ,~> -eGfgRrV+,a!=sMOq#:Bns8Dp2r:JnV[rCpAY$jrr)fqrr;]%1'%La"T\T06b2sjs8DuqrW<&trr2p0 -rr;uts8:;)!=W>qrr)irs8L:CJ,~> -eGoRJ#lO(O&d0_uqY^6j(B"13rVQ'MiMf6R!s8T71Qh#%rr)iqp\tU!n?t:\!uldZrVlZn$i^"P -D%HdM!WW6'!UKdk! -eGoRJ#lO(O&d0_uqY^6j(B"13rVQ'MiMf6R!s8T71Qh#%rr)iqp\tU!n?t:\!uldZrVlZn$i^"P -D%HdM!WW6'!UKdk! -eGoRJ#lO(O&d0_uqY^6j(B"13rVQ'MiMf6R!s8T71Qh#%rr)iqp\tU!n?t:\!uldZrVlZn$i^"P -D%HdM!WW6'!UKdk! -e,KaQs8CkT"Ue&WrqcZorXA7]F\3#C"9AWB?,ld@r;lfpp&>Bup;/ck!Z?j[qu6Nn$i^&&r9AAG -"T\],!pTaj!<`H)&nfDZrr**$rr<#trh9AlrA&c^Hot"W)LI^,l]'! -e,KaQs8CkT"Ue&WrqcZorXA7]F\3#C"9AWB?,ld@r;lfpp&>Bup;/ck!Z?j[qu6Nn$i^&&r9AAG -"T\],!pTaj!<`H)&nfDZrr**$rr<#trh9AlrA&c^Hot"W)LI^,l]'! -e,KaQs8CkT"Ue&WrqcZorXA7]F\3#C"9AWB?,ld@r;lfpp&>Bup;/ck!Z?j[qu6Nn$i^&&r9AAG -"T\],!pTaj!<`H)&nfDZrr**$rr<#trh9AlrA&c^Hot"W)LI^,l]'! -eGfpUrVZZh[OM@pK(T$>s8N!1rUZO)!W`9&#q:;Yr;Zcqr;QZfrsJc'nXgd&"XfQ(r;6Nor -eGfpUrVZZh[OM@pK(T$>s8N!1rUZO)!W`9&#q:;Yr;Zcqr;QZfrsJc'nXgd&"XfQ(r;6Nor -eGfpUrVZZh[OM@pK(T$>s8N!1rUZO)!W`9&#q:;Yr;Zcqr;QZfrsJc'nXgd&"XfQ(r;6Nor -eGfpTs8N#rlA?;[,eEgLrtYP3s8Mr[JeJ4e$ot?[rr)ios8MurpAYR#qu-KYGn0oX+.DTrr;R-& -rr;uqm\DKC!WqZfrrEH.!<<-$"W1t$nG]!Y$NBe[cLCf2pV]o@o`5!n'*&+7!YB"urVlcnjFoU0 -eG9"?rUp1:rr;rrrVccrrVlisrVPPu*><&?qYpKjdn'uO!%h~> -eGfpTs8N#rlA?;[,eEgLrtYP3s8Mr[JeJ4e$ot?[rr)ios8MurpAYR#qu-KYGn0oX+.DTrr;R-& -rr;uqm\DKC!WqZfrrEH.!<<-$"W1t$nG]!Y$NBe[cLCf2pV]o@o`5!n'*&+7!YB"urVlcnjFoU0 -eG9"?rUp1:rr;rrrVccrrVlisrVPPu*><&?qYpKjdn'uO!%h~> -eGfpTs8N#rlA?;[,eEgLrtYP3s8Mr[JeJ4e$ot?[rr)ios8MurpAYR#qu-KYGn0oX+.DTrr;R-& -rr;uqm\DKC!WqZfrrEH.!<<-$"W1t$nG]!Y$NBe[cLCf2pV]o@o`5!n'*&+7!YB"urVlcnjFoU0 -eG9"?rUp1:rr;rrrVccrrVlisrVPPu*><&?qYpKjdn'uO!%h~> -e,KgTrVl]lgfajf:=T:As8W'.rVZZmhHC-i7(<*mrr<#trr;osrq?@"rqlZjejoiD"=9Q/rVm9) -r;Zcqs8MZ#8IGUc!<3*/!s&B&!!**,5GI?:rh09#rUI^A5,.QGr;>,[&H_Y+!WiB'rW3QEEpET& -rVc?4n,N=brquKi!WN&rrt#)-rr<#trqucolAelrrVQTn$i%e9"TSN++J8B,s8N#prsJbpSK%_F -K(]-@rQ"qg~> -e,KgTrVl]lgfajf:=T:As8W'.rVZZmhHC-i7(<*mrr<#trr;osrq?@"rqlZjejoiD"=9Q/rVm9) -r;Zcqs8MZ#8IGUc!<3*/!s&B&!!**,5GI?:rh09#rUI^A5,.QGr;>,[&H_Y+!WiB'rW3QEEpET& -rVc?4n,N=brquKi!WN&rrt#)-rr<#trqucolAelrrVQTn$i%e9"TSN++J8B,s8N#prsJbpSK%_F -K(]-@rQ"qg~> -e,KgTrVl]lgfajf:=T:As8W'.rVZZmhHC-i7(<*mrr<#trr;osrq?@"rqlZjejoiD"=9Q/rVm9) -r;Zcqs8MZ#8IGUc!<3*/!s&B&!!**,5GI?:rh09#rUI^A5,.QGr;>,[&H_Y+!WiB'rW3QEEpET& -rVc?4n,N=brquKi!WN&rrt#)-rr<#trqucolAelrrVQTn$i%e9"TSN++J8B,s8N#prsJbpSK%_F -K(]-@rQ"qg~> -df1NE\GH7)qYpQpo`# -df1NE\GH7)qYpQpo`# -df1NE\GH7)qYpQpo`# -ci4CPr9]IZ"m191!=C;hebf7Cr;?R%rr)fmie8NY!rrA_ -!!NKBGJW\DrVciqrVlf)ruqC?rql]nqtf?R9F:h$!4TY^'I-^e.rrN)trqm,\?NLEj^&.g-rr0t -ci4CPr9]IZ"m191!=C;hebf7Cr;?R%rr)fmie8NY!rrA_ -!!NKBGJW\DrVciqrVlf)ruqC?rql]nqtf?R9F:h$!4TY^'I-^e.rrN)trqm,\?NLEj^&.g-rr0t -ci4CPr9]IZ"m191!=C;hebf7Cr;?R%rr)fmie8NY!rrA_ -!!NKBGJW\DrVciqrVlf)ruqC?rql]nqtf?R9F:h$!4TY^'I-^e.rrN)trqm,\?NLEj^&.g-rr0t -cMn4Mqq>?]#=-N1rVQWprWE,hao:T*&,l1LB*n_A!t.Grf]W21rVQU%rVlcprp?+.$j$Om!"f55 -!=L`7d-^Z-r;HZps8W&s\Gm`Nrr;rqp$'G2,6@oI! -cMn4Mqq>?]#=-N1rVQWprWE,hao:T*&,l1LB*n_A!t.Grf]W21rVQU%rVlcprp?+.$j$Om!"f55 -!=L`7d-^Z-r;HZps8W&s\Gm`Nrr;rqp$'G2,6@oI! -cMn4Mqq>?]#=-N1rVQWprWE,hao:T*&,l1LB*n_A!t.Grf]W21rVQU%rVlcprp?+.$j$Om!"f55 -!=L`7d-^Z-r;HZps8W&s\Gm`Nrr;rqp$'G2,6@oI! -cN!qD#lDq%":\Yjrr)`o"TA?"rVPm["8L;H#Q=`.%nOtCs8Mrqrqud(rql]mrr2Z5=r%5AjT,8] -#6>)WGf/_?rVlf(s8W$(qtTBbEYno[!Wr?%rrN]5&ST\irVlZLBHI?X! -cN!qD#lDq%":\Yjrr)`o"TA?"rVPm["8L;H#Q=`.%nOtCs8Mrqrqud(rql]mrr2Z5=r%5AjT,8] -#6>)WGf/_?rVlf(s8W$(qtTBbEYno[!Wr?%rrN]5&ST\irVlZLBHI?X! -cN!qD#lDq%":\Yjrr)`o"TA?"rVPm["8L;H#Q=`.%nOtCs8Mrqrqud(rql]mrr2Z5=r%5AjT,8] -#6>)WGf/_?rVlf(s8W$(qtTBbEYno[!Wr?%rrN]5&ST\irVlZLBHI?X! -ci -ci -ci -cMn7Ns8DlZGn1$(ZhF@t!WN,srpTjtrr<#ocs@%]!rqZ!4WF$SL! -cMn7Ns8DlZGn1$(ZhF@t!WN,srpTjtrr<#ocs@%]!rqZ!4WF$SL! -cMn7Ns8DlZGn1$(ZhF@t!WN,srpTjtrr<#ocs@%]!rqZ!4WF$SL! -b5VnJg/8._5fER"rVl`mli.Oqqu$6e)!!;]k&Ha;0j7rWQr8j(s$ipA/ -!s&K#!"]/4!! -b5VnJg/8._5fER"rVl`mli.Oqqu$6e)!!;]k&Ha;0j7rWQr8j(s$ipA/ -!s&K#!"]/4!! -b5VnJg/8._5fER"rVl`mli.Oqqu$6e)!!;]k&Ha;0j7rWQr8j(s$ipA/ -!s&K#!"]/4!! -ao;V@].F0s>N>V[r;ci_rs\l(pX!FZ"9AW==P!ELrW)ocs8W)ursSbiWCIX+!-*o_\[grr)j)r:I9 -ao;V@].F0s>N>V[r;ci_rs\l(pX!FZ"9AW==P!ELrW)ocs8W)ursSbiWCIX+!-*o_\[grr)j)r:I9 -ao;V@].F0s>N>V[r;ci_rs\l(pX!FZ"9AW==P!ELrW)ocs8W)ursSbiWCIX+!-*o_\[grr)j)r:I9 -ao;bInt7'+&Us*GrVZW[rt,2)d8pJR![NTrVld3rVlirs8D][gV&\W,6IoH!W`<'!<A_k!rrH#!"]/4!<`K."X& -ao;bInt7'+&Us*GrVZW[rt,2)d8pJR![NTrVld3rVlirs8D][gV&\W,6IoH!W`<'!<A_k!rrH#!"]/4!<`K."X& -ao;bInt7'+&Us*GrVZW[rt,2)d8pJR![NTrVld3rVlirs8D][gV&\W,6IoH!W`<'!<A_k!rrH#!"]/4!<`K."X& -ao;bIqW<)4"='K/r;QZ\rt"qQA-W,9";Yn2qu$Hns8;?c!<2uts8EB(r;5uh=VhAH"9ITar;dH3 -!\Dls8Mupq=jOLjjUD\9IgJO!!*'"!W`<%!s7ok%g)h7(MCkYqu$Hg -e;,L`"oA92!s/N)!WrK*&5BFnp\asgrp'Lgrr;rrrqkp=rr2fps8N&u$i87P#6Q3Kq#:9krk\Vb~> -ao;bIqW<)4"='K/r;QZ\rt"qQA-W,9";Yn2qu$Hns8;?c!<2uts8EB(r;5uh=VhAH"9ITar;dH3 -!\Dls8Mupq=jOLjjUD\9IgJO!!*'"!W`<%!s7ok%g)h7(MCkYqu$Hg -e;,L`"oA92!s/N)!WrK*&5BFnp\asgrp'Lgrr;rrrqkp=rr2fps8N&u$i87P#6Q3Kq#:9krk\Vb~> -ao;bIqW<)4"='K/r;QZ\rt"qQA-W,9";Yn2qu$Hns8;?c!<2uts8EB(r;5uh=VhAH"9ITar;dH3 -!\Dls8Mupq=jOLjjUD\9IgJO!!*'"!W`<%!s7ok%g)h7(MCkYqu$Hg -e;,L`"oA92!s/N)!WrK*&5BFnp\asgrp'Lgrr;rrrqkp=rr2fps8N&u$i87P#6Q3Kq#:9krk\Vb~> -ao;_Is8LtX$O&#cqY][Z&c'aP#6=i-)K>9Grr;urrVlfbrrE&qs8W'&qs9Y8'a=^"!<3*'!s/H' -!<*$."V)e]OKHUYlLFTFro*ksrqZ6TleT^nTR'-J#m12/!!*'#!<<-%!L9WrrW2tr;QZus8;oqrql^+rr)lpiGSu**f'Oh -r;Q]o_>f#~> -ao;_Is8LtX$O&#cqY][Z&c'aP#6=i-)K>9Grr;urrVlfbrrE&qs8W'&qs9Y8'a=^"!<3*'!s/H' -!<*$."V)e]OKHUYlLFTFro*ksrqZ6TleT^nTR'-J#m12/!!*'#!<<-%!L9WrrW2tr;QZus8;oqrql^+rr)lpiGSu**f'Oh -r;Q]o_>f#~> -ao;_Is8LtX$O&#cqY][Z&c'aP#6=i-)K>9Grr;urrVlfbrrE&qs8W'&qs9Y8'a=^"!<3*'!s/H' -!<*$."V)e]OKHUYlLFTFro*ksrqZ6TleT^nTR'-J#m12/!!*'#!<<-%!L9WrrW2tr;QZus8;oqrql^+rr)lpiGSu**f'Oh -r;Q]o_>f#~> -a8Z\Lpqf<##t*)9s8Murs8N#qrri?$rVlcprX/W!csm1Z!X0Kair8lZs8Dutroa:mrr;uspXFXA -#Qb#,!!30%!;urd!!!&r!#>V9!<<361/;YHXifJ]lgOH?qYU-er:Tq"qYU-bq"!k=k2P+4Wf(gr -3ZeV(!!!&t!!!'!!!!&j!#Pb;! -a8Z\Lpqf<##t*)9s8Murs8N#qrri?$rVlcprX/W!csm1Z!X0Kair8lZs8Dutroa:mrr;uspXFXA -#Qb#,!!30%!;urd!!!&r!#>V9!<<361/;YHXifJ]lgOH?qYU-er:Tq"qYU-bq"!k=k2P+4Wf(gr -3ZeV(!!!&t!!!'!!!!&j!#Pb;! -a8Z\Lpqf<##t*)9s8Murs8N#qrri?$rVlcprX/W!csm1Z!X0Kair8lZs8Dutroa:mrr;uspXFXA -#Qb#,!!30%!;urd!!!&r!#>V9!<<361/;YHXifJ]lgOH?qYU-er:Tq"qYU-bq"!k=k2P+4Wf(gr -3ZeV(!!!&t!!!'!!!!&j!#Pb;! -ao;qOr;ZfhZR>qe?.JoPqY^7(H4"WVRHqYpKoro!hVquurcYuDSKquQg" -!!1pVrrET3%2Bp88S+G`PB!fPDO!M3[Gd]$jHb6huEl]! -ao;qOr;ZfhZR>qe?.JoPqY^7(H4"WVRHqYpKoro!hVquurcYuDSKquQg" -!!1pVrrET3%2Bp88S+G`PB!fPDO!M3[Gd]$jHb6huEl]! -ao;qOr;ZfhZR>qe?.JoPqY^7(H4"WVRHqYpKoro!hVquurcYuDSKquQg" -!!1pVrrET3%2Bp88S+G`PB!fPDO!M3[Gd]$jHb6huEl]! -aSuhLrr2idPT9i>B^Pcqr;QTmqu6`rrr)iq&,Fpm"9AQ,-%>(Trqucoro!egrVlcmrpGtF(BXa@ -!Dc#qZ.3/! -aSuhLrr2idPT9i>B^Pcqr;QTmqu6`rrr)iq&,Fpm"9AQ,-%>(Trqucoro!egrVlcmrpGtF(BXa@ -!Dc#qZ.3/! -aSuhLrr2idPT9i>B^Pcqr;QTmqu6`rrr)iq&,Fpm"9AQ,-%>(Trqucoro!egrVlcmrpGtF(BXa@ -!Dc#qZ.3/! -ao;A?rr3E+r8`,="W^crVuiqrnm_`rr)iqr;#-42&6K$ -r;kaTrW*$"!W2rt!WN-#! -ao;A?rr3E+r8`,="W^crVuiqrnm_`rr)iqr;#-42&6K$ -r;kaTrW*$"!W2rt!WN-#! -ao;A?rr3E+r8`,="W^crVuiqrnm_`rr)iqr;#-42&6K$ -r;kaTrW*$"!W2rt!WN-#! -`r?JGrr2iSB+"hcQLXnNqYq?1rVlcc\X#hk!WWERNqNDMrVlforr1jUs8E)ur;HWo$2ihC7iDU5 -"9AP]!!!*"!!**%rW!-'!!!*$!W_lo"p4l-!W`B+r;cm#r;kaT'*/.7!sTW0LXc8$s8Mooqu6Tp -s8Muts8Dm>qX:h,58Xb3!WiB'!WW6&! -`r?JGrr2iSB+"hcQLXnNqYq?1rVlcc\X#hk!WWERNqNDMrVlforr1jUs8E)ur;HWo$2ihC7iDU5 -"9AP]!!!*"!!**%rW!-'!!!*$!W_lo"p4l-!W`B+r;cm#r;kaT'*/.7!sTW0LXc8$s8Mooqu6Tp -s8Muts8Dm>qX:h,58Xb3!WiB'!WW6&! -`r?JGrr2iSB+"hcQLXnNqYq?1rVlcc\X#hk!WWERNqNDMrVlforr1jUs8E)ur;HWo$2ihC7iDU5 -"9AP]!!!*"!!**%rW!-'!!!*$!W_lo"p4l-!W`B+r;cm#r;kaT'*/.7!sTW0LXc8$s8Mooqu6Tp -s8Muts8Dm>qX:h,58Xb3!WiB'!WW6&! -aSu;?rVld'rVFr9$3W#cpAP!frt>>/rVc/M0E_IZ"!3NjrVQTnrVc`VrrE&ss8W'-r;Z`or;QZj -f:+f>#mB,crW*$$!;uru!!NB'!<<-$o`,L(!!!$"! -aSu;?rVld'rVFr9$3W#cpAP!frt>>/rVc/M0E_IZ"!3NjrVQTnrVc`VrrE&ss8W'-r;Z`or;QZj -f:+f>#mB,crW*$$!;uru!!NB'!<<-$o`,L(!!!$"! -aSu;?rVld'rVFr9$3W#cpAP!frt>>/rVc/M0E_IZ"!3NjrVQTnrVc`VrrE&ss8W'-r;Z`or;QZj -f:+f>#mB,crW*$$!;uru!!NB'!<<-$o`,L(!!!$"! -_uKc8%f"%8"U$WjoD\dgr;HWorVm9)n0nqu?]pqu6Km% -/T.c;^W(W!!*'#!]barW2[5Wrq?@!rr;rog2RQ)'m&KFs*t~> -_uKc8%f"%8"U$WjoD\dgr;HWorVm9)n0nqu?]pqu6Km% -/T.c;^W(W!!*'#!]barW2[5Wrq?@!rr;rog2RQ)'m&KFs*t~> -_uKc8%f"%8"U$WjoD\dgr;HWorVm9)n0nqu?]pqu6Km% -/T.c;^W(W!!*'#!]barW2[5Wrq?@!rr;rog2RQ)'m&KFs*t~> -_uC;Hr;QE"/d2MC\bc=&rr)iqqu7#jJ/Jl!hYmBOs8M`l$NC#(r;HQkrVlcop&>$irr**"rr)ip -rql^-rr)inl*"hK'*\O>!s8T+!$irr**"rr)ip -rql^-rr)inl*"hK'*\O>!s8T+!$irr**"rr)ip -rql^-rr)inl*"hK'*\O>!s8T+! -_uKc9s8rqHHmrX&W(rqucq -rr)lqqu76,rVc`nm`L/G+V+_Y!<`E(VZ?_urrEE-"V)P:I*1mTrVlfWruh7=rr)fhlIWJ$=?A5_ -(_7&_#6Y&1! -_uKc9s8rqHHmrX&W(rqucq -rr)lqqu76,rVc`nm`L/G+V+_Y!<`E(VZ?_urrEE-"V)P:I*1mTrVlfWruh7=rr)fhlIWJ$=?A5_ -(_7&_#6Y&1! -_Z(&Ds8W&gTcO7@8':c/rr)cp$iU#%m&JP5rr2ipr:^0jrWrJl]R!moI_PXNrrE&trs8W)us8Dl^dArCSB21ZF -*Z>n2&.]9]$OJ#krq?@!r8rYP!X_B8r;?Q&s*t~> -_Z(&Ds8W&gTcO7@8':c/rr)cp$iU#%m&JP5rr2ipr:^0jrWrJl]R!moI_PXNrrE&trs8W)us8Dl^dArCSB21ZF -*Z>n2&.]9]$OJ#krq?@!r8rYP!X_B8r;?Q&s*t~> -_Z(&Ds8W&gTcO7@8':c/rr)cp$iU#%m&JP5rr2ipr:^0jrWrJl]R!moI_PXNrrE&trs8W)us8Dl^dArCSB21ZF -*Z>n2&.]9]$OJ#krq?@!r8rYP!X_B8r;?Q&s*t~> -_uB`8rr*9&rTT+L!Y/2cqYp[$Prr*'!s8N&tjT#8Z+8l-;s8W)ts8W#sr;QWh -n))aB_ml>)Is6'V>#8\drqHF#rTg!i!t%0)qu$Kn[f:j~> -_uB`8rr*9&rTT+L!Y/2cqYp[$Prr*'!s8N&tjT#8Z+8l-;s8W)ts8W#sr;QWh -n))aB_ml>)Is6'V>#8\drqHF#rTg!i!t%0)qu$Kn[f:j~> -_uB`8rr*9&rTT+L!Y/2cqYp[$Prr*'!s8N&tjT#8Z+8l-;s8W)ts8W#sr;QWh -n))aB_ml>)Is6'V>#8\drqHF#rTg!i!t%0)qu$Kn[f:j~> -_#G&Hs8MrP@L`GISO;'d"f -"p=u*!<3*!!Wi?&!R^uJ!>PY9!<<*#!urr'P1!<2ur#OA$. -!XC?]pp'jL~> -^&JH=ps)SSO;'d"f -"p=u*!<3*!!Wi?&!R^uJ!>PY9!<<*#!urr'P1!<2ur#OA$. -!XC?]pp'jL~> -^&JH=ps)SSO;'d"f -"p=u*!<3*!!Wi?&!R^uJ!>PY9!<<*#!urr'P1!<2ur#OA$. -!XC?]pp'jL~> -^&S-3%Je42#ltNFi;EQNr;?QZs8W$(h(Sm1!,;5!XK>X1fT%Cm.^GVrVlcpqu?Wn]`/B=qt]NJ -*s)^.Y5/(%s*t~> -^&S-3%Je42#ltNFi;EQNr;?QZs8W$(h(Sm1!,;5!XK>X1fT%Cm.^GVrVlcpqu?Wn]`/B=qt]NJ -*s)^.Y5/(%s*t~> -^&S-3%Je42#ltNFi;EQNr;?QZs8W$(h(Sm1!,;5!XK>X1fT%Cm.^GVrVlcpqu?Wn]`/B=qt]NJ -*s)^.Y5/(%s*t~> -^AecDrVZTg_F4_5(O+a5rVQWolMh4jqrhJn! -^AecDrVZTg_F4_5(O+a5rVQWolMh4jqrhJn! -^AecDrVZTg_F4_5(O+a5rVQWolMh4jqrhJn! -^&S'1$i.h*$3M,ajSSoSr9=4frq3`c$jI%P9AT=As8E?&h,+4S"W`s'rUBgerql]trVliqrr*B& -mbZ!RC.0g%)%m;_#156o)/Oerr<#rrVlirrVl]o"TJAprVjM1$MrkU)$1+' -XSVnpYlB4~> -^&S'1$i.h*$3M,ajSSoSr9=4frq3`c$jI%P9AT=As8E?&h,+4S"W`s'rUBgerql]trVliqrr*B& -mbZ!RC.0g%)%m;_#156o)/Oerr<#rrVlirrVl]o"TJAprVjM1$MrkU)$1+' -XSVnpYlB4~> -^&S'1$i.h*$3M,ajSSoSr9=4frq3`c$jI%P9AT=As8E?&h,+4S"W`s'rUBgerql]trVliqrr*B& -mbZ!RC.0g%)%m;_#156o)/Oerr<#rrVlirrVl]o"TJAprVjM1$MrkU)$1+' -XSVnpYlB4~> -^&JZCr;HQmq8Pc-!tfY/qu?Tnli6t`#l)DH3^Ru9rr2Wk$N9Rk)$'dJ?0hIerr36&qXa1BnFc_U -rrE&ss8W'!s8N#t'`S%/r;HWopXZa:F^@No)\rtm#6Wf_&HN"@%Mfs26!/&eZIS[IrVl`nrr;uu -rVld!rVuosrqud"rq";1r;OJ2$iT.;(Bb"*[JKq$rNQ -^&JZCr;HQmq8Pc-!tfY/qu?Tnli6t`#l)DH3^Ru9rr2Wk$N9Rk)$'dJ?0hIerr36&qXa1BnFc_U -rrE&ss8W'!s8N#t'`S%/r;HWopXZa:F^@No)\rtm#6Wf_&HN"@%Mfs26!/&eZIS[IrVl`nrr;uu -rVld!rVuosrqud"rq";1r;OJ2$iT.;(Bb"*[JKq$rNQ -^&JZCr;HQmq8Pc-!tfY/qu?Tnli6t`#l)DH3^Ru9rr2Wk$N9Rk)$'dJ?0hIerr36&qXa1BnFc_U -rrE&ss8W'!s8N#t'`S%/r;HWopXZa:F^@No)\rtm#6Wf_&HN"@%Mfs26!/&eZIS[IrVl`nrr;uu -rVld!rVuosrqud"rq";1r;OJ2$iT.;(Bb"*[JKq$rNQ -^&J*3r;R,u_E%o)'O]\lqu?Zp!rr5un,EXls8;*1fC/\1ru1gi=9S^02ST+hrr;uhi4kJ&C4`%t -i9pC=rVlcrr:g45rr<#ts8N&urr;uklJ'XrU4QuQ2^fjl)]9>'%h&mVrX&Z4$MXr-$kWp\',;B) -+a4KGFr;Qcrq>UNqs8M`l"o?DXnbrI)rs\i*rqkc9('=dsY5/(!s*t~> -^&J*3r;R,u_E%o)'O]\lqu?Zp!rr5un,EXls8;*1fC/\1ru1gi=9S^02ST+hrr;uhi4kJ&C4`%t -i9pC=rVlcrr:g45rr<#ts8N&urr;uklJ'XrU4QuQ2^fjl)]9>'%h&mVrX&Z4$MXr-$kWp\',;B) -+a4KGFr;Qcrq>UNqs8M`l"o?DXnbrI)rs\i*rqkc9('=dsY5/(!s*t~> -^&J*3r;R,u_E%o)'O]\lqu?Zp!rr5un,EXls8;*1fC/\1ru1gi=9S^02ST+hrr;uhi4kJ&C4`%t -i9pC=rVlcrr:g45rr<#ts8N&urr;uklJ'XrU4QuQ2^fjl)]9>'%h&mVrX&Z4$MXr-$kWp\',;B) -+a4KGFr;Qcrq>UNqs8M`l"o?DXnbrI)rs\i*rqkc9('=dsY5/(!s*t~> -\,R!;qp%M6!!uEJqu6QorVc`Kruq$/&-DnEL%tWGr;GuX5m@>k! -\,R!;qp%M6!!uEJqu6QorVc`Kruq$/&-DnEL%tWGr;GuX5m@>k! -\,R!;qp%M6!!uEJqu6QorVc`Kruq$/&-DnEL%tWGr;GuX5m@>k! -\,R$ -\,R$ -\,R$ -\Gm0>rr2llcp8-C$:Mu0s8MrornIGsnWsdh!Z$:]rVc`j_D_Ms!Y$bS;+*#Q$3LJPG1ufkrr;u_ -s8W)srrW,ur;6Hts8N#rr;HTls8W'*rVulqr;Q]qr;Q`prWN9#s8N#Zrs&;5/-eDorl"gDrq=95 -$3C`4_>=,1s*t~> -\Gm0>rr2llcp8-C$:Mu0s8MrornIGsnWsdh!Z$:]rVc`j_D_Ms!Y$bS;+*#Q$3LJPG1ufkrr;u_ -s8W)srrW,ur;6Hts8N#rr;HTls8W'*rVulqr;Q]qr;Q`prWN9#s8N#Zrs&;5/-eDorl"gDrq=95 -$3C`4_>=,1s*t~> -\Gm0>rr2llcp8-C$:Mu0s8MrornIGsnWsdh!Z$:]rVc`j_D_Ms!Y$bS;+*#Q$3LJPG1ufkrr;u_ -s8W)srrW,ur;6Hts8N#rr;HTls8W'*rVulqr;Q]qr;Q`prWN9#s8N#Zrs&;5/-eDorl"gDrq=95 -$3C`4_>=,1s*t~> -\Gm->r;HWnps2nK!X_9-pAOsfg]&MrdmaE?#<^6.rVl`^JI2J\%SsY*qrPPP8eqL1'oDY^r;Q]] -s8W)urrN,tqYgWrrr)iorqulsrVZ[+rr;utrVulqr;?Qms8DrqqYoXW#4IKY";e!7`W$AGo"da# -!YJ5Nqu-NnX8d\~> -\Gm->r;HWnps2nK!X_9-pAOsfg]&MrdmaE?#<^6.rVl`^JI2J\%SsY*qrPPP8eqL1'oDY^r;Q]] -s8W)urrN,tqYgWrrr)iorqulsrVZ[+rr;utrVulqr;?Qms8DrqqYoXW#4IKY";e!7`W$AGo"da# -!YJ5Nqu-NnX8d\~> -\Gm->r;HWnps2nK!X_9-pAOsfg]&MrdmaE?#<^6.rVl`^JI2J\%SsY*qrPPP8eqL1'oDY^r;Q]] -s8W)urrN,tqYgWrrr)iorqulsrVZ[+rr;utrVulqr;?Qms8DrqqYoXW#4IKY";e!7`W$AGo"da# -!YJ5Nqu-NnX8d\~> -\,R$;rr;rrqpnd^!sLHkp\Xshh#AShPn=#u'SQ2Zs8;iS63.&g-+a!Ps8DrmfRb"F*M<9-rqtsZ -&,uV/rVlcprVulrs8N#rrV6Burr;utrr;urrV?Ens8MTh!<2Ti#Q<7@!W`X+ou@"@rU$gP!X' -\,R$;rr;rrqpnd^!sLHkp\Xshh#AShPn=#u'SQ2Zs8;iS63.&g-+a!Ps8DrmfRb"F*M<9-rqtsZ -&,uV/rVlcprVulrs8N#rrV6Burr;utrr;urrV?Ens8MTh!<2Ti#Q<7@!W`X+ou@"@rU$gP!X' -\,R$;rr;rrqpnd^!sLHkp\Xshh#AShPn=#u'SQ2Zs8;iS63.&g-+a!Ps8DrmfRb"F*M<9-rqtsZ -&,uV/rVlcprVulrs8N#rrV6Burr;utrr;urrV?Ens8MTh!<2Ti#Q<7@!W`X+ou@"@rU$gP!X' -ZMtL8rS_r>!spusnc&OfrqucojSoPcrVP2,"9AZ_fDY^TrnA\#! -ZMtL8rS_r>!spusnc&OfrqucojSoPcrVP2,"9AZ_fDY^TrnA\#! -ZMtL8rS_r>!spusnc&OfrqucojSoPcrVP2,"9AZ_fDY^TrnA\#! -ZN't'%f51=)?pI+YOVSkr;?Qmjo>A[#lX.Q"TeZ;H2RX@'E6c -ZN't'%f51=)?pI+YOVSkr;?Qmjo>A[#lX.Q"TeZ;H2RX@'E6c -ZN't'%f51=)?pI+YOVSkr;?Qmjo>A[#lX.Q"TeZ;H2RX@'E6c -ZMtL8rVlcaR4AFD,aRNirVZTljo5\drqa\n!WiNeeGT7E.-Fk>"To9Om/-eZs8W#spXeF&rr)ir -rquB*BG^jR!rrB("t,>Zqu-3f#lal'rql]prr)Nir;Hp!rr;utrr2Zls8EN+n]R2974KZ51MW`< -p\t'i&H2M$d<]`7J-Q,`6.Go4rVk:G&,cJ*r;H<0>m^Z9*/O4br2'FD~> -ZMtL8rVlcaR4AFD,aRNirVZTljo5\drqa\n!WiNeeGT7E.-Fk>"To9Om/-eZs8W#spXeF&rr)ir -rquB*BG^jR!rrB("t,>Zqu-3f#lal'rql]prr)Nir;Hp!rr;utrr2Zls8EN+n]R2974KZ51MW`< -p\t'i&H2M$d<]`7J-Q,`6.Go4rVk:G&,cJ*r;H<0>m^Z9*/O4br2'FD~> -ZMtL8rVlcaR4AFD,aRNirVZTljo5\drqa\n!WiNeeGT7E.-Fk>"To9Om/-eZs8W#spXeF&rr)ir -rquB*BG^jR!rrB("t,>Zqu-3f#lal'rql]prr)Nir;Hp!rr;utrr2Zls8EN+n]R2974KZ51MW`< -p\t'i&H2M$d<]`7J-Q,`6.Go4rVk:G&,cJ*r;H<0>m^Z9*/O4br2'FD~> -ZMtL6rVlfpoWC"X"<;[Iq>:-ijo5_fr9T(H!s99io`"jgrsJFt*WuNI/$AdKrVc^5rVlfrs8Dur -rpd9]"9JZ."pkJ;!s90:f_kLD$i^,#q=aRWpA"Rbrq?BkrWrH!qYC!arVlfirs/MfUd#(b!!3'# -"U,WB]^c"!rt,2.pX[^`qTBfY!ZIg3rVlcFs8W'.r;QQ]\kiS3#9S3Rrr2hls*t~> -ZMtL6rVlfpoWC"X"<;[Iq>:-ijo5_fr9T(H!s99io`"jgrsJFt*WuNI/$AdKrVc^5rVlfrs8Dur -rpd9]"9JZ."pkJ;!s90:f_kLD$i^,#q=aRWpA"Rbrq?BkrWrH!qYC!arVlfirs/MfUd#(b!!3'# -"U,WB]^c"!rt,2.pX[^`qTBfY!ZIg3rVlcFs8W'.r;QQ]\kiS3#9S3Rrr2hls*t~> -ZMtL6rVlfpoWC"X"<;[Iq>:-ijo5_fr9T(H!s99io`"jgrsJFt*WuNI/$AdKrVc^5rVlfrs8Dur -rpd9]"9JZ."pkJ;!s90:f_kLD$i^,#q=aRWpA"Rbrq?BkrWrH!qYC!arVlfirs/MfUd#(b!!3'# -"U,WB]^c"!rt,2.pX[^`qTBfY!ZIg3rVlcFs8W'.r;QQ]\kiS3#9S3Rrr2hls*t~> -ZN't'%fZD+rqF9/&-#i!X:R)rr)fq%fYR.$NUA744*g%s8N#rrVliss8"p,3;iVX,_6^ALZb4iVr:U'tr:]3u_7m\*g$8>2q#:s)m[5!r!sK8X -+;P7b!XCBNp&+h$rVuinr;HTY@0-H:<;$1grmh#XrqucpqW+7u"U#)aQgXkO! -ZN't'%fZD+rqF9/&-#i!X:R)rr)fq%fYR.$NUA744*g%s8N#rrVliss8"p,3;iVX,_6^ALZb4iVr:U'tr:]3u_7m\*g$8>2q#:s)m[5!r!sK8X -+;P7b!XCBNp&+h$rVuinr;HTY@0-H:<;$1grmh#XrqucpqW+7u"U#)aQgXkO! -ZN't'%fZD+rqF9/&-#i!X:R)rr)fq%fYR.$NUA744*g%s8N#rrVliss8"p,3;iVX,_6^ALZb4iVr:U'tr:]3u_7m\*g$8>2q#:s)m[5!r!sK8X -+;P7b!XCBNp&+h$rVuinr;HTY@0-H:<;$1grmh#XrqucpqW+7u"U#)aQgXkO! -ZN'q'rVm6#enYp$$q.Jnrr;usmf*Ojs8Dusrp+q1!iYk'*87TPPP+U&,uFh[sCOh#lt#0)G#Y4q>L=1rr;uts8MiSY@TmB*$$Y* -Gdcl7rr2lrrr2p1osZ:L!t@,7Uo'#>$NU>4-aNRHrseu-s8Dusrq39*! -ZN'q'rVm6#enYp$$q.Jnrr;usmf*Ojs8Dusrp+q1!iYk'*87TPPP+U&,uFh[sCOh#lt#0)G#Y4q>L=1rr;uts8MiSY@TmB*$$Y* -Gdcl7rr2lrrr2p1osZ:L!t@,7Uo'#>$NU>4-aNRHrseu-s8Dusrq39*! -ZN'q'rVm6#enYp$$q.Jnrr;usmf*Ojs8Dusrp+q1!iYk'*87TPPP+U&,uFh[sCOh#lt#0)G#Y4q>L=1rr;uts8MiSY@TmB*$$Y* -Gdcl7rr2lrrr2p1osZ:L!t@,7Uo'#>$NU>4-aNRHrseu-s8Dusrq39*! -XoB"4r;ZZQIO,1'1R[D&rr2lqrUKpfr=Ao*s8Mf3.KKPR/Be"irVcZo*WG]1-3O>O&oHG$rVliq -r;Z`qrVbr.%KceA8]U],rZV-l>Qb'47H+:Es8Drqo#Pem#m1JC%h&^G"V3u8o_nderVeJJpX*[r -"T\]-!W`?.-$7f6qtg9irr2fJJX!u+bMq>HudJ,~> -XoB"4r;ZZQIO,1'1R[D&rr2lqrUKpfr=Ao*s8Mf3.KKPR/Be"irVcZo*WG]1-3O>O&oHG$rVliq -r;Z`qrVbr.%KceA8]U],rZV-l>Qb'47H+:Es8Drqo#Pem#m1JC%h&^G"V3u8o_nderVeJJpX*[r -"T\]-!W`?.-$7f6qtg9irr2fJJX!u+bMq>HudJ,~> -XoB"4r;ZZQIO,1'1R[D&rr2lqrUKpfr=Ao*s8Mf3.KKPR/Be"irVcZo*WG]1-3O>O&oHG$rVliq -r;Z`qrVbr.%KceA8]U],rZV-l>Qb'47H+:Es8Drqo#Pem#m1JC%h&^G"V3u8o_nderVeJJpX*[r -"T\]-!W`?.-$7f6qtg9irr2fJJX!u+bMq>HudJ,~> -X8`_.rVZ/^2$sI&FOTs_rqucbrso&,rr;oXE!ZOJ&U3mHrVHO'rVZ#D)?U$C%rU8%r;Z`os8Ec/ -]d*UZ# -X8`_.rVZ/^2$sI&FOTs_rqucbrso&,rr;oXE!ZOJ&U3mHrVHO'rVZ#D)?U$C%rU8%r;Z`os8Ec/ -]d*UZ# -X8`_.rVZ/^2$sI&FOTs_rqucbrso&,rr;oXE!ZOJ&U3mHrVHO'rVZ#D)?U$C%rU8%r;Z`os8Ec/ -]d*UZ# -X8`_/rql]fZq(`3%TU:7r;Q]cs8N!,rVlJu,ldrM28K1irr)`o&H2V*icPY3"9]QikPkDWqu-Nn -(%-JQ!Ulk$;EW,k9rVld'p:):J! -X8`_/rql]fZq(`3%TU:7r;Q]cs8N!,rVlJu,ldrM28K1irr)`o&H2V*icPY3"9]QikPkDWqu-Nn -(%-JQ!Ulk$;EW,k9rVld'p:):J! -X8`_/rql]fZq(`3%TU:7r;Q]cs8N!,rVlJu,ldrM28K1irr)`o&H2V*icPY3"9]QikPkDWqu-Nn -(%-JQ!Ulk$;EW,k9rVld'p:):J! -XoB"4rVc`pr;QZVE?>8b,,!ojrpg"#rVufpqqkW]!s0$]p&4pjr;QWoB`@o-r81ij!W`E>K_GEC -rr2lqqpHel!t%lprVlirr;?Hjl[Ap:#!V#Frqk>C!s/d!anu)7rVc`eW>ks?&qp#Vrr2ljZloJP -)Md\WrVcE!3sGch'oVhds8MuL)$9m\[K$7)rVulr$1)s?!Wrj3nGW@_rsAZ'l=g>%$ru]og&DW_ -qX(^a$3UDD9=Ofrrr2foT`9N~> -XoB"4rVc`pr;QZVE?>8b,,!ojrpg"#rVufpqqkW]!s0$]p&4pjr;QWoB`@o-r81ij!W`E>K_GEC -rr2lqqpHel!t%lprVlirr;?Hjl[Ap:#!V#Frqk>C!s/d!anu)7rVc`eW>ks?&qp#Vrr2ljZloJP -)Md\WrVcE!3sGch'oVhds8MuL)$9m\[K$7)rVulr$1)s?!Wrj3nGW@_rsAZ'l=g>%$ru]og&DW_ -qX(^a$3UDD9=Ofrrr2foT`9N~> -XoB"4rVc`pr;QZVE?>8b,,!ojrpg"#rVufpqqkW]!s0$]p&4pjr;QWoB`@o-r81ij!W`E>K_GEC -rr2lqqpHel!t%lprVlirr;?Hjl[Ap:#!V#Frqk>C!s/d!anu)7rVc`eW>ks?&qp#Vrr2ljZloJP -)Md\WrVcE!3sGch'oVhds8MuL)$9m\[K$7)rVulr$1)s?!Wrj3nGW@_rsAZ'l=g>%$ru]og&DW_ -qX(^a$3UDD9=Ofrrr2foT`9N~> -XoJG#!WE#rrIpsrqjhRi -rqufiYq?%Y#!1$-rqlN)%0HbhcM[P<#l)1X!s/``_u0B2$N9o$pTbD7"!kqdg&DW]jd.b*!X9TY -chm_?rr2lqT`9N~> -XoJG#!WE#rrIpsrqjhRi -rqufiYq?%Y#!1$-rqlN)%0HbhcM[P<#l)1X!s/``_u0B2$N9o$pTbD7"!kqdg&DW]jd.b*!X9TY -chm_?rr2lqT`9N~> -XoJG#!WE#rrIpsrqjhRi -rqufiYq?%Y#!1$-rqlN)%0HbhcM[P<#l)1X!s/``_u0B2$N9o$pTbD7"!kqdg&DW]jd.b*!X9TY -chm_?rr2lqT`9N~> -V>h&(rq"$%('=q0Y3,W[rr2os!ri6!qu7$&qq>d%!<<*/C&Ir0"TJ8qrr;rrrr3<%cS5P'!=N#h -r;Q[%rTInu!XDBRr;QZp')qq/o9g-j""1GQrpPC>!!YR\r;S>Is8V\j*!$*cX8Mtrqp6Pg!Ze3: -r;Q`qs8VPG&-;nHK(o9DnsB[_#YNnOqu7$&qr(i_!!=!tqYpBls8E?)r7XdF!>0YQs8DrWs8N!+ -rVP`E,6IuS1Q^r$rgNk;~> -V>h&(rq"$%('=q0Y3,W[rr2os!ri6!qu7$&qq>d%!<<*/C&Ir0"TJ8qrr;rrrr3<%cS5P'!=N#h -r;Q[%rTInu!XDBRr;QZp')qq/o9g-j""1GQrpPC>!!YR\r;S>Is8V\j*!$*cX8Mtrqp6Pg!Ze3: -r;Q`qs8VPG&-;nHK(o9DnsB[_#YNnOqu7$&qr(i_!!=!tqYpBls8E?)r7XdF!>0YQs8DrWs8N!+ -rVP`E,6IuS1Q^r$rgNk;~> -V>h&(rq"$%('=q0Y3,W[rr2os!ri6!qu7$&qq>d%!<<*/C&Ir0"TJ8qrr;rrrr3<%cS5P'!=N#h -r;Q[%rTInu!XDBRr;QZp')qq/o9g-j""1GQrpPC>!!YR\r;S>Is8V\j*!$*cX8Mtrqp6Pg!Ze3: -r;Q`qs8VPG&-;nHK(o9DnsB[_#YNnOqu7$&qr(i_!!=!tqYpBls8E?)r7XdF!>0YQs8DrWs8N!+ -rVP`E,6IuS1Q^r$rgNk;~> -V>h5.s8VrLHQ37n,'ql6rr)ips8;ikrsASTL--(O!uRp7rVm#sh!+h9rr2lr(]O*,+T_`K*if/< -rr2fF6im?!Fnbk5rqud-rq)Wk!!==?s8V7`!WimHr;-F-rqtG2!Wis_o`+m_T+1i*44!j(rr)j. -rRa:6!X:pNrVl>G#QY9+htmBQr!DnU%KQS=A*a'lr;Zcq%/oRO%fuu"gAV$KrqtjW!<2ur%/&&" -*!-6V9"FWorr&;cJ,~> -V>h5.s8VrLHQ37n,'ql6rr)ips8;ikrsASTL--(O!uRp7rVm#sh!+h9rr2lr(]O*,+T_`K*if/< -rr2fF6im?!Fnbk5rqud-rq)Wk!!==?s8V7`!WimHr;-F-rqtG2!Wis_o`+m_T+1i*44!j(rr)j. -rRa:6!X:pNrVl>G#QY9+htmBQr!DnU%KQS=A*a'lr;Zcq%/oRO%fuu"gAV$KrqtjW!<2ur%/&&" -*!-6V9"FWorr&;cJ,~> -V>h5.s8VrLHQ37n,'ql6rr)ips8;ikrsASTL--(O!uRp7rVm#sh!+h9rr2lr(]O*,+T_`K*if/< -rr2fF6im?!Fnbk5rqud-rq)Wk!!==?s8V7`!WimHr;-F-rqtG2!Wis_o`+m_T+1i*44!j(rr)j. -rRa:6!X:pNrVl>G#QY9+htmBQr!DnU%KQS=A*a'lr;Zcq%/oRO%fuu"gAV$KrqtjW!<2ur%/&&" -*!-6V9"FWorr&;cJ,~> -V>pSps8NK*lC0jH":nA9lh^V[r;cinrsAW&rUeKb1DD"Hr;QrjR#US5rVHO/r8(ib!s&jIp](6k -pqJ?\!Z@I(rr2co%e?&"!!4@Arr(n3c(clZ372$p -e,0+Cqu)u`J,~> -V>pSps8NK*lC0jH":nA9lh^V[r;cinrsAW&rUeKb1DD"Hr;QrjR#US5rVHO/r8(ib!s&jIp](6k -pqJ?\!Z@I(rr2co%e?&"!!4@Arr(n3c(clZ372$p -e,0+Cqu)u`J,~> -V>pSps8NK*lC0jH":nA9lh^V[r;cinrsAW&rUeKb1DD"Hr;QrjR#US5rVHO/r8(ib!s&jIp](6k -pqJ?\!Z@I(rr2co%e?&"!!4@Arr(n3c(clZ372$p -e,0+Cqu)u`J,~> -V#UGn&H2V(eS-'-"<2p>p%nX`s8Mrr$NBr%rVZTif7?i8r;QueBITbMrVcZo'E7t$P77Tp#tO[f -rr;Yq*!$*fa8Z)8rt,2#QOa&t+fYJ>i@k<6':AarrtbV6s8MPK!WiTki;`c4:BCP,E;BP4rqud- -qo'*I!>COms6b4:!=2?Rrql`qrU2ZWp\,1->drt#,-rr)i_D?0bG>j)"`s8M*Z%K?"EG8UA_ -&jiDjrr2iprL3b:~> -V#UGn&H2V(eS-'-"<2p>p%nX`s8Mrr$NBr%rVZTif7?i8r;QueBITbMrVcZo'E7t$P77Tp#tO[f -rr;Yq*!$*fa8Z)8rt,2#QOa&t+fYJ>i@k<6':AarrtbV6s8MPK!WiTki;`c4:BCP,E;BP4rqud- -qo'*I!>COms6b4:!=2?Rrql`qrU2ZWp\,1->drt#,-rr)i_D?0bG>j)"`s8M*Z%K?"EG8UA_ -&jiDjrr2iprL3b:~> -V#UGn&H2V(eS-'-"<2p>p%nX`s8Mrr$NBr%rVZTif7?i8r;QueBITbMrVcZo'E7t$P77Tp#tO[f -rr;Yq*!$*fa8Z)8rt,2#QOa&t+fYJ>i@k<6':AarrtbV6s8MPK!WiTki;`c4:BCP,E;BP4rqud- -qo'*I!>COms6b4:!=2?Rrql`qrU2ZWp\,1->drt#,-rr)i_D?0bG>j)"`s8M*Z%K?"EG8UA_ -&jiDjrr2iprL3b:~> -VZ-YqrVuoss83;fP;3RL%o'Isq>L6jqu6csrr)cor;uWAjS]#^k>;FD]Cu4%s8W'5rUZBd!Wra* -p&4mio;3*%"#/sa2$&qU)]rr2iq -&,as9! -VZ-YqrVuoss83;fP;3RL%o'Isq>L6jqu6csrr)cor;uWAjS]#^k>;FD]Cu4%s8W'5rUZBd!Wra* -p&4mio;3*%"#/sa2$&qU)]rr2iq -&,as9! -VZ-YqrVuoss83;fP;3RL%o'Isq>L6jqu6csrr)cor;uWAjS]#^k>;FD]Cu4%s8W'5rUZBd!Wra* -p&4mio;3*%"#/sa2$&qU)]rr2iq -&,as9! -VZ6\q'*%t2rr;uss7t/R,6\2eDSu)Dr;Zfr!<<#s/H,MHrr;utrr2lQ6idKIZ0D2cs8N#rrTA;0 -!UEoo9f^^"?QM[rr)`o.K8OJ!5bUrr2lrrr2rsRf@m~> -VZ6\q'*%t2rr;uss7t/R,6\2eDSu)Dr;Zfr!<<#s/H,MHrr;utrr2lQ6idKIZ0D2cs8N#rrTA;0 -!UEoo9f^^"?QM[rr)`o.K8OJ!5bUrr2lrrr2rsRf@m~> -VZ6\q'*%t2rr;uss7t/R,6\2eDSu)Dr;Zfr!<<#s/H,MHrr;utrr2lQ6idKIZ0D2cs8N#rrTA;0 -!UEoo9f^^"?QM[rr)`o.K8OJ!5bUrr2lrrr2rsRf@m~> -SGs3#qW=G1%g*,!T&9;@s8N#qrqHHkrZh"jn -rVl]o.fJ!b!!*+po -p8n]'!Yh!ts8W'(rU>OB!<="?rq69un:C`C">7^frr)idrtYP2rVZ]ps8;N@ME(_?$6s?7q>^Em -PQ-.~> -SGs3#qW=G1%g*,!T&9;@s8N#qrqHHkrZh"jn -rVl]o.fJ!b!!*+po -p8n]'!Yh!ts8W'(rU>OB!<="?rq69un:C`C">7^frr)idrtYP2rVZ]ps8;N@ME(_?$6s?7q>^Em -PQ-.~> -SGs3#qW=G1%g*,!T&9;@s8N#qrqHHkrZh"jn -rVl]o.fJ!b!!*+po -p8n]'!Yh!ts8W'(rU>OB!<="?rq69un:C`C">7^frr)idrtYP2rVZ]ps8;N@ME(_?$6s?7q>^Em -PQ-.~> -SGs-!rVQB9F=.Ct(07s-p\k$^s!@[Crr2Gi0b4Bh&35NXb0\+u/-H"V&o6b0rr2leQiR6q=oA9s -qYr,C^(1;G$uGk@r:[QC!s&a+bk1i3rr2`bqs]UH!=(gHs7WK.!DrB%0QhO9s!^\rr;q[s*t~> -SGs-!rVQB9F=.Ct(07s-p\k$^s!@[Crr2Gi0b4Bh&35NXb0\+u/-H"V&o6b0rr2leQiR6q=oA9s -qYr,C^(1;G$uGk@r:[QC!s&a+bk1i3rr2`bqs]UH!=(gHs7WK.!DrB%0QhO9s!^\rr;q[s*t~> -SGs-!rVQB9F=.Ct(07s-p\k$^s!@[Crr2Gi0b4Bh&35NXb0\+u/-H"V&o6b0rr2leQiR6q=oA9s -qYr,C^(1;G$uGk@r:[QC!s&a+bk1i3rr2`bqs]UH!=(gHs7WK.!DrB%0QhO9s!^\rr;q[s*t~> -S,X#srVl`aX\]c9"!Da)nGW=YrrE#ss!%C8^LSPs!W`B9001Ed!T9Br;Zcq!VDu_!Wj7Brq?@"rq39+!!3316ETq[nGa7%rr)`Z\RQEV!t-i6gAh-LrVlis -rfmG5~> -S,X#srVl`aX\]c9"!Da)nGW=YrrE#ss!%C8^LSPs!W`B9001Ed!T9Br;Zcq!VDu_!Wj7Brq?@"rq39+!!3316ETq[nGa7%rr)`Z\RQEV!t-i6gAh-LrVlis -rfmG5~> -S,X#srVl`aX\]c9"!Da)nGW=YrrE#ss!%C8^LSPs!W`B9001Ed!T9Br;Zcq!VDu_!Wj7Brq?@"rq39+!!3316ETq[nGa7%rr)`Z\RQEV!t-i6gAh-LrVlis -rfmG5~> -S,`Ne%fZG*q:U]W&d8Y%QIk[)p&??;rVlcpqrk=f.233r"9nu4#nJ1]^\ds.rqu`eYT!WJ48JjR -rqudIrRa=:!!PFDs8Mrrq9i%K"9J`H3E&sE7?m5c1B@UkGk1h,Wtk[:)4pg*rqcX+mXG3;#"egm -rpG.:!!*q?r;?TorW2MCrW**@]Dhg(rsSi!V@s1H+[Lb0qYp$bs8EN(mEU),"To&Q=i9h/r;HTo -s8J8_J,~> -S,`Ne%fZG*q:U]W&d8Y%QIk[)p&??;rVlcpqrk=f.233r"9nu4#nJ1]^\ds.rqu`eYT!WJ48JjR -rqudIrRa=:!!PFDs8Mrrq9i%K"9J`H3E&sE7?m5c1B@UkGk1h,Wtk[:)4pg*rqcX+mXG3;#"egm -rpG.:!!*q?r;?TorW2MCrW**@]Dhg(rsSi!V@s1H+[Lb0qYp$bs8EN(mEU),"To&Q=i9h/r;HTo -s8J8_J,~> -S,`Ne%fZG*q:U]W&d8Y%QIk[)p&??;rVlcpqrk=f.233r"9nu4#nJ1]^\ds.rqu`eYT!WJ48JjR -rqudIrRa=:!!PFDs8Mrrq9i%K"9J`H3E&sE7?m5c1B@UkGk1h,Wtk[:)4pg*rqcX+mXG3;#"egm -rpG.:!!*q?r;?TorW2MCrW**@]Dhg(rsSi!V@s1H+[Lb0qYp$bs8EN(mEU),"To&Q=i9h/r;HTo -s8J8_J,~> -SGs6#rr2lqrqu`jd<-lF!XV&]g\:FAs8<#urVlfp*;Rp9=?J5j/i-1>5!>LIjrqud.rT.Mj!")d* -s8;Z#)?KsL?gIXis8E?'l"C)#""Mq%rq?@!nWG%_G-g`;rr2ldrs\kqc%.DI!Ws01U[S-[r;lrs -rr/)\J,~> -SGs6#rr2lqrqu`jd<-lF!XV&]g\:FAs8<#urVlfp*;Rp9=?J5j/i-1>5!>LIjrqud.rT.Mj!")d* -s8;Z#)?KsL?gIXis8E?'l"C)#""Mq%rq?@!nWG%_G-g`;rr2ldrs\kqc%.DI!Ws01U[S-[r;lrs -rr/)\J,~> -SGs6#rr2lqrqu`jd<-lF!XV&]g\:FAs8<#urVlfp*;Rp9=?J5j/i-1>5!>LIjrqud.rT.Mj!")d* -s8;Z#)?KsL?gIXis8E?'l"C)#""Mq%rq?@!nWG%_G-g`;rr2ldrs\kqc%.DI!Ws01U[S-[r;lrs -rr/)\J,~> -RK*9c)ZTg:rU-mh)[QZa<3GBVr;ZcqrVufqrr)iqr;Ri;s82'-`lH'?ht$dHs8N&ts8W)rjB_rj -+h%=Jrr;us#l2Y5"Tellao;;>,6%N=qr42=-QaBO-r&Ilb!H12$;fa]rV*uR!PX#`\ -"qNA=fDPUIrr.oWJ,~> -RK*9c)ZTg:rU-mh)[QZa<3GBVr;ZcqrVufqrr)iqr;Ri;s82'-`lH'?ht$dHs8N&ts8W)rjB_rj -+h%=Jrr;us#l2Y5"Tellao;;>,6%N=qr42=-QaBO-r&Ilb!H12$;fa]rV*uR!PX#`\ -"qNA=fDPUIrr.oWJ,~> -RK*9c)ZTg:rU-mh)[QZa<3GBVr;ZcqrVufqrr)iqr;Ri;s82'-`lH'?ht$dHs8N&ts8W)rjB_rj -+h%=Jrr;us#l2Y5"Tellao;;>,6%N=qr42=-QaBO-r&Ilb!H12$;fa]rV*uR!PX#`\ -"qNA=fDPUIrr.oWJ,~> -OoH$lmAEMp#Qk` -OoH$lmAEMp#Qk` -OoH$lmAEMp#Qk` -OoH!lr:o'44VS&&*b_hBpAFpgrr2*\(&n..eiEp:/?87:qtg$?KbORk&n(,(s8W'?rVuforqu]m -rVYc:'*84OGkD"8rVYSU!s&T]`;T]6r;QuuboZue(pO#=)#XBm=pG'0(maakrVl`lhI-Wh"u3mj -rVlQk"oeDsr;Q]hs8W$.rr)fko@od-&cr1B,$h\Jr;MQQJ,~> -OoH!lr:o'44VS&&*b_hBpAFpgrr2*\(&n..eiEp:/?87:qtg$?KbORk&n(,(s8W'?rVuforqu]m -rVYc:'*84OGkD"8rVYSU!s&T]`;T]6r;QuuboZue(pO#=)#XBm=pG'0(maakrVl`lhI-Wh"u3mj -rVlQk"oeDsr;Q]hs8W$.rr)fko@od-&cr1B,$h\Jr;MQQJ,~> -OoH!lr:o'44VS&&*b_hBpAFpgrr2*\(&n..eiEp:/?87:qtg$?KbORk&n(,(s8W'?rVuforqu]m -rVYc:'*84OGkD"8rVYSU!s&T]`;T]6r;QuuboZue(pO#=)#XBm=pG'0(maakrVl`lhI-Wh"u3mj -rVlQk"oeDsr;Q]hs8W$.rr)fko@od-&cr1B,$h\Jr;MQQJ,~> -OT-!nr;?6@OuO-\#TR#E:&m*N\qu6`srVufp)?'R4 -k`R(j!Z,_0rr;orrU>XO!r)~> -OT-!nr;?6@OuO-\#TR#E:&m*N\qu6`srVufp)?'R4 -k`R(j!Z,_0rr;orrU>XO!r)~> -OT-!nr;?6@OuO-\#TR#E:&m*N\qu6`srVufp)?'R4 -k`R(j!Z,_0rr;orrU>XO!r)~> -OT-!mr;HTnq9OUR&-N%G;kr(=r;Zc[rtbV6rVPZ"('4UF,s*dm!<`K==3pjErqud0rr)lqrqu`n -rqYK4'*A:PBB&mirr*3$qT:,c!XD$TqYpfcDZBkG!q,m")N+*=X&[s8tq":$d*rqlWm -pAY9os8DrrpAYj+qX)L]4U2#l#p3 -OT-!mr;HTnq9OUR&-N%G;kr(=r;Zc[rtbV6rVPZ"('4UF,s*dm!<`K==3pjErqud0rr)lqrqu`n -rqYK4'*A:PBB&mirr*3$qT:,c!XD$TqYpfcDZBkG!q,m")N+*=X&[s8tq":$d*rqlWm -pAY9os8DrrpAYj+qX)L]4U2#l#p3 -OT-!mr;HTnq9OUR&-N%G;kr(=r;Zc[rtbV6rVPZ"('4UF,s*dm!<`K==3pjErqud0rr)lqrqu`n -rqYK4'*A:PBB&mirr*3$qT:,c!XD$TqYpfcDZBkG!q,m")N+*=X&[s8tq":$d*rqlWm -pAY9os8DrrpAYj+qX)L]4U2#l#p3 -OT-$nrr<#ss8;N6H8ZQG"W0\%fC&G4l2Ub^'E.jbEuYVo!WiH*"qDnie,K@Erquctrr)fprYth5 -o$DFn!sg/rhZ!NSrVlcprTe/&!Ws7.o`"gh#PuLn!r)~> -OT-$nrr<#ss8;N6H8ZQG"W0\%fC&G4l2Ub^'E.jbEuYVo!WiH*"qDnie,K@Erquctrr)fprYth5 -o$DFn!sg/rhZ!NSrVlcprTe/&!Ws7.o`"gh#PuLn!r)~> -OT-$nrr<#ss8;N6H8ZQG"W0\%fC&G4l2Ub^'E.jbEuYVo!WiH*"qDnie,K@Erquctrr)fprYth5 -o$DFn!sg/rhZ!NSrVlcprTe/&!Ws7.o`"gh#PuLn!r)~> -MuNeUrr*Q-jcDtP#QY2bL:u[Crqu`orVZWn!;u?d%/fOo@5oGK)^.CY\b?%%qYq**s8;loqsMq" -4p(p#6_sVUrtYM3qTCc"!,LigJcG]KJ,~> -MuNeUrr*Q-jcDtP#QY2bL:u[Crqu`orVZWn!;u?d%/fOo@5oGK)^.CY\b?%%qYq**s8;loqsMq" -4p(p#6_sVUrtYM3qTCc"!,LigJcG]KJ,~> -MuNeUrr*Q-jcDtP#QY2bL:u[Crqu`orVZWn!;u?d%/fOo@5oGK)^.CY\b?%%qYq**s8;loqsMq" -4p(p#6_sVUrtYM3qTCc"!,LigJcG]KJ,~> -M>nLns8MujfUGDO$3^ehB"-^hq#1-frr)cns8DKf&,uJ)lccf@Z+&'Ir;Q`prqcX+rVl]^j3('F^VM"gfH!<2ur%._#7+;GG#',`E9]_DF)!WW/l -s7uX-r;HBVesB2S!s8c;,?_&,qu-NmJcG`LJ,~> -M>nLns8MujfUGDO$3^ehB"-^hq#1-frr)cns8DKf&,uJ)lccf@Z+&'Ir;Q`prqcX+rVl]^j3('F^VM"gfH!<2ur%._#7+;GG#',`E9]_DF)!WW/l -s7uX-r;HBVesB2S!s8c;,?_&,qu-NmJcG`LJ,~> -M>nLns8MujfUGDO$3^ehB"-^hq#1-frr)cns8DKf&,uJ)lccf@Z+&'Ir;Q`prqcX+rVl]^j3('F^VM"gfH!<2ur%._#7+;GG#',`E9]_DF)!WW/l -s7uX-r;HBVesB2S!s8c;,?_&,qu-NmJcG`LJ,~> -MZ<_U)?9[7rr;o^[95*n"U#B&QcA1[qu6QnrVlfds8W&us8N!!qu6QmrW2usq>V$*q;.)s(^pon -3,lY,rVlcpqu7E/s8Mr_O;nH*!t?h\:FlhT!YSZ,rqufrrW)utrXf"ra-;%$LT0,'r;QZos8N#j -ru(h9rVc`prVQ'>[X'G1"9A]A2/9r!r;ZfrJcGZJJ,~> -MZ<_U)?9[7rr;o^[95*n"U#B&QcA1[qu6QnrVlfds8W&us8N!!qu6QmrW2usq>V$*q;.)s(^pon -3,lY,rVlcpqu7E/s8Mr_O;nH*!t?h\:FlhT!YSZ,rqufrrW)utrXf"ra-;%$LT0,'r;QZos8N#j -ru(h9rVc`prVQ'>[X'G1"9A]A2/9r!r;ZfrJcGZJJ,~> -MZ<_U)?9[7rr;o^[95*n"U#B&QcA1[qu6QnrVlfds8W&us8N!!qu6QmrW2usq>V$*q;.)s(^pon -3,lY,rVlcpqu7E/s8Mr_O;nH*!t?h\:FlhT!YSZ,rqufrrW)utrXf"ra-;%$LT0,'r;QZos8N#j -ru(h9rVc`prVQ'>[X'G1"9A]A2/9r!r;ZfrJcGZJJ,~> -MuNqZs8N#trr2rt')V%-GVg-?":?r#Vpt#*qu6Wpnc/Xgrqus!rVlcprr2rtrql^,qqc]E(*>SO -R`P7&rr<#srqufprXo,,lAI2$!s8Q(!W`?.(gk_jqYpWprVlfp%/g)'r;QZnrr2rrs8W&sp\u64 -rVlfoqtK@!OB*S/! -MuNqZs8N#trr2rt')V%-GVg-?":?r#Vpt#*qu6Wpnc/Xgrqus!rVlcprr2rtrql^,qqc]E(*>SO -R`P7&rr<#srqufprXo,,lAI2$!s8Q(!W`?.(gk_jqYpWprVlfp%/g)'r;QZnrr2rrs8W&sp\u64 -rVlfoqtK@!OB*S/! -MuNqZs8N#trr2rt')V%-GVg-?":?r#Vpt#*qu6Wpnc/Xgrqus!rVlcprr2rtrql^,qqc]E(*>SO -R`P7&rr<#srqufprXo,,lAI2$!s8Q(!W`?.(gk_jqYpWprVlfp%/g)'r;QZnrr2rrs8W&sp\u64 -rVlfoqtK@!OB*S/! -M>nLnrVlcmrqucprVc?;P=6i/#R2"pC9uIXp\s^_"oeGurqu`orWW6!rVlfpqYq!'nZ$2FR`"(Q -qY^?jrr)rrrVZ]orr;m.qs_=(.iAm/%h]mDJE-P+rVl`ps8E`2r;Q`qrVc`prVlfps8N#rs8W)t -p](9m)Z9 -M>nLnrVlcmrqucprVc?;P=6i/#R2"pC9uIXp\s^_"oeGurqu`orWW6!rVlfpqYq!'nZ$2FR`"(Q -qY^?jrr)rrrVZ]orr;m.qs_=(.iAm/%h]mDJE-P+rVl`ps8E`2r;Q`qrVc`prVlfps8N#rs8W)t -p](9m)Z9 -M>nLnrVlcmrqucprVc?;P=6i/#R2"pC9uIXp\s^_"oeGurqu`orWW6!rVlfpqYq!'nZ$2FR`"(Q -qY^?jrr)rrrVZ]orr;m.qs_=(.iAm/%h]mDJE-P+rVl`ps8E`2r;Q`qrVc`prVlfps8N#rs8W)t -p](9m)Z9 -MuWhVs8O;Bs8Muss8N&srr;o^[;A#A"p+f45_-#tmem%`rVulrs8Mrr!WN&srr2rtrW3&urr3*" -s8N#qs8)]ts8N&srVc]qr;-F-rr)lrrr;rga-V$cD1/,0qZ$NnrqZQprr;us&-)Y/rr<#ss8Dut -rr;rrrr2p7rr<#ts8N#omb"[`3t),j"U>l,Fh-u?rVQQss8N&urdk+Ks*t~> -MuWhVs8O;Bs8Muss8N&srr;o^[;A#A"p+f45_-#tmem%`rVulrs8Mrr!WN&srr2rtrW3&urr3*" -s8N#qs8)]ts8N&srVc]qr;-F-rr)lrrr;rga-V$cD1/,0qZ$NnrqZQprr;us&-)Y/rr<#ss8Dut -rr;rrrr2p7rr<#ts8N#omb"[`3t),j"U>l,Fh-u?rVQQss8N&urdk+Ks*t~> -MuWhVs8O;Bs8Muss8N&srr;o^[;A#A"p+f45_-#tmem%`rVulrs8Mrr!WN&srr2rtrW3&urr3*" -s8N#qs8)]ts8N&srVc]qr;-F-rr)lrrr;rga-V$cD1/,0qZ$NnrqZQprr;us&-)Y/rr<#ss8Dut -rr;rrrr2p7rr<#ts8N#omb"[`3t),j"U>l,Fh-u?rVQQss8N&urdk+Ks*t~> -JcGTH'E.FJQ9uT""T\lN7X<87mdp;Rqu6Qts8MurrlP0ErqGpNq#:9Ts!%I@rqu`orr;utrr;rn -oBY/FJj1:Z!WiZ@-;TuYo)8Rfrdk+@s*t~> -JcGTH'E.FJQ9uT""T\lN7X<87mdp;Rqu6Qts8MurrlP0ErqGpNq#:9Ts!%I@rqu`orr;utrr;rn -oBY/FJj1:Z!WiZ@-;TuYo)8Rfrdk+@s*t~> -JcGTH'E.FJQ9uT""T\lN7X<87mdp;Rqu6Qts8MurrlP0ErqGpNq#:9Ts!%I@rqu`orr;utrr;rn -oBY/FJj1:Z!WiZ@-;TuYo)8Rfrdk+@s*t~> -JcGTHs8<`4r9L7h2\uf$! -JcGTHs8<`4r9L7h2\uf$! -JcGTHs8<`4r9L7h2\uf$! -JcGQGs8Eo9r;6!)R8>%>$O$S8)+&,5h!=\/r;Q`rrlP0Drr;rrr;PgX)ZK[6rquQbmGc9Y?TAu- -!sAi?*'8MTiVEKPrr3*!rr2hHs7?8@~> -JcGQGs8Eo9r;6!)R8>%>$O$S8)+&,5h!=\/r;Q`rrlP0Drr;rrr;PgX)ZK[6rquQbmGc9Y?TAu- -!sAi?*'8MTiVEKPrr3*!rr2hHs7?8@~> -JcGQGs8Eo9r;6!)R8>%>$O$S8)+&,5h!=\/r;Q`rrlP0Drr;rrr;PgX)ZK[6rquQbmGc9Y?TAu- -!sAi?*'8MTiVEKPrr3*!rr2hHs7?8@~> -JcGTHs8E)urqucp'`7CMN)qYL%0H_9$n$(sbi%s`r;Oh -JcGTHs8E)urqucp'`7CMN)qYL%0H_9$n$(sbi%s`r;Oh -JcGTHs8E)urqucp'`7CMN)qYL%0H_9$n$(sbi%s`r;Oh -JcGTHs8N&s!WN,urVuj4r:7Xg@4`?*"U"r?2d:s:e*$8squ-N>rrE#srojA&rVZNcl/9XNG>p4) -! -JcGTHs8N&s!WN,urVuj4r:7Xg@4`?*"U"r?2d:s:e*$8squ-N>rrE#srojA&rVZNcl/9XNG>p4) -! -JcGTHs8N&s!WN,urVuj4r:7Xg@4`?*"U"r?2d:s:e*$8squ-N>rrE#srojA&rVZNcl/9XNG>p4) -! -JcGBB!ri6!rVmi9r9`+:?99GK%0ltB(G&L@[`dFhnFueYr;QZgrrN,tr;QWo"9/8urq69lrr;us% -K6>+s8W)ts8Dorrr;usrrN-!qu.H0p@7M-cG68a3?f%?!WiQ7'dc%SS'gNqJcF^/J,~> -JcGBB!ri6!rVmi9r9`+:?99GK%0ltB(G&L@[`dFhnFueYr;QZgrrN,tr;QWo"9/8urq69lrr;us% -K6>+s8W)ts8Dorrr;usrrN-!qu.H0p@7M-cG68a3?f%?!WiQ7'dc%SS'gNqJcF^/J,~> -JcGBB!ri6!rVmi9r9`+:?99GK%0ltB(G&L@[`dFhnFueYr;QZgrrN,tr;QWo"9/8urq69lrr;us% -K6>+s8W)ts8Dorrr;usrrN-!qu.H0p@7M-cG68a3?f%?!WiQ7'dc%SS'gNqJcF^/J,~> -JcG!7)ufa#[u=o\*Y8SY!W`QM9llQ&b2MXVq#(-jrVQQps8Drr!<)osqu6Ekr;I!%rr)lsrr;rq -rVliqrr**$rVlcorr2j4q"!Y/e$>'_?7-'\!!!'%$5"@EA;e(\rr.KKhuA3~> -JcG!7)ufa#[u=o\*Y8SY!W`QM9llQ&b2MXVq#(-jrVQQps8Drr!<)osqu6Ekr;I!%rr)lsrr;rq -rVliqrr**$rVlcorr2j4q"!Y/e$>'_?7-'\!!!'%$5"@EA;e(\rr.KKhuA3~> -JcG!7)ufa#[u=o\*Y8SY!W`QM9llQ&b2MXVq#(-jrVQQps8Drr!<)osqu6Ekr;I!%rr)lsrr;rq -rVliqrr**$rVlcorr2j4q"!Y/e$>'_?7-'\!!!'%$5"@EA;e(\rr.KKhuA3~> -JcG!7s8F;Dr;5g/Z[YXs*to"f"U#;X0Loi?[aEpjlL+9;q>1$grVlforr<#t!<)ip!<)Wk!W;rr -rsA]'rr2iprql]nrVdi7q=jROmH!!5NaYC8+:SDR!X&`9&K33%M7V:)r;QZts8MrqJcF^/J,~> -JcG!7s8F;Dr;5g/Z[YXs*to"f"U#;X0Loi?[aEpjlL+9;q>1$grVlforr<#t!<)ip!<)Wk!W;rr -rsA]'rr2iprql]nrVdi7q=jROmH!!5NaYC8+:SDR!X&`9&K33%M7V:)r;QZts8MrqJcF^/J,~> -JcG!7s8F;Dr;5g/Z[YXs*to"f"U#;X0Loi?[aEpjlL+9;q>1$grVlforr<#t!<)ip!<)Wk!W;rr -rsA]'rr2iprql]nrVdi7q=jROmH!!5NaYC8+:SDR!X&`9&K33%M7V:)r;QZts8MrqJcF^/J,~> -JcG!7s8F_Prr2rtrr)`Z^PQDl0HCc6#6=f+!XU/DBS;hT]uejfl0\$4q"jsgrr;oqrr;utpAP6q -rr2rsrr2lrr[n*Gq=aCIlJpF7\>5C8;^VSG!<<-&!t,_\.R7QiW8RUQs8W)us8N&urr<#tJcFa0 -J,~> -JcG!7s8F_Prr2rtrr)`Z^PQDl0HCc6#6=f+!XU/DBS;hT]uejfl0\$4q"jsgrr;oqrr;utpAP6q -rr2rsrr2lrr[n*Gq=aCIlJpF7\>5C8;^VSG!<<-&!t,_\.R7QiW8RUQs8W)us8N&urr<#tJcFa0 -J,~> -JcG!7s8F_Prr2rtrr)`Z^PQDl0HCc6#6=f+!XU/DBS;hT]uejfl0\$4q"jsgrr;oqrr;utpAP6q -rr2rsrr2lrr[n*Gq=aCIlJpF7\>5C8;^VSG!<<-&!t,_\.R7QiW8RUQs8W)us8N&urr<#tJcFa0 -J,~> -JcFs61&h.Ns8N#rrr2ior:Sm`X+=J:+r_4*#R(A5!=0So2FCJSH'"]+^sh&oiSrn]lKIR,nGhr( -lf[NqjPo.Rfugh%P'q+F6T-8("T\]/#RCkO*@3FAKrVc6p\t3krVulsrrW2us8DqJs5O'/~> -JcFs61&h.Ns8N#rrr2ior:Sm`X+=J:+r_4*#R(A5!=0So2FCJSH'"]+^sh&oiSrn]lKIR,nGhr( -lf[NqjPo.Rfugh%P'q+F6T-8("T\]/#RCkO*@3FAKrVc6p\t3krVulsrrW2us8DqJs5O'/~> -JcFs61&h.Ns8N#rrr2ior:Sm`X+=J:+r_4*#R(A5!=0So2FCJSH'"]+^sh&oiSrn]lKIR,nGhr( -lf[NqjPo.Rfugh%P'q+F6T-8("T\]/#RCkO*@3FAKrVc6p\t3krVulsrrW2us8DqJs5O'/~> -JcFs61&h4Qrr;usr;Zcrrr2rtrqQ'OfWp?F:-UKV(D%&`"Tnc."pk\K&JQ!(2`XE9?XR^CL+A%2 -D.$aV83/RH'G:oc$3p\8"U5>E&fE/W7oX/W^#\PNq>L?nrVliqrr2iq"9/?"rdk+,s*t~> -JcFs61&h4Qrr;usr;Zcrrr2rtrqQ'OfWp?F:-UKV(D%&`"Tnc."pk\K&JQ!(2`XE9?XR^CL+A%2 -D.$aV83/RH'G:oc$3p\8"U5>E&fE/W7oX/W^#\PNq>L?nrVliqrr2iq"9/?"rdk+,s*t~> -JcFs61&h4Qrr;usr;Zcrrr2rtrqQ'OfWp?F:-UKV(D%&`"Tnc."pk\K&JQ!(2`XE9?XR^CL+A%2 -D.$aV83/RH'G:oc$3p\8"U5>E&fE/W7oX/W^#\PNq>L?nrVliqrr2iq"9/?"rdk+,s*t~> -JcF0u'E.OVa/GAXD-&nR*uc"/%gr[J"o\W-!WrN+!qlX7!W`?(!s8T,!sA`2#n%4V(`FPR6s+Pf -S[co.qgndes*t~> -JcF0u'E.OVa/GAXD-&nR*uc"/%gr[J"o\W-!WrN+!qlX7!W`?(!s8T,!sA`2#n%4V(`FPR6s+Pf -S[co.qgndes*t~> -JcF0u'E.OVa/GAXD-&nR*uc"/%gr[J"o\W-!WrN+!qlX7!W`?(!s8T,!sA`2#n%4V(`FPR6s+Pf -S[co.qgndes*t~> -JcF0u)ufg7s8;ijnEA`^caos5H"0l>4>\cH-n$De*VLEg)B0S:,UOli0f(dR;.4O&TX`G(hWaS, -rquirJcE^hJ,~> -JcF0u)ufg7s8;ijnEA`^caos5H"0l>4>\cH-n$De*VLEg)B0S:,UOli0f(dR;.4O&TX`G(hWaS, -rquirJcE^hJ,~> -JcF0u)ufg7s8;ijnEA`^caos5H"0l>4>\cH-n$De*VLEg)B0S:,UOli0f(dR;.4O&TX`G(hWaS, -rquirJcE^hJ,~> -JcF0u!<2uts8E*"rr;us"9&5us8Ms&qW$Jd_n<[jT_"Z^W40LUc/7LLrVZZns8Mrur;Q]prrW/u -rIP!fs*t~> -JcF0u!<2uts8E*"rr;us"9&5us8Ms&qW$Jd_n<[jT_"Z^W40LUc/7LLrVZZns8Mrur;Q]prrW/u -rIP!fs*t~> -JcF0u!<2uts8E*"rr;us"9&5us8Ms&qW$Jd_n<[jT_"Z^W40LUc/7LLrVZZns8Mrur;Q]prrW/u -rIP!fs*t~> -JcF0u"TJH#rVulrs8W,u&,lG*s8;lprqucorVuforq?BlrW` -JcF0u"TJH#rVulrs8W,u&,lG*s8;lprqucorVuforq?BlrW` -JcF0u"TJH#rVulrs8W,u&,lG*s8;lprqucorVuforq?BlrW` -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -JcC<$JcF4!J,~> -%%EndData -showpage -%%Trailer -end -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/lrqa.pdf b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/lrqa.pdf deleted file mode 100755 index a88814c7c7..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/lrqa.pdf and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/orangepixel.eps b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/orangepixel.eps deleted file mode 100755 index faad0538ee..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/orangepixel.eps +++ /dev/null @@ -1,41 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner -%%Title: orangepixel.eps -%%CreationDate: Tue Jul 4 00:11:46 2006 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: 14 14 16 16 -%%EndComments -%%BeginProlog -% Use own dictionary to avoid conflicts -10 dict begin -%%EndProlog -%%Page: 1 1 -% Translate for offset -14.173228346456694 14.173228346456694 translate -% Translate to begin of first scanline -0 0.99212598425196852 translate -0.99212598425196852 -0.99212598425196852 scale -% Image geometry -1 1 8 -% Transformation matrix -[ 1 0 0 1 0 0 ] -% Strings to hold RGB-samples per scanline -/rstr 1 string def -/gstr 1 string def -/bstr 1 string def -{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} -{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} -true 3 -%%BeginData: 32 ASCII Bytes -colorimage -!<7Q~> -!4%+~> -!!n)~> -%%EndData -showpage -%%Trailer -end -%%EOF diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/orangepixel.pdf b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/orangepixel.pdf deleted file mode 100755 index dd159c7bb9..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/orangepixel.pdf and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/slides.tex b/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/slides.tex deleted file mode 100755 index 99e348e128..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/slides/tfp07/slides.tex +++ /dev/null @@ -1,427 +0,0 @@ -\documentclass[handout]{beamer} - -\usepackage{pgf} -\usepackage{calc} -\usepackage{amsmath} -\usepackage{amssymb} -\usepackage{amsthm} -\usepackage[latin1]{inputenc} -\usepackage{beamerthemesplit} -\usepackage{alltt} -\usepackage{graphics} - -%\usetheme{Cea} -\usetheme{Madrid} - -%\newcommand{\rouge}[1]{{\color{orange}#1}} -\newcommand{\bleu}[1]{{\color{blue}#1}} -\newcommand{\monvert}[1]{{\color{blue}#1}} -\newcommand{\motcle}[1]{{\color{blue}#1}} -\newcommand{\ocamlgraph}{\textsf{OcamlGraph}} -\newcommand{\fleche}{\ensuremath{\rightarrow}} -\newcommand{\vara}{\ensuremath{\alpha}} -\newcommand{\varb}{\ensuremath{\beta}} - -\newcommand{\excode}[1]{\monvert{\texttt{#1}}} -\newcommand{\present}{{\monvert{\large\boldmath $\surd$}}} -\newcommand{\absent}{\textcolor{red}{\large\boldmath $\oslash$}} - -\newcommand{\oemph}[1]{\textcolor{red}{#1}} -\let\emph\oemph - -\author{Julien Signoles} -\institute{CEA LIST} -\title{Designing a Generic Graph Library} -\date{April 4th, 2007} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\begin{document} - -\setbeamertemplate{navigation symbols}{} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\begin{frame} - \begin{center} - \textcolor{red}{\LARGE Designing a Generic Graph Library \\[0.7em] - using ML Functors}\\[2em] - - {\large Sylvain Conchon, Jean-Christophe Filliâtre} - \\[0.7em] - \textcolor{blue}{\large LRI, Paris Sud University CNRS}\\[1.4em] - \textcolor{red}{\large \textit{Julien Signoles}}\\[0.7em] - \textcolor{blue}{\large CEA LIST} - \end{center} - ~\hfill - \includegraphics[width=0.15\textwidth]{cealist.pdf} - \hfill\hfill - \includegraphics[width=0.15\textwidth]{lrilogo.jpg} - \hfill~ -\end{frame} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%\section[Introduction]{} - -\begin{frame} - \frametitle{OcamlGraph} - \begin{itemize} - \item \emph{What is \ocamlgraph?} - - \qquad a graph library for Ocaml (\bleu{\url{ocamlgraph.lri.fr}}) - - \pause\vskip10pt - \item - \emph{Why \ocamlgraph?} - - \qquad no graph library for Ocaml - - \pause\vskip10pt - \item \emph{Why a talk about \ocamlgraph?} - -% \qquad designing a generic graph library is not so easy: - - \begin{itemize} - \item how to provide many different graph data structures? - \item how to provide reusable graph algorithms? - \end{itemize} - -\bigskip - \begin{center} - \bleu{massive use of Ocaml's module system, especially functors} - \end{center} - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{Outline} - \begin{itemize} - \item Using OcamlGraph - \vskip15pt - \item Implementing OcamlGraph - \vskip15pt - \item Conclusion - \end{itemize} -\end{frame} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%\section[Interface]{} - -\begin{frame}[containsverbatim] - \frametitle{Using a Graph Library} - \begin{center} - \bleu{What kind of graphs do you need?} - \end{center} -\bigskip - \begin{itemize} - \item Mutable graph? - \hfill \excode{Imperative} or \excode{Persistent} - \vskip10pt - \item Directed? - \hfill \excode{Digraph} or \excode{Graph} - \vskip10pt - \item Labels on edges? - \hfill \excode{Labeled} (or unlabeled) - \vskip10pt - \item Abstract data type for vertices? - \hfill \excode{Abstract} or \excode{Concrete} - \vskip10pt - \end{itemize} - -\bigskip -\begin{center} -all possibilities provided as \emph{functors} -\end{center} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Examples} - \begin{itemize} - \item imperative directed graphs with integer vertices and unlabeled edges -\medskip - \begin{alltt} -module G = - \emph{Imperative.Digraph.Abstract}(struct type t = int end) - \end{alltt} - - \item persistent undirected graphs with string vertices and edges -\medskip - \begin{alltt} -module S = struct type t = string ... end -module G = \emph{Persistent.Graph.ConcreteLabeled}(S)(S) - \end{alltt} - \end{itemize} -\end{frame} - -% \begin{frame}[containsverbatim] -% \frametitle{Interfaces} -% \emph{Common interface for all graphs:} -% \begin{alltt} -% module type \bleu{G} = sig ... end -% \end{alltt} -% \emph{Interface for persistent graphs:} -% \begin{alltt} -% module type \bleu{P} = sig -% include \bleu{G} -% ... -% end -% \end{alltt} -% \emph{Interface for imperative graphs:} -% \begin{alltt} -% module type \bleu{I} = sig -% include \bleu{G} -% ... -% end -% \end{alltt} -% \end{frame} - - -\begin{frame}\frametitle{All Graph Data Structures} - \includegraphics[width=\textwidth]{interface.pdf} -\vskip-1pt -\begin{itemize} -\item 8 \bleu{persistent}: implemented with AVLs -\item 8 \bleu{imperative}: implemented with hash tables -\item 3 \bleu{specialized}: adjacency matrices and bidirectional graphs -\end{itemize} -\vskip-3pt -\begin{center}\emph{all together, 19 data structures}\end{center} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Graph Operations} - \begin{itemize} - \item \emph{creation} (insertion, suppression, etc.) - \begin{alltt} - val add_vertex : t \fleche\ vertex \fleche\ unit - \end{alltt} - \item \emph{test functions} - \begin{alltt} - val mem_edge : t \fleche\ vertex \fleche\ vertex \fleche\ bool - \end{alltt} - \item \emph{iterators} (vertices, edges, successors, etc.) - \begin{alltt} - val iter_vertex : (vertex \fleche\ unit) \fleche\ t \fleche\ unit - \end{alltt} - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{Graph Algorithms} - - \begin{center} - written independently of the graph implementation\\[1.2em] - \emph{algorithm = functor}\\[1em] - \end{center} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Example: Shortest Path} - - \begin{enumerate} - \item \emph{instantiating} the functor - \begin{alltt} - module W = struct - type t = int - let zero = 0 - let add = (+) - ... - end - module Dij = \emph{Path.Dijkstra}(G)(W) - \end{alltt} - - \item \emph{using} the resulting module - \begin{alltt} - let path,w = \emph{Dij.shortest_path} g v1 v2 - \end{alltt} - \end{enumerate} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Minimal Functor Signature} -only the \emph{required operations} as functor parameters - \begin{alltt} -module type G = sig - type t - module V : sig type t ... end - module E : sig type t ... end - val \emph{iter_succ_e} : (E.t -> unit) -> t -> V.t -> unit -end -module Dijkstra - (G: G) - (W: sig type t val \emph{weight} : G.E.t -> t ... end) -sig - val shortest_path : G.t -> G.V.t -> G.V.t -> - G.E.t list * W.t -end - \end{alltt} -\end{frame} - -\begin{frame} - \frametitle{Benefits of Functorized Algorithms} - - \begin{itemize} - \item clearly \emph{separates} algorithm from data structure\vskip8pt - \item possible use on \emph{non-\ocamlgraph} data structures\vskip8pt - \item easy \emph{extension} with new algorithms\vskip8pt - \end{itemize} - -\end{frame} - -\begin{frame} - \frametitle{Existing Algorithms} - \begin{itemize} - \item traversal: 7 DFS, 2 BFS, 2 cycle detections - \item building: - \begin{itemize} - \item classic graphs (e.g. de Bruijn's) - \item random graphs (e.g. planar graph) - \end{itemize} - \item Dijkstra's shortest path - \item strongly connected components - \item Goldberg's and Ford-Fulkerson's maximal flow - \item $k$-coloring - \item topological sorting - \item Kruskal's minimum spanning tree - \item misc. operations: transitive closure, complement, mirror, - neighborhood, \dots - \item interfaces with Graphviz and GML -\end{itemize} -\end{frame} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%\section[Implementation]{} - -\begin{frame} - \frametitle{Outline} - \begin{itemize} - \item \textcolor{black!30}{Using OcamlGraph\vskip15pt} - \item Implementing OcamlGraph\vskip15pt - \item \textcolor{black!30}{Conclusion\vskip15pt} - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{Software Engineering} - \begin{center} - \bleu{How to code and to maintain 19 implementations \\ - and so many algorithms without difficulty?} - \end{center} -\end{frame} - -\begin{frame} - \frametitle{Factorizing Code with Functors} - \begin{enumerate} - \item - abstracting the underlying implementation (AVL or hash table) by using a - common signature \excode{HM} - - \vskip8pt\pause - \item - one functor for each feature - \vskip1pt - \begin{itemize} - \item \excode{Minimal}: common operations - \vskip6pt - \item \excode{Labeled}/\excode{Unlabeled} - \vskip6pt - \item \excode{Pred}: predecessors from successors - \vskip6pt - \item \excode{Make\_Abstract}: abstract graphs from concrete ones - \end{itemize} - \end{enumerate} -\end{frame} - -\begin{frame}[containsverbatim] - \frametitle{Example} - -persistent or imperative unlabeled directed graphs - -\begin{alltt} -\motcle{module} Make - (F: \motcle{functor}(X: COMPARABLE) \fleche HM \motcle{with type} key = X.t) = -\motcle{struct} - \motcle{module} Digraph = \motcle{struct} - \motcle{module} Concrete(V: COMPARABLE) = \motcle{struct} - \motcle{include} \emph{ConcreteVertex}(F)(V) - \motcle{include} \emph{Unlabeled}(V)(HM) - \motcle{include} \emph{Minimal}(S)(HM) - \motcle{end} -\motcle{end} -\motcle{module} I = Make(Make_Hashtbl) -\motcle{module} P = Make(Make_Map) -\end{alltt} -\end{frame} - -\begin{frame} - \frametitle{Code Factorization} - - \begin{center} - all together, 19 data structures with 45 operations each \\[1em] - - \emph{855 operations in 1000 lines of code} - \end{center} -\end{frame} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -\begin{frame} - \frametitle{Outline} - \begin{itemize} - \item \textcolor{black!30}{Using OcamlGraph\vskip15pt - \item Implementing OcamlGraph\vskip15pt} - \item Conclusion - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{Comparison} - \begin{center} - \begin{tabular}{|l||c|c|c|c|c|} - \hline - Library & Language &P/I& Genericity & Data struct. \\\hline\hline - GTL & C++ & I & \absent & 1 \\\hline - LEDA & C++ & I & \absent & 2 \\\hline - BGL & C++ & I & \present & 2 \\\hline - JDSL & Java & I & \present & 1 \\\hline - FGL & Haskell & P & \absent & 1 \\\hline - MLRisc & SML & I & \absent & 1 \\\hline -% Baire & Ocaml &P/I& --- & 8 \\\hline - \emph{\ocamlgraph}& Ocaml &P/I& \present & \emph{19} \\\hline - \end{tabular} - \end{center} -\end{frame} - -\begin{frame} - \frametitle{Figures} - \begin{itemize} - \item \ocamlgraph\ is\vskip2pt - \begin{itemize} - \item 7000 lines of code (2000 lines of external contributions) - \vskip7pt - \item 9 men-weeks of work - \end{itemize} - \begin{center} - \emph{only possible thanks to ML functors} - \end{center}\vskip10pt - \pause - \item benchmarks\vskip2pt - \begin{itemize} - \item creation rate $\approx$ 100 000 edges per second\vskip7pt - \item traversal rate $\approx$ 1 million edges per second - \end{itemize} - \begin{center} - \emph{compares to other graph libraries} - \end{center} - \end{itemize} -\end{frame} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\end{document} - diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/abstract.tex b/jscomp/build_tests/ocamlgraph/papers/tfp07/abstract.tex deleted file mode 100755 index 1af049d9e9..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/abstract.tex +++ /dev/null @@ -1,40 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\title{\bf Designing a Generic Graph Library \\ using ML Functors} - -\author - {Sylvain Conchon$^1$ \quad - Jean-Christophe Filli\^atre$^1$ \quad - Julien Signoles$^2$} - -\date{$^1$ LRI, Univ Paris-Sud, CNRS, Orsay F-91405\\ -INRIA Futurs, ProVal, Orsay F-91893\\ - \texttt{\{conchon,filliatr\}@lri.fr} \\[0.5em] - $^2$ CEA-LIST, Laboratoire S\^uret\'e des Logiciels \\ - \texttt{Julien.Signoles@cea.fr}} - -\maketitle -\thispagestyle{empty} - -\begin{abstract} - This paper details the design and implementation of \textsc{Ocamlgraph}, a - highly generic graph library for the programming language \textsc{Ocaml}. - This library features a large set of graph data - structures---directed or undirected, with or without labels on - vertices and edges, as persistent or mutable data structures, - etc.---and a large set of graph algorithms. Algorithms are written - independently from graph data structures, which allows combining - user data structure (resp. algorithm) with \textsc{Ocamlgraph} algorithm - (resp. data structure). Genericity is obtained through massive use - of the \textsc{Ocaml} module system and its functions, the so-called - \emph{functors}. -\end{abstract} - -\end{document} - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: t -%%% End: diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/answers-tfp.txt b/jscomp/build_tests/ocamlgraph/papers/tfp07/answers-tfp.txt deleted file mode 100755 index 96d7a52e35..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/answers-tfp.txt +++ /dev/null @@ -1,87 +0,0 @@ - --------------------------------------------------------------------------- - -> Given the page limit, the paper could perhaps be extended to give even more -> examples. - -We added a new section 1.5.4 "Building Graphs" presenting some -functors from ocamlgraph to build graphs independently of the -persistent or imperative nature (this is related to another question -below). - ---------------------------------------------------------------------------- - -> There is something very strange about your references. - -This is fixed. - -> I'm surprised that your Imperative.Graph.Abstract graphs appear to -> have *integer* marks built-in - -Indeed this is somewhat of a limitation. We have already patched -ocamlgraph accordingly and added a note in the Aknowledgements section -to indicate this change. - -> It would also be worth adding an appendix or a table listing the -> various functors supported in your library, with just a short sentence -> for each. - -There are two many functors in our library to be listed in the paper -(even in an appendix). But we added a note about the availability of -the API at http://ocamlgraph.lri.fr/doc/ in the paper. - -> I don't understand the last column in Fig 1. - -Fixed with yes/no/meaningless instead of signs. - -> Please add a citation on page 9 where you say "percolation algorithm". I'm -> not familiar with this term. - -We removed the percolation term. - - ---------------------------------------------------------------------------- - -> but the paper needs much more explanation of the OCAML -> module system, ML functors, and their support for generic -> programming. - -We added a whole section (1.2) about ocaml module system. - -> In the conclusions, you state that your approach provides greater -> consistency than the mere use of higher-order functions. Please -> elaborate on this point. - -We rephrased the sentence (removing comparison to higher-order -functions, which we thought to be folklore but was indeed obscure). - -> You state that the modifiers for imperative and persistent graphs -> have different types. How can you then type -> the generic algorithms using these modifiers? Do you require the -> types of the modifiers to be in a subtype relation? - -We added a whole section (1.5.4) about the issue of graph building. - -> How can you ensure that the generic graph algorithms work correctly -> for the user's own graph structures. How do you specify -> side-conditions that the user's graph implementation should respect? - -We added a sentence indicating that the user is responsible for -fulfilling the requirements over the functor parameters. - -> I would like to see the generic coloring routine. - -Added as appendix B. - -> In Figure 3m, you used a too small font size, a looking glass is needed to -> read the boxes. - -We agree that the font is small but we didn't figure out how to -enlarge it due to lack of space (the figure was originally designed to -be A4-paper wide). - -> This figure should be explained in more detail. Comment on the -> subtyping and functor application relations. - -We added such explanations. Moreover, module subtyping is now also -covered in the new section about ocaml module system. diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/bench1c.tex b/jscomp/build_tests/ocamlgraph/papers/tfp07/bench1c.tex deleted file mode 100755 index 6bb89cba3a..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/bench1c.tex +++ /dev/null @@ -1,156 +0,0 @@ -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(120.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,123){\makebox(0,0)[r]{ 0}} -\put(969.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,170.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,170){\makebox(0,0)[r]{ 2}} -\put(969.0,170.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,216.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,216){\makebox(0,0)[r]{ 4}} -\put(969.0,216.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,263.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,263){\makebox(0,0)[r]{ 6}} -\put(969.0,263.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,310.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,310){\makebox(0,0)[r]{ 8}} -\put(969.0,310.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,357.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,357){\makebox(0,0)[r]{ 10}} -\put(969.0,357.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,403.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,403){\makebox(0,0)[r]{ 12}} -\put(969.0,403.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,450.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,450){\makebox(0,0)[r]{ 14}} -\put(969.0,450.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,497.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,497){\makebox(0,0)[r]{ 16}} -\put(969.0,497.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,543.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,543){\makebox(0,0)[r]{ 18}} -\put(969.0,543.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,590){\makebox(0,0)[r]{ 20}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(120,82){\makebox(0,0){ 100}} -\put(120.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(217.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(217,82){\makebox(0,0){ 200}} -\put(217.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(313.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(313,82){\makebox(0,0){ 300}} -\put(313.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(410.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(410,82){\makebox(0,0){ 400}} -\put(410.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(506.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(506,82){\makebox(0,0){ 500}} -\put(506.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(603.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(603,82){\makebox(0,0){ 600}} -\put(603.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(699.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(699,82){\makebox(0,0){ 700}} -\put(699.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(796.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(796,82){\makebox(0,0){ 800}} -\put(796.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(892.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(892,82){\makebox(0,0){ 900}} -\put(892.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,82){\makebox(0,0){ 1000}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(120.0,123.0){\rule[-0.200pt]{209.342pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(120.0,590.0){\rule[-0.200pt]{209.342pt}{0.400pt}} -\put(120.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(554,21){\makebox(0,0){number of nodes $V$}} -\put(180,550){\makebox(0,0)[r]{IA}} -\put(200.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(120,124){\usebox{\plotpoint}} -\multiput(120.00,124.60)(14.080,0.468){5}{\rule{9.800pt}{0.113pt}} -\multiput(120.00,123.17)(76.660,4.000){2}{\rule{4.900pt}{0.400pt}} -\multiput(217.00,128.58)(4.505,0.492){19}{\rule{3.591pt}{0.118pt}} -\multiput(217.00,127.17)(88.547,11.000){2}{\rule{1.795pt}{0.400pt}} -\multiput(313.00,139.58)(2.739,0.495){33}{\rule{2.256pt}{0.119pt}} -\multiput(313.00,138.17)(92.318,18.000){2}{\rule{1.128pt}{0.400pt}} -\multiput(410.00,157.58)(1.939,0.497){47}{\rule{1.636pt}{0.120pt}} -\multiput(410.00,156.17)(92.604,25.000){2}{\rule{0.818pt}{0.400pt}} -\multiput(506.00,182.58)(1.479,0.497){63}{\rule{1.276pt}{0.120pt}} -\multiput(506.00,181.17)(94.352,33.000){2}{\rule{0.638pt}{0.400pt}} -\multiput(603.00,215.58)(2.111,0.496){43}{\rule{1.770pt}{0.120pt}} -\multiput(603.00,214.17)(92.327,23.000){2}{\rule{0.885pt}{0.400pt}} -\multiput(699.00,238.58)(1.188,0.498){79}{\rule{1.046pt}{0.120pt}} -\multiput(699.00,237.17)(94.828,41.000){2}{\rule{0.523pt}{0.400pt}} -\multiput(796.00,279.58)(0.801,0.499){117}{\rule{0.740pt}{0.120pt}} -\multiput(796.00,278.17)(94.464,60.000){2}{\rule{0.370pt}{0.400pt}} -\multiput(892.00,339.58)(1.249,0.498){75}{\rule{1.095pt}{0.120pt}} -\multiput(892.00,338.17)(94.728,39.000){2}{\rule{0.547pt}{0.400pt}} -\put(180,509){\makebox(0,0)[r]{IC}} -\multiput(200,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(300,509){\usebox{\plotpoint}} -\put(120,124){\usebox{\plotpoint}} -\multiput(120,124)(20.685,1.706){5}{\usebox{\plotpoint}} -\multiput(217,132)(20.665,1.937){5}{\usebox{\plotpoint}} -\multiput(313,141)(20.368,3.990){5}{\usebox{\plotpoint}} -\multiput(410,160)(20.086,5.231){4}{\usebox{\plotpoint}} -\multiput(506,185)(20.572,2.757){5}{\usebox{\plotpoint}} -\multiput(603,198)(18.564,9.282){5}{\usebox{\plotpoint}} -\multiput(699,246)(18.293,9.806){6}{\usebox{\plotpoint}} -\multiput(796,298)(19.299,7.639){5}{\usebox{\plotpoint}} -\multiput(892,336)(18.135,10.096){5}{\usebox{\plotpoint}} -\put(989,390){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(180,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(200.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(120,124){\usebox{\plotpoint}} -\multiput(120.00,125.40)(5.330,0.514){13}{\rule{7.960pt}{0.124pt}} -\multiput(120.00,122.34)(80.479,10.000){2}{\rule{3.980pt}{0.800pt}} -\multiput(217.00,135.40)(5.975,0.516){11}{\rule{8.733pt}{0.124pt}} -\multiput(217.00,132.34)(77.874,9.000){2}{\rule{4.367pt}{0.800pt}} -\multiput(313.00,144.41)(2.377,0.505){35}{\rule{3.895pt}{0.122pt}} -\multiput(313.00,141.34)(88.915,21.000){2}{\rule{1.948pt}{0.800pt}} -\multiput(410.00,165.41)(1.311,0.503){67}{\rule{2.276pt}{0.121pt}} -\multiput(410.00,162.34)(91.277,37.000){2}{\rule{1.138pt}{0.800pt}} -\multiput(506.00,202.41)(0.996,0.502){91}{\rule{1.784pt}{0.121pt}} -\multiput(506.00,199.34)(93.298,49.000){2}{\rule{0.892pt}{0.800pt}} -\multiput(603.00,251.41)(1.311,0.503){67}{\rule{2.276pt}{0.121pt}} -\multiput(603.00,248.34)(91.277,37.000){2}{\rule{1.138pt}{0.800pt}} -\multiput(699.00,288.41)(0.854,0.502){107}{\rule{1.561pt}{0.121pt}} -\multiput(699.00,285.34)(93.759,57.000){2}{\rule{0.781pt}{0.800pt}} -\multiput(796.00,345.41)(0.640,0.501){143}{\rule{1.224pt}{0.121pt}} -\multiput(796.00,342.34)(93.460,75.000){2}{\rule{0.612pt}{0.800pt}} -\multiput(892.00,420.41)(0.614,0.501){151}{\rule{1.182pt}{0.121pt}} -\multiput(892.00,417.34)(94.546,79.000){2}{\rule{0.591pt}{0.800pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(180,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(200,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(300,427){\usebox{\plotpoint}} -\put(120,125){\usebox{\plotpoint}} -\multiput(120,125)(20.598,2.548){5}{\usebox{\plotpoint}} -\multiput(217,137)(20.595,2.574){5}{\usebox{\plotpoint}} -\multiput(313,149)(19.941,5.756){5}{\usebox{\plotpoint}} -\multiput(410,177)(18.718,8.969){5}{\usebox{\plotpoint}} -\multiput(506,223)(17.652,10.918){5}{\usebox{\plotpoint}} -\multiput(603,283)(18.793,8.809){5}{\usebox{\plotpoint}} -\multiput(699,328)(15.215,14.117){7}{\usebox{\plotpoint}} -\multiput(796,418)(16.771,12.229){6}{\usebox{\plotpoint}} -\multiput(892,488)(14.377,14.970){6}{\usebox{\plotpoint}} -\put(989,589){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(120.0,123.0){\rule[-0.200pt]{209.342pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(120.0,590.0){\rule[-0.200pt]{209.342pt}{0.400pt}} -\put(120.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\end{picture} diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/bench1d.tex b/jscomp/build_tests/ocamlgraph/papers/tfp07/bench1d.tex deleted file mode 100755 index 4b7a9d958b..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/bench1d.tex +++ /dev/null @@ -1,152 +0,0 @@ -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(100.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,123){\makebox(0,0)[r]{ 0}} -\put(969.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,175.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,175){\makebox(0,0)[r]{ 1}} -\put(969.0,175.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,227.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,227){\makebox(0,0)[r]{ 2}} -\put(969.0,227.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,279.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,279){\makebox(0,0)[r]{ 3}} -\put(969.0,279.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,331.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,331){\makebox(0,0)[r]{ 4}} -\put(969.0,331.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,382.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,382){\makebox(0,0)[r]{ 5}} -\put(969.0,382.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,434.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,434){\makebox(0,0)[r]{ 6}} -\put(969.0,434.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,486.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,486){\makebox(0,0)[r]{ 7}} -\put(969.0,486.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,538.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,538){\makebox(0,0)[r]{ 8}} -\put(969.0,538.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,590){\makebox(0,0)[r]{ 9}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(100,82){\makebox(0,0){ 100}} -\put(100.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(199.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(199,82){\makebox(0,0){ 200}} -\put(199.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(298.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(298,82){\makebox(0,0){ 300}} -\put(298.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(396.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(396,82){\makebox(0,0){ 400}} -\put(396.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(495.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(495,82){\makebox(0,0){ 500}} -\put(495.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(594.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(594,82){\makebox(0,0){ 600}} -\put(594.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(693.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(693,82){\makebox(0,0){ 700}} -\put(693.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(791.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(791,82){\makebox(0,0){ 800}} -\put(791.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(890.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(890,82){\makebox(0,0){ 900}} -\put(890.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,82){\makebox(0,0){ 1000}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(100.0,123.0){\rule[-0.200pt]{214.160pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(100.0,590.0){\rule[-0.200pt]{214.160pt}{0.400pt}} -\put(100.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(544,21){\makebox(0,0){number of nodes $V$}} -\put(160,550){\makebox(0,0)[r]{IA}} -\put(180.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(100,124){\usebox{\plotpoint}} -\multiput(100.00,124.61)(21.895,0.447){3}{\rule{13.300pt}{0.108pt}} -\multiput(100.00,123.17)(71.395,3.000){2}{\rule{6.650pt}{0.400pt}} -\multiput(199.00,127.59)(8.898,0.482){9}{\rule{6.700pt}{0.116pt}} -\multiput(199.00,126.17)(85.094,6.000){2}{\rule{3.350pt}{0.400pt}} -\multiput(298.00,133.58)(4.600,0.492){19}{\rule{3.664pt}{0.118pt}} -\multiput(298.00,132.17)(90.396,11.000){2}{\rule{1.832pt}{0.400pt}} -\multiput(396.00,144.58)(2.964,0.495){31}{\rule{2.429pt}{0.119pt}} -\multiput(396.00,143.17)(93.958,17.000){2}{\rule{1.215pt}{0.400pt}} -\multiput(495.00,161.58)(3.370,0.494){27}{\rule{2.740pt}{0.119pt}} -\multiput(495.00,160.17)(93.313,15.000){2}{\rule{1.370pt}{0.400pt}} -\multiput(594.00,176.58)(0.739,0.499){131}{\rule{0.691pt}{0.120pt}} -\multiput(594.00,175.17)(97.566,67.000){2}{\rule{0.346pt}{0.400pt}} -\multiput(693.00,241.92)(3.867,-0.493){23}{\rule{3.115pt}{0.119pt}} -\multiput(693.00,242.17)(91.534,-13.000){2}{\rule{1.558pt}{0.400pt}} -\multiput(791.58,230.00)(0.499,0.576){195}{\rule{0.120pt}{0.561pt}} -\multiput(790.17,230.00)(99.000,112.836){2}{\rule{0.400pt}{0.280pt}} -\multiput(890.00,344.58)(1.156,0.498){83}{\rule{1.021pt}{0.120pt}} -\multiput(890.00,343.17)(96.881,43.000){2}{\rule{0.510pt}{0.400pt}} -\put(160,509){\makebox(0,0)[r]{IC}} -\multiput(180,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(280,509){\usebox{\plotpoint}} -\put(100,124){\usebox{\plotpoint}} -\multiput(100,124)(20.739,0.838){5}{\usebox{\plotpoint}} -\multiput(199,128)(20.717,1.256){5}{\usebox{\plotpoint}} -\multiput(298,134)(20.602,2.523){5}{\usebox{\plotpoint}} -\multiput(396,146)(20.754,0.210){5}{\usebox{\plotpoint}} -\multiput(495,147)(17.350,11.391){5}{\usebox{\plotpoint}} -\multiput(594,212)(20.751,-0.419){5}{\usebox{\plotpoint}} -\multiput(693,210)(15.918,13.319){6}{\usebox{\plotpoint}} -\multiput(791,292)(18.750,8.901){5}{\usebox{\plotpoint}} -\multiput(890,339)(17.028,11.868){6}{\usebox{\plotpoint}} -\put(989,408){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(160,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(180.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(100,125){\usebox{\plotpoint}} -\multiput(100.00,126.40)(8.534,0.526){7}{\rule{11.514pt}{0.127pt}} -\multiput(100.00,123.34)(75.102,7.000){2}{\rule{5.757pt}{0.800pt}} -\multiput(199.00,133.41)(3.032,0.507){27}{\rule{4.859pt}{0.122pt}} -\multiput(199.00,130.34)(88.915,17.000){2}{\rule{2.429pt}{0.800pt}} -\multiput(298.00,150.41)(4.378,0.511){17}{\rule{6.733pt}{0.123pt}} -\multiput(298.00,147.34)(84.025,12.000){2}{\rule{3.367pt}{0.800pt}} -\multiput(396.00,162.41)(1.801,0.504){49}{\rule{3.029pt}{0.121pt}} -\multiput(396.00,159.34)(92.714,28.000){2}{\rule{1.514pt}{0.800pt}} -\multiput(495.00,190.41)(0.828,0.502){113}{\rule{1.520pt}{0.121pt}} -\multiput(495.00,187.34)(95.845,60.000){2}{\rule{0.760pt}{0.800pt}} -\multiput(594.00,250.41)(1.084,0.502){85}{\rule{1.922pt}{0.121pt}} -\multiput(594.00,247.34)(95.011,46.000){2}{\rule{0.961pt}{0.800pt}} -\multiput(693.00,296.41)(0.819,0.502){113}{\rule{1.507pt}{0.121pt}} -\multiput(693.00,293.34)(94.873,60.000){2}{\rule{0.753pt}{0.800pt}} -\multiput(791.00,356.41)(0.688,0.501){137}{\rule{1.300pt}{0.121pt}} -\multiput(791.00,353.34)(96.302,72.000){2}{\rule{0.650pt}{0.800pt}} -\multiput(890.00,428.41)(0.669,0.501){141}{\rule{1.270pt}{0.121pt}} -\multiput(890.00,425.34)(96.363,74.000){2}{\rule{0.635pt}{0.800pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(160,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(180,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(280,427){\usebox{\plotpoint}} -\put(100,125){\usebox{\plotpoint}} -\multiput(100,125)(20.704,1.464){5}{\usebox{\plotpoint}} -\multiput(199,132)(20.171,4.890){5}{\usebox{\plotpoint}} -\multiput(298,156)(20.414,3.750){5}{\usebox{\plotpoint}} -\multiput(396,174)(19.569,6.918){5}{\usebox{\plotpoint}} -\multiput(495,209)(17.350,11.391){6}{\usebox{\plotpoint}} -\multiput(594,274)(20.261,4.503){5}{\usebox{\plotpoint}} -\multiput(693,296)(13.599,15.680){7}{\usebox{\plotpoint}} -\multiput(791,409)(15.435,13.876){6}{\usebox{\plotpoint}} -\multiput(890,498)(15.984,13.240){6}{\usebox{\plotpoint}} -\put(989,580){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(100.0,123.0){\rule[-0.200pt]{214.160pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(100.0,590.0){\rule[-0.200pt]{214.160pt}{0.400pt}} -\put(100.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\end{picture} diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/bench2bfs.tex b/jscomp/build_tests/ocamlgraph/papers/tfp07/bench2bfs.tex deleted file mode 100755 index 92af744e6f..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/bench2bfs.tex +++ /dev/null @@ -1,137 +0,0 @@ -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,123){\makebox(0,0)[r]{ 0}} -\put(969.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,190.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,190){\makebox(0,0)[r]{ 0.5}} -\put(969.0,190.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,256.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,256){\makebox(0,0)[r]{ 1}} -\put(969.0,256.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,323.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,323){\makebox(0,0)[r]{ 1.5}} -\put(969.0,323.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,390.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,390){\makebox(0,0)[r]{ 2}} -\put(969.0,390.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,457.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,457){\makebox(0,0)[r]{ 2.5}} -\put(969.0,457.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,523.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,523){\makebox(0,0)[r]{ 3}} -\put(969.0,523.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,590){\makebox(0,0)[r]{ 3.5}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140,82){\makebox(0,0){ 0}} -\put(140.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282,82){\makebox(0,0){ 100}} -\put(282.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423,82){\makebox(0,0){ 200}} -\put(423.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565,82){\makebox(0,0){ 300}} -\put(565.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706,82){\makebox(0,0){ 400}} -\put(706.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848,82){\makebox(0,0){ 500}} -\put(848.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,82){\makebox(0,0){ 600}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(564,21){\makebox(0,0){maze width $N$}} -\put(200,550){\makebox(0,0)[r]{IA}} -\put(220.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(225,124){\usebox{\plotpoint}} -\multiput(225.00,124.61)(18.770,0.447){3}{\rule{11.433pt}{0.108pt}} -\multiput(225.00,123.17)(61.270,3.000){2}{\rule{5.717pt}{0.400pt}} -\multiput(310.00,127.59)(6.442,0.485){11}{\rule{4.957pt}{0.117pt}} -\multiput(310.00,126.17)(74.711,7.000){2}{\rule{2.479pt}{0.400pt}} -\multiput(395.00,134.59)(5.579,0.488){13}{\rule{4.350pt}{0.117pt}} -\multiput(395.00,133.17)(75.971,8.000){2}{\rule{2.175pt}{0.400pt}} -\multiput(480.00,142.58)(4.404,0.491){17}{\rule{3.500pt}{0.118pt}} -\multiput(480.00,141.17)(77.736,10.000){2}{\rule{1.750pt}{0.400pt}} -\multiput(565.00,152.58)(3.068,0.494){25}{\rule{2.500pt}{0.119pt}} -\multiput(565.00,151.17)(78.811,14.000){2}{\rule{1.250pt}{0.400pt}} -\multiput(649.00,166.58)(1.426,0.497){57}{\rule{1.233pt}{0.120pt}} -\multiput(649.00,165.17)(82.440,30.000){2}{\rule{0.617pt}{0.400pt}} -\multiput(734.00,196.58)(1.123,0.498){73}{\rule{0.995pt}{0.120pt}} -\multiput(734.00,195.17)(82.935,38.000){2}{\rule{0.497pt}{0.400pt}} -\multiput(819.00,234.58)(0.852,0.498){97}{\rule{0.780pt}{0.120pt}} -\multiput(819.00,233.17)(83.381,50.000){2}{\rule{0.390pt}{0.400pt}} -\multiput(904.00,284.58)(1.186,0.498){69}{\rule{1.044pt}{0.120pt}} -\multiput(904.00,283.17)(82.832,36.000){2}{\rule{0.522pt}{0.400pt}} -\put(200,509){\makebox(0,0)[r]{IC}} -\multiput(220,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,509){\usebox{\plotpoint}} -\put(225,138){\usebox{\plotpoint}} -\multiput(225,138)(20.743,-0.732){5}{\usebox{\plotpoint}} -\multiput(310,135)(20.733,0.976){4}{\usebox{\plotpoint}} -\multiput(395,139)(20.397,3.839){4}{\usebox{\plotpoint}} -\multiput(480,155)(20.150,4.978){4}{\usebox{\plotpoint}} -\multiput(565,176)(19.159,7.983){4}{\usebox{\plotpoint}} -\multiput(649,211)(17.982,10.366){5}{\usebox{\plotpoint}} -\multiput(734,260)(18.164,10.043){5}{\usebox{\plotpoint}} -\multiput(819,307)(18.073,10.206){5}{\usebox{\plotpoint}} -\multiput(904,355)(13.135,16.071){6}{\usebox{\plotpoint}} -\put(989,459){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(220.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(225,127){\usebox{\plotpoint}} -\put(225,125.84){\rule{20.476pt}{0.800pt}} -\multiput(225.00,125.34)(42.500,1.000){2}{\rule{10.238pt}{0.800pt}} -\multiput(310.00,129.40)(6.111,0.520){9}{\rule{8.700pt}{0.125pt}} -\multiput(310.00,126.34)(66.943,8.000){2}{\rule{4.350pt}{0.800pt}} -\multiput(395.00,137.41)(3.790,0.511){17}{\rule{5.867pt}{0.123pt}} -\multiput(395.00,134.34)(72.823,12.000){2}{\rule{2.933pt}{0.800pt}} -\multiput(480.00,149.41)(2.446,0.506){29}{\rule{3.978pt}{0.122pt}} -\multiput(480.00,146.34)(76.744,18.000){2}{\rule{1.989pt}{0.800pt}} -\multiput(565.00,167.41)(1.288,0.503){59}{\rule{2.236pt}{0.121pt}} -\multiput(565.00,164.34)(79.358,33.000){2}{\rule{1.118pt}{0.800pt}} -\multiput(649.00,200.41)(1.544,0.504){49}{\rule{2.629pt}{0.121pt}} -\multiput(649.00,197.34)(79.544,28.000){2}{\rule{1.314pt}{0.800pt}} -\multiput(734.00,228.41)(1.603,0.504){47}{\rule{2.719pt}{0.121pt}} -\multiput(734.00,225.34)(79.358,27.000){2}{\rule{1.359pt}{0.800pt}} -\multiput(819.00,255.41)(0.531,0.501){153}{\rule{1.050pt}{0.121pt}} -\multiput(819.00,252.34)(82.821,80.000){2}{\rule{0.525pt}{0.800pt}} -\multiput(904.00,335.41)(1.982,0.505){37}{\rule{3.291pt}{0.122pt}} -\multiput(904.00,332.34)(78.170,22.000){2}{\rule{1.645pt}{0.800pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(220,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,427){\usebox{\plotpoint}} -\put(225,127){\usebox{\plotpoint}} -\multiput(225,127)(20.685,1.704){5}{\usebox{\plotpoint}} -\multiput(310,134)(20.552,2.901){4}{\usebox{\plotpoint}} -\multiput(395,146)(19.975,5.640){4}{\usebox{\plotpoint}} -\multiput(480,170)(19.572,6.908){4}{\usebox{\plotpoint}} -\multiput(565,200)(19.077,8.176){5}{\usebox{\plotpoint}} -\multiput(649,236)(16.394,12.729){5}{\usebox{\plotpoint}} -\multiput(734,302)(16.675,12.359){5}{\usebox{\plotpoint}} -\multiput(819,365)(15.746,13.523){5}{\usebox{\plotpoint}} -\multiput(904,438)(13.442,15.814){7}{\usebox{\plotpoint}} -\put(989,538){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\end{picture} diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/bench2dfs.tex b/jscomp/build_tests/ocamlgraph/papers/tfp07/bench2dfs.tex deleted file mode 100755 index d664bb38ce..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/bench2dfs.tex +++ /dev/null @@ -1,134 +0,0 @@ -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,123){\makebox(0,0)[r]{ 0}} -\put(969.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,201.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,201){\makebox(0,0)[r]{ 0.5}} -\put(969.0,201.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,279.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,279){\makebox(0,0)[r]{ 1}} -\put(969.0,279.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,356.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,356){\makebox(0,0)[r]{ 1.5}} -\put(969.0,356.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,434.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,434){\makebox(0,0)[r]{ 2}} -\put(969.0,434.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,512.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,512){\makebox(0,0)[r]{ 2.5}} -\put(969.0,512.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,590){\makebox(0,0)[r]{ 3}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140,82){\makebox(0,0){ 0}} -\put(140.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282,82){\makebox(0,0){ 100}} -\put(282.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423,82){\makebox(0,0){ 200}} -\put(423.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565,82){\makebox(0,0){ 300}} -\put(565.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706,82){\makebox(0,0){ 400}} -\put(706.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848,82){\makebox(0,0){ 500}} -\put(848.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,82){\makebox(0,0){ 600}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(564,21){\makebox(0,0){maze width $N$}} -\put(200,550){\makebox(0,0)[r]{IA}} -\put(220.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(225,125){\usebox{\plotpoint}} -\multiput(225.00,125.61)(18.770,0.447){3}{\rule{11.433pt}{0.108pt}} -\multiput(225.00,124.17)(61.270,3.000){2}{\rule{5.717pt}{0.400pt}} -\multiput(310.00,128.60)(12.325,0.468){5}{\rule{8.600pt}{0.113pt}} -\multiput(310.00,127.17)(67.150,4.000){2}{\rule{4.300pt}{0.400pt}} -\multiput(395.00,132.59)(5.579,0.488){13}{\rule{4.350pt}{0.117pt}} -\multiput(395.00,131.17)(75.971,8.000){2}{\rule{2.175pt}{0.400pt}} -\multiput(480.00,140.59)(4.922,0.489){15}{\rule{3.878pt}{0.118pt}} -\multiput(480.00,139.17)(76.951,9.000){2}{\rule{1.939pt}{0.400pt}} -\multiput(565.00,149.58)(3.312,0.493){23}{\rule{2.685pt}{0.119pt}} -\multiput(565.00,148.17)(78.428,13.000){2}{\rule{1.342pt}{0.400pt}} -\multiput(649.00,162.58)(0.947,0.498){87}{\rule{0.856pt}{0.120pt}} -\multiput(649.00,161.17)(83.224,45.000){2}{\rule{0.428pt}{0.400pt}} -\multiput(734.00,207.59)(7.633,0.482){9}{\rule{5.767pt}{0.116pt}} -\multiput(734.00,206.17)(73.031,6.000){2}{\rule{2.883pt}{0.400pt}} -\multiput(819.00,213.58)(0.852,0.498){97}{\rule{0.780pt}{0.120pt}} -\multiput(819.00,212.17)(83.381,50.000){2}{\rule{0.390pt}{0.400pt}} -\multiput(904.00,263.58)(0.582,0.499){143}{\rule{0.566pt}{0.120pt}} -\multiput(904.00,262.17)(83.826,73.000){2}{\rule{0.283pt}{0.400pt}} -\put(200,509){\makebox(0,0)[r]{IC}} -\multiput(220,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,509){\usebox{\plotpoint}} -\put(225,134){\usebox{\plotpoint}} -\multiput(225,134)(20.754,0.244){5}{\usebox{\plotpoint}} -\multiput(310,135)(20.720,1.219){4}{\usebox{\plotpoint}} -\multiput(395,140)(20.352,4.070){4}{\usebox{\plotpoint}} -\multiput(480,157)(19.782,6.284){4}{\usebox{\plotpoint}} -\multiput(565,184)(19.472,7.186){4}{\usebox{\plotpoint}} -\multiput(649,215)(16.207,12.966){6}{\usebox{\plotpoint}} -\multiput(734,283)(18.343,9.711){4}{\usebox{\plotpoint}} -\multiput(819,328)(15.026,14.319){6}{\usebox{\plotpoint}} -\multiput(904,409)(18.608,9.194){5}{\usebox{\plotpoint}} -\put(989,451){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(220.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(225,128){\usebox{\plotpoint}} -\put(225,126.84){\rule{20.476pt}{0.800pt}} -\multiput(225.00,126.34)(42.500,1.000){2}{\rule{10.238pt}{0.800pt}} -\multiput(310.00,130.40)(6.111,0.520){9}{\rule{8.700pt}{0.125pt}} -\multiput(310.00,127.34)(66.943,8.000){2}{\rule{4.350pt}{0.800pt}} -\multiput(395.00,138.40)(4.179,0.512){15}{\rule{6.382pt}{0.123pt}} -\multiput(395.00,135.34)(71.754,11.000){2}{\rule{3.191pt}{0.800pt}} -\multiput(480.00,149.41)(3.790,0.511){17}{\rule{5.867pt}{0.123pt}} -\multiput(480.00,146.34)(72.823,12.000){2}{\rule{2.933pt}{0.800pt}} -\multiput(565.00,161.41)(1.288,0.503){59}{\rule{2.236pt}{0.121pt}} -\multiput(565.00,158.34)(79.358,33.000){2}{\rule{1.118pt}{0.800pt}} -\multiput(649.00,194.41)(0.972,0.502){81}{\rule{1.745pt}{0.121pt}} -\multiput(649.00,191.34)(81.377,44.000){2}{\rule{0.873pt}{0.800pt}} -\multiput(734.00,238.41)(2.446,0.506){29}{\rule{3.978pt}{0.122pt}} -\multiput(734.00,235.34)(76.744,18.000){2}{\rule{1.989pt}{0.800pt}} -\multiput(819.00,256.41)(0.761,0.502){105}{\rule{1.414pt}{0.121pt}} -\multiput(819.00,253.34)(82.065,56.000){2}{\rule{0.707pt}{0.800pt}} -\multiput(904.00,312.41)(0.761,0.502){105}{\rule{1.414pt}{0.121pt}} -\multiput(904.00,309.34)(82.065,56.000){2}{\rule{0.707pt}{0.800pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(220,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,427){\usebox{\plotpoint}} -\put(225,128){\usebox{\plotpoint}} -\multiput(225,128)(20.685,1.704){5}{\usebox{\plotpoint}} -\multiput(310,135)(20.480,3.373){4}{\usebox{\plotpoint}} -\multiput(395,149)(19.912,5.857){4}{\usebox{\plotpoint}} -\multiput(480,174)(19.192,7.903){4}{\usebox{\plotpoint}} -\multiput(565,209)(18.739,8.923){5}{\usebox{\plotpoint}} -\multiput(649,249)(15.293,14.033){5}{\usebox{\plotpoint}} -\multiput(734,327)(18.865,8.656){5}{\usebox{\plotpoint}} -\multiput(819,366)(10.605,17.842){8}{\usebox{\plotpoint}} -\multiput(904,509)(18.432,9.541){5}{\usebox{\plotpoint}} -\put(989,553){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\end{picture} diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/bench2dij.tex b/jscomp/build_tests/ocamlgraph/papers/tfp07/bench2dij.tex deleted file mode 100755 index 1188e6229c..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/bench2dij.tex +++ /dev/null @@ -1,131 +0,0 @@ -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,123){\makebox(0,0)[r]{ 0}} -\put(969.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,216.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,216){\makebox(0,0)[r]{ 0.5}} -\put(969.0,216.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,310.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,310){\makebox(0,0)[r]{ 1}} -\put(969.0,310.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,403.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,403){\makebox(0,0)[r]{ 1.5}} -\put(969.0,403.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,497.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,497){\makebox(0,0)[r]{ 2}} -\put(969.0,497.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,590){\makebox(0,0)[r]{ 2.5}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140,82){\makebox(0,0){ 0}} -\put(140.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282,82){\makebox(0,0){ 100}} -\put(282.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423,82){\makebox(0,0){ 200}} -\put(423.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565,82){\makebox(0,0){ 300}} -\put(565.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706,82){\makebox(0,0){ 400}} -\put(706.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848,82){\makebox(0,0){ 500}} -\put(848.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,82){\makebox(0,0){ 600}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(564,21){\makebox(0,0){maze width $N$}} -\put(200,550){\makebox(0,0)[r]{IA}} -\put(220.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(225,125){\usebox{\plotpoint}} -\multiput(225.00,125.59)(9.393,0.477){7}{\rule{6.900pt}{0.115pt}} -\multiput(225.00,124.17)(70.679,5.000){2}{\rule{3.450pt}{0.400pt}} -\multiput(310.00,130.58)(3.641,0.492){21}{\rule{2.933pt}{0.119pt}} -\multiput(310.00,129.17)(78.912,12.000){2}{\rule{1.467pt}{0.400pt}} -\multiput(395.00,142.58)(2.706,0.494){29}{\rule{2.225pt}{0.119pt}} -\multiput(395.00,141.17)(80.382,16.000){2}{\rule{1.113pt}{0.400pt}} -\multiput(480.00,158.58)(2.543,0.495){31}{\rule{2.100pt}{0.119pt}} -\multiput(480.00,157.17)(80.641,17.000){2}{\rule{1.050pt}{0.400pt}} -\multiput(565.00,175.58)(2.513,0.495){31}{\rule{2.076pt}{0.119pt}} -\multiput(565.00,174.17)(79.690,17.000){2}{\rule{1.038pt}{0.400pt}} -\multiput(649.00,192.58)(0.760,0.499){109}{\rule{0.707pt}{0.120pt}} -\multiput(649.00,191.17)(83.532,56.000){2}{\rule{0.354pt}{0.400pt}} -\multiput(734.00,248.58)(2.543,0.495){31}{\rule{2.100pt}{0.119pt}} -\multiput(734.00,247.17)(80.641,17.000){2}{\rule{1.050pt}{0.400pt}} -\multiput(819.58,265.00)(0.499,0.647){167}{\rule{0.120pt}{0.618pt}} -\multiput(818.17,265.00)(85.000,108.718){2}{\rule{0.400pt}{0.309pt}} -\multiput(904.58,372.28)(0.499,-0.694){167}{\rule{0.120pt}{0.655pt}} -\multiput(903.17,373.64)(85.000,-116.640){2}{\rule{0.400pt}{0.328pt}} -\put(200,509){\makebox(0,0)[r]{IC}} -\multiput(220,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,509){\usebox{\plotpoint}} -\put(225,125){\usebox{\plotpoint}} -\multiput(225,125)(20.584,2.664){5}{\usebox{\plotpoint}} -\multiput(310,136)(20.640,2.185){4}{\usebox{\plotpoint}} -\multiput(395,145)(20.256,4.528){4}{\usebox{\plotpoint}} -\multiput(480,164)(19.848,6.071){4}{\usebox{\plotpoint}} -\multiput(565,190)(19.239,7.787){5}{\usebox{\plotpoint}} -\multiput(649,224)(15.563,13.732){5}{\usebox{\plotpoint}} -\multiput(734,299)(18.865,8.656){5}{\usebox{\plotpoint}} -\multiput(819,338)(10.885,17.672){7}{\usebox{\plotpoint}} -\multiput(904,476)(8.985,-18.710){10}{\usebox{\plotpoint}} -\put(989,299){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(220.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(225,127){\usebox{\plotpoint}} -\multiput(225.00,128.38)(13.857,0.560){3}{\rule{13.800pt}{0.135pt}} -\multiput(225.00,125.34)(56.357,5.000){2}{\rule{6.900pt}{0.800pt}} -\multiput(310.00,133.41)(3.790,0.511){17}{\rule{5.867pt}{0.123pt}} -\multiput(310.00,130.34)(72.823,12.000){2}{\rule{2.933pt}{0.800pt}} -\multiput(395.00,145.41)(2.772,0.507){25}{\rule{4.450pt}{0.122pt}} -\multiput(395.00,142.34)(75.764,16.000){2}{\rule{2.225pt}{0.800pt}} -\multiput(480.00,161.41)(2.599,0.507){27}{\rule{4.200pt}{0.122pt}} -\multiput(480.00,158.34)(76.283,17.000){2}{\rule{2.100pt}{0.800pt}} -\multiput(565.00,178.41)(1.421,0.503){53}{\rule{2.440pt}{0.121pt}} -\multiput(565.00,175.34)(78.936,30.000){2}{\rule{1.220pt}{0.800pt}} -\multiput(649.00,208.41)(0.909,0.502){87}{\rule{1.647pt}{0.121pt}} -\multiput(649.00,205.34)(81.582,47.000){2}{\rule{0.823pt}{0.800pt}} -\multiput(734.00,255.41)(0.710,0.502){113}{\rule{1.333pt}{0.121pt}} -\multiput(734.00,252.34)(82.233,60.000){2}{\rule{0.667pt}{0.800pt}} -\multiput(820.41,314.00)(0.501,0.600){163}{\rule{0.121pt}{1.160pt}} -\multiput(817.34,314.00)(85.000,99.592){2}{\rule{0.800pt}{0.580pt}} -\multiput(905.41,410.87)(0.501,-0.647){163}{\rule{0.121pt}{1.235pt}} -\multiput(902.34,413.44)(85.000,-107.436){2}{\rule{0.800pt}{0.618pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(220,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,427){\usebox{\plotpoint}} -\put(225,127){\usebox{\plotpoint}} -\multiput(225,127)(20.640,2.185){5}{\usebox{\plotpoint}} -\multiput(310,136)(20.352,4.070){4}{\usebox{\plotpoint}} -\multiput(395,153)(19.713,6.494){4}{\usebox{\plotpoint}} -\multiput(480,181)(19.713,6.494){4}{\usebox{\plotpoint}} -\multiput(565,209)(20.078,5.259){5}{\usebox{\plotpoint}} -\multiput(649,231)(15.746,13.523){5}{\usebox{\plotpoint}} -\multiput(734,304)(17.144,11.699){5}{\usebox{\plotpoint}} -\multiput(819,362)(9.690,18.355){9}{\usebox{\plotpoint}} -\multiput(904,523)(8.823,-18.787){9}{\usebox{\plotpoint}} -\put(989,342){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\end{picture} diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/bench2mem.tex b/jscomp/build_tests/ocamlgraph/papers/tfp07/bench2mem.tex deleted file mode 100755 index 4f3b65f7fd..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/bench2mem.tex +++ /dev/null @@ -1,136 +0,0 @@ -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(180.0,82.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(160,82){\makebox(0,0)[r]{ 0}} -\put(969.0,82.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(180.0,155.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(160,155){\makebox(0,0)[r]{ 5000}} -\put(969.0,155.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(180.0,227.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(160,227){\makebox(0,0)[r]{ 10000}} -\put(969.0,227.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(180.0,300.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(160,300){\makebox(0,0)[r]{ 15000}} -\put(969.0,300.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(180.0,372.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(160,372){\makebox(0,0)[r]{ 20000}} -\put(969.0,372.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(180.0,445.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(160,445){\makebox(0,0)[r]{ 25000}} -\put(969.0,445.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(180.0,517.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(160,517){\makebox(0,0)[r]{ 30000}} -\put(969.0,517.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(180.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(160,590){\makebox(0,0)[r]{ 35000}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(180.0,82.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(180,41){\makebox(0,0){ 0}} -\put(180.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(315.0,82.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(315,41){\makebox(0,0){ 100}} -\put(315.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(450.0,82.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(450,41){\makebox(0,0){ 200}} -\put(450.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(585.0,82.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(585,41){\makebox(0,0){ 300}} -\put(585.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(719.0,82.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(719,41){\makebox(0,0){ 400}} -\put(719.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(854.0,82.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(854,41){\makebox(0,0){ 500}} -\put(854.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,82.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,41){\makebox(0,0){ 600}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(180.0,82.0){\rule[-0.200pt]{194.888pt}{0.400pt}} -\put(989.0,82.0){\rule[-0.200pt]{0.400pt}{122.377pt}} -\put(180.0,590.0){\rule[-0.200pt]{194.888pt}{0.400pt}} -\put(180.0,82.0){\rule[-0.200pt]{0.400pt}{122.377pt}} -\put(240,550){\makebox(0,0)[r]{IA}} -\put(260.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(261,86){\usebox{\plotpoint}} -\multiput(261.00,86.58)(2.957,0.494){25}{\rule{2.414pt}{0.119pt}} -\multiput(261.00,85.17)(75.989,14.000){2}{\rule{1.207pt}{0.400pt}} -\multiput(342.00,100.58)(1.862,0.496){41}{\rule{1.573pt}{0.120pt}} -\multiput(342.00,99.17)(77.736,22.000){2}{\rule{0.786pt}{0.400pt}} -\multiput(423.00,122.58)(1.359,0.497){57}{\rule{1.180pt}{0.120pt}} -\multiput(423.00,121.17)(78.551,30.000){2}{\rule{0.590pt}{0.400pt}} -\multiput(504.00,152.58)(0.991,0.498){79}{\rule{0.890pt}{0.120pt}} -\multiput(504.00,151.17)(79.152,41.000){2}{\rule{0.445pt}{0.400pt}} -\multiput(585.00,193.58)(0.786,0.498){99}{\rule{0.727pt}{0.120pt}} -\multiput(585.00,192.17)(78.490,51.000){2}{\rule{0.364pt}{0.400pt}} -\multiput(665.00,244.58)(0.737,0.499){107}{\rule{0.689pt}{0.120pt}} -\multiput(665.00,243.17)(79.570,55.000){2}{\rule{0.345pt}{0.400pt}} -\multiput(746.00,299.58)(0.623,0.499){127}{\rule{0.598pt}{0.120pt}} -\multiput(746.00,298.17)(79.758,65.000){2}{\rule{0.299pt}{0.400pt}} -\multiput(827.00,364.58)(0.506,0.499){157}{\rule{0.505pt}{0.120pt}} -\multiput(827.00,363.17)(79.952,80.000){2}{\rule{0.253pt}{0.400pt}} -\multiput(908.00,444.58)(0.500,0.499){159}{\rule{0.500pt}{0.120pt}} -\multiput(908.00,443.17)(79.962,81.000){2}{\rule{0.250pt}{0.400pt}} -\put(240,509){\makebox(0,0)[r]{IC}} -\multiput(260,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(360,509){\usebox{\plotpoint}} -\put(261,86){\usebox{\plotpoint}} -\multiput(261,86)(20.599,2.543){4}{\usebox{\plotpoint}} -\multiput(342,96)(20.207,4.740){4}{\usebox{\plotpoint}} -\multiput(423,115)(19.900,5.896){5}{\usebox{\plotpoint}} -\multiput(504,139)(19.222,7.831){4}{\usebox{\plotpoint}} -\multiput(585,172)(18.377,9.648){4}{\usebox{\plotpoint}} -\multiput(665,214)(18.144,10.080){5}{\usebox{\plotpoint}} -\multiput(746,259)(17.466,11.213){4}{\usebox{\plotpoint}} -\multiput(827,311)(15.993,13.229){5}{\usebox{\plotpoint}} -\multiput(908,378)(16.188,12.990){5}{\usebox{\plotpoint}} -\put(989,443){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(240,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(260.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(261,86){\usebox{\plotpoint}} -\multiput(261.00,87.41)(3.048,0.509){21}{\rule{4.829pt}{0.123pt}} -\multiput(261.00,84.34)(70.978,14.000){2}{\rule{2.414pt}{0.800pt}} -\multiput(342.00,101.41)(1.887,0.505){37}{\rule{3.145pt}{0.122pt}} -\multiput(342.00,98.34)(74.471,22.000){2}{\rule{1.573pt}{0.800pt}} -\multiput(423.00,123.41)(1.281,0.503){57}{\rule{2.225pt}{0.121pt}} -\multiput(423.00,120.34)(76.382,32.000){2}{\rule{1.113pt}{0.800pt}} -\multiput(504.00,155.41)(1.020,0.502){73}{\rule{1.820pt}{0.121pt}} -\multiput(504.00,152.34)(77.222,40.000){2}{\rule{0.910pt}{0.800pt}} -\multiput(585.00,195.41)(0.803,0.502){93}{\rule{1.480pt}{0.121pt}} -\multiput(585.00,192.34)(76.928,50.000){2}{\rule{0.740pt}{0.800pt}} -\multiput(665.00,245.41)(0.699,0.502){109}{\rule{1.317pt}{0.121pt}} -\multiput(665.00,242.34)(78.266,58.000){2}{\rule{0.659pt}{0.800pt}} -\multiput(746.00,303.41)(0.604,0.501){127}{\rule{1.167pt}{0.121pt}} -\multiput(746.00,300.34)(78.577,67.000){2}{\rule{0.584pt}{0.800pt}} -\multiput(827.00,370.41)(0.525,0.501){147}{\rule{1.042pt}{0.121pt}} -\multiput(827.00,367.34)(78.838,77.000){2}{\rule{0.521pt}{0.800pt}} -\multiput(909.41,446.00)(0.501,0.524){155}{\rule{0.121pt}{1.040pt}} -\multiput(906.34,446.00)(81.000,82.842){2}{\rule{0.800pt}{0.520pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(240,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(260,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(360,427){\usebox{\plotpoint}} -\put(261,86){\usebox{\plotpoint}} -\multiput(261,86)(20.531,3.042){4}{\usebox{\plotpoint}} -\multiput(342,98)(20.207,4.740){4}{\usebox{\plotpoint}} -\multiput(423,117)(19.690,6.563){5}{\usebox{\plotpoint}} -\multiput(504,144)(19.053,8.233){4}{\usebox{\plotpoint}} -\multiput(585,179)(18.282,9.827){4}{\usebox{\plotpoint}} -\multiput(665,222)(17.662,10.902){5}{\usebox{\plotpoint}} -\multiput(746,272)(16.875,12.084){5}{\usebox{\plotpoint}} -\multiput(827,330)(16.090,13.111){5}{\usebox{\plotpoint}} -\multiput(908,396)(15.324,13.999){5}{\usebox{\plotpoint}} -\put(989,470){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(180.0,82.0){\rule[-0.200pt]{194.888pt}{0.400pt}} -\put(989.0,82.0){\rule[-0.200pt]{0.400pt}{122.377pt}} -\put(180.0,590.0){\rule[-0.200pt]{194.888pt}{0.400pt}} -\put(180.0,82.0){\rule[-0.200pt]{0.400pt}{122.377pt}} -\end{picture} diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/biblio.bib b/jscomp/build_tests/ocamlgraph/papers/tfp07/biblio.bib deleted file mode 100755 index fc8cda5df2..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/biblio.bib +++ /dev/null @@ -1,145 +0,0 @@ - -@misc{ObjectiveCaml, - title = {{The Objective Caml language}}, - note = {\url{http://caml.inria.fr/}} -} - - -@misc{Jdsl, - title = {{The Data Structures Library in Java}}, - note = {\url{http://www.cs.brown.edu/cgc/jdsl/}} -} - - -@misc{Mlrisc, - title = {{The MLRISC System}}, - note = {\url{http://cs1.cs.nyu.edu/leunga/www/MLRISC/Doc/html/INTRO.html}} -} - -@misc{Baire, - title = {{Baire}}, - note = {\url{http://www.edite-de-paris.com.fr/~fpons/Caml/Baire/}} -} - -@misc{Fgl, - title = {{FGL - A Functional Graph Library}}, - note = {\url{http://web.engr.oregonstate.edu/~erwig/fgl/}} -} - -@misc{Gtl, - title = {{The Graph Template Library}}, - note = {\url{http://infosun.fmi.uni-passau.de/GTL/}} -} - -@misc{Bgl, - title = {{BGL - The Boost Graph Library}}, - note = {\url{http://www.boost.org/libs/graph/doc/}} -} - -@article{Leda, - author = {Kurt Mehlhorn and Stefan Näher}, - title = {LEDA: a platform for combinatorial and geometric computing}, - journal = {Commun. ACM}, - volume = {38}, - number = {1}, - year = {1995}, - issn = {0001-0782}, - pages = {96--102}, - publisher = {ACM Press}, - } - -@article{Erwig, - author = "Martin Erwig", - title = "Inductive Graphs and Functional Graph Algorithms", - year = "2001", - journal = "{Journal of Functional Programming}", - volume = 11, - number = 5, - pages = "467--492", -} - - - -@ARTICLE{leroy00, - AUTHOR = {Xavier Leroy}, - TITLE = {A modular module system}, - JOURNAL = {Journal of Functional Programming}, - VOLUME = 10, - NUMBER = 3, - YEAR = 2000, - PAGES = {269--303}, - URL = {http://pauillac.inria.fr/~xleroy/publi/modular-modules-jfp.ps.gz} -} - - -@PhdThesis{Goldberg, - author = {Andrew V. Goldberg}, - title = {Efficient graph algorithms for sequential and parallel computers}, - school = {MIT, Cambridge, Massachusetts}, - year = 1987, - month = {January}, -} - -@Article{FF, - author = {L. R. Jr. Ford and D. R. Fulkerson}, - title = {Maximal Flow Through a Network}, - journal = {Canadian Journal of Mathematics}, - year = 1956, - pages = {99-404}, -} - -@BOOK{okasaki98, - AUTHOR = {Chris Okasaki}, - TITLE = {{Purely Functional Data Structures}}, - PUBLISHER = {Cambridge University Press}, - YEAR = 1998 -} - -@Book{coplien92, - author = {James O. Coplien}, - title = {{Advanced C++ Programming Styles and Idioms}}, - publisher = {Addison-Wesley}, - year = 1992 -} - -@TechReport{filliatre06, - author = {Jean-Christophe Filli\^atre}, - title = {{Backtracking Iterators}}, - institution = {LRI, Universit\'e Paris-Sud}, - year = 2006, - type = {{Research Report}}, - number = 1428, - month = {January}, - note = {\url{http://www.lri.fr/~filliatr/ftp/publis/enum-rr.ps.gz}} -} - -@InProceedings{ramsey05, - author = {Norman Ramsey}, - title = {{ML Module Mania: A Type-Safe Separately Compiled, Extensible Interpreter}}, - booktitle = {{ACM SIGPLAN Workshop on ML}}, - year = 2005 -} - -@Misc{Oleg, - author = {Oleg Kiselyov}, - title = {{Applicative translucent functors in Haskell}}, - year = 2004, - note = {At \url{http://www.haskell.org/pipermail/haskell/2004-August/014463.html}} -} - -@inproceedings{Dreyer2007, -author = {Dreyer, D. and Harper, R. and Chakravarty, M. M. T. }, -booktitle = {POPL}, -title = {Modular Type Classes}, -url = {http://www.cse.unsw.edu.au/~chak/papers/mtc-popl.pdf}, -year = {2007} -} - -[2] -@misc{Wehr2005, - title = "\emph{{ML} Modules and {Haskell} Type Classes: A Constructive Comparison}", - year = {2005}, - author = {Stefan Wehr}, - month = nov, - note = {Submitted for publication and available at \url{http://www.stefanwehr.de/diplom}} -} diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/cameraready.tex b/jscomp/build_tests/ocamlgraph/papers/tfp07/cameraready.tex deleted file mode 100755 index 2942f2c0e3..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/cameraready.tex +++ /dev/null @@ -1,19 +0,0 @@ -\documentclass[ams,llncs,book]{tfp07symp} - -\usepackage{amsmath} -\usepackage{url} -\usepackage{xspace} -\usepackage{alltt} -\usepackage{verbatim,rotating} -%\usepackage{color} -%\usepackage[dvips]{epsfig} -\usepackage{graphicx} - -\input{macros} - -\begin{document} -\pagestyle{plain} -\input{paper} -\end{document} - -% latex, latex, bibtex, latex ...... diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/dfs.ml b/jscomp/build_tests/ocamlgraph/papers/tfp07/dfs.ml deleted file mode 100755 index 257d0e1a8c..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/dfs.ml +++ /dev/null @@ -1,30 +0,0 @@ - -module type G = sig - type t - module V : Sig.HASHABLE - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_succ : (V.t -> unit) -> t -> V.t -> unit -end - -module Dfs(G : G) = struct - - module H = Hashtbl.Make(G.V) - - let dfs f g = - let h = H.create 65537 in - let stack = Stack.create () in - (* invariant: [h] contains exactly the vertices which have been pushed *) - let push v = - if not (H.mem h v) then begin H.add h v (); Stack.push v stack end - in - let loop () = - while not (Stack.is_empty stack) do - let v = Stack.pop stack in - f v; - G.iter_succ push g v - done - in - G.iter_vertex (fun v -> push v; loop ()) g - -end - diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/interface.eps b/jscomp/build_tests/ocamlgraph/papers/tfp07/interface.eps deleted file mode 100755 index 012b7fbe43..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/interface.eps +++ /dev/null @@ -1,565 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: interface.fig -%%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 -%%CreationDate: Fri May 12 16:12:19 2006 -%%For: conchon@pc8-144 (Sylvain Conchon) -%%BoundingBox: 0 0 967 429 -%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 429 moveto 0 0 lineto 967 0 lineto 967 429 lineto closepath clip newpath -130.0 440.1 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 50 -% Polyline -0 slj -0 slc -7.500 slw -n 225 4050 m 1350 4050 l 1350 4500 l 225 4500 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -810 4320 m -gs 1 -1 sc (Abstract) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 7560 4050 m 8685 4050 l 8685 4500 l 7560 4500 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -8100 4320 m -gs 1 -1 sc (Concrete) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 9315 4050 m 11790 4050 l 11790 4500 l 9315 4500 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -10575 4320 m -gs 1 -1 sc (ConcreteBidirectional) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 12600 3060 675 270 0 360 DrawEllipse gs col0 s gr - -/Times-Roman ff 190.50 scf sf -12600 3105 m -gs 1 -1 sc (G) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 8190 5625 405 225 0 360 DrawEllipse gs col0 s gr - -/Times-Roman ff 222.25 scf sf -8190 5670 m -gs 1 -1 sc (I) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 225 1575 m 1350 1575 l 1350 2025 l 225 2025 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -810 1845 m -gs 1 -1 sc (Abstract) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 7560 1575 m 8685 1575 l 8685 2025 l 7560 2025 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -7785 1845 m -gs 1 -1 sc (Concrete) col0 sh gr -% Ellipse -n 4500 495 450 180 0 360 DrawEllipse gs col0 s gr - -/Times-Roman ff 222.25 scf sf -4500 540 m -gs 1 -1 sc (P) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 9270 6525 m 11295 6525 l 11295 6975 l 9270 6975 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -10305 6795 m -gs 1 -1 sc (Matrix.Digraph) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 5625 6525 m 7200 6525 l 7200 6975 l 5625 6975 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -6435 6795 m -gs 1 -1 sc (Matrix.Graph) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -15.000 slw - [15 68] 68 sd -gs clippath -12362 1228 m 12682 1227 l 12681 1107 l 12361 1108 l 12361 1108 l 12602 1168 l 12362 1228 l cp -eoclip -n 10935 1170 m - 12667 1168 l gs col0 s gr gr - [] 0 sd -% arrowhead -n 12362 1228 m 12602 1168 l 12361 1108 l 12362 1228 l cp gs 0.00 setgray ef gr col0 s -/Times-Roman ff 190.50 scf sf -10935 1035 m -gs 1 -1 sc (signature subtyping) col0 sh gr -% Polyline -7.500 slw -n 1800 1575 m 3600 1575 l 3600 2025 l 1800 2025 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -2700 1845 m -gs 1 -1 sc (AbstractLabelled) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 5175 1575 m 6975 1575 l 6975 2025 l 5175 2025 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -6120 1845 m -gs 1 -1 sc (ConcreteLabelled) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 1755 4050 m 3555 4050 l 3555 4500 l 1755 4500 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -2700 4320 m -gs 1 -1 sc (AbstractLabelled) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 5175 4050 m 6975 4050 l 6975 4500 l 5175 4500 l - cp gs col0 s gr -/Times-Roman ff 222.25 scf sf -6075 4320 m -gs 1 -1 sc (ConcreteLabelled) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 1575 5625 405 225 0 360 DrawEllipse gs col0 s gr - -/Times-Roman ff 222.25 scf sf -1575 5670 m -gs 1 -1 sc (IM) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4410 3015 1260 360 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 1710 3015 1035 360 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 8100 3015 1035 360 0 360 DrawEllipse gs col0 s gr - -% Polyline -15.000 slw -gs clippath -923 3770 m 671 3966 l 744 4061 l 997 3865 l 997 3865 l 771 3965 l 923 3770 l cp -eoclip -n 1530 3375 m - 720 4005 l gs col0 s gr gr - -% arrowhead -n 923 3770 m 771 3965 l 997 3865 l 923 3770 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -1126 5184 m 1309 5446 l 1407 5377 l 1224 5115 l 1224 5115 l 1313 5347 l 1126 5184 l cp -eoclip -n 720 4500 m - 1350 5400 l gs col0 s gr gr - -% arrowhead -n 1126 5184 m 1313 5347 l 1224 5115 l 1126 5184 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2422 3865 m 2675 4061 l 2748 3966 l 2496 3770 l 2496 3770 l 2649 3965 l 2422 3865 l cp -eoclip -n 1890 3375 m - 2700 4005 l gs col0 s gr gr - -% arrowhead -n 2422 3865 m 2649 3965 l 2496 3770 l 2422 3865 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -1973 5096 m 1746 5323 l 1831 5408 l 2058 5181 l 2058 5181 l 1846 5309 l 1973 5096 l cp -eoclip -n 2610 4545 m - 1800 5355 l gs col0 s gr gr - -% arrowhead -n 1973 5096 m 1846 5309 l 2058 5181 l 1973 5096 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3088 3824 m 2796 3956 l 2846 4065 l 3137 3933 l 3137 3933 l 2894 3978 l 3088 3824 l cp -eoclip -n 4230 3375 m - 2835 4005 l gs col0 s gr gr - -% arrowhead -n 3088 3824 m 2894 3978 l 3137 3933 l 3088 3824 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -5772 3933 m 6063 4065 l 6113 3956 l 5821 3824 l 5821 3824 l 6016 3978 l 5772 3933 l cp -eoclip -n 4680 3375 m - 6075 4005 l gs col0 s gr gr - -% arrowhead -n 5772 3933 m 6016 3978 l 5821 3824 l 5772 3933 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6604 3833 m 6308 3955 l 6353 4066 l 6649 3944 l 6649 3944 l 6405 3980 l 6604 3833 l cp -eoclip -n 7875 3375 m - 6345 4005 l gs col0 s gr gr - -% arrowhead -n 6604 3833 m 6405 3980 l 6649 3944 l 6604 3833 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8040 3700 m 8040 4020 l 8160 4020 l 8160 3700 l 8160 3700 l 8100 3940 l 8040 3700 l cp -eoclip -n 8100 3375 m - 8100 4005 l gs col0 s gr gr - -% arrowhead -n 8040 3700 m 8100 3940 l 8160 3700 l 8040 3700 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -10220 3978 m 10527 4066 l 10560 3951 l 10253 3863 l 10253 3863 l 10468 3987 l 10220 3978 l cp -eoclip -n 8325 3375 m - 10530 4005 l gs col0 s gr gr - -% arrowhead -n 10220 3978 m 10468 3987 l 10253 3863 l 10220 3978 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -7491 5389 m 7767 5549 l 7828 5445 l 7551 5285 l 7551 5285 l 7729 5458 l 7491 5389 l cp -eoclip -n 6075 4500 m - 7785 5490 l gs col0 s gr gr - -% arrowhead -n 7491 5389 m 7729 5458 l 7551 5285 l 7491 5389 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8040 5050 m 8040 5370 l 8160 5370 l 8160 5050 l 8160 5050 l 8100 5290 l 8040 5050 l cp -eoclip -n 8100 4500 m - 8100 5355 l gs col0 s gr gr - -% arrowhead -n 8040 5050 m 8100 5290 l 8160 5050 l 8040 5050 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8843 5259 m 8555 5397 l 8607 5505 l 8895 5367 l 8895 5367 l 8653 5417 l 8843 5259 l cp -eoclip -n 10575 4500 m - 8595 5445 l gs col0 s gr gr - -% arrowhead -n 8843 5259 m 8653 5417 l 8895 5367 l 8843 5259 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -1038 2172 m 791 1969 l 715 2061 l 962 2264 l 962 2264 l 815 2066 l 1038 2172 l cp -eoclip -n 1530 2655 m - 765 2025 l gs col0 s gr gr - -% arrowhead -n 1038 2172 m 815 2066 l 962 2264 l 1038 2172 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2442 2297 m 2702 2109 l 2632 2012 l 2372 2199 l 2372 2199 l 2602 2108 l 2442 2297 l cp -eoclip -n 1845 2655 m - 2655 2070 l gs col0 s gr gr - -% arrowhead -n 2442 2297 m 2602 2108 l 2372 2199 l 2442 2297 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3227 2139 m 2935 2009 l 2886 2118 l 3178 2248 l 3178 2248 l 2984 2096 l 3227 2139 l cp -eoclip -n 4230 2655 m - 2925 2070 l gs col0 s gr gr - -% arrowhead -n 3227 2139 m 2984 2096 l 3178 2248 l 3227 2139 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -5776 2248 m 6068 2118 l 6019 2009 l 5727 2139 l 5727 2139 l 5971 2096 l 5776 2248 l cp -eoclip -n 4725 2655 m - 6030 2070 l gs col0 s gr gr - -% arrowhead -n 5776 2248 m 5971 2096 l 5727 2139 l 5776 2248 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6650 2122 m 6352 2008 l 6309 2120 l 6607 2234 l 6607 2234 l 6405 2093 l 6650 2122 l cp -eoclip -n 7875 2655 m - 6345 2070 l gs col0 s gr gr - -% arrowhead -n 6650 2122 m 6405 2093 l 6607 2234 l 6650 2122 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8160 2330 m 8160 2010 l 8040 2010 l 8040 2330 l 8040 2330 l 8100 2090 l 8160 2330 l cp -eoclip -n 8100 2655 m - 8100 2025 l gs col0 s gr gr - -% arrowhead -n 8160 2330 m 8100 2090 l 8040 2330 l 8160 2330 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3994 808 m 4304 729 l 4274 613 l 3964 692 l 3964 692 l 4212 691 l 3994 808 l cp -eoclip -n 765 1575 m - 4275 675 l gs col0 s gr gr - -% arrowhead -n 3994 808 m 4212 691 l 3964 692 l 3994 808 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -4164 909 m 4450 766 l 4396 659 l 4110 802 l 4110 802 l 4352 749 l 4164 909 l cp -eoclip -n 2700 1575 m - 4410 720 l gs col0 s gr gr - -% arrowhead -n 4164 909 m 4352 749 l 4110 802 l 4164 909 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -5214 700 m 4906 613 l 4874 728 l 5181 815 l 5181 815 l 4967 693 l 5214 700 l cp -eoclip -n 8100 1575 m - 4905 675 l gs col0 s gr gr - -% arrowhead -n 5214 700 m 4967 693 l 5181 815 l 5214 700 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -7704 6063 m 8001 5945 l 7956 5833 l 7659 5952 l 7659 5952 l 7905 5919 l 7704 6063 l cp -eoclip -n 6390 6525 m - 7965 5895 l gs col0 s gr gr - -% arrowhead -n 7704 6063 m 7905 5919 l 7659 5952 l 7704 6063 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8768 5977 m 8464 5878 l 8427 5992 l 8731 6091 l 8731 6091 l 8522 5960 l 8768 5977 l cp -eoclip -n 10260 6525 m - 8460 5940 l gs col0 s gr gr - -% arrowhead -n 8768 5977 m 8522 5960 l 8731 6091 l 8768 5977 l cp gs 0.00 setgray ef gr col0 s -% Polyline -30.000 slw -n 0 225 m - 0 2925 l gs col0 s gr -% Polyline -n 0 225 m - 225 225 l gs col0 s gr -% Polyline -n 0 2925 m - 225 2925 l gs col0 s gr -% Polyline -n 225 3150 m 0 3150 l 0 6075 l - 225 6075 l gs col0 s gr -% Polyline -15.000 slw -gs clippath -4842 854 m 4559 704 l 4503 811 l 4786 960 l 4786 960 l 4602 795 l 4842 854 l cp -eoclip -n 6075 1575 m - 4545 765 l gs col0 s gr gr - -% arrowhead -n 4842 854 m 4602 795 l 4786 960 l 4842 854 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -12362 778 m 12682 777 l 12681 657 l 12361 658 l 12361 658 l 12602 718 l 12362 778 l cp -eoclip -n 10935 720 m - 12667 718 l gs col0 s gr gr - -% arrowhead -n 12362 778 m 12602 718 l 12361 658 l 12362 778 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [15 68] 68 sd -gs clippath -12266 2585 m 12535 2758 l 12600 2657 l 12331 2484 l 12331 2484 l 12501 2665 l 12266 2585 l cp -eoclip -n 4950 495 m 4951 495 l 4954 495 l 4959 495 l 4966 495 l 4978 495 l - 4993 496 l 5014 496 l 5039 497 l 5069 497 l 5105 498 l - 5147 499 l 5194 500 l 5248 501 l 5307 503 l 5372 504 l - 5442 506 l 5518 508 l 5598 510 l 5682 513 l 5771 515 l - 5863 518 l 5958 521 l 6056 524 l 6155 528 l 6256 532 l - 6359 536 l 6461 540 l 6564 544 l 6667 549 l 6770 553 l - 6871 558 l 6971 564 l 7070 569 l 7168 574 l 7263 580 l - 7357 586 l 7449 593 l 7539 599 l 7626 606 l 7712 613 l - 7795 620 l 7876 627 l 7955 635 l 8032 643 l 8107 651 l - 8180 660 l 8252 668 l 8321 678 l 8389 687 l 8455 697 l - 8520 707 l 8583 718 l 8645 728 l 8706 740 l 8766 752 l - 8825 764 l 8883 776 l 8940 790 l 8997 803 l 9052 817 l - 9108 832 l 9163 847 l 9218 863 l 9275 880 l 9333 897 l - 9390 916 l 9448 935 l 9505 954 l 9562 975 l 9619 996 l - 9676 1018 l 9734 1041 l 9792 1066 l 9850 1091 l 9910 1117 l - 9969 1144 l 10030 1172 l 10091 1202 l 10154 1233 l 10218 1265 l - 10282 1298 l 10348 1333 l 10416 1369 l 10484 1406 l 10554 1445 l - 10626 1485 l 10699 1527 l 10773 1570 l 10848 1614 l 10925 1659 l - 11003 1706 l 11082 1754 l 11162 1802 l 11242 1852 l 11323 1902 l - 11404 1952 l 11484 2003 l 11565 2054 l 11644 2104 l 11722 2154 l - 11799 2203 l 11873 2251 l 11945 2297 l 12014 2342 l 12080 2385 l - 12142 2426 l 12200 2464 l 12254 2500 l 12304 2532 l 12348 2562 l - 12388 2588 l 12423 2612 l 12454 2632 l 12480 2649 l 12501 2664 l - 12518 2675 l 12531 2684 l 12541 2691 l - 12555 2700 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 12266 2585 m 12501 2665 l 12331 2484 l 12266 2585 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [15 68] 68 sd -gs clippath -7390 5685 m 7710 5685 l 7710 5565 l 7390 5565 l 7390 5565 l 7630 5625 l 7390 5685 l cp -eoclip -n 1980 5625 m - 7695 5625 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 7390 5685 m 7630 5625 l 7390 5565 l 7390 5685 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [15 68] 68 sd -gs clippath -12709 3722 m 12840 3430 l 12731 3381 l 12599 3673 l 12599 3673 l 12753 3479 l 12709 3722 l cp -eoclip -n 8595 5625 m 8596 5625 l 8599 5625 l 8605 5625 l 8615 5625 l 8628 5624 l - 8646 5624 l 8670 5623 l 8699 5622 l 8733 5621 l 8774 5620 l - 8821 5619 l 8873 5617 l 8931 5615 l 8994 5613 l 9062 5610 l - 9135 5607 l 9211 5604 l 9291 5600 l 9373 5597 l 9457 5593 l - 9543 5588 l 9630 5583 l 9717 5578 l 9804 5573 l 9890 5568 l - 9975 5562 l 10059 5556 l 10141 5549 l 10222 5542 l 10300 5535 l - 10376 5528 l 10449 5520 l 10521 5512 l 10589 5504 l 10656 5495 l - 10720 5486 l 10781 5477 l 10840 5467 l 10897 5457 l 10952 5446 l - 11005 5435 l 11055 5424 l 11104 5411 l 11151 5399 l 11196 5386 l - 11240 5372 l 11283 5358 l 11324 5343 l 11363 5327 l 11402 5311 l - 11440 5294 l 11477 5276 l 11513 5258 l 11554 5235 l 11594 5212 l - 11633 5187 l 11671 5161 l 11709 5134 l 11745 5106 l 11781 5075 l - 11816 5044 l 11851 5010 l 11886 4975 l 11920 4938 l 11954 4898 l - 11988 4857 l 12022 4813 l 12057 4767 l 12091 4719 l 12125 4668 l - 12160 4615 l 12195 4560 l 12230 4502 l 12265 4442 l 12301 4381 l - 12336 4318 l 12372 4253 l 12407 4188 l 12442 4122 l 12476 4055 l - 12509 3990 l 12541 3926 l 12572 3863 l 12602 3803 l 12629 3746 l - 12655 3692 l 12678 3643 l 12699 3599 l 12717 3559 l 12733 3525 l - 12746 3496 l 12756 3473 l 12765 3454 l 12771 3440 l - 12780 3420 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 12709 3722 m 12753 3479 l 12599 3673 l 12709 3722 l cp gs 0.00 setgray ef gr col0 s -/Times-Roman ff 222.25 scf sf --1125 1845 m -gs 1 -1 sc (Persistent.[Di]Graph) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 222.25 scf sf --1125 4320 m -gs 1 -1 sc (Imperative.[Di]Graph) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 190.50 scf sf -10935 630 m -gs 1 -1 sc (functor application) col0 sh gr -/Times-Roman ff 190.50 scf sf -1710 3060 m -gs 1 -1 sc (ANY_TYPE) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 190.50 scf sf -4455 3060 m -gs 1 -1 sc (ORDERED_TYPE_DFT) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 190.50 scf sf -8145 3060 m -gs 1 -1 sc (COMPARABLE) dup sw pop 2 div neg 0 rm col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage -%%Trailer -%EOF diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/interface.fig b/jscomp/build_tests/ocamlgraph/papers/tfp07/interface.fig deleted file mode 100755 index 84e8e8a5db..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/interface.fig +++ /dev/null @@ -1,192 +0,0 @@ -#FIG 3.2 Produced by xfig version 3.2.5-alpha5 -Landscape -Center -Metric -A4 -100.00 -Single --2 -1200 2 -6 225 4050 1350 4500 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 225 4050 1350 4050 1350 4500 225 4500 225 4050 -4 1 0 50 -1 0 14 0.0000 2 135 720 810 4320 Abstract\001 --6 -6 7560 4050 8685 4500 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 7560 4050 8685 4050 8685 4500 7560 4500 7560 4050 -4 1 0 50 -1 0 14 0.0000 2 135 720 8100 4320 Concrete\001 --6 -6 9315 4050 11790 4500 -6 9315 4050 11790 4500 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 9315 4050 11790 4050 11790 4500 9315 4500 9315 4050 -4 1 0 50 -1 0 14 0.0000 2 135 1890 10575 4320 ConcreteBidirectional\001 --6 --6 -6 11925 2790 13275 3330 -1 1 0 1 0 7 50 -1 -1 0.000 1 0.0000 12600 3060 675 270 12600 3060 11925 3330 -4 1 0 50 -1 0 12 0.0000 0 135 90 12600 3105 G\001 --6 -6 7785 5400 8595 5850 -1 1 0 1 0 7 50 -1 -1 0.000 1 0.0000 8190 5625 405 225 8190 5625 7785 5850 -4 1 0 50 -1 0 14 0.0000 2 135 90 8190 5670 I\001 --6 -6 225 1575 1350 2025 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 225 1575 1350 1575 1350 2025 225 2025 225 1575 -4 1 0 50 -1 0 14 0.0000 2 135 720 810 1845 Abstract\001 --6 -6 7560 1575 8685 2025 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 7560 1575 8685 1575 8685 2025 7560 2025 7560 1575 -4 0 0 50 -1 0 14 0.0000 0 135 720 7785 1845 Concrete\001 --6 -6 4050 315 4950 675 -1 1 0 1 0 7 50 -1 -1 0.000 1 0.0000 4500 495 450 180 4500 495 4950 495 -4 1 0 50 -1 0 14 0.0000 2 135 90 4500 540 P\001 --6 -6 9270 6525 11295 6975 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 9270 6525 11295 6525 11295 6975 9270 6975 9270 6525 -4 1 0 50 -1 0 14 0.0000 2 165 1260 10305 6795 Matrix.Digraph\001 --6 -6 5625 6525 7200 6975 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 5625 6525 7200 6525 7200 6975 5625 6975 5625 6525 -4 1 0 50 -1 0 14 0.0000 2 165 1080 6435 6795 Matrix.Graph\001 --6 -6 10890 900 12690 1260 -2 1 2 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 10935 1170 12667 1168 -4 0 0 50 -1 0 12 0.0000 4 165 1710 10935 1035 signature subtyping\001 --6 -6 1800 1575 3600 2025 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 1800 1575 3600 1575 3600 2025 1800 2025 1800 1575 -4 1 0 50 -1 0 14 0.0000 2 135 1440 2700 1845 AbstractLabelled\001 --6 -6 5175 1575 6975 2025 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 5175 1575 6975 1575 6975 2025 5175 2025 5175 1575 -4 1 0 50 -1 0 14 0.0000 2 135 1440 6120 1845 ConcreteLabelled\001 --6 -6 1755 4050 3555 4500 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 1755 4050 3555 4050 3555 4500 1755 4500 1755 4050 -4 1 0 50 -1 0 14 0.0000 2 135 1440 2700 4320 AbstractLabelled\001 --6 -6 5175 4050 6975 4500 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 5175 4050 6975 4050 6975 4500 5175 4500 5175 4050 -4 1 0 50 -1 0 14 0.0000 2 135 1440 6075 4320 ConcreteLabelled\001 --6 -6 1170 5400 1980 5850 -1 1 0 1 0 7 50 -1 -1 0.000 1 0.0000 1575 5625 405 225 1575 5625 1170 5850 -4 1 0 50 -1 0 14 0.0000 2 135 180 1575 5670 IM\001 --6 -1 1 0 1 0 7 50 -1 -1 0.000 1 0.0000 4410 3015 1260 360 4410 3015 5670 3015 -1 1 0 1 0 7 50 -1 -1 0.000 1 0.0000 1710 3015 1035 360 1710 3015 2745 3015 -1 1 0 1 0 7 50 -1 -1 0.000 1 0.0000 8100 3015 1035 360 8100 3015 9135 3015 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 1530 3375 720 4005 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 720 4500 1350 5400 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 1890 3375 2700 4005 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 2610 4545 1800 5355 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4230 3375 2835 4005 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4680 3375 6075 4005 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 7875 3375 6345 4005 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8100 3375 8100 4005 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8325 3375 10530 4005 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6075 4500 7785 5490 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8100 4500 8100 5355 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 10575 4500 8595 5445 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 1530 2655 765 2025 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 1845 2655 2655 2070 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4230 2655 2925 2070 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4725 2655 6030 2070 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 7875 2655 6345 2070 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8100 2655 8100 2025 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 765 1575 4275 675 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 2700 1575 4410 720 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8100 1575 4905 675 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6390 6525 7965 5895 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 10260 6525 8460 5940 -2 1 0 3 0 7 50 -1 -1 6.000 0 0 -1 0 0 2 - 0 225 0 2925 -2 1 0 3 0 7 50 -1 -1 6.000 0 0 -1 0 0 2 - 0 225 225 225 -2 1 0 3 0 7 50 -1 -1 6.000 0 0 -1 0 0 2 - 0 2925 225 2925 -2 1 0 3 0 7 50 -1 -1 6.000 0 0 -1 0 0 4 - 225 3150 0 3150 0 6075 225 6075 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6075 1575 4545 765 -2 1 0 2 0 7 50 -1 -1 4.500 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 10935 720 12667 718 -3 0 2 2 0 7 50 -1 -1 4.500 0 1 0 3 - 1 1 2.00 120.00 240.00 - 4950 495 9450 495 12555 2700 - 0.000 1.000 0.000 -3 0 2 2 0 7 50 -1 -1 4.500 0 1 0 2 - 1 1 2.00 120.00 240.00 - 1980 5625 7695 5625 - 0.000 0.000 -3 0 2 2 0 7 50 -1 -1 4.500 0 1 0 3 - 1 1 2.00 120.00 240.00 - 8595 5625 11925 5625 12780 3420 - 0.000 1.000 0.000 -4 1 0 50 -1 0 14 0.0000 2 180 1800 -1125 1845 Persistent.[Di]Graph\001 -4 1 0 50 -1 0 14 0.0000 2 180 1800 -1125 4320 Imperative.[Di]Graph\001 -4 0 0 50 -1 0 12 0.0000 4 165 1710 10935 630 functor application\001 -4 1 0 50 -1 0 12 0.0000 2 150 720 1710 3060 ANY_TYPE\001 -4 1 0 50 -1 0 12 0.0000 0 150 1440 4455 3060 ORDERED_TYPE_DFT\001 -4 1 0 50 -1 0 12 0.0000 2 135 900 8145 3060 COMPARABLE\001 diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/interface.pdf b/jscomp/build_tests/ocamlgraph/papers/tfp07/interface.pdf deleted file mode 100755 index 327ca64943..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/papers/tfp07/interface.pdf and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/macros.tex b/jscomp/build_tests/ocamlgraph/papers/tfp07/macros.tex deleted file mode 100755 index 36a98eeb64..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/macros.tex +++ /dev/null @@ -1,7 +0,0 @@ - -\newcommand{\ocamlgraph}{\textsc{Ocamlgraph}\xspace} -\newcommand{\ocaml}{\textsc{Ocaml}\xspace} -\newcommand{\fl}{\ensuremath{\rightarrow}} -\newcommand{\fois}{\ensuremath{\times}} -\newcommand{\flg}{\ensuremath{\leftarrow}} - diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/main.tex b/jscomp/build_tests/ocamlgraph/papers/tfp07/main.tex deleted file mode 100755 index 535976aae6..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/main.tex +++ /dev/null @@ -1,721 +0,0 @@ -%----------------------------------------------------------------------------- -% -% Template for LaTeX Class/Style File -% -% Name: sigplanconf-template.tex -% Purpose: A template for sigplanconf.cls, which is a LaTeX 2e class -% file for SIGPLAN conference proceedings. -% -% Author: Paul C. Anagnostopoulos -% Windfall Software -% 978 371-2316 -% paul@windfall.com -% -% Created: 15 February 2005 -% -%----------------------------------------------------------------------------- - -\documentclass[tfpsymp,pagenumbers]{tfp07symp} -\setcounter{paper}{12} - -\usepackage{amsmath} -\usepackage{url} -\usepackage{xspace} -\usepackage{alltt} -\usepackage{verbatim,rotating} -%\usepackage{color} -%\usepackage[dvips]{epsfig} -\usepackage{graphicx} - -\newcommand{\ocamlgraph}{\textsc{Ocamlgraph}\xspace} -\newcommand{\ocaml}{\textsc{Ocaml}\xspace} -\newcommand{\fl}{\ensuremath{\rightarrow}} - -\begin{document} - -\title{Designing a Generic Graph Library \\ using ML Functors} - -\author - {Sylvain Conchon\inst{1} \and - Jean-Christophe Filli\^atre\inst{1} \and - Julien Signoles\inst{2}\protect\footnote[1]{This work was mostly done - while the third author was at LRI.}} -\authorrunning{S. Conchon \and J.-C. Filli\^atre \and J. Signoles} - -\institute{LRI, Univ Paris-Sud, CNRS, Orsay F-91405\\ -INRIA Futurs, ProVal, Orsay F-91893\\ - \email{\{conchon,filliatr\}@lri.fr} - \and CEA-LIST, Laboratoire S\^uret\'e des Logiciels \\ - \email{Julien.Signoles@cea.fr}} - -%% \institute{LRI Universit\'e Paris Sud 91405 Orsay France \\ -%% \texttt{\{conchon,filliatr\}@lri.fr Julien.Signoles@cea.fr}} - -%\email{conchon@lri.fr filliatr@lri.fr Julien.Signoles@cea.fr} - - -\maketitle - -\begin{abstract} - This paper details the design and implementation of \ocamlgraph, a - highly generic graph library for the programming language \ocaml. - This library features a large set of graph data - structures---directed or undirected, with or without labels on - vertices and edges, as persistent or mutable data structures, - etc.---and a large set of graph algorithms. Algorithms are written - independently from graph data structures, which allows combining - user data structure (resp. algorithm) with \ocamlgraph algorithm - (resp. data structure). Genericity is obtained through massive use - of the \ocaml module system and its functions, the so-called - \emph{functors}. -\end{abstract} - -%\category{D.2}{Software Engineering}{Software Architectures; Design; -% Reusable Software} - -%\terms -%term1, term2 - -%\keywords -%Graph library, Generic programming, Functors - -\section{Introduction} - -Finding a graph library for one's favorite programming language is -usually easy. But applying the provided algorithms to one's own graph -data structure or building undirected persistent graphs with vertices -and edges labeled with data other than integers is likely to be more -difficult. Figure~\ref{comparison:tab} quickly compares several graph -libraries according to the following criteria: number of graph data -structures; purely applicative or imperative nature of the structures; -and ability to apply the provided algorithms to a user-defined graph -data structure. As one can notice, none of these libraries gives full -satisfaction. This paper introduces -\ocamlgraph\footnote{\url{http://www.lri.fr/~filliatr/ocamlgraph/}}, a -highly generic graph library for the programming language -\ocaml~\cite{ObjectiveCaml}, which intends to fulfill all these -criteria. - -% Beside the mere presentation of this -% library, this paper demonstrates how \ocaml has been used to -\ocamlgraph\ introduces genericity at two levels. First, \ocamlgraph -does not provide a single data structure for graphs but many of them, -enumerating all possible variations (19 altogether)---directed or -undirected graphs, persistent or mutable data structures, user-defined -labels on vertices or edges, etc.---under a common interface. -Secondly, \ocamlgraph provides a large set of graph algorithms that -are written independently from the underlying graph data structure. -These can then be applied naturally to the data structures provided by -\ocamlgraph itself and also on user-defined data structures as soon as -these implement a minimal set of functionalities. - -Without proper parameterization, such a large set of variants may -easily result in unmanageable code. We avoid this pitfall using the -\ocaml module system~\cite{leroy00}, which appears to be the tool of -choice for this kind of meta-programming. The genericity of -\ocamlgraph is indeed achieved through a massive use of \ocaml -functors. On one hand, they are used to avoid code duplication between -the many variations of graph data structures, which is mandatory here -due to the high number of similar but different implementations. On -the other hand, they are used to write graph algorithms independently -from the underlying graph data structure, with as much genericity as -possible while keeping efficiency in mind. - -This paper is organized as follows. Section~\ref{motivatingexample} -demonstrates the use of \ocamlgraph through an example. -Section~\ref{implementation} exposes the design of the common -interface for all graph data structures and explains how the code is -shared among various implementations. Section~\ref{algos} -describes the algorithms provided in \ocamlgraph and how -genericity is obtained with respect to the graph data structure. -Finally Section~\ref{bench} presents some benchmarks. - -% \section{Related Work} -% \label{comparaison} - -% This section details the features of several other graph libraries, in -% order to make a comparison with \ocamlgraph. Our list is not -% exhaustive and only focuses on programming languages where some kind -% of generic programming is possible. Figure~\ref{comparison:tab} -% summarizes our comparison criteria which are mainly based on the -% genericity of the data structures and algorithms proposed by some -% other libraries. - -\begin{figure*}[t] -\newcommand{\present}{\large\boldmath $\surd$} -\newcommand{\absent}{\large\boldmath $\oslash$} - - \centering - \begin{tabular}{|l||c|c|c|c|c|} - \hline - & & graph data & persistent / & generic \\ - & language & structures & imperative & algorithms \\\hline\hline - GTL \cite{Gtl} & C++ & 1 & I & \absent \\\hline - LEDA \cite{Leda} & C++ & 2 & I & \absent \\\hline - BGL \cite{Bgl} & C++ & 2 & I & \present \\\hline - JDSL \cite{Jdsl} & Java & 1 & I & \present \\\hline - FGL \cite{Fgl} & Haskell & 1 & P & \present \\\hline - MLRisc \cite{Mlrisc} & SML & 1 & I & \absent \\\hline - Baire \cite{Baire}\footnotemark & \ocaml & 8 &P/I& --- \\\hline -% \ocamlgraph& \ocaml &P/I& \present & 19 \\\hline - \end{tabular} - \medskip - \caption{Comparison with other graph libraries} - \label{comparison:tab} -\end{figure*} -\footnotetext{The Baire library seems to be no longer available from - Internet.} - -\section{Motivating Example}\label{motivatingexample} - -To illustrate the use of \ocamlgraph, we consider a Sudoku solver -based on graph -coloring. The idea is to represent the Sudoku grid as an undirected -graph with $9\times 9$ vertices, each vertex being connected to all -other vertices on the same row, column and $3\times 3$ group. -Solving the Sudoku is equivalent to 9-coloring this graph. -Figure~\ref{fig:sudoku} displays the sketch of a solution to -this problem using \ocamlgraph\footnote{Full source code for the - Sudoku example is given in appendix~\ref{appendix}.}. There are -four steps in this code: -\begin{enumerate} -\item We choose a graph data structure for our Sudoku solver: it is an - imperative undirected graph with vertices labeled with pairs of - integers (the cells coordinates) and unlabeled edges. - In this structure, vertices are also - equipped with integer marks, that are used to store the assigned - colors. -\item We create the Sudoku grid and fill it with the initial - constraints. -\item We obtain a coloring algorithm for our graph data structure. -\item We solve the Sudoku problem by 9-coloring the graph. -\end{enumerate} -This code is almost as efficient as a hand-coded Sudoku solver: on the -average, a Sudoku puzzle is solved in 0.2 seconds (on a Pentium IV 2.4 -GHz). The remainder of this paper goes into more details about the -code above. - -\begin{figure}[t] -\hrulefill\\[-2em] -\begin{center} -\begin{ocaml} -module G = Imperative.Graph.Abstract - (struct type t = int * int end) - -let g = G.create () - -let () = - ... add vertices to g with G.add_vertex, - edges with G.add_edge and initial - constraints (20 lines of code) ... - -module C = Coloring(G) - -let () = C.coloring g 9 -\end{ocaml} -\end{center} -\hrule - - \caption{A Sudoku solver using \ocamlgraph} - \label{fig:sudoku} -\end{figure} - - - -% What we should expect from a good graph library is thus: -% \begin{enumerate} -% \item the ability to easily build an undirected graph where each -% vertex is labeled with a pair of integers (the cell coordinates); -% \item an efficient graph coloring algorithm that can be applied to the -% above data structure. -% \end{enumerate} -% If a graph library is providing only directed graphs or only -% unlabeled vertices, one has to adapt to the existing data structure. -% Generally speaking, the user may want -% to choose any combination of the following features: -% \begin{itemize} -% \item \emph{directed} or \emph{undirected} graphs; -% \item \emph{labeled} or \emph{unlabeled} vertices and edges; -% \item \emph{types} for the labels, when any; -% \item \emph{persistent} or \emph{imperative} data structure; -% \end{itemize} -% The strong point in \ocamlgraph is to provide \emph{all} possible -% combinations, as ML modules sharing a common signature \texttt{G}. -% Then algorithms are provided as ML functors whose arguments must have -% signatures compatible with \texttt{G}. - -\section{Signatures and Graph Data Structures}\label{implementation} - -Managing many variants of graph data structures without proper -parameterization results into unmanageable code. -% -Here we show how we factorized the \ocamlgraph implementation to avoid -such pitfall. Section~\ref{interface} describes the common -sub-signatures shared by all graphs. Section~\ref{structuresdedonnees} -details their various implementations. - -% First Section~\ref{interface} describes the common signatures for all -% graph data structures. Then Section~\ref{structuresdedonnees} details -% the various graph implementations. - -\subsection{Sharing Signatures for All Graphs}\label{interface} - - -All graph data structures share a common sub-signature \texttt{G} for -observers. Two other signatures distinguish the modifiers for -persistent and imperative graphs, respectively. - -The common signature \texttt{G} includes an abstract type \texttt{t} -for the graph datatype and two modules \texttt{V} and \texttt{E} for -vertices and edges respectively. The signature for \texttt{E} always -includes a type \texttt{label} which is instantiated by the singleton -type \texttt{unit} for unlabeled graphs. Modules \texttt{V} and -\texttt{E} both implement the standard comparison and hashing -functions so that graph algorithms may easily construct data -structures containing vertices and edges. \texttt{G} also includes -usual observers such as functions to iterate over vertices and edges, -which are massively used in graph algorithms. The common signature -looks like: - -%\newpage - -\begin{ocaml} -module type G = sig - type t - module V : sig type t ... end - module E : sig - type t - type label - val label : t -> label - ... - end - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - ... -end -\end{ocaml} -We distinguish the signature \texttt{P} for persistent graphs -from the signature \texttt{I} for imperative graphs, since the modifiers do -not have the same type in both: -\begin{ocaml} -module type P = sig - include G - val empty : t - val add_vertex : t -> V.t -> t - val add_edge : t -> V.t -> V.t -> t - ... -end -module type I = sig - include G - val create : unit -> t - val add_vertex : t -> V.t -> unit - val add_edge : t -> V.t -> V.t -> unit - ... -end -\end{ocaml} - -\subsection{19 Graph Data Structures in 1000 Lines of Code}\label{structuresdedonnees} - -\ocamlgraph provides 19 graph data structures, which include all the -possible combinations of the following 4 criteria: -\begin{itemize} -\item \emph{directed} or \emph{undirected} graph; -\item \emph{labeled} or \emph{unlabeled} edges; -\item \emph{persistent} or \emph{imperative} data structure; -\item \emph{concrete} or \emph{abstract} type for vertices. -\end{itemize} -The last point requires some explanations. Vertices are always labeled -internally with the value provided by the user. Accessing this value -depends on the choice of concrete or abstract vertices. Concrete -vertices allow unrestricted access to their value. Abstract vertices -hide their value inside an abstract data type. The former allows a -more immediate use of the data structure and the latter a more -efficient implementation. In particular, imperative graphs with -abstract vertices can be equipped with integer mutable marks, which -are used in our Sudoku solver. - -A functor is provided for each data structure. It is parameterized by -user types for vertex labels and possibly edge labels. These functors -are displayed in Figure~\ref{fig:interfaces} as square boxes mapping -signatures of input modules to the signature of the graph module. -Of these, 8 functors exist in both directed and undirected versions. -\begin{figure*} - \centering - %\includegraphics[width=\textwidth]{interface.pdf} - \includegraphics[width=\textwidth]{interface.eps} - \caption{\ocamlgraph data structures components}\label{fig:interfaces} -\end{figure*} -Input signatures \texttt{ANY\_TYPE}, \texttt{ORDERED\_TYPE\_DFT} and -\texttt{COMPARABLE} define the user types for vertices and edges -labels. Output signature \texttt{IM} extends signature \texttt{I} with -mutable marks. Three other implementations complete the set of graph -data structures, namely \texttt{ConcreteBidirectional} for graphs with -an efficient access to predecessors, and -\texttt{Matrix.}(\texttt{Graph}, \texttt{Digraph}) for graphs -implemented as adjacency matrices. For efficiency reasons, these three -implementations do not offer the same combination of criteria as the -previous ones. - -Several functors are used internally to avoid code duplication among the -functors presented in Figure~\ref{fig:interfaces}. For instance, a -functor adds labels to -unlabeled graphs; another one encapsulates concrete vertices into an -abstract data type; etc. Putting it all together, the code size for -the 19 graph data structures is about 1000 lines. This is clearly -small enough to be easily maintained. In Section~\ref{bench} we will -show that this code is also quite efficient. - -The graph data structure for our Sudoku solver is simply an imperative -undirected graph with abstract vertices labeled with pairs of integers -and unlabeled edges. It is obtained as: -\begin{ocaml} -module G = Imperative.Graph.Abstract - (struct type t = int * int end) -\end{ocaml} - -\section{Generic Algorithms}\label{algos} - -This section introduces the second use of functors in \ocamlgraph: -generic programming of graph algorithms. - -\subsection{Decoupling Algorithms and Graph Data Structures} - -As demonstrated in Section~\ref{implementation}, our library provides -many graph data structures. It makes it necessary to factorize the -code for graph algorithms that operate on these structures. Again, -functors provide a nice encoding of generic algorithms. - -The basic idea when coding an algorithm is to focus only on the -required operations that this algorithm imposes on the graph data -structure. Then this algorithm can be expressed naturally as a functor -parameterized by these operations. These operations usually form a -subset of the operations provided by \ocamlgraph graph data -structures. In a few cases, the algorithm requires specific operations -that are independent of the graph data structure. In such a case, the -specific operations are provided as an additional functor parameter. - -Such a ``functorization'' of algorithms has two benefits: first, it -allows to add quickly new algorithms to the library, without -duplicating code for all data structures; secondly, it allows the user to -apply an existing algorithm on his own graph data structure. - -%% , which is an original feature of \ocamlgraph\ w.r.t. other graph -%% libraries. - -\subsection{Example: Depth-First Traversal} -\label{dfs} - -We illustrate the generic programming of graph algorithms on the -particular example of depth-first prefix traversal (DFS). To implement DFS, -we need to iterate over the graph vertices and over the edges leaving -a given vertex. If we do not assume any kind of marks on vertices, we -also need to build a data structure to store the visited nodes. -We choose a hash table for this purpose and thus we require a hash -function and an equality over vertices. -Thus the minimal input signature for the DFS functor is as follows: -\begin{ocaml} -module type G = sig - type t - module V : sig - type t - val hash : t -> int - val equal : t -> t -> bool - end - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_succ : (V.t -> unit) -> t -> V.t -> unit -end -\end{ocaml} -The DFS algorithm is then implemented as a functor with an argument of -signature \texttt{G}. The result of functor application is a module -providing a single function \texttt{dfs} to traverse a given graph -while applying a given function on all visited vertices: -\begin{ocaml} -module Dfs(G : G) : - sig val dfs : (G.V.t -> unit) -> G.t -> unit end -\end{ocaml} -To implement this functor, we first instantiate \ocaml's generic hash -tables on graph vertices: -\begin{ocaml} -module Dfs(G : G) = struct - module H = Hashtbl.Make(G.V) -\end{ocaml} -Then we can implement the traversal. The following code uses a hash -table \texttt{h} to store the vertices already visited and an explicit -stack \texttt{stack} to store the vertices to be visited (to avoid the -possible stack overflow of a recursive implementation). Function -\texttt{G.iter\_vertex} is used to start a DFS on every vertex. The -DFS itself is performed in function \texttt{loop} using \texttt{G.iter\_succ}: -\begin{ocaml} - let dfs f g = - let h = H.create 65537 in - let stack = Stack.create () in - let push v = - if not (H.mem h v) then - begin H.add h v (); Stack.push v stack end - in - let loop () = - while not (Stack.is_empty stack) do - let v = Stack.pop stack in - f v; - G.iter_succ push g v - done - in - G.iter_vertex (fun v -> push v; loop ()) g -end -\end{ocaml} -Beside this simple algorithm, \ocamlgraph\ provides other kinds of -traversals (breadth-first, postfix, etc.) and more efficient -implementations when the graph data structure contains mutable marks -on vertices. - -\subsection{Example: Graph Coloring} -\label{coloring} - -As a second example, we present a graph coloring algorithm used in our -Sudoku solver. -For the purpose of our -algorithm, we require the presence of \texttt{get} and \texttt{set} -operations on integer marks associated to vertices. We use these marks -to store the color assigned to each vertex. We also need iterators -over vertices and successors. Thus the minimal signature for a graph -data structure used in our graph coloring algorithm is the following: -\begin{ocaml} -module type GM = sig - type t - module V : sig type t ... end - module Mark : sig - val get : V.t -> int - val set : V.t -> int -> unit - end - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_succ : (V.t -> unit) -> t -> V.t -> unit -end -\end{ocaml} -\ocamlgraph already provides implementations for such a -signature. This is the case for the graph data structure used in our -Sudoku solver. -Then the graph coloring algorithm is implemented as the following functor: -\begin{ocaml} -module Coloring(G : GM) : sig - val coloring : G.t -> int -> unit -end -\end{ocaml} -It provides a single function \texttt{coloring} which colors a given -graph with a given number of colors. Some marks may contain initial -constraints. -To complete our Sudoku solver, we simply need to apply the above -functor on our graph module \texttt{G}: -\begin{alltt} -module C = Coloring(G) -\end{alltt} -If \texttt{g} contains the Sudoku graph, and -assuming that the initial constraints are set in \texttt{g} marks, -solving the Sudoku amounts to 9-coloring graph \texttt{g}: -\begin{alltt} -C.coloring g 9 -\end{alltt} - - -\section{Benchmarks}\label{bench} - -Surprisingly, we could not find any standard benchmark for graph -libraries. In order to give an idea of \ocamlgraph efficiency, we -present here the results of a little benchmark of our own. We test -four different data structures for undirected graphs with unlabeled -edges, that are either persistent (P) or imperative (I) and with -either abstract (A) or concrete (C) vertices. In the following, these -are referred to as PA, PC, IA and IC, respectively. All tests were -performed on a Pentium 4 2.4 GHz. - -We first test the efficiency of graph creation and mutation. For that -purpose, we build cliques of $V$ vertices (and thus $E=V(V+1)/2$ -edges since we include self loops). Then we repeatedly delete all -edges and vertices in these graphs. Figure~\ref{fig:bench:build} -displays the creation and deletion timings in seconds up to $V=1000$ -(that is half a million edges). The speed of creation observed is -roughly 100,000 edges per second for imperative graphs. The creation -of persistent graphs is slower but within a constant factor (less than -2). Deletion is twice as fast as creation. Regarding memory -consumption, all four data structures use approximately 5 machine words -(typically 20 bytes) per edge. - -\begin{figure*} - \centering%\hspace*{-2em} - \input{./bench1c.tex} - - \input{./bench1d.tex} -%% \begin{tabular}{cc} -%% \begin{minipage}{0.5\linewidth} -%% \input{./bench1c.tex} -%% \end{minipage} & -%% \begin{minipage}{0.5\linewidth} -%% \input{./bench1d.tex} -%% \end{minipage} -%% \end{tabular} - \caption{Benchmarking creation (top) and deletion (bottom)} - \label{fig:bench:build} -\end{figure*} - -Our second benchmark consists in building graphs corresponding to 2D -mazes using a percolation algorithm and traversing them using -depth-first and breadth-first traversals. Given an integer $N$, we -build a graph with $V=N^2$ vertices and $E=V-1$ edges. -Figure~\ref{fig:bench:maze} displays the timings in seconds for -various values of $N$ up to 600 (i.e. 360,000 vertices). The observed -speed is between 500,000 and 1 million traversed edges per second. - -% on enleve Dijkstra parce que le resultat est bizarre -% \input{./bench2dij} - -\begin{figure*} - \centering%% \hspace*{-2em} -%% \begin{tabular}{cc} -%% \begin{minipage}{0.5\linewidth} -%% \input{./bench2dfs} -%% \end{minipage} & -%% \begin{minipage}{0.5\linewidth} -%% \input{./bench2bfs} -%% \end{minipage} -%% \end{tabular} - \input{./bench2dfs} - - \input{./bench2bfs} -\vspace*{-1em} - \caption{Benchmarking DFS (top) and BFS (bottom)} - \label{fig:bench:maze} -\end{figure*} - -% memory use : pas probant ; donner plutot les chiffres directement -% ou mieux comparer avec la representation matricielle -% \input{./bench2mem} - -We also tested the adjacency matrix-based data structure. Creation and -deletion are much faster in that case, and the data structure for -a dense graph is usually much more compact (it is implemented using bit -vectors). However, the use of this particular implementation is -limited to unlabeled imperative graphs with integer vertices. -The above benchmarks, on the contrary, do not depend on the nature of -vertices and edges types. Thus they are much more representative of -\ocamlgraph average performances. - - -\section{Conclusion} - -We presented \ocamlgraph, a highly generic graph library for \ocaml\ -providing several graph data structures and graph algorithms. -Algorithms are written independently from graph data structures, which -allows combining user data structure (resp. algorithm) with -\ocamlgraph algorithm (resp. data structure). To our knowledge, there -is no library for any applicative language as generic as \ocamlgraph. -This genericity is obtained using \ocaml module system and especially -its functors which allow sharing large pieces of code and provide -greater consistency than the mere use of higher-order functions. The -same level of genericity could probably be achieved using Haskell's -multi-parameter type classes~\cite{Dreyer2007,Wehr2005,Oleg}. -Regarding imperative -languages, graph libraries are rarely as generic and never provide as -many different data structures. - -Since its first release (Feb. 2004), the number of \ocamlgraph users -has been increasing steadily and several of them contributed code to the -library. Some of them provided new graph data structures (such as -\texttt{ConcreteBidirectional}) and others new algorithms -(e.g. minimal separators). It clearly shows the benefits of a generic -library where data structures and algorithms are separated. - -% \appendix -% \section{Appendix Title} - -% This is the text of the appendix, if you need one. - -% \acks - -% Acknowledgments, if needed. - -%\nocite{*} -\bibliographystyle{plain} -\bibliography{./biblio} -% \begin{thebibliography}{} - -% \bibitem{smith02} -% Smith, P. Q. reference text - -% \end{thebibliography} - -\newpage -\appendix -\section{Simple Sudoku Solver using Ocamlgraph}\label{appendix} -Below is the full listing for a Sudoku solver using \ocamlgraph, as -described in this paper. This program reads the Sudoku problem on -standard input and prints the solution on standard output. -% It can be compiled as follows: -% \begin{center} -% \verb!ocamlopt -o sudoku graph.cmxa sudoku.ml! -% \end{center} -{\small -\begin{verbatim} -open Graph - -(* We use undirected graphs with nodes containing - a pair of integers (the cell coordinates in - 0..8 x 0..8). *) -module G = Imperative.Graph.Abstract - (struct type t = int * int end) - -(* The Sudoku grid = a graph with 9x9 nodes *) -let g = G.create () - -(* We create the 9x9 nodes, add them to the graph - and keep them in a matrix for later access *) -let nodes = - let new_node i j = - let v = G.V.create (i, j) in G.add_vertex g v; v - in - Array.init 9 (fun i -> Array.init 9 (new_node i)) - -let node i j = nodes.(i).(j) - -(* We add the edges: two nodes are connected whenever - they can't have the same value *) -let () = - for i = 0 to 8 do for j = 0 to 8 do - for k = 0 to 8 do - if k <> i then G.add_edge g (node i j) (node k j); - if k <> j then G.add_edge g (node i j) (node i k); - done; - let gi = 3 * (i / 3) and gj = 3 * (j / 3) in - for di = 0 to 2 do for dj = 0 to 2 do - let i' = gi + di and j' = gj + dj in - if i' <> i || j' <> j then - G.add_edge g (node i j) (node i' j') - done done - done done - -(* We read the initial constraints from standard input *) -let () = - for i = 0 to 8 do - let s = read_line () in - for j = 0 to 8 do match s.[j] with - | '1'..'9' as ch -> - G.Mark.set (node i j) (Char.code ch - Char.code '0') - | _ -> () - done - done - -(* We solve the Sudoku by 9-coloring the graph g *) -module C = Coloring.Mark(G) -let () = C.coloring g 9 - -(* We display the solution *) -let () = - for i = 0 to 8 do - for j = 0 to 8 do - Format.printf "%d" (G.Mark.get (node i j)) - done; - Format.printf "\n"; - done; - Format.printf "@?" -\end{verbatim}} - -\end{document} -%1-59593-090-6/05/0007 diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/paper.bib b/jscomp/build_tests/ocamlgraph/papers/tfp07/paper.bib deleted file mode 100755 index 7a715f231a..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/paper.bib +++ /dev/null @@ -1,145 +0,0 @@ - -@misc{XII:ObjectiveCaml, - title = {{The Objective Caml language}}, - note = {\url{http://caml.inria.fr/}} -} - - -@misc{XII:Jdsl, - title = {{The Data Structures Library in Java}}, - note = {\url{http://www.cs.brown.edu/cgc/jdsl/}} -} - - -@misc{XII:Mlrisc, - title = {{The MLRISC System}}, - note = {\url{http://cs1.cs.nyu.edu/leunga/www/MLRISC/Doc/html/INTRO.html}} -} - -@misc{XII:Baire, - title = {{Baire}}, - note = {\url{http://www.edite-de-paris.com.fr/~fpons/Caml/Baire/}} -} - -@misc{XII:Fgl, - title = {{FGL - A Functional Graph Library}}, - note = {\url{http://web.engr.oregonstate.edu/~erwig/fgl/}} -} - -@misc{XII:Gtl, - title = {{The Graph Template Library}}, - note = {\url{http://infosun.fmi.uni-passau.de/GTL/}} -} - -@misc{XII:Bgl, - title = {{BGL - The Boost Graph Library}}, - note = {\url{http://www.boost.org/libs/graph/doc/}} -} - -@article{XII:Leda, - author = {Kurt Mehlhorn and Stefan Näher}, - title = {LEDA: a platform for combinatorial and geometric computing}, - journal = {Commun. ACM}, - volume = {38}, - number = {1}, - year = {1995}, - issn = {0001-0782}, - pages = {96--102}, - publisher = {ACM Press}, - } - -@article{XII:Erwig, - author = "Martin Erwig", - title = "Inductive Graphs and Functional Graph Algorithms", - year = "2001", - journal = "{Journal of Functional Programming}", - volume = 11, - number = 5, - pages = "467--492", -} - - - -@ARTICLE{XII:leroy00, - AUTHOR = {Xavier Leroy}, - TITLE = {A modular module system}, - JOURNAL = {Journal of Functional Programming}, - VOLUME = 10, - NUMBER = 3, - YEAR = 2000, - PAGES = {269--303}, - URL = {http://pauillac.inria.fr/~xleroy/publi/modular-modules-jfp.ps.gz} -} - - -@PhdThesis{XII:Goldberg, - author = {Andrew V. Goldberg}, - title = {Efficient graph algorithms for sequential and parallel computers}, - school = {MIT, Cambridge, Massachusetts}, - year = 1987, - month = {January}, -} - -@Article{XII:FF, - author = {L. R. Jr. Ford and D. R. Fulkerson}, - title = {Maximal Flow Through a Network}, - journal = {Canadian Journal of Mathematics}, - year = 1956, - pages = {99-404}, -} - -@BOOK{XII:okasaki98, - AUTHOR = {Chris Okasaki}, - TITLE = {{Purely Functional Data Structures}}, - PUBLISHER = {Cambridge University Press}, - YEAR = 1998 -} - -@Book{XII:coplien92, - author = {James O. Coplien}, - title = {{Advanced C++ Programming Styles and Idioms}}, - publisher = {Addison-Wesley}, - year = 1992 -} - -@TechReport{XII:filliatre06, - author = {Jean-Christophe Filli\^atre}, - title = {{Backtracking Iterators}}, - institution = {LRI, Universit\'e Paris-Sud}, - year = 2006, - type = {{Research Report}}, - number = 1428, - month = {January}, - note = {\url{http://www.lri.fr/~filliatr/ftp/publis/enum-rr.ps.gz}} -} - -@InProceedings{XII:ramsey05, - author = {Norman Ramsey}, - title = {{ML Module Mania: A Type-Safe Separately Compiled, Extensible Interpreter}}, - booktitle = {{ACM SIGPLAN Workshop on ML}}, - year = 2005 -} - -@Misc{XII:Oleg, - author = {Oleg Kiselyov}, - title = {{Applicative translucent functors in Haskell}}, - year = 2004, - note = {At \url{http://www.haskell.org/pipermail/haskell/2004-August/014463.html}} -} - -@inproceedings{XII:Dreyer2007, -author = {Dreyer, D. and Harper, R. and Chakravarty, M. M. T. }, -booktitle = {POPL}, -title = {Modular Type Classes}, -url = {http://www.cse.unsw.edu.au/~chak/papers/mtc-popl.pdf}, -year = {2007} -} - -[2] -@misc{XII:Wehr2005, - title = "\emph{{ML} Modules and {Haskell} Type Classes: A Constructive Comparison}", - year = {2005}, - author = {Stefan Wehr}, - month = nov, - note = {Submitted for publication and available at \url{http://www.stefanwehr.de/diplom}} -} diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/paper.tex b/jscomp/build_tests/ocamlgraph/papers/tfp07/paper.tex deleted file mode 100755 index 6150247170..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/paper.tex +++ /dev/null @@ -1,1491 +0,0 @@ -\chaptitle{Designing a Generic Graph Library using ML Functors} - -\chapter{Designing a Generic Graph Library using ML Functors} - -\chapauthors{Sylvain Conchon\footnotemark[1]{}, - Jean-Christophe Filli\^atre\footnotemark[1]{}, - Julien Signoles\footnotemark[2]{}} -\footnotetext[1]{LRI, Univ Paris-Sud, CNRS, INRIA Futurs (ProVal), 91893 Orsay, France;\\ - Email: {\tt \{Sylvain.Conchon,Jean-Christophe.Filliatre\}@lri.fr}} - -\footnotetext[2]{CEA-LIST, Laboratoire S\^uret\'e des Logiciels, - 91191 Gif-sur-Yvette cedex, France; - Email: {\tt Julien.Signoles@cea.fr}} - -\addtocounter{footnote}{2} -\chapauthorstoc{Sylvain Conchon, Jean-Christophe Filli\^atre, Julien Signoles} - -% Abstract -%=============================================================================== - -\paragraph{Abstract:} - This paper details the design and implementation of \ocamlgraph, a - highly generic graph library for the programming language \ocaml. - This library features a large set of graph data - structures---directed or undirected, with or without labels on - vertices and edges, as persistent or mutable data structures, - etc.---and a large set of graph algorithms. Algorithms are written - independently from graph data structures, which allows combining - user data structure (resp. algorithm) with \ocamlgraph algorithm - (resp. data structure). Genericity is obtained through massive use - of the \ocaml module system and its functions, the so-called - \emph{functors}. - - - -\section{Introduction} - -Finding a graph library for one's favorite programming language is -usually easy. But applying the provided algorithms to one's own graph -data structure or building undirected persistent graphs with vertices -and edges labeled with data other than integers is likely to be more -difficult. Figure~\ref{XII:comparison:tab} quickly compares several graph -libraries according to the following criteria: number of graph data -structures; purely applicative or imperative nature of the structures; -and ability to apply the provided algorithms to a user-defined graph -data structure. As one can notice, none of these libraries gives full -satisfaction. This paper introduces -\ocamlgraph\footnote{\ocamlgraph is an open source library available - at \textrm{http://ocamlgraph.lri.fr/}.}, a -highly generic graph library for the programming language -\ocaml~\cite{XII:ObjectiveCaml}, which intends to fulfill all these -criteria. - -% Beside the mere presentation of this -% library, this paper demonstrates how \ocaml has been used to -\ocamlgraph\ introduces genericity at two levels. First, \ocamlgraph -does not provide a single data structure for graphs but many of them, -enumerating all possible variations (19 altogether)---directed or -undirected graphs, persistent or mutable data structures, user-defined -labels on vertices or edges, etc.---under a common interface. -Secondly, \ocamlgraph provides a large set of graph algorithms that -are written independently from the underlying graph data structure. -These can then be applied naturally to the data structures provided by -\ocamlgraph itself and also on user-defined data structures as soon as -these implement a minimal set of functionalities. - -Without proper parameterization, such a large set of variants may -easily result in unmanageable code. We avoid this pitfall using the -\ocaml module system~\cite{XII:leroy00}, which appears to be the tool of -choice for this kind of meta-programming. The genericity of -\ocamlgraph is indeed achieved through a massive use of \ocaml -functors. On one hand, they are used to avoid code duplication between -the many variations of graph data structures, which is mandatory here -due to the high number of similar but different implementations. On -the other hand, they are used to write graph algorithms independently -from the underlying graph data structure, with as much genericity as -possible while keeping efficiency in mind. - -This paper is organized as follows. Section~\ref{XII:systememodules} -gives an overview of \ocaml module system. -Section~\ref{XII:motivatingexample} demonstrates the use of -\ocamlgraph through an example. Section~\ref{XII:implementation} -exposes the design of the common interface for all graph data -structures and explains how the code is shared among various -implementations. Section~\ref{XII:algos} describes the algorithms -provided in \ocamlgraph and how genericity is obtained with respect to -the graph data structure. Finally Section~\ref{XII:bench} presents -some benchmarks. - -% \section{Related Work} -% \label{XII:comparaison} - -% This section details the features of several other graph libraries, in -% order to make a comparison with \ocamlgraph. Our list is not -% exhaustive and only focuses on programming languages where some kind -% of generic programming is possible. Figure~\ref{XII:comparison:tab} -% summarizes our comparison criteria which are mainly based on the -% genericity of the data structures and algorithms proposed by some -% other libraries. - -\begin{figure*}[t] -\newcommand{\present}{yes} -\newcommand{\absent}{no} - - \centering - \begin{tabular}{|l||c|c|c|c|c|} - \hline - & & graph data & imperative / & generic \\ - & language & structures & persistent\footnotemark & algorithms \\\hline\hline - GTL \cite{XII:Gtl} & C++ & 1 & I & \absent \\\hline - LEDA \cite{XII:Leda} & C++ & 2 & I & \absent \\\hline - BGL \cite{XII:Bgl} & C++ & 2 & I & \present \\\hline - JDSL \cite{XII:Jdsl} & Java & 1 & I & \present \\\hline - FGL \cite{XII:Fgl,XII:Erwig} & Haskell & 1 & P & \present \\\hline - MLRisc \cite{XII:Mlrisc} & SML & 1 & I & \absent \\\hline - Baire \cite{XII:Baire}\footnotemark & \ocaml & 8 &P/I& meaningless \\\hline -% \ocamlgraph& \ocaml &P/I& \present & 19 \\\hline - \end{tabular} - \medskip - \caption{Comparison with other graph libraries} - \label{XII:comparison:tab} -\end{figure*} -\addtocounter{footnote}{-1} \footnotetext{An imperative graph is a - mutable data structure where modifications are performed in-place, - while a persistent graph is an immutable data structure; see for - instance Okasaki's book~\cite{XII:okasaki98} for more details about - persistent data structures.} -\addtocounter{footnote}{1} -\footnotetext{The Baire library seems to be no longer available from - Internet.} - - -\section{Overview of \ocaml Module System}\label{XII:systememodules} - -This section quickly describes the \ocaml module system. Any reader -familiar with \ocaml can safely skip this section. - -The module system of \ocaml is a language by itself, on top of the -core \ocaml language, which only fulfills software engineering -purposes: separate compilation, names space structuring, encapsulation -and genericity. This language appears to be independent of the core -language~\cite{XII:leroy00} and may be unfolded statically. It is a -strongly typed higher-order functional language. Its terms are called -\emph{modules} or \emph{structures}. They are the basic blocks in -\ocaml programs, that package together types, values, exceptions -and sub-modules. - -\subsection{Structures} - -Modules are introduced using the \texttt{struct...end} construct and -the (optional) \texttt{module} binding is used to give them a name. -Outside a module, its components can be referred to using the -\emph{dot notation}: \texttt{M.c} denotes the component -\texttt{c} defined in the module \texttt{M}. - -For instance, a module packaging together a type for a graph data -structure and some basic operations can be implemented in the -following way: -\begin{alltt} -module Graph = struct - type label = int - type t = (int \fois label) list array - let create n = Array.create n [] - let add_edge g v1 v2 l = g.(v1) \flg (v2,l)::g.(v1) - let iter_succ g f v = List.iter f g.(v) -end -\end{alltt} -The type \texttt{Graph.t} defines a naive graph data structure using -adjacency lists with edges labeled with integers: a graph is an array -(indexed by integers representing vertices) whose elements are lists of -pairs of integers and labels (declared as an alias for the type -\texttt{int}). - -\subsection{Signatures} - -The type of a module is called a \emph{signature} or an -\emph{interface}\footnote{with the same meaning as in \textsc{Modula} - but not as in \textsc{Java}} and can be used to hide some components -or the definition of a type (then called an \emph{abstract data - type}). Signatures are defined using the \texttt{sig...end} -construct and the (optional) \texttt{module type} binding is used to -give them a name. Constants and functions are declared -via the keyword \texttt{val} and types via the keyword \texttt{type}. - -For instance, a possible signature for the \texttt{Graph} module -above, that hides the graph representation and the type of labels, -could be the following: -\begin{alltt} -module type GRAPH = sig - type label - type t - val create : int \fl t - val add_edge : t \fl int \fl int \fl label \fl unit - val iter_succ : - t \fl (int \fois label \fl unit) \fl int \fl unit -end -\end{alltt} -Restricting a structure by a signature results in another view of the -structure. This is done as follows: -\begin{alltt} -module G' = (G : GRAPH) -\end{alltt} -Since interfaces and structures are clearly separated, it is possible -to have several implementations for the same interface. Conversely, a -structure may have several signatures (hiding and restricting more -or less components). - -\subsection{Functors} - -The functions of the module system are called \emph{functors} and -allow us to define modules parameterized by other modules. Then they -can be applied one or several times to particular modules with the -expected signature. The benefits of functors in software engineering -are appreciated as soon as one has to parameterize a \emph{set} of -types and functions by another \emph{set} of types and functions, in a -sound way\footnote{See for instance Norman Ramsey's \emph{ML Module - Mania}~\cite{XII:ramsey05} as an example of a massive use of ML - functors.}. -For instance, to implement Dijkstra's shortest path -algorithm for any graph implementation where edges are labeled with -integers, one can write a functor looking like: -\begin{alltt} -module type S = sig - type label - type t - val iter_succ : - t \fl (int \fois label \fl unit) \fl int \fl unit -end - -module Dijkstra (G : S with type label = int) = - struct - let dijkstra g v1 v2 = (* ... *) - end -\end{alltt} -The \texttt{with type} annotation is used here to unify the abstract -type \texttt{label} from the signature \texttt{S} with the type -\texttt{int}. One may also notice that the signature \texttt{S} -required for the functor's argument only contains what is necessary to -implement the algorithm. However, we can apply the functor to any -module whose signature contains \emph{at least} \texttt{S} i.e. is a -\emph{subtype} of \texttt{S}. - -Functors are also first-class values, i.e they can be passed as -arguments to other functors. Finally, it is possible to aggregate -signatures or modules using the \texttt{include} construct which can -be naively seen as a textual inclusion. - - -\section{Motivating Example}\label{XII:motivatingexample} - -To illustrate the use of \ocamlgraph, we consider a Sudoku solver -based on graph -coloring. The idea is to represent the Sudoku grid as an undirected -graph with $9\times 9$ vertices, each vertex being connected to all -other vertices on the same row, column and $3\times 3$ group. -Solving the Sudoku is equivalent to 9-coloring this graph. -Figure~\ref{XII:fig:sudoku} displays the sketch of a solution to -this problem using \ocamlgraph\footnote{Full source code for the - Sudoku example is given in appendix~\ref{XII:appendix}.}. There are -four steps in this code: -\begin{enumerate} -\item We choose a graph data structure for our Sudoku solver: it is an - imperative undirected graph with vertices labeled with pairs of - integers (the cells coordinates) and unlabeled edges. - In this structure, vertices are also - equipped with integer marks, that are used to store the assigned - colors. -\item We create the Sudoku grid and fill it with the initial - constraints. -\item We obtain a coloring algorithm for our graph data structure. -\item We solve the Sudoku problem by 9-coloring the graph. -\end{enumerate} -This code is almost as efficient as a hand-coded Sudoku solver: on the -average, a Sudoku puzzle is solved in 0.2 seconds (on a Pentium IV 2.4 -GHz). The remainder of this paper goes into more details about the -code above. - -\begin{figure}[t] -\hrulefill\\[-2em] -\begin{center} -\begin{alltt} -module G = Imperative.Graph.Abstract - (struct type t = int \ensuremath{\times} int end) - -let g = G.create () - -let () = - ... add vertices to g with G.add_vertex, - edges with G.add_edge and initial - constraints (20 lines of code) ... - -module C = Coloring(G) - -let () = C.coloring g 9 -\end{alltt} -\end{center} -\hrule - - \caption{A Sudoku solver using \ocamlgraph} - \label{XII:fig:sudoku} -\end{figure} - - - -% What we should expect from a good graph library is thus: -% \begin{enumerate} -% \item the ability to easily build an undirected graph where each -% vertex is labeled with a pair of integers (the cell coordinates); -% \item an efficient graph coloring algorithm that can be applied to the -% above data structure. -% \end{enumerate} -% If a graph library is providing only directed graphs or only -% unlabeled vertices, one has to adapt to the existing data structure. -% Generally speaking, the user may want -% to choose any combination of the following features: -% \begin{itemize} -% \item \emph{directed} or \emph{undirected} graphs; -% \item \emph{labeled} or \emph{unlabeled} vertices and edges; -% \item \emph{types} for the labels, when any; -% \item \emph{persistent} or \emph{imperative} data structure; -% \end{itemize} -% The strong point in \ocamlgraph is to provide \emph{all} possible -% combinations, as ML modules sharing a common signature \texttt{G}. -% Then algorithms are provided as ML functors whose arguments must have -% signatures compatible with \texttt{G}. - -\section{Signatures and Graph Data Structures}\label{XII:implementation} - -Managing many variants of graph data structures without proper -parameterization results into unmanageable code. -% -Here we show how we factorized the \ocamlgraph implementation to avoid -such pitfall. Section~\ref{XII:interface} describes the common -sub-signatures shared by all graphs. Section~\ref{XII:structuresdedonnees} -details their various implementations. - -% First Section~\ref{XII:interface} describes the common signatures for all -% graph data structures. Then Section~\ref{XII:structuresdedonnees} details -% the various graph implementations. - -\subsection{Sharing Signatures for All Graphs}\label{XII:interface} - - -All graph data structures share a common sub-signature \texttt{G} for -observers. Two other signatures distinguish the modifiers for -persistent and imperative graphs, respectively. - -The common signature \texttt{G} includes an abstract type \texttt{t} -for the graph datatype and two modules \texttt{V} and \texttt{E} for -vertices and edges respectively. The signature for \texttt{E} always -includes a type \texttt{label} which is instantiated by the singleton -type \texttt{unit} for unlabeled graphs. Modules \texttt{V} and -\texttt{E} both implement the standard comparison and hashing -functions so that graph algorithms may easily construct data -structures containing vertices and edges. \texttt{G} also includes -usual observers such as functions to iterate over vertices and edges, -which are massively used in graph algorithms. The common signature -looks like: - -%\newpage -\begin{alltt} -module type G = sig - type t - module V : sig type t ... end - module E : sig - type t - type label - val label : t \ensuremath{\rightarrow} label - ... - end - val iter_vertex : (V.t \ensuremath{\rightarrow} unit) \ensuremath{\rightarrow} t \ensuremath{\rightarrow} unit - val iter_succ : (V.t \ensuremath{\rightarrow} unit) \ensuremath{\rightarrow} t \ensuremath{\rightarrow} V.t \ensuremath{\rightarrow} unit - ... -end -\end{alltt} -We distinguish the signature \texttt{P} for persistent graphs -from the signature \texttt{I} for imperative graphs, since the modifiers do -not have the same type in both: -\begin{alltt} -module type P = sig - include G - val empty : t - val add_vertex : t \ensuremath{\rightarrow} V.t \ensuremath{\rightarrow} t - val add_edge : t \ensuremath{\rightarrow} V.t \ensuremath{\rightarrow} V.t \ensuremath{\rightarrow} t - ... -end -module type I = sig - include G - val create : unit \ensuremath{\rightarrow} t - val add_vertex : t \ensuremath{\rightarrow} V.t \ensuremath{\rightarrow} unit - val add_edge : t \ensuremath{\rightarrow} V.t \ensuremath{\rightarrow} V.t \ensuremath{\rightarrow} unit - ... -end -\end{alltt} -\subsection{19 Graph Data Structures in 1000 Lines of Code}\label{XII:structuresdedonnees} - -\ocamlgraph provides 19 graph data structures, which include all the -possible combinations of the following 4 criteria: -\begin{itemize} -\item \emph{directed} or \emph{undirected} graph; -\item \emph{labeled} or \emph{unlabeled} edges; -\item \emph{persistent} or \emph{imperative} data structure; -\item \emph{concrete} or \emph{abstract} type for vertices. -\end{itemize} -The last point requires some explanations. Vertices are always labeled -internally with the value provided by the user. Accessing this value -depends on the choice of concrete or abstract vertices. Concrete -vertices allow unrestricted access to their value. Abstract vertices -hide their value inside an abstract data type. The former allows a -more immediate use of the data structure and the latter a more -efficient implementation. In particular, imperative graphs with -abstract vertices can be equipped with integer mutable marks, which -are used in our Sudoku solver. - -A functor is provided for each data structure. It is parameterized by -user types for vertex labels and possibly edge labels. These -functors\footnote{The signatures of all these functors are - available at \textrm{http://ocamlgraph.lri.fr/doc/}.} -are displayed in Figure~\ref{XII:fig:interfaces} as square boxes mapping -signatures of input modules (incoming plain edges) to the signature of -the graph module (outgoing plain edges). -Of these, 8 functors exist in both directed and undirected versions. -\begin{figure*} - \centering - \includegraphics[width=\textwidth]{interface.pdf} - %\includegraphics[width=\textwidth]{interface.eps} - \caption{\ocamlgraph data structures components}\label{XII:fig:interfaces} -\end{figure*} -Input signatures \texttt{ANY\_TYPE}, \texttt{ORDERED\_TYPE\_DFT} and -\texttt{COMPARABLE} define the user types for vertices and edges -labels. For instance, functor -\texttt{AbstractLabelled} from \texttt{Imperative.Graph} takes as -arguments two modules of signatures \texttt{ANY\_TYPE} and -\texttt{ORDERED\_TYPE\_DFT} respectively and produces a module implementing -signature \texttt{IM}. This signature extends signature \texttt{I} with -mutable marks, as indicated by the dashed edge from \texttt{IM} to -\texttt{I}. -Three other implementations complete the set of graph -data structures, namely \texttt{ConcreteBidirectional} for graphs with -an efficient access to predecessors, and -\texttt{Matrix.}(\texttt{Graph}, \texttt{Digraph}) for graphs -implemented as adjacency matrices. For efficiency reasons, these three -implementations do not offer the same combination of criteria as the -previous ones. - -Several functors are used internally to avoid code duplication among the -functors presented in Figure~\ref{XII:fig:interfaces}. For instance, a -functor adds labels to -unlabeled graphs; another one encapsulates concrete vertices into an -abstract data type; etc. Putting it all together, the code size for -the 19 graph data structures is about 1000 lines. This is clearly -small enough to be easily maintained. In Section~\ref{XII:bench} we will -show that this code is also quite efficient. - -The graph data structure for our Sudoku solver is simply an imperative -undirected graph with abstract vertices labeled with pairs of integers -and unlabeled edges. It is obtained as: -\begin{alltt} -module G = Imperative.Graph.Abstract - (struct type t = int \ensuremath{\times} int end) -\end{alltt} - -\section{Generic Algorithms}\label{XII:algos} - -This section introduces the second use of functors in \ocamlgraph: -generic programming of graph algorithms. - -\subsection{Decoupling Algorithms and Graph Data Structures} - -As demonstrated in Section~\ref{XII:implementation}, our library provides -many graph data structures. It makes it necessary to factorize the -code for graph algorithms that operate on these structures. Again, -functors provide a nice encoding of generic algorithms. - -The basic idea when coding an algorithm is to focus only on the -required operations that this algorithm imposes on the graph data -structure. Then this algorithm can be expressed naturally as a functor -parameterized by these operations. These operations usually form a -subset of the operations provided by \ocamlgraph graph data -structures. In a few cases, the algorithm requires specific operations -that are independent of the graph data structure. In such a case, the -specific operations are provided as an additional functor parameter. - -Such a ``functorization'' of algorithms has two benefits: first, it -allows to add quickly new algorithms to the library, without -duplicating code for all data structures; secondly, it allows the user to -apply an existing algorithm on his own graph data structure. -Note that on the latter case the user is responsible for fulfilling -the requirements over the functor parameters (which are available from -\ocamlgraph documentation). - -\subsection{Example: Depth-First Traversal} -\label{XII:dfs} - -We illustrate the generic programming of graph algorithms on the -particular example of depth-first prefix traversal (DFS). To implement DFS, -we need to iterate over the graph vertices and over the edges leaving -a given vertex. If we do not assume any kind of marks on vertices, we -also need to build a data structure to store the visited nodes. -We choose a hash table for this purpose and thus we require a hash -function and an equality over vertices. -Thus the minimal input signature for the DFS functor is as follows: -\begin{alltt} -module type G = sig - type t - module V : sig - type t - val hash : t \ensuremath{\rightarrow} int - val equal : t \ensuremath{\rightarrow} t \ensuremath{\rightarrow} bool - end - val iter_vertex : (V.t \ensuremath{\rightarrow} unit) \ensuremath{\rightarrow} t \ensuremath{\rightarrow} unit - val iter_succ : (V.t \ensuremath{\rightarrow} unit) \ensuremath{\rightarrow} t \ensuremath{\rightarrow} V.t \ensuremath{\rightarrow} unit -end -\end{alltt} -The DFS algorithm is then implemented as a functor with an argument of -signature \texttt{G}. The result of functor application is a module -providing a single function \texttt{dfs} to traverse a given graph -while applying a given function on all visited vertices: -\begin{alltt} -module Dfs(G : G) : - sig val dfs : (G.V.t \ensuremath{\rightarrow} unit) \ensuremath{\rightarrow} G.t \ensuremath{\rightarrow} unit end -\end{alltt} -To implement this functor, we first instantiate \ocaml's generic hash -tables on graph vertices: -\begin{alltt} -module Dfs(G : G) = struct - module H = Hashtbl.Make(G.V) -\end{alltt} -Then we can implement the traversal. The following code uses a hash -table \texttt{h} to store the vertices already visited and an explicit -stack \texttt{stack} to store the vertices to be visited (to avoid the -possible stack overflow of a recursive implementation). Function -\texttt{G.iter\_vertex} is used to start a DFS on every vertex. The -DFS itself is performed in function \texttt{loop} using \texttt{G.iter\_succ}: -\begin{alltt} - let dfs f g = - let h = H.create 65537 in - let stack = Stack.create () in - let push v = - if not (H.mem h v) then - begin H.add h v (); Stack.push v stack end - in - let loop () = - while not (Stack.is_empty stack) do - let v = Stack.pop stack in - f v; - G.iter_succ push g v - done - in - G.iter_vertex (fun v \ensuremath{\rightarrow} push v; loop ()) g -end -\end{alltt} -Beside this simple algorithm, \ocamlgraph\ provides other kinds of -traversals (breadth-first, postfix, etc.) and more efficient -implementations when the graph data structure contains mutable marks -on vertices. - -\subsection{Example: Graph Coloring} -\label{XII:coloring} - -As a second example, we present a graph coloring algorithm used in our -Sudoku solver. -For the purpose of our -algorithm, we require the presence of \texttt{get} and \texttt{set} -operations on integer marks associated to vertices. We use these marks -to store the color assigned to each vertex. We also need iterators -over vertices and successors. Thus the minimal signature for a graph -data structure used in our graph coloring algorithm is the following: -\begin{alltt} -module type GM = sig - type t - module V : sig type t ... end - module Mark : sig - val get : V.t \ensuremath{\rightarrow} int - val set : V.t \ensuremath{\rightarrow} int \ensuremath{\rightarrow} unit - end - val iter_vertex : (V.t \ensuremath{\rightarrow} unit) \ensuremath{\rightarrow} t \ensuremath{\rightarrow} unit - val iter_succ : (V.t \ensuremath{\rightarrow} unit) \ensuremath{\rightarrow} t \ensuremath{\rightarrow} V.t \ensuremath{\rightarrow} unit -end -\end{alltt} -\ocamlgraph already provides implementations for such a -signature. This is the case for the graph data structure used in our -Sudoku solver. -Then the graph coloring algorithm is implemented as the following functor: -\begin{alltt} -module Coloring(G : GM) : sig - val coloring : G.t \ensuremath{\rightarrow} int \ensuremath{\rightarrow} unit -end -\end{alltt} -It provides a single function \texttt{coloring} which colors a given -graph with a given number of colors. Some marks may contain initial -constraints. -The implementation of this coloring algorithm is given in -appendix~\ref{XII:appendix:coloring}. -To complete our Sudoku solver, we simply need to apply the above -functor on our graph module~\texttt{G}: -\begin{alltt} -module C = Coloring(G) -\end{alltt} -If \texttt{g} contains the Sudoku graph, and -assuming that the initial constraints are set in \texttt{g} marks, -solving the Sudoku amounts to 9-coloring graph \texttt{g}: -\begin{alltt} -C.coloring g 9 -\end{alltt} - - -\subsection{Building Graphs}\label{XII:builder} - -In Section~\ref{XII:interface}, we have shown that persistent and -imperative graphs have creation functions with different signatures. -However, as we have written algorithms in a generic way, we may want -to build graphs in a generic way, that is independently of the -underlying data structure. For instance, we may want to implement -graph operations (such as union, transitive closure, etc.) or to build -some classic graphs (such as the full graph with $n$ vertices, the de -Bruijn graph of order $n$, etc.) or even random graphs. In all these -cases, the persistent or imperative nature of the graph is not really -significant but the signature difference disallows genericity. - -To solve this issue, we introduce a module \texttt{Builder}. It -defines a common interface for graphs building: -\begin{alltt} -module type S = sig - module G : Sig.G - val empty : unit \fl G.t - val copy : G.t \fl G.t - val add_vertex : G.t \fl G.V.t \fl G.t - val add_edge : G.t \fl G.V.t \fl G.V.t \fl G.t - val add_edge_e : G.t \fl G.E.t \fl G.t -end -\end{alltt} -It is immediate to realize such a signature for persistent or -imperative graphs: -\begin{alltt} -module P(G : Sig.P) : S with module G = G -module I(G : Sig.I) : S with module G = G -\end{alltt} -It is important to notice that for imperative graphs the values -returned by the functions \texttt{add\_vertex}, -\texttt{add\_edge} and \texttt{add\_edge\_e} are meaningless. - -Therefore, it is easy to write a generic algorithm that builds graphs. -First we write a generic version as a functor taking a module of -signature \texttt{Builder.S} as argument: -\begin{alltt} -module Make(B : Builder.S) = struct ... end -\end{alltt} -and then we can trivially provide two variants of this functor for -both persistent and imperative graphs, with the following two lines: -\begin{alltt} -module P(G : Sig.P) = Make(Builder.P(G)) -module I(G : Sig.I) = Make(Builder.I(G)) -\end{alltt} -Thus the use of the module \texttt{Builder} is entirely hidden from -the user point of view. - - -\section{Benchmarks}\label{XII:bench} - -Surprisingly, we could not find any standard benchmark for graph -libraries. In order to give an idea of \ocamlgraph efficiency, we -present here the results of a little benchmark of our own. We test -four different data structures for undirected graphs with unlabeled -edges, that are either persistent (P) or imperative (I) and with -either abstract (A) or concrete (C) vertices. In the following, these -are referred to as PA, PC, IA and IC, respectively. All tests were -performed on a Pentium 4 2.4 GHz. - -We first test the efficiency of graph creation and mutation. For that -purpose, we build cliques of $V$ vertices (and thus $E=V(V+1)/2$ -edges since we include self loops). Then we repeatedly delete all -edges and vertices in these graphs. Figure~\ref{XII:fig:bench:build} -displays the creation and deletion timings in seconds up to $V=1000$ -(that is half a million edges). The speed of creation observed is -roughly 100,000 edges per second for imperative graphs. The creation -of persistent graphs is slower but within a constant factor (less than -2). Deletion is twice as fast as creation. Regarding memory -consumption, all four data structures use approximately 5 machine words -(typically 20 bytes) per edge. - -\begin{figure*} - \centering%\hspace*{-2em} - %\input{./bench1c.tex} -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(120.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,123){\makebox(0,0)[r]{ 0}} -\put(969.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,170.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,170){\makebox(0,0)[r]{ 2}} -\put(969.0,170.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,216.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,216){\makebox(0,0)[r]{ 4}} -\put(969.0,216.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,263.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,263){\makebox(0,0)[r]{ 6}} -\put(969.0,263.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,310.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,310){\makebox(0,0)[r]{ 8}} -\put(969.0,310.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,357.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,357){\makebox(0,0)[r]{ 10}} -\put(969.0,357.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,403.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,403){\makebox(0,0)[r]{ 12}} -\put(969.0,403.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,450.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,450){\makebox(0,0)[r]{ 14}} -\put(969.0,450.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,497.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,497){\makebox(0,0)[r]{ 16}} -\put(969.0,497.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,543.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,543){\makebox(0,0)[r]{ 18}} -\put(969.0,543.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100,590){\makebox(0,0)[r]{ 20}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(120,82){\makebox(0,0){ 100}} -\put(120.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(217.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(217,82){\makebox(0,0){ 200}} -\put(217.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(313.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(313,82){\makebox(0,0){ 300}} -\put(313.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(410.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(410,82){\makebox(0,0){ 400}} -\put(410.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(506.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(506,82){\makebox(0,0){ 500}} -\put(506.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(603.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(603,82){\makebox(0,0){ 600}} -\put(603.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(699.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(699,82){\makebox(0,0){ 700}} -\put(699.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(796.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(796,82){\makebox(0,0){ 800}} -\put(796.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(892.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(892,82){\makebox(0,0){ 900}} -\put(892.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,82){\makebox(0,0){ 1000}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(120.0,123.0){\rule[-0.200pt]{209.342pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(120.0,590.0){\rule[-0.200pt]{209.342pt}{0.400pt}} -\put(120.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(554,21){\makebox(0,0){number of nodes $V$}} -\put(180,550){\makebox(0,0)[r]{IA}} -\put(200.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(120,124){\usebox{\plotpoint}} -\multiput(120.00,124.60)(14.080,0.468){5}{\rule{9.800pt}{0.113pt}} -\multiput(120.00,123.17)(76.660,4.000){2}{\rule{4.900pt}{0.400pt}} -\multiput(217.00,128.58)(4.505,0.492){19}{\rule{3.591pt}{0.118pt}} -\multiput(217.00,127.17)(88.547,11.000){2}{\rule{1.795pt}{0.400pt}} -\multiput(313.00,139.58)(2.739,0.495){33}{\rule{2.256pt}{0.119pt}} -\multiput(313.00,138.17)(92.318,18.000){2}{\rule{1.128pt}{0.400pt}} -\multiput(410.00,157.58)(1.939,0.497){47}{\rule{1.636pt}{0.120pt}} -\multiput(410.00,156.17)(92.604,25.000){2}{\rule{0.818pt}{0.400pt}} -\multiput(506.00,182.58)(1.479,0.497){63}{\rule{1.276pt}{0.120pt}} -\multiput(506.00,181.17)(94.352,33.000){2}{\rule{0.638pt}{0.400pt}} -\multiput(603.00,215.58)(2.111,0.496){43}{\rule{1.770pt}{0.120pt}} -\multiput(603.00,214.17)(92.327,23.000){2}{\rule{0.885pt}{0.400pt}} -\multiput(699.00,238.58)(1.188,0.498){79}{\rule{1.046pt}{0.120pt}} -\multiput(699.00,237.17)(94.828,41.000){2}{\rule{0.523pt}{0.400pt}} -\multiput(796.00,279.58)(0.801,0.499){117}{\rule{0.740pt}{0.120pt}} -\multiput(796.00,278.17)(94.464,60.000){2}{\rule{0.370pt}{0.400pt}} -\multiput(892.00,339.58)(1.249,0.498){75}{\rule{1.095pt}{0.120pt}} -\multiput(892.00,338.17)(94.728,39.000){2}{\rule{0.547pt}{0.400pt}} -\put(180,509){\makebox(0,0)[r]{IC}} -\multiput(200,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(300,509){\usebox{\plotpoint}} -\put(120,124){\usebox{\plotpoint}} -\multiput(120,124)(20.685,1.706){5}{\usebox{\plotpoint}} -\multiput(217,132)(20.665,1.937){5}{\usebox{\plotpoint}} -\multiput(313,141)(20.368,3.990){5}{\usebox{\plotpoint}} -\multiput(410,160)(20.086,5.231){4}{\usebox{\plotpoint}} -\multiput(506,185)(20.572,2.757){5}{\usebox{\plotpoint}} -\multiput(603,198)(18.564,9.282){5}{\usebox{\plotpoint}} -\multiput(699,246)(18.293,9.806){6}{\usebox{\plotpoint}} -\multiput(796,298)(19.299,7.639){5}{\usebox{\plotpoint}} -\multiput(892,336)(18.135,10.096){5}{\usebox{\plotpoint}} -\put(989,390){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(180,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(200.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(120,124){\usebox{\plotpoint}} -\multiput(120.00,125.40)(5.330,0.514){13}{\rule{7.960pt}{0.124pt}} -\multiput(120.00,122.34)(80.479,10.000){2}{\rule{3.980pt}{0.800pt}} -\multiput(217.00,135.40)(5.975,0.516){11}{\rule{8.733pt}{0.124pt}} -\multiput(217.00,132.34)(77.874,9.000){2}{\rule{4.367pt}{0.800pt}} -\multiput(313.00,144.41)(2.377,0.505){35}{\rule{3.895pt}{0.122pt}} -\multiput(313.00,141.34)(88.915,21.000){2}{\rule{1.948pt}{0.800pt}} -\multiput(410.00,165.41)(1.311,0.503){67}{\rule{2.276pt}{0.121pt}} -\multiput(410.00,162.34)(91.277,37.000){2}{\rule{1.138pt}{0.800pt}} -\multiput(506.00,202.41)(0.996,0.502){91}{\rule{1.784pt}{0.121pt}} -\multiput(506.00,199.34)(93.298,49.000){2}{\rule{0.892pt}{0.800pt}} -\multiput(603.00,251.41)(1.311,0.503){67}{\rule{2.276pt}{0.121pt}} -\multiput(603.00,248.34)(91.277,37.000){2}{\rule{1.138pt}{0.800pt}} -\multiput(699.00,288.41)(0.854,0.502){107}{\rule{1.561pt}{0.121pt}} -\multiput(699.00,285.34)(93.759,57.000){2}{\rule{0.781pt}{0.800pt}} -\multiput(796.00,345.41)(0.640,0.501){143}{\rule{1.224pt}{0.121pt}} -\multiput(796.00,342.34)(93.460,75.000){2}{\rule{0.612pt}{0.800pt}} -\multiput(892.00,420.41)(0.614,0.501){151}{\rule{1.182pt}{0.121pt}} -\multiput(892.00,417.34)(94.546,79.000){2}{\rule{0.591pt}{0.800pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(180,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(200,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(300,427){\usebox{\plotpoint}} -\put(120,125){\usebox{\plotpoint}} -\multiput(120,125)(20.598,2.548){5}{\usebox{\plotpoint}} -\multiput(217,137)(20.595,2.574){5}{\usebox{\plotpoint}} -\multiput(313,149)(19.941,5.756){5}{\usebox{\plotpoint}} -\multiput(410,177)(18.718,8.969){5}{\usebox{\plotpoint}} -\multiput(506,223)(17.652,10.918){5}{\usebox{\plotpoint}} -\multiput(603,283)(18.793,8.809){5}{\usebox{\plotpoint}} -\multiput(699,328)(15.215,14.117){7}{\usebox{\plotpoint}} -\multiput(796,418)(16.771,12.229){6}{\usebox{\plotpoint}} -\multiput(892,488)(14.377,14.970){6}{\usebox{\plotpoint}} -\put(989,589){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(120.0,123.0){\rule[-0.200pt]{209.342pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(120.0,590.0){\rule[-0.200pt]{209.342pt}{0.400pt}} -\put(120.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\end{picture} - - %\input{./bench1d.tex} -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(100.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,123){\makebox(0,0)[r]{ 0}} -\put(969.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,175.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,175){\makebox(0,0)[r]{ 1}} -\put(969.0,175.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,227.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,227){\makebox(0,0)[r]{ 2}} -\put(969.0,227.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,279.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,279){\makebox(0,0)[r]{ 3}} -\put(969.0,279.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,331.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,331){\makebox(0,0)[r]{ 4}} -\put(969.0,331.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,382.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,382){\makebox(0,0)[r]{ 5}} -\put(969.0,382.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,434.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,434){\makebox(0,0)[r]{ 6}} -\put(969.0,434.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,486.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,486){\makebox(0,0)[r]{ 7}} -\put(969.0,486.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,538.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,538){\makebox(0,0)[r]{ 8}} -\put(969.0,538.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(80,590){\makebox(0,0)[r]{ 9}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(100.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(100,82){\makebox(0,0){ 100}} -\put(100.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(199.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(199,82){\makebox(0,0){ 200}} -\put(199.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(298.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(298,82){\makebox(0,0){ 300}} -\put(298.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(396.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(396,82){\makebox(0,0){ 400}} -\put(396.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(495.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(495,82){\makebox(0,0){ 500}} -\put(495.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(594.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(594,82){\makebox(0,0){ 600}} -\put(594.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(693.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(693,82){\makebox(0,0){ 700}} -\put(693.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(791.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(791,82){\makebox(0,0){ 800}} -\put(791.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(890.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(890,82){\makebox(0,0){ 900}} -\put(890.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,82){\makebox(0,0){ 1000}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(100.0,123.0){\rule[-0.200pt]{214.160pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(100.0,590.0){\rule[-0.200pt]{214.160pt}{0.400pt}} -\put(100.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(544,21){\makebox(0,0){number of nodes $V$}} -\put(160,550){\makebox(0,0)[r]{IA}} -\put(180.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(100,124){\usebox{\plotpoint}} -\multiput(100.00,124.61)(21.895,0.447){3}{\rule{13.300pt}{0.108pt}} -\multiput(100.00,123.17)(71.395,3.000){2}{\rule{6.650pt}{0.400pt}} -\multiput(199.00,127.59)(8.898,0.482){9}{\rule{6.700pt}{0.116pt}} -\multiput(199.00,126.17)(85.094,6.000){2}{\rule{3.350pt}{0.400pt}} -\multiput(298.00,133.58)(4.600,0.492){19}{\rule{3.664pt}{0.118pt}} -\multiput(298.00,132.17)(90.396,11.000){2}{\rule{1.832pt}{0.400pt}} -\multiput(396.00,144.58)(2.964,0.495){31}{\rule{2.429pt}{0.119pt}} -\multiput(396.00,143.17)(93.958,17.000){2}{\rule{1.215pt}{0.400pt}} -\multiput(495.00,161.58)(3.370,0.494){27}{\rule{2.740pt}{0.119pt}} -\multiput(495.00,160.17)(93.313,15.000){2}{\rule{1.370pt}{0.400pt}} -\multiput(594.00,176.58)(0.739,0.499){131}{\rule{0.691pt}{0.120pt}} -\multiput(594.00,175.17)(97.566,67.000){2}{\rule{0.346pt}{0.400pt}} -\multiput(693.00,241.92)(3.867,-0.493){23}{\rule{3.115pt}{0.119pt}} -\multiput(693.00,242.17)(91.534,-13.000){2}{\rule{1.558pt}{0.400pt}} -\multiput(791.58,230.00)(0.499,0.576){195}{\rule{0.120pt}{0.561pt}} -\multiput(790.17,230.00)(99.000,112.836){2}{\rule{0.400pt}{0.280pt}} -\multiput(890.00,344.58)(1.156,0.498){83}{\rule{1.021pt}{0.120pt}} -\multiput(890.00,343.17)(96.881,43.000){2}{\rule{0.510pt}{0.400pt}} -\put(160,509){\makebox(0,0)[r]{IC}} -\multiput(180,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(280,509){\usebox{\plotpoint}} -\put(100,124){\usebox{\plotpoint}} -\multiput(100,124)(20.739,0.838){5}{\usebox{\plotpoint}} -\multiput(199,128)(20.717,1.256){5}{\usebox{\plotpoint}} -\multiput(298,134)(20.602,2.523){5}{\usebox{\plotpoint}} -\multiput(396,146)(20.754,0.210){5}{\usebox{\plotpoint}} -\multiput(495,147)(17.350,11.391){5}{\usebox{\plotpoint}} -\multiput(594,212)(20.751,-0.419){5}{\usebox{\plotpoint}} -\multiput(693,210)(15.918,13.319){6}{\usebox{\plotpoint}} -\multiput(791,292)(18.750,8.901){5}{\usebox{\plotpoint}} -\multiput(890,339)(17.028,11.868){6}{\usebox{\plotpoint}} -\put(989,408){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(160,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(180.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(100,125){\usebox{\plotpoint}} -\multiput(100.00,126.40)(8.534,0.526){7}{\rule{11.514pt}{0.127pt}} -\multiput(100.00,123.34)(75.102,7.000){2}{\rule{5.757pt}{0.800pt}} -\multiput(199.00,133.41)(3.032,0.507){27}{\rule{4.859pt}{0.122pt}} -\multiput(199.00,130.34)(88.915,17.000){2}{\rule{2.429pt}{0.800pt}} -\multiput(298.00,150.41)(4.378,0.511){17}{\rule{6.733pt}{0.123pt}} -\multiput(298.00,147.34)(84.025,12.000){2}{\rule{3.367pt}{0.800pt}} -\multiput(396.00,162.41)(1.801,0.504){49}{\rule{3.029pt}{0.121pt}} -\multiput(396.00,159.34)(92.714,28.000){2}{\rule{1.514pt}{0.800pt}} -\multiput(495.00,190.41)(0.828,0.502){113}{\rule{1.520pt}{0.121pt}} -\multiput(495.00,187.34)(95.845,60.000){2}{\rule{0.760pt}{0.800pt}} -\multiput(594.00,250.41)(1.084,0.502){85}{\rule{1.922pt}{0.121pt}} -\multiput(594.00,247.34)(95.011,46.000){2}{\rule{0.961pt}{0.800pt}} -\multiput(693.00,296.41)(0.819,0.502){113}{\rule{1.507pt}{0.121pt}} -\multiput(693.00,293.34)(94.873,60.000){2}{\rule{0.753pt}{0.800pt}} -\multiput(791.00,356.41)(0.688,0.501){137}{\rule{1.300pt}{0.121pt}} -\multiput(791.00,353.34)(96.302,72.000){2}{\rule{0.650pt}{0.800pt}} -\multiput(890.00,428.41)(0.669,0.501){141}{\rule{1.270pt}{0.121pt}} -\multiput(890.00,425.34)(96.363,74.000){2}{\rule{0.635pt}{0.800pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(160,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(180,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(280,427){\usebox{\plotpoint}} -\put(100,125){\usebox{\plotpoint}} -\multiput(100,125)(20.704,1.464){5}{\usebox{\plotpoint}} -\multiput(199,132)(20.171,4.890){5}{\usebox{\plotpoint}} -\multiput(298,156)(20.414,3.750){5}{\usebox{\plotpoint}} -\multiput(396,174)(19.569,6.918){5}{\usebox{\plotpoint}} -\multiput(495,209)(17.350,11.391){6}{\usebox{\plotpoint}} -\multiput(594,274)(20.261,4.503){5}{\usebox{\plotpoint}} -\multiput(693,296)(13.599,15.680){7}{\usebox{\plotpoint}} -\multiput(791,409)(15.435,13.876){6}{\usebox{\plotpoint}} -\multiput(890,498)(15.984,13.240){6}{\usebox{\plotpoint}} -\put(989,580){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(100.0,123.0){\rule[-0.200pt]{214.160pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(100.0,590.0){\rule[-0.200pt]{214.160pt}{0.400pt}} -\put(100.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\end{picture} - - - -%% \begin{tabular}{cc} -%% \begin{minipage}{0.5\linewidth} -%% \input{./bench1c.tex} -%% \end{minipage} & -%% \begin{minipage}{0.5\linewidth} -%% \input{./bench1d.tex} -%% \end{minipage} -%% \end{tabular} - \caption{Benchmarking creation (top) and deletion (bottom)} - \label{XII:fig:bench:build} -\end{figure*} - -Our second benchmark consists in generating graphs corresponding to 2D -mazes and traversing them using depth-first and breadth-first -traversals. Given an integer $N$, we build a graph with $V=N^2$ -vertices and $E=V-1$ edges. Figure~\ref{XII:fig:bench:maze} displays -the timings in seconds for various values of $N$ up to 600 (i.e. -360,000 vertices). The observed speed is between 500,000 and 1 million -traversed edges per second. - -% on enleve Dijkstra parce que le resultat est bizarre -% \input{./bench2dij} - -\begin{figure*} - \centering%% \hspace*{-2em} -%% \begin{tabular}{cc} -%% \begin{minipage}{0.5\linewidth} -%% \input{./bench2dfs} -%% \end{minipage} & -%% \begin{minipage}{0.5\linewidth} -%% \input{./bench2bfs} -%% \end{minipage} -%% \end{tabular} -% \input{./bench2dfs} -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,123){\makebox(0,0)[r]{ 0}} -\put(969.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,201.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,201){\makebox(0,0)[r]{ 0.5}} -\put(969.0,201.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,279.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,279){\makebox(0,0)[r]{ 1}} -\put(969.0,279.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,356.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,356){\makebox(0,0)[r]{ 1.5}} -\put(969.0,356.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,434.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,434){\makebox(0,0)[r]{ 2}} -\put(969.0,434.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,512.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,512){\makebox(0,0)[r]{ 2.5}} -\put(969.0,512.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,590){\makebox(0,0)[r]{ 3}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140,82){\makebox(0,0){ 0}} -\put(140.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282,82){\makebox(0,0){ 100}} -\put(282.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423,82){\makebox(0,0){ 200}} -\put(423.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565,82){\makebox(0,0){ 300}} -\put(565.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706,82){\makebox(0,0){ 400}} -\put(706.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848,82){\makebox(0,0){ 500}} -\put(848.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,82){\makebox(0,0){ 600}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(564,21){\makebox(0,0){maze width $N$}} -\put(200,550){\makebox(0,0)[r]{IA}} -\put(220.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(225,125){\usebox{\plotpoint}} -\multiput(225.00,125.61)(18.770,0.447){3}{\rule{11.433pt}{0.108pt}} -\multiput(225.00,124.17)(61.270,3.000){2}{\rule{5.717pt}{0.400pt}} -\multiput(310.00,128.60)(12.325,0.468){5}{\rule{8.600pt}{0.113pt}} -\multiput(310.00,127.17)(67.150,4.000){2}{\rule{4.300pt}{0.400pt}} -\multiput(395.00,132.59)(5.579,0.488){13}{\rule{4.350pt}{0.117pt}} -\multiput(395.00,131.17)(75.971,8.000){2}{\rule{2.175pt}{0.400pt}} -\multiput(480.00,140.59)(4.922,0.489){15}{\rule{3.878pt}{0.118pt}} -\multiput(480.00,139.17)(76.951,9.000){2}{\rule{1.939pt}{0.400pt}} -\multiput(565.00,149.58)(3.312,0.493){23}{\rule{2.685pt}{0.119pt}} -\multiput(565.00,148.17)(78.428,13.000){2}{\rule{1.342pt}{0.400pt}} -\multiput(649.00,162.58)(0.947,0.498){87}{\rule{0.856pt}{0.120pt}} -\multiput(649.00,161.17)(83.224,45.000){2}{\rule{0.428pt}{0.400pt}} -\multiput(734.00,207.59)(7.633,0.482){9}{\rule{5.767pt}{0.116pt}} -\multiput(734.00,206.17)(73.031,6.000){2}{\rule{2.883pt}{0.400pt}} -\multiput(819.00,213.58)(0.852,0.498){97}{\rule{0.780pt}{0.120pt}} -\multiput(819.00,212.17)(83.381,50.000){2}{\rule{0.390pt}{0.400pt}} -\multiput(904.00,263.58)(0.582,0.499){143}{\rule{0.566pt}{0.120pt}} -\multiput(904.00,262.17)(83.826,73.000){2}{\rule{0.283pt}{0.400pt}} -\put(200,509){\makebox(0,0)[r]{IC}} -\multiput(220,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,509){\usebox{\plotpoint}} -\put(225,134){\usebox{\plotpoint}} -\multiput(225,134)(20.754,0.244){5}{\usebox{\plotpoint}} -\multiput(310,135)(20.720,1.219){4}{\usebox{\plotpoint}} -\multiput(395,140)(20.352,4.070){4}{\usebox{\plotpoint}} -\multiput(480,157)(19.782,6.284){4}{\usebox{\plotpoint}} -\multiput(565,184)(19.472,7.186){4}{\usebox{\plotpoint}} -\multiput(649,215)(16.207,12.966){6}{\usebox{\plotpoint}} -\multiput(734,283)(18.343,9.711){4}{\usebox{\plotpoint}} -\multiput(819,328)(15.026,14.319){6}{\usebox{\plotpoint}} -\multiput(904,409)(18.608,9.194){5}{\usebox{\plotpoint}} -\put(989,451){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(220.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(225,128){\usebox{\plotpoint}} -\put(225,126.84){\rule{20.476pt}{0.800pt}} -\multiput(225.00,126.34)(42.500,1.000){2}{\rule{10.238pt}{0.800pt}} -\multiput(310.00,130.40)(6.111,0.520){9}{\rule{8.700pt}{0.125pt}} -\multiput(310.00,127.34)(66.943,8.000){2}{\rule{4.350pt}{0.800pt}} -\multiput(395.00,138.40)(4.179,0.512){15}{\rule{6.382pt}{0.123pt}} -\multiput(395.00,135.34)(71.754,11.000){2}{\rule{3.191pt}{0.800pt}} -\multiput(480.00,149.41)(3.790,0.511){17}{\rule{5.867pt}{0.123pt}} -\multiput(480.00,146.34)(72.823,12.000){2}{\rule{2.933pt}{0.800pt}} -\multiput(565.00,161.41)(1.288,0.503){59}{\rule{2.236pt}{0.121pt}} -\multiput(565.00,158.34)(79.358,33.000){2}{\rule{1.118pt}{0.800pt}} -\multiput(649.00,194.41)(0.972,0.502){81}{\rule{1.745pt}{0.121pt}} -\multiput(649.00,191.34)(81.377,44.000){2}{\rule{0.873pt}{0.800pt}} -\multiput(734.00,238.41)(2.446,0.506){29}{\rule{3.978pt}{0.122pt}} -\multiput(734.00,235.34)(76.744,18.000){2}{\rule{1.989pt}{0.800pt}} -\multiput(819.00,256.41)(0.761,0.502){105}{\rule{1.414pt}{0.121pt}} -\multiput(819.00,253.34)(82.065,56.000){2}{\rule{0.707pt}{0.800pt}} -\multiput(904.00,312.41)(0.761,0.502){105}{\rule{1.414pt}{0.121pt}} -\multiput(904.00,309.34)(82.065,56.000){2}{\rule{0.707pt}{0.800pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(220,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,427){\usebox{\plotpoint}} -\put(225,128){\usebox{\plotpoint}} -\multiput(225,128)(20.685,1.704){5}{\usebox{\plotpoint}} -\multiput(310,135)(20.480,3.373){4}{\usebox{\plotpoint}} -\multiput(395,149)(19.912,5.857){4}{\usebox{\plotpoint}} -\multiput(480,174)(19.192,7.903){4}{\usebox{\plotpoint}} -\multiput(565,209)(18.739,8.923){5}{\usebox{\plotpoint}} -\multiput(649,249)(15.293,14.033){5}{\usebox{\plotpoint}} -\multiput(734,327)(18.865,8.656){5}{\usebox{\plotpoint}} -\multiput(819,366)(10.605,17.842){8}{\usebox{\plotpoint}} -\multiput(904,509)(18.432,9.541){5}{\usebox{\plotpoint}} -\put(989,553){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\end{picture} - - - %\input{./bench2bfs} -% GNUPLOT: LaTeX picture -\setlength{\unitlength}{0.240900pt} -\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi -\begin{picture}(1049,629)(0,0) -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,123){\makebox(0,0)[r]{ 0}} -\put(969.0,123.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,190.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,190){\makebox(0,0)[r]{ 0.5}} -\put(969.0,190.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,256.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,256){\makebox(0,0)[r]{ 1}} -\put(969.0,256.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,323.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,323){\makebox(0,0)[r]{ 1.5}} -\put(969.0,323.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,390.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,390){\makebox(0,0)[r]{ 2}} -\put(969.0,390.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,457.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,457){\makebox(0,0)[r]{ 2.5}} -\put(969.0,457.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,523.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,523){\makebox(0,0)[r]{ 3}} -\put(969.0,523.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(120,590){\makebox(0,0)[r]{ 3.5}} -\put(969.0,590.0){\rule[-0.200pt]{4.818pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140,82){\makebox(0,0){ 0}} -\put(140.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(282,82){\makebox(0,0){ 100}} -\put(282.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(423,82){\makebox(0,0){ 200}} -\put(423.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(565,82){\makebox(0,0){ 300}} -\put(565.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(706,82){\makebox(0,0){ 400}} -\put(706.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(848,82){\makebox(0,0){ 500}} -\put(848.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(989,82){\makebox(0,0){ 600}} -\put(989.0,570.0){\rule[-0.200pt]{0.400pt}{4.818pt}} -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(564,21){\makebox(0,0){maze width $N$}} -\put(200,550){\makebox(0,0)[r]{IA}} -\put(220.0,550.0){\rule[-0.200pt]{24.090pt}{0.400pt}} -\put(225,124){\usebox{\plotpoint}} -\multiput(225.00,124.61)(18.770,0.447){3}{\rule{11.433pt}{0.108pt}} -\multiput(225.00,123.17)(61.270,3.000){2}{\rule{5.717pt}{0.400pt}} -\multiput(310.00,127.59)(6.442,0.485){11}{\rule{4.957pt}{0.117pt}} -\multiput(310.00,126.17)(74.711,7.000){2}{\rule{2.479pt}{0.400pt}} -\multiput(395.00,134.59)(5.579,0.488){13}{\rule{4.350pt}{0.117pt}} -\multiput(395.00,133.17)(75.971,8.000){2}{\rule{2.175pt}{0.400pt}} -\multiput(480.00,142.58)(4.404,0.491){17}{\rule{3.500pt}{0.118pt}} -\multiput(480.00,141.17)(77.736,10.000){2}{\rule{1.750pt}{0.400pt}} -\multiput(565.00,152.58)(3.068,0.494){25}{\rule{2.500pt}{0.119pt}} -\multiput(565.00,151.17)(78.811,14.000){2}{\rule{1.250pt}{0.400pt}} -\multiput(649.00,166.58)(1.426,0.497){57}{\rule{1.233pt}{0.120pt}} -\multiput(649.00,165.17)(82.440,30.000){2}{\rule{0.617pt}{0.400pt}} -\multiput(734.00,196.58)(1.123,0.498){73}{\rule{0.995pt}{0.120pt}} -\multiput(734.00,195.17)(82.935,38.000){2}{\rule{0.497pt}{0.400pt}} -\multiput(819.00,234.58)(0.852,0.498){97}{\rule{0.780pt}{0.120pt}} -\multiput(819.00,233.17)(83.381,50.000){2}{\rule{0.390pt}{0.400pt}} -\multiput(904.00,284.58)(1.186,0.498){69}{\rule{1.044pt}{0.120pt}} -\multiput(904.00,283.17)(82.832,36.000){2}{\rule{0.522pt}{0.400pt}} -\put(200,509){\makebox(0,0)[r]{IC}} -\multiput(220,509)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,509){\usebox{\plotpoint}} -\put(225,138){\usebox{\plotpoint}} -\multiput(225,138)(20.743,-0.732){5}{\usebox{\plotpoint}} -\multiput(310,135)(20.733,0.976){4}{\usebox{\plotpoint}} -\multiput(395,139)(20.397,3.839){4}{\usebox{\plotpoint}} -\multiput(480,155)(20.150,4.978){4}{\usebox{\plotpoint}} -\multiput(565,176)(19.159,7.983){4}{\usebox{\plotpoint}} -\multiput(649,211)(17.982,10.366){5}{\usebox{\plotpoint}} -\multiput(734,260)(18.164,10.043){5}{\usebox{\plotpoint}} -\multiput(819,307)(18.073,10.206){5}{\usebox{\plotpoint}} -\multiput(904,355)(13.135,16.071){6}{\usebox{\plotpoint}} -\put(989,459){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,468){\makebox(0,0)[r]{PA}} -\sbox{\plotpoint}{\rule[-0.400pt]{0.800pt}{0.800pt}}% -\put(220.0,468.0){\rule[-0.400pt]{24.090pt}{0.800pt}} -\put(225,127){\usebox{\plotpoint}} -\put(225,125.84){\rule{20.476pt}{0.800pt}} -\multiput(225.00,125.34)(42.500,1.000){2}{\rule{10.238pt}{0.800pt}} -\multiput(310.00,129.40)(6.111,0.520){9}{\rule{8.700pt}{0.125pt}} -\multiput(310.00,126.34)(66.943,8.000){2}{\rule{4.350pt}{0.800pt}} -\multiput(395.00,137.41)(3.790,0.511){17}{\rule{5.867pt}{0.123pt}} -\multiput(395.00,134.34)(72.823,12.000){2}{\rule{2.933pt}{0.800pt}} -\multiput(480.00,149.41)(2.446,0.506){29}{\rule{3.978pt}{0.122pt}} -\multiput(480.00,146.34)(76.744,18.000){2}{\rule{1.989pt}{0.800pt}} -\multiput(565.00,167.41)(1.288,0.503){59}{\rule{2.236pt}{0.121pt}} -\multiput(565.00,164.34)(79.358,33.000){2}{\rule{1.118pt}{0.800pt}} -\multiput(649.00,200.41)(1.544,0.504){49}{\rule{2.629pt}{0.121pt}} -\multiput(649.00,197.34)(79.544,28.000){2}{\rule{1.314pt}{0.800pt}} -\multiput(734.00,228.41)(1.603,0.504){47}{\rule{2.719pt}{0.121pt}} -\multiput(734.00,225.34)(79.358,27.000){2}{\rule{1.359pt}{0.800pt}} -\multiput(819.00,255.41)(0.531,0.501){153}{\rule{1.050pt}{0.121pt}} -\multiput(819.00,252.34)(82.821,80.000){2}{\rule{0.525pt}{0.800pt}} -\multiput(904.00,335.41)(1.982,0.505){37}{\rule{3.291pt}{0.122pt}} -\multiput(904.00,332.34)(78.170,22.000){2}{\rule{1.645pt}{0.800pt}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(200,427){\makebox(0,0)[r]{PC}} -\sbox{\plotpoint}{\rule[-0.500pt]{1.000pt}{1.000pt}}% -\multiput(220,427)(20.756,0.000){5}{\usebox{\plotpoint}} -\put(320,427){\usebox{\plotpoint}} -\put(225,127){\usebox{\plotpoint}} -\multiput(225,127)(20.685,1.704){5}{\usebox{\plotpoint}} -\multiput(310,134)(20.552,2.901){4}{\usebox{\plotpoint}} -\multiput(395,146)(19.975,5.640){4}{\usebox{\plotpoint}} -\multiput(480,170)(19.572,6.908){4}{\usebox{\plotpoint}} -\multiput(565,200)(19.077,8.176){5}{\usebox{\plotpoint}} -\multiput(649,236)(16.394,12.729){5}{\usebox{\plotpoint}} -\multiput(734,302)(16.675,12.359){5}{\usebox{\plotpoint}} -\multiput(819,365)(15.746,13.523){5}{\usebox{\plotpoint}} -\multiput(904,438)(13.442,15.814){7}{\usebox{\plotpoint}} -\put(989,538){\usebox{\plotpoint}} -\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}% -\put(140.0,123.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(989.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\put(140.0,590.0){\rule[-0.200pt]{204.524pt}{0.400pt}} -\put(140.0,123.0){\rule[-0.200pt]{0.400pt}{112.500pt}} -\end{picture} - -\vspace*{-1em} - \caption{Benchmarking DFS (top) and BFS (bottom)} - \label{XII:fig:bench:maze} -\end{figure*} - -% memory use : pas probant ; donner plutot les chiffres directement -% ou mieux comparer avec la representation matricielle -% \input{./bench2mem} - -We also tested the adjacency matrix-based data structure. Creation and -deletion are much faster in that case, and the data structure for -a dense graph is usually much more compact (it is implemented using bit -vectors). However, the use of this particular implementation is -limited to unlabeled imperative graphs with integer vertices. -The above benchmarks, on the contrary, do not depend on the nature of -vertices and edges types. Thus they are much more representative of -\ocamlgraph average performances. - - -\section{Conclusion} - -We presented \ocamlgraph, a highly generic graph library for \ocaml\ -providing several graph data structures and graph algorithms. -Algorithms are written independently from graph data structures, which -allows combining user data structure (resp. algorithm) with -\ocamlgraph algorithm (resp. data structure). To our knowledge, there -is no library for any applicative language as generic as \ocamlgraph. -This genericity is obtained using \ocaml module system and especially -its functors which allow sharing large pieces of code and provide -clear separation between data structures and algorithms. The same -level of genericity could probably be achieved using Haskell's -multi-parameter type -classes~\cite{XII:Dreyer2007,XII:Wehr2005,XII:Oleg}. Regarding -imperative languages, graph libraries are rarely as generic and never -provide as many different data structures. - -Since its first release (Feb. 2004), the number of \ocamlgraph users -has been increasing steadily and several of them contributed code to -the library. Some of them provided new graph data structures -(\emph{e.g.} \texttt{ConcreteBidirectional}) and others new -algorithms (\emph{e.g.} minimal separators). It clearly shows the -benefits of a generic library where data structures and algorithms are -separated. - - -\section*{Acknowledgements} - -We would like to thank the anonymous reviewers for their helpful -comments. We already improved the implementation of \ocamlgraph -following one of the reviewer suggestions (generalizing mutable marks -from integer to arbitrary types). - -\bibliographystyle{plain} -\bibliography{./paper} - - -\appendix -\section{Simple Sudoku Solver using Ocamlgraph}\label{XII:appendix} -Below is the full listing for a Sudoku solver using \ocamlgraph, as -described in this paper. This program reads the Sudoku problem on -standard input and prints the solution on standard output. -% It can be compiled as follows: -% \begin{center} -% \verb!ocamlopt -o sudoku graph.cmxa sudoku.ml! -% \end{center} -{\small -\begin{verbatim} -open Graph - -(* We use undirected graphs with nodes containing - a pair of integers (the cell coordinates in - 0..8 x 0..8). *) -module G = Imperative.Graph.Abstract - (struct type t = int * int end) - -(* The Sudoku grid = a graph with 9x9 nodes *) -let g = G.create () - -(* We create the 9x9 nodes, add them to the graph - and keep them in a matrix for later access *) -let nodes = - let new_node i j = - let v = G.V.create (i, j) in G.add_vertex g v; v - in - Array.init 9 (fun i -> Array.init 9 (new_node i)) - -let node i j = nodes.(i).(j) - -(* We add the edges: two nodes are connected whenever - they can't have the same value *) -let () = - for i = 0 to 8 do for j = 0 to 8 do - for k = 0 to 8 do - if k <> i then G.add_edge g (node i j) (node k j); - if k <> j then G.add_edge g (node i j) (node i k); - done; - let gi = 3 * (i / 3) and gj = 3 * (j / 3) in - for di = 0 to 2 do for dj = 0 to 2 do - let i' = gi + di and j' = gj + dj in - if i' <> i || j' <> j then - G.add_edge g (node i j) (node i' j') - done done - done done - -(* We read the initial constraints from standard input *) -let () = - for i = 0 to 8 do - let s = read_line () in - for j = 0 to 8 do match s.[j] with - | '1'..'9' as ch -> - G.Mark.set (node i j) (Char.code ch - Char.code '0') - | _ -> () - done - done - -(* We solve the Sudoku by 9-coloring the graph g *) -module C = Coloring.Mark(G) -let () = C.coloring g 9 - -(* We display the solution *) -let () = - for i = 0 to 8 do - for j = 0 to 8 do - Format.printf "%d" (G.Mark.get (node i j)) - done; - Format.printf "\n"; - done; - Format.printf "@?" -\end{verbatim}} - -\section{Graph Coloring Implementation}\label{XII:appendix:coloring} - -Below is the code of the graph coloring functor introduced in -Section~\ref{XII:coloring} and used to write the Sudoku solver. -The code uses a simple backtracking algorithm which -performs a breadth-first traversal of the graph and successively tries -each color for each visited vertex. To be able to backtrack during the -traversal we use persistent cursors~\cite{XII:filliatre06} provided by -another \ocamlgraph functor, namely \texttt{Traverse.Bfs}. A -persistent cursor is created with function \texttt{start}, the -visited element is obtained with function \texttt{get} and the cursor -is moved to the next element with function \texttt{step}. The latter -returns a new cursor, contrary to usual cursors which are modified -in-place, thus allowing backtracking. -\begin{alltt} -module Coloring(G : GM) = struct - module Bfs = Traverse.Bfs(G) - - exception NoColoring - - let coloring g k = - (* assign color i to vertex v, if possible, - and raise NoColoring otherwise *) - let try_color v i = - G.iter_succ - (fun w -> - if G.Mark.get w = i then raise NoColoring) - g v; - G.Mark.set v i - in - (* traversal of g using persistent cursor iter *) - let rec iterate iter = - let v = Bfs.get iter in - for i = 1 to k do - try try_color v i; iterate (Bfs.step iter); - assert false - with NoColoring -> () - done; - G.Mark.set v 0; raise NoColoring - in - try iterate (Bfs.start g); assert false - with Exit -> () - -end -\end{alltt} -Note that the actual implementation in \ocamlgraph is slightly more complex -since it uses Kempe's linear-time simplification (vertices of degree -less than $k$ are repeatedly removed and pushed on a stack, then the -backtracking algorithm above is performed and finally vertices -initially removed are popped from the stack and colored). - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "cameraready" -%%% End: diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/pp.mll b/jscomp/build_tests/ocamlgraph/papers/tfp07/pp.mll deleted file mode 100755 index eac3198d2f..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/pp.mll +++ /dev/null @@ -1,74 +0,0 @@ - -(* préprocesseur pour les environnement ocaml (avec alltt) *) - -{ - open Lexing - - let slides = ref false - - let ocaml_keywords = - let h = Hashtbl.create 97 in - List.iter (fun s -> Hashtbl.add h s ()) - [ - "fun"; "match"; "with"; "begin"; - "end"; "try"; "as"; "let"; "rec"; "in"; - "function"; "if"; "then"; "else"; "sig"; "val"; "type"; "module"; - "while"; "do"; "done" - ]; - h - - let is_keyword s = Hashtbl.mem ocaml_keywords s - -} - -let ident = ['a'-'z' 'A'-'Z' '_'] ['a'-'z' 'A'-'Z' '_' '0'-'9']* - -rule alltt = parse - | '{' { print_string "\\{"; alltt lexbuf } - | '}' { print_string "\\}"; alltt lexbuf } -(* - | '\\' { print_string "\\ensuremath{\\backslash}"; alltt lexbuf } -*) - | '#' { print_string "\\diese{}"; alltt lexbuf } - | '_' { print_string "\\_{}"; alltt lexbuf } - | '%' { print_string "\\%{}"; alltt lexbuf } - | '&' { print_string "\\&{}"; alltt lexbuf } - | '%' { print_string "\\%{}"; alltt lexbuf } - | '\n' { print_string "\n"; alltt lexbuf } - | "->" { print_string "\\ensuremath{\\rightarrow}"; alltt lexbuf } - | "=>" { print_string "\\ensuremath{\\Rightarrow}"; alltt lexbuf } - | "<->" { print_string "\\ensuremath{\\leftrightarrow}"; alltt lexbuf } - | '\n' "\\end{" ( "ocaml" | "coq" ) "}\n" { print_newline () } - | "\\emph{" [^'}']* '}' { print_string (lexeme lexbuf); alltt lexbuf } - | eof { () } - | "'a" { print_string "\\ensuremath{\\alpha}"; alltt lexbuf } - | "(*" | "*)" as s { print_string s; alltt lexbuf } - | "*" { print_string "\\ensuremath{\\times}"; alltt lexbuf } - | ident as s - { if !slides && is_keyword s then begin - print_string "{\\color{blue}"; print_string (lexeme lexbuf); - print_string "}" - end else - print_string (lexeme lexbuf); - alltt lexbuf - } - | _ { print_string (lexeme lexbuf); alltt lexbuf } - -and pp = parse - | "\\begin{ocaml}\n" - { print_endline "\\begin{alltt}"; - alltt lexbuf; - print_endline "\\end{alltt}"; - pp lexbuf } - | eof - { () } - | _ - { print_string (lexeme lexbuf); pp lexbuf } - -{ - let f = Sys.argv.(1) - let () = slides := (String.length f > 6 && String.sub f 0 7 = "slides-") - let cin = open_in f - let lb = from_channel cin - let _ = pp lb -} diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/reviews-tfp.txt b/jscomp/build_tests/ocamlgraph/papers/tfp07/reviews-tfp.txt deleted file mode 100755 index 58f886fd83..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/reviews-tfp.txt +++ /dev/null @@ -1,322 +0,0 @@ -From VM Wed Jul 4 07:34:51 2007 -X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] - [nil "Monday" "2" "July" "2007" "12:53:18" "-0400" "TFP 2007" "tfp2007@shu.edu" "" nil "TFP 2007: Decision for Paper ID 60" "^From:" nil nil "7" "2007070218:53:18" nil nil nil nil nil nil nil nil] - nil) -X-VM-Labels: nil -X-VM-Summary-Format: "%n %*%a %-20.20F %-3.3m %2d %I\"%s\"\n" -X-VM-IMAP-Retrieved: nil -X-VM-POP-Retrieved: nil -X-VM-Last-Modified: (18059 12733 874551) -MIME-Version: 1.0 -Content-Type: multipart/mixed; boundary="=_mixed 005CCCD48525730C_=" -Return-Path: -X-Original-To: Sylvain.Conchon@lri.fr -Delivered-To: Sylvain.Conchon@lri.fr -Received: from lri.lri.fr (lri [129.175.15.1]) - by smtp.lri.fr (Postfix) with ESMTP id A512DE04EB - for ; Mon, 2 Jul 2007 18:53:22 +0200 (CEST) -Received: from localhost (localhost.localdomain [127.0.0.1]) - by lri.lri.fr (Postfix) with ESMTP id 3830D249BBE - for ; Mon, 2 Jul 2007 18:53:22 +0200 (CEST) -Received: from lri.lri.fr ([127.0.0.1]) - by localhost (lri.lri.fr [127.0.0.1]) (amavisd-new, port 10024) - with ESMTP id 22298-09 for ; - Mon, 2 Jul 2007 18:53:22 +0200 (CEST) -Received: from mta01.shu.edu (mta01.shu.edu [149.150.209.21]) - by lri.lri.fr (Postfix) with ESMTP id 86968249BBB - for ; Mon, 2 Jul 2007 18:53:21 +0200 (CEST) -X-Mailer: Lotus Notes Release 7.0.1 January 17, 2006 -Message-ID: -X-MIMETrack: Serialize by Router on MTA01/SHU(Release 7.0.2FP1|January 10, 2007) at 07/02/2007 - 12:53:21 PM -X-Virus-Scanned: by amavisd-new at lri.fr -X-Spam: no; 0.00; conchon:01 conchon:01 morazan:01 morazan:01 genericity:01 font:98 7.0.1:01 tfp:02 tfp:02 2007:02 2007:02 graphs:02 graphs:02 subtyping:03 exercised:96 -X-Attachments: name="ID60.txt" name="ID60.txt" -From: TFP 2007 -Sender: Marco T Morazan -To: Sylvain.Conchon@lri.fr -Cc: tfp2007@shu.edu -Subject: TFP 2007: Decision for Paper ID 60 -Date: Mon, 2 Jul 2007 12:53:18 -0400 - ---=_mixed 005CCCD48525730C_= -Content-Type: multipart/alternative; boundary="=_alternative 005CCCD48525730C_=" - - ---=_alternative 005CCCD48525730C_= -Content-Type: text/plain; charset="US-ASCII" - -Dear Authors, - -On behalf of the TFP 2007 Program Committee, I am happy to inform you that -your paper has been conditionally accepted for publication in the official -proceedings. This means that the PC would like to see the paper -published, but it requires significant revisions. These revisions must be -met to the satisfaction of the reviewers. If you are unable to achieve -this the paper will be rejected. TFP 2007 received 33 submissions and we -were only able to accept 10 for publication (including your own). - -Attached you will find the comments from the reviewers. Please pay close -attention to their comments as you prepare the camera-ready version of -your article. Shortly, you will receive formatting instructions for the -final version of your article. - -Best regards, - -Marco - - -************************************************************************************ -Dr. Marco T. Morazan -TFP 2007 -Program Committee Chair -http://cs.shu.edu/tfp2007/ ---=_alternative 005CCCD48525730C_= -Content-Type: text/html; charset="US-ASCII" - - -
Dear Authors,
-
-
On behalf of the TFP 2007 Program Committee, I am -happy to inform you that your paper has been conditionally accepted for -publication in the official proceedings.  This means that the PC would -like to see the paper published, but it requires significant revisions. -These revisions must be met to the satisfaction of the reviewers. If you -are unable to achieve this the paper will be rejected. TFP 2007 received -33 submissions and we were only able to accept 10 for publication (including -your own).
-
-
Attached you will find the comments from the reviewers. -Please pay close attention to their comments as you prepare the camera-ready -version of your article. Shortly, you will receive formatting instructions -for the final version of your article.
-
-
Best regards,
-
-
Marco
-
-
-************************************************************************************
-Dr. Marco T. Morazan
-TFP 2007
-Program Committee Chair
-http://cs.shu.edu/tfp2007/
---=_alternative 005CCCD48525730C_=-- ---=_mixed 005CCCD48525730C_= -CONTENT-TRANSFER-ENCODING: quoted-printable -Content-Type: text/plain; name="ID60.txt" -Content-Disposition: attachment; filename="ID60.txt" - - - ----------------------------------------------------------------------------= ------ - - -For the following questions, please use a scale of 1 (lowest, clear reject)= - to 5 (highest, clear accept) - -Is the topic appropriate for TFP? - - -5 - -Format - - -5 - -Technical Content - - -4 - -Quality of Writing - - -5 - -Is the length appropriate? - - -3 - -Does the article meet the review criteria for its article type? - - -5 - -Overall Recommendation - - -5 - - -Comments for the author(s) - - -Given the page limit, the paper could perhaps be extended to give even more= - examples. - - - ----------------------------------------------------------------------------= ------ - - -For the following questions, please use a scale of 1 (lowest, clear reject)= - to 5 (highest, clear accept) - - -Is the topic appropriate for TFP? - - -5 - -Format - - -4 - -Technical Content - - -4 - -Quality of Writing - - -3 - - -Is the length appropriate? - - -5 - -Does the article meet the review criteria for its article type? - - -5 - -Overall Recommendation - - -4 - - -Comments for the author(s) - - -There is something very strange about your references. I noticed that you h= -ave remarkably few citations within=20 -your text (with the exception of Fig 1). When I looked closer, I found that= - close to half of your references=20 -(8, 10, 11, 12, 13, 17, 18) are never actually cited anywhere in your paper= -! I'm guessing that these citations=20 -were edited out somewhere along the line, and you never re-ran bibtex.=20 - -I'm surprised that your Imperative.Graph.Abstract graphs appear to have *in= -teger* marks built-in, given that=20 -applications that need boolean marks or floating-point marks are common. Is= - there a functor in your system that=20 -lets choose different types of marks? It is worth a sentence or two explain= -ing about the default treatment of=20 -marks. (More on this point: on page 5, you say "*can* be equipped" rather t= -han "are equipped", which implies=20 -that there is a choice, but I don't see in appendix A where this choice is = -exercised.)=20 - -It would also be worth adding an appendix or a table listing the various fu= -nctors supported in your library,=20 -with just a short sentence for each.=20 - -I don't understand the last column in Fig 1. I assume a check means "has ge= -neric algorithms", and a 0 means=20 -"does not have", but I don't know what the dash means.=20 - -Please add a citation on page 9 where you say "percolation algorithm". I'm = -not familiar with this term. - - - ----------------------------------------------------------------------------= ------ - - -For the following questions, please use a scale of 1 (lowest, clear reject)= - to 5 (highest, clear accept) - - -Is the topic appropriate for TFP? - - -5 - -Format - - -5 - -Technical Content - - -4 - -Quality of Writing - - -3 - - -Is the length appropriate? - - -3 - -Does the article meet the review criteria for its article type? - - -2 - -Overall Recommendation - - -4 - - -Comments for the author(s) - - -The paper presents a generic graph library which provides many different gr= -aph data structures and typical graph=20 -algorithms. The genericity is achieved using the OCAML module system and ML= - functors.=20 - -This work is worth publishing, the results are impressive, but the paper ne= -eds much more explanation of the OCAML=20 -module system, ML functors, and their support for generic programming.=20 - -In the conclusions, you state that your approach provides greater consisten= -cy than the mere use of higher-order=20 -functions. Please elaborate on this point.=20 - -You state that the modifiers for imperative and persistent graphs have diff= -erent types. How can you then type=20 -the generic algorithms using these modifiers? Do you require the types of t= -he modifiers to be in a subtype relation?=20 - -How can you ensure that the generic graph algorithms work correctly for the= - user's own graph structures. How do=20 -you specify side-conditions that the user's graph implementation should res= -pect?=20 - -I would like to see the generic coloring routine.=20 - -In Figure 3m, you used a too small font size, a looking glass is needed to = -read the boxes. This figure should be=20 -explained in more detail. Comment on the subtyping and functor application = -relations. - ---=_mixed 005CCCD48525730C_=-- - diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/sigplanconf-template.tex b/jscomp/build_tests/ocamlgraph/papers/tfp07/sigplanconf-template.tex deleted file mode 100755 index 285d27f86c..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/sigplanconf-template.tex +++ /dev/null @@ -1,77 +0,0 @@ -%----------------------------------------------------------------------------- -% -% Template for LaTeX Class/Style File -% -% Name: sigplanconf-template.tex -% Purpose: A template for sigplanconf.cls, which is a LaTeX 2e class -% file for SIGPLAN conference proceedings. -% -% Author: Paul C. Anagnostopoulos -% Windfall Software -% 978 371-2316 -% paul@windfall.com -% -% Created: 15 February 2005 -% -%----------------------------------------------------------------------------- - - -\documentclass[preprint]{sigplanconf} - -\usepackage{amsmath} - -\begin{document} - -\conferenceinfo{WXYZ '05}{date, City.} -\copyrightyear{2005} -\copyrightdata{[to be supplied]} - -\titlebanner{banner above paper title} % These are ignored unless -\preprintfooter{short description of paper} % 'preprint' option specified. - -\title{Title Text} -\subtitle{Subtitle Text, if any} - -\authorinfo{Name1} - {Affiliation1} - {Email1} -\authorinfo{Name2\and Name3} - {Affiliation2/3} - {Email2/3} - -\maketitle - -\begin{abstract} -This is the text of the abstract. -\end{abstract} - -\category{CR-number}{subcategory}{third-level} - -\terms -term1, term2 - -\keywords -keyword1, keyword2 - -\section{Introduction} - -The text of the paper begins here. - -\appendix -\section{Appendix Title} - -This is the text of the appendix, if you need one. - -\acks - -Acknowledgments, if needed. - -\begin{thebibliography}{} - -\bibitem{smith02} -Smith, P. Q. reference text - -\end{thebibliography} - -\end{document} -1-59593-090-6/05/0007 \ No newline at end of file diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/tfp05symp.cls b/jscomp/build_tests/ocamlgraph/papers/tfp07/tfp05symp.cls deleted file mode 100755 index 593946e138..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/tfp05symp.cls +++ /dev/null @@ -1,1692 +0,0 @@ -% Style file for the Trends in Functional Programming Symposium Proceedings 2005 -% -% Used to be the style file for the Scottish Functional Programming Workshop. -% Mainly a wrapper around article.cls redefining various sizes -% -%% General formating guidelines (not enforced by the style file): -% -% For formating the titlepage use the same macros as in LLNCS-style i.e. -% \title, \author, \institute. Use \and if there are several authors, -% and use the same order for authors and institutes. -% -% Tables and figures: -% -% Center tables and figures. If possible and sensible make them same width -% as text. Use initial caps in the caption of a figure, but initial cap -% only in the caption of a table. Don't put tables or figures immediately -% before or after a section-level heading. -% NB: Following Intellects guidelines, tables are put at the top or the -% bottom of the page. Hence, the {table} and {figure} environments -% don't have optional placement parameters. -% -%% Supported options: -% tfpsymp ... use this for the symposium proceedings; mostly article.cls but with wide text -% similar to [11,a4paper]{article} -% NB: article's draft option isn't used any more -% pagenumbers ... this option adds page numbers of the format -% Paper.no.(roman)-Page.no. (e.g. VII-1) to the paper -% llncs ... gives you LLNCS-style environments (such as example etc) and -% some LLNCS-style math symbols -% ams ... gives you amslatex package -% -%% Changelog: -% $Log: sfp-ws.cls,v $ -% Revision 1.20 2005/07/26 Marko van Eekelen -% Changed draft to tfpsymp option; renamed file to tfp05symp.cls -% -% Revision 1.19 2001/08/09 12:55:41 hwloidl -% Pagenumbering is optional with new option pagenumbers. -% Fixed a problem with counter reset for theorem-likes at new sections. -% -% Revision 1.18 2001/08/08 15:20:40 hwloidl -% Added page numbers for draft option. Format: VII-3 etc -% -% Revision 1.17 2001/08/06 14:30:55 hwloidl -% Dropped draft option from article class (draft option to sfp-ws unchanged) -% Fixed theorem and other llncs envs in non-book setup (untested in book setup) -% -% Revision 1.16 2001/08/04 01:03:24 hwloidl -% Changed draft to 11pt -% -% Revision 1.15 2001/07/31 00:16:04 hwloidl -% Hacked the version used for the book of SFP'00 to make draft option work -% agan. Comments starting with %=:-( indicate this hack. -% This shouldn't break book style but that's untested. -% -% Revision 1.14 2000/06/30 13:24:13 hwloidl -% Tiny changes asked for by Intellect: -% Running header in Bibliography now says `Bibliography'; added to TOC. -% -% Revision 1.13 2000/06/29 19:34:49 hwloidl -% Plain pagestyle with draft option. -% -% Revision 1.12 2000/06/29 19:21:13 hwloidl -% Fixed a bug in the artice version of the style file. -% Added the option draft to be used for draft proceedings; it translates to -% [12pt,draft,a4paper]{article} -% No pagebreaks after abstact and before bibliography in draft version. -% -% Revision 1.11 2000/06/15 23:47:36 hwloidl -% Only change: TOC now only down to section level. -% -% Revision 1.10 2000/06/15 02:14:11 hwloidl -% Tiny changes (authors in TOC etc) -% -% Revision 1.9 2000/06/09 21:57:35 hwloidl -% Finished typesetting changes for remaining chapters. Started with -% changes in bibliography but not finished yet. -% -% Revision 1.8 2000/06/06 14:16:49 hwloidl -% Typesetting changes. Bib now uses bib-xref for page references in the bib. -% -% Revision 1.7 2000/05/26 15:54:14 hwloidl -% Minor typesetting changes -% -% Revision 1.6 2000/05/24 12:14:02 hwloidl -% notes on changes for the final versio of the book -% -% Revision 1.5 2000/05/20 02:27:22 hwloidl -% clean up -% -% Revision 1.4 2000/03/06 21:00:36 hwloidl -% Modifications in sfp-ws.cls style file: -% changed \@maketitle (better layout and logo), \part and related macros (nuke -% blank page after part), \chapauthorstoc (new command to add authors into TOC). -% Changed bodies of chapter, inserting \chapauthorstoc and fixed some figures. -% -% Revision 1.3 2000/02/10 15:58:45 hwloidl -% Style file: modified defs of \section, \subsection, \subsubsection, \footnote -% Body: inserted \addtocounter{footnote}{..} to get numbering of footnotes right. -% -% Revision 1.2 2000/01/21 14:29:40 hwloidl -% Modified style file: new headings in text; new titlepage layout; new -% commands \wstitle, \chaptitle, \chapauthors; modified \bibliography -% environment in book style. -% -% -% Modified .tex files to define \chaptitle and \chapauthors in each. -% -% Revision 1.1.1.1 2000/01/21 02:07:30 hwloidl -% Latex sources of the SFP'99 proceedings -% -% Revision 1.3 1999/11/25 14:18:43 hwloidl -% For final submission -% -% Revision 1.2 1999/11/24 11:26:16 hwloidl -% *** empty log message *** -% -% Revision 1.1 1999/09/27 12:24:17 hwloidl -% Initial revision -% -% --------------------------------------------------------------------------- - -%@menu -%* Load main style file:: -%* Sizes:: -%* New macros and environments:: -%* Modified macros and environments:: -%* Misc:: -%* Pagestyle etc:: -%@end menu - -%@node Load main style file, Sizes -%@section Load main style file - -\NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesFile{sfp-ws} [Scottish Functional Programming Workshop style file $Revision: 1.19 $] - -%% Options supported by this style file -\let\if@llncs\iffalse -\DeclareOption{llncs}{\let\if@llncs\iftrue} -\let\if@ams\iffalse -\DeclareOption{ams}{\let\if@ams\iftrue} -\let\if@book\iffalse -\DeclareOption{book}{\let\if@book\iftrue} -\let\if@tfpsymp\iffalse -\DeclareOption{tfpsymp}{\let\if@tfpsymp\iftrue} -\let\if@pagenumbers\iffalse -\DeclareOption{pagenumbers}{\let\if@pagenumbers\iftrue} - -\ProcessOptions - -% use option titlepage to bring title and abstract to separate pages -\if@book -\LoadClass[10pt,a4paper,titlepage,twoside,openany]{book} -\else -% tfpsymp option for tfpsymp proceedings; basically 11pt article style -\if@tfpsymp - \LoadClass[11pt,a4paper]{article} - \else - \LoadClass[11pt,a4paper,titlepage]{article} - \fi -\fi - -\if@ams - \usepackage[mathbb]{mathpi} - \usepackage{amsmath} - \usepackage{amssymb} -\fi - -% inlined from times.sty -\renewcommand{\sfdefault}{phv} -\renewcommand{\rmdefault}{ptm} -\renewcommand{\ttdefault}{pcr} - -% inlined from mathptm.sty (jg) -\DeclareSymbolFont{operators} {OT1}{ptmcm}{m}{n} -\DeclareSymbolFont{letters} {OML}{ptmcm}{m}{it} -\DeclareSymbolFont{symbols} {OMS}{pzccm}{m}{n} -\DeclareSymbolFont{largesymbols}{OMX}{psycm}{m}{n} -\DeclareSymbolFont{bold} {OT1}{ptm}{bx}{n} -\DeclareSymbolFont{italic} {OT1}{ptm}{m}{it} -\@ifundefined{mathbf}{}{\DeclareMathAlphabet{\mathbf}{OT1}{ptm}{bx}{n}} -\@ifundefined{mathit}{}{\DeclareMathAlphabet{\mathit}{OT1}{ptm}{m}{it}} -\DeclareMathSymbol{\omicron}{0}{operators}{`\o} -\thinmuskip=2mu -\medmuskip=2.5mu plus 1mu minus 1mu -\thickmuskip=4mu plus 1.5mu minus 1mu - \let\@tempa\version@elt - \def\version@elt#1{% - \ifx\mv@bold#1\else\noexpand\version@elt\noexpand#1\fi} - \edef\version@list{\version@list} - \let\version@elt\@tempa - \let\mv@bold\@undefined -\def\boldmath{% - \PackageWarning{there is no bold Symbol font}% - \global\let\boldmath=\relax -} -\DeclareMathSizes{5}{5}{5}{5} -\DeclareMathSizes{6}{6}{5}{5} -\DeclareMathSizes{7}{7}{5}{5} -\DeclareMathSizes{8}{8}{6}{5} -\DeclareMathSizes{9}{9}{7}{5} -\DeclareMathSizes{10}{10}{7.4}{6} -\DeclareMathSizes{10.95}{10.95}{8}{6} -\DeclareMathSizes{12}{12}{9}{7} -\DeclareMathSizes{14.4}{14.4}{10.95}{8} -\DeclareMathSizes{17.28}{17.28}{12}{10} -\DeclareMathSizes{20.74}{20.74}{14.4}{12} -\DeclareMathSizes{24.88}{24.88}{17.28}{14.4} - -%@node Sizes, New macros and environments, Load main style file -%@section Sizes - -% tfpsymp overrides most of the settings in this section -\if@tfpsymp - -% all set via option a4paper already - -\else - -\setlength\textwidth{114mm} -\setlength\textheight{190mm} -\setlength\parskip{0mm} -\setlength\parindent{5mm} -% \setlength\footskip{} -% \setlength\footheight{} - -\setlength\topmargin{41mm} -\setlength\oddsidemargin{48mm} -\setlength{\evensidemargin}{\oddsidemargin} -\advance\topmargin by -1in % 1in margin is implicit in LaTeX -\advance\oddsidemargin by -1in % 1in margin is implicit in LaTeX -\advance\evensidemargin by -1in % 1in margin is implicit in LaTeX - -\marginparwidth 0pt % Margin pars are not allowed. -\marginparsep 11pt % Horizontal space between outer margin and - % marginal note -\marginparpush 5pt % Minimum vertical separation between two marginal - % notes. - - % indentations for list elements -\leftmargin 1mm -\labelsep 1mm -\labelwidth\leftmargini\advance\labelwidth-\labelsep -% \parsep 4pt plus 2pt minus 1pt (Removed 9 Jun 87) - -%\setlength\labelsep{1mm} -\itemsep\baselineskip % 1 line space between items in the list - -% SUBLIST (SL): same as UL, 1m space indent on left side. Lines after first -% line hang under indent -% alas, an indentation of 1m would mean that you have to put your pages -% side by side in order to keep the text on paper ;-) so I choose 1mm instead -% -- HWL -\listparindent 1mm - -\leftmargini 5mm -\leftmarginii 5mm -\leftmarginiii 5mm -\leftmarginiv 4mm -\leftmarginv 4mm -\leftmarginvi 4mm - -\def\@listI{\leftmargin\leftmargini \parsep 3.6pt plus 2pt minus 1pt% -\topsep 7.2pt plus 2pt minus 4pt% -\itemsep 3.6pt plus 2pt minus 1pt} - -\let\@listi\@listI -\@listi - -\def\@listii{\leftmargin\leftmarginii - \labelwidth\leftmarginii\advance\labelwidth-\labelsep - \topsep 3.6pt plus 2pt minus 1pt - \parsep 1.8pt plus 0.9pt minus 0.9pt - \itemsep \parsep} - -\def\@listiii{\leftmargin\leftmarginiii - \labelwidth\leftmarginiii\advance\labelwidth-\labelsep - \topsep 1.8pt plus 0.9pt minus 0.9pt - \parsep \z@ \partopsep 1pt plus 0pt minus 1pt - \itemsep \topsep} - -\def\@listiv{\leftmargin\leftmarginiv - \labelwidth\leftmarginiv\advance\labelwidth-\labelsep} - -\def\@listv{\leftmargin\leftmarginv - \labelwidth\leftmarginv\advance\labelwidth-\labelsep} - -\def\@listvi{\leftmargin\leftmarginvi - \labelwidth\leftmarginvi\advance\labelwidth-\labelsep} - - -% \setlength\marginparwidth{90\p@} -% \setlength\marginparsep{11\p@} -% \setlength\marginparpush{5\p@} -% \setlength\headheight{0mm} -% \setlength\headsep{0mm} -% \setlength\topskip{0mm} -% \addtolength\footskip{4.23mm} - -\fi % tfpsymp - -%@node Footnotes, Floating bodies, Sizes, Sizes -%@subsection Footnotes - -\footskip 30pt % Distance from baseline of box containing foot - % to baseline of last line of text. -\footnotesep 5.6pt % Height of strut placed at the beginning of every - % footnote = height of normal \footnotesize strut, - % so no extra space between footnotes. - -\skip\footins 8.1pt plus 4pt minus 2pt % Space between last line of text and - % top of first footnote. - -%@node Floating bodies, Equations and such, Footnotes, Sizes -%@subsection Floating bodies - -\def\topfraction{.7} -\def\bottomfraction{.3} -\def\textfraction{.2} % HWL: at least 3 lines are required -\def\floatpagefraction{.5} - -%% from fpca95.sty - -\floatsep 11pt plus 2pt minus 2pt % Space between adjacent floats moved - % to top or bottom of text page. -\textfloatsep 4mm plus 5pt % HWL % Space between main text and floats - % at top or bottom of page. -\intextsep 4mm % HWL % Space between in-text figures and - % text. -\@fptop 0pt plus 1fil % Stretch at top of float page/column. (Must be - % 0pt plus ...) -\@fpsep 8pt plus 2fil % Space between floats on float page/column. -\@fpbot 0pt plus 1fil % Stretch at bottom of float page/column. (Must be - % 0pt plus ... ) - - - -%@node Equations and such, , Floating bodies, Sizes -%@subsection Equations and such - -% \mathindent 4mm % indentation for equations -\abovedisplayskip \baselineskip % vert space above a long formula -\belowdisplayskip \baselineskip % vert space below a long formula -\abovedisplayshortskip \baselineskip % vert space above a short formula -\belowdisplayshortskip \baselineskip % vert space below a short formula - -%@node New macros and environments, Modified macros and environments, Sizes -%@section New macros and environments - -%@node Sizes, Appendix, New macros and environments, New macros and environments -%@subsection Sizes - -%% use this for 10pt font on 11pt spacing (default is 10pt on 12pt) -% \renewcommand\normalsize{% -% \@setfontsize\normalsize\@xpt\@xipt -% \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ -% \abovedisplayshortskip \z@ \@plus3\p@ -% \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ -% \belowdisplayskip \abovedisplayskip -% \let\@listi\@listI} - -\if@tfpsymp - -% Take the default sizes from article.cls as defined by e.g. 12pt option -% ToDo: compute sizes based on \@ptsize rather than cut-and-paste - -\else - -% size in bibliography is basically 9pt -\newcommand\bibsize{% - \@setfontsize\bibsize\@ixpt{11}% - \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ - \abovedisplayshortskip \z@ \@plus2\p@ - \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 4\p@ \@plus2\p@ \@minus2\p@ - \parsep 2\p@ \@plus\p@ \@minus\p@ - \itemsep \parsep}% - \belowdisplayskip \abovedisplayskip -} - -% size in contents in tables is 8pt -\newcommand\tablesize{% - \@setfontsize\tablesize\@viiipt{9.5}% - \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ - \abovedisplayshortskip \z@ \@plus2\p@ - \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 4\p@ \@plus2\p@ \@minus2\p@ - \parsep 2\p@ \@plus\p@ \@minus\p@ - \itemsep \parsep}% - \belowdisplayskip \abovedisplayskip -} - -% just for debugging 6pt -\newcommand\unreadablesize{% - \@setfontsize\unreadablesize\@vipt{7.5}% - \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ - \abovedisplayshortskip \z@ \@plus2\p@ - \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 4\p@ \@plus2\p@ \@minus2\p@ - \parsep 2\p@ \@plus\p@ \@minus\p@ - \itemsep \parsep}% - \belowdisplayskip \abovedisplayskip -} - -\fi % tfpsymp - -%@node Appendix, Notes, Sizes, New macros and environments -%@subsection Appendix - -\def\appendixname{Appendix} -\def\appendix{\par\c@section\z@ \c@subsection\z@ - \let\sectionname\appendixname - \normalsize - \def\thesection{\@Alph\c@section}} - -%@node Notes, , Appendix, New macros and environments -%@subsection Notes - -\def\notesname{Notes} -\def\notes{\par\c@section\z@ \c@subsection\z@ - \let\sectionname\notesname - \if@tfpsymp - \small - \else - \bibsize - \fi - \def\thesection{\@Alph\c@section}} - -%@node Modified macros and environments, Misc, New macros and environments -%@section Modified macros and environments - -%@menu -%* Sectioning commands:: -%* Bibliography:: -%* Titlepage:: -%* Abstract:: -%* Quotation:: -%* Institute environment:: -%* Figures:: -%* Tables:: -%* Footnotes:: -%@end menu - -%@node Sectioning commands, Bibliography, Modified macros and environments, Modified macros and environments -%@subsection Sectioning commands - -% original taken from article.cls -% spacing taken from IEEEformat -% URL:http://servo.cogsci.uwo.ca/~elliott/IEEEformat.html - -% make section titles bold, 10 point, caps, centered; 2 blank lines before, 1 after -\renewcommand\section{\@startsection {section}{1}{\z@}% - % see article.cls - {-3.5ex \@plus -1ex \@minus -.2ex}% - {2.3ex \@plus.2ex}% - %% old sfp-cls - %%{-4.5ex \@minus -.2ex}% - %%{2.3ex \@plus.2ex}% - {\normalfont\normalsize\bfseries\MakeUppercase}} %% HWL dropped: \centering -% make subsection titles bold, underlined, 10 point; 1 blank line before, 1 after -\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% - % see article.cls - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - %% old sfp-cls - %%{-2.8ex \@plus .2ex}% - %%{2.8ex \@plus .2ex}% - {\normalfont\normalsize\bfseries\hspace{-4.8mm}}} %% HWL dropped: \underline -% make subsubsection titles bold, italics, 10 point; 1 blank line before, 0 after -\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% - % see article.cls - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - %% old sfp-cls - %%{-3.25ex\@plus -1ex \@minus -.2ex}% - %%{.5ex \@plus .2ex}% - {\normalfont\normalsize\bfseries\itshape}} %% HWL dropped: \raggedright -% make paragraph titles bold, italics, 10 point; 1 blank line before, 0 after -\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% - % see article.cls - {3.25ex \@plus1ex \@minus.2ex}% - {-1em}% - %% old sfp-cls - %%{3.25ex \@plus1ex \@minus.2ex}% - %%{-1em}% - {\normalfont\normalsize\bfseries\itshape}} -\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% - % see article.cls - {3.25ex \@plus1ex \@minus .2ex}% - {-1em}% - %% old sfp-cls - %%{3.25ex \@plus1ex \@minus .2ex}% - %%{-1em}% - {\normalfont\normalsize\bfseries\itshape}} - -% same as \section but without uppercase; for use in bibliography only -\newcommand\bibsec{\@startsection {section}{1}{\z@}% - {-4.5ex \@minus -.2ex}% - {2.3ex \@plus.2ex}% - {\normalfont\normalsize\bfseries}} %% HWL dropped: \centering - -%@node Bibliography, Titlepage, Sectioning commands, Modified macros and environments -%@subsection Bibliography - -\if@book - -% chapter env slightly changed to add authors in TOC - -% \def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne -% \if@mainmatter -% \refstepcounter{chapter}% -% \typeout{\@chapapp\space\thechapter.}% -% \addcontentsline{toc}{chapter}% -% {\protect\numberline{\thechapter}#1}% -% \else -% \addcontentsline{toc}{chapter}{#1}% -% \fi -% \else -% \addcontentsline{toc}{chapter}{#1}% -% \fi -% \chaptermark{#1}% -% \addtocontents{lof}{\protect\addvspace{10\p@}}% -% \addtocontents{lot}{\protect\addvspace{10\p@}}% -% \if@twocolumn -% \@topnewpage[\@makechapterhead{#2}]% -% \else -% \@makechapterhead{#2}% -% \@afterheading -% \fi} - -\def\refname{References} -\setlength\bibindent{8mm} - -\renewenvironment{thebibliography}[1] - {\section*{\refname} - %\@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}% - \chaptitle{\refname}% - \addcontentsline{toc}{chapter}{\refname}% - \list{\@biblabel{\@arabic\c@enumiv}}% - {\itemsep 0mm - \settowidth\labelwidth{\@biblabel{#1}}% - \leftmargin\labelwidth - \advance\leftmargin\labelsep - \@openbib@code - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand\theenumiv{\@arabic\c@enumiv}}% - \sloppy - \clubpenalty4000 - \@clubpenalty \clubpenalty - \widowpenalty4000% - \if@tfpsymp - \small - \else - \bibsize % HWL: 9pt - \fi - \sfcode`\.\@m} - {\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist} - -\else - -\def\refname{REFERENCES} -\setlength\bibindent{8mm} - -\renewenvironment{thebibliography}[1] - {\if@tfpsymp - %\normalsize - % HWL: no page break in the tfpsymp version - \small % HWL: 9pt - \else - \newpage % HWL: put bibliography on a separate page - \bibsize % HWL: 9pt - \fi - \bibsec*{\refname - \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}% - \list{\@biblabel{\@arabic\c@enumiv}}% - {\itemsep 0mm - \settowidth\labelwidth{\@biblabel{#1}}% - \leftmargin\labelwidth - \advance\leftmargin\labelsep - \@openbib@code - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand\theenumiv{\@arabic\c@enumiv}}% - \sloppy - \clubpenalty4000 - \@clubpenalty \clubpenalty - \widowpenalty4000% - \sfcode`\.\@m} - {\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist} - -\fi % book - -%@node Titlepage, Abstract, Bibliography, Modified macros and environments -%@subsection Titlepage - -% Maybe drop support for compatibility flag in sfp-ws.cls (set in -% article.cls) -- HWL - -\if@book - -% use \titlepage from book.cls without a change - -\else - -\if@compatibility -\renewenvironment{titlepage} - {% - \if@twocolumn - \@restonecoltrue\onecolumn - \else - \@restonecolfalse % \newpage % HWL: title and abstract on same page - \fi - \thispagestyle{empty}% - \setcounter{page}\z@ - }% - {\if@restonecol\twocolumn \else \newpage \fi - } -\else -\renewenvironment{titlepage} - {% - \if@twocolumn - \@restonecoltrue\onecolumn - \else - \@restonecolfalse % \newpage % HWL: title and abstract on same page - \fi - \if@pagenumbers - \thispagestyle{plain} - \else - \thispagestyle{empty} - \fi - \setcounter{page}\@ne - }% - {\if@restonecol\twocolumn \else \newpage \fi - \if@twoside\else - \setcounter{page}\@ne - \fi - } -\fi - -\fi % book - -%@node Abstract, Quotation, Titlepage, Modified macros and environments -%@subsection Abstract - -\if@book - -% no \abstract environment in a book format - -\else - -\if@titlepage - \renewenvironment{abstract}{% - \titlepage - \null\vfil - \@beginparpenalty\@lowpenalty - \begin{center}% - \bfseries \abstractname - \@endparpenalty\@M - \end{center} - \noindent % HWL - \ignorespaces % jg - %\list{}{\advance\topsep by0.35cm\relax\small - }% - {\par\vfil\null\endtitlepage} -\else - \renewenvironment{abstract}{% - \if@twocolumn - \section*{\abstractname}% - \else - \small - \begin{center}% - {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}% - \end{center}% - \quotation - \noindent % HWL - \ignorespaces % jg - %\list{}{\advance\topsep by0.35cm\relax\small - \fi} - {\if@twocolumn\else\endquotation\fi} -\fi % titlepage - -\fi % book - -%@node Quotation, Institute environment, Abstract, Modified macros and environments -%@subsection Quotation - -% HWL: 4mm indent for quotation like environments -\renewenvironment{verse} - {\let\\\@centercr - \list{}{\itemsep \z@ - \itemindent 0pt% - \leftmargin 4mm % - \listparindent\itemindent - \rightmargin \leftmargin - \advance\leftmargin 1.5em}% - \item\relax} - {\endlist} -\renewenvironment{quotation} - {\list{}{\listparindent 0pt% - \itemindent \listparindent - \leftmargin 4mm - \rightmargin \leftmargin - \parsep \z@ \@plus\p@}% - \item\relax} - {\endlist} -\renewenvironment{quote} - {\list{}{\listparindent 0pt - \leftmargin \parindent %% HWL: same indentation as para - \rightmargin\leftmargin}% - \item\relax} - {\endlist} - -%@node Institute environment, Figures, Quotation, Modified macros and environments -%@subsection Institute environment - -%% Taken from llncs.cls - -% LaTeX does not provide a command to enter the authors institute -% addresses. The \institute command is defined here. - -\newdimen\headlineindent % dimension for space between -\headlineindent=1.166cm % number and text of headings. - -\newcounter{@inst} -\newcounter{@auth} -\newcounter{auco} -\def\andname{and} -\def\lastandname{\unskip, and} -\newdimen\instindent -\newbox\authrun -\newtoks\authorrunning -\newtoks\tocauthor -\newbox\titrun -\newtoks\titlerunning -\newtoks\toctitle - -\def\clearheadinfo{\gdef\@author{No Author Given}% - \gdef\@title{No Title Given}% - \gdef\@subtitle{}% - \gdef\@institute{No Institute Given}% - \gdef\@thanks{}% - \global\titlerunning={}\global\authorrunning={}% - \global\toctitle={}\global\tocauthor={}} - -\def\institute#1{{\gdef\@institute{#1}}} - -\def\institutename{\par - \begingroup - \parskip=\z@ - \parindent=\z@ - \setcounter{@inst}{1}% - \def\and{\par\stepcounter{@inst}% - \noindent$^{\the@inst}$\enspace\ignorespaces}% - \setbox0=\vbox{\def\thanks##1{}\@institute}% - \ifnum\c@@inst=1\relax - \else - \setcounter{footnote}{\c@@inst}% - \setcounter{@inst}{1}% - \noindent$^{\the@inst}$\enspace - \fi - \ignorespaces - \@institute\par - \endgroup} - -\def\@fnsymbol#1{\ensuremath{\ifcase#1\or\star\or{\star\star}\or - {\star\star\star}\or \dagger\or \ddagger\or - \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger - \or \ddagger\ddagger \else\@ctrerr\fi}} - -\def\inst#1{\unskip$^{#1}$} -\def\fnmsep{\unskip$^,$} -\def\email#1{{\tt#1}} -\def\url#1{#1} -\def\homedir{\~{ }} - -\def\subtitle#1{\gdef\@subtitle{#1}} -\clearheadinfo - -\if@book - -% with book option use the titlepage layout from book.cls - -\def\logointellect{\LARGE{\bf intellect}$^{\Large \rm \sc tm}$} - -\renewcommand\maketitle{\par - \begingroup - \renewcommand\thefootnote{\@fnsymbol\c@footnote}% - \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% - \long\def\@makefntext##1{\parindent 1em\noindent - \hb@xt@1.8em{% - \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% - \if@twocolumn - \ifnum \col@number=\@ne - \@maketitle - \else - \twocolumn[\@maketitle]% - \fi - \else - \newpage - \global\@topnum\z@ % Prevents figures from going at top of page. - \@maketitle - \fi - \if@pagenumbers - \thispagestyle{plain}\@thanks % HWL: plain pagestyle with funnynumbers - \else - \thispagestyle{empty}\@thanks % HWL: empty pagestyle for titlepage - \fi - \endgroup - \setcounter{footnote}{0}% - \global\let\thanks\relax - \global\let\maketitle\relax - \global\let\@maketitle\relax - \global\let\@thanks\@empty - \global\let\@author\@empty - \global\let\@date\@empty - \global\let\@title\@empty - \global\let\title\relax - \global\let\author\relax - \global\let\date\relax - \global\let\and\relax -} - -\def\@maketitle{% - \newpage - \null - \vskip 2em% - \begin{center}% - \let \footnote \thanks - {\Huge \@title \par}% - \vskip 1.5em% - {\Large - \lineskip .5em% - \begin{tabular}[t]{c}% - \@author - \end{tabular}\par}% - \vskip 1em% - {\Large \@date}% - \par% - \vfill% - %STG removed PostScript file inclusion - %\psfig{width=4cm,file=sfp.ps}% - %\vskip 1.5em - \vfill% - {\centering \logointellect}% - \end{center}% - % \begin{tabular}[t]{c} \logointellect \end{tabular}} -} -\else - -% without book option (i.e. article style) use an llncs-like layout - -\renewcommand\maketitle{\newpage - \stepcounter{section}% - \setcounter{section}{0}% - \setcounter{subsection}{0}% - \setcounter{figure}{0} - \setcounter{table}{0} - \setcounter{equation}{0} - \setcounter{footnote}{0}% - \begingroup - \parindent=\z@ - \renewcommand\thefootnote{\@fnsymbol\c@footnote}% - \if@twocolumn - \ifnum \col@number=\@ne - \@maketitle - \else - \twocolumn[\@maketitle]% - \fi - \else - \newpage - \global\@topnum\z@ % Prevents figures from going at top of page. - \@maketitle - \fi - \if@pagenumbers - \thispagestyle{plain}\@thanks % HWL: page numbering for titlepage - \else - \thispagestyle{empty}\@thanks % HWL: page numbering for titlepage - \fi -% - \def\\{\unskip\ \ignorespaces}\def\inst##1{\unskip{}}% - \def\thanks##1{\unskip{}}\def\fnmsep{\unskip}% - \instindent=\hsize - \advance\instindent by-\headlineindent - \if!\the\toctitle!\addcontentsline{toc}{title}{\@title}\else - \addcontentsline{toc}{title}{\the\toctitle}\fi -% - \if!\the\tocauthor!\relax - {\def\and{\noexpand\protect\noexpand\and}% - \protected@xdef\toc@uthor{\@author}}% - \else - \def\\{\noexpand\protect\noexpand\newline}% - \protected@xdef\scratch{\the\tocauthor}% - \protected@xdef\toc@uthor{\scratch}% - \fi - \addtocontents{toc}{{\protect\raggedright\protect\leftskip15\p@ - \protect\rightskip\@tocrmarg - \protect\itshape\toc@uthor\protect\endgraf}}% - \endgroup - \setcounter{footnote}{0}% - \clearheadinfo} -% -\def\@maketitle{\newpage - \markboth{}{}% - \def\lastand{\ifnum\value{@inst}=2\relax - \unskip{} \andname\ - \else - \unskip \lastandname\ - \fi}% - \def\and{\stepcounter{@auth}\relax - \ifnum\value{@auth}=\value{@inst}% - \lastand - \else - \unskip, - \fi}% - \begin{center}% - {\Large \bfseries\boldmath - \pretolerance=10000 - \@title \par}\vskip .8cm -\if!\@subtitle!\else {\large \bfseries\boldmath - \vskip -.65cm - \pretolerance=10000 - \@subtitle \par}\vskip .8cm\fi - \setbox0=\vbox{\setcounter{@auth}{1}\def\and{\stepcounter{@auth}}% - \def\thanks##1{}\@author}% - \global\value{@inst}=\value{@auth}% - \global\value{auco}=\value{@auth}% - \setcounter{@auth}{1}% -{\lineskip .5em -\noindent\ignorespaces -\@author\vskip.35cm} - {\small\institutename} - \end{center}% - } -\fi % book -%% end llncs.cls - -% %% variables normally set in llnc.cls (using default values) -% ToDo: check whether we can use the same defs as below -% HWL: actually theorem-like envs are numbered: . -%=:-( \if@book -%=:-( \let\if@envcntreset\iffalse -%=:-( \let\if@envcntsect\iffalse -%=:-( \let\if@envcntsame\iffalse -%=:-( \else -% variables normally set in llnc.cls (using default values) -\let\if@envcntreset\iffalse -\let\if@envcntsect\iffalse -\let\if@envcntsame\iftrue -%=:-(\fi % book - -\if@llncs - -%% LLNCS style environments - -% definition of the "\spnewtheorem" command. -% -% Usage: -% -% \spnewtheorem{env_nam}{caption}[within]{cap_font}{body_font} -% or \spnewtheorem{env_nam}[numbered_like]{caption}{cap_font}{body_font} -% or \spnewtheorem*{env_nam}{caption}{cap_font}{body_font} -% -% New is "cap_font" and "body_font". It stands for -% fontdefinition of the caption and the text itself. -% -% "\spnewtheorem*" gives a theorem without number. -% -% A defined spnewthoerem environment is used as described -% by Lamport. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\def\@thmcountersep{} -\def\@thmcounterend{.} - -\def\spnewtheorem{\@ifstar{\@sthm}{\@Sthm}} - -% definition of \spnewtheorem with number - -\def\@spnthm#1#2{% - \@ifnextchar[{\@spxnthm{#1}{#2}}{\@spynthm{#1}{#2}}} -\def\@Sthm#1{\@ifnextchar[{\@spothm{#1}}{\@spnthm{#1}}} - -\def\@spxnthm#1#2[#3]#4#5{\expandafter\@ifdefinable\csname #1\endcsname - {\@definecounter{#1}\@addtoreset{#1}{#3}% - \expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand - \csname the#3\endcsname \noexpand\@thmcountersep \@thmcounter{#1}}% - \expandafter\xdef\csname #1name\endcsname{#2}% - \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% - \global\@namedef{end#1}{\@endtheorem}}} - -\def\@spynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname - {\@definecounter{#1}% - \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}% - \expandafter\xdef\csname #1name\endcsname{#2}% - \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#3}{#4}}% - \global\@namedef{end#1}{\@endtheorem}}} - -\def\@spothm#1[#2]#3#4#5{% - \@ifundefined{c@#2}{\@latexerr{No theorem environment `#2' defined}\@eha}% - {\expandafter\@ifdefinable\csname #1\endcsname - {\global\@namedef{the#1}{\@nameuse{the#2}}% - \expandafter\xdef\csname #1name\endcsname{#3}% - \global\@namedef{#1}{\@spthm{#2}{\csname #1name\endcsname}{#4}{#5}}% - \global\@namedef{end#1}{\@endtheorem}}}} - -\def\@spthm#1#2#3#4{\topsep 7\p@ \@plus2\p@ \@minus4\p@ -\refstepcounter{#1}% -\@ifnextchar[{\@spythm{#1}{#2}{#3}{#4}}{\@spxthm{#1}{#2}{#3}{#4}}} - -\def\@spxthm#1#2#3#4{\@spbegintheorem{#2}{\csname the#1\endcsname}{#3}{#4}% - \ignorespaces} - -\def\@spythm#1#2#3#4[#5]{\@spopargbegintheorem{#2}{\csname - the#1\endcsname}{#5}{#3}{#4}\ignorespaces} - -\def\@spbegintheorem#1#2#3#4{\trivlist - \item[\hskip\labelsep{#3#1\ #2\@thmcounterend}]#4} - -\def\@spopargbegintheorem#1#2#3#4#5{\trivlist - \item[\hskip\labelsep{#4#1\ #2}]{#4(#3)\@thmcounterend\ }#5} - -% definition of \spnewtheorem* without number - -\def\@sthm#1#2{\@Ynthm{#1}{#2}} - -\def\@Ynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname - {\global\@namedef{#1}{\@Thm{\csname #1name\endcsname}{#3}{#4}}% - \expandafter\xdef\csname #1name\endcsname{#2}% - \global\@namedef{end#1}{\@endtheorem}}} - -\def\@Thm#1#2#3{\topsep 7\p@ \@plus2\p@ \@minus4\p@ -\@ifnextchar[{\@Ythm{#1}{#2}{#3}}{\@Xthm{#1}{#2}{#3}}} - -\def\@Xthm#1#2#3{\@Begintheorem{#1}{#2}{#3}\ignorespaces} - -\def\@Ythm#1#2#3[#4]{\@Opargbegintheorem{#1} - {#4}{#2}{#3}\ignorespaces} - -\def\@Begintheorem#1#2#3{#3\trivlist - \item[\hskip\labelsep{#2#1\@thmcounterend}]} - -\def\@Opargbegintheorem#1#2#3#4{#4\trivlist - \item[\hskip\labelsep{#3#1}]{#3(#2)\@thmcounterend\ }} - -\if@envcntsect - \def\@thmcountersep{.} - \spnewtheorem{theorem}{Theorem}[section]{\bfseries}{\itshape} -\else - \spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape} - \if@envcntreset - \@addtoreset{theorem}{section} - \else - \@addtoreset{theorem}{chapter} - \fi -\fi - -%definition of divers theorem environments -\spnewtheorem*{claim}{Claim}{\itshape}{\rmfamily} -\spnewtheorem*{proof}{Proof}{\itshape}{\rmfamily} -\if@envcntsame % alle Umgebungen wie Theorem. - \def\spn@wtheorem#1#2#3#4{\@spothm{#1}[theorem]{#2}{#3}{#4}} -\else % alle Umgebungen mit eigenem Zaehler - \if@envcntsect % mit section numeriert - \def\spn@wtheorem#1#2#3#4{\@spxnthm{#1}{#2}[chapter]{#3}{#4}} % HWL: was [section] - \else % nicht mit section numeriert - \if@envcntreset - \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} - \@addtoreset{#1}{section}} - \else - \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} - \@addtoreset{#1}{chapter}}% - \fi - \fi -\fi -\spn@wtheorem{case}{Case}{\itshape}{\rmfamily} -\spn@wtheorem{conjecture}{Conjecture}{\itshape}{\rmfamily} -\spn@wtheorem{corollary}{Corollary}{\bfseries}{\itshape} -\spn@wtheorem{definition}{Definition}{\bfseries}{\itshape} -\spn@wtheorem{example}{Example}{\itshape}{\rmfamily} -\spn@wtheorem{exercise}{Exercise}{\itshape}{\rmfamily} -\spn@wtheorem{lemma}{Lemma}{\bfseries}{\itshape} -\spn@wtheorem{note}{Note}{\itshape}{\rmfamily} -\spn@wtheorem{problem}{Problem}{\itshape}{\rmfamily} -\spn@wtheorem{property}{Property}{\itshape}{\rmfamily} -\spn@wtheorem{proposition}{Proposition}{\bfseries}{\itshape} -\spn@wtheorem{question}{Question}{\itshape}{\rmfamily} -\spn@wtheorem{solution}{Solution}{\itshape}{\rmfamily} -\spn@wtheorem{remark}{Remark}{\itshape}{\rmfamily} - -%% LLNCS style math symbols - -\DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{"00} -\DeclareMathSymbol{\Delta}{\mathalpha}{letters}{"01} -\DeclareMathSymbol{\Theta}{\mathalpha}{letters}{"02} -\DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{"03} -\DeclareMathSymbol{\Xi}{\mathalpha}{letters}{"04} -\DeclareMathSymbol{\Pi}{\mathalpha}{letters}{"05} -\DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{"06} -\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07} -\DeclareMathSymbol{\Phi}{\mathalpha}{letters}{"08} -\DeclareMathSymbol{\Psi}{\mathalpha}{letters}{"09} -\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A} - -\let\footnotesize\small - -\def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle#1$}} -{\mbox{\boldmath$\textstyle#1$}} -{\mbox{\boldmath$\scriptstyle#1$}} -{\mbox{\boldmath$\scriptscriptstyle#1$}}} - -\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}} -\def\qed{\ifmmode\squareforqed\else{\unskip\nobreak\hfil -\penalty50\hskip1em\null\nobreak\hfil\squareforqed -\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi} - -\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip -\halign{\hfil -$\displaystyle##$\hfil\cr\gets\cr\to\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets -\cr\to\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets -\cr\to\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr -\gets\cr\to\cr}}}}} -\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil -$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr -\noalign{\vskip1.2pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr -\noalign{\vskip1pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr -<\cr -\noalign{\vskip0.9pt}=\cr}}}}} -\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil -$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr -\noalign{\vskip1.2pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr -\noalign{\vskip1pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr ->\cr -\noalign{\vskip0.9pt}=\cr}}}}} -\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip -\halign{\hfil -$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1pt}<\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr ->\cr\noalign{\vskip-1pt}<\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr ->\cr\noalign{\vskip-0.8pt}<\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr ->\cr\noalign{\vskip-0.3pt}<\cr}}}}} -\def\bbbr{{\rm I\!R}} %reelle Zahlen -\def\bbbm{{\rm I\!M}} -\def\bbbn{{\rm I\!N}} %natuerliche Zahlen -\def\bbbf{{\rm I\!F}} -\def\bbbh{{\rm I\!H}} -\def\bbbk{{\rm I\!K}} -\def\bbbp{{\rm I\!P}} -\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l} -{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}} -\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox -to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox -to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox -to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox -to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}} -\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm -Q$}\hbox{\raise -0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} -{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise -0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise -0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise -0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}} -\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm -T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox -to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox -to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox -to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}} -\def\bbbs{{\mathchoice -{\setbox0=\hbox{$\displaystyle \rm S$}\hbox{\raise0.5\ht0\hbox -to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox -to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} -{\setbox0=\hbox{$\textstyle \rm S$}\hbox{\raise0.5\ht0\hbox -to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox -to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptstyle \rm S$}\hbox{\raise0.5\ht0\hbox -to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox -to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox -to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox -to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}} -\def\bbbz{{\mathchoice {\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} -{\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} -{\hbox{$\mathsf\scriptstyle Z\kern-0.3em Z$}} -{\hbox{$\mathsf\scriptscriptstyle Z\kern-0.2em Z$}}}} - -\else % !llncs - -% NB: no example etc environments - -\fi % llncs - -%% HWL final: same numbering as for figure and table -%% this is a HAAAAAAAAAAAAAACK -%% ToDo: integrate this into definition of the environments above -%\newcounter{figure} -\if@book -\renewcommand \thetheorem - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@theorem} -\else -\def\thetheorem{\@arabic\c@theorem} -\fi - -\if@book -\renewcommand \theexample - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@example} -\else -\def\theexample{\@arabic\c@example} -\fi - -\if@book -\renewcommand \theconjecture - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@conjecture} -\else -\def\theconjecture{\@arabic\c@conjecture} -\fi - -\if@book -\renewcommand \thecorollary - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@corollary} -\else -\def\thecorollary{\@arabic\c@corollary} -\fi - -\if@book -\renewcommand \thedefinition - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@definition} -\else -\def\thedefinition{\@arabic\c@definition} -\fi - -\if@book -\renewcommand \theexercise - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@exercise} -\else -\def\theexercise{\@arabic\c@exercise} -\fi - -\if@book -\renewcommand \thelemma - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@lemma} -\else -\def\thelemma{\@arabic\c@lemma} -\fi - -\if@book -\renewcommand \theproblem - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@problem} -\else -\def\theproblem{\@arabic\c@problem} -\fi - -\if@book -\renewcommand \theproperty - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@property} -\else -\def\theproperty{\@arabic\c@property} -\fi - -\if@book -\renewcommand \theproposition - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@proposition} -\else -\def\theproposition{\@arabic\c@proposition} -\fi - -\if@book -\renewcommand \thequestion - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@question} -\else -\def\thequestion{\@arabic\c@question} -\fi - -\if@book -\renewcommand \thesolution - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@solution} -\else -\def\thesolution{\@arabic\c@solution} -\fi - -\if@book -\renewcommand \theremark - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@remark} -\else -\def\theremark{\@arabic\c@remark} -\fi - - -%@node Figures, Tables, Institute environment, Modified macros and environments -%@subsection Figures - -\def\fps@figure{tb} - -\renewcommand{\figurename}{FIGURE~} - -% HWL: whole line bold; extra 4mm space before title -\long\def\@makecaption#1#2{% - \if@tfpsymp - \small \bfseries % HWL: 12pt bold in tfpsymp - \else - \bibsize \bfseries % HWL: 9pt bold - \fi - \vskip\abovecaptionskip - \sbox\@tempboxa{#1.\negthinspace\hspace{4mm}#2} - \ifdim \wd\@tempboxa >\hsize - #1.\negthinspace\hspace{4mm}#2\par - \else - \global \@minipagefalse - \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% - \fi - \vskip\belowcaptionskip} - -%\newcounter{figure} -\if@book -\renewcommand \thefigure - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@figure} -\else -\def\thefigure{\@arabic\c@figure} -\fi - -\def\fps@figure{tb} -\def\ftype@figure{1} -\def\ext@figure{lof} -\def\fnum@figure{\figurename~\thefigure} -\def\figure{\@float{figure}} -\let\endfigure\end@float -%\@namedef{figure*}{\@dblfloat{figure}} -%\@namedef{endfigure*}{\end@dblfloat} - -\renewenvironment{figure} - {% - \setlength\abovecaptionskip{\baselineskip}% - \setlength\belowcaptionskip{\baselineskip}% - \@float{figure}} - {\end@float} -\renewenvironment{figure*} - {% - \setlength\abovecaptionskip{\baselineskip}% - \setlength\belowcaptionskip{\baselineskip}% - \@dblfloat{figure}} - {\end@dblfloat} - -%@node Tables, Footnotes, Figures, Modified macros and environments -%@subsection Tables - -\renewcommand{\tablename}{TABLE~} - -\def\fps@table{tb} -\def\fnum@table{\tablename\thetable} -% \def\@maketable#1#2{% -% \setlength\abovecaptionskip{\baselineskip} \setlength\belowcaptionskip{\baselineskip} \@float{table}[#1] #2 \end@float} - -% \long\def\@caption#1[#2]#3{\par\addcontentsline{\csname -% ext@#1\endcsname}{#1}{\protect\numberline{\csname -% the#1\endcsname}{\ignorespaces #2}}\begingroup -% \@parboxrestore -% \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par -% \endgroup} - - -% \newcounter{table} -% %\renewcommand\thetable{\@arabic\c@table} -\if@book -\renewcommand \thetable - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@table} -\else -\def\thetable{\@arabic\c@table} -\fi -\def\fps@table{tb} -\def\ftype@table{2} -\def\ext@table{lot} -\def\fnum@table{\tablename~\thetable} - -\renewenvironment{table} - { % - \setlength\abovecaptionskip{\baselineskip}% - \setlength\belowcaptionskip{\baselineskip}% - \@float{table}[tb] - \if@tfpsymp - \normalsize - \else - \tablesize - \fi} - {\end@float} -\renewenvironment{table*} - {% - \setlength\abovecaptionskip{\baselineskip}% - \setlength\belowcaptionskip{\baselineskip}% - \@dblfloat{table}[tb] - \if@tfpsymp - \normalsize - \else - \tablesize - \fi} - {\end@dblfloat} - -%@node Footnotes, , Tables, Modified macros and environments -%@subsection Footnotes - -\renewcommand\@makefntext[1]{% - %\parindent 1em% - \noindent - \raggedright % HWL: no line filling in footnotes - \hb@xt@1.8em{\hss\@makefnmark}#1} - -%@node Misc, Pagestyle etc, Modified macros and environments -%@section Misc - -% % from grasp.sty -% \newcommand{\smiley}{% -% \hbox{$\bigcirc\mskip-13.3mu{}^{..} -% \mskip-11mu\scriptscriptstyle\smile\ $}} -% \newcommand{\frowney}{% -% \hbox{$\bigcirc\mskip-13.3mu{}^{..} -% \mskip-11mu\scriptscriptstyle\frown\ $}} - - -%@node Pagestyle etc, , Misc -%@section Pagestyle etc - -\if@book - -\def\chapauthors#1{ - \gdef\@chapauthors{#1}% - \vspace{-1cm}% - %% Should add contents line here; currently has to be done inlined in text - %%\addcontentsline{toc}{}% - %% {\protect\numberline{\it #1}}% - %%\addcontentsline{toc}{}{\@chapauthors}% - {\large \@chapauthors}% - } - -\def\chapauthorstoc#1{\addtocontents{toc}{\hspace{-0cm}\protect{\it #1}}} - -%\def\chapauthorstoc#1{\addtocontents{toc}{\hspace{\bonzowidth}\protect{\it #1}}} - -\def\wstitle#1{\gdef\@wstitle{#1}} -\def\chaptitle#1{\gdef\@chaptitle{#1}} - -\def\ps@sfpheadings{% - \let\@oddfoot\@empty\let\@evenfoot\@empty - \def\@evenhead{\thepage\hfil\@wstitle}% - %\def\@oddhead{\@chaptitle\hfil\thepage}% - \def\@oddhead{\@chapapp\ \thechapter. \@chaptitle\hfil\thepage}% - \let\@mkboth\@gobbletwo - \let\chaptermark\@gobble - \let\sectionmark\@gobble - } - -\def\ps@frontheadings{% - \let\@oddfoot\@empty\let\@evenfoot\@empty - \def\@evenhead{\thepage\hfil\@wstitle} - \def\@oddhead{\@chaptitle\hfil\thepage} - \let\@mkboth\@gobbletwo - \let\chaptermark\@gobble - \let\sectionmark\@gobble - } - -\renewcommand\frontmatter{% -%=:-( \if@openright -%=:-( \cleardoublepage -%=:-( \else -%=:-( \clearpage -%=:-( \fi - \@mainmatterfalse - \pagenumbering{roman} - \pagestyle{frontheadings}} - -\renewcommand\mainmatter{% -%=:-( \if@openright -%=:-( \cleardoublepage -%=:-( \else -%=:-( \clearpage -%=:-( \fi - \@mainmattertrue - \pagenumbering{arabic} - \pagestyle{sfpheadings}} - -% similar to frontmatter but with arabic page numbers -\renewcommand\backmatter{% -%=:-( \if@openright -%=:-( \cleardoublepage -%=:-( \else -%=:-( \clearpage -%=:-( \fi - \@mainmatterfalse - \pagenumbering{arabic} - \pagestyle{frontheadings}} - -%% from book.cls: -\renewcommand\part{% -%=:-( \if@openright -%=:-( \cleardoublepage -%=:-( \else -%=:-( \clearpage -%=:-( \fi -%=:-( \thispagestyle{plain}% - \if@twocolumn - \onecolumn - \@tempswatrue - \else - \@tempswafalse - \fi - \null\vfil - \secdef\@part\@spart} - -\def\@part[#1]#2{% - \ifnum \c@secnumdepth >-2\relax - \refstepcounter{part}% - \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% - \else - \addcontentsline{toc}{part}{#1}% - \fi - \markboth{}{}% - {\centering - \interlinepenalty \@M - \normalfont - \ifnum \c@secnumdepth >-2\relax - \huge\bfseries \partname~\thepart - \par - \vskip 20\p@ - \fi - \Huge \bfseries #2\par}% - \@endpart} -\def\@spart#1{% - {\centering - \interlinepenalty \@M - \normalfont - \Huge \bfseries #1\par}% - \@endpart} -\def\@endpart{\vfil %% \newpage -- HWL: no pagebreak with part env - \if@twoside - \null - \thispagestyle{empty}% - %%\newpage - \fi - \if@tempswa - \twocolumn - \fi} - -\fi % book - -% % \if@titlepage -% % \renewcommand\maketitle{\begin{titlepage}% -% % \let\footnotesize\small -% % \let\footnoterule\relax -% % \let \footnote \thanks -% % \null\vfil -% % \vskip 60\p@ -% % \begin{center}% -% % {\LARGE \@title \par}% -% % \vskip 3em% -% % {\large -% % \lineskip .75em% -% % \begin{tabular}[t]{c}% -% % \@author -% % \end{tabular}\par}% -% % \vskip 1.5em% -% % {\large \@date \par}% % Set date in \large size. -% % \end{center}\par -% % \@thanks -% % \vfil\null -% % \end{titlepage}% -% % \setcounter{footnote}{0}% -% % \global\let\thanks\relax -% % \global\let\maketitle\relax -% % \global\let\@thanks\@empty -% % \global\let\@author\@empty -% % \global\let\@date\@empty -% % \global\let\@title\@empty -% % \global\let\title\relax -% % \global\let\author\relax -% % \global\let\date\relax -% % \global\let\and\relax -% % } -% % \else -% % \renewcommand\maketitle{\par -% % \begingroup -% % \renewcommand\thefootnote{\@fnsymbol\c@footnote}% -% % \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% -% % \long\def\@makefntext##1{\parindent 1em\noindent -% % \hb@xt@1.8em{% -% % \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% -% % \if@twocolumn -% % \ifnum \col@number=\@ne -% % \@maketitle -% % \else -% % \twocolumn[\@maketitle]% -% % \fi -% % \else -% % \newpage -% % \global\@topnum\z@ % Prevents figures from going at top of page. -% % \@maketitle -% % \fi -% % \thispagestyle{plain}\@thanks -% % \endgroup -% % \setcounter{footnote}{0}% -% % \global\let\thanks\relax -% % \global\let\maketitle\relax -% % \global\let\@maketitle\relax -% % \global\let\@thanks\@empty -% % \global\let\@author\@empty -% % \global\let\@date\@empty -% % \global\let\@title\@empty -% % \global\let\title\relax -% % \global\let\author\relax -% % \global\let\date\relax -% % \global\let\and\relax -% % } -% % % \def\@maketitle{% -% % % \newpage -% % % \null -% % % \vskip 2em% -% % % \begin{center}% -% % % \let \footnote \thanks -% % % {\LARGE \@title \par}% -% % % \vskip 1.5em% -% % % {\large -% % % \lineskip .5em% -% % % \begin{tabular}[t]{c}% -% % % \@author -% % % \end{tabular}\par}% -% % % \vskip 1em% -% % % {\large \@date}% -% % % \end{center}% -% % % \par -% % % \vskip 1.5em} -% % % \fi - -\normalsize - -% book uses \frontmatter etc to set headings correctly -\if@tfpsymp - -\if@pagenumbers - -\pagestyle{plain} - -% Pagenumbering for tfpsymp papers is: Paper.no.(roman)-Page.no. (e.g. VII-1) -\newcounter{paper} -\def\@FP#1{\@Roman \c@paper--\@arabic #1} -\pagenumbering{FP} - -%% NB: The following line has to be inserted at the beginning of each paper!! -%\setcounter{paper}{1009} - -\else - -\pagestyle{empty} - -\fi - -\else - -\pagestyle{empty} - -\fi - -%% This is now defined in \mainmatter -% \if@book -% % with the book option we want headings otherwise we don't -% \pagestyle{sfpheadings} -% \else -% \pagestyle{empty} -% \fi diff --git a/jscomp/build_tests/ocamlgraph/papers/tfp07/tfp07symp.cls b/jscomp/build_tests/ocamlgraph/papers/tfp07/tfp07symp.cls deleted file mode 100755 index 6af73fa351..0000000000 --- a/jscomp/build_tests/ocamlgraph/papers/tfp07/tfp07symp.cls +++ /dev/null @@ -1,1670 +0,0 @@ -% Style file for the Trends in Functional Programming Symposium Proceedings 2005 -% -% Used to be the style file for the Scottish Functional Programming Workshop. -% Mainly a wrapper around article.cls redefining various sizes -% -%% General formating guidelines (not enforced by the style file): -% -% For formating the titlepage use the same macros as in LLNCS-style i.e. -% \title, \author, \institute. Use \and if there are several authors, -% and use the same order for authors and institutes. -% -% Tables and figures: -% -% Center tables and figures. If possible and sensible make them same width -% as text. Use initial caps in the caption of a figure, but initial cap -% only in the caption of a table. Don't put tables or figures immediately -% before or after a section-level heading. -% NB: Following Intellects guidelines, tables are put at the top or the -% bottom of the page. Hence, the {table} and {figure} environments -% don't have optional placement parameters. -% -%% Supported options: -% tfpsymp ... use this for the symposium proceedings; mostly article.cls but with wide text -% similar to [11,a4paper]{article} -% NB: article's draft option isn't used any more -% pagenumbers ... this option adds page numbers of the format -% Paper.no.(roman)-Page.no. (e.g. VII-1) to the paper -% llncs ... gives you LLNCS-style environments (such as example etc) and -% some LLNCS-style math symbols -% ams ... gives you amslatex package -% -%% Changelog: -% $Log: sfp-ws.cls,v $ -% Revision 1.23 2007/01/27 Henrik Nilsson -% Removed extra negarive space before subsection numbers as suggested by -% Jeremy Gibbons. -% -% Revision 1.22 2007/01/24 Jeremy Gibbons -% Times fonts by reference rather than inlined; renamed file to tfp07symp.cls -% -% Revision 1.21 2006/11/21 Henrik Nilsson -% References are no longer treated as a chapter on their own. -% -% Revision 1.20 2005/07/26 Marko van Eekelen -% Changed draft to tfpsymp option; renamed file to tfp05symp.cls -% -% Revision 1.19 2001/08/09 12:55:41 hwloidl -% Pagenumbering is optional with new option pagenumbers. -% Fixed a problem with counter reset for theorem-likes at new sections. -% -% Revision 1.18 2001/08/08 15:20:40 hwloidl -% Added page numbers for draft option. Format: VII-3 etc -% -% Revision 1.17 2001/08/06 14:30:55 hwloidl -% Dropped draft option from article class (draft option to sfp-ws unchanged) -% Fixed theorem and other llncs envs in non-book setup (untested in book setup) -% -% Revision 1.16 2001/08/04 01:03:24 hwloidl -% Changed draft to 11pt -% -% Revision 1.15 2001/07/31 00:16:04 hwloidl -% Hacked the version used for the book of SFP'00 to make draft option work -% agan. Comments starting with %=:-( indicate this hack. -% This shouldn't break book style but that's untested. -% -% Revision 1.14 2000/06/30 13:24:13 hwloidl -% Tiny changes asked for by Intellect: -% Running header in Bibliography now says `Bibliography'; added to TOC. -% -% Revision 1.13 2000/06/29 19:34:49 hwloidl -% Plain pagestyle with draft option. -% -% Revision 1.12 2000/06/29 19:21:13 hwloidl -% Fixed a bug in the artice version of the style file. -% Added the option draft to be used for draft proceedings; it translates to -% [12pt,draft,a4paper]{article} -% No pagebreaks after abstact and before bibliography in draft version. -% -% Revision 1.11 2000/06/15 23:47:36 hwloidl -% Only change: TOC now only down to section level. -% -% Revision 1.10 2000/06/15 02:14:11 hwloidl -% Tiny changes (authors in TOC etc) -% -% Revision 1.9 2000/06/09 21:57:35 hwloidl -% Finished typesetting changes for remaining chapters. Started with -% changes in bibliography but not finished yet. -% -% Revision 1.8 2000/06/06 14:16:49 hwloidl -% Typesetting changes. Bib now uses bib-xref for page references in the bib. -% -% Revision 1.7 2000/05/26 15:54:14 hwloidl -% Minor typesetting changes -% -% Revision 1.6 2000/05/24 12:14:02 hwloidl -% notes on changes for the final versio of the book -% -% Revision 1.5 2000/05/20 02:27:22 hwloidl -% clean up -% -% Revision 1.4 2000/03/06 21:00:36 hwloidl -% Modifications in sfp-ws.cls style file: -% changed \@maketitle (better layout and logo), \part and related macros (nuke -% blank page after part), \chapauthorstoc (new command to add authors into TOC). -% Changed bodies of chapter, inserting \chapauthorstoc and fixed some figures. -% -% Revision 1.3 2000/02/10 15:58:45 hwloidl -% Style file: modified defs of \section, \subsection, \subsubsection, \footnote -% Body: inserted \addtocounter{footnote}{..} to get numbering of footnotes right. -% -% Revision 1.2 2000/01/21 14:29:40 hwloidl -% Modified style file: new headings in text; new titlepage layout; new -% commands \wstitle, \chaptitle, \chapauthors; modified \bibliography -% environment in book style. -% -% -% Modified .tex files to define \chaptitle and \chapauthors in each. -% -% Revision 1.1.1.1 2000/01/21 02:07:30 hwloidl -% Latex sources of the SFP'99 proceedings -% -% Revision 1.3 1999/11/25 14:18:43 hwloidl -% For final submission -% -% Revision 1.2 1999/11/24 11:26:16 hwloidl -% *** empty log message *** -% -% Revision 1.1 1999/09/27 12:24:17 hwloidl -% Initial revision -% -% --------------------------------------------------------------------------- - -%@menu -%* Load main style file:: -%* Sizes:: -%* New macros and environments:: -%* Modified macros and environments:: -%* Misc:: -%* Pagestyle etc:: -%@end menu - -%@node Load main style file, Sizes -%@section Load main style file - -\NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesFile{tfp07symp} [Trends in Functional Programming style file $Revision: 1.21 $] - -%% Options supported by this style file -\let\if@llncs\iffalse -\DeclareOption{llncs}{\let\if@llncs\iftrue} -\let\if@ams\iffalse -\DeclareOption{ams}{\let\if@ams\iftrue} -\let\if@book\iffalse -\DeclareOption{book}{\let\if@book\iftrue} -\let\if@tfpsymp\iffalse -\DeclareOption{tfpsymp}{\let\if@tfpsymp\iftrue} -\let\if@pagenumbers\iffalse -\DeclareOption{pagenumbers}{\let\if@pagenumbers\iftrue} - -\ProcessOptions - -% use option titlepage to bring title and abstract to separate pages -\if@book -\LoadClass[10pt,a4paper,titlepage,twoside,openany]{book} -\else -% tfpsymp option for tfpsymp proceedings; basically 11pt article style -\if@tfpsymp - \LoadClass[11pt,a4paper]{article} - \else - \LoadClass[11pt,a4paper,titlepage]{article} - \fi -\fi - -\if@ams - \usepackage[mathbb]{mathpi} - \usepackage{amsmath} - \usepackage{amssymb} -\fi - -% removed inlining of Times fonts, reference the packages instead (jg) -\usepackage{times} -\usepackage{mathptm} - -%@node Sizes, New macros and environments, Load main style file -%@section Sizes - -% tfpsymp overrides most of the settings in this section -\if@tfpsymp - -% all set via option a4paper already - -\else - -\setlength\textwidth{114mm} -\setlength\textheight{190mm} -\setlength\parskip{0mm} -\setlength\parindent{5mm} -% \setlength\footskip{} -% \setlength\footheight{} - -\setlength\topmargin{41mm} -\setlength\oddsidemargin{48mm} -\setlength{\evensidemargin}{\oddsidemargin} -\advance\topmargin by -1in % 1in margin is implicit in LaTeX -\advance\oddsidemargin by -1in % 1in margin is implicit in LaTeX -\advance\evensidemargin by -1in % 1in margin is implicit in LaTeX - -\marginparwidth 0pt % Margin pars are not allowed. -\marginparsep 11pt % Horizontal space between outer margin and - % marginal note -\marginparpush 5pt % Minimum vertical separation between two marginal - % notes. - - % indentations for list elements -\leftmargin 1mm -\labelsep 1mm -\labelwidth\leftmargini\advance\labelwidth-\labelsep -% \parsep 4pt plus 2pt minus 1pt (Removed 9 Jun 87) - -%\setlength\labelsep{1mm} -\itemsep\baselineskip % 1 line space between items in the list - -% SUBLIST (SL): same as UL, 1m space indent on left side. Lines after first -% line hang under indent -% alas, an indentation of 1m would mean that you have to put your pages -% side by side in order to keep the text on paper ;-) so I choose 1mm instead -% -- HWL -\listparindent 1mm - -\leftmargini 5mm -\leftmarginii 5mm -\leftmarginiii 5mm -\leftmarginiv 4mm -\leftmarginv 4mm -\leftmarginvi 4mm - -\def\@listI{\leftmargin\leftmargini \parsep 3.6pt plus 2pt minus 1pt% -\topsep 7.2pt plus 2pt minus 4pt% -\itemsep 3.6pt plus 2pt minus 1pt} - -\let\@listi\@listI -\@listi - -\def\@listii{\leftmargin\leftmarginii - \labelwidth\leftmarginii\advance\labelwidth-\labelsep - \topsep 3.6pt plus 2pt minus 1pt - \parsep 1.8pt plus 0.9pt minus 0.9pt - \itemsep \parsep} - -\def\@listiii{\leftmargin\leftmarginiii - \labelwidth\leftmarginiii\advance\labelwidth-\labelsep - \topsep 1.8pt plus 0.9pt minus 0.9pt - \parsep \z@ \partopsep 1pt plus 0pt minus 1pt - \itemsep \topsep} - -\def\@listiv{\leftmargin\leftmarginiv - \labelwidth\leftmarginiv\advance\labelwidth-\labelsep} - -\def\@listv{\leftmargin\leftmarginv - \labelwidth\leftmarginv\advance\labelwidth-\labelsep} - -\def\@listvi{\leftmargin\leftmarginvi - \labelwidth\leftmarginvi\advance\labelwidth-\labelsep} - - -% \setlength\marginparwidth{90\p@} -% \setlength\marginparsep{11\p@} -% \setlength\marginparpush{5\p@} -% \setlength\headheight{0mm} -% \setlength\headsep{0mm} -% \setlength\topskip{0mm} -% \addtolength\footskip{4.23mm} - -\fi % tfpsymp - -%@node Footnotes, Floating bodies, Sizes, Sizes -%@subsection Footnotes - -\footskip 30pt % Distance from baseline of box containing foot - % to baseline of last line of text. -\footnotesep 5.6pt % Height of strut placed at the beginning of every - % footnote = height of normal \footnotesize strut, - % so no extra space between footnotes. - -\skip\footins 8.1pt plus 4pt minus 2pt % Space between last line of text and - % top of first footnote. - -%@node Floating bodies, Equations and such, Footnotes, Sizes -%@subsection Floating bodies - -\def\topfraction{.7} -\def\bottomfraction{.3} -\def\textfraction{.2} % HWL: at least 3 lines are required -\def\floatpagefraction{.5} - -%% from fpca95.sty - -\floatsep 11pt plus 2pt minus 2pt % Space between adjacent floats moved - % to top or bottom of text page. -\textfloatsep 4mm plus 5pt % HWL % Space between main text and floats - % at top or bottom of page. -\intextsep 4mm % HWL % Space between in-text figures and - % text. -\@fptop 0pt plus 1fil % Stretch at top of float page/column. (Must be - % 0pt plus ...) -\@fpsep 8pt plus 2fil % Space between floats on float page/column. -\@fpbot 0pt plus 1fil % Stretch at bottom of float page/column. (Must be - % 0pt plus ... ) - - - -%@node Equations and such, , Floating bodies, Sizes -%@subsection Equations and such - -% \mathindent 4mm % indentation for equations -\abovedisplayskip \baselineskip % vert space above a long formula -\belowdisplayskip \baselineskip % vert space below a long formula -\abovedisplayshortskip \baselineskip % vert space above a short formula -\belowdisplayshortskip \baselineskip % vert space below a short formula - -%@node New macros and environments, Modified macros and environments, Sizes -%@section New macros and environments - -%@node Sizes, Appendix, New macros and environments, New macros and environments -%@subsection Sizes - -%% use this for 10pt font on 11pt spacing (default is 10pt on 12pt) -% \renewcommand\normalsize{% -% \@setfontsize\normalsize\@xpt\@xipt -% \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ -% \abovedisplayshortskip \z@ \@plus3\p@ -% \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ -% \belowdisplayskip \abovedisplayskip -% \let\@listi\@listI} - -\if@tfpsymp - -% Take the default sizes from article.cls as defined by e.g. 12pt option -% ToDo: compute sizes based on \@ptsize rather than cut-and-paste - -\else - -% size in bibliography is basically 9pt -\newcommand\bibsize{% - \@setfontsize\bibsize\@ixpt{11}% - \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ - \abovedisplayshortskip \z@ \@plus2\p@ - \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 4\p@ \@plus2\p@ \@minus2\p@ - \parsep 2\p@ \@plus\p@ \@minus\p@ - \itemsep \parsep}% - \belowdisplayskip \abovedisplayskip -} - -% size in contents in tables is 8pt -\newcommand\tablesize{% - \@setfontsize\tablesize\@viiipt{9.5}% - \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ - \abovedisplayshortskip \z@ \@plus2\p@ - \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 4\p@ \@plus2\p@ \@minus2\p@ - \parsep 2\p@ \@plus\p@ \@minus\p@ - \itemsep \parsep}% - \belowdisplayskip \abovedisplayskip -} - -% just for debugging 6pt -\newcommand\unreadablesize{% - \@setfontsize\unreadablesize\@vipt{7.5}% - \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ - \abovedisplayshortskip \z@ \@plus2\p@ - \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 4\p@ \@plus2\p@ \@minus2\p@ - \parsep 2\p@ \@plus\p@ \@minus\p@ - \itemsep \parsep}% - \belowdisplayskip \abovedisplayskip -} - -\fi % tfpsymp - -%@node Appendix, Notes, Sizes, New macros and environments -%@subsection Appendix - -\def\appendixname{Appendix} -\def\appendix{\par\c@section\z@ \c@subsection\z@ - \let\sectionname\appendixname - \normalsize - \def\thesection{\@Alph\c@section}} - -%@node Notes, , Appendix, New macros and environments -%@subsection Notes - -\def\notesname{Notes} -\def\notes{\par\c@section\z@ \c@subsection\z@ - \let\sectionname\notesname - \if@tfpsymp - \small - \else - \bibsize - \fi - \def\thesection{\@Alph\c@section}} - -%@node Modified macros and environments, Misc, New macros and environments -%@section Modified macros and environments - -%@menu -%* Sectioning commands:: -%* Bibliography:: -%* Titlepage:: -%* Abstract:: -%* Quotation:: -%* Institute environment:: -%* Figures:: -%* Tables:: -%* Footnotes:: -%@end menu - -%@node Sectioning commands, Bibliography, Modified macros and environments, Modified macros and environments -%@subsection Sectioning commands - -% original taken from article.cls -% spacing taken from IEEEformat -% URL:http://servo.cogsci.uwo.ca/~elliott/IEEEformat.html - -% make section titles bold, 10 point, caps, centered; 2 blank lines before, 1 after -\renewcommand\section{\@startsection {section}{1}{\z@}% - % see article.cls - {-3.5ex \@plus -1ex \@minus -.2ex}% - {2.3ex \@plus.2ex}% - %% old sfp-cls - %%{-4.5ex \@minus -.2ex}% - %%{2.3ex \@plus.2ex}% - {\normalfont\normalsize\bfseries\MakeUppercase}} %% HWL dropped: \centering -% make subsection titles bold, underlined, 10 point; 1 blank line before, 1 after -\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% - % see article.cls - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - %% old sfp-cls - %%{-2.8ex \@plus .2ex}% - %%{2.8ex \@plus .2ex}% - % {\normalfont\normalsize\bfseries\hspace{-4.8mm}}} %% HWL dropped: \underline - {\normalfont\normalsize\bfseries}} % HN: Better? -% make subsubsection titles bold, italics, 10 point; 1 blank line before, 0 after -\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% - % see article.cls - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - %% old sfp-cls - %%{-3.25ex\@plus -1ex \@minus -.2ex}% - %%{.5ex \@plus .2ex}% - {\normalfont\normalsize\bfseries\itshape}} %% HWL dropped: \raggedright -% make paragraph titles bold, italics, 10 point; 1 blank line before, 0 after -\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% - % see article.cls - {3.25ex \@plus1ex \@minus.2ex}% - {-1em}% - %% old sfp-cls - %%{3.25ex \@plus1ex \@minus.2ex}% - %%{-1em}% - {\normalfont\normalsize\bfseries\itshape}} -\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% - % see article.cls - {3.25ex \@plus1ex \@minus .2ex}% - {-1em}% - %% old sfp-cls - %%{3.25ex \@plus1ex \@minus .2ex}% - %%{-1em}% - {\normalfont\normalsize\bfseries\itshape}} - -% same as \section but without uppercase; for use in bibliography only -\newcommand\bibsec{\@startsection {section}{1}{\z@}% - {-4.5ex \@minus -.2ex}% - {2.3ex \@plus.2ex}% - {\normalfont\normalsize\bfseries}} %% HWL dropped: \centering - -%@node Bibliography, Titlepage, Sectioning commands, Modified macros and environments -%@subsection Bibliography - -\if@book - -% chapter env slightly changed to add authors in TOC - -% \def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne -% \if@mainmatter -% \refstepcounter{chapter}% -% \typeout{\@chapapp\space\thechapter.}% -% \addcontentsline{toc}{chapter}% -% {\protect\numberline{\thechapter}#1}% -% \else -% \addcontentsline{toc}{chapter}{#1}% -% \fi -% \else -% \addcontentsline{toc}{chapter}{#1}% -% \fi -% \chaptermark{#1}% -% \addtocontents{lof}{\protect\addvspace{10\p@}}% -% \addtocontents{lot}{\protect\addvspace{10\p@}}% -% \if@twocolumn -% \@topnewpage[\@makechapterhead{#2}]% -% \else -% \@makechapterhead{#2}% -% \@afterheading -% \fi} - -\def\refname{References} -\setlength\bibindent{8mm} - -\renewenvironment{thebibliography}[1] - {\section*{\refname} - %\@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}% - % HN 2006-11-21: I don't think it is a good idea to make the - % references into a chapter. Looks very strange in the TOC, for example! - % \chaptitle{\refname}% - % \addcontentsline{toc}{chapter}{\refname}% - \addcontentsline{toc}{section}{\refname}% - \list{\@biblabel{\@arabic\c@enumiv}}% - {\itemsep 0mm - \settowidth\labelwidth{\@biblabel{#1}}% - \leftmargin\labelwidth - \advance\leftmargin\labelsep - \@openbib@code - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand\theenumiv{\@arabic\c@enumiv}}% - \sloppy - \clubpenalty4000 - \@clubpenalty \clubpenalty - \widowpenalty4000% - \if@tfpsymp - \small - \else - \bibsize % HWL: 9pt - \fi - \sfcode`\.\@m} - {\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist} - -\else - -\def\refname{REFERENCES} -\setlength\bibindent{8mm} - -\renewenvironment{thebibliography}[1] - {\if@tfpsymp - %\normalsize - % HWL: no page break in the tfpsymp version - \small % HWL: 9pt - \else - \newpage % HWL: put bibliography on a separate page - \bibsize % HWL: 9pt - \fi - \bibsec*{\refname - \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}% - \list{\@biblabel{\@arabic\c@enumiv}}% - {\itemsep 0mm - \settowidth\labelwidth{\@biblabel{#1}}% - \leftmargin\labelwidth - \advance\leftmargin\labelsep - \@openbib@code - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand\theenumiv{\@arabic\c@enumiv}}% - \sloppy - \clubpenalty4000 - \@clubpenalty \clubpenalty - \widowpenalty4000% - \sfcode`\.\@m} - {\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist} - -\fi % book - -%@node Titlepage, Abstract, Bibliography, Modified macros and environments -%@subsection Titlepage - -% Maybe drop support for compatibility flag in sfp-ws.cls (set in -% article.cls) -- HWL - -\if@book - -% use \titlepage from book.cls without a change - -\else - -\if@compatibility -\renewenvironment{titlepage} - {% - \if@twocolumn - \@restonecoltrue\onecolumn - \else - \@restonecolfalse % \newpage % HWL: title and abstract on same page - \fi - \thispagestyle{empty}% - \setcounter{page}\z@ - }% - {\if@restonecol\twocolumn \else \newpage \fi - } -\else -\renewenvironment{titlepage} - {% - \if@twocolumn - \@restonecoltrue\onecolumn - \else - \@restonecolfalse % \newpage % HWL: title and abstract on same page - \fi - \if@pagenumbers - \thispagestyle{plain} - \else - \thispagestyle{empty} - \fi - \setcounter{page}\@ne - }% - {\if@restonecol\twocolumn \else \newpage \fi - \if@twoside\else - \setcounter{page}\@ne - \fi - } -\fi - -\fi % book - -%@node Abstract, Quotation, Titlepage, Modified macros and environments -%@subsection Abstract - -\if@book - -% no \abstract environment in a book format - -\else - -\if@titlepage - \renewenvironment{abstract}{% - \titlepage - \null\vfil - \@beginparpenalty\@lowpenalty - \begin{center}% - \bfseries \abstractname - \@endparpenalty\@M - \end{center} - \noindent % HWL - \ignorespaces % jg - %\list{}{\advance\topsep by0.35cm\relax\small - }% - {\par\vfil\null\endtitlepage} -\else - \renewenvironment{abstract}{% - \if@twocolumn - \section*{\abstractname}% - \else - \small - \begin{center}% - {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}% - \end{center}% - \quotation - \noindent % HWL - \ignorespaces % jg - %\list{}{\advance\topsep by0.35cm\relax\small - \fi} - {\if@twocolumn\else\endquotation\fi} -\fi % titlepage - -\fi % book - -%@node Quotation, Institute environment, Abstract, Modified macros and environments -%@subsection Quotation - -% HWL: 4mm indent for quotation like environments -\renewenvironment{verse} - {\let\\\@centercr - \list{}{\itemsep \z@ - \itemindent 0pt% - \leftmargin 4mm % - \listparindent\itemindent - \rightmargin \leftmargin - \advance\leftmargin 1.5em}% - \item\relax} - {\endlist} -\renewenvironment{quotation} - {\list{}{\listparindent 0pt% - \itemindent \listparindent - \leftmargin 4mm - \rightmargin \leftmargin - \parsep \z@ \@plus\p@}% - \item\relax} - {\endlist} -\renewenvironment{quote} - {\list{}{\listparindent 0pt - \leftmargin \parindent %% HWL: same indentation as para - \rightmargin\leftmargin}% - \item\relax} - {\endlist} - -%@node Institute environment, Figures, Quotation, Modified macros and environments -%@subsection Institute environment - -%% Taken from llncs.cls - -% LaTeX does not provide a command to enter the authors institute -% addresses. The \institute command is defined here. - -\newdimen\headlineindent % dimension for space between -\headlineindent=1.166cm % number and text of headings. - -\newcounter{@inst} -\newcounter{@auth} -\newcounter{auco} -\def\andname{and} -\def\lastandname{\unskip, and} -\newdimen\instindent -\newbox\authrun -\newtoks\authorrunning -\newtoks\tocauthor -\newbox\titrun -\newtoks\titlerunning -\newtoks\toctitle - -\def\clearheadinfo{\gdef\@author{No Author Given}% - \gdef\@title{No Title Given}% - \gdef\@subtitle{}% - \gdef\@institute{No Institute Given}% - \gdef\@thanks{}% - \global\titlerunning={}\global\authorrunning={}% - \global\toctitle={}\global\tocauthor={}} - -\def\institute#1{{\gdef\@institute{#1}}} - -\def\institutename{\par - \begingroup - \parskip=\z@ - \parindent=\z@ - \setcounter{@inst}{1}% - \def\and{\par\stepcounter{@inst}% - \noindent$^{\the@inst}$\enspace\ignorespaces}% - \setbox0=\vbox{\def\thanks##1{}\@institute}% - \ifnum\c@@inst=1\relax - \else - \setcounter{footnote}{\c@@inst}% - \setcounter{@inst}{1}% - \noindent$^{\the@inst}$\enspace - \fi - \ignorespaces - \@institute\par - \endgroup} - -\def\@fnsymbol#1{\ensuremath{\ifcase#1\or\star\or{\star\star}\or - {\star\star\star}\or \dagger\or \ddagger\or - \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger - \or \ddagger\ddagger \else\@ctrerr\fi}} - -\def\inst#1{\unskip$^{#1}$} -\def\fnmsep{\unskip$^,$} -\def\email#1{{\tt#1}} -\def\url#1{#1} -\def\homedir{\~{ }} - -\def\subtitle#1{\gdef\@subtitle{#1}} -\clearheadinfo - -\if@book - -% with book option use the titlepage layout from book.cls - -\def\logointellect{\LARGE{\bf intellect}$^{\Large \rm \sc tm}$} - -\renewcommand\maketitle{\par - \begingroup - \renewcommand\thefootnote{\@fnsymbol\c@footnote}% - \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% - \long\def\@makefntext##1{\parindent 1em\noindent - \hb@xt@1.8em{% - \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% - \if@twocolumn - \ifnum \col@number=\@ne - \@maketitle - \else - \twocolumn[\@maketitle]% - \fi - \else - \newpage - \global\@topnum\z@ % Prevents figures from going at top of page. - \@maketitle - \fi - \if@pagenumbers - \thispagestyle{plain}\@thanks % HWL: plain pagestyle with funnynumbers - \else - \thispagestyle{empty}\@thanks % HWL: empty pagestyle for titlepage - \fi - \endgroup - \setcounter{footnote}{0}% - \global\let\thanks\relax - \global\let\maketitle\relax - \global\let\@maketitle\relax - \global\let\@thanks\@empty - \global\let\@author\@empty - \global\let\@date\@empty - \global\let\@title\@empty - \global\let\title\relax - \global\let\author\relax - \global\let\date\relax - \global\let\and\relax -} - -\def\@maketitle{% - \newpage - \null - \vskip 2em% - \begin{center}% - \let \footnote \thanks - {\Huge \@title \par}% - \vskip 1.5em% - {\Large - \lineskip .5em% - \begin{tabular}[t]{c}% - \@author - \end{tabular}\par}% - \vskip 1em% - {\Large \@date}% - \par% - \vfill% - %STG removed PostScript file inclusion - %\psfig{width=4cm,file=sfp.ps}% - %\vskip 1.5em - \vfill% - {\centering \logointellect}% - \end{center}% - % \begin{tabular}[t]{c} \logointellect \end{tabular}} -} -\else - -% without book option (i.e. article style) use an llncs-like layout - -\renewcommand\maketitle{\newpage - \stepcounter{section}% - \setcounter{section}{0}% - \setcounter{subsection}{0}% - \setcounter{figure}{0} - \setcounter{table}{0} - \setcounter{equation}{0} - \setcounter{footnote}{0}% - \begingroup - \parindent=\z@ - \renewcommand\thefootnote{\@fnsymbol\c@footnote}% - \if@twocolumn - \ifnum \col@number=\@ne - \@maketitle - \else - \twocolumn[\@maketitle]% - \fi - \else - \newpage - \global\@topnum\z@ % Prevents figures from going at top of page. - \@maketitle - \fi - \if@pagenumbers - \thispagestyle{plain}\@thanks % HWL: page numbering for titlepage - \else - \thispagestyle{empty}\@thanks % HWL: page numbering for titlepage - \fi -% - \def\\{\unskip\ \ignorespaces}\def\inst##1{\unskip{}}% - \def\thanks##1{\unskip{}}\def\fnmsep{\unskip}% - \instindent=\hsize - \advance\instindent by-\headlineindent - \if!\the\toctitle!\addcontentsline{toc}{title}{\@title}\else - \addcontentsline{toc}{title}{\the\toctitle}\fi -% - \if!\the\tocauthor!\relax - {\def\and{\noexpand\protect\noexpand\and}% - \protected@xdef\toc@uthor{\@author}}% - \else - \def\\{\noexpand\protect\noexpand\newline}% - \protected@xdef\scratch{\the\tocauthor}% - \protected@xdef\toc@uthor{\scratch}% - \fi - \addtocontents{toc}{{\protect\raggedright\protect\leftskip15\p@ - \protect\rightskip\@tocrmarg - \protect\itshape\toc@uthor\protect\endgraf}}% - \endgroup - \setcounter{footnote}{0}% - \clearheadinfo} -% -\def\@maketitle{\newpage - \markboth{}{}% - \def\lastand{\ifnum\value{@inst}=2\relax - \unskip{} \andname\ - \else - \unskip \lastandname\ - \fi}% - \def\and{\stepcounter{@auth}\relax - \ifnum\value{@auth}=\value{@inst}% - \lastand - \else - \unskip, - \fi}% - \begin{center}% - {\Large \bfseries\boldmath - \pretolerance=10000 - \@title \par}\vskip .8cm -\if!\@subtitle!\else {\large \bfseries\boldmath - \vskip -.65cm - \pretolerance=10000 - \@subtitle \par}\vskip .8cm\fi - \setbox0=\vbox{\setcounter{@auth}{1}\def\and{\stepcounter{@auth}}% - \def\thanks##1{}\@author}% - \global\value{@inst}=\value{@auth}% - \global\value{auco}=\value{@auth}% - \setcounter{@auth}{1}% -{\lineskip .5em -\noindent\ignorespaces -\@author\vskip.35cm} - {\small\institutename} - \end{center}% - } -\fi % book -%% end llncs.cls - -% %% variables normally set in llnc.cls (using default values) -% ToDo: check whether we can use the same defs as below -% HWL: actually theorem-like envs are numbered: . -%=:-( \if@book -%=:-( \let\if@envcntreset\iffalse -%=:-( \let\if@envcntsect\iffalse -%=:-( \let\if@envcntsame\iffalse -%=:-( \else -% variables normally set in llnc.cls (using default values) -\let\if@envcntreset\iffalse -\let\if@envcntsect\iffalse -\let\if@envcntsame\iftrue -%=:-(\fi % book - -\if@llncs - -%% LLNCS style environments - -% definition of the "\spnewtheorem" command. -% -% Usage: -% -% \spnewtheorem{env_nam}{caption}[within]{cap_font}{body_font} -% or \spnewtheorem{env_nam}[numbered_like]{caption}{cap_font}{body_font} -% or \spnewtheorem*{env_nam}{caption}{cap_font}{body_font} -% -% New is "cap_font" and "body_font". It stands for -% fontdefinition of the caption and the text itself. -% -% "\spnewtheorem*" gives a theorem without number. -% -% A defined spnewthoerem environment is used as described -% by Lamport. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\def\@thmcountersep{} -\def\@thmcounterend{.} - -\def\spnewtheorem{\@ifstar{\@sthm}{\@Sthm}} - -% definition of \spnewtheorem with number - -\def\@spnthm#1#2{% - \@ifnextchar[{\@spxnthm{#1}{#2}}{\@spynthm{#1}{#2}}} -\def\@Sthm#1{\@ifnextchar[{\@spothm{#1}}{\@spnthm{#1}}} - -\def\@spxnthm#1#2[#3]#4#5{\expandafter\@ifdefinable\csname #1\endcsname - {\@definecounter{#1}\@addtoreset{#1}{#3}% - \expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand - \csname the#3\endcsname \noexpand\@thmcountersep \@thmcounter{#1}}% - \expandafter\xdef\csname #1name\endcsname{#2}% - \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% - \global\@namedef{end#1}{\@endtheorem}}} - -\def\@spynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname - {\@definecounter{#1}% - \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}% - \expandafter\xdef\csname #1name\endcsname{#2}% - \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#3}{#4}}% - \global\@namedef{end#1}{\@endtheorem}}} - -\def\@spothm#1[#2]#3#4#5{% - \@ifundefined{c@#2}{\@latexerr{No theorem environment `#2' defined}\@eha}% - {\expandafter\@ifdefinable\csname #1\endcsname - {\global\@namedef{the#1}{\@nameuse{the#2}}% - \expandafter\xdef\csname #1name\endcsname{#3}% - \global\@namedef{#1}{\@spthm{#2}{\csname #1name\endcsname}{#4}{#5}}% - \global\@namedef{end#1}{\@endtheorem}}}} - -\def\@spthm#1#2#3#4{\topsep 7\p@ \@plus2\p@ \@minus4\p@ -\refstepcounter{#1}% -\@ifnextchar[{\@spythm{#1}{#2}{#3}{#4}}{\@spxthm{#1}{#2}{#3}{#4}}} - -\def\@spxthm#1#2#3#4{\@spbegintheorem{#2}{\csname the#1\endcsname}{#3}{#4}% - \ignorespaces} - -\def\@spythm#1#2#3#4[#5]{\@spopargbegintheorem{#2}{\csname - the#1\endcsname}{#5}{#3}{#4}\ignorespaces} - -\def\@spbegintheorem#1#2#3#4{\trivlist - \item[\hskip\labelsep{#3#1\ #2\@thmcounterend}]#4} - -\def\@spopargbegintheorem#1#2#3#4#5{\trivlist - \item[\hskip\labelsep{#4#1\ #2}]{#4(#3)\@thmcounterend\ }#5} - -% definition of \spnewtheorem* without number - -\def\@sthm#1#2{\@Ynthm{#1}{#2}} - -\def\@Ynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname - {\global\@namedef{#1}{\@Thm{\csname #1name\endcsname}{#3}{#4}}% - \expandafter\xdef\csname #1name\endcsname{#2}% - \global\@namedef{end#1}{\@endtheorem}}} - -\def\@Thm#1#2#3{\topsep 7\p@ \@plus2\p@ \@minus4\p@ -\@ifnextchar[{\@Ythm{#1}{#2}{#3}}{\@Xthm{#1}{#2}{#3}}} - -\def\@Xthm#1#2#3{\@Begintheorem{#1}{#2}{#3}\ignorespaces} - -\def\@Ythm#1#2#3[#4]{\@Opargbegintheorem{#1} - {#4}{#2}{#3}\ignorespaces} - -\def\@Begintheorem#1#2#3{#3\trivlist - \item[\hskip\labelsep{#2#1\@thmcounterend}]} - -\def\@Opargbegintheorem#1#2#3#4{#4\trivlist - \item[\hskip\labelsep{#3#1}]{#3(#2)\@thmcounterend\ }} - -\if@envcntsect - \def\@thmcountersep{.} - \spnewtheorem{theorem}{Theorem}[section]{\bfseries}{\itshape} -\else - \spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape} - \if@envcntreset - \@addtoreset{theorem}{section} - \else - \@addtoreset{theorem}{chapter} - \fi -\fi - -%definition of divers theorem environments -\spnewtheorem*{claim}{Claim}{\itshape}{\rmfamily} -\spnewtheorem*{proof}{Proof}{\itshape}{\rmfamily} -\if@envcntsame % alle Umgebungen wie Theorem. - \def\spn@wtheorem#1#2#3#4{\@spothm{#1}[theorem]{#2}{#3}{#4}} -\else % alle Umgebungen mit eigenem Zaehler - \if@envcntsect % mit section numeriert - \def\spn@wtheorem#1#2#3#4{\@spxnthm{#1}{#2}[chapter]{#3}{#4}} % HWL: was [section] - \else % nicht mit section numeriert - \if@envcntreset - \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} - \@addtoreset{#1}{section}} - \else - \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} - \@addtoreset{#1}{chapter}}% - \fi - \fi -\fi -\spn@wtheorem{case}{Case}{\itshape}{\rmfamily} -\spn@wtheorem{conjecture}{Conjecture}{\itshape}{\rmfamily} -\spn@wtheorem{corollary}{Corollary}{\bfseries}{\itshape} -\spn@wtheorem{definition}{Definition}{\bfseries}{\itshape} -\spn@wtheorem{example}{Example}{\itshape}{\rmfamily} -\spn@wtheorem{exercise}{Exercise}{\itshape}{\rmfamily} -\spn@wtheorem{lemma}{Lemma}{\bfseries}{\itshape} -\spn@wtheorem{note}{Note}{\itshape}{\rmfamily} -\spn@wtheorem{problem}{Problem}{\itshape}{\rmfamily} -\spn@wtheorem{property}{Property}{\itshape}{\rmfamily} -\spn@wtheorem{proposition}{Proposition}{\bfseries}{\itshape} -\spn@wtheorem{question}{Question}{\itshape}{\rmfamily} -\spn@wtheorem{solution}{Solution}{\itshape}{\rmfamily} -\spn@wtheorem{remark}{Remark}{\itshape}{\rmfamily} - -%% LLNCS style math symbols - -\DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{"00} -\DeclareMathSymbol{\Delta}{\mathalpha}{letters}{"01} -\DeclareMathSymbol{\Theta}{\mathalpha}{letters}{"02} -\DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{"03} -\DeclareMathSymbol{\Xi}{\mathalpha}{letters}{"04} -\DeclareMathSymbol{\Pi}{\mathalpha}{letters}{"05} -\DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{"06} -\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07} -\DeclareMathSymbol{\Phi}{\mathalpha}{letters}{"08} -\DeclareMathSymbol{\Psi}{\mathalpha}{letters}{"09} -\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A} - -\let\footnotesize\small - -\def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle#1$}} -{\mbox{\boldmath$\textstyle#1$}} -{\mbox{\boldmath$\scriptstyle#1$}} -{\mbox{\boldmath$\scriptscriptstyle#1$}}} - -\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}} -\def\qed{\ifmmode\squareforqed\else{\unskip\nobreak\hfil -\penalty50\hskip1em\null\nobreak\hfil\squareforqed -\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi} - -\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip -\halign{\hfil -$\displaystyle##$\hfil\cr\gets\cr\to\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets -\cr\to\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets -\cr\to\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr -\gets\cr\to\cr}}}}} -\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil -$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr -\noalign{\vskip1.2pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr -\noalign{\vskip1pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr -<\cr -\noalign{\vskip0.9pt}=\cr}}}}} -\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil -$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr -\noalign{\vskip1.2pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr -\noalign{\vskip1pt}=\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr ->\cr -\noalign{\vskip0.9pt}=\cr}}}}} -\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip -\halign{\hfil -$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1pt}<\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr ->\cr\noalign{\vskip-1pt}<\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr ->\cr\noalign{\vskip-0.8pt}<\cr}}} -{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr ->\cr\noalign{\vskip-0.3pt}<\cr}}}}} -\def\bbbr{{\rm I\!R}} %reelle Zahlen -\def\bbbm{{\rm I\!M}} -\def\bbbn{{\rm I\!N}} %natuerliche Zahlen -\def\bbbf{{\rm I\!F}} -\def\bbbh{{\rm I\!H}} -\def\bbbk{{\rm I\!K}} -\def\bbbp{{\rm I\!P}} -\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l} -{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}} -\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox -to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox -to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox -to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox -to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}} -\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm -Q$}\hbox{\raise -0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} -{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise -0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise -0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise -0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}} -\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm -T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox -to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox -to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox -to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}} -\def\bbbs{{\mathchoice -{\setbox0=\hbox{$\displaystyle \rm S$}\hbox{\raise0.5\ht0\hbox -to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox -to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} -{\setbox0=\hbox{$\textstyle \rm S$}\hbox{\raise0.5\ht0\hbox -to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox -to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptstyle \rm S$}\hbox{\raise0.5\ht0\hbox -to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox -to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}} -{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox -to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox -to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}} -\def\bbbz{{\mathchoice {\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} -{\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} -{\hbox{$\mathsf\scriptstyle Z\kern-0.3em Z$}} -{\hbox{$\mathsf\scriptscriptstyle Z\kern-0.2em Z$}}}} - -\else % !llncs - -% NB: no example etc environments - -\fi % llncs - -%% HWL final: same numbering as for figure and table -%% this is a HAAAAAAAAAAAAAACK -%% ToDo: integrate this into definition of the environments above -%\newcounter{figure} -\if@book -\renewcommand \thetheorem - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@theorem} -\else -\def\thetheorem{\@arabic\c@theorem} -\fi - -\if@book -\renewcommand \theexample - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@example} -\else -\def\theexample{\@arabic\c@example} -\fi - -\if@book -\renewcommand \theconjecture - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@conjecture} -\else -\def\theconjecture{\@arabic\c@conjecture} -\fi - -\if@book -\renewcommand \thecorollary - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@corollary} -\else -\def\thecorollary{\@arabic\c@corollary} -\fi - -\if@book -\renewcommand \thedefinition - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@definition} -\else -\def\thedefinition{\@arabic\c@definition} -\fi - -\if@book -\renewcommand \theexercise - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@exercise} -\else -\def\theexercise{\@arabic\c@exercise} -\fi - -\if@book -\renewcommand \thelemma - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@lemma} -\else -\def\thelemma{\@arabic\c@lemma} -\fi - -\if@book -\renewcommand \theproblem - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@problem} -\else -\def\theproblem{\@arabic\c@problem} -\fi - -\if@book -\renewcommand \theproperty - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@property} -\else -\def\theproperty{\@arabic\c@property} -\fi - -\if@book -\renewcommand \theproposition - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@proposition} -\else -\def\theproposition{\@arabic\c@proposition} -\fi - -\if@book -\renewcommand \thequestion - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@question} -\else -\def\thequestion{\@arabic\c@question} -\fi - -\if@book -\renewcommand \thesolution - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@solution} -\else -\def\thesolution{\@arabic\c@solution} -\fi - -\if@book -\renewcommand \theremark - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@remark} -\else -\def\theremark{\@arabic\c@remark} -\fi - - -%@node Figures, Tables, Institute environment, Modified macros and environments -%@subsection Figures - -\def\fps@figure{tb} - -\renewcommand{\figurename}{FIGURE~} - -% HWL: whole line bold; extra 4mm space before title -\long\def\@makecaption#1#2{% - \if@tfpsymp - \small \bfseries % HWL: 12pt bold in tfpsymp - \else - \bibsize \bfseries % HWL: 9pt bold - \fi - \vskip\abovecaptionskip - \sbox\@tempboxa{#1.\negthinspace\hspace{4mm}#2} - \ifdim \wd\@tempboxa >\hsize - #1.\negthinspace\hspace{4mm}#2\par - \else - \global \@minipagefalse - \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% - \fi - \vskip\belowcaptionskip} - -%\newcounter{figure} -\if@book -\renewcommand \thefigure - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@figure} -\else -\def\thefigure{\@arabic\c@figure} -\fi - -\def\fps@figure{tb} -\def\ftype@figure{1} -\def\ext@figure{lof} -\def\fnum@figure{\figurename~\thefigure} -\def\figure{\@float{figure}} -\let\endfigure\end@float -%\@namedef{figure*}{\@dblfloat{figure}} -%\@namedef{endfigure*}{\end@dblfloat} - -\renewenvironment{figure} - {% - \setlength\abovecaptionskip{\baselineskip}% - \setlength\belowcaptionskip{\baselineskip}% - \@float{figure}} - {\end@float} -\renewenvironment{figure*} - {% - \setlength\abovecaptionskip{\baselineskip}% - \setlength\belowcaptionskip{\baselineskip}% - \@dblfloat{figure}} - {\end@dblfloat} - -%@node Tables, Footnotes, Figures, Modified macros and environments -%@subsection Tables - -\renewcommand{\tablename}{TABLE~} - -\def\fps@table{tb} -\def\fnum@table{\tablename\thetable} -% \def\@maketable#1#2{% -% \setlength\abovecaptionskip{\baselineskip} \setlength\belowcaptionskip{\baselineskip} \@float{table}[#1] #2 \end@float} - -% \long\def\@caption#1[#2]#3{\par\addcontentsline{\csname -% ext@#1\endcsname}{#1}{\protect\numberline{\csname -% the#1\endcsname}{\ignorespaces #2}}\begingroup -% \@parboxrestore -% \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par -% \endgroup} - - -% \newcounter{table} -% %\renewcommand\thetable{\@arabic\c@table} -\if@book -\renewcommand \thetable - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@table} -\else -\def\thetable{\@arabic\c@table} -\fi -\def\fps@table{tb} -\def\ftype@table{2} -\def\ext@table{lot} -\def\fnum@table{\tablename~\thetable} - -\renewenvironment{table} - { % - \setlength\abovecaptionskip{\baselineskip}% - \setlength\belowcaptionskip{\baselineskip}% - \@float{table}[tb] - \if@tfpsymp - \normalsize - \else - \tablesize - \fi} - {\end@float} -\renewenvironment{table*} - {% - \setlength\abovecaptionskip{\baselineskip}% - \setlength\belowcaptionskip{\baselineskip}% - \@dblfloat{table}[tb] - \if@tfpsymp - \normalsize - \else - \tablesize - \fi} - {\end@dblfloat} - -%@node Footnotes, , Tables, Modified macros and environments -%@subsection Footnotes - -\renewcommand\@makefntext[1]{% - %\parindent 1em% - \noindent - \raggedright % HWL: no line filling in footnotes - \hb@xt@1.8em{\hss\@makefnmark}#1} - -%@node Misc, Pagestyle etc, Modified macros and environments -%@section Misc - -% % from grasp.sty -% \newcommand{\smiley}{% -% \hbox{$\bigcirc\mskip-13.3mu{}^{..} -% \mskip-11mu\scriptscriptstyle\smile\ $}} -% \newcommand{\frowney}{% -% \hbox{$\bigcirc\mskip-13.3mu{}^{..} -% \mskip-11mu\scriptscriptstyle\frown\ $}} - - -%@node Pagestyle etc, , Misc -%@section Pagestyle etc - -\if@book - -\def\chapauthors#1{ - \gdef\@chapauthors{#1}% - \vspace{-1cm}% - %% Should add contents line here; currently has to be done inlined in text - %%\addcontentsline{toc}{}% - %% {\protect\numberline{\it #1}}% - %%\addcontentsline{toc}{}{\@chapauthors}% - {\large \@chapauthors}% - } - -\def\chapauthorstoc#1{\addtocontents{toc}{\hspace{-0cm}\protect{\it #1}}} - -%\def\chapauthorstoc#1{\addtocontents{toc}{\hspace{\bonzowidth}\protect{\it #1}}} - -\def\wstitle#1{\gdef\@wstitle{#1}} -\def\chaptitle#1{\gdef\@chaptitle{#1}} - -\def\ps@sfpheadings{% - \let\@oddfoot\@empty\let\@evenfoot\@empty - \def\@evenhead{\thepage\hfil\@wstitle}% - %\def\@oddhead{\@chaptitle\hfil\thepage}% - \def\@oddhead{\@chapapp\ \thechapter. \@chaptitle\hfil\thepage}% - \let\@mkboth\@gobbletwo - \let\chaptermark\@gobble - \let\sectionmark\@gobble - } - -\def\ps@frontheadings{% - \let\@oddfoot\@empty\let\@evenfoot\@empty - \def\@evenhead{\thepage\hfil\@wstitle} - \def\@oddhead{\@chaptitle\hfil\thepage} - \let\@mkboth\@gobbletwo - \let\chaptermark\@gobble - \let\sectionmark\@gobble - } - -\renewcommand\frontmatter{% -%=:-( \if@openright -%=:-( \cleardoublepage -%=:-( \else -%=:-( \clearpage -%=:-( \fi - \@mainmatterfalse - \pagenumbering{roman} - \pagestyle{frontheadings}} - -\renewcommand\mainmatter{% -%=:-( \if@openright -%=:-( \cleardoublepage -%=:-( \else -%=:-( \clearpage -%=:-( \fi - \@mainmattertrue - \pagenumbering{arabic} - \pagestyle{sfpheadings}} - -% similar to frontmatter but with arabic page numbers -\renewcommand\backmatter{% -%=:-( \if@openright -%=:-( \cleardoublepage -%=:-( \else -%=:-( \clearpage -%=:-( \fi - \@mainmatterfalse - \pagenumbering{arabic} - \pagestyle{frontheadings}} - -%% from book.cls: -\renewcommand\part{% -%=:-( \if@openright -%=:-( \cleardoublepage -%=:-( \else -%=:-( \clearpage -%=:-( \fi -%=:-( \thispagestyle{plain}% - \if@twocolumn - \onecolumn - \@tempswatrue - \else - \@tempswafalse - \fi - \null\vfil - \secdef\@part\@spart} - -\def\@part[#1]#2{% - \ifnum \c@secnumdepth >-2\relax - \refstepcounter{part}% - \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% - \else - \addcontentsline{toc}{part}{#1}% - \fi - \markboth{}{}% - {\centering - \interlinepenalty \@M - \normalfont - \ifnum \c@secnumdepth >-2\relax - \huge\bfseries \partname~\thepart - \par - \vskip 20\p@ - \fi - \Huge \bfseries #2\par}% - \@endpart} -\def\@spart#1{% - {\centering - \interlinepenalty \@M - \normalfont - \Huge \bfseries #1\par}% - \@endpart} -\def\@endpart{\vfil %% \newpage -- HWL: no pagebreak with part env - \if@twoside - \null - \thispagestyle{empty}% - %%\newpage - \fi - \if@tempswa - \twocolumn - \fi} - -\fi % book - -% % \if@titlepage -% % \renewcommand\maketitle{\begin{titlepage}% -% % \let\footnotesize\small -% % \let\footnoterule\relax -% % \let \footnote \thanks -% % \null\vfil -% % \vskip 60\p@ -% % \begin{center}% -% % {\LARGE \@title \par}% -% % \vskip 3em% -% % {\large -% % \lineskip .75em% -% % \begin{tabular}[t]{c}% -% % \@author -% % \end{tabular}\par}% -% % \vskip 1.5em% -% % {\large \@date \par}% % Set date in \large size. -% % \end{center}\par -% % \@thanks -% % \vfil\null -% % \end{titlepage}% -% % \setcounter{footnote}{0}% -% % \global\let\thanks\relax -% % \global\let\maketitle\relax -% % \global\let\@thanks\@empty -% % \global\let\@author\@empty -% % \global\let\@date\@empty -% % \global\let\@title\@empty -% % \global\let\title\relax -% % \global\let\author\relax -% % \global\let\date\relax -% % \global\let\and\relax -% % } -% % \else -% % \renewcommand\maketitle{\par -% % \begingroup -% % \renewcommand\thefootnote{\@fnsymbol\c@footnote}% -% % \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% -% % \long\def\@makefntext##1{\parindent 1em\noindent -% % \hb@xt@1.8em{% -% % \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% -% % \if@twocolumn -% % \ifnum \col@number=\@ne -% % \@maketitle -% % \else -% % \twocolumn[\@maketitle]% -% % \fi -% % \else -% % \newpage -% % \global\@topnum\z@ % Prevents figures from going at top of page. -% % \@maketitle -% % \fi -% % \thispagestyle{plain}\@thanks -% % \endgroup -% % \setcounter{footnote}{0}% -% % \global\let\thanks\relax -% % \global\let\maketitle\relax -% % \global\let\@maketitle\relax -% % \global\let\@thanks\@empty -% % \global\let\@author\@empty -% % \global\let\@date\@empty -% % \global\let\@title\@empty -% % \global\let\title\relax -% % \global\let\author\relax -% % \global\let\date\relax -% % \global\let\and\relax -% % } -% % % \def\@maketitle{% -% % % \newpage -% % % \null -% % % \vskip 2em% -% % % \begin{center}% -% % % \let \footnote \thanks -% % % {\LARGE \@title \par}% -% % % \vskip 1.5em% -% % % {\large -% % % \lineskip .5em% -% % % \begin{tabular}[t]{c}% -% % % \@author -% % % \end{tabular}\par}% -% % % \vskip 1em% -% % % {\large \@date}% -% % % \end{center}% -% % % \par -% % % \vskip 1.5em} -% % % \fi - -\normalsize - -% book uses \frontmatter etc to set headings correctly -\if@tfpsymp - -\if@pagenumbers - -\pagestyle{plain} - -% Pagenumbering for tfpsymp papers is: Paper.no.(roman)-Page.no. (e.g. VII-1) -\newcounter{paper} -\def\@FP#1{\@Roman \c@paper--\@arabic #1} -\pagenumbering{FP} - -%% NB: The following line has to be inserted at the beginning of each paper!! -%\setcounter{paper}{1009} - -\else - -\pagestyle{empty} - -\fi - -\else - -\pagestyle{empty} - -\fi - -%% This is now defined in \mainmatter -% \if@book -% % with the book option we want headings otherwise we don't -% \pagestyle{sfpheadings} -% \else -% \pagestyle{empty} -% \fi - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/article.tex b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/article.tex deleted file mode 100755 index 6808479906..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/article.tex +++ /dev/null @@ -1,367 +0,0 @@ -\documentclass[a4paper,12pt]{article} - -\usepackage[utf8]{inputenc} -\usepackage{fullpage,url} -\usepackage{algorithm} -\usepackage{algorithmic} -\usepackage{listings} -\usepackage{amssymb,amsmath,amsthm} -\usepackage{color} - -\title{A Formal Proof of Bellman-Ford Algorithm} -\author{Yuto Takei \\ The University of Tokyo } - -\lstdefinelanguage{Why3} -{ -basicstyle=\ttfamily, -keywordstyle=\color{blue}, -morekeywords=[1]{inductive,predicate,function,goal,type,use,import,theory,end,in,axiom,lemma,export,forall,constant,module,let,exception,match,with,exists},% -%keywordstyle=[1]{\color{red}},% -morekeywords=[2]{true,false},% -%keywordstyle=[2]{\color{blue}},% -otherkeywords={},% -commentstyle=\itshape,% -columns=[l]fullflexible,% -sensitive=true,% -morecomment=[s]{(*}{*)},% -escapeinside={*?}{?*},% -keepspaces=true, -literate=% -{'a}{$\alpha$}{1}% -{'b}{$\beta$}{1}% -{<}{$<$}{1}% -{>}{$>$}{1}% -{<=}{$\le$}{1}% -{>=}{$\ge$}{1}% -{<>}{$\ne$}{1}% -{/\\}{$\land$}{1}% -{\\/}{ $\lor$ }{3}% -{\ or(}{ $\lor$(}{3}% -{not\ }{$\lnot$ }{1}% -{not(}{$\lnot$(}{1}% -{->}{$\rightarrow$}{2}% -{<->}{$\leftrightarrow$}{2}% -} - -\lstnewenvironment{why3} -{\lstset{language=Why3}} -{} - -\newcommand{\edgen}[3]{#1\rightarrow_{#3}#2} -\newcommand{\pathn}[3]{#1\rightarrow^\star_{#3}#2} - -\begin{document} - -\maketitle - -\begin{abstract} - This is the abstract. -\end{abstract} - -\section{Introduction} - -I want to \emph{emphasize} a word. - -\section{Bellman-Ford Algorithm} - -The Bellman-Ford algorithm is one of the algorithms to solve the -single-source shortest paths problem, i.e., to give the shortest paths -to all vertices from one given source vertex. To solve such a problem, -Dijkstra's algorithm is widely known as an effective solution, yet it -assums edges to have non-negative length. The Bellman-Ford algorithm -relaxed such the assumption and is able to compute the solution for -directed graphs with edges that have negative length. - -However on the other hand, if the graph contains a cycle whose total -length of involving edges is negative, it may cause an inability to -compute the shortest paths. This is only limited to the case such a -negative-cylce is reachable from the given source, and the -Bellman-Ford algorithm detects and reports it without failure. - -Now we give the formal description of the single-source shortest -paths. It is given as a triple $ (G,s,l) $, where $ G $ represents a -directed graph $ G=(V,E) $, $ s \in V $ is a source vertex, and $ l : -E \rightarrow \mathbf{R} $ gives the length for all edges. The goal -for this problem is either to produce the shortest path tree from $ s -$ or to prove that there is a negative-cycle reachable from $ s $. - -The listing \ref{alg:bf} shows the psuedocode of the Bellman-Ford -algorithm \cite[p.~532]{algo}. - -\newcommand{\initBF}{\ensuremath{\mbox{\sc Initialize-Single-Source}}} -\newcommand{\relaxBF}{\ensuremath{\mbox{\sc Relax}}} -\newcommand{\mainBF}{\ensuremath{\mbox{\sc Bellman-Ford}}} - -\begin{algorithm} -\caption{$ \initBF (G,s) $} -\begin{algorithmic}[1] -\FORALL{ vertex $ v \in V[G] $} -\STATE{$ d[v] \leftarrow \infty $} -\STATE{$ \pi [v] \leftarrow nil $} -\ENDFOR -\STATE{$ d[s] \leftarrow 0 $} -\end{algorithmic} -\end{algorithm} - -\begin{algorithm} -\caption{$ \relaxBF (u,v,l) $} -\begin{algorithmic}[1] -\IF{$ d[v]>d[u]+l(u,v) $} -\STATE{$ d[v] \leftarrow d[u]+l(u,v) $} -\STATE{$ \pi [v] \leftarrow u $} -\ENDIF -\end{algorithmic} -\end{algorithm} - -\begin{algorithm} -\caption{$ \mainBF (G,s,l) $}\label{alg:bf} -\begin{algorithmic}[1] -\STATE{$ \initBF (G,s) $} -\FOR{$i = 1 \to |V[G]|-1 $} -\FORALL{ edge $ (u,v) \in E[G] $} -\STATE{$ \relaxBF (u,v,l) $} -\ENDFOR -\ENDFOR -\FORALL{edge $ (u,v)\in E[G] $} -\IF{$ d[v]>d[u]+l(u,v) $} -\RETURN{False} -\ENDIF -\ENDFOR -\RETURN{True} -\end{algorithmic} -\end{algorithm} - - -\section{Quick Overview of Why3} - -Why3 is a software verification platfrom that enables one to describe -the algorithm properties by first-order logic. Its important feature -is the ability to separate the logical statements from programs -\cite{boogie11why3}. - -\subsection{Logic} - -Logic component is described by set of theories that contains the -definition of data types, their characteristics as either an axiom or -a lemma, and predicates (or functions if returns non-Boolean) upon the -given arguments. - -\paragraph {[TODO: align the following paragraphs]} - -\emph{Types.} Types are either a non-interpreted abstract type or an -algebraic type with polymorphism supported. - -\emph{Predicates and functions.} Predicate takes any number of -arguments with the above type and returns a Boolean value. Function -plays the same role but returns non-Boolean values. They are strictly -typed before verification and recognized its recursiveness. The other -important things is that the termination of them is guaranteed by the -automated check of the structural decreasing of arguments. - -\emph{Inductive predicates.} Inductive predicate is provided as an -other option to declare predicates. It is described by the set of -conditional clauses where the predicate holds, and defined as the -minimum predicate that all of them hold. - -\subsection{Program} - -Program component takes over the similar syntax as Objective Caml -\ref{ocaml}, but we define conditions of the program additionally. - -\emph{Pre-condition and post-condition.} Pre-condition is the -assumption that the algorithm makes prior to its execution, and the -post-condition is the result the aglrotihm ensures after its -execution. It is often useful to describe the effect of the -algorithm. One should give the most strict statement for -pre-condition, and the most general statement for post-condition. - -\emph{Loop variant.} Variant expression is used to guarantees the -terminability of recursive calls or loops. One must give an arbitral -integral expression for it, which necessarily decreases in the certain -sequential operations. With the assumption that the given expression -remains positive during the iteration, and firmly decreases at every -step, Why3 guarantees that the iteration will eventually terminate. - -(TODO: Insertion of small example) - - -\section{Formal Proof} - -\subsection{Specification} - -Proving the algorithm first starts by providing the specification of -the algorithm. It should be minimal yet comprehensive to define the -behavior of algorithm and should be clearly distinguished from the -proofs. We now present minimal logical properties of graph data -structure as prerequisites for Bellman-For algorithm, and then -introduce those of the algorithm itself. - -\subsubsection{Graph} - -In order to show the correctness of algorithms that make use of graph -data structure, it is neccesary to define the characteristics of graph -itself in purely logical way. There are several ways to represent the -graph for formal verification. - -\begin{enumerate} - -\item Defining the logical functions, which give the set of vertices, - successors to each of them, and weight between one vertex and - another. Note that the verification context encapsulate the actual - graph and thus the algorithm should obtain it by calling those - global functions. - -\item Passing the graph as one of the input parameters for the - algorithm. Although this structure is more natural in practical - implementation, one must pass the graph to all involving - sub-functions as a parameter and describe the desired property of it - as a pre-condition for them. - -\end{enumerate} - -Note that both of above will eventually result in the similar -proof. For the simplicity in this paper, we choose the first method. - -Considering the Bellman-Ford algorithm, one must give the formal -definition of the path with the given length. We define such the path -by inductive manner. Let $\edgen{v_1}{v_2}{n}$ denote the existence of -the edge between $ v_1 $ and $ v_2 $ with the length $ n $, and $ \to -^* $ represent the transitive closure of $ \to $; then following two -properties are introduced. - -\begin{displaymath} - \frac{} - {\pathn{v}{v}{0}} - \qquad\qquad - \frac{\pathn{v_1}{v_2}{m} \qquad \edgen{v_2}{v_3}{n}} - {\pathn{v_1}{v_3}{m+n}} -\end{displaymath} - -(\textbf{TODO:} My arrow is so ugly... $ \stackrel{m+n}{\longrightarrow^*} $) - -After introducing the predicate for the path existence between certain -vertices, one can immediately precise that the property of the -shortest path from $ v_1 $ to $ v_2 $ with length $ n $, i.e., to -assert that there are no path shorter than $ n $ connecting $ v_1 $ to -$ v_2 $. Moreover, if no such path exists from $ v_1 $ to $ v_2 $, it -is suffice to say that there is no $ n $, which is the length between -those vertices. - -With the specification in Why3 syntax, the formulation above is -expressed as in the listing~\ref{lst:why_graph}. Here all graph -structures and predicates are packed in the theory \mbox{\sc - Graph}. Vertices are given as a global constant set namely \mbox{\sc - vertices}, and edges and their weights are given by global functions -\mbox{\sc succ} and \mbox{\sc weight} respectively. - -\begin{algorithm} -\caption{Definition of graph in logical way}\label{lst:why_graph} -\begin{why3}[1] -theory Graph - use export int.Int - use export set.Fset - - type vertex - constant vertices : set vertex - function succ vertex : set vertex - function weight vertex vertex : int - - inductive path (v1 v2: vertex) (n: int) = - | path_empty: - forall v: vertex. path v v 0 - | path_succ: - forall v1 v2 v3: vertex, n: int. - path v1 v2 n -> mem v3 (succ v2) -> path v1 v3 (n + weight v2 v3) - - predicate shortest_path (v1 v2: vertex) (n: int) = - path v1 v2 n /\ - forall m: int. m < n -> not (path v1 v2 m) - - predicate no_path (v1 v2: vertex) = - forall n: int. not (path v1 v2 n) -end -\end{why3} -\end{algorithm} - -\subsubsection{Bellman-Ford algorithm} - -Now we discuss the foundamental characteristics of Bellman-Ford -algorithm. They consists of precondition, postcondition and -terminability of the algorithm, and we aim to describe it by utilizing -Hoare logic. - -Although the psuedocode of Bellman-Ford algorithm in listing -\ref{alg:bf} returns an Boolean value and modify the distance and -parent mappings in imperatiev manner, we slightly change the format -for practical implementation in O'Caml and let it return a mapping -from vertex to shortest-distances rather than the indication of the -existence of negative-cycle. Additionally, we raise an exception in -presence of the negative-cycle. - -As a result, our implementation will be a function that takes the -source vertex $ s $ as a single argument, and either returns the -mapping from $ v $ to \mbox{\sc int} for shortest paths, or raise an -exception indicating the presence of a negative cycle. Now we adapt -algorithmic characteristic into the implementation above. - -\emph{Precondition.} The only requirement is that the source vertex $ -s $ given must be contained in the graph $ G $, which is described by -the theory \mbox{\sc Graph}. - -\emph{Postcondition.} If algorithm returns the value without the -exception, the resulting mapping at the key $ v $ should give the -length of the shortest path from $ s $ to $ v $. The existence of such -a path is indicated by the algebraic type, which either has a finite -integer value or an inifinity. With the exception returned, there -exists at least one negative-cycle. - -\emph{Terminability.} (TODO) - -Note that the case without the exception, one does not need to assert -the graph to be free of negative-cycle. - - - - - - - - -\begin{algorithm} -\caption{Specification of Bellman-Ford algorithm}\label{lst:why_bf} -\begin{why3}[1] -module BellmanFord - use import map.Map - use import Graph - - type dist = Finite int | Infinite - type distmap = map vertex dist - - exception NegativeCycle - - let bellman_ford (s: vertex) : distmap = - { mem s vertices } - (* ... actual implementation comes here ... *) - { forall v: vertex. mem v vertices -> - match result[v] with - | Finite n -> shortest_path s v n - | Infinite -> no_path s v - end } - | NegativeCycle -> - { exists v: vertex. mem v vertices /\ - exists n: int. n < 0 /\ path v v n } -end -\end{why3} -\end{algorithm} - - - - -\subsection{Proof} - -\section{Conclusion} - -\bibliographystyle{plain} -\bibliography{./biblio} - -\end{document} diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf.mlw b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf.mlw deleted file mode 100755 index 50b368a957..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf.mlw +++ /dev/null @@ -1,207 +0,0 @@ - -(* A proof of Bellman-Ford algorithm - - By Yuto Takei (University of Tokyo, Japan) - and Jean-Christophe Filliâtre (CNRS, France). *) - -theory Graph - - use export list.Length - use export int.Int - use export set.Fset - - (* the graph is defined by a set of vertices and a set of edges *) - type vertex - constant vertices: set vertex - constant edges: set (vertex, vertex) - - predicate edge (x y: vertex) = mem (x,y) edges - - (* edges are well-formed *) - axiom edges_def: - forall x y: vertex. - mem (x, y) edges -> mem x vertices /\ mem y vertices - - (* a single source vertex s is given *) - constant s: vertex - axiom s_in_graph: mem s vertices - - (* hence vertices is non empty *) - lemma vertices_cardinal_pos: cardinal vertices > 0 - - (* paths *) - clone export graph.IntPathWeight - with type vertex = vertex, predicate edge = edge - - lemma path_in_vertices: - forall v1 v2: vertex, l: list vertex. - mem v1 vertices -> path v1 l v2 -> mem v2 vertices - - (* A key idea behind Bellman-Ford's correctness is that of simple path: - if there is a path from s to v, there is a path with less than - |V| edges. We formulate this in a slightly more precise way: if there - a path from s to v with at least |V| edges, then there must be a duplicate - vertex along this path. There is a subtlety here: since the last vertex - of a path is not part of the vertex list, we distinguish the case where - the duplicate vertex is the final vertex v. - - Proof: Assume [path s l v] with length l >= |V|. - Consider the function f mapping i in {0..|V|} to the i-th element - of the list l ++ [v]. Since all elements of the - path (those in l and v) belong to V, then by the pigeon hole principle, - f cannot be injective from 0..|V| to V. Thus there exist two distinct - i and j in 0..|V| such that f(i)=f(j), which means that - l ++ [v] = l1 ++ [u] ++ l2 ++ [u] ++ l3 - Two cases depending on l3=[] (and thus u=v) conclude the proof. Qed. - *) - lemma long_path_decomposition: - forall l: list vertex, v: vertex. - path s l v -> length l >= cardinal vertices -> - (exists l1 l2: list vertex. l = l1 ++ Cons v l2) - \/ (exists n: vertex, l1 l2 l3: list vertex. - l = l1 ++ Cons n (l2 ++ Cons n l3)) - - lemma simple_path: - forall v: vertex, l: list vertex. path s l v -> - exists l': list vertex. path s l' v /\ length l' < cardinal vertices - - (* negative cycle [v] -> [v] reachable from [s] *) - predicate negative_cycle (v: vertex) = - mem v vertices /\ - (exists l1: list vertex. path s l1 v) /\ - (exists l2: list vertex. path v l2 v /\ path_weight l2 v < 0) - - (* key lemma for existence of a negative cycle - - Proof: by induction on the (list) length of the shorter path l - If length l < cardinal vertices, then it contradicts hypothesis 1 - thus length l >= cardinal vertices and thus the path contains a cycle - s ----> n ----> n ----> v - If the weight of the cycle n--->n is negative, we are done. - Otherwise, we can remove this cycle from the path and we get - an even shorter path, with a stricltly shorter (list) length, - thus we can apply the induction hypothesis. Qed. - *) - lemma key_lemma_1: - forall v: vertex, n: int. - (* if any simple path has weight at least n *) - (forall l: list vertex. - path s l v -> length l < cardinal vertices -> path_weight l v >= n) -> - (* and if there exists a shorter path *) - (exists l: list vertex. path s l v /\ path_weight l v < n) -> - (* then there exists a nagtive cycle *) - exists u: vertex. negative_cycle u - -end - -module BellmanFord - - use import map.Map - use import Graph - use int.IntInf as D - - use import module ref.Ref - use module impset.Impset as S - - type distmap = map vertex D.t - - function initialize_single_source (s: vertex) : distmap = - (const D.Infinite)[s <- D.Finite 0] - - (* [inv1 m pass via] means that we already performed [pass-1] steps - of the main loop, and, in step [pass], we already processed edges - in [via] *) - predicate inv1 (m: distmap) (pass: int) (via: set (vertex, vertex)) = - forall v: vertex. mem v vertices -> - match m[v] with - | D.Finite n -> - (* there exists a path of weight [n] *) - (exists l: list vertex. path s l v /\ path_weight l v = n) /\ - (* there is no shorter path in less than [pass] steps *) - (forall l: list vertex. - path s l v -> length l < pass -> path_weight l v >= n) /\ - (* and no shorter path in i steps with last edge in [via] *) - (forall u: vertex, l: list vertex. - path s l u -> length l < pass -> mem (u,v) via -> - path_weight l u + weight u v >= n) - | D.Infinite -> - (* any path has at least [pass] steps *) - (forall l: list vertex. path s l v -> length l >= pass) /\ - (* [v] cannot be reached by [(u,v)] in [via] *) - (forall u: vertex. mem (u,v) via -> (*m[u] = D.Infinite*) - forall lu: list vertex. path s lu u -> length lu >= pass) - end - - predicate inv2 (m: distmap) (via: set (vertex, vertex)) = - forall u v: vertex. mem (u, v) via -> - D.le m[v] (D.add m[u] (D.Finite (weight u v))) - - (* key lemma for non-existence of a negative cycle - - Proof: let us assume a negative cycle reachable from s, that is - s --...--> x0 --w1--> x1 --w2--> x2 ... xn-1 --wn--> x0 - with w1+w2+...+wn < 0. - Let di be the distance from s to xi as given by map m. - By [inv2 m edges] we have di-1 + wi >= di for all i. - Summing all such inequalities over the cycle, we get - w1+w2+...+wn >= 0 - hence a contradiction. Qed. *) - lemma key_lemma_2: - forall m: distmap. inv1 m (cardinal vertices) empty -> inv2 m edges -> - forall v: vertex. not (negative_cycle v) - - let relax (m: ref distmap) (u v: vertex) (pass: int) - (via: set (vertex, vertex)) = - { 1 <= pass /\ mem (u, v) edges /\ not (mem (u, v) via) /\ - inv1 !m pass via } - let n = D.add !m[u] (D.Finite (weight u v)) in - if D.lt n !m[v] then m := !m[v <- n] - { inv1 !m pass (add (u, v) via) } - - exception NegativeCycle - - let bellman_ford () = - { } - let m = ref (initialize_single_source s) in - for i = 1 to cardinal vertices - 1 do - invariant { inv1 !m i empty } - let es = S.create edges in - while not (S.is_empty es) do - invariant { subset !es edges /\ inv1 !m i (diff edges !es) } - variant { cardinal !es } - let via = diff edges !es in (* ghost *) - let (u, v) = S.pop es in - relax m u v i via - done; - assert { inv1 !m i edges } - done; - assert { inv1 !m (cardinal vertices) empty }; - let es = S.create edges in - while not (S.is_empty es) do - invariant { subset !es edges /\ inv2 !m (diff edges !es) } - variant { cardinal !es } - let (u, v) = S.pop es in - if D.lt (D.add !m[u] (D.Finite (weight u v))) !m[v] then begin - raise NegativeCycle - end - done; - assert { inv2 !m edges }; - !m - { forall v: vertex. mem v vertices -> - match result[v] with - | D.Finite n -> - (exists l: list vertex. path s l v /\ path_weight l v = n) /\ - (forall l: list vertex. path s l v -> path_weight l v >= n) - | D.Infinite -> - (forall l: list vertex. not (path s l v)) - end } - | NegativeCycle -> - { exists v: vertex. negative_cycle v } - -end - -(* -Local Variables: -compile-command: "why3ide bf.mlw" -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_empty_inter_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_empty_inter_1.v deleted file mode 100755 index 5ba16df147..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_empty_inter_1.v +++ /dev/null @@ -1,134 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter take: forall (a:Type), (set a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set a)), (~ (is_empty x)) -> - (mem (take x) x). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Axiom set_empty_union : forall (a:Type), forall (a1:(set a)), ((union a1 - (empty :(set a))) = a1). - -(* Why3 goal *) -Theorem set_empty_inter : forall (a:Type), forall (a1:(set a)), ((inter a1 - (empty :(set a))) = (empty :(set a))). - -intuition. -apply extensionality. -compute. -intuition. - -apply inter_def1 in H. -tauto. - -apply inter_def1. -apply empty_def1 in H. -contradiction. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_empty_inter_2.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_empty_inter_2.v deleted file mode 100755 index 9dc805418d..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_empty_inter_2.v +++ /dev/null @@ -1,146 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Axiom set_empty : forall (a:Type), forall (a1:(set a)), (is_empty a1) <-> - (a1 = (empty :(set a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set a)) (b:(set a)), - ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set a)) (b:(set a)), - ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), ((inter a1 b) = (empty :(set a))) -> ((mem e a1) -> ~ (mem e b)). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Axiom set_empty_union : forall (a:Type), forall (a1:(set a)), ((union a1 - (empty :(set a))) = a1). - -(* Why3 goal *) -Theorem set_empty_inter : forall (a:Type), forall (a1:(set a)), ((inter a1 - (empty :(set a))) = (empty :(set a))). - -intuition. -apply extensionality. -compute. -intuition. - -apply inter_def1 in H. -tauto. - -apply inter_def1. -apply empty_def1 in H. -contradiction. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_empty_union_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_empty_union_1.v deleted file mode 100755 index 8bed89b1ce..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_empty_union_1.v +++ /dev/null @@ -1,132 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter take: forall (a:Type), (set a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set a)), (~ (is_empty x)) -> - (mem (take x) x). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -(* Why3 goal *) -Theorem set_empty_union : forall (a:Type), forall (a1:(set a)), ((union a1 - (empty :(set a))) = a1). - -intuition. -apply extensionality. -compute. -intuition. - -apply union_def1 in H. -destruct H; auto. -apply empty_def1 in H. -contradiction. - -apply union_def1. -tauto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_empty_union_2.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_empty_union_2.v deleted file mode 100755 index d1c950dd1e..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_empty_union_2.v +++ /dev/null @@ -1,144 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Axiom set_empty : forall (a:Type), forall (a1:(set a)), (is_empty a1) <-> - (a1 = (empty :(set a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set a)) (b:(set a)), - ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set a)) (b:(set a)), - ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), ((inter a1 b) = (empty :(set a))) -> ((mem e a1) -> ~ (mem e b)). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -(* Why3 goal *) -Theorem set_empty_union : forall (a:Type), forall (a1:(set a)), ((union a1 - (empty :(set a))) = a1). - -intuition. -apply extensionality. -compute. -intuition. - -apply union_def1 in H. -destruct H; auto. -apply empty_def1 in H. -contradiction. - -apply union_def1. -tauto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_preserve_inter_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_preserve_inter_1.v deleted file mode 100755 index d8693d20c2..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_preserve_inter_1.v +++ /dev/null @@ -1,131 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter take: forall (a:Type), (set a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set a)), (~ (is_empty x)) -> - (mem (take x) x). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -(* Why3 goal *) -Theorem set_preserve_inter : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Require Import Classical. - -intuition. -apply extensionality. -compute. -intuition; apply inter_def1 in H; apply inter_def1; destruct H. - -apply remove_def1 in H. -apply add_def1 in H2. -destruct (classic (e = x)); subst; tauto. - -destruct (classic (e = x)); subst; intuition. -apply remove_def1; intuition. -apply add_def1; intuition. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_preserve_inter_2.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_preserve_inter_2.v deleted file mode 100755 index 9a8e22c253..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_preserve_inter_2.v +++ /dev/null @@ -1,143 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Axiom set_empty : forall (a:Type), forall (a1:(set a)), (is_empty a1) <-> - (a1 = (empty :(set a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set a)) (b:(set a)), - ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set a)) (b:(set a)), - ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), ((inter a1 b) = (empty :(set a))) -> ((mem e a1) -> ~ (mem e b)). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -(* Why3 goal *) -Theorem set_preserve_inter : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Require Import Classical. - -intuition. -apply extensionality. -compute. -intuition; apply inter_def1 in H; apply inter_def1; destruct H. - -apply remove_def1 in H. -apply add_def1 in H2. -destruct (classic (e = x)); subst; tauto. - -destruct (classic (e = x)); subst; intuition. -apply remove_def1; intuition. -apply add_def1; intuition. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_preserve_union_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_preserve_union_1.v deleted file mode 100755 index da84dcbd09..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_preserve_union_1.v +++ /dev/null @@ -1,145 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter take: forall (a:Type), (set a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set a)), (~ (is_empty x)) -> - (mem (take x) x). - -(* Why3 goal *) -Theorem set_preserve_union : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Require Import Classical. - -intuition. -apply extensionality. -compute. -intuition; apply union_def1 in H0; apply union_def1. - -destruct H0. - -apply remove_def1 in H0. -destruct (classic (e = x)); tauto. - -apply add_def1 in H0. -intuition. -subst. -tauto. - -destruct (classic (e = x)). -subst. -right. -apply add_def1. -tauto. - -destruct H0. - -left. -apply remove_def1. -auto. - -right. -apply add_def1. -auto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_preserve_union_2.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_preserve_union_2.v deleted file mode 100755 index 941503a936..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_FSetEx_set_preserve_union_2.v +++ /dev/null @@ -1,157 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Axiom set_empty : forall (a:Type), forall (a1:(set a)), (is_empty a1) <-> - (a1 = (empty :(set a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set a)) (b:(set a)), - ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set a)) (b:(set a)), - ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), ((inter a1 b) = (empty :(set a))) -> ((mem e a1) -> ~ (mem e b)). - -(* Why3 goal *) -Theorem set_preserve_union : forall (a:Type), forall (a1:(set a)) (b:(set a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Require Import Classical. - -intuition. -apply extensionality. -compute. -intuition; apply union_def1 in H0; apply union_def1. - -destruct H0. - -apply remove_def1 in H0. -destruct (classic (e = x)); tauto. - -apply add_def1 in H0. -intuition. -subst. -tauto. - -destruct (classic (e = x)). -subst. -right. -apply add_def1. -tauto. - -destruct H0. - -left. -apply remove_def1. -auto. - -right. -apply add_def1. -auto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_induction_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_induction_1.v deleted file mode 100755 index 80e47984d0..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_induction_1.v +++ /dev/null @@ -1,220 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -(* Why3 assumption *) -Inductive list (a:Type) := - | Nil : list a - | Cons : a -> (list a) -> list a. -Set Contextual Implicit. -Implicit Arguments Nil. -Unset Contextual Implicit. -Implicit Arguments Cons. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint mem1 (a:Type)(x:a) (l:(list a)) {struct l}: Prop := - match l with - | Nil => False - | (Cons y r) => (x = y) \/ (mem1 x r) - end. -Unset Implicit Arguments. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint infix_plpl (a:Type)(l1:(list a)) (l2:(list a)) {struct l1}: (list - a) := - match l1 with - | Nil => l2 - | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) - end. -Unset Implicit Arguments. - -Axiom Append_assoc : forall (a:Type), forall (l1:(list a)) (l2:(list a)) - (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 - l3)) = (infix_plpl (infix_plpl l1 l2) l3)). - -Axiom Append_l_nil : forall (a:Type), forall (l:(list a)), ((infix_plpl l - (Nil :(list a))) = l). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint length (a:Type)(l:(list a)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons _ r) => (1%Z + (length r))%Z - end. -Unset Implicit Arguments. - -Axiom Length_nonnegative : forall (a:Type), forall (l:(list a)), - (0%Z <= (length l))%Z. - -Axiom Length_nil : forall (a:Type), forall (l:(list a)), - ((length l) = 0%Z) <-> (l = (Nil :(list a))). - -Axiom Append_length : forall (a:Type), forall (l1:(list a)) (l2:(list a)), - ((length (infix_plpl l1 l2)) = ((length l1) + (length l2))%Z). - -Axiom mem_append : forall (a:Type), forall (x:a) (l1:(list a)) (l2:(list a)), - (mem1 x (infix_plpl l1 l2)) <-> ((mem1 x l1) \/ (mem1 x l2)). - -Axiom mem_decomp : forall (a:Type), forall (x:a) (l:(list a)), (mem1 x l) -> - exists l1:(list a), exists l2:(list a), (l = (infix_plpl l1 (Cons x l2))). - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> (list vertex) -> Prop := - | path_empty : forall (v:vertex), (mem v vertices) -> (path v (Cons v - (Nil :(list vertex)))) - | path_succ : forall (s1:vertex) (v1:vertex) (l:(list vertex)), (path s1 - (Cons v1 l)) -> forall (v2:vertex), (mem (v1, v2) edges) -> (path s1 - (Cons v2 (Cons v1 l))). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint last(l:(list vertex)) {struct l}: vertex := - match l with - | Nil => s - | (Cons x Nil) => x - | (Cons _ rest) => (last rest) - end. -Unset Implicit Arguments. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint sum(l:(list vertex)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons v2 rest) => - match rest with - | Nil => 0%Z - | (Cons v1 _) => ((weight v1 v2) + (sum rest))%Z - end - end. -Unset Implicit Arguments. - -Parameter p: vertex -> (list vertex) -> Prop. - -(* Why3 goal *) -Theorem induction : forall (s1:vertex), ((path s1 (Cons s1 (Nil :(list - vertex)))) -> (p s1 (Cons s1 (Nil :(list vertex))))) -> ((forall (v:vertex) - (l:(list vertex)), ((path s1 l) -> (p s1 l)) -> ((path s1 (Cons v l)) -> - (p s1 (Cons v l)))) -> ((forall (v:vertex), (mem v vertices) -> (p v - (Cons v (Nil :(list vertex))))) -> forall (l:(list vertex)), (path s1 l) -> - (p s1 l))). -intuition. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_key_lemma_1_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_key_lemma_1_1.v deleted file mode 100755 index 5648da0212..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_key_lemma_1_1.v +++ /dev/null @@ -1,349 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -(* Why3 assumption *) -Inductive list (a:Type) := - | Nil : list a - | Cons : a -> (list a) -> list a. -Set Contextual Implicit. -Implicit Arguments Nil. -Unset Contextual Implicit. -Implicit Arguments Cons. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint length (a:Type)(l:(list a)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons _ r) => (1%Z + (length r))%Z - end. -Unset Implicit Arguments. - -Axiom Length_nonnegative : forall (a:Type), forall (l:(list a)), - (0%Z <= (length l))%Z. - -Axiom Length_nil : forall (a:Type), forall (l:(list a)), - ((length l) = 0%Z) <-> (l = (Nil :(list a))). - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Axiom cardinal1 : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 1%Z) -> forall (x:a), (mem x s) -> (x = (choose s)). - -Parameter nth: forall (a:Type), Z -> (set a) -> a. -Implicit Arguments nth. - -Axiom nth_injective : forall (a:Type), forall (s:(set a)) (i:Z) (j:Z), - ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (((0%Z <= j)%Z /\ - (j < (cardinal s))%Z) -> (((nth i s) = (nth j s)) -> (i = j))). - -Axiom nth_surjective : forall (a:Type), forall (s:(set a)) (x:a), (mem x - s) -> exists i:Z, ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (x = (nth i - s)). - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -(* Why3 assumption *) -Definition edge(x:vertex) (y:vertex): Prop := (mem (x, y) edges). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -Parameter s: vertex. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint infix_plpl (a:Type)(l1:(list a)) (l2:(list a)) {struct l1}: (list - a) := - match l1 with - | Nil => l2 - | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) - end. -Unset Implicit Arguments. - -Axiom Append_assoc : forall (a:Type), forall (l1:(list a)) (l2:(list a)) - (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 - l3)) = (infix_plpl (infix_plpl l1 l2) l3)). - -Axiom Append_l_nil : forall (a:Type), forall (l:(list a)), ((infix_plpl l - (Nil :(list a))) = l). - -Axiom Append_length : forall (a:Type), forall (l1:(list a)) (l2:(list a)), - ((length (infix_plpl l1 l2)) = ((length l1) + (length l2))%Z). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint mem1 (a:Type)(x:a) (l:(list a)) {struct l}: Prop := - match l with - | Nil => False - | (Cons y r) => (x = y) \/ (mem1 x r) - end. -Unset Implicit Arguments. - -Axiom mem_append : forall (a:Type), forall (x:a) (l1:(list a)) (l2:(list a)), - (mem1 x (infix_plpl l1 l2)) <-> ((mem1 x l1) \/ (mem1 x l2)). - -Axiom mem_decomp : forall (a:Type), forall (x:a) (l:(list a)), (mem1 x l) -> - exists l1:(list a), exists l2:(list a), (l = (infix_plpl l1 (Cons x l2))). - -(* Why3 assumption *) -Inductive path : vertex -> (list vertex) -> vertex -> Prop := - | Path_empty : forall (x:vertex), (path x (Nil :(list vertex)) x) - | Path_cons : forall (x:vertex) (y:vertex) (z:vertex) (l:(list vertex)), - (edge x y) -> ((path y l z) -> (path x (Cons x l) z)). - -Axiom path_right_extension : forall (x:vertex) (y:vertex) (z:vertex) (l:(list - vertex)), (path x l y) -> ((edge y z) -> (path x (infix_plpl l (Cons y - (Nil :(list vertex)))) z)). - -Axiom path_right_inversion : forall (x:vertex) (z:vertex) (l:(list vertex)), - (path x l z) -> (((x = z) /\ (l = (Nil :(list vertex)))) \/ - exists y:vertex, exists lqt:(list vertex), (path x lqt y) /\ ((edge y z) /\ - (l = (infix_plpl lqt (Cons y (Nil :(list vertex))))))). - -Axiom path_trans : forall (x:vertex) (y:vertex) (z:vertex) (l1:(list vertex)) - (l2:(list vertex)), (path x l1 y) -> ((path y l2 z) -> (path x - (infix_plpl l1 l2) z)). - -Axiom empty_path : forall (x:vertex) (y:vertex), (path x (Nil :(list vertex)) - y) -> (x = y). - -Axiom path_decomposition : forall (x:vertex) (y:vertex) (z:vertex) (l1:(list - vertex)) (l2:(list vertex)), (path x (infix_plpl l1 (Cons y l2)) z) -> - ((path x l1 y) /\ (path y (Cons y l2) z)). - -Parameter weight: vertex -> vertex -> Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint path_weight(l:(list vertex)) (dst:vertex) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons x Nil) => (weight x dst) - | (Cons x ((Cons y _) as r)) => ((weight x y) + (path_weight r dst))%Z - end. -Unset Implicit Arguments. - -Axiom path_weight_right_extension : forall (x:vertex) (y:vertex) (l:(list - vertex)), ((path_weight (infix_plpl l (Cons x (Nil :(list vertex)))) - y) = ((path_weight l x) + (weight x y))%Z). - -Axiom path_weight_decomposition : forall (y:vertex) (z:vertex) (l1:(list - vertex)) (l2:(list vertex)), ((path_weight (infix_plpl l1 (Cons y l2)) - z) = ((path_weight l1 y) + (path_weight (Cons y l2) z))%Z). - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (l:(list vertex)), - (mem v1 vertices) -> ((path v1 l v2) -> (mem v2 vertices)). - -Axiom long_path_decomposition : forall (l:(list vertex)) (v:vertex), (path s - l v) -> (((cardinal vertices) <= (length l))%Z -> ((exists l1:(list - vertex), (exists l2:(list vertex), (l = (infix_plpl l1 (Cons v l2))))) \/ - exists n:vertex, exists l1:(list vertex), exists l2:(list vertex), - exists l3:(list vertex), (l = (infix_plpl l1 (Cons n (infix_plpl l2 (Cons n - l3))))))). - -Axiom simple_path : forall (v:vertex) (l:(list vertex)), (path s l v) -> - exists lqt:(list vertex), (path s lqt v) /\ - ((length lqt) < (cardinal vertices))%Z. - -(* Why3 assumption *) -Definition negative_cycle(v:vertex): Prop := (mem v vertices) /\ - ((exists l1:(list vertex), (path s l1 v)) /\ exists l2:(list vertex), - (path v l2 v) /\ ((path_weight l2 v) < 0%Z)%Z). - -Require Import Why3. Ltac ae := why3 "alt-ergo". - -(* Why3 goal *) -Theorem key_lemma_1 : forall (v:vertex) (n:Z), (forall (l:(list vertex)), - (path s l v) -> (((length l) < (cardinal vertices))%Z -> - (n <= (path_weight l v))%Z)) -> ((exists l:(list vertex), (path s l v) /\ - ((path_weight l v) < n)%Z) -> exists u:vertex, (negative_cycle u)). -intros v n hpath. -intros (ln, (pathln, lnneg)). -generalize pathln lnneg; clear pathln lnneg. -cut (length ln <= length ln)%Z. 2: omega. -cut (0 <= length ln)%Z. 2: apply Length_nonnegative. -generalize (length ln) at 1 3. -intros z hz; generalize ln. clear ln. -pattern z; apply Z_lt_induction; auto. -clear z hz; intros z IH. -intros ln hlen pathln lnneg. -assert (h: (cardinal vertices <= length ln)%Z) by ae. -destruct (long_path_decomposition ln v pathln h) as - [(l1, (l2, eq)) | (u, (l1, (l2, (l3, eq))))]. -(* s --> v --> v *) -rewrite eq in pathln. -generalize (path_decomposition _ _ _ _ _ pathln). -intros (h1, pathuv). -assert (case: (path_weight (Cons v l2) v < 0 \/ - (path_weight (Cons v l2) v >= 0))%Z) by omega. -destruct case. -exists v; ae. -assert (hpath': path s l1 v) by ae. -assert (length ln = length l1 + 1 + length l2)%Z. - rewrite eq. rewrite Append_length. ae. -assert (0 <= length l2)%Z. - apply Length_nonnegative. -assert (smaller: (0 <= length l1 < z)%Z). - split. apply Length_nonnegative. omega. -apply (IH (length l1) smaller l1); auto. -omega. -clear H0 H1 smaller IH hpath. -assert (path_weight ln v = - path_weight l1 v + path_weight (Cons v l2) v)%Z. - rewrite eq. - rewrite path_weight_decomposition. ae. -ae. -(* s --> u --> u --> v *) -rewrite eq in pathln. -generalize (path_decomposition _ _ _ _ _ pathln). -intros (h1, pathuv). -replace (Cons u (infix_plpl l2 (Cons u l3))) - with (infix_plpl (Cons u l2) (Cons u l3)) in pathuv by ae. -generalize (path_decomposition _ _ _ _ _ pathuv). -intros (h2, pathuv2). -assert (case: (path_weight (Cons u l2) u < 0 \/ - (path_weight (Cons u l2) u >= 0))%Z) by omega. -destruct case. -exists u; ae. -pose (l' := (infix_plpl l1 (Cons u l3))). -assert (hpath': path s l' v) by ae. -assert (length ln = length l1 + 1 + length l2 + 1 + length l3)%Z. - rewrite eq. - repeat rewrite Append_length. - replace (length (Cons u (infix_plpl l2 (Cons u l3)))) - with (1 + length (infix_plpl l2 (Cons u l3)))%Z by ae. - rewrite Append_length. ae. -assert (length l' = length l1 + 1 + length l3)%Z. - subst l'. - rewrite Append_length. - ae. -assert (0 <= length l2)%Z. - apply Length_nonnegative. -assert (smaller: (0 <= length l' < z)%Z). - split. apply Length_nonnegative. omega. -apply (IH (length l') smaller l'); auto. -omega. -clear H0 H1 H2 smaller IH hpath. -assert (path_weight ln v = - path_weight l1 u + path_weight (Cons u l2) u + - path_weight (Cons u l3) v)%Z. - rewrite eq. - rewrite path_weight_decomposition. - replace (Cons u (infix_plpl l2 (Cons u l3))) - with (infix_plpl (Cons u l2) (Cons u l3)) by ae. - rewrite path_weight_decomposition. ae. -assert (path_weight l' v = path_weight l1 u + path_weight (Cons u l3) v)%Z. - ae. -omega. -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_no_path_xor_shortest_path_exists_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_no_path_xor_shortest_path_exists_1.v deleted file mode 100755 index 5287736318..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_no_path_xor_shortest_path_exists_1.v +++ /dev/null @@ -1,182 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -Axiom shortest_path_unique_distance : forall (v:vertex) (n:Z) (d:Z), - (shortest_path s v n d) -> forall (nqt:Z) (dqt:Z), (~ (n = nqt)) -> - ~ (shortest_path s v nqt dqt). - -(* Why3 goal *) -Theorem no_path_xor_shortest_path_exists : (~ (negcycle )) -> - forall (v:vertex), (mem v vertices) -> ((~ exists n:Z, exists d:Z, - (shortest_path s v n d)) -> (no_path s v)). - -admit. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_no_path_xor_shortest_path_exists_2.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_no_path_xor_shortest_path_exists_2.v deleted file mode 100755 index f84e94c2f7..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_no_path_xor_shortest_path_exists_2.v +++ /dev/null @@ -1,182 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -Axiom shortest_path_unique_distance : forall (v:vertex) (n:Z) (d:Z), - (shortest_path s v n d) -> forall (nqt:Z) (dqt:Z), (~ (n = nqt)) -> - ~ (shortest_path s v nqt dqt). - -(* Why3 goal *) -Theorem no_path_xor_shortest_path_exists : (~ (negcycle )) -> - forall (v:vertex), (mem v vertices) -> ((~ exists n:Z, exists d:Z, - (shortest_path s v n d)) -> (no_path s v)). - -admit. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_no_path_xor_shortest_path_exists_3.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_no_path_xor_shortest_path_exists_3.v deleted file mode 100755 index f84e94c2f7..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_no_path_xor_shortest_path_exists_3.v +++ /dev/null @@ -1,182 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -Axiom shortest_path_unique_distance : forall (v:vertex) (n:Z) (d:Z), - (shortest_path s v n d) -> forall (nqt:Z) (dqt:Z), (~ (n = nqt)) -> - ~ (shortest_path s v nqt dqt). - -(* Why3 goal *) -Theorem no_path_xor_shortest_path_exists : (~ (negcycle )) -> - forall (v:vertex), (mem v vertices) -> ((~ exists n:Z, exists d:Z, - (shortest_path s v n d)) -> (no_path s v)). - -admit. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_dep_nonneg_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_dep_nonneg_1.v deleted file mode 100755 index f5663356c8..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_dep_nonneg_1.v +++ /dev/null @@ -1,130 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (v3:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> ((mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z)). - -(* Why3 goal *) -Theorem path_dep_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -induction 1; omega. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_depth_nonneg_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_depth_nonneg_1.v deleted file mode 100755 index 0447c1ea0f..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_depth_nonneg_1.v +++ /dev/null @@ -1,142 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -(* Why3 assumption *) -Inductive simple : vertex -> vertex -> (set vertex) -> Prop := - | simple_zero : forall (v:vertex), (simple v v (empty :(set vertex))) - | simple_one : forall (u:vertex) (v:vertex), (mem (u, v) edges) -> - (simple u v (empty :(set vertex))) - | simple_succ : forall (v1:vertex) (v2:vertex) (via:(set vertex)), - (simple v1 v2 via) -> forall (v3:vertex), (~ (mem v3 via)) -> - ((~ (v1 = v3)) -> ((mem (v2, v3) edges) -> (simple v1 v3 (add v2 - via)))). - -(* Why3 goal *) -Theorem path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -induction 1 ; omega. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_depth_nonneg_2.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_depth_nonneg_2.v deleted file mode 100755 index 2bdfcb9ed2..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_depth_nonneg_2.v +++ /dev/null @@ -1,130 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (v3:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> ((mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z)). - -(* Why3 goal *) -Theorem path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -induction 1 ; omega. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_depth_nonneg_3.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_depth_nonneg_3.v deleted file mode 100755 index 1a944ad7e1..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_depth_nonneg_3.v +++ /dev/null @@ -1,132 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -(* Why3 goal *) -Theorem path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -induction 1 ; omega. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_depth_nonneg_4.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_depth_nonneg_4.v deleted file mode 100755 index 1a944ad7e1..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_depth_nonneg_4.v +++ /dev/null @@ -1,132 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -(* Why3 goal *) -Theorem path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -induction 1 ; omega. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_in_vertices_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_in_vertices_1.v deleted file mode 100755 index c66686976a..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_in_vertices_1.v +++ /dev/null @@ -1,217 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -(* Why3 assumption *) -Inductive list (a:Type) := - | Nil : list a - | Cons : a -> (list a) -> list a. -Set Contextual Implicit. -Implicit Arguments Nil. -Unset Contextual Implicit. -Implicit Arguments Cons. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint mem1 (a:Type)(x:a) (l:(list a)) {struct l}: Prop := - match l with - | Nil => False - | (Cons y r) => (x = y) \/ (mem1 x r) - end. -Unset Implicit Arguments. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint infix_plpl (a:Type)(l1:(list a)) (l2:(list a)) {struct l1}: (list - a) := - match l1 with - | Nil => l2 - | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) - end. -Unset Implicit Arguments. - -Axiom Append_assoc : forall (a:Type), forall (l1:(list a)) (l2:(list a)) - (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 - l3)) = (infix_plpl (infix_plpl l1 l2) l3)). - -Axiom Append_l_nil : forall (a:Type), forall (l:(list a)), ((infix_plpl l - (Nil :(list a))) = l). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint length (a:Type)(l:(list a)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons _ r) => (1%Z + (length r))%Z - end. -Unset Implicit Arguments. - -Axiom Length_nonnegative : forall (a:Type), forall (l:(list a)), - (0%Z <= (length l))%Z. - -Axiom Length_nil : forall (a:Type), forall (l:(list a)), - ((length l) = 0%Z) <-> (l = (Nil :(list a))). - -Axiom Append_length : forall (a:Type), forall (l1:(list a)) (l2:(list a)), - ((length (infix_plpl l1 l2)) = ((length l1) + (length l2))%Z). - -Axiom mem_append : forall (a:Type), forall (x:a) (l1:(list a)) (l2:(list a)), - (mem1 x (infix_plpl l1 l2)) <-> ((mem1 x l1) \/ (mem1 x l2)). - -Axiom mem_decomp : forall (a:Type), forall (x:a) (l:(list a)), (mem1 x l) -> - exists l1:(list a), exists l2:(list a), (l = (infix_plpl l1 (Cons x l2))). - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> (list vertex) -> Prop := - | path_empty : forall (v:vertex), (mem v vertices) -> (path v (Cons v - (Nil :(list vertex)))) - | path_succ : forall (s1:vertex) (v1:vertex) (l:(list vertex)), (path s1 - (Cons v1 l)) -> forall (v2:vertex), (mem (v1, v2) edges) -> (path s1 - (Cons v2 (Cons v1 l))). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint last(l:(list vertex)) {struct l}: vertex := - match l with - | Nil => s - | (Cons x Nil) => x - | (Cons _ rest) => (last rest) - end. -Unset Implicit Arguments. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint sum(l:(list vertex)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons v2 rest) => - match rest with - | Nil => 0%Z - | (Cons v1 _) => ((weight v1 v2) + (sum rest))%Z - end - end. -Unset Implicit Arguments. - -Axiom path_last_elem_equal : forall (s1:vertex) (l:(list vertex)), (path s1 - l) -> ((last l) = s1). - -(* Why3 goal *) -Theorem path_in_vertices : forall (s1:vertex) (l:(list vertex)), (path s1 - l) -> forall (v:vertex), (mem1 v l) -> (mem v vertices). -intuition. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_in_vertices_2.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_in_vertices_2.v deleted file mode 100755 index afe689c96c..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_in_vertices_2.v +++ /dev/null @@ -1,243 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -(* Why3 assumption *) -Inductive list (a:Type) := - | Nil : list a - | Cons : a -> (list a) -> list a. -Set Contextual Implicit. -Implicit Arguments Nil. -Unset Contextual Implicit. -Implicit Arguments Cons. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint length (a:Type)(l:(list a)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons _ r) => (1%Z + (length r))%Z - end. -Unset Implicit Arguments. - -Axiom Length_nonnegative : forall (a:Type), forall (l:(list a)), - (0%Z <= (length l))%Z. - -Axiom Length_nil : forall (a:Type), forall (l:(list a)), - ((length l) = 0%Z) <-> (l = (Nil :(list a))). - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Axiom cardinal1 : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 1%Z) -> forall (x:a), (mem x s) -> (x = (choose s)). - -Parameter nth: forall (a:Type), Z -> (set a) -> a. -Implicit Arguments nth. - -Axiom nth_injective : forall (a:Type), forall (s:(set a)) (i:Z) (j:Z), - ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (((0%Z <= j)%Z /\ - (j < (cardinal s))%Z) -> (((nth i s) = (nth j s)) -> (i = j))). - -Axiom nth_surjective : forall (a:Type), forall (s:(set a)) (x:a), (mem x - s) -> exists i:Z, ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (x = (nth i - s)). - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -(* Why3 assumption *) -Definition edge(x:vertex) (y:vertex): Prop := (mem (x, y) edges). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -Parameter s: vertex. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint infix_plpl (a:Type)(l1:(list a)) (l2:(list a)) {struct l1}: (list - a) := - match l1 with - | Nil => l2 - | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) - end. -Unset Implicit Arguments. - -Axiom Append_assoc : forall (a:Type), forall (l1:(list a)) (l2:(list a)) - (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 - l3)) = (infix_plpl (infix_plpl l1 l2) l3)). - -Axiom Append_l_nil : forall (a:Type), forall (l:(list a)), ((infix_plpl l - (Nil :(list a))) = l). - -Axiom Append_length : forall (a:Type), forall (l1:(list a)) (l2:(list a)), - ((length (infix_plpl l1 l2)) = ((length l1) + (length l2))%Z). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint mem1 (a:Type)(x:a) (l:(list a)) {struct l}: Prop := - match l with - | Nil => False - | (Cons y r) => (x = y) \/ (mem1 x r) - end. -Unset Implicit Arguments. - -Axiom mem_append : forall (a:Type), forall (x:a) (l1:(list a)) (l2:(list a)), - (mem1 x (infix_plpl l1 l2)) <-> ((mem1 x l1) \/ (mem1 x l2)). - -Axiom mem_decomp : forall (a:Type), forall (x:a) (l:(list a)), (mem1 x l) -> - exists l1:(list a), exists l2:(list a), (l = (infix_plpl l1 (Cons x l2))). - -(* Why3 assumption *) -Inductive path : vertex -> (list vertex) -> vertex -> Prop := - | Path_empty : forall (x:vertex), (path x (Nil :(list vertex)) x) - | Path_cons : forall (x:vertex) (y:vertex) (z:vertex) (l:(list vertex)), - (edge x y) -> ((path y l z) -> (path x (Cons x l) z)). - -Axiom path_right_extension : forall (x:vertex) (y:vertex) (z:vertex) (l:(list - vertex)), (path x l y) -> ((edge y z) -> (path x (infix_plpl l (Cons y - (Nil :(list vertex)))) z)). - -Axiom path_right_inversion : forall (x:vertex) (z:vertex) (l:(list vertex)), - (path x l z) -> (((x = z) /\ (l = (Nil :(list vertex)))) \/ - exists y:vertex, exists lqt:(list vertex), (path x lqt y) /\ ((edge y z) /\ - (l = (infix_plpl lqt (Cons y (Nil :(list vertex))))))). - -Axiom path_trans : forall (x:vertex) (y:vertex) (z:vertex) (l1:(list vertex)) - (l2:(list vertex)), (path x l1 y) -> ((path y l2 z) -> (path x - (infix_plpl l1 l2) z)). - -Axiom empty_path : forall (x:vertex) (y:vertex), (path x (Nil :(list vertex)) - y) -> (x = y). - -Parameter weight: vertex -> vertex -> Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint path_weight(l:(list vertex)) (dst:vertex) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons x Nil) => (weight x dst) - | (Cons x ((Cons y _) as r)) => ((weight x y) + (path_weight r dst))%Z - end. -Unset Implicit Arguments. - -Axiom path_weight_right_extension : forall (x:vertex) (y:vertex) (l:(list - vertex)), ((path_weight (infix_plpl l (Cons x (Nil :(list vertex)))) - y) = ((path_weight l x) + (weight x y))%Z). - -(* Why3 goal *) -Theorem path_in_vertices : forall (v1:vertex) (v2:vertex) (l:(list vertex)), - (mem v1 vertices) -> ((path v1 l v2) -> (mem v2 vertices)). -induction 2; intuition. -apply IHpath. -generalize (edges_def x y H0); intuition. -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_last_elem_equal_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_last_elem_equal_1.v deleted file mode 100755 index 6c01f38634..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_last_elem_equal_1.v +++ /dev/null @@ -1,223 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -(* Why3 assumption *) -Inductive list (a:Type) := - | Nil : list a - | Cons : a -> (list a) -> list a. -Set Contextual Implicit. -Implicit Arguments Nil. -Unset Contextual Implicit. -Implicit Arguments Cons. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint mem1 (a:Type)(x:a) (l:(list a)) {struct l}: Prop := - match l with - | Nil => False - | (Cons y r) => (x = y) \/ (mem1 x r) - end. -Unset Implicit Arguments. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint infix_plpl (a:Type)(l1:(list a)) (l2:(list a)) {struct l1}: (list - a) := - match l1 with - | Nil => l2 - | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) - end. -Unset Implicit Arguments. - -Axiom Append_assoc : forall (a:Type), forall (l1:(list a)) (l2:(list a)) - (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 - l3)) = (infix_plpl (infix_plpl l1 l2) l3)). - -Axiom Append_l_nil : forall (a:Type), forall (l:(list a)), ((infix_plpl l - (Nil :(list a))) = l). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint length (a:Type)(l:(list a)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons _ r) => (1%Z + (length r))%Z - end. -Unset Implicit Arguments. - -Axiom Length_nonnegative : forall (a:Type), forall (l:(list a)), - (0%Z <= (length l))%Z. - -Axiom Length_nil : forall (a:Type), forall (l:(list a)), - ((length l) = 0%Z) <-> (l = (Nil :(list a))). - -Axiom Append_length : forall (a:Type), forall (l1:(list a)) (l2:(list a)), - ((length (infix_plpl l1 l2)) = ((length l1) + (length l2))%Z). - -Axiom mem_append : forall (a:Type), forall (x:a) (l1:(list a)) (l2:(list a)), - (mem1 x (infix_plpl l1 l2)) <-> ((mem1 x l1) \/ (mem1 x l2)). - -Axiom mem_decomp : forall (a:Type), forall (x:a) (l:(list a)), (mem1 x l) -> - exists l1:(list a), exists l2:(list a), (l = (infix_plpl l1 (Cons x l2))). - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> (list vertex) -> Prop := - | path_empty : forall (v:vertex), (mem v vertices) -> (path v (Cons v - (Nil :(list vertex)))) - | path_succ : forall (s1:vertex) (v1:vertex) (l:(list vertex)), (path s1 - (Cons v1 l)) -> forall (v2:vertex), (mem (v1, v2) edges) -> (path s1 - (Cons v2 (Cons v1 l))). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint last(l:(list vertex)) {struct l}: vertex := - match l with - | Nil => s - | (Cons x Nil) => x - | (Cons _ rest) => (last rest) - end. -Unset Implicit Arguments. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint sum(l:(list vertex)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons v2 rest) => - match rest with - | Nil => 0%Z - | (Cons v1 _) => ((weight v1 v2) + (sum rest))%Z - end - end. -Unset Implicit Arguments. - -Parameter p: vertex -> (list vertex) -> Prop. - -Axiom induction : forall (s1:vertex), ((path s1 (Cons s1 (Nil :(list - vertex)))) -> (p s1 (Cons s1 (Nil :(list vertex))))) -> ((forall (v:vertex) - (l:(list vertex)), ((path s1 l) -> (p s1 l)) -> ((path s1 (Cons v l)) -> - (p s1 (Cons v l)))) -> ((forall (v:vertex), (mem v vertices) -> (p v - (Cons v (Nil :(list vertex))))) -> forall (l:(list vertex)), (path s1 l) -> - (p s1 l))). - -(* Why3 goal *) -Theorem path_last_elem_equal : forall (s1:vertex) (l:(list vertex)), (path s1 - l) -> ((last l) = s1). -intuition. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_pred_existence_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_pred_existence_1.v deleted file mode 100755 index 9518d3de4b..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_pred_existence_1.v +++ /dev/null @@ -1,142 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (v3:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> ((mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z)). - -Axiom path_dep_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 - v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom reach_empty : forall (v1:vertex) (v2:vertex) (n:Z), ((mem v1 - vertices) /\ (mem v2 vertices)) -> ((path v1 v2 n 0%Z) -> ((v1 = v2) /\ - (n = 0%Z))). - -(* Why3 goal *) -Theorem path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, v3) edges) /\ - (path v1 v2 (n - (weight v2 v3))%Z d). -intros. -inversion H. - - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_trans_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_trans_1.v deleted file mode 100755 index bf079219d6..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_trans_1.v +++ /dev/null @@ -1,176 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -(* Why3 assumption *) -Inductive simple : vertex -> vertex -> (set vertex) -> Prop := - | simple_zero : forall (v:vertex), (simple v v (empty :(set vertex))) - | simple_one : forall (u:vertex) (v:vertex), (mem (u, v) edges) -> - (simple u v (empty :(set vertex))) - | simple_succ : forall (v1:vertex) (v2:vertex) (via:(set vertex)), - (simple v1 v2 via) -> forall (v3:vertex), (~ (mem v3 via)) -> - ((~ (v1 = v3)) -> ((mem (v2, v3) edges) -> (simple v1 v3 (add v2 - via)))). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -(* Why3 goal *) -Theorem path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -induction 2. -replace (n1 + 0)%Z with n1 by omega. -replace (d1 + 0)%Z with d1 by omega. -auto. -ring_simplify (n1 + (n + weight v2 v3))%Z. -ring_simplify (d1 + (d + 1))%Z. -apply path_succ; auto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_trans_2.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_trans_2.v deleted file mode 100755 index 1c29534ef3..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_trans_2.v +++ /dev/null @@ -1,164 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (v3:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> ((mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z)). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (m:Z) (dd:Z), (m < n)%Z -> ~ (path v1 v2 m dd). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -(* Why3 goal *) -Theorem path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -induction 2. -replace (n1 + 0)%Z with n1 by omega. -replace (d1 + 0)%Z with d1 by omega. -auto. -ring_simplify (n1 + (n + weight v2 v3))%Z. -ring_simplify (d1 + (d + 1))%Z. -apply path_succ; auto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_trans_3.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_trans_3.v deleted file mode 100755 index 78b7142cbb..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_trans_3.v +++ /dev/null @@ -1,166 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -(* Why3 goal *) -Theorem path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -induction 2. -replace (n1 + 0)%Z with n1 by omega. -replace (d1 + 0)%Z with d1 by omega. -auto. -ring_simplify (n1 + (n + weight v2 v3))%Z. -ring_simplify (d1 + (d + 1))%Z. -apply path_succ; auto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_trans_4.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_trans_4.v deleted file mode 100755 index 78b7142cbb..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_path_trans_4.v +++ /dev/null @@ -1,166 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -(* Why3 goal *) -Theorem path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -induction 2. -replace (n1 + 0)%Z with n1 by omega. -replace (d1 + 0)%Z with d1 by omega. -auto. -ring_simplify (n1 + (n + weight v2 v3))%Z. -ring_simplify (d1 + (d + 1))%Z. -apply path_succ; auto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_less_than_n_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_less_than_n_1.v deleted file mode 100755 index 891b77ac58..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_less_than_n_1.v +++ /dev/null @@ -1,174 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -(* Why3 assumption *) -Inductive simple : vertex -> vertex -> (set vertex) -> Prop := - | simple_zero : forall (v:vertex), (simple v v (empty :(set vertex))) - | simple_one : forall (u:vertex) (v:vertex), (mem (u, v) edges) -> - (simple u v (empty :(set vertex))) - | simple_succ : forall (v1:vertex) (v2:vertex) (via:(set vertex)), - (simple v1 v2 via) -> forall (v3:vertex), (~ (mem v3 via)) -> - ((~ (v1 = v3)) -> ((mem (v2, v3) edges) -> (simple v1 v3 (add v2 - via)))). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -(* Why3 goal *) -Theorem reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -admit. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_less_than_n_2.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_less_than_n_2.v deleted file mode 100755 index 36982b41df..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_less_than_n_2.v +++ /dev/null @@ -1,162 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (v3:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> ((mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z)). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (m:Z) (dd:Z), (m < n)%Z -> ~ (path v1 v2 m dd). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -(* Why3 goal *) -Theorem reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -admit. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_less_than_n_3.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_less_than_n_3.v deleted file mode 100755 index c8e9d926ec..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_less_than_n_3.v +++ /dev/null @@ -1,164 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -(* Why3 goal *) -Theorem reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -admit. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_less_than_n_4.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_less_than_n_4.v deleted file mode 100755 index c8e9d926ec..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_less_than_n_4.v +++ /dev/null @@ -1,164 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -(* Why3 goal *) -Theorem reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -admit. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_most_n_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_most_n_1.v deleted file mode 100755 index 1c33d0faec..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_most_n_1.v +++ /dev/null @@ -1,167 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> ((forall (d:Z) (n:Z), (path v1 v2 n d)) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt)). - -(* Why3 goal *) -Theorem reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). -intuition. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_nonneg_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_nonneg_1.v deleted file mode 100755 index 5cf12830e5..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_nonneg_1.v +++ /dev/null @@ -1,147 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (v3:vertex) (n:Z), (path v1 v2 - n) -> ((mem (v2, v3) edges) -> (path v1 v3 (n + (weight v2 v3))%Z)). - -(* Why3 assumption *) -Inductive reachable : vertex -> Z -> Prop := - | reachable_empty : (reachable s 0%Z) - | reachable_succ : forall (v1:vertex) (v2:vertex) (d:Z), (reachable v1 - d) -> ((mem (v1, v2) edges) -> (reachable v2 (d + 1%Z)%Z)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z): Prop := (path v1 v2 - n) /\ forall (m:Z), (m < n)%Z -> ~ (path v1 v2 m). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z), ~ (path v1 - v2 n). - -(* Why3 goal *) -Theorem reach_nonneg : forall (v:vertex) (d:Z), (mem v vertices) -> - ((reachable v d) -> (0%Z <= d)%Z). - -intros v d h. -induction 1. -omega. -apply edges_def in H0. -intuition. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_not_gte_n_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_not_gte_n_1.v deleted file mode 100755 index bef9298f57..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_reach_not_gte_n_1.v +++ /dev/null @@ -1,171 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> ((forall (d:Z) (n:Z), (path v1 v2 n d)) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt)). - -(* Why3 goal *) -Theorem reach_not_gte_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> ((~ exists dqt:Z, exists nqt:Z, - (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt)) -> ~ forall (d:Z) - (n:Z), (path v1 v2 n d)). - -intuition. -apply H0. -apply reach_less_than_n ; assumption. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_simple_path_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_simple_path_1.v deleted file mode 100755 index cca584d556..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_Graph_simple_path_1.v +++ /dev/null @@ -1,302 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -(* Why3 assumption *) -Inductive list (a:Type) := - | Nil : list a - | Cons : a -> (list a) -> list a. -Set Contextual Implicit. -Implicit Arguments Nil. -Unset Contextual Implicit. -Implicit Arguments Cons. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint length (a:Type)(l:(list a)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons _ r) => (1%Z + (length r))%Z - end. -Unset Implicit Arguments. - -Axiom Length_nonnegative : forall (a:Type), forall (l:(list a)), - (0%Z <= (length l))%Z. - -Axiom Length_nil : forall (a:Type), forall (l:(list a)), - ((length l) = 0%Z) <-> (l = (Nil :(list a))). - -Parameter set : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set a)) (s2:(set a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set a)) (s2:(set a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set a)) (s2:(set a)) - (s3:(set a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set a))). - -Parameter add: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set a) -> (set a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set a) -> (set a) -> (set a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set a)) (s2:(set a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set a))). - -Parameter cardinal: forall (a:Type), (set a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set a)) (s2:(set a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Axiom cardinal1 : forall (a:Type), forall (s:(set a)), - ((cardinal s) = 1%Z) -> forall (x:a), (mem x s) -> (x = (choose s)). - -Parameter nth: forall (a:Type), Z -> (set a) -> a. -Implicit Arguments nth. - -Axiom nth_injective : forall (a:Type), forall (s:(set a)) (i:Z) (j:Z), - ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (((0%Z <= j)%Z /\ - (j < (cardinal s))%Z) -> (((nth i s) = (nth j s)) -> (i = j))). - -Axiom nth_surjective : forall (a:Type), forall (s:(set a)) (x:a), (mem x - s) -> exists i:Z, ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (x = (nth i - s)). - -Parameter vertex : Type. - -Parameter vertices: (set vertex). - -Parameter edges: (set (vertex* vertex)%type). - -(* Why3 assumption *) -Definition edge(x:vertex) (y:vertex): Prop := (mem (x, y) edges). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -Parameter s: vertex. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint infix_plpl (a:Type)(l1:(list a)) (l2:(list a)) {struct l1}: (list - a) := - match l1 with - | Nil => l2 - | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) - end. -Unset Implicit Arguments. - -Axiom Append_assoc : forall (a:Type), forall (l1:(list a)) (l2:(list a)) - (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 - l3)) = (infix_plpl (infix_plpl l1 l2) l3)). - -Axiom Append_l_nil : forall (a:Type), forall (l:(list a)), ((infix_plpl l - (Nil :(list a))) = l). - -Axiom Append_length : forall (a:Type), forall (l1:(list a)) (l2:(list a)), - ((length (infix_plpl l1 l2)) = ((length l1) + (length l2))%Z). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint mem1 (a:Type)(x:a) (l:(list a)) {struct l}: Prop := - match l with - | Nil => False - | (Cons y r) => (x = y) \/ (mem1 x r) - end. -Unset Implicit Arguments. - -Axiom mem_append : forall (a:Type), forall (x:a) (l1:(list a)) (l2:(list a)), - (mem1 x (infix_plpl l1 l2)) <-> ((mem1 x l1) \/ (mem1 x l2)). - -Axiom mem_decomp : forall (a:Type), forall (x:a) (l:(list a)), (mem1 x l) -> - exists l1:(list a), exists l2:(list a), (l = (infix_plpl l1 (Cons x l2))). - -(* Why3 assumption *) -Inductive path : vertex -> (list vertex) -> vertex -> Prop := - | Path_empty : forall (x:vertex), (path x (Nil :(list vertex)) x) - | Path_cons : forall (x:vertex) (y:vertex) (z:vertex) (l:(list vertex)), - (edge x y) -> ((path y l z) -> (path x (Cons x l) z)). - -Axiom path_right_extension : forall (x:vertex) (y:vertex) (z:vertex) (l:(list - vertex)), (path x l y) -> ((edge y z) -> (path x (infix_plpl l (Cons y - (Nil :(list vertex)))) z)). - -Axiom path_right_inversion : forall (x:vertex) (z:vertex) (l:(list vertex)), - (path x l z) -> (((x = z) /\ (l = (Nil :(list vertex)))) \/ - exists y:vertex, exists lqt:(list vertex), (path x lqt y) /\ ((edge y z) /\ - (l = (infix_plpl lqt (Cons y (Nil :(list vertex))))))). - -Axiom path_trans : forall (x:vertex) (y:vertex) (z:vertex) (l1:(list vertex)) - (l2:(list vertex)), (path x l1 y) -> ((path y l2 z) -> (path x - (infix_plpl l1 l2) z)). - -Axiom empty_path : forall (x:vertex) (y:vertex), (path x (Nil :(list vertex)) - y) -> (x = y). - -Axiom path_decomposition : forall (x:vertex) (y:vertex) (z:vertex) (l1:(list - vertex)) (l2:(list vertex)), (path x (infix_plpl l1 (Cons y l2)) z) -> - ((path x l1 y) /\ (path y (Cons y l2) z)). - -Parameter weight: vertex -> vertex -> Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint path_weight(l:(list vertex)) (dst:vertex) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons x Nil) => (weight x dst) - | (Cons x ((Cons y _) as r)) => ((weight x y) + (path_weight r dst))%Z - end. -Unset Implicit Arguments. - -Axiom path_weight_right_extension : forall (x:vertex) (y:vertex) (l:(list - vertex)), ((path_weight (infix_plpl l (Cons x (Nil :(list vertex)))) - y) = ((path_weight l x) + (weight x y))%Z). - -Axiom path_weight_decomposition : forall (y:vertex) (z:vertex) (l1:(list - vertex)) (l2:(list vertex)), ((path_weight (infix_plpl l1 (Cons y l2)) - z) = ((path_weight l1 y) + (path_weight (Cons y l2) z))%Z). - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (l:(list vertex)), - (mem v1 vertices) -> ((path v1 l v2) -> (mem v2 vertices)). - -Axiom long_path_decomposition : forall (l:(list vertex)) (v:vertex), (path s - l v) -> (((cardinal vertices) <= (length l))%Z -> ((exists l1:(list - vertex), (exists l2:(list vertex), (l = (infix_plpl l1 (Cons v l2))))) \/ - exists n:vertex, exists l1:(list vertex), exists l2:(list vertex), - exists l3:(list vertex), (l = (infix_plpl l1 (Cons n (infix_plpl l2 (Cons n - l3))))))). - -Require Import Why3. Ltac ae := why3 "alt-ergo". - -(* Why3 goal *) -Theorem simple_path : forall (v:vertex) (l:(list vertex)), (path s l v) -> - exists lqt:(list vertex), (path s lqt v) /\ - ((length lqt) < (cardinal vertices))%Z. -intros v l. -cut (length l <= length l)%Z. 2: omega. -cut (0 <= length l)%Z. 2: apply Length_nonnegative. -generalize (length l) at 1 3. -intros z hz; generalize l; clear l. -pattern z; apply Z_lt_induction; auto. -clear z hz; intros z IH l hz hpath. -assert (case: (length l < cardinal vertices \/ - cardinal vertices <= length l)%Z) by omega. -destruct case. -exists l; auto. -destruct (long_path_decomposition l v hpath H) as - [(l1, (l2, eq)) | (u, (l1, (l2, (l3, eq))))]. -assert (path s l1 v) by ae. -assert (0 <= length l1 < z)%Z. - split. apply Length_nonnegative. - assert (length l = length l1 + 1 + length l2)%Z. - subst l. rewrite Append_length. ae. - ae. -apply (IH (length l1) H1 l1); auto. omega. - -assert (path s (infix_plpl l1 (Cons u l3)) v). - rewrite eq in hpath. - destruct (path_decomposition _ _ _ _ _ hpath). - replace (Cons u (infix_plpl l2 (Cons u l3))) - with (infix_plpl (Cons u l2) (Cons u l3)) in H1 by ae. - destruct (path_decomposition _ _ _ _ _ H1). - ae. -assert (0 <= length (infix_plpl l1 (Cons u l3)) < z)%Z. - split. apply Length_nonnegative. - rewrite Append_length. - assert (length l = length l1 + 1 + length l2 + 1 + length l3)%Z. - rewrite eq. - rewrite Append_length. - replace (Cons u (infix_plpl l2 (Cons u l3))) - with (infix_plpl (Cons u l2) (Cons u l3))by ae. - rewrite Append_length. ae. - assert (0 <= length l2)%Z by apply Length_nonnegative. ae. -apply (IH (length (infix_plpl l1 (Cons u l3))) H1 (infix_plpl l1 (Cons u l3))). -omega. -assumption. -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFordSoundness_WP_parameter_bellman_ford_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFordSoundness_WP_parameter_bellman_ford_1.v deleted file mode 100755 index c4228ab910..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFordSoundness_WP_parameter_bellman_ford_1.v +++ /dev/null @@ -1,297 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter s: vertex. - -Parameter succ: vertex -> (set1 vertex). - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom succ1 : forall (x:vertex), (mem x vertices) -> forall (y:vertex), - (mem y (succ x)) -> (mem y vertices). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (v3:vertex) (n:Z), (path v1 v2 - n) -> ((mem v3 (succ v2)) -> (path v1 v3 (n + (weight v2 v3))%Z)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z): Prop := (path v1 v2 - n) /\ forall (m:Z), (m < n)%Z -> ~ (path v1 v2 m). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z), ~ (path v1 - v2 n). - -(* Why3 assumption *) -Inductive reachable : vertex -> Z -> Prop := - | reach_empty : (reachable s 0%Z) - | reach_succ : forall (v1:vertex) (v2:vertex) (n:Z), (reachable v1 n) -> - ((mem v2 (succ v1)) -> (reachable v2 (n + 1%Z)%Z)). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition ge(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (ge (max x y) x) /\ (ge (max x y) - y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (ge x (min x y)) /\ (ge y (min x - y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (ge x y) -> ((max x y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (ge y x) -> ((max x y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (ge y x) -> ((min x y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (ge x y) -> ((min x y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (ge x y) -> ((max x y) = (max y - x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (ge x y) -> ((min x y) = (min y - x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition paths(m:(map vertex dist)): Prop := forall (v:vertex), (mem v - vertices) -> match (get m - v) with - | (Finite n) => (path s v n) - | Infinite => True - end. - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (paths (set (const Infinite:(map vertex - dist)) s (Finite 0%Z))). - -Require Import Classical. -unfold paths. -intros. -destruct (classic (v = s)). -rewrite Select_eq. -rewrite H0. -apply path_empty. -auto. -rewrite Select_neq. -rewrite Const. -auto. -auto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_1.v deleted file mode 100755 index a3cac2e89c..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_1.v +++ /dev/null @@ -1,416 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -Axiom shortest_path_unique_distance : forall (v:vertex) (n:Z) (d:Z), - (shortest_path s v n d) -> forall (nqt:Z) (dqt:Z), (~ (n = nqt)) -> - ~ (shortest_path s v nqt dqt). - -Axiom no_path_xor_shortest_path_exists : (~ (negcycle )) -> - forall (v:vertex), (mem v vertices) -> ((no_path s v) <-> ~ exists n:Z, - exists d:Z, (shortest_path s v n d)). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -Axiom set_empty : forall (a:Type), forall (a1:(set1 a)), (is_empty a1) <-> - (a1 = (empty :(set1 a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((inter a1 b) = (empty :(set1 a))) -> ((mem e a1) -> ~ (mem e b)). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Axiom set_empty_union : forall (a:Type), forall (a1:(set1 a)), ((union a1 - (empty :(set1 a))) = a1). - -Axiom set_empty_inter : forall (a:Type), forall (a1:(set1 a)), ((inter a1 - (empty :(set1 a))) = (empty :(set1 a))). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition path_ends_with(v1:vertex) (v2:vertex) (n:Z) (d:Z) (via:(set1 - (vertex* vertex)%type)): Prop := exists u:vertex, (mem (u, v2) via) /\ - (path v1 u (n - (weight u v2))%Z (d - 1%Z)%Z). - -(* Why3 assumption *) -Definition inv1(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> - forall (nqt:Z), (path s v nqt dqt) -> (n <= nqt)%Z) /\ forall (nqt:Z), - (path_ends_with s v nqt pass via) -> (n <= nqt)%Z) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex dist)) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt via) -> - (n <= nqt)%Z - | Infinite => True - end. - -Axiom inv1_next : forall (m:(map vertex dist)) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ((inv1 m d edges) -> (inv1 m (d + 1%Z)%Z - (empty :(set1 (vertex* vertex)%type)))). - -Axiom inv2_shortest : forall (v:vertex), (mem v vertices) -> forall (n:Z), - ((exists d:Z, ((0%Z <= d)%Z /\ (d < (cardinal vertices))%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ - (dqt < (cardinal vertices))%Z) -> forall (nqt:Z), (path s v nqt dqt) -> - (n <= nqt)%Z) /\ forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt - edges) -> (n <= nqt)%Z)) -> exists d:Z, (shortest_path s v n d). - -Axiom path_ends_with_edge_shortest_path : forall (v:vertex) (n:Z), - (forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt edges) -> - (n <= nqt)%Z) -> exists d:Z, (shortest_path s v n d). - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (inv1 (set (const Infinite:(map vertex - dist)) s (Finite 0%Z)) 1%Z (empty :(set1 (vertex* vertex)%type))) -> - ((1%Z <= ((cardinal vertices) - 1%Z)%Z)%Z -> forall (m:(map vertex dist)), - (inv1 m (((cardinal vertices) - 1%Z)%Z + 1%Z)%Z (empty :(set1 (vertex* - vertex)%type))) -> ((inv1 m (cardinal vertices) (empty :(set1 (vertex* - vertex)%type))) -> ((inv2 m (empty :(set1 (vertex* vertex)%type))) -> - forall (es_co:(set1 (vertex* vertex)%type)), forall (es:(set1 (vertex* - vertex)%type)), ((inv2 m es_co) /\ ((infix_eqeq (union es es_co) edges) /\ - (infix_eqeq (inter es es_co) (empty :(set1 (vertex* vertex)%type))))) -> - forall (result:bool), ((result = true) <-> (is_empty es)) -> - ((result = true) -> ((inv2 m edges) -> forall (v:vertex), (mem v - vertices) -> match (get m - v) with - | (Finite n) => exists d:Z, (shortest_path s v n d) - | Infinite => True - end))))). -intuition. - -unfold inv1 in H2. -unfold inv2 in H9. -assert (H12 : mem v vertices) ; auto. -assert (H13 : mem v vertices) ; auto. -apply H2 in H12. -apply H9 in H13. - -destruct (get m v) ; auto. -apply inv2_shortest ; auto. -tauto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_10.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_10.v deleted file mode 100755 index f5708ba075..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_10.v +++ /dev/null @@ -1,463 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -Axiom shortest_path_unique_distance : forall (v:vertex) (n:Z) (d:Z), - (shortest_path s v n d) -> forall (nqt:Z) (dqt:Z), (~ (n = nqt)) -> - ~ (shortest_path s v nqt dqt). - -Axiom no_path_xor_shortest_path_exists : (~ (negcycle )) -> - forall (v:vertex), (mem v vertices) -> ((no_path s v) <-> ~ exists n:Z, - exists d:Z, (shortest_path s v n d)). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -Axiom set_empty : forall (a:Type), forall (a1:(set1 a)), (is_empty a1) <-> - (a1 = (empty :(set1 a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((inter a1 b) = (empty :(set1 a))) -> ((mem e a1) -> ~ (mem e b)). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Axiom set_empty_union : forall (a:Type), forall (a1:(set1 a)), ((union a1 - (empty :(set1 a))) = a1). - -Axiom set_empty_inter : forall (a:Type), forall (a1:(set1 a)), ((inter a1 - (empty :(set1 a))) = (empty :(set1 a))). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition path_ends_with(v1:vertex) (v2:vertex) (n:Z) (d:Z) (via:(set1 - (vertex* vertex)%type)): Prop := exists u:vertex, (mem (u, v2) via) /\ - (path v1 u (n - (weight u v2))%Z (d - 1%Z)%Z). - -(* Why3 assumption *) -Definition inv1(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> - forall (nqt:Z), (path s v nqt dqt) -> (n <= nqt)%Z) /\ forall (nqt:Z), - (path_ends_with s v nqt pass via) -> (n <= nqt)%Z) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex dist)) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt via) -> - (n <= nqt)%Z - | Infinite => True - end. - -Axiom inv1_next : forall (m:(map vertex dist)) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ((inv1 m d edges) -> (inv1 m (d + 1%Z)%Z - (empty :(set1 (vertex* vertex)%type)))). - -Axiom inv2_shortest : forall (v:vertex), (mem v vertices) -> forall (n:Z), - ((exists d:Z, ((0%Z <= d)%Z /\ (d < (cardinal vertices))%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ - (dqt < (cardinal vertices))%Z) -> forall (nqt:Z), (path s v nqt dqt) -> - (n <= nqt)%Z) /\ forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt - edges) -> (n <= nqt)%Z)) -> exists d:Z, (shortest_path s v n d). - -Axiom path_ends_with_edge_shortest_path : forall (v:vertex) (n:Z), - (forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt edges) -> - (n <= nqt)%Z) -> exists d:Z, (shortest_path s v n d). - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (inv1 (set (const Infinite:(map vertex - dist)) s (Finite 0%Z)) 1%Z (empty :(set1 (vertex* vertex)%type))) -> - ((1%Z <= ((cardinal vertices) - 1%Z)%Z)%Z -> forall (m:(map vertex dist)), - (inv1 m (((cardinal vertices) - 1%Z)%Z + 1%Z)%Z (empty :(set1 (vertex* - vertex)%type))) -> ((inv1 m (cardinal vertices) (empty :(set1 (vertex* - vertex)%type))) -> ((inv2 m (empty :(set1 (vertex* vertex)%type))) -> - forall (es_co:(set1 (vertex* vertex)%type)), forall (es:(set1 (vertex* - vertex)%type)), ((inv2 m es_co) /\ ((infix_eqeq (union es es_co) edges) /\ - (infix_eqeq (inter es es_co) (empty :(set1 (vertex* vertex)%type))))) -> - forall (result:bool), ((result = true) <-> (is_empty es)) -> - ((~ (result = true)) -> ((~ (is_empty es)) -> forall (es1:(set1 (vertex* - vertex)%type)), forall (result1:vertex) (result2:vertex), let result3 := ( - result1, result2) in (((mem result3 es) /\ (es1 = (remove result3 es))) -> - ((let pass := (cardinal vertices) in ((mem result2 vertices) -> - match (get m - result2) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s - result2 n d)) /\ forall (dqt:Z), ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> - forall (nqt:Z), (path s result2 nqt dqt) -> (n <= nqt)%Z - | Infinite => forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s result2 n d) - end)) -> ((~ match (get m - result1) with - | Infinite => False - | (Finite x) => match (get m - result2) with - | Infinite => True - | (Finite y) => ((x + (weight result1 result2))%Z < y)%Z - end - end) -> forall (es_co1:(set1 (vertex* vertex)%type)), (es_co1 = (add ( - result1, result2) es_co)) -> (inv2 m es_co1))))))))). - - - -intros _ _ m _ Inv1 _ . -intros esco es [ H1 _ ]. -intros _ _ _ _ es1 r1 r2 r3. -intros H2 H3 h3. -intro esco1. -intro H4. -unfold inv2 in *. -intro v. -intro H5. - -apply H1 in H5. -destruct (get m v) as [] _eqn ; auto. - -intros n d. -unfold path_ends_with in *. -intro H6. -destruct H6 as [ u H6 ]. - -Require Import Classical. -destruct (classic ((u, v) = (r1, r2))). -injection H. -unfold r3 in *; clear r3. -intros; clear H; subst r1 r2. -rename n into n'. -rename z into n. -destruct (get m u) as [] _eqn. -(* get m u = Finite z *) -rewrite Heqd in h3. -generalize (reach_less_than_n s u). - - -(* get m u = Infinite *) - - -apply H5 with (nqt := n) (dqt := d). -exists u. -destruct H6. -split ; try assumption. -subst. -apply add_def1 in H0. -tauto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_11.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_11.v deleted file mode 100755 index 582449ea1d..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_11.v +++ /dev/null @@ -1,458 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -Axiom shortest_path_unique_distance : forall (v:vertex) (n:Z) (d:Z), - (shortest_path s v n d) -> forall (nqt:Z) (dqt:Z), (~ (n = nqt)) -> - ~ (shortest_path s v nqt dqt). - -Axiom no_path_xor_shortest_path_exists : (~ (negcycle )) -> - forall (v:vertex), (mem v vertices) -> ((no_path s v) <-> ~ exists n:Z, - exists d:Z, (shortest_path s v n d)). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -Axiom set_empty : forall (a:Type), forall (a1:(set1 a)), (is_empty a1) <-> - (a1 = (empty :(set1 a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((inter a1 b) = (empty :(set1 a))) -> ((mem e a1) -> ~ (mem e b)). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Axiom set_empty_union : forall (a:Type), forall (a1:(set1 a)), ((union a1 - (empty :(set1 a))) = a1). - -Axiom set_empty_inter : forall (a:Type), forall (a1:(set1 a)), ((inter a1 - (empty :(set1 a))) = (empty :(set1 a))). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition path_ends_with(v1:vertex) (v2:vertex) (n:Z) (d:Z) (via:(set1 - (vertex* vertex)%type)): Prop := exists u:vertex, (mem (u, v2) via) /\ - (path v1 u (n - (weight u v2))%Z (d - 1%Z)%Z). - -(* Why3 assumption *) -Definition inv1(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists d:Z, (path s v n d)) /\ ((forall (dqt:Z), - ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> forall (nqt:Z), (path s v nqt - dqt) -> (n <= nqt)%Z) /\ forall (nqt:Z), (path_ends_with s v nqt pass - via) -> (n <= nqt)%Z) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex dist)) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt via) -> - (n <= nqt)%Z - | Infinite => True - end. - -Axiom inv1_next : forall (m:(map vertex dist)) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ((inv1 m d edges) -> (inv1 m (d + 1%Z)%Z - (empty :(set1 (vertex* vertex)%type)))). - -Axiom inv2_shortest : forall (v:vertex), (mem v vertices) -> forall (n:Z), - ((exists d:Z, ((0%Z <= d)%Z /\ (d < (cardinal vertices))%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ - (dqt < (cardinal vertices))%Z) -> forall (nqt:Z), (path s v nqt dqt) -> - (n <= nqt)%Z) /\ forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt - edges) -> (n <= nqt)%Z)) -> exists d:Z, (shortest_path s v n d). - -Axiom path_ends_with_edge_shortest_path : forall (v:vertex) (n:Z), - (forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt edges) -> - (n <= nqt)%Z) -> exists d:Z, (shortest_path s v n d). - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (inv1 (set (const Infinite:(map vertex - dist)) s (Finite 0%Z)) 1%Z (empty :(set1 (vertex* vertex)%type))) -> - ((((cardinal vertices) - 1%Z)%Z < 1%Z)%Z -> - ((inv1 (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) - (cardinal vertices) (empty :(set1 (vertex* vertex)%type))) -> - ((inv2 (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) - (empty :(set1 (vertex* vertex)%type))) -> forall (es_co:(set1 (vertex* - vertex)%type)), forall (es:(set1 (vertex* vertex)%type)), - ((inv2 (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) es_co) /\ - ((infix_eqeq (union es es_co) edges) /\ (infix_eqeq (inter es es_co) - (empty :(set1 (vertex* vertex)%type))))) -> forall (result:bool), - ((result = true) <-> (is_empty es)) -> ((~ (result = true)) -> - ((~ (is_empty es)) -> forall (es1:(set1 (vertex* vertex)%type)), - forall (result1:vertex) (result2:vertex), let result3 := (result1, - result2) in (((mem result3 es) /\ (es1 = (remove result3 es))) -> - ((let pass := (cardinal vertices) in ((mem result2 vertices) -> - match (get (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) - result2) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s - result2 n d)) /\ forall (dqt:Z), ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> - forall (nqt:Z), (path s result2 nqt dqt) -> (n <= nqt)%Z - | Infinite => forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s result2 n d) - end)) -> (match (get (set (const Infinite:(map vertex dist)) s - (Finite 0%Z)) - result1) with - | Infinite => False - | (Finite x) => match (get (set (const Infinite:(map vertex dist)) s - (Finite 0%Z)) - result2) with - | Infinite => True - | (Finite y) => ((x + (weight result1 result2))%Z < y)%Z - end - end -> match (get (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) - result2) with - | Infinite => False - | (Finite dv) => True - end)))))))). -intuition. -intuition. -subst. - -destruct (get (set (const Infinite) s (Finite 0)) result2); try trivial. -destruct (get (set (const Infinite) s (Finite 0)) result1) as [] _eqn; try contradiction. - -Require Import Classical. -destruct (classic (s = result1)). - -rewrite Select_eq in Heqd. -subst. -admit. -(* -assert (subset es edges). admit. -assert (mem (s, result2) edges). admit. -apply edges_def in H11. -destruct H11 as [ H11 [ H12 H13 ]]. -apply H8. - -apply H8 in H13. - -assert (z = 0)%Z. admit. - - -*) -assumption. - -rewrite Select_neq in Heqd. -rewrite Const in Heqd. -admit. -assumption. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_12.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_12.v deleted file mode 100755 index f60cdaca9a..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_12.v +++ /dev/null @@ -1,416 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -Axiom shortest_path_unique_distance : forall (v:vertex) (n:Z) (d:Z), - (shortest_path s v n d) -> forall (nqt:Z) (dqt:Z), (~ (n = nqt)) -> - ~ (shortest_path s v nqt dqt). - -Axiom no_path_xor_shortest_path_exists : (~ (negcycle )) -> - forall (v:vertex), (mem v vertices) -> ((no_path s v) <-> ~ exists n:Z, - exists d:Z, (shortest_path s v n d)). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -Axiom set_empty : forall (a:Type), forall (a1:(set1 a)), (is_empty a1) <-> - (a1 = (empty :(set1 a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((inter a1 b) = (empty :(set1 a))) -> ((mem e a1) -> ~ (mem e b)). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Axiom set_empty_union : forall (a:Type), forall (a1:(set1 a)), ((union a1 - (empty :(set1 a))) = a1). - -Axiom set_empty_inter : forall (a:Type), forall (a1:(set1 a)), ((inter a1 - (empty :(set1 a))) = (empty :(set1 a))). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition path_ends_with(v1:vertex) (v2:vertex) (n:Z) (d:Z) (via:(set1 - (vertex* vertex)%type)): Prop := exists u:vertex, (mem (u, v2) via) /\ - (path v1 u (n - (weight u v2))%Z (d - 1%Z)%Z). - -(* Why3 assumption *) -Definition inv1(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists d:Z, (path s v n d)) /\ ((forall (dqt:Z), - ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> forall (nqt:Z), (path s v nqt - dqt) -> (n <= nqt)%Z) /\ forall (nqt:Z), (path_ends_with s v nqt pass - via) -> (n <= nqt)%Z) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex dist)) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt via) -> - (n <= nqt)%Z - | Infinite => True - end. - -Axiom inv1_next : forall (m:(map vertex dist)) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ((inv1 m d edges) -> (inv1 m (d + 1%Z)%Z - (empty :(set1 (vertex* vertex)%type)))). - -Axiom inv2_shortest : forall (v:vertex), (mem v vertices) -> forall (n:Z), - ((exists d:Z, ((0%Z <= d)%Z /\ (d < (cardinal vertices))%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ - (dqt < (cardinal vertices))%Z) -> forall (nqt:Z), (path s v nqt dqt) -> - (n <= nqt)%Z) /\ forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt - edges) -> (n <= nqt)%Z)) -> exists d:Z, (shortest_path s v n d). - -Axiom path_ends_with_edge_shortest_path : forall (v:vertex) (n:Z), - (forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt edges) -> - (n <= nqt)%Z) -> exists d:Z, (shortest_path s v n d). - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (inv1 (set (const Infinite:(map vertex - dist)) s (Finite 0%Z)) 1%Z (empty :(set1 (vertex* vertex)%type))) -> - ((1%Z <= ((cardinal vertices) - 1%Z)%Z)%Z -> forall (m:(map vertex dist)), - (inv1 m (((cardinal vertices) - 1%Z)%Z + 1%Z)%Z (empty :(set1 (vertex* - vertex)%type))) -> ((inv1 m (cardinal vertices) (empty :(set1 (vertex* - vertex)%type))) -> ((inv2 m (empty :(set1 (vertex* vertex)%type))) -> - forall (es_co:(set1 (vertex* vertex)%type)), forall (es:(set1 (vertex* - vertex)%type)), ((inv2 m es_co) /\ ((infix_eqeq (union es es_co) edges) /\ - (infix_eqeq (inter es es_co) (empty :(set1 (vertex* vertex)%type))))) -> - forall (result:bool), ((result = true) <-> (is_empty es)) -> - ((result = true) -> ((inv2 m edges) -> forall (v:vertex), (mem v - vertices) -> match (get m - v) with - | (Finite n) => exists d:Z, (shortest_path s v n d) - | Infinite => True - end))))). -intuition. - -unfold inv1 in H2. -unfold inv2 in H9. -assert (H12 : mem v vertices) ; auto. -assert (H13 : mem v vertices) ; auto. -apply H2 in H12. -apply H9 in H13. - -destruct (get m v) ; auto. -apply inv2_shortest ; auto. -tauto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_13.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_13.v deleted file mode 100755 index 582449ea1d..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_13.v +++ /dev/null @@ -1,458 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -Axiom shortest_path_unique_distance : forall (v:vertex) (n:Z) (d:Z), - (shortest_path s v n d) -> forall (nqt:Z) (dqt:Z), (~ (n = nqt)) -> - ~ (shortest_path s v nqt dqt). - -Axiom no_path_xor_shortest_path_exists : (~ (negcycle )) -> - forall (v:vertex), (mem v vertices) -> ((no_path s v) <-> ~ exists n:Z, - exists d:Z, (shortest_path s v n d)). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -Axiom set_empty : forall (a:Type), forall (a1:(set1 a)), (is_empty a1) <-> - (a1 = (empty :(set1 a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((inter a1 b) = (empty :(set1 a))) -> ((mem e a1) -> ~ (mem e b)). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Axiom set_empty_union : forall (a:Type), forall (a1:(set1 a)), ((union a1 - (empty :(set1 a))) = a1). - -Axiom set_empty_inter : forall (a:Type), forall (a1:(set1 a)), ((inter a1 - (empty :(set1 a))) = (empty :(set1 a))). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition path_ends_with(v1:vertex) (v2:vertex) (n:Z) (d:Z) (via:(set1 - (vertex* vertex)%type)): Prop := exists u:vertex, (mem (u, v2) via) /\ - (path v1 u (n - (weight u v2))%Z (d - 1%Z)%Z). - -(* Why3 assumption *) -Definition inv1(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists d:Z, (path s v n d)) /\ ((forall (dqt:Z), - ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> forall (nqt:Z), (path s v nqt - dqt) -> (n <= nqt)%Z) /\ forall (nqt:Z), (path_ends_with s v nqt pass - via) -> (n <= nqt)%Z) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex dist)) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt via) -> - (n <= nqt)%Z - | Infinite => True - end. - -Axiom inv1_next : forall (m:(map vertex dist)) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ((inv1 m d edges) -> (inv1 m (d + 1%Z)%Z - (empty :(set1 (vertex* vertex)%type)))). - -Axiom inv2_shortest : forall (v:vertex), (mem v vertices) -> forall (n:Z), - ((exists d:Z, ((0%Z <= d)%Z /\ (d < (cardinal vertices))%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ - (dqt < (cardinal vertices))%Z) -> forall (nqt:Z), (path s v nqt dqt) -> - (n <= nqt)%Z) /\ forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt - edges) -> (n <= nqt)%Z)) -> exists d:Z, (shortest_path s v n d). - -Axiom path_ends_with_edge_shortest_path : forall (v:vertex) (n:Z), - (forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt edges) -> - (n <= nqt)%Z) -> exists d:Z, (shortest_path s v n d). - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (inv1 (set (const Infinite:(map vertex - dist)) s (Finite 0%Z)) 1%Z (empty :(set1 (vertex* vertex)%type))) -> - ((((cardinal vertices) - 1%Z)%Z < 1%Z)%Z -> - ((inv1 (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) - (cardinal vertices) (empty :(set1 (vertex* vertex)%type))) -> - ((inv2 (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) - (empty :(set1 (vertex* vertex)%type))) -> forall (es_co:(set1 (vertex* - vertex)%type)), forall (es:(set1 (vertex* vertex)%type)), - ((inv2 (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) es_co) /\ - ((infix_eqeq (union es es_co) edges) /\ (infix_eqeq (inter es es_co) - (empty :(set1 (vertex* vertex)%type))))) -> forall (result:bool), - ((result = true) <-> (is_empty es)) -> ((~ (result = true)) -> - ((~ (is_empty es)) -> forall (es1:(set1 (vertex* vertex)%type)), - forall (result1:vertex) (result2:vertex), let result3 := (result1, - result2) in (((mem result3 es) /\ (es1 = (remove result3 es))) -> - ((let pass := (cardinal vertices) in ((mem result2 vertices) -> - match (get (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) - result2) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s - result2 n d)) /\ forall (dqt:Z), ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> - forall (nqt:Z), (path s result2 nqt dqt) -> (n <= nqt)%Z - | Infinite => forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s result2 n d) - end)) -> (match (get (set (const Infinite:(map vertex dist)) s - (Finite 0%Z)) - result1) with - | Infinite => False - | (Finite x) => match (get (set (const Infinite:(map vertex dist)) s - (Finite 0%Z)) - result2) with - | Infinite => True - | (Finite y) => ((x + (weight result1 result2))%Z < y)%Z - end - end -> match (get (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) - result2) with - | Infinite => False - | (Finite dv) => True - end)))))))). -intuition. -intuition. -subst. - -destruct (get (set (const Infinite) s (Finite 0)) result2); try trivial. -destruct (get (set (const Infinite) s (Finite 0)) result1) as [] _eqn; try contradiction. - -Require Import Classical. -destruct (classic (s = result1)). - -rewrite Select_eq in Heqd. -subst. -admit. -(* -assert (subset es edges). admit. -assert (mem (s, result2) edges). admit. -apply edges_def in H11. -destruct H11 as [ H11 [ H12 H13 ]]. -apply H8. - -apply H8 in H13. - -assert (z = 0)%Z. admit. - - -*) -assumption. - -rewrite Select_neq in Heqd. -rewrite Const in Heqd. -admit. -assumption. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_14.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_14.v deleted file mode 100755 index f60cdaca9a..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_14.v +++ /dev/null @@ -1,416 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -Axiom shortest_path_unique_distance : forall (v:vertex) (n:Z) (d:Z), - (shortest_path s v n d) -> forall (nqt:Z) (dqt:Z), (~ (n = nqt)) -> - ~ (shortest_path s v nqt dqt). - -Axiom no_path_xor_shortest_path_exists : (~ (negcycle )) -> - forall (v:vertex), (mem v vertices) -> ((no_path s v) <-> ~ exists n:Z, - exists d:Z, (shortest_path s v n d)). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -Axiom set_empty : forall (a:Type), forall (a1:(set1 a)), (is_empty a1) <-> - (a1 = (empty :(set1 a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((inter a1 b) = (empty :(set1 a))) -> ((mem e a1) -> ~ (mem e b)). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Axiom set_empty_union : forall (a:Type), forall (a1:(set1 a)), ((union a1 - (empty :(set1 a))) = a1). - -Axiom set_empty_inter : forall (a:Type), forall (a1:(set1 a)), ((inter a1 - (empty :(set1 a))) = (empty :(set1 a))). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition path_ends_with(v1:vertex) (v2:vertex) (n:Z) (d:Z) (via:(set1 - (vertex* vertex)%type)): Prop := exists u:vertex, (mem (u, v2) via) /\ - (path v1 u (n - (weight u v2))%Z (d - 1%Z)%Z). - -(* Why3 assumption *) -Definition inv1(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists d:Z, (path s v n d)) /\ ((forall (dqt:Z), - ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> forall (nqt:Z), (path s v nqt - dqt) -> (n <= nqt)%Z) /\ forall (nqt:Z), (path_ends_with s v nqt pass - via) -> (n <= nqt)%Z) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex dist)) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt via) -> - (n <= nqt)%Z - | Infinite => True - end. - -Axiom inv1_next : forall (m:(map vertex dist)) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ((inv1 m d edges) -> (inv1 m (d + 1%Z)%Z - (empty :(set1 (vertex* vertex)%type)))). - -Axiom inv2_shortest : forall (v:vertex), (mem v vertices) -> forall (n:Z), - ((exists d:Z, ((0%Z <= d)%Z /\ (d < (cardinal vertices))%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ - (dqt < (cardinal vertices))%Z) -> forall (nqt:Z), (path s v nqt dqt) -> - (n <= nqt)%Z) /\ forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt - edges) -> (n <= nqt)%Z)) -> exists d:Z, (shortest_path s v n d). - -Axiom path_ends_with_edge_shortest_path : forall (v:vertex) (n:Z), - (forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt edges) -> - (n <= nqt)%Z) -> exists d:Z, (shortest_path s v n d). - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (inv1 (set (const Infinite:(map vertex - dist)) s (Finite 0%Z)) 1%Z (empty :(set1 (vertex* vertex)%type))) -> - ((1%Z <= ((cardinal vertices) - 1%Z)%Z)%Z -> forall (m:(map vertex dist)), - (inv1 m (((cardinal vertices) - 1%Z)%Z + 1%Z)%Z (empty :(set1 (vertex* - vertex)%type))) -> ((inv1 m (cardinal vertices) (empty :(set1 (vertex* - vertex)%type))) -> ((inv2 m (empty :(set1 (vertex* vertex)%type))) -> - forall (es_co:(set1 (vertex* vertex)%type)), forall (es:(set1 (vertex* - vertex)%type)), ((inv2 m es_co) /\ ((infix_eqeq (union es es_co) edges) /\ - (infix_eqeq (inter es es_co) (empty :(set1 (vertex* vertex)%type))))) -> - forall (result:bool), ((result = true) <-> (is_empty es)) -> - ((result = true) -> ((inv2 m edges) -> forall (v:vertex), (mem v - vertices) -> match (get m - v) with - | (Finite n) => exists d:Z, (shortest_path s v n d) - | Infinite => True - end))))). -intuition. - -unfold inv1 in H2. -unfold inv2 in H9. -assert (H12 : mem v vertices) ; auto. -assert (H13 : mem v vertices) ; auto. -apply H2 in H12. -apply H9 in H13. - -destruct (get m v) ; auto. -apply inv2_shortest ; auto. -tauto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_15.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_15.v deleted file mode 100755 index 28cc8e6723..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_15.v +++ /dev/null @@ -1,436 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive list (a:Type) := - | Nil : list a - | Cons : a -> (list a) -> list a. -Set Contextual Implicit. -Implicit Arguments Nil. -Unset Contextual Implicit. -Implicit Arguments Cons. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint length (a:Type)(l:(list a)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons _ r) => (1%Z + (length r))%Z - end. -Unset Implicit Arguments. - -Axiom Length_nonnegative : forall (a:Type), forall (l:(list a)), - (0%Z <= (length l))%Z. - -Axiom Length_nil : forall (a:Type), forall (l:(list a)), - ((length l) = 0%Z) <-> (l = (Nil :(list a))). - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set1 a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set1 a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Axiom cardinal1 : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 1%Z) -> forall (x:a), (mem x s) -> (x = (choose s)). - -Parameter nth: forall (a:Type), Z -> (set1 a) -> a. -Implicit Arguments nth. - -Axiom nth_injective : forall (a:Type), forall (s:(set1 a)) (i:Z) (j:Z), - ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (((0%Z <= j)%Z /\ - (j < (cardinal s))%Z) -> (((nth i s) = (nth j s)) -> (i = j))). - -Axiom nth_surjective : forall (a:Type), forall (s:(set1 a)) (x:a), (mem x - s) -> exists i:Z, ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (x = (nth i - s)). - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -(* Why3 assumption *) -Definition edge(x:vertex) (y:vertex): Prop := (mem (x, y) edges). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -Parameter s: vertex. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint infix_plpl (a:Type)(l1:(list a)) (l2:(list a)) {struct l1}: (list - a) := - match l1 with - | Nil => l2 - | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) - end. -Unset Implicit Arguments. - -Axiom Append_assoc : forall (a:Type), forall (l1:(list a)) (l2:(list a)) - (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 - l3)) = (infix_plpl (infix_plpl l1 l2) l3)). - -Axiom Append_l_nil : forall (a:Type), forall (l:(list a)), ((infix_plpl l - (Nil :(list a))) = l). - -Axiom Append_length : forall (a:Type), forall (l1:(list a)) (l2:(list a)), - ((length (infix_plpl l1 l2)) = ((length l1) + (length l2))%Z). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint mem1 (a:Type)(x:a) (l:(list a)) {struct l}: Prop := - match l with - | Nil => False - | (Cons y r) => (x = y) \/ (mem1 x r) - end. -Unset Implicit Arguments. - -Axiom mem_append : forall (a:Type), forall (x:a) (l1:(list a)) (l2:(list a)), - (mem1 x (infix_plpl l1 l2)) <-> ((mem1 x l1) \/ (mem1 x l2)). - -Axiom mem_decomp : forall (a:Type), forall (x:a) (l:(list a)), (mem1 x l) -> - exists l1:(list a), exists l2:(list a), (l = (infix_plpl l1 (Cons x l2))). - -(* Why3 assumption *) -Inductive path : vertex -> (list vertex) -> vertex -> Prop := - | Path_empty : forall (x:vertex), (path x (Nil :(list vertex)) x) - | Path_cons : forall (x:vertex) (y:vertex) (z:vertex) (l:(list vertex)), - (edge x y) -> ((path y l z) -> (path x (Cons x l) z)). - -Axiom path_right_extension : forall (x:vertex) (y:vertex) (z:vertex) (l:(list - vertex)), (path x l y) -> ((edge y z) -> (path x (infix_plpl l (Cons y - (Nil :(list vertex)))) z)). - -Axiom path_right_inversion : forall (x:vertex) (z:vertex) (l:(list vertex)), - (path x l z) -> (((x = z) /\ (l = (Nil :(list vertex)))) \/ - exists y:vertex, exists lqt:(list vertex), (path x lqt y) /\ ((edge y z) /\ - (l = (infix_plpl lqt (Cons y (Nil :(list vertex))))))). - -Axiom path_trans : forall (x:vertex) (y:vertex) (z:vertex) (l1:(list vertex)) - (l2:(list vertex)), (path x l1 y) -> ((path y l2 z) -> (path x - (infix_plpl l1 l2) z)). - -Axiom empty_path : forall (x:vertex) (y:vertex), (path x (Nil :(list vertex)) - y) -> (x = y). - -Axiom path_decomposition : forall (x:vertex) (y:vertex) (z:vertex) (l1:(list - vertex)) (l2:(list vertex)), (path x (infix_plpl l1 (Cons y l2)) z) -> - ((path x l1 y) /\ (path y (Cons y l2) z)). - -Parameter weight: vertex -> vertex -> Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint path_weight(l:(list vertex)) (dst:vertex) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons x Nil) => (weight x dst) - | (Cons x ((Cons y _) as r)) => ((weight x y) + (path_weight r dst))%Z - end. -Unset Implicit Arguments. - -Axiom path_weight_right_extension : forall (x:vertex) (y:vertex) (l:(list - vertex)), ((path_weight (infix_plpl l (Cons x (Nil :(list vertex)))) - y) = ((path_weight l x) + (weight x y))%Z). - -Axiom path_weight_decomposition : forall (y:vertex) (z:vertex) (l1:(list - vertex)) (l2:(list vertex)), ((path_weight (infix_plpl l1 (Cons y l2)) - z) = ((path_weight l1 y) + (path_weight (Cons y l2) z))%Z). - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (l:(list vertex)), - (mem v1 vertices) -> ((path v1 l v2) -> (mem v2 vertices)). - -Axiom long_path_decomposition : forall (l:(list vertex)) (v:vertex), (path s - l v) -> (((cardinal vertices) <= (length l))%Z -> ((exists l1:(list - vertex), (exists l2:(list vertex), (l = (infix_plpl l1 (Cons v l2))))) \/ - exists n:vertex, exists l1:(list vertex), exists l2:(list vertex), - exists l3:(list vertex), (l = (infix_plpl l1 (Cons n (infix_plpl l2 (Cons n - l3))))))). - -Axiom simple_path : forall (v:vertex) (l:(list vertex)), (path s l v) -> - exists lqt:(list vertex), (path s lqt v) /\ - ((length lqt) < (cardinal vertices))%Z. - -(* Why3 assumption *) -Definition negative_cycle(v:vertex): Prop := (mem v vertices) /\ - ((exists l1:(list vertex), (path s l1 v)) /\ exists l2:(list vertex), - (path v l2 v) /\ ((path_weight l2 v) < 0%Z)%Z). - -Axiom key_lemma_1 : forall (v:vertex) (n:Z), (forall (l:(list vertex)), - (path s l v) -> (((length l) < (cardinal vertices))%Z -> - (n <= (path_weight l v))%Z)) -> ((exists l:(list vertex), (path s l v) /\ - ((path_weight l v) < n)%Z) -> exists u:vertex, (negative_cycle u)). - -(* Why3 assumption *) -Inductive t := - | Finite : Z -> t - | Infinite : t . - -(* Why3 assumption *) -Definition add1(x:t) (y:t): t := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition lt(x:t) (y:t): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition le(x:t) (y:t): Prop := (lt x y) \/ (x = y). - -Axiom Refl : forall (x:t), (le x x). - -Axiom Trans : forall (x:t) (y:t) (z:t), (le x y) -> ((le y z) -> (le x z)). - -Axiom Antisymm : forall (x:t) (y:t), (le x y) -> ((le y x) -> (x = y)). - -Axiom Total : forall (x:t) (y:t), (le x y) \/ (le y x). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -(* Why3 assumption *) -Definition t1 (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex t). - -(* Why3 assumption *) -Definition inv1(m:(map vertex t)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists l:(list vertex), (path s l v) /\ ((path_weight l - v) = n)) /\ ((forall (l:(list vertex)), (path s l v) -> - (((length l) < pass)%Z -> (n <= (path_weight l v))%Z)) /\ - forall (u:vertex) (l:(list vertex)), (path s l u) -> - (((length l) < pass)%Z -> ((mem (u, v) via) -> (n <= ((path_weight l - u) + (weight u v))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v) -> - (pass <= (length l))%Z) /\ forall (u:vertex), (mem (u, v) via) -> - forall (lu:(list vertex)), (path s lu u) -> (pass <= (length lu))%Z - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex t)) (via:(set1 (vertex* vertex)%type)): Prop := - forall (u:vertex) (v:vertex), (mem (u, v) via) -> (le (get m v) - (add1 (get m u) (Finite (weight u v)))). - -Axiom key_lemma_2 : forall (m:(map vertex t)), (inv1 m (cardinal vertices) - (empty :(set1 (vertex* vertex)%type))) -> ((inv2 m edges) -> - forall (v:vertex), ~ (negative_cycle v)). - -Require Import Why3. -Ltac ae := why3 "alt-ergo". - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (1%Z <= ((cardinal vertices) - 1%Z)%Z)%Z -> - forall (m:(map vertex t)), (inv1 m (((cardinal vertices) - 1%Z)%Z + 1%Z)%Z - (empty :(set1 (vertex* vertex)%type))) -> ((inv1 m (cardinal vertices) - (empty :(set1 (vertex* vertex)%type))) -> forall (result:(set1 (vertex* - vertex)%type)), (result = edges) -> forall (es:(set1 (vertex* - vertex)%type)), ((subset es edges) /\ (inv2 m (diff edges es))) -> - forall (result1:bool), ((result1 = true) <-> (is_empty es)) -> - ((~ (result1 = true)) -> ((~ (is_empty es)) -> forall (es1:(set1 (vertex* - vertex)%type)), forall (result2:vertex) (result3:vertex), let result4 := ( - result2, result3) in (((mem result4 es) /\ (es1 = (remove result4 es))) -> - (match (get m - result2) with - | Infinite => False - | (Finite x) => match (get m - result3) with - | Infinite => True - | (Finite y) => ((x + (weight result2 result3))%Z < y)%Z - end - end -> exists v:vertex, (negative_cycle v)))))). -intros _ m _ hinv1. -intros result hresult; subst result. -intros es (h1, h2) _ _ _ h3. -intros es1 u v uv. unfold uv; clear uv. -intros (h4, h5). -destruct (get m u) as [] _eqn. 2: intuition. -destruct (get m v) as [] _eqn. -intros hlt. apply key_lemma_1 with v z0. -why3 "z3-3". -assert (hu: exists lu: list vertex, path s lu u /\ path_weight lu u = z) by ae. -destruct hu as (lu, (hu1, hu2)). -exists (infix_plpl lu (Cons u Nil)); ae. -absurd (get m v = Infinite); auto. -assert (hv: mem v vertices) by ae. -generalize (hinv1 v hv). -rewrite Heqt1; simpl. -intros (hv1, _). -assert (hu: exists lu: list vertex, path s lu u ) by ae. -destruct hu as (lu, hu1). -assert (path s (infix_plpl lu (Cons u Nil)) v) by ae. -assert (exists lv': list vertex, path s lv' v /\ (length lv' < cardinal vertices)%Z) by ae. -ae. -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_16.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_16.v deleted file mode 100755 index 63dfa5d431..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_16.v +++ /dev/null @@ -1,382 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive list (a:Type) := - | Nil : list a - | Cons : a -> (list a) -> list a. -Set Contextual Implicit. -Implicit Arguments Nil. -Unset Contextual Implicit. -Implicit Arguments Cons. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint length (a:Type)(l:(list a)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons _ r) => (1%Z + (length r))%Z - end. -Unset Implicit Arguments. - -Axiom Length_nonnegative : forall (a:Type), forall (l:(list a)), - (0%Z <= (length l))%Z. - -Axiom Length_nil : forall (a:Type), forall (l:(list a)), - ((length l) = 0%Z) <-> (l = (Nil :(list a))). - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set1 a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set1 a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Axiom cardinal1 : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 1%Z) -> forall (x:a), (mem x s) -> (x = (choose s)). - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -(* Why3 assumption *) -Definition edge(x:vertex) (y:vertex): Prop := (mem (x, y) edges). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -Parameter s: vertex. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint infix_plpl (a:Type)(l1:(list a)) (l2:(list a)) {struct l1}: (list - a) := - match l1 with - | Nil => l2 - | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) - end. -Unset Implicit Arguments. - -Axiom Append_assoc : forall (a:Type), forall (l1:(list a)) (l2:(list a)) - (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 - l3)) = (infix_plpl (infix_plpl l1 l2) l3)). - -Axiom Append_l_nil : forall (a:Type), forall (l:(list a)), ((infix_plpl l - (Nil :(list a))) = l). - -Axiom Append_length : forall (a:Type), forall (l1:(list a)) (l2:(list a)), - ((length (infix_plpl l1 l2)) = ((length l1) + (length l2))%Z). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint mem1 (a:Type)(x:a) (l:(list a)) {struct l}: Prop := - match l with - | Nil => False - | (Cons y r) => (x = y) \/ (mem1 x r) - end. -Unset Implicit Arguments. - -Axiom mem_append : forall (a:Type), forall (x:a) (l1:(list a)) (l2:(list a)), - (mem1 x (infix_plpl l1 l2)) <-> ((mem1 x l1) \/ (mem1 x l2)). - -Axiom mem_decomp : forall (a:Type), forall (x:a) (l:(list a)), (mem1 x l) -> - exists l1:(list a), exists l2:(list a), (l = (infix_plpl l1 (Cons x l2))). - -(* Why3 assumption *) -Inductive path : vertex -> (list vertex) -> vertex -> Prop := - | Path_empty : forall (x:vertex), (path x (Nil :(list vertex)) x) - | Path_cons : forall (x:vertex) (y:vertex) (z:vertex) (l:(list vertex)), - (edge x y) -> ((path y l z) -> (path x (Cons x l) z)). - -Axiom path_right_extension : forall (x:vertex) (y:vertex) (z:vertex) (l:(list - vertex)), (path x l y) -> ((edge y z) -> (path x (infix_plpl l (Cons y - (Nil :(list vertex)))) z)). - -Axiom path_trans : forall (x:vertex) (y:vertex) (z:vertex) (l1:(list vertex)) - (l2:(list vertex)), (path x l1 y) -> ((path y l2 z) -> (path x - (infix_plpl l1 l2) z)). - -Axiom empty_path : forall (x:vertex) (y:vertex), (path x (Nil :(list vertex)) - y) -> (x = y). - -Parameter weight: vertex -> vertex -> Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint path_weight(l:(list vertex)) (dst:vertex) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons x Nil) => (weight x dst) - | (Cons x ((Cons y _) as r)) => ((weight x y) + (path_weight r dst))%Z - end. -Unset Implicit Arguments. - -Axiom path_weight_right_extension : forall (x:vertex) (y:vertex) (l:(list - vertex)), ((path_weight (infix_plpl l (Cons x (Nil :(list vertex)))) - y) = ((path_weight l x) + (weight x y))%Z). - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (l:(list vertex)), - (mem v1 vertices) -> ((path v1 l v2) -> (mem v2 vertices)). - -Axiom simple_path : forall (v:vertex) (l:(list vertex)), (path s l v) -> - exists lqt:(list vertex), (path s lqt v) /\ - ((length lqt) < (cardinal vertices))%Z. - -(* Why3 assumption *) -Definition negative_cycle(v:vertex): Prop := (mem v vertices) /\ - ((exists l1:(list vertex), (path s l1 v)) /\ exists l2:(list vertex), - (path v l2 v) /\ ((path_weight l2 v) < 0%Z)%Z). - -Axiom key_lemma_1 : forall (v:vertex) (n:Z), (forall (l:(list vertex)), - (path s l v) -> (((length l) < (cardinal vertices))%Z -> - (n <= (path_weight l v))%Z)) -> ((exists l:(list vertex), (path s l v) /\ - ((path_weight l v) < n)%Z) -> exists u:vertex, (negative_cycle u)). - -(* Why3 assumption *) -Inductive t := - | Finite : Z -> t - | Infinite : t . - -(* Why3 assumption *) -Definition add1(x:t) (y:t): t := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition lt(x:t) (y:t): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition le(x:t) (y:t): Prop := (lt x y) \/ (x = y). - -Axiom Refl : forall (x:t), (le x x). - -Axiom Trans : forall (x:t) (y:t) (z:t), (le x y) -> ((le y z) -> (le x z)). - -Axiom Antisymm : forall (x:t) (y:t), (le x y) -> ((le y x) -> (x = y)). - -Axiom Total : forall (x:t) (y:t), (le x y) \/ (le y x). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -(* Why3 assumption *) -Definition t1 (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex t). - -(* Why3 assumption *) -Definition inv1(m:(map vertex t)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists l:(list vertex), (path s l v) /\ ((path_weight l - v) = n)) /\ ((forall (l:(list vertex)), (path s l v) -> - (((length l) < pass)%Z -> (n <= (path_weight l v))%Z)) /\ - forall (u:vertex) (l:(list vertex)), (path s l u) -> - (((length l) < pass)%Z -> ((mem (u, v) via) -> (n <= ((path_weight l - u) + (weight u v))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v) -> - (pass <= (length l))%Z) /\ forall (u:vertex), (mem (u, v) via) -> - forall (lu:(list vertex)), (path s lu u) -> (pass <= (length lu))%Z - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex t)) (via:(set1 (vertex* vertex)%type)): Prop := - forall (u:vertex) (v:vertex), (mem (u, v) via) -> (le (get m v) - (add1 (get m u) (Finite (weight u v)))). - -Require Import Why3. - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (((cardinal vertices) - 1%Z)%Z < 1%Z)%Z -> - ((inv1 (set (const Infinite:(map vertex t)) s (Finite 0%Z)) - (cardinal vertices) (empty :(set1 (vertex* vertex)%type))) -> - forall (result:(set1 (vertex* vertex)%type)), (result = edges) -> - forall (es:(set1 (vertex* vertex)%type)), ((subset es edges) /\ - (inv2 (set (const Infinite:(map vertex t)) s (Finite 0%Z)) (diff edges - es))) -> forall (result1:bool), ((result1 = true) <-> (is_empty es)) -> - ((result1 = true) -> ((inv2 (set (const Infinite:(map vertex t)) s - (Finite 0%Z)) edges) -> forall (v:vertex), (mem v vertices) -> - match (get (set (const Infinite:(map vertex t)) s (Finite 0%Z)) - v) with - | (Finite n) => forall (l:(list vertex)), (path s l v) -> - (n <= (path_weight l v))%Z - | Infinite => True - end))). -intros card inv1. -intros result hresult; subst result. -intros es Hes. -intros _ _ _ _ v hv. -assert (h1: (cardinal vertices = 1)%Z) by ae. -generalize (cardinal1 _ vertices h1); intros h2. -assert (v = s) by ae. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_17.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_17.v deleted file mode 100755 index 99dab9ab19..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_17.v +++ /dev/null @@ -1,448 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive list (a:Type) := - | Nil : list a - | Cons : a -> (list a) -> list a. -Set Contextual Implicit. -Implicit Arguments Nil. -Unset Contextual Implicit. -Implicit Arguments Cons. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint length (a:Type)(l:(list a)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons _ r) => (1%Z + (length r))%Z - end. -Unset Implicit Arguments. - -Axiom Length_nonnegative : forall (a:Type), forall (l:(list a)), - (0%Z <= (length l))%Z. - -Axiom Length_nil : forall (a:Type), forall (l:(list a)), - ((length l) = 0%Z) <-> (l = (Nil :(list a))). - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set1 a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set1 a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Axiom cardinal1 : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 1%Z) -> forall (x:a), (mem x s) -> (x = (choose s)). - -Parameter nth: forall (a:Type), Z -> (set1 a) -> a. -Implicit Arguments nth. - -Axiom nth_injective : forall (a:Type), forall (s:(set1 a)) (i:Z) (j:Z), - ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (((0%Z <= j)%Z /\ - (j < (cardinal s))%Z) -> (((nth i s) = (nth j s)) -> (i = j))). - -Axiom nth_surjective : forall (a:Type), forall (s:(set1 a)) (x:a), (mem x - s) -> exists i:Z, ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (x = (nth i - s)). - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -(* Why3 assumption *) -Definition edge(x:vertex) (y:vertex): Prop := (mem (x, y) edges). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -Parameter s: vertex. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint infix_plpl (a:Type)(l1:(list a)) (l2:(list a)) {struct l1}: (list - a) := - match l1 with - | Nil => l2 - | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) - end. -Unset Implicit Arguments. - -Axiom Append_assoc : forall (a:Type), forall (l1:(list a)) (l2:(list a)) - (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 - l3)) = (infix_plpl (infix_plpl l1 l2) l3)). - -Axiom Append_l_nil : forall (a:Type), forall (l:(list a)), ((infix_plpl l - (Nil :(list a))) = l). - -Axiom Append_length : forall (a:Type), forall (l1:(list a)) (l2:(list a)), - ((length (infix_plpl l1 l2)) = ((length l1) + (length l2))%Z). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint mem1 (a:Type)(x:a) (l:(list a)) {struct l}: Prop := - match l with - | Nil => False - | (Cons y r) => (x = y) \/ (mem1 x r) - end. -Unset Implicit Arguments. - -Axiom mem_append : forall (a:Type), forall (x:a) (l1:(list a)) (l2:(list a)), - (mem1 x (infix_plpl l1 l2)) <-> ((mem1 x l1) \/ (mem1 x l2)). - -Axiom mem_decomp : forall (a:Type), forall (x:a) (l:(list a)), (mem1 x l) -> - exists l1:(list a), exists l2:(list a), (l = (infix_plpl l1 (Cons x l2))). - -(* Why3 assumption *) -Inductive path : vertex -> (list vertex) -> vertex -> Prop := - | Path_empty : forall (x:vertex), (path x (Nil :(list vertex)) x) - | Path_cons : forall (x:vertex) (y:vertex) (z:vertex) (l:(list vertex)), - (edge x y) -> ((path y l z) -> (path x (Cons x l) z)). - -Axiom path_right_extension : forall (x:vertex) (y:vertex) (z:vertex) (l:(list - vertex)), (path x l y) -> ((edge y z) -> (path x (infix_plpl l (Cons y - (Nil :(list vertex)))) z)). - -Axiom path_right_inversion : forall (x:vertex) (z:vertex) (l:(list vertex)), - (path x l z) -> (((x = z) /\ (l = (Nil :(list vertex)))) \/ - exists y:vertex, exists lqt:(list vertex), (path x lqt y) /\ ((edge y z) /\ - (l = (infix_plpl lqt (Cons y (Nil :(list vertex))))))). - -Axiom path_trans : forall (x:vertex) (y:vertex) (z:vertex) (l1:(list vertex)) - (l2:(list vertex)), (path x l1 y) -> ((path y l2 z) -> (path x - (infix_plpl l1 l2) z)). - -Axiom empty_path : forall (x:vertex) (y:vertex), (path x (Nil :(list vertex)) - y) -> (x = y). - -Parameter weight: vertex -> vertex -> Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint path_weight(l:(list vertex)) (dst:vertex) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons x Nil) => (weight x dst) - | (Cons x ((Cons y _) as r)) => ((weight x y) + (path_weight r dst))%Z - end. -Unset Implicit Arguments. - -Axiom path_weight_right_extension : forall (x:vertex) (y:vertex) (l:(list - vertex)), ((path_weight (infix_plpl l (Cons x (Nil :(list vertex)))) - y) = ((path_weight l x) + (weight x y))%Z). - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (l:(list vertex)), - (mem v1 vertices) -> ((path v1 l v2) -> (mem v2 vertices)). - -Axiom simple_path : forall (v:vertex) (l:(list vertex)), (path s l v) -> - exists lqt:(list vertex), (path s lqt v) /\ - ((length lqt) < (cardinal vertices))%Z. - -(* Why3 assumption *) -Definition negative_cycle(v:vertex): Prop := (mem v vertices) /\ - ((exists l1:(list vertex), (path s l1 v)) /\ exists l2:(list vertex), - (path v l2 v) /\ ((path_weight l2 v) < 0%Z)%Z). - -Axiom key_lemma_1 : forall (v:vertex) (n:Z), (forall (l:(list vertex)), - (path s l v) -> (((length l) < (cardinal vertices))%Z -> - (n <= (path_weight l v))%Z)) -> ((exists l:(list vertex), (path s l v) /\ - ((path_weight l v) < n)%Z) -> exists u:vertex, (negative_cycle u)). - -(* Why3 assumption *) -Inductive t := - | Finite : Z -> t - | Infinite : t . - -(* Why3 assumption *) -Definition add1(x:t) (y:t): t := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition lt(x:t) (y:t): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition le(x:t) (y:t): Prop := (lt x y) \/ (x = y). - -Axiom Refl : forall (x:t), (le x x). - -Axiom Trans : forall (x:t) (y:t) (z:t), (le x y) -> ((le y z) -> (le x z)). - -Axiom Antisymm : forall (x:t) (y:t), (le x y) -> ((le y x) -> (x = y)). - -Axiom Total : forall (x:t) (y:t), (le x y) \/ (le y x). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -(* Why3 assumption *) -Definition t1 (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex t). - -(* Why3 assumption *) -Definition inv1(m:(map vertex t)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists l:(list vertex), (path s l v) /\ ((path_weight l - v) = n)) /\ ((forall (l:(list vertex)), (path s l v) -> - (((length l) < pass)%Z -> (n <= (path_weight l v))%Z)) /\ - forall (u:vertex) (l:(list vertex)), (path s l u) -> - (((length l) < pass)%Z -> ((mem (u, v) via) -> (n <= ((path_weight l - u) + (weight u v))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v) -> - (pass <= (length l))%Z) /\ forall (u:vertex), (mem (u, v) via) -> - forall (lu:(list vertex)), (path s lu u) -> (pass <= (length lu))%Z - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex t)) (via:(set1 (vertex* vertex)%type)): Prop := - forall (u:vertex) (v:vertex), (mem (u, v) via) -> (le (get m v) - (add1 (get m u) (Finite (weight u v)))). - -Axiom key_lemma_2 : forall (m:(map vertex t)), (inv2 m edges) -> - forall (v:vertex), ~ (negative_cycle v). - -Require Import Why3. -Ltac Z3 := why3 "z3-3". -Ltac ae := why3 "alt-ergo". - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : ((1%Z < ((cardinal vertices) - 1%Z)%Z)%Z \/ - (1%Z = ((cardinal vertices) - 1%Z)%Z)) -> forall (m:(map vertex t)), - forall (i:Z), (((1%Z < i)%Z \/ (1%Z = i)) /\ - ((i < ((cardinal vertices) - 1%Z)%Z)%Z \/ - (i = ((cardinal vertices) - 1%Z)%Z))) -> ((forall (v:vertex), (mem v - vertices) -> match (get m - v) with - | (Finite n) => (exists l:(list vertex), (path s l v) /\ ((path_weight l - v) = n)) /\ ((forall (l:(list vertex)), (path s l v) -> - (((length l) < i)%Z -> (n <= (path_weight l v))%Z)) /\ - forall (u:vertex) (l:(list vertex)), (path s l u) -> - (((length l) < i)%Z -> ((mem (u, v) (empty :(set1 (vertex* - vertex)%type))) -> (n <= ((path_weight l u) + (weight u v))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v) -> - (i <= (length l))%Z) /\ forall (u:vertex), (mem (u, v) (empty :(set1 - (vertex* vertex)%type))) -> forall (lu:(list vertex)), (path s lu u) -> - (i <= (length lu))%Z - end) -> forall (result:(set1 (vertex* vertex)%type)), (result = edges) -> - forall (es:(set1 (vertex* vertex)%type)), forall (m1:(map vertex t)), - ((forall (x:(vertex* vertex)%type), (mem x es) -> (mem x edges)) /\ - forall (v:vertex), (mem v vertices) -> match (get m1 - v) with - | (Finite n) => (exists l:(list vertex), (path s l v) /\ ((path_weight l - v) = n)) /\ ((forall (l:(list vertex)), (path s l v) -> - (((length l) < i)%Z -> (n <= (path_weight l v))%Z)) /\ - forall (u:vertex) (l:(list vertex)), (path s l u) -> - (((length l) < i)%Z -> ((mem (u, v) (diff edges es)) -> - (n <= ((path_weight l u) + (weight u v))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v) -> - (i <= (length l))%Z) /\ forall (u:vertex), (mem (u, v) (diff edges - es)) -> forall (lu:(list vertex)), (path s lu u) -> - (i <= (length lu))%Z - end) -> forall (result1:bool), ((result1 = true) <-> forall (x:(vertex* - vertex)%type), ~ (mem x es)) -> ((result1 = true) -> ((forall (v:vertex), - (mem v vertices) -> match (get m1 - v) with - | (Finite n) => (exists l:(list vertex), (path s l v) /\ ((path_weight l - v) = n)) /\ ((forall (l:(list vertex)), (path s l v) -> - (((length l) < i)%Z -> (n <= (path_weight l v))%Z)) /\ - forall (u:vertex) (l:(list vertex)), (path s l u) -> - (((length l) < i)%Z -> ((mem (u, v) edges) -> (n <= ((path_weight l - u) + (weight u v))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v) -> - (i <= (length l))%Z) /\ forall (u:vertex), (mem (u, v) edges) -> - forall (lu:(list vertex)), (path s lu u) -> (i <= (length lu))%Z - end) -> forall (v:vertex), (mem v vertices) -> match (get m1 - v) with - | (Finite n) => forall (l:(list vertex)), (path s l v) -> - (((length l) < (i + 1%Z)%Z)%Z -> (n <= (path_weight l v))%Z) - | Infinite => True - end))). -intros. -destruct (get m1 v) as [] _eqn; auto. -intros l hpath hlength. -destruct (path_right_inversion s v l hpath) as [(h1,h2) | (y, (l', (h1, (h2, h3))))]. -(* Nil *) -subst. simpl. Z3. -(* Cons *) -rewrite h3; rewrite path_weight_right_extension. -generalize (H6 v H7); clear H6. -rewrite Heqt0; simpl. -intros (_, (hh1, hh2)). -clear H1 H3. -apply hh2; auto. -assert (length l = length l' + 1)%Z. -subst l. rewrite Append_length. -auto. -ae. -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_18.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_18.v deleted file mode 100755 index 6aceb3e325..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_18.v +++ /dev/null @@ -1,446 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive list (a:Type) := - | Nil : list a - | Cons : a -> (list a) -> list a. -Set Contextual Implicit. -Implicit Arguments Nil. -Unset Contextual Implicit. -Implicit Arguments Cons. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint length (a:Type)(l:(list a)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons _ r) => (1%Z + (length r))%Z - end. -Unset Implicit Arguments. - -Axiom Length_nonnegative : forall (a:Type), forall (l:(list a)), - (0%Z <= (length l))%Z. - -Axiom Length_nil : forall (a:Type), forall (l:(list a)), - ((length l) = 0%Z) <-> (l = (Nil :(list a))). - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set1 a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set1 a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Axiom cardinal1 : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 1%Z) -> forall (x:a), (mem x s) -> (x = (choose s)). - -Parameter nth: forall (a:Type), Z -> (set1 a) -> a. -Implicit Arguments nth. - -Axiom nth_injective : forall (a:Type), forall (s:(set1 a)) (i:Z) (j:Z), - ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (((0%Z <= j)%Z /\ - (j < (cardinal s))%Z) -> (((nth i s) = (nth j s)) -> (i = j))). - -Axiom nth_surjective : forall (a:Type), forall (s:(set1 a)) (x:a), (mem x - s) -> exists i:Z, ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (x = (nth i - s)). - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -(* Why3 assumption *) -Definition edge(x:vertex) (y:vertex): Prop := (mem (x, y) edges). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -Parameter s: vertex. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint infix_plpl (a:Type)(l1:(list a)) (l2:(list a)) {struct l1}: (list - a) := - match l1 with - | Nil => l2 - | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) - end. -Unset Implicit Arguments. - -Axiom Append_assoc : forall (a:Type), forall (l1:(list a)) (l2:(list a)) - (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 - l3)) = (infix_plpl (infix_plpl l1 l2) l3)). - -Axiom Append_l_nil : forall (a:Type), forall (l:(list a)), ((infix_plpl l - (Nil :(list a))) = l). - -Axiom Append_length : forall (a:Type), forall (l1:(list a)) (l2:(list a)), - ((length (infix_plpl l1 l2)) = ((length l1) + (length l2))%Z). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint mem1 (a:Type)(x:a) (l:(list a)) {struct l}: Prop := - match l with - | Nil => False - | (Cons y r) => (x = y) \/ (mem1 x r) - end. -Unset Implicit Arguments. - -Axiom mem_append : forall (a:Type), forall (x:a) (l1:(list a)) (l2:(list a)), - (mem1 x (infix_plpl l1 l2)) <-> ((mem1 x l1) \/ (mem1 x l2)). - -Axiom mem_decomp : forall (a:Type), forall (x:a) (l:(list a)), (mem1 x l) -> - exists l1:(list a), exists l2:(list a), (l = (infix_plpl l1 (Cons x l2))). - -(* Why3 assumption *) -Inductive path : vertex -> (list vertex) -> vertex -> Prop := - | Path_empty : forall (x:vertex), (path x (Nil :(list vertex)) x) - | Path_cons : forall (x:vertex) (y:vertex) (z:vertex) (l:(list vertex)), - (edge x y) -> ((path y l z) -> (path x (Cons x l) z)). - -Axiom path_right_extension : forall (x:vertex) (y:vertex) (z:vertex) (l:(list - vertex)), (path x l y) -> ((edge y z) -> (path x (infix_plpl l (Cons y - (Nil :(list vertex)))) z)). - -Axiom path_right_inversion : forall (x:vertex) (z:vertex) (l:(list vertex)), - (path x l z) -> (((x = z) /\ (l = (Nil :(list vertex)))) \/ - exists y:vertex, exists lqt:(list vertex), (path x lqt y) /\ ((edge y z) /\ - (l = (infix_plpl lqt (Cons y (Nil :(list vertex))))))). - -Axiom path_trans : forall (x:vertex) (y:vertex) (z:vertex) (l1:(list vertex)) - (l2:(list vertex)), (path x l1 y) -> ((path y l2 z) -> (path x - (infix_plpl l1 l2) z)). - -Axiom empty_path : forall (x:vertex) (y:vertex), (path x (Nil :(list vertex)) - y) -> (x = y). - -Parameter weight: vertex -> vertex -> Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint path_weight(l:(list vertex)) (dst:vertex) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons x Nil) => (weight x dst) - | (Cons x ((Cons y _) as r)) => ((weight x y) + (path_weight r dst))%Z - end. -Unset Implicit Arguments. - -Axiom path_weight_right_extension : forall (x:vertex) (y:vertex) (l:(list - vertex)), ((path_weight (infix_plpl l (Cons x (Nil :(list vertex)))) - y) = ((path_weight l x) + (weight x y))%Z). - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (l:(list vertex)), - (mem v1 vertices) -> ((path v1 l v2) -> (mem v2 vertices)). - -Axiom simple_path : forall (v:vertex) (l:(list vertex)), (path s l v) -> - exists lqt:(list vertex), (path s lqt v) /\ - ((length lqt) < (cardinal vertices))%Z. - -(* Why3 assumption *) -Definition negative_cycle(v:vertex): Prop := (mem v vertices) /\ - ((exists l1:(list vertex), (path s l1 v)) /\ exists l2:(list vertex), - (path v l2 v) /\ ((path_weight l2 v) < 0%Z)%Z). - -Axiom key_lemma_1 : forall (v:vertex) (n:Z), (forall (l:(list vertex)), - (path s l v) -> (((length l) < (cardinal vertices))%Z -> - (n <= (path_weight l v))%Z)) -> ((exists l:(list vertex), (path s l v) /\ - ((path_weight l v) < n)%Z) -> exists u:vertex, (negative_cycle u)). - -(* Why3 assumption *) -Inductive t := - | Finite : Z -> t - | Infinite : t . - -(* Why3 assumption *) -Definition add1(x:t) (y:t): t := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition lt(x:t) (y:t): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition le(x:t) (y:t): Prop := (lt x y) \/ (x = y). - -Axiom Refl : forall (x:t), (le x x). - -Axiom Trans : forall (x:t) (y:t) (z:t), (le x y) -> ((le y z) -> (le x z)). - -Axiom Antisymm : forall (x:t) (y:t), (le x y) -> ((le y x) -> (x = y)). - -Axiom Total : forall (x:t) (y:t), (le x y) \/ (le y x). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -(* Why3 assumption *) -Definition t1 (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex t). - -(* Why3 assumption *) -Definition inv1(m:(map vertex t)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists l:(list vertex), (path s l v) /\ ((path_weight l - v) = n)) /\ ((forall (l:(list vertex)), (path s l v) -> - (((length l) < pass)%Z -> (n <= (path_weight l v))%Z)) /\ - forall (u:vertex) (l:(list vertex)), (path s l u) -> - (((length l) < pass)%Z -> ((mem (u, v) via) -> (n <= ((path_weight l - u) + (weight u v))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v) -> - (pass <= (length l))%Z) /\ forall (u:vertex), (mem (u, v) via) -> - forall (lu:(list vertex)), (path s lu u) -> (pass <= (length lu))%Z - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex t)) (via:(set1 (vertex* vertex)%type)): Prop := - forall (u:vertex) (v:vertex), (mem (u, v) via) -> (le (get m v) - (add1 (get m u) (Finite (weight u v)))). - -Axiom key_lemma_2 : forall (m:(map vertex t)), (inv2 m edges) -> - forall (v:vertex), ~ (negative_cycle v). - -Require Import Why3. -Ltac ae := why3 "alt-ergo". - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : ((1%Z < ((cardinal vertices) - 1%Z)%Z)%Z \/ - (1%Z = ((cardinal vertices) - 1%Z)%Z)) -> forall (m:(map vertex t)), - forall (i:Z), (((1%Z < i)%Z \/ (1%Z = i)) /\ - ((i < ((cardinal vertices) - 1%Z)%Z)%Z \/ - (i = ((cardinal vertices) - 1%Z)%Z))) -> ((forall (v:vertex), (mem v - vertices) -> match (get m - v) with - | (Finite n) => (exists l:(list vertex), (path s l v) /\ ((path_weight l - v) = n)) /\ ((forall (l:(list vertex)), (path s l v) -> - (((length l) < i)%Z -> (n <= (path_weight l v))%Z)) /\ - forall (u:vertex) (l:(list vertex)), (path s l u) -> - (((length l) < i)%Z -> ((mem (u, v) (empty :(set1 (vertex* - vertex)%type))) -> (n <= ((path_weight l u) + (weight u v))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v) -> - (i <= (length l))%Z) /\ forall (u:vertex), (mem (u, v) (empty :(set1 - (vertex* vertex)%type))) -> forall (lu:(list vertex)), (path s lu u) -> - (i <= (length lu))%Z - end) -> forall (result:(set1 (vertex* vertex)%type)), (result = edges) -> - forall (es:(set1 (vertex* vertex)%type)), forall (m1:(map vertex t)), - ((forall (x:(vertex* vertex)%type), (mem x es) -> (mem x edges)) /\ - forall (v:vertex), (mem v vertices) -> match (get m1 - v) with - | (Finite n) => (exists l:(list vertex), (path s l v) /\ ((path_weight l - v) = n)) /\ ((forall (l:(list vertex)), (path s l v) -> - (((length l) < i)%Z -> (n <= (path_weight l v))%Z)) /\ - forall (u:vertex) (l:(list vertex)), (path s l u) -> - (((length l) < i)%Z -> ((mem (u, v) (diff edges es)) -> - (n <= ((path_weight l u) + (weight u v))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v) -> - (i <= (length l))%Z) /\ forall (u:vertex), (mem (u, v) (diff edges - es)) -> forall (lu:(list vertex)), (path s lu u) -> - (i <= (length lu))%Z - end) -> forall (result1:bool), ((result1 = true) <-> forall (x:(vertex* - vertex)%type), ~ (mem x es)) -> ((result1 = true) -> ((forall (v:vertex), - (mem v vertices) -> match (get m1 - v) with - | (Finite n) => (exists l:(list vertex), (path s l v) /\ ((path_weight l - v) = n)) /\ ((forall (l:(list vertex)), (path s l v) -> - (((length l) < i)%Z -> (n <= (path_weight l v))%Z)) /\ - forall (u:vertex) (l:(list vertex)), (path s l u) -> - (((length l) < i)%Z -> ((mem (u, v) edges) -> (n <= ((path_weight l - u) + (weight u v))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v) -> - (i <= (length l))%Z) /\ forall (u:vertex), (mem (u, v) edges) -> - forall (lu:(list vertex)), (path s lu u) -> (i <= (length lu))%Z - end) -> forall (v:vertex), (mem v vertices) -> match (get m1 - v) with - | (Finite n) => True - | Infinite => forall (l:(list vertex)), (path s l v) -> - ((i + 1%Z)%Z <= (length l))%Z - end))). -intros. -destruct (get m1 v) as [] _eqn; auto. -intros l hpath. -destruct (path_right_inversion s v l hpath) as [(h1,h2) | (y, (l', (h1, (h2, h3))))]. -(* Nil *) -subst. -generalize (H6 s H7); clear H6. -ae. -(* s --l'--> y --> v *) -generalize (H6 v H7); clear H6. -rewrite Heqt0; simpl. -intros (hh1, hh2). -assert (i <= length l')%Z by ae. -assert (length l = length l' + 1)%Z. -subst l. apply Append_length. -ae. -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_19.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_19.v deleted file mode 100755 index 07ac795fc8..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_19.v +++ /dev/null @@ -1,406 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive list (a:Type) := - | Nil : list a - | Cons : a -> (list a) -> list a. -Set Contextual Implicit. -Implicit Arguments Nil. -Unset Contextual Implicit. -Implicit Arguments Cons. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint length (a:Type)(l:(list a)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons _ r) => (1%Z + (length r))%Z - end. -Unset Implicit Arguments. - -Axiom Length_nonnegative : forall (a:Type), forall (l:(list a)), - (0%Z <= (length l))%Z. - -Axiom Length_nil : forall (a:Type), forall (l:(list a)), - ((length l) = 0%Z) <-> (l = (Nil :(list a))). - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set1 a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set1 a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Axiom cardinal1 : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 1%Z) -> forall (x:a), (mem x s) -> (x = (choose s)). - -Parameter nth: forall (a:Type), Z -> (set1 a) -> a. -Implicit Arguments nth. - -Axiom nth_injective : forall (a:Type), forall (s:(set1 a)) (i:Z) (j:Z), - ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (((0%Z <= j)%Z /\ - (j < (cardinal s))%Z) -> (((nth i s) = (nth j s)) -> (i = j))). - -Axiom nth_surjective : forall (a:Type), forall (s:(set1 a)) (x:a), (mem x - s) -> exists i:Z, ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (x = (nth i - s)). - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -(* Why3 assumption *) -Definition edge(x:vertex) (y:vertex): Prop := (mem (x, y) edges). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -Parameter s: vertex. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint infix_plpl (a:Type)(l1:(list a)) (l2:(list a)) {struct l1}: (list - a) := - match l1 with - | Nil => l2 - | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) - end. -Unset Implicit Arguments. - -Axiom Append_assoc : forall (a:Type), forall (l1:(list a)) (l2:(list a)) - (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 - l3)) = (infix_plpl (infix_plpl l1 l2) l3)). - -Axiom Append_l_nil : forall (a:Type), forall (l:(list a)), ((infix_plpl l - (Nil :(list a))) = l). - -Axiom Append_length : forall (a:Type), forall (l1:(list a)) (l2:(list a)), - ((length (infix_plpl l1 l2)) = ((length l1) + (length l2))%Z). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint mem1 (a:Type)(x:a) (l:(list a)) {struct l}: Prop := - match l with - | Nil => False - | (Cons y r) => (x = y) \/ (mem1 x r) - end. -Unset Implicit Arguments. - -Axiom mem_append : forall (a:Type), forall (x:a) (l1:(list a)) (l2:(list a)), - (mem1 x (infix_plpl l1 l2)) <-> ((mem1 x l1) \/ (mem1 x l2)). - -Axiom mem_decomp : forall (a:Type), forall (x:a) (l:(list a)), (mem1 x l) -> - exists l1:(list a), exists l2:(list a), (l = (infix_plpl l1 (Cons x l2))). - -(* Why3 assumption *) -Inductive path : vertex -> (list vertex) -> vertex -> Prop := - | Path_empty : forall (x:vertex), (path x (Nil :(list vertex)) x) - | Path_cons : forall (x:vertex) (y:vertex) (z:vertex) (l:(list vertex)), - (edge x y) -> ((path y l z) -> (path x (Cons x l) z)). - -Axiom path_right_extension : forall (x:vertex) (y:vertex) (z:vertex) (l:(list - vertex)), (path x l y) -> ((edge y z) -> (path x (infix_plpl l (Cons y - (Nil :(list vertex)))) z)). - -Axiom path_right_inversion : forall (x:vertex) (z:vertex) (l:(list vertex)), - (path x l z) -> (((x = z) /\ (l = (Nil :(list vertex)))) \/ - exists y:vertex, exists lqt:(list vertex), (path x lqt y) /\ ((edge y z) /\ - (l = (infix_plpl lqt (Cons y (Nil :(list vertex))))))). - -Axiom path_trans : forall (x:vertex) (y:vertex) (z:vertex) (l1:(list vertex)) - (l2:(list vertex)), (path x l1 y) -> ((path y l2 z) -> (path x - (infix_plpl l1 l2) z)). - -Axiom empty_path : forall (x:vertex) (y:vertex), (path x (Nil :(list vertex)) - y) -> (x = y). - -Parameter weight: vertex -> vertex -> Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint path_weight(l:(list vertex)) (dst:vertex) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons x Nil) => (weight x dst) - | (Cons x ((Cons y _) as r)) => ((weight x y) + (path_weight r dst))%Z - end. -Unset Implicit Arguments. - -Axiom path_weight_right_extension : forall (x:vertex) (y:vertex) (l:(list - vertex)), ((path_weight (infix_plpl l (Cons x (Nil :(list vertex)))) - y) = ((path_weight l x) + (weight x y))%Z). - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (l:(list vertex)), - (mem v1 vertices) -> ((path v1 l v2) -> (mem v2 vertices)). - -Axiom simple_path : forall (v:vertex) (l:(list vertex)), (path s l v) -> - exists lqt:(list vertex), (path s lqt v) /\ - ((length lqt) < (cardinal vertices))%Z. - -(* Why3 assumption *) -Definition negative_cycle(v:vertex): Prop := (mem v vertices) /\ - ((exists l1:(list vertex), (path s l1 v)) /\ exists l2:(list vertex), - (path v l2 v) /\ ((path_weight l2 v) < 0%Z)%Z). - -Axiom key_lemma_1 : forall (v:vertex) (n:Z), (forall (l:(list vertex)), - (path s l v) -> (((length l) < (cardinal vertices))%Z -> - (n <= (path_weight l v))%Z)) -> ((exists l:(list vertex), (path s l v) /\ - ((path_weight l v) < n)%Z) -> exists u:vertex, (negative_cycle u)). - -(* Why3 assumption *) -Inductive t := - | Finite : Z -> t - | Infinite : t . - -(* Why3 assumption *) -Definition add1(x:t) (y:t): t := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition lt(x:t) (y:t): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition le(x:t) (y:t): Prop := (lt x y) \/ (x = y). - -Axiom Refl : forall (x:t), (le x x). - -Axiom Trans : forall (x:t) (y:t) (z:t), (le x y) -> ((le y z) -> (le x z)). - -Axiom Antisymm : forall (x:t) (y:t), (le x y) -> ((le y x) -> (x = y)). - -Axiom Total : forall (x:t) (y:t), (le x y) \/ (le y x). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -(* Why3 assumption *) -Definition t1 (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex t). - -(* Why3 assumption *) -Definition inv1(m:(map vertex t)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists l:(list vertex), (path s l v) /\ ((path_weight l - v) = n)) /\ ((forall (l:(list vertex)), (path s l v) -> - (((length l) < pass)%Z -> (n <= (path_weight l v))%Z)) /\ - forall (u:vertex) (l:(list vertex)), (path s l u) -> - (((length l) < pass)%Z -> ((mem (u, v) via) -> (n <= ((path_weight l - u) + (weight u v))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v) -> - (pass <= (length l))%Z) /\ forall (u:vertex), (mem (u, v) via) -> - forall (lu:(list vertex)), (path s lu u) -> (pass <= (length lu))%Z - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex t)) (via:(set1 (vertex* vertex)%type)): Prop := - forall (u:vertex) (v:vertex), (mem (u, v) via) -> (le (get m v) - (add1 (get m u) (Finite (weight u v)))). - -Axiom key_lemma_2 : forall (m:(map vertex t)), (inv1 m (cardinal vertices) - (empty :(set1 (vertex* vertex)%type))) -> ((inv2 m edges) -> - forall (v:vertex), ~ (negative_cycle v)). - -Require Import Why3. -Ltac ae := why3 "alt-ergo". - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (1%Z <= ((cardinal vertices) - 1%Z)%Z)%Z -> - forall (m:(map vertex t)), (inv1 m (((cardinal vertices) - 1%Z)%Z + 1%Z)%Z - (empty :(set1 (vertex* vertex)%type))) -> ((inv1 m (cardinal vertices) - (empty :(set1 (vertex* vertex)%type))) -> forall (result:(set1 (vertex* - vertex)%type)), (result = edges) -> forall (es:(set1 (vertex* - vertex)%type)), ((subset es edges) /\ (inv2 m (diff edges es))) -> - forall (result1:bool), ((result1 = true) <-> (is_empty es)) -> - ((result1 = true) -> ((inv2 m edges) -> forall (v:vertex), (mem v - vertices) -> match (get m - v) with - | (Finite n) => forall (l:(list vertex)), (path s l v) -> - (n <= (path_weight l v))%Z - | Infinite => True - end))). -intros _ m _ hinv1. -intros _ _ _ _ _ _ _ hinv2. -intros v hv. -destruct (get m v) as [] _eqn; auto. -intros l hl. -assert (case: (z <= path_weight l v \/ path_weight l v < z)%Z) by omega. -destruct case; auto. -destruct (key_lemma_1 v z) as (u, hu). -generalize (hinv1 v hv); clear hinv1 hinv2. -rewrite Heqt0; ae. -exists l; intuition. -ae. -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_2.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_2.v deleted file mode 100755 index 2ad56da9c9..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_2.v +++ /dev/null @@ -1,437 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -Axiom shortest_path_unique_distance : forall (v:vertex) (n:Z) (d:Z), - (shortest_path s v n d) -> forall (nqt:Z) (dqt:Z), (~ (n = nqt)) -> - ~ (shortest_path s v nqt dqt). - -Axiom no_path_xor_shortest_path_exists : (~ (negcycle )) -> - forall (v:vertex), (mem v vertices) -> ((no_path s v) <-> ~ exists n:Z, - exists d:Z, (shortest_path s v n d)). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -Axiom set_empty : forall (a:Type), forall (a1:(set1 a)), (is_empty a1) <-> - (a1 = (empty :(set1 a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((inter a1 b) = (empty :(set1 a))) -> ((mem e a1) -> ~ (mem e b)). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Axiom set_empty_union : forall (a:Type), forall (a1:(set1 a)), ((union a1 - (empty :(set1 a))) = a1). - -Axiom set_empty_inter : forall (a:Type), forall (a1:(set1 a)), ((inter a1 - (empty :(set1 a))) = (empty :(set1 a))). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition path_ends_with(v1:vertex) (v2:vertex) (n:Z) (d:Z) (via:(set1 - (vertex* vertex)%type)): Prop := exists u:vertex, (mem (u, v2) via) /\ - (path v1 u (n - (weight u v2))%Z (d - 1%Z)%Z). - -(* Why3 assumption *) -Definition inv1(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> - forall (nqt:Z), (path s v nqt dqt) -> (n <= nqt)%Z) /\ forall (nqt:Z), - (path_ends_with s v nqt pass via) -> (n <= nqt)%Z) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex dist)) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt via) -> - (n <= nqt)%Z - | Infinite => True - end. - -Axiom inv1_next : forall (m:(map vertex dist)) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ((inv1 m d edges) -> (inv1 m (d + 1%Z)%Z - (empty :(set1 (vertex* vertex)%type)))). - -Axiom inv2_shortest : forall (v:vertex), (mem v vertices) -> forall (n:Z), - ((exists d:Z, ((0%Z <= d)%Z /\ (d < (cardinal vertices))%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ - (dqt < (cardinal vertices))%Z) -> forall (nqt:Z), (path s v nqt dqt) -> - (n <= nqt)%Z) /\ forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt - edges) -> (n <= nqt)%Z)) -> exists d:Z, (shortest_path s v n d). - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (1%Z <= ((cardinal vertices) - 1%Z)%Z)%Z -> - forall (m:(map vertex dist)), (inv1 m - (((cardinal vertices) - 1%Z)%Z + 1%Z)%Z (empty :(set1 (vertex* - vertex)%type))) -> forall (es_co:(set1 (vertex* vertex)%type)), - forall (es:(set1 (vertex* vertex)%type)), ((inv2 m es_co) /\ - ((infix_eqeq (union es es_co) edges) /\ (infix_eqeq (inter es es_co) - (empty :(set1 (vertex* vertex)%type))))) -> forall (result:bool), - ((result = true) <-> (is_empty es)) -> ((~ (result = true)) -> - ((~ (is_empty es)) -> forall (es1:(set1 (vertex* vertex)%type)), - forall (result1:vertex) (result2:vertex), let result3 := (result1, - result2) in (((mem result3 es) /\ (es1 = (remove result3 es))) -> - ((~ match (get m - result2) with - | Infinite => False - | (Finite x) => match (get m - result1) with - | Infinite => True - | (Finite x1) => (x < (x1 + (weight result1 result2))%Z)%Z - end - end) -> forall (es_co1:(set1 (vertex* vertex)%type)), (es_co1 = (add ( - result1, result2) es_co)) -> (inv2 m es_co1))))). - - - -intros _ m _. -intros esco es [ H1 _ ]. -intros _ _ _ _ es1 r1 r2 r3. -intros H2 H3. -intro esco1. -intro H4. -unfold inv2 in *. -intro v. -intro H5. - -apply H1 in H5. -destruct (get m v) as [] _eqn ; auto. - -intros n d. -unfold path_ends_with in *. -intro H6. -destruct H6 as [ u H6 ]. - -Require Import Classical. -destruct (classic ((u, v) = (r1, r2))). -admit. - -apply H5 with (nqt := n) (dqt := d). -exists u. -destruct H6. -split ; try assumption. -subst. -apply add_def1 in H0. -tauto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_20.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_20.v deleted file mode 100755 index e28c484a89..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_20.v +++ /dev/null @@ -1,415 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive list (a:Type) := - | Nil : list a - | Cons : a -> (list a) -> list a. -Set Contextual Implicit. -Implicit Arguments Nil. -Unset Contextual Implicit. -Implicit Arguments Cons. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint length (a:Type)(l:(list a)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons _ r) => (1%Z + (length r))%Z - end. -Unset Implicit Arguments. - -Axiom Length_nonnegative : forall (a:Type), forall (l:(list a)), - (0%Z <= (length l))%Z. - -Axiom Length_nil : forall (a:Type), forall (l:(list a)), - ((length l) = 0%Z) <-> (l = (Nil :(list a))). - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set1 a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set1 a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Axiom cardinal1 : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 1%Z) -> forall (x:a), (mem x s) -> (x = (choose s)). - -Parameter nth: forall (a:Type), Z -> (set1 a) -> a. -Implicit Arguments nth. - -Axiom nth_injective : forall (a:Type), forall (s:(set1 a)) (i:Z) (j:Z), - ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (((0%Z <= j)%Z /\ - (j < (cardinal s))%Z) -> (((nth i s) = (nth j s)) -> (i = j))). - -Axiom nth_surjective : forall (a:Type), forall (s:(set1 a)) (x:a), (mem x - s) -> exists i:Z, ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (x = (nth i - s)). - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -(* Why3 assumption *) -Definition edge(x:vertex) (y:vertex): Prop := (mem (x, y) edges). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -Parameter s: vertex. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint infix_plpl (a:Type)(l1:(list a)) (l2:(list a)) {struct l1}: (list - a) := - match l1 with - | Nil => l2 - | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) - end. -Unset Implicit Arguments. - -Axiom Append_assoc : forall (a:Type), forall (l1:(list a)) (l2:(list a)) - (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 - l3)) = (infix_plpl (infix_plpl l1 l2) l3)). - -Axiom Append_l_nil : forall (a:Type), forall (l:(list a)), ((infix_plpl l - (Nil :(list a))) = l). - -Axiom Append_length : forall (a:Type), forall (l1:(list a)) (l2:(list a)), - ((length (infix_plpl l1 l2)) = ((length l1) + (length l2))%Z). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint mem1 (a:Type)(x:a) (l:(list a)) {struct l}: Prop := - match l with - | Nil => False - | (Cons y r) => (x = y) \/ (mem1 x r) - end. -Unset Implicit Arguments. - -Axiom mem_append : forall (a:Type), forall (x:a) (l1:(list a)) (l2:(list a)), - (mem1 x (infix_plpl l1 l2)) <-> ((mem1 x l1) \/ (mem1 x l2)). - -Axiom mem_decomp : forall (a:Type), forall (x:a) (l:(list a)), (mem1 x l) -> - exists l1:(list a), exists l2:(list a), (l = (infix_plpl l1 (Cons x l2))). - -(* Why3 assumption *) -Inductive path : vertex -> (list vertex) -> vertex -> Prop := - | Path_empty : forall (x:vertex), (path x (Nil :(list vertex)) x) - | Path_cons : forall (x:vertex) (y:vertex) (z:vertex) (l:(list vertex)), - (edge x y) -> ((path y l z) -> (path x (Cons x l) z)). - -Axiom path_right_extension : forall (x:vertex) (y:vertex) (z:vertex) (l:(list - vertex)), (path x l y) -> ((edge y z) -> (path x (infix_plpl l (Cons y - (Nil :(list vertex)))) z)). - -Axiom path_right_inversion : forall (x:vertex) (z:vertex) (l:(list vertex)), - (path x l z) -> (((x = z) /\ (l = (Nil :(list vertex)))) \/ - exists y:vertex, exists lqt:(list vertex), (path x lqt y) /\ ((edge y z) /\ - (l = (infix_plpl lqt (Cons y (Nil :(list vertex))))))). - -Axiom path_trans : forall (x:vertex) (y:vertex) (z:vertex) (l1:(list vertex)) - (l2:(list vertex)), (path x l1 y) -> ((path y l2 z) -> (path x - (infix_plpl l1 l2) z)). - -Axiom empty_path : forall (x:vertex) (y:vertex), (path x (Nil :(list vertex)) - y) -> (x = y). - -Parameter weight: vertex -> vertex -> Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint path_weight(l:(list vertex)) (dst:vertex) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons x Nil) => (weight x dst) - | (Cons x ((Cons y _) as r)) => ((weight x y) + (path_weight r dst))%Z - end. -Unset Implicit Arguments. - -Axiom path_weight_right_extension : forall (x:vertex) (y:vertex) (l:(list - vertex)), ((path_weight (infix_plpl l (Cons x (Nil :(list vertex)))) - y) = ((path_weight l x) + (weight x y))%Z). - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (l:(list vertex)), - (mem v1 vertices) -> ((path v1 l v2) -> (mem v2 vertices)). - -Axiom simple_path : forall (v:vertex) (l:(list vertex)), (path s l v) -> - exists lqt:(list vertex), (path s lqt v) /\ - ((length lqt) < (cardinal vertices))%Z. - -(* Why3 assumption *) -Definition negative_cycle(v:vertex): Prop := (mem v vertices) /\ - ((exists l1:(list vertex), (path s l1 v)) /\ exists l2:(list vertex), - (path v l2 v) /\ ((path_weight l2 v) < 0%Z)%Z). - -Axiom key_lemma_1 : forall (v:vertex) (n:Z), (forall (l:(list vertex)), - (path s l v) -> (((length l) < (cardinal vertices))%Z -> - (n <= (path_weight l v))%Z)) -> ((exists l:(list vertex), (path s l v) /\ - ((path_weight l v) < n)%Z) -> exists u:vertex, (negative_cycle u)). - -(* Why3 assumption *) -Inductive t := - | Finite : Z -> t - | Infinite : t . - -(* Why3 assumption *) -Definition add1(x:t) (y:t): t := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition lt(x:t) (y:t): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition le(x:t) (y:t): Prop := (lt x y) \/ (x = y). - -Axiom Refl : forall (x:t), (le x x). - -Axiom Trans : forall (x:t) (y:t) (z:t), (le x y) -> ((le y z) -> (le x z)). - -Axiom Antisymm : forall (x:t) (y:t), (le x y) -> ((le y x) -> (x = y)). - -Axiom Total : forall (x:t) (y:t), (le x y) \/ (le y x). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -(* Why3 assumption *) -Definition t1 (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex t). - -(* Why3 assumption *) -Definition inv1(m:(map vertex t)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists l:(list vertex), (path s l v) /\ ((path_weight l - v) = n)) /\ ((forall (l:(list vertex)), (path s l v) -> - (((length l) < pass)%Z -> (n <= (path_weight l v))%Z)) /\ - forall (u:vertex) (l:(list vertex)), (path s l u) -> - (((length l) < pass)%Z -> ((mem (u, v) via) -> (n <= ((path_weight l - u) + (weight u v))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v) -> - (pass <= (length l))%Z) /\ forall (u:vertex), (mem (u, v) via) -> - forall (lu:(list vertex)), (path s lu u) -> (pass <= (length lu))%Z - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex t)) (via:(set1 (vertex* vertex)%type)): Prop := - forall (u:vertex) (v:vertex), (mem (u, v) via) -> (le (get m v) - (add1 (get m u) (Finite (weight u v)))). - -Axiom key_lemma_2 : forall (m:(map vertex t)), (inv2 m edges) -> - forall (v:vertex), ~ (negative_cycle v). - -Require Import Why3. -Ltac ae := why3 "alt-ergo". - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (((cardinal vertices) - 1%Z)%Z < 1%Z)%Z -> - ((inv1 (set (const Infinite:(map vertex t)) s (Finite 0%Z)) - (cardinal vertices) (empty :(set1 (vertex* vertex)%type))) -> - forall (result:(set1 (vertex* vertex)%type)), (result = edges) -> - forall (es:(set1 (vertex* vertex)%type)), ((subset es edges) /\ - (inv2 (set (const Infinite:(map vertex t)) s (Finite 0%Z)) (diff edges - es))) -> forall (result1:bool), ((result1 = true) <-> (is_empty es)) -> - ((~ (result1 = true)) -> ((~ (is_empty es)) -> forall (es1:(set1 (vertex* - vertex)%type)), forall (result2:vertex) (result3:vertex), let result4 := ( - result2, result3) in (((mem result4 es) /\ (es1 = (remove result4 es))) -> - (match (get (set (const Infinite:(map vertex t)) s (Finite 0%Z)) - result2) with - | Infinite => False - | (Finite x) => match (get (set (const Infinite:(map vertex t)) s - (Finite 0%Z)) - result3) with - | Infinite => True - | (Finite y) => ((x + (weight result2 result3))%Z < y)%Z - end - end -> exists v:vertex, (negative_cycle v)))))). -intros Hvertices _. -assert (Hs: (cardinal vertices = 1)%Z) by ae. clear Hvertices. -generalize (cardinal1 _ vertices Hs). clear Hs. intros H1. -assert (Hs: s = choose vertices) by ae. -intros result hresult. subst result. -intros es (Hes,_) _ _ _ _ es1. -intros u v res4. unfold res4. -intros (Huv, _). -assert (u = s) by ae. subst u. -assert (v = s) by ae. subst v. -rewrite Select_eq; auto. -intros hneg. -exists s. red. -split. ae. -split. exists Nil; ae. -exists (Cons s Nil); ae. -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_3.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_3.v deleted file mode 100755 index f491fe90bf..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_3.v +++ /dev/null @@ -1,448 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -Axiom shortest_path_unique_distance : forall (v:vertex) (n:Z) (d:Z), - (shortest_path s v n d) -> forall (nqt:Z) (dqt:Z), (~ (n = nqt)) -> - ~ (shortest_path s v nqt dqt). - -Axiom no_path_xor_shortest_path_exists : (~ (negcycle )) -> - forall (v:vertex), (mem v vertices) -> ((no_path s v) <-> ~ exists n:Z, - exists d:Z, (shortest_path s v n d)). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -Axiom set_empty : forall (a:Type), forall (a1:(set1 a)), (is_empty a1) <-> - (a1 = (empty :(set1 a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((inter a1 b) = (empty :(set1 a))) -> ((mem e a1) -> ~ (mem e b)). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Axiom set_empty_union : forall (a:Type), forall (a1:(set1 a)), ((union a1 - (empty :(set1 a))) = a1). - -Axiom set_empty_inter : forall (a:Type), forall (a1:(set1 a)), ((inter a1 - (empty :(set1 a))) = (empty :(set1 a))). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition path_ends_with(v1:vertex) (v2:vertex) (n:Z) (d:Z) (via:(set1 - (vertex* vertex)%type)): Prop := exists u:vertex, (mem (u, v2) via) /\ - (path v1 u (n - (weight u v2))%Z (d - 1%Z)%Z). - -(* Why3 assumption *) -Definition inv1(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> - forall (nqt:Z), (path s v nqt dqt) -> (n <= nqt)%Z) /\ forall (nqt:Z), - (path_ends_with s v nqt pass via) -> (n <= nqt)%Z) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex dist)) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt via) -> - (n <= nqt)%Z - | Infinite => True - end. - -Axiom inv1_next : forall (m:(map vertex dist)) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ((inv1 m d edges) -> (inv1 m (d + 1%Z)%Z - (empty :(set1 (vertex* vertex)%type)))). - -Axiom inv2_shortest : forall (v:vertex), (mem v vertices) -> forall (n:Z), - ((exists d:Z, ((0%Z <= d)%Z /\ (d < (cardinal vertices))%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ - (dqt < (cardinal vertices))%Z) -> forall (nqt:Z), (path s v nqt dqt) -> - (n <= nqt)%Z) /\ forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt - edges) -> (n <= nqt)%Z)) -> exists d:Z, (shortest_path s v n d). - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (((cardinal vertices) - 1%Z)%Z < 1%Z)%Z -> - forall (es_co:(set1 (vertex* vertex)%type)), forall (es:(set1 (vertex* - vertex)%type)), ((inv2 (set (const Infinite:(map vertex dist)) s - (Finite 0%Z)) es_co) /\ ((infix_eqeq (union es es_co) edges) /\ - (infix_eqeq (inter es es_co) (empty :(set1 (vertex* vertex)%type))))) -> - forall (result:bool), ((result = true) <-> (is_empty es)) -> - ((~ (result = true)) -> ((~ (is_empty es)) -> forall (es1:(set1 (vertex* - vertex)%type)), forall (result1:vertex) (result2:vertex), let result3 := ( - result1, result2) in (((mem result3 es) /\ (es1 = (remove result3 es))) -> - ((let pass := (cardinal vertices) in ((mem result2 vertices) -> - match (get (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) - result2) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s - result2 n d)) /\ forall (dqt:Z), ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> - forall (nqt:Z), (path s result2 nqt dqt) -> (n <= nqt)%Z - | Infinite => forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s result2 n d) - end)) -> (match (get (set (const Infinite:(map vertex dist)) s - (Finite 0%Z)) - result1) with - | Infinite => False - | (Finite x) => match (get (set (const Infinite:(map vertex dist)) s - (Finite 0%Z)) - result2) with - | Infinite => True - | (Finite y) => ((x + (weight result1 result2))%Z < y)%Z - end - end -> match (get (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) - result2) with - | Infinite => False - | (Finite dv) => True - end))))). -intuition. -intuition. -subst. - -destruct (get (set (const Infinite) s (Finite 0)) result2); try trivial. -destruct (get (set (const Infinite) s (Finite 0)) result1) as [] _eqn; try contradiction. - -Require Import Classical. -destruct (classic (s = result1)). - -rewrite Select_eq in Heqd. -subst. -admit. -(* -assert (subset es edges). admit. -assert (mem (s, result2) edges). admit. -apply edges_def in H11. -destruct H11 as [ H11 [ H12 H13 ]]. -apply H8. - -apply H8 in H13. - -assert (z = 0)%Z. admit. - - -*) -assumption. - -rewrite Select_neq in Heqd. -rewrite Const in Heqd. -admit. -assumption. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_4.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_4.v deleted file mode 100755 index ade4b91a3d..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_4.v +++ /dev/null @@ -1,391 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -Axiom shortest_path_unique_distance : forall (v:vertex) (n:Z) (d:Z), - (shortest_path s v n d) -> forall (nqt:Z) (dqt:Z), (~ (n = nqt)) -> - ~ (shortest_path s v nqt dqt). - -Axiom no_path_xor_shortest_path_exists : (~ (negcycle )) -> - forall (v:vertex), (mem v vertices) -> ((no_path s v) <-> ~ exists n:Z, - exists d:Z, (shortest_path s v n d)). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -Axiom set_empty : forall (a:Type), forall (a1:(set1 a)), (is_empty a1) <-> - (a1 = (empty :(set1 a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((inter a1 b) = (empty :(set1 a))) -> ((mem e a1) -> ~ (mem e b)). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Axiom set_empty_union : forall (a:Type), forall (a1:(set1 a)), ((union a1 - (empty :(set1 a))) = a1). - -Axiom set_empty_inter : forall (a:Type), forall (a1:(set1 a)), ((inter a1 - (empty :(set1 a))) = (empty :(set1 a))). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition path_ends_with(v1:vertex) (v2:vertex) (n:Z) (d:Z) (via:(set1 - (vertex* vertex)%type)): Prop := exists u:vertex, (mem (u, v2) via) /\ - (path v1 u (n - (weight u v2))%Z (d - 1%Z)%Z). - -(* Why3 assumption *) -Definition inv1(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> - forall (nqt:Z), (path s v nqt dqt) -> (n <= nqt)%Z) /\ forall (nqt:Z), - (path_ends_with s v nqt pass via) -> (n <= nqt)%Z) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex dist)) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt via) -> - (n <= nqt)%Z - | Infinite => True - end. - -Axiom inv1_next : forall (m:(map vertex dist)) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ((inv1 m d edges) -> (inv1 m (d + 1%Z)%Z - (empty :(set1 (vertex* vertex)%type)))). - -Axiom inv2_shortest : forall (v:vertex), (mem v vertices) -> forall (n:Z), - ((exists d:Z, ((0%Z <= d)%Z /\ (d < (cardinal vertices))%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ - (dqt < (cardinal vertices))%Z) -> forall (nqt:Z), (path s v nqt dqt) -> - (n <= nqt)%Z) /\ forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt - edges) -> (n <= nqt)%Z)) -> exists d:Z, (shortest_path s v n d). - -Axiom path_ends_with_edge_shortest_path : forall (v:vertex) (n:Z), - (forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt edges) -> - (n <= nqt)%Z) -> exists d:Z, (shortest_path s v n d). - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (inv1 (set (const Infinite:(map vertex - dist)) s (Finite 0%Z)) 1%Z (empty :(set1 (vertex* vertex)%type))). -intuition. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_5.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_5.v deleted file mode 100755 index 8148932e7b..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_5.v +++ /dev/null @@ -1,356 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (v3:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> ((mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z)). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (m:Z) (dd:Z), (m < n)%Z -> ~ (path v1 v2 m dd). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition paths(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> - (match (get m - v) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s v n - d)) \/ exists u:vertex, (mem (u, v) via) /\ exists d:Z, - ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s u (n - (weight u v))%Z pass) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end /\ ((no_path s v) -> ((get m v) = Infinite))). - -Axiom paths_subset_2 : forall (m:(map vertex dist)) (p:Z), (paths m p - edges) -> (paths m (p + 1%Z)%Z (empty :(set1 (vertex* vertex)%type))). - -Axiom paths_subset : forall (m:(map vertex dist)) (p:Z) (k:(set1 (vertex* - vertex)%type)), (paths m p k) -> (paths m p (empty :(set1 (vertex* - vertex)%type))). - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (paths (set (const Infinite:(map vertex - dist)) s (Finite 0%Z)) 1%Z (empty :(set1 (vertex* vertex)%type))) -> - ((1%Z <= ((cardinal vertices) - 1%Z)%Z)%Z -> forall (m:(map vertex dist)), - forall (i:Z), ((1%Z <= i)%Z /\ (i <= ((cardinal vertices) - 1%Z)%Z)%Z) -> - ((paths m i (empty :(set1 (vertex* vertex)%type))) -> forall (es_co:(set1 - (vertex* vertex)%type)), forall (es:(set1 (vertex* vertex)%type)), - forall (m1:(map vertex dist)), (((inter es es_co) = edges) /\ (paths m1 i - es_co)) -> forall (result:bool), ((result = true) <-> (is_empty es)) -> - ((~ (result = true)) -> ((~ (is_empty es)) -> forall (es1:(set1 (vertex* - vertex)%type)), forall (result1:vertex) (result2:vertex), let result3 := ( - result1, result2) in (((mem result3 es) /\ (es1 = (remove result3 es))) -> - (((mem (result1, result2) edges) /\ (paths m1 i es_co)) -> forall (m2:(map - vertex dist)), ((paths m2 i (add (result1, result2) es_co)) /\ - (match (get m1 - result2) with - | Infinite => True - | (Finite x) => match (get m2 - result2) with - | Infinite => False - | (Finite y) => (y <= x)%Z - end - end /\ (match (get m1 - result2) with - | (Finite n) => (exists d:Z, (shortest_path s result2 n d)) -> (m1 = m2) - | Infinite => True - end /\ forall (x:vertex), (~ (x = result2)) -> ((get m1 x) = (get m2 - x))))) -> forall (es_co1:(set1 (vertex* vertex)%type)), (es_co1 = (add ( - result1, result2) es_co)) -> ((inter es1 es_co1) = edges))))))). -intuition. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_6.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_6.v deleted file mode 100755 index 31c3ebb3a8..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_6.v +++ /dev/null @@ -1,376 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (v3:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> ((mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z)). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (m:Z) (dd:Z), (m < n)%Z -> ~ (path v1 v2 m dd). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition paths(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> - (match (get m - v) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s v n - d)) \/ exists u:vertex, (mem (u, v) via) /\ exists d:Z, - ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s u (n - (weight u v))%Z pass) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end /\ ((no_path s v) -> ((get m v) = Infinite))). - -Axiom paths_next : forall (m:(map vertex dist)) (p:Z), (paths m p edges) -> - (paths m (p + 1%Z)%Z (empty :(set1 (vertex* vertex)%type))). - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (paths (set (const Infinite:(map vertex - dist)) s (Finite 0%Z)) 1%Z (empty :(set1 (vertex* vertex)%type))) -> - ((((cardinal vertices) - 1%Z)%Z < 1%Z)%Z -> forall (e:(set1 (vertex* - vertex)%type)), forall (result:bool), ((result = true) <-> (is_empty e)) -> - ((~ (result = true)) -> ((~ (is_empty e)) -> forall (e1:(set1 (vertex* - vertex)%type)), forall (result1:vertex) (result2:vertex), let result3 := ( - result1, result2) in (((mem result3 e) /\ (e1 = (remove result3 e))) -> - ((~ match (get (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) - result2) with - | Infinite => False - | (Finite x) => match (get (set (const Infinite:(map vertex dist)) s - (Finite 0%Z)) - result1) with - | Infinite => True - | (Finite x1) => (x < (x1 + (weight result1 result2))%Z)%Z - end - end) -> ((cardinal e1) < (cardinal e))%Z))))). -intuition. -intuition. -subst. - -destruct (get (set (const Infinite) s (Finite 0)) result2); try trivial. -destruct (get (set (const Infinite) s (Finite 0)) result1) as [] _eqn; try contradiction. - -Require Import Classical. -destruct (classic (s = result1)). - -rewrite Select_eq in Heqd. -subst. -admit. -(* -assert (subset es edges). admit. -assert (mem (s, result2) edges). admit. -apply edges_def in H11. -destruct H11 as [ H11 [ H12 H13 ]]. -apply H8. - -apply H8 in H13. - -assert (z = 0)%Z. admit. - - -*) -assumption. - -rewrite Select_neq in Heqd. -rewrite Const in Heqd. -admit. -assumption. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_7.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_7.v deleted file mode 100755 index 4d94f1e21e..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_7.v +++ /dev/null @@ -1,354 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (v3:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> ((mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z)). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (m:Z) (dd:Z), (m < n)%Z -> ~ (path v1 v2 m dd). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition paths(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> - (match (get m - v) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s v n - d)) \/ exists u:vertex, (mem (u, v) via) /\ exists d:Z, - ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s u (n - (weight u v))%Z pass) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end /\ ((no_path s v) -> ((get m v) = Infinite))). - -Axiom paths_next : forall (m:(map vertex dist)) (p:Z), (paths m p edges) -> - (paths m (p + 1%Z)%Z (empty :(set1 (vertex* vertex)%type))). - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (paths (set (const Infinite:(map vertex - dist)) s (Finite 0%Z)) 1%Z (empty :(set1 (vertex* vertex)%type))) -> - ((1%Z <= ((cardinal vertices) - 1%Z)%Z)%Z -> forall (m:(map vertex dist)), - (paths m (((cardinal vertices) - 1%Z)%Z + 1%Z)%Z (empty :(set1 (vertex* - vertex)%type))) -> forall (e:(set1 (vertex* vertex)%type)), - forall (result:bool), ((result = true) <-> (is_empty e)) -> - ((result = true) -> (((paths m (cardinal vertices) (empty :(set1 (vertex* - vertex)%type))) /\ forall (v:vertex), (mem v vertices) -> (((no_path s - v) -> ((get m v) = Infinite)) /\ forall (n:Z) (d:Z), (shortest_path s v n - d) -> ((get m v) = (Finite n)))) -> forall (v:vertex), (mem v vertices) -> - match (get m - v) with - | Infinite => True - | (Finite n) => exists d:Z, (shortest_path s v n d) - end))). -intuition. - -unfold inv1 in H2. -unfold inv2 in H9. -assert (H12 : mem v vertices) ; auto. -assert (H13 : mem v vertices) ; auto. -apply H2 in H12. -apply H9 in H13. - -destruct (get m v) ; auto. -apply inv2_shortest ; auto. -tauto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_8.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_8.v deleted file mode 100755 index 25f5cf2e4d..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_8.v +++ /dev/null @@ -1,458 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -Axiom shortest_path_unique_distance : forall (v:vertex) (n:Z) (d:Z), - (shortest_path s v n d) -> forall (nqt:Z) (dqt:Z), (~ (n = nqt)) -> - ~ (shortest_path s v nqt dqt). - -Axiom no_path_xor_shortest_path_exists : (~ (negcycle )) -> - forall (v:vertex), (mem v vertices) -> ((no_path s v) <-> ~ exists n:Z, - exists d:Z, (shortest_path s v n d)). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -Axiom set_empty : forall (a:Type), forall (a1:(set1 a)), (is_empty a1) <-> - (a1 = (empty :(set1 a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((inter a1 b) = (empty :(set1 a))) -> ((mem e a1) -> ~ (mem e b)). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Axiom set_empty_union : forall (a:Type), forall (a1:(set1 a)), ((union a1 - (empty :(set1 a))) = a1). - -Axiom set_empty_inter : forall (a:Type), forall (a1:(set1 a)), ((inter a1 - (empty :(set1 a))) = (empty :(set1 a))). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition path_ends_with(v1:vertex) (v2:vertex) (n:Z) (d:Z) (via:(set1 - (vertex* vertex)%type)): Prop := exists u:vertex, (mem (u, v2) via) /\ - (path v1 u (n - (weight u v2))%Z (d - 1%Z)%Z). - -(* Why3 assumption *) -Definition inv1(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> - forall (nqt:Z), (path s v nqt dqt) -> (n <= nqt)%Z) /\ forall (nqt:Z), - (path_ends_with s v nqt pass via) -> (n <= nqt)%Z) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex dist)) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt via) -> - (n <= nqt)%Z - | Infinite => True - end. - -Axiom inv1_next : forall (m:(map vertex dist)) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ((inv1 m d edges) -> (inv1 m (d + 1%Z)%Z - (empty :(set1 (vertex* vertex)%type)))). - -Axiom inv2_shortest : forall (v:vertex), (mem v vertices) -> forall (n:Z), - ((exists d:Z, ((0%Z <= d)%Z /\ (d < (cardinal vertices))%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ - (dqt < (cardinal vertices))%Z) -> forall (nqt:Z), (path s v nqt dqt) -> - (n <= nqt)%Z) /\ forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt - edges) -> (n <= nqt)%Z)) -> exists d:Z, (shortest_path s v n d). - -Axiom path_ends_with_edge_shortest_path : forall (v:vertex) (n:Z), - (forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt edges) -> - (n <= nqt)%Z) -> exists d:Z, (shortest_path s v n d). - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (inv1 (set (const Infinite:(map vertex - dist)) s (Finite 0%Z)) 1%Z (empty :(set1 (vertex* vertex)%type))) -> - ((((cardinal vertices) - 1%Z)%Z < 1%Z)%Z -> - ((inv1 (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) - (cardinal vertices) (empty :(set1 (vertex* vertex)%type))) -> - ((inv2 (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) - (empty :(set1 (vertex* vertex)%type))) -> forall (es_co:(set1 (vertex* - vertex)%type)), forall (es:(set1 (vertex* vertex)%type)), - ((inv2 (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) es_co) /\ - ((infix_eqeq (union es es_co) edges) /\ (infix_eqeq (inter es es_co) - (empty :(set1 (vertex* vertex)%type))))) -> forall (result:bool), - ((result = true) <-> (is_empty es)) -> ((~ (result = true)) -> - ((~ (is_empty es)) -> forall (es1:(set1 (vertex* vertex)%type)), - forall (result1:vertex) (result2:vertex), let result3 := (result1, - result2) in (((mem result3 es) /\ (es1 = (remove result3 es))) -> - ((let pass := (cardinal vertices) in ((mem result2 vertices) -> - match (get (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) - result2) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s - result2 n d)) /\ forall (dqt:Z), ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> - forall (nqt:Z), (path s result2 nqt dqt) -> (n <= nqt)%Z - | Infinite => forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s result2 n d) - end)) -> (match (get (set (const Infinite:(map vertex dist)) s - (Finite 0%Z)) - result1) with - | Infinite => False - | (Finite x) => match (get (set (const Infinite:(map vertex dist)) s - (Finite 0%Z)) - result2) with - | Infinite => True - | (Finite y) => ((x + (weight result1 result2))%Z < y)%Z - end - end -> match (get (set (const Infinite:(map vertex dist)) s (Finite 0%Z)) - result2) with - | Infinite => False - | (Finite dv) => True - end)))))))). -intuition. -intuition. -subst. - -destruct (get (set (const Infinite) s (Finite 0)) result2); try trivial. -destruct (get (set (const Infinite) s (Finite 0)) result1) as [] _eqn; try contradiction. - -Require Import Classical. -destruct (classic (s = result1)). - -rewrite Select_eq in Heqd. -subst. -admit. -(* -assert (subset es edges). admit. -assert (mem (s, result2) edges). admit. -apply edges_def in H11. -destruct H11 as [ H11 [ H12 H13 ]]. -apply H8. - -apply H8 in H13. - -assert (z = 0)%Z. admit. - - -*) -assumption. - -rewrite Select_neq in Heqd. -rewrite Const in Heqd. -admit. -assumption. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_9.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_9.v deleted file mode 100755 index a3cac2e89c..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_bellman_ford_9.v +++ /dev/null @@ -1,416 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -Axiom shortest_path_unique_distance : forall (v:vertex) (n:Z) (d:Z), - (shortest_path s v n d) -> forall (nqt:Z) (dqt:Z), (~ (n = nqt)) -> - ~ (shortest_path s v nqt dqt). - -Axiom no_path_xor_shortest_path_exists : (~ (negcycle )) -> - forall (v:vertex), (mem v vertices) -> ((no_path s v) <-> ~ exists n:Z, - exists d:Z, (shortest_path s v n d)). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -Axiom set_empty : forall (a:Type), forall (a1:(set1 a)), (is_empty a1) <-> - (a1 = (empty :(set1 a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((inter a1 b) = (empty :(set1 a))) -> ((mem e a1) -> ~ (mem e b)). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Axiom set_empty_union : forall (a:Type), forall (a1:(set1 a)), ((union a1 - (empty :(set1 a))) = a1). - -Axiom set_empty_inter : forall (a:Type), forall (a1:(set1 a)), ((inter a1 - (empty :(set1 a))) = (empty :(set1 a))). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition path_ends_with(v1:vertex) (v2:vertex) (n:Z) (d:Z) (via:(set1 - (vertex* vertex)%type)): Prop := exists u:vertex, (mem (u, v2) via) /\ - (path v1 u (n - (weight u v2))%Z (d - 1%Z)%Z). - -(* Why3 assumption *) -Definition inv1(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> - forall (nqt:Z), (path s v nqt dqt) -> (n <= nqt)%Z) /\ forall (nqt:Z), - (path_ends_with s v nqt pass via) -> (n <= nqt)%Z) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex dist)) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt via) -> - (n <= nqt)%Z - | Infinite => True - end. - -Axiom inv1_next : forall (m:(map vertex dist)) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ((inv1 m d edges) -> (inv1 m (d + 1%Z)%Z - (empty :(set1 (vertex* vertex)%type)))). - -Axiom inv2_shortest : forall (v:vertex), (mem v vertices) -> forall (n:Z), - ((exists d:Z, ((0%Z <= d)%Z /\ (d < (cardinal vertices))%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ - (dqt < (cardinal vertices))%Z) -> forall (nqt:Z), (path s v nqt dqt) -> - (n <= nqt)%Z) /\ forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt - edges) -> (n <= nqt)%Z)) -> exists d:Z, (shortest_path s v n d). - -Axiom path_ends_with_edge_shortest_path : forall (v:vertex) (n:Z), - (forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt edges) -> - (n <= nqt)%Z) -> exists d:Z, (shortest_path s v n d). - -(* Why3 goal *) -Theorem WP_parameter_bellman_ford : (inv1 (set (const Infinite:(map vertex - dist)) s (Finite 0%Z)) 1%Z (empty :(set1 (vertex* vertex)%type))) -> - ((1%Z <= ((cardinal vertices) - 1%Z)%Z)%Z -> forall (m:(map vertex dist)), - (inv1 m (((cardinal vertices) - 1%Z)%Z + 1%Z)%Z (empty :(set1 (vertex* - vertex)%type))) -> ((inv1 m (cardinal vertices) (empty :(set1 (vertex* - vertex)%type))) -> ((inv2 m (empty :(set1 (vertex* vertex)%type))) -> - forall (es_co:(set1 (vertex* vertex)%type)), forall (es:(set1 (vertex* - vertex)%type)), ((inv2 m es_co) /\ ((infix_eqeq (union es es_co) edges) /\ - (infix_eqeq (inter es es_co) (empty :(set1 (vertex* vertex)%type))))) -> - forall (result:bool), ((result = true) <-> (is_empty es)) -> - ((result = true) -> ((inv2 m edges) -> forall (v:vertex), (mem v - vertices) -> match (get m - v) with - | (Finite n) => exists d:Z, (shortest_path s v n d) - | Infinite => True - end))))). -intuition. - -unfold inv1 in H2. -unfold inv2 in H9. -assert (H12 : mem v vertices) ; auto. -assert (H13 : mem v vertices) ; auto. -apply H2 in H12. -apply H9 in H13. - -destruct (get m v) ; auto. -apply inv2_shortest ; auto. -tauto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_1.v deleted file mode 100755 index da25d48ef6..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_1.v +++ /dev/null @@ -1,372 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (v3:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> ((mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z)). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (m:Z) (dd:Z), (m < n)%Z -> ~ (path v1 v2 m dd). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition paths(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> - (match (get m - v) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s v n - d)) \/ exists u:vertex, (mem (u, v) via) /\ exists d:Z, - ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s u (n - (weight u v))%Z pass) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end /\ ((no_path s v) -> ((get m v) = Infinite))). - -Axiom paths_next : forall (m:(map vertex dist)) (p:Z), (paths m p edges) -> - (paths m (p + 1%Z)%Z (empty :(set1 (vertex* vertex)%type))). - -(* Why3 goal *) -Theorem WP_parameter_relax : forall (u:vertex), forall (v:vertex), - forall (pass:Z), forall (via:(set1 (vertex* vertex)%type)), forall (m:(map - vertex dist)), ((mem (u, v) edges) /\ forall (v1:vertex), (mem v1 - vertices) -> (match (get m - v1) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s v1 - n d)) \/ exists u1:vertex, (mem (u1, v1) via) /\ exists d:Z, - ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s u1 (n - (weight u1 v1))%Z - pass) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v1 n d)) /\ forall (u1:vertex), (mem (u1, v1) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u1 n d) - end /\ ((no_path s v1) -> ((get m v1) = Infinite)))) -> (match (get m - u) with - | Infinite => False - | (Finite x) => match (get m - v) with - | Infinite => True - | (Finite y) => ((x + (weight u v))%Z < y)%Z - end - end -> ((forall (d:Z), match (get m - v) with - | (Finite n) => ~ ((path s v n d) /\ forall (m1:Z) (dd:Z), (m1 < n)%Z -> - ~ (path s v m1 dd)) - | Infinite => True - end) -> forall (m1:(map vertex dist)), (m1 = (set m v match (get m - u) with - | Infinite => Infinite - | (Finite x) => (Finite (x + (weight u v))%Z) - end)) -> forall (v1:vertex), (mem v1 vertices) -> ((no_path s v1) -> - ((get m1 v1) = Infinite)))). -intuition. - -destruct (get m u) as [] _eqn. -assert (exists d: Z, path s u z d). -admit. - -assert (v <> v1). -admit. - -subst. -rewrite Select_neq; intuition. -admit. - -contradiction. -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_2.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_2.v deleted file mode 100755 index 459a3487db..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_2.v +++ /dev/null @@ -1,366 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (v3:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> ((mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z)). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (m:Z) (dd:Z), (m < n)%Z -> ~ (path v1 v2 m dd). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition paths(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> - (match (get m - v) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s v n - d)) \/ exists u:vertex, (mem (u, v) via) /\ exists d:Z, - ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s u (n - (weight u v))%Z pass) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end /\ ((no_path s v) -> ((get m v) = Infinite))). - -Axiom paths_next : forall (m:(map vertex dist)) (p:Z), (paths m p edges) -> - (paths m (p + 1%Z)%Z (empty :(set1 (vertex* vertex)%type))). - -(* Why3 goal *) -Theorem WP_parameter_relax : forall (u:vertex), forall (v:vertex), - forall (pass:Z), forall (via:(set1 (vertex* vertex)%type)), forall (m:(map - vertex dist)), ((mem (u, v) edges) /\ forall (v1:vertex), (mem v1 - vertices) -> (match (get m - v1) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s v1 - n d)) \/ exists u1:vertex, (mem (u1, v1) via) /\ exists d:Z, - ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s u1 (n - (weight u1 v1))%Z - pass) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v1 n d)) /\ forall (u1:vertex), (mem (u1, v1) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u1 n d) - end /\ ((no_path s v1) -> ((get m v1) = Infinite)))) -> (match (get m - u) with - | Infinite => False - | (Finite x) => match (get m - v) with - | Infinite => True - | (Finite y) => ((x + (weight u v))%Z < y)%Z - end - end -> ((forall (d:Z), match (get m - v) with - | (Finite n) => ~ ((path s v n d) /\ forall (m1:Z) (dd:Z), (m1 < n)%Z -> - ~ (path s v m1 dd)) - | Infinite => True - end) -> forall (m1:(map vertex dist)), (m1 = (set m v match (get m - u) with - | Infinite => Infinite - | (Finite x) => (Finite (x + (weight u v))%Z) - end)) -> forall (v1:vertex), (mem v1 vertices) -> match (get m1 - v1) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s v1 - n d)) \/ exists u1:vertex, (mem (u1, v1) (add (u, v) via)) /\ - exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s u1 - (n - (weight u1 v1))%Z pass) - | Infinite => True - end)). -intuition. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_3.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_3.v deleted file mode 100755 index f7b8a8b7b9..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_3.v +++ /dev/null @@ -1,436 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -Axiom shortest_path_unique_distance : forall (v:vertex) (n:Z) (d:Z), - (shortest_path s v n d) -> forall (nqt:Z) (dqt:Z), (~ (n = nqt)) -> - ~ (shortest_path s v nqt dqt). - -Axiom no_path_xor_shortest_path_exists : (~ (negcycle )) -> - forall (v:vertex), (mem v vertices) -> ((no_path s v) <-> ~ exists n:Z, - exists d:Z, (shortest_path s v n d)). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -Axiom set_empty : forall (a:Type), forall (a1:(set1 a)), (is_empty a1) <-> - (a1 = (empty :(set1 a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((inter a1 b) = (empty :(set1 a))) -> ((mem e a1) -> ~ (mem e b)). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Axiom set_empty_union : forall (a:Type), forall (a1:(set1 a)), ((union a1 - (empty :(set1 a))) = a1). - -Axiom set_empty_inter : forall (a:Type), forall (a1:(set1 a)), ((inter a1 - (empty :(set1 a))) = (empty :(set1 a))). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition path_ends_with(v1:vertex) (v2:vertex) (n:Z) (d:Z) (via:(set1 - (vertex* vertex)%type)): Prop := exists u:vertex, (mem (u, v2) via) /\ - (path v1 u (n - (weight u v2))%Z (d - 1%Z)%Z). - -(* Why3 assumption *) -Definition inv1(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists d:Z, (path s v n d)) /\ ((forall (dqt:Z), - ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> forall (nqt:Z), (path s v nqt - dqt) -> (n <= nqt)%Z) /\ forall (nqt:Z), (path_ends_with s v nqt pass - via) -> (n <= nqt)%Z) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex dist)) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt via) -> - (n <= nqt)%Z - | Infinite => True - end. - -Axiom inv1_next : forall (m:(map vertex dist)) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ((inv1 m d edges) -> (inv1 m (d + 1%Z)%Z - (empty :(set1 (vertex* vertex)%type)))). - -Axiom inv2_shortest : forall (v:vertex), (mem v vertices) -> forall (n:Z), - ((exists d:Z, ((0%Z <= d)%Z /\ (d < (cardinal vertices))%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ - (dqt < (cardinal vertices))%Z) -> forall (nqt:Z), (path s v nqt dqt) -> - (n <= nqt)%Z) /\ forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt - edges) -> (n <= nqt)%Z)) -> exists d:Z, (shortest_path s v n d). - -Axiom path_ends_with_edge_shortest_path : forall (v:vertex) (n:Z), - (forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt edges) -> - (n <= nqt)%Z) -> exists d:Z, (shortest_path s v n d). - -(* Why3 goal *) -Theorem WP_parameter_relax : forall (u:vertex), forall (v:vertex), - forall (pass:Z), forall (via:(set1 (vertex* vertex)%type)), forall (m:(map - vertex dist)), ((mem (u, v) edges) /\ ((~ (mem (u, v) via)) /\ - forall (v1:vertex), (mem v1 vertices) -> match (get m - v1) with - | (Finite n) => (exists d:Z, (path s v1 n d)) /\ ((forall (dqt:Z), - ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> forall (nqt:Z), (path s v1 nqt - dqt) -> (n <= nqt)%Z) /\ forall (nqt:Z), (path_ends_with s v1 nqt pass - via) -> (n <= nqt)%Z) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v1 n d)) /\ forall (u1:vertex), (mem (u1, v1) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u1 n d) - end)) -> ((mem u vertices) -> ((mem v vertices) -> (match (get m - u) with - | Infinite => False - | (Finite x) => match (get m - v) with - | Infinite => True - | (Finite y) => ((x + (weight u v))%Z < y)%Z - end - end -> forall (m1:(map vertex dist)), (m1 = (set m v match (get m - u) with - | Infinite => Infinite - | (Finite x) => (Finite (x + (weight u v))%Z) - end)) -> forall (v1:vertex), (mem v1 vertices) -> match (get m1 - v1) with - | (Finite n) => exists d:Z, (path s v1 n d) - | Infinite => True - end))). -intuition. -Require Import Classical. -destruct (classic (v = v1)). - -subst. -rewrite Select_eq; intuition. -destruct (get m u) as [] _eqn; intuition. -assert (mem u vertices). -generalize (edges_def u v1 H1); intuition. -generalize (H3 u H2). -rewrite Heqd. -intros ((d, pathu), _). -exists (d+1)%Z. -apply path_succ; auto. - -subst m1. -rewrite Select_neq; auto. -generalize (H3 v1 H4). -destruct (get m v1); intuition. -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_4.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_4.v deleted file mode 100755 index 7386513515..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_4.v +++ /dev/null @@ -1,383 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (v3:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> ((mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z)). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (m:Z) (dd:Z), (m < n)%Z -> ~ (path v1 v2 m dd). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition paths(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> - (match (get m - v) with - | (Finite n) => (exists d:Z, ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s v n - d)) \/ exists u:vertex, (mem (u, v) via) /\ exists d:Z, - ((0%Z <= d)%Z /\ (d < pass)%Z) /\ (path s u (n - (weight u v))%Z d) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end /\ ((no_path s v) -> ((get m v) = Infinite))). - -Axiom paths_subset : forall (m:(map vertex dist)) (p:Z) (k:(set1 (vertex* - vertex)%type)), (paths m p k) -> (paths m p (empty :(set1 (vertex* - vertex)%type))). - -(* Why3 goal *) -Theorem WP_parameter_relax : forall (u:vertex), forall (v:vertex), - forall (pass:Z), forall (via:(set1 (vertex* vertex)%type)), forall (m:(map - vertex dist)), ((mem (u, v) edges) /\ forall (v1:vertex), (mem v1 - vertices) -> (match (get m - v1) with - | (Finite n) => (exists d:Z, (((0%Z < d)%Z \/ (0%Z = d)) /\ - (d < pass)%Z) /\ (path s v1 n d)) \/ exists u1:vertex, (mem (u1, v1) - via) /\ exists d:Z, (((0%Z < d)%Z \/ (0%Z = d)) /\ (d < pass)%Z) /\ - (path s u1 (n - (weight u1 v1))%Z d) - | Infinite => (forall (d:Z), (((0%Z < d)%Z \/ (0%Z = d)) /\ - (d < pass)%Z) -> forall (n:Z), ~ (path s v1 n d)) /\ - forall (u1:vertex), (mem (u1, v1) via) -> forall (d:Z), - (((0%Z < d)%Z \/ (0%Z = d)) /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u1 n d) - end /\ ((forall (n:Z) (d:Z), ~ (path s v1 n d)) -> ((get m - v1) = Infinite)))) -> (match (get m - u) with - | Infinite => False - | (Finite x) => match (get m - v) with - | Infinite => True - | (Finite y) => ((x + (weight u v))%Z < y)%Z - end - end -> forall (m1:(map vertex dist)), (m1 = (set m v match (get m - u) with - | Infinite => Infinite - | (Finite x) => (Finite (x + (weight u v))%Z) - end)) -> forall (v1:vertex), (mem v1 vertices) -> match (get m1 - v1) with - | (Finite n) => (exists d:Z, (((0%Z < d)%Z \/ (0%Z = d)) /\ - (d < pass)%Z) /\ (path s v1 n d)) \/ exists u1:vertex, (mem (u1, v1) - (add (u, v) via)) /\ exists d:Z, (((0%Z < d)%Z \/ (0%Z = d)) /\ - (d < pass)%Z) /\ (path s u1 (n - (weight u1 v1))%Z d) - | Infinite => True - end). -intuition. - -Require Import Classical. -destruct (classic (v = v1)). - -subst. -rewrite Select_eq; intuition. -destruct (get m u); intuition. -apply H2 in H3. -clear H2. - -destruct (get m v1). -right. -destruct H3 as [H3 _]. -destruct H3 as [] ; exists u ; rewrite add_def1 ; split ; auto. -destruct H as [n A]. -destruct A as [A B]. -exists n. -split. -omega. -assert (z + weight u v1 - weight u v1 = z)%Z. -omega. -rewrite H. -auto. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_5.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_5.v deleted file mode 100755 index 6d1749623e..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_5.v +++ /dev/null @@ -1,445 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. -Require int.MinMax. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -Parameter s: vertex. - -Parameter weight: vertex -> vertex -> Z. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> - ((~ (x = y)) /\ ((mem x vertices) /\ (mem y vertices))). - -(* Why3 assumption *) -Inductive path : vertex -> vertex -> Z -> Z -> Prop := - | path_empty : forall (v:vertex), (path v v 0%Z 0%Z) - | path_succ : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (path v1 v2 n - d) -> forall (v3:vertex), (mem (v2, v3) edges) -> (path v1 v3 - (n + (weight v2 v3))%Z (d + 1%Z)%Z). - -Axiom path_depth_nonneg : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), - (path v1 v2 n d) -> (0%Z <= d)%Z. - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (n:Z) (d:Z), (mem v1 - vertices) -> ((path v1 v2 n d) -> (mem v2 vertices)). - -Axiom path_depth_empty : forall (v1:vertex) (v2:vertex) (n:Z), (path v1 v2 n - 0%Z) -> ((v1 = v2) /\ (n = 0%Z)). - -Axiom path_pred_existence : forall (v1:vertex) (v3:vertex) (n:Z) (d:Z), - (0%Z <= d)%Z -> ((path v1 v3 n (d + 1%Z)%Z) -> exists v2:vertex, (mem (v2, - v3) edges) /\ (path v1 v2 (n - (weight v2 v3))%Z d)). - -(* Why3 assumption *) -Definition shortest_path(v1:vertex) (v2:vertex) (n:Z) (d:Z): Prop := (path v1 - v2 n d) /\ forall (nqt:Z) (dqt:Z), (nqt < n)%Z -> ~ (path v1 v2 nqt dqt). - -Axiom shortest_path_empty : forall (v:vertex), (mem v vertices) -> - ((forall (n:Z) (d:Z), (n < 0%Z)%Z -> ~ (path v v n d)) -> (shortest_path v - v 0%Z 0%Z)). - -(* Why3 assumption *) -Definition no_path(v1:vertex) (v2:vertex): Prop := forall (n:Z) (d:Z), - ~ (path v1 v2 n d). - -Axiom no_path_not_same : forall (v:vertex), ~ (no_path v v). - -Axiom path_trans : forall (v1:vertex) (v2:vertex) (v3:vertex) (n1:Z) (n2:Z) - (d1:Z) (d2:Z), (path v1 v2 n1 d1) -> ((path v2 v3 n2 d2) -> (path v1 v3 - (n1 + n2)%Z (d1 + d2)%Z)). - -Axiom reach_less_than_n : forall (v1:vertex) (v2:vertex), (mem v1 - vertices) -> forall (d:Z) (n:Z), (path v1 v2 n d) -> exists dqt:Z, - exists nqt:Z, (dqt < (cardinal vertices))%Z /\ (path v1 v2 nqt dqt). - -Axiom reach_most_n : forall (v1:vertex) (v2:vertex), ((mem v1 vertices) /\ - (mem v2 vertices)) -> ((forall (n:Z) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ~ (path v1 v2 n d)) -> (no_path v1 v2)). - -(* Why3 assumption *) -Definition negcycle: Prop := exists v:vertex, (mem v vertices) /\ exists n:Z, - exists d:Z, (n < 0%Z)%Z /\ (path v v n d). - -Axiom ignore_negcycle : ~ (negcycle ). - -Axiom shortest_path_unique_distance : forall (v:vertex) (n:Z) (d:Z), - (shortest_path s v n d) -> forall (nqt:Z) (dqt:Z), (~ (n = nqt)) -> - ~ (shortest_path s v nqt dqt). - -Axiom no_path_xor_shortest_path_exists : (~ (negcycle )) -> - forall (v:vertex), (mem v vertices) -> ((no_path s v) <-> ~ exists n:Z, - exists d:Z, (shortest_path s v n d)). - -(* Why3 assumption *) -Inductive dist := - | Finite : Z -> dist - | Infinite : dist . - -(* Why3 assumption *) -Definition infix_plpl(x:dist) (y:dist): dist := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition infix_lsls(x:dist) (y:dist): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition infix_gtgteq(x:dist) (y:dist): Prop := - match x with - | Infinite => True - | (Finite x1) => - match y with - | Infinite => False - | (Finite y1) => (y1 <= x1)%Z - end - end. - -Parameter min: dist -> dist -> dist. - -Parameter max: dist -> dist -> dist. - -Axiom Max_is_ge : forall (x:dist) (y:dist), (infix_gtgteq (max x y) x) /\ - (infix_gtgteq (max x y) y). - -Axiom Max_is_some : forall (x:dist) (y:dist), ((max x y) = x) \/ ((max x - y) = y). - -Axiom Min_is_le : forall (x:dist) (y:dist), (infix_gtgteq x (min x y)) /\ - (infix_gtgteq y (min x y)). - -Axiom Min_is_some : forall (x:dist) (y:dist), ((min x y) = x) \/ ((min x - y) = y). - -Axiom Max_x : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = x). - -Axiom Max_y : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((max x - y) = y). - -Axiom Min_x : forall (x:dist) (y:dist), (infix_gtgteq y x) -> ((min x - y) = x). - -Axiom Min_y : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = y). - -Axiom Max_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((max x - y) = (max y x)). - -Axiom Min_sym : forall (x:dist) (y:dist), (infix_gtgteq x y) -> ((min x - y) = (min y x)). - -Parameter take: forall (a:Type), (set1 a) -> a. -Implicit Arguments take. - -Axiom take_def : forall (a:Type), forall (x:(set1 a)), (~ (is_empty x)) -> - (mem (take x) x). - -Axiom set_empty : forall (a:Type), forall (a1:(set1 a)), (is_empty a1) <-> - (a1 = (empty :(set1 a))). - -Axiom set_union_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((union a1 b) = (union b a1)). - -Axiom set_inter_exchange : forall (a:Type), forall (a1:(set1 a)) (b:(set1 - a)), ((inter a1 b) = (inter b a1)). - -Axiom set_inter_choice : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((inter a1 b) = (empty :(set1 a))) -> ((mem e a1) -> ~ (mem e b)). - -Axiom set_preserve_union : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), (mem e a1) -> ((union (remove e a1) (add e b)) = (union a1 b)). - -Axiom set_preserve_inter : forall (a:Type), forall (a1:(set1 a)) (b:(set1 a)) - (e:a), ((mem e a1) /\ ~ (mem e b)) -> ((inter (remove e a1) (add e - b)) = (inter a1 b)). - -Axiom set_empty_union : forall (a:Type), forall (a1:(set1 a)), ((union a1 - (empty :(set1 a))) = a1). - -Axiom set_empty_inter : forall (a:Type), forall (a1:(set1 a)), ((inter a1 - (empty :(set1 a))) = (empty :(set1 a))). - -(* Why3 assumption *) -Definition bag (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex dist). - -(* Why3 assumption *) -Definition path_ends_with(v1:vertex) (v2:vertex) (n:Z) (d:Z) (via:(set1 - (vertex* vertex)%type)): Prop := exists u:vertex, (mem (u, v2) via) /\ - (path v1 u (n - (weight u v2))%Z (d - 1%Z)%Z). - -(* Why3 assumption *) -Definition inv1(m:(map vertex dist)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists d:Z, (path s v n d)) /\ ((forall (dqt:Z), - ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> forall (nqt:Z), (path s v nqt - dqt) -> (n <= nqt)%Z) /\ forall (nqt:Z), (path_ends_with s v nqt pass - via) -> (n <= nqt)%Z) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v n d)) /\ forall (u:vertex), (mem (u, v) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u n d) - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex dist)) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt via) -> - (n <= nqt)%Z - | Infinite => True - end. - -Axiom inv1_next : forall (m:(map vertex dist)) (d:Z), ((0%Z <= d)%Z /\ - (d < (cardinal vertices))%Z) -> ((inv1 m d edges) -> (inv1 m (d + 1%Z)%Z - (empty :(set1 (vertex* vertex)%type)))). - -Axiom inv2_shortest : forall (v:vertex), (mem v vertices) -> forall (n:Z), - ((exists d:Z, ((0%Z <= d)%Z /\ (d < (cardinal vertices))%Z) /\ (path s v n - d)) /\ ((forall (dqt:Z), ((0%Z <= dqt)%Z /\ - (dqt < (cardinal vertices))%Z) -> forall (nqt:Z), (path s v nqt dqt) -> - (n <= nqt)%Z) /\ forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt - edges) -> (n <= nqt)%Z)) -> exists d:Z, (shortest_path s v n d). - -Axiom path_ends_with_edge_shortest_path : forall (v:vertex) (n:Z), - (forall (nqt:Z) (dqt:Z), (path_ends_with s v nqt dqt edges) -> - (n <= nqt)%Z) -> exists d:Z, (shortest_path s v n d). - -(* Why3 goal *) -Theorem WP_parameter_relax : forall (u:vertex), forall (v:vertex), - forall (pass:Z), forall (via:(set1 (vertex* vertex)%type)), forall (m:(map - vertex dist)), (((1%Z < pass)%Z \/ (1%Z = pass)) /\ ((mem (u, v) edges) /\ - ((~ (mem (u, v) via)) /\ forall (v1:vertex), (mem v1 vertices) -> - match (get m - v1) with - | (Finite n) => (exists d:Z, (path s v1 n d)) /\ ((forall (dqt:Z), - ((0%Z <= dqt)%Z /\ (dqt < pass)%Z) -> forall (nqt:Z), (path s v1 nqt - dqt) -> (n <= nqt)%Z) /\ forall (nqt:Z), (path_ends_with s v1 nqt pass - via) -> (n <= nqt)%Z) - | Infinite => (forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> - forall (n:Z), ~ (path s v1 n d)) /\ forall (u1:vertex), (mem (u1, v1) - via) -> forall (d:Z), ((0%Z <= d)%Z /\ (d < pass)%Z) -> forall (n:Z), - ~ (path s u1 n d) - end))) -> (match (get m - u) with - | Infinite => False - | (Finite x) => match (get m - v) with - | Infinite => True - | (Finite y) => ((x + (weight u v))%Z < y)%Z - end - end -> forall (m1:(map vertex dist)), (m1 = (set m v match (get m - u) with - | Infinite => Infinite - | (Finite x) => (Finite (x + (weight u v))%Z) - end)) -> forall (v1:vertex), (mem v1 vertices) -> match (get m1 - v1) with - | (Finite n) => forall (nqt:Z), (path_ends_with s v1 nqt pass (add (u, v) - via)) -> (n <= nqt)%Z - | Infinite => True - end). -intuition. -destruct (get m1 v1) as [] _eqn; auto. -unfold path_ends_with. -intros n' (u1, (h1, h2)). -generalize (add_def1 _ (u1, v1) (u,v) via); intuition. -injection H7; clear H7. -intros; subst u1 v1. -destruct (get m u) as [] _eqn; intuition. -assert (mem u vertices). -generalize (edges_def u v); intuition. -generalize (H4 u H6). -rewrite Heqd0. -intros (_,(h,_)). -assert (ineq: (0 <= pass-1 < pass)%Z) by omega. - -generalize (h (pass-1)%Z ineq (n' - weight u v)%Z h2); clear h. -assert (z = z0 + weight u v)%Z. -subst m1. -rewrite Select_eq in Heqd; auto. -injection Heqd. -omega. -omega. - - - - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_6.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_6.v deleted file mode 100755 index 9ddaede4ce..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_6.v +++ /dev/null @@ -1,383 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive list (a:Type) := - | Nil : list a - | Cons : a -> (list a) -> list a. -Set Contextual Implicit. -Implicit Arguments Nil. -Unset Contextual Implicit. -Implicit Arguments Cons. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint length (a:Type)(l:(list a)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons _ r) => (1%Z + (length r))%Z - end. -Unset Implicit Arguments. - -Axiom Length_nonnegative : forall (a:Type), forall (l:(list a)), - (0%Z <= (length l))%Z. - -Axiom Length_nil : forall (a:Type), forall (l:(list a)), - ((length l) = 0%Z) <-> (l = (Nil :(list a))). - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set1 a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set1 a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -(* Why3 assumption *) -Definition edge(x:vertex) (y:vertex): Prop := (mem (x, y) edges). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -Parameter s: vertex. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint infix_plpl (a:Type)(l1:(list a)) (l2:(list a)) {struct l1}: (list - a) := - match l1 with - | Nil => l2 - | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) - end. -Unset Implicit Arguments. - -Axiom Append_assoc : forall (a:Type), forall (l1:(list a)) (l2:(list a)) - (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 - l3)) = (infix_plpl (infix_plpl l1 l2) l3)). - -Axiom Append_l_nil : forall (a:Type), forall (l:(list a)), ((infix_plpl l - (Nil :(list a))) = l). - -Axiom Append_length : forall (a:Type), forall (l1:(list a)) (l2:(list a)), - ((length (infix_plpl l1 l2)) = ((length l1) + (length l2))%Z). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint mem1 (a:Type)(x:a) (l:(list a)) {struct l}: Prop := - match l with - | Nil => False - | (Cons y r) => (x = y) \/ (mem1 x r) - end. -Unset Implicit Arguments. - -Axiom mem_append : forall (a:Type), forall (x:a) (l1:(list a)) (l2:(list a)), - (mem1 x (infix_plpl l1 l2)) <-> ((mem1 x l1) \/ (mem1 x l2)). - -Axiom mem_decomp : forall (a:Type), forall (x:a) (l:(list a)), (mem1 x l) -> - exists l1:(list a), exists l2:(list a), (l = (infix_plpl l1 (Cons x l2))). - -(* Why3 assumption *) -Inductive path : vertex -> (list vertex) -> vertex -> Prop := - | Path_empty : forall (x:vertex), (path x (Nil :(list vertex)) x) - | Path_cons : forall (x:vertex) (y:vertex) (z:vertex) (l:(list vertex)), - (edge x y) -> ((path y l z) -> (path x (Cons x l) z)). - -Axiom path_right_extension : forall (x:vertex) (y:vertex) (z:vertex) (l:(list - vertex)), (path x l y) -> ((edge y z) -> (path x (infix_plpl l (Cons y - (Nil :(list vertex)))) z)). - -Axiom path_trans : forall (x:vertex) (y:vertex) (z:vertex) (l1:(list vertex)) - (l2:(list vertex)), (path x l1 y) -> ((path y l2 z) -> (path x - (infix_plpl l1 l2) z)). - -Axiom empty_path : forall (x:vertex) (y:vertex), (path x (Nil :(list vertex)) - y) -> (x = y). - -Parameter weight: vertex -> vertex -> Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint path_weight(l:(list vertex)) (dst:vertex) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons x Nil) => (weight x dst) - | (Cons x ((Cons y _) as r)) => ((weight x y) + (path_weight r dst))%Z - end. -Unset Implicit Arguments. - -Axiom path_weight_right_extension : forall (x:vertex) (y:vertex) (l:(list - vertex)), ((path_weight (infix_plpl l (Cons x (Nil :(list vertex)))) - y) = ((path_weight l x) + (weight x y))%Z). - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (l:(list vertex)), - (mem v1 vertices) -> ((path v1 l v2) -> (mem v2 vertices)). - -Axiom simple_path : forall (v:vertex) (l:(list vertex)), (path s l v) -> - exists lqt:(list vertex), (path s lqt v) /\ - ((length lqt) < (cardinal vertices))%Z. - -(* Why3 assumption *) -Inductive t := - | Finite : Z -> t - | Infinite : t . - -(* Why3 assumption *) -Definition add1(x:t) (y:t): t := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition lt(x:t) (y:t): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition le(x:t) (y:t): Prop := (lt x y) \/ (x = y). - -Axiom Refl : forall (x:t), (le x x). - -Axiom Trans : forall (x:t) (y:t) (z:t), (le x y) -> ((le y z) -> (le x z)). - -Axiom Antisymm : forall (x:t) (y:t), (le x y) -> ((le y x) -> (x = y)). - -Axiom Total : forall (x:t) (y:t), (le x y) \/ (le y x). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -(* Why3 assumption *) -Definition t1 (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex t). - -(* Why3 assumption *) -Definition inv1(m:(map vertex t)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists l:(list vertex), (path s l v) /\ ((path_weight l - v) = n)) /\ ((forall (l:(list vertex)), (path s l v) -> - (((length l) < pass)%Z -> (n <= (path_weight l v))%Z)) /\ - forall (u:vertex) (l:(list vertex)), (path s l u) -> - (((length l) < pass)%Z -> ((mem (u, v) via) -> (n <= ((path_weight l - u) + (weight u v))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v) -> - (pass <= (length l))%Z) /\ forall (u:vertex), (mem (u, v) via) -> - ((get m u) = Infinite) - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex t)) (via:(set1 (vertex* vertex)%type)): Prop := - forall (u:vertex) (v:vertex), (mem (u, v) via) -> (le (get m v) - (add1 (get m u) (Finite (weight u v)))). - -Require Import Classical. -Require Import Why3. - -(* Why3 goal *) -Theorem WP_parameter_relax : forall (u:vertex), forall (v:vertex), - forall (pass:Z), forall (via:(set1 (vertex* vertex)%type)), forall (m:(map - vertex t)), ((1%Z <= pass)%Z /\ ((mem (u, v) edges) /\ ((~ (mem (u, v) - via)) /\ (inv1 m pass via)))) -> (match (get m - u) with - | Infinite => False - | (Finite x) => match (get m - v) with - | Infinite => True - | (Finite y) => ((x + (weight u v))%Z < y)%Z - end - end -> (match (get m - u) with - | (Finite nu) => exists lu:(list vertex), (path s lu u) /\ - (((path_weight lu u) = nu) /\ (path s (infix_plpl lu (Cons u - (Nil :(list vertex)))) v)) - | Infinite => False - end -> forall (m1:(map vertex t)), (m1 = (set m v match (get m - u) with - | Infinite => Infinite - | (Finite x) => (Finite (x + (weight u v))%Z) - end)) -> (inv1 m1 pass (add (u, v) via)))). -intuition. -destruct (get m u) as [] _eqn; intuition. -destruct H1 as (lu, (h1, (h2, h3))). -red. -intros. -destruct (classic (v0 = v)). -subst v0 m1. -rewrite Select_eq; auto. -exists ((infix_plpl lu (Cons u Nil))); intuition. -rewrite <- h2. -apply path_weight_right_extension; auto. -subst m1; rewrite Select_neq; auto. -red in H5. -generalize (H5 v0); intuition. -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_7.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_7.v deleted file mode 100755 index 963f2ab4da..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_7.v +++ /dev/null @@ -1,423 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive list (a:Type) := - | Nil : list a - | Cons : a -> (list a) -> list a. -Set Contextual Implicit. -Implicit Arguments Nil. -Unset Contextual Implicit. -Implicit Arguments Cons. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint length (a:Type)(l:(list a)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons _ r) => (1%Z + (length r))%Z - end. -Unset Implicit Arguments. - -Axiom Length_nonnegative : forall (a:Type), forall (l:(list a)), - (0%Z <= (length l))%Z. - -Axiom Length_nil : forall (a:Type), forall (l:(list a)), - ((length l) = 0%Z) <-> (l = (Nil :(list a))). - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set1 a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set1 a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Axiom cardinal1 : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 1%Z) -> forall (x:a), (mem x s) -> (x = (choose s)). - -Parameter nth: forall (a:Type), Z -> (set1 a) -> a. -Implicit Arguments nth. - -Axiom nth_injective : forall (a:Type), forall (s:(set1 a)) (i:Z) (j:Z), - ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (((0%Z <= j)%Z /\ - (j < (cardinal s))%Z) -> (((nth i s) = (nth j s)) -> (i = j))). - -Axiom nth_surjective : forall (a:Type), forall (s:(set1 a)) (x:a), (mem x - s) -> exists i:Z, ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (x = (nth i - s)). - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -(* Why3 assumption *) -Definition edge(x:vertex) (y:vertex): Prop := (mem (x, y) edges). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -Parameter s: vertex. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint infix_plpl (a:Type)(l1:(list a)) (l2:(list a)) {struct l1}: (list - a) := - match l1 with - | Nil => l2 - | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) - end. -Unset Implicit Arguments. - -Axiom Append_assoc : forall (a:Type), forall (l1:(list a)) (l2:(list a)) - (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 - l3)) = (infix_plpl (infix_plpl l1 l2) l3)). - -Axiom Append_l_nil : forall (a:Type), forall (l:(list a)), ((infix_plpl l - (Nil :(list a))) = l). - -Axiom Append_length : forall (a:Type), forall (l1:(list a)) (l2:(list a)), - ((length (infix_plpl l1 l2)) = ((length l1) + (length l2))%Z). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint mem1 (a:Type)(x:a) (l:(list a)) {struct l}: Prop := - match l with - | Nil => False - | (Cons y r) => (x = y) \/ (mem1 x r) - end. -Unset Implicit Arguments. - -Axiom mem_append : forall (a:Type), forall (x:a) (l1:(list a)) (l2:(list a)), - (mem1 x (infix_plpl l1 l2)) <-> ((mem1 x l1) \/ (mem1 x l2)). - -Axiom mem_decomp : forall (a:Type), forall (x:a) (l:(list a)), (mem1 x l) -> - exists l1:(list a), exists l2:(list a), (l = (infix_plpl l1 (Cons x l2))). - -(* Why3 assumption *) -Inductive path : vertex -> (list vertex) -> vertex -> Prop := - | Path_empty : forall (x:vertex), (path x (Nil :(list vertex)) x) - | Path_cons : forall (x:vertex) (y:vertex) (z:vertex) (l:(list vertex)), - (edge x y) -> ((path y l z) -> (path x (Cons x l) z)). - -Axiom path_right_extension : forall (x:vertex) (y:vertex) (z:vertex) (l:(list - vertex)), (path x l y) -> ((edge y z) -> (path x (infix_plpl l (Cons y - (Nil :(list vertex)))) z)). - -Axiom path_right_inversion : forall (x:vertex) (z:vertex) (l:(list vertex)), - (path x l z) -> (((x = z) /\ (l = (Nil :(list vertex)))) \/ - exists y:vertex, exists lqt:(list vertex), (path x lqt y) /\ ((edge y z) /\ - (l = (infix_plpl lqt (Cons y (Nil :(list vertex))))))). - -Axiom path_trans : forall (x:vertex) (y:vertex) (z:vertex) (l1:(list vertex)) - (l2:(list vertex)), (path x l1 y) -> ((path y l2 z) -> (path x - (infix_plpl l1 l2) z)). - -Axiom empty_path : forall (x:vertex) (y:vertex), (path x (Nil :(list vertex)) - y) -> (x = y). - -Parameter weight: vertex -> vertex -> Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint path_weight(l:(list vertex)) (dst:vertex) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons x Nil) => (weight x dst) - | (Cons x ((Cons y _) as r)) => ((weight x y) + (path_weight r dst))%Z - end. -Unset Implicit Arguments. - -Axiom path_weight_right_extension : forall (x:vertex) (y:vertex) (l:(list - vertex)), ((path_weight (infix_plpl l (Cons x (Nil :(list vertex)))) - y) = ((path_weight l x) + (weight x y))%Z). - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (l:(list vertex)), - (mem v1 vertices) -> ((path v1 l v2) -> (mem v2 vertices)). - -Axiom simple_path : forall (v:vertex) (l:(list vertex)), (path s l v) -> - exists lqt:(list vertex), (path s lqt v) /\ - ((length lqt) < (cardinal vertices))%Z. - -(* Why3 assumption *) -Definition negative_cycle(v:vertex): Prop := (mem v vertices) /\ - ((exists l1:(list vertex), (path s l1 v)) /\ exists l2:(list vertex), - (path v l2 v) /\ ((path_weight l2 v) < 0%Z)%Z). - -Axiom key_lemma_1 : forall (v:vertex) (n:Z), (forall (l:(list vertex)), - (path s l v) -> (((length l) < (cardinal vertices))%Z -> - (n <= (path_weight l v))%Z)) -> ((exists l:(list vertex), (path s l v) /\ - ((path_weight l v) < n)%Z) -> exists u:vertex, (negative_cycle u)). - -(* Why3 assumption *) -Inductive t := - | Finite : Z -> t - | Infinite : t . - -(* Why3 assumption *) -Definition add1(x:t) (y:t): t := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition lt(x:t) (y:t): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition le(x:t) (y:t): Prop := (lt x y) \/ (x = y). - -Axiom Refl : forall (x:t), (le x x). - -Axiom Trans : forall (x:t) (y:t) (z:t), (le x y) -> ((le y z) -> (le x z)). - -Axiom Antisymm : forall (x:t) (y:t), (le x y) -> ((le y x) -> (x = y)). - -Axiom Total : forall (x:t) (y:t), (le x y) \/ (le y x). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -(* Why3 assumption *) -Definition t1 (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex t). - -(* Why3 assumption *) -Definition inv1(m:(map vertex t)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists l:(list vertex), (path s l v) /\ ((path_weight l - v) = n)) /\ ((forall (l:(list vertex)), (path s l v) -> - (((length l) < pass)%Z -> (n <= (path_weight l v))%Z)) /\ - forall (u:vertex) (l:(list vertex)), (path s l u) -> - (((length l) < pass)%Z -> ((mem (u, v) via) -> (n <= ((path_weight l - u) + (weight u v))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v) -> - (pass <= (length l))%Z) /\ forall (u:vertex), (mem (u, v) via) -> - forall (lu:(list vertex)), (path s lu u) -> (pass <= (length lu))%Z - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex t)) (via:(set1 (vertex* vertex)%type)): Prop := - forall (u:vertex) (v:vertex), (mem (u, v) via) -> (le (get m v) - (add1 (get m u) (Finite (weight u v)))). - -Axiom key_lemma_2 : forall (m:(map vertex t)), (inv2 m edges) -> - forall (v:vertex), ~ (negative_cycle v). - -Require Import Why3. -Ltac ae := why3 "alt-ergo". -Require Import Classical. - -(* Why3 goal *) -Theorem WP_parameter_relax : forall (u:vertex), forall (v:vertex), - forall (pass:Z), forall (via:(set1 (vertex* vertex)%type)), forall (m:(map - vertex t)), (((1%Z < pass)%Z \/ (1%Z = pass)) /\ ((mem (u, v) edges) /\ - ((~ (mem (u, v) via)) /\ forall (v1:vertex), (mem v1 vertices) -> - match (get m - v1) with - | (Finite n) => (exists l:(list vertex), (path s l v1) /\ ((path_weight l - v1) = n)) /\ ((forall (l:(list vertex)), (path s l v1) -> - (((length l) < pass)%Z -> (n <= (path_weight l v1))%Z)) /\ - forall (u1:vertex) (l:(list vertex)), (path s l u1) -> - (((length l) < pass)%Z -> ((mem (u1, v1) via) -> (n <= ((path_weight l - u1) + (weight u1 v1))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v1) -> - (pass <= (length l))%Z) /\ forall (u1:vertex), (mem (u1, v1) via) -> - forall (lu:(list vertex)), (path s lu u1) -> (pass <= (length lu))%Z - end))) -> (match (get m - u) with - | Infinite => False - | (Finite x) => match (get m - v) with - | Infinite => True - | (Finite y) => ((x + (weight u v))%Z < y)%Z - end - end -> forall (m1:(map vertex t)), (m1 = (set m v match (get m - u) with - | Infinite => Infinite - | (Finite x) => (Finite (x + (weight u v))%Z) - end)) -> forall (v1:vertex), (mem v1 vertices) -> match (get m1 - v1) with - | (Finite n) => exists l:(list vertex), (path s l v1) /\ ((path_weight l - v1) = n) - | Infinite => True - end). -intros u v pass via m (hpass, (h1, (h2, h3))). -destruct (get m u) as [] _eqn. 2:intuition. -intros hlt m1 eqm1 v1 hv1. -destruct (classic (v1 = v)) as [h|h]. -subst m1 v1. rewrite Select_eq; auto. -assert (H : exists lu: list vertex, path s lu u /\ path_weight lu u = z) by ae. -destruct H as (lu, (hu1, hu2)). -exists (infix_plpl lu (Cons u Nil)); ae. -subst m1. rewrite Select_neq; auto. -ae. -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_8.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_8.v deleted file mode 100755 index 68ef6a8450..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_WP_parameter_relax_8.v +++ /dev/null @@ -1,394 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive list (a:Type) := - | Nil : list a - | Cons : a -> (list a) -> list a. -Set Contextual Implicit. -Implicit Arguments Nil. -Unset Contextual Implicit. -Implicit Arguments Cons. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint length (a:Type)(l:(list a)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons _ r) => (1%Z + (length r))%Z - end. -Unset Implicit Arguments. - -Axiom Length_nonnegative : forall (a:Type), forall (l:(list a)), - (0%Z <= (length l))%Z. - -Axiom Length_nil : forall (a:Type), forall (l:(list a)), - ((length l) = 0%Z) <-> (l = (Nil :(list a))). - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set1 a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set1 a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -(* Why3 assumption *) -Definition edge(x:vertex) (y:vertex): Prop := (mem (x, y) edges). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -Parameter s: vertex. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint infix_plpl (a:Type)(l1:(list a)) (l2:(list a)) {struct l1}: (list - a) := - match l1 with - | Nil => l2 - | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) - end. -Unset Implicit Arguments. - -Axiom Append_assoc : forall (a:Type), forall (l1:(list a)) (l2:(list a)) - (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 - l3)) = (infix_plpl (infix_plpl l1 l2) l3)). - -Axiom Append_l_nil : forall (a:Type), forall (l:(list a)), ((infix_plpl l - (Nil :(list a))) = l). - -Axiom Append_length : forall (a:Type), forall (l1:(list a)) (l2:(list a)), - ((length (infix_plpl l1 l2)) = ((length l1) + (length l2))%Z). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint mem1 (a:Type)(x:a) (l:(list a)) {struct l}: Prop := - match l with - | Nil => False - | (Cons y r) => (x = y) \/ (mem1 x r) - end. -Unset Implicit Arguments. - -Axiom mem_append : forall (a:Type), forall (x:a) (l1:(list a)) (l2:(list a)), - (mem1 x (infix_plpl l1 l2)) <-> ((mem1 x l1) \/ (mem1 x l2)). - -Axiom mem_decomp : forall (a:Type), forall (x:a) (l:(list a)), (mem1 x l) -> - exists l1:(list a), exists l2:(list a), (l = (infix_plpl l1 (Cons x l2))). - -(* Why3 assumption *) -Inductive path : vertex -> (list vertex) -> vertex -> Prop := - | Path_empty : forall (x:vertex), (path x (Nil :(list vertex)) x) - | Path_cons : forall (x:vertex) (y:vertex) (z:vertex) (l:(list vertex)), - (edge x y) -> ((path y l z) -> (path x (Cons x l) z)). - -Axiom path_right_extension : forall (x:vertex) (y:vertex) (z:vertex) (l:(list - vertex)), (path x l y) -> ((edge y z) -> (path x (infix_plpl l (Cons y - (Nil :(list vertex)))) z)). - -Axiom path_trans : forall (x:vertex) (y:vertex) (z:vertex) (l1:(list vertex)) - (l2:(list vertex)), (path x l1 y) -> ((path y l2 z) -> (path x - (infix_plpl l1 l2) z)). - -Axiom empty_path : forall (x:vertex) (y:vertex), (path x (Nil :(list vertex)) - y) -> (x = y). - -Parameter weight: vertex -> vertex -> Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint path_weight(l:(list vertex)) (dst:vertex) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons x Nil) => (weight x dst) - | (Cons x ((Cons y _) as r)) => ((weight x y) + (path_weight r dst))%Z - end. -Unset Implicit Arguments. - -Axiom path_weight_right_extension : forall (x:vertex) (y:vertex) (l:(list - vertex)), ((path_weight (infix_plpl l (Cons x (Nil :(list vertex)))) - y) = ((path_weight l x) + (weight x y))%Z). - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (l:(list vertex)), - (mem v1 vertices) -> ((path v1 l v2) -> (mem v2 vertices)). - -Axiom simple_path : forall (v:vertex) (l:(list vertex)), (path s l v) -> - exists lqt:(list vertex), (path s lqt v) /\ - ((length lqt) < (cardinal vertices))%Z. - -(* Why3 assumption *) -Inductive t := - | Finite : Z -> t - | Infinite : t . - -(* Why3 assumption *) -Definition add1(x:t) (y:t): t := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition lt(x:t) (y:t): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition le(x:t) (y:t): Prop := (lt x y) \/ (x = y). - -Axiom Refl : forall (x:t), (le x x). - -Axiom Trans : forall (x:t) (y:t) (z:t), (le x y) -> ((le y z) -> (le x z)). - -Axiom Antisymm : forall (x:t) (y:t), (le x y) -> ((le y x) -> (x = y)). - -Axiom Total : forall (x:t) (y:t), (le x y) \/ (le y x). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -(* Why3 assumption *) -Definition t1 (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex t). - -(* Why3 assumption *) -Definition inv1(m:(map vertex t)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists l:(list vertex), (path s l v) /\ ((path_weight l - v) = n)) /\ ((forall (l:(list vertex)), (path s l v) -> - (((length l) < pass)%Z -> (n <= (path_weight l v))%Z)) /\ - forall (u:vertex) (l:(list vertex)), (path s l u) -> - (((length l) < pass)%Z -> ((mem (u, v) via) -> (n <= ((path_weight l - u) + (weight u v))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v) -> - (pass <= (length l))%Z) /\ forall (u:vertex), (mem (u, v) via) -> - ((get m u) = Infinite) - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex t)) (via:(set1 (vertex* vertex)%type)): Prop := - forall (u:vertex) (v:vertex), (mem (u, v) via) -> (le (get m v) - (add1 (get m u) (Finite (weight u v)))). - -Require Import Why3. -Require Import Classical. - -(* Why3 goal *) -Theorem WP_parameter_relax : forall (u:vertex), forall (v:vertex), - forall (pass:Z), forall (via:(set1 (vertex* vertex)%type)), forall (m:(map - vertex t)), (((1%Z < pass)%Z \/ (1%Z = pass)) /\ ((mem (u, v) edges) /\ - ((~ (mem (u, v) via)) /\ forall (v1:vertex), (mem v1 vertices) -> - match (get m - v1) with - | (Finite n) => (exists l:(list vertex), (path s l v1) /\ ((path_weight l - v1) = n)) /\ ((forall (l:(list vertex)), (path s l v1) -> - (((length l) < pass)%Z -> (n <= (path_weight l v1))%Z)) /\ - forall (u1:vertex) (l:(list vertex)), (path s l u1) -> - (((length l) < pass)%Z -> ((mem (u1, v1) via) -> (n <= ((path_weight l - u1) + (weight u1 v1))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v1) -> - (pass <= (length l))%Z) /\ forall (u1:vertex), (mem (u1, v1) via) -> - ((get m u1) = Infinite) - end))) -> (match (get m - u) with - | Infinite => False - | (Finite x) => match (get m - v) with - | Infinite => True - | (Finite y) => ((x + (weight u v))%Z < y)%Z - end - end -> forall (m1:(map vertex t)), (m1 = (set m v match (get m - u) with - | Infinite => Infinite - | (Finite x) => (Finite (x + (weight u v))%Z) - end)) -> forall (v1:vertex), (mem v1 vertices) -> match (get m1 - v1) with - | (Finite n) => True - | Infinite => forall (u1:vertex), (mem (u1, v1) (add (u, v) via)) -> - ((get m1 u1) = Infinite) - end). -intros u v pass via m (hpass, (h1, (h2, h3))). -destruct (get m u) as [] _eqn. 2:intuition. -intros hlt m1 eqm1 v1 hv1. -destruct (classic (v1 = v)) as [h|h]. -subst m1 v1. rewrite Select_eq; auto. -subst m1. rewrite Select_neq; auto. -destruct (get m v1) as [] _eqn; auto. -intros u1 hu1v1. -assert ((u1,v1)=(u,v) \/ mem (u1,v1) via). -generalize (add_def1 _ (u1,v1) (u,v) via); intuition. -destruct H as [H|H]. ae. -generalize (h3 v1 hv1); clear h3. -rewrite Heqt1; simpl. - -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_key_lemma_2_1.v b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_key_lemma_2_1.v deleted file mode 100755 index 4c116ab9de..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/bf_WP_BellmanFord_key_lemma_2_1.v +++ /dev/null @@ -1,424 +0,0 @@ -(* This file is generated by Why3's Coq driver *) -(* Beware! Only edit allowed sections below *) -Require Import ZArith. -Require Import Rbase. -Require int.Int. - -(* Why3 assumption *) -Definition unit := unit. - -Parameter qtmark : Type. - -Parameter at1: forall (a:Type), a -> qtmark -> a. -Implicit Arguments at1. - -Parameter old: forall (a:Type), a -> a. -Implicit Arguments old. - -(* Why3 assumption *) -Definition implb(x:bool) (y:bool): bool := match (x, - y) with - | (true, false) => false - | (_, _) => true - end. - -Parameter map : forall (a:Type) (b:Type), Type. - -Parameter get: forall (a:Type) (b:Type), (map a b) -> a -> b. -Implicit Arguments get. - -Parameter set: forall (a:Type) (b:Type), (map a b) -> a -> b -> (map a b). -Implicit Arguments set. - -Axiom Select_eq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (a1 = a2) -> ((get (set m a1 b1) - a2) = b1). - -Axiom Select_neq : forall (a:Type) (b:Type), forall (m:(map a b)), - forall (a1:a) (a2:a), forall (b1:b), (~ (a1 = a2)) -> ((get (set m a1 b1) - a2) = (get m a2)). - -Parameter const: forall (b:Type) (a:Type), b -> (map a b). -Set Contextual Implicit. -Implicit Arguments const. -Unset Contextual Implicit. - -Axiom Const : forall (b:Type) (a:Type), forall (b1:b) (a1:a), - ((get (const b1:(map a b)) a1) = b1). - -(* Why3 assumption *) -Inductive list (a:Type) := - | Nil : list a - | Cons : a -> (list a) -> list a. -Set Contextual Implicit. -Implicit Arguments Nil. -Unset Contextual Implicit. -Implicit Arguments Cons. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint length (a:Type)(l:(list a)) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons _ r) => (1%Z + (length r))%Z - end. -Unset Implicit Arguments. - -Axiom Length_nonnegative : forall (a:Type), forall (l:(list a)), - (0%Z <= (length l))%Z. - -Axiom Length_nil : forall (a:Type), forall (l:(list a)), - ((length l) = 0%Z) <-> (l = (Nil :(list a))). - -Parameter set1 : forall (a:Type), Type. - -Parameter mem: forall (a:Type), a -> (set1 a) -> Prop. -Implicit Arguments mem. - -(* Why3 assumption *) -Definition infix_eqeq (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := - forall (x:a), (mem x s1) <-> (mem x s2). -Implicit Arguments infix_eqeq. - -Axiom extensionality : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (infix_eqeq s1 s2) -> (s1 = s2). - -(* Why3 assumption *) -Definition subset (a:Type)(s1:(set1 a)) (s2:(set1 a)): Prop := forall (x:a), - (mem x s1) -> (mem x s2). -Implicit Arguments subset. - -Axiom subset_trans : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) - (s3:(set1 a)), (subset s1 s2) -> ((subset s2 s3) -> (subset s1 s3)). - -Parameter empty: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments empty. -Unset Contextual Implicit. - -(* Why3 assumption *) -Definition is_empty (a:Type)(s:(set1 a)): Prop := forall (x:a), ~ (mem x s). -Implicit Arguments is_empty. - -Axiom empty_def1 : forall (a:Type), (is_empty (empty :(set1 a))). - -Parameter add: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments add. - -Axiom add_def1 : forall (a:Type), forall (x:a) (y:a), forall (s:(set1 a)), - (mem x (add y s)) <-> ((x = y) \/ (mem x s)). - -Parameter remove: forall (a:Type), a -> (set1 a) -> (set1 a). -Implicit Arguments remove. - -Axiom remove_def1 : forall (a:Type), forall (x:a) (y:a) (s:(set1 a)), (mem x - (remove y s)) <-> ((~ (x = y)) /\ (mem x s)). - -Axiom subset_remove : forall (a:Type), forall (x:a) (s:(set1 a)), - (subset (remove x s) s). - -Parameter union: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments union. - -Axiom union_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (union s1 s2)) <-> ((mem x s1) \/ (mem x s2)). - -Parameter inter: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments inter. - -Axiom inter_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (inter s1 s2)) <-> ((mem x s1) /\ (mem x s2)). - -Parameter diff: forall (a:Type), (set1 a) -> (set1 a) -> (set1 a). -Implicit Arguments diff. - -Axiom diff_def1 : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)) (x:a), - (mem x (diff s1 s2)) <-> ((mem x s1) /\ ~ (mem x s2)). - -Axiom subset_diff : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset (diff s1 s2) s1). - -Parameter choose: forall (a:Type), (set1 a) -> a. -Implicit Arguments choose. - -Axiom choose_def : forall (a:Type), forall (s:(set1 a)), (~ (is_empty s)) -> - (mem (choose s) s). - -Parameter all: forall (a:Type), (set1 a). -Set Contextual Implicit. -Implicit Arguments all. -Unset Contextual Implicit. - -Axiom all_def : forall (a:Type), forall (x:a), (mem x (all :(set1 a))). - -Parameter cardinal: forall (a:Type), (set1 a) -> Z. -Implicit Arguments cardinal. - -Axiom cardinal_nonneg : forall (a:Type), forall (s:(set1 a)), - (0%Z <= (cardinal s))%Z. - -Axiom cardinal_empty : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 0%Z) <-> (is_empty s). - -Axiom cardinal_add : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (~ (mem x s)) -> ((cardinal (add x s)) = (1%Z + (cardinal s))%Z). - -Axiom cardinal_remove : forall (a:Type), forall (x:a), forall (s:(set1 a)), - (mem x s) -> ((cardinal s) = (1%Z + (cardinal (remove x s)))%Z). - -Axiom cardinal_subset : forall (a:Type), forall (s1:(set1 a)) (s2:(set1 a)), - (subset s1 s2) -> ((cardinal s1) <= (cardinal s2))%Z. - -Axiom cardinal1 : forall (a:Type), forall (s:(set1 a)), - ((cardinal s) = 1%Z) -> forall (x:a), (mem x s) -> (x = (choose s)). - -Parameter nth: forall (a:Type), Z -> (set1 a) -> a. -Implicit Arguments nth. - -Axiom nth_injective : forall (a:Type), forall (s:(set1 a)) (i:Z) (j:Z), - ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (((0%Z <= j)%Z /\ - (j < (cardinal s))%Z) -> (((nth i s) = (nth j s)) -> (i = j))). - -Axiom nth_surjective : forall (a:Type), forall (s:(set1 a)) (x:a), (mem x - s) -> exists i:Z, ((0%Z <= i)%Z /\ (i < (cardinal s))%Z) -> (x = (nth i - s)). - -Parameter vertex : Type. - -Parameter vertices: (set1 vertex). - -Parameter edges: (set1 (vertex* vertex)%type). - -(* Why3 assumption *) -Definition edge(x:vertex) (y:vertex): Prop := (mem (x, y) edges). - -Axiom edges_def : forall (x:vertex) (y:vertex), (mem (x, y) edges) -> ((mem x - vertices) /\ (mem y vertices)). - -Parameter s: vertex. - -Axiom s_in_graph : (mem s vertices). - -Axiom vertices_cardinal_pos : (0%Z < (cardinal vertices))%Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint infix_plpl (a:Type)(l1:(list a)) (l2:(list a)) {struct l1}: (list - a) := - match l1 with - | Nil => l2 - | (Cons x1 r1) => (Cons x1 (infix_plpl r1 l2)) - end. -Unset Implicit Arguments. - -Axiom Append_assoc : forall (a:Type), forall (l1:(list a)) (l2:(list a)) - (l3:(list a)), ((infix_plpl l1 (infix_plpl l2 - l3)) = (infix_plpl (infix_plpl l1 l2) l3)). - -Axiom Append_l_nil : forall (a:Type), forall (l:(list a)), ((infix_plpl l - (Nil :(list a))) = l). - -Axiom Append_length : forall (a:Type), forall (l1:(list a)) (l2:(list a)), - ((length (infix_plpl l1 l2)) = ((length l1) + (length l2))%Z). - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint mem1 (a:Type)(x:a) (l:(list a)) {struct l}: Prop := - match l with - | Nil => False - | (Cons y r) => (x = y) \/ (mem1 x r) - end. -Unset Implicit Arguments. - -Axiom mem_append : forall (a:Type), forall (x:a) (l1:(list a)) (l2:(list a)), - (mem1 x (infix_plpl l1 l2)) <-> ((mem1 x l1) \/ (mem1 x l2)). - -Axiom mem_decomp : forall (a:Type), forall (x:a) (l:(list a)), (mem1 x l) -> - exists l1:(list a), exists l2:(list a), (l = (infix_plpl l1 (Cons x l2))). - -(* Why3 assumption *) -Inductive path : vertex -> (list vertex) -> vertex -> Prop := - | Path_empty : forall (x:vertex), (path x (Nil :(list vertex)) x) - | Path_cons : forall (x:vertex) (y:vertex) (z:vertex) (l:(list vertex)), - (edge x y) -> ((path y l z) -> (path x (Cons x l) z)). - -Axiom path_right_extension : forall (x:vertex) (y:vertex) (z:vertex) (l:(list - vertex)), (path x l y) -> ((edge y z) -> (path x (infix_plpl l (Cons y - (Nil :(list vertex)))) z)). - -Axiom path_right_inversion : forall (x:vertex) (z:vertex) (l:(list vertex)), - (path x l z) -> (((x = z) /\ (l = (Nil :(list vertex)))) \/ - exists y:vertex, exists lqt:(list vertex), (path x lqt y) /\ ((edge y z) /\ - (l = (infix_plpl lqt (Cons y (Nil :(list vertex))))))). - -Axiom path_trans : forall (x:vertex) (y:vertex) (z:vertex) (l1:(list vertex)) - (l2:(list vertex)), (path x l1 y) -> ((path y l2 z) -> (path x - (infix_plpl l1 l2) z)). - -Axiom empty_path : forall (x:vertex) (y:vertex), (path x (Nil :(list vertex)) - y) -> (x = y). - -Parameter weight: vertex -> vertex -> Z. - -(* Why3 assumption *) -Set Implicit Arguments. -Fixpoint path_weight(l:(list vertex)) (dst:vertex) {struct l}: Z := - match l with - | Nil => 0%Z - | (Cons x Nil) => (weight x dst) - | (Cons x ((Cons y _) as r)) => ((weight x y) + (path_weight r dst))%Z - end. -Unset Implicit Arguments. - -Axiom path_weight_right_extension : forall (x:vertex) (y:vertex) (l:(list - vertex)), ((path_weight (infix_plpl l (Cons x (Nil :(list vertex)))) - y) = ((path_weight l x) + (weight x y))%Z). - -Axiom path_in_vertices : forall (v1:vertex) (v2:vertex) (l:(list vertex)), - (mem v1 vertices) -> ((path v1 l v2) -> (mem v2 vertices)). - -Axiom simple_path : forall (v:vertex) (l:(list vertex)), (path s l v) -> - exists lqt:(list vertex), (path s lqt v) /\ - ((length lqt) < (cardinal vertices))%Z. - -(* Why3 assumption *) -Definition negative_cycle(v:vertex): Prop := (mem v vertices) /\ - ((exists l1:(list vertex), (path s l1 v)) /\ exists l2:(list vertex), - (path v l2 v) /\ ((path_weight l2 v) < 0%Z)%Z). - -Axiom key_lemma_1 : forall (v:vertex) (n:Z), (forall (l:(list vertex)), - (path s l v) -> (((length l) < (cardinal vertices))%Z -> - (n <= (path_weight l v))%Z)) -> ((exists l:(list vertex), (path s l v) /\ - ((path_weight l v) < n)%Z) -> exists u:vertex, (negative_cycle u)). - -(* Why3 assumption *) -Inductive t := - | Finite : Z -> t - | Infinite : t . - -(* Why3 assumption *) -Definition add1(x:t) (y:t): t := - match x with - | Infinite => Infinite - | (Finite x1) => - match y with - | Infinite => Infinite - | (Finite y1) => (Finite (x1 + y1)%Z) - end - end. - -(* Why3 assumption *) -Definition lt(x:t) (y:t): Prop := - match x with - | Infinite => False - | (Finite x1) => - match y with - | Infinite => True - | (Finite y1) => (x1 < y1)%Z - end - end. - -(* Why3 assumption *) -Definition le(x:t) (y:t): Prop := (lt x y) \/ (x = y). - -Axiom Refl : forall (x:t), (le x x). - -Axiom Trans : forall (x:t) (y:t) (z:t), (le x y) -> ((le y z) -> (le x z)). - -Axiom Antisymm : forall (x:t) (y:t), (le x y) -> ((le y x) -> (x = y)). - -Axiom Total : forall (x:t) (y:t), (le x y) \/ (le y x). - -(* Why3 assumption *) -Inductive ref (a:Type) := - | mk_ref : a -> ref a. -Implicit Arguments mk_ref. - -(* Why3 assumption *) -Definition contents (a:Type)(v:(ref a)): a := - match v with - | (mk_ref x) => x - end. -Implicit Arguments contents. - -(* Why3 assumption *) -Definition t1 (a:Type) := (ref (set1 a)). - -(* Why3 assumption *) -Definition distmap := (map vertex t). - -(* Why3 assumption *) -Definition inv1(m:(map vertex t)) (pass:Z) (via:(set1 (vertex* - vertex)%type)): Prop := forall (v:vertex), (mem v vertices) -> match (get m - v) with - | (Finite n) => (exists l:(list vertex), (path s l v) /\ ((path_weight l - v) = n)) /\ ((forall (l:(list vertex)), (path s l v) -> - (((length l) < pass)%Z -> (n <= (path_weight l v))%Z)) /\ - forall (u:vertex) (l:(list vertex)), (path s l u) -> - (((length l) < pass)%Z -> ((mem (u, v) via) -> (n <= ((path_weight l - u) + (weight u v))%Z)%Z))) - | Infinite => (forall (l:(list vertex)), (path s l v) -> - (pass <= (length l))%Z) /\ forall (u:vertex), (mem (u, v) via) -> - forall (lu:(list vertex)), (path s lu u) -> (pass <= (length lu))%Z - end. - -(* Why3 assumption *) -Definition inv2(m:(map vertex t)) (via:(set1 (vertex* vertex)%type)): Prop := - forall (u:vertex) (v:vertex), (mem (u, v) via) -> (le (get m v) - (add1 (get m u) (Finite (weight u v)))). - -Require Import Why3. -Ltac ae := why3 "alt-ergo". -Ltac Z3 := why3 "z3-3". - -Lemma length_nonneg: forall a, forall l: list a, (length l >= 0)%Z. -induction l; ae. -Qed. - -(* Why3 goal *) -Theorem key_lemma_2 : forall (m:(map vertex t)), (inv1 m (cardinal vertices) - (empty :(set1 (vertex* vertex)%type))) -> ((inv2 m edges) -> - forall (v:vertex), ~ (negative_cycle v)). -intros m hinv1. unfold inv2. intros hinv2. -intros v (hv, ((l1, h1), (l2, (h2a, h2b)))). -assert - (H: forall n: Z, (0 <= n)%Z -> - forall vi: vertex, forall l: list vertex, (length l <= n)%Z -> - path v l vi -> - le (get m vi) (add1 (get m v) (Finite (path_weight l vi)))). -intros n hn; pattern n; apply natlike_ind. 3: auto. -intros vi l; destruct l. -simpl. -intros _ hpath. assert (vi = v) by ae. subst vi. -unfold le, add1. -right; ae. -intros h _. -absurd ((length (Cons v0 l) <= 0)%Z); auto. -unfold length; fold length. -generalize (length_nonneg _ l). -omega. -clear n hn. intros n hn IH. -intros vi l hl hpath. -destruct (path_right_inversion v vi l hpath) as [(eq1,eq2)|(y,(l',(y1,(y2,y3))))]. -subst; simpl. ae. -assert (hl': (length l = length l' + 1)%Z). -generalize (Append_length _ l' (Cons y Nil)). -ae. -subst l. rewrite path_weight_right_extension. -rewrite hl' in hl. clear hl'. -assert (hl': (length l' <= n)%Z) by omega. -generalize (IH y l' hl' y1). -generalize (hinv2 y vi y2); clear hinv2. -unfold le, add1. -destruct (get m vi); destruct (get m v); destruct (get m y); ae. -assert (hl2a: (0 <= length l2)%Z). - generalize (length_nonneg _ l2). omega. -assert (hl2b: (length l2 <= length l2)%Z) by omega. -generalize (H (length l2) hl2a v l2 hl2b h2a); clear H hl2a hl2b. -unfold le, add1; destruct (get m v) as [] _eqn. -ae. -absurd (get m v = Infinite); auto. -ae. -Qed. - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/why3session.xml b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/why3session.xml deleted file mode 100755 index aefa977ff1..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/bf/why3session.xml +++ /dev/null @@ -1,1545 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/biblio.bib b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/biblio.bib deleted file mode 100755 index 56372d27fb..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/biblio.bib +++ /dev/null @@ -1,77 +0,0 @@ - -@inproceedings{conchon07tfp, - author = {Sylvain Conchon and - Jean-Christophe Filli\^atre and - Julien Signoles}, - title = {{Designing a Generic Graph Library using {ML} Functors}}, - booktitle = {The Eighth Symposium on Trends in Functional Programming}, - editor = {Marco T. Moraz\'an and Henrik Nilsson}, - publisher = {Seton Hall University}, - volume = {TR-SHU-CS-2007-04-1}, - pages = {XII/1--13}, - year = 2007, - address = {New York, USA}, - month = apr, - type_publi = {icolcomlec}, - type_digiteo = {conf_autre}, - abstract = { - This paper details the design and implementation of Ocamlgraph, a - highly generic graph library for the programming language Ocaml. - This library features a large set of graph data - structures---directed or undirected, with or without labels on - vertices and edges, as persistent or mutable data structures, - etc.---and a large set of graph algorithms. Algorithms are written - independently from graph data structures, which allows combining - user data structure (resp. algorithm) with Ocamlgraph algorithm - (resp. data structure). Genericity is obtained through massive use - of the Ocaml module system and its functions, the so-called - functors.}, - url = {http://www.lri.fr/~filliatr/ftp/publis/ocamlgraph-tfp07.ps}, - topics = {team, lri}, - x-equipes = {demons PROVAL}, - x-type = {article}, - x-support = {actes_aux}, - x-editorial-board = {yes} -} - -@book{algo, - added-at = {2012-02-12T20:02:28.000+0100}, - author = {Cormen, Thomas H. and Leiserson, Charles E. and Rivest, Ronald L. and Stein, Clifford}, - biburl = {http://www.bibsonomy.org/bibtex/2225d42638921bee01b4ac8ff991b0a6a/pvortex3}, - edition = 2, - interhash = {dcdeb0ec50a6798abf1724056982b543}, - intrahash = {225d42638921bee01b4ac8ff991b0a6a}, - keywords = {}, - publisher = {The MIT Press}, - title = {Introduction to Algorithms}, - year = 2001 -} - -@inproceedings{boogie11why3, - author = {Fran\c{c}ois Bobot and Jean-Christophe Filli\^atre and -Claude March\'e and Andrei Paskevich}, - title = {Why3: Shepherd Your Herd of Provers}, - topics = {team}, - booktitle = {Boogie 2011: First International Workshop on Intermediate Verification Languages}, - year = 2011, - address = {Wroc\l{}aw, Poland}, - month = {August}, - url = {http://proval.lri.fr/submissions/boogie11.pdf}, - x-international-audience = {yes}, - x-proceedings = {yes}, - x-cle-support = {BOOGIE}, - x-type = {actes_aux}, - x-support = {article}, - x-equipes = {demons PROVAL}, - abstract = {Why3 is the next generation of the - Why software verification platform. - Why3 clearly separates the purely logical - specification part from generation of verification conditions for programs. - This article focuses on the former part. - Why3 comes with a new enhanced language of - logical specification. It features a rich library of - proof task transformations that can be chained to produce a suitable - input for a large set of theorem provers, including SMT solvers, - TPTP provers, as well as interactive proof assistants.} -} - diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/dia1.dia b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/dia1.dia deleted file mode 100755 index 6f8f55f8ee..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/dia1.dia and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/report.tex b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/report.tex deleted file mode 100755 index 54725e8435..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/report.tex +++ /dev/null @@ -1,390 +0,0 @@ -\documentclass[a4paper,10.5pt]{article} - -\usepackage[utf8]{inputenc} -\usepackage{fullpage,url} -\usepackage{listings} -\usepackage{amssymb,amsmath,amsthm} - -\title{Internship report at LRI} -\author{Yuto Takei \\ The University of Tokyo } - -\begin{document} - -\maketitle - -\begin{abstract} - -This document describes my experience of 5 week internship at the -Laboratoire de Recherche en Informatique (LRI) at Universit\'e -Paris-Sud. My main objective for this internship was to find the -research topic for my Master's project and learn how to conduct it. It -was also expected to broaden my network for prolonging academic -communication. - -I was dispatched to ProVal Team at LRI, whose members investigate the -methods to prove the correctness of the program code. My assignments -were implementation of the negative-cycle detection algorithms and -formal verification of \textsc{Bellman-Ford} algorithm under the -supervision of Dr.\ Jean-Christophe Filli\^atre. In order to handle -them, I utilized some tools developed by ProVal Team such as -\emph{ocamlgraph} and \emph{Why3}. With gaining much support and -instructions from him, I successfully integrated the implementation -and additional by-product to the existing software library and proved -some characteristics of the algorithm to be correct. Also as a result, -I acquired some of the fundamental skill for conducting the research -through taking communications with various researchers. - -In the former half of the document, my objectives and results are -explained in terms of research. The section contains the background -motivation and importance of the work as well. In the latter half, my -experiences during the internship are explained in detail. They -include the reception, supervision and social communication with other -researchers. - -\end{abstract} - -\newpage - -\section{Objective and Results} - -\paragraph{Motivation and Objectives} - -The main objective for my exchange internship was to find the -appropriate topic for my Master's research and to broaden my network -for wider communication with other researchers. My interests in -computer science lay in deep understanding and contribution to the -topics related to both programming languages and computation -theory. It is because the study on these is essential and directly -beneficial in order to put the algorithmic research into practice. At -the same time, I had an interest as well in methods to process graph -data structure efficiently. By combining these interests, I decided to -investigate the graph processing system written in a functional -programming language. - -Since those languages have higher ability to let the compilers -optimize the program for execution, I thought it is efficient by -nature to construct discrete algorithms by using them. Among them, -OCaml was most flexible with wider choices to handle complicated data -structure; it provides the interface to operate both persistent and -imperative data. Additionally it is a strong advantage that OCaml is -developed by INRIA and has a close connection with research ground. - -By examining noted graph processing systems in OCaml, I found -\emph{ocamlgraph} project, which was ongoing at ProVal Team in -Laboratoire de Recherche en Informatique (LRI) at Universit\'e -Paris-Sud. The project was appealing for me also because LRI has many -researchers from CNRS and INRIA. Thinking about the diversity of the -laboratory, it was the ideal project to fulfill my objective. - -In asking for the acceptance approval, I contacted Prof.\ Christine -Paulin-Mohring, the leader of ProVal Team at LRI and she kindly -introduced Dr.\ Jean-Christophe Filli\^atre, one of the developers of -\emph{ocamlgraph}. He accepted my internship request and suggested me -some assignments: - -\vspace*{-4pt}\begin{itemize}\itemsep-3pt -\item Implementation of one or more negative-cycle detection - algorithms\cite{cg99negcycle} in \emph{ocamlgraph} library -\item Proving the correctness of the implemented algorithms by using - \emph{Why3} platform and theorem provers (e.g. \emph{Alt-Ergo} as an - automated prover and \emph{Coq} for an interactive one) -\end{itemize}\vspace*{-4pt} - -Fortunately, these assignments completely matched to my interest and -objective. The internship was thus finally settled. - -\paragraph{Importance of the Topics} - -The assignments shown earlier contain important challenges. - -Regarding the first assignment, \emph{ocamlgraph} \cite{conchon07tfp} -is a software library for OCaml language that provides several -implementations to represent a graph and discrete algorithms to -perform on them. The implementation can be chosen in accordance with -the user's program. It is also possible to define a new data structure -optimized for specific purpose. - -The implementation of negative-cycle detection algorithm is important -on \emph{ocamlgraph} because the algorithm is essential as a -pre-performed operation before the others to let them work properly. -It has wide range of applications not only in discrete algorithms, but -also in the real world such as currency arbitrage. - -Besides, as mentioned in \cite{conchon07tfp}, the enrichment of -\emph{ocamlgraph} should be promoted because that it is the only -successful graph library to provide the wider choices of graph -representations than any other without making the codes unmanageable. -Others either failed in supporting several representations or -algorithms, or/and lost the generality of the algorithm to perform. - -Regarding the second assignment, \emph{Why3} \cite{boogie11why3} is a -software verification platform that enables one to describe the -algorithm properties by first-order logic. Same as \emph{ocamlgraph}, -it is developed by ProVal Team. The importance of the assignment is of -two-fold. - -First, in this field of study, there existed many proof works on -discrete algorithms. However they required either total involvement of -human in proof session or manual division of original goal into -smaller propositions, resulting in the cost enlargement. By enjoying -one of the most important advantages in \emph{Why3}, the ability to -prove the goal by combining several different theorem provers to -expand the availability of partial proofs, it is possible to largely -promote the automation of the entire proof. Therefore, it is worth to -accomplish the proof on the discrete algorithms by \emph{Why3}. - -Second, at the end of the project, it was also planned to integrate -the achievement of the proof into the standard libraries in -\emph{Why3} platform. By accomplishing this, logical description of a -graph data, axioms and theorems on graph characteristics, and related -functions and predicates become reusable in other proof sessions. It -largely contributes to the other works on proving discrete algorithms -mostly automatically. - -\paragraph{Project Results} - -Here I explain the overview of my result from the research point of -view. As for the achievement in communication with other researchers -as noted as one of the objectives above, it will be discussed in the -next section. - -First, I implemented \textsc{Bellman-Ford} algorithm taken from -\cite{cor01algo} as one of the fundamental algorithms of -negative-cycle detection algorithm. By integrating the implementation -within \emph{ocamlgraph} library, as much attention was paid not to -lose the generality to handle any arbitrarily graph -representations. Also considering the practical usage, a simple -optimization was done to reduce the number of loop iterations. In the -end, I tested it comprehensively to work correctly for any input. - -Additionally as the advanced topic, I also designed and added the -incremental graph builder for \emph{ocamlgraph}, which is available as -a new graph representation and ensures it to be free of negative -cycles at any point. However on the other hand, it does not improve -the worst-case time complexity compared to the trivial method and I -found out it is required to survey the results of dynamic graph -researches. - -Second, the correctness proof of the implemented algorithm was half -completed. I found there involves following four desired properties, -and first half of them was proved to be correct: - -\begin{enumerate}\itemsep-3pt -\item The algorithm always terminates eventually. -\item Non-reachable vertices from the source vertex have infinity - length after the termination. -\item Other vertices must have the length of the shortest path from - the source after the termination, if no negative length cycle exists - in the graph. -\item If and only if there is at least one negative-cycle in the - graph, the algorithm reports the existence. -\end{enumerate} - -Although not all properties were proved, I learned the basic -techniques for formal verification and gained some observations -throughout this assignment. - -\begin{itemize}\itemsep-3pt -\item It is essential to provide the correct specification of the - algorithm as precondition and postcondition. It should be concise - without redundancy to keep the whole proof manageable by automated - provers, but also should be exhaustive to cover all properties. -\item It is sometimes effective to use ghost codes, i.e., the - redundant assertions when the automated provers cannot infer strong - enough premises. They are not part of the specification, but it is - inserted for proving to provide the strong enough hypothesis. -\item The pigeon whole principal on graph path is in high demand for - proving path-related discrete algorithms. It is expressed as the - statement that ``If there exists a path between given two vertices, - there always exists the path between them with less steps than the - number of all vertices in the graph.'' -\end{itemize} - -Since I could not finish the proof, I was not able to integrate the -result for \emph{Why3} standard library yet. Therefore, continuous -effort will be made to finish the proof before that. In addition, it -is to be considered to define a simple path as the path between two -vertices without any loop. It was one of the experimental intermediate -observations during the work that the use of simple path may make it -possible to bypass the proof of pigeonhole principle. Because it can -be inductively defined easily, I can expect simpler proof if it works -successful. - -As a whole, I would like to continue making the effort to complete -this proof work and publish the result at some conference. - -\section{Experiences} - -As mentioned in the introduction, Dr.\ Jean-Christophe Filli\^atre -kindly supervised me for all the work during the internship. In this -section, I describe my experience at LRI informally apart from the -research result. - -\paragraph{Project and Assignments} - -On the very first day of my arrival at LRI, Dr.\ Filli\^atre clearly -showed my first task and instructed the way to start. The first task -was the implementation of \textsc{Bellman-Ford} algorithm in -\emph{ocamlgraph} library, which I think was very appropriate as the -first assignment. It helped me to understand the algorithm with detail -and to measure my skill to handle the later proof problem. As a -result, it also made me familiar with \emph{ocamlgraph} library -itself. - -In the end of the first week, I started to make the incremental graph -builder. By using the knowledge I acquired by handling the first -assignment, I was able to deal with this problem as advanced topic on -detecting negative length cycle. Unfortunately I lack of time to refer -the literature from the previous work by others and so I could not -make the efficient implementation in terms of time and space -complexity. Yet still this task let me notice the field of dynamic -graph. - -When the second week started, he showed the main assignment during my -internship; that is to prove the correctness of the implemented -algorithm by using \emph{Why3} platform. It was difficult and -challenging enough to spend the rest of my internship period to get -some insights about the problem. Since my interest lay in the -programming languages and computation theory, this assignment best -matched to me. As a result, I was able to devote myself to understand -the background and fundamental techniques to deal with formal -verification as well as the mechanism of \emph{Why3}. - -Through the challenge on my assignment, I also gained the opportunity -to learn basics of \emph{Coq}. For example, some parts of the proof -still required the human interaction although most of the proof was -done automatically. In these parts, \emph{Coq} helped me with -understanding inductional propositions and logical leaps that -automated provers could not resolve. Therefore I had to either add -intermediate lemmas and assertions so that they could resolve, or try -to prove the goal by \emph{Coq} on my own. Eventually this specific -experience motivated me to learn the method to prove some propositions -by induction on \emph{Coq}. - -Beside the proof work on \emph{Why3}, it was also the important duty -to put the result into the paper and the presentation. Considering to -present and to publish the result at some occasions, he instructed me -to write the article simultaneously with the proof. Also he gave me -the opportunity to give a talk about the result in front of the other -members of the team at the end of the fourth week. I think it was a -really good training for me to gather the result into slides and let -the audience understand the contents. - -Finally, there were some works left which requires some additional -effort to solve. I would like to continue working on it to finish -them. - -\paragraph{Supervision} - -The supervision of Dr.\ Filli\^atre was well organized and easy to -understand yet deep as it motivated me to learn greedily. Also it is -strongly agreed that his guidance was more than conscientious that I -respected his instructions. - -He gave me the opportunity to review the work every day or two. In -this review, I reported my daily accomplishments and problems that I -have. I had a feeling that he evaluated the result properly positive -as for the successful part, and he promptly pointed out both the cause -of problems and ways to improve for unfavorable results. That attitude -of him greatly encouraged me to advance the work. - -I also thought that he focused on the efficiency to learn new things -and deal with the assignment. For me to try to learn new things, he -showed me several literatures that I should refer as well as letting -me borrow his books. Besides, some tutorials are also given -appropriately when I was in need. For example, while I did not have -any experience in using LaTeX for formatting documents, he explained -the basic techniques on effective usage of it. He also advised me in -the quickest way to adapt with the Ubuntu environment and Emacs. Owing -to it, I now continue to use it efficiently for my work after the -internship. - -Finally, he was also outstanding to instruct the way to present the -result. When my draft slides and practice session of the presentation -lacked some consistency among the contents, he illustrated the way to -clearly explain the results and reviewed the amendment for the final -version till it reached to satisfactory level. - -As a whole, I deeply appreciated his supervision for giving me the -opportunity to train myself for starting the research work. - -\paragraph{Research Activities and Environment} - -On every weekday during the internship, I regularly started the work -from half past nine and ended at six sharp in the evening. The total -work hours were 7 per day by taking one and half hour of lunch -break. I spent most of the time at my assigned room for the -work. Without interruption, I was able to concentrate comfortably on -my work. - -Regarding the facility, there is a lounge space for every team that -the members can freely discuss anything with having coffee and tea -with some snacks. Many people gathered in the room to talk after -having lunch at noon, which I thought stimulates the interaction -between researchers. I also found that it helped the people to take -some short rest during the work, resulting in the improvement of their -efficiency during the work. - -Apart from the daily work, I also had some other opportunities to -cultivate my research ground. One of them was to participate in a -seminar in LRI. It was about bounding the iterations of Linear -Programming given by Prof.\ Shinji Mizuno from Tokyo Institute of -Technology. I thought the atmosphere at the seminar was completely -different from the one we have in my laboratory; audience involves in -the presentation more frankly and discuss what they thought without -any hesitation. Under such an environment, the interaction between the -participants is promoted, resulting in wider communication among -researchers on the topic. - -Another opportunity was to have a discussion with Prof.\ Abdel Lisser -regarding my objective. He is the leader of GraphComb Team at LRI and -his research includes optimization methods in terms of combinatorics. -He suggested me to check discrete algorithms which relates to matroids -because some of them may still not be done in formal verification -yet. By checking some related works about them, he recommended me to -find the automated proving tasks which would have academic -significance. - -Prof.\ Claude March\' e also kindly gave some time to have a -discussion on the efficient way to prove graph related algorithms, -especially the graph representation method for proof and the proving -the pigeonhole principle about graph paths on \emph{Coq}. - -\paragraph{Administrative Procedures} - -The administrative tasks at LRI were mostly taken care of by -Dr.\ Emmanuel Waller and Mr.\ Jean-Fran\c cois Baffier. Following are -some examples of them but not limited to them. - -\begin{itemize}\itemsep-3pt -\item Public transportation subscriptions -\item Entrance control at the building -\item School cafeteria arrangement -\item Reimbursement of expenses -\item Accommodation consideration -\end{itemize} - -\paragraph{Other Communications} - -I was able to have miscellaneous discussions with other team members -time to time at lunch and other occasions. Some of them are about the -research interests; others are general topics such as educations. Also -with courtesy of Dr.\ Waller and Dr.\ Filli\^atre, I had opportunities -to visit their places to enjoy the private meal. - -\section*{Acknowledgement} - -This internship was realized by the overseas dispatch program of IST -and I hereby would like to express my sincere gratitude to all people -involved in it. I would like to express my particular appreciation for -LRI faculty members, especially Dr.\ Filli\^atre for the great -supervision and Dr.\ Waller for the kindest care on administration -procedures. I am thankful for OIR/IST staffs and the program committee -of the University of Tokyo for providing me this opportunity as well. -I received the great support from Mrs.\ Sato on the internship -arrangement. - -\bibliographystyle{plain} -\bibliography{./biblio} - -\end{document} diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/slides.tex b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/slides.tex deleted file mode 100755 index 8fbbad4e9d..0000000000 --- a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/slides.tex +++ /dev/null @@ -1,567 +0,0 @@ -\documentclass{beamer} - -\usetheme{Marburg} -\usecolortheme{beaver} -\usefonttheme{structurebold} - -\usepackage{listings} -\usepackage{algorithm} -\usepackage{algorithmic} -\usepackage{listings} -\usepackage{amssymb,amsmath,amsthm} - -\setbeamertemplate{footline}{ -\hfill\scriptsize{\color{white}\insertframenumber}\hspace*{24pt}\vspace{8pt}} -\setbeamertemplate{navigation symbols}{} - -\lstset{basicstyle=\footnotesize, columns=fullflexible} -\lstdefinelanguage{Ocaml} -{ -basicstyle=\ttfamily, -keywordstyle=\color{blue}, -morekeywords=[1]{exception,of,val},% -%keywordstyle=[1]{\color{red}},% -morekeywords=[2]{true,false},% -%keywordstyle=[2]{\color{blue}},% -otherkeywords={},% -commentstyle=\itshape,% -columns=[l]fullflexible,% -sensitive=true,% -morecomment=[s]{(*}{*)},% -escapeinside={*?}{?*},% -keepspaces=true, -literate=% -{<}{$<$}{1}% -{>}{$>$}{1}% -{<=}{$\le$}{1}% -{>=}{$\ge$}{1}% -{<>}{$\ne$}{1}% -{->}{$\rightarrow$}{2}% -{<->}{$\leftrightarrow$}{2}% -} - -\lstdefinelanguage{Why3} -{ -basicstyle=\ttfamily, -keywordstyle=\color{blue}, -morekeywords=[1]{inductive,predicate,function,goal,type,use,import,theory,end,in,axiom,lemma,export,forall,constant,module,let,exception,match,with,exists,val,unit},% -%keywordstyle=[1]{\color{red}},% -morekeywords=[2]{true,false},% -%keywordstyle=[2]{\color{blue}},% -otherkeywords={},% -commentstyle=\itshape,% -columns=[l]fullflexible,% -sensitive=true,% -morecomment=[s]{(*}{*)},% -escapeinside={*?}{?*},% -keepspaces=true, -literate=% -{v1}{v$_1$}{1}% -{v2}{v$_2$}{1}% -{v3}{v$_3$}{1}% -{<}{$<$}{1}% -{>}{$>$}{1}% -{<=}{$\le$}{1}% -{>=}{$\ge$}{1}% -{<>}{$\ne$}{1}% -{/\\}{$\land$}{1}% -{\\/}{ $\lor$ }{3}% -{\ or(}{ $\lor$(}{3}% -{not\ }{$\lnot$ }{1}% -{not(}{$\lnot$(}{1}% -{->}{$\rightarrow$}{2}% -{<->}{$\leftrightarrow$}{2}% -} - -\lstnewenvironment{why3} -{\lstset{language=Why3}} -{} - -\begin{document} - -\title{A Formal Proof of Bellman-Ford Algorithm} -\author[Yuto Takei]{Yuto Takei} -\institute{The University of Tokyo} - -\maketitle - -\begin{frame}{Table of contents} -\tableofcontents -\end{frame} - -\section{Bellman-Ford Algorithm} -\frame{\sectionpage} - -\subsection{Introduction} - -\begin{frame}{Bellman-Ford Algorithm} - -Solution for single-source shortest path problem $(G,s,l)$ - -\begin{itemize} -\item Directed graph $G(V,E)$ -\item Source vertex $s\in V$ -\item Length function $l: E\to \mathbf{K}$ -\begin{itemize} -\item $\mathbf{K}$: Any monoid with total order (e.g. -$\mathbf{N}, \mathbf{Z}, \mathbf{R}$). -\end{itemize} -\end{itemize} - -\pause - -The algorithm will either - -\begin{itemize} -\item give shortest-paths to all vertices from $s$, or -\item assert the existence of a negative cycle. -\end{itemize} - -\end{frame} - -\begin{frame}{For example...} - -\only<1>{\includegraphics[width=1.0\textwidth]{intro1.pdf} -}\only<2>{\includegraphics[width=1.0\textwidth]{intro2.pdf} -}\only<3>{\includegraphics[width=1.0\textwidth]{intro3.pdf} -}\only<4>{\includegraphics[width=1.0\textwidth]{intro4.pdf} -} - -\begin{itemize} -\only<1-2>{\onslide<2>{\item Gave distances from source to all vertices}} -\only<3-4>{\onslide<4>{\item Found a negative cycle}} -\end{itemize} - -\end{frame} - -\begin{frame}{Goal (revisited)} - -Each node has a label $(\pi,d)$ containing parent and distance. - -\includegraphics[width=1.0\textwidth]{intro5.pdf} - -After the algorithm termination, -\begin{itemize} -\item all nodes have the smallest possible distance from $s$, and -\item the shortest path tree is built by traversing $\pi$ -\end{itemize} - -\end{frame} - -\subsection{Mechanism} - -\begin{frame}{How does it work?} - -\begin{enumerate} - -\item \alert{Initialization} - -Set $(nil,\infty)$ for all vertex except $s$ having $(nil,0)$.\newline - -\item \alert{Relaxing edges} - -If $v$ is reachable with less distance by $(u,v)\in E$, update the -label. Perform this over all edges. - -\only<1-2>{\begin{center}\onslide<2>\includegraphics[width=0.7\textwidth]{rlx1.pdf}\end{center} -}\only<3->{\begin{center}\includegraphics[width=0.7\textwidth]{rlx2.pdf}\end{center} -}\onslide<4>{Iterate for $|V|-1$ times. (You can stop when stable)} - -\end{enumerate} - -\end{frame} - -\begin{frame}{Example} -\only<1>{Pass \#0 - just after initialization -\includegraphics[width=0.9\textwidth]{ex1.pdf} -}\only<2>{Pass \#1 -\includegraphics[width=0.9\textwidth]{ex2.pdf} -}\only<3>{Pass \#1 -\includegraphics[width=0.9\textwidth]{ex3.pdf} -}\only<4>{Pass \#1 -\includegraphics[width=0.9\textwidth]{ex4.pdf} -}\only<5>{Pass \#1 -\includegraphics[width=0.9\textwidth]{ex5.pdf} -}\only<6>{Pass \#2 -\includegraphics[width=0.9\textwidth]{ex6.pdf} -}\only<7>{Pass \#3 -\includegraphics[width=0.9\textwidth]{ex7.pdf} -} - -\end{frame} - -\begin{frame}{How does it work? (cont.)} - -\begin{enumerate} -\setcounter{enumi}{2} - -\item \alert{Still be able to relax?} - -After $(|V|-1)$-th pass, all vertices should be exact. -Otherwise, a negative cycle exists. - -\begin{center} -\only<1>{\includegraphics[height=0.6\textheight]{wst1.pdf} -}\only<2>{\includegraphics[height=0.6\textheight]{wst2.pdf} -} -\end{center} - -\end{enumerate} - -\end{frame} - -\begin{frame}{$\mbox{\sc Bellman-Ford}(G,s,l)$} - -\begin{algorithmic}[1] -\STATE{$\mbox{\sc Initialize-Single-Source}(G,s)$} -\FOR{$i=1\to |V[G]|-1$} -\FORALL{edge $(u,v) \in E[G]$} -\STATE{$\mbox{\sc Relax}(u,v,l)$} -\ENDFOR -\ENDFOR -\FORALL{edge $(u,v)\in E[G]$} -\IF{$d[v]>d[u]+l(u,v)$} -\RETURN{False} -\ENDIF -\ENDFOR -\RETURN{True} -\end{algorithmic} - -(Cormen et al. Introduction to Algorithms, p 532) - -\end {frame} - -\section{Implementation in OCamlgraph} -\frame{\sectionpage} - -\begin{frame}[fragile]{Work that has been done} - -\begin{enumerate} -\item Implementation of Bellman-Ford algorithm - -\begin{lstlisting}[language=Ocaml] -exception Negative_cycle of G.E.t list - -val all_shortest_paths: - G.t -> G.V.t -> W.t H.t - -val find_negative_cycle_from: - G.t -> G.V.t -> G.E.t list -\end{lstlisting} \vspace*{10pt} - -\pause -\item Negative cycle detection from any source - -\begin{lstlisting}[language=Ocaml] -val find_negative_cycle: G.t -> G.E.t list -\end{lstlisting} - -\end{enumerate} - -\end{frame} - - -\begin{frame}{Negative cycle detection from any source} - -\vspace*{8pt} -\only<1>{Want to ensure that $G$ is free of any negative cycles.\vspace*{-18pt} -}\only<2>{Checking from specific $s$ is not exhaustive.\vspace*{-14pt} -}\only<3>{\alert{Solution:} To give a ``virtual'' $s$ that can reach all nodes.} - -\begin{center} -\only<1>{\includegraphics[height=0.8\textheight]{s1.pdf} -}\only<2>{\includegraphics[height=0.8\textheight]{s2.pdf} -}\only<3>{\includegraphics[width=0.8\textwidth]{s3.pdf} -}\end{center} - -\only<3>{$s$ connects to one of the elements in every top ancestor among -strongly connected components.\vspace{100pt}} - -\end{frame} - - -\begin{frame}[fragile]{Work that has been done (cont.)} - -\vspace*{16pt}\begin{enumerate} -\setcounter{enumi}{2} -\item Incremental graph builder w/o negative cycle\newline - -\only<1>{ -Keep track of -\begin{itemize} -\item the set of ancestors $S$, and -\item distances from each ancestor to every node $d_s(v)$ -\end{itemize} - -\begin{center} -\includegraphics[width=0.9\textwidth]{inc1.pdf} -\end{center} -} - -\only<2-3> -{ -When adding -\begin{itemize} -\item\alert{vertex $v$}, just add $v$ to $S$. -\item\alert{edge $(u,v)$}, if $v\in S$, check if $(u,v)$ causes a loop.\newline -If not, $S\leftarrow S\backslash v$. Propagate distance to descendants. -\end{itemize} - -\begin{center} -\only<2>{\includegraphics[width=0.8\textwidth]{inc2.pdf}} -\only<3>{\includegraphics[width=0.8\textwidth]{inc3.pdf}} -\end{center} -} - -\only<4-5> -{ -When removing -\begin{itemize} -\item\alert{vertex $v$}, remove all edges $(u,v)$, $(v,w)$ then $v$ itself. -\item\alert{edge $(u,v)$}, correct the distances of $v$ and propagate. -\end{itemize} - -\begin{center} -\only<4>{\includegraphics[width=0.65\textwidth]{inc4.pdf}} -\only<5>{\includegraphics[width=0.65\textwidth]{inc5.pdf}} -\end{center} -} -\end{enumerate} \vspace*{100pt} - -\end{frame} - -\section{Formal proof with Why3} -\frame{\sectionpage} - -\subsection{Specification} - -\begin{frame}[fragile]{Specification} - -\begin{itemize} -\item \alert{Graph} - -\begin{lstlisting}[language=why3] -type vertex -constant vertices : set vertex -constant edges: set (vertex, vertex) -constant s : vertex -function weight vertex vertex : int -\end{lstlisting} - -\item \alert{Algorithm interface} - -\begin{lstlisting}[language=why3] -type dist = Finite int | Infinite -exception Negative_cycle -val bellman_ford : unit -> map vertex dist -\end{lstlisting} -\end{itemize} - -\end{frame} - -\begin{frame}[fragile]{Specification} - -\begin{itemize} -\item \alert{Path} as an inductive predicate -\small -\begin{lstlisting}[language=why3] -inductive path (v1 v2: vertex) (n: int) = -| path_empty: - forall v: vertex. path v v 0 -| path_succ: - forall v1 v2: vertex, n: int. path v1 v2 n -> - forall v3: vertex. mem (v2, v3) edges -> - path v1 v3 (n + (weight v2 v3)) -\end{lstlisting} -\normalsize - -\item \alert{Shortest path} and \alert{non-reachability} -\small -\begin{lstlisting}[language=why3] -predicate shortest_path (v1 v2: vertex) (n: int) = - (path v1 v2 n) /\ - (forall m: int. m < n -> not (path v1 v2 m)) - -predicate no_path (v1 v2: vertex) = - forall n: int. not (path v1 v2 n) -\end{lstlisting} -\normalsize -\end{itemize} -\end{frame} - -\begin{frame}[fragile]{Specification} - -\begin{itemize} - -\item \alert{Precondition} and \alert{postcondition} - -\begin{lstlisting}[language=why3] -let bellman_ford () = - { (* nothing *) } - ... - { forall v: vertex. mem v vertices -> - match result[v] with - | Infinite -> no_path s v - | Finite n -> shortest_path s v n - end } - | Negative_cycle -> - { exists v: vertex. mem v vertices /\ - exists n: int. n < 0 /\ path v v n } -\end{lstlisting} - -\end{itemize} - -\end{frame} - -\subsection{Proof} - -\begin{frame}[fragile]{Termination} - -Loop variants are trivial and easily given.\vspace*{12pt} - -\begin{algorithmic}[1] -\STATE{$\mbox{\sc Initialize-Single-Source}(G,s)$} -\FOR{\alert{$i=1\to |V[G]|-1$}} -\FORALL{\alert{edge $(u,v)\in E[G]$}} -\STATE{$\mbox{\sc Relax}(u,v,l)$} -\ENDFOR -\ENDFOR -\FORALL{\alert{edge $(u,v)\in E[G]$}} -\IF{$d[v]>d[u]+l(u,v)$} -\RETURN{False} -\ENDIF -\ENDFOR -\RETURN{True} -\end{algorithmic} - -\end{frame} - -\begin{frame}{Strategy for correctness} - -Invariant during the algorithm execution for example: - -\begin{itemize} - -\item If $v$ has a \alert{finite} distance $n$ - -$\to$ Path from $s$ to $v$ with distance $n$ exists - -\item If $v$ has an \alert{infinite} distance - -$\to$ $v$ is not yet reachable at given point - -\end{itemize} - -\pause - -\vspace{24pt}Need to keep this condition through -\begin{itemize} -\item every pass -\item every edge relaxation during one pass -\end{itemize} - -\end{frame} - -\begin{frame}{Strategy for correctness} - -\vspace*{16pt} - -\only<1>{After $i$-th pass\vspace*{-16pt} -\begin{center} -\includegraphics[height=0.8\textheight]{inv1.pdf} -\end{center} -}\only<2>{Executing pass \#$i+1$, relaxed some edges\vspace*{-16pt} -\begin{center} -\includegraphics[height=0.8\textheight]{inv2.pdf} -\end{center} -} - -\end{frame} - -\begin{frame}[fragile]{Invariant at a glance} -\footnotesize -\begin{lstlisting}[language=why3] -predicate invar (m: distmap) (pass: int) (via: set edge) = - forall v: vertex. mem v vertices -> - match m[v] with - | Finite n -> - negcycle \/ - (not negcycle /\ (exists n d: int. shortest_path s v n d) /\ - forall n' d': int. shortest_path s v n' d' -> - (0 <= d' < pass -> n = n') /\ - (d' = pass -> - (exists u: vertex. mem (u, v) edges /\ - shortest_path s u (n' - weight u v) (pass - 1)) /\ - (forall u: vertex. mem (u, v) edges /\ - shortest_path s u (n' - weight u v) (pass - 1) -> - mem (u, v) via -> n = n'))) - | Infinite -> - (forall d: int. 0 <= d < pass -> - forall n: int. not (path s v n d)) /\ - (forall u: vertex. mem (u, v) via -> - forall d: int. 0 <= d < pass -> - forall n: int. not (path s u n d)) - end -\end{lstlisting} -\end{frame} - - -\begin{frame}[fragile]{Problems to solve} - -\begin{itemize} - -\item Give an appropriate property for negative cycle - -\item Guarantee an existence of ``simple path''. - -\begin{lstlisting}[language=why3] -lemma reach_less_than_n: - forall v1 v2: vertex. mem v1 vertices -> - forall d n: int. path v1 v2 n d -> - exists n' d': int. - d' < cardinal vertices /\ - path v1 v2 n' d' -\end{lstlisting} - -\item Reduce hand-proving (e.g. Coq) as much as possible - -\end{itemize} -\end{frame} - -\begin{frame} - -\Huge \alert{Demo}\vspace{8pt} - -\large Proving infinite path properties on Why3 - -\end{frame} - -\section{Conclusion} - -\frame{\sectionpage} -\begin{frame}{Conclusion and Perspectives} -Done: - -\begin{itemize} -\item Implemented Bellman-Ford algorithm in Ocamlgraph -\begin{itemize} -\item Normal traversal -\item Exhaustive negative cycle detection -\item Incremental graph builder -\end{itemize} - -\item Proved some characteristics of the algorithm -\begin{itemize} -\item Termination (including safety) -\item Properties of unreachable nodes -\end{itemize} -\end{itemize} - -Do: -\begin{itemize} -\item Finish the formal proof -\item Compile into a paper -\end{itemize} -\end{frame} - -\end{document} diff --git a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/why3.png b/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/why3.png deleted file mode 100755 index efdd6dab76..0000000000 Binary files a/jscomp/build_tests/ocamlgraph/proofs/bellman-ford/why3.png and /dev/null differ diff --git a/jscomp/build_tests/ocamlgraph/src/blocks.ml b/jscomp/build_tests/ocamlgraph/src/blocks.ml deleted file mode 100755 index bfb5c0494b..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/blocks.ml +++ /dev/null @@ -1,918 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Common implementation to persistent and imperative graphs. *) - -open Sig -open Util - -let first_value_for_cpt_vertex = 0 -let cpt_vertex = ref first_value_for_cpt_vertex -(* global counter for abstract vertex *) - -(* [max_cpt t1 t2] returns the maximum of [t1] and [t2] wrt the total ordering - induced by tags creation. This ordering is defined as follow: - forall tags t1 t2, - t1 <= t2 iff - t1 is before t2 in the finite sequence - [0; 1; ..; max_int; min_int; min_int-1; -1] *) -let max_cpt c1 c2 = max (c1 + min_int) (c2 + min_int) - min_int - -(* This function must be called after the unserialisation of any abstract - vertex if you want to create new vertices. *) -let after_unserialization serialized_cpt_vertex = - cpt_vertex := max_cpt serialized_cpt_vertex !cpt_vertex - -(* ************************************************************************* *) -(** {2 Association table builder} *) -(* ************************************************************************* *) - -(** Common signature to an imperative/persistent association table *) -module type HM = sig - type 'a return - type 'a t - type key - val create : ?size:int -> unit -> 'a t - val create_from : 'a t -> 'a t - val empty : 'a return - val clear: 'a t -> unit - val is_empty : 'a t -> bool - val add : key -> 'a -> 'a t -> 'a t - val remove : key -> 'a t -> 'a t - val mem : key -> 'a t -> bool - val find : key -> 'a t -> 'a - val find_and_raise : key -> 'a t -> string -> 'a - (** [find_and_raise k t s] is equivalent to [find k t] but - raises [Invalid_argument s] when [find k t] raises [Not_found] *) - val iter : (key -> 'a -> unit) -> 'a t -> unit - val map : (key -> 'a -> key * 'a) -> 'a t -> 'a t - val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b - val copy : 'a t -> 'a t -end - -module type TBL_BUILDER = functor(X: COMPARABLE) -> HM with type key = X.t - -(** [HM] implementation using hashtbl. *) -module Make_Hashtbl(X: COMPARABLE) = struct - - include Hashtbl.Make(X) - - type 'a return = unit - let empty = () - (* never call and not visible for the user thank's to signature - constraints *) - - let create_from h = create (length h) - let create ?(size=97) () = create size - - let is_empty h = (length h = 0) - - let find_and_raise k h s = try find h k with Not_found -> invalid_arg s - - let map f h = - let h' = create_from h in - iter (fun k v -> let k, v = f k v in add h' k v) h; - h' - - let add k v h = replace h k v; h - let remove k h = remove h k; h - let mem k h = mem h k - let find k h = find h k - -end - -(** [HM] implementation using map *) -module Make_Map(X: COMPARABLE) = struct - include Map.Make(X) - type 'a return = 'a t - let is_empty m = (m = empty) - let create ?size:_ () = assert false - (* never call and not visible for the user thank's to - signature constraints *) - let create_from _ = empty - let copy m = m - let map f m = fold (fun k v m -> let k, v = f k v in add k v m) m empty - let find_and_raise k h s = try find k h with Not_found -> invalid_arg s - let clear _ = assert false - (* never call and not visible for the user thank's to - signature constraints *) -end - -(* ************************************************************************* *) -(** {2 Blocks builder} *) -(* ************************************************************************* *) - -(** Common implementation to all (directed) graph implementations. *) -module Minimal(S: Set.S)(HM: HM) = struct - - type vertex = HM.key - - let is_directed = true - let empty = HM.empty - let create = HM.create - let is_empty = HM.is_empty - let copy = HM.copy - let clear = HM.clear - - let nb_vertex g = HM.fold (fun _ _ -> succ) g 0 - let nb_edges g = HM.fold (fun _ s n -> n + S.cardinal s) g 0 - let out_degree g v = - S.cardinal - (try HM.find v g with Not_found -> invalid_arg "[ocamlgraph] out_degree") - - let mem_vertex g v = HM.mem v g - - let unsafe_add_vertex g v = HM.add v S.empty g - let unsafe_add_edge g v1 v2 = HM.add v1 (S.add v2 (HM.find v1 g)) g - - let add_vertex g v = if HM.mem v g then g else unsafe_add_vertex g v - - let iter_vertex f = HM.iter (fun v _ -> f v) - let fold_vertex f = HM.fold (fun v _ -> f v) - -end - -(** All the predecessor operations from the iterators on the edges *) -module Pred - (S: sig - module PV: COMPARABLE - module PE: EDGE with type vertex = PV.t - type t - val mem_vertex : PV.t -> t -> bool - val iter_edges : (PV.t -> PV.t -> unit) -> t -> unit - val fold_edges : (PV.t -> PV.t -> 'a -> 'a) -> t -> 'a -> 'a - val iter_edges_e : (PE.t -> unit) -> t -> unit - val fold_edges_e : (PE.t -> 'a -> 'a) -> t -> 'a -> 'a - end) = -struct - - open S - - let iter_pred f g v = - if not (mem_vertex v g) then invalid_arg "[ocamlgraph] iter_pred"; - iter_edges (fun v1 v2 -> if PV.equal v v2 then f v1) g - - let fold_pred f g v = - if not (mem_vertex v g) then invalid_arg "[ocamlgraph] fold_pred"; - fold_edges (fun v1 v2 a -> if PV.equal v v2 then f v1 a else a) g - - let pred g v = fold_pred (fun v l -> v :: l) g v [] - - let in_degree g v = - if not (mem_vertex v g) then invalid_arg "[ocamlgraph] in_degree"; - fold_pred (fun _ n -> n + 1) g v 0 - - let iter_pred_e f g v = - if not (mem_vertex v g) then invalid_arg "[ocamlgraph] iter_pred_e"; - iter_edges_e (fun e -> if PV.equal v (PE.dst e) then f e) g - - let fold_pred_e f g v = - if not (mem_vertex v g) then invalid_arg "[ocamlgraph] fold_pred_e"; - fold_edges_e (fun e a -> if PV.equal v (PE.dst e) then f e a else a) g - - let pred_e g v = fold_pred_e (fun v l -> v :: l) g v [] - -end - -(** Common implementation to all the unlabeled (directed) graphs. *) -module Unlabeled(V: COMPARABLE)(HM: HM with type key = V.t) = struct - - module S = Set.Make(V) - - module E = struct - type vertex = V.t - include OTProduct(V)(V) - let src = fst - let dst = snd - type label = unit - let label _ = () - let create v1 () v2 = v1, v2 - end - type edge = E.t - - let mem_edge g v1 v2 = - try S.mem v2 (HM.find v1 g) - with Not_found -> false - - let mem_edge_e g (v1, v2) = mem_edge g v1 v2 - - let find_edge g v1 v2 = if mem_edge g v1 v2 then v1, v2 else raise Not_found - let find_all_edges g v1 v2 = try [ find_edge g v1 v2 ] with Not_found -> [] - - let unsafe_remove_edge g v1 v2 = HM.add v1 (S.remove v2 (HM.find v1 g)) g - let unsafe_remove_edge_e g (v1, v2) = unsafe_remove_edge g v1 v2 - - let remove_edge g v1 v2 = - if not (HM.mem v2 g) then invalid_arg "[ocamlgraph] remove_edge"; - HM.add - v1 (S.remove v2 (HM.find_and_raise v1 g "[ocamlgraph] remove_edge")) g - - let remove_edge_e g (v1, v2) = remove_edge g v1 v2 - - let iter_succ f g v = - S.iter f (HM.find_and_raise v g "[ocamlgraph] iter_succ") - - let fold_succ f g v = - S.fold f (HM.find_and_raise v g "[ocamlgraph] fold_succ") - - let iter_succ_e f g v = iter_succ (fun v2 -> f (v, v2)) g v - let fold_succ_e f g v = fold_succ (fun v2 -> f (v, v2)) g v - - let succ g v = S.elements (HM.find_and_raise v g "[ocamlgraph] succ") - let succ_e g v = fold_succ_e (fun e l -> e :: l) g v [] - - let map_vertex f = - HM.map (fun v s -> f v, S.fold (fun v s -> S.add (f v) s) s S.empty) - - module I = struct - type t = S.t HM.t - module PV = V - module PE = E - let iter_edges f = HM.iter (fun v -> S.iter (f v)) - let fold_edges f = HM.fold (fun v -> S.fold (f v)) - let iter_edges_e f = iter_edges (fun v1 v2 -> f (v1, v2)) - let fold_edges_e f = fold_edges (fun v1 v2 a -> f (v1, v2) a) - end - include I - - include Pred(struct include I let mem_vertex = HM.mem end) - -end - -(** Common implementation to all the labeled (directed) graphs. *) -module Labeled(V: COMPARABLE)(E: ORDERED_TYPE)(HM: HM with type key = V.t) = -struct - - module VE = OTProduct(V)(E) - module S = Set.Make(VE) - - module E = struct - type vertex = V.t - type label = E.t - type t = vertex * label * vertex - let src (v, _, _) = v - let dst (_, _, v) = v - let label (_, l, _) = l - let create v1 l v2 = v1, l, v2 - module C = OTProduct(V)(VE) - let compare (x1, x2, x3) (y1, y2, y3) = - C.compare (x1, (x3, x2)) (y1, (y3, y2)) - end - type edge = E.t - - let mem_edge g v1 v2 = - try S.exists (fun (v2', _) -> V.equal v2 v2') (HM.find v1 g) - with Not_found -> false - - let mem_edge_e g (v1, l, v2) = - try - let ve = v2, l in - S.exists (fun ve' -> VE.compare ve ve' = 0) (HM.find v1 g) - with Not_found -> - false - - exception Found of edge - let find_edge g v1 v2 = - try - S.iter - (fun (v2', l) -> if V.equal v2 v2' then raise (Found (v1, l, v2'))) - (HM.find v1 g); - raise Not_found - with Found e -> - e - - let find_all_edges g v1 v2 = - try - S.fold - (fun (v2', l) acc -> - if V.equal v2 v2' then (v1, l, v2') :: acc else acc) - (HM.find v1 g) - [] - with Not_found -> - [] - - let unsafe_remove_edge g v1 v2 = - HM.add - v1 - (S.filter (fun (v2', _) -> not (V.equal v2 v2')) (HM.find v1 g)) - g - - let unsafe_remove_edge_e g (v1, l, v2) = - HM.add v1 (S.remove (v2, l) (HM.find v1 g)) g - - let remove_edge g v1 v2 = - if not (HM.mem v2 g) then invalid_arg "[ocamlgraph] remove_edge"; - HM.add - v1 - (S.filter - (fun (v2', _) -> not (V.equal v2 v2')) - (HM.find_and_raise v1 g "[ocamlgraph] remove_edge")) - g - - let remove_edge_e g (v1, l, v2) = - if not (HM.mem v2 g) then invalid_arg "[ocamlgraph] remove_edge_e"; - HM.add - v1 - (S.remove (v2, l) (HM.find_and_raise v1 g "[ocamlgraph] remove_edge_e")) - g - - let iter_succ f g v = - S.iter (fun (w, _) -> f w) (HM.find_and_raise v g "[ocamlgraph] iter_succ") - let fold_succ f g v = - S.fold (fun (w, _) -> f w) (HM.find_and_raise v g "[ocamlgraph] fold_succ") - - let iter_succ_e f g v = - S.iter - (fun (w, l) -> f (v, l, w)) - (HM.find_and_raise v g "[ocamlgraph] iter_succ_e") - - let fold_succ_e f g v = - S.fold - (fun (w, l) -> f (v, l, w)) - (HM.find_and_raise v g "[ocamlgraph] fold_succ_e") - - let succ g v = fold_succ (fun w l -> w :: l) g v [] - let succ_e g v = fold_succ_e (fun e l -> e :: l) g v [] - - let map_vertex f = - HM.map - (fun v s -> f v, S.fold (fun (v, l) s -> S.add (f v, l) s) s S.empty) - - module I = struct - type t = S.t HM.t - module PV = V - module PE = E - let iter_edges f = HM.iter (fun v -> S.iter (fun (w, _) -> f v w)) - let fold_edges f = HM.fold (fun v -> S.fold (fun (w, _) -> f v w)) - let iter_edges_e f = - HM.iter (fun v -> S.iter (fun (w, l) -> f (v, l, w))) - let fold_edges_e f = - HM.fold (fun v -> S.fold (fun (w, l) -> f (v, l, w))) - end - include I - - include Pred(struct include I let mem_vertex = HM.mem end) - -end - -(** The vertex module and the vertex table for the concrete graphs. *) -module ConcreteVertex(F : TBL_BUILDER)(V: COMPARABLE) = struct - module V = struct - include V - type label = t - let label v = v - let create v = v - end - module HM = F(V) -end - -module Make_Abstract - (G: sig - module HM: HM - module S: Set.S - include G with type t = S.t HM.t and type V.t = HM.key - val remove_edge: t -> vertex -> vertex -> t - val remove_edge_e: t -> edge -> t - val unsafe_add_vertex: t -> vertex -> t - val unsafe_add_edge: t -> vertex -> S.elt -> t - val unsafe_remove_edge: t -> vertex -> vertex -> t - val unsafe_remove_edge_e: t -> edge -> t - val create: ?size:int -> unit -> t - val clear: t -> unit - end) = -struct - - module I = struct - type t = { edges : G.t; mutable size : int } - (* BE CAREFUL: [size] is only mutable in the imperative version. As - there is no extensible records in current ocaml version, and for - genericity purpose, [size] is mutable in both imperative and - persistent implementations. - Do not modify size in the persistent implementation! *) - - type vertex = G.vertex - type edge = G.edge - - module PV = G.V - module PE = G.E - - let iter_edges f g = G.iter_edges f g.edges - let fold_edges f g = G.fold_edges f g.edges - let iter_edges_e f g = G.iter_edges_e f g.edges - let fold_edges_e f g = G.fold_edges_e f g.edges - let mem_vertex v g = G.mem_vertex g.edges v - let create ?size () = { edges = G.create ?size (); size = 0 } - let clear g = G.clear g.edges; g.size <- 0 - end - include I - - include Pred(I) - - (* optimisations *) - - let is_empty g = g.size = 0 - let nb_vertex g = g.size - - (* redefinitions *) - module V = G.V - module E = G.E - module HM = G.HM - module S = G.S - - let unsafe_add_edge = G.unsafe_add_edge - let unsafe_remove_edge = G.unsafe_remove_edge - let unsafe_remove_edge_e = G.unsafe_remove_edge_e - let is_directed = G.is_directed - - let remove_edge g = G.remove_edge g.edges - let remove_edge_e g = G.remove_edge_e g.edges - - let out_degree g = G.out_degree g.edges - let in_degree g = G.in_degree g.edges - - let nb_edges g = G.nb_edges g.edges - let succ g = G.succ g.edges - let mem_vertex g = G.mem_vertex g.edges - let mem_edge g = G.mem_edge g.edges - let mem_edge_e g = G.mem_edge_e g.edges - let find_edge g = G.find_edge g.edges - let find_all_edges g = G.find_all_edges g.edges - - let iter_vertex f g = G.iter_vertex f g.edges - let fold_vertex f g = G.fold_vertex f g.edges - let iter_succ f g = G.iter_succ f g.edges - let fold_succ f g = G.fold_succ f g.edges - let succ_e g = G.succ_e g.edges - let iter_succ_e f g = G.iter_succ_e f g.edges - let fold_succ_e f g = G.fold_succ_e f g.edges - let map_vertex f g = { g with edges = G.map_vertex f g.edges } - - (* reimplementation *) - - let copy g = - let h = HM.create () in - let vertex v = - try - HM.find v h - with Not_found -> - let v' = V.create (V.label v) in - let h' = HM.add v v' h in - assert (h == h'); - v' - in - map_vertex vertex g - -end - -(** Support for explicitly maintaining edge set of - predecessors. Crucial for algorithms that do a lot of backwards - traversal. *) - -module BidirectionalMinimal(S:Set.S)(HM:HM) = struct - - type vertex = HM.key - - let is_directed = true - let empty = HM.empty - let create = HM.create - let clear = HM.clear - let is_empty = HM.is_empty - let copy = HM.copy - - let nb_vertex g = HM.fold (fun _ _ -> succ) g 0 - let nb_edges g = HM.fold (fun _ (_,s) n -> n + S.cardinal s) g 0 - let out_degree g v = - S.cardinal - (snd (try HM.find v g - with Not_found -> invalid_arg "[ocamlgraph] out_degree")) - - let mem_vertex g v = HM.mem v g - - let unsafe_add_vertex g v = HM.add v (S.empty, S.empty) g - let add_vertex g v = if HM.mem v g then g else unsafe_add_vertex g v - - let iter_vertex f = HM.iter (fun v _ -> f v) - let fold_vertex f = HM.fold (fun v _ -> f v) - -end - -module BidirectionalUnlabeled(V:COMPARABLE)(HM:HM with type key = V.t) = struct - - module S = Set.Make(V) - - module E = struct - type vertex = V.t - include OTProduct(V)(V) - let src = fst - let dst = snd - type label = unit - let label _ = () - let create v1 () v2 = v1, v2 - end - type edge = E.t - - let mem_edge g v1 v2 = - try S.mem v2 (snd (HM.find v1 g)) - with Not_found -> false - - let mem_edge_e g (v1,v2) = mem_edge g v1 v2 - - let find_edge g v1 v2 = if mem_edge g v1 v2 then v1, v2 else raise Not_found - let find_all_edges g v1 v2 = try [ find_edge g v1 v2 ] with Not_found -> [] - - let unsafe_remove_edge g v1 v2 = - let in_set, out_set = HM.find v1 g in - let g = HM.add v1 (in_set, S.remove v2 out_set) g in - let in_set, out_set = HM.find v2 g in - HM.add v2 (S.remove v1 in_set, out_set) g - - let unsafe_remove_edge_e g (v1,v2) = unsafe_remove_edge g v1 v2 - - let remove_edge g v1 v2 = - if not (HM.mem v2 g && HM.mem v1 g) then - invalid_arg "[ocamlgraph] remove_edge"; - unsafe_remove_edge g v1 v2 - - let remove_edge_e g (v1, v2) = remove_edge g v1 v2 - - let iter_succ f g v = - S.iter f (snd (HM.find_and_raise v g "[ocamlgraph] iter_succ")) - - let fold_succ f g v = - S.fold f (snd (HM.find_and_raise v g "[ocamlgraph] fold_succ")) - - let iter_succ_e f g v = iter_succ (fun v2 -> f (v, v2)) g v - let fold_succ_e f g v = fold_succ (fun v2 -> f (v, v2)) g v - - let succ g v = S.elements (snd (HM.find_and_raise v g "[ocamlgraph] succ")) - let succ_e g v = fold_succ_e (fun e l -> e :: l) g v [] - - let map_vertex f = - HM.map - (fun v (s1,s2) -> - f v, - (S.fold (fun v s -> S.add (f v) s) s1 S.empty, - S.fold (fun v s -> S.add (f v) s) s2 S.empty)) - - module I = struct - (* we keep sets for both incoming and outgoing edges *) - type t = (S.t (* incoming *) * S.t (* outgoing *)) HM.t - module PV = V - module PE = E - let iter_edges f = HM.iter (fun v (_, outset) -> S.iter (f v) outset) - let fold_edges f = HM.fold (fun v (_, outset) -> S.fold (f v) outset) - let iter_edges_e f = iter_edges (fun v1 v2 -> f (v1, v2)) - let fold_edges_e f = fold_edges (fun v1 v2 a -> f (v1, v2) a) - end - include I - - let iter_pred f g v = - S.iter f (fst (HM.find_and_raise v g "[ocamlgraph] iter_pred")) - - let fold_pred f g v = - S.fold f (fst (HM.find_and_raise v g "[ocamlgraph] fold_pred")) - - let pred g v = S.elements (fst (HM.find_and_raise v g "[ocamlgraph] pred")) - - let in_degree g v = - S.cardinal - (fst (try HM.find v g - with Not_found -> invalid_arg "[ocamlgraph] in_degree")) - - let iter_pred_e f g v = iter_pred (fun v2 -> f (v2, v)) g v - let fold_pred_e f g v = fold_pred (fun v2 -> f (v2, v)) g v - - let pred_e g v = fold_pred_e (fun e l -> e :: l) g v [] - -end - -module BidirectionalLabeled - (V:COMPARABLE)(E:ORDERED_TYPE)(HM:HM with type key = V.t) = -struct - - module VE = OTProduct(V)(E) - module S = Set.Make(VE) - - module E = struct - type vertex = V.t - type label = E.t - type t = vertex * label * vertex - let src (v, _, _) = v - let dst (_, _, v) = v - let label (_, l, _) = l - let create v1 l v2 = v1, l, v2 - module C = OTProduct(V)(VE) - let compare (x1, x2, x3) (y1, y2, y3) = - C.compare (x1, (x3, x2)) (y1, (y3, y2)) - end - type edge = E.t - - let mem_edge g v1 v2 = - try S.exists (fun (v2', _) -> V.equal v2 v2') (snd (HM.find v1 g)) - with Not_found -> false - - let mem_edge_e g (v1, l, v2) = - try - let ve = v2, l in - S.exists (fun ve' -> VE.compare ve ve' = 0) (snd (HM.find v1 g)) - with Not_found -> - false - - exception Found of edge - let find_edge g v1 v2 = - try - S.iter - (fun (v2', l) -> if V.equal v2 v2' then raise (Found (v1, l, v2'))) - (snd (HM.find v1 g)); - raise Not_found - with Found e -> - e - - let find_all_edges g v1 v2 = - try - S.fold - (fun (v2', l) acc -> - if V.equal v2 v2' then (v1, l, v2') :: acc else acc) - (snd (HM.find v1 g)) - [] - with Not_found -> - [] - - let unsafe_remove_edge g v1 v2 = - let in_set, out_set = HM.find v1 g in - let del v set = S.filter (fun (v', _) -> not (V.equal v v')) set in - let g = HM.add v1 (in_set, del v2 out_set) g in - let in_set, out_set = HM.find v2 g in - HM.add v2 (del v1 in_set, out_set) g - - let unsafe_remove_edge_e g (v1, l, v2) = - let in_set, out_set = HM.find v1 g in - let g = HM.add v1 (in_set, S.remove (v2, l) out_set) g in - let in_set, out_set = HM.find v2 g in - HM.add v2 (S.remove (v1, l) in_set, out_set) g - - let remove_edge g v1 v2 = - (* if not (HM.mem v2 g) then invalid_arg "[ocamlgraph] remove_edge";*) - let in_set, out_set = HM.find_and_raise v1 g "[ocamlgraph] remove_edge" in - let del v set = S.filter (fun (v', _) -> not (V.equal v v')) set in - let g = HM.add v1 (in_set, del v2 out_set) g in - let in_set, out_set = HM.find_and_raise v2 g "[ocamlgraph] remove_edge" in - HM.add v2 (del v1 in_set, out_set) g - - let remove_edge_e g (v1, l, v2) = - (* if not (HM.mem v2 g) then invalid_arg "[ocamlgraph] remove_edge_e";*) - let in_set, out_set = HM.find_and_raise v1 g "[ocamlgraph] remove_edge_e" in - let g = HM.add v1 (in_set, S.remove (v2, l) out_set) g in - let in_set, out_set = HM.find_and_raise v2 g "[ocamlgraph] remove_edge_e" in - HM.add v2 (S.remove (v1, l) in_set, out_set) g - - let iter_succ f g v = - S.iter - (fun (w, _) -> f w) - (snd (HM.find_and_raise v g "[ocamlgraph] iter_succ")) - - let fold_succ f g v = - S.fold - (fun (w, _) -> f w) - (snd (HM.find_and_raise v g "[ocamlgraph] fold_succ")) - - let iter_succ_e f g v = - S.iter - (fun (w, l) -> f (v, l, w)) - (snd (HM.find_and_raise v g "[ocamlgraph] iter_succ_e")) - - let fold_succ_e f g v = - S.fold - (fun (w, l) -> f (v, l, w)) - (snd (HM.find_and_raise v g "[ocamlgraph] fold_succ_e")) - - let succ g v = fold_succ (fun w l -> w :: l) g v [] - let succ_e g v = fold_succ_e (fun e l -> e :: l) g v [] - - let map_vertex f = - HM.map - (fun v (s1,s2) -> - f v, - (S.fold (fun (v, l) s -> S.add (f v, l) s) s1 S.empty, - S.fold (fun (v, l) s -> S.add (f v, l) s) s2 S.empty)) - - module I = struct - type t = (S.t * S.t) HM.t - module PV = V - module PE = E - let iter_edges f = HM.iter (fun v (_,outset) -> - S.iter (fun (w, _) -> f v w) outset) - let fold_edges f = HM.fold (fun v (_,outset) -> - S.fold (fun (w, _) -> f v w) outset) - let iter_edges_e f = HM.iter (fun v (_,outset) -> - S.iter (fun (w, l) -> f (v, l, w)) outset) - let fold_edges_e f = HM.fold (fun v (_,outset) -> - S.fold (fun (w, l) -> f (v, l, w)) outset) - end - include I - - let iter_pred f g v = - S.iter - (fun (w, _) -> f w) - (fst (HM.find_and_raise v g "[ocamlgraph] iter_pred")) - - let fold_pred f g v = - S.fold - (fun (w, _) -> f w) - (fst (HM.find_and_raise v g "[ocamlgraph] fold_pred")) - - let in_degree g v = - S.cardinal - (fst (try HM.find v g - with Not_found -> invalid_arg "[ocamlgraph] in_degree")) - - let iter_pred_e f g v = - S.iter - (fun (w, l) -> f (w, l, v)) - (fst (HM.find_and_raise v g "[ocamlgraph] iter_pred_e")) - - let fold_pred_e f g v = - S.fold - (fun (w, l) -> f (w, l, v)) - (fst (HM.find_and_raise v g "[ocamlgraph] fold_pred_e")) - - let pred g v = fold_pred (fun w l -> w :: l) g v [] - let pred_e g v = fold_pred_e (fun e l -> e :: l) g v [] - -end - -(** Build persistent (resp. imperative) graphs from a persistent (resp. - imperative) association table *) -module Make(F : TBL_BUILDER) = struct - - module Digraph = struct - - module Concrete(V: COMPARABLE) = struct - - include ConcreteVertex(F)(V) - include Unlabeled(V)(HM) - include Minimal(S)(HM) - - let add_edge g v1 v2 = - if mem_edge g v1 v2 then g - else - let g = add_vertex g v1 in - let g = add_vertex g v2 in - unsafe_add_edge g v1 v2 - - let add_edge_e g (v1, v2) = add_edge g v1 v2 - - end - - module ConcreteBidirectional(V: COMPARABLE) = struct - - include ConcreteVertex(F)(V) - include BidirectionalUnlabeled(V)(HM) - include BidirectionalMinimal(S)(HM) - - let unsafe_add_edge g v1 v2 = - let find v g = try HM.find v g with Not_found -> S.empty, S.empty in - let in_set, out_set = find v1 g in - let g = HM.add v1 (in_set,S.add v2 out_set) g in - let in_set, out_set = find v2 g in - HM.add v2 (S.add v1 in_set,out_set) g - - let add_edge g v1 v2 = - if mem_edge g v1 v2 then g - else unsafe_add_edge g v1 v2 - - let add_edge_e g (v1, v2) = add_edge g v1 v2 - - end - - module ConcreteLabeled(V: COMPARABLE)(Edge: ORDERED_TYPE_DFT) = struct - - include ConcreteVertex(F)(V) - include Labeled(V)(Edge)(HM) - include Minimal(S)(HM) - - let add_edge_e g (v1, l, v2 as e) = - if mem_edge_e g e then g - else - let g = add_vertex g v1 in - let g = add_vertex g v2 in - unsafe_add_edge g v1 (v2, l) - - let add_edge g v1 v2 = add_edge_e g (v1, Edge.default, v2) - - end - - module ConcreteBidirectionalLabeled - (V: COMPARABLE)(Edge: ORDERED_TYPE_DFT) = - struct - - include ConcreteVertex(F)(V) - include BidirectionalLabeled(V)(Edge)(HM) - include BidirectionalMinimal(S)(HM) - - let unsafe_add_edge_e g (v1, l, v2) = - let find v g = try HM.find v g with Not_found -> S.empty, S.empty in - let in_set, out_set = find v1 g in - let g = HM.add v1 (in_set,S.add (v2,l) out_set) g in - let in_set, out_set = find v2 g in - HM.add v2 (S.add (v1,l) in_set,out_set) g - - let add_edge_e g e = if mem_edge_e g e then g else unsafe_add_edge_e g e - - let add_edge g v1 v2 = add_edge_e g (v1, Edge.default, v2) - - end - - module Abstract(V: VERTEX) = struct - module G = struct - module V = V - module HM = F(V) - include Unlabeled(V)(HM) - include Minimal(S)(HM) - end - include Make_Abstract(G) - end - - module AbstractLabeled(V: VERTEX)(E: ORDERED_TYPE_DFT) = struct - module G = struct - module V = V - module HM = F(V) - include Labeled(V)(E)(HM) - include Minimal(S)(HM) - end - include Make_Abstract(G) - end - - end - -end - -(** Implementation of undirected graphs from implementation of directed - graphs. *) -module Graph - (G: sig - include Sig.G - val create: ?size:int -> unit -> t - val clear: t -> unit - val copy: t -> t - type return - val add_vertex: t -> vertex -> return - val remove_vertex: t -> vertex -> return - end) = -struct - - include G - - let is_directed = false - - (* Redefine iterators and [nb_edges]. *) - - let iter_edges f = - iter_edges (fun v1 v2 -> if V.compare v1 v2 >= 0 then f v1 v2) - - let fold_edges f = - fold_edges - (fun v1 v2 acc -> if V.compare v1 v2 >= 0 then f v1 v2 acc else acc) - - let iter_edges_e f = - iter_edges_e (fun e -> if V.compare (E.src e) (E.dst e) >= 0 then f e) - - let fold_edges_e f = - fold_edges_e - (fun e acc -> - if V.compare (E.src e) (E.dst e) >= 0 then f e acc else acc) - - let nb_edges g = fold_edges_e (fun _ -> (+) 1) g 0 - - (* Redefine operations on predecessors: - predecessors are successors in an undirected graph. *) - - let pred = succ - let in_degree = out_degree - let iter_pred = iter_succ - let fold_pred = fold_succ - let pred_e = succ_e - let iter_pred_e = iter_succ_e - let fold_pred_e = fold_succ_e - -end - -(* -Local Variables: -compile-command: "make -C .." -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/src/builder.ml b/jscomp/build_tests/ocamlgraph/src/builder.ml deleted file mode 100755 index bd981d9047..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/builder.ml +++ /dev/null @@ -1,60 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -module type S = sig - module G : Sig.G - val empty : unit -> G.t - val copy : G.t -> G.t - val add_vertex : G.t -> G.V.t -> G.t - val add_edge : G.t -> G.V.t -> G.V.t -> G.t - val add_edge_e : G.t -> G.E.t -> G.t - val remove_vertex : G.t -> G.V.t -> G.t - val remove_edge : G.t -> G.V.t -> G.V.t -> G.t - val remove_edge_e : G.t -> G.E.t -> G.t -end - -module type INT = S with type G.V.label = int - -module P(G : Sig.P) = struct - module G = G - let empty () = G.empty - let copy g = g - let add_vertex = G.add_vertex - let add_edge = G.add_edge - let add_edge_e = G.add_edge_e - let remove_vertex = G.remove_vertex - let remove_edge = G.remove_edge - let remove_edge_e = G.remove_edge_e -end - -module I(G : Sig.I) = struct - module G = G - let empty () = G.create ~size:97 () - let copy = G.copy - let add_vertex g v = G.add_vertex g v; g - let add_edge g v1 v2 = G.add_edge g v1 v2; g - let add_edge_e g e = G.add_edge_e g e; g - let remove_vertex g v = G.remove_vertex g v; g - let remove_edge g v1 v2 = G.remove_edge g v1 v2; g - let remove_edge_e g e = G.remove_edge_e g e; g -end - -(* -Local Variables: -compile-command: "make -C .." -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/src/builder.mli b/jscomp/build_tests/ocamlgraph/src/builder.mli deleted file mode 100755 index 6a12977438..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/builder.mli +++ /dev/null @@ -1,53 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Graph builders in order to persistent/imperative graphs sharing a same - signature. *) - -(** {2 Common interface for graph builders}. - - Note: the following functions always return graphs but this is meaningless - for imperative implementations (the graph is modified in-place). - This is just to provide a common interface. *) - -module type S = sig - module G : Sig.G - val empty : unit -> G.t - val copy : G.t -> G.t - val add_vertex : G.t -> G.V.t -> G.t - val add_edge : G.t -> G.V.t -> G.V.t -> G.t - val add_edge_e : G.t -> G.E.t -> G.t - val remove_vertex : G.t -> G.V.t -> G.t - val remove_edge : G.t -> G.V.t -> G.V.t -> G.t - val remove_edge_e : G.t -> G.E.t -> G.t -end - -module type INT = S with type G.V.label = int - -(** {1 Builders for the various graph implementations} *) - -module P(G : Sig.P) : S with module G = G -(** Persistent Graphs Builders. *) - -module I(G : Sig.I) : S with module G = G -(** Imperative Graphs Builders. *) - -(* -Local Variables: -compile-command: "make -C .." -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/src/classic.ml b/jscomp/build_tests/ocamlgraph/src/classic.ml deleted file mode 100755 index 2d66756e19..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/classic.ml +++ /dev/null @@ -1,85 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: classic.ml,v 1.9 2004-02-02 08:11:14 filliatr Exp $ *) - -module type S = sig - type graph - val divisors : int -> graph - val de_bruijn : int -> graph - val vertex_only : int -> graph - val full : ?self:bool -> int -> graph -end - -module Generic(B : Builder.INT) = struct - - type graph = B.G.t - - let divisors n = - if n < 2 then invalid_arg "divisors"; - let v = Array.init (n + 1) (fun i -> B.G.V.create i) in - let rec loop g i = - let sqrt_i = truncate (sqrt (float i)) in - let rec loop_i g d = - if d > sqrt_i then - g - else if i mod d == 0 then - loop_i (B.add_edge (B.add_edge g v.(i / d) v.(i)) v.(d) v.(i)) (d+1) - else - loop_i g (succ d) - in - if i > n then g else loop (loop_i (B.add_vertex g v.(i)) 2) (i+1) - in - loop (B.empty ()) 2 - - let fold_for i0 i1 f = - let rec loop i v = if i > i1 then v else loop (i + 1) (f v i) in - loop i0 - - let de_bruijn n = - if n < 1 || n > Sys.word_size - 1 then invalid_arg "de_bruijn"; - let v = Array.init (1 lsl n) (fun i -> B.G.V.create i) in - let all_1 = 1 lsl n - 1 in (* 11...1 *) - let g = fold_for 0 all_1 (fun g i -> B.add_vertex g v.(i)) (B.empty ()) in - let rec loop g i = - if i > all_1 then - g - else - let si = (i lsl 1) land all_1 in - let g = B.add_edge g v.(i) v.(si) in - let g = B.add_edge g v.(i) v.(si lor 1) in - loop g (i + 1) - in - loop g 0 - - let vertex_only n = - fold_for 1 n (fun g i -> B.add_vertex g (B.G.V.create i)) (B.empty ()) - - let full ?(self=true) n = - let v = Array.init (n + 1) (fun i -> B.G.V.create i) in - fold_for 1 n - (fun g i -> - fold_for 1 n - (fun g j -> if self || i <> j then B.add_edge g v.(i) v.(j) else g) - g) - (fold_for 1 n (fun g i -> B.add_vertex g v.(i)) (B.empty ())) - -end - -module P (G : Sig.P with type V.label = int) = Generic(Builder.P(G)) - -module I (G : Sig.I with type V.label = int) = Generic(Builder.I(G)) diff --git a/jscomp/build_tests/ocamlgraph/src/classic.mli b/jscomp/build_tests/ocamlgraph/src/classic.mli deleted file mode 100755 index 0e85ab048f..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/classic.mli +++ /dev/null @@ -1,54 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: classic.mli,v 1.12 2005-02-25 13:54:33 signoles Exp $ *) - -(** Some classic graphs *) - -module type S = sig - - type graph - - val divisors : int -> graph - (** [divisors n] builds the graph of divisors. - Vertices are integers from [2] to [n]. [i] is connected to [j] if - and only if [i] divides [j]. - @raise Invalid_argument is [n < 2]. *) - - val de_bruijn : int -> graph - (** [de_bruijn n] builds the de Bruijn graph of order [n]. - Vertices are bit sequences of length [n] (encoded as their - interpretation as binary integers). The sequence [xw] is connected - to the sequence [wy] for any bits [x] and [y] and any bit sequence - [w] of length [n-1]. - @raise Invalid_argument is [n < 1] or [n > Sys.word_size-1]. *) - - val vertex_only : int -> graph - (** [vertex_only n] builds a graph with [n] vertices and no edge. *) - - val full : ?self:bool -> int -> graph - (** [full n] builds a graph with [n] vertices and all possible edges. - The optional argument [self] indicates if loop edges should be added - (default value is [true]). *) - -end - -module P (G : Sig.P with type V.label = int) : S with type graph = G.t -(** Classic Persistent Graphs *) - -module I (G : Sig.I with type V.label = int) : S with type graph = G.t -(** Classic Imperative Graphs *) diff --git a/jscomp/build_tests/ocamlgraph/src/clique.ml b/jscomp/build_tests/ocamlgraph/src/clique.ml deleted file mode 100755 index 983e241658..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/clique.ml +++ /dev/null @@ -1,48 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2014-2015 *) -(* Giselle Reis *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -module type G = sig - type t - module V : Sig.COMPARABLE - val succ : t -> V.t -> V.t list - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a -end - -module Bron_Kerbosch(G : G) = struct - - let rec bron_kerbosch cliquelst graph clique candidates used = match (candidates, used) with - | ([], []) -> clique :: cliquelst - | ([], _) -> cliquelst - | (c, u) -> - let (_, _, cliques) = List.fold_left ( fun (c, u, acc) v -> - (* Get the neighbors ignoring self-loops *) - let n = List.filter (fun nb -> not (G.V.equal nb v)) (G.succ graph v) in - let c' = List.filter (fun cv -> List.exists (fun v -> G.V.equal v cv) n) c in - let u' = List.filter (fun cv -> List.exists (fun v -> G.V.equal v cv) n) u in - let c_minus_v = List.filter (fun cv -> not (G.V.equal cv v)) c in - - ( c_minus_v, (v :: u), bron_kerbosch acc graph (v :: clique) c' u') - ) (c, u, []) c in - cliques @ cliquelst - - let maximalcliques g = - let vertices = G.fold_vertex (fun v acc -> v :: acc) g [] in - bron_kerbosch [] g [] vertices [] - -end - - diff --git a/jscomp/build_tests/ocamlgraph/src/clique.mli b/jscomp/build_tests/ocamlgraph/src/clique.mli deleted file mode 100755 index b13c7e77d0..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/clique.mli +++ /dev/null @@ -1,40 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2014-2015 *) -(* Giselle Reis *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Graph cliques *) - -(** {1 Clique algorithms} *) - -(** {2 Bron-Kerbosch Algorithm} - - This algorithm will find and return all maximal cliques in an undirected graph. *) - -(** Minimal graph signature for Bron-Kerbosch. - Sub-signature of {!Sig.G}. *) -module type G = sig - type t - module V : Sig.COMPARABLE - val succ : t -> V.t -> V.t list - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a -end - -module Bron_Kerbosch(G : G) : sig - val maximalcliques : G.t -> G.V.t list list - (** [maximalcliques g] computes all the maximal cliques of [g] using the - Bron-Kerbosch algorithm. It returns the sets of vertices belonging to the - same maximal clique. *) -end diff --git a/jscomp/build_tests/ocamlgraph/src/cliquetree.ml b/jscomp/build_tests/ocamlgraph/src/cliquetree.ml deleted file mode 100755 index 81301a32a3..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/cliquetree.ml +++ /dev/null @@ -1,286 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -module CliqueTree(Gr : Sig.G) = struct - - (* Original vertex set (of Gr) *) - module OVSet = Set.Make(Gr.V) - - (* Vertex signature *) - module rec CliqueV : - sig - type t - val compare : t -> t -> int - val hash : t -> int - val equal : t -> t -> bool - val label : t -> t - val create : Gr.V.t -> t - val vertex : t -> Gr.V.t - val number : t -> int - val set_number : t -> int -> unit - val clique : t -> int - val set_clique : t -> int -> unit - val mark : t -> int - val incr_mark : t -> unit - val m : t -> CVS.t - val set_m : t -> CVS.t -> unit - val last : t -> t - val set_last : t -> t -> unit - end = - struct - type t = { - mutable mark: int; - orig: Gr.V.t; - mutable m: CVS.t; - mutable last: t option; - mutable number: int; - mutable clique: int; - } - - let compare x y = Gr.V.compare x.orig y.orig - let hash x = Gr.V.hash x.orig - let equal x y = Gr.V.equal x.orig y.orig - - let label x = x - - let create o = { - mark = 0; - orig = o; - m = CVS.empty; - last = None; - number = 0; - clique = -1; - } - - let vertex x = x.orig - - let clique x = x.clique - let set_clique x v = x.clique <- v - - let number x = x.number - let set_number x v = x.number <- v - - let mark x = x.mark - let incr_mark x = - (*Printf.printf "Increasing mark of %s to %i\n%!" - (Gr.v_to_string x.orig) (succ x.mark);*) - x.mark <- succ x.mark - - let m x = x.m - let set_m x v = x.m <- v - - let last x = - match x.last with - Some v -> v - | None -> failwith "last not set" - - let set_last x v = x.last <- Some v - - end - (* Clique tree vertex set *) - and CVS : Set.S with type elt = CliqueV.t = Set.Make(CliqueV) - - (* The final clique tree vertex type: - - set of original vertexes ordered by mark. - - clique number. - *) - module CliqueTreeV = - Util.DataV - (struct type t = CliqueV.t list * CVS.t end) - (struct - type t = int - let compare : t -> t -> int = Pervasives.compare - let hash = Hashtbl.hash - let equal x y = x = y - end) - - module CliqueTreeE = struct - type t = int * CVS.t - - let compare (x, _ : t) (y, _ : t) = Pervasives.compare x y - - let default = (0, CVS.empty) - - let create n s = (n, s) - - let vertices = snd - - let width g tri (_, x) = - let vertices = List.map CliqueV.vertex (CVS.elements x) in - let w = - List.fold_left - (fun w v -> - List.fold_left - (fun w v' -> - if v <> v' then - if not (Gr.mem_edge g v v') && Gr.mem_edge tri v v' - then succ w - else w - else w) - w vertices) - 0 vertices - in - assert(w mod 2 = 0); - w / 2 - end - - (* The returned tree *) - module CliqueTree = - Persistent.Digraph.ConcreteLabeled(CliqueTreeV)(CliqueTreeE) - - (* Intermediate graph *) - module G = Persistent.Graph.Concrete(CliqueV) - - (* Convenient types *) - module EdgeSet = Set.Make(G.E) - module H = Hashtbl.Make(CliqueV) - - (* Used to choose some vertex in the intermediate graph *) - module Choose = Oper.Choose(G) - - (* Creates the intermediate graph from the original *) - module Copy = Gmap.Vertex(Gr)(struct include G include Builder.P(G) end) - - open CliqueV - - let mcs_clique g = - (* initializations *) - let n = Gr.nb_vertex g in - let g' = Copy.map CliqueV.create g in - let unnumbered = ref (G.fold_vertex CVS.add g' CVS.empty) in - let pmark = ref (-1) in - let order = ref [] in - let cliques = Array.make n ([], CVS.empty) in - let ties = ref [] in - let j = ref 0 in - (* loop, taking each unnumbered vertex in turn *) - for i = n downto 1 do - (* Find greatest unnumbered vertex - if CVS.is_empty !unnumbered then - Printf.printf "No more unnumbered vertices\n%!" - else - Printf.printf "%i unnumbered vertices remaining\n%!" - (CVS.cardinal !unnumbered); - *) - let x, mark = - let choosed = CVS.choose !unnumbered in - CVS.fold - (fun x ((_maxx, maxv) as max) -> - let v = mark x in - if v > maxv then (x, v) else max) - !unnumbered (choosed, mark choosed) - in - (* peo construction *) - order := x :: !order; - (* now numbered *) - unnumbered := CVS.remove x !unnumbered; - if mark <= !pmark then begin - (* Create a new clique (lemma 8) *) - incr j; - (* m x is the neighborhoud of x in the previous clique *) - cliques.(!j) <- ([x], CVS.add x (m x)); - (* Use reverse map of cliques to find what clique - we're connected to. m x is the width of the ties *) - let clast = clique (last x) in - ties := (clast, m x, !j) :: !ties; - end else begin - let l, c = cliques.(!j) in - cliques.(!j) <- (x::l, CVS.add x c); - end; - G.iter_succ - (fun y -> - if number y == 0 then begin - incr_mark y; - set_m y (CVS.add x (m y)); - end; - set_last y x) - g' x; - pmark := mark; - set_number x i; - set_clique x !j; - done; - let cliques = - Array.mapi - (fun i (l, c) -> CliqueTreeV.create (List.rev l, c) i) - (Array.sub cliques 0 (succ !j)) - in - let tree = - Array.fold_left CliqueTree.add_vertex CliqueTree.empty cliques - in - let tree, _ = - List.fold_left - (fun (g, n) (i, verts, j) -> - let label = CliqueTreeE.create n verts in - let edge = CliqueTree.E.create cliques.(i) label cliques.(j) in - (CliqueTree.add_edge_e g edge, succ n)) - (tree, 1) !ties - in - List.map CliqueV.vertex !order, tree, cliques.(0) - - let sons g x = CliqueTree.fold_succ (fun x y -> x :: y) g x [] - - exception NotClique - - let test_simpliciality_first' l sons = - List.for_all - (fun son -> - match !son with - | [] -> false - | xi :: _ -> - let other = m xi in - CVS.subset other l) - sons - - let test_simpliciality_next vertices _sons = - match vertices with - | x :: tl -> - begin - try - ignore( - List.fold_left - (fun vm v' -> - let vm' = CliqueV.m v' in - if CVS.equal vm' vm then - CVS.add v' vm' - else raise NotClique) - (CVS.add x (m x)) tl); - true - with NotClique -> false - end - | _ -> true - - let is_chordal g = - let _order, tree, root = mcs_clique g in - let rec aux c = - let csons = sons tree c in - let s = List.map CliqueTreeV.data csons in - let l = CliqueTreeV.data c in - let sons () = List.map (fun (x,_) -> ref x) s in - let first = test_simpliciality_first' (snd l) (sons ()) in - let next = test_simpliciality_next (fst l) (sons ()) in - first && next && (List.for_all aux csons) - in - aux root - - let maxwidth g tri tree = - CliqueTree.fold_edges_e - (fun e res -> - let w = CliqueTreeE.width g tri (CliqueTree.E.label e) in - max res w) - tree 0 - -end diff --git a/jscomp/build_tests/ocamlgraph/src/cliquetree.mli b/jscomp/build_tests/ocamlgraph/src/cliquetree.mli deleted file mode 100755 index a548b9df2e..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/cliquetree.mli +++ /dev/null @@ -1,86 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Construction of the clique tree of a graph and recognition - of chordal graphs. - - Based on the article: - Chordal graphs and their clique graph - by P. Galinier, M. Habib and C. Paul. - - @author Matthieu Sozeau *) - -module CliqueTree(G : Sig.G) : sig - - (** Original graph vertex *) - module CliqueV : - sig - type t - val compare : t -> t -> int - val hash : t -> int - val equal : t -> t -> bool - val label : t -> t - val create : G.V.t -> t - val vertex : t -> G.V.t - end - - (** Set of original vertices *) - module CVS : Set.S with type elt = CliqueV.t - - (** Clique tree vertex type *) - module CliqueTreeV : sig - (** Trace of the algorithm as a list of markers Clique vertices *) - type data = CliqueV.t list * CVS.t - type label - type t - - val compare : t -> t -> int - val hash : t -> int - val equal : t -> t -> bool - - val create : data -> label -> t - val label : t -> label - val data : t -> data - end - - module CliqueTreeE : sig - type t = int * CVS.t - val compare : t -> t -> int - val default : t - val create : int -> CVS.t -> t - - (** Vertices in the clique tree edge - (intersection of the two clique extremities). *) - val vertices : t -> CVS.t - end - - (** The clique tree graph type *) - module CliqueTree : Sig.G with type V.t = CliqueTreeV.t - and type E.label = CliqueTreeE.t - - (** [mcs_clique g] return an perfect elimination order of [g] - (if it is chordal), the clique tree of [g] and its root. *) - val mcs_clique : G.t -> G.V.t list * CliqueTree.t * CliqueTree.V.t - - (** [is_chordal g] uses the clique tree construction to test if a graph is - chordal or not. *) - val is_chordal : G.t -> bool - - (** [maxwidth g tri tree] returns the maxwidth characteristic of the - triangulation [tri] of graph [g] given the clique tree [tree] of [tri]. *) - val maxwidth : G.t -> G.t -> CliqueTree.t -> int -end diff --git a/jscomp/build_tests/ocamlgraph/src/coloring.ml b/jscomp/build_tests/ocamlgraph/src/coloring.ml deleted file mode 100755 index f7b0fdc23c..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/coloring.ml +++ /dev/null @@ -1,125 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -module type GM = sig - val is_directed : bool - type t - val nb_vertex : t -> int - module V : Sig.COMPARABLE - val out_degree : t -> V.t -> int - val iter_vertex : (V.t -> unit) -> t -> unit - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - val fold_succ : (V.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a - module Mark : sig - val get : V.t -> int - val set : V.t -> int -> unit - end -end - -(** Graph coloring with marking. - Only applies to imperative graphs with marks. *) -module Mark(G : GM) = struct - - exception NoColoring - - module Bfs = Traverse.Bfs(G) - - let coloring g k = - (* first step: we eliminate vertices with less than [k] successors *) - let stack = Stack.create () in - let nb_to_color = ref (G.nb_vertex g) in - let count = ref 1 in - while !count > 0 do - count := 0; - let erase v = incr count; G.Mark.set v (k+1); Stack.push v stack in - G.iter_vertex - (fun v -> if G.Mark.get v = 0 && G.out_degree g v < k then erase v) - g; - (*Format.printf "eliminating %d nodes@." !count;*) - nb_to_color := !nb_to_color - !count - done; - (* second step: we k-color the remaining of the graph *) - (* [try_color v i] tries to assign color [i] to vertex [v] *) - let try_color v i = - G.Mark.set v i; - G.iter_succ (fun w -> if G.Mark.get w = i then raise NoColoring) g v - in - let uncolor v = G.Mark.set v 0 in - if !nb_to_color > 0 then begin - let rec iterate iter = - let v = Bfs.get iter in - let m = G.Mark.get v in - if m > 0 then - iterate (Bfs.step iter) - else begin - for i = 1 to k do - try try_color v i; iterate (Bfs.step iter) - with NoColoring -> () - done; - uncolor v; - raise NoColoring - end - in - try iterate (Bfs.start g) with Exit -> () - end; - (* third step: we color the eliminated vertices, in reverse order *) - Stack.iter - (fun v -> - try - for i = 1 to k do - try try_color v i; raise Exit with NoColoring -> () - done; - raise NoColoring (* it may still fail on a self edge v->v *) - with Exit -> ()) - stack - -end - -(** Graph coloring for graphs without marks: we use an external hashtbl *) - -module type G = sig - val is_directed : bool - type t - val nb_vertex : t -> int - module V : Sig.COMPARABLE - val out_degree : t -> V.t -> int - val iter_vertex : (V.t -> unit) -> t -> unit - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - val fold_succ : (V.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a -end - -module Make(G: G) = struct - - module H = Hashtbl.Make(G.V) - - let coloring g k = - let h = H.create 97 in - let module M = - Mark(struct - include G - module Mark = struct - let get v = try H.find h v with Not_found -> 0 - let set v n = H.replace h v n - end - end ) - in - M.coloring g k; - h - -end diff --git a/jscomp/build_tests/ocamlgraph/src/coloring.mli b/jscomp/build_tests/ocamlgraph/src/coloring.mli deleted file mode 100755 index 3a3592a50c..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/coloring.mli +++ /dev/null @@ -1,91 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** [k]-coloring of undirected graphs. - - A [k]-coloring of a graph [g] is a mapping [c] from nodes to [\{1,...,k\}] - such that [c(u) <> c(v)] for any edge [u-v] in [g]. *) - -(** {2 Graph coloring for graphs without marks} *) - -(** Minimal graph signature for {!Make}. - Sub-signature of {!Sig.G}. *) -module type G = sig - val is_directed : bool - type t - val nb_vertex : t -> int - module V : Sig.COMPARABLE - val out_degree : t -> V.t -> int - val iter_vertex : (V.t -> unit) -> t -> unit - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - val fold_succ : (V.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a -end - -(** Provide a function for [k]-coloring a graph. *) -module Make(G: G) : sig - - module H : Hashtbl.S with type key = G.V.t - (** Hash tables used to store the coloring *) - - val coloring : G.t -> int -> int H.t - (** [coloring g k] colors the graph [g] with [k] colors and returns the - coloring as a hash table mapping nodes to their colors. *) - -end - -(** {2 Graph coloring for graph with integer marks} *) - -(** Minimal graph signature for {!Mark}. - Sub-signature of {!Sig.IM}. *) -module type GM = sig - val is_directed : bool - type t - val nb_vertex : t -> int - module V : Sig.COMPARABLE - val out_degree : t -> V.t -> int - val iter_vertex : (V.t -> unit) -> t -> unit - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - val fold_succ : (V.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a - module Mark : sig - val get : V.t -> int - val set : V.t -> int -> unit - end -end - -(** Provide a function for [k]-coloring a graph with integer marks. - The provided function is more efficient that the one provided by functor - {!Make} above. *) -module Mark(G : GM) : sig - - exception NoColoring - - val coloring : G.t -> int -> unit - (** [coloring g k] colors the nodes of graph [g] using k colors, - assigning the marks integer values between 1 and k. - raises [NoColoring] when there is no possible coloring. - - The graph marks may be partially set before starting; the meaning of - initial values is as follows: - - 0: a node to be colored - - any value between 1 and k: a color already assigned - - any value greater than k: a node to be ignored - - @raise NoColoring if [g] cannot be [k]-colored. *) - -end diff --git a/jscomp/build_tests/ocamlgraph/src/components.ml b/jscomp/build_tests/ocamlgraph/src/components.ml deleted file mode 100755 index 42401513c9..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/components.ml +++ /dev/null @@ -1,137 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -module type G = sig - type t - module V : Sig.COMPARABLE - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_succ : (V.t -> unit) -> t -> V.t -> unit -end - -module Make(G: G) = struct - - module H = Hashtbl.Make(G.V) - - (* iterative code using a stack (variable [cont] below) *) - - type action = - | Finish of G.V.t * int - | Visit of G.V.t * G.V.t - | Test of G.V.t * G.V.t - - let scc g = - let root = H.create 997 in - let hashcomp = H.create 997 in - let stack = ref [] in - let numdfs = ref 0 in - let numcomp = ref 0 in - let rec pop x = function - | (y, w) :: l when y > x -> - H.add hashcomp w !numcomp; - pop x l - | l -> l - in - let cont = ref [] in - let visit v = - if not (H.mem root v) then begin - let n = incr numdfs; !numdfs in - H.add root v n; - cont := Finish (v, n) :: !cont; - G.iter_succ - (fun w -> - cont := Visit (v, w) :: Test (v, w) :: !cont) - g v; - end - in - let rec finish () = match !cont with - | [] -> () - | action :: tail -> - cont := tail; - begin match action with - | Finish (v, n) -> - if H.find root v = n then begin - H.add hashcomp v !numcomp; - let s = pop n !stack in - stack:= s; - incr numcomp - end else - stack := (n, v) :: !stack; - | Visit (_, w) -> visit w - | Test (v, w) -> - if not (H.mem hashcomp w) then - H.replace root v (min (H.find root v) (H.find root w)) - end; - finish () - in - let visit_and_finish v = - visit v; - finish () - in - G.iter_vertex visit_and_finish g; - !numcomp, (fun v -> H.find hashcomp v) - - let scc_array g = - let n,f = scc g in - let t = Array.make n [] in - G.iter_vertex (fun v -> let i = f v in t.(i) <- v :: t.(i)) g; - t - - let scc_list g = - let a = scc_array g in - Array.fold_right (fun l acc -> l :: acc) a [] - -end - -(** Connected components (for undirected graphs) *) - -module type U = sig - type t - module V : Sig.COMPARABLE - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_edges : (V.t -> V.t -> unit) -> t -> unit -end - -module Undirected(G: U) = struct - - module UF = Unionfind.Make(G.V) - module H = Hashtbl.Make(G.V) - - let components g = - let vertices = ref [] in - G.iter_vertex (fun v -> vertices := v :: !vertices) g; - let uf = UF.init !vertices in - let visit u v = UF.union u v uf in - G.iter_edges visit g; - let count = ref 0 in - let comp = H.create 5003 in - let visit v = - let v = UF.find v uf in - if not (H.mem comp v) then begin H.add comp v !count; incr count end in - G.iter_vertex visit g; - !count, (fun v -> H.find comp (UF.find v uf)) - - let components_array g = - let n,f = components g in - let t = Array.make n [] in - G.iter_vertex (fun v -> let i = f v in t.(i) <- v :: t.(i)) g; - t - - let components_list g = - let a = components_array g in - Array.fold_right (fun l acc -> l :: acc) a [] - -end diff --git a/jscomp/build_tests/ocamlgraph/src/components.mli b/jscomp/build_tests/ocamlgraph/src/components.mli deleted file mode 100755 index ce173b5a1f..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/components.mli +++ /dev/null @@ -1,74 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Strongly connected components. *) - -(** Minimal graph signature required by {!Make}. - Sub-signature of {!Sig.G}. *) -module type G = sig - type t - module V : Sig.COMPARABLE - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_succ : (V.t -> unit) -> t -> V.t -> unit -end - -(** Functor providing functions to compute strongly connected components of a - graph. *) -module Make (G: G) : sig - - val scc : G.t -> int * (G.V.t -> int) - (** [scc g] computes the strongly connected components of [g]. - The result is a pair [(n,f)] where [n] is the number of - components. Components are numbered from [0] to [n-1], and - [f] is a function mapping each vertex to its component - number. In particular, [f u = f v] if and only if [u] and - [v] are in the same component. Another property of the - numbering is that components are numbered in a topological - order: if there is an arc from [u] to [v], then [f u >= f u] - - Not tail-recursive. - Complexity: O(V+E) - The function returned has complexity O(1) *) - - val scc_array : G.t -> G.V.t list array - (** [scc_array g] computes the strongly connected components of [g]. - Components are stored in the resulting array, indexed with a - numbering with the same properties as for [scc] above. *) - - val scc_list : G.t -> G.V.t list list - (** [scc_list g] computes the strongly connected components of [g]. - The result is a partition of the set of the vertices of [g]. - The [n]-th components is [(scc_array g).(n-1)]. *) - -end - -(** Connected components (for undirected graphs). - The implementation uses union-find. Time complexity is (quasi) O(V+E). - Space complexity is O(V). *) - -module type U = sig - type t - module V : Sig.COMPARABLE - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_edges : (V.t -> V.t -> unit) -> t -> unit -end - -module Undirected(G: U) : sig - val components: G.t -> int * (G.V.t -> int) - val components_array: G.t -> G.V.t list array - val components_list: G.t -> G.V.t list list -end diff --git a/jscomp/build_tests/ocamlgraph/src/contraction.ml b/jscomp/build_tests/ocamlgraph/src/contraction.ml deleted file mode 100755 index 4ecf4ae28f..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/contraction.ml +++ /dev/null @@ -1,79 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* Copyright (c) 2012 Technische Universitaet Muenchen - * Markus W. Weissmann - * All rights reserved. *) - -(* Edge contraction for directed, edge-labeled graphs *) - -module type G = sig - type t - module V : Sig.COMPARABLE - type vertex = V.t - module E : Sig.EDGE with type vertex = vertex - type edge = E.t - - val empty : t - val add_edge_e : t -> edge -> t - val fold_edges_e : (edge -> 'a -> 'a) -> t -> 'a -> 'a - val fold_vertex : (vertex -> 'a -> 'a) -> t -> 'a -> 'a -end - -module Make - (G : G) = -struct - module M = Map.Make(G.V) - module S = Set.Make(G.V) - - let contract prop g = - (* if the edge is to be removed (property = true): - * make a union of the two union-sets of start and end node; - * put this set in the map for all nodes in this set *) - let f edge m = - if prop edge then - let s_src, s_dst = M.find (G.E.src edge) m, M.find (G.E.dst edge) m in - let s = S.union s_src s_dst in - S.fold (fun vertex m -> M.add vertex s m) s m - else - m - in - (* if the edge is to be kept, add it to the new graph, exchanging - * the start and end node with the minimum element from the set of - * to-be-unified nodes; 'minimum is an arbitrary choice: any - * deterministic choice will do *) - let add m edge g = - if prop edge then - g - else - let lookup n = S.min_elt (M.find n m) in - G.add_edge_e g - (G.E.create (lookup (G.E.src edge)) (G.E.label edge) - (lookup (G.E.dst edge))) - in - (* initialize map with singleton-sets for every node (of itself) *) - let m = - G.fold_vertex (fun vertex m -> M.add vertex (S.singleton vertex) m) - g M.empty - in - (* find all closures *) - let m = G.fold_edges_e f g m in - (* rewrite the node numbers to close the gaps *) - G.fold_edges_e (add m) g G.empty - -end - diff --git a/jscomp/build_tests/ocamlgraph/src/contraction.mli b/jscomp/build_tests/ocamlgraph/src/contraction.mli deleted file mode 100755 index f0d9425bea..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/contraction.mli +++ /dev/null @@ -1,49 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* Copyright (c) 2012 Technische Universitaet Muenchen - * Markus W. Weissmann - * All rights reserved. *) - -(** Edge contraction for directed, edge-labeled graphs *) - -(* This algorithm should be extensible to undirected, unlabeled graphs! *) - -(** Minimal graph signature for edge contraction algorithm *) -module type G = sig - type t - module V : Sig.COMPARABLE - type vertex = V.t - module E : Sig.EDGE with type vertex = vertex - type edge = E.t - - val empty : t - val add_edge_e : t -> edge -> t - val fold_edges_e : (edge -> 'a -> 'a) -> t -> 'a -> 'a - val fold_vertex : (vertex -> 'a -> 'a) -> t -> 'a -> 'a -end - -module Make - (G : G) : -sig - val contract : (G.E.t -> bool) -> G.t -> G.t - (** [contract p g] will perform edge contraction on the graph [g]. - The edges for which the property [p] holds/is true will get contracted: - The resulting graph will not have these edges; the start- and end-node - of these edges will get united. *) -end - diff --git a/jscomp/build_tests/ocamlgraph/src/delaunay.ml b/jscomp/build_tests/ocamlgraph/src/delaunay.ml deleted file mode 100755 index 2c68eb0a10..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/delaunay.ml +++ /dev/null @@ -1,378 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: delaunay.ml,v 1.12 2005-11-02 13:43:35 filliatr Exp $ *) - -(** Code follows Don Knuth's algorithm - from ``Axioms and hulls'' (LNCS 606, Springer-Verlag, 1992), pp. 73-77. - - Some code and comments are taken from the Stanford Graph Base, - file [gb_plane]. -*) - -module type CCC = sig - type point - val ccw : point -> point -> point -> bool - val in_circle : point -> point -> point -> point -> bool -end - -module type Triangulation = sig - module S : CCC - type triangulation - val triangulate : S.point array -> triangulation - val iter : (S.point -> S.point -> unit) -> triangulation -> unit - val fold : (S.point -> S.point -> 'a -> 'a) -> triangulation -> 'a -> 'a - val iter_triangles : - (S.point -> S.point -> S.point -> unit) -> triangulation -> unit -end - -module Make (S : CCC) = struct - - module S = S - - type point = Point of int | Infinity - - (* Each edge of the current triangulation is represented by two arcs - pointing in opposite directions; the two arcs are called mates. Each - arc conceptually has a triangle on its left and a mate on its right. *) - - type arc = { - mutable vert : point; - (* v, if this arc goes from u to v *) - mutable next : arc; - (* the arc from v that shares a triangle with this one *) - mutable inst : node ref; - (* instruction to change when the triangle is modified *) - mate : int - } - and node = - | Branch of int * int * node ref * node ref - | Terminal of arc - - type triangulation = { - points : S.point array; - arcs : arc array; - last_used_arc : int - } - - let rec dummy_arc = - { vert = Infinity; next = dummy_arc; - inst = ref (Terminal dummy_arc); mate = -1 } - - let make_arc n i = - { vert = Infinity; next = dummy_arc; - inst = ref (Terminal dummy_arc); mate = 6 * n - 7 - i } - - let finite = function Point p -> p | Infinity -> assert false - - (* [flip] will be used in both steps T4 and T5 *) - let flip c d e t'' p n n' = - let e' = e.next in - let c' = c.next in - let c'' = c'.next in - e.next <- c; - c.next <- c''; - c''.next <- e; - c''.inst <- n; c.inst <- n; e.inst <- n; - c.vert <- Point p; - d.next <- e'; - e'.next <- c'; - c'.next <- d; - c'.inst <- n'; e'.inst <- n'; d.inst <- n'; - d.vert <- Point t'' - - let triangulate points = - let ccw p q r = S.ccw points.(p) points.(q) points.(r) in - let in_circle p q r s = - S.in_circle points.(p) points.(q) points.(r) points.(s) - in - let n = Array.length points in - if n < 2 then invalid_arg "triangulate"; - let arcs = Array.init (6 * n - 6) (make_arc n) in - let mate i = 6 * n - 7 - i in - - (*i DEBUG - let rec dump d l = - eprintf "%s" (String.make (2*d) ' '); - match !l with - | Terminal a -> - eprintf "T %d\n" (mate a.mate) - | Branch (u, v, l, r) -> - eprintf "N %d %d\n" u v; - dump (d+1) l; - dump (d+1) r - in - i*) - - (* initialization: - create a trivial triangulation for the first 2 vertices *) - let u = 0 in - let v = 1 in - let a1 = arcs.(0) in - let a2 = arcs.(1) in - let a3 = arcs.(2) in - let b1 = arcs.(mate 0) in - let b2 = arcs.(mate 1) in - let b3 = arcs.(mate 2) in - let l1 = ref (Terminal a2) in - let l2 = ref (Terminal b3) in - a1.vert <- Point v; a1.next <- a2; a1.inst <- l1; - a2.vert <- Infinity; a2.next <- a3; a2.inst <- l1; - a3.vert <- Point u; a3.next <- a1; a3.inst <- l1; - b1.vert <- Point u; b1.next <- b3; b1.inst <- l2; - b2.vert <- Point v; b2.next <- b1; b2.inst <- l2; - b3.vert <- Infinity; b3.next <- b2; b3.inst <- l2; - let l0 = ref (Branch (u, v, l1, l2)) in - let j = ref 2 in (* last used arc *) - - (* then for each new vertex [p] *) - for p = 2 to n - 1 do - (* Step T1 *) - let rec step_T1 l p = match !l with - | Terminal al -> - l, al - | Branch (pl, ql, al, bl) -> - step_T1 (if ccw pl ql p then al else bl) p - in - let l, al = step_T1 l0 p in - - (* Step T2 *) - let a = al in - let b = a.next in - let c = b.next in - let q = a.vert in - let r = b.vert in - let s = c.vert in - j := !j + 3; - let aj = arcs.(!j) in - let aj_1 = arcs.(!j - 1) in - let aj_2 = arcs.(!j - 2) in - let bj = arcs.(aj.mate) in - let bj_1 = arcs.(aj_1.mate) in - let bj_2 = arcs.(aj_2.mate) in - let l' = ref (Terminal a) in - let l'' = ref (Terminal aj) in - let l''' = ref (Terminal c) in - aj.vert <- q; aj.next <- b; aj.inst <- l''; - aj_1.vert <- r; aj_1.next <- c; aj_1.inst <- l'''; - aj_2.vert <- s; aj_2.next <- a; aj_2.inst <- l'; - bj.vert <- Point p; bj.next <- aj_2; bj.inst <- l'; - bj_1.vert <- Point p; bj_1.next <- aj; bj_1.inst <- l''; - bj_2.vert <- Point p; bj_2.next <- aj_1; bj_2.inst <- l'''; - a.next <- bj; a.inst <- l'; - b.next <- bj_1; b.inst <- l''; - c.next <- bj_2; c.inst <- l'''; - let r = finite r in - let s = finite s in - - (* steps T3 or T4 depending on [q] *) - let r = match q with - | Point q -> (* Step T3 *) - let n = ref (Branch (q, p, l', l'')) in - let n' = ref (Branch (s, p, l''', l')) in - l := Branch (r, p, n, n'); - r - | Infinity -> (* Step T4 *) - let n = ref (Branch (s, p, l''', l')) in - l := Branch (r, p, l'', n); - let rec loop m a d s t = - if t <> r && ccw p s t then begin - let n = ref (Terminal d) in - match !m with - | Branch (mu, mv, ml, is_l') -> - assert (is_l' == l'); - m := Branch (mu, mv, ml, d.inst); - d.inst := Branch (t, p, n, l'); - let m = d.inst in - flip a arcs.(a.mate) d t p n l'; - let a = arcs.(a.mate).next in - let d = arcs.(a.mate).next in - let s = t in - let t = finite d.vert in - l' := Terminal a; - loop m a d s t - | Terminal _ -> - assert false - end else begin - (* at exit of while loop *) - let n = ref (Terminal d.next) in - d.inst := Branch (s, p, n, l'); - d.inst <- n; d.next.inst <- n; d.next.next.inst <- n; - s - end - in - let d = arcs.(a.mate).next in - loop n a d s (finite d.vert) - in - - (* Step T5 *) - let rec loop c = - let d = arcs.(c.mate) in - let e = d.next in - let t = finite d.vert in - let t' = finite c.vert in - let t'' = e.vert in - if t'' <> Infinity && in_circle (finite t'') t' t p then begin - let t'' = finite t'' in - let n = ref (Terminal e) in - let n' = ref (Terminal d) in - c.inst := Branch (t'', p, n, n'); - d.inst := Branch (t'', p, n, n'); - flip c d e t'' p n n'; - loop e - end else if t' <> r then - loop arcs.(c.next.mate).next - else - () (* break *) - in - loop c - - done; - { points = points; arcs = arcs; last_used_arc = !j } - - let iter f t = - let points = t.points in - let n = Array.length t.arcs in - for i = 0 to t.last_used_arc do - match t.arcs.(i).vert, t.arcs.(n - 1 - i).vert with - | Point u, Point v -> f points.(u) points.(v) - | _ -> () - done - - let iter_triangles f t = - let n = Array.length t.arcs in - let seen_arc = Array.make n false in - let mate i = n - 1 - i in - let index a = mate a.mate in - for i = 0 to n-1 do - if not seen_arc.(i) then begin - let a1 = t.arcs.(i) in - let a2 = a1.next in - let a3 = a2.next in - seen_arc.(i) <- true; - seen_arc.(index a2) <- true; - seen_arc.(index a3) <- true; - match a1.vert, a2.vert, a3.vert with - | Point i1, Point i2, Point i3 -> - f t.points.(i1) t.points.(i2) t.points.(i3) - | _ -> - () - end - done - - let fold f t a = - let points = t.points in - let n = Array.length t.arcs in - let rec loop i a = - if i <= t.last_used_arc then - match t.arcs.(i).vert, t.arcs.(n - 1 - i).vert with - | Point u, Point v -> loop (succ i) (f points.(u) points.(v) a) - | _ -> loop (succ i) a - else - a - in - loop 0 a - -end - -(** Points with floating point coordinates *) - -module FloatPoints = struct - - type point = float * float - - let ( + ) = ( +. ) - let ( - ) = ( -. ) - let ( * ) = ( *. ) - - let det = function - | [| [| a00; a01 |]; - [| a10; a11 |] |] -> - a00 * a11 - a01 * a10 - | [| [| a00; a01; a02 |]; - [| a10; a11; a12 |]; - [| a20; a21; a22 |] |] -> - a00*a11*a22 - a00*a12*a21 - a10*a01*a22 + - a10*a02*a21 + a20*a01*a12 - a20*a02*a11 - | [| [| a00; a01; a02; a03 |]; - [| a10; a11; a12; a13 |]; - [| a20; a21; a22; a23 |]; - [| a30; a31; a32; a33 |] |] -> - a00*a11*a22*a33 - a00*a11*a23*a32 - a00*a21*a12*a33 + - a00*a21*a13*a32 + a00*a31*a12*a23 - a00*a31*a13*a22 - - a10*a01*a22*a33 + a10*a01*a23*a32 + a10*a21*a02*a33 - - a10*a21*a03*a32 - a10*a31*a02*a23 + a10*a31*a03*a22 + - a20*a01*a12*a33 - a20*a01*a13*a32 - a20*a11*a02*a33 + - a20*a11*a03*a32 + a20*a31*a02*a13 - a20*a31*a03*a12 - - a30*a01*a12*a23 + a30*a01*a13*a22 + a30*a11*a02*a23 - - a30*a11*a03*a22 - a30*a21*a02*a13 + a30*a21*a03*a12 - | _ -> assert false - - let ccw (xu,yu) (xv,yv) (xw,yw) = - det [| [| xu; yu; 1.0 |]; - [| xv; yv; 1.0 |]; - [| xw; yw; 1.0 |] |] > 0.0 - - (*i DEBUG - let ccw (xu,yu) (xv,yv) (xw,yw) = - eprintf "ccw((%.0f,%.0f),(%.0f,%.0f),(%.0f,%.0f)) -> " - xu yu xv yv xw yw; - let r = ccw (xu,yu) (xv,yv) (xw,yw) in - eprintf "%b\n" r; flush stderr; - r - i*) - - let in_circle (xt,yt) (xu,yu) (xv,yv) (xw,yw) = - det [| [| xt; yt; (xt * xt + yt * yt); 1.0 |]; - [| xu; yu; (xu * xu + yu * yu); 1.0 |]; - [| xv; yv; (xv * xv + yv * yv); 1.0 |]; - [| xw; yw; (xw * xw + yw * yw); 1.0 |]; |] > 0.0 - - (*i DEBUG - let in_circle (xt,yt) (xu,yu) (xv,yv) (xw,yw) = - eprintf "in_circle((%.0f,%.0f),(%.0f,%.0f),(%.0f,%.0f),(%.0f,%.0f)) -> " - xt yt xu yu xv yv xw yw; - let r = in_circle (xt,yt) (xu,yu) (xv,yv) (xw,yw) in - eprintf "%b\n" r; flush stderr; - r - i*) - -end - -module Float = Make(FloatPoints) - -(** Points with integer coordinates. - We approximate using module [FloatPoints] but this could be made exact - following Knuth's code in Axioms and Hulls *) - -module IntPoints = struct - - type point = int * int - - let ccw (xu,yu) (xv,yv) (xw,yw) = - FloatPoints.ccw - (float xu, float yu) (float xv, float yv) (float xw, float yw) - - let in_circle (xt,yt) (xu,yu) (xv,yv) (xw,yw) = - FloatPoints.in_circle - (float xt, float yt) - (float xu, float yu) (float xv, float yv) (float xw, float yw) - -end - -module Int = Make(IntPoints) - diff --git a/jscomp/build_tests/ocamlgraph/src/delaunay.mli b/jscomp/build_tests/ocamlgraph/src/delaunay.mli deleted file mode 100755 index b05faa9998..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/delaunay.mli +++ /dev/null @@ -1,79 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: delaunay.mli,v 1.8 2004-02-20 14:37:40 signoles Exp $ *) - -(** Delaunay triangulation. *) - -(** Delaunay triangulation is available for any CCC system in the sense - of Knuth's ``Axioms and Hulls'' *) -module type CCC = sig - - type point - - val ccw : point -> point -> point -> bool - (** The counterclockwise relation [ccw p q r] states that the - circle through points [(p,q,r)] is traversed counterclockwise - when we encounter the points in cyclic order [p,q,r,p,...] **) - - val in_circle : point -> point -> point -> point -> bool - (** The relation [in_circle p q r s] states that [s] lies - inside the circle [(p,q,r)] if [ccw p q r] is true, or outside that - circle if [ccw p q r] is false. *) - -end - -(** The result of triangulation is an abstract value of type [triangulation]. - Then one can iterate over all edges of the triangulation. *) -module type Triangulation = sig - - module S : CCC - - type triangulation - - val triangulate : S.point array -> triangulation - (** [triangulate a] computes the Delaunay triangulation of a set of - points, given as an array [a]. If [N] is the number of points - (that is [Array.length a]), then the running time is $O(N \log N)$ - on the average and $O(N^2)$ on the worst-case. The space used is - always $O(N)$. *) - - val iter : (S.point -> S.point -> unit) -> triangulation -> unit - (** [iter f t] iterates over all edges of the triangulation [t]. - [f u v] is called once for each undirected edge [(u,v)]. *) - - val fold : (S.point -> S.point -> 'a -> 'a) -> triangulation -> 'a -> 'a - - val iter_triangles : - (S.point -> S.point -> S.point -> unit) -> triangulation -> unit - -end - -(** Generic Delaunay triangulation *) -module Make(S : CCC) : Triangulation with module S = S - -(** Points with integer coordinates *) -module IntPoints : CCC with type point = int * int - -(** Delaunay triangulation with integer coordinates *) -module Int : Triangulation with module S = IntPoints - -(** Points with floating point coordinates *) -module FloatPoints : CCC with type point = float * float - -(** Delaunay triangulation with floating point coordinates *) -module Float : Triangulation with module S = FloatPoints diff --git a/jscomp/build_tests/ocamlgraph/src/dominator.ml b/jscomp/build_tests/ocamlgraph/src/dominator.ml deleted file mode 100755 index e1fe5da931..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/dominator.ml +++ /dev/null @@ -1,408 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* - Copyright © 2009 Carnegie-Mellon University, David Brumley, and Ivan Jager. - From the BAP library; see http://bap.ece.cmu.edu - Modified by OCamlGraph's authors. -*) - -(* stuff to read: - http://www.hipersoft.rice.edu/grads/publications/dom14.pdf - Modern Compiler Implementation in ML, by Appel - Introduction to Algorithms, Cormen et al -*) - -exception Unreachable - -module type G = sig - type t - module V : Sig.COMPARABLE - val pred : t -> V.t -> V.t list - val succ : t -> V.t -> V.t list - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - val nb_vertex : t -> int -end - -module type I = sig - include G - val create: ?size:int -> unit -> t - val add_edge: t -> V.t -> V.t -> unit -end - -module type S = sig - type t - type vertex - module S : Set.S with type elt = vertex - type idom = vertex -> vertex - type idoms = vertex -> vertex -> bool - type dom_tree = vertex -> vertex list - type dominators = vertex -> vertex list - type dom = vertex -> vertex -> bool - type sdom = vertex -> vertex -> bool - type dom_frontier = vertex -> vertex list - val compute_idom: t -> vertex -> vertex -> vertex - val dominators_to_dom: ('a -> S.t) -> vertex -> 'a -> bool - val dominators_to_sdom: (vertex -> S.t) -> vertex -> vertex -> bool - val dom_to_sdom: (vertex -> vertex -> bool) -> vertex -> vertex -> bool - val dominators_to_sdominators: (vertex -> S.t) -> vertex -> S.t - val dominators_to_idoms: (vertex -> S.t) -> vertex -> vertex -> bool - val dominators_to_dom_tree: - t -> - ?pred:(t -> vertex -> vertex list) -> (vertex -> S.t) -> vertex -> S.t - val idom_to_dom_tree: t -> (vertex -> vertex) -> vertex -> vertex list - val idom_to_idoms: idom -> vertex -> vertex -> bool - val compute_dom_frontier: t -> dom_tree -> idom -> vertex -> vertex list - val idom_to_dominators: ('a -> 'a) -> 'a -> 'a list - val idom_to_dom: (vertex -> vertex) -> vertex -> vertex -> bool -end - -module Make(G : G) = struct - - type t = G.t - type vertex = G.V.t - - module H = Hashtbl.Make(G.V) - module S = Set.Make(G.V) - - (** function from [n] to [n]'s immediate dominator *) - type idom = vertex -> vertex - - (** [idoms x y] is true when [x] is [y]'s immediate dominator *) - type idoms = vertex -> vertex -> bool - - (** function from [x] to a list of nodes immediately dominated by [x] *) - type dom_tree = vertex -> vertex list - - (** function from node to a list of nodes that dominate it. *) - type dominators = vertex -> vertex list - - (** [dom x y] returns true iff [x] dominates [y] *) - type dom = vertex -> vertex -> bool - - (** [sdom x y] returns true iff [x] strictly dominates [y]. *) - type sdom = vertex -> vertex -> bool - - (** function from [x] to a list of nodes not dominated by [x], but with - predecessors which are dominated by [x] *) - type dom_frontier = vertex -> vertex list - - let set_of_list x = List.fold_left (fun set v -> S.add v set) S.empty x - - (** Computes the dominator tree, using the Lengauer-Tarjan algorithm. - [compute_idom cfg s0] returns a function [idom : V.t -> V.t] s.t. - [idom x] returns the immediate dominator of [x] - *) - let compute_idom cfg s0 = - (* based on the Tiger book, section 19.2. - This uses path compression, but doesn't yet do balanced path - compression, so the runtime is O(N log(N)) rather than - O(N inverseackerman(N)) - *) - let size = G.nb_vertex cfg in - let bucket = H.create size (* node n -> *) - and dfnum_h = H.create size (* node -> DFS number *) - and parent = H.create size (* node -> parent in DFS tree*) - and semi_h = H.create size (* node -> semidominator *) - and ancestor = H.create size (* node -> *) - and best = H.create size (* node -> *) - and samedom = H.create size (* node -> node with same idom *) - and idom = H.create size (* node n -> idom n *) - and vertex = Array.make size s0 (* DFS number -> node *) - and nn = ref 0 in - let dfnum x = try H.find dfnum_h x with Not_found -> raise Unreachable - and semi = H.find semi_h in - let dfs n0 = - let stack = Stack.create () in - let loop () = - while not (Stack.is_empty stack) do - let n,p = Stack.pop stack in - if not (H.mem dfnum_h n) then begin - let enn = !nn in - H.add dfnum_h n enn; - vertex.(enn) <- n; - begin match p with - | Some p -> H.add parent n p - | None -> () end; - nn := enn + 1; - G.iter_succ - (fun m -> - if not (H.mem dfnum_h m) then Stack.push (m, Some n) stack) - cfg n - end - done - in - Stack.push (n0,None) stack; - loop () - in - let rec ancestor_with_lowest_semi v = - try - let a = H.find ancestor v in - let b = ancestor_with_lowest_semi a in - let () = H.replace ancestor v (H.find ancestor a) in - let best_v = H.find best v in - if dfnum(semi b) < dfnum(semi best_v) - then (H.replace best v b; b) - else best_v - with Not_found -> H.find best v - in - let link p n = - H.replace ancestor n p; - H.replace best n n; - in - let semidominator n = - let s = H.find parent n in - List.fold_left - (fun s v -> - try (* FIXME: do we want to allow unreachable nodes? *) - let s' = - if dfnum v <= dfnum n - then v - else semi(ancestor_with_lowest_semi v) - in - if dfnum s' < dfnum s then s' else s - with Unreachable -> (* maybe switch to Not_found later *) - s (* v is unreachable from s0 *) - ) - s - (G.pred cfg n) - in - let () = dfs s0 in - let lastn = !nn - 1 in - while decr nn; !nn > 0 do (* skip over the root node *) - let i = !nn in - let n = vertex.(i) in - let p = H.find parent n in - let s = semidominator n in - H.add semi_h n s; - H.add bucket s n; - link p n; - (* now that the path from p to v is in the forest, - calculate the dominator of v based on the first clause of the - Dominator Theorem, otherwise defer until y's dominator is known *) - List.iter - (fun v -> - let y = ancestor_with_lowest_semi v in - if G.V.equal (semi y) (semi v) - then H.add idom v p - else H.add samedom v y; - H.remove bucket p (*could use H.remove_all if we used extlib*) - ) - (H.find_all bucket p) - done; - (* now all the defered calculations can be done *) - for i = 1 to lastn do - let n = vertex.(i) in - try - H.add idom n (H.find idom (H.find samedom n)) - with Not_found -> () - done; - H.find idom - - - (** Given a function from a node to it's dominators, returns a function - [dom : V.t -> V.t -> bool] s.t. [dom x y] returns true when - [x] dominates [y] - *) - let dominators_to_dom dominators x y = - S.mem x (dominators y) - - (** Given a function from a node to it's dominators, returns a function - [sdom : V.t -> V.t -> bool] s.t. [sdom x y] returns true when - [x] strictly dominates [y] *) - let dominators_to_sdom dominators x y = - not(G.V.equal x y) && dominators_to_dom dominators x y - - let dom_to_sdom dom x y = - not(G.V.equal x y) && dom x y - - (** Given a a function from a node to it's dominators, returns a function - from a node to it's strict dominators. *) - let dominators_to_sdominators dominators x = - S.remove x (dominators x) - - - (** Given a function from a node to it's dominators, returns a function - [idoms : G.V.t -> G.V.t -> bool] s.t. [idoms x y] returns true when - [x] is the immediate dominator of [y]. - *) - let dominators_to_idoms dominators = - let sdom = dominators_to_sdom dominators in - (fun x y -> - sdom x y - && let sdoms = dominators_to_sdominators dominators y in - S.for_all (fun w -> G.V.equal x w || not(sdom x w)) sdoms - ) - - - (** Computes a dominator tree (function from x to a list of nodes immediately - dominated by x) for the given CFG and dominator function. - Note: The dominator tree is also called [IDom] by Muchnick. - Note: If you are computing a post-dominator tree, then the - optional argument pred should be G.succ. - *) - let dominators_to_dom_tree cfg ?(pred=G.pred) dominators = - let idoms = dominators_to_idoms dominators in - let tree = H.create 97 in - let () = - G.iter_vertex - (fun y -> - match pred cfg y with - [x] -> ( - (* a node that is not reachable from start has no - idom *) - if S.is_empty (dominators x) then () else - H.add tree x y - ) - | _ -> ( - S.iter - (fun x -> if idoms x y then H.add tree x y) - (dominators y) - ) - ) - cfg - in - (* FIXME: maybe faster to convert eagerly *) - fun x -> set_of_list(H.find_all tree x) - - (** Computes a dominator tree (function from x to a list of nodes immediately - dominated by x) for the given CFG and idom function. *) - let idom_to_dom_tree cfg idom = - let tree = H.create (G.nb_vertex cfg) in - let () = - G.iter_vertex - (fun v -> - try H.add tree (idom v) v - with Not_found -> () (* s0 doesn't have an idom *) - ) - cfg - in - H.find_all tree - - - let idom_to_idoms (idom:idom) x y = - try G.V.equal x (idom y) - with Not_found -> false (* s0 doesn't have an idom *) - - (** Computes the dominance frontier. - As specified in section 19.1 of Modern Compiler Implementation in ML - by Andrew Appel. - *) - let compute_dom_frontier cfg (dom_tree: dom_tree) (idom: idom) = - let children = dom_tree in - let idoms = idom_to_idoms idom in - let df_cache = H.create 57 in - let df_local n = - (* the successors of n that are not strictly dominated by n *) - List.filter (fun y -> not (idoms n y)) (G.succ cfg n) - in - (* written in CPS to prevent stack overflow *) - let rec df n k = - match try Some (H.find df_cache n) with Not_found -> None with - | Some r -> k r - | None -> - let s = df_local n in - add_df_ups s n (fun res -> H.add df_cache n res; k res) (children n) - and add_df_ups s n k = function - | [] -> k s - | c :: chl -> - df c (fun dfc -> - add_df_ups - (List.fold_left - (* the appel errata uses sdom, but Muchnick uses idoms, which - should be a bit faster and is the same *) - (fun s w -> if idoms n w then s else w :: s) s dfc) - n k chl) - in - fun n -> df n (fun x -> x) - - let idom_to_dominators idom x = - let rec d y list = - try - let i = idom y in - d i (i::list) - with Not_found -> - list - in - d x [] - - let rec idom_to_dom idom x y = - try - let d = idom y in - G.V.equal x d || idom_to_dom idom x d - with Not_found -> - false - -end - -module Make_graph(G: I) = struct - - include Make(G) - - type dom_graph = unit -> t - - type dom_functions = { - idom : idom; - idoms: idoms; - dom_tree: dom_tree; - dominators: dominators; - dom: dom; - sdom: sdom; - dom_frontier: dom_frontier; - dom_graph : dom_graph; - } - - let compute_dom_graph cfg dom_tree = - let g = G.create ~size:(G.nb_vertex cfg) () in - G.iter_vertex (fun p -> - try - List.iter (G.add_edge g p) (dom_tree p) - with Not_found -> () - ) cfg; - g - - (** Computes all dominance functions. - This function computes some things eagerly and some lazily, so don't - worry about it doing extra work to compute functions you don't need, - but also don't call it if you aren't going to use anything it returns. - @return a record containing all dominance functions for the given graph - and entry node. - *) - let compute_all cfg s0 = - let idom = compute_idom cfg s0 in - let idoms = idom_to_idoms idom in - let dom_tree = lazy(idom_to_dom_tree cfg idom) in - let dominators = idom_to_dominators idom in - let dom = idom_to_dom idom in - let sdom = dom_to_sdom dom in - let dom_frontier = - lazy(compute_dom_frontier cfg (Lazy.force dom_tree) idom) - in - { - idom=idom; - idoms=idoms; - dom_tree=(fun x -> Lazy.force dom_tree x); - dominators=dominators; - dom=dom; - sdom=sdom; - dom_frontier=(fun x -> Lazy.force dom_frontier x); - dom_graph=(fun () -> compute_dom_graph cfg (Lazy.force dom_tree)); - } - -end diff --git a/jscomp/build_tests/ocamlgraph/src/dominator.mli b/jscomp/build_tests/ocamlgraph/src/dominator.mli deleted file mode 100755 index 03e2e4d62a..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/dominator.mli +++ /dev/null @@ -1,164 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* - Copyright © 2009 Carnegie-Mellon University, David Brumley, and Ivan Jager. - From the BAP library; see http://bap.ece.cmu.edu - - Modified by OCamlGraph's authors. -*) - -(** Dominators - - All of the functions in this module assume that the graph is not modified - between calling one of these functions and using the returned functions. - Such mutation results in undefined behavior. - @author Ivan Jager -*) - -exception Unreachable - -module type G = sig - type t - module V : Sig.COMPARABLE - val pred : t -> V.t -> V.t list - val succ : t -> V.t -> V.t list - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - val nb_vertex : t -> int -end - -module type S = sig - - type t (** type of graphs *) - type vertex (** type of vertices *) - - module S: Set.S with type elt = vertex - - (** function from [n] to [n]'s immediate dominator *) - type idom = vertex -> vertex - - (** [idoms x y] is true when [x] is [y]'s immediate dominator *) - type idoms = vertex -> vertex -> bool - - (** function from [x] to a list of nodes immediately dominated by [x] *) - type dom_tree = vertex -> vertex list - - (** function from node to a list of nodes that dominate it. *) - type dominators = vertex -> vertex list - - (** [dom x y] returns true iff [x] dominates [y] *) - type dom = vertex -> vertex -> bool - - (** [sdom x y] returns true iff [x] strictly dominates [y]. *) - type sdom = vertex -> vertex -> bool - - (** function from [x] to a list of nodes not dominated by [x], but with - predecessors which are dominated by [x] *) - type dom_frontier = vertex -> vertex list - - (** Computes the dominator tree, using the Lengauer-Tarjan algorithm. - [compute_idom cfg s0] returns a function [idom : V.t -> V.t] s.t. - [idom x] returns the immediate dominator of [x]. *) - val compute_idom: t -> vertex -> vertex -> vertex - - (** Given a function from a node to it's dominators, returns a function - [dom : V.t -> V.t -> bool] s.t. [dom x y] returns true when - [x] dominates [y]. *) - val dominators_to_dom: ('a -> S.t) -> vertex -> 'a -> bool - - (** Given a function from a node to it's dominators, returns a function - [sdom : V.t -> V.t -> bool] s.t. [sdom x y] returns true when - [x] strictly dominates [y]. *) - val dominators_to_sdom: (vertex -> S.t) -> vertex -> vertex -> bool - val dom_to_sdom: (vertex -> vertex -> bool) -> vertex -> vertex -> bool - - (** Given a a function from a node to it's dominators, returns a function - from a node to it's strict dominators. *) - val dominators_to_sdominators: (vertex -> S.t) -> vertex -> S.t - - (** Given a function from a node to it's dominators, returns a function - [idoms : vertex -> vertex -> bool] s.t. [idoms x y] returns true when - [x] is the immediate dominator of [y]. *) - val dominators_to_idoms : (vertex -> S.t) -> vertex -> vertex -> bool - - (** Computes a dominator tree (function from x to a list of nodes immediately - dominated by x) for the given CFG and dominator function. - Note: The dominator tree is also called [IDom] by Muchnick. - Note: If you are computing a post-dominator tree, then the - optional argument pred should be G.succ. *) - val dominators_to_dom_tree: - t -> - ?pred:(t -> vertex -> vertex list) -> (vertex -> S.t) -> vertex -> S.t - - (** Computes a dominator tree (function from x to a list of nodes immediately - dominated by x) for the given CFG and idom function. *) - val idom_to_dom_tree: t -> (vertex -> vertex) -> vertex -> vertex list - - val idom_to_idoms: idom -> vertex -> vertex -> bool - - (** Computes the dominance frontier. - As specified in section 19.1 of Modern Compiler Implementation in ML - by Andrew Appel. *) - val compute_dom_frontier: t -> dom_tree -> idom -> vertex -> vertex list - - val idom_to_dominators: ('a -> 'a) -> 'a -> 'a list - - val idom_to_dom: (vertex -> vertex) -> vertex -> vertex -> bool - -end - -module Make(G : G) : S with type t = G.t and type vertex = G.V.t - -module type I = sig - include G - val create: ?size:int -> unit -> t - val add_edge: t -> V.t -> V.t -> unit -end - -module Make_graph(G:I): sig - - include S with type t = G.t and type vertex = G.V.t - - type dom_graph = unit -> t - - type dom_functions = { - idom: idom; - idoms: idoms; - dom_tree: dom_tree; - dominators: dominators; - dom: dom; - sdom: sdom; - dom_frontier: dom_frontier; - dom_graph: dom_graph - } - - val compute_dom_graph : G.t -> dom_tree -> G.t - - (** Computes all dominance functions. - - This function computes some things eagerly and some lazily, so don't - worry about it doing extra work to compute functions you don't need, - but also don't call it if you aren't going to use anything it returns. - - @return a record containing all dominance functions for the given graph - and entry node. - *) - val compute_all : G.t -> vertex -> dom_functions - -end diff --git a/jscomp/build_tests/ocamlgraph/src/dot.ml b/jscomp/build_tests/ocamlgraph/src/dot.ml deleted file mode 100755 index abe8a35ecf..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/dot.ml +++ /dev/null @@ -1,214 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Parser for DOT file format *) - -open Dot_ast - -let parse_dot_ast_from_chan c = - let lb = Lexing.from_channel c in - let dot = - try - Dot_parser.file Dot_lexer.token lb - with Parsing.Parse_error -> - let n = Lexing.lexeme_start lb in - failwith (Printf.sprintf "Dot.parse: parse error character %d" n) - in - close_in c; - dot - -let parse_dot_ast f = - let c = open_in f in - parse_dot_ast_from_chan c - -type clusters_hash = (string, attr list) Hashtbl.t - -let get_string = function - | String s -> s - | Ident s -> s - | Number s -> s - | Html s -> s - -module Parse - (B : Builder.S) - (L : sig - val node : node_id -> attr list -> B.G.V.label - (** how to build the node label out of the set of attributes *) - val edge : attr list -> B.G.E.label - (** how to build the edge label out of the set of attributes *) - end) = -struct - - module Attr = struct - module M = - Map.Make - (struct - type t = id - let compare : t -> t -> int = Pervasives.compare - end) - let empty = M.empty - let add = List.fold_left (fun a (x,v) -> M.add x v a) - let addl = List.fold_left add - let list a = M.fold (fun x v l -> (x,v) :: l) a [] - end - - let create_graph_and_clusters dot = - (* pass 1*) - - (* collect node attributes *) - let def_node_attr = ref Attr.empty in - let node_attr = Hashtbl.create 97 in - - (* collect cluster attributes *) - let def_clust_attr = ref Attr.empty in - let clust_attr = Hashtbl.create 97 in - - (* collect clusters nodes *) - let clust_nodes = Hashtbl.create 97 in - - let add_node_attr id al = - let l = try Hashtbl.find node_attr id - with Not_found -> !def_node_attr in - Hashtbl.replace node_attr id (Attr.addl l al) in - - let add_clust_attr id_opt al = - match id_opt with - | Some id -> - let s = get_string id in - let l = try Hashtbl.find clust_attr s - with Not_found -> !def_clust_attr in - Hashtbl.replace clust_attr s (Attr.addl l al) - | _ -> () in - - let add_clust_node id_cluster id_node = - let id_nodes = try Hashtbl.find clust_nodes id_cluster - with Not_found -> [] in - Hashtbl.add clust_nodes id_cluster (id_node :: id_nodes) in - - let rec collect_node_attr cluster_op stmts = - List.iter ( - function - | Node_stmt (id, al) -> - add_node_attr id al; - begin match cluster_op with - | Some id_cluster -> add_clust_node id_cluster id - | _ -> () - end - | Attr_node al -> def_node_attr := Attr.addl !def_node_attr al - | Edge_stmt (NodeId id, nl, _) -> - add_node_attr id []; - List.iter (function | NodeId id -> add_node_attr id [] - | _ -> ()) nl - | Subgraph (SubgraphDef (id, stmts)) -> - collect_node_attr (Some id) stmts - | Attr_graph al -> - begin match cluster_op with - | Some id -> add_clust_attr id al - | None -> () - end - | _ -> () - ) stmts - in - collect_node_attr None dot.stmts; - - (* pass 2: build the graph and the clusters *) - let def_edge_attr = ref Attr.empty in - let nodes = Hashtbl.create 97 in - let node g id _ = - try - g, Hashtbl.find nodes id - with Not_found -> - let l = try Hashtbl.find node_attr id with Not_found -> Attr.empty in - let n = B.G.V.create (L.node id [Attr.list l]) in - Hashtbl.add nodes id n; - B.add_vertex g n, n - in - let rec add_stmts g stmts = - List.fold_left - (fun g s -> match s with - | Node_stmt (id, al) -> - let g,_ = node g id al in g - | Edge_stmt (NodeId id, nl, al) -> - let al = Attr.addl !def_edge_attr al in - let el = L.edge [Attr.list al] in - let g,vn = node g id [] in - fst (List.fold_left - (fun (g,pvn) m -> match m with - | NodeId idm -> - let g,vm = node g idm [] in - let e = B.G.E.create pvn el vm in - ((B.add_edge_e g e),vm) - | NodeSub _ -> - (g,pvn)) - (g,vn) nl) - | Attr_edge al -> - def_edge_attr := Attr.addl !def_edge_attr al; g - | Subgraph (SubgraphDef (_, stmts)) -> - add_stmts g stmts - | _ -> g - ) - g stmts in - - let graph = add_stmts (B.empty ()) dot.stmts in - - let clusters_hash = - let h = Hashtbl.create 30 in - Hashtbl.iter (fun k a -> Hashtbl.add h k [Attr.list a]) clust_attr; - h in - - graph, clusters_hash - - let get_graph_bb stmts = - let graph_bb = ref None in - let read_attr = function - | (Ident "bb" , Some (String bb)) -> graph_bb := Some bb - | _ -> () in - let read_stmt = function - | Attr_graph attrs -> List.iter (List.iter read_attr) attrs - | _ -> () in - List.iter read_stmt stmts; - !graph_bb - - let parse_dot_from_chan c = - let lb = Lexing.from_channel c in - let dot = - try - Dot_parser.file Dot_lexer.token lb - with Parsing.Parse_error -> - let n = Lexing.lexeme_start lb in - failwith (Printf.sprintf "Dot.parse: parse error character %d" n) - in - close_in c; - dot - - let parse_dot f = - let c = open_in f in - parse_dot_from_chan c - - let parse f = - fst (create_graph_and_clusters (parse_dot f)) - - let parse_bounding_box_and_clusters f = - let dot = parse_dot f in - let graph, clusters = create_graph_and_clusters dot in - match get_graph_bb dot.stmts with - | Some bounding_box -> - graph, bounding_box, clusters - | None -> - failwith "Cannot read bounding box in xdot file" - -end diff --git a/jscomp/build_tests/ocamlgraph/src/dot.mli b/jscomp/build_tests/ocamlgraph/src/dot.mli deleted file mode 100755 index 423593c4d6..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/dot.mli +++ /dev/null @@ -1,45 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Parser for DOT file format. *) - -open Dot_ast - -val parse_dot_ast : string -> Dot_ast.file - -type clusters_hash = (string, attr list) Hashtbl.t - -(** Provide a parser for DOT file format. *) -module Parse - (B : Builder.S) - (L : sig - val node : node_id -> attr list -> B.G.V.label - (** How to build the node label out of the set of attributes *) - val edge : attr list -> B.G.E.label - (** How to build the edge label out of the set of attributes *) - end) : -sig - - (** Parses a dot file *) - val parse : string -> B.G.t - - (** Parses a dot file and returns the graph, its bounding box and - a hash table from clusters to dot attributes *) - val parse_bounding_box_and_clusters : - string -> B.G.t * string * clusters_hash - -end diff --git a/jscomp/build_tests/ocamlgraph/src/dot_ast.ml b/jscomp/build_tests/ocamlgraph/src/dot_ast.ml deleted file mode 100755 index 5d9d793aef..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/dot_ast.ml +++ /dev/null @@ -1,59 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id:$ *) - -(** AST for DOT file format. *) - -type id = - | Ident of string - | Number of string - | String of string - | Html of string - -type attr = (id * id option) list - -type compass_pt = N | Ne | E | Se | S | Sw | W | Nw - -type port = - | PortId of id * compass_pt option - | PortC of compass_pt - -type node_id = id * port option - -type subgraph = - | SubgraphId of id - | SubgraphDef of id option * stmt list - -and node = - | NodeId of node_id - | NodeSub of subgraph - -and stmt = - | Node_stmt of node_id * attr list - | Edge_stmt of node * node list * attr list - | Attr_graph of attr list - | Attr_node of attr list - | Attr_edge of attr list - | Equal of id * id - | Subgraph of subgraph - -type file = - { strict : bool; - digraph : bool; - id : id option; - stmts : stmt list } diff --git a/jscomp/build_tests/ocamlgraph/src/dot_lexer.mll b/jscomp/build_tests/ocamlgraph/src/dot_lexer.mll deleted file mode 100755 index e32802dc44..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/dot_lexer.mll +++ /dev/null @@ -1,121 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id:$ *) - -{ - open Dot_ast - open Dot_parser - - let string_buf = Buffer.create 1024 - - let keyword = - let h = Hashtbl.create 17 in - List.iter - (fun (s,k) -> Hashtbl.add h s k) - [ - "strict", STRICT; - "graph", GRAPH; - "digraph", DIGRAPH; - "subgraph", SUBGRAPH; - "node", NODE; - "edge", EDGE; - ]; - fun s -> let s = String.lowercase s in Hashtbl.find h s - -} - -let alpha = ['a'-'z' 'A'-'Z' '_'] -let digit = ['0'-'9'] -let ident = alpha (alpha | digit)* -let number = '-'? ('.'['0'-'9']+ | ['0'-'9']+('.'['0'-'9']*)? ) - -let space = [' ' '\t' '\r' '\n']+ - -rule token = parse - | space - { token lexbuf } - | ('#' | "//") [^ '\n']* '\n' - { token lexbuf } - | "/*" - { comment lexbuf; token lexbuf } - | ":" - { COLON } - | "," - { COMMA } - | ";" - { SEMICOLON } - | "=" - { EQUAL } - | "{" - { LBRA } - | "}" - { RBRA } - | "[" - { LSQ } - | "]" - { RSQ } - | "--" | "->" - { EDGEOP } - | ident as s - { try keyword s with Not_found -> ID (Ident s) } - | number as s - { ID (Number s) } - | "\"" - { Buffer.clear string_buf; - let s = string lexbuf in - ID (String s) } - | "<" - { Buffer.clear string_buf; - html lexbuf; - ID (Html (Buffer.contents string_buf)) } - | eof - { EOF } - | _ as c - { failwith ("Dot_lexer: invalid character " ^ String.make 1 c) } - -and string = parse - | "\"" - { Buffer.contents string_buf } - | "\\" "\"" - { Buffer.add_char string_buf '"'; - string lexbuf } - | _ as c - { Buffer.add_char string_buf c; - string lexbuf } - | eof - { failwith ("Dot_lexer: unterminated string literal") } - -and html = parse - | ">" - { () } - | "<" - { Buffer.add_char string_buf '<'; html lexbuf; - Buffer.add_char string_buf '>'; html lexbuf } - | _ as c - { Buffer.add_char string_buf c; - html lexbuf } - | eof - { failwith ("Dot_lexer: unterminated html literal") } - -and comment = parse - | "*/" - { () } - | _ - { comment lexbuf } - | eof - { failwith "Dot_lexer: unterminated comment" } diff --git a/jscomp/build_tests/ocamlgraph/src/dot_parser.mly b/jscomp/build_tests/ocamlgraph/src/dot_parser.mly deleted file mode 100755 index fa463d4ac1..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/dot_parser.mly +++ /dev/null @@ -1,170 +0,0 @@ -/**************************************************************************/ -/* */ -/* Ocamlgraph: a generic graph library for OCaml */ -/* Copyright (C) 2004-2010 */ -/* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles */ -/* */ -/* This software is free software; you can redistribute it and/or */ -/* modify it under the terms of the GNU Library General Public */ -/* License version 2.1, with the special exception on linking */ -/* described in file LICENSE. */ -/* */ -/* This software is distributed in the hope that it will be useful, */ -/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ -/* */ -/**************************************************************************/ - -/* $Id:$ */ - -/* DOT parser, following http://www.graphviz.org/doc/info/lang.html */ - -%{ - open Dot_ast - open Parsing - - let compass_pt = function - | Ident "n" -> N - | Ident "ne" -> Ne - | Ident "e" -> E - | Ident "se" -> Se - | Ident "s" -> S - | Ident "sw" -> Sw - | Ident "w" -> W - | Ident "nw" -> Nw - | _ -> invalid_arg "compass_pt" - -%} - -%token ID -%token COLON COMMA EQUAL SEMICOLON EDGEOP -%token STRICT GRAPH DIGRAPH LBRA RBRA LSQ RSQ NODE EDGE SUBGRAPH EOF - -%nonassoc ID -%nonassoc LBRA - -%type file -%start file -%% - -file: -| strict_opt graph_or_digraph id_opt LBRA stmt_list RBRA EOF - { { strict = $1; digraph = $2; id = $3; stmts = $5 } } -; - -strict_opt: -| /* epsilon */ { false } -| STRICT { true } -; - -graph_or_digraph: -| GRAPH { false } -| DIGRAPH { true } -; - -stmt_list: -| /* epsilon */ { [] } -| list1_stmt { $1 } -; - -list1_stmt: -| stmt semicolon_opt { [$1] } -| stmt semicolon_opt list1_stmt { $1 :: $3 } -; - -semicolon_opt: -| /* epsilon */ { () } -| SEMICOLON { () } -; - -stmt: -| node_stmt { $1 } -| edge_stmt { $1 } -| attr_stmt { $1 } -| ID EQUAL ID { Equal ($1, $3) } -| subgraph { Subgraph $1 } -; - -node_stmt: -| node_id attr_list_opt { Node_stmt ($1, $2) } -; - -edge_stmt: -| node edge_rhs attr_list_opt { Edge_stmt ($1, $2, $3) } -; - -attr_stmt: -| GRAPH attr_list { Attr_graph $2 } -| NODE attr_list { Attr_node $2 } -| EDGE attr_list { Attr_edge $2 } -; - -edge_rhs: -| EDGEOP node edge_rhs_opt { $2 :: $3 } -; - -edge_rhs_opt: -| /* epsilon */ { [] } -| EDGEOP node edge_rhs_opt { $2 :: $3 } -; - -node: -| node_id { NodeId $1 } -| subgraph { NodeSub $1 } -; - -node_id: -| ID port_opt { $1, $2 } -; - -port_opt: -| /* epsilon */ { None } -| port { Some $1 } -; - -port: -| COLON ID { try PortC (compass_pt $2) - with Invalid_argument _ -> PortId ($2, None) } -| COLON ID COLON ID - { let cp = - try compass_pt $4 with Invalid_argument _ -> raise Parse_error - in - PortId ($2, Some cp) } -; - -attr_list_opt: -| /* epsilon */ { [] } -| attr_list { $1 } -; - -attr_list: -| LSQ a_list RSQ { [$2] } -| LSQ a_list RSQ attr_list { $2 :: $4 } -; - -id_opt: -| /* epsilon */ { None } -| ID { Some $1 } -; - -a_list: -| equality comma_opt { [$1] } -| equality comma_opt a_list { $1 :: $3 } -; - -equality: -| ID { $1, None } -| ID EQUAL ID { $1, Some $3 } -; - -comma_opt: -| /* epsilon */ { () } -| COMMA { () } -; - -subgraph: -| SUBGRAPH ID { SubgraphId $2 } -| SUBGRAPH ID LBRA stmt_list RBRA { SubgraphDef (Some $2, $4) } -| SUBGRAPH LBRA stmt_list RBRA { SubgraphDef (None, $3) } -| LBRA stmt_list RBRA { SubgraphDef (None, $2) } -; diff --git a/jscomp/build_tests/ocamlgraph/src/fixpoint.ml b/jscomp/build_tests/ocamlgraph/src/fixpoint.ml deleted file mode 100755 index 4aa77692d0..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/fixpoint.ml +++ /dev/null @@ -1,172 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* Copyright (c) 2010 - 2012 Technische Universitaet Muenchen - * Markus W. Weissmann - * All rights reserved. *) - -(* maximum fixpoint point calculation with the work list algorithm; - to implement a concrete analysis, implement a module that satisfies - the Rules signature. Such a module in the Analysis functor gives a - complete analysis/optimization module that works on a CFG. -*) - -type direction = Forward | Backward - -module type Analysis = sig - type data - type edge - type vertex - type g - - val direction : direction - val join : data -> data -> data - val equal : data -> data -> bool - val analyze : edge -> data -> data -end - -(** Minimal graph signature for work list algorithm *) -module type G = sig - type t - module V : Sig.COMPARABLE - module E : sig - type t - val dst : t -> V.t - val src : t -> V.t - end - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val succ_e : t -> V.t -> E.t list - val pred_e : t -> V.t -> E.t list - val succ : t -> V.t -> V.t list - val pred : t -> V.t -> V.t list -end - - -module Make - (G : G) - (A : Analysis with type g = G.t with type edge = G.E.t - with type vertex = G.V.t) = -struct - - module M = Map.Make(G.V) - module N = Set.Make(G.V) - - let analyze initial g = - let (nodes, data) = - G.fold_vertex - (fun vertex (n, m) -> - (N.add vertex n, M.add vertex (initial vertex) m)) - g (N.empty, M.empty) - in - (* generate an associative map to quickly find the incoming - * (outgoing) edges of a node during the anaysis store a pair of - * a partially applied analysis function and the corresponding - * 'partner' node *) - let nodemap : ((A.data -> A.data) * G.V.t) list M.t = - let add = match A.direction with - | Forward -> - (fun n -> - let preds = G.pred_e g n in - List.map - (fun edge -> (A.analyze edge, G.E.src edge)) - preds) - | Backward -> - (fun n -> - let succs = G.succ_e g n in - List.map - (fun edge -> (A.analyze edge, G.E.dst edge)) - succs) - in - G.fold_vertex (fun vertex m -> M.add vertex (add vertex) m) g M.empty - in - - let rec worklist (data : A.data M.t) (wl : N.t) = - (* 'meet' an arbitrary number of data-sets *) - let meet ~default = function - | [] -> default - | [x] -> x - | x::xs -> List.fold_left (fun a b -> A.join a b) x xs - in - - (* analyze one node, creating a new data-set and node-worklist - as necessary *) - let analyze_node analysis n d wl = - match analysis d n with - | None -> (d, wl) - | Some d' -> (d', N.add n wl) - in - - (* get some node from the node-set -- this will eventually trigger - an exception *) - match (try Some (N.choose wl) with Not_found -> None) with - | None -> data - | Some n -> - (* remove the chosen node from the set *) - let wl = N.remove n wl in - - let (f, ns) = match A.direction with - (* analyze all INCOMING edges of all SUCCESSOR nodes of the - node to be processed *) - | Forward -> - (* process one node: analyze all it's incoming edges - and merge the resulting data; - if the result is different to the previously stored data - for this node, return a new tuple, else None *) - let new_node_data (data : A.data M.t) node = - let edges = M.find node nodemap in - let analysis = - List.map - (fun (f, src) -> f (M.find src data)) edges - in - let node_data = M.find node data in - let node_data' = meet ~default:node_data analysis in - if A.equal node_data node_data' then None - else Some (M.add node node_data' data) - in - - (new_node_data, G.succ g n) - (* analyze all OUTGOING edges of all PREDECESSOR nodes - of the node to be processed *) - | Backward -> - let new_node_data (data : A.data M.t) node = - let edges = M.find node nodemap in - let analysis = - List.map - (fun (f, dst) -> f (M.find dst data)) edges - in - let node_data = M.find node data in - let node_data' = meet ~default:node_data analysis in - if A.equal node_data node_data' then None - else Some (M.add node node_data' data) - in - - (new_node_data, G.pred g n) - in - (* analyze all successor nodes by analyzing all of their - predecessor edges *) - let (data, wl) = - List.fold_left (fun (d, wl) n -> analyze_node f n d wl) - (data, wl) ns - in - - (* do a recursive call: the recursion will eventually end with a - * Not_found exception when no nodes are left in the work list *) - worklist data wl - in - let data = worklist data nodes in - (fun n -> M.find n data) -end diff --git a/jscomp/build_tests/ocamlgraph/src/fixpoint.mli b/jscomp/build_tests/ocamlgraph/src/fixpoint.mli deleted file mode 100755 index 8f764a487e..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/fixpoint.mli +++ /dev/null @@ -1,126 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* Copyright (c) 2010 - 2012 Technische Universitaet Muenchen - * Markus W. Weissmann - * All rights reserved. *) - -(** Fixpoint computation implemented using the work list algorithm. - This module makes writing data-flow analysis easy. - - One of the simplest fixpoint analysis is that of reachability. - Given a directed graph module [G], its analysis can be implemented - as follows: - - {[ - module Reachability = Graph.Fixpoint.Make(G) - (struct - type vertex = G.E.vertex - type edge = G.E.t - type g = G.t - type data = bool - let direction = Graph.Fixpoint.Forward - let equal = (=) - let join = (||) - let analyze _ = (fun x -> x) - end) - ]} - - The types for [vertex], [edge] and [g] are those of the graph to be - analyzed. The [data] type is [bool]: It will tell if the - vertex is reachable from the start vertex. The [equal] operation - for [bool] is simply structural equality; the [join] operation is - logical or. The [analyze] function is very simple, too: If the - predecessor vertex is reachable, so is the successor vertex of the - edge. - - To use the analysis, an instance of a graph [g] is required. For - this analysis a predicate [is_root_vertex : G.E.vertex -> bool] is - required to initialize the reachability of the root vertex to - [true] and of all other vertices to [false]. - - {[ - let g = ... - let result = Reachability.analyze is_root_vertex g - ]} - - The [result] is a map of type [G.E.vertex -> bool] that can be - queried for every vertex to tell if the vertex is reachable from - the root vertex. - - @author Markus W. Weissmann - @see "Introduction to Lattices and Order" B. A. Davey and H. A. Priestley, Cambridge University Press, 2002 - @see "Fixed Point Theory" Andrzej Granas and James Dugundji, Springer, 2003 - @see "Principles of Program Analysis" Flemming Nielson, Hanne Riis Nielson and Chris Hankin, Springer, 2005 - @see "Ubersetzerbau 3: Analyse und Transformation" Reinhard Wilhelm and Helmut Seidl, Springer, 2010 -*) - -(** Minimal graph signature for work list algorithm *) -module type G = sig - type t - module V : Sig.COMPARABLE - module E : sig - type t - val dst : t -> V.t - val src : t -> V.t - end - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val succ_e : t -> V.t -> E.t list - val pred_e : t -> V.t -> E.t list - val succ : t -> V.t -> V.t list - val pred : t -> V.t -> V.t list -end - -type direction = Forward | Backward -(** Type of an analysis *) - -module type Analysis = sig - type data - (** information stored at each vertex *) - type edge - (** type of edges of the underlying graph *) - type vertex - (** type of vertices of the underlying graph *) - type g - (** type of the underlying graph *) - val direction : direction - (** the direction of the analysis *) - val join : data -> data -> data - (** operation how to join data when paths meet *) - val equal : data -> data -> bool - (** predicate to determine the fixpoint *) - val analyze : edge -> data -> data - (** the actual analysis of one edge; provided the edge and the incoming - data, it needs to compute the outgoing data *) -end - -module Make - (G : G) - (A : Analysis with type g = G.t with type edge = G.E.t - with type vertex = G.V.t) : -sig - val analyze : (G.V.t -> A.data) -> A.g -> (G.V.t -> A.data) - (** [analyze f g] computes the fixpoint on the given graph using the - work list algorithm. Beware that a misconstructed Analysis will - not terminate! [f] is used to create the initial analysis - data. The function returned is a map to see what data was computed - for which node. - - Beware of applying function [analyze] partially, to arguments - [f] and [g] only. The result is a function that is to be used to query - the result of the analysis. *) -end diff --git a/jscomp/build_tests/ocamlgraph/src/flow.ml b/jscomp/build_tests/ocamlgraph/src/flow.ml deleted file mode 100755 index c68408a05d..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/flow.ml +++ /dev/null @@ -1,328 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -module type FLOW = sig - type t - type label - val max_capacity : label -> t - val min_capacity : label -> t - val flow : label -> t - val add : t -> t -> t - val sub : t -> t -> t - val zero : t - val compare : t -> t -> int -end - -module type G_GOLDBERG = sig - type t - module V : Sig.COMPARABLE - module E : Sig.EDGE with type vertex = V.t - val nb_vertex : t -> int - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_edges_e : (E.t -> unit) -> t -> unit - val fold_succ_e : (E.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a - val fold_pred_e : (E.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a -end - -module Goldberg(G: G_GOLDBERG)(F: FLOW with type label = G.E.label) = -struct - - module V = Hashtbl.Make(G.V) - module E = Hashtbl.Make(Util.HTProduct(G.V)(G.V)) - module Se = Set.Make(G.E) - module Sv = Set.Make(G.V) - - let excedents = V.create 97 - let hauteur = V.create 97 - let flot = E.create 97 - - let fold_booleen f = List.fold_left (fun r x->(f x) || r) false - - let capacite_restante _ e = - F.sub (F.max_capacity (G.E.label e)) (E.find flot (G.E.src e, G.E.dst e)) - - let reste_excedent x = F.compare (V.find excedents x) F.zero > 0 - - let flux_et_reflux g x = - let s = - G.fold_succ_e - (fun e s-> - if F.compare - (capacite_restante g e) (F.min_capacity (G.E.label e)) - > 0 - then e::s else s) - g x [] - in - G.fold_pred_e - (fun e s -> - if F.compare - (E.find flot (G.E.src e, G.E.dst e)) (F.min_capacity (G.E.label e)) - > 0 - then (G.E.create (G.E.dst e) (G.E.label e) (G.E.src e))::s else s) - g x s - - let pousser g e l = - let x, y = G.E.src e, G.E.dst e in - let ex = V.find excedents x in - let cxy = capacite_restante g e in - if F.compare ex F.zero > 0 && - F.compare cxy (F.min_capacity (G.E.label e)) > 0 && - V.find hauteur x = (V.find hauteur y + 1) - then - let d = if F.compare ex cxy < 0 then ex else cxy in - let fxy = E.find flot (x,y) in - let ex = V.find excedents x in - let ey = V.find excedents y in - E.replace flot (x,y) (F.add fxy d); - E.replace flot (y,x) (F.sub F.zero (F.add fxy d)); - V.replace excedents x (F.sub ex d); - V.replace excedents y (F.add ey d); - if reste_excedent x then l:=Sv.add x !l; - if reste_excedent y then l:=Sv.add y !l; - true - else - (if F.compare ex F.zero > 0 then l:=Sv.add x !l; - false) - - let elever g p x = - let u = flux_et_reflux g x in - reste_excedent x - && not (G.V.equal x p) - && - List.for_all - (fun e -> (V.find hauteur (G.E.src e)) <= (V.find hauteur (G.E.dst e))) u - && - (let min = - List.fold_left (fun m e -> min (V.find hauteur (G.E.dst e)) m) max_int u - in - V.replace hauteur x (1+min); - true) - - let init_preflot g s _ = - G.iter_vertex (fun x -> V.add excedents x F.zero; V.add hauteur x 0) g; - G.iter_edges_e - (fun e -> - let x,y = G.E.src e, G.E.dst e in - E.add flot (x,y) (F.flow (G.E.label e)); - E.add flot (y,x) (F.sub F.zero (F.flow (G.E.label e)))) - g; - V.add hauteur s (G.nb_vertex g); - G.fold_succ_e - (fun e l -> - let y = G.E.dst e in - let c = F.max_capacity (G.E.label e) in - E.add flot (s,y) c; - E.add flot (y,s) (F.sub F.zero c); - V.add excedents y c; - y::l) - g s [] - - let maxflow g s p = - let push_and_pull l x = - G.fold_succ_e (fun e r->pousser g e l || r) g x false - || G.fold_pred_e (fun e r->pousser g e l || r) g x false - in - let todo = ref (init_preflot g s p) in - while - (fold_booleen (elever g p) !todo) || - (let l = ref Sv.empty in - let r = fold_booleen (push_and_pull l) !todo in - todo:=Sv.elements !l; r) - do () done; - let flot_max = - G.fold_pred_e (fun e f -> F.add (E.find flot (G.E.src e,p)) f) g p F.zero - in - let flot_init = - G.fold_pred_e (fun e f -> F.add (F.flow (G.E.label e)) f) g p F.zero - in - let f e = - let x,y = G.E.src e, G.E.dst e in - try E.find flot (x,y) - with Not_found -> F.flow (G.E.label e) - in - f, F.sub flot_max flot_init -end - -(*****************************************************************************) - -module type G_FORD_FULKERSON = sig - type t - module V : Sig.HASHABLE - module E : sig - type t - type label - val src : t -> V.t - val dst : t -> V.t - val label : t -> label - end - val iter_succ_e : (E.t -> unit) -> t -> V.t -> unit - val iter_pred_e : (E.t -> unit) -> t -> V.t -> unit -end - -module Ford_Fulkerson - (G: G_FORD_FULKERSON) - (F: FLOW with type label = G.E.label) = -struct - - (* redefinition of F *) - module F = struct - include F - - type u = - | Flow of F.t - | Infinity - - let min x y = match x, y with - | Flow _, Infinity -> x - | Flow fx, Flow fy when F.compare fx fy < 0 -> x - | (Infinity, _) | (Flow _, Flow _) -> y - end - - module Mark = struct - module H = Hashtbl.Make(G.V) - type mark = Plus | Minus - - let marked = H.create 97 - let unvisited = Queue.create () - - let clear () = H.clear marked - - let mem = H.mem marked - - let set s e tag = - assert (not (mem s)); - H.add marked s (e, tag); - Queue.add s unvisited - - let get s : G.E.t * mark = - let e, tag = H.find marked s in - (match e with None -> assert false | Some e -> e), tag - - let next () = Queue.pop unvisited - end - - module Result = struct - module H = - Hashtbl.Make - (struct - open G - type t = E.t - module U = Util.HTProduct(V)(V) - let equal e1 e2 = U.equal (E.src e1, E.dst e1) (E.src e2, E.dst e2) - let hash e = U.hash (E.src e, E.dst e) - end) - - let create () = H.create 97 - - let find = H.find - - let flow r e = - try - find r e - with Not_found -> - let f = F.flow (G.E.label e) in - H.add r e f; - f - - let change op r e f = - try - H.replace r e (op (find r e) f); - with Not_found -> - assert false - - let grow = change F.add - let reduce = change F.sub - end - - let is_full r e = - F.compare (F.max_capacity (G.E.label e)) (Result.flow r e) = 0 - - let is_empty r e = - F.compare (F.min_capacity (G.E.label e)) (Result.flow r e) = 0 - - let set_flow r s t a = - let rec loop t = - if not (G.V.equal s t) then - let e, tag = Mark.get t in - match tag with - | Mark.Plus -> Result.grow r e a; loop (G.E.src e) - | Mark.Minus -> Result.reduce r e a; loop (G.E.dst e) - in - loop t - - let grow_flow r s t a = - let rec loop u b = - if G.V.equal s u then begin - match b with - | F.Infinity -> (* source = destination *) - assert (G.V.equal s t); - a - | F.Flow f -> - set_flow r s t f; - F.add a f - end else - let e, tag = Mark.get u in - let l = G.E.label e in - match tag with - | Mark.Plus -> - loop - (G.E.src e) - (F.min b (F.Flow (F.sub (F.max_capacity l) (Result.flow r e)))) - | Mark.Minus -> - loop - (G.E.dst e) - (F.min b (F.Flow (F.sub (Result.flow r e) (F.min_capacity l)))) - in - loop t F.Infinity - - let maxflow g s t = - let r = Result.create () in - let succ s = - G.iter_succ_e - (fun e -> - assert (G.V.equal s (G.E.src e)); - let t = G.E.dst e in - if not (Mark.mem t || is_full r e) then - Mark.set t (Some e) Mark.Plus) - g s - in - let pred s = - G.iter_pred_e - (fun e -> - assert (G.V.equal s (G.E.dst e)); - let t = G.E.src e in - if not (Mark.mem t || is_empty r e) then - Mark.set t (Some e) Mark.Minus) - g s - in - let internal_loop a = - try - while true do let s = Mark.next () in succ s; pred s done; - assert false - with Queue.Empty -> - if Mark.mem t then grow_flow r s t a else a - in - let rec external_loop a = - Mark.clear (); - Mark.set s None Mark.Plus; - let a' = internal_loop a in - if a = a' then a else external_loop a' - in - let a = external_loop F.zero in - (fun e -> try Result.find r e with Not_found -> F.flow (G.E.label e)), a - -end diff --git a/jscomp/build_tests/ocamlgraph/src/flow.mli b/jscomp/build_tests/ocamlgraph/src/flow.mli deleted file mode 100755 index b8288be457..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/flow.mli +++ /dev/null @@ -1,112 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Algorithms on flows - - The following flow algorithms only apply to networks, that are - directed graphs together with a source (a 0 in-degree vertex) and a - terminal (a 0 out-degree vertex). *) - -(** {1 Maximum flow algorithms} *) - -(** Signature for edges' flow. *) -module type FLOW = sig - - type t - (** Type of edges. *) - - type label - (** Type of labels on edges. *) - - (** Maximum and minimum capacities for a label on an edge. *) - - val max_capacity : label -> t - val min_capacity : label -> t - - (** Current flow for a label on an edge. *) - - val flow : label -> t - - (** [+] and [-] on flows. *) - - val add : t -> t -> t - val sub : t -> t -> t - - (** Neutral element for [add] and [sub]. *) - - val zero : t - - (** A total ordering over flows. *) - - val compare : t -> t -> int - -end - -(** {2 Goldberg maximal flow algorithm} *) - -(** Minimal graph signature for Goldberg. - Sub-signature of {!Sig.G}. *) -module type G_GOLDBERG = sig - type t - module V : Sig.COMPARABLE - module E : Sig.EDGE with type vertex = V.t - val nb_vertex : t -> int - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_edges_e : (E.t -> unit) -> t -> unit - val fold_succ_e : (E.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a - val fold_pred_e : (E.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a -end - -module Goldberg(G: G_GOLDBERG)(F: FLOW with type label = G.E.label) : sig - - val maxflow : G.t -> G.V.t -> G.V.t -> (G.E.t -> F.t) * F.t - (** [maxflow g v1 v2] searchs the maximal flow from source [v1] to - terminal [v2] using the Goldberg algorithm. It returns the new - flows on each edges and the growth of the flow. *) - -end - -(** {2 Ford-Fulkerson maximal flow algorithm} *) - -(** Minimal digraph signature for Ford-Fulkerson. - Sub-signature of {!Sig.G}. *) -module type G_FORD_FULKERSON = sig - type t - module V : Sig.HASHABLE - module E : sig - type t - type label - val src : t -> V.t - val dst : t -> V.t - val label : t -> label - end - val iter_succ_e : (E.t -> unit) -> t -> V.t -> unit - val iter_pred_e : (E.t -> unit) -> t -> V.t -> unit -end - -module Ford_Fulkerson - (G: G_FORD_FULKERSON) - (F: FLOW with type label = G.E.label) : -sig - - val maxflow : G.t -> G.V.t -> G.V.t -> (G.E.t -> F.t) * F.t - (** [maxflow g v1 v2] searchs the maximal flow from source [v1] - to terminal [v2] using the Ford-Fulkerson algorithm. It - returns the new flows on each edges and the growth of the - flow. *) - -end diff --git a/jscomp/build_tests/ocamlgraph/src/gmap.ml b/jscomp/build_tests/ocamlgraph/src/gmap.ml deleted file mode 100755 index a9967414db..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/gmap.ml +++ /dev/null @@ -1,105 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** {2 Mapping of vertices} *) - -module type V_SRC = sig - type t - module V : Sig.HASHABLE - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a -end - -module type V_DST = sig - type t - type vertex - val empty : unit -> t - val add_vertex : t -> vertex -> t -end - -module Vertex(G_Src : V_SRC)(G_Dst : V_DST ) = struct - - module H = Hashtbl.Make(G_Src.V) - let vertices = H.create 97 - - let convert_vertex f x = - try - H.find vertices x - with Not_found -> - let x' = f x in - H.add vertices x x'; - x' - - let map f g = - H.clear vertices; - G_Src.fold_vertex - (fun x g -> G_Dst.add_vertex g (convert_vertex f x)) - g (G_Dst.empty ()) - - let filter_map f g = - G_Src.fold_vertex - (fun x g -> match f x with - | Some e -> G_Dst.add_vertex g e - | None -> g - ) g (G_Dst.empty ()) -end - -(** {2 Mapping of edges} *) - -module type E_SRC = sig - type t - module E : Sig.ORDERED_TYPE - val fold_edges_e : (E.t -> 'a -> 'a) -> t -> 'a -> 'a -end - -module type E_DST = sig - type t - type edge - val empty : unit -> t - val add_edge_e : t -> edge -> t -end - -module Edge(G_Src: E_SRC)(G_Dst: E_DST) = struct - module M = Map.Make(G_Src.E) - let edges = ref M.empty - - let convert_edge f x = - try - M.find x !edges - with Not_found -> - let x' = f x in - edges := M.add x x' !edges; - x' - - let map f g = - edges := M.empty; - G_Src.fold_edges_e - (fun x g -> G_Dst.add_edge_e g (convert_edge f x)) - g (G_Dst.empty ()) - - let filter_map f g = - G_Src.fold_edges_e - (fun x g -> match f x with - | Some e -> G_Dst.add_edge_e g e - | None -> g - ) g (G_Dst.empty ()) -end - -(* - Vertex - (struct include G_Src module V = E let fold_vertex = fold_edges_e end) - (struct include G_Dst type vertex = edge let add_vertex = add_edge_e end) -*) diff --git a/jscomp/build_tests/ocamlgraph/src/gmap.mli b/jscomp/build_tests/ocamlgraph/src/gmap.mli deleted file mode 100755 index 70967fba32..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/gmap.mli +++ /dev/null @@ -1,80 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Graph mapping. Map a graph to another one. *) - -(** {2 Mapping of vertices} *) - -(** Signature for the source graph. *) -module type V_SRC = sig - type t - module V : Sig.HASHABLE - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a -end - -(** Signature for the destination graph. *) -module type V_DST = sig - type t - type vertex - val empty : unit -> t - val add_vertex : t -> vertex -> t -end - -(** Provide a mapping function from a mapping of vertices. *) -module Vertex(G_Src : V_SRC)(G_Dst : V_DST) : sig - - val map : (G_Src.V.t -> G_Dst.vertex) -> G_Src.t -> G_Dst.t - (** [map f g] applies [f] to each vertex of [g] and so builds a new graph - based on [g] *) - - val filter_map : (G_Src.V.t -> G_Dst.vertex option) -> G_Src.t -> G_Dst.t - (** [filter_map f g] applies [f] to each vertex of [g] and so - builds a new graph based on [g]; if [None] is returned by [f] - the vertex is omitted in the new graph. *) - -end - -(** {2 Mapping of edges} *) - -(** Signature for the source graph. *) -module type E_SRC = sig - type t - module E : Sig.ORDERED_TYPE - val fold_edges_e : (E.t -> 'a -> 'a) -> t -> 'a -> 'a -end - -(** Signature for the destination graph. *) -module type E_DST = sig - type t - type edge - val empty : unit -> t - val add_edge_e : t -> edge -> t -end - -(** Provide a mapping function from a mapping of edges. *) -module Edge(G_Src: E_SRC)(G_Dst: E_DST) : sig - - val map : (G_Src.E.t -> G_Dst.edge) -> G_Src.t -> G_Dst.t - (** [map f g] applies [f] to each edge of [g] and so builds a new graph - based on [g] *) - - val filter_map : (G_Src.E.t -> G_Dst.edge option) -> G_Src.t -> G_Dst.t - (** [filter_map f g] applies [f] to each edge of [g] and so builds - a new graph based on [g]; if [None] is returned by [f] the - edge is omitted in the new graph. *) - -end diff --git a/jscomp/build_tests/ocamlgraph/src/gml.mli b/jscomp/build_tests/ocamlgraph/src/gml.mli deleted file mode 100755 index 3da64bee12..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/gml.mli +++ /dev/null @@ -1,82 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: gml.mli,v 1.3 2005-07-06 13:20:31 conchon Exp $ *) - -(** Parser and pretty-printer for GML file format. *) - -type value = - | Int of int - | Float of float - | String of string - | List of value_list - -and value_list = (string * value) list - -(** {2 Parser} *) - -(** Provide a parser for GML file format. *) -module Parse - (B : Builder.S) - (L : sig - val node : value_list -> B.G.V.label - (** How to build the node label out of the set of GML attributes. - For example {v node [ id 12 label "foo" ] v} will call this - function with [["id", Int 12; "label", String "foo"]] *) - val edge : value_list -> B.G.E.label - (** How to build the edge label out of the set of GML attributes *) - end) : -sig - val parse : string -> B.G.t -end - -(** {2 Pretty-printer} *) - -(** Signature for graph required by {!Print}. - Sub-signature of {!Sig.G}. *) -module type G = sig - module V : sig - type t - val hash : t -> int - val equal : t -> t -> bool - type label - val label : t -> label - end - module E : sig - type t - type label - val src : t -> V.t - val dst : t -> V.t - val label : t -> label - end - type t - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_edges_e : (E.t -> unit) -> t -> unit -end - -(** Provide a pretty-printer for GML file format. *) -module Print - (G: G) - (L: sig - val node : G.V.label -> value_list - val edge : G.E.label -> value_list - end) : -sig - val print : Format.formatter -> G.t -> unit -end - - diff --git a/jscomp/build_tests/ocamlgraph/src/gml.mll b/jscomp/build_tests/ocamlgraph/src/gml.mll deleted file mode 100755 index 9bbeaa742e..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/gml.mll +++ /dev/null @@ -1,204 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: gml.mll,v 1.3 2005-07-06 13:20:31 conchon Exp $ *) - -{ - - open Lexing - - type value = - | Int of int - | Float of float - | String of string - | List of value_list - - and value_list = (string * value) list - -} - -let space = [' ' '\t' '\r' '\n']+ -let ident = ['a'-'z' 'A'-'Z'] ['a'-'z' 'A'-'Z' '0'-'9']* -let digit = ['0'-'9'] -let sign = '-' | '+' -let integer = sign? digit+ -let mantissa = 'E' sign? digit+ -let real = sign? digit* '.' digit* mantissa? -let in_string = [^ '"']* - -rule file = parse - | space - { file lexbuf } - | (ident as key) space - { let v = value lexbuf in - (key, v) :: file lexbuf } - | eof - { [] } - | _ as c - { failwith ("Gml: invalid character " ^ String.make 1 c) } - -and value_list = parse - | space - { value_list lexbuf } - | (ident as key) space - { let v = value lexbuf in - (key, v) :: value_list lexbuf } - | ']' - { [] } - | _ as c - { failwith ("Gml: invalid character " ^ String.make 1 c) } - -and value = parse - | integer as i - { Int (int_of_string i) } - | real as r - { Float (float_of_string r) } - | '"' (in_string as s) '"' - { String s } - | '[' - { let l = value_list lexbuf in List l } - | _ as c - { failwith ("Gml: invalid character " ^ String.make 1 c) } - -{ - - let parse f = - let c = open_in f in - let lb = from_channel c in - let v = file lb in - close_in c; - v - - module Parse - (B : Builder.S) - (L : sig val node : value_list -> B.G.V.label - val edge : value_list -> B.G.E.label end) = - struct - - let create_graph l = - let nodes = Hashtbl.create 97 in - let g = B.empty () in - (* 1st pass: create the nodes *) - let g = - List.fold_left - (fun g v -> match v with - | "node", List l -> - let n = B.G.V.create (L.node l) in - begin - try - let id = List.assoc "id" l in Hashtbl.add nodes id n - with Not_found -> - () - end; - B.add_vertex g n - | _ -> - g) - g l - in - (* 2nd pass: add the edges *) - List.fold_left - (fun g v -> match v with - | "edge", List l -> - begin try - let source = List.assoc "source" l in - let target = List.assoc "target" l in - let nsource = Hashtbl.find nodes source in - let ntarget = Hashtbl.find nodes target in - let e = B.G.E.create nsource (L.edge l) ntarget in - B.add_edge_e g e - with Not_found -> - g - end - | _ -> - g) - g l - - let parse f = - match parse f with - | ["graph", List l] -> create_graph l - | _ -> invalid_arg "Gml.Parse.parse: not a graph file" - - end - - module type G = sig - module V : sig - type t - val hash : t -> int - val equal : t -> t -> bool - type label - val label : t -> label - end - module E : sig - type t - type label - val src : t -> V.t - val dst : t -> V.t - val label : t -> label - end - type t - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_edges_e : (E.t -> unit) -> t -> unit - end - - module Print - (G : G) - (L : sig - val node : G.V.label -> value_list - val edge : G.E.label -> value_list - end) = - struct - - open Format - - module H = Hashtbl.Make(G.V) - - let print fmt g = - let nodes = H.create 97 in - let cpt = ref 0 in - let id n = - try H.find nodes n - with Not_found -> incr cpt; let id = !cpt in H.add nodes n id; id - in - fprintf fmt "@[graph [@\n"; - let rec value fmt = function - | Int n -> fprintf fmt "%d" n - | Float f -> fprintf fmt "%f" f - | String s -> fprintf fmt "\"%s\"" s - | List l -> fprintf fmt "[@\n @[%a@]@\n]" value_list l - and value_list fmt = function - | [] -> () - | [s,v] -> fprintf fmt "%s %a" s value v - | (s,v) :: l -> fprintf fmt "%s %a@\n" s value v; value_list fmt l - in - G.iter_vertex - (fun v -> - fprintf fmt " @[node [@\n id %d@\n @[%a@]@\n]@]@\n" - (id v) value_list (L.node (G.V.label v))) - g; - G.iter_edges_e - (fun e -> - fprintf fmt - " @[edge [@\n source %d@\n target %d@\n @[%a@]@\n]@]@\n" - (id (G.E.src e)) (id (G.E.dst e)) - value_list (L.edge (G.E.label e))) - g; - fprintf fmt "]@\n" - - end - -} - diff --git a/jscomp/build_tests/ocamlgraph/src/graphml.ml b/jscomp/build_tests/ocamlgraph/src/graphml.ml deleted file mode 100755 index d4a9d6d8df..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/graphml.ml +++ /dev/null @@ -1,109 +0,0 @@ -(******************************************************************************) -(* *) -(* Copyright (C) 2012 Pietro Abate *) -(* *) -(* This library is free software: you can redistribute it and/or modify *) -(* it under the terms of the GNU Lesser General Public License as *) -(* published by the Free Software Foundation, either version 3 of the *) -(* License, or (at your option) any later version. A special linking *) -(* exception to the GNU Lesser General Public License applies to this *) -(* library, see the COPYING file for more information. *) -(* *) -(******************************************************************************) - -module type G = sig - type t - type vertex - module E : sig - type t - val src: t -> vertex - val dst : t -> vertex - end - val is_directed : bool - val iter_vertex : (vertex -> unit) -> t -> unit - val iter_edges_e : (E.t -> unit) -> t -> unit -end - -module Print - (G: G) - (L : sig - val vertex_properties : (string * string * string option) list - val edge_properties : (string * string * string option) list - val map_vertex : G.vertex -> (string * string) list - val map_edge : G.E.t -> (string * string) list - val vertex_uid : G.vertex -> int - val edge_uid : G.E.t -> int - end) - -= struct - - let header = - " \ - " - ;; - - let data_pp fmt (key,value) = - Format.fprintf fmt "%s" key value - - let pp_type fmt t prop typ default = - Format.fprintf fmt "" prop t prop typ; - match default with - |None -> Format.fprintf fmt "\n" - |Some s -> begin - Format.fprintf fmt "\n %s\n" s; - Format.fprintf fmt "\n" - end - - let print fmt graph = - - Format.fprintf fmt "%s\n" header; - - (* node attributed declaration *) - List.iter - (fun (prop,typ,default) -> pp_type fmt "node" prop typ default) - L.vertex_properties; - - (* edge attributed declaration *) - List.iter - (fun (prop,typ,default) -> pp_type fmt "edge" prop typ default) - L.edge_properties ; - - let directed = if G.is_directed then "edgedefault=\"directed\"" else "" in - Format.fprintf fmt "\n" directed; - - (* vertex printer *) - G.iter_vertex - (fun vertex -> - let id = L.vertex_uid vertex in - let l = L.map_vertex vertex in - Format.fprintf fmt " \n" id; - List.iter (Format.fprintf fmt " %a\n" data_pp) l; - Format.fprintf fmt " \n") - graph ; - - (* edge printer *) - G.iter_edges_e - (fun edge -> - let n1 = L.vertex_uid (G.E.src edge) in - let n2 = L.vertex_uid (G.E.dst edge) in - let eid = L.edge_uid edge in - let l = L.map_edge edge in - Format.fprintf fmt - " \n" eid n1 n2; - List.iter (Format.fprintf fmt " %a\n" data_pp) l; - Format.fprintf fmt " \n") - graph ; - - Format.fprintf fmt "\n"; - Format.fprintf fmt "\n" - -end - -(* -Local Variables: -compile-command: "make -C .." -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/src/graphml.mli b/jscomp/build_tests/ocamlgraph/src/graphml.mli deleted file mode 100755 index e725260135..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/graphml.mli +++ /dev/null @@ -1,68 +0,0 @@ -(******************************************************************************) -(* *) -(* Copyright (C) 2012 Pietro Abate *) -(* *) -(* This library is free software: you can redistribute it and/or modify *) -(* it under the terms of the GNU Lesser General Public License as *) -(* published by the Free Software Foundation, either version 3 of the *) -(* License, or (at your option) any later version. A special linking *) -(* exception to the GNU Lesser General Public License applies to this *) -(* library, see the COPYING file for more information. *) -(* *) -(******************************************************************************) - -(** Generic GraphMl Printer *) - -(** Graph information required by Graphml *) -module type G = sig - - type t - type vertex - module E : sig - type t - val src: t -> vertex - val dst : t -> vertex - end - val is_directed : bool - val iter_vertex : (vertex -> unit) -> t -> unit - val iter_edges_e : (E.t -> unit) -> t -> unit - -end - -(** Graphml Printer given a graph and required info *) -module Print - (G: G) - (L : sig - val vertex_properties : (string * string * string option) list - (** List of the type of the vertex proprierties. - The format is (id,type,default). *) - - val edge_properties : (string * string * string option) list - (** List of the type of the edge proprierties. *) - - val map_vertex : G.vertex -> (string * string) list - (** Associates to each vertex a key/value list where - the key is the id of a vertex attribute and the value is the value - associated to this vertex *) - - val map_edge : G.E.t -> (string * string) list - (** Associates to each edge a key/value list *) - - val vertex_uid : G.vertex -> int - (** @return a unique integer identifier for the vertex *) - - val edge_uid : G.E.t -> int - (** @return a unique integer identifier for the edge *) - end) : -sig - val print : Format.formatter -> G.t -> unit - (** [print fmt graph] print the GraphMl representation of the given graph - on the given formatter *) -end - - -(* -Local Variables: -compile-command: "make -C .." -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/src/graphviz.ml b/jscomp/build_tests/ocamlgraph/src/graphviz.ml deleted file mode 100755 index 5a5bd54192..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/graphviz.ml +++ /dev/null @@ -1,953 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Interface with {i GraphViz} - - This module provides a basic interface with dot and neato, - two programs of the GraphViz toolbox. - These tools are available at the following URLs: - http://www.graphviz.org/ - http://www.research.att.com/sw/tools/graphviz/ *) - -open Format -open Pervasives (* for compatibility with ocaml 3.12.0+dev17 - (incoming ocaml3.12) *) - -(***************************************************************************) -(** {2 Common stuff} *) - -(** Because the neato and dot engines present a lot of common points - - in particular in the graph description language, large parts of - the code is shared. First, the [!CommonAttributes] module defines - attributes of graphs, nodes and edges that are understood by the - two engines. Second, given a module (of type [!ENGINE]) - describing an engine the [!MakeEngine] functor provides suitable - interface function for it. *) - -(*-------------------------------------------------------------------------*) -(** {3 Common attributes} *) - -type color = int - -type color_with_transparency = int32 - -let color_to_color_with_transparency color = - Int32.add (Int32.shift_left (Int32.of_int color) 8) 0xFFl - -let fprint_color ppf color = - fprintf ppf "\"#%06X\"" color - -let fprint_color_with_transparency ppf color = - fprintf ppf "\"#%08lX\"" color - -let fprint_string ppf s = fprintf ppf "\"%s\"" s -(* let s' = String.escaped s in - if s' = s && s <> "" - then fprintf ppf "%s" s - else fprintf ppf "\"%s\"" s'*) - -let fprint_string_user ppf s = - (* let s = String.escaped s in*) - fprintf ppf "\"%s\"" s - -let fprint_htmlstring_user ppf s = fprintf ppf "<%s>" s - -let fprint_square_not_empty printer ppf = function - | [] -> () - | l -> fprintf ppf " [%a]" printer l - -type arrow_style = - [ `None | `Normal | `Inv | `Dot | `Odot | `Invdot | `Invodot ] - -let fprint_arrow_style ppf = function - `None -> fprintf ppf "none" - | `Normal -> fprintf ppf "normal" - | `Inv -> fprintf ppf "inv" - | `Dot -> fprintf ppf "dot" - | `Odot -> fprintf ppf "odot" - | `Invdot -> fprintf ppf "invdot" - | `Invodot -> fprintf ppf "invodot" - -let fprint_dir ppf = function - `TopToBottom -> fprintf ppf "TB" - | `LeftToRight -> fprintf ppf "LR" - -type symbseq = - | COMMA - | SEMI - -let fprint_symbseq ppf = function - | COMMA -> pp_print_string ppf "," - | SEMI -> pp_print_string ppf ";" - -(** The [ATTRIBUTES] module type defines the interface for the engines. *) -module type ATTRIBUTES = sig - - type graph (** Attributes of graphs. *) - - type vertex (** Attributes of vertices. *) - - type edge (** Attributes of edges. *) - - (** Attributes of (optional) boxes around vertices. *) - type subgraph = { - sg_name : string; (** Box name. *) - sg_attributes : vertex list; (** Box attributes. *) - sg_parent : string option; (** Nested subgraphs. *) - } - -end - -(** The [CommonAttributes] module defines attributes for graphs, nodes and - edges that are available in the two engines, dot and neato. *) -module CommonAttributes = struct - - (** Attributes of graphs. *) - type graph = - [ `Center of bool - (** Centers the drawing on the page. Default value is [false]. *) - | `Fontcolor of color - (** Sets the font color. Default value is [black]. *) - | `Fontname of string - (** Sets the font family name. Default value is ["Times-Roman"]. *) - | `Fontsize of int - (** Sets the type size (in points). Default value is [14]. *) - | `Label of string - (** Caption for graph drawing. *) - | `HtmlLabel of string - | `Orientation of [ `Portrait | `Landscape ] - (** Sets the page orientation. Default value is [`Portrait]. *) - | `Page of float * float - (** Sets the PostScript pagination unit, e.g [8.5, 11.0]. *) - | `Pagedir of [ `TopToBottom | `LeftToRight ] - (** Traversal order of pages. Default value is [`TopToBottom]. *) - | `Size of float * float - (** Sets the bounding box of drawing (in inches). *) - | `OrderingOut - (** Constrains order of out-edges in a subgraph according to - their file sequence *) - ] - - (** Attributes of nodes. *) - type vertex = - [ `Color of color - (** Sets the color of the border of the node. Default value is [black] - *) - | `ColorWithTransparency of color_with_transparency - (** Sets the color of the border of the vertex with a transparency - component. Default value is fully opaque [black] *) - | `Fontcolor of color - (** Sets the label font color. Default value is [black]. *) - | `Fontname of string - (** Sets the label font family name. Default value is - ["Times-Roman"]. *) - | `Fontsize of int - (** Sets the label type size (in points). Default value is [14]. *) - | `Height of float - (** Sets the minimum height. Default value is [0.5]. *) - | `Label of string - (** Sets the label printed in the node. The string may include escaped - newlines [\n], [\l], or [\r] for center, left, and right justified - lines. - Record labels may contain recursive box lists delimited by { | }. - *) - | `HtmlLabel of string - | `Orientation of float - (** Node rotation angle, in degrees. Default value is [0.0]. *) - | `Penwidth of float - (** Width of the pen (in points) used to draw the border of the node. - Default value is [1.0]. *) - | `Peripheries of int - (** Sets the number of periphery lines drawn around the polygon. *) - | `Regular of bool - (** If [true], then the polygon is made regular, i.e. symmetric about - the x and y axis, otherwise the polygon takes on the aspect - ratio of the label. Default value is [false]. *) - | `Shape of - [`Ellipse | `Box | `Circle | `Doublecircle | `Diamond - | `Oval | `Egg | `Triangle | `Invtriangle - | `Trapezium | `Invtrapezium - | `House | `Invhouse - | `Parallelogram | `Doubleoctagon | `Tripleoctagon - | `Mdiamond | `Mcircle | `Msquare - | `Star | `Underline - | `Note | `Tab | `Folder - | `Box3d | `Component | `Promoter - | `Cds - | `Terminator | `Utr | `Primersite - | `Restrictionsite - | `Fivepoverhang | `Threepoverhang | `Noverhang - | `Assembly | `Signature | `Insulator | `Ribosite | `Rnastab - | `Proteasesite | `Proteinstab | `Rpromoter | `Rarrow - | `Larrow | `Lpromoter - | `Plaintext | `Record | `Polygon of int * float] - (** Sets the shape of the node. Default value is [`Ellipse]. - [`Polygon (i, f)] draws a polygon with [n] sides and a skewing - of [f]. *) - | `Style of - [ `Rounded | `Filled | `Solid | `Dashed | `Dotted | `Bold | `Invis ] - (** Sets the layout style of the node. Several styles may be combined - simultaneously. *) - | `Width of float - (** Sets the minimum width. Default value is [0.75]. *) - ] - - (** Attributes of edges. *) - type edge = - [ `Color of color - (** Sets the edge stroke color. Default value is [black]. *) - | `ColorWithTransparency of color_with_transparency - (** Sets the color of the border of the vertex with a transparency - component. Default value is fully opaque [black] *) - | `Decorate of bool - (** If [true], draws a line connecting labels with their edges. *) - | `Dir of [ `Forward | `Back | `Both | `None ] - (** Sets arrow direction. Default value is [`Forward]. *) - | `Fontcolor of color - (** Sets the label font color. Default value is [black]. *) - | `Fontname of string - (** Sets the label font family name. Default value is - ["Times-Roman"]. *) - | `Fontsize of int - (** Sets the label type size (in points). Default value is [14]. *) - | `Label of string - (** Sets the label to be attached to the edge. The string may include - escaped newlines [\n], [\l], or [\r] for centered, left, or right - justified lines. *) - | `HtmlLabel of string - | `Labelfontcolor of color - (** Sets the font color for head and tail labels. Default value is - [black]. *) - | `Labelfontname of string - (** Sets the font family name for head and tail labels. Default - value is ["Times-Roman"]. *) - | `Labelfontsize of int - (** Sets the font size for head and tail labels (in points). - Default value is [14]. *) - | `Penwidth of float - (** Width of the pen (in points) used to draw the edge. Default value - is [1.0]. *) - | `Style of [ `Solid | `Dashed | `Dotted | `Bold | `Invis ] - (** Sets the layout style of the edge. Several styles may be combined - simultaneously. *) - ] - - (** Pretty-print. *) - - let fprint_orientation ppf = function - `Portrait -> fprintf ppf "portrait" - | `Landscape -> fprintf ppf "landscape" - - let fprint_graph ppf = function - `Center b -> fprintf ppf "center=%i" (if b then 1 else 0) - | `Fontcolor a -> fprintf ppf "fontcolor=%a" fprint_color a - | `Fontname s -> fprintf ppf "fontname=%a" fprint_string s - | `Fontsize i -> fprintf ppf "fontsize=%i" i - | `Label s -> fprintf ppf "label=%a" fprint_string_user s - | `HtmlLabel s -> fprintf ppf "label=%a" fprint_htmlstring_user s - | `Orientation a -> fprintf ppf "orientation=%a" fprint_orientation a - | `Page (x, y) -> fprintf ppf "page=\"%f,%f\"" x y - | `Pagedir a -> fprintf ppf "pagedir=%a" fprint_dir a - | `Size (x, y) -> fprintf ppf "size=\"%f,%f\"" x y - | `OrderingOut -> fprintf ppf "ordering=out" - - let fprint_shape ppf = function - | `Ellipse -> fprintf ppf "ellipse" - | `Box -> fprintf ppf "box" - | `Circle -> fprintf ppf "circle" - | `Doublecircle -> fprintf ppf "doublecircle" - | `Diamond -> fprintf ppf "diamond" - | `Plaintext -> fprintf ppf "plaintext" - | `Record -> fprintf ppf "record" - | `Egg -> fprintf ppf "egg" - | `House -> fprintf ppf "house" - | `Invhouse -> fprintf ppf "invhouse" - | `Trapezium -> fprintf ppf "trapezium" - | `Invtrapezium -> fprintf ppf "invtrapezium" - | `Triangle -> fprintf ppf "triangle" - | `Invtriangle -> fprintf ppf "invtriangle" - | `Oval -> fprintf ppf "oval" - | `Assembly -> fprintf ppf "assembly" - | `Box3d -> fprintf ppf "box3d" - | `Cds -> fprintf ppf "cds" - | `Component -> fprintf ppf "component" - | `Doubleoctagon -> fprintf ppf "doubleoctagon" - | `Fivepoverhang -> fprintf ppf "fivepoverhang" - | `Folder -> fprintf ppf "folder" - | `Insulator -> fprintf ppf "insulator" - | `Larrow -> fprintf ppf "larrow" - | `Lpromoter -> fprintf ppf "lpromoter" - | `Mcircle -> fprintf ppf "mcircle" - | `Mdiamond -> fprintf ppf "mdiamond" - | `Msquare -> fprintf ppf " msquare" - | `Note -> fprintf ppf "note" - | `Noverhang -> fprintf ppf "noverhang" - | `Parallelogram -> fprintf ppf "parallelogram" - | `Primersite -> fprintf ppf "primersite" - | `Promoter -> fprintf ppf "promoter" - | `Proteasesite -> fprintf ppf "proteasesite" - | `Proteinstab -> fprintf ppf "proteinstab" - | `Rarrow -> fprintf ppf "rarrow" - | `Restrictionsite -> fprintf ppf "restrictionsite" - | `Ribosite -> fprintf ppf "ribosite" - | `Rnastab -> fprintf ppf "rnastab" - | `Rpromoter -> fprintf ppf "rpromoter" - | `Signature -> fprintf ppf "signature" - | `Star -> fprintf ppf "star" - | `Tab -> fprintf ppf "tab" - | `Terminator -> fprintf ppf "terminator" - | `Threepoverhang -> fprintf ppf "threepoverhang" - | `Tripleoctagon -> fprintf ppf "tripleoctagon" - | `Underline -> fprintf ppf "underline" - | `Utr -> fprintf ppf "utr" - | `Polygon (i, f) -> fprintf ppf "polygon, sides=%i, skew=%f" i f - - let rec fprint_string_list ppf = function - | [] -> () - | [hd] -> fprintf ppf "%s" hd - | hd :: tl -> fprintf ppf "%s,%a" hd fprint_string_list tl - - let node_style_str = function - | `Rounded -> "rounded" - | `Filled -> "filled" - | `Solid -> "solid" - | `Dashed -> "dashed" - | `Dotted -> "dotted" - | `Bold -> "bold" - | `Invis -> "invis" - - let fprint_style_list sep ppf a = - fprintf ppf "style=\"%a\"%a@ " - fprint_string_list (List.map node_style_str a) - fprint_symbseq sep - - let fprint_vertex ppf = function - | `Color a -> fprintf ppf "color=%a" fprint_color a - | `ColorWithTransparency a -> - fprintf ppf "color=%a" fprint_color_with_transparency a - | `Fontcolor a -> fprintf ppf "fontcolor=%a" fprint_color a - | `Fontname s -> fprintf ppf "fontname=%a" fprint_string s - | `Fontsize i -> fprintf ppf "fontsize=%i" i - | `Height f -> fprintf ppf "height=%f" f - | `Label s -> fprintf ppf "label=%a" fprint_string_user s - | `HtmlLabel s -> fprintf ppf "label=%a" fprint_htmlstring_user s - | `Orientation f -> fprintf ppf "orientation=%f" f - | `Penwidth f -> fprintf ppf "penwidth=%f" f - | `Peripheries i -> fprintf ppf "peripheries=%i" i - | `Regular b -> fprintf ppf "regular=%b" b - | `Shape a -> fprintf ppf "shape=%a" fprint_shape a - | `Style _ -> assert false - | `Width f -> fprintf ppf "width=%f" f - - let fprint_arrow_direction ppf = function - `Forward -> fprintf ppf "forward" - | `Back -> fprintf ppf "back" - | `Both -> fprintf ppf "both" - | `None -> fprintf ppf "none" - - let fprint_edge ppf = function - | `Color a -> fprintf ppf "color=%a" fprint_color a - | `ColorWithTransparency a -> - fprintf ppf "color=%a" fprint_color_with_transparency a - | `Decorate b -> fprintf ppf "decorate=%b" b - | `Dir a -> fprintf ppf "dir=%a" fprint_arrow_direction a - | `Fontcolor a -> fprintf ppf "fontcolor=%a" fprint_color a - | `Fontname s -> fprintf ppf "fontname=%a" fprint_string s - | `Fontsize i -> fprintf ppf "fontsize=%i" i - | `Label s -> fprintf ppf "label=%a" fprint_string_user s - | `HtmlLabel s -> fprintf ppf "label=%a" fprint_htmlstring_user s - | `Labelfontcolor a -> fprintf ppf "labelfontcolor=%a" fprint_color a - | `Labelfontname s -> fprintf ppf "labelfontname=\"%s\"" s - (* (String.escaped s) *) - | `Labelfontsize i -> fprintf ppf "labelfontsize=%i" i - | `Penwidth f -> fprintf ppf "penwidth=%f" f - | `Style _ -> assert false - - let rec filter_style al sl l = match l with - | [] -> al, sl - | `Style s :: l -> filter_style al (s :: sl) l - | a :: l -> filter_style (a :: al) sl l - - (** [fprint_graph_attribute printer ppf list] pretty prints a list of - attributes on the formatter [ppf], using the printer [printer] for - each attribute. The list appears between brackets and attributes - are speparated by ",". If the list is empty, nothing is printed. *) - let fprint_attributes fprint_style_list fprint_attribute sep ppf list = - if list <> [] then begin - let list, styles = filter_style [] [] list in - let rec fprint_attributes_rec ppf = function - | [] -> () - | hd :: tl -> - fprintf ppf "%a%a@ " - fprint_attribute hd - fprint_symbseq sep; - fprint_attributes_rec ppf tl - in - fprintf ppf "@[%a" fprint_attributes_rec list; - if styles <> [] then begin - fprint_style_list sep ppf styles - end; - fprintf ppf "@]" - end - -end - - -(*-------------------------------------------------------------------------*) -(** {3 The [MakeEngine] functor} *) - -(** An engine is described by a module of the following signature. *) -module type ENGINE = sig - - module Attributes : sig - include ATTRIBUTES - val fprint_graph:formatter -> graph -> unit - val fprint_vertex_list: symbseq -> formatter -> vertex list -> unit - val fprint_edge_list: symbseq -> formatter -> edge list -> unit - end - - (** The litteral name of the engine. *) - val name: string - - (** The keyword for graphs ("digraph" for dot, "graph" for neato) *) - val opening: string - - (** The litteral for edge arrows ("->" for dot, "--" for neato) *) - val edge_arrow: string - -end - -module type GRAPH = sig - -end - -module MakeEngine - (EN: ENGINE) - (X : sig - type t - module V : sig type t end - module E : sig type t val src : t -> V.t val dst : t -> V.t end - - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_edges_e : (E.t -> unit) -> t -> unit - - val graph_attributes: t -> EN.Attributes.graph list - - val default_vertex_attributes: t -> EN.Attributes.vertex list - val vertex_name : V.t -> string - val vertex_attributes: V.t -> EN.Attributes.vertex list - - val default_edge_attributes: t -> EN.Attributes.edge list - val edge_attributes: E.t -> EN.Attributes.edge list - val get_subgraph : V.t -> EN.Attributes.subgraph option - end) = -struct - - let command = ref EN.name - let set_command cmd = - command := cmd - - exception Error of string - - let handle_error f arg = - try - f arg - with - Error msg -> - Printf.eprintf "%s: %s failure\n %s\n" - Sys.argv.(0) EN.name msg; - flush stderr; - exit 2 - - (** [fprint_graph_attributes ppf list] pretty prints a list of - graph attributes on the formatter [ppf]. Attributes are separated - by a ";". *) - let fprint_graph_attributes ppf list = - List.iter (function att -> - fprintf ppf "%a;@ " EN.Attributes.fprint_graph att - ) list - - (** [fprint_graph ppf graph] pretty prints the graph [graph] in - the CGL language on the formatter [ppf]. *) - let fprint_graph ppf graph = - let module SG = Map.Make(String) in - let subgraphs = ref SG.empty in - - (* Printing nodes. *) - - let print_nodes ppf = - let default_node_attributes = X.default_vertex_attributes graph in - if default_node_attributes <> [] then - fprintf ppf "node%a;@ " - (fprint_square_not_empty (EN.Attributes.fprint_vertex_list COMMA)) - default_node_attributes; - - X.iter_vertex - (function node -> - begin match X.get_subgraph node with - | None -> () - | Some sg -> - let (sg, nodes) = - if SG.mem sg.EN.Attributes.sg_name !subgraphs then - SG.find sg.EN.Attributes.sg_name !subgraphs - else - (sg, []) - in - subgraphs := SG.add sg.EN.Attributes.sg_name (sg, node :: nodes) !subgraphs - end; - fprintf ppf "%s%a;@ " - (X.vertex_name node) - (fprint_square_not_empty (EN.Attributes.fprint_vertex_list COMMA)) - (X.vertex_attributes node) - ) - graph - in - - (* Printing subgraphs *) - - let rec print_nested_subgraphs ppf = function - | [] -> - () (* no more work to do, so terminate *) - | name :: worklist -> - let sg, nodes = SG.find name !subgraphs in - let children = SG.filter (fun _ (sg, _) -> sg.EN.Attributes.sg_parent = Some name) !subgraphs in - fprintf ppf "@[subgraph cluster_%s { %a%t@ %t };@]@\n" - - name - - (EN.Attributes.fprint_vertex_list SEMI) - sg.EN.Attributes.sg_attributes - - (fun ppf -> - (List.iter (fun n -> fprintf ppf "%s;" (X.vertex_name n)) nodes) - ) - - (fun ppf -> - print_nested_subgraphs ppf (List.map fst (SG.bindings children)) - ); - - print_nested_subgraphs ppf worklist - in - - let print_subgraphs ppf = - let root_worklist = SG.filter (fun _ (sg, _) -> sg.EN.Attributes.sg_parent = None) !subgraphs in - print_nested_subgraphs ppf (List.map fst (SG.bindings root_worklist)) - in - - (* Printing edges *) - - let print_edges ppf = - - let default_edge_attributes = X.default_edge_attributes graph in - if default_edge_attributes <> [] then - fprintf ppf "edge%a;@ " - (fprint_square_not_empty (EN.Attributes.fprint_edge_list COMMA)) - default_edge_attributes; - - X.iter_edges_e (function edge -> - fprintf ppf "%s %s %s%a;@ " - (X.vertex_name (X.E.src edge)) - EN.edge_arrow - (X.vertex_name (X.E.dst edge)) - (fprint_square_not_empty (EN.Attributes.fprint_edge_list COMMA)) - (X.edge_attributes edge) - ) graph - - in - - fprintf ppf "@[%s G {@ @[ %a" - EN.opening - fprint_graph_attributes (X.graph_attributes graph); - fprintf ppf "%t@ " print_nodes; - fprintf ppf "%t@ " print_subgraphs; - fprintf ppf "%t@ " print_edges; - fprintf ppf "@]}@]" - - (** [output_graph oc graph] pretty prints the graph [graph] in the dot - language on the channel [oc]. *) - let output_graph oc graph = - let ppf = formatter_of_out_channel oc in - fprint_graph ppf graph; - pp_print_flush ppf () - -end - -(***************************************************************************) -(** {2 Interface with the dot engine} *) - -(** The [DotAttributes] module defines attributes for graphs, nodes and edges - that are available in the dot engine. *) -module DotAttributes = struct - - (** Attributes of graphs. They include all common graph attributes and - several specific ones. All attributes described in the "dot User's - Manual, February 4, 2002" are handled, excepted: clusterank, color, - compound, labeljust, labelloc, ordering, rank, remincross, rotate, - searchsize and style. - *) - type graph = - [ CommonAttributes.graph - | `Bgcolor of color - (** Sets the background color and the inital fill color. *) - | `BgcolorWithTransparency of color_with_transparency - (** Sets the background color and the inital fill color with - a transparency component. *) - | `Comment of string - (** Comment string. *) - | `Concentrate of bool - (** If [true], enables edge concentrators. Default value is [false]. *) - | `Fontpath of string - (** List of directories for fonts. *) - | `Layers of string list - (** List of layers. *) - | `Margin of float - (** Sets the page margin (included in the page size). Default value is - [0.5]. *) - | `Mclimit of float - (** Scale factor for mincross iterations. Default value is [1.0]. *) - | `Nodesep of float - (** Sets the minimum separation between nodes, in inches. Default - value is [0.25]. *) - | `Nslimit of int - (** If set of [f], bounds network simplex iterations by [f * - ] when ranking nodes. *) - | `Nslimit1 of int - (** If set of [f], bounds network simplex iterations by [f * - ] when setting x-coordinates. *) - | `Ranksep of float - (** Sets the minimum separation between ranks. *) - | `Quantum of float - (** If not [0.0], node label dimensions will be rounded to integral - multiples of it. Default value is [0.0]. *) - | `Rankdir of [ `TopToBottom | `LeftToRight ] - (** Direction of rank ordering. Default value is [`TopToBottom]. *) - | `Ratio of [ `Float of float | `Fill | `Compress| `Auto ] - (** Sets the aspect ratio. *) - | `Samplepoints of int - (** Number of points used to represent ellipses and circles on output. - Default value is [8]. *) - | `Url of string - (** URL associated with graph (format-dependent). *) - ] - - (** Attributes of nodes. They include all common node attributes and - several specific ones. All attributes described in the "dot User's - Manual, February 4, 2002" are handled, excepted: bottomlabel, group, - shapefile and toplabel. - *) - type vertex = - [ CommonAttributes.vertex - | `Comment of string - (** Comment string. *) - | `Distortion of float - (* TEMPORARY *) - | `Fillcolor of color - (** Sets the fill color (used when `Style filled). Default value - is [lightgrey]. *) - | `FillcolorWithTransparency of color_with_transparency - (** Sets the fill color (used when `Style filled) with a transparency - component. Default value is fully opaque [lightgrey]. *) - | `Fixedsize of bool - (** If [true], forces the given dimensions to be the actual ones. - Default value is [false]. *) - | `Layer of string - (** Overlay. *) - | `Url of string - (** The default url for image map files; in PostScript files, - the base URL for all relative URLs, as recognized by Acrobat - Distiller 3.0 and up. *) - | `Z of float - (** z coordinate for VRML output. *) - ] - - (** Attributes of edges. They include all common edge attributes and - several specific ones. All attributes described in the "dot User's - Manual, February 4, 2002" are handled, excepted: lhead and ltail. - *) - type edge = - [ CommonAttributes.edge - | `Arrowhead of arrow_style - (** Sets the style of the head arrow. Default value is [`Normal]. *) - | `Arrowsize of float - (** Sets the scaling factor of arrowheads. Default value is [1.0]. *) - | `Arrowtail of arrow_style - (** Sets the style of the tail arrow. Default value is [`Normal]. *) - | `Comment of string - (** Comment string. *) - | `Constraint of bool - (** If [false], causes an edge to be ignored for rank assignment. - Default value is [true]. *) - | `Headlabel of string - (** Sets the label attached to the head arrow. *) - | `Headport of [ `N | `NE | `E | `SE | `S | `SW | `W | `NW ] - (* TEMPORARY *) - | `Headurl of string - (** Url attached to head label if output format is ismap. *) - | `Labelangle of float - (** Angle in degrees which head or tail label is rotated off edge. - Default value is [-25.0]. *) - | `Labeldistance of float - (** Scaling factor for distance of head or tail label from node. - Default value is [1.0]. *) - | `Labelfloat of bool - (** If [true], lessen constraints on edge label placement. - Default value is [false]. *) - | `Layer of string - (** Overlay. *) - | `Minlen of int - (** Minimum rank distance between head an tail. Default value is [1]. *) - | `Samehead of string - (** Tag for head node; edge heads with the same tag are merged onto the - same port. *) - | `Sametail of string - (** Tag for tail node; edge tails with the same tag are merged onto the - same port. *) - | `Taillabel of string - (** Sets the label attached to the tail arrow. *) - | `Tailport of [ `N | `NE | `E | `SE | `S | `SW | `W | `NW ] - (* TEMPORARY *) - | `Tailurl of string - (** Url attached to tail label if output format is ismap. *) - | `Weight of int - (** Sets the integer cost of stretching the edge. Default value is - [1]. *) - ] - - type subgraph = { - sg_name : string; - sg_attributes : vertex list; - sg_parent : string option; - } - - (** {4 Pretty-print of attributes} *) - - let rec fprint_string_list ppf = function - [] -> () - | [hd] -> fprintf ppf "%s" hd - | hd :: tl -> fprintf ppf "%s,%a" hd fprint_string_list tl - - let fprint_ratio ppf = function - `Float f -> fprintf ppf "%f" f - | `Fill -> fprintf ppf "fill" - | `Compress -> fprintf ppf "compress" - | `Auto -> fprintf ppf "auto" - - let fprint_graph ppf = function - #CommonAttributes.graph as att -> CommonAttributes.fprint_graph ppf att - | `Bgcolor a -> fprintf ppf "bgcolor=%a" fprint_color a - | `BgcolorWithTransparency a -> - fprintf ppf "bgcolor=%a" fprint_color_with_transparency a - | `Comment s -> fprintf ppf "comment=%a" fprint_string s - | `Concentrate b -> fprintf ppf "concentrate=%b" b - | `Fontpath s -> fprintf ppf "fontpath=%a" fprint_string s - | `Layers s -> fprintf ppf "layers=%a" fprint_string_list s - | `Margin f -> fprintf ppf "margin=%f" f - | `Mclimit f -> fprintf ppf "mclimit=%f" f - | `Nodesep f -> fprintf ppf "nodesep=%f" f - | `Nslimit i -> fprintf ppf "nslimit=%i" i - | `Nslimit1 i -> fprintf ppf "nslimit1=%i" i - | `Ranksep f -> fprintf ppf "ranksep=%f" f - | `Quantum f -> fprintf ppf "quantum=%f" f - | `Rankdir a -> fprintf ppf "rankdir=%a" fprint_dir a - | `Ratio a -> fprintf ppf "ratio=%a" fprint_ratio a - | `Samplepoints i -> fprintf ppf "samplepoints=%i" i - | `Url s -> fprintf ppf "URL=\"%s\"" s (*(String.escaped s)*) - - let fprint_vertex ppf = function - #CommonAttributes.vertex as att -> - CommonAttributes.fprint_vertex ppf att - | `Comment s -> fprintf ppf "comment=%a" fprint_string s - | `Distortion f -> fprintf ppf "distortion=%f" f - | `Fillcolor a -> fprintf ppf "fillcolor=%a" fprint_color a - | `FillcolorWithTransparency a -> - fprintf ppf "fillcolor=%a" fprint_color_with_transparency a - | `Fixedsize b -> fprintf ppf "fixedsize=%b" b - | `Layer s -> fprintf ppf "layer=%a" fprint_string s - | `Url s -> fprintf ppf "URL=\"%s\"" s (*(String.escaped s)*) - | `Z f -> fprintf ppf "z=%f" f - - let fprint_port ppf = function - `N -> fprintf ppf "n" - | `NE -> fprintf ppf "ne" - | `E -> fprintf ppf "e" - | `SE -> fprintf ppf "se" - | `S -> fprintf ppf "s" - | `SW -> fprintf ppf "sw" - | `W -> fprintf ppf "w" - | `NW -> fprintf ppf "nw" - - let fprint_edge ppf = function - #CommonAttributes.edge as att -> CommonAttributes.fprint_edge ppf att - | `Arrowhead a -> fprintf ppf "arrowhead=%a" fprint_arrow_style a - | `Arrowsize f -> fprintf ppf "arrowsize=%f" f - | `Arrowtail a -> fprintf ppf "arrowtail=%a" fprint_arrow_style a - | `Comment s -> fprintf ppf "comment=%a" fprint_string s - | `Constraint b -> fprintf ppf "constraint=%b" b - | `Headlabel s -> fprintf ppf "headlabel=%a" fprint_string s - | `Headport a -> fprintf ppf "headport=%a" fprint_port a - | `Headurl s -> fprintf ppf "headURL=%a" fprint_string s - | `Labelangle f -> fprintf ppf "labelangle=%f" f - | `Labeldistance f -> fprintf ppf "labeldistance=%f" f - | `Labelfloat b -> fprintf ppf "labelfloat=%b" b - | `Layer s -> fprintf ppf "layer=%a" fprint_string s - | `Minlen i -> fprintf ppf "minlen=%i" i - | `Samehead s -> fprintf ppf "samehead=%a" fprint_string s - | `Sametail s -> fprintf ppf "sametail=%a" fprint_string s - | `Taillabel s -> fprintf ppf "taillabel=%a" fprint_string s - | `Tailport a -> fprintf ppf "tailport=%a" fprint_port a - | `Tailurl s -> fprintf ppf "tailURL=%a" fprint_string s - | `Weight i -> fprintf ppf "weight=%i" i - - let fprint_vertex_list = - CommonAttributes.fprint_attributes - CommonAttributes.fprint_style_list fprint_vertex - - let fprint_edge_list = - CommonAttributes.fprint_attributes - CommonAttributes.fprint_style_list fprint_edge - -end - -(** Graph modules with dot attributes *) -module type GraphWithDotAttrs = sig - include Sig.G - - (** Graph, vertex and edge attributes. *) - val graph_attributes: t -> DotAttributes.graph list - - (** Vertex attributes *) - val default_vertex_attributes: t -> DotAttributes.vertex list - val vertex_name : V.t -> string - val vertex_attributes: V.t -> DotAttributes.vertex list - - (** Edge attributes *) - val default_edge_attributes: t -> DotAttributes.edge list - val edge_attributes: E.t -> DotAttributes.edge list - - val get_subgraph : V.t -> DotAttributes.subgraph option - (** The box (if exists) which the vertex belongs to. Boxes with same - names are not distinguished and so they should have the same - attributes. *) -end - -module Dot = - MakeEngine (struct - module Attributes = DotAttributes - let name = "dot" - let opening = "digraph" - let edge_arrow = "->" - end) - -(***************************************************************************) -(** {2 Interface with the neato engine} *) - -(** The [NeatoAttributes] module defines attributes for graphs, nodes and edges - that are available in the neato engine. *) -module NeatoAttributes = struct - - (** Attributes of graphs. They include all common graph attributes and - several specific ones. All attributes described in the "Neato User's - manual, April 10, 2002" are handled. *) - type graph = - [ CommonAttributes.graph - | `Margin of float * float - (** Sets the page margin (included in the page size). Default value is - [0.5, 0.5]. *) - | `Start of int - (** Seed for random number generator. *) - | `Overlap of bool - (** Default value is [true]. *) - | `Spline of bool - (** [true] makes edge splines if nodes don't overlap. - Default value is [false]. *) - | `Sep of float - (** Edge spline separation factor from nodes. Default value - is [0.0]. *) - ] - - (** Attributes of nodes. They include all common node attributes and - several specific ones. All attributes described in the "Neato User's - manual, April 10, 2002" are handled. *) - type vertex = - [ CommonAttributes.vertex - | `Pos of float * float - (** Initial coordinates of the node. *) - ] - - (** Attributes of edges. They include all common edge attributes and - several specific ones. All attributes described in the "Neato User's - manual, April 10, 2002" are handled. *) - type edge = - [ CommonAttributes.edge - | `Id of string - (** Optional value to distinguish multiple edges. *) - | `Len of float - (** Preferred length of edge. Default value is [1.0]. *) - | `Weight of float - (** Strength of edge spring. Default value is [1.0]. *) - ] - - type subgraph = { - sg_name : string; - sg_attributes : vertex list; - sg_parent : string option; - } - - (** {4 Pretty-print of attributes} *) - - let fprint_graph ppf = function - #CommonAttributes.graph as att -> CommonAttributes.fprint_graph ppf att - | `Margin (f1, f2) -> fprintf ppf "margin=\"%f,%f\"" f1 f2 - | `Start i -> fprintf ppf "start=%i" i - | `Overlap b -> fprintf ppf "overlap=%b" b - | `Spline b -> fprintf ppf "spline=%b" b - | `Sep f -> fprintf ppf "sep=%f" f - - let fprint_vertex ppf = function - #CommonAttributes.vertex as att -> - CommonAttributes.fprint_vertex ppf att - | `Pos (f1, f2) -> fprintf ppf "pos=\"%f,%f\"" f1 f2 - - let fprint_edge ppf = function - #CommonAttributes.edge as att -> CommonAttributes.fprint_edge ppf att - | `Id s -> fprintf ppf "id=%a" fprint_string s - | `Len f -> fprintf ppf "len=%f" f - | `Weight f -> fprintf ppf "weight=%f" f - - let fprint_vertex_list = - CommonAttributes.fprint_attributes - CommonAttributes.fprint_style_list fprint_vertex - - let fprint_edge_list = - CommonAttributes.fprint_attributes - CommonAttributes.fprint_style_list fprint_edge - -end - -module Neato = - MakeEngine (struct - module Attributes = NeatoAttributes - let name = "neato" - let opening = "graph" - let edge_arrow = "--" - end) - -(* -Local Variables: -compile-command: "make -C .." -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/src/graphviz.mli b/jscomp/build_tests/ocamlgraph/src/graphviz.mli deleted file mode 100755 index f7ab648dd5..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/graphviz.mli +++ /dev/null @@ -1,552 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Interface with {i GraphViz} - - This module provides a basic interface with dot and neato, - two programs of the GraphViz toolbox. - These tools are available at the following URLs: - - {v http://www.graphviz.org v} - - {v http://www.research.att.com/sw/tools/graphviz v} *) - -open Format - -(***************************************************************************) -(** {2 Common stuff} *) - -(** Because the neato and dot engines present a lot of common points - - in particular in the graph description language, large parts of - the code is shared. The [CommonAttributes] module defines - attributes of graphs, vertices and edges that are understood by the - two engines. Then module [DotAttributes] and [NeatoAttributes] - define attributes specific to dot and neato respectively. *) - -(*-------------------------------------------------------------------------*) -(** {3 Common types and signatures} *) - -type color = int - -type color_with_transparency = int32 -(** The two least significant bytes encode the transparency information; - the six most signification are the standard RGB color *) - -val color_to_color_with_transparency: color -> color_with_transparency - - -type arrow_style = - [ `None | `Normal | `Inv | `Dot | `Odot | `Invdot | `Invodot ] - -(** The [ATTRIBUTES] module type defines the interface for the engines. *) -module type ATTRIBUTES = sig - - type graph (** Attributes of graphs. *) - - type vertex (** Attributes of vertices. *) - - type edge (** Attributes of edges. *) - - (** Attributes of (optional) boxes around vertices. *) - type subgraph = { - sg_name : string; (** Box name. *) - sg_attributes : vertex list; (** Box attributes. *) - sg_parent : string option; (** Nested subgraphs. *) - } - -end - -(*-------------------------------------------------------------------------*) -(** {3 Common attributes} *) - -(** The [CommonAttributes] module defines attributes for graphs, vertices and - edges that are available in the two engines, dot and neato. *) -module CommonAttributes : sig - - (** Attributes of graphs. *) - type graph = - [ `Center of bool - (** Centers the drawing on the page. Default value is [false]. *) - | `Fontcolor of color - (** Sets the font color. Default value is [black]. *) - | `Fontname of string - (** Sets the font family name. Default value is ["Times-Roman"]. *) - | `Fontsize of int - (** Sets the type size (in points). Default value is [14]. *) - | `Label of string - (** Caption for graph drawing. *) - | `HtmlLabel of string - (** Caption for graph drawing. In HTML strings, angle brackets must occur in - matched pairs, and newlines and other formatting whitespace characters - are allowed. In addition, the content must be legal XML, so that the - special XML escape sequences for ", &, <, and > may be necessary in - order to embed these characters in attribute values or raw text." *) - | `Orientation of [ `Portrait | `Landscape ] - (** Sets the page orientation. Default value is [`Portrait]. *) - | `Page of float * float - (** Sets the PostScript pagination unit, e.g [8.5, 11.0]. *) - | `Pagedir of [ `TopToBottom | `LeftToRight ] - (** Traversal order of pages. Default value is [`TopToBottom]. *) - | `Size of float * float - (** Sets the bounding box of drawing (in inches). *) - | `OrderingOut - (** Constrains order of out-edges in a subgraph according to - their file sequence *) - ] - - (** Attributes of vertices. *) - type vertex = - [ `Color of color - (** Sets the color of the border of the vertex. - Default value is [black] *) - | `ColorWithTransparency of color_with_transparency - (** Sets the color of the border of the vertex with a transparency - component. Default value is fully opaque [black] *) - | `Fontcolor of color - (** Sets the label font color. Default value is [black]. *) - | `Fontname of string - (** Sets the label font family name. Default value is - ["Times-Roman"]. *) - | `Fontsize of int - (** Sets the label type size (in points). Default value is [14]. - *) - | `Height of float - (** Sets the minimum height. Default value is [0.5]. *) - | `Label of string - (** Sets the label printed in the vertex. - The string may include escaped - newlines [\n], [\l], or [\r] for center, left, and right justified - lines. - Record labels may contain recursive box lists delimited by { | }. - *) - | `HtmlLabel of string - (** Like label, in html style. In HTML strings, angle brackets must occur in - matched pairs, and newlines and other formatting whitespace characters - are allowed. In addition, the content must be legal XML, so that the - special XML escape sequences for ", &, <, and > may be necessary in - order to embed these characters in attribute values or raw text." *) - | `Orientation of float - (** Vertex rotation angle, in degrees. Default value is [0.0]. *) - | `Penwidth of float - (** Width of the pen (in points) used to draw the border of the node. - Default value is [1.0]. *) - | `Peripheries of int - (** Sets the number of periphery lines drawn around the polygon. *) - | `Regular of bool - (** If [true], then the polygon is made regular, i.e. symmetric about - the x and y axis, otherwise the polygon takes on the aspect - ratio of the label. Default value is [false]. *) - | `Shape of - [`Ellipse | `Box | `Circle | `Doublecircle | `Diamond - | `Plaintext | `Record - (* Addition through http://www.graphviz.org/doc/info/shapes.html *) - | `Oval | `Egg | `Triangle | `Invtriangle - | `Trapezium | `Invtrapezium - | `House | `Invhouse - | `Parallelogram | `Doubleoctagon | `Tripleoctagon - | `Mdiamond | `Mcircle | `Msquare - | `Star | `Underline - | `Note | `Tab | `Folder - | `Box3d | `Component | `Promoter - | `Cds - | `Terminator | `Utr | `Primersite - | `Restrictionsite - | `Fivepoverhang | `Threepoverhang | `Noverhang - | `Assembly | `Signature | `Insulator | `Ribosite | `Rnastab - | `Proteasesite | `Proteinstab | `Rpromoter | `Rarrow - | `Larrow | `Lpromoter - (* Addition ends here *) - | `Polygon of int * float] - (** Sets the shape of the vertex. Default value is [`Ellipse]. - [`Polygon (i, f)] draws a polygon with [n] sides and a skewing - of [f]. *) - | `Style of - [ `Rounded | `Filled | `Solid | `Dashed | `Dotted | `Bold | `Invis ] - (** Sets the layout style of the vertex. - Several styles may be combined simultaneously. *) - | `Width of float - (** Sets the minimum width. Default value is [0.75]. *) - ] - - (** Attributes of edges. *) - type edge = - [ `Color of color - (** Sets the edge stroke color. Default value is [black]. *) - | `ColorWithTransparency of color_with_transparency - (** Sets the edge stroke color with a transparency - component. Default value is fully opaque [black] *) - | `Decorate of bool - (** If [true], draws a line connecting labels with their edges. *) - | `Dir of [ `Forward | `Back | `Both | `None ] - (** Sets arrow direction. Default value is [`Forward]. *) - | `Fontcolor of color - (** Sets the label font color. Default value is [black]. *) - | `Fontname of string - (** Sets the label font family name. Default value is - ["Times-Roman"]. *) - | `Fontsize of int - (** Sets the label type size (in points). Default value is [14]. *) - | `Label of string - (** Sets the label to be attached to the edge. The string may include - escaped newlines [\n], [\l], or [\r] for centered, left, or right - justified lines. *) - | `HtmlLabel of string - (** Like label, in html style. In HTML strings, angle brackets must occur in - matched pairs, and newlines and other formatting whitespace characters - are allowed. In addition, the content must be legal XML, so that the - special XML escape sequences for ", &, <, and > may be necessary in - order to embed these characters in attribute values or raw text." *) - | `Labelfontcolor of color - (** Sets the font color for head and tail labels. Default value is - [black]. *) - | `Labelfontname of string - (** Sets the font family name for head and tail labels. Default - value is ["Times-Roman"]. *) - | `Labelfontsize of int - (** Sets the font size for head and tail labels (in points). - Default value is [14]. *) - | `Penwidth of float - (** Width of the pen (in points) used to draw the edge. Default value - is [1.0]. *) - | `Style of [ `Solid | `Dashed | `Dotted | `Bold | `Invis ] - (** Sets the layout style of the edge. Several styles may be combined - simultaneously. *) - ] - -end - -(***************************************************************************) -(** {2 Interface with the dot engine} *) - -(** [DotAttributes] extends [CommonAttributes] and implements [ATTRIBUTES]. *) -module DotAttributes : sig - - (** Attributes of graphs. They include all common graph attributes and - several specific ones. All attributes described in the "dot User's - Manual, February 4, 2002" are handled, excepted: clusterank, color, - compound, labeljust, labelloc, ordering, rank, remincross, rotate, - searchsize and style. *) - type graph = - [ CommonAttributes.graph - | `Bgcolor of color - (** Sets the background color and the inital fill color. *) - | `BgcolorWithTransparency of color_with_transparency - (** Sets the background color and the inital fill color with - a transparency component. *) - | `Comment of string - (** Comment string. *) - | `Concentrate of bool - (** If [true], enables edge concentrators. Default value is [false]. *) - | `Fontpath of string - (** List of directories for fonts. *) - | `Layers of string list - (** List of layers. *) - | `Margin of float - (** Sets the page margin (included in the page size). Default value is - [0.5]. *) - | `Mclimit of float - (** Scale factor for mincross iterations. Default value is [1.0]. *) - | `Nodesep of float - (** Sets the minimum separation between nodes, in inches. Default - value is [0.25]. *) - | `Nslimit of int - (** If set of [f], bounds network simplex iterations by [f * - ] when ranking nodes. *) - | `Nslimit1 of int - (** If set of [f], bounds network simplex iterations by [f * - ] when setting x-coordinates. *) - | `Ranksep of float - (** Sets the minimum separation between ranks. *) - | `Quantum of float - (** If not [0.0], node label dimensions will be rounded to integral - multiples of it. Default value is [0.0]. *) - | `Rankdir of [ `TopToBottom | `LeftToRight ] - (** Direction of rank ordering. Default value is [`TopToBottom]. *) - | `Ratio of [ `Float of float | `Fill | `Compress| `Auto ] - (** Sets the aspect ratio. *) - | `Samplepoints of int - (** Number of points used to represent ellipses and circles on output. - Default value is [8]. *) - | `Url of string - (** URL associated with graph (format-dependent). *) - ] - - (** Attributes of nodes. They include all common node attributes and - several specific ones. All attributes described in the "dot User's - Manual, February 4, 2002" are handled, excepted: bottomlabel, group, - shapefile and toplabel. *) - type vertex = - [ CommonAttributes.vertex - | `Comment of string - (** Comment string. *) - | `Distortion of float - (* TEMPORARY *) - | `Fillcolor of color - (** Sets the fill color (used when `Style filled). Default value - is [lightgrey]. *) - | `FillcolorWithTransparency of color_with_transparency - (** Sets the fill color (used when `Style filled) with a transparency - component. Default value is fully opaque [lightgrey]. *) - | `Fixedsize of bool - (** If [true], forces the given dimensions to be the actual ones. - Default value is [false]. *) - | `Layer of string - (** Overlay. *) - | `Url of string - (** The default url for image map files; in PostScript files, - the base URL for all relative URLs, as recognized by Acrobat - Distiller 3.0 and up. *) - | `Z of float - (** z coordinate for VRML output. *) - ] - - (** Attributes of edges. They include all common edge attributes and - several specific ones. All attributes described in the "dot User's - Manual, February 4, 2002" are handled, excepted: lhead and ltail. *) - type edge = - [ CommonAttributes.edge - | `Arrowhead of arrow_style - (** Sets the style of the head arrow. Default value is [`Normal]. *) - | `Arrowsize of float - (** Sets the scaling factor of arrowheads. Default value is [1.0]. *) - | `Arrowtail of arrow_style - (** Sets the style of the tail arrow. Default value is [`Normal]. *) - | `Comment of string - (** Comment string. *) - | `Constraint of bool - (** If [false], causes an edge to be ignored for rank assignment. - Default value is [true]. *) - | `Headlabel of string - (** Sets the label attached to the head arrow. *) - | `Headport of [ `N | `NE | `E | `SE | `S | `SW | `W | `NW ] - (* TEMPORARY *) - | `Headurl of string - (** Url attached to head label if output format is ismap. *) - | `Labelangle of float - (** Angle in degrees which head or tail label is rotated off edge. - Default value is [-25.0]. *) - | `Labeldistance of float - (** Scaling factor for distance of head or tail label from node. - Default value is [1.0]. *) - | `Labelfloat of bool - (** If [true], lessen constraints on edge label placement. - Default value is [false]. *) - | `Layer of string - (** Overlay. *) - | `Minlen of int - (** Minimum rank distance between head an tail. - Default value is [1]. *) - | `Samehead of string - (** Tag for head node; edge heads with the same tag are merged onto the - same port. *) - | `Sametail of string - (** Tag for tail node; edge tails with the same tag are merged onto the - same port. *) - | `Taillabel of string - (** Sets the label attached to the tail arrow. *) - | `Tailport of [ `N | `NE | `E | `SE | `S | `SW | `W | `NW ] - (* TEMPORARY *) - | `Tailurl of string - (** Url attached to tail label if output format is ismap. *) - | `Weight of int - (** Sets the integer cost of stretching the edge. Default value is - [1]. *) - ] - - (** Subgraphs have a name and some vertices. *) - type subgraph = { - sg_name : string; - sg_attributes : vertex list; - sg_parent : string option; - } - -end - -(** Graph module with dot attributes *) -module type GraphWithDotAttrs = sig - - include Sig.G - - val graph_attributes: t -> DotAttributes.graph list - - (** Vertex attributes *) - - val default_vertex_attributes: t -> DotAttributes.vertex list - val vertex_name : V.t -> string - val vertex_attributes: V.t -> DotAttributes.vertex list - - (** Edge attributes *) - - val default_edge_attributes: t -> DotAttributes.edge list - val edge_attributes: E.t -> DotAttributes.edge list - - val get_subgraph : V.t -> DotAttributes.subgraph option - (** The box (if exists) which the vertex belongs to. Boxes with same - names are not distinguished and so they should have the same - attributes. *) - -end - -module Dot - (X : sig - - (** Graph implementation. Sub-signature of {!Sig.G} *) - - type t - module V : sig type t end - module E : sig type t val src : t -> V.t val dst : t -> V.t end - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_edges_e : (E.t -> unit) -> t -> unit - - (** Graph, vertex and edge attributes. *) - - val graph_attributes: t -> DotAttributes.graph list - - val default_vertex_attributes: t -> DotAttributes.vertex list - val vertex_name : V.t -> string - val vertex_attributes: V.t -> DotAttributes.vertex list - - val get_subgraph : V.t -> DotAttributes.subgraph option - (** The box (if exists) which the vertex belongs to. Boxes with same - names are not distinguished and so they should have the same - attributes. *) - - val default_edge_attributes: t -> DotAttributes.edge list - val edge_attributes: E.t -> DotAttributes.edge list - - end) : -sig - - val fprint_graph: formatter -> X.t -> unit - (** [fprint_graph ppf graph] pretty prints the graph [graph] in - the CGL language on the formatter [ppf]. *) - - val output_graph: out_channel -> X.t -> unit - (** [output_graph oc graph] pretty prints the graph [graph] in the dot - language on the channel [oc]. *) - -end - -(***************************************************************************) -(** {2 The neato engine} *) - -module NeatoAttributes : sig - - (** Attributes of graphs. They include all common graph attributes and - several specific ones. All attributes described in the "Neato User's - manual, April 10, 2002" are handled. *) - type graph = - [ CommonAttributes.graph - | `Margin of float * float - (** Sets the page margin (included in the page size). Default value is - [0.5, 0.5]. *) - | `Start of int - (** Seed for random number generator. *) - | `Overlap of bool - (** Default value is [true]. *) - | `Spline of bool - (** [true] makes edge splines if nodes don't overlap. - Default value is [false]. *) - | `Sep of float - (** Edge spline separation factor from nodes. Default value - is [0.0]. *) - ] - - (** Attributes of nodes. They include all common node attributes and - several specific ones. All attributes described in the "Neato User's - manual, April 10, 2002" are handled. *) - type vertex = - [ CommonAttributes.vertex - | `Pos of float * float - (** Initial coordinates of the vertex. *) - ] - - (** Attributes of edges. They include all common edge attributes and - several specific ones. All attributes described in the "Neato User's - manual, April 10, 2002" are handled. *) - type edge = - [ CommonAttributes.edge - | `Id of string - (** Optional value to distinguish multiple edges. *) - | `Len of float - (** Preferred length of edge. Default value is [1.0]. *) - | `Weight of float - (** Strength of edge spring. Default value is [1.0]. *) - ] - - (** Subgraphs have a name and some vertices. *) - type subgraph = { - sg_name : string; - sg_attributes : vertex list; - sg_parent : string option; - } - -end - -module Neato - (X : sig - - (** Graph implementation. Sub-signature of {!Sig.G}. *) - - type t - module V : sig type t end - module E : sig type t val src : t -> V.t val dst : t -> V.t end - - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_edges_e : (E.t -> unit) -> t -> unit - - (** Graph, vertex and edge attributes. *) - - val graph_attributes: t -> NeatoAttributes.graph list - - val default_vertex_attributes: t -> NeatoAttributes.vertex list - val vertex_name : V.t -> string - val vertex_attributes: V.t -> NeatoAttributes.vertex list - - val get_subgraph : V.t -> NeatoAttributes.subgraph option - (** The box (if exists) which the vertex belongs to. Boxes with same - names are not distinguished and so they should have the same - attributes. *) - - val default_edge_attributes: t -> NeatoAttributes.edge list - val edge_attributes: E.t -> NeatoAttributes.edge list - - end) : -sig - - val set_command: string -> unit - (** Several functions provided by this module run the external program - {i neato}. By default, this command is supposed to be in the default - path and is invoked by {i neato}. The function - [set_command] allows to set an alternative path at run time. *) - - exception Error of string - val handle_error: ('a -> 'b) -> 'a -> 'b - - val fprint_graph: formatter -> X.t -> unit - (** [fprint_graph ppf graph] pretty prints the graph [graph] in - the CGL language on the formatter [ppf]. *) - - val output_graph: out_channel -> X.t -> unit - (** [output_graph oc graph] pretty prints the graph [graph] in the dot - language on the channel [oc]. *) - -end - -(* -Local Variables: -compile-command: "make -C .." -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/src/imperative.ml b/jscomp/build_tests/ocamlgraph/src/imperative.ml deleted file mode 100755 index 966f245ccf..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/imperative.ml +++ /dev/null @@ -1,680 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -open Sig -open Blocks - -module type S = sig - - (** Imperative Unlabeled Graphs *) - module Concrete (V: COMPARABLE) : - Sig.I with type V.t = V.t and type V.label = V.t and type E.t = V.t * V.t - and type E.label = unit - - (** Abstract Imperative Unlabeled Graphs *) - module Abstract(V: sig type t end) : - Sig.IM with type V.label = V.t and type E.label = unit - and type E.label = unit - - (** Imperative Labeled Graphs *) - module ConcreteLabeled (V: COMPARABLE)(E: ORDERED_TYPE_DFT) : - Sig.I with type V.t = V.t and type V.label = V.t - and type E.t = V.t * E.t * V.t and type E.label = E.t - - (** Abstract Imperative Labeled Graphs *) - module AbstractLabeled (V: sig type t end)(E: ORDERED_TYPE_DFT) : - Sig.IM with type V.label = V.t and type E.label = E.t - -end - -module I = Make(Make_Hashtbl) - -type 'a abstract_vertex = { tag : int; label : 'a; mutable mark : int } - -(* Implement module type [MARK]. *) -module Make_Mark - (X: sig - type graph - type label - val iter_vertex : (label abstract_vertex -> unit) -> graph -> unit - end) = -struct - type vertex = X.label abstract_vertex - type graph = X.graph - let get v = v.mark - let set v m = v.mark <- m - let clear g = X.iter_vertex (fun v -> set v 0) g -end - -(* Vertex for abstract imperative graphs: - comparing to vertex for abstract **persistent** graphs, marks are added. *) -module AbstractVertex(V: sig type t end) = struct - type label = V.t - type t = label abstract_vertex - let compare x y = Pervasives.compare x.tag y.tag - let hash x = x.tag - let equal x y = x.tag = y.tag - let label x = x.label - let create l = - if !cpt_vertex = first_value_for_cpt_vertex - 1 then - invalid_arg "Too much vertices"; - incr cpt_vertex; - { tag = !cpt_vertex; label = l; mark = 0 } -end - -module Digraph = struct - - module Concrete(V: COMPARABLE) = struct - include I.Digraph.Concrete(V) - let add_vertex g v = ignore (add_vertex g v) - let add_edge g v1 v2 = ignore (add_edge g v1 v2) - let remove_edge g v1 v2 = ignore (remove_edge g v1 v2) - let remove_edge_e g e = ignore (remove_edge_e g e) - let add_edge_e g e = ignore (add_edge_e g e) - let remove_vertex g v = - if HM.mem v g then begin - ignore (HM.remove v g); - HM.iter (fun k s -> ignore (HM.add k (S.remove v s) g)) g - end - end - - module ConcreteLabeled(V: COMPARABLE)(E: ORDERED_TYPE_DFT) = struct - include I.Digraph.ConcreteLabeled(V)(E) - let add_vertex g v = ignore (add_vertex g v) - let remove_edge g v1 v2 = ignore (remove_edge g v1 v2) - let remove_edge_e g e = ignore (remove_edge_e g e) - let add_edge_e g e = ignore (add_edge_e g e) - let add_edge g v1 v2 = ignore (add_edge g v1 v2) - let remove_vertex g v = - if HM.mem v g then begin - ignore (HM.remove v g); - let remove v = S.filter (fun (v2, _) -> not (V.equal v v2)) in - HM.iter (fun k s -> ignore (HM.add k (remove v s) g)) g - end - end - - module ConcreteBidirectional(V: COMPARABLE) = struct - - include I.Digraph.ConcreteBidirectional(V) - - let add_vertex g v = ignore (add_vertex g v) - let add_edge g v1 v2 = ignore (add_edge g v1 v2) - let add_edge_e g (v1, v2) = add_edge g v1 v2 - - let remove_edge g v1 v2 = ignore (remove_edge g v1 v2) - let remove_edge_e g e = ignore (remove_edge_e g e) - - let remove_vertex g v = - if HM.mem v g then begin - iter_pred_e (fun e -> remove_edge_e g e) g v; - iter_succ_e (fun e -> remove_edge_e g e) g v; - ignore (HM.remove v g) - end - - end - - module ConcreteBidirectionalLabeled(V:COMPARABLE)(E:ORDERED_TYPE_DFT) = struct - - include I.Digraph.ConcreteBidirectionalLabeled(V)(E) - - let add_vertex g v = ignore (add_vertex g v) - let add_edge g v1 v2 = ignore (add_edge g v1 v2) - let add_edge_e g (v1, l, v2) = ignore (add_edge_e g (v1, l, v2)) - - let remove_edge g v1 v2 = ignore (remove_edge g v1 v2) - let remove_edge_e g e = ignore (remove_edge_e g e) - - let remove_vertex g v = - if HM.mem v g then begin - iter_pred_e (fun e -> remove_edge_e g e) g v; - iter_succ_e (fun e -> remove_edge_e g e) g v; - ignore (HM.remove v g) - end - - end - - module Abstract(V: sig type t end) = struct - - include I.Digraph.Abstract(AbstractVertex(V)) - - let add_vertex g v = - if not (HM.mem v g.edges) then begin - g.size <- Pervasives.succ g.size; - ignore (G.unsafe_add_vertex g.edges v) - end - - let add_edge g v1 v2 = - add_vertex g v1; - add_vertex g v2; - ignore (unsafe_add_edge g.edges v1 v2) - - let add_edge_e g (v1, v2) = add_edge g v1 v2 - - let remove_vertex g v = - if HM.mem v g.edges then - let e = g.edges in - ignore (HM.remove v e); - HM.iter (fun k s -> ignore (HM.add k (S.remove v s) e)) e; - g.size <- Pervasives.pred g.size - - module Mark = - Make_Mark - (struct - type graph = t - type label = V.label - let iter_vertex = iter_vertex - end) - - let remove_edge g v1 v2 = ignore (remove_edge g v1 v2) - let remove_edge_e g e = ignore (remove_edge_e g e) - - end - - module AbstractLabeled(V: sig type t end)(Edge: ORDERED_TYPE_DFT) = struct - - include I.Digraph.AbstractLabeled(AbstractVertex(V))(Edge) - - let add_vertex g v = - if not (HM.mem v g.edges) then begin - g.size <- Pervasives.succ g.size; - ignore (G.unsafe_add_vertex g.edges v) - end - - let add_edge_e g (v1, l, v2) = - add_vertex g v1; - add_vertex g v2; - ignore (unsafe_add_edge g.edges v1 (v2, l)) - - let add_edge g v1 v2 = add_edge_e g (v1, Edge.default, v2) - - let remove_vertex g v = - if HM.mem v g.edges then - let remove s = - S.fold - (fun (v2, _ as e) s -> if not (V.equal v v2) then S.add e s else s) - s S.empty - in - let e = g.edges in - ignore (HM.remove v e); - HM.iter (fun k s -> ignore (HM.add k (remove s) e)) e; - g.size <- Pervasives.pred g.size - - module Mark = - Make_Mark - (struct - type graph = t - type label = V.label - let iter_vertex = iter_vertex - end) - - let remove_edge g v1 v2 = ignore (remove_edge g v1 v2) - let remove_edge_e g e = ignore (remove_edge_e g e) - - end - -end - -module Graph = struct - - module Concrete(V: COMPARABLE) = struct - - module G = struct include Digraph.Concrete(V) type return = unit end - include Graph(G) - - (* Redefine the [add_edge] and [remove_edge] operations *) - - let add_edge g v1 v2 = - if not (mem_edge g v1 v2) then begin - G.add_edge g v1 v2; - assert (G.HM.mem v1 g && G.HM.mem v2 g); - ignore (G.unsafe_add_edge g v2 v1) - end - - let add_edge_e g (v1, v2) = add_edge g v1 v2 - - let remove_edge g v1 v2 = - G.remove_edge g v1 v2; - assert (G.HM.mem v1 g && G.HM.mem v2 g); - ignore (G.unsafe_remove_edge g v2 v1) - - let remove_edge_e g (v1, v2) = remove_edge g v1 v2 - - end - - module ConcreteLabeled (V: COMPARABLE)(Edge: ORDERED_TYPE_DFT) = struct - - module G = struct - include Digraph.ConcreteLabeled(V)(Edge) - type return = unit - end - include Graph(G) - - (* Redefine the [add_edge] and [remove_edge] operations *) - - let add_edge_e g (v1, l, v2 as e) = - if not (mem_edge_e g e) then begin - G.add_edge_e g e; - assert (G.HM.mem v1 g && G.HM.mem v2 g); - ignore (G.unsafe_add_edge g v2 (v1, l)) - end - - let add_edge g v1 v2 = add_edge_e g (v1, Edge.default, v2) - - let remove_edge g v1 v2 = - G.remove_edge g v1 v2; - assert (G.HM.mem v1 g && G.HM.mem v2 g); - ignore (G.unsafe_remove_edge g v2 v1) - - let remove_edge_e g (v1, l, v2 as e) = - G.remove_edge_e g e; - assert (G.HM.mem v1 g && G.HM.mem v2 g); - ignore (G.unsafe_remove_edge_e g (v2, l, v1)) - - end - - module Abstract(V: sig type t end) = struct - - module G = struct include Digraph.Abstract(V) type return = unit end - include Graph(G) - - (* Export some definitions of [G] *) - module Mark = G.Mark - - (* Redefine the [add_edge] and [remove_edge] operations *) - - let add_edge g v1 v2 = - G.add_edge g v1 v2; - assert (G.HM.mem v1 g.G.edges && G.HM.mem v2 g.G.edges); - ignore (G.unsafe_add_edge g.G.edges v2 v1) - - let add_edge_e g (v1, v2) = add_edge g v1 v2 - - let remove_edge g v1 v2 = - G.remove_edge g v1 v2; - assert (G.HM.mem v1 g.G.edges && G.HM.mem v2 g.G.edges); - ignore (G.unsafe_remove_edge g.G.edges v2 v1) - - let remove_edge_e g (v1, v2) = remove_edge g v1 v2 - - end - - module AbstractLabeled (V: sig type t end)(Edge: ORDERED_TYPE_DFT) = struct - - module G = struct - include Digraph.AbstractLabeled(V)(Edge) - type return = unit - end - include Graph(G) - - (* Export some definitions of [G] *) - module Mark = G.Mark - - (* Redefine the [add_edge] and [remove_edge] operations *) - - let add_edge_e g (v1, l, v2 as e) = - G.add_edge_e g e; - assert (G.HM.mem v1 g.G.edges && G.HM.mem v2 g.G.edges); - ignore (G.unsafe_add_edge g.G.edges v2 (v1, l)) - - let add_edge g v1 v2 = add_edge_e g (v1, Edge.default, v2) - - let remove_edge g v1 v2 = - G.remove_edge g v1 v2; - assert (G.HM.mem v1 g.G.edges && G.HM.mem v2 g.G.edges); - ignore (G.unsafe_remove_edge g.G.edges v2 v1) - - let remove_edge_e g (v1, l, v2 as e) = - ignore (G.remove_edge_e g e); - assert (G.HM.mem v1 g.G.edges && G.HM.mem v2 g.G.edges); - ignore (G.unsafe_remove_edge_e g.G.edges (v2, l, v1)) - - end - -end - -module Matrix = struct - - module type S = sig - include Sig.I with type V.t = int and type V.label = int - and type E.t = int * int - val make : int -> t - end - - module Digraph = struct - - module V = struct - type t = int - type label = int - let compare : t -> t -> int = Pervasives.compare - let hash = Hashtbl.hash - let equal = (==) - let create i = i - let label i = i - end - - module E = struct - type t = V.t * V.t - type vertex = V.t - let compare : t -> t -> int = Pervasives.compare - type label = unit - let create v1 _ v2 = (v1, v2) - let src = fst - let dst = snd - let label _ = () - end - - type t = Bitv.t array - type vertex = V.t - type edge = E.t - - let create ?size:_ () = - failwith - "[ocamlgraph] do not use Matrix.create; please use Matrix.make instead" - - let make n = - if n < 0 then invalid_arg "[ocamlgraph] Matrix.make"; - Array.init n (fun _ -> Bitv.create n false) - - let is_directed = true - - let nb_vertex = Array.length - let is_empty g = nb_vertex g = 0 - let nb_edges = - Array.fold_left (Bitv.fold_left (fun n b -> if b then n+1 else n)) 0 - - let mem_vertex g v = 0 <= v && v < nb_vertex g - let mem_edge g i j = Bitv.get g.(i) j - let mem_edge_e g (i,j) = Bitv.get g.(i) j - let find_edge g i j = if mem_edge g i j then i, j else raise Not_found - let find_all_edges g i j = try [ find_edge g i j ] with Not_found -> [] - - (* constructors *) - let add_edge g i j = Bitv.set g.(i) j true - let add_edge_e g (i,j) = Bitv.set g.(i) j true - - let remove_edge g i j = Bitv.set g.(i) j false - let remove_edge_e g (i,j) = Bitv.set g.(i) j false - - let unsafe_add_edge g i j = - Bitv.unsafe_set (Array.unsafe_get g i) j true - let unsafe_remove_edge g i j = - Bitv.unsafe_set (Array.unsafe_get g i) j false - - let remove_vertex _ _ = () - let add_vertex _ _ = () - - let clear g = - Array.iter (fun b -> Bitv.iteri (fun j _ -> Bitv.set b j false) b) g - - let copy g = Array.init (nb_vertex g) (fun i -> Bitv.copy g.(i)) - - (* iter/fold on all vertices/edges of a graph *) - let iter_vertex f g = - for i = 0 to nb_vertex g - 1 do f i done - - let iter_edges f g = - for i = 0 to nb_vertex g - 1 do - Bitv.iteri (fun j b -> if b then f i j) g.(i) - done - - let fold_vertex f g a = - let n = nb_vertex g in - let rec fold i a = if i = n then a else fold (i+1) (f i a) in fold 0 a - - let fold_edges f g a = - fold_vertex - (fun i a -> - Bitv.foldi_right (fun j b a -> if b then f i j a else a) g.(i) a) - g a - - (* successors and predecessors of a vertex *) - let succ g i = - Bitv.foldi_left (fun l j b -> if b then j::l else l) [] g.(i) - - let pred g i = - fold_vertex - (fun j a -> if Bitv.unsafe_get g.(j) i then j :: a else a) - g [] - - (* iter/fold on all successor/predecessor of a vertex. *) - let iter_succ f g i = - let si = g.(i) in - for j = 0 to nb_vertex g - 1 do if Bitv.unsafe_get si j then f j done - (* optimization w.r.t. - [Bitv.iteri (fun j b -> if b then f j) g.(i)] - *) - - let iter_pred f g i = - for j = 0 to nb_vertex g - 1 do if Bitv.unsafe_get g.(j) i then f j done - - let fold_succ f g i a = - Bitv.foldi_right (fun j b a -> if b then f j a else a) g.(i) a - - let fold_pred f g i a = - fold_vertex - (fun j a -> if Bitv.unsafe_get g.(j) i then f j a else a) - g a - - (* degree *) - let out_degree g i = fold_succ (fun _ n -> n + 1) g i 0 - - let in_degree g i = fold_pred (fun _ n -> n + 1) g i 0 - - (* map iterator on vertex *) - let map_vertex f g = - let n = nb_vertex g in - let g' = make n in - iter_edges - (fun i j -> - let fi = f i in - let fj = f j in - if fi < 0 || fi >= n || fj < 0 || fj >= n then - invalid_arg "[ocamlgraph] map_vertex"; - Bitv.unsafe_set g'.(fi) fj true) - g; - g' - - (* labeled edges going from/to a vertex *) - (* successors and predecessors of a vertex *) - let succ_e g i = - Bitv.foldi_left (fun l j b -> if b then (i,j)::l else l) [] g.(i) - - let pred_e g i = - fold_vertex - (fun j a -> if Bitv.unsafe_get g.(j) i then (j,i) :: a else a) - g [] - - (* iter/fold on all labeled edges of a graph *) - let iter_edges_e f g = - for i = 0 to nb_vertex g - 1 do - Bitv.iteri (fun j b -> if b then f (i,j)) g.(i) - done - - let fold_edges_e f g a = - fold_vertex - (fun i a -> - Bitv.foldi_right (fun j b a -> if b then f (i,j) a else a) g.(i) a) - g a - - (* iter/fold on all edges going from/to a vertex *) - let iter_succ_e f g i = - let si = g.(i) in - for j = 0 to nb_vertex g - 1 do if Bitv.unsafe_get si j then f (i,j) done - - let iter_pred_e f g i = - for j = 0 to nb_vertex g - 1 do - if Bitv.unsafe_get g.(j) i then f (j,i) - done - - let fold_succ_e f g i a = - Bitv.foldi_right (fun j b a -> if b then f (i,j) a else a) g.(i) a - - let fold_pred_e f g i a = - fold_vertex - (fun j a -> if Bitv.unsafe_get g.(j) i then f (j,i) a else a) - g a - - end - - module Graph = struct - - module G = struct include Digraph type return = unit end - include Blocks.Graph(G) - - (* Export some definitions of [G] *) - let make = G.make - - (* Redefine the [add_edge] and [remove_edge] operations *) - - let add_edge g v1 v2 = - G.add_edge g v1 v2; - ignore (G.unsafe_add_edge g v2 v1) - - let add_edge_e g (v1, v2) = add_edge g v1 v2 - - let remove_edge g v1 v2 = - G.remove_edge g v1 v2; - ignore (G.unsafe_remove_edge g v2 v1) - - let remove_edge_e g (v1, v2) = remove_edge g v1 v2 - - end - -end - -(* Faster implementations when vertices are not shared between graphs. *) -(**** - module UV = struct - - let cpt_vertex = ref min_int - - type ('label, 'succ) vertex = { - tag : int; - label : 'label; - mutable mark : int; - mutable succ : 'succ; - } - - module Digraph = struct - - module Abstract(L: ANY_TYPE) : - Sig.IM with type V.label = L.t and type E.label = unit - = - struct - - module rec V : - VERTEX with type label = L.t and type t = (L.t, S.t) vertex = - struct - type label = L.t - type t = (L.t, S.t) vertex - - let compare x y = compare x.tag y.tag - let hash x = Hashtbl.hash x.tag - let equal x y = x.tag = y.tag - let label x = x.label - - let create l = - assert (!cpt_vertex < max_int); - incr cpt_vertex; - { tag = !cpt_vertex; label = l; mark = 0; succ = S.empty } - end - and S : Set.S with type elt = V.t = Set.Make(V) - - type vertex = V.t - - module E = struct - type t = V.t * V.t - type vertex = V.t - let compare = Pervasives.compare - type label = unit - let create v1 _ v2 = (v1, v2) - let src = fst - let dst = snd - let label _ = () - end - - type edge = E.t - - type t = { - mutable vertices : S.t; - } - - let create ?size () = { vertices = S.empty } - let is_directed = true - let is_empty g = S.is_empty g.vertices - let nb_vertex g = S.cardinal g.vertices - let out_degree _ v = S.cardinal v.succ - let clear g = g.vertices <- S.empty - - let add_vertex g v = g.vertices <- S.add v g.vertices - let mem_vertex g v = S.mem v g.vertices - let iter_vertex f g = S.iter f g.vertices - let fold_vertex f g = S.fold f g.vertices - let succ _ v = S.elements v.succ - let succ_e _ v = List.map (fun w -> (v, w)) (S.elements v.succ) - let iter_succ f _ v = S.iter f v.succ - let iter_succ_e f _ v = S.iter (fun w -> f (v, w)) v.succ - let fold_succ f _ v acc = S.fold f v.succ acc - let fold_succ_e f _ v acc = S.fold (fun w acc -> f (v, w) acc) v.succ acc - - let add_edge _ v1 v2 = v1.succ <- S.add v2 v1.succ - let add_edge_e g (v1, v2) = add_edge g v1 v2 - let mem_edge _ v1 v2 = S.mem v2 v1.succ - let mem_edge_e g (v1, v2) = mem_edge g v1 v2 - let remove_edge _ v1 v2 = v1.succ <- S.remove v2 v1.succ - let remove_edge_e g (v1, v2) = remove_edge g v1 v2 - let nb_edges g = fold_vertex (fun v n -> n + S.cardinal v.succ) g 0 - - let find_edge g i j = if mem_edge g i j then i, j else raise Not_found - let find_all_edges g i j = try [ find_edge g i j ] with Not_found -> [] - - module Mark = struct - type graph = t - type vertex = V.t - let clear g = S.iter (fun v -> v.mark <- 0) g.vertices - let get v = v.mark - let set v m = v.mark <- m - end - end - - module AbstractLabeled (V: ANY_TYPE)(E: ORDERED_TYPE_DFT) : - Sig.IM with type V.label = V.t and type E.label = E.t - = - AbstractLabeled - (V)(struct type t = unit let compare _ _ = 0 let default = () end) - - end - - (** - module Graph = struct - - module Abstract(V: ANY_TYPE) : - Sig.IM with type V.label = V.t and type E.label = unit - - module AbstractLabeled (V: ANY_TYPE)(E: ORDERED_TYPE_DFT) : - Sig.IM with type V.label = V.t and type E.label = E.t - - end - **) - end - ****) - -(* -Local Variables: -compile-command: "make -C .." -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/src/imperative.mli b/jscomp/build_tests/ocamlgraph/src/imperative.mli deleted file mode 100755 index 3c532b68e3..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/imperative.mli +++ /dev/null @@ -1,159 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Imperative Graph Implementations. *) - -open Sig - -(** Signature of imperative graphs. *) -module type S = sig - - (** Edges may be labeled or not: - - Unlabeled: there is no label on edges - - Labeled: you have to provide a label implementation as a functor - parameter. - - Vertices may be concrete or abstract: - - Concrete: type of vertex labels and type of vertices are identified. - - Abstract: type of vertices is abstract (in particular it is not equal - to type of vertex labels - - How to choose between concrete and abstract vertices for my graph - implementation? - - Usually, if you fall into one of the following cases, use abstract - vertices: - - you cannot provide efficient comparison/hash functions for vertices; or - - you wish to get two different vertices with the same label. - - In other cases, it is certainly easier to use concrete vertices. *) - - (** Imperative Unlabeled Graphs. *) - module Concrete (V: COMPARABLE) : - Sig.I with type V.t = V.t and type V.label = V.t and type E.t = V.t * V.t - and type E.label = unit - - (** Abstract Imperative Unlabeled Graphs. *) - module Abstract(V: ANY_TYPE) : - Sig.IM with type V.label = V.t and type E.label = unit - - (** Imperative Labeled Graphs. *) - module ConcreteLabeled (V: COMPARABLE)(E: ORDERED_TYPE_DFT) : - Sig.I with type V.t = V.t and type V.label = V.t - and type E.t = V.t * E.t * V.t and type E.label = E.t - - (** Abstract Imperative Labeled Graphs. *) - module AbstractLabeled (V: ANY_TYPE)(E: ORDERED_TYPE_DFT) : - Sig.IM with type V.label = V.t and type E.label = E.t - -end - -(** Imperative Directed Graphs. *) -module Digraph : sig - - include S - - (** {2 Bidirectional graphs} - - Bidirectional graphs use more memory space (at worse the double) that - standard concrete directional graphs. But accessing predecessors is in - O(1) amortized instead of O(max(|V|,|E|)) and removing a vertex is in - O(D*ln(D)) instead of O(|V|*ln(D)). D is the maximal degree of the - graph. *) - - (** Imperative Unlabeled, bidirectional graph. *) - module ConcreteBidirectional (V: COMPARABLE) : - Sig.I with type V.t = V.t and type V.label = V.t and type E.t = V.t * V.t - and type E.label = unit - - (** Imperative Labeled and bidirectional graph. *) - module ConcreteBidirectionalLabeled(V:COMPARABLE)(E:ORDERED_TYPE_DFT) : - Sig.I with type V.t = V.t and type V.label = V.t - and type E.t = V.t * E.t * V.t and type E.label = E.t - -end - -(** Imperative Undirected Graphs. *) -module Graph : S - -(** Imperative graphs implemented as adjacency matrices. *) -module Matrix : sig - - module type S = sig - - (** Vertices are integers in [0..n-1]. - A vertex label is the vertex itself. - Edges are unlabeled. *) - - include Sig.I with type V.t = int and type V.label = int - and type E.t = int * int - - (** Creation. graphs are not resizeable: size is given at creation time. - Thus [make] must be used instead of [create]. *) - val make : int -> t - - (** Note: [add_vertex] and [remove_vertex] have no effect. - [clear] only removes edges, not vertices. *) - - end - - module Digraph : S - (** Imperative Directed Graphs implemented with adjacency matrices. *) - - module Graph : S - (** Imperative Undirected Graphs implemented with adjacency matrices. *) - -end - -(**** - (** Faster implementations for abstract (un)labeled (di)graphs - when vertices are _not shared_ between different graphs. - This means that, when using the following implementations, two different - graphs (created with two calls to [create]) must have disjoint sets of - vertices. *) - module UV : sig - - (** directed graphs *) - module Digraph : sig - - module Abstract(V: ANY_TYPE) : - Sig.IM with type V.label = V.t and type E.label = unit - - module AbstractLabeled (V: ANY_TYPE)(E: ORDERED_TYPE_DFT) : - Sig.IM with type V.label = V.t and type E.label = E.t - - end - - (** undirected graphs *) - module Graph : sig - - module Abstract(V: ANY_TYPE) : - Sig.IM with type V.label = V.t and type E.label = unit - - module AbstractLabeled (V: ANY_TYPE)(E: ORDERED_TYPE_DFT) : - Sig.IM with type V.label = V.t and type E.label = E.t - - end - - end - ****) - -(* -Local Variables: -compile-command: "make -C .." -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/src/kruskal.ml b/jscomp/build_tests/ocamlgraph/src/kruskal.ml deleted file mode 100755 index 669023cba0..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/kruskal.ml +++ /dev/null @@ -1,71 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: kruskal.ml,v 1.5 2005-06-30 10:48:55 filliatr Exp $ *) - -module type UNIONFIND = sig - type elt - type t - val init : elt list -> t - val find : elt -> t -> elt - val union : elt -> elt -> t -> unit -end - -module type G = sig - type t - module V : Sig.COMPARABLE - module E : sig - type t - type label - val label : t -> label - val dst : t -> V.t - val src : t -> V.t - end - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val iter_edges_e : (E.t -> unit) -> t -> unit -end - -module Generic - (G: G) - (W : Sig.ORDERED_TYPE with type t = G.E.label) - (UF: UNIONFIND with type elt = G.V.t) = -struct - - let spanningtree g = - let vertices = G.fold_vertex (fun v a -> v :: a) g [] in - let uf = UF.init vertices in - let edges = - let l = ref [] in - G.iter_edges_e (fun e -> l := e :: !l) g; - List.sort (fun e e'-> W.compare (G.E.label e) (G.E.label e')) !l - in - let s = ref [] in - let cover e = - let u, v = G.E.src e, G.E.dst e in - if G.V.compare (UF.find u uf) (UF.find v uf) <> 0 then begin - UF.union u v uf; - s := e :: !s - end - in - List.iter cover edges; - !s - -end - -module Make(G: G)(W : Sig.ORDERED_TYPE with type t=G.E.label) = - Generic(G)(W)(Unionfind.Make(G.V)) - diff --git a/jscomp/build_tests/ocamlgraph/src/kruskal.mli b/jscomp/build_tests/ocamlgraph/src/kruskal.mli deleted file mode 100755 index b955e2ed48..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/kruskal.mli +++ /dev/null @@ -1,65 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: kruskal.mli,v 1.5 2005-06-30 10:48:55 filliatr Exp $ *) - -(** Kruskal's minimum-spanning-tree algorithm. *) - -(** Minimal graph signature for Kruskal. - Sub-signature of {!Sig.G}. *) -module type G = sig - type t - module V : Sig.COMPARABLE - module E : sig - type t - type label - val label : t -> label - val dst : t -> V.t - val src : t -> V.t - end - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val iter_edges_e : (E.t -> unit) -> t -> unit -end - -(** Functor providing an implementation of Kruskal's minimum-spanning-tree - algorithm. - Parameter [W] ensures that label on edges are comparable. *) -module Make(G: G)(W: Sig.ORDERED_TYPE with type t = G.E.label) : sig - val spanningtree : G.t -> G.E.t list -end - -(** {2 Generic version where union-find implementation is provided} *) - -(** Signature of union-find. *) -module type UNIONFIND = sig - type elt - type t - val init : elt list -> t - val find : elt -> t -> elt - val union : elt -> elt -> t -> unit -end - -(** Functor providing an implementation of Kruskal's minimum-spanning-tree - algorithm using a user-defined union-find algorithm. - Parameter [W] ensures that label on edges are comparable. *) -module Generic - (G: G) - (W: Sig.ORDERED_TYPE with type t = G.E.label) - (UF: UNIONFIND with type elt = G.V.t) : -sig - val spanningtree : G.t -> G.E.t list -end diff --git a/jscomp/build_tests/ocamlgraph/src/leaderlist.ml b/jscomp/build_tests/ocamlgraph/src/leaderlist.ml deleted file mode 100755 index ecd2dd88a3..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/leaderlist.ml +++ /dev/null @@ -1,88 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* Copyright (c) 2010 - 2011 Technische Universitaet Muenchen - * Markus W. Weissmann - * Florian Pichlmeier - * All rights reserved. *) - -(* Minimal graph signature for leader list algorithm *) -module type G = sig - type t - module V : Sig.COMPARABLE - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val succ : t -> V.t -> V.t list - val pred : t -> V.t -> V.t list -end - -module Make - (G : G) = -struct - module S = Set.Make(G.V) - - let leader_lists g root = - (* partition all vertices into two Sets *) - let partition_vertices f g = - G.fold_vertex - (fun n (s1, s2) -> - if f n then (S.add n s1, s2) else (s1, S.add n s2)) - g (S.empty, S.empty) - in - - (* predicate to determine if a node is a leader *) - let is_leader n = - if n = root then true (* the root node is always a leader *) - else - match G.pred g n with - | [] -> - true - (* this would be dead code -- - it has no predecessor so make it a leader anyway *) - | x::[] -> begin match G.succ g x with - | [] -> - assert false (* -> inconsistency in the graph implementation *) - | _::[] -> - false (* this is a straight, continuous control flow *) - | _ -> - true (* predecessor has multiple successors *) - end - | _ -> true (* more than one predecessor *) - in - let (leader, entourage) = partition_vertices is_leader g in - (* build a basic block *) - let basic_block x = - let rec basic_block x bb = - match G.succ g x with - | [] -> x::bb (* no successors -- end of basic block *) - | y::_ -> begin match S.mem y entourage with - | true -> - (* successor is not a leader, continue collecting *) - basic_block y (x::bb) - | false -> - x :: bb (* successor is a leader -- end of basic block *) - end - in - (* blocks a are built in reverse order for performance reasons -- - correct that *) - List.rev (basic_block x []) - in - let basic_block_list = S.fold (fun x ss -> (basic_block x)::ss) leader [] in - List.rev basic_block_list - (* this will bring the head of the lists in ascending order -- - as given by Set.S *) -end - diff --git a/jscomp/build_tests/ocamlgraph/src/leaderlist.mli b/jscomp/build_tests/ocamlgraph/src/leaderlist.mli deleted file mode 100755 index 2ae6230e01..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/leaderlist.mli +++ /dev/null @@ -1,43 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* Copyright (c) 2010 - 2011 Technische Universitaet Muenchen - * Markus W. Weissmann - * Florian Pichlmeier - * All rights reserved. *) - -(** The leader list algorithm; it generates a list of basic blocks from - a directed graph. A basic block is a forward path of nodes that requires - neither branching from nor into. -*) - -(** Minimal graph signature for leader list algorithm *) -module type G = sig - type t - module V : Sig.COMPARABLE - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val succ : t -> V.t -> V.t list - val pred : t -> V.t -> V.t list -end - -module Make - (G : G) : -sig - val leader_lists : G.t -> G.V.t -> G.V.t list list - (** [leader_lists graph root] computes the leader lists or basic blocks - of the given graph. The node [root] is always a leader of a basic block. *) -end diff --git a/jscomp/build_tests/ocamlgraph/src/mcs_m.ml b/jscomp/build_tests/ocamlgraph/src/mcs_m.ml deleted file mode 100755 index d481045d70..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/mcs_m.ml +++ /dev/null @@ -1,188 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: mcs_m.mli,v 1.2 2004-10-19 15:21:44 signoles Exp $ *) - -module MaximalCardinalitySearch = struct - - module WeightedV(V : Sig.COMPARABLE) = struct - include Util.DataV(struct type t = int end)(V) - let weight = data - let set_weight = set_data - end - - module P(Gr : Sig.P) = struct - type edgelist = (Gr.V.t * Gr.V.t) list - - module NewV = WeightedV(Gr.V) - module G = Persistent.Graph.Concrete(NewV) - module EdgeSet = Set.Make(G.E) - module VerticesSet = Set.Make(NewV) - module Choose = Oper.Choose(G) - module H = Hashtbl.Make(NewV) - - let check_path g u v = - let h = H.create 97 in - let maxw = NewV.weight u in - let rec aux x : bool = - if H.mem h x then - false - else - if x = v then true - else - if NewV.weight x < maxw || x = u then - begin - H.add h x (); - G.fold_succ - (fun x found -> - if not found then aux x - else found) - g x false - end - else (H.add h x (); false) - in aux u - - module Copy = Gmap.Vertex(Gr)(struct include G include Builder.P(G) end) - - let fold f d = - let rec aux = function - (true, a) -> aux (f a) - | (false, a) -> a - in aux d - - let mcsm g = - let g' = Copy.map (NewV.create 0) g in - let (_, _, ord, triang) = - fold - (fun ((i, g', a, f) as x)-> - if i = 0 then (false, x) - else - let v = - G.fold_vertex - (fun x max -> - if NewV.weight x > NewV.weight max then x else max) - g' (ref 0, snd (Choose.choose_vertex g')) - in - let s = - G.fold_vertex - (fun x s -> - if x = v then s - else - if check_path g' x v then - VerticesSet.add x s - else s) - g' VerticesSet.empty - in - let f' = - VerticesSet.fold - (fun x f -> - NewV.set_weight x (succ (NewV.weight x)); - if not (G.mem_edge g' x v) then - EdgeSet.add (x,v) f - else f) - s f - in - let g' = G.remove_vertex g' v in - let a' = (i, NewV.label v) :: a in - (true, (i - 1, g', a', f'))) - (true, (Gr.nb_vertex g, g', [], EdgeSet.empty)) - in - (List.rev ord, - EdgeSet.fold - (fun (x, y) e -> (NewV.label x, NewV.label y) :: e) - triang []) - - let triangulate g = - let (_, triang) = mcsm g in - List.fold_left (fun g (x, y) -> Gr.add_edge g x y) g triang - end - - module I(Gr : Sig.I) = struct - type edgelist = (Gr.V.t * Gr.V.t) list - - module NewV = WeightedV(Gr.V) - module G = Imperative.Graph.Concrete(NewV) - module EdgeSet = Set.Make(G.E) - module VerticesSet = Set.Make(NewV) - module Choose = Oper.Choose(G) - module H = Hashtbl.Make(NewV) - - let check_path g u v = - let h = H.create 97 in - let maxw = NewV.weight u in - let rec aux x : bool = - if H.mem h x then - false - else - if x = v then true - else - if NewV.weight x < maxw || x = u then begin - H.add h x (); - G.fold_succ - (fun x found -> - if not found then aux x - else found) - g x false - end else (H.add h x (); false) - in aux u - - module Copy = Gmap.Vertex(Gr)(struct include G include Builder.I(G) end) - - let mcsm g = - let f = ref EdgeSet.empty - and a = ref [] - and g' = Copy.map (NewV.create 0) g in - for i = Gr.nb_vertex g downto 1 do - let v = - G.fold_vertex - (fun x max -> - if NewV.weight x > NewV.weight max then x else max) - g' (ref 0, snd (Choose.choose_vertex g')) - in - let s = - G.fold_vertex - (fun x s -> - if x = v then s - else - if check_path g' x v then - VerticesSet.add x s - else s) - g' VerticesSet.empty - in - let f' = - VerticesSet.fold - (fun x f -> - NewV.set_weight x (succ (NewV.weight x)); - if not (G.mem_edge g' x v) then - EdgeSet.add (x,v) f - else f) - s !f - in - f := f'; - G.remove_vertex g' v; - a := (i, NewV.label v) :: !a; - done; - (List.rev !a, - EdgeSet.fold - (fun (x, y) e -> (NewV.label x, NewV.label y) :: e) - !f []) - - let triangulate g = - let (_, triang) = mcsm g in - List.iter (fun (x, y) -> Gr.add_edge g x y) triang - end -end diff --git a/jscomp/build_tests/ocamlgraph/src/mcs_m.mli b/jscomp/build_tests/ocamlgraph/src/mcs_m.mli deleted file mode 100755 index 8029744abc..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/mcs_m.mli +++ /dev/null @@ -1,51 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: mcs_m.mli,v 1.2 2004-10-19 15:21:44 signoles Exp $ *) - -(** Maximal Cardinality Search (MCS-M) algorithm - - Based on the article: - Maximal Cardinality Search for Computing Minimal Triangulations of Graphs. - by A. Berry, Jean R. S. Blair, Pinar Heggernes & Barry W. Peyton. - - @author Matthieu Sozeau - @author Pierre-Loic Garoche *) - -module MaximalCardinalitySearch : sig - module P(G : Sig.P) : sig - type edgelist = (G.V.t * G.V.t) list - - (** [mcsm g] returns a tuple [(o, e)] where [o] is a perfect elimination - order of [g'] where [g'] is the triangulation [e] applied to [g]. *) - val mcsm : G.t -> (int * G.V.t) list * edgelist - - (** [triangulate g] computes a triangulation of [g] - using the MCS-M algorithm *) - val triangulate : G.t -> G.t - end - module I(Gr : Sig.I) : sig - type edgelist = (Gr.V.t * Gr.V.t) list - - (** [mcsm g] return a tuple [(o, e)] where o is a perfect elimination order - of [g'] where [g'] is the triangulation [e] applied to [g]. *) - val mcsm : Gr.t -> (int * Gr.V.t) list * edgelist - - (** [triangulate g] triangulates [g] using the MCS-M algorithm *) - val triangulate : Gr.t -> unit - end -end diff --git a/jscomp/build_tests/ocamlgraph/src/md.ml b/jscomp/build_tests/ocamlgraph/src/md.ml deleted file mode 100755 index 3f2f2940f6..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/md.ml +++ /dev/null @@ -1,148 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -module P(G : Sig.P) = struct - - module VertexSet = Set.Make(G.V) - module CT = Cliquetree.CliqueTree(G) - module Choose = Oper.Choose(G) - - type edgeset = (G.V.t * G.V.t) list - - let md g = - let gref = ref g in - let gtri = ref g in - let n = G.nb_vertex g in - let tri = ref [] in - let ord = ref [] in - let i = ref 0 in - while not (CT.is_chordal !gtri) && !i < n do - let v = - let x = - G.fold_vertex - (fun v' x -> - let deg' = G.out_degree !gref v' in - match x with - Some (_,deg) when deg' > deg -> x - | _ -> Some (v', deg')) - !gref None - in match x with - Some (v,_) -> v - | None -> failwith "Expecting some vertex" - in - let ng = G.succ !gref v in - let g', tri' = - List.fold_left - (fun (g, tri) v -> - let tri' = - List.fold_left - (fun tri v' -> - if v <> v' && not (G.mem_edge g v v') then - (v, v') :: tri - else tri) - tri ng - in - let g' = - List.fold_left - (fun g v' -> - if v <> v' then - G.add_edge g v v' - else g) - g ng - in - (g', tri')) - (!gref, []) ng - in - ord := v :: !ord; - gtri := List.fold_left - (fun g (x,y) -> G.add_edge g x y) - !gtri tri'; - gref := G.remove_vertex g' v; - tri := tri' @ !tri; - incr i; - done; - (!gtri, !tri, !ord) - - let triangulate g = - let gtri, _, _ = md g in - gtri - -end - -module I(G : Sig.I) = struct - - module VertexSet = Set.Make(G.V) - module CT = Cliquetree.CliqueTree(G) - module Choose = Oper.Choose(G) - - type edgeset = (G.V.t * G.V.t) list - - module Copy = Gmap.Vertex(G)(struct include G include Builder.I(G) end) - - let md g = - let gtri = Copy.map (fun x -> x) g in - let gcur = Copy.map (fun x -> x) g in - let n = G.nb_vertex g in - let tri = ref [] in - let ord = ref [] in - let i = ref 0 in - while not (CT.is_chordal gtri) && !i < n do - let v = - let x = - G.fold_vertex - (fun v' x -> - let deg' = G.out_degree gcur v' in - match x with - Some (_,deg) when deg' > deg -> x - | _ -> Some (v', deg')) - gcur None - in match x with - Some (v,_) -> v - | None -> failwith "Expecting some vertex" - in - let ng = G.succ gcur v in - let tri' = - List.fold_left - (fun tri v -> - List.fold_left - (fun tri v' -> - let tri' = - if v <> v' && not (G.mem_edge g v v') then - (v, v') :: tri - else - tri - in - List.iter (fun v' -> if v <> v' then G.add_edge gcur v v') ng; - tri') - tri ng) - [] ng - in - ord := v :: !ord; - List.iter - (fun (x,y) -> G.add_edge gtri x y) - tri'; - G.remove_vertex gcur v; - tri := tri' @ !tri; - incr i; - done; - (gtri, !tri, !ord) - - let triangulate g = - let gtri, _, _ = md g in - gtri - -end diff --git a/jscomp/build_tests/ocamlgraph/src/md.mli b/jscomp/build_tests/ocamlgraph/src/md.mli deleted file mode 100755 index f2783d9652..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/md.mli +++ /dev/null @@ -1,55 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Minimum Degree algorithm - - Based on the article: - The Minimum Degree Heuristic and the Minimal Triangulation Process - by A. Berry, Pinar Heggernes & Geneviève Simonet. - - @author Matthieu Sozeau - @author Pierre-Loic Garoche *) - -module P(G : Sig.P) : sig - - type edgeset = (G.V.t * G.V.t) list - - val md : G.t -> G.t * edgeset * G.V.t list - (** [md g] return a tuple [(g', e, o)] where [g'] is - a triangulated graph, [e] is the triangulation of [g] and - [o] is a perfect elimination order of [g'] *) - - val triangulate : G.t -> G.t - (** [triangulate g] return the graph [g'] produced by applying - miminum degree to [g]. *) - -end - -module I(G : Sig.I) : sig - - type edgeset = (G.V.t * G.V.t) list - - val md : G.t -> G.t * edgeset * G.V.t list - (** [md g] return a tuple [(g', e, o)] where [g'] is - a triangulated graph, [e] is the triangulation of [g] and - [o] is a perfect elimination order of [g'] *) - - val triangulate : G.t -> G.t - (** [triangulate g] return the graph [g'] produced by applying - miminum degree to [g]. *) - -end diff --git a/jscomp/build_tests/ocamlgraph/src/merge.ml b/jscomp/build_tests/ocamlgraph/src/merge.ml deleted file mode 100755 index 4c1c4f16cf..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/merge.ml +++ /dev/null @@ -1,249 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2012 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -module type S = sig - type graph - type vertex - type edge - type edge_label - val merge_vertex: graph -> vertex list -> graph - val merge_edges_e: - ?src:vertex -> ?dst:vertex -> graph -> edge list -> graph - val merge_edges_with_label: - ?src:vertex -> ?dst:vertex -> ?label:edge_label -> graph -> edge_label - -> graph - val merge_isolabelled_edges: graph -> graph - val merge_ends: ?strict:bool -> ?specified_vertex:vertex -> graph -> graph - val merge_starts: ?strict:bool -> ?specified_vertex:vertex -> graph -> graph - val merge_scc: - ?loop_killer:bool -> ?specified_vertex:(vertex list -> vertex) -> graph -> - graph -end - -module B(B: Builder.S) = struct - - type graph = B.G.t - type vertex = B.G.vertex - type edge = B.G.edge - type edge_label = B.G.E.label - - let mem x ec = List.exists (fun y -> B.G.V.equal x y) ec - - let identify x ec = match ec with - | [] -> false , x - | y :: ec -> if mem x ec then true, y else false, x - - let identify_extremities g vl = - let f e accu = - let sx, x = identify (B.G.E.src e) vl in - let sy, y = identify (B.G.E.dst e) vl in - if sx || sy - then B.G.E.(create x (label e) y) :: accu - else accu - in - B.G.fold_edges_e f g [] - - (* – former buggy version – the case where v is neither the source nor the - destination of some arrow was not taken into account, so that vertices were - just removed - - let merge_vertex g vl = match vl with - | [] -> g - | _ :: vl' -> - let to_be_added = identify_extremities g vl in - let g = List.fold_left B.remove_vertex g vl' in - List.fold_left B.add_edge_e g to_be_added - *) - - let merge_vertex g vl = match vl with - | [] -> g - | v :: vl' -> - let to_be_added = identify_extremities g vl in - let g = List.fold_left B.remove_vertex g vl' in - if to_be_added = [] - then B.add_vertex g v - else List.fold_left B.add_edge_e g to_be_added - - let merge_edges_e ?src ?dst g el = match el with - | e :: el' -> - let el' = List.filter (B.G.mem_edge_e g) el' in - if el' <> [] - then - (let el = e :: el' in - let extremities e = B.G.E.(src e, dst e) in - let sources , destinations = List.split (List.map extremities el) in - let remove accu e = - try B.remove_edge_e accu e - with Invalid_argument _ -> g in - let g = List.fold_left remove g el in - if List.exists (fun v -> mem v destinations) sources then - let v = match src with - | None -> - (match dst with - | None -> List.hd sources - | Some w -> w) - | Some v -> v in - let g = merge_vertex g (v :: sources @ destinations) in - B.add_edge_e g B.G.E.(create v (label e) v) - else - let v = match src with None -> List.hd sources | Some v -> v in - let w = match src with - | None -> List.hd destinations - | Some w -> w in - let g = merge_vertex g sources in - let g = merge_vertex g destinations in - B.add_edge_e g B.G.E.(create v (label e) w)) - else g - | [] -> g - - let merge_edges_with_label ?src ?dst ?label g l = - let update_label e = match label with - | None -> e - | Some l -> B.G.E.(create (src e) l (dst e)) - in - let collect_edge e accu = - if B.G.E.label e = l - then (update_label e) :: accu - else accu - in - let edges_to_be_merged = B.G.fold_edges_e collect_edge g [] in - merge_edges_e ?src ?dst g edges_to_be_merged - - (* To deduce a comparison function on labels from a comparison function on - edges *) - - let compare_label g = - try - let default_vertex = - let a_vertex_of_g = ref None in - (try B.G.iter_vertex (fun v -> a_vertex_of_g := Some v ; raise Exit) g - with Exit -> ()); - match !a_vertex_of_g with - | Some v -> v - | None -> raise Exit (*hence g is empty*) in - fun l1 l2 -> - let e1 = B.G.E.create default_vertex l1 default_vertex in - let e2 = B.G.E.create default_vertex l2 default_vertex in - B.G.E.compare e1 e2 - with Exit -> (fun _ _ -> 0) - - let merge_isolabelled_edges g = - let module S = Set.Make(B.G.V) in - let do_meet s1 s2 = S.exists (fun x -> S.mem x s2) s1 in - let module M = - (* TODO: using [compare] here is really suspicious ... - DONE – yet not so clean *) - Map.Make(struct type t = B.G.E.label let compare = compare_label g end) - in - let accumulating e accu = - let l = B.G.E.label e in - try - let s , d = M.find l accu in - let s , d = B.G.E.(S.add (src e) s , S.add (dst e) d) in - M.add l (s, d) accu - with Not_found -> - M.add l B.G.E.(S.singleton (src e), S.singleton (dst e)) accu - in - let to_be_identified = B.G.fold_edges_e accumulating g M.empty in - let gathering _ (s, d) accu = - let to_be_gathered, others = List.partition (do_meet s) accu in - let accu = - List.fold_left (fun accu x -> S.union accu x) s to_be_gathered - :: others - in - let to_be_gathered , others = List.partition (do_meet d) accu in - List.fold_left (fun accu x -> S.union accu x) d to_be_gathered :: others - in - let to_be_identified = M.fold gathering to_be_identified [] in - List.fold_left - (fun accu s -> merge_vertex accu (S.elements s)) - g - to_be_identified - - let merge_ends ?(strict=false) ?specified_vertex g = - let accumulator v accu = - if - let out_d = B.G.out_degree g v in - out_d = 0 || - ((not strict) && out_d = List.length (B.G.find_all_edges g v v)) - then v :: accu - else accu - in - let ends = B.G.(fold_vertex accumulator g []) in - let to_be_merged = - match specified_vertex with - | Some v -> v :: ends - | None -> ends - in - merge_vertex g to_be_merged - - let merge_starts ?(strict=false) ?specified_vertex g = - let accumulator v accu = - if - let in_d = B.G.in_degree g v in - in_d = 0 || - ((not strict) && in_d = List.length (B.G.find_all_edges g v v)) - then v :: accu - else accu - in - let starts = B.G.(fold_vertex accumulator g []) in - let to_be_merged = - match specified_vertex with - | Some v -> v :: starts - | None -> starts - in - merge_vertex g to_be_merged - - let merge_scc ?(loop_killer=false) ?specified_vertex g = - let module C = Components.Make(B.G) in - let components = C.scc_list g in - let alter accu to_be_identified = - let to_be_identified = - match specified_vertex with - | None -> to_be_identified - | Some f -> (f to_be_identified) :: to_be_identified in - let v = List.hd to_be_identified in - let accu = merge_vertex accu to_be_identified in - if loop_killer - then B.remove_edge accu v v - else accu in - List.fold_left alter g components - -end - -module P(G: Sig.P) = B(Builder.P(G)) - -module I(G: Sig.I) = struct - include B(Builder.I(G)) - let merge_vertex g vl = ignore (merge_vertex g vl) - let merge_edges_e ?src ?dst g el = ignore (merge_edges_e ?src ?dst g el) - let merge_edges_with_label ?src ?dst ?label g l = - ignore (merge_edges_with_label ?src ?dst ?label g l) - let merge_isolabelled_edges g = ignore (merge_isolabelled_edges g) - let merge_ends ?strict ?specified_vertex g = - ignore (merge_ends ?strict ?specified_vertex g) - let merge_starts ?strict ?specified_vertex g = - ignore (merge_starts ?strict ?specified_vertex g) - let merge_scc ?loop_killer ?specified_vertex g = - ignore (merge_scc ?loop_killer ?specified_vertex g) -end - -(* -Local Variables: -compile-command: "make -C .." -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/src/merge.mli b/jscomp/build_tests/ocamlgraph/src/merge.mli deleted file mode 100755 index 0710811eb7..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/merge.mli +++ /dev/null @@ -1,144 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2012 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Provides functions to extend any module satisfying one of the signatures - Sig.P, Sig.I and Builder.S .*) - -module type S = sig - - type graph - type vertex - type edge - type edge_label - - val merge_vertex: graph -> vertex list -> graph - (** If no element of [vl] belongs to [g] then [merge_vertex g (v::vl)] is the - graph [g]. Otherwise the collection of vertices of [merge_vertex g - (v::vl)] is the collection of vertices of [g] from which all the elements - of [vl] were removed and to which [v] was added. Any edge of [merge_vertex - g (v::vl)] is an edge of [g] whose source (destination) was changed to [v] - if it belongs to [vl]. The function [merge_vertex] always returns a graph - with a smaller collection of vertices and a smaller collection of edges - (in the weak sense). However the labels appearing in [merge_vertex g - v::vl] are exactly the ones appearing in [g].*) - - val merge_edges_e: ?src:vertex -> ?dst:vertex -> graph -> edge list -> graph - (** If no element of [el] belongs to [g] then [merge_edges_e g (e::el)] is the - graph [g]. Otherwise the collection of vertices of [merge_edges_e g - (e::el)] is precisely the collection of vertices of [g] from which the - sources and the destinations of all the elements of [el] were removed and - to which the vertices [v] and [w] were added. If [dst] was provided then - [v] is [src] otherwise it is the source of [e]. If [dst] was provided then - [w] is [y] otherwise it is the destination of [e]. The collection of edges - of [merge_edges_e g e::el] is precisely the collection of edges of [g] - from which all the elements of [el] were removed and to which an edge from - [v] to [w] sharing the label of [e] was added; the edges of [g] being - understood up to the fact their source and destination were updated. Note - [v=w] if and only if the source of some element of [el] matches the - destination of some element of [el] (possibly the same).*) - - val merge_edges_with_label: - ?src:vertex -> ?dst:vertex -> ?label:edge_label -> graph -> edge_label - -> graph - (** The graph [merge_edges_with_label ?src ?tgt ?label g l] is the graph - [merge_edges_e ?src ?dst g el] with [el] being the list of all edges of - [g] carrying the label [l]. If the optional value [label] is provided then - the edge to which all the elements of [el] are identified carries the - label [label]. Otherwise it carries the label [l]. In particular - [merge_edges_with_label ?src ?tgt ?label g l] is the graph [g] if and only - if there is at most one edge of [g] carrying the label [l].*) - - val merge_isolabelled_edges: graph -> graph - (** The graph [merge_isolabelled_edges g] is obtained from [g] by - identifying two vertices when they are the sources (destinations) of two - edges sharing the same label. Therefore two distinct edges of the - returned graph cannot carry the same label. In particular if all the - edges share the same label then the returned graph is either empty (if - [g] is so) or a single vertex (if [g] has no edge and at least one - vertex) or a single vertex and a single edge (if [g] has both a vertex - and an edge). A label is carried by some edge of - [merge_isolabelled_edges g] if and only if it is carried by some edge of - [g].*) - - val merge_ends: ?strict:bool -> ?specified_vertex:vertex -> graph -> graph - (** A vertex [v] of [g] is called an end if every edge of [g] arriving to [v] - also starts from [v]. It is called a strict end if no edge of [g] arrives - to it. The graph [merge_ends g] is the graph [merge_vertex vl] where [vl] - is the list of (strict) ends of [g]. The vertex substituted to the ends - can be specified.*) - - val merge_starts: ?strict:bool -> ?specified_vertex:vertex -> graph -> graph - (** A vertex [v] of [g] is called a start if every edge of [g] starting from - [v] also arrives to [v]. It is called a strict start if no edge of [g] - starts from it. The graph [merge_starts g] is the graph [merge_vertex vl] - where [vl] is the list of (strict) starts of [g]. The vertex substituted - to the starts can be specified.*) - - val merge_scc: - ?loop_killer:bool -> ?specified_vertex:(vertex list -> vertex) -> graph -> - graph - (** The vertex of every strongly connected component are identified. If the - option [loop_killer] is set to [true] then all the edges between identified - vertices are removed. The option [specified_vertex] allows to choose the - vertex that replaces the elements of a strongly connected component.*) - -end - -(** Extension for the module [X].*) -module B(X: Builder.S) : S with type graph = X.G.t - and type vertex := X.G.vertex - and type edge := X.G.edge - and type edge_label = X.G.E.label - -(**Extension for the module [G].*) -module P(G: Sig.P): S with type graph = G.t - and type vertex := G.vertex - and type edge := G.edge - and type edge_label = G.E.label - -(**Extension for the module [G].*) -module I(G: Sig.I): sig - - (** Same specification than module type {!S} but modify the graph inplace - instead of returning a new graph. *) - - type graph = G.t - type vertex = G.vertex - type edge = G.edge - type edge_label = G.E.label - - val merge_vertex: graph -> vertex list -> unit - val merge_edges_e: ?src:vertex -> ?dst:vertex -> graph -> edge list -> unit - val merge_edges_with_label: - ?src:vertex -> ?dst:vertex -> ?label:edge_label -> graph -> edge_label - -> unit - val merge_isolabelled_edges: graph -> unit - val merge_ends: ?strict:bool -> ?specified_vertex:vertex -> graph -> unit - val merge_starts: ?strict:bool -> ?specified_vertex:vertex -> graph -> unit - val merge_scc: - ?loop_killer:bool -> ?specified_vertex:(vertex list -> vertex) -> graph -> - unit - -end - -(* -Local Variables: -compile-command: "make -C .." -End: -*) - -(*OCaml >= 3.12*) diff --git a/jscomp/build_tests/ocamlgraph/src/mincut.ml b/jscomp/build_tests/ocamlgraph/src/mincut.ml deleted file mode 100755 index 58d32ba9e6..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/mincut.ml +++ /dev/null @@ -1,98 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2013-2014 *) -(* David Monniaux, Gabriel Radanne *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -module type G = sig - type t - module V : Sig.VERTEX - val succ : t -> V.t -> V.t list -end - -module Make (G : G) = struct - - module H = Hashtbl.Make (G.V) - - let find_default htbl x = - try H.find htbl x - with Not_found -> false - - let min_cutset gr first_node = - let n_labels = H.create 97 in - let l_labels = H.create 97 in - - let already_processed = H.create 97 in - let is_already_processed x = find_default already_processed x in - - let on_the_stack = H.create 97 in - let is_on_the_stack x = find_default on_the_stack x in - - let cut_set = ref [] in - let counter = ref 1 in - - let rec step2 top rest_of_stack = - assert (not (is_already_processed top)); - assert (not (is_on_the_stack top)); - H.add on_the_stack top true; - H.add n_labels top !counter; - counter := !counter + 1; - H.add l_labels top 0; - H.add already_processed top true; - step3 (G.succ gr top) top rest_of_stack - - and step3 successors top rest_of_stack = match successors with - | successor :: other_successors -> - if not (is_already_processed successor) - (* step 4 *) - then step2 successor ((top,successors)::rest_of_stack) - (* step 5 *) - else begin - let x = - if is_on_the_stack successor - then H.find n_labels successor - else H.find l_labels successor - in - H.add l_labels top - (max (H.find l_labels top) x) ; - step3 other_successors top rest_of_stack - end - - | [] -> begin - (* step 7 *) - if H.find l_labels top = H.find n_labels top - then begin - cut_set := top::!cut_set ; - H.add l_labels top 0 ; - end ; - - (* check added between algorithms C and D *) - if H.find l_labels top > H.find n_labels top - then raise (Invalid_argument "Graph.Mincut: graph not reducible") - - (* step 8 *) - else match rest_of_stack with - | [] -> !cut_set (* SUCCESS *) - | (new_top, new_successors)::new_tail -> begin - H.add on_the_stack top false; - H.add l_labels new_top - (max (H.find l_labels top) (H.find l_labels new_top)) ; - step3 new_successors new_top new_tail - end - end in - - (* step 2 *) - step2 first_node [] - -end diff --git a/jscomp/build_tests/ocamlgraph/src/mincut.mli b/jscomp/build_tests/ocamlgraph/src/mincut.mli deleted file mode 100755 index a6d6cdf4fc..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/mincut.mli +++ /dev/null @@ -1,42 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2013-2014 *) -(* David Monniaux, Gabriel Radanne *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Minimal cutset of a graph - - Compute a minimal vertex cutset of a reducible oriented graph. - The set [S] of vertices is a cutset of [G] if [G \ S] doesn't - contain any cycle. - - Based on the article: A linear time algorithm for finding minimum - cutsets in reducible graphs by A. Shamir (1979). -*) - -(** Minimal signature for computing the minimal separators *) -module type G = sig - type t - module V : Sig.VERTEX - val succ : t -> V.t -> V.t list -end - -module Make (G : G) : sig - - (** Find a minimal cutset. - @raise Invalid_argument if the graph is not reducible. - *) - val min_cutset : G.t -> G.V.t -> G.V.t list - -end diff --git a/jscomp/build_tests/ocamlgraph/src/minsep.ml b/jscomp/build_tests/ocamlgraph/src/minsep.ml deleted file mode 100755 index f94d94b20d..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/minsep.ml +++ /dev/null @@ -1,134 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -module type G = sig - type t - module V : Sig.COMPARABLE - val succ: t -> V.t -> V.t list - val iter_succ: (V.t -> unit) -> t -> V.t -> unit - val fold_succ: (V.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a - val iter_vertex: (V.t -> unit) -> t -> unit - val fold_vertex: (V.t -> 'a -> 'a) -> t -> 'a -> 'a -end - -module type MINSEP = sig - module G : G - module Vertex_Set : Set.S with type elt = G.V.t - module VSetset : Set.S with type elt = Vertex_Set.t - val allminsep : G.t -> Vertex_Set.t list - val list_of_allminsep : G.t -> G.V.t list list - val set_of_allminsep : G.t -> VSetset.t -end - -module Make - (G : sig - include G - val cc: t -> V.t list -> V.t list list - (** compute the set of connected components of G(V \ l) *) - end) = -struct - - module N = Oper.Neighbourhood(G) - module Vertex_Set: Set.S with type t = N.Vertex_Set.t - and type elt = G.V.t = N.Vertex_Set - module VSetset = Set.Make(N.Vertex_Set) - (* Use [N.Vertex_Set] instead of [Vertex_Set] in order to avoid an error with - ocamldoc 4.02. However this change requires to add extra type annotations - to module [Vertex_Set] above in order to prevent compilation error with - OCaml <= 4.0 :-(. *) - - let initialisation g = - let cc = G.cc g in - let neighbourhood = N.list_from_vertex g in - let neighbourhoods = N.set_from_vertices g in - G.fold_vertex - (fun v s -> - List.fold_left - (fun s l -> neighbourhoods l :: s) - s (cc (v :: neighbourhood v))) - g [] - - let generation g = - let neighbourhood = N.list_from_vertex g in - let neighbourhoods = N.set_from_vertices g in - let cc = G.cc g in - let rec gen_aux seen bigs = function - | [] -> bigs - | s :: tl -> - let l = Vertex_Set.elements s in - let seen = VSetset.add s seen in - let bigs, tl = - Vertex_Set.fold - (fun v _ -> - let add_neighbourhoods (bigs, tl) l = - let s = neighbourhoods l in - s :: bigs, if VSetset.mem s seen then tl else s :: tl - in - List.fold_left - add_neighbourhoods - (bigs, tl) (cc (l @ neighbourhood v))) - s (bigs, tl) - in - gen_aux seen bigs tl - in - fun bigs -> gen_aux VSetset.empty bigs bigs - - let allminsep g = generation g (initialisation g) - - let set_of_allminsep g = - List.fold_left - (fun bigs s -> VSetset.add s bigs) VSetset.empty (allminsep g) - - let list_of_allminsep g = List.map Vertex_Set.elements (allminsep g) - -end - -module P(G : sig include G val remove_vertex : t -> V.t -> t end) = struct - module G = G - include Make(struct - include G - let cc = - let module CC = Components.Make(G) in - fun g l -> - let g = List.fold_left remove_vertex g l in - CC.scc_list g - end) -end - -module I(G : sig - include G - module Mark : Sig.MARK with type graph = t and type vertex = V.t - end) = -struct - module G = G - include Make(struct - include G - let cc = - let module CC = - Components.Make - (struct - include G - let iter_vertex f = - iter_vertex (fun v -> if Mark.get v=0 then f v) - end) - in - fun g l -> - G.Mark.clear g; - List.iter (fun v -> G.Mark.set v 1) l; - CC.scc_list g - end) -end diff --git a/jscomp/build_tests/ocamlgraph/src/minsep.mli b/jscomp/build_tests/ocamlgraph/src/minsep.mli deleted file mode 100755 index a2bd3b48ae..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/minsep.mli +++ /dev/null @@ -1,68 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** - Minimal separators of a graph - - Based on the article: - Generating all the minimal separators of a graph. - by A. Berry, J.-P. Bordat and O.Cogis - http://www.isima.fr/berry/generating.html - - A set [S] of vertices is a minimal separator if it exists 2 distinct - connected components [C] and [D] in [G \ S] such that each vertex of [S] has - a successor in [C] and [D]. *) - -(** Minimal signature for computing the minimal separators *) -module type G = sig - type t - module V : Sig.COMPARABLE - val succ: t -> V.t -> V.t list - val iter_succ: (V.t -> unit) -> t -> V.t -> unit - val fold_succ: (V.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a - val iter_vertex: (V.t -> unit) -> t -> unit - val fold_vertex: (V.t -> 'a -> 'a) -> t -> 'a -> 'a -end - -module type MINSEP = sig - module G : G - (** Implementation of a graph *) - module Vertex_Set : Set.S with type elt = G.V.t - (** Implementation of a set of vertex *) - module VSetset : Set.S with type elt = Vertex_Set.t - (** Implementation of a set of [Vertex_Set] *) - - val allminsep : G.t -> Vertex_Set.t list - (** [allminsep g] computes the list of all minimal separators of g. *) - val list_of_allminsep : G.t -> G.V.t list list - (** Less efficient that [allminsep] *) - val set_of_allminsep : G.t -> VSetset.t - (** Less efficient that [allminsep] *) -end - -(** Implementation for a persistent graph *) -module P(G : sig include G val remove_vertex : t -> V.t -> t end) : - MINSEP with module G = G - -(** Implementation for an imperative graph. - Less efficient that the implementation for a persistent graph *) -module I(G : sig - include G - module Mark : Sig.MARK with type graph = t and type vertex = V.t - end) : - MINSEP with module G = G - diff --git a/jscomp/build_tests/ocamlgraph/src/nonnegative.ml b/jscomp/build_tests/ocamlgraph/src/nonnegative.ml deleted file mode 100755 index 9a7262dcfe..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/nonnegative.ml +++ /dev/null @@ -1,681 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* This module is a contribution of Yuto Takei *) - -module Imperative - (G: Sig.IM) - (W: Sig.WEIGHT with type edge = G.E.t) = struct - - module S = Set.Make(G.V) - module M = Map.Make(G.V) - - module V = G.V - module E = G.E - - (* [G.t] represents graph itself. [unit M.t] maintains a list of - source vertices to keep track of distances for all vertices. - [(G.E.t option * W.t) M.t M.t] holds mappings for all vertices, - each of which contains its shortest-path tree ancestor (parent) - and a distances from source vertices. *) - type t = G.t * S.t ref * (G.E.t option * W.t) M.t M.t ref - type edge = G.edge - type vertex = G.vertex - - let sov v = string_of_int (Obj.magic (V.label v)) - let dump_cycle cycle = - let v0 = G.E.src (List.hd cycle) in - print_string ("(" ^ (sov v0) ^ ")"); - let v1 = List.fold_left (fun v e -> - assert ((G.V.compare v (G.E.src e)) = 0); - let v = G.E.dst e in - print_string ("-(" ^ (sov v) ^ ")"); - v) v0 cycle in - assert (v0 = v1); - print_string "\n" - let dump_set = S.iter (fun x -> print_string ((sov x) ^ ", ")) - let dump (src, dist) = - print_string "====================\nS: "; - dump_set !src; - print_string "\nMap:"; - M.iter (fun k v -> - print_string ("\n " ^ (sov k) ^ ": "); - M.iter (fun k (origin, dist) -> - print_string ( - "(" ^ (sov k) ^ ">>" ^ - (match origin with - | None -> "---" - | Some e -> (sov (G.E.src e)) ^ ">" - ^ (sov (G.E.dst e))) ^ ":" ^ - (string_of_int (Obj.magic dist)) ^ ") ")) v) !dist; - print_string "\n" - - (* If an edge is going to be added to the graph, which will cause - a negative cycle, raises [Negative_cycle] with edges that can - form such the cycle. *) - exception Negative_cycle of G.E.t list - - let create ?size () = - let g = match size with - | Some size -> G.create ~size () - | None -> G.create () in - (g, ref S.empty, ref M.empty) - - let copy (g, src, dist) = - (G.copy g, ref (!src), ref (!dist)) - - let clear (g, src, dist) = - G.clear g; - src := S.empty; - dist := M.empty - - let add_vertex (g, src, dist) v = - (* Before adding vertex to the graph, make sure that the vertex - is not in the graph. If already in the graph, just do - nothing and return as is. *) - if not (G.mem_vertex g v) then begin - (* Add a vertex to the original one *) - G.add_vertex g v; - - (* The new vertex will immediately be added to the source list *) - src := S.add v !src; - - (* The new edge should contain a distance mapping with only - from myself with distance zero. *) - dist := M.add v (M.add v (None, W.zero) M.empty) !dist; - dump (src, dist) - end - - let rec propagate (g, src, dist) q start = - if Queue.is_empty q then (g, src, dist) - else begin - let (v1, v1src) = Queue.pop q in - let v1dist = M.find v1 dist in - - let dist = G.fold_succ_e (fun e dist -> - let v2 = G.E.dst e in - let v2dist = if M.mem v2 dist then M.find v2 dist else M.empty in - - (* Compare distances from given source vertices. - If relax happens, record it to the new list. *) - let (v2dist, nextSrc) = S.fold (fun x (v2dist, nextSrc) -> - let _, dev1 = M.find x v1dist in - let ndev2 = W.add dev1 (W.weight e) in - let improvement = - try - let _, dev2 = M.find x v2dist in - W.compare ndev2 dev2 < 0 - with Not_found -> true in - if improvement then - let v2dist = M.add x (Some e, ndev2) v2dist in - let nextSrc = S.add x nextSrc in - (v2dist, nextSrc) - else - (v2dist, nextSrc) - ) v1src (v2dist, S.empty) in - - if S.is_empty nextSrc then - dist - else if G.V.equal start v2 then - (* Propagation reaches back to the starting node, which - immediately means presence of a negative cycle. *) - - (* We should use one of 'src' to traverse to the start node *) - let dist = M.add v2 v2dist dist in - let cycle = S.fold (fun s x -> - let rec build_cycle x ret = - match M.find s (M.find x dist) with - | Some e, _ -> - let y = G.E.src e in - let cycle = e :: ret in - if G.V.equal start y then Some cycle - else build_cycle y cycle - | _ -> None in - match x with - | None -> build_cycle v2 [] - | Some _ -> x) nextSrc None in - let cycle = match cycle with - | Some x -> x | None -> assert false in - dump_cycle cycle; - raise (Negative_cycle cycle) - else - begin - (* TODO: Some room for improvement. - If queue has (v2, s) already, technically we can merge - nextSrc into s, so that the number of propagation can be - reduced. *) - Queue.push (v2, nextSrc) q; - M.add v2 v2dist dist - end - ) g v1 dist in - propagate (g, src, dist) q start - end - - let m_cardinal m = M.fold (fun _ _ acc -> acc+1) m 0 - let set_of_map m = M.fold (fun k _ acc -> S.add k acc) m S.empty - - let add_edge_internal (g, src, dist) v1 v2 = - (* Distance mappings at v1 *) - let dv1 = M.find v1 dist in - - (* To reduce the amount of codes, we just start propagation from - v1. Of course, this can be optimized by starting from v2. But - it may duplicate the same code in multiple places in the - file. In addition, such an optimization only cost for small - amount, which precisely is the operations to relax edges from - v1, other than which have been existed before this - [add_edge_e] call. *) - let q = Queue.create () in - - (* We need to check whether v2 should be kept in the source list - or not. That is, if there maybe a cycle with v1, the - distance from v1 should be still maintained. Otherwise, - simply ignore the distance from v2 *) - if m_cardinal dv1 = 1 && M.mem v2 dv1 then ( - (* Now we definitely introduced a loop (and possibly non-negative)! - Let me see if this would be negative or not... *) - Queue.add (v1, (S.add v2 S.empty)) q; - propagate (g, src, dist) q v1 - ) else ( - (* Or even if we fall back to else-clause here, the edge addition - may have introduced a cycle. Anyway, we need to check if one is - newly created or not at [propagate] *) - - let (src, dist, dv1) = - if not (S.mem v2 src) then - (* If v2 isn't one of the source vertices, just simply do - propagation. *) - (src, dist, dv1) - else - (* We can exclude v2 from the list of source because - one can reach v2 from some other vertex. *) - let src = S.remove v2 src in - - (* Note that following line can be skipped only if the - user don't remove vertex. Otherwise, such operation - like [add_edge g v1 v2] > [remove_vertex g v2] > - [add_vertex g v2] can result in unexpected - behavior. *) - let dist = M.map (M.remove v2) dist in - - (* We need to re-obtain the distance mappings at v1, - since it can be changed by the line above. *) - let dv1 = M.find v1 dist in - (src, dist, dv1) in - - (* Now let's start propagation. *) - Queue.add (v1, set_of_map dv1) q; - propagate (g, src, dist) q v1) - - let add_edge_e (g, src, dist) e = - (* Before adding edge to the graph, make sure that the edge is - not in the graph. If already in the graph, just do nothing - and return as is. *) - if not (G.mem_edge_e g e) then begin - (* Vertices involved *) - let v1 = G.E.src e in - let v2 = G.E.dst e in - List.iter (add_vertex (g, src, dist)) [v1 ; v2]; - - begin try - (* Because we can restore the graph by calling [G.remove_edge_e] - even in case of failure, we first add it by [G.add_edge_e]. *) - G.add_edge_e g e; - let (_, src', dist') = add_edge_internal (g, !src, !dist) v1 v2 in - src := src'; dist := dist' - with exp -> - (* In case of excecption, restore the graph by removing the - edge, and rethrow the exception. *) - G.remove_edge_e g e; - raise exp - end; - dump (src, dist) - end - - let add_edge (g, src, dist) v1 v2 = - (* Same as [add_edge_e] *) - if not (G.mem_edge g v1 v2) then begin - List.iter (add_vertex (g, src, dist)) [v1 ; v2]; - - begin try - (* Because we cannot know the default value for edge length, - we first try to add one by [G.add_edge]. If there occurs an - exception, restore the graph by [G.remove_edge] since there - were no other connections between [v1] and [v2]. *) - G.add_edge g v1 v2; - let (_, src', dist') = add_edge_internal (g, !src, !dist) v1 v2 in - src := src'; dist := dist' - with exp -> - (* In case of excecption, restore the graph by removing the - edge, and rethrow the exception. *) - G.remove_edge g v1 v2; - raise exp - end; - - dump (src, dist) - end - - let remove_edge_internal (g, src) v2 = - (* Actually, we need to rebuild the distance table, rather than - traverse precedants to remove the edge. *) - let q = Queue.create () in - print_string ("dump: "); - dump_set src; - let dist = S.fold (fun x dist -> - print_string ("source: " ^ (sov x) ^ "\n"); - Queue.add (x, (S.add x S.empty)) q; - M.add x (M.add x (None, W.zero) M.empty) dist) src M.empty in - let g, src, dist = propagate (g, src, dist) q (S.choose src) in - - if M.mem v2 dist then - (g, src, dist) - else ( - Queue.add (v2, (S.add v2 S.empty)) q; - let src = S.add v2 src in - let dist = M.add v2 (M.add v2 (None, W.zero) M.empty) dist in - propagate (g, src, dist) q v2) - - let remove_edge_e (g, src, dist) e = - (* Same as [add_edge_e] *) - if G.mem_edge_e g e then begin - G.remove_edge_e g e; - - (* Vertices involved *) - let v2 = G.E.dst e in - let (_, src', dist') = remove_edge_internal (g, !src) v2 in - src := src'; - dist := dist'; - - dump (src, dist) - end - - let remove_edge (g, src, dist) v1 v2 = - (* Same as [add_edge] *) - if G.mem_edge g v1 v2 then begin - G.remove_edge g v1 v2; - - let (_, src', dist') = remove_edge_internal (g, !src) v2 in - src := src'; - dist := dist'; - - dump (src, dist) - end - - let remove_vertex (g, src, dist) v = - (* Same as [add_edge] *) - if G.mem_vertex g v then begin - (* [remove_vertex] first deletes all outgoing edges from [v] *) - G.iter_succ_e (fun e -> remove_edge_e (g, src, dist) e) g v; - (* Then after, deletes all incoming edges to [v] *) - G.iter_pred_e (fun e -> remove_edge_e (g, src, dist) e) g v; - (* Note that we are iterating on [g] that is being modified during - iteration. We can do such an above iteration since G is here - permanent. Do not try this for imperative graph. *) - - (* Now we can feel free to delete [v]. *) - G.remove_vertex g v; - src := S.remove v !src; - dist := M.remove v (M.map (M.remove v) !dist); - - dump (src, dist) - end - - let map_vertex f (g, src, dist) = - let map_map update m = - M.fold (fun v m acc -> M.add (f v) (update m) acc) m M.empty - in - let (g, src, dist) = (G.map_vertex f g, - S.fold (fun v acc -> S.add (f v) acc) !src S.empty, - let update = function - | None, _ as v -> v - | Some e, w -> - Some (E.create (f (E.src e)) (E.label e) (f (E.dst e))), w - in - map_map (map_map update) !dist) in - (g, ref src, ref dist) - - let fold_pred_e f (g, _, _) = G.fold_pred_e f g - let iter_pred_e f (g, _, _) = G.iter_pred_e f g - let fold_succ_e f (g, _, _) = G.fold_succ_e f g - let iter_succ_e f (g, _, _) = G.iter_succ_e f g - let fold_pred f (g, _, _) = G.fold_pred f g - let fold_succ f (g, _, _) = G.fold_succ f g - let iter_pred f (g, _, _) = G.iter_pred f g - let iter_succ f (g, _, _) = G.iter_succ f g - let fold_edges_e f (g, _, _) = G.fold_edges_e f g - let iter_edges_e f (g, _, _) = G.iter_edges_e f g - let fold_edges f (g, _, _) = G.fold_edges f g - let iter_edges f (g, _, _) = G.iter_edges f g - let fold_vertex f (g, _, _) = G.fold_vertex f g - let iter_vertex f (g, _, _) = G.iter_vertex f g - let pred_e (g, _, _) = G.pred_e g - let succ_e (g, _, _) = G.succ_e g - let pred (g, _, _) = G.pred g - let succ (g, _, _) = G.succ g - let find_all_edges (g, _, _) = G.find_all_edges g - let find_edge (g, _, _) = G.find_edge g - let mem_edge_e (g, _, _) = G.mem_edge_e g - let mem_edge (g, _, _) = G.mem_edge g - let mem_vertex (g, _, _) = G.mem_vertex g - let in_degree (g, _, _) = G.in_degree g - let out_degree (g, _, _) = G.out_degree g - let nb_edges (g, _, _) = G.nb_edges g - let nb_vertex (g, _, _) = G.nb_vertex g - let is_empty (g, _, _) = G.is_empty g - let is_directed = G.is_directed - - module Mark = struct - type graph = t - type vertex = G.vertex - let clear g = let (g, _, _) = g in G.Mark.clear g - let get = G.Mark.get - let set = G.Mark.set - end - -end - -module Persistent - (G: Sig.P) - (W: Sig.WEIGHT with type edge = G.E.t) = struct - - module S = Set.Make(G.V) - module M = Map.Make(G.V) - - module E = G.E - module V = G.V - - (* [G.t] represents graph itself. [unit M.t] maintains a list of - source vertices to keep track of distances for all vertices. - [(G.E.t option * W.t) M.t M.t] holds mappings for all vertices, - each of which contains its shortest-path tree ancestor (parent) - and a distances from source vertices. *) - type t = G.t * S.t * (G.E.t option * W.t) M.t M.t - type edge = G.edge - type vertex = G.vertex - - (* If an edge is going to be added to the graph, which will cause - a negative cycle, raises [Negative_cycle] with edges that can - form such the cycle. *) - exception Negative_cycle of G.E.t list - - let empty : t = - let g = G.empty in - let src = S.empty in - let dist = M.empty in - (g, src, dist) - - let add_vertex (g, src, dist) v = - (* Before adding vertex to the graph, make sure that the vertex - is not in the graph. If already in the graph, just do - nothing and return as is. *) - if G.mem_vertex g v then - (g, src, dist) - else - (* Add a vertex to the original one *) - (G.add_vertex g v), - - (* The new vertex will immediately be added to the source list *) - (S.add v src), - - (* The new edge should contain a distance mapping with only - from myself with distance zero. *) - (M.add v (M.add v (None, W.zero) M.empty) dist) - - let rec propagate (g, src, dist) q start = - if Queue.is_empty q then (g, src, dist) - else begin - let (v1, v1src) = Queue.pop q in - let v1dist = M.find v1 dist in - - let dist = G.fold_succ_e (fun e dist -> - let v2 = G.E.dst e in - let v2dist = M.find v2 dist in - - (* Compare distances from given source vertices. - If relax happens, record it to the new list. *) - let (v2dist, nextSrc) = S.fold (fun x (v2dist, nextSrc) -> - let _, dev1 = M.find x v1dist in - let ndev2 = W.add dev1 (W.weight e) in - let improvement = - try - let _, dev2 = M.find x v2dist in - W.compare ndev2 dev2 < 0 - with Not_found -> true in - if improvement then - let v2dist = M.add x (Some e, ndev2) v2dist in - let nextSrc = S.add x nextSrc in - (v2dist, nextSrc) - else - (v2dist, nextSrc) - ) v1src (v2dist, S.empty) in - - if S.is_empty nextSrc then - dist - else if G.V.equal start v2 then - (* Propagation reaches back to the starting node, which - immediately means presence of a negative cycle. *) - - (* We should use one of 'src' to traverse to the start node *) - let s = S.choose nextSrc in - let rec build_cycle x ret = - match M.find s (M.find x dist) with - | Some e, _ -> - let y = G.E.src e in - let cycle = e :: ret in - if G.V.equal start y then cycle - else build_cycle y cycle - | _ -> assert false in - raise (Negative_cycle (build_cycle v2 [])) - else - begin - (* TODO: Some room for improvement. - If queue has (v2, s) already, technically we can merge - nextSrc into s, so that the number of propagation can be - reduced. *) - Queue.push (v2, nextSrc) q; - M.add v2 v2dist dist - end - ) g v1 dist in - propagate (g, src, dist) q start - end - - let m_cardinal m = M.fold (fun _ _ acc -> acc+1) m 0 - let set_of_map m = M.fold (fun k _ acc -> S.add k acc) m S.empty - - let add_edge_internal (g, src, dist) v1 v2 = - (* Distance mappings at v1 *) - let dv1 = M.find v1 dist in - - (* To reduce the amount of codes, we just start propagation from - v1. Of course, this can be optimized by starting from v2. But - it may duplicate the same code in multiple places in the - file. In addition, such an optimization only cost for small - amount, which precisely is the operations to relax edges from - v1, other than which have been existed before this - [add_edge_e] call. *) - let q = Queue.create () in - - (* We need to check whether v2 should be kept in the source list - or not. That is, if there maybe a cycle with v1, the - distance from v1 should be still maintained. Otherwise, - simply ignore the distance from v2 *) - if m_cardinal dv1 = 1 && M.mem v2 dv1 then ( - (* Now we definitely introduced a loop (but possibly non-negative)! - Let me see if this would be negative or not... *) - Queue.add (v1, (S.add v2 S.empty)) q; - propagate (g, src, dist) q v1 - ) else ( - (* Or even if we fall back to else-clause here, the edge addition - may have introduced a cycle. Anyway, we need to check if one is - newly created or not at [propagate] *) - - let (src, dist, dv1) = - if not (S.mem v2 src) then - (* If v2 isn't one of the source vertices, just simply do - propagation. *) - (src, dist, dv1) - else - (* We can exclude v2 from the list of source because - one can reach v2 from some other vertex. *) - ((S.remove v2 src), - - (* Note that following line can be skipped only if the - user don't remove vertex. Otherwise, such operation - like [add_edge g v1 v2] > [remove_vertex g v2] > - [add_vertex g v2] can result in unexpected - behaviour. *) - (M.map (M.remove v2) dist), - - (* We need to re-obtain the distance mappings at v1, - since it can be changed by the line above. *) - (M.find v1 dist)) in - - (* Now let's start propagation. *) - Queue.add (v1, set_of_map dv1) q; - propagate (g, src, dist) q v1) - - let add_edge_e (g, src, dist) e = - (* Before adding edge to the graph, make sure that the edge is - not in the graph. If already in the graph, just do nothing - and return as is. *) - if G.mem_edge_e g e then - (g, src, dist) - else begin - (* Vertices involved *) - let v1 = G.E.src e in - let v2 = G.E.dst e in - - let (g, src, dist) = List.fold_left - add_vertex (g, src, dist) [v1 ; v2] in - let g = G.add_edge_e g e in - - add_edge_internal (g, src, dist) v1 v2 - end - - let add_edge (g, src, dist) v1 v2 = - (* Same as [add_edge_e] *) - if G.mem_edge g v1 v2 then - (g, src, dist) - else begin - let (g, src, dist) = List.fold_left - add_vertex (g, src, dist) [v1 ; v2] in - let g = G.add_edge g v1 v2 in - - add_edge_internal (g, src, dist) v1 v2 - end - - let remove_edge_internal (g, src) v2 = - (* Actually, we need to rebuild the distance table, rather than - traverse precedants to remove the edge. *) - let q = Queue.create () in - let dist = S.fold (fun x dist -> - Queue.add (x, (S.add x S.empty)) q; - M.add x (M.add x (None, W.zero) M.empty) dist) src M.empty in - let g, src, dist = propagate (g, src, dist) q (S.choose src) in - - if M.mem v2 dist then - (g, src, dist) - else ( - Queue.add (v2, (S.add v2 S.empty)) q; - let src = S.add v2 src in - let dist = M.add v2 (M.add v2 (None, W.zero) M.empty) dist in - propagate (g, src, dist) q v2) - - let remove_edge_e (g, src, dist) e = - (* Same as [add_edge_e] *) - if not (G.mem_edge_e g e) then - (g, src, dist) - else begin - let g = G.remove_edge_e g e in - - (* Vertices involved *) - let v2 = G.E.dst e in - - remove_edge_internal (g, src) v2 - end - - let remove_edge (g, src, dist) v1 v2 = - (* Same as [add_edge] *) - if not (G.mem_edge g v1 v2) then - (g, src, dist) - else begin - let g = G.remove_edge g v1 v2 in - remove_edge_internal (g, src) v2 - end - - let remove_vertex t v = - (* [remove_vertex] first deletes all outgoing edges from [v] *) - let (g, _, _) = t in - let t = G.fold_succ_e (fun e t -> remove_edge_e t e) g v t in - (* Then after, deletes all incoming edges to [v] *) - let (g, _, _) = t in - let t = G.fold_pred_e (fun e t -> remove_edge_e t e) g v t in - (* Note that we are iterating on [g] that is being modified during - iteration. We can do such an above iteration since G is here - permanent. Do not try this for imperative graph. *) - let (g, src, dist) = t in - - (* Now we can feel free to delete [v]. *) - (G.remove_vertex g v, - (S.remove v src), - (M.map (M.remove v) dist)) - - let map_vertex f (g, src, dist) = - let map_map update m = - M.fold (fun v m acc -> M.add (f v) (update m) acc) m M.empty - in - (G.map_vertex f g, - S.fold (fun v acc -> S.add (f v) acc) src S.empty, - let update = function - | None, _ as v -> v - | Some e, w -> - Some (E.create (f (E.src e)) (E.label e) (f (E.dst e))), w - in - map_map (map_map update) dist) - - (* All below are wrappers *) - let fold_pred_e f (g, _, _) = G.fold_pred_e f g - let iter_pred_e f (g, _, _) = G.iter_pred_e f g - let fold_succ_e f (g, _, _) = G.fold_succ_e f g - let iter_succ_e f (g, _, _) = G.iter_succ_e f g - let fold_pred f (g, _, _) = G.fold_pred f g - let fold_succ f (g, _, _) = G.fold_succ f g - let iter_pred f (g, _, _) = G.iter_pred f g - let iter_succ f (g, _, _) = G.iter_succ f g - let fold_edges_e f (g, _, _) = G.fold_edges_e f g - let iter_edges_e f (g, _, _) = G.iter_edges_e f g - let fold_edges f (g, _, _) = G.fold_edges f g - let iter_edges f (g, _, _) = G.iter_edges f g - let fold_vertex f (g, _, _) = G.fold_vertex f g - let iter_vertex f (g, _, _) = G.iter_vertex f g - let pred_e (g, _, _) = G.pred_e g - let succ_e (g, _, _) = G.succ_e g - let pred (g, _, _) = G.pred g - let succ (g, _, _) = G.succ g - let find_all_edges (g, _, _) = G.find_all_edges g - let find_edge (g, _, _) = G.find_edge g - let mem_edge_e (g, _, _) = G.mem_edge_e g - let mem_edge (g, _, _) = G.mem_edge g - let mem_vertex (g, _, _) = G.mem_vertex g - let in_degree (g, _, _) = G.in_degree g - let out_degree (g, _, _) = G.out_degree g - let nb_edges (g, _, _) = G.nb_edges g - let nb_vertex (g, _, _) = G.nb_vertex g - let is_empty (g, _, _) = G.is_empty g - let is_directed = G.is_directed - -end diff --git a/jscomp/build_tests/ocamlgraph/src/nonnegative.mli b/jscomp/build_tests/ocamlgraph/src/nonnegative.mli deleted file mode 100755 index 529c4b059d..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/nonnegative.mli +++ /dev/null @@ -1,51 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* This module is a contribution of Yuto Takei *) - -(** Weighted graphs without negative-cycles. *) - -(** This graph maintains the invariant that it is free of such cycles that - the total length of edges involving is negative. With introduction of - those negative-cycles causes an inability to compute the shortest paths - from arbitrary vertex. By using the graph modules defined here, - introduction of such a cycle is automatically prevented. *) - -module Imperative - (G: Sig.IM) - (W: Sig.WEIGHT with type edge = G.E.t) : sig - - include Sig.IM with module V = G.V and module E = G.E - - exception Negative_cycle of G.E.t list - -end - - -(** Persistent graphs with negative-cycle prevention *) -module Persistent - (G: Sig.P) - (W: Sig.WEIGHT with type edge = G.E.t) : sig - - include Sig.P with module V = G.V and module E = G.E - - exception Negative_cycle of G.E.t list - (** Exception [NegativeCycle] is raised whenever a negative cycle - is introduced for the first time (either with [add_edge] - or [add_edge_e]) *) - -end diff --git a/jscomp/build_tests/ocamlgraph/src/oper.ml b/jscomp/build_tests/ocamlgraph/src/oper.ml deleted file mode 100755 index 641e21abf7..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/oper.ml +++ /dev/null @@ -1,192 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* Basic operations over graphs *) - -module type S = sig - type g - val transitive_closure : ?reflexive:bool -> g -> g - val add_transitive_closure : ?reflexive:bool -> g -> g - val transitive_reduction : ?reflexive:bool -> g -> g - val replace_by_transitive_reduction : ?reflexive:bool -> g -> g - val mirror : g -> g - val complement : g -> g - val intersect : g -> g -> g - val union : g -> g -> g -end - -module Make(B : Builder.S) = struct - - open B - - (* Roy-Warshall's algorithm *) - - type g = G.t - - let add_transitive_closure ?(reflexive=false) g0 = - let phi v g = - let g = if reflexive then B.add_edge g v v else g in - G.fold_succ - (fun sv g -> G.fold_pred (fun pv g -> B.add_edge g pv sv) g v g) - g v g - in - G.fold_vertex phi g0 g0 - - let transitive_closure ?(reflexive=false) g0 = - add_transitive_closure ~reflexive (B.copy g0) - - module H = Hashtbl.Make(G.V) - - let mirror g = - if G.is_directed then begin - let g' = - G.fold_vertex - (fun v g' -> B.add_vertex g' v) - g (B.empty ()) - in - G.fold_edges_e - (fun e g' -> - let v1 = G.E.src e in - let v2 = G.E.dst e in - B.add_edge_e g' (G.E.create v2 (G.E.label e) v1)) - g g' - end else - g - - let complement g = - G.fold_vertex - (fun v g' -> - G.fold_vertex - (fun w g' -> - if G.mem_edge g v w then g' - else B.add_edge g' v w) - g g') - g (B.empty ()) - - let intersect g1 g2 = - G.fold_vertex - (fun v g -> - try - let succ = G.succ_e g2 v in - G.fold_succ_e - (fun e g -> - if List.exists (fun e' -> G.E.compare e e' = 0) succ - then B.add_edge_e g e - else g) - g1 v (B.add_vertex g v) - with Invalid_argument _ -> - (* [v] not in [g2] *) - g) - g1 (B.empty ()) - - let union g1 g2 = - let add g1 g2 = - (* add the graph [g1] in [g2] *) - G.fold_vertex - (fun v g -> - G.fold_succ_e (fun e g -> B.add_edge_e g e) g1 v (B.add_vertex g v)) - g1 g2 - in - add g1 (B.copy g2) - - let replace_by_transitive_reduction ?(reflexive=false) g0 = - let phi v g = - let g = if reflexive then B.remove_edge g v v else g in - G.fold_succ - (fun sv g -> - G.fold_pred - (fun pv g -> - if G.V.equal pv v || G.V.equal sv v then g - else B.remove_edge g pv sv) - g v g) - g v g - in - G.fold_vertex phi g0 g0 - - let transitive_reduction ?(reflexive=false) g0 = - replace_by_transitive_reduction ~reflexive (B.copy g0) - -end - -module P(G : Sig.P) = Make(Builder.P(G)) -module I(G : Sig.I) = Make(Builder.I(G)) - -module Choose(G : sig - type t - type vertex - type edge - val iter_vertex : (vertex -> unit) -> t -> unit - val iter_edges_e : (edge -> unit) -> t -> unit - end) = -struct - - exception Found_Vertex of G.vertex - let choose_vertex g = - try - G.iter_vertex (fun v -> raise (Found_Vertex v)) g; - invalid_arg "choose_vertex" - with Found_Vertex v -> - v - - exception Found_Edge of G.edge - let choose_edge g = - try - G.iter_edges_e (fun v -> raise (Found_Edge v)) g; - invalid_arg "choose_vertex" - with Found_Edge v -> - v - -end - -module Neighbourhood(G : sig - type t - module V : Sig.COMPARABLE - val fold_succ: (V.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a - val succ: t -> V.t -> V.t list - end) = -struct - - module Vertex_Set = Set.Make(G.V) - - let set_from_vertex g v = - G.fold_succ - (fun v' s -> if G.V.equal v v' then s else Vertex_Set.add v' s) - g v Vertex_Set.empty - - let list_from_vertex g v = - let rec aux = function - | [] -> [] - | v' :: l -> - if G.V.equal v v' then begin - assert (not (List.exists (G.V.equal v) l)); - l - end else - v' :: aux l - in - aux (G.succ g v) - - let set_from_vertices g l = - let fold_left f = List.fold_left f Vertex_Set.empty l in - let env_init = fold_left (fun s v -> Vertex_Set.add v s) in - let add x s = - if Vertex_Set.mem x env_init then s else Vertex_Set.add x s - in - fold_left (fun s v -> G.fold_succ add g v s) - - let list_from_vertices g l = Vertex_Set.elements (set_from_vertices g l) - -end diff --git a/jscomp/build_tests/ocamlgraph/src/oper.mli b/jscomp/build_tests/ocamlgraph/src/oper.mli deleted file mode 100755 index 860ff00daa..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/oper.mli +++ /dev/null @@ -1,134 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Basic operations over graphs *) - -(** {2 Basic operations over graphs} *) - -module type S = sig - - type g - - val transitive_closure : ?reflexive:bool -> g -> g - (** [transitive_closure ?reflexive g] returns the transitive closure - of [g] (as a new graph). Loops (i.e. edges from a vertex to itself) - are added only if [reflexive] is [true] (default is [false]). *) - - val add_transitive_closure : ?reflexive:bool -> g -> g - (** [add_transitive_closure ?reflexive g] replaces [g] by its - transitive closure. Meaningless for persistent implementations - (then acts as [transitive_closure]). *) - - val transitive_reduction : ?reflexive:bool -> g -> g - (** [transitive_reduction ?reflexive g] returns the transitive reduction - of [g] (as a new graph). Loops (i.e. edges from a vertex to itself) - are removed only if [reflexive] is [true] (default is [false]). *) - - val replace_by_transitive_reduction : ?reflexive:bool -> g -> g - (** [replace_by_transitive_reduction ?reflexive g] replaces [g] by its - transitive reduction. Meaningless for persistent implementations - (then acts as [transitive_reduction]). *) - - val mirror : g -> g - (** [mirror g] returns a new graph which is the mirror image of [g]: - each edge from [u] to [v] has been replaced by an edge from [v] to [u]. - For undirected graphs, it simply returns [g]. - Note: Vertices are shared between [g] and [mirror g]; you may need to - make a copy of [g] before using [mirror] *) - - val complement : g -> g - (** [complement g] returns a new graph which is the complement of [g]: - each edge present in [g] is not present in the resulting graph and - vice-versa. Edges of the returned graph are unlabeled. *) - - val intersect : g -> g -> g - (** [intersect g1 g2] returns a new graph which is the intersection of [g1] - and [g2]: each vertex and edge present in [g1] *and* [g2] is present - in the resulting graph. *) - - val union : g -> g -> g - (** [union g1 g2] returns a new graph which is the union of [g1] and [g2]: - each vertex and edge present in [g1] *or* [g2] is present in the - resulting graph. *) - -end - -module Make(B : Builder.S) : S with type g = B.G.t -(** Basic operations over graphs *) - -module P(G : Sig.P) : S with type g = G.t -(** Basic operations over persistent graphs *) - -module I(G : Sig.I) : S with type g = G.t -(** Basic operations over imperative graphs *) - -(** {2 Choose} *) - -(** Choose an element in a graph *) -module Choose(G : sig - type t - type vertex - type edge - val iter_vertex : (vertex -> unit) -> t -> unit - val iter_edges_e : (edge -> unit) -> t -> unit - end) : -sig - - val choose_vertex : G.t -> G.vertex - (** [choose_vertex g] returns a vertex from the graph. - @raise Invalid_argument if the graph is empty. *) - - val choose_edge : G.t -> G.edge - (** [choose_edge g] returns an edge from the graph. - @raise Invalid_argument if the graph has no edge. *) - -end - -(** {2 Neighbourhood} *) - -(** Neighbourhood of vertex / vertices *) -module Neighbourhood(G : sig - type t - module V : Sig.COMPARABLE - val fold_succ: (V.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a - val succ: t -> V.t -> V.t list - end) : -sig - - module Vertex_Set : Set.S with type elt = G.V.t - - (** The neighbourhood of a vertex [v] is - \{ v' | (succ g v) and (v <> v') \} *) - - val list_from_vertex : G.t -> G.V.t -> G.V.t list - (** Neighbourhood of a vertex as a list. *) - - val set_from_vertex : G.t -> G.V.t -> Vertex_Set.t - (** Neighbourhood of a vertex as a set. - Less efficient that [list_from_vertex]. *) - - (** The neighbourhood of a set [S] of vertices is [U \ S] where - [U] is the union of neighbourhoods of each vertex of [S]. *) - - val list_from_vertices : G.t -> G.V.t list -> G.V.t list - (** Neighbourhood of a list of vertices as a list. *) - - val set_from_vertices : G.t -> G.V.t list -> Vertex_Set.t - (** Neighbourhood of a list of vertices as a set. - More efficient that [list_from_vertices]. *) - -end diff --git a/jscomp/build_tests/ocamlgraph/src/pack.ml b/jscomp/build_tests/ocamlgraph/src/pack.ml deleted file mode 100755 index adb6fa4e0a..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/pack.ml +++ /dev/null @@ -1,207 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: pack.ml,v 1.13 2006-05-12 14:07:16 filliatr Exp $ *) - -module Generic(G : Sig.IM with type V.label = int and type E.label = int) = -struct - - include G - - exception Found of V.t - let find_vertex g i = - try - iter_vertex (fun v -> if V.label v = i then raise (Found v)) g; - raise Not_found - with Found v -> - v - - module Builder = Builder.I(G) - - module Dfs = Traverse.Dfs(G) - module Bfs = Traverse.Bfs(G) - module Marking = Traverse.Mark(G) - - module Classic = Classic.I(G) - - module Rand = Rand.I(G) - - module Components = Components.Make(G) - - module W = struct - type edge = G.E.t - type t = int - let weight e = G.E.label e - let zero = 0 - let add = (+) - let sub = (-) - let compare : t -> t -> int = Pervasives.compare - end - - include Path.Dijkstra(G)(W) - include Path.Johnson(G)(W) - - module BF = Path.BellmanFord(G)(W) - let bellman_ford = BF.find_negative_cycle_from - - module F = struct - type label = int - type t = int - let max_capacity x = x - let min_capacity _ = 0 - let flow _ = 0 - let add = (+) - let sub = (-) - let compare : t -> t -> int = Pervasives.compare - let zero = 0 - end - - module FF = Flow.Ford_Fulkerson(G)(F) - let ford_fulkerson g = - if not G.is_directed then - invalid_arg "ford_fulkerson: not a directed graph"; - FF.maxflow g - - module Goldberg = Flow.Goldberg(G)(F) - let goldberg g = - if not G.is_directed then invalid_arg "goldberg: not a directed graph"; - Goldberg.maxflow g - - include Oper.Make(Builder) - - module PathCheck = Path.Check(G) - - module Topological = struct - include Topological.Make(G) - module S = Topological.Make_stable(G) - let fold_stable = S.fold - let iter_stable = S.iter - end - - module Int = struct - type t = int - let compare : t -> t -> int = Pervasives.compare - end - - include Kruskal.Make(G)(Int) - - module Display = struct - include G - let vertex_name v = string_of_int (V.label v) - let graph_attributes _ = [] - let default_vertex_attributes _ = [] - let vertex_attributes _ = [] - let default_edge_attributes _ = [] - let edge_attributes e = [ `Label (string_of_int (E.label e) ) ] - let get_subgraph _ = None - end - module Dot_ = Graphviz.Dot(Display) - module Neato = Graphviz.Neato(Display) - - let dot_output g f = - let oc = open_out f in - if is_directed then Dot_.output_graph oc g else Neato.output_graph oc g; - close_out oc - - let display_with_gv g = - let tmp = Filename.temp_file "graph" ".dot" in - dot_output g tmp; - ignore (Sys.command ("dot -Tps " ^ tmp ^ " | gv -")); - Sys.remove tmp - - module GmlParser = - Gml.Parse - (Builder) - (struct - let node l = - try match List.assoc "id" l with Gml.Int n -> n | _ -> -1 - with Not_found -> -1 - let edge _ = - 0 - end) - - let parse_gml_file = GmlParser.parse - - module DotParser = - Dot.Parse - (Builder) - (struct - let nodes = Hashtbl.create 97 - let new_node = ref 0 - let node (id,_) _ = - try - Hashtbl.find nodes id - with Not_found -> - incr new_node; - Hashtbl.add nodes id !new_node; - !new_node - let edge _ = - 0 - end) - - let parse_dot_file = DotParser.parse - - open Format - - module GmlPrinter = - Gml.Print - (G) - (struct - let node n = ["label", Gml.Int n] - let edge n = ["label", Gml.Int n] - end) - - let print_gml = GmlPrinter.print - let print_gml_file g f = - let c = open_out f in - let fmt = formatter_of_out_channel c in - fprintf fmt "%a@." GmlPrinter.print g; - close_out c - -(* - module GraphmlPrinter = - Graphml.Print - (G) - (struct - let node n = ["label", Gml.Int n] - let edge n = ["label", Gml.Int n] - module Vhash = Hashtbl.Make(G.V) - let vertex_uid = uid (Vhash.create 17) Vhash.find Vhash.add - module Ehash = Hashtbl.Make(G.E) - let edge_uid = uid (Ehash.create 17) Ehash.find Ehash.add - end) - - let print_gml = GmlPrinter.print - let print_gml_file g f = - let c = open_out f in - let fmt = formatter_of_out_channel c in - fprintf fmt "%a@." GmlPrinter.print g; - close_out c -*) - -end - -module I = struct - type t = int - let compare : t -> t -> int = Pervasives.compare - let default = 0 -end - -module Digraph = Generic(Imperative.Digraph.AbstractLabeled(I)(I)) - -module Graph = Generic(Imperative.Graph.AbstractLabeled(I)(I)) - diff --git a/jscomp/build_tests/ocamlgraph/src/pack.mli b/jscomp/build_tests/ocamlgraph/src/pack.mli deleted file mode 100755 index 1fd7a52b14..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/pack.mli +++ /dev/null @@ -1,31 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: pack.mli,v 1.1 2004-02-04 11:52:02 filliatr Exp $ *) - -(** {b Immediate access to the library}: provides implementation of imperative - graphs labeled with integer as well as algorithms on such graphs. - - So if you bother functors, you can use this module. *) - -(** Directed imperative graphs with edges and vertices labeled with integer. *) -module Digraph : Sig_pack.S - -(** Undirected imperative graphs with edges and vertices labeled with - integer. *) -module Graph : Sig_pack.S - diff --git a/jscomp/build_tests/ocamlgraph/src/path.ml b/jscomp/build_tests/ocamlgraph/src/path.ml deleted file mode 100755 index fb5e0cdbba..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/path.ml +++ /dev/null @@ -1,351 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: path.ml,v 1.6 2005-07-18 07:10:35 filliatr Exp $ *) - -module type G = sig - type t - module V : Sig.COMPARABLE - module E : sig - type t - type label - val label : t -> label - val src : t -> V.t - val dst : t -> V.t - val create : V.t -> label -> V.t -> t - end - val iter_vertex : (V.t -> unit) -> t -> unit - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - val iter_succ_e : (E.t -> unit) -> t -> V.t -> unit - val fold_edges_e : (E.t -> 'a -> 'a) -> t -> 'a -> 'a - val nb_vertex : t -> int -end - -(** Weight signature for Johnson's algorithm. *) -module type WJ = sig - include Sig.WEIGHT - val sub : t -> t -> t - (** Subtraction of weights. *) -end - -module Dijkstra - (G: G) - (W: Sig.WEIGHT with type edge = G.E.t) = -struct - - open G.E - - module H = Hashtbl.Make(G.V) - - module Elt = struct - type t = W.t * G.V.t * G.E.t list - - (* weights are compared first, and minimal weights come first in the - queue *) - let compare (w1,v1,_) (w2,v2,_) = - let cw = W.compare w2 w1 in - if cw != 0 then cw else G.V.compare v1 v2 - end - - module PQ = Heap.Imperative(Elt) - - let shortest_path g v1 v2 = - let visited = H.create 97 in - let dist = H.create 97 in - let q = PQ.create 17 in - let rec loop () = - if PQ.is_empty q then raise Not_found; - let (w,v,p) = PQ.pop_maximum q in - if G.V.compare v v2 = 0 then - List.rev p, w - else begin - if not (H.mem visited v) then begin - H.add visited v (); - G.iter_succ_e - (fun e -> - let ev = dst e in - if not (H.mem visited ev) then begin - let dev = W.add w (W.weight e) in - let improvement = - try W.compare dev (H.find dist ev) < 0 with Not_found -> true - in - if improvement then begin - H.replace dist ev dev; - PQ.add q (dev, ev, e :: p) - end - end) - g v - end; - loop () - end - in - PQ.add q (W.zero, v1, []); - H.add dist v1 W.zero; - loop () - -end - -(* The following module is a contribution of Yuto Takei (University of Tokyo) *) - -module BellmanFord - (G: G) - (W: Sig.WEIGHT with type edge = G.E.t) = -struct - - open G.E - - module H = Hashtbl.Make(G.V) - - exception NegativeCycle of G.E.t list - - let all_shortest_paths g vs = - let dist = H.create 97 in - H.add dist vs W.zero; - let admissible = H.create 97 in - let build_cycle_from x0 = - let rec traverse_parent x ret = - let e = H.find admissible x in - let s = src e in - if G.V.equal s x0 then e :: ret else traverse_parent s (e :: ret) - in - traverse_parent x0 [] - in - let find_cycle x0 = - let visited = H.create 97 in - let rec visit x = - if H.mem visited x then - build_cycle_from x - else begin - H.add visited x (); - let e = H.find admissible x in - visit (src e) - end - in - visit x0 - in - let rec relax i = - let update = G.fold_edges_e - (fun e x -> - let ev1 = src e in - let ev2 = dst e in - try begin - let dev1 = H.find dist ev1 in - let dev2 = W.add dev1 (W.weight e) in - let improvement = - try W.compare dev2 (H.find dist ev2) < 0 - with Not_found -> true - in - if improvement then begin - H.replace dist ev2 dev2; - H.replace admissible ev2 e; - Some ev2 - end else x - end with Not_found -> x) g None in - match update with - | Some x -> - if i == G.nb_vertex g then raise (NegativeCycle (find_cycle x)) - else relax (i + 1) - | None -> dist - in - relax 0 - - let find_negative_cycle_from g vs = - try let _ = all_shortest_paths g vs in raise Not_found - with NegativeCycle l -> l - - - module Comp = Components.Make(G) - - (* This is rather inefficient implementation. Indeed, for each - strongly connected component, we run a full Bellman-Ford - algorithm using one of its vertex as source, taking all edges - into consideration. Instead, we could limit ourselves to the - edges of the component. *) - let find_negative_cycle g = - let rec iter = function - | [] -> - raise Not_found - | (x :: _) :: cl -> - begin try find_negative_cycle_from g x with Not_found -> iter cl end - | [] :: _ -> - assert false (* a component is not empty *) - in - iter (Comp.scc_list g) - -end - -module Johnson - (G: G) - (W: WJ with type edge = G.E.t) = -struct - - module HVV = Hashtbl.Make(Util.HTProduct(G.V)(G.V)) - - module G' = struct - type t = G.t - module V = struct - type t = New | Old of G.V.t - let compare v u = match v, u with - | New, New -> 0 - | New, Old _ -> -1 - | Old _, New -> 1 - | Old v, Old u -> G.V.compare v u - let hash v = match v with - | Old v -> G.V.hash v - | New -> 42 - let equal v u = match v, u with - | New, New -> true - | New, Old _ | Old _, New -> false - | Old v, Old u -> G.V.equal v u - end - module E = struct - type label = G.E.label - type t = NewE of V.t | OldE of G.E.t - let src e = match e with - | NewE _ -> V.New - | OldE e -> V.Old (G.E.src e) - let dst e = match e with - | NewE v -> v - | OldE e -> V.Old (G.E.dst e) - let label e = match e with - | NewE _ -> assert false - | OldE e -> G.E.label e - let create v l u = match v, u with - | V.New, V.Old u -> NewE (V.Old u) - | V.Old v, V.Old u -> OldE (G.E.create v l u) - | _, _ -> assert false - end - let iter_vertex f g = f V.New; G.iter_vertex (fun v -> f (V.Old v)) g - let fold_vertex f g acc = - let acc' = f V.New acc in - G.fold_vertex (fun v a -> f (V.Old v) a) g acc' - let iter_succ f g v = match v with - | V.New -> G.iter_vertex (fun u -> f (V.Old u)) g - | V.Old v -> G.iter_succ (fun u -> f (V.Old u)) g v - let iter_succ_e f g v = match v with - | V.New -> - G.iter_vertex (fun u -> f (E.NewE (V.Old u))) g - | V.Old v -> G.iter_succ_e (fun e -> f (E.OldE e)) g v - let fold_edges_e f g acc = - let acc' = - G.fold_vertex (fun x _ -> f (E.NewE (V.Old x)) acc) g acc - in - G.fold_edges_e (fun edg -> - let v1 = G.E.src edg in - let v2 = G.E.dst edg in - let l = G.E.label edg in - f (E.create (V.Old v1) l (V.Old v2))) g acc' - let nb_vertex g = G.nb_vertex g + 1 - end - - module W' = struct - open G'.E - - type edge = G'.E.t - type t = W.t - let zero = W.zero - let weight e = match e with - | NewE _ -> zero - | OldE e -> W.weight e - let compare = W.compare - let add = W.add - end - - module BF = BellmanFord(G')(W') - - let all_pairs_shortest_paths g = - let pairs_dist = HVV.create 97 in - let bf_res = BF.all_shortest_paths g G'.V.New in - let module W'' = struct - type edge = W.edge - type t = W.t - let add = W.add - let sub = W.sub - let weight e = - let v1 = G.E.src e in - let v2 = G.E.dst e in - add (W.weight e) - (W.sub (BF.H.find bf_res (G'.V.Old v1)) - (BF.H.find bf_res (G'.V.Old v2))) - let compare = W.compare - let zero = W.zero - end - in - let module D = Dijkstra(G)(W'') in - G.iter_vertex - (fun v -> - G.iter_vertex - (fun u -> - try - let (_, d) = D.shortest_path g v u in - HVV.add pairs_dist (v, u) - (W''.add d - (W''.sub (BF.H.find bf_res (G'.V.Old u)) - (BF.H.find bf_res (G'.V.Old v)) - )) - with Not_found -> () ) g) g; - pairs_dist - -end - -module Check - (G : - sig - type t - module V : Sig.COMPARABLE - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - end) = -struct - - module HV = Hashtbl.Make(G.V) - module HVV = Hashtbl.Make(Util.HTProduct(G.V)(G.V)) - - (* the cache contains the path tests already computed *) - type path_checker = { cache : bool HVV.t; graph : G.t } - - let create g = { cache = HVV.create 97; graph = g } - - let check_path pc v1 v2 = - try - HVV.find pc.cache (v1, v2) - with Not_found -> - (* the path is not in cache; we check it with a BFS *) - let visited = HV.create 97 in - let q = Queue.create () in - let rec loop () = - if Queue.is_empty q then begin - HVV.add pc.cache (v1, v2) false; - false - end else begin - let v = Queue.pop q in - HVV.add pc.cache (v1, v) true; - if G.V.compare v v2 = 0 then - true - else begin - if not (HV.mem visited v) then begin - HV.add visited v (); - G.iter_succ (fun v' -> Queue.add v' q) pc.graph v - end; - loop () - end - end - in - Queue.add v1 q; - loop () - -end diff --git a/jscomp/build_tests/ocamlgraph/src/path.mli b/jscomp/build_tests/ocamlgraph/src/path.mli deleted file mode 100755 index 5b1e74acd1..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/path.mli +++ /dev/null @@ -1,152 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: path.mli,v 1.9 2005-07-18 07:10:35 filliatr Exp $ *) - -(** Paths *) - -(** Minimal graph signature for Dijkstra's algorithm. - Sub-signature of {!Sig.G}. *) -module type G = sig - type t - module V : Sig.COMPARABLE - module E : sig - type t - type label - val label : t -> label - val src : t -> V.t - val dst : t -> V.t - val create : V.t -> label -> V.t -> t - end - val iter_vertex : (V.t -> unit) -> t -> unit - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - val iter_succ_e : (E.t -> unit) -> t -> V.t -> unit - val fold_edges_e : (E.t -> 'a -> 'a) -> t -> 'a -> 'a - val nb_vertex : t -> int -end - -module Dijkstra - (G: G) - (W: Sig.WEIGHT with type edge = G.E.t) : -sig - - val shortest_path : G.t -> G.V.t -> G.V.t -> G.E.t list * W.t - (** [shortest_path g v1 v2] computes the shortest path from vertex [v1] - to vertex [v2] in graph [g]. The path is returned as the list of - followed edges, together with the total length of the path. - raise [Not_found] if the path from [v1] to [v2] does not exist. - - Complexity: at most O((V+E)log(V)) *) - -end - -(* The following module is a contribution of Yuto Takei (University of Tokyo) *) - -module BellmanFord - (G: G) - (W: Sig.WEIGHT with type edge = G.E.t) : -sig - - module H : Hashtbl.S with type key = G.V.t - - exception NegativeCycle of G.E.t list - - val all_shortest_paths : G.t -> G.V.t -> W.t H.t - (** [shortest_path g vs] computes the distances of shortest paths - from vertex [vs] to all other vertices in graph [g]. They are - returned as a hash table mapping each vertex reachable from - [vs] to its distance from [vs]. If [g] contains a - negative-length cycle reachable from [vs], raises - [NegativeCycle l] where [l] is such a cycle. - - Complexity: at most O(VE) *) - - val find_negative_cycle_from: G.t -> G.V.t -> G.E.t list - (** [find_negative_cycle_from g vs] looks for a negative-length - cycle in graph [g] that is reachable from vertex [vs] and - returns it as a list of edges. If no such a cycle exists, - raises [Not_found]. - - Complexity: at most O(VE). *) - - val find_negative_cycle: G.t -> G.E.t list - (** [find_negative_cycle g] looks for a negative-length cycle in - graph [g] and returns it. If the graph [g] is free from such a - cycle, raises [Not_found]. - - Complexity: O(V^2E) *) -end - -(** Weight signature for Johnson's algorithm. *) -module type WJ = sig - include Sig.WEIGHT - val sub : t -> t -> t - (** Subtraction of weights. *) -end - -module Johnson - (G: G) - (W: WJ with type edge = G.E.t) : -sig - - module HVV : Hashtbl.S with type key = (G.V.t * G.V.t) - - val all_pairs_shortest_paths : G.t -> W.t HVV.t - (** [all_pairs_shortest_paths g] computes the distance of shortest - path between all pairs of vertices in [g]. They are returned as - a hash table mapping each pair of vertices to their - distance. If [g] contains a negative-cycle, raises - [NegativeCycle l] where [l] is such a cycle. - - Complexity: at most O(VElog(V)) *) -end - -(** Check for a path. *) -module Check - (G : sig - type t - module V : Sig.COMPARABLE - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - end) : -sig - - type path_checker - (** the abstract data type of a path checker; this is a mutable data - structure *) - - val create : G.t -> path_checker - (** [create g] builds a new path checker for the graph [g]; - if the graph is mutable, it must not be mutated while this path - checker is in use (through the function [check_path] below). *) - - val check_path : path_checker -> G.V.t -> G.V.t -> bool - (** [check_path pc v1 v2] checks whether there is a path from [v1] to - [v2] in the graph associated to the path checker [pc]. - - Complexity: The path checker contains a cache of all results computed - so far. This cache is implemented with a hash table so access in this - cache is usually O(1). When the result is not in the cache, Dijkstra's - algorithm is run to check for the path, and all intermediate results - are cached. - - Note: if checks are to be done for almost all pairs of vertices, it - may be more efficient to compute the transitive closure of the graph - (see module [Oper]). - *) - -end diff --git a/jscomp/build_tests/ocamlgraph/src/persistent.ml b/jscomp/build_tests/ocamlgraph/src/persistent.ml deleted file mode 100755 index 69e3b4fd04..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/persistent.ml +++ /dev/null @@ -1,331 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -open Sig -open Blocks - -module type S = sig - - (** Persistent Unlabeled Graphs *) - module Concrete (V: COMPARABLE) : - Sig.P with type V.t = V.t and type V.label = V.t and type E.t = V.t * V.t - and type E.label = unit - - (** Abstract Persistent Unlabeled Graphs *) - module Abstract(V: sig type t end) : Sig.P with type V.label = V.t - and type E.label = unit - - (** Persistent Labeled Graphs *) - module ConcreteLabeled (V: COMPARABLE)(E: ORDERED_TYPE_DFT) : - Sig.P with type V.t = V.t and type V.label = V.t - and type E.t = V.t * E.t * V.t and type E.label = E.t - - (** Abstract Persistent Labeled Graphs *) - module AbstractLabeled (V: sig type t end)(E: ORDERED_TYPE_DFT) : - Sig.P with type V.label = V.t and type E.label = E.t - -end - -module P = Make(Make_Map) - -type 'a abstract_vertex = { tag : int; label : 'a } - -(* Vertex for the abstract persistent graphs. *) -module AbstractVertex(V: sig type t end) = struct - type label = V.t - type t = label abstract_vertex - let compare x y = Pervasives.compare x.tag y.tag - let hash x = x.tag - let equal x y = x.tag = y.tag - let label x = x.label - let create l = - if !cpt_vertex = first_value_for_cpt_vertex - 1 then - invalid_arg "Too much vertices"; - incr cpt_vertex; - { tag = !cpt_vertex; label = l } -end - -module Digraph = struct - - module Concrete(V:COMPARABLE) = struct - include P.Digraph.Concrete(V) - let remove_vertex g v = - if HM.mem v g then - let g = HM.remove v g in - HM.fold (fun k s -> HM.add k (S.remove v s)) g empty - else - g - end - - module ConcreteLabeled(V:COMPARABLE)(E:ORDERED_TYPE_DFT) = struct - include P.Digraph.ConcreteLabeled(V)(E) - let remove_vertex g v = - if HM.mem v g then - let g = HM.remove v g in - let remove v = S.filter (fun (v2, _) -> not (V.equal v v2)) in - HM.fold (fun k s -> HM.add k (remove v s)) g empty - else - g - end - - module ConcreteBidirectional(V: COMPARABLE) = struct - include P.Digraph.ConcreteBidirectional(V) - let remove_vertex g v = - if HM.mem v g then - let remove v = S.filter (fun v' -> not (V.equal v v')) in - let g = - fold_pred - (fun v' acc -> - let in_set, out_set = HM.find v' acc in - HM.add v' (in_set, remove v out_set) acc) - g v g - in - let g = - fold_succ - (fun v' acc -> - let in_set, out_set = HM.find v' acc in - HM.add v' (remove v in_set, out_set) acc) - g v g - in - HM.remove v g - else - g - end - - module ConcreteBidirectionalLabeled(V:COMPARABLE)(E:ORDERED_TYPE_DFT) = struct - include P.Digraph.ConcreteBidirectionalLabeled(V)(E) - let remove_vertex (g:t) (v:vertex) = - if HM.mem v g then - let remove v = S.filter (fun (v', _) -> not (V.equal v v')) in - let g = - fold_pred - (fun v' acc -> - let in_set, out_set = HM.find v' acc in - HM.add v' (in_set, remove v out_set) acc) - g v g - in - let g = - fold_succ - (fun v' acc -> - let in_set, out_set = HM.find v' acc in - HM.add v' (remove v in_set, out_set) acc) - g v g - in - HM.remove v g - else - g - end - - module Abstract(V: sig type t end) = struct - - include P.Digraph.Abstract(AbstractVertex(V)) - - let empty = { edges = G.empty; size = 0 } - - let add_vertex g v = - if mem_vertex g v then - g - else - { edges = G.unsafe_add_vertex g.edges v; - size = Pervasives.succ g.size } - - let add_edge g v1 v2 = - let g = add_vertex g v1 in - let g = add_vertex g v2 in - { g with edges = G.unsafe_add_edge g.edges v1 v2 } - - let add_edge_e g (v1, v2) = add_edge g v1 v2 - - let remove_vertex g v = - if HM.mem v g.edges then - let e = HM.remove v g.edges in - let e = HM.fold (fun k s g -> HM.add k (S.remove v s) g) e HM.empty in - { edges = e; size = Pervasives.pred g.size } - else - g - - let remove_edge g v1 v2 = { g with edges = remove_edge g v1 v2 } - let remove_edge_e g e = { g with edges = remove_edge_e g e } - - end - - module AbstractLabeled(V: sig type t end)(Edge: ORDERED_TYPE_DFT) = struct - - include P.Digraph.AbstractLabeled(AbstractVertex(V))(Edge) - - let empty = { edges = G.empty; size = 0 } - - let add_vertex g v = - if mem_vertex g v then - g - else - { edges = G.unsafe_add_vertex g.edges v; - size = Pervasives.succ g.size } - - let add_edge_e g (v1, l, v2) = - let g = add_vertex g v1 in - let g = add_vertex g v2 in - { g with edges = G.unsafe_add_edge g.edges v1 (v2, l) } - - let add_edge g v1 v2 = add_edge_e g (v1, Edge.default, v2) - - let remove_vertex g v = - if HM.mem v g.edges then - let remove v s = - S.fold - (fun (v2, _ as e) s -> if not (V.equal v v2) then S.add e s else s) - s S.empty - in - let edges = HM.remove v g.edges in - { edges = - HM.fold (fun k s g -> HM.add k (remove v s) g) edges HM.empty; - size = Pervasives.pred g.size } - else - g - - let remove_edge g v1 v2 = { g with edges = remove_edge g v1 v2 } - let remove_edge_e g e = { g with edges = remove_edge_e g e } - - end - -end - -module Graph = struct - - module Concrete(V: COMPARABLE) = struct - - module G = struct include Digraph.Concrete(V) type return = t end - include Graph(G) - - (* Export some definitions of [G] *) - let empty = G.empty - - (* Redefine the [add_edge] and [remove_edge] operations *) - - let add_edge g v1 v2 = - let g = G.add_edge g v1 v2 in - assert (G.HM.mem v1 g && G.HM.mem v2 g); - G.unsafe_add_edge g v2 v1 - - let add_edge_e g (v1, v2) = add_edge g v1 v2 - - let remove_edge g v1 v2 = - let g = G.remove_edge g v1 v2 in - assert (G.HM.mem v1 g && G.HM.mem v2 g); - G.unsafe_remove_edge g v2 v1 - - let remove_edge_e g (v1, v2) = remove_edge g v1 v2 - - end - - module ConcreteLabeled(V: COMPARABLE)(Edge: ORDERED_TYPE_DFT) = struct - - module G = struct - include Digraph.ConcreteLabeled(V)(Edge) - type return = t - end - include Graph(G) - - (* Export some definitions of [G] *) - let empty = G.empty - - (* Redefine the [add_edge] and [remove_edge] operations *) - - let add_edge_e g (v1, l, v2 as e) = - let g = G.add_edge_e g e in - assert (G.HM.mem v1 g && G.HM.mem v2 g); - G.unsafe_add_edge g v2 (v1, l) - - let add_edge g v1 v2 = add_edge_e g (v1, Edge.default, v2) - - let remove_edge g v1 v2 = - let g = G.remove_edge g v1 v2 in - assert (G.HM.mem v1 g && G.HM.mem v2 g); - G.unsafe_remove_edge g v2 v1 - - let remove_edge_e g (v1, l, v2 as e) = - let g = G.remove_edge_e g e in - assert (G.HM.mem v1 g && G.HM.mem v2 g); - G.unsafe_remove_edge_e g (v2, l, v1) - - end - - module Abstract(V: sig type t end) = struct - - module G = struct include Digraph.Abstract(V) type return = t end - include Graph(G) - - (* Export some definitions of [G] *) - let empty = G.empty - - (* Redefine the [add_edge] and [remove_edge] operations *) - - let add_edge g v1 v2 = - let g = G.add_edge g v1 v2 in - assert (G.HM.mem v1 g.G.edges && G.HM.mem v2 g.G.edges); - { g with G.edges = G.unsafe_add_edge g.G.edges v2 v1 } - - let add_edge_e g (v1, v2) = add_edge g v1 v2 - - let remove_edge g v1 v2 = - let g = G.remove_edge g v1 v2 in - assert (G.HM.mem v1 g.G.edges && G.HM.mem v2 g.G.edges); - { g with G.edges = G.unsafe_remove_edge g.G.edges v2 v1 } - - let remove_edge_e g (v1, v2) = remove_edge g v1 v2 - - end - - module AbstractLabeled (V: sig type t end)(Edge: ORDERED_TYPE_DFT) = struct - - module G = struct - include Digraph.AbstractLabeled(V)(Edge) - type return = t - end - include Graph(G) - - (* Export some definitions of [G] *) - let empty = G.empty - - (* Redefine the [add_edge] and [remove_edge] operations *) - - let add_edge_e g (v1, l, v2 as e) = - let g = G.add_edge_e g e in - assert (G.HM.mem v1 g.G.edges && G.HM.mem v2 g.G.edges); - { g with G.edges = G.unsafe_add_edge g.G.edges v2 (v1, l) } - - let add_edge g v1 v2 = add_edge_e g (v1, Edge.default, v2) - - let remove_edge g v1 v2 = - let g = G.remove_edge g v1 v2 in - assert (G.HM.mem v1 g.G.edges && G.HM.mem v2 g.G.edges); - { g with G.edges = G.unsafe_remove_edge g.G.edges v2 v1 } - - let remove_edge_e g (v1, l, v2 as e) = - let g = G.remove_edge_e g e in - assert (G.HM.mem v1 g.G.edges && G.HM.mem v2 g.G.edges); - { g with G.edges = G.unsafe_remove_edge_e g.G.edges (v2, l, v1) } - - end - -end - -(* -Local Variables: -compile-command: "make -C .." -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/src/persistent.mli b/jscomp/build_tests/ocamlgraph/src/persistent.mli deleted file mode 100755 index 942629cac0..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/persistent.mli +++ /dev/null @@ -1,95 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Persistent Graph Implementations. *) - -open Sig - -(** Signature of persistent graphs. *) -module type S = sig - - (** Edges may be labeled or not: - - Unlabeled: there is no label on edges - - Labeled: you have to provide a label implementation as a functor - parameter. - - Vertices may be concrete or abstract: - - Concrete: type of vertex labels and type of vertices are identified. - - Abstract: type of vertices is abstract (in particular it is not equal - to type of vertex labels - - How to choose between concrete and abstract vertices for my graph - implementation? - - Usually, if you fall into one of the following cases, use abstract - vertices: - - you cannot provide efficient comparison/hash functions for vertices; or - - you wish to get two different vertices with the same label. - - In other cases, it is certainly easier to use concrete vertices. *) - - (** Persistent Unlabeled Graphs. *) - module Concrete (V: COMPARABLE) : - Sig.P with type V.t = V.t and type V.label = V.t and type E.t = V.t * V.t - and type E.label = unit - - (** Abstract Persistent Unlabeled Graphs. *) - module Abstract(V: ANY_TYPE) : Sig.P with type V.label = V.t - and type E.label = unit - - (** Persistent Labeled Graphs. *) - module ConcreteLabeled (V: COMPARABLE)(E: ORDERED_TYPE_DFT) : - Sig.P with type V.t = V.t and type V.label = V.t - and type E.t = V.t * E.t * V.t and type E.label = E.t - - (** Abstract Persistent Labeled Graphs. *) - module AbstractLabeled (V: ANY_TYPE)(E: ORDERED_TYPE_DFT) : - Sig.P with type V.label = V.t and type E.label = E.t - -end - -(** Persistent Directed Graphs. *) -module Digraph : sig - - include S - - (** {2 Bidirectional graphs} - - Bidirectional graphs use more memory space (at worse the double) that - standard concrete directional graphs. But accessing predecessors and - removing a vertex are faster. *) - - (** Imperative Unlabeled, bidirectional graph. *) - module ConcreteBidirectional (V: COMPARABLE) : - Sig.P with type V.t = V.t and type V.label = V.t and type E.t = V.t * V.t - and type E.label = unit - - (** Imperative Labeled and bidirectional graph. *) - module ConcreteBidirectionalLabeled(V:COMPARABLE)(E:ORDERED_TYPE_DFT) : - Sig.P with type V.t = V.t and type V.label = V.t - and type E.t = V.t * E.t * V.t and type E.label = E.t - -end - -(** Persistent Undirected Graphs. *) -module Graph : S - -(* -Local Variables: -compile-command: "make -C .." -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/src/prim.ml b/jscomp/build_tests/ocamlgraph/src/prim.ml deleted file mode 100755 index 0189e4cdb4..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/prim.ml +++ /dev/null @@ -1,88 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -module type G = sig - type t - module V : Sig.COMPARABLE - module E : sig - type t - type label - val label : t -> label - val dst : t -> V.t - val src : t -> V.t - val compare : t -> t -> int - end - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_edges_e : (E.t -> unit) -> t -> unit - val iter_succ_e : (E.t -> unit) -> t -> V.t -> unit -end - -module Make - (G: G) - (W: Sig.WEIGHT with type edge = G.E.t) = -struct - open G.E - module H = Hashtbl.Make(G.V) - - module Elt = struct - type t = W.t * G.V.t - - (* weights are compared first, and minimal weights come first in the - queue *) - let compare (w1,v1) (w2,v2) = - let cw = W.compare w2 w1 in - if cw != 0 then cw else G.V.compare v1 v2 - end - - module Q = Heap.Imperative(Elt) - - let spanningtree_from g r = - let visited = H.create 97 in - let key = H.create 97 in - let q = Q.create 17 in - Q.add q (W.zero, r); - while not (Q.is_empty q) do - let (_,u) = Q.pop_maximum q in - if not (H.mem visited u) then begin - H.add visited u (); - G.iter_succ_e (fun e -> - let v = dst e in - if not (H.mem visited v) then begin - let wuv = W.weight e in - let improvement = - try W.compare wuv (fst (H.find key v)) < 0 with Not_found -> true - in - if improvement then begin - H.replace key v (wuv, e); - Q.add q (wuv, v) - end; - end) g u - end - done; - H.fold (fun _ (_, e) acc -> e :: acc) key [] - - let spanningtree g = - let r = ref None in - try - G.iter_vertex (fun v -> r := Some v; raise Exit) g; - invalid_arg "spanningtree" - with Exit -> - match !r with - | None -> assert false - | Some r -> spanningtree_from g r - -end diff --git a/jscomp/build_tests/ocamlgraph/src/prim.mli b/jscomp/build_tests/ocamlgraph/src/prim.mli deleted file mode 100755 index eaeb3f678f..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/prim.mli +++ /dev/null @@ -1,41 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -module type G = sig - type t - module V : Sig.COMPARABLE - module E : sig - type t - type label - val label : t -> label - val dst : t -> V.t - val src : t -> V.t - val compare : t -> t -> int - end - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_edges_e : (E.t -> unit) -> t -> unit - val iter_succ_e : (E.t -> unit) -> t -> V.t -> unit -end - -(** Functor providing an implementation of Prim's minimum-spanning-tree - algorithm. - Parameter [W] ensures that label on edges are comparable. *) -module Make(G: G)(W: Sig.WEIGHT with type edge = G.E.t) : sig - val spanningtree : G.t -> G.E.t list - val spanningtree_from : G.t -> G.V.t -> G.E.t list -end - diff --git a/jscomp/build_tests/ocamlgraph/src/rand.ml b/jscomp/build_tests/ocamlgraph/src/rand.ml deleted file mode 100755 index 1bcb922557..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/rand.ml +++ /dev/null @@ -1,241 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: rand.ml,v 1.18 2005-03-31 13:32:51 filliatr Exp $ *) - -module type S = sig - type graph - type vertex - type edge_label - val graph : ?loops:bool -> v:int -> e:int -> unit -> graph - val labeled : - (vertex -> vertex -> edge_label) -> - ?loops:bool -> v:int -> e:int -> unit -> graph - (* DEBUG *) - val random_few_edges : loops:bool -> v:int -> e:int -> graph - val random_many_edges : loops:bool -> v:int -> e:int -> graph - val gnp : ?loops:bool -> v:int -> prob:float -> unit -> graph - val gnp_labeled : - (vertex -> vertex -> edge_label) -> - ?loops:bool -> v:int -> prob:float -> unit -> graph -end - -module Make(B : Builder.INT) = struct - - open B - type graph = G.t - type vertex = G.V.t - type edge_label = G.E.label - - open Int64 - - let max_edges ~loops ~v ~e = - if v <= 0 || e < 0 then invalid_arg "random"; - let v64 = of_int v in - let max_e = mul v64 (pred v64) in - let max_e = if G.is_directed then max_e else div max_e (of_int 2) in - let max_e = if loops then add max_e v64 else max_e in - if of_int e > max_e then invalid_arg "random: too many edges"; - max_e - - let fold_for i0 i1 f = - let rec loop i v = if i > i1 then v else loop (i + 1) (f v i) in - loop i0 - - (* naive implementation: we randomly chose edges up to [e] different edges *) - let random_few_edges add_edge ~loops ~v ~e = - let _ = max_edges ~loops ~v ~e in - let a = Array.init v G.V.create in - let g = Array.fold_left add_vertex (empty ()) a in - let rec random_edge g = - let i = Random.int v in - let j = Random.int v in - if (i = j && not loops) || G.mem_edge g a.(i) a.(j) then - random_edge g - else - add_edge g a.(i) a.(j) - in - fold_for 1 e (fun g _ -> random_edge g) g - - (* other implementation in O(v * v); faster when [e] is large *) - let random_many_edges add_edge ~loops ~v ~e = - let v64 = of_int v in - let max_e = max_edges ~loops ~v ~e in - let a = Array.init v G.V.create in - let g = Array.fold_left add_vertex (empty ()) a in - let rec add_edges i j max nb g = - assert - (max >= 0L && - max_e = - add max (add (mul (of_int i) v64) - (of_int - (j - - (match G.is_directed, loops with - | true, true -> 0 - | true, false -> if j > i then i + 1 else i - | false, true -> i * (i - 1) / 2 + if j > i then i else j - | false, false -> i*(i+1)/2 + if j > i then i+1 else j))))); - if nb = 0 then - g - else - let add_edges = - let i, j = if j = v - 1 then i + 1, 0 else i, j + 1 in - add_edges i j - in - if (i = j && not loops) || (not G.is_directed && i > j) then - add_edges max nb g - else - let add_edges = add_edges (pred max) in - if Random.int64 max < of_int nb then - add_edges (nb - 1) (add_edge g a.(i) a.(j)) - else - add_edges nb g - in - add_edges 0 0 max_e e g - - let random ~loops ~v ~e = - let r = float e /. (float v *. float v) in - (if r < 0.4 then random_few_edges else random_many_edges) ~loops ~v ~e - - let graph ?(loops=false) ~v ~e () = random B.add_edge ~loops ~v ~e - - let labeled f ?(loops=false) ~v ~e () = - random - (fun g v1 v2 -> B.add_edge_e g (G.E.create v1 (f v1 v2) v2)) - ~loops ~v ~e - - (* DEBUG *) - let random_few_edges = random_few_edges B.add_edge - let random_many_edges = random_many_edges B.add_edge - - (** G(n,p) graphs - See https://en.wikipedia.org/wiki/Random_graph *) - - - let gnp_generic add_edge ?(loops=false) ~v ~prob () = - if not (0.0 <= prob && prob <= 1.0) then invalid_arg "gnp"; - let vertices = Array.init v (fun i -> B.G.V.create i) in - let g = Array.fold_left B.add_vertex (B.empty ()) vertices in - let g = ref g in - for i = 0 to v-1 do - for j = 0 to (if G.is_directed then v-1 else i) do - if (loops || j <> i) && (prob = 1.0 || Random.float 1.0 < prob) then - g := add_edge !g vertices.(i) vertices.(j) - done - done; - !g - - let gnp ?(loops=false) ~v ~prob () = - gnp_generic B.add_edge ~loops ~v ~prob () - - let gnp_labeled f ?(loops=false) ~v ~prob () = - gnp_generic (fun g v1 v2 -> B.add_edge_e g (G.E.create v1 (f v1 v2) v2)) - ~loops ~v ~prob () - -end - -module P (G : Sig.P with type V.label = int) = Make(Builder.P(G)) - -module I (G : Sig.I with type V.label = int) = Make(Builder.I(G)) - - -(** Random planar graphs *) - -module Planar = struct - - module type S = sig - type graph - val graph : - ?loops:bool -> xrange:int*int -> yrange:int*int -> - prob:float -> int -> graph - end - - module Make - (B : Builder.S with type G.V.label = int * int and type G.E.label = int) = - struct - - type graph = B.G.t - open B.G - - module Point = struct - type point = V.t - let ccw v1 v2 v3 = - Delaunay.IntPoints.ccw (V.label v1) (V.label v2) (V.label v3) - let in_circle v1 v2 v3 v4 = - Delaunay.IntPoints.in_circle - (V.label v1) (V.label v2) (V.label v3) (V.label v4) - let distance v1 v2 = - let x1,y1 = V.label v1 in - let x2,y2 = V.label v2 in - let sqr x = let x = float x in x *. x in - truncate (sqrt (sqr (x1 - x2) +. sqr (y1 - y2))) - end - - module Triangulation = Delaunay.Make(Point) - - let graph ?(loops=false) ~xrange:(xmin,xmax) ~yrange:(ymin,ymax) ~prob v = - if not (0.0 <= prob && prob <= 1.0) then invalid_arg "Planar.graph"; - if v < 2 then invalid_arg "Planar.graph"; - (* [v] random points and their Delaunay triangulation *) - let random_point () = - xmin + Random.int (1 + xmax - xmin), - ymin + Random.int (1 + ymax - ymin) - in - let vertices = Array.init v (fun _ -> V.create (random_point ())) in - let t = Triangulation.triangulate vertices in - (* a graph with [v] vertices and random loops if any *) - let g = Array.fold_left B.add_vertex (B.empty ()) vertices in - let g = - if loops then - Array.fold_left - (fun g v -> - if Random.float 1.0 < prob then - g - else - let e = E.create v 0 v in B.add_edge_e g e) - g vertices - else - g - in - (* we keep some edges from the triangulation according to [prob] *) - let add_edge v1 v2 g = - if Random.float 1.0 < prob then - g - else - let e = E.create v1 (Point.distance v1 v2) v2 in B.add_edge_e g e - in - Triangulation.fold - (fun v1 v2 g -> - let g = add_edge v1 v2 g in - if is_directed then add_edge v2 v1 g else g) - t g - - end - - module P (G : Sig.P with type V.label = int * int and type E.label = int) = - Make(Builder.P(G)) - - module I (G : Sig.I with type V.label = int * int and type E.label = int) = - Make(Builder.I(G)) - -end -(* - Local Variables: - compile-command: "make -C .. src/rand.cmo" - End: - -*) diff --git a/jscomp/build_tests/ocamlgraph/src/rand.mli b/jscomp/build_tests/ocamlgraph/src/rand.mli deleted file mode 100755 index 3069829c15..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/rand.mli +++ /dev/null @@ -1,122 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: rand.mli,v 1.12 2005-03-31 13:32:51 filliatr Exp $ *) - -(** Random graph generation. *) - -(** {2 Random graphs} *) - -module type S = sig - - type graph - type vertex - type edge_label - - val graph : ?loops:bool -> v:int -> e:int -> unit -> graph - (** [graph v e] generates a random graph with exactly [v] vertices - and [e] edges. Vertices are labeled with [0] ... [v-1]. - The boolean [loops] indicates whether loops are allowed; - default value is no loop ([false]). - @raise Invalid_argument if [e] exceeds the maximal number of edges. *) - - val labeled : - (vertex -> vertex -> edge_label) -> - ?loops:bool -> v:int -> e:int -> unit -> graph - (** [labeled f] is similar to [graph] except that edges are labeled - using function [f]. - @raise Invalid_argument if there are too many edges. *) - - (** The two functions above actually make a choice between two - different implementations according to the ratio e/(v*v). - When this ratio is small, [random_few_edges] is selected; - otherwise [random_many_edges] is selected. *) - - val random_few_edges : loops:bool -> v:int -> e:int -> graph - val random_many_edges : loops:bool -> v:int -> e:int -> graph - - val gnp : ?loops:bool -> v:int -> prob:float -> unit -> graph - (** random graph using the G(n,p) model. - [gnp v prob] generates a random graph with exactly [v] vertices - and where each edge is selected with probability [prob] *) - - val gnp_labeled : - (vertex -> vertex -> edge_label) -> - ?loops:bool -> v:int -> prob:float -> unit -> graph - (** [gnp_labeled add_edge v e] is similar to [gnp] except that edges - are labeled using function [f]. *) - -end - -module Make(B: Builder.INT) : - S with type graph = B.G.t - and type vertex = B.G.V.t - and type edge_label = B.G.E.label -(** Random graphs *) - -module P (G : Sig.P with type V.label = int) : - S with type graph = G.t - and type vertex = G.V.t - and type edge_label = G.E.label -(** Random persistent graphs *) - -module I (G : Sig.I with type V.label = int) : - S with type graph = G.t - and type vertex = G.V.t - and type edge_label = G.E.label -(** Random imperative graphs *) - -(** {2 Random planar graphs} *) - -module Planar : sig - - module type S = sig - - type graph - - val graph : - ?loops:bool -> xrange:int*int -> yrange:int*int -> - prob:float -> int -> graph - (** [graph xrange yrange prob v] - generates a random planar graph with exactly [v] vertices. - Vertices are labeled with integer coordinates, randomly distributed - according to [xrange] and [yrange]. - Edges are built as follows: the full Delaunay triangulation is - constructed and then each edge is discarded with probabiblity [prob] - (which should lie in [0..1]). In particular [prob = 0.0] gives the - full triangulation. - Edges are labeled with the (rounded) Euclidean distance between - the two vertices. - The boolean [loops] indicates whether loops are allowed; - default value is no loop ([false]). *) - - end - - module Make - (B : Builder.S with type G.V.label = int * int and type G.E.label = int) : - S with type graph = B.G.t - (** Random planar graphs *) - - module P (G : Sig.P with type V.label = int * int and type E.label = int) : - S with type graph = G.t - (** Random persistent planar graphs *) - - module I (G : Sig.I with type V.label = int * int and type E.label = int) : - S with type graph = G.t - (** Random imperative planar graphs *) - -end diff --git a/jscomp/build_tests/ocamlgraph/src/sig.ml b/jscomp/build_tests/ocamlgraph/src/sig.ml deleted file mode 100755 index 38ff23ad02..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/sig.ml +++ /dev/null @@ -1,375 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** {b Signatures for graph implementations.} *) - -(** {2 Signature for ordered and hashable types} *) - -(** Signature with only an abstract type. *) -module type ANY_TYPE = sig type t end - -(** Signature equivalent to [Set.OrderedType]. *) -module type ORDERED_TYPE = sig type t val compare : t -> t -> int end - -(** Signature equivalent to [Set.OrderedType] with a default value. *) -module type ORDERED_TYPE_DFT = sig include ORDERED_TYPE val default : t end - -(** Signature equivalent to [Hashtbl.HashedType]. *) -module type HASHABLE = sig - type t - val hash : t -> int - val equal : t -> t -> bool -end - -(** Signature merging {!ORDERED_TYPE} and {!HASHABLE}. *) -module type COMPARABLE = sig - type t - val compare : t -> t -> int - val hash : t -> int - val equal : t -> t -> bool -end - -(** {2 Signatures for graph implementations} *) - -(** Signature for vertices. *) -module type VERTEX = sig - - (** Vertices are {!COMPARABLE}. *) - - type t - - include COMPARABLE with type t := t - - (** Vertices are labeled. *) - - type label - val create : label -> t - val label : t -> label - -end - -(** Signature for edges. *) -module type EDGE = sig - - (** Edges are {!ORDERED_TYPE}. *) - - type t - val compare : t -> t -> int - - (** Edges are directed. *) - - type vertex - - val src : t -> vertex - (** Edge origin. *) - val dst : t -> vertex - (** Edge destination. *) - - (** Edges are labeled. *) - - type label - val create : vertex -> label -> vertex -> t - (** [create v1 l v2] creates an edge from [v1] to [v2] with label [l] *) - val label : t -> label - (** Get the label of an edge. *) - -end - -(** Common signature for all graphs. *) -module type G = sig - - (** {2 Graph structure} *) - - (** Abstract type of graphs *) - type t - - (** Vertices have type [V.t] and are labeled with type [V.label] - (note that an implementation may identify the vertex with its - label) *) - module V : VERTEX - type vertex = V.t - - (** Edges have type [E.t] and are labeled with type [E.label]. - [src] (resp. [dst]) returns the origin (resp. the destination) of a - given edge. *) - module E : EDGE with type vertex = vertex - type edge = E.t - - (** Is this an implementation of directed graphs? *) - val is_directed : bool - - (** {2 Size functions} *) - - val is_empty : t -> bool - val nb_vertex : t -> int - val nb_edges : t -> int - - (** Degree of a vertex *) - - val out_degree : t -> vertex -> int - (** [out_degree g v] returns the out-degree of [v] in [g]. - @raise Invalid_argument if [v] is not in [g]. *) - - val in_degree : t -> vertex -> int - (** [in_degree g v] returns the in-degree of [v] in [g]. - @raise Invalid_argument if [v] is not in [g]. *) - - (** {2 Membership functions} *) - - val mem_vertex : t -> vertex -> bool - val mem_edge : t -> vertex -> vertex -> bool - val mem_edge_e : t -> edge -> bool - - val find_edge : t -> vertex -> vertex -> edge - (** [find_edge g v1 v2] returns the edge from [v1] to [v2] if it exists. - Unspecified behaviour if [g] has several edges from [v1] to [v2]. - @raise Not_found if no such edge exists. *) - - val find_all_edges : t -> vertex -> vertex -> edge list - (** [find_all_edges g v1 v2] returns all the edges from [v1] to [v2]. - @since ocamlgraph 1.8 *) - - (** {2 Successors and predecessors} - - You should better use iterators on successors/predecessors (see - Section "Vertex iterators"). *) - - val succ : t -> vertex -> vertex list - (** [succ g v] returns the successors of [v] in [g]. - @raise Invalid_argument if [v] is not in [g]. *) - - val pred : t -> vertex -> vertex list - (** [pred g v] returns the predecessors of [v] in [g]. - @raise Invalid_argument if [v] is not in [g]. *) - - (** Labeled edges going from/to a vertex *) - - val succ_e : t -> vertex -> edge list - (** [succ_e g v] returns the edges going from [v] in [g]. - @raise Invalid_argument if [v] is not in [g]. *) - - val pred_e : t -> vertex -> edge list - (** [pred_e g v] returns the edges going to [v] in [g]. - @raise Invalid_argument if [v] is not in [g]. *) - - (** {2 Graph iterators} *) - - val iter_vertex : (vertex -> unit) -> t -> unit - (** Iter on all vertices of a graph. *) - - val fold_vertex : (vertex -> 'a -> 'a) -> t -> 'a -> 'a - (** Fold on all vertices of a graph. *) - - val iter_edges : (vertex -> vertex -> unit) -> t -> unit - (** Iter on all edges of a graph. Edge label is ignored. *) - - val fold_edges : (vertex -> vertex -> 'a -> 'a) -> t -> 'a -> 'a - (** Fold on all edges of a graph. Edge label is ignored. *) - - val iter_edges_e : (edge -> unit) -> t -> unit - (** Iter on all edges of a graph. *) - - val fold_edges_e : (edge -> 'a -> 'a) -> t -> 'a -> 'a - (** Fold on all edges of a graph. *) - - val map_vertex : (vertex -> vertex) -> t -> t - (** Map on all vertices of a graph. *) - - (** {2 Vertex iterators} - - Each iterator [iterator f v g] iters [f] to the successors/predecessors - of [v] in the graph [g] and raises [Invalid_argument] if [v] is not in - [g]. It is the same for functions [fold_*] which use an additional - accumulator. - - Time complexity for ocamlgraph implementations: - operations on successors are in O(1) amortized for imperative graphs and - in O(ln(|V|)) for persistent graphs while operations on predecessors are - in O(max(|V|,|E|)) for imperative graphs and in O(max(|V|,|E|)*ln|V|) for - persistent graphs. *) - - (** iter/fold on all successors/predecessors of a vertex. *) - - val iter_succ : (vertex -> unit) -> t -> vertex -> unit - val iter_pred : (vertex -> unit) -> t -> vertex -> unit - val fold_succ : (vertex -> 'a -> 'a) -> t -> vertex -> 'a -> 'a - val fold_pred : (vertex -> 'a -> 'a) -> t -> vertex -> 'a -> 'a - - (** iter/fold on all edges going from/to a vertex. *) - - val iter_succ_e : (edge -> unit) -> t -> vertex -> unit - val fold_succ_e : (edge -> 'a -> 'a) -> t -> vertex -> 'a -> 'a - val iter_pred_e : (edge -> unit) -> t -> vertex -> unit - val fold_pred_e : (edge -> 'a -> 'a) -> t -> vertex -> 'a -> 'a - -end - -(** Signature for persistent (i.e. immutable) graph. *) -module type P = sig - - include G - (** A persistent graph is a graph. *) - - val empty : t - (** The empty graph. *) - - val add_vertex : t -> vertex -> t - (** [add_vertex g v] adds the vertex [v] to the graph [g]. - Just return [g] if [v] is already in [g]. *) - - val remove_vertex : t -> vertex -> t - (** [remove g v] removes the vertex [v] from the graph [g] - (and all the edges going from [v] in [g]). - Just return [g] if [v] is not in [g]. - - Time complexity for ocamlgraph implementations: - O(|V|*ln(|V|)) for unlabeled graphs and - O(|V|*max(ln(|V|),D)) for labeled graphs. - D is the maximal degree of the graph. *) - - val add_edge : t -> vertex -> vertex -> t - (** [add_edge g v1 v2] adds an edge from the vertex [v1] to the vertex [v2] - in the graph [g]. - Add also [v1] (resp. [v2]) in [g] if [v1] (resp. [v2]) is not in [g]. - Just return [g] if this edge is already in [g]. *) - - val add_edge_e : t -> edge -> t - (** [add_edge_e g e] adds the edge [e] in the graph [g]. - Add also [E.src e] (resp. [E.dst e]) in [g] if [E.src e] (resp. [E.dst - e]) is not in [g]. - Just return [g] if [e] is already in [g]. *) - - val remove_edge : t -> vertex -> vertex -> t - (** [remove_edge g v1 v2] removes the edge going from [v1] to [v2] from the - graph [g]. If the graph is labelled, all the edges going from [v1] to - [v2] are removed from [g]. - Just return [g] if this edge is not in [g]. - @raise Invalid_argument if [v1] or [v2] are not in [g]. *) - - val remove_edge_e : t -> edge -> t - (** [remove_edge_e g e] removes the edge [e] from the graph [g]. - Just return [g] if [e] is not in [g]. - @raise Invalid_argument if [E.src e] or [E.dst e] are not in [g]. *) - -end - -(** Signature for imperative (i.e. mutable) graphs. *) -module type I = sig - - include G - (** An imperative graph is a graph. *) - - val create : ?size:int -> unit -> t - (** [create ()] returns an empty graph. Optionally, a size can be - given, which should be on the order of the expected number of - vertices that will be in the graph (for hash tables-based - implementations). The graph grows as needed, so [size] is - just an initial guess. *) - - val clear: t -> unit - (** Remove all vertices and edges from the given graph. - @since ocamlgraph 1.4 *) - - val copy : t -> t - (** [copy g] returns a copy of [g]. Vertices and edges (and eventually - marks, see module [Mark]) are duplicated. *) - - val add_vertex : t -> vertex -> unit - (** [add_vertex g v] adds the vertex [v] to the graph [g]. - Do nothing if [v] is already in [g]. *) - - val remove_vertex : t -> vertex -> unit - (** [remove g v] removes the vertex [v] from the graph [g] - (and all the edges going from [v] in [g]). - Do nothing if [v] is not in [g]. - - Time complexity for ocamlgraph implementations: - O(|V|*ln(D)) for unlabeled graphs and O(|V|*D) for - labeled graphs. D is the maximal degree of the graph. *) - - val add_edge : t -> vertex -> vertex -> unit - (** [add_edge g v1 v2] adds an edge from the vertex [v1] to the vertex [v2] - in the graph [g]. - Add also [v1] (resp. [v2]) in [g] if [v1] (resp. [v2]) is not in [g]. - Do nothing if this edge is already in [g]. *) - - val add_edge_e : t -> edge -> unit - (** [add_edge_e g e] adds the edge [e] in the graph [g]. - Add also [E.src e] (resp. [E.dst e]) in [g] if [E.src e] (resp. [E.dst - e]) is not in [g]. - Do nothing if [e] is already in [g]. *) - - val remove_edge : t -> vertex -> vertex -> unit - (** [remove_edge g v1 v2] removes the edge going from [v1] to [v2] from the - graph [g]. If the graph is labelled, all the edges going from [v1] to - [v2] are removed from [g]. - Do nothing if this edge is not in [g]. - @raise Invalid_argument if [v1] or [v2] are not in [g]. *) - - val remove_edge_e : t -> edge -> unit - (** [remove_edge_e g e] removes the edge [e] from the graph [g]. - Do nothing if [e] is not in [g]. - @raise Invalid_argument if [E.src e] or [E.dst e] are not in [g]. *) - -end - -(** Signature for edges' weights. *) -module type WEIGHT = sig - type edge - (** Type for graph edges. *) - type t - (** Type of edges' weights. *) - val weight : edge -> t - (** Get the weight of an edge. *) - val compare : t -> t -> int - (** Weights must be ordered. *) - val add : t -> t -> t - (** Addition of weights. *) - val zero : t - (** Neutral element for {!add}. *) -end - -(** Signature for marks on vertices. *) -module type MARK = sig - type graph - (** Type of graphs. *) - type vertex - (** Type of graph vertices. *) - val clear : graph -> unit - (** [clear g] sets all the marks to 0 for all the vertices of [g]. *) - val get : vertex -> int - (** Mark value (in O(1)). *) - val set : vertex -> int -> unit - (** Set the mark of the given vertex. *) -end - -(** Signature for imperative graphs with marks on vertices. *) -module type IM = sig - include I - (** An imperative graph with marks is an imperative graph. *) - - (** Mark on vertices. - Marks can be used if you want to store some information on vertices: - it is more efficient to use marks than an external table. *) - module Mark : MARK with type graph = t and type vertex = vertex -end - -(* -Local Variables: -compile-command: "make -C .." -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/src/sig_pack.ml b/jscomp/build_tests/ocamlgraph/src/sig_pack.ml deleted file mode 100755 index 44a4a60c9b..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/sig_pack.ml +++ /dev/null @@ -1,412 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id: sig_pack.mli,v 1.23 2005-07-18 07:10:35 filliatr Exp $ *) - -(** Immediate access to the library: contain a signature gathering an - imperative graph signature and all algorithms. - Vertices and edges are labeled with integers. *) - -(** Signature gathering an imperative graph signature and all algorithms. - Vertices and edges are labeled with integers. *) -module type S = sig - - (** {2 Graph structure} *) - - (** abstract type of graphs *) - type t - - (** Vertices *) - module V : sig - (** Vertices are [COMPARABLE] *) - - type t - val compare : t -> t -> int - val hash : t -> int - val equal : t -> t -> bool - - (** vertices are labeled with integers *) - - type label = int - val create : label -> t - val label : t -> label - end - - type vertex = V.t - - (** Edges *) - module E : sig - (** Edges are [ORDERED]. *) - - type t - val compare : t -> t -> int - - (** Edges are directed. *) - - val src : t -> V.t - val dst : t -> V.t - - (** Edges are labeled with integers. *) - - type label = int - val create : V.t -> label -> V.t -> t - (** [create v1 l v2] creates an edge from [v1] to [v2] with label [l] *) - val label : t -> label - - type vertex = V.t - end - - type edge = E.t - - (** is this an implementation of directed graphs? *) - val is_directed : bool - - (** {2 Graph constructors and destructors} *) - - val create : ?size:int -> unit -> t - (** Return an empty graph. Optionally, a size can be - given, which should be on the order of the expected number of - vertices that will be in the graph (for hash tables-based - implementations). The graph grows as needed, so [size] is - just an initial guess. *) - - val clear: t -> unit - (** Remove all vertices and edges from the given graph. - @since ocamlgraph 1.4 *) - - val copy : t -> t - (** [copy g] returns a copy of [g]. Vertices and edges (and eventually - marks, see module [Mark]) are duplicated. *) - - val add_vertex : t -> V.t -> unit - (** [add_vertex g v] adds the vertex [v] from the graph [g]. - Do nothing if [v] is already in [g]. *) - - val remove_vertex : t -> V.t -> unit - (** [remove g v] removes the vertex [v] from the graph [g] - (and all the edges going from [v] in [g]). - Do nothing if [v] is not in [g]. *) - - val add_edge : t -> V.t -> V.t -> unit - (** [add_edge g v1 v2] adds an edge from the vertex [v1] to the vertex [v2] - in the graph [g]. - Add also [v1] (resp. [v2]) in [g] if [v1] (resp. [v2]) is not in [g]. - Do nothing if this edge is already in [g]. *) - - val add_edge_e : t -> E.t -> unit - (** [add_edge_e g e] adds the edge [e] in the graph [g]. - Add also [E.src e] (resp. [E.dst e]) in [g] if [E.src e] (resp. [E.dst - e]) is not in [g]. - Do nothing if [e] is already in [g]. *) - - val remove_edge : t -> V.t -> V.t -> unit - (** [remove_edge g v1 v2] removes the edge going from [v1] to [v2] from the - graph [g]. - Do nothing if this edge is not in [g]. - @raise Invalid_argument if [v1] or [v2] are not in [g]. *) - - val remove_edge_e : t -> E.t -> unit - (** [remove_edge_e g e] removes the edge [e] from the graph [g]. - Do nothing if [e] is not in [g]. - @raise Invalid_argument if [E.src e] or [E.dst e] are not in [g]. *) - - (** Vertices contains integers marks, which can be set or used by some - algorithms (see for instance module [Marking] below) *) - module Mark : sig - type graph = t - type vertex = V.t - val clear : t -> unit - (** [clear g] sets all marks to 0 from all the vertives of [g]. *) - val get : V.t -> int - val set : V.t -> int -> unit - end - - (** {2 Size functions} *) - - val is_empty : t -> bool - val nb_vertex : t -> int - val nb_edges : t -> int - - (** Degree of a vertex *) - - val out_degree : t -> V.t -> int - (** [out_degree g v] returns the out-degree of [v] in [g]. - @raise Invalid_argument if [v] is not in [g]. *) - - val in_degree : t -> V.t -> int - (** [in_degree g v] returns the in-degree of [v] in [g]. - @raise Invalid_argument if [v] is not in [g]. *) - - (** {2 Membership functions} *) - - val mem_vertex : t -> V.t -> bool - val mem_edge : t -> V.t -> V.t -> bool - val mem_edge_e : t -> E.t -> bool - val find_edge : t -> V.t -> V.t -> E.t - val find_all_edges : t -> V.t -> V.t -> E.t list - - (** {2 Successors and predecessors of a vertex} *) - - val succ : t -> V.t -> V.t list - (** [succ g v] returns the successors of [v] in [g]. - @raise Invalid_argument if [v] is not in [g]. *) - - val pred : t -> V.t -> V.t list - (** [pred g v] returns the predecessors of [v] in [g]. - @raise Invalid_argument if [v] is not in [g]. *) - - (** Labeled edges going from/to a vertex *) - - val succ_e : t -> V.t -> E.t list - (** [succ_e g v] returns the edges going from [v] in [g]. - @raise Invalid_argument if [v] is not in [g]. *) - - val pred_e : t -> V.t -> E.t list - (** [pred_e g v] returns the edges going to [v] in [g]. - @raise Invalid_argument if [v] is not in [g]. *) - - (** {2 Graph iterators} *) - - (** iter/fold on all vertices/edges of a graph *) - - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_edges : (V.t -> V.t -> unit) -> t -> unit - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val fold_edges : (V.t -> V.t -> 'a -> 'a) -> t -> 'a -> 'a - - (** map iterator on vertex *) - val map_vertex : (V.t -> V.t) -> t -> t - - (** iter/fold on all labeled edges of a graph *) - - val iter_edges_e : (E.t -> unit) -> t -> unit - val fold_edges_e : (E.t -> 'a -> 'a) -> t -> 'a -> 'a - - (** {2 Vertex iterators} - - Each iterator [iterator f v g] iters [f] to the successors/predecessors - of [v] in the graph [g] and raises [Invalid_argument] if [v] is not in - [g]. *) - - (** iter/fold on all successors/predecessors of a vertex. *) - - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - val iter_pred : (V.t -> unit) -> t -> V.t -> unit - val fold_succ : (V.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a - val fold_pred : (V.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a - - (** iter/fold on all edges going from/to a vertex. *) - - val iter_succ_e : (E.t -> unit) -> t -> V.t -> unit - val fold_succ_e : (E.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a - val iter_pred_e : (E.t -> unit) -> t -> V.t -> unit - val fold_pred_e : (E.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a - - (** {2 Basic operations} *) - - val find_vertex : t -> int -> V.t - (** [vertex g i] returns a vertex of label [i] in [g]. The behaviour is - unspecified if [g] has several vertices with label [i]. - Note: this function is inefficient (linear in the number of vertices); - you should better keep the vertices as long as you create them. *) - - val transitive_closure : ?reflexive:bool -> t -> t - (** [transitive_closure ?reflexive g] returns the transitive closure - of [g] (as a new graph). Loops (i.e. edges from a vertex to itself) - are added only if [reflexive] is [true] (default is [false]). *) - - val add_transitive_closure : ?reflexive:bool -> t -> t - (** [add_transitive_closure ?reflexive g] replaces [g] by its - transitive closure. Meaningless for persistent implementations - (then acts as [transitive_closure]). *) - - val transitive_reduction : ?reflexive:bool -> t -> t - (** [transitive_reduction ?reflexive g] returns the transitive reduction - of [g] (as a new graph). Loops (i.e. edges from a vertex to itself) - are removed only if [reflexive] is [true] (default is [false]). *) - - val replace_by_transitive_reduction : ?reflexive:bool -> t -> t - (** [replace_by_transitive_reduction ?reflexive g] replaces [g] by its - transitive reduction. Meaningless for persistent implementations - (then acts as [transitive_reduction]). *) - - val mirror : t -> t - (** [mirror g] returns a new graph which is the mirror image of [g]: - each edge from [u] to [v] has been replaced by an edge from [v] to [u]. - For undirected graphs, it simply returns a copy of [g]. *) - - val complement : t -> t - (** [complement g] builds a new graph which is the complement of [g]: - each edge present in [g] is not present in the resulting graph and - vice-versa. Edges of the returned graph are unlabeled. *) - - val intersect : t -> t -> t - (** [intersect g1 g2] returns a new graph which is the intersection of [g1] - and [g2]: each vertex and edge present in [g1] *and* [g2] is present - in the resulting graph. *) - - val union : t -> t -> t - (** [union g1 g2] returns a new graph which is the union of [g1] and [g2]: - each vertex and edge present in [g1] *or* [g2] is present in the - resulting graph. *) - - (** {2 Traversal} *) - - (** Depth-first search *) - module Dfs : sig - val iter : ?pre:(V.t -> unit) -> - ?post:(V.t -> unit) -> t -> unit - (** [iter pre post g] visits all nodes of [g] in depth-first search, - applying [pre] to each visited node before its successors, - and [post] after them. Each node is visited exactly once. *) - val prefix : (V.t -> unit) -> t -> unit - (** applies only a prefix function *) - val postfix : (V.t -> unit) -> t -> unit - (** applies only a postfix function *) - - (** Same thing, but for a single connected component *) - - val iter_component : - ?pre:(V.t -> unit) -> - ?post:(V.t -> unit) -> t -> V.t -> unit - val prefix_component : (V.t -> unit) -> t -> V.t -> unit - val postfix_component : (V.t -> unit) -> t -> V.t -> unit - - val has_cycle : t -> bool - end - - (** Breadth-first search *) - module Bfs : sig - val iter : (V.t -> unit) -> t -> unit - val iter_component : (V.t -> unit) -> t -> V.t -> unit - end - - (** Graph traversal with marking *) - module Marking : sig - val dfs : t -> unit - val has_cycle : t -> bool - end - - (** {2 Graph generators} *) - - (** Classic graphs *) - module Classic : sig - val divisors : int -> t - (** [divisors n] builds the graph of divisors. - Vertices are integers from [2] to [n]. [i] is connected to [j] if - and only if [i] divides [j]. - @raise Invalid_argument is [n < 2]. *) - - val de_bruijn : int -> t - (** [de_bruijn n] builds the de Bruijn graph of order [n]. - Vertices are bit sequences of length [n] (encoded as their - interpretation as binary integers). The sequence [xw] is connected - to the sequence [wy] for any bits [x] and [y] and any bit sequence - [w] of length [n-1]. - @raise Invalid_argument is [n < 1] or [n > Sys.word_size-1]. *) - - val vertex_only : int -> t - (** [vertex_only n] builds a graph with [n] vertices and no edge. *) - - val full : ?self:bool -> int -> t - (** [full n] builds a graph with [n] vertices and all possible edges. - The optional argument [self] indicates if loop edges should be added - (default value is [true]). *) - end - - (** Random graphs *) - module Rand : sig - val graph : ?loops:bool -> v:int -> e:int -> unit -> t - (** [random v e] generates a random with [v] vertices and [e] edges. *) - - val labeled : - (V.t -> V.t -> E.label) -> - ?loops:bool -> v:int -> e:int -> unit -> t - (** [random_labeled f] is similar to [random] except that edges are - labeled using function [f] *) - - val gnp : ?loops:bool -> v:int -> prob:float -> unit -> t - (** [gnp v prob] generates a random graph with [v] vertices and - where each edge is selected with probality [prob] (G(n,p) model) *) - - val gnp_labeled : - (V.t -> V.t -> E.label) -> - ?loops:bool -> v:int -> prob:float -> unit -> t - (** [gnp_labeled add_edge v prob] is similar to [gnp] except that - edges are labeled using function [f] *) - - end - - (** Strongly connected components *) - module Components : sig - val scc : t -> int * (V.t -> int) - (** strongly connected components *) - val scc_array : t -> V.t list array - val scc_list : t -> V.t list list - end - - (** {2 Classical algorithms} *) - - val shortest_path : t -> V.t -> V.t -> E.t list * int - (** Dijkstra's shortest path algorithm. Weights are the labels. *) - - val ford_fulkerson : t -> V.t -> V.t -> (E.t -> int) * int - (** Ford Fulkerson maximum flow algorithm *) - - val goldberg : t -> V.t -> V.t -> (E.t -> int) * int - (** Goldberg maximum flow algorithm *) - - val bellman_ford : t -> V.t -> E.t list - (** [bellman_ford g v] finds a negative cycle from [v], and returns it, - or raises [Not_found] if there is no such cycle *) - - (** Path checking *) - module PathCheck : sig - type path_checker - val create : t -> path_checker - val check_path : path_checker -> V.t -> V.t -> bool - end - - (** Topological order *) - module Topological : sig - val fold : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val iter : (V.t -> unit) -> t -> unit - - val fold_stable : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val iter_stable : (V.t -> unit) -> t -> unit - end - - val spanningtree : t -> E.t list - (** Kruskal algorithm *) - - (** {2 Input / Output} *) - - val dot_output : t -> string -> unit - (** DOT output in a file *) - - val display_with_gv : t -> unit - (** Displays the given graph using the external tools "dot" and "gv" - and returns when gv's window is closed *) - - val parse_gml_file : string -> t - val parse_dot_file : string -> t - - val print_gml : Format.formatter -> t -> unit - val print_gml_file : t -> string -> unit - (* val print_graphml : Format.formatter -> t -> unit *) - -end diff --git a/jscomp/build_tests/ocamlgraph/src/strat.ml b/jscomp/build_tests/ocamlgraph/src/strat.ml deleted file mode 100755 index eedabe27f8..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/strat.ml +++ /dev/null @@ -1,231 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* Signature for graphs *) -module type G = sig - - type t - - module V : Sig.ORDERED_TYPE - - type vertex = V.t - - val mem_vertex : t -> vertex -> bool - - val succ : t -> vertex -> vertex list - - val fold_vertex : (vertex -> 'a -> 'a) -> t -> 'a -> 'a - val fold_succ : (vertex -> 'a -> 'a) -> t -> vertex -> 'a -> 'a -end - - -(* Signature for graph add-ons: an initial vertex, final vertices - and membership of vertices to either true or false, - i.e. first or second player *) -module type PLAYER = sig - - type t - type vertex - - val get_initial : t -> vertex - val is_final : t -> vertex -> bool - - val turn : t -> vertex -> bool - -end - - -(* Signature for strategies : for a given state, the strategy tells - which state to go to *) -module type STRAT = sig - - type t - type vertex - - val empty : t - val add : t -> vertex -> vertex -> t - - val next : t -> vertex -> vertex - (* Raises Invalid_argument if vertex's image is not defined *) - -end - - -(* Implements strategy algorithms on graphs *) -module Algo (G : G) (P : PLAYER with type vertex = G.vertex) - (S : STRAT with type vertex = G.vertex) : -sig - - (* coherent_player g p returns true iff - the completion p is coherent w.r.t. - the graph g *) - val coherent_player : G.t -> P.t -> bool - - (* coherent_strat g s returns true iff - the strategy s is coherent w.r.t. - the graph g *) - val coherent_strat : G.t -> S.t -> bool - - (* game g p a b returns true iff a wins in g - given the completion p (i.e. the game - goes through a final state). *) - val game : G.t -> P.t -> S.t -> S.t -> bool - - (* strategy g p s returns true iff s wins in g - given the completion p, whatever strategy - plays the other player. *) - val strategy : G.t -> P.t -> S.t -> bool - - (* strategyA g p returns true iff there - exists a winning stragegy for the true - player. In this case, the winning - strategy is provided. *) - val strategyA : G.t -> P.t -> (bool * S.t) -end = struct - - module SetV = Set.Make (G.V) - - - let rec eq l1 l2 = match l1, l2 with - [], [] -> true - | e1 :: l1', e2 :: l2' -> - (e1 = e2) && (eq l1' l2') - | _ -> false - - let rec eq_mem i l1 l2 = match l1, l2 with - [], [] -> (true, false) - | e1 :: l1', e2 :: l2' -> - if e1 = e2 then - if e1 = i then (eq l1' l2', true) - else eq_mem i l1' l2' - else (false, false) - | _ -> (false, false) - - let puit g v = match G.succ g v with - [] -> true - | _ -> false - - - let get_finals g p = - let f a l = - if P.is_final p a then a :: l - else l - in G.fold_vertex f g [] - - - let coherent_player g p = - G.mem_vertex g (P.get_initial p) - - - let coherent_strat g s = - let f v b = - try - let v' = S.next s v in - b && (G.mem_vertex g v') - with Invalid_argument _ -> true - in - G.fold_vertex f g true - - - let game _ p a b = - - let rec game_aux l pi = - let continue x = - try - game_aux (SetV.add pi l) (S.next x pi) - with Invalid_argument _ -> false - in - (P.is_final p pi) || - (if SetV.mem pi l then false - else - if P.turn p pi then continue a - else continue b) - - in - game_aux SetV.empty (P.get_initial p) - - - let attract1 g p s l = - let f v l1 = - if not (List.mem v l1) then - if P.turn p v then - try - if List.mem (S.next s v) l1 then v :: l1 - else l1 - with Invalid_argument _ -> l1 - else - if puit g v then l1 - else - if G.fold_succ (fun v' b -> b && (List.mem v' l1)) g v true - then v :: l1 - else l1 - else l1 - in - G.fold_vertex f g l - - - let strategy g p s = - - let rec strategy_aux l1 l2 = - let (b1, b2) = eq_mem (P.get_initial p) l1 l2 in - if b1 then b2 - else strategy_aux (attract1 g p s l1) l1 - - in - let finaux = get_finals g p in - strategy_aux (attract1 g p s finaux) finaux - - - let attract g p (l, l') = - let f v (l1, l1') = - if not (List.mem v l1) then - if P.turn p v then - let f' v' l2 = - (match l2 with - [] -> - if List.mem v' l1 then [v'] - else [] - | _ -> l2) in - (match G.fold_succ f' g v [] with - [] -> (l1, l1') - | v' :: _ -> (v :: l1, S.add l1' v v' )) - else - if puit g v then (l1, l1') - else - if G.fold_succ (fun v' b -> b && (List.mem v' l1)) g v true - then (v :: l1, l1') - else (l1, l1') - else (l1, l1') - in - G.fold_vertex f g (l, l') - - - let strategyA g p = - - let rec strategyA_aux l1 l2 f = - let (b1, b2) = eq_mem (P.get_initial p) l1 l2 in - if b1 then (b2, f) - else - let (new_l1, new_f) = attract g p (l1, f) in - strategyA_aux new_l1 l1 new_f - - in - let finaux = get_finals g p in - let (l, r) = attract g p (finaux, S.empty) in - strategyA_aux l finaux r;; - -end diff --git a/jscomp/build_tests/ocamlgraph/src/strat.mli b/jscomp/build_tests/ocamlgraph/src/strat.mli deleted file mode 100755 index 8f03725bb2..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/strat.mli +++ /dev/null @@ -1,104 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Strategies - - Implementation of a winning strategy of a graph: the graph - represents a two players game, each vertex belongs to either player - (whose turn it is to play) and describes a configuration of the - game. The algorithm computes the winning strategy of a player, if any; - i.e. the moves to play (which vertex to go to) so that for all - possible moves of the other player, the game goes through a final - state. - - @author Nicolas Ayache *) - -(** Signature for graphs *) -module type G = sig - type t - module V : Sig.ORDERED_TYPE - type vertex = V.t - val mem_vertex : t -> vertex -> bool - val succ : t -> vertex -> vertex list - val fold_vertex : (vertex -> 'a -> 'a) -> t -> 'a -> 'a - val fold_succ : (vertex -> 'a -> 'a) -> t -> vertex -> 'a -> 'a -end - -(** Signature for graph add-ons: an initial vertex, final vertices - and membership of vertices to either true or false, - i.e. first or second player *) -module type PLAYER = sig - - type t - type vertex - - val get_initial : t -> vertex - val is_final : t -> vertex -> bool - - val turn : t -> vertex -> bool - -end - -(** Signature for strategies: for a given state, the strategy tells - which state to go to *) -module type STRAT = sig - - type t - type vertex - - val empty : t - val add : t -> vertex -> vertex -> t - - val next : t -> vertex -> vertex - (** @raise Invalid_argument if vertex's image is not defined *) - -end - -(** Implements strategy algorithms on graphs *) -module Algo - (G : G) - (P : PLAYER with type vertex = G.vertex) - (S : STRAT with type vertex = G.vertex) : -sig - - (** [coherent_player g p] returns [true] iff - the completion [p] is coherent w.r.t. - the graph g *) - val coherent_player : G.t -> P.t -> bool - - (** [coherent_strat g s] returns [true] iff - the strategy [s] is coherent w.r.t. - the graph [g] *) - val coherent_strat : G.t -> S.t -> bool - - (** [game g p a b] returns [true] iff [a] wins in [g] - given the completion [p] (i.e. the game - goes through a final state). *) - val game : G.t -> P.t -> S.t -> S.t -> bool - - (** [strategy g p s] returns [true] iff [s] wins in [g] - given the completion [p], whatever strategy - plays the other player. *) - val strategy : G.t -> P.t -> S.t -> bool - - (** [strategyA g p] returns [true] iff there - exists [a] winning stragegy for the true - player. In this case, the winning - strategy is provided. *) - val strategyA : G.t -> P.t -> (bool * S.t) - -end diff --git a/jscomp/build_tests/ocamlgraph/src/topological.ml b/jscomp/build_tests/ocamlgraph/src/topological.ml deleted file mode 100755 index cfad628207..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/topological.ml +++ /dev/null @@ -1,166 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -module type G = sig - type t - module V : Sig.COMPARABLE - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_succ : (V.t -> unit) -> t -> V.t -> unit -end - -module Make(G: G) = struct - - module Scc = Components.Make(G) - - let fold f g acc = - (* build the graph of strongly-connected components *) - let n, scc = Scc.scc g in - let vertices = Array.make n [] in - let edges = Array.make n [] in - let degree = Array.make n 0 in (* in-degree *) - let add_vertex x = - let ix = scc x in - vertices.(ix) <- x :: vertices.(ix); - let add_edge y = - let iy = scc y in - if ix <> iy then begin - edges.(ix) <- iy :: edges.(ix); - degree.(iy) <- degree.(iy) + 1 - end - in - G.iter_succ add_edge g x - in - G.iter_vertex add_vertex g; - (* standard topological sort on a DAG *) - let todo = Queue.create () in - let rec walk acc = - if Queue.is_empty todo then - acc - else - let i = Queue.pop todo in - let acc = List.fold_right f vertices.(i) acc in - List.iter - (fun j -> - let d = degree.(j) in - assert (d > 0); (* no back edge *) - if d = 1 then Queue.push j todo else degree.(j) <- d-1) - edges.(i); - walk acc - in - for i = 0 to n-1 do if degree.(i) = 0 then Queue.push i todo done; - walk acc - - let iter f g = fold (fun v () -> f v) g () - -end - -module Make_stable(G: sig include G val in_degree : t -> V.t -> int end) = -struct - - module H = Hashtbl.Make(G.V) - module C = Path.Check(G) - - let choose ~old (v, n) = - let l, min = old in - if n = min then v :: l, n - else if n < min then [ v ], n - else old - - module Q = struct - module S = Set.Make(G.V) - let create () = ref S.empty - let push v s = s := S.add v !s - let pop s = - let r = S.min_elt !s in - s := S.remove r !s; - r - let is_empty s = S.is_empty !s - let choose ~old new_ = - let l, n = choose ~old new_ in - List.sort G.V.compare l, n - end - - (* in case of multiple cycles, choose one vertex in a cycle which - does not depend of any other. *) - let find_top_cycle checker vl = - (* choose [v] if each other vertex [v'] is in the same cycle - (a path from v to v') or is in a separate component - (no path from v' to v). - So, if there is a path from v' to without any path from v to v', - discard v. *) - let on_top_cycle v = - List.for_all - (fun v' -> - G.V.equal v v' || - C.check_path checker v v' || not (C.check_path checker v' v)) - vl - in - List.filter on_top_cycle vl - - let fold f g acc = - let checker = C.create g in - let degree = H.create 97 in - let todo = Q.create () in - let push x = - H.remove degree x; - Q.push x todo - in - let rec walk acc = - if Q.is_empty todo then - (* let's find any node of minimal degree *) - let min, _ = - H.fold (fun v d old -> Q.choose ~old (v, d)) degree ([], max_int) - in - match min with - | [] -> acc - | _ -> - let vl = find_top_cycle checker min in - List.iter push vl; - (* let v = choose_independent_vertex checker min in push v; *) - walk acc - else - let v = Q.pop todo in - let acc = f v acc in - G.iter_succ - (fun x-> - try - let d = H.find degree x in - if d = 1 then push x else H.replace degree x (d-1) - with Not_found -> - (* [x] already visited *) - ()) - g v; - walk acc - in - G.iter_vertex - (fun v -> - let d = G.in_degree g v in - if d = 0 then Q.push v todo - else H.add degree v d) - g; - walk acc - - let iter f g = fold (fun v () -> f v) g () - -end - - -(* -Local Variables: -compile-command: "make -C .." -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/src/topological.mli b/jscomp/build_tests/ocamlgraph/src/topological.mli deleted file mode 100755 index a9927cfd4a..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/topological.mli +++ /dev/null @@ -1,75 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Topological order. - - This functor provides functions which allow iterating over a graph in - topological order. Cycles in graphs are allowed. Specification is the - following: - if vertex [x] is visited before vertex [y] - then either there is a path from [x] to [y], - or there is no path from [y] to [x]. - In the particular case of a DAG, this simplifies to: - if there is an edge from [x] to [y], then [x] is visited before [y]. *) - -(** Minimal graph signature to provide. - Sub-signature of {!Sig.G}. *) -module type G = sig - type t - module V : Sig.COMPARABLE - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_succ : (V.t -> unit) -> t -> V.t -> unit -end - -(** Functor providing topological iterators over a graph. *) -module Make(G: G) : sig - - val fold : (G.V.t -> 'a -> 'a) -> G.t -> 'a -> 'a - (** [fold action g seed] allows iterating over the graph [g] - in topological order. [action node accu] is called repeatedly, - where [node] is the node being visited, and [accu] is the result of - the [action]'s previous invocation, if any, and [seed] otherwise. - If [g] contains cycles, the order is unspecified inside the cycles and - every node in the cycles will be presented exactly once. - - Not tail-recursive. Complexity: O(V+E) *) - - val iter : (G.V.t -> unit) -> G.t -> unit - (** [iter action] calls [action node] repeatedly. Nodes are (again) - presented to [action] in topological order. - The order is the same as for [fold]. *) - -end - -(** Provide the same features than {!Make}, except that the resulting - topological ordering is stable according to vertices comparison: if two - vertices [v1] and [v2] are topologically equal, [v1] is presented first to - the iterator if and only if [G.V.compare v1 v2 <= 0]. In particular, the - resulting order is not dependent on the provided hash function. This - property is not guaranteed by the functor {!Make}. The counterpart is a less - efficient implementation: worst time complexity is O(E*V*ln(V)) instead of - O(E*V) (with E = number of edges and V = number of vertices. *) -module Make_stable(G: sig include G val in_degree : t -> V.t -> int end): sig - val fold : (G.V.t -> 'a -> 'a) -> G.t -> 'a -> 'a - val iter : (G.V.t -> unit) -> G.t -> unit -end - -(* -Local Variables: -compile-command: "make -C .." -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/src/traverse.ml b/jscomp/build_tests/ocamlgraph/src/traverse.ml deleted file mode 100755 index fa7b94022c..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/traverse.ml +++ /dev/null @@ -1,365 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* Graph traversal *) - -module type G = sig - val is_directed : bool - type t - module V : Sig.COMPARABLE - val iter_vertex : (V.t -> unit) -> t -> unit - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - val fold_succ : (V.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a -end - -(* depth-first search *) -module Dfs(G : G) = struct - module H = Hashtbl.Make(G.V) - - let iter ?(pre=fun _ -> ()) ?(post=fun _ -> ()) g = - let h = H.create 97 in - let rec visit v = - if not (H.mem h v) then begin - H.add h v (); - pre v; - G.iter_succ visit g v; - post v - end - in - G.iter_vertex visit g - - let postfix post g = iter ~post g - - let iter_component ?(pre=fun _ -> ()) ?(post=fun _ -> ()) g v = - let h = H.create 97 in - let rec visit v = - H.add h v (); - pre v; - G.iter_succ (fun w -> if not (H.mem h w) then visit w) g v; - post v - in - visit v - - let postfix_component post g = iter_component ~post g - - let has_cycle_undirected g = - let h = H.create 97 in - let father = H.create 97 in - let is_father u v = (* u is the father of v in the DFS descent *) - try G.V.equal (H.find father v) u with Not_found -> false - in - let rec visit v = - H.add h v true; - G.iter_succ - (fun w -> - try if H.find h w && not (is_father w v) then raise Exit - with Not_found -> H.add father w v; visit w) - g v; - H.remove father v; - H.replace h v false - in - try G.iter_vertex (fun v -> if not (H.mem h v) then visit v) g; false - with Exit -> true - - module Tail = struct - - let has_cycle g = - let h = H.create 97 in - let stack = Stack.create () in - let loop () = - while not (Stack.is_empty stack) do - let v = Stack.top stack in - if H.mem h v then begin - (* we are now done with node v *) - (* assert (H.find h v = true); *) - H.replace h v false; - ignore (Stack.pop stack) - end else begin - (* we start DFS from node v *) - H.add h v true; - G.iter_succ - (fun w -> - try if H.find h w then raise Exit - with Not_found -> Stack.push w stack) - g v; - end - done - in - try - G.iter_vertex - (fun v -> - if not (H.mem h v) then begin Stack.push v stack; loop () end) - g; - false - with Exit -> - true - - let has_cycle_undirected g = - let h = H.create 97 in - let father = H.create 97 in - let is_father u v = (* u is the father of v in the DFS descent *) - try G.V.equal (H.find father v) u with Not_found -> false - in - let stack = Stack.create () in - let loop () = - while not (Stack.is_empty stack) do - let v = Stack.top stack in - if H.mem h v then begin - (* we are now done with node v *) - (* assert (H.find h v = true); *) - H.remove father v; - H.replace h v false; - ignore (Stack.pop stack) - end else begin - (* we start DFS from node v *) - H.add h v true; - G.iter_succ - (fun w -> - try if H.find h w && not (is_father w v) then raise Exit - with Not_found -> H.add father w v; Stack.push w stack) - g v; - end - done - in - try - G.iter_vertex - (fun v -> - if not (H.mem h v) then begin Stack.push v stack; loop () end) - g; - false - with Exit -> - true - - let has_cycle g = - if G.is_directed then has_cycle g else has_cycle_undirected g - - let iter f g = - let h = H.create 97 in - let stack = Stack.create () in - let loop () = - while not (Stack.is_empty stack) do - let v = Stack.pop stack in - if not (H.mem h v) then begin - H.add h v (); - f v; - G.iter_succ - (fun w -> if not (H.mem h w) then Stack.push w stack) g v - end - done - in - G.iter_vertex - (fun v -> - if not (H.mem h v) then begin Stack.push v stack; loop () end) - g - - let iter_component f g v0 = - let h = H.create 97 in - let stack = Stack.create () in - Stack.push v0 stack; - while not (Stack.is_empty stack) do - let v = Stack.pop stack in - if not (H.mem h v) then begin - H.add h v (); - f v; - G.iter_succ (fun w -> if not (H.mem h w) then Stack.push w stack) g v - end - done - - end - - let prefix = Tail.iter - let has_cycle = Tail.has_cycle - let prefix_component = Tail.iter_component - - (* step-by-step iterator *) - module S = Set.Make(G.V) - - type iterator = S.t * G.V.t list * G.t - (** (h, st, g) where h is the set of marked vertices and st the stack - invariant: the first element of st is not in h i.e. to be visited *) - - let start g = - let st = G.fold_vertex (fun v st -> v :: st) g [] in - S.empty, st, g - - let get (_,st,_) = match st with - | [] -> raise Exit - | v :: _ -> v - - let step (s,st,g) = match st with - | [] -> - raise Exit - | v :: st -> - let s' = S.add v s in - let st' = G.fold_succ (fun w st -> w :: st) g v st in - let rec clean = function - | w :: st when S.mem w s' -> clean st - | st -> st - in - (s', clean st', g) - -end - -(* breadth-first search *) -module Bfs(G : G) = struct - module H = Hashtbl.Make(G.V) - - let fold f i (g : G.t) = - let h = H.create 97 in - let q = Queue.create () in - (* invariant: [h] contains exactly the vertices which have been pushed *) - let push v = - if not (H.mem h v) then begin H.add h v (); Queue.add v q end - in - let rec loop s = - if not (Queue.is_empty q) then - let v = Queue.pop q in - let ns = f v s in (* Sticking to OCamlGraph's fold conv *) - G.iter_succ push g v; - loop ns - else - s - in - G.fold_vertex (fun v s -> push v; loop s) g i - - let iter f = fold (fun v () -> f v) () - - let fold_component f i g v0 = - let h = H.create 97 in - let q = Queue.create () in - (* invariant: [h] contains exactly the vertices which have been pushed *) - let push v = - if not (H.mem h v) then begin H.add h v (); Queue.add v q end - in - push v0; - let rec loop s = - if not (Queue.is_empty q) then - let v = Queue.pop q in - let ns = f v s in - G.iter_succ push g v; - loop ns - else - s - in - loop i - - let iter_component f = fold_component (fun v () -> f v) () - - (* step-by-step iterator *) - - (* simple, yet O(1)-amortized, persistent queues *) - module Q = struct - type 'a t = 'a list * 'a list - exception Empty - let empty = [], [] - let is_empty = function [], [] -> true | _ -> false - let push x (i,o) = (x :: i, o) - let pop = function - | i, y :: o -> y, (i,o) - | [], [] -> raise Empty - | i, [] -> match List.rev i with - | x :: o -> x, ([], o) - | [] -> assert false - let peek q = fst (pop q) - end - - module S = Set.Make(G.V) - - (* state is [(s,q,g)] : [s] contains elements never been pushed in [q] *) - type iterator = S.t * G.V.t Q.t * G.t - - let start g = - let s = G.fold_vertex S.add g S.empty in - s, Q.empty, g - - let get (s,q,_) = - if Q.is_empty q then - if S.is_empty s then raise Exit else S.choose s - else - Q.peek q - - let step (s,q,g) = - let push v (s,q as acc) = - if S.mem v s then - S.remove v s, Q.push v q - else - acc - in - let v,s',q' = - if Q.is_empty q then begin - if S.is_empty s then raise Exit; - let v = S.choose s in - v, S.remove v s, q - end else - let v,q' = Q.pop q in - v, s, q' - in - let s'',q'' = G.fold_succ push g v (s',q') in - (s'',q'',g) - -end - - -(* Graph traversal with marking. *) - -module type GM = sig - type t - module V : sig type t end - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - module Mark : sig - val clear : t -> unit - val get : V.t -> int - val set : V.t -> int -> unit - end -end - -module Mark(G : GM) = struct - - let dfs g = - G.Mark.clear g; - let n = ref 0 in - let rec visit v = - if G.Mark.get v = 0 then begin - incr n; - G.Mark.set v !n; - G.iter_succ visit g v - end - in - G.iter_vertex visit g - - (* invariant: [h v = 0] means not visited at all; [h v = 1] means - already visited in the current component; [h v = 2] means - already visited in another tree *) - let has_cycle g = - G.Mark.clear g; - let rec visit v = - G.Mark.set v 1; - G.iter_succ - (fun w -> - let m = G.Mark.get w in - if m = 1 then raise Exit; - if m = 0 then visit w) - g v; - G.Mark.set v 2 - in - try G.iter_vertex (fun v -> if G.Mark.get v = 0 then visit v) g; false - with Exit -> true - -end - diff --git a/jscomp/build_tests/ocamlgraph/src/traverse.mli b/jscomp/build_tests/ocamlgraph/src/traverse.mli deleted file mode 100755 index e0fedf6f33..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/traverse.mli +++ /dev/null @@ -1,143 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Graph traversal. *) - -(** {2 Dfs and Bfs} *) - -(** Minimal graph signature for {!Dfs} and {!Bfs}. - Sub-signature of {!Sig.G}. *) -module type G = sig - val is_directed : bool - type t - module V : Sig.COMPARABLE - val iter_vertex : (V.t -> unit) -> t -> unit - (** It is enough to iter over all the roots (vertices without predecessor) of - the graph, even if iterating over the other vertices is correct. *) - - val fold_vertex : (V.t -> 'a -> 'a) -> t -> 'a -> 'a - (** It is enough to fold over all the roots (vertices without predecessor) of - the graph, even if folding over the other vertices is correct. *) - - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - val fold_succ : (V.t -> 'a -> 'a) -> t -> V.t -> 'a -> 'a -end - -(** Depth-first search *) -module Dfs(G : G) : sig - - (** {2 Classical big-step iterators} *) - - val iter : ?pre:(G.V.t -> unit) -> - ?post:(G.V.t -> unit) -> G.t -> unit - (** [iter pre post g] visits all nodes of [g] in depth-first search, - applying [pre] to each visited node before its successors, - and [post] after them. Each node is visited exactly once. - Not tail-recursive. *) - - val prefix : (G.V.t -> unit) -> G.t -> unit - (** applies only a prefix function; note that this function is more - efficient than [iter] and is tail-recursive. *) - - val postfix : (G.V.t -> unit) -> G.t -> unit - (** applies only a postfix function. Not tail-recursive. *) - - (** Same thing, but for a single connected component - (only [prefix_component] is tail-recursive) *) - - val iter_component : ?pre:(G.V.t -> unit) -> - ?post:(G.V.t -> unit) -> G.t -> G.V.t -> unit - val prefix_component : (G.V.t -> unit) -> G.t -> G.V.t -> unit - val postfix_component : (G.V.t -> unit) -> G.t -> G.V.t -> unit - - (** {2 Step-by-step iterator} - - This is a variant of the iterators above where you can move on - step by step. The abstract type [iterator] represents the current - state of the iteration. The [step] function returns the next state. - In each state, function [get] returns the currently visited vertex. - On the final state both [get] and [step] raises exception [Exit]. - - Note: the iterator type is persistent (i.e. is not modified by the - [step] function) and thus can be used in backtracking algorithms. *) - - type iterator - val start : G.t -> iterator - val step : iterator -> iterator - val get : iterator -> G.V.t - - (** {2 Cycle detection} *) - - val has_cycle : G.t -> bool - (** [has_cycle g] checks for a cycle in [g]. Linear in time and space. *) - -end - -(** Breadth-first search *) -module Bfs(G : G) : sig - - (** {2 Classical big-step iterators} *) - - val iter : (G.V.t -> unit) -> G.t -> unit - val iter_component : (G.V.t -> unit) -> G.t -> G.V.t -> unit - - (** {2 Classical folds} *) - val fold : (G.V.t -> 'a -> 'a) -> 'a -> G.t -> 'a - val fold_component : (G.V.t -> 'a -> 'a) -> 'a -> G.t -> G.V.t -> 'a - - (** {2 Step-by-step iterator} - See module [Dfs] *) - - type iterator - val start : G.t -> iterator - val step : iterator -> iterator - val get : iterator -> G.V.t - -end - -(** {2 Traversal with marking} - - Provide a more efficient version of depth-first algorithm when graph - vertices are marked. *) - -(** Minimal graph signature for graph traversal with marking. - Sub-signature of {!Sig.IM}. *) -module type GM = sig - type t - module V : sig type t end - val iter_vertex : (V.t -> unit) -> t -> unit - val iter_succ : (V.t -> unit) -> t -> V.t -> unit - module Mark : sig - val clear : t -> unit - val get : V.t -> int - val set : V.t -> int -> unit - end -end - -(** Graph traversal with marking. - Only applies to imperative graphs with marks. *) -module Mark(G : GM) : sig - - val dfs : G.t -> unit - (** [dfs g] traverses [g] in depth-first search, marking all nodes. *) - - val has_cycle : G.t -> bool - (** [has_cycle g] checks for a cycle in [g]. Modifies the marks. - Linear time, constant space. *) - -end - diff --git a/jscomp/build_tests/ocamlgraph/src/util.ml b/jscomp/build_tests/ocamlgraph/src/util.ml deleted file mode 100755 index a7d50ea0cf..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/util.ml +++ /dev/null @@ -1,50 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -open Sig - -module OTProduct(X: ORDERED_TYPE)(Y: ORDERED_TYPE) = struct - type t = X.t * Y.t - let compare (x1, y1) (x2, y2) = - let cv = X.compare x1 x2 in - if cv != 0 then cv else Y.compare y1 y2 -end - -module HTProduct(X: HASHABLE)(Y: HASHABLE) = struct - type t = X.t * Y.t - let equal (x1, y1) (x2, y2) = X.equal x1 x2 && Y.equal y1 y2 - let hash (x, y) = Hashtbl.hash (X.hash x, Y.hash y) -end - -module CMPProduct(X: COMPARABLE)(Y: COMPARABLE) = struct - include HTProduct(X)(Y) - include (OTProduct(X)(Y): sig val compare : t -> t -> int end) -end - -module DataV(L : sig type t end)(V : Sig.COMPARABLE) = struct - type data = L.t - type label = V.t - type t = data ref * V.t - let compare (_, x) (_, x') = V.compare x x' - let hash (_, x) = V.hash x - let equal (_, x) (_, x') = V.equal x x' - let create y lbl = (ref y, lbl) - let label (_, z) = z - let data (y, _) = !y - let set_data (y, _) = (:=) y -end - diff --git a/jscomp/build_tests/ocamlgraph/src/util.mli b/jscomp/build_tests/ocamlgraph/src/util.mli deleted file mode 100755 index 63ae42feb1..0000000000 --- a/jscomp/build_tests/ocamlgraph/src/util.mli +++ /dev/null @@ -1,47 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2010 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2.1, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** Some useful operations. *) - -open Sig - -(** Cartesian product of two ordered types. *) -module OTProduct(X: ORDERED_TYPE)(Y: ORDERED_TYPE) : - ORDERED_TYPE with type t = X.t * Y.t - -(** Cartesian product of two hashable types. *) -module HTProduct(X: HASHABLE)(Y: HASHABLE) : - HASHABLE with type t = X.t * Y.t - -(** Cartesian product of two comparable types. *) -module CMPProduct(X: COMPARABLE)(Y: COMPARABLE) : - COMPARABLE with type t = X.t * Y.t - -(** Create a vertex type with some data attached to it *) -module DataV(L : sig type t end)(V : Sig.COMPARABLE) : sig - type data = L.t - and label = V.t - and t = data ref * V.t - val compare : t -> t -> int - val hash : t -> int - val equal : t -> t -> bool - val create : data -> V.t -> t - val label : t -> V.t - val data : t -> data - val set_data : t -> data -> unit -end - diff --git a/jscomp/build_tests/ocamlgraph/tests/bench.ml b/jscomp/build_tests/ocamlgraph/tests/bench.ml deleted file mode 100755 index e19f2d97b8..0000000000 --- a/jscomp/build_tests/ocamlgraph/tests/bench.ml +++ /dev/null @@ -1,97 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2007 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -open Format - -(* bench program for Ocamlgraph *) - -module Time = struct - - open Unix - - let utime f x = - let u = (times()).tms_utime in - let y = f x in - let ut = (times()).tms_utime -. u in - (y,ut) - - let print f x = - let (y,ut) = utime f x in - printf "user time: %2.2f@." ut; - y - -end - -open Graph - -module Bench - (G : Sig.G with type V.label = int) - (B : Builder.S with module G = G) = -struct - - module R = Rand.Make(B) - - (*1. Parcours *) - - module Dfs = Traverse.Dfs(G) - - (* détection de cycle *) - - let has_cycle v e = - let g = R.graph ~v ~e () in - let b,t = Time.utime Dfs.has_cycle g in - printf "v = %d e = %d cycle = %b time = %2.2f@." v e b t; - b - - let bench1 () = - (* on augmente E jusqu'à trouver un cycle *) - let v = 20000 in - let e = ref 1 in - while not (has_cycle v !e) do e := 2 * !e done - - (* résultats : - le temps d'une recherche de cycle négative ne dépend pas de - E et est d'environ 1s pour 10^6 noeuds *) - - (* 2. composantes fortement connexes *) - - module C = Components.Make(G) - - let bench2 () = - for i = 1 to 100 do - let v = i * i in - let d = Random.float 1.0 in - let e = truncate (let x = d *. (float v -. 1.0) in x *. x) in - let g = R.graph ~v ~e () in - let _,t = Time.utime C.scc g in - printf "v = %d e = %d d = %1.2f time = %2.2f@." v e d t - done - - (* résultats : voir results.bench2.txt *) - - let () = bench2 () - -end - -module B1 = Bench(Pack.Digraph)(Builder.I(Pack.Digraph)) - - -(* -Local Variables: -compile-command: "make -C .. bench" -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/tests/check.ml b/jscomp/build_tests/ocamlgraph/tests/check.ml deleted file mode 100755 index 52aa1a25d8..0000000000 --- a/jscomp/build_tests/ocamlgraph/tests/check.ml +++ /dev/null @@ -1,697 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2007 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -open Graph - -module Int = struct - type t = int - let compare = compare - let hash = Hashtbl.hash - let equal = (=) - let default = 0 -end - -(* pair with equality which ignores the second component *) -module Pair = struct - type t = int * int - let compare (x, _) (y, _) = Int.compare x y - let hash (x, _) = Int.hash x - let equal (x, _) (y, _) = x = y - let default = 0, 0 -end - -module W(E:sig type t type label val label: t -> label end) = struct - type edge = E.t - type t = int - let weight = E.label - let zero = 0 - let add = (+) - let compare = compare -end - -(********************************************) -(* Generic functions *) -(********************************************) - -module Generic = struct - - (* Generic tests for imperative graphs *) - module Make - (G : Sig.I with type V.label = int) - (V : sig val v: int val e: int end) = - struct - - module O = Oper.I(G) - let test_mirror g = - if G.is_directed then begin (* TODO: remove *) - let g' = O.mirror g in - assert (G.nb_vertex g = G.nb_vertex g'); - G.iter_edges (fun v1 v2 -> assert (G.mem_edge g' v2 v1)) g; - G.iter_edges (fun v1 v2 -> assert (G.mem_edge g v2 v1)) g'; - () - end - - let g = G.create () - let () = - let v1 = G.V.create 1 in - let v2 = G.V.create 2 in - let v3 = G.V.create 3 in - test_mirror g; - G.add_edge g v1 v2; - G.add_edge g v1 v3; - G.add_edge g v2 v1; - G.add_edge g v2 v2; - G.add_edge g v2 v2; - test_mirror g; - assert (G.nb_vertex g = V.v && G.nb_edges g = V.e); - G.remove_vertex g v1; - assert (G.nb_vertex g = 2 && G.nb_edges g = 1); - G.remove_vertex g v2; - assert (G.nb_vertex g = 1 && G.nb_edges g = 0); - test_mirror g; - G.clear g; - assert (G.nb_vertex g = 0 && G.nb_edges g = 0) - - end - - let () = - let module A = Make - (Imperative.Digraph.ConcreteLabeled(Int)(Int)) - (struct let v = 3 let e = 4 end) - in - let module A = Make - (Imperative.Graph.ConcreteLabeled(Int)(Int)) - (struct let v = 3 let e = 3 end) - in - let module A = Make - (Imperative.Digraph.AbstractLabeled(Int)(Int)) - (struct let v = 3 let e = 4 end) - in - let module A = Make - (Imperative.Graph.AbstractLabeled(Int)(Int)) - (struct let v = 3 let e = 3 end) - in - let module A = Make - (Imperative.Digraph.Concrete(Int)) - (struct let v = 3 let e = 4 end) - in - let module A = Make - (Imperative.Graph.Concrete(Int)) - (struct let v = 3 let e = 3 end) - in - let module A = Make - (Imperative.Digraph.Abstract(Int)) - (struct let v = 3 let e = 4 end) - in - let module A = Make - (Imperative.Graph.Abstract(Int)) - (struct let v = 3 let e = 3 end) - in - let module A = Make - (Imperative.Digraph.ConcreteBidirectional(Int)) - (struct let v = 3 let e = 4 end) - in - let module A = Make - (Imperative.Digraph.ConcreteBidirectionalLabeled(Int)(Int)) - (struct let v = 3 let e = 4 end) - in - () - - (* Generic tests for persistent graphs *) - module MakeP - (G : Sig.P with type V.label = int) - (V : sig val v: int val e: int end) = - struct - - module O = Oper.P(G) - let test_mirror g = - let g' = O.mirror g in - assert (G.nb_vertex g = G.nb_vertex g') - - let () = - let g = G.empty in - let v1 = G.V.create 1 in - let v2 = G.V.create 2 in - let v3 = G.V.create 3 in - test_mirror g; - let g = G.add_edge g v1 v2 in - let g = G.add_edge g v1 v3 in - let g = G.add_edge g v2 v1 in - let g = G.add_edge g v2 v2 in - let g = G.add_edge g v2 v2 in - test_mirror g; - assert (G.nb_vertex g = V.v && G.nb_edges g = V.e); - let g = G.remove_vertex g v1 in - assert (G.nb_vertex g = 2 && G.nb_edges g = 1); - let g = G.remove_vertex g v2 in - assert (G.nb_vertex g = 1 && G.nb_edges g = 0); - test_mirror g - - end - - let () = - let module A = MakeP - (Persistent.Digraph.ConcreteLabeled(Int)(Int)) - (struct let v = 3 let e = 4 end) - in - let module A = MakeP - (Persistent.Graph.ConcreteLabeled(Int)(Int)) - (struct let v = 3 let e = 3 end) - in - let module A = MakeP - (Persistent.Digraph.AbstractLabeled(Int)(Int)) - (struct let v = 3 let e = 4 end) - in - let module A = MakeP - (Persistent.Graph.AbstractLabeled(Int)(Int)) - (struct let v = 3 let e = 3 end) - in - let module A = MakeP - (Persistent.Digraph.Concrete(Int)) - (struct let v = 3 let e = 4 end) - in - let module A = MakeP - (Persistent.Graph.Concrete(Int)) - (struct let v = 3 let e = 3 end) - in - let module A = MakeP - (Persistent.Digraph.Abstract(Int)) - (struct let v = 3 let e = 4 end) - in - let module A = MakeP - (Persistent.Graph.Abstract(Int)) - (struct let v = 3 let e = 3 end) - in - let module A = MakeP - (Persistent.Digraph.ConcreteBidirectional(Int)) - (struct let v = 3 let e = 4 end) - in - let module A = MakeP - (Persistent.Digraph.ConcreteBidirectionalLabeled(Int)(Int)) - (struct let v = 3 let e = 4 end) - in - () - - (* Generic tests for imperative concrete graphs with custom equality *) - module Make_pair - (G : Sig.I with type V.label = int * int) - (V : sig val v: int val e: int end) = - struct - - module O = Oper.I(G) - let test_mirror g = - if G.is_directed then begin (* TODO: remove *) - let g' = O.mirror g in - assert (G.nb_vertex g = G.nb_vertex g'); - G.iter_edges (fun v1 v2 -> assert (G.mem_edge g' v2 v1)) g; - G.iter_edges (fun v1 v2 -> assert (G.mem_edge g v2 v1)) g'; - () - end - - let g = G.create () - let () = - let v1 = G.V.create (1, 0) in - let v2 = G.V.create (2, 0) in - let v3 = G.V.create (2, 1) in - test_mirror g; - G.add_edge g v1 v2; - G.add_edge g v2 v1; - G.add_edge g v1 v3; - G.iter_vertex (fun v -> assert (snd (G.V.label v) = 0)) g; - test_mirror g; - assert (G.nb_vertex g = V.v && G.nb_edges g = V.e); - G.remove_vertex g v3; - assert (G.nb_vertex g = 1 && G.nb_edges g = 0); - test_mirror g; - G.clear g; - assert (G.nb_vertex g = 0 && G.nb_edges g = 0) - - end - - let () = - let module A = Make_pair - (Imperative.Digraph.ConcreteLabeled(Pair)(Pair)) - (struct let v = 2 let e = 2 end) - in - let module A = Make_pair - (Imperative.Graph.ConcreteLabeled(Pair)(Pair)) - (struct let v = 2 let e = 1 end) - in - let module A = Make_pair - (Imperative.Digraph.Concrete(Pair)) - (struct let v = 2 let e = 2 end) - in - let module A = Make_pair - (Imperative.Graph.Concrete(Pair)) - (struct let v = 2 let e = 1 end) - in - let module A = Make_pair - (Imperative.Digraph.ConcreteBidirectional(Pair)) - (struct let v = 2 let e = 2 end) - in - let module A = Make_pair - (Imperative.Digraph.ConcreteBidirectionalLabeled(Pair)(Pair)) - (struct let v = 2 let e = 2 end) - in - () - - (* find_edge *) - - module Make2 - (G : Sig.I - with type V.t = int and type E.label = int and type E.t = int * int * int) - = - struct - - let g = G.create () - - let test_exn v1 v2 = - assert (G.find_all_edges g v1 v2 = []); - try - let _ = G.find_edge g v1 v2 in - assert false - with Not_found -> - () - - let () = - let e1 = 1, 0, 2 in - let e2 = 1, 1, 3 in - let e2' = 1, 2, 3 in - let e3 = 2, 2, 1 in - G.add_edge_e g e1; - G.add_edge_e g e2; - G.add_edge_e g e2'; - G.add_edge_e g e3; - G.add_edge_e g e3; - assert (G.find_edge g 1 2 = e1); - assert (List.length (G.find_all_edges g 1 3) = 2); - test_exn 2 3; - test_exn 2 4; - test_exn 5 2; - G.remove_vertex g 2; - assert (G.nb_vertex g = 2 && G.nb_edges g = 2) - - end - - let () = - let module D = Make2(Imperative.Digraph.ConcreteLabeled(Int)(Int)) in - D.test_exn 3 1; - let module G = Imperative.Graph.ConcreteLabeled(Int)(Int) in - let module G2 = Make2(G) in - assert (G.find_edge G2.g 3 1 = (3, 1, 1)) - -end - -(********************************************) -(* Dijkstra *) -(********************************************) - -module Dijkstra = struct - - module TestDijkstra - (G: Sig.G with type V.label = int and type E.label = int) - (B: Builder.S with module G = G) = - struct - - let g = B.empty () - let v1 = G.V.create 1 - let g = B.add_vertex g v1 - let v2 = G.V.create 2 - let g = B.add_vertex g v2 - let v3 = G.V.create 3 - let g = B.add_vertex g v3 - let v4 = G.V.create 4 - let g = B.add_vertex g v4 - let v5 = G.V.create 5 - let g = B.add_vertex g v5 - - let g = B.add_edge_e g (G.E.create v1 10 v2) - let g = B.add_edge_e g (G.E.create v2 50 v3) - let g = B.add_edge_e g (G.E.create v1 30 v4) - let g = B.add_edge_e g (G.E.create v1 100 v5) - let g = B.add_edge_e g (G.E.create v3 10 v5) - let g = B.add_edge_e g (G.E.create v4 20 v3) - let g = B.add_edge_e g (G.E.create v4 60 v5) - - module Dij = Path.Dijkstra(G)(W(G.E)) - module Dfs = Traverse.Dfs(G) - - let test g i j w l = - let p,w' = Dij.shortest_path g i j in - assert (w' = w && List.length p = l) - let test_not_found g i j = - try let _ = Dij.shortest_path g i j in assert false with Not_found -> () - - let () = test g v1 v5 60 3 - let () = test g v1 v1 0 0 - let () = if G.is_directed then test_not_found g v5 v1 - let () = assert (not (Dfs.has_cycle g)) - let gc = B.add_edge_e g (G.E.create v5 10 v1) - let v6 = G.V.create 6 - let gc = B.add_vertex gc v6 - let () = if G.is_directed then test gc v1 v5 60 3 - let () = test gc v5 v1 10 1 - let () = test_not_found gc v1 v6 - - let () = assert (Dfs.has_cycle gc) - - end - - (* Dijkstra on Persistent Directed Labeled Graphs *) - - module G = Persistent.Digraph.ConcreteLabeled(Int)(Int) - module Test1 = TestDijkstra(G)(Builder.P(G)) - - (* Dijkstra on Persistent Directed Abstract Labeled Graphs *) - - module G2 = Persistent.Digraph.AbstractLabeled(Int)(Int) - module Test2 = TestDijkstra(G2)(Builder.P(G2)) - - (* Dijkstra on Imperative Hashed Directed Labeled Graphs *) - - module G3 = Imperative.Digraph.ConcreteLabeled(Int)(Int) - module Test3 = TestDijkstra(G3)(Builder.I(G3)) - -end - -(********************************************) -(* Traversal *) -(********************************************) - -module Traversal = struct - - module G = Imperative.Digraph.AbstractLabeled(Int)(Int) - module Dfs = Traverse.Dfs(G) - module Mark = Traverse.Mark(G) - - let g = G.create () - let newv g = let v = G.V.create 0 in G.add_vertex g v; v - let v1 = newv g - let v2 = newv g - let v3 = newv g - let v4 = newv g - let v5 = newv g - let add_edge g v1 l v2 = G.add_edge_e g (G.E.create v1 l v2) - let () = - add_edge g v1 10 v2; - add_edge g v2 50 v3; - add_edge g v1 30 v4; - add_edge g v1 100 v5; - add_edge g v3 10 v5; - add_edge g v4 20 v3; - add_edge g v4 60 v5 - let () = assert (not (Mark.has_cycle g) && not (Dfs.has_cycle g)) - let v6 = newv g - let () = assert (not (Mark.has_cycle g) && not (Dfs.has_cycle g)) - let () = add_edge g v5 10 v1 - let () = assert (Mark.has_cycle g && Dfs.has_cycle g) - -(* debug dfs / Cormen p 479 *) - - let g = G.create () - let newv i = let v = G.V.create i in G.add_vertex g v; v - let u = newv 1 - let v = newv 2 - let w = newv 3 - let x = newv 4 - let y = newv 5 - let z = newv 6 - let edge a b = add_edge g a 0 b - let () = - edge u v; edge u x; - edge v y; - edge w y; edge w z; - edge x v; - edge y x; - edge z z - open Format - let pre v = printf "pre %d@." (G.V.label v) - let post v = printf "post %d@." (G.V.label v) - let () = printf "iter:@."; Dfs.iter_component ~pre ~post g w - let () = printf "prefix:@."; Dfs.prefix_component pre g w - let () = - printf "step:@."; - let rec visit it = - let v = Dfs.get it in - printf "visit %d@." (G.V.label v); - visit (Dfs.step it) - in - try visit (Dfs.start g) with Exit -> () - -end - -(********************************************) -(* Ford-Fulkerson and Goldberg *) -(********************************************) - -module FF_Goldberg = struct - - module G = Persistent.Digraph.ConcreteLabeled(Int)(Int) - - let add_edge g v1 l v2 = G.add_edge_e g (G.E.create v1 l v2) - let g = G.empty - let g = add_edge g 1 16 2 - let g = add_edge g 1 13 3 - let g = add_edge g 2 10 3 - let g = add_edge g 3 4 2 - let g = add_edge g 2 12 4 - let g = add_edge g 4 9 3 - let g = add_edge g 3 14 5 - let g = add_edge g 5 7 4 - let g = add_edge g 4 20 6 - let g = add_edge g 5 4 6 - - module F = struct - type label = int - type t = int - let max_capacity x = x - let min_capacity _ = 0 - let flow _ = 0 - let add = (+) - let sub = (-) - let compare = compare - let zero = 0 - end - - module FF = Flow.Ford_Fulkerson(G)(F) - module Gold = Flow.Goldberg(G)(F) - - let () = - assert (snd (FF.maxflow g 1 6) = 23); - assert (snd (Gold.maxflow g 1 6) = 23); - assert (snd (FF.maxflow g 1 1) = 0); - assert (snd (Gold.maxflow g 1 1) = 0) - - module G2 = - Persistent.Digraph.ConcreteLabeled - (Int) - (struct include Util.OTProduct(Int)(Int) let default = 0, 0 end) - - let add_edge g v1 l v2 = G2.add_edge_e g (G2.E.create v1 l v2) - let g = G2.empty - let g = add_edge g 1 (1, 1) 2 - let g = add_edge g 1 (3, 0) 3 - let g = add_edge g 2 (1, 1) 3 - let g = add_edge g 3 (1, 0) 2 - let g = add_edge g 2 (3, 0) 4 - let g = add_edge g 3 (1, 1) 4 - - module F2 = struct - type label = int * int - type t = int - let max_capacity = fst - let min_capacity _ = 0 - let flow = snd - let add = (+) - let sub = (-) - let compare = compare - let zero = 0 - end - - module FF2 = Flow.Ford_Fulkerson(G2)(F2) - module Gold2 = Flow.Goldberg(G2)(F2) - - let () = - assert (snd (FF2.maxflow g 1 4) = 2); - assert (snd (Gold2.maxflow g 1 4) = 2) - -end - -(********************************************) -(* Neighbourhood *) -(********************************************) - -module Neighbourhood = struct - - module G = Graph.Imperative.Graph.Concrete(Int) - open G - - let g = create () - let add = add_edge g - let () = - add 1 2; - add 1 3; - add 1 4; - add 2 5; - add 3 5; - add 4 5; - add 5 6 - - module N = Oper.Neighbourhood(G) - module V = N.Vertex_Set - let s2 = V.add 1 (V.singleton 5) - let () = assert (V.equal (N.set_from_vertex g 2) s2) - let s25 = V.add 1 (V.add 3 (V.add 4 (V.singleton 6))) - let () = assert (V.equal (N.set_from_vertices g [ 2; 5 ]) s25) - -end - -(********************************************) -(* Minimal seperators *) -(********************************************) - -module Minsep = struct - - module P = struct - - module G = Graph.Persistent.Graph.Concrete(Int) - open G - - let g = empty - let g = add_edge g 1 2 - let g = add_edge g 1 3 - let g = add_edge g 1 4 - let g = add_edge g 2 5 - let g = add_edge g 3 5 - let g = add_edge g 4 5 - let g = add_edge g 5 6 - - module M = Minsep.P(G) - module S = M.Vertex_Set - module VS = M.VSetset - let s5 = S.singleton 5 - let s15 = S.add 1 s5 - let s234 = S.add 2 (S.add 3 (S.singleton 4)) - let bigs = VS.add s5 (VS.add s15 (VS.singleton s234)) - let () = assert (VS.equal (M.set_of_allminsep g) bigs) - - end - - module I = struct - - module G = Graph.Imperative.Graph.Abstract(struct type t = unit end) - open G - - let g = create () - let v1 = V.create () - let v2 = V.create () - let v3 = V.create () - let v4 = V.create () - let v5 = V.create () - let v6 = V.create () - let add = add_edge g - let () = - add v1 v2; - add v1 v3; - add v1 v4; - add v2 v5; - add v3 v5; - add v4 v5; - add v5 v6 - - module M = Minsep.I(G) - module S = M.Vertex_Set - module VS = M.VSetset - let s5 = S.singleton v5 - let s15 = S.add v1 s5 - let s234 = S.add v2 (S.add v3 (S.singleton v4)) - let bigs = VS.add s5 (VS.add s15 (VS.singleton s234)) - let () = - let _ = G.copy g in - assert (VS.equal (M.set_of_allminsep g) bigs) - - end - -end - -(********************************************) -(* Checking signature *) -(********************************************) - -(* check that signature [Sig_pack.S] (which is manually expanded) does not - forget anything *) -module type RightSigPack = sig - include Sig.IM with type V.label = int and type E.label = int - val find_vertex : t -> int -> V.t - include Oper.S with type g = t - module Dfs : sig - val iter : ?pre:(V.t -> unit) -> - ?post:(V.t -> unit) -> t -> unit - val prefix : (V.t -> unit) -> t -> unit - val postfix : (V.t -> unit) -> t -> unit - - val iter_component : - ?pre:(V.t -> unit) -> - ?post:(V.t -> unit) -> t -> V.t -> unit - val prefix_component : (V.t -> unit) -> t -> V.t -> unit - val postfix_component : (V.t -> unit) -> t -> V.t -> unit - - val has_cycle : t -> bool - end - module Bfs : sig - val iter : (V.t -> unit) -> t -> unit - val iter_component : (V.t -> unit) -> t -> V.t -> unit - end - module Marking : sig - val dfs : t -> unit - val has_cycle : t -> bool - end - module Classic : sig - val divisors : int -> t - val de_bruijn : int -> t - val vertex_only : int -> t - val full : ?self:bool -> int -> t - end - module Rand : sig - val graph : ?loops:bool -> v:int -> e:int -> unit -> t - val labeled : - (V.t -> V.t -> E.label) -> - ?loops:bool -> v:int -> e:int -> unit -> t - end - module Components : sig - val scc : t -> int*(V.t -> int) - val scc_array : t -> V.t list array - val scc_list : t -> V.t list list - end - val shortest_path : t -> V.t -> V.t -> E.t list * int - val ford_fulkerson : t -> V.t -> V.t -> (E.t -> int) * int - val goldberg : t -> V.t -> V.t -> (E.t -> int) * int - val dot_output : t -> string -> unit -end - -module TestSigPack : RightSigPack = struct - include Pack.Digraph - type g = t -end - -include Test_clique - -(* -Local Variables: -compile-command: "make -C .. check" -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/tests/check.ref b/jscomp/build_tests/ocamlgraph/tests/check.ref deleted file mode 100644 index c877c80b4e..0000000000 --- a/jscomp/build_tests/ocamlgraph/tests/check.ref +++ /dev/null @@ -1,24 +0,0 @@ -iter: -pre 3 -pre 5 -pre 4 -pre 2 -post 2 -post 4 -post 5 -pre 6 -post 6 -post 3 -prefix: -pre 3 -pre 6 -pre 5 -pre 4 -pre 2 -step: -visit 6 -visit 5 -visit 4 -visit 2 -visit 3 -visit 1 diff --git a/jscomp/build_tests/ocamlgraph/tests/dot.ml b/jscomp/build_tests/ocamlgraph/tests/dot.ml deleted file mode 100755 index fb64a60cb8..0000000000 --- a/jscomp/build_tests/ocamlgraph/tests/dot.ml +++ /dev/null @@ -1,54 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2007 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id:$ *) - -open Graph -module G = Imperative.Digraph.Abstract(String) -module B = Builder.I(G) -module DotInput = - Dot.Parse - (B) - (struct - let node (id,_) _ = match id with - | Dot_ast.Ident s - | Dot_ast.Number s - | Dot_ast.String s - | Dot_ast.Html s -> s - let edge _ = () - end) -module Display = struct - include G - let vertex_name v = "\"" ^ String.escaped (V.label v) ^ "\"" - let graph_attributes _ = [] - let default_vertex_attributes _ = [] - let vertex_attributes _ = [] - let default_edge_attributes _ = [] - let edge_attributes _ = [ `HtmlLabel "f$oo" ] - let get_subgraph _ = None -end -module DotOutput = Graphviz.Dot(Display) - -let g = DotInput.parse Sys.argv.(1) - -let () = - let oc = open_out "tmp.dot" in - DotOutput.output_graph oc g; - close_out oc - -let _ = Sys.command "dot -Tps tmp.dot | gv -" - diff --git a/jscomp/build_tests/ocamlgraph/tests/nonneg.ml b/jscomp/build_tests/ocamlgraph/tests/nonneg.ml deleted file mode 100755 index 34d5aae39b..0000000000 --- a/jscomp/build_tests/ocamlgraph/tests/nonneg.ml +++ /dev/null @@ -1,96 +0,0 @@ - -(* Test file for module [Nonnegative] *) - -open Printf -open Graph -open Pack.NonnegDigraph -open Nonnegative - -let test () = - let v = Array.init 10 V.create in - let g = create () in - - let test result op = - begin - try - op g; - with - | Assert_failure _ -> print_string "bug bug bug?"; assert false - | exc -> - let exc_name = Printexc.to_string exc in - if exc_name = "Nonnegative.Imperative(G)(W).Negative_cycle(_)" then - assert (not result) - else begin - print_endline exc_name; - Printexc.print_backtrace stdout; - assert false - end - end; - flush_all (); - display_with_gv g - in - - let add s t g = add_edge g v.(s) v.(t) in - let add_e s w t g = add_edge_e g (E.create v.(s) w v.(t)) in - let rem s t g = remove_edge g v.(s) v.(t) in - let rem_v s g = remove_vertex g v.(s) in - let rem_e s w t g = remove_edge_e g (E.create v.(s) w v.(t)) in - - test true (add 0 1); - test true (rem 0 1); - clear g; - - test true (add_e 0 1 1); - test true (add_e 0 1 1); - test true (rem 0 1); - clear g; - - test true (add 0 1); - test true (add_e 0 1 1); - test true (rem 0 1); - test true (rem_v 0 ); - test true (rem_v 1 ); - clear g; - - test true (add_e 2 1 3); - test true (add_e 3 2 4); - test true (add_e 0 (-1) 2); - test true (add_e 3 1 4); - test false (add_e 4 (-4) 2); - test false (add_e 4 (-3) 2); - test true (add_e 4 (-2) 2); - test true (add_e 1 3 2); - test true (add_e 5 (-2) 4); - test false (add 2 5); - test true (add_e 2 4 5); - test true (rem 2 3); - test true (rem_v 2 ); - clear g; - - test false (add_e 1 (-1) 1); - test true (add 1 1); - test true (add_e 1 1 1); - test true (add_e 1 1 2); - test false (add_e 2 (-2) 1); - test true (rem_v 1 ); - clear g; - - test true (add 1 2); - test true (add_e 2 1 3); - test true (add_e 3 2 4); - test true (add_e 4 3 1); - test true (add 5 6); - test true (add_e 6 1 7); - test true (add_e 7 2 8); - test true (add_e 8 3 5); - test true (add_e 1 (-3) 5); - test false (add_e 8 (-4) 4); - test true (add_e 8 (-3) 4); - test true (rem 1 5); - assert false; (* FIXME: Bug in choosing new source *) - clear g; - - printf "All test succeeded.\n"; - () - -let _ = test () diff --git a/jscomp/build_tests/ocamlgraph/tests/strat.ml b/jscomp/build_tests/ocamlgraph/tests/strat.ml deleted file mode 100755 index d1fa8ef059..0000000000 --- a/jscomp/build_tests/ocamlgraph/tests/strat.ml +++ /dev/null @@ -1,133 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2007 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(* $Id:$ *) - -open Graph - - -module V = struct - type t = bool * int - let compare = compare - let hash = Hashtbl.hash - let equal = (=) -end - - -module G = Persistent.Digraph.Concrete(V) - - -module P = struct - type vertex = V.t - type t = vertex * (vertex list) * (vertex -> bool) - - let get_initial (i, _, _) = i - let is_final (_, f, _) v = List.mem v f - - let turn (_, _, f) v = f v -end - - -module S = struct - type vertex = V.t - type t = vertex -> vertex - - let empty = - fun _ -> raise (Invalid_argument "Strategy definition") - - let next f v = f v - - let add s v v' = - fun e -> if V.equal e v then v' else next s e -end - - -module A = Strat.Algo(G)(P)(S);; - - -(* Match game : n matches in line, two players. Each player takes - one, two or three matches in order. The player who takes the - last match loses. *) - - -(* States are given by the remaining number of matches - and the player whose turn it is to play. - Edges are the possible moves. *) -let rec trans_aux g (j, n) = - if n = 0 then g - else - if n = 1 then - let g = G.add_edge g (j, n) (not j, n - 1) in - (if j then trans_aux g (not j, n) else trans_aux g (not j, n - 1)) - else - if n = 2 then - let g = G.add_edge g (j, n) (not j, n - 1) in - let g = G.add_edge g (j, n) (not j, n - 2) in - (if j then trans_aux g (not j, n) else trans_aux g (not j, n - 1)) - else - let g = G.add_edge g (j, n) (not j, n - 1) in - let g = G.add_edge g (j, n) (not j, n - 2) in - let g = G.add_edge g (j, n) (not j, n - 3) in - (if j then trans_aux g (not j, n) else trans_aux g (not j, n - 1));; -let trans n = trans_aux G.empty (true, n);; -let p n = ((true, n), [(true, 0)], fun (b, _) -> b);; - - -(* ex n = ((true, _), _) if there is a winning strategy for the - first player to play. In this case, it provides - a strategy. *) -let ex n = - let t = trans n in - (A.strategyA t (p n), t);; - -let n1 = 15;; -let n2 = 13;; - -let ex1 = ex n1;; -let ex2 = ex n2;; - - -(* Printing on the standard out channel ; - simply uncomment to see the results. *) -(* -let rec couple_of_strat g s = - let f v l = - try - let v' = S.next s v in (v, v') :: l - with Invalid_argument _ -> l - in - G.fold_vertex f g [];; - -let string_of_couple ((_, i1), (_, i2)) = - "(" ^ (string_of_int i1) ^ ", " ^ (string_of_int i2) ^ ") ";; - -let rec string_of_couple_list l = match l with - [] -> "" - | e :: l' -> (string_of_couple e) ^ (string_of_couple_list l');; - -print_newline();; -print_string ("For " ^ (string_of_int n1) ^ " matches, is there a winning strategy for the first player ?");; -print_newline();; -print_string (string_of_bool (fst (fst ex1)));; -print_string " --- ";; -print_string (string_of_couple_list (couple_of_strat (snd ex1) (snd (fst ex1))));; -print_newline();; print_newline();; -print_string ("For " ^ (string_of_int n2) ^ " matches, is there a winning strategy for the first player ?");; -print_newline();; -print_string (string_of_bool (fst (fst ex2)));; -print_newline();; print_newline();; -*) diff --git a/jscomp/build_tests/ocamlgraph/tests/test.ml b/jscomp/build_tests/ocamlgraph/tests/test.ml deleted file mode 100755 index 7cde8225aa..0000000000 --- a/jscomp/build_tests/ocamlgraph/tests/test.ml +++ /dev/null @@ -1,70 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2007 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -open Format -open Graph - -module Int = struct - type t = int - let compare = compare - let hash = Hashtbl.hash - let equal = (=) - let default = 0 -end - -module G = Persistent.Digraph.ConcreteLabeled(Int)(Int) - -let g = G.empty -let g = G.add_vertex g 1 -let g = G.add_edge_e g (G.E.create 1 10 2) -let g = G.add_edge_e g (G.E.create 2 50 3) -let g = G.add_edge_e g (G.E.create 1 30 4) -let g = G.add_edge_e g (G.E.create 1 100 5) -let g = G.add_edge_e g (G.E.create 3 10 5) -let g = G.add_edge_e g (G.E.create 4 20 3) -let g = G.add_edge_e g (G.E.create 4 60 5) - -let g = G.remove_vertex g 4 - -let gc = G.add_edge_e g (G.E.create 5 10 1) -let gc = G.add_vertex gc 6 - -module W = struct - type edge = G.E.t - type t = int - let weight e = G.E.label e - let zero = 0 - let add = (+) - let sub = (-) - let compare = compare -end - -module Dij = Path.Dijkstra(G)(W) - -let p,w = Dij.shortest_path gc 1 5 - -open G.E - -let () = List.iter (fun e -> printf "[%d -> %d]" (src e) (dst e)) p; printf "@." - -module Comp = Components.Make(G) -let g = G.add_edge g 3 2 -let n, f = Comp.scc g -let () = G.iter_edges (fun u v -> printf "%d -> %d@." u v) g -let () = printf "%d components@." n -let () = G.iter_vertex (fun v -> printf " %d -> %d@." v (f v)) g - diff --git a/jscomp/build_tests/ocamlgraph/tests/test_bf.ml b/jscomp/build_tests/ocamlgraph/tests/test_bf.ml deleted file mode 100755 index 48063fdd02..0000000000 --- a/jscomp/build_tests/ocamlgraph/tests/test_bf.ml +++ /dev/null @@ -1,40 +0,0 @@ - -(* Test file for Bellman-Ford *) - -open Printf -open Graph -open Pack.Digraph - -let test has_cycle spec = - let v = Array.init 5 V.create in - let g = create () in - let () = Array.iter (add_vertex g) v in - - let build (s,w,t) = add_edge_e g (E.create v.(s) w v.(t)) in - List.iter build spec; - begin try - let cycle = bellman_ford g v.(1) in - let print_edge e = - printf "%d --(%d)--> %d\n" (V.label (E.src e)) (E.label e) (V.label (E.dst e)) - in - List.iter print_edge cycle; - assert has_cycle - with Not_found -> - printf "Not found \n"; - assert (not has_cycle) - end; - flush stdout; - display_with_gv g - -let () = - test true [ 0, (-3), 1; 1, 1, 2; 2, 1, 0; 1, 1, 3; 3, 1, 4; 4, 1, 0 ]; - - test true [ 0, (-10), 1; 1, 1, 2; 2, 1, 0; 1, 1, 3; 3, 1, 4; 4, 1, 0 ]; - test true [ 0, (-10), 1; 2, 1, 0; 1, 1, 3; 3, 1, 4; 4, 1, 0 ]; - test true [ 0, (-10), 1; 1, 1, 2; 1, 1, 3; 3, 1, 4; 4, 1, 0 ]; - test true [ 0, (-10), 1; 1, 1, 2; 2, 1, 0; 3, 1, 4; 4, 1, 0 ]; - test true [ 0, (-10), 1; 1, 1, 2; 2, 1, 0; 1, 1, 3; 4, 1, 0 ]; - test false [ 1, 1, 2; 2, 1, 0; 1, 1, 3; 3, 1, 4; 4, 1, 0 ]; - test false [ 0, (-10), 1; 1, 1, 2; 1, 1, 3; 3, 1, 4; ]; - - printf "All tests succeeded.\n" diff --git a/jscomp/build_tests/ocamlgraph/tests/test_clique.ml b/jscomp/build_tests/ocamlgraph/tests/test_clique.ml deleted file mode 100755 index 651527d355..0000000000 --- a/jscomp/build_tests/ocamlgraph/tests/test_clique.ml +++ /dev/null @@ -1,29 +0,0 @@ -(* Test file for Brom-Kerbosch *) - -open Graph - -module G = Persistent.Graph.Concrete (struct - type t = int - let compare = compare - let hash = Hashtbl.hash - let equal = (=) -end) - -module BK = Clique.Bron_Kerbosch(G) - -let () = - let vertices = [1;2;3;4;5;6;7] in - let edges = [(1,2);(1,5);(2,5);(2,3);(4,5);(3,4);(4,6)] in - let g = List.fold_left (fun graph v -> G.add_vertex graph v) G.empty vertices in - let g = List.fold_left (fun graph (v1, v2) -> G.add_edge graph v1 v2) g edges in - let cliques = BK.maximalcliques g in - (* The cliques of this graph should be: [2, 3], [3, 4], [1, 2, 5], [4, 5], [4, 6], [7] *) - assert (List.length cliques == 6); - assert (List.exists (fun cl -> List.length cl == 2 && List.mem 2 cl && List.mem 3 cl) cliques); - assert (List.exists (fun cl -> List.length cl == 2 && List.mem 3 cl && List.mem 4 cl) cliques); - assert (List.exists (fun cl -> List.length cl == 3 && List.mem 1 cl && List.mem 2 cl && List.mem 5 cl) cliques); - assert (List.exists (fun cl -> List.length cl == 2 && List.mem 4 cl && List.mem 5 cl) cliques); - assert (List.exists (fun cl -> List.length cl == 2 && List.mem 4 cl && List.mem 6 cl) cliques); - assert (List.exists (fun cl -> List.length cl == 1 && List.mem 7 cl) cliques); -;; - diff --git a/jscomp/build_tests/ocamlgraph/tests/test_components.ml b/jscomp/build_tests/ocamlgraph/tests/test_components.ml deleted file mode 100755 index 222d407a78..0000000000 --- a/jscomp/build_tests/ocamlgraph/tests/test_components.ml +++ /dev/null @@ -1,36 +0,0 @@ -(**************************************************************************) -(* *) -(* Ocamlgraph: a generic graph library for OCaml *) -(* Copyright (C) 2004-2007 *) -(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -open Format -open Graph - -module C = Components.Undirected(Pack.Graph) - -open Pack.Graph - -let () = - let g = Rand.graph ~v:10 ~e:3 () in - let n, f = C.components g in - printf "%d components@." n; - iter_vertex (fun v -> printf "%d -> %d@." (V.label v) (f v)) g - - -(* -Local Variables: -compile-command: "ocaml -I .. graph.cma test_components.ml" -End: -*) diff --git a/jscomp/build_tests/ocamlgraph/tests/test_johnson.ml b/jscomp/build_tests/ocamlgraph/tests/test_johnson.ml deleted file mode 100755 index 45ce127063..0000000000 --- a/jscomp/build_tests/ocamlgraph/tests/test_johnson.ml +++ /dev/null @@ -1,51 +0,0 @@ - -(* Test file for Johnson *) - -open Printf -open Graph - -module Int = struct - type t = int - let compare = compare - let hash = Hashtbl.hash - let equal = (=) - let default = 0 - end - - -module G = Imperative.Digraph.ConcreteLabeled(Int)(Int) - - -module W = struct - type edge = G.E.t - type t = int - let weight e = G.E.label e - let zero = 0 - let add = (+) - let sub = (-) - let compare = compare - end - -module J = Path.Johnson(G)(W) - -let g = G.create () - -let () = - G.add_edge_e g (G.E.create 1 3 2); - G.add_edge_e g (G.E.create 1 (-4) 5); - G.add_edge_e g (G.E.create 1 8 3); - G.add_edge_e g (G.E.create 2 7 5); - G.add_edge_e g (G.E.create 2 1 4); - G.add_edge_e g (G.E.create 3 4 2); - G.add_edge_e g (G.E.create 4 (-5) 3); - G.add_edge_e g (G.E.create 4 2 1); - G.add_edge_e g (G.E.create 5 6 4) - -let () = let test = J.all_pairs_shortest_paths g in - (* J.HVV.iter (fun (v, u) d -> Printf.printf "[%d -> %d : %d]\n" v u d) test *) - let result = J.HVV.fold (fun (v, u) d acc -> (v, (u, d))::acc) test [] in - List.sort (fun (_,x) (_,y) -> Pervasives.compare x y) result - |> List.iter (fun (v,(u,d)) -> - Printf.printf - "[%d -> %d : %d]\n" v u d - ) diff --git a/jscomp/build_tests/ocamlgraph/tests/test_johnson.ref b/jscomp/build_tests/ocamlgraph/tests/test_johnson.ref deleted file mode 100644 index 166e6b7dc4..0000000000 --- a/jscomp/build_tests/ocamlgraph/tests/test_johnson.ref +++ /dev/null @@ -1,25 +0,0 @@ -[1 -> 1 : 0] -[4 -> 1 : 2] -[2 -> 1 : 3] -[3 -> 1 : 7] -[5 -> 1 : 8] -[4 -> 2 : -1] -[2 -> 2 : 0] -[1 -> 2 : 1] -[3 -> 2 : 4] -[5 -> 2 : 5] -[4 -> 3 : -5] -[2 -> 3 : -4] -[1 -> 3 : -3] -[3 -> 3 : 0] -[5 -> 3 : 1] -[4 -> 4 : 0] -[2 -> 4 : 1] -[1 -> 4 : 2] -[3 -> 4 : 5] -[5 -> 4 : 6] -[1 -> 5 : -4] -[4 -> 5 : -2] -[2 -> 5 : -1] -[5 -> 5 : 0] -[3 -> 5 : 3] diff --git a/jscomp/build_tests/ocamlgraph/tests/test_topsort.ml b/jscomp/build_tests/ocamlgraph/tests/test_topsort.ml deleted file mode 100755 index 07aaa71e49..0000000000 --- a/jscomp/build_tests/ocamlgraph/tests/test_topsort.ml +++ /dev/null @@ -1,75 +0,0 @@ - -(* Test file for topological sort *) - -open Format -open Graph -open Pack.Digraph - -let test ?(check=true) iter n edges = - let v = Array.init n V.create in - let g = create () in - let () = Array.iter (add_vertex g) v in - let build (s,t) = add_edge g v.(s) v.(t) in - List.iter build edges; - (* run top sort *) - let num = Array.make n 0 in - let i = ref 0 in - iter (fun v -> incr i; num.(V.label v) <- !i) g; - let r = Array.init n (fun i -> i) in - Array.sort (fun i j -> num.(i) - num.(j)) r; - if check then for v = 0 to n-1 do printf "%d " r.(v) done; printf "@."; - (* check *) - let path = PathCheck.check_path (PathCheck.create g) in - let check_edge (x,y) = - let vx = v.(x) and vy = v.(y) in - printf "x=%d y=%d num(x)=%d num(y)=%d@." x y num.(x) num.(y); - printf "x-->y=%b y-->x=%b@." (path vx vy) (path vy vx); - assert (num.(x) > 0 && num.(y) > 0); - assert (num.(x) >= num.(y) || path vx vy || not (path vy vx)) in - if check then - for x = 0 to n-1 do for y = 0 to n-1 do check_edge (x,y) done done; - (* display_with_gv g; *) - () - -let tests iter = - let test = test iter in - test 3 [0,1; 1,2]; - test 3 []; - (* 1-cycle *) - test 1 [0,0]; - (* 2-cycle *) - test 2 [0,1; 1,0]; - (* 2-cycle with out edge *) - test 3 [0,1; 1,0; 1,2]; - test 3 [2,0; 0,2; 0,1]; - test 3 [1,2; 2,1; 2,0]; - (* 2 loops *) - test 5 [1,2; 2,1; 2,0; 3,4; 4,3]; - (* 2-cycle with in edge *) - test 3 [1,2; 2,1; 0,2]; - test 3 [1,2; 2,1; 0,1]; - (* 2 cycles connected *) - test 4 [0,1; 1,0; 2,3; 3,2; 2,1]; - test 4 [0,1; 1,0; 2,3; 3,2; 1,2]; - test 4 [0,1; 1,0; 2,3; 3,2; 1,2; 2,1]; - (* 3-cycle with in and out edges *) - test 5 [0,1; 1,2; 2,0; 3,0; 2,4]; - (* 3 cycles in a row *) - test 7 [0,1; 1,0; 1,2; 2,3; 3,2; 3,4; 4,5; 5,6; 6,4]; - (* 3 cycles with 2 cycles in a cycle *) - test 7 [0,1; 1,0; 1,2; 2,3; 3,2; 3,4; 4,5; 5,6; 6,4; 5,2]; - printf "All tests succeeded.@." - -let () = tests Topological.iter -(* let () = tests Topological.iter_stable *) - -(* let n = int_of_string Sys.argv.(1) *) -let n = 10 -let () = - let el = ref [] in - (* linear graph *) - (* for i = 0 to n-2 do el := (i,i+1) :: !el done; *) - (* for i = 0 to n-2 do el := (i+1,i) :: !el done; *) - el := [n-1,0]; for i = 0 to n-2 do el := (i,i+1) :: !el done; - test ~check:false Topological.iter n !el - diff --git a/jscomp/build_tests/ocamlgraph/tests/test_topsort.ref b/jscomp/build_tests/ocamlgraph/tests/test_topsort.ref deleted file mode 100644 index cd2f429250..0000000000 --- a/jscomp/build_tests/ocamlgraph/tests/test_topsort.ref +++ /dev/null @@ -1,546 +0,0 @@ -0 1 2 -x=0 y=0 num(x)=1 num(y)=1 -x-->y=true y-->x=true -x=0 y=1 num(x)=1 num(y)=2 -x-->y=true y-->x=false -x=0 y=2 num(x)=1 num(y)=3 -x-->y=true y-->x=false -x=1 y=0 num(x)=2 num(y)=1 -x-->y=false y-->x=true -x=1 y=1 num(x)=2 num(y)=2 -x-->y=true y-->x=true -x=1 y=2 num(x)=2 num(y)=3 -x-->y=true y-->x=false -x=2 y=0 num(x)=3 num(y)=1 -x-->y=false y-->x=true -x=2 y=1 num(x)=3 num(y)=2 -x-->y=false y-->x=true -x=2 y=2 num(x)=3 num(y)=3 -x-->y=true y-->x=true -0 1 2 -x=0 y=0 num(x)=1 num(y)=1 -x-->y=true y-->x=true -x=0 y=1 num(x)=1 num(y)=2 -x-->y=false y-->x=false -x=0 y=2 num(x)=1 num(y)=3 -x-->y=false y-->x=false -x=1 y=0 num(x)=2 num(y)=1 -x-->y=false y-->x=false -x=1 y=1 num(x)=2 num(y)=2 -x-->y=true y-->x=true -x=1 y=2 num(x)=2 num(y)=3 -x-->y=false y-->x=false -x=2 y=0 num(x)=3 num(y)=1 -x-->y=false y-->x=false -x=2 y=1 num(x)=3 num(y)=2 -x-->y=false y-->x=false -x=2 y=2 num(x)=3 num(y)=3 -x-->y=true y-->x=true -0 -x=0 y=0 num(x)=1 num(y)=1 -x-->y=true y-->x=true -0 1 -x=0 y=0 num(x)=1 num(y)=1 -x-->y=true y-->x=true -x=0 y=1 num(x)=1 num(y)=2 -x-->y=true y-->x=true -x=1 y=0 num(x)=2 num(y)=1 -x-->y=true y-->x=true -x=1 y=1 num(x)=2 num(y)=2 -x-->y=true y-->x=true -0 1 2 -x=0 y=0 num(x)=1 num(y)=1 -x-->y=true y-->x=true -x=0 y=1 num(x)=1 num(y)=2 -x-->y=true y-->x=true -x=0 y=2 num(x)=1 num(y)=3 -x-->y=true y-->x=false -x=1 y=0 num(x)=2 num(y)=1 -x-->y=true y-->x=true -x=1 y=1 num(x)=2 num(y)=2 -x-->y=true y-->x=true -x=1 y=2 num(x)=2 num(y)=3 -x-->y=true y-->x=false -x=2 y=0 num(x)=3 num(y)=1 -x-->y=false y-->x=true -x=2 y=1 num(x)=3 num(y)=2 -x-->y=false y-->x=true -x=2 y=2 num(x)=3 num(y)=3 -x-->y=true y-->x=true -0 2 1 -x=0 y=0 num(x)=1 num(y)=1 -x-->y=true y-->x=true -x=0 y=1 num(x)=1 num(y)=3 -x-->y=true y-->x=false -x=0 y=2 num(x)=1 num(y)=2 -x-->y=true y-->x=true -x=1 y=0 num(x)=3 num(y)=1 -x-->y=false y-->x=true -x=1 y=1 num(x)=3 num(y)=3 -x-->y=true y-->x=true -x=1 y=2 num(x)=3 num(y)=2 -x-->y=false y-->x=true -x=2 y=0 num(x)=2 num(y)=1 -x-->y=true y-->x=true -x=2 y=1 num(x)=2 num(y)=3 -x-->y=true y-->x=false -x=2 y=2 num(x)=2 num(y)=2 -x-->y=true y-->x=true -1 2 0 -x=0 y=0 num(x)=3 num(y)=3 -x-->y=true y-->x=true -x=0 y=1 num(x)=3 num(y)=1 -x-->y=false y-->x=true -x=0 y=2 num(x)=3 num(y)=2 -x-->y=false y-->x=true -x=1 y=0 num(x)=1 num(y)=3 -x-->y=true y-->x=false -x=1 y=1 num(x)=1 num(y)=1 -x-->y=true y-->x=true -x=1 y=2 num(x)=1 num(y)=2 -x-->y=true y-->x=true -x=2 y=0 num(x)=2 num(y)=3 -x-->y=true y-->x=false -x=2 y=1 num(x)=2 num(y)=1 -x-->y=true y-->x=true -x=2 y=2 num(x)=2 num(y)=2 -x-->y=true y-->x=true -1 2 3 4 0 -x=0 y=0 num(x)=5 num(y)=5 -x-->y=true y-->x=true -x=0 y=1 num(x)=5 num(y)=1 -x-->y=false y-->x=true -x=0 y=2 num(x)=5 num(y)=2 -x-->y=false y-->x=true -x=0 y=3 num(x)=5 num(y)=3 -x-->y=false y-->x=false -x=0 y=4 num(x)=5 num(y)=4 -x-->y=false y-->x=false -x=1 y=0 num(x)=1 num(y)=5 -x-->y=true y-->x=false -x=1 y=1 num(x)=1 num(y)=1 -x-->y=true y-->x=true -x=1 y=2 num(x)=1 num(y)=2 -x-->y=true y-->x=true -x=1 y=3 num(x)=1 num(y)=3 -x-->y=false y-->x=false -x=1 y=4 num(x)=1 num(y)=4 -x-->y=false y-->x=false -x=2 y=0 num(x)=2 num(y)=5 -x-->y=true y-->x=false -x=2 y=1 num(x)=2 num(y)=1 -x-->y=true y-->x=true -x=2 y=2 num(x)=2 num(y)=2 -x-->y=true y-->x=true -x=2 y=3 num(x)=2 num(y)=3 -x-->y=false y-->x=false -x=2 y=4 num(x)=2 num(y)=4 -x-->y=false y-->x=false -x=3 y=0 num(x)=3 num(y)=5 -x-->y=false y-->x=false -x=3 y=1 num(x)=3 num(y)=1 -x-->y=false y-->x=false -x=3 y=2 num(x)=3 num(y)=2 -x-->y=false y-->x=false -x=3 y=3 num(x)=3 num(y)=3 -x-->y=true y-->x=true -x=3 y=4 num(x)=3 num(y)=4 -x-->y=true y-->x=true -x=4 y=0 num(x)=4 num(y)=5 -x-->y=false y-->x=false -x=4 y=1 num(x)=4 num(y)=1 -x-->y=false y-->x=false -x=4 y=2 num(x)=4 num(y)=2 -x-->y=false y-->x=false -x=4 y=3 num(x)=4 num(y)=3 -x-->y=true y-->x=true -x=4 y=4 num(x)=4 num(y)=4 -x-->y=true y-->x=true -0 1 2 -x=0 y=0 num(x)=1 num(y)=1 -x-->y=true y-->x=true -x=0 y=1 num(x)=1 num(y)=2 -x-->y=true y-->x=false -x=0 y=2 num(x)=1 num(y)=3 -x-->y=true y-->x=false -x=1 y=0 num(x)=2 num(y)=1 -x-->y=false y-->x=true -x=1 y=1 num(x)=2 num(y)=2 -x-->y=true y-->x=true -x=1 y=2 num(x)=2 num(y)=3 -x-->y=true y-->x=true -x=2 y=0 num(x)=3 num(y)=1 -x-->y=false y-->x=true -x=2 y=1 num(x)=3 num(y)=2 -x-->y=true y-->x=true -x=2 y=2 num(x)=3 num(y)=3 -x-->y=true y-->x=true -0 1 2 -x=0 y=0 num(x)=1 num(y)=1 -x-->y=true y-->x=true -x=0 y=1 num(x)=1 num(y)=2 -x-->y=true y-->x=false -x=0 y=2 num(x)=1 num(y)=3 -x-->y=true y-->x=false -x=1 y=0 num(x)=2 num(y)=1 -x-->y=false y-->x=true -x=1 y=1 num(x)=2 num(y)=2 -x-->y=true y-->x=true -x=1 y=2 num(x)=2 num(y)=3 -x-->y=true y-->x=true -x=2 y=0 num(x)=3 num(y)=1 -x-->y=false y-->x=true -x=2 y=1 num(x)=3 num(y)=2 -x-->y=true y-->x=true -x=2 y=2 num(x)=3 num(y)=3 -x-->y=true y-->x=true -2 3 0 1 -x=0 y=0 num(x)=3 num(y)=3 -x-->y=true y-->x=true -x=0 y=1 num(x)=3 num(y)=4 -x-->y=true y-->x=true -x=0 y=2 num(x)=3 num(y)=1 -x-->y=false y-->x=true -x=0 y=3 num(x)=3 num(y)=2 -x-->y=false y-->x=true -x=1 y=0 num(x)=4 num(y)=3 -x-->y=true y-->x=true -x=1 y=1 num(x)=4 num(y)=4 -x-->y=true y-->x=true -x=1 y=2 num(x)=4 num(y)=1 -x-->y=false y-->x=true -x=1 y=3 num(x)=4 num(y)=2 -x-->y=false y-->x=true -x=2 y=0 num(x)=1 num(y)=3 -x-->y=true y-->x=false -x=2 y=1 num(x)=1 num(y)=4 -x-->y=true y-->x=false -x=2 y=2 num(x)=1 num(y)=1 -x-->y=true y-->x=true -x=2 y=3 num(x)=1 num(y)=2 -x-->y=true y-->x=true -x=3 y=0 num(x)=2 num(y)=3 -x-->y=true y-->x=false -x=3 y=1 num(x)=2 num(y)=4 -x-->y=true y-->x=false -x=3 y=2 num(x)=2 num(y)=1 -x-->y=true y-->x=true -x=3 y=3 num(x)=2 num(y)=2 -x-->y=true y-->x=true -0 1 2 3 -x=0 y=0 num(x)=1 num(y)=1 -x-->y=true y-->x=true -x=0 y=1 num(x)=1 num(y)=2 -x-->y=true y-->x=true -x=0 y=2 num(x)=1 num(y)=3 -x-->y=true y-->x=false -x=0 y=3 num(x)=1 num(y)=4 -x-->y=true y-->x=false -x=1 y=0 num(x)=2 num(y)=1 -x-->y=true y-->x=true -x=1 y=1 num(x)=2 num(y)=2 -x-->y=true y-->x=true -x=1 y=2 num(x)=2 num(y)=3 -x-->y=true y-->x=false -x=1 y=3 num(x)=2 num(y)=4 -x-->y=true y-->x=false -x=2 y=0 num(x)=3 num(y)=1 -x-->y=false y-->x=true -x=2 y=1 num(x)=3 num(y)=2 -x-->y=false y-->x=true -x=2 y=2 num(x)=3 num(y)=3 -x-->y=true y-->x=true -x=2 y=3 num(x)=3 num(y)=4 -x-->y=true y-->x=true -x=3 y=0 num(x)=4 num(y)=1 -x-->y=false y-->x=true -x=3 y=1 num(x)=4 num(y)=2 -x-->y=false y-->x=true -x=3 y=2 num(x)=4 num(y)=3 -x-->y=true y-->x=true -x=3 y=3 num(x)=4 num(y)=4 -x-->y=true y-->x=true -0 1 2 3 -x=0 y=0 num(x)=1 num(y)=1 -x-->y=true y-->x=true -x=0 y=1 num(x)=1 num(y)=2 -x-->y=true y-->x=true -x=0 y=2 num(x)=1 num(y)=3 -x-->y=true y-->x=true -x=0 y=3 num(x)=1 num(y)=4 -x-->y=true y-->x=true -x=1 y=0 num(x)=2 num(y)=1 -x-->y=true y-->x=true -x=1 y=1 num(x)=2 num(y)=2 -x-->y=true y-->x=true -x=1 y=2 num(x)=2 num(y)=3 -x-->y=true y-->x=true -x=1 y=3 num(x)=2 num(y)=4 -x-->y=true y-->x=true -x=2 y=0 num(x)=3 num(y)=1 -x-->y=true y-->x=true -x=2 y=1 num(x)=3 num(y)=2 -x-->y=true y-->x=true -x=2 y=2 num(x)=3 num(y)=3 -x-->y=true y-->x=true -x=2 y=3 num(x)=3 num(y)=4 -x-->y=true y-->x=true -x=3 y=0 num(x)=4 num(y)=1 -x-->y=true y-->x=true -x=3 y=1 num(x)=4 num(y)=2 -x-->y=true y-->x=true -x=3 y=2 num(x)=4 num(y)=3 -x-->y=true y-->x=true -x=3 y=3 num(x)=4 num(y)=4 -x-->y=true y-->x=true -3 0 1 2 4 -x=0 y=0 num(x)=2 num(y)=2 -x-->y=true y-->x=true -x=0 y=1 num(x)=2 num(y)=3 -x-->y=true y-->x=true -x=0 y=2 num(x)=2 num(y)=4 -x-->y=true y-->x=true -x=0 y=3 num(x)=2 num(y)=1 -x-->y=false y-->x=true -x=0 y=4 num(x)=2 num(y)=5 -x-->y=true y-->x=false -x=1 y=0 num(x)=3 num(y)=2 -x-->y=true y-->x=true -x=1 y=1 num(x)=3 num(y)=3 -x-->y=true y-->x=true -x=1 y=2 num(x)=3 num(y)=4 -x-->y=true y-->x=true -x=1 y=3 num(x)=3 num(y)=1 -x-->y=false y-->x=true -x=1 y=4 num(x)=3 num(y)=5 -x-->y=true y-->x=false -x=2 y=0 num(x)=4 num(y)=2 -x-->y=true y-->x=true -x=2 y=1 num(x)=4 num(y)=3 -x-->y=true y-->x=true -x=2 y=2 num(x)=4 num(y)=4 -x-->y=true y-->x=true -x=2 y=3 num(x)=4 num(y)=1 -x-->y=false y-->x=true -x=2 y=4 num(x)=4 num(y)=5 -x-->y=true y-->x=false -x=3 y=0 num(x)=1 num(y)=2 -x-->y=true y-->x=false -x=3 y=1 num(x)=1 num(y)=3 -x-->y=true y-->x=false -x=3 y=2 num(x)=1 num(y)=4 -x-->y=true y-->x=false -x=3 y=3 num(x)=1 num(y)=1 -x-->y=true y-->x=true -x=3 y=4 num(x)=1 num(y)=5 -x-->y=true y-->x=false -x=4 y=0 num(x)=5 num(y)=2 -x-->y=false y-->x=true -x=4 y=1 num(x)=5 num(y)=3 -x-->y=false y-->x=true -x=4 y=2 num(x)=5 num(y)=4 -x-->y=false y-->x=true -x=4 y=3 num(x)=5 num(y)=1 -x-->y=false y-->x=true -x=4 y=4 num(x)=5 num(y)=5 -x-->y=true y-->x=true -0 1 2 3 4 5 6 -x=0 y=0 num(x)=1 num(y)=1 -x-->y=true y-->x=true -x=0 y=1 num(x)=1 num(y)=2 -x-->y=true y-->x=true -x=0 y=2 num(x)=1 num(y)=3 -x-->y=true y-->x=false -x=0 y=3 num(x)=1 num(y)=4 -x-->y=true y-->x=false -x=0 y=4 num(x)=1 num(y)=5 -x-->y=true y-->x=false -x=0 y=5 num(x)=1 num(y)=6 -x-->y=true y-->x=false -x=0 y=6 num(x)=1 num(y)=7 -x-->y=true y-->x=false -x=1 y=0 num(x)=2 num(y)=1 -x-->y=true y-->x=true -x=1 y=1 num(x)=2 num(y)=2 -x-->y=true y-->x=true -x=1 y=2 num(x)=2 num(y)=3 -x-->y=true y-->x=false -x=1 y=3 num(x)=2 num(y)=4 -x-->y=true y-->x=false -x=1 y=4 num(x)=2 num(y)=5 -x-->y=true y-->x=false -x=1 y=5 num(x)=2 num(y)=6 -x-->y=true y-->x=false -x=1 y=6 num(x)=2 num(y)=7 -x-->y=true y-->x=false -x=2 y=0 num(x)=3 num(y)=1 -x-->y=false y-->x=true -x=2 y=1 num(x)=3 num(y)=2 -x-->y=false y-->x=true -x=2 y=2 num(x)=3 num(y)=3 -x-->y=true y-->x=true -x=2 y=3 num(x)=3 num(y)=4 -x-->y=true y-->x=true -x=2 y=4 num(x)=3 num(y)=5 -x-->y=true y-->x=false -x=2 y=5 num(x)=3 num(y)=6 -x-->y=true y-->x=false -x=2 y=6 num(x)=3 num(y)=7 -x-->y=true y-->x=false -x=3 y=0 num(x)=4 num(y)=1 -x-->y=false y-->x=true -x=3 y=1 num(x)=4 num(y)=2 -x-->y=false y-->x=true -x=3 y=2 num(x)=4 num(y)=3 -x-->y=true y-->x=true -x=3 y=3 num(x)=4 num(y)=4 -x-->y=true y-->x=true -x=3 y=4 num(x)=4 num(y)=5 -x-->y=true y-->x=false -x=3 y=5 num(x)=4 num(y)=6 -x-->y=true y-->x=false -x=3 y=6 num(x)=4 num(y)=7 -x-->y=true y-->x=false -x=4 y=0 num(x)=5 num(y)=1 -x-->y=false y-->x=true -x=4 y=1 num(x)=5 num(y)=2 -x-->y=false y-->x=true -x=4 y=2 num(x)=5 num(y)=3 -x-->y=false y-->x=true -x=4 y=3 num(x)=5 num(y)=4 -x-->y=false y-->x=true -x=4 y=4 num(x)=5 num(y)=5 -x-->y=true y-->x=true -x=4 y=5 num(x)=5 num(y)=6 -x-->y=true y-->x=true -x=4 y=6 num(x)=5 num(y)=7 -x-->y=true y-->x=true -x=5 y=0 num(x)=6 num(y)=1 -x-->y=false y-->x=true -x=5 y=1 num(x)=6 num(y)=2 -x-->y=false y-->x=true -x=5 y=2 num(x)=6 num(y)=3 -x-->y=false y-->x=true -x=5 y=3 num(x)=6 num(y)=4 -x-->y=false y-->x=true -x=5 y=4 num(x)=6 num(y)=5 -x-->y=true y-->x=true -x=5 y=5 num(x)=6 num(y)=6 -x-->y=true y-->x=true -x=5 y=6 num(x)=6 num(y)=7 -x-->y=true y-->x=true -x=6 y=0 num(x)=7 num(y)=1 -x-->y=false y-->x=true -x=6 y=1 num(x)=7 num(y)=2 -x-->y=false y-->x=true -x=6 y=2 num(x)=7 num(y)=3 -x-->y=false y-->x=true -x=6 y=3 num(x)=7 num(y)=4 -x-->y=false y-->x=true -x=6 y=4 num(x)=7 num(y)=5 -x-->y=true y-->x=true -x=6 y=5 num(x)=7 num(y)=6 -x-->y=true y-->x=true -x=6 y=6 num(x)=7 num(y)=7 -x-->y=true y-->x=true -0 1 2 3 4 5 6 -x=0 y=0 num(x)=1 num(y)=1 -x-->y=true y-->x=true -x=0 y=1 num(x)=1 num(y)=2 -x-->y=true y-->x=true -x=0 y=2 num(x)=1 num(y)=3 -x-->y=true y-->x=false -x=0 y=3 num(x)=1 num(y)=4 -x-->y=true y-->x=false -x=0 y=4 num(x)=1 num(y)=5 -x-->y=true y-->x=false -x=0 y=5 num(x)=1 num(y)=6 -x-->y=true y-->x=false -x=0 y=6 num(x)=1 num(y)=7 -x-->y=true y-->x=false -x=1 y=0 num(x)=2 num(y)=1 -x-->y=true y-->x=true -x=1 y=1 num(x)=2 num(y)=2 -x-->y=true y-->x=true -x=1 y=2 num(x)=2 num(y)=3 -x-->y=true y-->x=false -x=1 y=3 num(x)=2 num(y)=4 -x-->y=true y-->x=false -x=1 y=4 num(x)=2 num(y)=5 -x-->y=true y-->x=false -x=1 y=5 num(x)=2 num(y)=6 -x-->y=true y-->x=false -x=1 y=6 num(x)=2 num(y)=7 -x-->y=true y-->x=false -x=2 y=0 num(x)=3 num(y)=1 -x-->y=false y-->x=true -x=2 y=1 num(x)=3 num(y)=2 -x-->y=false y-->x=true -x=2 y=2 num(x)=3 num(y)=3 -x-->y=true y-->x=true -x=2 y=3 num(x)=3 num(y)=4 -x-->y=true y-->x=true -x=2 y=4 num(x)=3 num(y)=5 -x-->y=true y-->x=true -x=2 y=5 num(x)=3 num(y)=6 -x-->y=true y-->x=true -x=2 y=6 num(x)=3 num(y)=7 -x-->y=true y-->x=true -x=3 y=0 num(x)=4 num(y)=1 -x-->y=false y-->x=true -x=3 y=1 num(x)=4 num(y)=2 -x-->y=false y-->x=true -x=3 y=2 num(x)=4 num(y)=3 -x-->y=true y-->x=true -x=3 y=3 num(x)=4 num(y)=4 -x-->y=true y-->x=true -x=3 y=4 num(x)=4 num(y)=5 -x-->y=true y-->x=true -x=3 y=5 num(x)=4 num(y)=6 -x-->y=true y-->x=true -x=3 y=6 num(x)=4 num(y)=7 -x-->y=true y-->x=true -x=4 y=0 num(x)=5 num(y)=1 -x-->y=false y-->x=true -x=4 y=1 num(x)=5 num(y)=2 -x-->y=false y-->x=true -x=4 y=2 num(x)=5 num(y)=3 -x-->y=true y-->x=true -x=4 y=3 num(x)=5 num(y)=4 -x-->y=true y-->x=true -x=4 y=4 num(x)=5 num(y)=5 -x-->y=true y-->x=true -x=4 y=5 num(x)=5 num(y)=6 -x-->y=true y-->x=true -x=4 y=6 num(x)=5 num(y)=7 -x-->y=true y-->x=true -x=5 y=0 num(x)=6 num(y)=1 -x-->y=false y-->x=true -x=5 y=1 num(x)=6 num(y)=2 -x-->y=false y-->x=true -x=5 y=2 num(x)=6 num(y)=3 -x-->y=true y-->x=true -x=5 y=3 num(x)=6 num(y)=4 -x-->y=true y-->x=true -x=5 y=4 num(x)=6 num(y)=5 -x-->y=true y-->x=true -x=5 y=5 num(x)=6 num(y)=6 -x-->y=true y-->x=true -x=5 y=6 num(x)=6 num(y)=7 -x-->y=true y-->x=true -x=6 y=0 num(x)=7 num(y)=1 -x-->y=false y-->x=true -x=6 y=1 num(x)=7 num(y)=2 -x-->y=false y-->x=true -x=6 y=2 num(x)=7 num(y)=3 -x-->y=true y-->x=true -x=6 y=3 num(x)=7 num(y)=4 -x-->y=true y-->x=true -x=6 y=4 num(x)=7 num(y)=5 -x-->y=true y-->x=true -x=6 y=5 num(x)=7 num(y)=6 -x-->y=true y-->x=true -x=6 y=6 num(x)=7 num(y)=7 -x-->y=true y-->x=true -All tests succeeded. - diff --git a/jscomp/build_tests/ocamlgraph/tests/testgraphml.ml b/jscomp/build_tests/ocamlgraph/tests/testgraphml.ml deleted file mode 100755 index 3092c5fba5..0000000000 --- a/jscomp/build_tests/ocamlgraph/tests/testgraphml.ml +++ /dev/null @@ -1,45 +0,0 @@ -(******************************************************************************) -(* *) -(* Copyright (C) 2012 Pietro Abate *) -(* *) -(* This library is free software: you can redistribute it and/or modify *) -(* it under the terms of the GNU Lesser General Public License as *) -(* published by the Free Software Foundation, either version 3 of the *) -(* License, or (at your option) any later version. A special linking *) -(* exception to the GNU Lesser General Public License applies to this *) -(* library, see the COPYING file for more information. *) -(* *) -(******************************************************************************) - -module V = struct - type t = int - let compare = compare - let hash i = i - let equal = (=) -end - -module G = Graph.Imperative.Digraph.ConcreteBidirectional(V) - -module Gr = struct - include G - let vertex_properties = ["id1","string",None; "id2","string",Some "2"] - let edge_properties = ["ed", "string",Some "3"] - let map_edge e = ["ed", string_of_int (E.dst e)] - let map_vertex v = [ "id1", string_of_int v ; "id2", string_of_int v] - let vertex_uid = G.V.hash - let edge_uid e = - Hashtbl.hash (vertex_uid (G.E.src e), G.E.label e, vertex_uid (G.E.dst e)) -end - -module GraphPrinter = Graph.Graphml.Print(G)(Gr) - -let print g = GraphPrinter.print Format.std_formatter g - -let () = - let g = G.create () in - G.add_vertex g 1; - G.add_vertex g 2; - G.add_vertex g 3; - G.add_edge g 1 2; - G.add_edge g 1 3; - print g;; diff --git a/jscomp/build_tests/ocamlgraph/view_graph/README b/jscomp/build_tests/ocamlgraph/view_graph/README deleted file mode 100755 index 21f2abbb1d..0000000000 --- a/jscomp/build_tests/ocamlgraph/view_graph/README +++ /dev/null @@ -1,14 +0,0 @@ -====================================================== -ViewGraph is now deprecated. Prefer to use dgraph now. -====================================================== - -ViewGraph is a small ocaml library that helps to view a graph from a dot file -in a Lablgtk canvas, and interact with it. - -To have more information : - make doc -and browse the documentation starting from doc/index.html - -You can also compile the test file, and try to use it : - make; ./viewgraph file.dot - diff --git a/jscomp/build_tests/ocamlgraph/view_graph/doc/intro.txt b/jscomp/build_tests/ocamlgraph/view_graph/doc/intro.txt deleted file mode 100755 index 9360c81d40..0000000000 --- a/jscomp/build_tests/ocamlgraph/view_graph/doc/intro.txt +++ /dev/null @@ -1,69 +0,0 @@ -{1 ViewGraph} - -{2 Presentation} - -ViewGraph is a small {{:http://caml.inria.fr/ocaml/}ocaml} library -that helps to view a graph from a dot file -in a Lablgtk canvas, and interact with it. - -It reads dot files and uses the dot tool for the layout of the nodes. -You can have a look to {{:http://www.graphviz.org/}Graphviz} -to know more about the dot tool and file format. - -It also uses the {{:http://caml.inria.fr/ocaml/}ocaml} -graph library {{:http://ocamlgraph.lri.fr/}ocamlgraph}. - -It is composed of the {{:index_modules.html}modules}: -- {!module:ViewGraph} : which is the main part and that can be used alone - to parse a file, generate an image of the graph - and add some user defined callbacks to interact with it, -- {!module:ViewGraph_select} : which can be used to add selection features - in addition to user callbacks, -- {!module:ViewGraph_test} : which is not really part of the library - but that creates a small gui to show how to use the 2 other modules. - -To know more about it, the best thing to do is to compile -and test : -- [make] -- [./viewgraph file.dot] - -If you don't have any dot file, you can for instance use some examples from -{{:http://www.graphviz.org/Gallery.php}graphviz gallery} -but please remove the size attibutes (they are not handdled yet : see below) - -Notice also that if you are already using -{{:http://ocamlgraph.lri.fr/}ocamlgraph} to build some graphs, -it is quite easy to generate dot files by using -{{:http://ocamlgraph.lri.fr/doc/Graphviz.html}Graph.Graphviz.Dot}. - -{2 Some more things TODO} - -- some of the dot format attributes are not handled - (size and ratio for instance) -- the zoom feature is very ugly at the moment ! -- as we call 'dot' once for the image and another time for annotations, - the layout is computed twice. That can be a problem for big graphs. -- instead of using PNG images from dot, we could generate the GTK objects, - and the zoom problem would be solved. This requires a lot of work, - but we hope to do it soon ! -- add something to find a node by its name -- ... and more... - -{2 More links} - -- GTK : -{ul {- all the {{:http://library.gnome.org/devel/gtk/stable/}widgets} -Reference Manual} - {- the -{{:http://library.gnome.org/devel/libgnomecanvas/stable/}GnomeCanvas} -Library Reference Manual} -} -- Lablgtk : - {ul{- ocamldoc -{{:http://plus.kaist.ac.kr/~shoh/ocaml/lablgtk2/lablgtk-2.4.0/doc/html/index.html} -reference} with links on GTK reference,} -{- an excellent -{{:http://plus.kaist.ac.kr/~shoh/english/ocaml/lablgtk2/lablgtk2-tutorial/index.html}tutorial} fo those (like me) who don't know GTK.} -} -- Author : {{:http://www-sop.inria.fr/everest/personnel/Anne.Pacalet/}Anne - Pacalet} diff --git a/jscomp/build_tests/ocamlgraph/view_graph/doc/style.css b/jscomp/build_tests/ocamlgraph/view_graph/doc/style.css deleted file mode 100755 index 730d75eb06..0000000000 --- a/jscomp/build_tests/ocamlgraph/view_graph/doc/style.css +++ /dev/null @@ -1,129 +0,0 @@ -.typetable { - border-style : hidden -} -.indextable { - border-style : hidden -} -.paramstable { - border-style : hidden ; - padding: 5pt 5pt -} -body { - background-color : white - font-family: Lucida,Times,serif; - margin-left: 2em; - margin-right: 1em; -} -td.typefieldcomment { - background-color : white - font-size: smaller ; -} -pre { - margin-bottom: 2px; -} -pre, code { - font-family: terminal,"courier new",monospace; - font-size: 10pt; -} -div.sig_block { - margin-left: 2em -} -.keyword { - font-weight : bold ; - color : fuchsia; -} -.keywordsign { - color : #C04600 -} -.superscript { - font-size : 4 -} -.subscript { - font-size : 4 -} -.comment { - color : Green -} -.constructor { - color : Blue -} -.type { - color : #5C6585 -} -.string { - color : Maroon -} -.warning { - color : Red ; - font-weight : bold -} -.info { - margin-left : 3em; - margin-right : 3em -} -.param_info { - margin-top: 4px; - margin-left : 3em; - margin-right : 3em -} -.code { - color : #465F91 ; -} -a .code { - color : #416DFF; -} -a:link { - color : #416DFF; - text-decoration : none; -} -a:visited { - color : #416DFF; - text-decoration : none; -} -a:hover { - color : fuchsia; - text-decoration : none; - background-color: #CCE8FE; -} -a:active { - color : fuchsia; - text-decoration : underline; -} -h1 { - font-size : 30 ; - text-align: center; -} -h2 { - background-color: #1E90FF ; - font-size : 25 ; - border: 1px solid #000000; - margin-top: 2ex; - margin-bottom: 1ex; - margin-left: -1ex; - margin-right: -1ex; - text-align: center; - padding: 2px; -} -h3 { - background-color: #00CFFF ; - font-size : 18 ; - border: 1px solid #000000; - margin-top: 5px; - margin-bottom: 2px; - margin-left: 0; - margin-right: 0; - text-align: center; - padding: 2px; -} -h4 { - font-size : 18 ; - margin-top: 1ex; - margin-bottom: 1ex; -} -ul { - margin:0; - list-style-type: square; -} -ul ul { - list-style-type: disc; -} diff --git a/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_core.ml b/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_core.ml deleted file mode 100755 index 2f5fbeae5b..0000000000 --- a/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_core.ml +++ /dev/null @@ -1,307 +0,0 @@ -(**************************************************************************) -(* *) -(* ViewGraph: a library to interact with graphs in ocaml and lablgtk2 *) -(* *) -(* Copyright (C) 2008 - Anne Pacalet *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** ViewGraph : a library to view .dot graphs and interact with the GUI. -*) - -(** This is Ocamlgraph library : see http://ocamlgraph.lri.fr/doc/ *) -open Graph - -exception DotError of string - -type t_point = float * float -type t_coord = t_point * t_point - -type t_shape = Srect | Sellipse (* TODO : add some more ! *) - -type t_gtk_obj = GnomeCanvas.re_p GnoCanvas.item - -module Node = struct - type t = string * (t_shape * t_coord * t_gtk_obj) option - let id n = fst n - let coord n = match snd n with None -> None - | Some (_, c, _) -> Some c - let item n = match snd n with None -> None - | Some (_, _, r) -> Some r -end -module G = Imperative.Digraph.Abstract(Node) -module B = Builder.I(G) - -type t_graph = B.G.t * GnoCanvas.pixbuf -type t_node = B.G.V.t - -let get_graph g = fst g -let get_pixbuf g = snd g - -let get_node_info n = B.G.V.label n -let get_coord n = Node.coord (get_node_info n) -let get_id n = Node.id (get_node_info n) -let get_obj n = Node.item (get_node_info n) - -(** find the attributes [pos], [width] and [height] in the attribute list *) -let get_info attr_list_list = - let get (shp, p,w,h) (attr, val_opt) = match attr, val_opt with - | (Dot_ast.Ident "shape"), Some (Dot_ast.String s) -> - (* Format.printf "found pos = %s@." s; *) - (Some s), p, w, h - | (Dot_ast.Ident "pos"), Some (Dot_ast.String s) -> - (* Format.printf "found pos = %s@." s; *) - shp, (Some s), w, h - | (Dot_ast.Ident "width"), Some (Dot_ast.String s) -> - (* Format.printf "found width = %s@." s; *) - shp, p, (Some s), h - | (Dot_ast.Ident "height"), Some (Dot_ast.String s) -> - (* Format.printf "found height = %s@." s; *) - shp, p, w, (Some s) - | (Dot_ast.Ident _), Some (Dot_ast.String _) -> - (* Format.printf "found %s = %s -> ignored@." id s; *) - (shp, p, w, h) - | _ -> (shp, p,w,h) - in - let get acc attr_list = - (* Format.printf "%d attr in attr_list@." (List.length attr_list); *) - List.fold_left get acc attr_list in - (*Format.printf "%d lists in attr_list_list@." (List.length attr_list_list); *) - List.fold_left get (None, None, None, None) attr_list_list - - -(** Translate the information given by dot - * into the coordinate of a rectangle in the png image. - * see http://www.graphviz.org/mywiki/FaqCoordTransformation - * to understand the [pad] and [factor] variables. - * @param pos position of the center of the node, in points. - * @param w width of the node, in inch. - * @param h height of the node, in inch. -*) -let compute_coord pos w h = - let dot_ppi = 72. (* number of pixels per inch on a display device *) in - let dot_png_ppi = 96. (* number of pixels per inch on a display device *) in - try - let w = float_of_string w in - let h = float_of_string h in - let x,y = Scanf.sscanf pos "%d,%d" (fun x y -> (x,y)) in - let pad = 4 in - let x = float_of_int (x + pad) in - let y = float_of_int (y + pad) in - let dx = w *. dot_ppi /. 2. in - let dy = h *. dot_ppi /. 2. in - let x1 = x -. dx in - let y1 = y -. dy in - let x2 = x +. dx in - let y2 = y +. dy in - let factor = dot_png_ppi /. dot_ppi in - let x1 = x1 *. factor in - let y1 = y1 *. factor in - let x2 = x2 *. factor in - let y2 = y2 *. factor in - (* Format.printf "compute_coord -> x1=%f y1=%f x2=%f y2=%f@." - x1 y1 x2 y2; *) - Some ((x1,y1),(x2,y2)) - with e -> - let s = Printexc.to_string e in - Format.printf "compute_coord failled : %s@." s; - None - -module DotParser (C : sig val mk_node : t_shape -> t_coord -> t_gtk_obj end) = - Dot.Parse - (B) - (struct - let node (id,_) attr_list = - let name = match id with - | Dot_ast.Ident s - | Dot_ast.Number s - | Dot_ast.String s - | Dot_ast.Html s -> s - in - let info = match get_info attr_list with - | shp, Some pos, Some w, Some h -> - let shp = match shp with - | Some "ellipse" -> Sellipse - | Some "box" -> Srect - | Some _ -> Srect - | None -> Sellipse (* default shape *) - in - begin match compute_coord pos w h with - | None -> None - | Some coord -> - let n_obj = C.mk_node shp coord in - Some (shp, coord, n_obj) - end - | _ -> Format.printf "info KO for %s@." name; None - in (name, info) - let edge _ = () - end) - -(** Call [dot] to build the graph image in a [png] file *) -let png_graph_image dot_cmd dot_file png_file = - let cmd = Printf.sprintf "%s -T png %s > %s" dot_cmd dot_file png_file in - match Sys.command cmd with - | 0 -> png_file - | _ -> raise (DotError cmd) - -(** Call 'dot' on the [dot_file] to get a file with position information, - * and also to have a [png] image of the graph. - * Then parse the annotated file to get the graph with the nodes coordinates. - * @return the graph and the pgn filename. - * *) -let build_graph dot_cmd dot_file annot_dot_file mk_node_item = - let cmd = Printf.sprintf "%s -y %s > %s " dot_cmd dot_file annot_dot_file in - match Sys.command cmd with - | 0 -> - let module Parser = - DotParser (struct let mk_node = mk_node_item end) in - let graph = Parser.parse annot_dot_file in - graph - | _ -> raise (DotError cmd) - -(** @return 2 lists : the predecessors and successors of the node*) -let get_neighbours graph n = - let graph = get_graph graph in - let preds = B.G.pred graph n in - let succs = B.G.succ graph n in - (preds, succs) - -(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*) - -module type SigCb = sig - type t_env - - val button_one_press_on_graph : t_env -> unit - val button_two_press_on_graph : t_env -> unit - val button_three_press_on_graph : t_env -> unit - val button_one_press_on_node : t_env -> t_node -> unit - val button_two_press_on_node : t_env -> t_node -> unit - val button_three_press_on_node : t_env -> t_node -> unit - val enter_node : t_env -> t_node -> unit - val leave_node : t_env -> t_node -> unit -end - -module EmptyCb = struct - type t_env = unit - let button_one_press_on_graph _env = () - let button_two_press_on_graph _env = () - let button_three_press_on_graph _env = () - let button_one_press_on_node _env _n = () - let button_two_press_on_node _env _n = () - let button_three_press_on_node _env _n = () - let enter_node _env _n = () - let leave_node _env _n = () -end - -module M (Cb : SigCb) = struct - - let mk_node_item canvas shp ((x1,y1),(x2,y2)) = - (* we have to put some color on item in order to be able to get their events, - * so let's cheat and add a bitmap with 0 every where... *) - let no_color = [ - `FILL_COLOR "black" ; - `FILL_STIPPLE (Gdk.Bitmap.create_from_data ~width:1 ~height:1 "\000") - ] in - let props = [ `X1 x1; `Y1 y1; `X2 x2; `Y2 y2] @ no_color in - let n_obj = match shp with - | Srect -> GnoCanvas.rect canvas#root ~props - | Sellipse -> GnoCanvas.ellipse canvas#root ~props - in n_obj - - let graph_event env ev = - begin match ev with - | `BUTTON_PRESS ev -> - begin - (* let state = GdkEvent.Button.state ev in *) - match GdkEvent.Button.button ev with - (* | 1 when Gdk.Convert.test_modifier `SHIFT state -> - | 1 when Gdk.Convert.test_modifier `CONTROL state -> - let (x, y) = - canvas#w2c_d (GdkEvent.Button.x ev) (GdkEvent.Button.y ev) in - *) - | 1 -> Cb.button_one_press_on_graph env - | 2 -> Cb.button_two_press_on_graph env - | 3 -> Cb.button_three_press_on_graph env - | _ -> () - end - | _ -> () - end ; false - - let node_event env node ev = - begin match ev with - | `ENTER_NOTIFY _ -> Cb.enter_node env node - | `LEAVE_NOTIFY _ -> Cb.leave_node env node - | `BUTTON_PRESS ev -> - begin match GdkEvent.Button.button ev with - | 1 -> Cb.button_one_press_on_node env node - | 2 -> Cb.button_two_press_on_node env node - | 3 -> Cb.button_three_press_on_node env node - | _ -> () - end - | _ -> () - end ; - false - - (** for each node that has an item, connect the events *) - let add_node_items env graph = - let do_it n = - match get_obj n with - | None -> () - | Some n_rect -> ignore (n_rect#connect#event ~callback:(node_event env n)) - in B.G.iter_vertex do_it graph - - let remove_node_items graph = - let do_it n = - match get_obj n with - | None -> () - | Some n_rect -> n_rect#destroy () - in B.G.iter_vertex do_it graph - - let install_image (canvas :GnoCanvas.canvas) png_file = - let im = GdkPixbuf.from_file png_file in - (*let im = GdkPixbuf.add_alpha ~transparent:(0xff, 0xff, 0xff) im in*) - let w = GdkPixbuf.get_width im in - let h = GdkPixbuf.get_height im in - (* Format.printf "GnoCanvas.pixbuf size = %dx%d@." w h; *) - let _ = canvas#set_scroll_region ~x1:0. ~y1:0. ~x2:(float w) ~y2:(float h) in - let px = GnoCanvas.pixbuf ~x:0. ~y:0. ~pixbuf:im canvas#root in - px - - let open_dot_file env (canvas :GnoCanvas.canvas) ?(dot_cmd="dot") dot_file = - let basename = try Filename.chop_extension dot_file - with Invalid_argument _ -> dot_file in - let png_file = Printf.sprintf "%s.png" basename in - let annot_dot_file = Printf.sprintf "%s_annot" dot_file in - - let graph = - build_graph dot_cmd dot_file annot_dot_file (mk_node_item canvas) in - (* TODO : it would be better not to recompute the layout, - * ie. use annot_dot_file instead of dot_file, - * but it seems that it doesn't work properly... - * It is ok for 'simple' graphs like unix.dot, - * but not on crazy.dot for instance. What goes wrong ? - * Anyway, it would be better to build GTK objects instead of a png image ! - * *) - let png_file = png_graph_image dot_cmd dot_file png_file in - let pixbuf = install_image canvas png_file in - let _ = pixbuf#connect#event ~callback:(graph_event env) in - let _ = add_node_items env graph in - let _ = pixbuf#lower_to_bottom () in - (graph, pixbuf) - - let clear _canvas graph = - (* TODO : remove pixbuf from _canvas ? *) - let pixbuf = get_pixbuf graph in pixbuf#destroy (); - let graph = get_graph graph in remove_node_items graph - -end - diff --git a/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_core.mli b/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_core.mli deleted file mode 100755 index 22ac28d9ae..0000000000 --- a/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_core.mli +++ /dev/null @@ -1,72 +0,0 @@ -(**************************************************************************) -(* *) -(* ViewGraph: a library to interact with graphs in ocaml and lablgtk2 *) -(* *) -(* Copyright (C) 2008 - Anne Pacalet *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** ViewGraph : a library to view .dot graphs and interact with the GUI. - * To use it you have : - * - first to define callbacks (see {!modtype:ViewGraph.SigCb}) - * - then instanciate the module {!module:ViewGraph.M} with your callbacks, - * - then use {!ViewGraph.M.open_dot_file} - * - don't forget to call {!ViewGraph.M.clear} when changing the file. -*) - -(** raised when the call to a dot command fails. - * The string gives the command that failed *) -exception DotError of string - -type t_point = float * float -type t_coord = t_point * t_point - -type t_graph -type t_node - -type t_gtk_obj = GnomeCanvas.re_p GnoCanvas.item - -(*val get_canvas : t_graph -> GnoCanvas.canvas *) - -val get_id : t_node -> string -val get_coord : t_node -> t_coord option -val get_obj : t_node -> t_gtk_obj option - -(** @return 2 lists : the predecessors and successors of the node*) -val get_neighbours : t_graph -> t_node -> t_node list * t_node list - -module type SigCb = sig - type t_env - - val button_one_press_on_graph : t_env -> unit - val button_two_press_on_graph : t_env -> unit - val button_three_press_on_graph : t_env -> unit - val button_one_press_on_node : t_env -> t_node -> unit - val button_two_press_on_node : t_env -> t_node -> unit - val button_three_press_on_node : t_env -> t_node -> unit - val enter_node : t_env -> t_node -> unit - val leave_node : t_env -> t_node -> unit -end - -(** usefull when we don't want to have callbacks on the nodes *) -module EmptyCb : SigCb with type t_env=unit - -module M (Cb : SigCb) : sig - - (** Open the dot file in the canvas. - * @raise Error if either the image or the graph fail to build *) - val open_dot_file : Cb.t_env -> GnoCanvas.canvas -> - ?dot_cmd:string -> string -> t_graph - - (** it is very important to not using the graph anymore after calling [clear] *) - val clear : GnoCanvas.canvas -> t_graph -> unit -end diff --git a/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_select.ml b/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_select.ml deleted file mode 100755 index 2826177c0b..0000000000 --- a/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_select.ml +++ /dev/null @@ -1,320 +0,0 @@ -(**************************************************************************) -(* *) -(* ViewGraph: a library to interact with graphs in ocaml and lablgtk2 *) -(* *) -(* Copyright (C) 2008 - Anne Pacalet *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** This module can be used to add some selection feature to [ViewGraph]. - * see [show_help] for more details. *) - -(** To manage the lists of neighbours of the selected node. - * The type [t] is made of a boolean [b] and 3 lists [(l1, l2, l3)]. - * [b] tells is [l1] is a list of predecessors (vs. successors). - * [l3] has the same 'kind' than [l1], and [l2] the other. - * [l1] cannot be empty, except if the 3 lists are empty. - * The first node of [l1] is the currently selected neighbour. - * When we go to the next one, [n] is removed and appended to [l3] tail. - * If [l1] is then empty, [l2] becomes the first list, and [b] is changed. *) -module CircLists = struct - type t_elem = ViewGraph_core.t_node - type t_lists = t_elem list * t_elem list * t_elem list - type t = bool * t_lists - - let mk (l1, l2) = match l1, l2 with - | [], [] -> true, ([], [], []) - | [], l2 -> false, (l2, [], []) - | l1, l2 -> true, (l1, l2, []) - - let current_node lists = match lists with - | _, ( [] , _, _) -> None - | b, (n::_, _, _) -> Some (b, n) - - let go_next lists = - let lists = match lists with - | _, ([], [], []) -> lists - | _, ([], _, _) -> - assert false (* l1 cannot be empty, except if every lists are *) - | b, (n::[], [], l3) -> b, (l3 @ [n], [], []) - | b, (n::[], l2, l3) -> not b, (l2, l3 @ [n], []) - | b, (n::l1, l2, l3) -> b, (l1, l2, l3 @ [n]) - in lists - - let goto_n ((_, (l1, l2, l3)) as lists) n = - let max = List.length l1 + List.length l2 + List.length l3 in - let rec find nb_iter lists = - match current_node lists with - | None -> raise Not_found - | Some (_, cur_n) -> - if cur_n = n then lists - else if nb_iter >= 0 then - find (nb_iter - 1) (go_next lists) - else raise Not_found - in find max lists - -end - -type t_options = { - sel_1_color : string; - sel_2_color : string; - center_node_when_selected :bool; -} - -let default_options = { - sel_1_color = "red"; - sel_2_color = "green"; - center_node_when_selected = true; -} - -(** Some widgets, useful for the selection. *) -type t_widgets = { - canvas : GnoCanvas.canvas; - sel_1_txt : GMisc.label; - sel_edge_txt : GMisc.label; - sel_2_txt : GMisc.label; -} - -type t_state = { - w : t_widgets; - opt : t_options; - mutable graph : ViewGraph_core.t_graph option ; - mutable ppu : float ; - mutable selected : ViewGraph_core.t_node option ; - mutable neighbours : CircLists.t option; - mutable gui_sel : (ViewGraph_core.t_gtk_obj option) array; -} - -type t_env = t_state - -(* horrible zoom : probably to be changed ! *) -let change_zoom state delta = - state.ppu <- state.ppu +. delta; - state.w.canvas#set_pixels_per_unit state.ppu - -let center_selected_node state = - match state.selected with - | None -> () - | Some n -> match ViewGraph_core.get_coord n with - | None -> () - | Some ((x1, y1), (x2, y2)) -> - let canvas = state.w.canvas in - let x = x1 +. (x2 -. x1) /. 2. in - let y = y1 +. (y2 -. y1) /. 2. in - (* Format.printf "want to see = %f x %f@." x y; *) - let w = canvas#hadjustment#page_size in - let h = canvas#vadjustment#page_size in - (* Format.printf "page_size = %f x %f@." w h; *) - let sx = x -. (w /. 2.) in - let sy = y -. (h /. 2.) in - (* Format.printf "scroll to = %f x %f (world) @." sx sy; *) - let sx, sy = canvas#w2c ~wx:sx ~wy:sy in - (* this is to handle zoom factor *) - (* Format.printf "scroll to = %d x %d (canvas) @." sx sy; *) - canvas#scroll_to ~x:sx ~y:sy - -let key_press state ev = - let canvas = state.w.canvas in - let (x, y) = canvas#get_scroll_offsets in - match GdkEvent.Key.keyval ev with - | k when k = GdkKeysyms._Up -> canvas#scroll_to ~x ~y:(y-20) ; true - | k when k = GdkKeysyms._Down -> canvas#scroll_to ~x ~y:(y+20) ; true - | k when k = GdkKeysyms._Left -> canvas#scroll_to ~x:(x-10) ~y ; true - | k when k = GdkKeysyms._Right -> canvas#scroll_to ~x:(x+10) ~y ; true - | k when k = GdkKeysyms._Page_Down -> change_zoom state 0.1; true - | k when k = GdkKeysyms._Page_Up -> change_zoom state (-0.1); true - | k when k = GdkKeysyms._Home -> center_selected_node state; true - | _ -> false - -let init options (canvas : GnoCanvas.canvas) pack_txt = - let _ = GMisc.label ~text:"Selected : " ~packing:pack_txt () in - let sel_1_txt = GMisc.label ~packing:pack_txt () in - let sel_edge_txt = GMisc.label ~packing:pack_txt () in - let sel_2_txt = GMisc.label ~packing:pack_txt () in - let w = { canvas = canvas; - sel_1_txt = sel_1_txt; sel_edge_txt = sel_edge_txt; - sel_2_txt = sel_2_txt } in - let state = - { w = w; opt = options; gui_sel = [| None; None |] ; - graph = None ; ppu = 1.; selected = None; neighbours = None } in - let _ = canvas#event#connect#after#key_press ~callback:(key_press state) in - state - -let sel_1_bitmap () = Gdk.Bitmap.create_from_data ~width:2 ~height:2 "\002\001" -let sel_2_bitmap () = Gdk.Bitmap.create_from_data ~width:2 ~height:2 "\002\001" - -(* we have to put some color on item in order to be able to get their events, - * so let's cheat and add a bitmap with 0 every where... *) -let no_bitmap () = Gdk.Bitmap.create_from_data ~width:1 ~height:1 "\000" - - -let move_selection state n_opt1 n_opt2 = - let set_props o col bitmap = match o with None -> () - | Some o -> o#set [ `FILL_COLOR col ; `FILL_STIPPLE bitmap] - in - let n_obj n_opt = match n_opt with - | None -> None - | Some n -> ViewGraph_core.get_obj n - in - let obj1 = n_obj n_opt1 in - let obj2 = n_obj n_opt2 in - let reset_old i = set_props state.gui_sel.(i) "black" (no_bitmap()) in - reset_old 0; reset_old 1; - state.gui_sel.(0) <- obj1; state.gui_sel.(1) <- obj2; - set_props obj1 state.opt.sel_1_color (sel_1_bitmap()) ; - set_props obj2 state.opt.sel_2_color (sel_2_bitmap()) - -let show_selection state = - let n_opt, txt1, txt2, txt3 = match state.selected with - | None -> None, "(none)", "", "" - | Some n -> - let txt1 = ViewGraph_core.get_id n in - let n_opt, txt2, txt3 = match state.neighbours with - | None -> None, "", "" - | Some info -> - match CircLists.current_node info with - | None -> None, " --- ", "(none)" - | Some (pred_first, n) -> - let txt2 = if pred_first then " <-- " else " --> " in - Some n, txt2, ViewGraph_core.get_id n - in n_opt, txt1, txt2, txt3 - in - state.w.sel_1_txt#set_text txt1; - state.w.sel_edge_txt#set_text txt2; - state.w.sel_2_txt#set_text txt3; - move_selection state state.selected n_opt; - if state.opt.center_node_when_selected then - center_selected_node state - -let select_node state n_opt = - state.selected <- n_opt; - state.neighbours <- None; - show_selection state - -let select_neighbour state = - match state.graph with None -> () - | Some graph -> - match state.selected with None -> () - | Some n -> - let new_info = - match state.neighbours with - | None -> - let neighbours = ViewGraph_core.get_neighbours graph n in - CircLists.mk neighbours - | Some info -> CircLists.go_next info - in - state.neighbours <- Some (new_info); - show_selection state - -let goto_neighbour state = - match state.graph with None -> () - | Some graph -> - match state.neighbours with - | None -> () - | Some info -> match CircLists.current_node info with - | None -> () - | Some (_, n) -> - match state.selected with - | None -> - (* neighbours without selected node ? Impossible... *) - assert false - | Some old_n -> - state.selected <- Some n; - let neighbours = ViewGraph_core.get_neighbours graph n in - let neighbours = CircLists.mk neighbours in - let neighbours = CircLists.goto_n neighbours old_n in - state.neighbours <- Some neighbours; - show_selection state - -let clear_state state = - state.graph <- None; - state.ppu <- 1.; - state.selected <- None; - state.neighbours <- None; - state.gui_sel <- [| None; None |]; - show_selection state - -module SelectCb (UserCb : ViewGraph_core.SigCb) = struct - type t_env = UserCb.t_env * t_state - - let button_one_press_on_graph (u_env, state) = - select_node state None; - UserCb.button_one_press_on_graph (u_env) - - let button_two_press_on_graph (u_env, state) = - select_neighbour state; - UserCb.button_two_press_on_graph (u_env) - - let button_three_press_on_graph (u_env, state) = - goto_neighbour state; - UserCb.button_three_press_on_graph (u_env) - - let button_one_press_on_node (u_env, state) n = - select_node state (Some n); - UserCb.button_one_press_on_node (u_env) n - - let button_two_press_on_node ((u_env, _state) as env) n = - button_two_press_on_graph env; - UserCb.button_two_press_on_node (u_env) n - - let button_three_press_on_node ((u_env, _state) as env) n = - button_three_press_on_graph env; - UserCb.button_three_press_on_node (u_env) n - - let enter_node (u_env, _state) n = - begin match ViewGraph_core.get_obj n with None -> assert false - | Some n_item -> n_item#set [`OUTLINE_COLOR "red"] - end; - UserCb.enter_node (u_env) n - - let leave_node (u_env, _state) n = - begin match ViewGraph_core.get_obj n with None -> assert false - | Some n_item -> n_item#set [`NO_OUTLINE_COLOR] - end; - UserCb.leave_node (u_env) n -end - -module VG (UserCb : ViewGraph_core.SigCb) = struct - module Cb = SelectCb (UserCb) - module V = ViewGraph_core.M (Cb) - - let open_dot_file u_env state ?(dot_cmd="dot") file = - let canvas = state.w.canvas in - (match state.graph with None -> () | Some g -> V.clear canvas g); - let _ = clear_state state in - let env = (u_env, state) in - let graph = V.open_dot_file env canvas ~dot_cmd file in - state.graph <- Some graph; - graph - -end - -let show_help () = - GToolbox.message_box ~title:"Help" - "Selection :\n - - use the mouse button-1 to select a node : \ - it should turn red and (optionally) be centered. - - when a node is selected, button-2 selects one of its neighbour : \ - it should turn green. - - using button-2 again selects the next neighbour, and so on. - - when a neighbour is selected, button-3 makes it the selected node, - and the previously selected node become the selected neighbour, - so pressing the button-3 again brings back to it. - - button-1 outside a node deselect everything. - Have a look at the bottom line to see the selection. - - Moving arround :\n - - the scrollbars, as well as the arrows, can be used to move in the window. - - the Page-Up and Page-Down keys can be used to zoom \ - (ugly zoom at the moment !). - - the Home key centers the selected node in the window. - " diff --git a/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_select.mli b/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_select.mli deleted file mode 100755 index 51c234d16f..0000000000 --- a/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_select.mli +++ /dev/null @@ -1,49 +0,0 @@ -(**************************************************************************) -(* *) -(* ViewGraph: a library to interact with graphs in ocaml and lablgtk2 *) -(* *) -(* Copyright (C) 2008 - Anne Pacalet *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** This module can be used to add some selection feature to {!ViewGraph}. - * See {!ViewGraph_test} to see how to use it. - * *) - -(** object returned by [init] and used by [open_dot_file] *) -type t_env - -type t_options = { - sel_1_color : string; (** color of the selected node (default "red") *) - sel_2_color : string; (** color of the selected neighbour (default "green") *) - center_node_when_selected :bool; - (** automatically center a node when it is selected (default true) *) -} - -(** some default values for the options. - * It is a good idea to use it and overwrite the one that have to be changed, - * just in case some more options appear *) -val default_options : t_options - -(** should be called only once because it creates widgets. - * The packing function is the place to put the messages about selection. -*) -val init : t_options -> GnoCanvas.canvas -> (GObj.widget -> unit) -> t_env - -(** functor to instanciate with your callbacks *) -module VG (UserCb : ViewGraph_core.SigCb) : sig - val open_dot_file : UserCb.t_env -> t_env -> - ?dot_cmd:string -> string -> ViewGraph_core.t_graph -end - -(** Popup a message window with some help. *) -val show_help : unit -> unit diff --git a/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_test.ml b/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_test.ml deleted file mode 100755 index ab0c9cd2f8..0000000000 --- a/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_test.ml +++ /dev/null @@ -1,180 +0,0 @@ -(**************************************************************************) -(* *) -(* ViewGraph: a library to interact with graphs in ocaml and lablgtk2 *) -(* *) -(* Copyright (C) 2008 - Anne Pacalet *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** This is only a test file to show how to use - * [ViewGraph] and [ViewGraph_select]. - * Just compile and test... (click on the Help button to know how to use it). -*) - -(* Nice tutorial at : - * http://plus.kaist.ac.kr/~shoh/ocaml/lablgtk2/lablgtk2-tutorial/book1.html - * See also examples in : - * /usr/share/doc/lablgtk-2.6.0/examples/canvas/ -*) - -(** To test to callbacks : only print messages *) -module CbTest = struct - (** need nothing for this test, but usually contains at least the graph... *) - type t_env = unit - - let button_one_press_on_graph _env = - Format.printf "[CbTest] button_one_press_on_graph @." - - let button_two_press_on_graph _env = - Format.printf "[CbTest] button_two_press_on_graph @." - - let button_three_press_on_graph _env = - Format.printf "[CbTest] button_three_press_on_graph @." - - let button_one_press_on_node _env n = - Format.printf "[CbTest] button_one_press_on_node %s@." - (ViewGraph.get_id n) - - let button_two_press_on_node _env n = - Format.printf "[CbTest] button_two_press_on_node %s@." - (ViewGraph.get_id n) - - let button_three_press_on_node _env n = - Format.printf "[CbTest] button_three_press_on_node %s@." - (ViewGraph.get_id n) - - let enter_node _env n = - Format.printf "[CbTest] enter_node %s@." (ViewGraph.get_id n) - - let leave_node _env n = - Format.printf "[CbTest] leave_node %s@." (ViewGraph.get_id n) -end - -module V = ViewGraph_select.VG (CbTest) - -let open_file select_init_env file = - try - let env = () in - let _graph = V.open_dot_file env select_init_env file in - () - with ViewGraph.DotError cmd -> - GToolbox.message_box "Error" - (Printf.sprintf - "%s failed\nDidn't succed to build graph for %s\nSorry !" cmd file) - -let open_cb select_init_env () = - match GToolbox.select_file ~title:"Select a dot file" () with - | None -> () - | Some filename -> open_file select_init_env filename - -let help_act_cb _ac = ViewGraph_select.show_help () - -let error_act_cb ac = - GToolbox.message_box "Error" - (Printf.sprintf "Action '%s' activated : no callback ?\n" ac#name) - -let quit_cb () = GMain.Main.quit () - -let quit_act_cb _a = quit_cb () - -let menu_desc = "\ - \ -

\ - \ - \ - \ - \ - \ - \ - \ - \ - " - -let create_menu () = - let ui_m = GAction.ui_manager () in - let actions = GAction.action_group ~name:"Actions" () in - GAction.add_actions actions [ - GAction.add_action "FileMenu" ~label:"File" ; - GAction.add_action "Open" ~label:"Open" ~accel:"o" - (* callback connected later *); - GAction.add_action "Quit" ~label:"Quit" ~accel:"q" ~callback:quit_act_cb; - GAction.add_action "HelpMenu" ~label:"Help" ; - GAction.add_action "Help" ~label:"Help" ~accel:"h" ~callback:help_act_cb; - ]; - ui_m#insert_action_group actions 0 ; - let _ = ui_m#add_ui_from_string menu_desc in - - let help_item = ui_m#get_widget "/MenuBar/HelpMenu" in - let help_item = GtkMenu.MenuItem.cast help_item#as_widget in - GtkMenu.MenuItem.set_right_justified help_item true ; - ui_m - - (* -let create_menu2 packing open_cb = - let file_item = GMenu.menu_item ~label:"File" ~packing () in - let file_menu = GMenu.menu () in - let item = GMenu.menu_item ~label:"Open" ~packing:file_menu#append () in - let _ = item#connect#activate ~callback:open_cb in - let item = GMenu.menu_item ~label:"Quit" ~packing:file_menu#append () in - let _ = item#connect#activate ~callback:GMain.Main.quit in - let _ = file_item#set_submenu file_menu in - let help_item = GMenu.menu_item ~label:"Help" - ~right_justified:true ~packing () in - let help_menu = GMenu.menu () in - let item = GMenu.menu_item ~label:"Help about ViewGraph" - ~packing:help_menu#append () in - let _ = item#connect#activate ~callback:ViewGraph_select.show_help in - let _ = help_item#set_submenu help_menu in - () - *) - - -let create_gui () = - let window = GWindow.window ~title:"ViewGraph" - ~allow_shrink:true ~allow_grow:true () in - let vbox = GPack.vbox ~border_width:4 ~spacing:4 ~packing:window#add () in - - let ui_m = create_menu () in - window#add_accel_group ui_m#get_accel_group ; - vbox#pack ~expand:false (ui_m#get_widget "/MenuBar") ; - - let frame = GBin.frame ~label:"How to use this :" ~packing:vbox#pack () in - let _ = GMisc.label ~text:"\n Open the Help window to know more...\n" - ~packing:frame#add () in - - let pack = vbox#pack ~expand:true ~fill:true in - let canvas = ViewGraph_utils.create_scrolled_canvas pack in - - let hbox = GPack.hbox ~spacing:4 ~packing:vbox#pack () in - let select_init_env = - ViewGraph_select.init ViewGraph_select.default_options - canvas (hbox#pack ~expand:true ~fill:true) in - - let actions = match ui_m#get_action_groups with - | a::[] -> a | _ -> assert false - in - let open_action = actions#get_action "Open" in - let _ = open_action#connect#activate ~callback:(open_cb select_init_env) in - - let _ = window#connect#destroy ~callback:quit_cb in - let _ = window#show () in - (canvas, select_init_env) - -let main () = - let _ = GMain.Main.init () in - let canvas, select_init_env = create_gui () in - if Array.length Sys.argv = 2 then - open_file select_init_env Sys.argv.(1); - GMain.Main.main () - -let _ = Printexc.print main () - diff --git a/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_utils.ml b/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_utils.ml deleted file mode 100755 index 65c3a4574d..0000000000 --- a/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_utils.ml +++ /dev/null @@ -1,57 +0,0 @@ -(**************************************************************************) -(* *) -(* ViewGraph: a library to interact with graphs in ocaml and lablgtk2 *) -(* *) -(* Copyright (C) 2008 - Anne Pacalet *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** This file provide useful function to build windows to put the graph *) - -let create_scrolled_canvas packing = - let frame = GBin.frame ~shadow_type:`IN () in - let canvas = - let aa = false (* anti-aliasing *) in - GnoCanvas.canvas ~aa ~width:600 ~height:400 ~packing:frame#add () - in - let _ = canvas#set_center_scroll_region true in - (* if the graph is too big, show its center *) - let table = GPack.table ~packing - ~rows:2 ~columns:2 ~row_spacings:4 ~col_spacings:4 () in - let _ = table#attach ~left:0 ~right:1 ~top:0 ~bottom:1 - ~expand:`BOTH ~fill:`BOTH ~shrink:`BOTH ~xpadding:0 ~ypadding:0 - frame#coerce in - let w = GRange.scrollbar `HORIZONTAL ~adjustment:canvas#hadjustment () in - let _ = table#attach ~left:0 ~right:1 ~top:1 ~bottom:2 - ~expand:`X ~fill:`BOTH ~shrink:`X ~xpadding:0 ~ypadding:0 - w#coerce in - let w = GRange.scrollbar `VERTICAL ~adjustment:canvas#vadjustment () in - let _ = table#attach ~left:1 ~right:2 ~top:0 ~bottom:1 - ~expand:`Y ~fill:`BOTH ~shrink:`Y ~xpadding:0 ~ypadding:0 - w#coerce in - canvas - -let create_graph_win title = - let window = GWindow.window ~title - ~allow_shrink:true ~allow_grow:true () in - let vbox = GPack.vbox ~border_width:4 ~spacing:4 ~packing:window#add () in - let help_but = GButton.button ~label:"Help" - ~packing:(vbox#pack ~expand:false ~fill:true) () in - let _ = help_but#connect#clicked ~callback:ViewGraph_select.show_help in - let canvas = create_scrolled_canvas (vbox#pack ~expand:true ~fill:true) in - let hbox = GPack.hbox ~spacing:4 ~packing:vbox#pack () in - let select_init_env = - ViewGraph_select.init ViewGraph_select.default_options - canvas (hbox#pack ~expand:true ~fill:true) in - window#show (); - select_init_env - diff --git a/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_utils.mli b/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_utils.mli deleted file mode 100755 index 73f92adacb..0000000000 --- a/jscomp/build_tests/ocamlgraph/view_graph/viewGraph_utils.mli +++ /dev/null @@ -1,23 +0,0 @@ -(**************************************************************************) -(* *) -(* ViewGraph: a library to interact with graphs in ocaml and lablgtk2 *) -(* *) -(* Copyright (C) 2008 - Anne Pacalet *) -(* *) -(* This software is free software; you can redistribute it and/or *) -(* modify it under the terms of the GNU Library General Public *) -(* License version 2, with the special exception on linking *) -(* described in file LICENSE. *) -(* *) -(* This software is distributed in the hope that it will be useful, *) -(* but WITHOUT ANY WARRANTY; without even the implied warranty of *) -(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *) -(* *) -(**************************************************************************) - -(** This file provide useful function to build windows to put the graph *) - -val create_scrolled_canvas : (GObj.widget -> unit) -> GnoCanvas.canvas - -val create_graph_win : string -> ViewGraph_select.t_env - diff --git a/jscomp/build_tests/ocamlgraph/www/.cvsignore b/jscomp/build_tests/ocamlgraph/www/.cvsignore deleted file mode 100755 index 81e62b9c54..0000000000 --- a/jscomp/build_tests/ocamlgraph/www/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -*.fr.html -*.en.html -version.prehtml diff --git a/jscomp/build_tests/ocamlgraph/www/index.prehtml b/jscomp/build_tests/ocamlgraph/www/index.prehtml deleted file mode 100755 index 7c071656a3..0000000000 --- a/jscomp/build_tests/ocamlgraph/www/index.prehtml +++ /dev/null @@ -1,240 +0,0 @@ -<#def thisfile>index -<#def top>../index - - - - -<#iso> - -ocamlgraph: <#fr>une bibliothèque de graphes pour Objective -Caml</#fr><#en>an ocaml graph library</#en> - - - - - - -

OCamlgraph

- -<#fr>OCamlgraph est une bibliothèque de graphes pour -
Objective Caml. -Elle présente trois aspects différents: -
    -
  • - Elle fournit un module Graph.Pack - regroupant une structure de données pour des graphes et de nombreux - opérations et algorithmes sur ces graphes. -

    - Il est conseillé de jeter un oeil à ce module en premier lieu pour - comprendre le genre de choses fournies par OCamlgraph. Voir aussi le - fichier demo.ml. - -

  • Ensuite, OCamlgraph fournit plusieurs autres structrures de - données pour les graphes, pour ceux qui ne se satisferaient pas de - la précédente. Certaines sont persistentes et d'autre impératives. Certaines correspondent - à des graphes orientés et d'autres à des graphes - non-orientés. Certaines étiquettent les noeuds, d'autres les arêtes, - d'autres les deux. etc. -

    - L'interface Sig décrit les signatures des - structures de données pour les graphes - et les modules Persistent et - Imperative fournissent des - implantations. -

    - Ces implantations sont écrites sous la forme de foncteurs : on - spécifie le type des sommets, des arêtes, de leurs labels, etc. et - on récupère alors une structure de données. - -

    - -

  • Enfin, OCamlgraph fournit plusieurs opérations et algorithmes - classiques sur les graphes. Ils sont également écrits comme des - foncteurs, c'est-à-dire indépendamment de la structure de données - pour les graphes. En conséquence, vous pouvez définir votre propre - structure de données et réutiliser tous les algorithmes de cette - bibliothèque -- il suffit de fournir quelques opérations telles que - l'itération sur tous les sommets, sur tous les successeurs d'un - noeud, etc. Voir par exmple le module Path. - -
- - -<#en> -OCamlgraph is a graph library for Objective Caml. -Its contribution is three-fold: -
    -
  • It provides an easy-to-use graph data structure together with several - operations and algorithms over graphs, - in Graph.Pack. - It is a reasonably efficient imperative data structure for directed graphs - with vertices and edges labeled with integers. -

    - Have a look at this module first in order to get an overview of what - this library provides. See also demo.ml. - -

  • Then OCamlgraph provides several other graph implementations for those - not satisfied with the one above. Some are persistent (imutable) and other - imperative (mutable). Some are - directed and other are not. - Some have labels for vertices, or labels for edges, or both. - Some have abstract types for vertices. etc. -

    - See interface Sig for the graph - signatures and modules Persistent and - Imperative for the implementations. -

    - These implementations are written as functors: you give the types of - vertices labels, edge labels, etc. and you get the data structure as a - result. - -

    - -

  • Finally, OCamlgraph provides several classic operations and algorithms - over graphs. They are also written as functors i.e. independently of the - data structure for graphs. One consequence is that you can define your own - data structure for graphs and yet re-use all the algorithms from this - library -- you only need to provide a few operations such as iterating over - all vertices, over the successors of a vertex, etc. - See module Path for an example. - -
- - - -

Documentation

- -<#fr>Parcourir l'<#en>Browse the API. -<#fr>Note : Tous les modules sont regroupés à l'intérieur d'un unique module -Graph. -<#en>Note: all modules are packaged into a single module Graph. - -

- -FAQ - -

-<#fr>Articles présentant OCamlgraph : -<#en>Papers describing OCamlgraph: -

- -

- -<#fr>Exemples de code :<#en>Code Examples: -

- -

Distribution

- -<#def LICENSE>LICENSE - -<#fr> -OCamlgraph est distribué librement, sous la licence GNU Library -General Public License version 2, avec une exception concernant -l'édition de lien décrite dans le fichier <#LICENSE>.
-Il est disponible sous forme de sources : - -Vous pouvez accéder à la zone de téléchargement directement. -Voici les derniers changements. - -<#en> -OCamlgraph is freely available, under the terms of the GNU Library -General Public License version 2, with the special exception on linking -described in file <#LICENSE>. -
-It is available as a source tarball: - -

-You can access the download zone directly. -Here are the recent CHANGES. - - -

- -<#fr>Vous pouvez également accéder en lecture à la version de - développement d'OCamlgraph sur github -<#en>Alternatively, you can access the current development version - on github: -

-  https://github.com/backtracking/ocamlgraph
-
- -

<#fr>Crédits<#en>Credits

- -<#fr>Auteurs -<#en>Authors - - -

- -<#fr>Contributeurs extérieurs : -<#en>External contributors: -

- -

-


- -<#drapeaux> - - - diff --git a/jscomp/build_tests/ocamlgraph/www/macros.prehtml b/jscomp/build_tests/ocamlgraph/www/macros.prehtml deleted file mode 100755 index d64b664c41..0000000000 --- a/jscomp/build_tests/ocamlgraph/www/macros.prehtml +++ /dev/null @@ -1,16 +0,0 @@ - -<#def absolute>http://www.lri.fr/~filliatr - -<#def iso> - - - - -<#def drapfr>Français -<#def drapen>American - -<#def drapeaux> -<#fr><#drapen> -<#en><#drapfr> - - diff --git a/jscomp/build_tests/package-lock.json b/jscomp/build_tests/package-lock.json deleted file mode 100644 index 48e341a095..0000000000 --- a/jscomp/build_tests/package-lock.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "lockfileVersion": 1 -} diff --git a/jscomp/build_tests/package.json b/jscomp/build_tests/package.json deleted file mode 100644 index 18a1e415e5..0000000000 --- a/jscomp/build_tests/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "dependencies": {} -} diff --git a/jscomp/build_tests/pinned/.gitignore b/jscomp/build_tests/pinned/.gitignore deleted file mode 100644 index 1dd11f93b0..0000000000 --- a/jscomp/build_tests/pinned/.gitignore +++ /dev/null @@ -1,27 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -.bsb.lock -/node_modules/ diff --git a/jscomp/build_tests/pinned/README.md b/jscomp/build_tests/pinned/README.md deleted file mode 100644 index b20ab1bade..0000000000 --- a/jscomp/build_tests/pinned/README.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - diff --git a/jscomp/build_tests/pinned/bsconfig.json b/jscomp/build_tests/pinned/bsconfig.json deleted file mode 100644 index 44abe1fb2d..0000000000 --- a/jscomp/build_tests/pinned/bsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "warnerror", - "version": "0.1.0", - "sources": { - "dir": "src", - "subdirs": true - }, - "bs-dependencies": [ - "test" - ] -} \ No newline at end of file diff --git a/jscomp/build_tests/pinned/input.js b/jscomp/build_tests/pinned/input.js deleted file mode 100644 index ac97f6a6a2..0000000000 --- a/jscomp/build_tests/pinned/input.js +++ /dev/null @@ -1,28 +0,0 @@ -var cp = require("child_process"); -var assert = require("assert"); -var fs = require("fs"); -function checkSpawnOut(out) { - if (out.error) { - throw out.error; - } - if (out.status !== 0) { - assert.fail(out.stderr + "\n" + out.stdout); - } -} -var out = cp.spawnSync(`npx bsb -make-world`, { - encoding: "utf-8", - shell: true, -}); -checkSpawnOut(out); - -// In pinned mode, its dependency has warnings -assert.ok(out.stdout.split('\n').some(x=>x.includes('Warning 32: unused value'))) - -var out2 = cp.spawnSync(`npx bsb -- -C node_modules/test/lib/bs/ -t targets`, { - encoding: "utf-8", - shell: true, -}); -checkSpawnOut(out2); - -// In pinned mode, generators are running -assert.ok(out2.stdout.split('\n').some(x=>x.endsWith('test.ml'))) diff --git a/jscomp/build_tests/pinned/node_modules/test/.gitignore b/jscomp/build_tests/pinned/node_modules/test/.gitignore deleted file mode 100644 index 1dd11f93b0..0000000000 --- a/jscomp/build_tests/pinned/node_modules/test/.gitignore +++ /dev/null @@ -1,27 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -.bsb.lock -/node_modules/ diff --git a/jscomp/build_tests/pinned/node_modules/test/README.md b/jscomp/build_tests/pinned/node_modules/test/README.md deleted file mode 100644 index b20ab1bade..0000000000 --- a/jscomp/build_tests/pinned/node_modules/test/README.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - diff --git a/jscomp/build_tests/pinned/node_modules/test/bsconfig.json b/jscomp/build_tests/pinned/node_modules/test/bsconfig.json deleted file mode 100644 index 943c0a8269..0000000000 --- a/jscomp/build_tests/pinned/node_modules/test/bsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "test", - "version": "0.1.0", - "sources": [ - { - "dir": "src", - "generators": [ - { - "name": "ml_cmj_cmi", - "edge": [ - "test.ml", ":", "test.cpp.ml" - ] - } - ] - } - - ], - "generators": [ - { - "name" : "ml_cmj_cmi", - "command": "sed 's/OCAML/3/' $in > $out" - } - ], -} diff --git a/jscomp/build_tests/pinned/node_modules/test/package.json b/jscomp/build_tests/pinned/node_modules/test/package.json deleted file mode 100644 index d1beeac7ad..0000000000 --- a/jscomp/build_tests/pinned/node_modules/test/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "test", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^8.4.0-dev.1" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/pinned/node_modules/test/src/demo.ml b/jscomp/build_tests/pinned/node_modules/test/src/demo.ml deleted file mode 100644 index 6636da36a5..0000000000 --- a/jscomp/build_tests/pinned/node_modules/test/src/demo.ml +++ /dev/null @@ -1,5 +0,0 @@ - - - -let a = 1 -let a = 2 \ No newline at end of file diff --git a/jscomp/build_tests/pinned/node_modules/test/src/test.cpp.ml b/jscomp/build_tests/pinned/node_modules/test/src/test.cpp.ml deleted file mode 100644 index 9cce515143..0000000000 --- a/jscomp/build_tests/pinned/node_modules/test/src/test.cpp.ml +++ /dev/null @@ -1,10 +0,0 @@ - -(* -#define FS_VAL(name,ty) external name : ty = "" [@@bs.module "fs"] - - -FS_VAL(readdirSync, string -> string array) - *) - - - let ocaml = OCAML \ No newline at end of file diff --git a/jscomp/build_tests/pinned/package.json b/jscomp/build_tests/pinned/package.json deleted file mode 100644 index a161ec3762..0000000000 --- a/jscomp/build_tests/pinned/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "warnerror", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^8.4.0-dev.1" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/pinned/src/hey.ml b/jscomp/build_tests/pinned/src/hey.ml deleted file mode 100644 index 923b77316d..0000000000 --- a/jscomp/build_tests/pinned/src/hey.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let () = Js.log "Hello, BuckleScript" \ No newline at end of file diff --git a/jscomp/build_tests/post-build/.gitignore b/jscomp/build_tests/post-build/.gitignore deleted file mode 100644 index 1c2bb277a5..0000000000 --- a/jscomp/build_tests/post-build/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -.bsb.lock \ No newline at end of file diff --git a/jscomp/build_tests/post-build/README.md b/jscomp/build_tests/post-build/README.md deleted file mode 100644 index b20ab1bade..0000000000 --- a/jscomp/build_tests/post-build/README.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - diff --git a/jscomp/build_tests/post-build/bsconfig.json b/jscomp/build_tests/post-build/bsconfig.json deleted file mode 100644 index a5bac3ab6f..0000000000 --- a/jscomp/build_tests/post-build/bsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "post-build", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - }, - "js-post-build": {"cmd":"cat"}, - "warnings": { - "error" : "+101" - } -} diff --git a/jscomp/build_tests/post-build/input.js b/jscomp/build_tests/post-build/input.js deleted file mode 100644 index f7c9fe083a..0000000000 --- a/jscomp/build_tests/post-build/input.js +++ /dev/null @@ -1,8 +0,0 @@ -var child_process = require('child_process') -var assert = require('assert') - -var out = child_process.spawnSync(`bsb`,{encoding : 'utf8'}) - -if(out.status !== 0 ){ - assert.fail(out.stdout + out.stderr) -} \ No newline at end of file diff --git a/jscomp/build_tests/post-build/package.json b/jscomp/build_tests/post-build/package.json deleted file mode 100644 index 8479bb9507..0000000000 --- a/jscomp/build_tests/post-build/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "post-build", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^8.3.0-dev.2" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/post-build/src/demo.ml b/jscomp/build_tests/post-build/src/demo.ml deleted file mode 100644 index 923b77316d..0000000000 --- a/jscomp/build_tests/post-build/src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let () = Js.log "Hello, BuckleScript" \ No newline at end of file diff --git a/jscomp/build_tests/post-build/src/hello.ml b/jscomp/build_tests/post-build/src/hello.ml deleted file mode 100644 index b7660e86d3..0000000000 --- a/jscomp/build_tests/post-build/src/hello.ml +++ /dev/null @@ -1 +0,0 @@ -let a = 3 \ No newline at end of file diff --git a/jscomp/build_tests/priv/.gitignore b/jscomp/build_tests/priv/.gitignore deleted file mode 100644 index ebd4402356..0000000000 --- a/jscomp/build_tests/priv/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -*.js \ No newline at end of file diff --git a/jscomp/build_tests/priv/README.md b/jscomp/build_tests/priv/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/priv/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/priv/bsconfig.json b/jscomp/build_tests/priv/bsconfig.json deleted file mode 100644 index 6a95c12c8c..0000000000 --- a/jscomp/build_tests/priv/bsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "namespace", - "version": "0.1.0", - "sources": "src", - "namespace": true, - "package-specs":{ - "module": "commonjs", - "in-source": true - }, - "bs-dependencies": [ - "liba","libb" - ] - -} \ No newline at end of file diff --git a/jscomp/build_tests/priv/input.js b/jscomp/build_tests/priv/input.js deleted file mode 100644 index b87e6b4c79..0000000000 --- a/jscomp/build_tests/priv/input.js +++ /dev/null @@ -1,13 +0,0 @@ - - -var child_process = require('child_process') - -var output = child_process.spawnSync( - `bsb -clean-world && bsb -make-world`, - {cwd:__dirname, shell: true, encoding : 'utf8'}) - - -var assert = require('assert') -assert.ok(output.stderr.match(/not an existing module/)) - - diff --git a/jscomp/build_tests/priv/node_modules/liba/.gitignore b/jscomp/build_tests/priv/node_modules/liba/.gitignore deleted file mode 100644 index 8f464d0527..0000000000 --- a/jscomp/build_tests/priv/node_modules/liba/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/priv/node_modules/liba/.vscode/tasks.json b/jscomp/build_tests/priv/node_modules/liba/.vscode/tasks.json deleted file mode 100644 index 6e049a1ad3..0000000000 --- a/jscomp/build_tests/priv/node_modules/liba/.vscode/tasks.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "version": "0.1.0", - "command": "npm", - "options": { - "cwd": "${workspaceRoot}" - }, - "isShellCommand": true, - "args": [ - "run", - "watch" - ], - "showOutput": "always", - "isBackground": true, - "problemMatcher": { - "fileLocation": "absolute", - "owner": "ocaml", - "watching": { - "activeOnStart": false, - "beginsPattern": ">>>> Start compiling", - "endsPattern": ">>>> Finish compiling" - }, - "pattern": [ - { - "regexp": "^File \"(.*)\", line (\\d+)(?:, characters (\\d+)-(\\d+))?:$", - "file": 1, - "line": 2, - "column": 3, - "endColumn": 4 - }, - { - "regexp": "^(?:(?:Parse\\s+)?(Warning|[Ee]rror)(?:\\s+\\d+)?:)?\\s+(.*)$", - "severity": 1, - "message": 2, - "loop": true - } - ] - } -} \ No newline at end of file diff --git a/jscomp/build_tests/priv/node_modules/liba/README.md b/jscomp/build_tests/priv/node_modules/liba/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/priv/node_modules/liba/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/priv/node_modules/liba/bsconfig.json b/jscomp/build_tests/priv/node_modules/liba/bsconfig.json deleted file mode 100644 index 2f6194b79c..0000000000 --- a/jscomp/build_tests/priv/node_modules/liba/bsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "liba", - "version": "0.1.0", - "sources": [ - { - "dir": "src", - "public" : ["dx","Demo"] - } - ], - "namespace": true -} \ No newline at end of file diff --git a/jscomp/build_tests/priv/node_modules/liba/package.json b/jscomp/build_tests/priv/node_modules/liba/package.json deleted file mode 100644 index 8169afc62c..0000000000 --- a/jscomp/build_tests/priv/node_modules/liba/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "liba", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.8.3" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/priv/node_modules/liba/src/demo.ml b/jscomp/build_tests/priv/node_modules/liba/src/demo.ml deleted file mode 100644 index 6ac6adb715..0000000000 --- a/jscomp/build_tests/priv/node_modules/liba/src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let v = 1 \ No newline at end of file diff --git a/jscomp/build_tests/priv/node_modules/liba/src/priv.ml b/jscomp/build_tests/priv/node_modules/liba/src/priv.ml deleted file mode 100644 index 54c50f7d95..0000000000 --- a/jscomp/build_tests/priv/node_modules/liba/src/priv.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let v = 3 diff --git a/jscomp/build_tests/priv/node_modules/libb/bsconfig.json b/jscomp/build_tests/priv/node_modules/libb/bsconfig.json deleted file mode 100644 index 7ef568fee4..0000000000 --- a/jscomp/build_tests/priv/node_modules/libb/bsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "libb", - "version": "0.1.0", - "sources": [ - { - "dir": "src" - - } - ] - } \ No newline at end of file diff --git a/jscomp/build_tests/priv/node_modules/libb/src/hello.ml b/jscomp/build_tests/priv/node_modules/libb/src/hello.ml deleted file mode 100644 index e6f602684b..0000000000 --- a/jscomp/build_tests/priv/node_modules/libb/src/hello.ml +++ /dev/null @@ -1 +0,0 @@ -let hello_dep = 32 \ No newline at end of file diff --git a/jscomp/build_tests/priv/node_modules/libb/src/libb_module.ml b/jscomp/build_tests/priv/node_modules/libb/src/libb_module.ml deleted file mode 100644 index b0e3215c04..0000000000 --- a/jscomp/build_tests/priv/node_modules/libb/src/libb_module.ml +++ /dev/null @@ -1 +0,0 @@ -let value =3 \ No newline at end of file diff --git a/jscomp/build_tests/priv/node_modules/libb/src/map.ml b/jscomp/build_tests/priv/node_modules/libb/src/map.ml deleted file mode 100644 index 811cb74761..0000000000 --- a/jscomp/build_tests/priv/node_modules/libb/src/map.ml +++ /dev/null @@ -1 +0,0 @@ -let value = 3 \ No newline at end of file diff --git a/jscomp/build_tests/priv/package.json b/jscomp/build_tests/priv/package.json deleted file mode 100644 index 9017b1bc9a..0000000000 --- a/jscomp/build_tests/priv/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "namespace", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.8.3" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/priv/src/demo.ml b/jscomp/build_tests/priv/src/demo.ml deleted file mode 100644 index d36860b19a..0000000000 --- a/jscomp/build_tests/priv/src/demo.ml +++ /dev/null @@ -1,11 +0,0 @@ - - -let v = - Liba.Demo.v - (* + Liba.Priv.v *) - -let () = - Js.log List.value; (* local > stdlib *) - Js.log Hello.src; (* local > libb *) - Js.log Map.value; (* dep > stdlib *) - Js.log Libb_module.value \ No newline at end of file diff --git a/jscomp/build_tests/priv/src/hello.ml b/jscomp/build_tests/priv/src/hello.ml deleted file mode 100644 index ac296aac58..0000000000 --- a/jscomp/build_tests/priv/src/hello.ml +++ /dev/null @@ -1 +0,0 @@ -let src = 3 \ No newline at end of file diff --git a/jscomp/build_tests/priv/src/list.ml b/jscomp/build_tests/priv/src/list.ml deleted file mode 100644 index 811cb74761..0000000000 --- a/jscomp/build_tests/priv/src/list.ml +++ /dev/null @@ -1 +0,0 @@ -let value = 3 \ No newline at end of file diff --git a/jscomp/build_tests/priv/src/main.ml b/jscomp/build_tests/priv/src/main.ml deleted file mode 100644 index ca9dcdeb32..0000000000 --- a/jscomp/build_tests/priv/src/main.ml +++ /dev/null @@ -1,2 +0,0 @@ - -let a = Demo.v \ No newline at end of file diff --git a/jscomp/build_tests/priv2/.gitignore b/jscomp/build_tests/priv2/.gitignore deleted file mode 100644 index 8f464d0527..0000000000 --- a/jscomp/build_tests/priv2/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/priv2/README.md b/jscomp/build_tests/priv2/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/priv2/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/priv2/bsconfig.json b/jscomp/build_tests/priv2/bsconfig.json deleted file mode 100644 index c1980a8a96..0000000000 --- a/jscomp/build_tests/priv2/bsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "namespace", - "version": "0.1.0", - "sources": "src", - "namespace": true, - "package-specs":{ - "module": "commonjs", - "in-source": true - }, - "bs-dependencies": [ - "liba" - ] - -} \ No newline at end of file diff --git a/jscomp/build_tests/priv2/input.js b/jscomp/build_tests/priv2/input.js deleted file mode 100644 index e84bda90c0..0000000000 --- a/jscomp/build_tests/priv2/input.js +++ /dev/null @@ -1,20 +0,0 @@ - - -var child_process = require('child_process') -var assert = require('assert') - -assert.throws( - () => { - child_process.execSync(`bsb -clean-world && bsb -make-world`, - { cwd: __dirname, encoding: 'utf8' }) - }, - (err) => { - if (err.stdout.match(/Unbound value Liba.Priv.v/) ||err.stdout.match(/Liba.Priv is an alias/)){ - // error message changed for 4.06 - return true - } - return false - } - -) - diff --git a/jscomp/build_tests/priv2/node_modules/liba/.gitignore b/jscomp/build_tests/priv2/node_modules/liba/.gitignore deleted file mode 100644 index 8f464d0527..0000000000 --- a/jscomp/build_tests/priv2/node_modules/liba/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/priv2/node_modules/liba/.vscode/tasks.json b/jscomp/build_tests/priv2/node_modules/liba/.vscode/tasks.json deleted file mode 100644 index 6e049a1ad3..0000000000 --- a/jscomp/build_tests/priv2/node_modules/liba/.vscode/tasks.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "version": "0.1.0", - "command": "npm", - "options": { - "cwd": "${workspaceRoot}" - }, - "isShellCommand": true, - "args": [ - "run", - "watch" - ], - "showOutput": "always", - "isBackground": true, - "problemMatcher": { - "fileLocation": "absolute", - "owner": "ocaml", - "watching": { - "activeOnStart": false, - "beginsPattern": ">>>> Start compiling", - "endsPattern": ">>>> Finish compiling" - }, - "pattern": [ - { - "regexp": "^File \"(.*)\", line (\\d+)(?:, characters (\\d+)-(\\d+))?:$", - "file": 1, - "line": 2, - "column": 3, - "endColumn": 4 - }, - { - "regexp": "^(?:(?:Parse\\s+)?(Warning|[Ee]rror)(?:\\s+\\d+)?:)?\\s+(.*)$", - "severity": 1, - "message": 2, - "loop": true - } - ] - } -} \ No newline at end of file diff --git a/jscomp/build_tests/priv2/node_modules/liba/README.md b/jscomp/build_tests/priv2/node_modules/liba/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/priv2/node_modules/liba/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/priv2/node_modules/liba/bsconfig.json b/jscomp/build_tests/priv2/node_modules/liba/bsconfig.json deleted file mode 100644 index cd5faba15d..0000000000 --- a/jscomp/build_tests/priv2/node_modules/liba/bsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "liba", - "version": "0.1.0", - "sources": [ - { - "dir": "src", - "public" : ["Demo"] - } - ], - "namespace": true -} \ No newline at end of file diff --git a/jscomp/build_tests/priv2/node_modules/liba/package.json b/jscomp/build_tests/priv2/node_modules/liba/package.json deleted file mode 100644 index 8169afc62c..0000000000 --- a/jscomp/build_tests/priv2/node_modules/liba/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "liba", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.8.3" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/priv2/node_modules/liba/src/demo.js b/jscomp/build_tests/priv2/node_modules/liba/src/demo.js deleted file mode 100644 index 97b342312e..0000000000 --- a/jscomp/build_tests/priv2/node_modules/liba/src/demo.js +++ /dev/null @@ -1,8 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -'use strict'; - - -var v = 1; - -exports.v = v; -/* No side effect */ diff --git a/jscomp/build_tests/priv2/node_modules/liba/src/demo.ml b/jscomp/build_tests/priv2/node_modules/liba/src/demo.ml deleted file mode 100644 index 6ac6adb715..0000000000 --- a/jscomp/build_tests/priv2/node_modules/liba/src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let v = 1 \ No newline at end of file diff --git a/jscomp/build_tests/priv2/node_modules/liba/src/priv.js b/jscomp/build_tests/priv2/node_modules/liba/src/priv.js deleted file mode 100644 index 4cccf8f263..0000000000 --- a/jscomp/build_tests/priv2/node_modules/liba/src/priv.js +++ /dev/null @@ -1,8 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -'use strict'; - - -var v = 3; - -exports.v = v; -/* No side effect */ diff --git a/jscomp/build_tests/priv2/node_modules/liba/src/priv.ml b/jscomp/build_tests/priv2/node_modules/liba/src/priv.ml deleted file mode 100644 index 54c50f7d95..0000000000 --- a/jscomp/build_tests/priv2/node_modules/liba/src/priv.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let v = 3 diff --git a/jscomp/build_tests/priv2/package.json b/jscomp/build_tests/priv2/package.json deleted file mode 100644 index 9017b1bc9a..0000000000 --- a/jscomp/build_tests/priv2/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "namespace", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.8.3" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/priv2/src/demo.ml b/jscomp/build_tests/priv2/src/demo.ml deleted file mode 100644 index 78ace50062..0000000000 --- a/jscomp/build_tests/priv2/src/demo.ml +++ /dev/null @@ -1,5 +0,0 @@ - - -let v = - Liba.Demo.v - + Liba.Priv.v diff --git a/jscomp/build_tests/priv2/src/main.ml b/jscomp/build_tests/priv2/src/main.ml deleted file mode 100644 index ca9dcdeb32..0000000000 --- a/jscomp/build_tests/priv2/src/main.ml +++ /dev/null @@ -1,2 +0,0 @@ - -let a = Demo.v \ No newline at end of file diff --git a/jscomp/build_tests/react_ppx/.gitignore b/jscomp/build_tests/react_ppx/.gitignore deleted file mode 100644 index c476e05628..0000000000 --- a/jscomp/build_tests/react_ppx/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/react_ppx/bsconfig.json b/jscomp/build_tests/react_ppx/bsconfig.json deleted file mode 100644 index 286c0fc7e9..0000000000 --- a/jscomp/build_tests/react_ppx/bsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "react-ppx-tests", - "reason": { - "react-jsx": 3 - }, - "sources": { - "dir": "src", - "subdirs": true - }, - "package-specs": [ - { - "module": "commonjs", - "in-source": true - } - ], - "suffix": ".bs.js", - "namespace": true, - "refmt": 3 -} \ No newline at end of file diff --git a/jscomp/build_tests/react_ppx/input.js b/jscomp/build_tests/react_ppx/input.js deleted file mode 100644 index 2ee9cc1135..0000000000 --- a/jscomp/build_tests/react_ppx/input.js +++ /dev/null @@ -1,5 +0,0 @@ - -//@ts-check -var cp = require('child_process') - -cp.execSync(`bsb`,{cwd:__dirname,stdio:[0,1,2]}) \ No newline at end of file diff --git a/jscomp/build_tests/react_ppx/src/React.bs.js b/jscomp/build_tests/react_ppx/src/React.bs.js deleted file mode 100644 index 3f1bab6b78..0000000000 --- a/jscomp/build_tests/react_ppx/src/React.bs.js +++ /dev/null @@ -1,20 +0,0 @@ -// Generated by ReScript, PLEASE EDIT WITH CARE -'use strict'; - - -var Ref = {}; - -var Children = {}; - -var Context = {}; - -var Fragment = {}; - -var Suspense = {}; - -exports.Ref = Ref; -exports.Children = Children; -exports.Context = Context; -exports.Fragment = Fragment; -exports.Suspense = Suspense; -/* No side effect */ diff --git a/jscomp/build_tests/react_ppx/src/React.re b/jscomp/build_tests/react_ppx/src/React.re deleted file mode 100644 index 3cb66775e3..0000000000 --- a/jscomp/build_tests/react_ppx/src/React.re +++ /dev/null @@ -1,397 +0,0 @@ -type element; - -[@bs.val] external null: element = "null"; - -external string: string => element = "%identity"; - -external array: array(element) => element = "%identity"; - -type componentLike('props, 'return) = 'props => 'return; - -type component('props) = componentLike('props, element); - -[@bs.module "react"] -external createElement: (component('props), 'props) => element = - "createElement"; - -[@bs.module "react"] -external cloneElement: (component('props), 'props) => element = - "cloneElement"; - -[@bs.splice] [@bs.module "react"] -external createElementVariadic: - (component('props), 'props, array(element)) => element = - "createElement"; - -module Ref = { - type t('value); - - [@bs.get] external current: t('value) => 'value = "current"; - [@bs.set] external setCurrent: (t('value), 'value) => unit = "current"; -}; - -[@bs.module "react"] -external createRef: unit => Ref.t(Js.nullable('a)) = "createRef"; - -module Children = { - [@bs.module "react"] [@bs.scope "Children"] [@bs.val] - external map: (element, element => element) => element = "map"; - [@bs.module "react"] [@bs.scope "Children"] [@bs.val] - external forEach: (element, element => unit) => unit = "forEach"; - [@bs.module "react"] [@bs.scope "Children"] [@bs.val] - external count: element => int = "count"; - [@bs.module "react"] [@bs.scope "Children"] [@bs.val] - external only: element => element = "only"; - [@bs.module "react"] [@bs.scope "Children"] [@bs.val] - external toArray: element => array(element) = "toArray"; -}; - -module Context = { - type t('props); - - [@bs.get] - external provider: - t('props) => - component({ - . - "value": 'props, - "children": element, - }) = - "Provider"; -}; - -[@bs.module "react"] -external createContext: 'a => Context.t('a) = "createContext"; - -[@bs.module "react"] -external forwardRef: - ([@bs.uncurry] (('props, Js.Nullable.t(Ref.t('a))) => element)) => - component('props) = - "forwardRef"; - -[@bs.module "react"] -external memo: component('props) => component('props) = "memo"; - -[@bs.module "react"] -external memoCustomCompareProps: - (component('props), [@bs.uncurry] (('props, 'props) => bool)) => - component('props) = - "memo"; - -module Fragment = { - [@bs.obj] - external makeProps: - (~children: element, ~key: 'key=?, unit) => {. "children": element} = - ""; - [@bs.module "react"] - external make: component({. "children": element}) = "Fragment"; -}; - -module Suspense = { - [@bs.obj] - external makeProps: - ( - ~children: element=?, - ~fallback: element=?, - ~maxDuration: int=?, - ~key: 'key=?, - unit - ) => - { - . - "children": option(element), - "fallback": option(element), - "maxDuration": option(int), - } = - ""; - [@bs.module "react"] - external make: - component({ - . - "children": option(element), - "fallback": option(element), - "maxDuration": option(int), - }) = - "Suspense"; -}; - -/* HOOKS */ - -/* - * Yeah, we know this api isn't great. tl;dr: useReducer instead. - * It's because useState can take functions or non-function values and treats - * them differently. Lazy initializer + callback which returns state is the - * only way to safely have any type of state and be able to update it correctly. - */ -[@bs.module "react"] -external useState: - ([@bs.uncurry] (unit => 'state)) => ('state, ('state => 'state) => unit) = - "useState"; - -[@bs.module "react"] -external useReducer: - ([@bs.uncurry] (('state, 'action) => 'state), 'state) => - ('state, 'action => unit) = - "useReducer"; - -[@bs.module "react"] -external useReducerWithMapState: - ( - [@bs.uncurry] (('state, 'action) => 'state), - 'initialState, - 'initialState => 'state - ) => - ('state, 'action => unit) = - "useReducer"; - -[@bs.module "react"] -external useEffect: ([@bs.uncurry] (unit => option(unit => unit))) => unit = - "useEffect"; -[@bs.module "react"] -external useEffect0: - ([@bs.uncurry] (unit => option(unit => unit)), [@bs.as {json|[]|json}] _) => - unit = - "useEffect"; -[@bs.module "react"] -external useEffect1: - ([@bs.uncurry] (unit => option(unit => unit)), array('a)) => unit = - "useEffect"; -[@bs.module "react"] -external useEffect2: - ([@bs.uncurry] (unit => option(unit => unit)), ('a, 'b)) => unit = - "useEffect"; -[@bs.module "react"] -external useEffect3: - ([@bs.uncurry] (unit => option(unit => unit)), ('a, 'b, 'c)) => unit = - "useEffect"; -[@bs.module "react"] -external useEffect4: - ([@bs.uncurry] (unit => option(unit => unit)), ('a, 'b, 'c, 'd)) => unit = - "useEffect"; -[@bs.module "react"] -external useEffect5: - ([@bs.uncurry] (unit => option(unit => unit)), ('a, 'b, 'c, 'd, 'e)) => - unit = - "useEffect"; -[@bs.module "react"] -external useEffect6: - ([@bs.uncurry] (unit => option(unit => unit)), ('a, 'b, 'c, 'd, 'e, 'f)) => - unit = - "useEffect"; -[@bs.module "react"] -external useEffect7: - ( - [@bs.uncurry] (unit => option(unit => unit)), - ('a, 'b, 'c, 'd, 'e, 'f, 'g) - ) => - unit = - "useEffect"; - -[@bs.module "react"] -external useLayoutEffect: - ([@bs.uncurry] (unit => option(unit => unit))) => unit = - "useLayoutEffect"; -[@bs.module "react"] -external useLayoutEffect0: - ([@bs.uncurry] (unit => option(unit => unit)), [@bs.as {json|[]|json}] _) => - unit = - "useLayoutEffect"; -[@bs.module "react"] -external useLayoutEffect1: - ([@bs.uncurry] (unit => option(unit => unit)), array('a)) => unit = - "useLayoutEffect"; -[@bs.module "react"] -external useLayoutEffect2: - ([@bs.uncurry] (unit => option(unit => unit)), ('a, 'b)) => unit = - "useLayoutEffect"; -[@bs.module "react"] -external useLayoutEffect3: - ([@bs.uncurry] (unit => option(unit => unit)), ('a, 'b, 'c)) => unit = - "useLayoutEffect"; -[@bs.module "react"] -external useLayoutEffect4: - ([@bs.uncurry] (unit => option(unit => unit)), ('a, 'b, 'c, 'd)) => unit = - "useLayoutEffect"; -[@bs.module "react"] -external useLayoutEffect5: - ([@bs.uncurry] (unit => option(unit => unit)), ('a, 'b, 'c, 'd, 'e)) => - unit = - "useLayoutEffect"; -[@bs.module "react"] -external useLayoutEffect6: - ([@bs.uncurry] (unit => option(unit => unit)), ('a, 'b, 'c, 'd, 'e, 'f)) => - unit = - "useLayoutEffect"; -[@bs.module "react"] -external useLayoutEffect7: - ( - [@bs.uncurry] (unit => option(unit => unit)), - ('a, 'b, 'c, 'd, 'e, 'f, 'g) - ) => - unit = - "useLayoutEffect"; - -[@bs.module "react"] -external useMemo: ([@bs.uncurry] (unit => 'any)) => 'any = "useMemo"; -[@bs.module "react"] -external useMemo0: - ([@bs.uncurry] (unit => 'any), [@bs.as {json|[]|json}] _) => 'any = - "useMemo"; -[@bs.module "react"] -external useMemo1: ([@bs.uncurry] (unit => 'any), array('a)) => 'any = - "useMemo"; -[@bs.module "react"] -external useMemo2: ([@bs.uncurry] (unit => 'any), ('a, 'b)) => 'any = - "useMemo"; -[@bs.module "react"] -external useMemo3: ([@bs.uncurry] (unit => 'any), ('a, 'b, 'c)) => 'any = - "useMemo"; -[@bs.module "react"] -external useMemo4: ([@bs.uncurry] (unit => 'any), ('a, 'b, 'c, 'd)) => 'any = - "useMemo"; -[@bs.module "react"] -external useMemo5: - ([@bs.uncurry] (unit => 'any), ('a, 'b, 'c, 'd, 'e)) => 'any = - "useMemo"; -[@bs.module "react"] -external useMemo6: - ([@bs.uncurry] (unit => 'any), ('a, 'b, 'c, 'd, 'e, 'f)) => 'any = - "useMemo"; -[@bs.module "react"] -external useMemo7: - ([@bs.uncurry] (unit => 'any), ('a, 'b, 'c, 'd, 'e, 'f, 'g)) => 'any = - "useMemo"; - -/* This is used as return values */ -type callback('input, 'output) = 'input => 'output; - -[@bs.module "react"] -external useCallback: - ([@bs.uncurry] ('input => 'output)) => callback('input, 'output) = - "useCallback"; -[@bs.module "react"] -external useCallback0: - ([@bs.uncurry] ('input => 'output), [@bs.as {json|[]|json}] _) => - callback('input, 'output) = - "useCallback"; -[@bs.module "react"] -external useCallback1: - ([@bs.uncurry] ('input => 'output), array('a)) => callback('input, 'output) = - "useCallback"; -[@bs.module "react"] -external useCallback2: - ([@bs.uncurry] ('input => 'output), ('a, 'b)) => callback('input, 'output) = - "useCallback"; -[@bs.module "react"] -external useCallback3: - ([@bs.uncurry] ('input => 'output), ('a, 'b, 'c)) => - callback('input, 'output) = - "useCallback"; -[@bs.module "react"] -external useCallback4: - ([@bs.uncurry] ('input => 'output), ('a, 'b, 'c, 'd)) => - callback('input, 'output) = - "useCallback"; -[@bs.module "react"] -external useCallback5: - ([@bs.uncurry] ('input => 'output), ('a, 'b, 'c, 'd, 'e)) => - callback('input, 'output) = - "useCallback"; -[@bs.module "react"] -external useCallback6: - ([@bs.uncurry] ('input => 'output), ('a, 'b, 'c, 'd, 'e, 'f)) => - callback('input, 'output) = - "useCallback"; -[@bs.module "react"] -external useCallback7: - ([@bs.uncurry] ('input => 'output), ('a, 'b, 'c, 'd, 'e, 'f, 'g)) => - callback('input, 'output) = - "useCallback"; - -[@bs.module "react"] -external useContext: Context.t('any) => 'any = "useContext"; - -[@bs.module "react"] external useRef: 'value => Ref.t('value) = "useRef"; - -[@bs.module "react"] -external useImperativeHandle0: - ( - Js.Nullable.t(Ref.t('value)), - [@bs.uncurry] (unit => 'value), - [@bs.as {json|[]|json}] _ - ) => - unit = - "useImperativeHandle"; - -[@bs.module "react"] -external useImperativeHandle1: - ( - Js.Nullable.t(Ref.t('value)), - [@bs.uncurry] (unit => 'value), - array('a) - ) => - unit = - "useImperativeHandle"; - -[@bs.module "react"] -external useImperativeHandle2: - ( - Js.Nullable.t(Ref.t('value)), - [@bs.uncurry] (unit => 'value), - ('a, 'b) - ) => - unit = - "useImperativeHandle"; - -[@bs.module "react"] -external useImperativeHandle3: - ( - Js.Nullable.t(Ref.t('value)), - [@bs.uncurry] (unit => 'value), - ('a, 'b, 'c) - ) => - unit = - "useImperativeHandle"; - -[@bs.module "react"] -external useImperativeHandle4: - ( - Js.Nullable.t(Ref.t('value)), - [@bs.uncurry] (unit => 'value), - ('a, 'b, 'c, 'd) - ) => - unit = - "useImperativeHandle"; - -[@bs.module "react"] -external useImperativeHandle5: - ( - Js.Nullable.t(Ref.t('value)), - [@bs.uncurry] (unit => 'value), - ('a, 'b, 'c, 'd, 'e) - ) => - unit = - "useImperativeHandle"; - -[@bs.module "react"] -external useImperativeHandle6: - ( - Js.Nullable.t(Ref.t('value)), - [@bs.uncurry] (unit => 'value), - ('a, 'b, 'c, 'd, 'e, 'f) - ) => - unit = - "useImperativeHandle"; - -[@bs.module "react"] -external useImperativeHandle7: - ( - Js.Nullable.t(Ref.t('value)), - [@bs.uncurry] (unit => 'value), - ('a, 'b, 'c, 'd, 'e, 'f, 'g) - ) => - unit = - "useImperativeHandle"; - -[@bs.set] -external setDisplayName: (component('props), string) => unit = "displayName"; \ No newline at end of file diff --git a/jscomp/build_tests/react_ppx/src/gpr_3695_test.bs.js b/jscomp/build_tests/react_ppx/src/gpr_3695_test.bs.js deleted file mode 100644 index a49281dcf5..0000000000 --- a/jscomp/build_tests/react_ppx/src/gpr_3695_test.bs.js +++ /dev/null @@ -1,20 +0,0 @@ -// Generated by ReScript, PLEASE EDIT WITH CARE -'use strict'; - -var Foo = require("Foo"); -var Curry = require("bs-platform/lib/js/curry.js"); - -var React = {}; - -var Test = {}; - -function test(className) { - return Curry._1(Foo, { - className: className - }); -} - -exports.React = React; -exports.Test = Test; -exports.test = test; -/* Foo Not a pure module */ diff --git a/jscomp/build_tests/react_ppx/src/gpr_3695_test.re b/jscomp/build_tests/react_ppx/src/gpr_3695_test.re deleted file mode 100644 index 4ef87481b7..0000000000 --- a/jscomp/build_tests/react_ppx/src/gpr_3695_test.re +++ /dev/null @@ -1,14 +0,0 @@ -module React = { - type element; - type componentLike('props, 'return) = 'props => 'return; -} - -module Test = { - [@bs.module] [@react.component] - external make: (~className: string=?) => React.element = "Foo"; -}; - -let test (~className) = Test.make( - Test.makeProps(~className, ()) -); - diff --git a/jscomp/build_tests/react_ppx/src/gpr_3987_test.bs.js b/jscomp/build_tests/react_ppx/src/gpr_3987_test.bs.js deleted file mode 100644 index 9144226068..0000000000 --- a/jscomp/build_tests/react_ppx/src/gpr_3987_test.bs.js +++ /dev/null @@ -1,74 +0,0 @@ -// Generated by ReScript, PLEASE EDIT WITH CARE -'use strict'; - -var React = require("react"); - -function makeContainer(text) { - var container = document.createElement("div"); - container.className = "container"; - var title = document.createElement("div"); - title.className = "containerTitle"; - title.innerText = text; - var content = document.createElement("div"); - content.className = "containerContent"; - container.appendChild(title); - container.appendChild(content); - document.body.appendChild(container); - return content; -} - -function makeProps(value, onChange, param) { - return { - value: value, - onChange: onChange - }; -} - -function make(_props) { - return null; -} - -var BuckleScript3987ReproOk = { - makeProps: makeProps, - make: make -}; - -React.createElement(make, makeProps("test", (function (param, param$1) { - - }), undefined)); - -function Gpr_3987_test$BuckleScript3987ReproOk2(Props) { - return null; -} - -var BuckleScript3987ReproOk2 = { - make: Gpr_3987_test$BuckleScript3987ReproOk2 -}; - -React.createElement(Gpr_3987_test$BuckleScript3987ReproOk2, { - value: "test", - onChange: (function (param, param$1) { - - }) - }); - -function Gpr_3987_test$BuckleScript3987ReproError(Props) { - return null; -} - -var BuckleScript3987ReproError = { - make: Gpr_3987_test$BuckleScript3987ReproError -}; - -React.createElement(Gpr_3987_test$BuckleScript3987ReproError, { - value: "test", - onChange: (function (param, param$1) { - - }) - }); - -exports.makeContainer = makeContainer; -exports.BuckleScript3987ReproOk = BuckleScript3987ReproOk; -exports.BuckleScript3987ReproOk2 = BuckleScript3987ReproOk2; -exports.BuckleScript3987ReproError = BuckleScript3987ReproError; -/* Not a pure module */ diff --git a/jscomp/build_tests/react_ppx/src/gpr_3987_test.re b/jscomp/build_tests/react_ppx/src/gpr_3987_test.re deleted file mode 100644 index 6aeedc4f88..0000000000 --- a/jscomp/build_tests/react_ppx/src/gpr_3987_test.re +++ /dev/null @@ -1,68 +0,0 @@ -// Entry point -[@bs.val] external document: Js.t({..}) = "document"; - -// We're using raw DOM manipulations here, to avoid making you read -// ReasonReact when you might precisely be trying to learn it for the first -// time through the examples later. -let makeContainer = text => { - let container = document##createElement("div"); - container##className #= "container"; - - let title = document##createElement("div"); - title##className #= "containerTitle"; - title##innerText #= text; - - let content = document##createElement("div"); - content##className #= "containerContent"; - - let () = container##appendChild(title); - let () = container##appendChild(content); - let () = document##body##appendChild(container); - - content; -}; - -/* This uncurried prop definition compiles */ -module BuckleScript3987ReproOk = { - let makeProps = (~value: string, ~onChange: (. string, int) => unit, ()) => { - {"value": value, "onChange": onChange}; - }; - - let make = - ( - _props: { - . - "value": string, - "onChange": (. string, int) => unit, - }, - ) => { - React.null; - }; -}; - - -let _ = ()} />; - -/* Extracted type for the uncurried prop compiles as well */ -module BuckleScript3987ReproOk2 = { - type onChange = (. string, int) => unit; - - [@react.component] - let make = (~value as _, ~onChange as _ : onChange) => { - React.null; - }; -}; - - -let _ = ()} />; - -/* Inline uncurried prop type causes an error */ -module BuckleScript3987ReproError = { - [@react.component] - let make = (~value as _: string, ~onChange as _ : (. string, int) => unit) => { - React.null; - }; -}; - - -let _ = ()} />; \ No newline at end of file diff --git a/jscomp/build_tests/react_ppx/src/recursive_component_test.bs.js b/jscomp/build_tests/react_ppx/src/recursive_component_test.bs.js deleted file mode 100644 index b389e4231d..0000000000 --- a/jscomp/build_tests/react_ppx/src/recursive_component_test.bs.js +++ /dev/null @@ -1,14 +0,0 @@ -// Generated by ReScript, PLEASE EDIT WITH CARE -'use strict'; - -var React = require("react"); - -function make(Props) { - var foo = Props.foo; - return React.createElement(make, { - foo: foo - }); -} - -exports.make = make; -/* react Not a pure module */ diff --git a/jscomp/build_tests/react_ppx/src/recursive_component_test.re b/jscomp/build_tests/react_ppx/src/recursive_component_test.re deleted file mode 100644 index 3bc8f2bf3b..0000000000 --- a/jscomp/build_tests/react_ppx/src/recursive_component_test.re +++ /dev/null @@ -1,10 +0,0 @@ -[@warning "-39"]; -// https://github.com/rescript-lang/rescript-compiler/issues/4511 -/* -[@bs.config { - flags : [|"-dsource"|] -}]; -*/ -[@react.component] -let rec make = (~foo, ()) => - React.createElement(make, makeProps(~foo, ())); diff --git a/jscomp/build_tests/rerror/.gitignore b/jscomp/build_tests/rerror/.gitignore deleted file mode 100644 index 8f464d0527..0000000000 --- a/jscomp/build_tests/rerror/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/rerror/README.md b/jscomp/build_tests/rerror/README.md deleted file mode 100644 index 61633ebfaf..0000000000 --- a/jscomp/build_tests/rerror/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Basic Reason Template - -Hello! This project allows you to quickly get started with Reason and BuckleScript. If you wanted a more sophisticated version, try the `react` template (`bsb -theme react -init .`). - -# Build -``` -npm run build -``` - -# Build + Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically diff --git a/jscomp/build_tests/rerror/bsconfig.json b/jscomp/build_tests/rerror/bsconfig.json deleted file mode 100644 index 55701b2bc7..0000000000 --- a/jscomp/build_tests/rerror/bsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -// This is the configuration file used by BuckleScript's build system bsb. Its documentation lives here: http://bucklescript.github.io/bucklescript/docson/#build-schema.json -// BuckleScript comes with its own parser for bsconfig.json, which is normal JSON, with the extra support of comments and trailing commas. -{ - "name": "rerror", - "version": "0.1.0", - "sources": [ - "src" - ], - "bs-dependencies" : [ - // add your dependencies here. You'd usually install them normally through `npm install my-dependency`. If my-dependency has a bsconfig.json too, then everything will work seamlessly. - ] -} diff --git a/jscomp/build_tests/rerror/input.js b/jscomp/build_tests/rerror/input.js deleted file mode 100644 index a2786c7850..0000000000 --- a/jscomp/build_tests/rerror/input.js +++ /dev/null @@ -1,32 +0,0 @@ -var child_process = require("child_process"); -var assert = require("assert"); -child_process.spawnSync(`bsb -clean-world`, { - cwd: __dirname, - encoding: "utf8", - stdio: [0, 1, 2] -}); -var o = child_process.spawnSync(`bsb `, { - cwd: __dirname, - encoding: "utf8", - shell: true -}); - -// verify the output is in reason syntax -var u = o.stdout.match(/=>/g); - -var lines = o.stdout - .split("\n") - .map(x => x.trim()) - .filter(Boolean); -// console.log(`lines: \n${lines}`) -// console.log(lines[4]) -var test = false; -for (var i = 0; i < lines.length; ++i) { - if (lines[i] === "We've found a bug for you!") { - console.log(`line ${i} found`); - assert.ok(/src\/demo.re:3:23-25/.test(lines[i + 1])); - test = true; - } -} -assert.ok(test); -assert.ok(u.length === 2); diff --git a/jscomp/build_tests/rerror/package.json b/jscomp/build_tests/rerror/package.json deleted file mode 100644 index 0e362db1f6..0000000000 --- a/jscomp/build_tests/rerror/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "rerror", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.8.3" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/rerror/src/demo.re b/jscomp/build_tests/rerror/src/demo.re deleted file mode 100644 index 8de62f070c..0000000000 --- a/jscomp/build_tests/rerror/src/demo.re +++ /dev/null @@ -1,3 +0,0 @@ - - -let x : int => int = "x"; \ No newline at end of file diff --git a/jscomp/build_tests/rerror/tasks.json b/jscomp/build_tests/rerror/tasks.json deleted file mode 100644 index 6e049a1ad3..0000000000 --- a/jscomp/build_tests/rerror/tasks.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "version": "0.1.0", - "command": "npm", - "options": { - "cwd": "${workspaceRoot}" - }, - "isShellCommand": true, - "args": [ - "run", - "watch" - ], - "showOutput": "always", - "isBackground": true, - "problemMatcher": { - "fileLocation": "absolute", - "owner": "ocaml", - "watching": { - "activeOnStart": false, - "beginsPattern": ">>>> Start compiling", - "endsPattern": ">>>> Finish compiling" - }, - "pattern": [ - { - "regexp": "^File \"(.*)\", line (\\d+)(?:, characters (\\d+)-(\\d+))?:$", - "file": 1, - "line": 2, - "column": 3, - "endColumn": 4 - }, - { - "regexp": "^(?:(?:Parse\\s+)?(Warning|[Ee]rror)(?:\\s+\\d+)?:)?\\s+(.*)$", - "severity": 1, - "message": 2, - "loop": true - } - ] - } -} \ No newline at end of file diff --git a/jscomp/build_tests/scoped_ppx/.gitignore b/jscomp/build_tests/scoped_ppx/.gitignore deleted file mode 100644 index c476e05628..0000000000 --- a/jscomp/build_tests/scoped_ppx/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/scoped_ppx/bsconfig.json b/jscomp/build_tests/scoped_ppx/bsconfig.json deleted file mode 100644 index 67dec022c2..0000000000 --- a/jscomp/build_tests/scoped_ppx/bsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ppx-flags": - [ - ["@hongbo/ppx1/test.js", "-hello"], - ["@hongbo/ppx1/test.js", "-heyy"], - "@hongbo/ppx1/test.js" - ], - "sources" : { - "dir": "src" - }, - "name": "hello" -} \ No newline at end of file diff --git a/jscomp/build_tests/scoped_ppx/input.js b/jscomp/build_tests/scoped_ppx/input.js deleted file mode 100644 index 21f6eeaa8b..0000000000 --- a/jscomp/build_tests/scoped_ppx/input.js +++ /dev/null @@ -1,10 +0,0 @@ -var cp = require("child_process"); -var assert = require('assert') -cp.execSync(`bsb`, { cwd: __dirname, stdio: [0, 1, 2], encoding: "utf8" }); - -var output = cp.execSync(`bsb -- -t commands src/hello.ast`, { - cwd: __dirname, - encoding: "utf8" -}); -assert(/-ppx '.*\/test\.js -hello' -ppx '.*\/test\.js -heyy' -ppx .*test\.js/.test(output)) - diff --git a/jscomp/build_tests/scoped_ppx/node_modules/@hongbo/ppx1/test.js b/jscomp/build_tests/scoped_ppx/node_modules/@hongbo/ppx1/test.js deleted file mode 100755 index 34ea82903f..0000000000 --- a/jscomp/build_tests/scoped_ppx/node_modules/@hongbo/ppx1/test.js +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env node -//@ts-check -var fs = require('fs') - -// let [_node, _js, file_in, file_out] = process.argv -var file_in = process.argv[process.argv.length - 2] -var file_out = process.argv[process.argv.length - 1] -// console.log(process.argv) -// debugger; -fs.createReadStream(file_in) - .pipe(fs.createWriteStream(file_out)) - diff --git a/jscomp/build_tests/scoped_ppx/src/hello.ml b/jscomp/build_tests/scoped_ppx/src/hello.ml deleted file mode 100644 index e37d9062f6..0000000000 --- a/jscomp/build_tests/scoped_ppx/src/hello.ml +++ /dev/null @@ -1 +0,0 @@ -let v = 1 \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/.gitignore b/jscomp/build_tests/super_errors/.gitignore deleted file mode 100644 index e0473fd9cf..0000000000 --- a/jscomp/build_tests/super_errors/.gitignore +++ /dev/null @@ -1 +0,0 @@ -fixtures/*.js diff --git a/jscomp/build_tests/super_errors/README.md b/jscomp/build_tests/super_errors/README.md deleted file mode 100644 index b0c6191de9..0000000000 --- a/jscomp/build_tests/super_errors/README.md +++ /dev/null @@ -1,5 +0,0 @@ -Special tests for super errors (the pretty error display). - -Follow CONTRIBUTING.md and build the project, then run `node ./jscomp/build_tests/super_errors/input.js` at the root of the project to check the tests against previous snapshots. - -Run `node ./jscomp/build_tests/super_errors/input.js update` to update the snapshots (assuming you've made some changes to super errors' display and/or messages). diff --git a/jscomp/build_tests/super_errors/expected/arity_mismatch.re.expected b/jscomp/build_tests/super_errors/expected/arity_mismatch.re.expected deleted file mode 100644 index 46674aaecf..0000000000 --- a/jscomp/build_tests/super_errors/expected/arity_mismatch.re.expected +++ /dev/null @@ -1,9 +0,0 @@ - - We've found a bug for you! - /.../fixtures/arity_mismatch.re:3:21-27 - - 1 │ - 2 │ let makeVar = (. ~f, ()) => 34; - 3 │ let makeVariables = makeVar(. ~f=f => f); - - This function expected 2 arguments, but got 1 \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/arity_mismatch2.re.expected b/jscomp/build_tests/super_errors/expected/arity_mismatch2.re.expected deleted file mode 100644 index 9a99a99c0a..0000000000 --- a/jscomp/build_tests/super_errors/expected/arity_mismatch2.re.expected +++ /dev/null @@ -1,9 +0,0 @@ - - We've found a bug for you! - /.../fixtures/arity_mismatch2.re:3:21-27 - - 1 │ - 2 │ let makeVar = (. f, ()) => 34; - 3 │ let makeVariables = makeVar(. 1,2,3); - - This function expected 2 arguments, but got 3 \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/arity_mismatch3.re.expected b/jscomp/build_tests/super_errors/expected/arity_mismatch3.re.expected deleted file mode 100644 index 12d0ec2bb3..0000000000 --- a/jscomp/build_tests/super_errors/expected/arity_mismatch3.re.expected +++ /dev/null @@ -1,7 +0,0 @@ - - We've found a bug for you! - /.../fixtures/arity_mismatch3.re:1:23-35 - - 1 │ Belt.Array.mapU([||], (. a, b) => 1); - - This function expected 1 argument, but got 2 \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/bucklescript.re.expected b/jscomp/build_tests/super_errors/expected/bucklescript.re.expected deleted file mode 100644 index 08b945b365..0000000000 --- a/jscomp/build_tests/super_errors/expected/bucklescript.re.expected +++ /dev/null @@ -1,15 +0,0 @@ - - We've found a bug for you! - /.../fixtures/bucklescript.re:4:1-3 - - 2 │ let app = [@bs] (f, x, y) => f(x); - 3 │ - 4 │ app(((x) => x + 1), 2); - - This is an uncurried ReScript function. It must be applied with a dot. - - Like this: foo(. a, b) - Not like this: foo(a, b) - - This guarantees that your function is fully applied. More info here: - https://rescript-lang.org/docs/manual/latest/function#uncurried-function \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/collections.re.expected b/jscomp/build_tests/super_errors/expected/collections.re.expected deleted file mode 100644 index 94caf05178..0000000000 --- a/jscomp/build_tests/super_errors/expected/collections.re.expected +++ /dev/null @@ -1,11 +0,0 @@ - - We've found a bug for you! - /.../fixtures/collections.re:2:8-14 - - 1 │ /* wrong type in a list */ - 2 │ [1, 2, "Hello"] -> ignore; - - This has type: string - Somewhere wanted: int - - You can convert string to int with Belt.Int.fromString. \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/curry_in_uncurry.re.expected b/jscomp/build_tests/super_errors/expected/curry_in_uncurry.re.expected deleted file mode 100644 index 5b46ec13f3..0000000000 --- a/jscomp/build_tests/super_errors/expected/curry_in_uncurry.re.expected +++ /dev/null @@ -1,9 +0,0 @@ - - We've found a bug for you! - /.../fixtures/curry_in_uncurry.re:3:1 - - 1 │ let f = (a,b) => a + b; - 2 │ - 3 │ f(.2,2)->Js.log; - - This function is a curried function where an uncurried function is expected \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/highlighting1.re.expected b/jscomp/build_tests/super_errors/expected/highlighting1.re.expected deleted file mode 100644 index 5bd8ebf121..0000000000 --- a/jscomp/build_tests/super_errors/expected/highlighting1.re.expected +++ /dev/null @@ -1,12 +0,0 @@ - - We've found a bug for you! - /.../fixtures/highlighting1.re:1:14-3:3 - - 1 │ let a: int = "hel - 2 │ - 3 │ lo"; - - This has type: string - Somewhere wanted: int - - You can convert string to int with Belt.Int.fromString. \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/highlighting2.re.expected b/jscomp/build_tests/super_errors/expected/highlighting2.re.expected deleted file mode 100644 index 7aabc9f857..0000000000 --- a/jscomp/build_tests/super_errors/expected/highlighting2.re.expected +++ /dev/null @@ -1,13 +0,0 @@ - - We've found a bug for you! - /.../fixtures/highlighting2.re:2:36-4:25 - - 1 ┆ - 2 ┆ let a: int = "hel - 3 ┆ - 4 ┆ lo"; - - This has type: string - Somewhere wanted: int - - You can convert string to int with Belt.Int.fromString. \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/highlighting3.re.expected b/jscomp/build_tests/super_errors/expected/highlighting3.re.expected deleted file mode 100644 index 9c26f22fc1..0000000000 --- a/jscomp/build_tests/super_errors/expected/highlighting3.re.expected +++ /dev/null @@ -1,13 +0,0 @@ - - We've found a bug for you! - /.../fixtures/highlighting3.re:2:14-4:16 - - 1 │ - 2 │ let a: int = "helllllll - 3 │ - 4 │ loooooooooooooo"; - - This has type: string - Somewhere wanted: int - - You can convert string to int with Belt.Int.fromString. \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/highlighting4.re.expected b/jscomp/build_tests/super_errors/expected/highlighting4.re.expected deleted file mode 100644 index 11a411c253..0000000000 --- a/jscomp/build_tests/super_errors/expected/highlighting4.re.expected +++ /dev/null @@ -1,9 +0,0 @@ - - Warning number 3 (configured as error) - /.../fixtures/highlighting4.re:5:10 - - 3 │ [@deprecated] - 4 │ type a = int; - 5 │ type b = a - - deprecated: a \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/highlighting5.re.expected b/jscomp/build_tests/super_errors/expected/highlighting5.re.expected deleted file mode 100644 index 2c81c749ee..0000000000 --- a/jscomp/build_tests/super_errors/expected/highlighting5.re.expected +++ /dev/null @@ -1,12 +0,0 @@ - - We've found a bug for you! - /.../fixtures/highlighting5.re:2:14-100 - - 1 │ /* overflows in the terminal */ - 2 │ let a: int = "helllllllllllllllllllllllllllllllllllllllllllllllllllllll - llllllllllllllllllllllllllll"; - - This has type: string - Somewhere wanted: int - - You can convert string to int with Belt.Int.fromString. \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/highlighting6.re.expected b/jscomp/build_tests/super_errors/expected/highlighting6.re.expected deleted file mode 100644 index 3b81a6704a..0000000000 --- a/jscomp/build_tests/super_errors/expected/highlighting6.re.expected +++ /dev/null @@ -1,10 +0,0 @@ - - We've found a bug for you! - /.../fixtures/highlighting6.re:2:9-13 - - 1 │ let aaaaa = 10; - 2 │ let b = aaaab; - - The value aaaab can't be found - - Hint: Did you mean aaaaa? \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/method_arity_mismatch.re.expected b/jscomp/build_tests/super_errors/expected/method_arity_mismatch.re.expected deleted file mode 100644 index 75c42c95f8..0000000000 --- a/jscomp/build_tests/super_errors/expected/method_arity_mismatch.re.expected +++ /dev/null @@ -1,10 +0,0 @@ - - We've found a bug for you! - /.../fixtures/method_arity_mismatch.re:3:5-11 - - 1 │ let f = ( obj ) => { - 2 │ obj##hi (1,2); - 3 │ obj##hi (1) - 4 │ } - - This method has arity2 but was expected arity1 \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/modules1.re.expected b/jscomp/build_tests/super_errors/expected/modules1.re.expected deleted file mode 100644 index 98d458efbc..0000000000 --- a/jscomp/build_tests/super_errors/expected/modules1.re.expected +++ /dev/null @@ -1,12 +0,0 @@ - - We've found a bug for you! - /.../fixtures/modules1.re:1:9-13 - - 1 │ let b = Foo.b; - - The module or file Foo can't be found. - - If it's a third-party dependency: - - Did you list it in bsconfig.json? - - Did you run `bsb` instead of `bsb -make-world` - (latter builds third-parties)? - - Did you include the file's directory in bsconfig.json? \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/modules2.re.expected b/jscomp/build_tests/super_errors/expected/modules2.re.expected deleted file mode 100644 index a98d0bdd0f..0000000000 --- a/jscomp/build_tests/super_errors/expected/modules2.re.expected +++ /dev/null @@ -1,7 +0,0 @@ - - We've found a bug for you! - /.../fixtures/modules2.re:1:9-14 - - 1 │ let b = List.b; - - The value b can't be found in List \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/modules3.re.expected b/jscomp/build_tests/super_errors/expected/modules3.re.expected deleted file mode 100644 index 0ac19007ad..0000000000 --- a/jscomp/build_tests/super_errors/expected/modules3.re.expected +++ /dev/null @@ -1,13 +0,0 @@ - - We've found a bug for you! - /.../fixtures/modules3.re:11:11-21 - - 9 │ }; - 10 │ - 11 │ let asd = A.B.C.D.aaa; - 12 │ - 13 │ - - The value aaa can't be found in A.B.C.D - - Hint: Did you mean aaaa? \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/moreArguments1.re.expected b/jscomp/build_tests/super_errors/expected/moreArguments1.re.expected deleted file mode 100644 index ff71562043..0000000000 --- a/jscomp/build_tests/super_errors/expected/moreArguments1.re.expected +++ /dev/null @@ -1,8 +0,0 @@ - - We've found a bug for you! - /.../fixtures/moreArguments1.re:2:9-15 - - 1 │ let x = (~a, ~b) => a + b; - 2 │ let y = x(~a=2) + 2; - - This call is missing an argument of type (~b: int) \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/moreArguments2.re.expected b/jscomp/build_tests/super_errors/expected/moreArguments2.re.expected deleted file mode 100644 index 510b99f964..0000000000 --- a/jscomp/build_tests/super_errors/expected/moreArguments2.re.expected +++ /dev/null @@ -1,8 +0,0 @@ - - We've found a bug for you! - /.../fixtures/moreArguments2.re:2:9-12 - - 1 │ let x = (a, b) => a + b; - 2 │ let y = x(2) + 2; - - This call is missing an argument of type int \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/moreArguments3.re.expected b/jscomp/build_tests/super_errors/expected/moreArguments3.re.expected deleted file mode 100644 index f7f3c50d48..0000000000 --- a/jscomp/build_tests/super_errors/expected/moreArguments3.re.expected +++ /dev/null @@ -1,8 +0,0 @@ - - We've found a bug for you! - /.../fixtures/moreArguments3.re:2:9-12 - - 1 │ let x = (a, b, c, d) => a + b; - 2 │ let y = x(2) + 2; - - This call is missing arguments of type: int, 'a, 'b \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/moreArguments4.re.expected b/jscomp/build_tests/super_errors/expected/moreArguments4.re.expected deleted file mode 100644 index 30fe6e9a9a..0000000000 --- a/jscomp/build_tests/super_errors/expected/moreArguments4.re.expected +++ /dev/null @@ -1,8 +0,0 @@ - - We've found a bug for you! - /.../fixtures/moreArguments4.re:2:9-12 - - 1 │ let x = (a, ~b, ~c, ~d) => a + b; - 2 │ let y = x(2) + 2; - - This call is missing arguments of type: (~b: int), (~c: 'a), (~d: 'b) \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/moreArguments5.re.expected b/jscomp/build_tests/super_errors/expected/moreArguments5.re.expected deleted file mode 100644 index 9579af8153..0000000000 --- a/jscomp/build_tests/super_errors/expected/moreArguments5.re.expected +++ /dev/null @@ -1,9 +0,0 @@ - - We've found a bug for you! - /.../fixtures/moreArguments5.re:5:9-12 - - 3 │ }; - 4 │ let x = (a, b, c, d) => {Sub.a: 2}; - 5 │ let y = x(2).Sub.a; - - This call is missing arguments of type: 'a, 'b, 'c \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/partial_app.re.expected b/jscomp/build_tests/super_errors/expected/partial_app.re.expected deleted file mode 100644 index 06fbe7984f..0000000000 --- a/jscomp/build_tests/super_errors/expected/partial_app.re.expected +++ /dev/null @@ -1,9 +0,0 @@ - - Warning number 109 (configured as error) - /.../fixtures/partial_app.re:5:1-7 - - 3 │ }; - 4 │ - 5 │ f (1,2); - - Toplevel expression is expected to have unit type. \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/primitives1.re.expected b/jscomp/build_tests/super_errors/expected/primitives1.re.expected deleted file mode 100644 index 993bf05187..0000000000 --- a/jscomp/build_tests/super_errors/expected/primitives1.re.expected +++ /dev/null @@ -1,11 +0,0 @@ - - We've found a bug for you! - /.../fixtures/primitives1.re:2:1-2 - - 1 │ /* got float, wanted int */ - 2 │ 2. + 2; - - This has type: float - Somewhere wanted: int - - You can convert float to int with Belt.Float.toInt.If this is a literal, you want a number without a trailing dot (e.g. 20). \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/primitives10.re.expected b/jscomp/build_tests/super_errors/expected/primitives10.re.expected deleted file mode 100644 index f3e5f21ad5..0000000000 --- a/jscomp/build_tests/super_errors/expected/primitives10.re.expected +++ /dev/null @@ -1,10 +0,0 @@ - - We've found a bug for you! - /.../fixtures/primitives10.re:2:9-13 - - 1 │ let aaaaa = 10; - 2 │ let b = aaaab; - - The value aaaab can't be found - - Hint: Did you mean aaaaa? \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/primitives11.re.expected b/jscomp/build_tests/super_errors/expected/primitives11.re.expected deleted file mode 100644 index 88fc0a8242..0000000000 --- a/jscomp/build_tests/super_errors/expected/primitives11.re.expected +++ /dev/null @@ -1,18 +0,0 @@ - - We've found a bug for you! - /.../fixtures/primitives11.re:5:11-27 - - 3 │ type a = option(aa) - 4 │ type b = option(bb) - 5 │ let a:a = (Some(Some(5)):b) - - This has type: b (defined as option(bb)) - Somewhere wanted: a (defined as option(aa)) - - The incompatible parts: - bb (defined as option(int)) vs aa (defined as option(string)) - - Further expanded: - int vs string - - You can convert int to string with Belt.Int.toString. \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/primitives2.re.expected b/jscomp/build_tests/super_errors/expected/primitives2.re.expected deleted file mode 100644 index c8e573dbed..0000000000 --- a/jscomp/build_tests/super_errors/expected/primitives2.re.expected +++ /dev/null @@ -1,11 +0,0 @@ - - We've found a bug for you! - /.../fixtures/primitives2.re:2:1 - - 1 │ /* got int, wanted string */ - 2 │ 2 ++ " things"; - - This has type: int - Somewhere wanted: string - - You can convert int to string with Belt.Int.toString. \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/primitives3.re.expected b/jscomp/build_tests/super_errors/expected/primitives3.re.expected deleted file mode 100644 index 37d375ee16..0000000000 --- a/jscomp/build_tests/super_errors/expected/primitives3.re.expected +++ /dev/null @@ -1,10 +0,0 @@ - - We've found a bug for you! - /.../fixtures/primitives3.re:3:1 - - 1 │ /* Too many arguments */ - 2 │ let x = (a) => a + 2; - 3 │ x(2, 4); - - This function has type int => int - It only accepts 1 argument; here, it's called with more. \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/primitives4.re.expected b/jscomp/build_tests/super_errors/expected/primitives4.re.expected deleted file mode 100644 index 947b006c3e..0000000000 --- a/jscomp/build_tests/super_errors/expected/primitives4.re.expected +++ /dev/null @@ -1,10 +0,0 @@ - - We've found a bug for you! - /.../fixtures/primitives4.re:3:1 - - 1 │ /* Not a function */ - 2 │ let x = 10; - 3 │ x(10); - - This expression has type int - It is not a function. \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/primitives5.re.expected b/jscomp/build_tests/super_errors/expected/primitives5.re.expected deleted file mode 100644 index c6f80b8092..0000000000 --- a/jscomp/build_tests/super_errors/expected/primitives5.re.expected +++ /dev/null @@ -1,9 +0,0 @@ - - We've found a bug for you! - /.../fixtures/primitives5.re:3:1-5 - - 1 │ /* Not enough arguments */ - 2 │ type x = X(int, float); - 3 │ X(10) -> ignore; - - This variant constructor, X, expects 2 arguments; here, we've only found 1. \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/primitives6.re.expected b/jscomp/build_tests/super_errors/expected/primitives6.re.expected deleted file mode 100644 index cfe7a9ba7b..0000000000 --- a/jscomp/build_tests/super_errors/expected/primitives6.re.expected +++ /dev/null @@ -1,12 +0,0 @@ - - We've found a bug for you! - /.../fixtures/primitives6.re:3:7-8 - - 1 │ /* Wrong constructor argument */ - 2 │ type x = X(int, float); - 3 │ X(10, 10) -> ignore; - - This has type: int - Somewhere wanted: float - - You can convert int to float with Belt.Int.toFloat.If this is a literal, you want a number with a trailing dot (e.g. 20.). \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/primitives7.re.expected b/jscomp/build_tests/super_errors/expected/primitives7.re.expected deleted file mode 100644 index 2026ffc35a..0000000000 --- a/jscomp/build_tests/super_errors/expected/primitives7.re.expected +++ /dev/null @@ -1,15 +0,0 @@ - - We've found a bug for you! - /.../fixtures/primitives7.re:3:28 - - 1 │ /* Wanted list(float), found list(int) */ - 2 │ let a = [1,2,3]; - 3 │ List.map(((n) => n +. 2.), a); - - This has type: list(int) - Somewhere wanted: list(float) - - The incompatible parts: - int vs float - - You can convert int to float with Belt.Int.toFloat.If this is a literal, you want a number with a trailing dot (e.g. 20.). \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/primitives8.re.expected b/jscomp/build_tests/super_errors/expected/primitives8.re.expected deleted file mode 100644 index 0dde7cf79b..0000000000 --- a/jscomp/build_tests/super_errors/expected/primitives8.re.expected +++ /dev/null @@ -1,7 +0,0 @@ - - We've found a bug for you! - /.../fixtures/primitives8.re:1:11-13 - - 1 │ let asd = aaa; - - The value aaa can't be found \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/primitives9.re.expected b/jscomp/build_tests/super_errors/expected/primitives9.re.expected deleted file mode 100644 index 0aa14967bf..0000000000 --- a/jscomp/build_tests/super_errors/expected/primitives9.re.expected +++ /dev/null @@ -1,10 +0,0 @@ - - We've found a bug for you! - /.../fixtures/primitives9.re:1:14-20 - - 1 │ let a: int = "hello" - - This has type: string - Somewhere wanted: int - - You can convert string to int with Belt.Int.fromString. \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/syntaxErrors1.re.expected b/jscomp/build_tests/super_errors/expected/syntaxErrors1.re.expected deleted file mode 100644 index 73d52d7cf6..0000000000 --- a/jscomp/build_tests/super_errors/expected/syntaxErrors1.re.expected +++ /dev/null @@ -1,9 +0,0 @@ -File "/.../fixtures/syntaxErrors1.re", line 1, characters 10-12: -Error: syntax error, consider adding a `;' before - - We've found a bug for you! - /.../fixtures/syntaxErrors1.re - - There's been an error running Reason's parser on a file. - If the message doesn't help, check for errors slightly above. - Please file an issue on github.com/facebook/reason. Thanks! \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/syntaxErrors2.re.expected b/jscomp/build_tests/super_errors/expected/syntaxErrors2.re.expected deleted file mode 100644 index 8c94497435..0000000000 --- a/jscomp/build_tests/super_errors/expected/syntaxErrors2.re.expected +++ /dev/null @@ -1,9 +0,0 @@ -File "/.../fixtures/syntaxErrors2.re", line 2, characters 40-41: -Error: Syntax error - - We've found a bug for you! - /.../fixtures/syntaxErrors2.re - - There's been an error running Reason's parser on a file. - If the message doesn't help, check for errors slightly above. - Please file an issue on github.com/facebook/reason. Thanks! \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/syntaxErrors3.re.expected b/jscomp/build_tests/super_errors/expected/syntaxErrors3.re.expected deleted file mode 100644 index d68d5c177e..0000000000 --- a/jscomp/build_tests/super_errors/expected/syntaxErrors3.re.expected +++ /dev/null @@ -1,9 +0,0 @@ -File "/.../fixtures/syntaxErrors3.re", line 1, characters 19-20: -Error: Unclosed "(" (opened line 1, column 18) - - We've found a bug for you! - /.../fixtures/syntaxErrors3.re - - There's been an error running Reason's parser on a file. - If the message doesn't help, check for errors slightly above. - Please file an issue on github.com/facebook/reason. Thanks! \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/syntaxErrors4.re.expected b/jscomp/build_tests/super_errors/expected/syntaxErrors4.re.expected deleted file mode 100644 index 703c14e640..0000000000 --- a/jscomp/build_tests/super_errors/expected/syntaxErrors4.re.expected +++ /dev/null @@ -1,18 +0,0 @@ - - We've found a bug for you! - /.../fixtures/syntaxErrors4.re:5:13-21:3 - - 3 │ /* */ - 4 │ /* */ -  5 │ let a:int = "asdaaaaaaaaaaaaaaaaaaaaa -  6 │ aa -  . │ ... - 20 │ aa - 21 │ aa" - 22 │ /* */ - 23 │ /* */ - - This has type: string - Somewhere wanted: int - - You can convert string to int with Belt.Int.fromString. \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/syntaxErrors5.re.expected b/jscomp/build_tests/super_errors/expected/syntaxErrors5.re.expected deleted file mode 100644 index 6294c7c78f..0000000000 --- a/jscomp/build_tests/super_errors/expected/syntaxErrors5.re.expected +++ /dev/null @@ -1,9 +0,0 @@ -File "/.../fixtures/syntaxErrors5.re", line 2, characters 0-0: -Error: Unclosed "(" (opened line 1, column 8) - - We've found a bug for you! - /.../fixtures/syntaxErrors5.re - - There's been an error running Reason's parser on a file. - If the message doesn't help, check for errors slightly above. - Please file an issue on github.com/facebook/reason. Thanks! \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/type1.re.expected b/jscomp/build_tests/super_errors/expected/type1.re.expected deleted file mode 100644 index 4ff660fcb6..0000000000 --- a/jscomp/build_tests/super_errors/expected/type1.re.expected +++ /dev/null @@ -1,10 +0,0 @@ - - We've found a bug for you! - /.../fixtures/type1.re:1:9-10 - - 1 │ let x = 2. + 2; - - This has type: float - Somewhere wanted: int - - You can convert float to int with Belt.Float.toInt.If this is a literal, you want a number without a trailing dot (e.g. 20). \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/uncurry_in_curry.re.expected b/jscomp/build_tests/super_errors/expected/uncurry_in_curry.re.expected deleted file mode 100644 index 2e2ebe545e..0000000000 --- a/jscomp/build_tests/super_errors/expected/uncurry_in_curry.re.expected +++ /dev/null @@ -1,15 +0,0 @@ - - We've found a bug for you! - /.../fixtures/uncurry_in_curry.re:3:1 - - 1 │ let f = (.a,b) => a + b; - 2 │ - 3 │ f(2,2); - - This is an uncurried ReScript function. It must be applied with a dot. - - Like this: foo(. a, b) - Not like this: foo(a, b) - - This guarantees that your function is fully applied. More info here: - https://rescript-lang.org/docs/manual/latest/function#uncurried-function \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/unused_warnings.re.expected b/jscomp/build_tests/super_errors/expected/unused_warnings.re.expected deleted file mode 100644 index a75f956a57..0000000000 --- a/jscomp/build_tests/super_errors/expected/unused_warnings.re.expected +++ /dev/null @@ -1,19 +0,0 @@ - - Warning number 32 - /.../fixtures/unused_warnings.re:1:5 - - 1 │ let a = 3; - 2 │ let a = 33 + 3; - 3 │ let a = 33 + 3 + 3; - - unused value a. - - - Warning number 32 - /.../fixtures/unused_warnings.re:2:5 - - 1 │ let a = 3; - 2 │ let a = 33 + 3; - 3 │ let a = 33 + 3 + 3; - - unused value a. \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/warnings1.re.expected b/jscomp/build_tests/super_errors/expected/warnings1.re.expected deleted file mode 100644 index f03c2be72c..0000000000 --- a/jscomp/build_tests/super_errors/expected/warnings1.re.expected +++ /dev/null @@ -1,12 +0,0 @@ - - We've found a bug for you! - /.../fixtures/warnings1.re:3:3-7 - - 1 │ let x = (a, b) => a + b; - 2 │ let z = () => { - 3 │ x(10); - 4 │ 10 - 5 │ }; - - This has type: int => int - Somewhere wanted: unit \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/warnings2.re.expected b/jscomp/build_tests/super_errors/expected/warnings2.re.expected deleted file mode 100644 index abff52b4a8..0000000000 --- a/jscomp/build_tests/super_errors/expected/warnings2.re.expected +++ /dev/null @@ -1,11 +0,0 @@ - - We've found a bug for you! - /.../fixtures/warnings2.re:2:3-4 - - 1 │ let z = () => { - 2 │ 10; - 3 │ 10 - 4 │ }; - - This has type: int - Somewhere wanted: unit \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/expected/warnings3.re.expected b/jscomp/build_tests/super_errors/expected/warnings3.re.expected deleted file mode 100644 index ecdc6c28d7..0000000000 --- a/jscomp/build_tests/super_errors/expected/warnings3.re.expected +++ /dev/null @@ -1,32 +0,0 @@ - - Warning number 3 - /.../fixtures/warnings3.re:1:9-23 - - 1 │ let _ = string_of_float(34.) - 2 │ let _ = string_of_float(34.) - 3 │ let _ = string_of_float(34.) - - deprecated: Pervasives.string_of_float -Please use Js.Float.toString instead, string_of_float generates unparseable floats - - - Warning number 3 - /.../fixtures/warnings3.re:2:9-23 - - 1 │ let _ = string_of_float(34.) - 2 │ let _ = string_of_float(34.) - 3 │ let _ = string_of_float(34.) - - deprecated: Pervasives.string_of_float -Please use Js.Float.toString instead, string_of_float generates unparseable floats - - - Warning number 3 - /.../fixtures/warnings3.re:3:9-23 - - 1 │ let _ = string_of_float(34.) - 2 │ let _ = string_of_float(34.) - 3 │ let _ = string_of_float(34.) - - deprecated: Pervasives.string_of_float -Please use Js.Float.toString instead, string_of_float generates unparseable floats \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/fixtures/arity_mismatch.re b/jscomp/build_tests/super_errors/fixtures/arity_mismatch.re deleted file mode 100644 index 50323b5d89..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/arity_mismatch.re +++ /dev/null @@ -1,3 +0,0 @@ - -let makeVar = (. ~f, ()) => 34; -let makeVariables = makeVar(. ~f=f => f); \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/fixtures/arity_mismatch2.re b/jscomp/build_tests/super_errors/fixtures/arity_mismatch2.re deleted file mode 100644 index 85455e45a5..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/arity_mismatch2.re +++ /dev/null @@ -1,3 +0,0 @@ - -let makeVar = (. f, ()) => 34; -let makeVariables = makeVar(. 1,2,3); \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/fixtures/arity_mismatch3.re b/jscomp/build_tests/super_errors/fixtures/arity_mismatch3.re deleted file mode 100644 index 5f66a9b5b6..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/arity_mismatch3.re +++ /dev/null @@ -1 +0,0 @@ -Belt.Array.mapU([||], (. a, b) => 1); \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/fixtures/bucklescript.re b/jscomp/build_tests/super_errors/fixtures/bucklescript.re deleted file mode 100644 index 1e99b46bb9..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/bucklescript.re +++ /dev/null @@ -1,4 +0,0 @@ -/* bs error */ -let app = [@bs] (f, x, y) => f(x); - -app(((x) => x + 1), 2); diff --git a/jscomp/build_tests/super_errors/fixtures/collections.re b/jscomp/build_tests/super_errors/fixtures/collections.re deleted file mode 100644 index 6d384c40e3..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/collections.re +++ /dev/null @@ -1,2 +0,0 @@ -/* wrong type in a list */ -[1, 2, "Hello"] -> ignore; diff --git a/jscomp/build_tests/super_errors/fixtures/curry_in_uncurry.re b/jscomp/build_tests/super_errors/fixtures/curry_in_uncurry.re deleted file mode 100644 index eb38283802..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/curry_in_uncurry.re +++ /dev/null @@ -1,3 +0,0 @@ -let f = (a,b) => a + b; - -f(.2,2)->Js.log; \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/fixtures/highlighting1.re b/jscomp/build_tests/super_errors/fixtures/highlighting1.re deleted file mode 100644 index 06db605fc4..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/highlighting1.re +++ /dev/null @@ -1,3 +0,0 @@ -let a: int = "hel - -lo"; \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/fixtures/highlighting2.re b/jscomp/build_tests/super_errors/fixtures/highlighting2.re deleted file mode 100644 index 661f336059..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/highlighting2.re +++ /dev/null @@ -1,4 +0,0 @@ - - let a: int = "hel - - lo"; diff --git a/jscomp/build_tests/super_errors/fixtures/highlighting3.re b/jscomp/build_tests/super_errors/fixtures/highlighting3.re deleted file mode 100644 index ff5ad5ccf0..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/highlighting3.re +++ /dev/null @@ -1,4 +0,0 @@ - -let a: int = "helllllll - -loooooooooooooo"; diff --git a/jscomp/build_tests/super_errors/fixtures/highlighting4.re b/jscomp/build_tests/super_errors/fixtures/highlighting4.re deleted file mode 100644 index f4ba81f932..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/highlighting4.re +++ /dev/null @@ -1,5 +0,0 @@ -[@warnerror "A"]; -/* single char highlighted */ -[@deprecated] -type a = int; -type b = a diff --git a/jscomp/build_tests/super_errors/fixtures/highlighting5.re b/jscomp/build_tests/super_errors/fixtures/highlighting5.re deleted file mode 100644 index 332abf325a..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/highlighting5.re +++ /dev/null @@ -1,2 +0,0 @@ -/* overflows in the terminal */ -let a: int = "helllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll"; diff --git a/jscomp/build_tests/super_errors/fixtures/highlighting6.re b/jscomp/build_tests/super_errors/fixtures/highlighting6.re deleted file mode 100644 index 7b2879245d..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/highlighting6.re +++ /dev/null @@ -1,2 +0,0 @@ -let aaaaa = 10; -let b = aaaab; diff --git a/jscomp/build_tests/super_errors/fixtures/method_arity_mismatch.re b/jscomp/build_tests/super_errors/fixtures/method_arity_mismatch.re deleted file mode 100644 index 825706f7ed..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/method_arity_mismatch.re +++ /dev/null @@ -1,4 +0,0 @@ -let f = ( obj ) => { - obj##hi (1,2); - obj##hi (1) -} \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/fixtures/modules1.re b/jscomp/build_tests/super_errors/fixtures/modules1.re deleted file mode 100644 index ae30f7bac0..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/modules1.re +++ /dev/null @@ -1 +0,0 @@ -let b = Foo.b; diff --git a/jscomp/build_tests/super_errors/fixtures/modules2.re b/jscomp/build_tests/super_errors/fixtures/modules2.re deleted file mode 100644 index bd9348978d..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/modules2.re +++ /dev/null @@ -1 +0,0 @@ -let b = List.b; \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/fixtures/modules3.re b/jscomp/build_tests/super_errors/fixtures/modules3.re deleted file mode 100644 index b801902c15..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/modules3.re +++ /dev/null @@ -1,18 +0,0 @@ -module A = { - module B = { - module C = { - module D = { - let aaaa = 1; - } - } - } -}; - -let asd = A.B.C.D.aaa; - - -/* there's another, unrelated test, that we're just gonna paste here. We won't -run this, because CI and macOS give different results because of the way path -sensitivity is handled */ - -/*let asd = JS.toOption*/ diff --git a/jscomp/build_tests/super_errors/fixtures/moreArguments1.re b/jscomp/build_tests/super_errors/fixtures/moreArguments1.re deleted file mode 100644 index 4a20a6359e..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/moreArguments1.re +++ /dev/null @@ -1,2 +0,0 @@ -let x = (~a, ~b) => a + b; -let y = x(~a=2) + 2; diff --git a/jscomp/build_tests/super_errors/fixtures/moreArguments2.re b/jscomp/build_tests/super_errors/fixtures/moreArguments2.re deleted file mode 100644 index 2577d6d8bb..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/moreArguments2.re +++ /dev/null @@ -1,2 +0,0 @@ -let x = (a, b) => a + b; -let y = x(2) + 2; diff --git a/jscomp/build_tests/super_errors/fixtures/moreArguments3.re b/jscomp/build_tests/super_errors/fixtures/moreArguments3.re deleted file mode 100644 index 6c59891979..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/moreArguments3.re +++ /dev/null @@ -1,2 +0,0 @@ -let x = (a, b, c, d) => a + b; -let y = x(2) + 2; diff --git a/jscomp/build_tests/super_errors/fixtures/moreArguments4.re b/jscomp/build_tests/super_errors/fixtures/moreArguments4.re deleted file mode 100644 index dda84b298a..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/moreArguments4.re +++ /dev/null @@ -1,2 +0,0 @@ -let x = (a, ~b, ~c, ~d) => a + b; -let y = x(2) + 2; diff --git a/jscomp/build_tests/super_errors/fixtures/moreArguments5.re b/jscomp/build_tests/super_errors/fixtures/moreArguments5.re deleted file mode 100644 index c587ba9eb1..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/moreArguments5.re +++ /dev/null @@ -1,5 +0,0 @@ -let module Sub = { - type a = {a: int}; -}; -let x = (a, b, c, d) => {Sub.a: 2}; -let y = x(2).Sub.a; diff --git a/jscomp/build_tests/super_errors/fixtures/partial_app.re b/jscomp/build_tests/super_errors/fixtures/partial_app.re deleted file mode 100644 index e58d42e515..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/partial_app.re +++ /dev/null @@ -1,5 +0,0 @@ -let f = (a,b,c) => { - a + b + c -}; - -f (1,2); diff --git a/jscomp/build_tests/super_errors/fixtures/primitives1.re b/jscomp/build_tests/super_errors/fixtures/primitives1.re deleted file mode 100644 index e6c9882fd8..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/primitives1.re +++ /dev/null @@ -1,2 +0,0 @@ -/* got float, wanted int */ -2. + 2; diff --git a/jscomp/build_tests/super_errors/fixtures/primitives10.re b/jscomp/build_tests/super_errors/fixtures/primitives10.re deleted file mode 100644 index 7b2879245d..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/primitives10.re +++ /dev/null @@ -1,2 +0,0 @@ -let aaaaa = 10; -let b = aaaab; diff --git a/jscomp/build_tests/super_errors/fixtures/primitives11.re b/jscomp/build_tests/super_errors/fixtures/primitives11.re deleted file mode 100644 index 77e13b21eb..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/primitives11.re +++ /dev/null @@ -1,5 +0,0 @@ -type aa = option(string) -type bb = option(int) -type a = option(aa) -type b = option(bb) -let a:a = (Some(Some(5)):b) diff --git a/jscomp/build_tests/super_errors/fixtures/primitives2.re b/jscomp/build_tests/super_errors/fixtures/primitives2.re deleted file mode 100644 index 900b659cf7..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/primitives2.re +++ /dev/null @@ -1,2 +0,0 @@ -/* got int, wanted string */ -2 ++ " things"; diff --git a/jscomp/build_tests/super_errors/fixtures/primitives3.re b/jscomp/build_tests/super_errors/fixtures/primitives3.re deleted file mode 100644 index 50e808f9c8..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/primitives3.re +++ /dev/null @@ -1,3 +0,0 @@ -/* Too many arguments */ -let x = (a) => a + 2; -x(2, 4); diff --git a/jscomp/build_tests/super_errors/fixtures/primitives4.re b/jscomp/build_tests/super_errors/fixtures/primitives4.re deleted file mode 100644 index 66cf69fd65..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/primitives4.re +++ /dev/null @@ -1,3 +0,0 @@ -/* Not a function */ -let x = 10; -x(10); diff --git a/jscomp/build_tests/super_errors/fixtures/primitives5.re b/jscomp/build_tests/super_errors/fixtures/primitives5.re deleted file mode 100644 index 1a0d8b5355..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/primitives5.re +++ /dev/null @@ -1,3 +0,0 @@ -/* Not enough arguments */ -type x = X(int, float); -X(10) -> ignore; diff --git a/jscomp/build_tests/super_errors/fixtures/primitives6.re b/jscomp/build_tests/super_errors/fixtures/primitives6.re deleted file mode 100644 index 9d713d737b..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/primitives6.re +++ /dev/null @@ -1,3 +0,0 @@ -/* Wrong constructor argument */ -type x = X(int, float); -X(10, 10) -> ignore; diff --git a/jscomp/build_tests/super_errors/fixtures/primitives7.re b/jscomp/build_tests/super_errors/fixtures/primitives7.re deleted file mode 100644 index 957654fa34..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/primitives7.re +++ /dev/null @@ -1,3 +0,0 @@ -/* Wanted list(float), found list(int) */ -let a = [1,2,3]; -List.map(((n) => n +. 2.), a); diff --git a/jscomp/build_tests/super_errors/fixtures/primitives8.re b/jscomp/build_tests/super_errors/fixtures/primitives8.re deleted file mode 100644 index 0548e33100..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/primitives8.re +++ /dev/null @@ -1 +0,0 @@ -let asd = aaa; diff --git a/jscomp/build_tests/super_errors/fixtures/primitives9.re b/jscomp/build_tests/super_errors/fixtures/primitives9.re deleted file mode 100644 index f6637bd462..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/primitives9.re +++ /dev/null @@ -1 +0,0 @@ -let a: int = "hello" diff --git a/jscomp/build_tests/super_errors/fixtures/syntaxErrors1.re b/jscomp/build_tests/super_errors/fixtures/syntaxErrors1.re deleted file mode 100644 index 6b74450017..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/syntaxErrors1.re +++ /dev/null @@ -1 +0,0 @@ -let b = fo;;;;;;;;;;;;;;;; diff --git a/jscomp/build_tests/super_errors/fixtures/syntaxErrors2.re b/jscomp/build_tests/super_errors/fixtures/syntaxErrors2.re deleted file mode 100644 index 17cf272092..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/syntaxErrors2.re +++ /dev/null @@ -1,2 +0,0 @@ -let () = - I'm glad you're looking at this file =) diff --git a/jscomp/build_tests/super_errors/fixtures/syntaxErrors3.re b/jscomp/build_tests/super_errors/fixtures/syntaxErrors3.re deleted file mode 100644 index ab3926e0c4..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/syntaxErrors3.re +++ /dev/null @@ -1 +0,0 @@ -let a = print_char('a) diff --git a/jscomp/build_tests/super_errors/fixtures/syntaxErrors4.re b/jscomp/build_tests/super_errors/fixtures/syntaxErrors4.re deleted file mode 100644 index c411ea1b07..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/syntaxErrors4.re +++ /dev/null @@ -1,25 +0,0 @@ - -/* */ -/* */ -/* */ -let a:int = "asdaaaaaaaaaaaaaaaaaaaaa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa" -/* */ -/* */ -/* */ -/* */ diff --git a/jscomp/build_tests/super_errors/fixtures/syntaxErrors5.re b/jscomp/build_tests/super_errors/fixtures/syntaxErrors5.re deleted file mode 100644 index 9d9c5c3b8e..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/syntaxErrors5.re +++ /dev/null @@ -1 +0,0 @@ -let a = (1, 2 diff --git a/jscomp/build_tests/super_errors/fixtures/type1.re b/jscomp/build_tests/super_errors/fixtures/type1.re deleted file mode 100644 index e20d8bf47b..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/type1.re +++ /dev/null @@ -1 +0,0 @@ -let x = 2. + 2; diff --git a/jscomp/build_tests/super_errors/fixtures/uncurry_in_curry.re b/jscomp/build_tests/super_errors/fixtures/uncurry_in_curry.re deleted file mode 100644 index f8ad4eff6b..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/uncurry_in_curry.re +++ /dev/null @@ -1,3 +0,0 @@ -let f = (.a,b) => a + b; - -f(2,2); \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/fixtures/unused_warnings.re b/jscomp/build_tests/super_errors/fixtures/unused_warnings.re deleted file mode 100644 index a98bafcb9e..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/unused_warnings.re +++ /dev/null @@ -1,3 +0,0 @@ -let a = 3; -let a = 33 + 3; -let a = 33 + 3 + 3; \ No newline at end of file diff --git a/jscomp/build_tests/super_errors/fixtures/warnings1.re b/jscomp/build_tests/super_errors/fixtures/warnings1.re deleted file mode 100644 index 41a6a0097d..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/warnings1.re +++ /dev/null @@ -1,5 +0,0 @@ -let x = (a, b) => a + b; -let z = () => { - x(10); - 10 -}; diff --git a/jscomp/build_tests/super_errors/fixtures/warnings2.re b/jscomp/build_tests/super_errors/fixtures/warnings2.re deleted file mode 100644 index f945a5b840..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/warnings2.re +++ /dev/null @@ -1,4 +0,0 @@ -let z = () => { - 10; - 10 -}; diff --git a/jscomp/build_tests/super_errors/fixtures/warnings3.re b/jscomp/build_tests/super_errors/fixtures/warnings3.re deleted file mode 100644 index 92498ef2ad..0000000000 --- a/jscomp/build_tests/super_errors/fixtures/warnings3.re +++ /dev/null @@ -1,3 +0,0 @@ -let _ = string_of_float(34.) -let _ = string_of_float(34.) -let _ = string_of_float(34.) diff --git a/jscomp/build_tests/super_errors/input.js b/jscomp/build_tests/super_errors/input.js deleted file mode 100644 index db27a4ba67..0000000000 --- a/jscomp/build_tests/super_errors/input.js +++ /dev/null @@ -1,64 +0,0 @@ -const fs = require('fs') -const path = require('path') -const child_process = require('child_process') - - -var bsc = path.join(__dirname,'..','..','..',process.platform,'bsc.exe') -// var refmt = path.join(__dirname,'..','..','..','lib','refmt.exe') - - -// work around CI issue -// child_process.execSync(`chmod u+x ${refmt}`) - -const expectedDir = path.join(__dirname, 'expected') - -const fixtures = fs - .readdirSync(path.join(__dirname, 'fixtures')) - .filter(fileName => path.extname(fileName) === '.re') - -// const runtime = path.join(__dirname, '..', '..', 'runtime') -const prefix = `${bsc} -bs-re-out -w +A` - -const updateTests = process.argv[2] === 'update' - -function postProcessErrorOutput(output) { - output = output.trimRight() - output = output.replace(/\/[^ ]+?jscomp\/build_tests\/super_errors\//g, '/.../') - output = output.replace(/[^ ]+?\/refmt.exe /gim, '/.../refmt.exe ') - return output -} - -let doneTasksCount = 0 -let atLeastOneTaskFailed = false - -fixtures.forEach(fileName => { - const fullFilePath = path.join(__dirname, 'fixtures', fileName) - const command = `${prefix} -color always -bs-super-errors ${fullFilePath}` - console.log(`running ${command}`) - child_process.exec(command, (err, stdout, stderr) => { - doneTasksCount++ - // careful of: - // - warning test that actually succeeded in compiling (warning's still in stderr, so the code path is shared here) - // - accidentally succeeding tests (not likely in this context), - // actual, correctly erroring test case - const actualErrorOutput = postProcessErrorOutput(stderr.toString()) - const expectedFilePath = path.join(expectedDir, fileName + '.expected') - if (updateTests) { - fs.writeFileSync(expectedFilePath, actualErrorOutput) - } else { - const expectedErrorOutput = postProcessErrorOutput(fs.readFileSync(expectedFilePath, {encoding: 'utf-8'})) - if (expectedErrorOutput !== actualErrorOutput) { - console.error(`The old and new error output for the test ${fullFilePath} aren't the same`) - console.error('\n=== Old:') - console.error(expectedErrorOutput) - console.error('\n=== New:') - console.error(actualErrorOutput) - atLeastOneTaskFailed = true - } - - if (doneTasksCount === fixtures.length && atLeastOneTaskFailed) { - process.exit(1) - } - } - }) -}) diff --git a/jscomp/build_tests/top/.gitignore b/jscomp/build_tests/top/.gitignore deleted file mode 100644 index 73fc816200..0000000000 --- a/jscomp/build_tests/top/.gitignore +++ /dev/null @@ -1,27 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -.bsb.lock -*.bs.js \ No newline at end of file diff --git a/jscomp/build_tests/top/README.md b/jscomp/build_tests/top/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/top/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/top/bsconfig.json b/jscomp/build_tests/top/bsconfig.json deleted file mode 100644 index 130a8cfb7e..0000000000 --- a/jscomp/build_tests/top/bsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "a0002", - "version": "0.1.0", - "sources": [{ - "dir" : ".", - "subdirs" : false - }, { - "dir": "re", - "files" : { - "slow-re": "hexll\\.*.ml" - }}, - {"dir":"files", - "files" : ["hello00.ml"] - - }], - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "suffix": ".bs.js", - "bs-dependencies": [ - ], - "warnings": {"error" : "+101"}, - "refmt": 3 -} diff --git a/jscomp/build_tests/top/demo.bs.js b/jscomp/build_tests/top/demo.bs.js deleted file mode 100644 index d0f60f3390..0000000000 --- a/jscomp/build_tests/top/demo.bs.js +++ /dev/null @@ -1,7 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE -'use strict'; - - -console.log("Hello, BuckleScript"); - -/* Not a pure module */ diff --git a/jscomp/build_tests/top/demo.ml b/jscomp/build_tests/top/demo.ml deleted file mode 100644 index 923b77316d..0000000000 --- a/jscomp/build_tests/top/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let () = Js.log "Hello, BuckleScript" \ No newline at end of file diff --git a/jscomp/build_tests/top/files/hello00.ml b/jscomp/build_tests/top/files/hello00.ml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/top/files/hello01.ml b/jscomp/build_tests/top/files/hello01.ml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/top/input.js b/jscomp/build_tests/top/input.js deleted file mode 100644 index 355bebf075..0000000000 --- a/jscomp/build_tests/top/input.js +++ /dev/null @@ -1,22 +0,0 @@ -//@ts-check -var cp = require("child_process"); -var path = require("path"); -var assert = require("assert"); -var output = cp.execSync(`bsb -- -t targets`, { - encoding: "utf8", - cwd: __dirname -}); - -var cmjTargets = output - .split("\n") - .filter(Boolean) - .map(x => x.split(":")[0]) - .filter(x => x.endsWith(".cmj")) - .map(x => path.basename(x)) - .sort(); -cmjTargets.sort() -var expected = ["demo.cmj", "hello00.cmj","hexll..cmj",'hexll.cmj'] -expected.sort() -assert.deepEqual(cmjTargets, expected); - - diff --git a/jscomp/build_tests/top/package.json b/jscomp/build_tests/top/package.json deleted file mode 100644 index d68ef3ddf8..0000000000 --- a/jscomp/build_tests/top/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "a0002", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^5.0.5" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/top/re/hello.ml b/jscomp/build_tests/top/re/hello.ml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/top/re/hexll..ml b/jscomp/build_tests/top/re/hexll..ml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/top/re/hexll.ml b/jscomp/build_tests/top/re/hexll.ml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/top/re/hexll0.ml b/jscomp/build_tests/top/re/hexll0.ml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/unicode/bsconfig.json b/jscomp/build_tests/unicode/bsconfig.json deleted file mode 100644 index 4cbd6b1184..0000000000 --- a/jscomp/build_tests/unicode/bsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name" : "unicode", - "sources" : { - "dir" : ".", - "subdirs" : true - - } -} \ No newline at end of file diff --git a/jscomp/build_tests/unicode/input.js b/jscomp/build_tests/unicode/input.js deleted file mode 100644 index a7755e3de5..0000000000 --- a/jscomp/build_tests/unicode/input.js +++ /dev/null @@ -1,13 +0,0 @@ -//@ts-check -var child_process = require("child_process"); - -console.log(child_process.execSync(`bsb`, { encoding: "utf8" })); - -var fs = require("fs"); -var path = require("path"); -var content = - "" + fs.readFileSync(path.join(__dirname, "lib", "bs", ".sourcedirs.json")); - -var assert = require("assert"); - -assert(JSON.parse(content).dirs.some(x => x.includes("📕annotation"))); diff --git "a/jscomp/build_tests/unicode/\360\237\223\225annotation/a.ml" "b/jscomp/build_tests/unicode/\360\237\223\225annotation/a.ml" deleted file mode 100644 index e69de29bb2..0000000000 diff --git "a/jscomp/build_tests/unicode/\360\237\223\227block/b.ml" "b/jscomp/build_tests/unicode/\360\237\223\227block/b.ml" deleted file mode 100644 index e69de29bb2..0000000000 diff --git "a/jscomp/build_tests/unicode/\360\237\223\231inline/c.ml" "b/jscomp/build_tests/unicode/\360\237\223\231inline/c.ml" deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jscomp/build_tests/warnerror/.gitignore b/jscomp/build_tests/warnerror/.gitignore deleted file mode 100644 index 1dd11f93b0..0000000000 --- a/jscomp/build_tests/warnerror/.gitignore +++ /dev/null @@ -1,27 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -.bsb.lock -/node_modules/ diff --git a/jscomp/build_tests/warnerror/README.md b/jscomp/build_tests/warnerror/README.md deleted file mode 100644 index b20ab1bade..0000000000 --- a/jscomp/build_tests/warnerror/README.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - diff --git a/jscomp/build_tests/warnerror/bsconfig.json b/jscomp/build_tests/warnerror/bsconfig.json deleted file mode 100644 index f019594a14..0000000000 --- a/jscomp/build_tests/warnerror/bsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "warnerror", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - }, - "bs-dependencies": [ "test"], - "warnings": { - "error" : "+101" - } -} diff --git a/jscomp/build_tests/warnerror/input.js b/jscomp/build_tests/warnerror/input.js deleted file mode 100644 index 4c52dbe354..0000000000 --- a/jscomp/build_tests/warnerror/input.js +++ /dev/null @@ -1,13 +0,0 @@ -var cp = require("child_process"); -var assert = require("assert"); - -var out = cp.spawnSync(`npx bsb -make-world`, { - encoding: "utf-8", - shell: true, -}); -if (out.error) { - throw out.error; -} -if (out.status !== 0) { - assert.fail(out.stderr + "\n" + out.stdout); -} diff --git a/jscomp/build_tests/warnerror/node_modules/test/.gitignore b/jscomp/build_tests/warnerror/node_modules/test/.gitignore deleted file mode 100644 index 1dd11f93b0..0000000000 --- a/jscomp/build_tests/warnerror/node_modules/test/.gitignore +++ /dev/null @@ -1,27 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -.bsb.lock -/node_modules/ diff --git a/jscomp/build_tests/warnerror/node_modules/test/README.md b/jscomp/build_tests/warnerror/node_modules/test/README.md deleted file mode 100644 index b20ab1bade..0000000000 --- a/jscomp/build_tests/warnerror/node_modules/test/README.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - diff --git a/jscomp/build_tests/warnerror/node_modules/test/bsconfig.json b/jscomp/build_tests/warnerror/node_modules/test/bsconfig.json deleted file mode 100644 index 489a5694d5..0000000000 --- a/jscomp/build_tests/warnerror/node_modules/test/bsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "test", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - }, - "bsc-flags" : ["-warn-error", "@a"] - -} diff --git a/jscomp/build_tests/warnerror/node_modules/test/package.json b/jscomp/build_tests/warnerror/node_modules/test/package.json deleted file mode 100644 index d1beeac7ad..0000000000 --- a/jscomp/build_tests/warnerror/node_modules/test/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "test", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^8.4.0-dev.1" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/warnerror/node_modules/test/src/demo.ml b/jscomp/build_tests/warnerror/node_modules/test/src/demo.ml deleted file mode 100644 index cf9c4a54ef..0000000000 --- a/jscomp/build_tests/warnerror/node_modules/test/src/demo.ml +++ /dev/null @@ -1,8 +0,0 @@ - - -let a = 3 -let a = 2 - -let f a b c = a + b + c - -;; f 1 2 \ No newline at end of file diff --git a/jscomp/build_tests/warnerror/package.json b/jscomp/build_tests/warnerror/package.json deleted file mode 100644 index a161ec3762..0000000000 --- a/jscomp/build_tests/warnerror/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "warnerror", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^8.4.0-dev.1" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/warnerror/src/hey.ml b/jscomp/build_tests/warnerror/src/hey.ml deleted file mode 100644 index 923b77316d..0000000000 --- a/jscomp/build_tests/warnerror/src/hey.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let () = Js.log "Hello, BuckleScript" \ No newline at end of file diff --git a/jscomp/build_tests/weird_names/.gitignore b/jscomp/build_tests/weird_names/.gitignore deleted file mode 100644 index 1c2bb277a5..0000000000 --- a/jscomp/build_tests/weird_names/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -.bsb.lock \ No newline at end of file diff --git a/jscomp/build_tests/weird_names/README.md b/jscomp/build_tests/weird_names/README.md deleted file mode 100644 index b20ab1bade..0000000000 --- a/jscomp/build_tests/weird_names/README.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - diff --git a/jscomp/build_tests/weird_names/bsconfig.json b/jscomp/build_tests/weird_names/bsconfig.json deleted file mode 100644 index 1923c110eb..0000000000 --- a/jscomp/build_tests/weird_names/bsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "weird_names", - "version": "0.1.0", - "sources": { - "dir" : "src", - "subdirs" : true - } -} diff --git a/jscomp/build_tests/weird_names/input.js b/jscomp/build_tests/weird_names/input.js deleted file mode 100644 index c2b3f9a1cb..0000000000 --- a/jscomp/build_tests/weird_names/input.js +++ /dev/null @@ -1,27 +0,0 @@ -var cp = require("child_process"); -var assert = require("assert"); -var path = require("path"); - -var out = cp.spawnSync(`bsb`, { encoding: "utf8" }); - -console.log(out.stdout); -if(out.stderr !== ""){ - assert.fail(out.stderr) -} - - -let files = [ - "_app.res", - "[...params_max_3].res", - "[...params].res", - "[[...params]].res", - "[slug_or_ID].res", - "404.res", -]; - -for (let f of files) { - let { name } = path.parse(f); - let m = `./lib/js/src/${name}.js`; - // console.log(m); - assert.deepEqual(require(m).a, 1); -} diff --git a/jscomp/build_tests/weird_names/package.json b/jscomp/build_tests/weird_names/package.json deleted file mode 100644 index c42896ded5..0000000000 --- a/jscomp/build_tests/weird_names/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "weird_names", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^8.3.0-dev.2" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/weird_names/src/404.res b/jscomp/build_tests/weird_names/src/404.res deleted file mode 100644 index c311b2ea80..0000000000 --- a/jscomp/build_tests/weird_names/src/404.res +++ /dev/null @@ -1,2 +0,0 @@ -module A = Demo -let a = 1 \ No newline at end of file diff --git a/jscomp/build_tests/weird_names/src/[...params].res b/jscomp/build_tests/weird_names/src/[...params].res deleted file mode 100644 index c311b2ea80..0000000000 --- a/jscomp/build_tests/weird_names/src/[...params].res +++ /dev/null @@ -1,2 +0,0 @@ -module A = Demo -let a = 1 \ No newline at end of file diff --git a/jscomp/build_tests/weird_names/src/[...params_max_3].res b/jscomp/build_tests/weird_names/src/[...params_max_3].res deleted file mode 100644 index c311b2ea80..0000000000 --- a/jscomp/build_tests/weird_names/src/[...params_max_3].res +++ /dev/null @@ -1,2 +0,0 @@ -module A = Demo -let a = 1 \ No newline at end of file diff --git a/jscomp/build_tests/weird_names/src/[[...params]].res b/jscomp/build_tests/weird_names/src/[[...params]].res deleted file mode 100644 index c311b2ea80..0000000000 --- a/jscomp/build_tests/weird_names/src/[[...params]].res +++ /dev/null @@ -1,2 +0,0 @@ -module A = Demo -let a = 1 \ No newline at end of file diff --git a/jscomp/build_tests/weird_names/src/[slug_or_ID].res b/jscomp/build_tests/weird_names/src/[slug_or_ID].res deleted file mode 100644 index c311b2ea80..0000000000 --- a/jscomp/build_tests/weird_names/src/[slug_or_ID].res +++ /dev/null @@ -1,2 +0,0 @@ -module A = Demo -let a = 1 \ No newline at end of file diff --git a/jscomp/build_tests/weird_names/src/_app.res b/jscomp/build_tests/weird_names/src/_app.res deleted file mode 100644 index c311b2ea80..0000000000 --- a/jscomp/build_tests/weird_names/src/_app.res +++ /dev/null @@ -1,2 +0,0 @@ -module A = Demo -let a = 1 \ No newline at end of file diff --git a/jscomp/build_tests/weird_names/src/demo.ml b/jscomp/build_tests/weird_names/src/demo.ml deleted file mode 100644 index 067c6699cf..0000000000 --- a/jscomp/build_tests/weird_names/src/demo.ml +++ /dev/null @@ -1 +0,0 @@ -let a = 1 \ No newline at end of file diff --git a/jscomp/build_tests/white space/.gitignore b/jscomp/build_tests/white space/.gitignore deleted file mode 100644 index c476e05628..0000000000 --- a/jscomp/build_tests/white space/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/white space/bsconfig.json b/jscomp/build_tests/white space/bsconfig.json deleted file mode 100644 index 9764a3e016..0000000000 --- a/jscomp/build_tests/white space/bsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name" : "gg", - "bs-dependencies": [ - "xx" - ], - "sources" : ".", - "package-specs" : [{ - "module" : "es6-global" - ,"in-source": true - }], - "warnings": { - "number": "A", - "error" : true - } -} \ No newline at end of file diff --git a/jscomp/build_tests/white space/input.js b/jscomp/build_tests/white space/input.js deleted file mode 100644 index 881aa6c1f3..0000000000 --- a/jscomp/build_tests/white space/input.js +++ /dev/null @@ -1,27 +0,0 @@ - - -var r = require('../../../vendor/rollup.js') -var path = require('path') -var assert = require('assert') -var p = require('child_process') -try { - p.execSync(`bsb -make-world`,{cwd : __dirname, encoding : 'utf8', stdio:[0,1,2]}) - r.rollup( - { - input: path.join(__dirname, 'yy.js'), - } - ).then(bundle => { - return bundle.generate( - { - format: 'iife', - name: 'X' - }) - }).then(output => { - // console.log(output.code) - assert.ok(output.code.length < 1000, 'bundled success') - p.execSync(`bsb -clean-world`) - }) - -} finally { - -} diff --git a/jscomp/build_tests/white space/node_modules/xx/bsconfig.json b/jscomp/build_tests/white space/node_modules/xx/bsconfig.json deleted file mode 100644 index 8431e30ee4..0000000000 --- a/jscomp/build_tests/white space/node_modules/xx/bsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name" : "xx", - "sources" : "." -} \ No newline at end of file diff --git a/jscomp/build_tests/white space/node_modules/xx/xx.ml b/jscomp/build_tests/white space/node_modules/xx/xx.ml deleted file mode 100644 index f12c7fba65..0000000000 --- a/jscomp/build_tests/white space/node_modules/xx/xx.ml +++ /dev/null @@ -1,6 +0,0 @@ -let sum n = - let v = ref 0 in - for i = 0 to n do - v := !v + i - done ; - !v \ No newline at end of file diff --git a/jscomp/build_tests/white space/yy.ml b/jscomp/build_tests/white space/yy.ml deleted file mode 100644 index f857411027..0000000000 --- a/jscomp/build_tests/white space/yy.ml +++ /dev/null @@ -1,6 +0,0 @@ -type t = - | Foo - [@@bs.deriving jsConverter] - -let u = Xx.sum 3 - diff --git a/jscomp/build_tests/x-y/.gitignore b/jscomp/build_tests/x-y/.gitignore deleted file mode 100644 index 8f464d0527..0000000000 --- a/jscomp/build_tests/x-y/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin \ No newline at end of file diff --git a/jscomp/build_tests/x-y/README.md b/jscomp/build_tests/x-y/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/x-y/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/x-y/bsconfig.json b/jscomp/build_tests/x-y/bsconfig.json deleted file mode 100644 index b3d4a5550e..0000000000 --- a/jscomp/build_tests/x-y/bsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "x-y", - "version": "0.1.0", - "sources": [ - "x-src" - ] -} \ No newline at end of file diff --git a/jscomp/build_tests/x-y/input.js b/jscomp/build_tests/x-y/input.js deleted file mode 100644 index dd5f7c783a..0000000000 --- a/jscomp/build_tests/x-y/input.js +++ /dev/null @@ -1,3 +0,0 @@ -var p = require('child_process') - -p.execSync(`bsb`) \ No newline at end of file diff --git a/jscomp/build_tests/x-y/package.json b/jscomp/build_tests/x-y/package.json deleted file mode 100644 index 30958ce768..0000000000 --- a/jscomp/build_tests/x-y/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "x-y", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "license": "MIT", - "devDependencies": { - "bs-platform": "1.9.0" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/x-y/x-src/demo.ml b/jscomp/build_tests/x-y/x-src/demo.ml deleted file mode 100644 index 923b77316d..0000000000 --- a/jscomp/build_tests/x-y/x-src/demo.ml +++ /dev/null @@ -1,3 +0,0 @@ - - -let () = Js.log "Hello, BuckleScript" \ No newline at end of file diff --git a/jscomp/build_tests/xpkg/bsconfig.json b/jscomp/build_tests/xpkg/bsconfig.json deleted file mode 100644 index bc03a6009f..0000000000 --- a/jscomp/build_tests/xpkg/bsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name" : "_", - "sources" : "." -} \ No newline at end of file diff --git a/jscomp/build_tests/xpkg/input.js b/jscomp/build_tests/xpkg/input.js deleted file mode 100644 index ed9359f716..0000000000 --- a/jscomp/build_tests/xpkg/input.js +++ /dev/null @@ -1,11 +0,0 @@ -var p = require('child_process') -var assert = require('assert') -var fs = require('fs') -try { - var output = p.spawnSync(`bsb -regen`, { shell: true, encoding: 'utf8' }) - - assert.ok(output.stderr.match(/reserved package name/)) -} -finally { - -} \ No newline at end of file diff --git a/jscomp/build_tests/zerocycle/.gitignore b/jscomp/build_tests/zerocycle/.gitignore deleted file mode 100644 index ed88eec953..0000000000 --- a/jscomp/build_tests/zerocycle/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -*.exe -*.obj -*.out -*.compile -*.native -*.byte -*.cmo -*.annot -*.cmi -*.cmx -*.cmt -*.cmti -*.cma -*.a -*.cmxa -*.obj -*~ -*.annot -*.cmj -*.bak -lib/bs -*.mlast -*.mliast -.vscode -.merlin -*.bs.js \ No newline at end of file diff --git a/jscomp/build_tests/zerocycle/README.md b/jscomp/build_tests/zerocycle/README.md deleted file mode 100644 index 1c02d2a072..0000000000 --- a/jscomp/build_tests/zerocycle/README.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Build -``` -npm run build -``` - -# Watch - -``` -npm run watch -``` - - -# Editor -If you use `vscode`, Press `Windows + Shift + B` it will build automatically \ No newline at end of file diff --git a/jscomp/build_tests/zerocycle/bsconfig.json b/jscomp/build_tests/zerocycle/bsconfig.json deleted file mode 100644 index a342012732..0000000000 --- a/jscomp/build_tests/zerocycle/bsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "zerocycle", - "version": "0.1.0", - "sources": [ - "src" - ], - "package-specs": { - "module": "commonjs", - "in-source": true - }, - "suffix": ".bs.js", - "bs-dependencies": [ - // add your bs-dependencies here - ] -} \ No newline at end of file diff --git a/jscomp/build_tests/zerocycle/input.js b/jscomp/build_tests/zerocycle/input.js deleted file mode 100644 index ab20bcf8a8..0000000000 --- a/jscomp/build_tests/zerocycle/input.js +++ /dev/null @@ -1,7 +0,0 @@ - - -var p = require('child_process') -var assert = require('assert') -p.spawnSync(`bsb`,{encoding: 'utf8',cwd : __dirname}) - - diff --git a/jscomp/build_tests/zerocycle/package.json b/jscomp/build_tests/zerocycle/package.json deleted file mode 100644 index bb511661e2..0000000000 --- a/jscomp/build_tests/zerocycle/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "zerocycle", - "version": "0.1.0", - "scripts": { - "clean": "bsb -clean-world", - "build": "bsb -make-world", - "watch": "bsb -make-world -w" - }, - "keywords": [ - "BuckleScript" - ], - "author": "", - "license": "MIT", - "devDependencies": { - "bs-platform": "^2.0.1" - } -} \ No newline at end of file diff --git a/jscomp/build_tests/zerocycle/src/demo.ml b/jscomp/build_tests/zerocycle/src/demo.ml deleted file mode 100644 index 242d371668..0000000000 --- a/jscomp/build_tests/zerocycle/src/demo.ml +++ /dev/null @@ -1,4 +0,0 @@ - - -module Foo = struct -end \ No newline at end of file diff --git a/jscomp/build_tests/zerocycle/src/foo.ml b/jscomp/build_tests/zerocycle/src/foo.ml deleted file mode 100644 index 5f3c763a13..0000000000 --- a/jscomp/build_tests/zerocycle/src/foo.ml +++ /dev/null @@ -1,2 +0,0 @@ -open! Demo -include Foo \ No newline at end of file diff --git a/jscomp/main/dune b/jscomp/main/dune index d059a77833..a1ca49a29c 100644 --- a/jscomp/main/dune +++ b/jscomp/main/dune @@ -18,13 +18,6 @@ (flags :standard -open Melange_compiler_libs) (libraries common core cmdliner melange-compiler-libs)) -(executable - (public_name mel) - (package mel) - (modes native) - (modules mel mel_watcher) - (libraries mellib cmdliner luv)) - (test (name ounit_tests_main) (package melange) diff --git a/jscomp/main/mel.ml b/jscomp/main/mel.ml deleted file mode 100644 index a954b7a336..0000000000 --- a/jscomp/main/mel.ml +++ /dev/null @@ -1,226 +0,0 @@ -(* Copyright (C) 2015-2016 Bloomberg Finance L.P. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -open Cmdliner -open Mellib - -let () = Bsb_log.setup () -let ( // ) = Ext_path.combine - -let output_dune_project_if_does_not_exist proj_dir = - let dune_project = proj_dir // Literals.dune_project in - if Sys.file_exists dune_project then () - else - let ochan = open_out_bin dune_project in - output_string ochan "(lang dune 3.5)\n(using directory-targets 0.1)"; - close_out ochan - -let output_dune_file () = - let proj_dir = Mel_workspace.cwd in - (* /dune generation *) - let dune = proj_dir // Literals.dune in - let buf = Buffer.create 256 in - Buffer.add_string buf "\n\n(include "; - Buffer.add_string buf Literals.dune_mel; - Buffer.add_string buf ")\n\n"; - Bsb_ninja_targets.revise_dune dune buf; - output_dune_project_if_does_not_exist proj_dir - -let dune_command ?on_exit dune_args = - let args = "build" :: ("@" ^ Literals.mel_dune_alias) :: dune_args in - Bsb_log.info "@{Running:@} %s@." (String.concat " " args); - Bsb_unix.dune_command ?on_exit args - -let build_whole_project () = - let root_dir = Mel_workspace.cwd in - let dune_mel = root_dir // Literals.dune_mel in - let oc = open_out_bin dune_mel in - let (config, _dep_configs), source_meta = - Bsb_world.make_world_deps ~oc ~cwd:root_dir - in - if config.generate_merlin then - Bsb_merlin_gen.merlin_file_gen ~per_proj_dir:root_dir config; - Bsb_ninja_gen.output_ninja_and_namespace_map ~oc ~per_proj_dir:root_dir - ~root_dir ~package_kind:(Toplevel source_meta) config; - close_out oc; - - output_dune_file (); - source_meta - -module Common_opts = struct - type t = { verbose : bool } - - let make verbose = { verbose } - - let verbose_flag = - let doc = "Print debug output" in - Arg.(value & flag & info [ "v"; "verbose" ] ~doc) - - let copts_t = Term.(const make $ verbose_flag) -end - -type cli_options = { where : bool } - -module Actions = struct - let wrap_bsb ~opts:{ Common_opts.verbose } ~f = - if verbose then Bsb_log.verbose (); - try f () with - | Bsb_exception.Error e -> - Bsb_exception.print Format.err_formatter e; - Format.pp_print_newline Format.err_formatter (); - exit 2 - | Ext_json_parse.Error (start, _, e) -> - Format.fprintf Format.err_formatter - "File %S, line %d\n@{Error:@} %a@." start.pos_fname - start.pos_lnum Ext_json_parse.report_error e; - exit 2 - | Sys_error s -> - Format.fprintf Format.err_formatter "@{Error:@} %s@." s; - exit 2 - | e -> Ext_pervasives.reraise e - - let build opts watch_mode dune_args = - let task ?on_exit () = - wrap_bsb ~opts ~f:(fun () -> - let { Source_metadata.dirs; _ } = build_whole_project () in - { - Mel_watcher.Task.fd = dune_command ?on_exit dune_args; - paths = dirs; - }) - in - if watch_mode then - let { Source_metadata.dirs; _ } = - wrap_bsb ~opts ~f:(fun () -> build_whole_project ()) - in - let _p : Luv.Process.t = - wrap_bsb ~opts ~f:(fun () -> - dune_command - ~on_exit:(fun (_ : Luv.Process.t) ~exit_status:_ ~term_signal:_ -> - Format.eprintf "Waiting for filesystem changes...@."; - Mel_watcher.watch - ~task: - (task ~on_exit:(fun _ ~exit_status:_ ~term_signal:_ -> - Format.eprintf "Waiting for filesystem changes...@.")) - dirs) - dune_args) - in - () - else ignore (task () : Mel_watcher.Task.info); - ignore (Luv.Loop.run () : bool) - - let rules opts dune_args = - let _p : Luv.Process.t = - wrap_bsb ~opts ~f:(fun () -> - let _source_meta : Source_metadata.t = build_whole_project () in - Bsb_world.install_targets dune_args) - in - ignore (Luv.Loop.run () : bool) - - let clean opts dune_args = - let _p : Luv.Process.t = - wrap_bsb ~opts ~f:(fun () -> Bsb_clean.clean ~dune_args Mel_workspace.cwd) - in - ignore (Luv.Loop.run () : bool) - - let default opts { where } dune_args = - if where then print_endline (Filename.dirname Sys.executable_name) - else build opts false dune_args -end - -module Commands = struct - let watch_mode_flag = - let doc = "Rebuild the project when files change" in - Arg.(value & flag & info [ "w"; "watch" ] ~doc) - - let build dune_args = - let doc = "build the project in the current directory" in - let man = - [ - `S Manpage.s_description; - `P "Builds the Melange project in the current directory."; - ] - in - let info = Cmd.info "build" ~doc ~man in - Cmd.v info - Term.( - const Actions.build $ Common_opts.copts_t $ watch_mode_flag - $ const dune_args) - - let rules dune_args = - let doc = "Output the dune rules necessary to build the project" in - let man = - [ - `S Manpage.s_description; - `P - "Outputs the dune rules necessary to build the project in the \n\ - in the current directory and exits. This command does NOT build \n\ - the project."; - ] - in - let info = Cmd.info "rules" ~doc ~man in - Cmd.v info - Term.(const Actions.rules $ Common_opts.copts_t $ const dune_args) - - let clean dune_args = - let doc = "Clean the project" in - let man = - [ - `S Manpage.s_description; - `P "Cleans the project in the current directory and exits."; - ] - in - let info = Cmd.info "clean" ~doc ~man in - Cmd.v info - Term.(const Actions.clean $ Common_opts.copts_t $ const dune_args) - - let commands = [ build; rules; clean ] -end - -module CLI = struct - let where_flag = - let doc = "Print the location of the mel binary" in - Arg.(value & flag & info [ "where" ] ~doc) - - let parse_options where = { where } - - let default dune_args = - let make_bsb_options = Term.(const parse_options $ where_flag) in - Term.( - const Actions.default $ Common_opts.copts_t $ make_bsb_options - $ const dune_args) - - let run dune_args = - let open Cmdliner in - let doc = "the Melange buildpack" in - let info = Cmd.info "mel" ~version:Melange_version.version ~doc in - let default = default dune_args in - Cmd.group info ~default (List.map (fun f -> f dune_args) Commands.commands) -end - -let () = - let bsb_args, dune_args = Ext_cli_args.split_argv_at_separator Sys.argv in - exit - (Cmd.eval - ~argv:(Ext_cli_args.normalize_argv bsb_args) - (CLI.run (Array.to_list dune_args))) diff --git a/jscomp/main/mel_watcher.ml b/jscomp/main/mel_watcher.ml deleted file mode 100644 index ab3c3242b8..0000000000 --- a/jscomp/main/mel_watcher.ml +++ /dev/null @@ -1,176 +0,0 @@ -(* Copyright (C) 2022- Authors of Melange - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -open Mellib - -let extensions = - Literals. - [ - suffix_ml; - suffix_mli; - suffix_mll; - suffix_re; - suffix_rei; - suffix_res; - suffix_resi; - ] - -let timer = ref None - -let debounce ~f ms = - match !timer with - | Some t -> - Bsb_log.debug "Waiting... next run in %ims@." (Luv.Timer.get_due_in t) - | None -> ( - let ti = Result.get_ok (Luv.Timer.init ()) in - timer := Some ti; - match - Luv.Timer.start ti ms (fun () -> - f (); - timer := None) - with - | Ok () -> Bsb_log.debug "Started timer, running in %ims@." ms - | Error e -> - Bsb_log.warn "Error starting the timer: %s@." (Luv.Error.strerror e)) - -module Task = struct - type info = { fd : Luv.Process.t; paths : string list } - type t = unit -> info -end - -module Job = struct - type t = { - mutable fd : Luv.Process.t option; - mutable watchers : (string, Luv.FS_event.t) Hashtbl.t; - task : Task.t; - } - - let create ~task = { task; fd = None; watchers = Hashtbl.create 64 } - - let interrupt t = - Option.iter - (fun fd -> - if Luv.Handle.is_active fd then - match Luv.Process.kill fd Luv.Signal.sigterm with - | Ok () -> t.fd <- None - | Error e -> - Bsb_log.warn "Error trying to stop program:@\n %s" - (Luv.Error.strerror e)) - t.fd - - let restart ?started t = - debounce 150 ~f:(fun () -> - let new_task_info = - match t.fd with - | None -> t.task () - | Some fd -> - if Luv.Handle.is_active fd then ( - interrupt t; - t.task ()) - else t.task () - in - Option.iter (fun f -> f new_task_info) started; - t.fd <- Some new_task_info.fd) - - let stop_watchers t = - Hashtbl.iter - (fun _path watcher -> - let (_ : _ result) = Luv.FS_event.stop watcher in - ()) - t.watchers - - let stop t = - interrupt t; - stop_watchers t -end - -(* TODO: bail and exit on errors *) -let rec watch ~(job : Job.t) paths = - Ext_list.iter paths (fun path -> - if Hashtbl.mem job.watchers path then ( (* Already being watched *) ) - else - match Luv.FS_event.init () with - | Error e -> - Bsb_log.error "Error starting watcher for %s: %s@." path - (Luv.Error.strerror e) - | Ok watcher -> ( - let stat = Luv.File.Sync.stat path in - match stat with - | Error e -> - Bsb_log.error "Error starting watcher for %s: %s@." path - (Luv.Error.strerror e) - | Ok _stat -> - Hashtbl.replace job.watchers path watcher; - (* Source_metadata lists all directories, and computes the - entire set if `subdirs: true`, so we don't need the - recursive flag. *) - Luv.FS_event.start ~recursive:false ~stat:true watcher path - (function - | Error e -> - Bsb_log.error "Error watching %s: %s@." path - (Luv.Error.strerror e); - ignore (Luv.FS_event.stop watcher); - Luv.Handle.close watcher ignore - | Ok (file, _events) -> - let file_extension = Filename.extension file in - if Ext_list.mem_string extensions file_extension then ( - let new_watchers = Hashtbl.create 64 in - - let new_paths = - Ext_list.fold_left paths [] (fun acc path -> - match Hashtbl.find job.watchers path with - | prev_watcher -> - (* Remove existing watchers from the Hashtbl - and add them to the new table *) - Hashtbl.remove job.watchers path; - Hashtbl.replace new_watchers path prev_watcher; - acc - | exception Not_found -> - (* New watchers will be added on the recursive call *) - path :: acc) - in - (* Stop the previous watchers *) - Hashtbl.iter - (fun _ watcher -> - let (_ : _ result) = Luv.FS_event.stop watcher in - ()) - job.watchers; - (* Drop the old watchers before creating the new ones *) - job.watchers <- new_watchers; - - Job.restart ~started:(fun _ -> watch ~job new_paths) job)) - )) - -let watch ~task paths = - let job = Job.create ~task in - watch ~job paths; - match Luv.Signal.init () with - | Ok handle -> ( - let handler () = - prerr_endline "Exiting"; - Job.stop job; - Luv.Handle.close handle ignore - in - match Luv.Signal.start handle Luv.Signal.sigint handler with _ -> ()) - | Error _ -> () diff --git a/jscomp/main/mel_watcher.mli b/jscomp/main/mel_watcher.mli deleted file mode 100644 index b3e18bdbea..0000000000 --- a/jscomp/main/mel_watcher.mli +++ /dev/null @@ -1,30 +0,0 @@ -(* Copyright (C) 2022- Authors of Melange - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -module Task : sig - type info = { fd : Luv.Process.t; paths : string list } - type t = unit -> info -end - -val watch : task:Task.t -> string list -> unit diff --git a/jscomp/others/dune b/jscomp/others/dune index ade3c8f82e..d0173840ea 100644 --- a/jscomp/others/dune +++ b/jscomp/others/dune @@ -27,206 +27,206 @@ -w -9-20-61)) -; (rule -; (target belt_HashSetString.ml) -; (deps hashset.cppo.ml) -; (action -; (run cppo -D TYPE_STRING %{deps} -o %{target}))) - -; (rule -; (target belt_HashSetString.mli) -; (deps hashset.cppo.mli) -; (action -; (run cppo -D TYPE_STRING %{deps} -o %{target}))) - -; (rule -; (target belt_HashSetInt.ml) -; (deps hashset.cppo.ml) -; (action -; (run cppo -D TYPE_INT %{deps} -o %{target}))) - -; (rule -; (target belt_HashSetInt.mli) -; (deps hashset.cppo.mli) -; (action -; (run cppo -D TYPE_INT %{deps} -o %{target}))) - -; (rule -; (target belt_HashMapString.ml) -; (deps hashmap.cppo.ml) -; (action -; (run cppo -D TYPE_STRING %{deps} -o %{target}))) - -; (rule -; (target belt_HashMapString.mli) -; (deps hashmap.cppo.mli) -; (action -; (run cppo -D TYPE_STRING %{deps} -o %{target}))) - -; (rule -; (target belt_HashMapInt.ml) -; (deps hashmap.cppo.ml) -; (action -; (run cppo -D TYPE_INT %{deps} -o %{target}))) - -; (rule -; (target belt_HashMapInt.mli) -; (deps hashmap.cppo.mli) -; (action -; (run cppo -D TYPE_INT %{deps} -o %{target}))) - -; (rule -; (target belt_MapString.ml) -; (deps map.cppo.ml) -; (action -; (run cppo -D TYPE_STRING %{deps} -o %{target}))) - -; (rule -; (target belt_MapString.mli) -; (deps map.cppo.mli) -; (action -; (run cppo -D TYPE_STRING %{deps} -o %{target}))) - -; (rule -; (target belt_MapInt.ml) -; (deps map.cppo.ml) -; (action -; (run cppo -D TYPE_INT %{deps} -o %{target}))) - -; (rule -; (target belt_MapInt.mli) -; (deps map.cppo.mli) -; (action -; (run cppo -D TYPE_INT %{deps} -o %{target}))) - -; (rule -; (target belt_SetString.ml) -; (deps belt_Set.cppo.ml) -; (action -; (run cppo -D TYPE_STRING %{deps} -o %{target}))) - -; (rule -; (target belt_SetString.mli) -; (deps belt_Set.cppo.mli) -; (action -; (run cppo -D TYPE_STRING %{deps} -o %{target}))) - -; (rule -; (target belt_SetInt.ml) -; (deps belt_Set.cppo.ml) -; (action -; (run cppo -D TYPE_INT %{deps} -o %{target}))) - -; (rule -; (target belt_SetInt.mli) -; (deps belt_Set.cppo.mli) -; (action -; (run cppo -D TYPE_INT %{deps} -o %{target}))) - -; (rule -; (target belt_MutableMapString.ml) -; (deps mapm.cppo.ml) -; (action -; (run cppo -D TYPE_STRING %{deps} -o %{target}))) - -; (rule -; (target belt_MutableMapString.mli) -; (deps mapm.cppo.mli) -; (action -; (run cppo -D TYPE_STRING %{deps} -o %{target}))) - -; (rule -; (target belt_MutableMapInt.ml) -; (deps mapm.cppo.ml) -; (action -; (run cppo -D TYPE_INT %{deps} -o %{target}))) - -; (rule -; (target belt_MutableMapInt.mli) -; (deps mapm.cppo.mli) -; (action -; (run cppo -D TYPE_INT %{deps} -o %{target}))) - -; (rule -; (target belt_MutableSetString.ml) -; (deps setm.cppo.ml) -; (action -; (run cppo -D TYPE_STRING %{deps} -o %{target}))) - -; (rule -; (target belt_MutableSetString.mli) -; (deps setm.cppo.mli) -; (action -; (run cppo -D TYPE_STRING %{deps} -o %{target}))) - -; (rule -; (target belt_MutableSetInt.ml) -; (deps setm.cppo.ml) -; (action -; (run cppo -D TYPE_INT %{deps} -o %{target}))) - -; (rule -; (target belt_MutableSetInt.mli) -; (deps setm.cppo.mli) -; (action -; (run cppo -D TYPE_INT %{deps} -o %{target}))) - -; (rule -; (target belt_SortArrayString.ml) -; (deps sort.cppo.ml) -; (action -; (run cppo -D TYPE_STRING %{deps} -o %{target}))) - -; (rule -; (target belt_SortArrayString.mli) -; (deps sort.cppo.mli) -; (action -; (run cppo -D TYPE_STRING %{deps} -o %{target}))) - -; (rule -; (target belt_SortArrayInt.ml) -; (deps sort.cppo.ml) -; (action -; (run cppo -D TYPE_INT %{deps} -o %{target}))) - -; (rule -; (target belt_SortArrayInt.mli) -; (deps sort.cppo.mli) -; (action -; (run cppo -D TYPE_INT %{deps} -o %{target}))) - -; (rule -; (target belt_internalMapString.ml) -; (deps internal_map.cppo.ml) -; (action -; (run cppo -D TYPE_STRING %{deps} -o %{target}))) - -; (rule -; (target belt_internalMapInt.ml) -; (deps internal_map.cppo.ml) -; (action -; (run cppo -D TYPE_INT %{deps} -o %{target}))) - -; (rule -; (target belt_internalSetString.ml) -; (deps internal_set.cppo.ml) -; (action -; (run cppo -D TYPE_STRING %{deps} -o %{target}))) - -; (rule -; (target belt_internalSetInt.ml) -; (deps internal_set.cppo.ml) -; (action -; (run cppo -D TYPE_INT %{deps} -o %{target}))) - -; (rule -; (target js_typed_array.ml) -; (deps js_typed_array.cppo.ml) -; (action -; (run cppo %{deps} -o %{target}))) - -; (rule -; (target js_typed_array2.ml) -; (deps js_typed_array2.cppo.ml) -; (action -; (run cppo %{deps} -o %{target}))) +(rule + (target belt_HashSetString.ml) + (deps hashset.cppo.ml) + (action + (run cppo -D TYPE_STRING %{deps} -o %{target}))) + +(rule + (target belt_HashSetString.mli) + (deps hashset.cppo.mli) + (action + (run cppo -D TYPE_STRING %{deps} -o %{target}))) + +(rule + (target belt_HashSetInt.ml) + (deps hashset.cppo.ml) + (action + (run cppo -D TYPE_INT %{deps} -o %{target}))) + +(rule + (target belt_HashSetInt.mli) + (deps hashset.cppo.mli) + (action + (run cppo -D TYPE_INT %{deps} -o %{target}))) + +(rule + (target belt_HashMapString.ml) + (deps hashmap.cppo.ml) + (action + (run cppo -D TYPE_STRING %{deps} -o %{target}))) + +(rule + (target belt_HashMapString.mli) + (deps hashmap.cppo.mli) + (action + (run cppo -D TYPE_STRING %{deps} -o %{target}))) + +(rule + (target belt_HashMapInt.ml) + (deps hashmap.cppo.ml) + (action + (run cppo -D TYPE_INT %{deps} -o %{target}))) + +(rule + (target belt_HashMapInt.mli) + (deps hashmap.cppo.mli) + (action + (run cppo -D TYPE_INT %{deps} -o %{target}))) + +(rule + (target belt_MapString.ml) + (deps map.cppo.ml) + (action + (run cppo -D TYPE_STRING %{deps} -o %{target}))) + +(rule + (target belt_MapString.mli) + (deps map.cppo.mli) + (action + (run cppo -D TYPE_STRING %{deps} -o %{target}))) + +(rule + (target belt_MapInt.ml) + (deps map.cppo.ml) + (action + (run cppo -D TYPE_INT %{deps} -o %{target}))) + +(rule + (target belt_MapInt.mli) + (deps map.cppo.mli) + (action + (run cppo -D TYPE_INT %{deps} -o %{target}))) + +(rule + (target belt_SetString.ml) + (deps belt_Set.cppo.ml) + (action + (run cppo -D TYPE_STRING %{deps} -o %{target}))) + +(rule + (target belt_SetString.mli) + (deps belt_Set.cppo.mli) + (action + (run cppo -D TYPE_STRING %{deps} -o %{target}))) + +(rule + (target belt_SetInt.ml) + (deps belt_Set.cppo.ml) + (action + (run cppo -D TYPE_INT %{deps} -o %{target}))) + +(rule + (target belt_SetInt.mli) + (deps belt_Set.cppo.mli) + (action + (run cppo -D TYPE_INT %{deps} -o %{target}))) + +(rule + (target belt_MutableMapString.ml) + (deps mapm.cppo.ml) + (action + (run cppo -D TYPE_STRING %{deps} -o %{target}))) + +(rule + (target belt_MutableMapString.mli) + (deps mapm.cppo.mli) + (action + (run cppo -D TYPE_STRING %{deps} -o %{target}))) + +(rule + (target belt_MutableMapInt.ml) + (deps mapm.cppo.ml) + (action + (run cppo -D TYPE_INT %{deps} -o %{target}))) + +(rule + (target belt_MutableMapInt.mli) + (deps mapm.cppo.mli) + (action + (run cppo -D TYPE_INT %{deps} -o %{target}))) + +(rule + (target belt_MutableSetString.ml) + (deps setm.cppo.ml) + (action + (run cppo -D TYPE_STRING %{deps} -o %{target}))) + +(rule + (target belt_MutableSetString.mli) + (deps setm.cppo.mli) + (action + (run cppo -D TYPE_STRING %{deps} -o %{target}))) + +(rule + (target belt_MutableSetInt.ml) + (deps setm.cppo.ml) + (action + (run cppo -D TYPE_INT %{deps} -o %{target}))) + +(rule + (target belt_MutableSetInt.mli) + (deps setm.cppo.mli) + (action + (run cppo -D TYPE_INT %{deps} -o %{target}))) + +(rule + (target belt_SortArrayString.ml) + (deps sort.cppo.ml) + (action + (run cppo -D TYPE_STRING %{deps} -o %{target}))) + +(rule + (target belt_SortArrayString.mli) + (deps sort.cppo.mli) + (action + (run cppo -D TYPE_STRING %{deps} -o %{target}))) + +(rule + (target belt_SortArrayInt.ml) + (deps sort.cppo.ml) + (action + (run cppo -D TYPE_INT %{deps} -o %{target}))) + +(rule + (target belt_SortArrayInt.mli) + (deps sort.cppo.mli) + (action + (run cppo -D TYPE_INT %{deps} -o %{target}))) + +(rule + (target belt_internalMapString.ml) + (deps internal_map.cppo.ml) + (action + (run cppo -D TYPE_STRING %{deps} -o %{target}))) + +(rule + (target belt_internalMapInt.ml) + (deps internal_map.cppo.ml) + (action + (run cppo -D TYPE_INT %{deps} -o %{target}))) + +(rule + (target belt_internalSetString.ml) + (deps internal_set.cppo.ml) + (action + (run cppo -D TYPE_STRING %{deps} -o %{target}))) + +(rule + (target belt_internalSetInt.ml) + (deps internal_set.cppo.ml) + (action + (run cppo -D TYPE_INT %{deps} -o %{target}))) + +(rule + (target js_typed_array.ml) + (deps js_typed_array.cppo.ml) + (action + (run cppo %{deps} -o %{target}))) + +(rule + (target js_typed_array2.ml) + (deps js_typed_array2.cppo.ml) + (action + (run cppo %{deps} -o %{target}))) diff --git a/lib/checked-in-artifacts.sexp b/lib/checked-in-artifacts.sexp deleted file mode 100644 index 4cb12ebff3..0000000000 --- a/lib/checked-in-artifacts.sexp +++ /dev/null @@ -1,1012 +0,0 @@ -((lib/melange/js_math.cmi as mel_runtime/melange/js_math.cmi) -(lib/melange/belt_MutableQueue.cmti as mel_runtime/melange/belt_MutableQueue.cmti) -(lib/melange/belt_HashMap.mli as mel_runtime/melange/belt_HashMap.mli) -(lib/melange/listLabels.ml as mel_runtime/melange/listLabels.ml) -(lib/melange/belt_MapDict.cmti as mel_runtime/melange/belt_MapDict.cmti) -(lib/melange/caml_hash_primitive.cmi as mel_runtime/melange/caml_hash_primitive.cmi) -(lib/melange/marshal.cmti as mel_runtime/melange/marshal.cmti) -(lib/melange/caml_oo.cmj as mel_runtime/melange/caml_oo.cmj) -(lib/melange/unit.cmj as mel_runtime/melange/unit.cmj) -(lib/melange/belt_List.cmti as mel_runtime/melange/belt_List.cmti) -(lib/melange/belt.cmi as mel_runtime/melange/belt.cmi) -(lib/melange/sys.mli as mel_runtime/melange/sys.mli) -(lib/melange/caml_string.cmi as mel_runtime/melange/caml_string.cmi) -(lib/melange/js_null.cmi as mel_runtime/melange/js_null.cmi) -(lib/melange/camlinternalOO.cmi as mel_runtime/melange/camlinternalOO.cmi) -(lib/melange/filename.mli as mel_runtime/melange/filename.mli) -(lib/melange/js_list.mli as mel_runtime/melange/js_list.mli) -(lib/melange/js_string.cmt as mel_runtime/melange/js_string.cmt) -(lib/melange/hashtbl.cmi as mel_runtime/melange/hashtbl.cmi) -(lib/melange/js_mapperRt.cmi as mel_runtime/melange/js_mapperRt.cmi) -(lib/melange/caml_hash.cmti as mel_runtime/melange/caml_hash.cmti) -(lib/melange/belt_SortArrayString.cmt as mel_runtime/melange/belt_SortArrayString.cmt) -(lib/melange/int32.ml as mel_runtime/melange/int32.ml) -(lib/melange/uchar.mli as mel_runtime/melange/uchar.mli) -(lib/melange/caml_sys.cmt as mel_runtime/melange/caml_sys.cmt) -(lib/melange/moreLabels.cmt as mel_runtime/melange/moreLabels.cmt) -(lib/melange/list.cmj as mel_runtime/melange/list.cmj) -(lib/melange/format.cmi as mel_runtime/melange/format.cmi) -(lib/melange/belt_MutableQueue.mli as mel_runtime/melange/belt_MutableQueue.mli) -(lib/melange/hashmap.cppo.ml as mel_runtime/melange/hashmap.cppo.ml) -(lib/melange/stream.cmj as mel_runtime/melange/stream.cmj) -(lib/melange/js_array.ml as mel_runtime/melange/js_array.ml) -(lib/melange/belt_SetInt.mli as mel_runtime/melange/belt_SetInt.mli) -(lib/melange/belt_MutableSetString.cmt as mel_runtime/melange/belt_MutableSetString.cmt) -(lib/melange/caml_splice_call.mli as mel_runtime/melange/caml_splice_call.mli) -(lib/melange/belt_Option.ml as mel_runtime/melange/belt_Option.ml) -(lib/melange/arrayLabels.cmi as mel_runtime/melange/arrayLabels.cmi) -(lib/melange/js_cast.cmj as mel_runtime/melange/js_cast.cmj) -(lib/melange/node_process.cmj as mel_runtime/melange/node_process.cmj) -(lib/melange/caml_option.mli as mel_runtime/melange/caml_option.mli) -(lib/melange/belt_SortArrayInt.cmt as mel_runtime/melange/belt_SortArrayInt.cmt) -(lib/melange/camlinternalFormat.ml as mel_runtime/melange/camlinternalFormat.ml) -(lib/melange/arg.cmt as mel_runtime/melange/arg.cmt) -(lib/melange/queue.cmj as mel_runtime/melange/queue.cmj) -(lib/melange/listLabels.cmti as mel_runtime/melange/listLabels.cmti) -(lib/melange/belt_HashSetInt.cmi as mel_runtime/melange/belt_HashSetInt.cmi) -(lib/melange/lazy.cmi as mel_runtime/melange/lazy.cmi) -(lib/melange/caml_int64_extern.cmt as mel_runtime/melange/caml_int64_extern.cmt) -(lib/melange/callback.cmi as mel_runtime/melange/callback.cmi) -(lib/melange/belt_MapString.mli as mel_runtime/melange/belt_MapString.mli) -(lib/melange/belt_MutableMap.cmi as mel_runtime/melange/belt_MutableMap.cmi) -(lib/melange/belt_Range.ml as mel_runtime/melange/belt_Range.ml) -(lib/melange/js_promise.cmj as mel_runtime/melange/js_promise.cmj) -(lib/melange/oo.mli as mel_runtime/melange/oo.mli) -(lib/melange/lexing.mli as mel_runtime/melange/lexing.mli) -(lib/melange/caml_parser.cmj as mel_runtime/melange/caml_parser.cmj) -(lib/melange/buffer.cmti as mel_runtime/melange/buffer.cmti) -(lib/melange/bool.cmti as mel_runtime/melange/bool.cmti) -(lib/melange/belt_internalSetBuckets.mli as mel_runtime/melange/belt_internalSetBuckets.mli) -(lib/melange/js_date.cmi as mel_runtime/melange/js_date.cmi) -(lib/melange/caml_exceptions.cmj as mel_runtime/melange/caml_exceptions.cmj) -(lib/melange/genlex.cmt as mel_runtime/melange/genlex.cmt) -(lib/melange/caml.cmti as mel_runtime/melange/caml.cmti) -(lib/melange/gc.cmj as mel_runtime/melange/gc.cmj) -(lib/melange/caml_int64_extern.cmi as mel_runtime/melange/caml_int64_extern.cmi) -(lib/melange/caml_option.ml as mel_runtime/melange/caml_option.ml) -(lib/melange/callback.cmt as mel_runtime/melange/callback.cmt) -(lib/melange/printexc.cmj as mel_runtime/melange/printexc.cmj) -(lib/melange/js.cmj as mel_runtime/melange/js.cmj) -(lib/melange/result.cmti as mel_runtime/melange/result.cmti) -(lib/melange/js_re.ml as mel_runtime/melange/js_re.ml) -(lib/melange/belt_MutableMap.cmt as mel_runtime/melange/belt_MutableMap.cmt) -(lib/melange/result.cmj as mel_runtime/melange/result.cmj) -(lib/melange/js_types.mli as mel_runtime/melange/js_types.mli) -(lib/melange/js_date.cmt as mel_runtime/melange/js_date.cmt) -(lib/melange/genlex.cmi as mel_runtime/melange/genlex.cmi) -(lib/melange/buffer.ml as mel_runtime/melange/buffer.ml) -(lib/melange/bytesLabels.ml as mel_runtime/melange/bytesLabels.ml) -(lib/melange/belt_SortArrayString.ml as mel_runtime/melange/belt_SortArrayString.ml) -(lib/melange/belt_Set.cppo.ml as mel_runtime/melange/belt_Set.cppo.ml) -(lib/melange/either.cmj as mel_runtime/melange/either.cmj) -(lib/melange/belt_MutableSetString.cmi as mel_runtime/melange/belt_MutableSetString.cmi) -(lib/melange/js_vector.mli as mel_runtime/melange/js_vector.mli) -(lib/melange/belt_MapString.cmti as mel_runtime/melange/belt_MapString.cmti) -(lib/melange/caml_sys.cmi as mel_runtime/melange/caml_sys.cmi) -(lib/melange/caml_undefined_extern.ml as mel_runtime/melange/caml_undefined_extern.ml) -(lib/melange/moreLabels.cmi as mel_runtime/melange/moreLabels.cmi) -(lib/melange/format.cmt as mel_runtime/melange/format.cmt) -(lib/melange/belt_Result.cmj as mel_runtime/melange/belt_Result.cmj) -(lib/melange/arg.cmi as mel_runtime/melange/arg.cmi) -(lib/melange/js_option.mli as mel_runtime/melange/js_option.mli) -(lib/melange/belt_HashSetInt.cmt as mel_runtime/melange/belt_HashSetInt.cmt) -(lib/melange/lazy.cmt as mel_runtime/melange/lazy.cmt) -(lib/melange/camlinternalOO.ml as mel_runtime/melange/camlinternalOO.ml) -(lib/melange/arrayLabels.cmt as mel_runtime/melange/arrayLabels.cmt) -(lib/melange/lexing.ml as mel_runtime/melange/lexing.ml) -(lib/melange/belt_SortArrayInt.cmi as mel_runtime/melange/belt_SortArrayInt.cmi) -(lib/melange/atomic.cmj as mel_runtime/melange/atomic.cmj) -(lib/melange/camlinternalOO.cmt as mel_runtime/melange/camlinternalOO.cmt) -(lib/melange/belt_HashSet.ml as mel_runtime/melange/belt_HashSet.ml) -(lib/melange/js_string.cmi as mel_runtime/melange/js_string.cmi) -(lib/melange/caml_string.cmt as mel_runtime/melange/caml_string.cmt) -(lib/melange/js_null.cmt as mel_runtime/melange/js_null.cmt) -(lib/melange/marshal.mli as mel_runtime/melange/marshal.mli) -(lib/melange/belt_internalSetBuckets.ml as mel_runtime/melange/belt_internalSetBuckets.ml) -(lib/melange/belt_Float.ml as mel_runtime/melange/belt_Float.ml) -(lib/melange/caml_float_extern.ml as mel_runtime/melange/caml_float_extern.ml) -(lib/melange/belt_internalAVLset.cmj as mel_runtime/melange/belt_internalAVLset.cmj) -(lib/melange/camlinternalMod.cmj as mel_runtime/melange/camlinternalMod.cmj) -(lib/melange/hashtbl.cmt as mel_runtime/melange/hashtbl.cmt) -(lib/melange/caml_md5.cmti as mel_runtime/melange/caml_md5.cmti) -(lib/melange/js_mapperRt.cmt as mel_runtime/melange/js_mapperRt.cmt) -(lib/melange/stack.ml as mel_runtime/melange/stack.ml) -(lib/melange/belt_SortArrayString.cmi as mel_runtime/melange/belt_SortArrayString.cmi) -(lib/melange/caml_hash_primitive.cmt as mel_runtime/melange/caml_hash_primitive.cmt) -(lib/melange/js_math.cmt as mel_runtime/melange/js_math.cmt) -(lib/melange/unit.ml as mel_runtime/melange/unit.ml) -(lib/melange/belt_HashMapInt.cmj as mel_runtime/melange/belt_HashMapInt.cmj) -(lib/melange/belt.cmt as mel_runtime/melange/belt.cmt) -(lib/melange/curry.ml as mel_runtime/melange/curry.ml) -(lib/melange/caml_gc.mli as mel_runtime/melange/caml_gc.mli) -(lib/melange/belt_MutableMapString.cmj as mel_runtime/melange/belt_MutableMapString.cmj) -(lib/melange/belt_Map.cmj as mel_runtime/melange/belt_Map.cmj) -(lib/melange/belt_internalBucketsType.ml as mel_runtime/melange/belt_internalBucketsType.ml) -(lib/melange/belt_MapDict.cmj as mel_runtime/melange/belt_MapDict.cmj) -(lib/melange/bool.mli as mel_runtime/melange/bool.mli) -(lib/melange/hashset.cppo.ml as mel_runtime/melange/hashset.cppo.ml) -(lib/melange/scanf.cmi as mel_runtime/melange/scanf.cmi) -(lib/melange/bs_stdlib_mini.cmt as mel_runtime/melange/bs_stdlib_mini.cmt) -(lib/melange/fun.mli as mel_runtime/melange/fun.mli) -(lib/melange/js_typed_array.cppo.ml as mel_runtime/melange/js_typed_array.cppo.ml) -(lib/melange/js_console.cmi as mel_runtime/melange/js_console.cmi) -(lib/melange/belt_Array.cmi as mel_runtime/melange/belt_Array.cmi) -(lib/melange/belt_internalBuckets.mli as mel_runtime/melange/belt_internalBuckets.mli) -(lib/melange/js_OO.cmi as mel_runtime/melange/js_OO.cmi) -(lib/melange/belt_internalBucketsType.cmi as mel_runtime/melange/belt_internalBucketsType.cmi) -(lib/melange/char.cmt as mel_runtime/melange/char.cmt) -(lib/melange/caml_undefined_extern.cmj as mel_runtime/melange/caml_undefined_extern.cmj) -(lib/melange/map.cppo.mli as mel_runtime/melange/map.cppo.mli) -(lib/melange/js_null_undefined.cmti as mel_runtime/melange/js_null_undefined.cmti) -(lib/melange/camlinternalAtomic.mli as mel_runtime/melange/camlinternalAtomic.mli) -(lib/melange/caml_oo_curry.cmj as mel_runtime/melange/caml_oo_curry.cmj) -(lib/melange/option.cmj as mel_runtime/melange/option.cmj) -(lib/melange/belt_HashMapString.cmi as mel_runtime/melange/belt_HashMapString.cmi) -(lib/melange/digest.cmi as mel_runtime/melange/digest.cmi) -(lib/melange/caml_oo_curry.ml as mel_runtime/melange/caml_oo_curry.ml) -(lib/melange/js_exn.cmj as mel_runtime/melange/js_exn.cmj) -(lib/melange/array.cmj as mel_runtime/melange/array.cmj) -(lib/melange/caml_array.cmti as mel_runtime/melange/caml_array.cmti) -(lib/melange/int32.cmj as mel_runtime/melange/int32.cmj) -(lib/melange/belt_Id.cmj as mel_runtime/melange/belt_Id.cmj) -(lib/melange/bytesLabels.mli as mel_runtime/melange/bytesLabels.mli) -(lib/melange/caml_hash.cmi as mel_runtime/melange/caml_hash.cmi) -(lib/melange/caml_int32.cmt as mel_runtime/melange/caml_int32.cmt) -(lib/melange/caml_array.cmt as mel_runtime/melange/caml_array.cmt) -(lib/melange/moreLabels.cmti as mel_runtime/melange/moreLabels.cmti) -(lib/melange/set.cmti as mel_runtime/melange/set.cmti) -(lib/melange/caml_sys.ml as mel_runtime/melange/caml_sys.ml) -(lib/melange/belt_HashSet.cmi as mel_runtime/melange/belt_HashSet.cmi) -(lib/melange/js_array2.ml as mel_runtime/melange/js_array2.ml) -(lib/melange/caml_md5.ml as mel_runtime/melange/caml_md5.ml) -(lib/melange/caml_int64.ml as mel_runtime/melange/caml_int64.ml) -(lib/melange/js_undefined.ml as mel_runtime/melange/js_undefined.ml) -(lib/melange/in_channel.cmi as mel_runtime/melange/in_channel.cmi) -(lib/melange/belt_Option.cmj as mel_runtime/melange/belt_Option.cmj) -(lib/melange/js_result.mli as mel_runtime/melange/js_result.mli) -(lib/melange/caml_float.cmi as mel_runtime/melange/caml_float.cmi) -(lib/melange/node_process.ml as mel_runtime/melange/node_process.ml) -(lib/melange/caml_lexer.cmti as mel_runtime/melange/caml_lexer.cmti) -(lib/melange/caml_array_extern.cmi as mel_runtime/melange/caml_array_extern.cmi) -(lib/melange/caml_bytes.mli as mel_runtime/melange/caml_bytes.mli) -(lib/melange/belt_HashSetString.cmj as mel_runtime/melange/belt_HashSetString.cmj) -(lib/melange/dom.cmi as mel_runtime/melange/dom.cmi) -(lib/melange/belt_Set.cppo.mli as mel_runtime/melange/belt_Set.cppo.mli) -(lib/melange/js_json.cmj as mel_runtime/melange/js_json.cmj) -(lib/melange/belt_MutableStack.cmt as mel_runtime/melange/belt_MutableStack.cmt) -(lib/melange/js_string2.cmi as mel_runtime/melange/js_string2.cmi) -(lib/melange/belt_internalAVLtree.cmj as mel_runtime/melange/belt_internalAVLtree.cmj) -(lib/melange/js_dict.cmi as mel_runtime/melange/js_dict.cmi) -(lib/melange/node_path.cmt as mel_runtime/melange/node_path.cmt) -(lib/melange/belt_MutableSet.mli as mel_runtime/melange/belt_MutableSet.mli) -(lib/melange/js_obj.cmj as mel_runtime/melange/js_obj.cmj) -(lib/melange/belt_MutableMap.cmti as mel_runtime/melange/belt_MutableMap.cmti) -(lib/melange/js_types.cmti as mel_runtime/melange/js_types.cmti) -(lib/melange/node_buffer.ml as mel_runtime/melange/node_buffer.ml) -(lib/melange/in_channel.ml as mel_runtime/melange/in_channel.ml) -(lib/melange/camlinternalFormatBasics.cmj as mel_runtime/melange/camlinternalFormatBasics.cmj) -(lib/melange/uchar.ml as mel_runtime/melange/uchar.ml) -(lib/melange/caml_external_polyfill.cmi as mel_runtime/melange/caml_external_polyfill.cmi) -(lib/melange/belt_Float.cmt as mel_runtime/melange/belt_Float.cmt) -(lib/melange/int64.cmi as mel_runtime/melange/int64.cmi) -(lib/melange/complex.cmti as mel_runtime/melange/complex.cmti) -(lib/melange/genlex.cmti as mel_runtime/melange/genlex.cmti) -(lib/melange/caml_module.cmi as mel_runtime/melange/caml_module.cmi) -(lib/melange/obj.cmj as mel_runtime/melange/obj.cmj) -(lib/melange/js_global.cmj as mel_runtime/melange/js_global.cmj) -(lib/melange/belt_SetString.ml as mel_runtime/melange/belt_SetString.ml) -(lib/melange/caml_float.ml as mel_runtime/melange/caml_float.ml) -(lib/melange/caml_io.mli as mel_runtime/melange/caml_io.mli) -(lib/melange/caml_external_polyfill.cmt as mel_runtime/melange/caml_external_polyfill.cmt) -(lib/melange/belt_Map.cmti as mel_runtime/melange/belt_Map.cmti) -(lib/melange/belt_Float.cmi as mel_runtime/melange/belt_Float.cmi) -(lib/melange/ephemeron.mli as mel_runtime/melange/ephemeron.mli) -(lib/melange/caml_int64.cmj as mel_runtime/melange/caml_int64.cmj) -(lib/melange/camlinternalLazy.cmj as mel_runtime/melange/camlinternalLazy.cmj) -(lib/melange/camlinternalAtomic.cmti as mel_runtime/melange/camlinternalAtomic.cmti) -(lib/melange/belt_MutableMapInt.mli as mel_runtime/melange/belt_MutableMapInt.mli) -(lib/melange/filename.cmti as mel_runtime/melange/filename.cmti) -(lib/melange/caml_lexer.mli as mel_runtime/melange/caml_lexer.mli) -(lib/melange/int64.cmt as mel_runtime/melange/int64.cmt) -(lib/melange/printf.cmti as mel_runtime/melange/printf.cmti) -(lib/melange/caml_module.cmt as mel_runtime/melange/caml_module.cmt) -(lib/melange/float.cmj as mel_runtime/melange/float.cmj) -(lib/melange/caml_array_extern.cmt as mel_runtime/melange/caml_array_extern.cmt) -(lib/melange/result.ml as mel_runtime/melange/result.ml) -(lib/melange/dom.cmt as mel_runtime/melange/dom.cmt) -(lib/melange/caml_float.cmt as mel_runtime/melange/caml_float.cmt) -(lib/melange/caml_splice_call.cmti as mel_runtime/melange/caml_splice_call.cmti) -(lib/melange/js_typed_array.cmj as mel_runtime/melange/js_typed_array.cmj) -(lib/melange/belt_SetString.cmti as mel_runtime/melange/belt_SetString.cmti) -(lib/melange/belt_Range.cmj as mel_runtime/melange/belt_Range.cmj) -(lib/melange/node_path.cmi as mel_runtime/melange/node_path.cmi) -(lib/melange/js_dict.cmt as mel_runtime/melange/js_dict.cmt) -(lib/melange/belt_SetDict.cmj as mel_runtime/melange/belt_SetDict.cmj) -(lib/melange/belt_MutableStack.cmi as mel_runtime/melange/belt_MutableStack.cmi) -(lib/melange/js_string2.cmt as mel_runtime/melange/js_string2.cmt) -(lib/melange/caml_hash.cmt as mel_runtime/melange/caml_hash.cmt) -(lib/melange/caml_int32.cmi as mel_runtime/melange/caml_int32.cmi) -(lib/melange/caml_array.cmi as mel_runtime/melange/caml_array.cmi) -(lib/melange/js_typed_array.ml as mel_runtime/melange/js_typed_array.ml) -(lib/melange/obj.ml as mel_runtime/melange/obj.ml) -(lib/melange/stack.cmti as mel_runtime/melange/stack.cmti) -(lib/melange/sys.cmti as mel_runtime/melange/sys.cmti) -(lib/melange/sort.cppo.ml as mel_runtime/melange/sort.cppo.ml) -(lib/melange/in_channel.cmt as mel_runtime/melange/in_channel.cmt) -(lib/melange/map.ml as mel_runtime/melange/map.ml) -(lib/melange/belt_HashSet.cmt as mel_runtime/melange/belt_HashSet.cmt) -(lib/melange/belt_internalBucketsType.cmt as mel_runtime/melange/belt_internalBucketsType.cmt) -(lib/melange/char.cmi as mel_runtime/melange/char.cmi) -(lib/melange/map.cmj as mel_runtime/melange/map.cmj) -(lib/melange/scanf.cmt as mel_runtime/melange/scanf.cmt) -(lib/melange/complex.cmj as mel_runtime/melange/complex.cmj) -(lib/melange/bs_stdlib_mini.cmi as mel_runtime/melange/bs_stdlib_mini.cmi) -(lib/melange/belt_Array.cmt as mel_runtime/melange/belt_Array.cmt) -(lib/melange/js_console.cmt as mel_runtime/melange/js_console.cmt) -(lib/melange/js_OO.cmt as mel_runtime/melange/js_OO.cmt) -(lib/melange/belt_HashMapString.cmt as mel_runtime/melange/belt_HashMapString.cmt) -(lib/melange/out_channel.mli as mel_runtime/melange/out_channel.mli) -(lib/melange/digest.cmt as mel_runtime/melange/digest.cmt) -(lib/melange/node__no_aliases.cmj as mel_runtime/melange/node__no_aliases.cmj) -(lib/melange/caml_md5.mli as mel_runtime/melange/caml_md5.mli) -(lib/melange/js_null_undefined.ml as mel_runtime/melange/js_null_undefined.ml) -(lib/melange/option.mli as mel_runtime/melange/option.mli) -(lib/melange/belt_MutableQueue.ml as mel_runtime/melange/belt_MutableQueue.ml) -(lib/melange/js_exn.mli as mel_runtime/melange/js_exn.mli) -(lib/melange/node_module.ml as mel_runtime/melange/node_module.ml) -(lib/melange/buffer.cmt as mel_runtime/melange/buffer.cmt) -(lib/melange/either.cmti as mel_runtime/melange/either.cmti) -(lib/melange/camlinternalAtomic.cmj as mel_runtime/melange/camlinternalAtomic.cmj) -(lib/melange/js_typed_array2.cppo.ml as mel_runtime/melange/js_typed_array2.cppo.ml) -(lib/melange/stdlib.cmi as mel_runtime/melange/stdlib.cmi) -(lib/melange/js_undefined.cmi as mel_runtime/melange/js_undefined.cmi) -(lib/melange/caml_format.cmi as mel_runtime/melange/caml_format.cmi) -(lib/melange/belt_MapInt.cmti as mel_runtime/melange/belt_MapInt.cmti) -(lib/melange/js_json.cmti as mel_runtime/melange/js_json.cmti) -(lib/melange/bs_stdlib_mini.ml as mel_runtime/melange/bs_stdlib_mini.ml) -(lib/melange/fun.cmj as mel_runtime/melange/fun.cmj) -(lib/melange/stringLabels.cmi as mel_runtime/melange/stringLabels.cmi) -(lib/melange/caml_format.ml as mel_runtime/melange/caml_format.ml) -(lib/melange/bool.cmj as mel_runtime/melange/bool.cmj) -(lib/melange/belt_internalBuckets.cmj as mel_runtime/melange/belt_internalBuckets.cmj) -(lib/melange/js_option.ml as mel_runtime/melange/js_option.ml) -(lib/melange/belt_MutableSetInt.cmi as mel_runtime/melange/belt_MutableSetInt.cmi) -(lib/melange/js_result.cmj as mel_runtime/melange/js_result.cmj) -(lib/melange/belt_Option.mli as mel_runtime/melange/belt_Option.mli) -(lib/melange/belt_internalMapInt.cmj as mel_runtime/melange/belt_internalMapInt.cmj) -(lib/melange/camlinternalFormatBasics.cmti as mel_runtime/melange/camlinternalFormatBasics.cmti) -(lib/melange/caml_obj.cmt as mel_runtime/melange/caml_obj.cmt) -(lib/melange/js_global.ml as mel_runtime/melange/js_global.ml) -(lib/melange/belt_Option.cmti as mel_runtime/melange/belt_Option.cmti) -(lib/melange/seq.ml as mel_runtime/melange/seq.ml) -(lib/melange/js_mapperRt.cmti as mel_runtime/melange/js_mapperRt.cmti) -(lib/melange/obj.cmti as mel_runtime/melange/obj.cmti) -(lib/melange/int32.mli as mel_runtime/melange/int32.mli) -(lib/melange/array.mli as mel_runtime/melange/array.mli) -(lib/melange/bytesLabels.cmj as mel_runtime/melange/bytesLabels.cmj) -(lib/melange/belt_internalAVLtree.ml as mel_runtime/melange/belt_internalAVLtree.ml) -(lib/melange/belt_Id.mli as mel_runtime/melange/belt_Id.mli) -(lib/melange/belt_HashMap.ml as mel_runtime/melange/belt_HashMap.ml) -(lib/melange/belt_Set.cmt as mel_runtime/melange/belt_Set.cmt) -(lib/melange/seq.cmi as mel_runtime/melange/seq.cmi) -(lib/melange/belt_internalAVLtree.mli as mel_runtime/melange/belt_internalAVLtree.mli) -(lib/melange/sys.ml as mel_runtime/melange/sys.ml) -(lib/melange/belt_MutableSet.cmj as mel_runtime/melange/belt_MutableSet.cmj) -(lib/melange/filename.ml as mel_runtime/melange/filename.ml) -(lib/melange/js_list.cmti as mel_runtime/melange/js_list.cmti) -(lib/melange/node_process.cmti as mel_runtime/melange/node_process.cmti) -(lib/melange/std_exit.cmt as mel_runtime/melange/std_exit.cmt) -(lib/melange/js_json.mli as mel_runtime/melange/js_json.mli) -(lib/melange/stack.cmt as mel_runtime/melange/stack.cmt) -(lib/melange/random.cmti as mel_runtime/melange/random.cmti) -(lib/melange/curry.cmt as mel_runtime/melange/curry.cmt) -(lib/melange/belt_HashSetString.mli as mel_runtime/melange/belt_HashSetString.mli) -(lib/melange/caml_bytes.cmj as mel_runtime/melange/caml_bytes.cmj) -(lib/melange/stream.cmti as mel_runtime/melange/stream.cmti) -(lib/melange/js_int.cmt as mel_runtime/melange/js_int.cmt) -(lib/melange/dom.ml as mel_runtime/melange/dom.ml) -(lib/melange/belt_internalSetBuckets.cmti as mel_runtime/melange/belt_internalSetBuckets.cmti) -(lib/melange/bytes.cmt as mel_runtime/melange/bytes.cmt) -(lib/melange/caml_oo.cmti as mel_runtime/melange/caml_oo.cmti) -(lib/melange/caml_float_extern.cmt as mel_runtime/melange/caml_float_extern.cmt) -(lib/melange/node_module.cmi as mel_runtime/melange/node_module.cmi) -(lib/melange/printexc.ml as mel_runtime/melange/printexc.ml) -(lib/melange/belt_MutableSetString.cmti as mel_runtime/melange/belt_MutableSetString.cmti) -(lib/melange/camlinternalFormat.cmt as mel_runtime/melange/camlinternalFormat.cmt) -(lib/melange/dom_storage.cmj as mel_runtime/melange/dom_storage.cmj) -(lib/melange/obj.mli as mel_runtime/melange/obj.mli) -(lib/melange/sort.cppo.mli as mel_runtime/melange/sort.cppo.mli) -(lib/melange/belt_internalSetInt.cmt as mel_runtime/melange/belt_internalSetInt.cmt) -(lib/melange/weak.ml as mel_runtime/melange/weak.ml) -(lib/melange/int.cmt as mel_runtime/melange/int.cmt) -(lib/melange/string.cmi as mel_runtime/melange/string.cmi) -(lib/melange/stdLabels.cmt as mel_runtime/melange/stdLabels.cmt) -(lib/melange/caml_exceptions.ml as mel_runtime/melange/caml_exceptions.ml) -(lib/melange/camlinternalFormatBasics.mli as mel_runtime/melange/camlinternalFormatBasics.mli) -(lib/melange/genlex.ml as mel_runtime/melange/genlex.ml) -(lib/melange/hashtbl.ml as mel_runtime/melange/hashtbl.ml) -(lib/melange/belt_internalSetInt.cmi as mel_runtime/melange/belt_internalSetInt.cmi) -(lib/melange/camlinternalLazy.mli as mel_runtime/melange/camlinternalLazy.mli) -(lib/melange/js_exn.ml as mel_runtime/melange/js_exn.ml) -(lib/melange/caml_int64.mli as mel_runtime/melange/caml_int64.mli) -(lib/melange/caml_float_extern.cmi as mel_runtime/melange/caml_float_extern.cmi) -(lib/melange/caml_js_exceptions.ml as mel_runtime/melange/caml_js_exceptions.ml) -(lib/melange/out_channel.cmti as mel_runtime/melange/out_channel.cmti) -(lib/melange/belt_MutableMapInt.cmj as mel_runtime/melange/belt_MutableMapInt.cmj) -(lib/melange/caml_lexer.cmj as mel_runtime/melange/caml_lexer.cmj) -(lib/melange/node_module.cmt as mel_runtime/melange/node_module.cmt) -(lib/melange/camlinternalFormat.cmi as mel_runtime/melange/camlinternalFormat.cmi) -(lib/melange/stdLabels.cmi as mel_runtime/melange/stdLabels.cmi) -(lib/melange/ephemeron.cmj as mel_runtime/melange/ephemeron.cmj) -(lib/melange/callback.cmti as mel_runtime/melange/callback.cmti) -(lib/melange/belt_MapString.ml as mel_runtime/melange/belt_MapString.ml) -(lib/melange/int.cmi as mel_runtime/melange/int.cmi) -(lib/melange/caml_io.cmj as mel_runtime/melange/caml_io.cmj) -(lib/melange/string.cmt as mel_runtime/melange/string.cmt) -(lib/melange/belt_HashMapInt.cmti as mel_runtime/melange/belt_HashMapInt.cmti) -(lib/melange/caml_obj.ml as mel_runtime/melange/caml_obj.ml) -(lib/melange/js_string2.ml as mel_runtime/melange/js_string2.ml) -(lib/melange/std_exit.cmi as mel_runtime/melange/std_exit.cmi) -(lib/melange/belt_SetDict.mli as mel_runtime/melange/belt_SetDict.mli) -(lib/melange/seq.cmt as mel_runtime/melange/seq.cmt) -(lib/melange/belt_Range.mli as mel_runtime/melange/belt_Range.mli) -(lib/melange/int.ml as mel_runtime/melange/int.ml) -(lib/melange/js_int.cmi as mel_runtime/melange/js_int.cmi) -(lib/melange/js_result.cmti as mel_runtime/melange/js_result.cmti) -(lib/melange/complex.ml as mel_runtime/melange/complex.ml) -(lib/melange/js_null.cmti as mel_runtime/melange/js_null.cmti) -(lib/melange/bytes.cmi as mel_runtime/melange/bytes.cmi) -(lib/melange/belt_MapDict.ml as mel_runtime/melange/belt_MapDict.ml) -(lib/melange/stack.cmi as mel_runtime/melange/stack.cmi) -(lib/melange/setm.cppo.mli as mel_runtime/melange/setm.cppo.mli) -(lib/melange/float.mli as mel_runtime/melange/float.mli) -(lib/melange/curry.cmi as mel_runtime/melange/curry.cmi) -(lib/melange/js_date.ml as mel_runtime/melange/js_date.ml) -(lib/melange/js_vector.ml as mel_runtime/melange/js_vector.ml) -(lib/melange/belt_MutableSetInt.cmt as mel_runtime/melange/belt_MutableSetInt.cmt) -(lib/melange/lazy.cmti as mel_runtime/melange/lazy.cmti) -(lib/melange/belt_SetInt.ml as mel_runtime/melange/belt_SetInt.ml) -(lib/melange/camlinternalOO.cmti as mel_runtime/melange/camlinternalOO.cmti) -(lib/melange/belt_Set.cmi as mel_runtime/melange/belt_Set.cmi) -(lib/melange/caml_obj.cmi as mel_runtime/melange/caml_obj.cmi) -(lib/melange/node_fs.cmj as mel_runtime/melange/node_fs.cmj) -(lib/melange/buffer.cmi as mel_runtime/melange/buffer.cmi) -(lib/melange/belt_MutableMapInt.cmti as mel_runtime/melange/belt_MutableMapInt.cmti) -(lib/melange/caml_md5.cmj as mel_runtime/melange/caml_md5.cmj) -(lib/melange/stdlib.cmt as mel_runtime/melange/stdlib.cmt) -(lib/melange/js_undefined.cmt as mel_runtime/melange/js_undefined.cmt) -(lib/melange/out_channel.cmj as mel_runtime/melange/out_channel.cmj) -(lib/melange/complex.mli as mel_runtime/melange/complex.mli) -(lib/melange/stringLabels.cmt as mel_runtime/melange/stringLabels.cmt) -(lib/melange/js_json.ml as mel_runtime/melange/js_json.ml) -(lib/melange/caml_format.cmt as mel_runtime/melange/caml_format.cmt) -(lib/melange/map.mli as mel_runtime/melange/map.mli) -(lib/melange/unit.mli as mel_runtime/melange/unit.mli) -(lib/melange/caml_oo.mli as mel_runtime/melange/caml_oo.mli) -(lib/melange/sys.cmj as mel_runtime/melange/sys.cmj) -(lib/melange/belt_SortArray.cmi as mel_runtime/melange/belt_SortArray.cmi) -(lib/melange/caml.cmt as mel_runtime/melange/caml.cmt) -(lib/melange/belt_HashMap.cmj as mel_runtime/melange/belt_HashMap.cmj) -(lib/melange/belt_MapInt.cmt as mel_runtime/melange/belt_MapInt.cmt) -(lib/melange/belt_internalMapString.cmj as mel_runtime/melange/belt_internalMapString.cmj) -(lib/melange/printf.cmi as mel_runtime/melange/printf.cmi) -(lib/melange/set.ml as mel_runtime/melange/set.ml) -(lib/melange/listLabels.cmt as mel_runtime/melange/listLabels.cmt) -(lib/melange/js_array2.cmj as mel_runtime/melange/js_array2.cmj) -(lib/melange/uchar.cmj as mel_runtime/melange/uchar.cmj) -(lib/melange/parsing.cmi as mel_runtime/melange/parsing.cmi) -(lib/melange/js_null_undefined.cmt as mel_runtime/melange/js_null_undefined.cmt) -(lib/melange/belt_SetString.cmi as mel_runtime/melange/belt_SetString.cmi) -(lib/melange/gc.cmti as mel_runtime/melange/gc.cmti) -(lib/melange/belt_List.cmi as mel_runtime/melange/belt_List.cmi) -(lib/melange/set.cmt as mel_runtime/melange/set.cmt) -(lib/melange/caml.ml as mel_runtime/melange/caml.ml) -(lib/melange/dom_storage.ml as mel_runtime/melange/dom_storage.ml) -(lib/melange/js_list.cmj as mel_runtime/melange/js_list.cmj) -(lib/melange/filename.cmj as mel_runtime/melange/filename.cmj) -(lib/melange/arrayLabels.ml as mel_runtime/melange/arrayLabels.ml) -(lib/melange/array.ml as mel_runtime/melange/array.ml) -(lib/melange/js_float.cmt as mel_runtime/melange/js_float.cmt) -(lib/melange/queue.mli as mel_runtime/melange/queue.mli) -(lib/melange/atomic.ml as mel_runtime/melange/atomic.ml) -(lib/melange/js_cast.mli as mel_runtime/melange/js_cast.mli) -(lib/melange/caml_option.cmj as mel_runtime/melange/caml_option.cmj) -(lib/melange/node_process.mli as mel_runtime/melange/node_process.mli) -(lib/melange/node_buffer.cmt as mel_runtime/melange/node_buffer.cmt) -(lib/melange/belt_internalSetString.cmi as mel_runtime/melange/belt_internalSetString.cmi) -(lib/melange/dom_storage2.cmj as mel_runtime/melange/dom_storage2.cmj) -(lib/melange/belt_SetInt.cmj as mel_runtime/melange/belt_SetInt.cmj) -(lib/melange/stream.mli as mel_runtime/melange/stream.mli) -(lib/melange/belt_Array.cmti as mel_runtime/melange/belt_Array.cmti) -(lib/melange/js_typed_array2.cmi as mel_runtime/melange/js_typed_array2.cmi) -(lib/melange/js_array.cmi as mel_runtime/melange/js_array.cmi) -(lib/melange/caml_io.cmti as mel_runtime/melange/caml_io.cmti) -(lib/melange/caml_splice_call.cmj as mel_runtime/melange/caml_splice_call.cmj) -(lib/melange/list.mli as mel_runtime/melange/list.mli) -(lib/melange/belt_SetInt.cmti as mel_runtime/melange/belt_SetInt.cmti) -(lib/melange/lazy.ml as mel_runtime/melange/lazy.ml) -(lib/melange/caml_nativeint_extern.cmi as mel_runtime/melange/caml_nativeint_extern.cmi) -(lib/melange/belt_MutableQueue.cmj as mel_runtime/melange/belt_MutableQueue.cmj) -(lib/melange/belt_internalSetBuckets.cmj as mel_runtime/melange/belt_internalSetBuckets.cmj) -(lib/melange/bytes.ml as mel_runtime/melange/bytes.ml) -(lib/melange/belt_Int.cmt as mel_runtime/melange/belt_Int.cmt) -(lib/melange/belt_MutableMapString.cmti as mel_runtime/melange/belt_MutableMapString.cmti) -(lib/melange/node.cmt as mel_runtime/melange/node.cmt) -(lib/melange/caml_parser.mli as mel_runtime/melange/caml_parser.mli) -(lib/melange/oo.cmj as mel_runtime/melange/oo.cmj) -(lib/melange/node_child_process.cmj as mel_runtime/melange/node_child_process.cmj) -(lib/melange/caml_external_polyfill.ml as mel_runtime/melange/caml_external_polyfill.ml) -(lib/melange/lexing.cmj as mel_runtime/melange/lexing.cmj) -(lib/melange/array.cmti as mel_runtime/melange/array.cmti) -(lib/melange/random.cmi as mel_runtime/melange/random.cmi) -(lib/melange/char.cmti as mel_runtime/melange/char.cmti) -(lib/melange/js_re.cmt as mel_runtime/melange/js_re.cmt) -(lib/melange/weak.cmt as mel_runtime/melange/weak.cmt) -(lib/melange/belt_MapString.cmj as mel_runtime/melange/belt_MapString.cmj) -(lib/melange/lexing.cmti as mel_runtime/melange/lexing.cmti) -(lib/melange/belt_Int.cmi as mel_runtime/melange/belt_Int.cmi) -(lib/melange/node.cmi as mel_runtime/melange/node.cmi) -(lib/melange/result.mli as mel_runtime/melange/result.mli) -(lib/melange/js_types.cmj as mel_runtime/melange/js_types.cmj) -(lib/melange/js_re.cmi as mel_runtime/melange/js_re.cmi) -(lib/melange/printexc.mli as mel_runtime/melange/printexc.mli) -(lib/melange/stdlib.ml as mel_runtime/melange/stdlib.ml) -(lib/melange/weak.cmi as mel_runtime/melange/weak.cmi) -(lib/melange/ephemeron.cmti as mel_runtime/melange/ephemeron.cmti) -(lib/melange/random.cmt as mel_runtime/melange/random.cmt) -(lib/melange/gc.mli as mel_runtime/melange/gc.mli) -(lib/melange/belt_internalSetString.cmt as mel_runtime/melange/belt_internalSetString.cmt) -(lib/melange/node_buffer.cmi as mel_runtime/melange/node_buffer.cmi) -(lib/melange/caml_int32_extern.cmj as mel_runtime/melange/caml_int32_extern.cmj) -(lib/melange/belt_Int.cmti as mel_runtime/melange/belt_Int.cmti) -(lib/melange/belt_MutableSetInt.cmti as mel_runtime/melange/belt_MutableSetInt.cmti) -(lib/melange/js_option.cmj as mel_runtime/melange/js_option.cmj) -(lib/melange/belt_Result.mli as mel_runtime/melange/belt_Result.mli) -(lib/melange/belt_HashSet.cmti as mel_runtime/melange/belt_HashSet.cmti) -(lib/melange/caml_string_extern.cmj as mel_runtime/melange/caml_string_extern.cmj) -(lib/melange/string.ml as mel_runtime/melange/string.ml) -(lib/melange/node.ml as mel_runtime/melange/node.ml) -(lib/melange/belt_Range.cmti as mel_runtime/melange/belt_Range.cmti) -(lib/melange/caml_splice_call.ml as mel_runtime/melange/caml_splice_call.ml) -(lib/melange/caml_nativeint_extern.cmt as mel_runtime/melange/caml_nativeint_extern.cmt) -(lib/melange/belt_internalBucketsType.cmti as mel_runtime/melange/belt_internalBucketsType.cmti) -(lib/melange/js_typed_array2.cmt as mel_runtime/melange/js_typed_array2.cmt) -(lib/melange/either.mli as mel_runtime/melange/either.mli) -(lib/melange/js_vector.cmj as mel_runtime/melange/js_vector.cmj) -(lib/melange/js_array.cmt as mel_runtime/melange/js_array.cmt) -(lib/melange/belt_SetString.cmt as mel_runtime/melange/belt_SetString.cmt) -(lib/melange/belt_MapInt.ml as mel_runtime/melange/belt_MapInt.ml) -(lib/melange/belt_internalAVLset.mli as mel_runtime/melange/belt_internalAVLset.mli) -(lib/melange/camlinternalMod.mli as mel_runtime/melange/camlinternalMod.mli) -(lib/melange/set.cmi as mel_runtime/melange/set.cmi) -(lib/melange/belt_List.cmt as mel_runtime/melange/belt_List.cmt) -(lib/melange/listLabels.cmi as mel_runtime/melange/listLabels.cmi) -(lib/melange/parsing.cmt as mel_runtime/melange/parsing.cmt) -(lib/melange/js_null_undefined.cmi as mel_runtime/melange/js_null_undefined.cmi) -(lib/melange/marshal.cmj as mel_runtime/melange/marshal.cmj) -(lib/melange/caml_js_exceptions.cmj as mel_runtime/melange/caml_js_exceptions.cmj) -(lib/melange/belt_HashSetInt.cmti as mel_runtime/melange/belt_HashSetInt.cmti) -(lib/melange/js_float.cmi as mel_runtime/melange/js_float.cmi) -(lib/melange/atomic.mli as mel_runtime/melange/atomic.mli) -(lib/melange/belt_MapDict.mli as mel_runtime/melange/belt_MapDict.mli) -(lib/melange/belt_SortArray.cmt as mel_runtime/melange/belt_SortArray.cmt) -(lib/melange/caml.cmi as mel_runtime/melange/caml.cmi) -(lib/melange/belt_SetDict.cmti as mel_runtime/melange/belt_SetDict.cmti) -(lib/melange/belt_HashMapInt.mli as mel_runtime/melange/belt_HashMapInt.mli) -(lib/melange/belt_Map.mli as mel_runtime/melange/belt_Map.mli) -(lib/melange/belt_MutableMapString.mli as mel_runtime/melange/belt_MutableMapString.mli) -(lib/melange/caml_gc.cmj as mel_runtime/melange/caml_gc.cmj) -(lib/melange/atomic.cmti as mel_runtime/melange/atomic.cmti) -(lib/melange/arg.ml as mel_runtime/melange/arg.ml) -(lib/melange/js_dict.ml as mel_runtime/melange/js_dict.ml) -(lib/melange/printf.cmt as mel_runtime/melange/printf.cmt) -(lib/melange/pervasives.cmj as mel_runtime/melange/pervasives.cmj) -(lib/melange/js_math.ml as mel_runtime/melange/js_math.ml) -(lib/melange/belt_MapInt.cmi as mel_runtime/melange/belt_MapInt.cmi) -(lib/melange/arrayLabels.cmj as mel_runtime/melange/arrayLabels.cmj) -(lib/melange/belt_Array.ml as mel_runtime/melange/belt_Array.ml) -(lib/melange/js_cast.cmi as mel_runtime/melange/js_cast.cmi) -(lib/melange/belt_internalSetInt.ml as mel_runtime/melange/belt_internalSetInt.ml) -(lib/melange/node_process.cmi as mel_runtime/melange/node_process.cmi) -(lib/melange/belt_Result.cmt as mel_runtime/melange/belt_Result.cmt) -(lib/melange/queue.cmi as mel_runtime/melange/queue.cmi) -(lib/melange/belt_HashSetInt.cmj as mel_runtime/melange/belt_HashSetInt.cmj) -(lib/melange/lazy.cmj as mel_runtime/melange/lazy.cmj) -(lib/melange/printexc.cmti as mel_runtime/melange/printexc.cmti) -(lib/melange/list.cmi as mel_runtime/melange/list.cmi) -(lib/melange/camlinternalLazy.ml as mel_runtime/melange/camlinternalLazy.ml) -(lib/melange/format.cmj as mel_runtime/melange/format.cmj) -(lib/melange/caml_io.ml as mel_runtime/melange/caml_io.ml) -(lib/melange/either.cmt as mel_runtime/melange/either.cmt) -(lib/melange/stream.cmi as mel_runtime/melange/stream.cmi) -(lib/melange/int32.cmti as mel_runtime/melange/int32.cmti) -(lib/melange/caml_parser.cmi as mel_runtime/melange/caml_parser.cmi) -(lib/melange/js_OO.ml as mel_runtime/melange/js_OO.ml) -(lib/melange/seq.cmti as mel_runtime/melange/seq.cmti) -(lib/melange/result.cmt as mel_runtime/melange/result.cmt) -(lib/melange/js_date.cmj as mel_runtime/melange/js_date.cmj) -(lib/melange/caml_exceptions.cmi as mel_runtime/melange/caml_exceptions.cmi) -(lib/melange/callback.cmj as mel_runtime/melange/callback.cmj) -(lib/melange/printexc.cmt as mel_runtime/melange/printexc.cmt) -(lib/melange/js.cmt as mel_runtime/melange/js.cmt) -(lib/melange/belt_MutableMap.cmj as mel_runtime/melange/belt_MutableMap.cmj) -(lib/melange/belt_HashMap.cmti as mel_runtime/melange/belt_HashMap.cmti) -(lib/melange/js_promise.cmi as mel_runtime/melange/js_promise.cmi) -(lib/melange/option.ml as mel_runtime/melange/option.ml) -(lib/melange/gc.cmt as mel_runtime/melange/gc.cmt) -(lib/melange/random.mli as mel_runtime/melange/random.mli) -(lib/melange/caml_string.cmti as mel_runtime/melange/caml_string.cmti) -(lib/melange/camlinternalLazy.cmti as mel_runtime/melange/camlinternalLazy.cmti) -(lib/melange/belt_SortArray.mli as mel_runtime/melange/belt_SortArray.mli) -(lib/melange/belt_MapDict.cmt as mel_runtime/melange/belt_MapDict.cmt) -(lib/melange/unit.cmi as mel_runtime/melange/unit.cmi) -(lib/melange/belt_HashMapInt.cmt as mel_runtime/melange/belt_HashMapInt.cmt) -(lib/melange/caml_oo.cmi as mel_runtime/melange/caml_oo.cmi) -(lib/melange/belt.cmj as mel_runtime/melange/belt.cmj) -(lib/melange/js_vector.cmti as mel_runtime/melange/js_vector.cmti) -(lib/melange/belt_HashSetString.ml as mel_runtime/melange/belt_HashSetString.ml) -(lib/melange/belt_MutableMapString.cmt as mel_runtime/melange/belt_MutableMapString.cmt) -(lib/melange/belt_Map.cmt as mel_runtime/melange/belt_Map.cmt) -(lib/melange/belt_HashMapInt.ml as mel_runtime/melange/belt_HashMapInt.ml) -(lib/melange/printf.mli as mel_runtime/melange/printf.mli) -(lib/melange/js_math.cmj as mel_runtime/melange/js_math.cmj) -(lib/melange/belt_internalBuckets.ml as mel_runtime/melange/belt_internalBuckets.ml) -(lib/melange/dom_storage2.ml as mel_runtime/melange/dom_storage2.ml) -(lib/melange/caml_hash_primitive.cmj as mel_runtime/melange/caml_hash_primitive.cmj) -(lib/melange/belt_internalAVLset.cmt as mel_runtime/melange/belt_internalAVLset.cmt) -(lib/melange/camlinternalMod.cmt as mel_runtime/melange/camlinternalMod.cmt) -(lib/melange/belt_SetString.mli as mel_runtime/melange/belt_SetString.mli) -(lib/melange/hashtbl.cmj as mel_runtime/melange/hashtbl.cmj) -(lib/melange/out_channel.ml as mel_runtime/melange/out_channel.ml) -(lib/melange/gc.ml as mel_runtime/melange/gc.ml) -(lib/melange/js_mapperRt.cmj as mel_runtime/melange/js_mapperRt.cmj) -(lib/melange/belt_List.mli as mel_runtime/melange/belt_List.mli) -(lib/melange/parsing.mli as mel_runtime/melange/parsing.mli) -(lib/melange/list.cmti as mel_runtime/melange/list.cmti) -(lib/melange/caml_string.cmj as mel_runtime/melange/caml_string.cmj) -(lib/melange/js_null.cmj as mel_runtime/melange/js_null.cmj) -(lib/melange/atomic.cmt as mel_runtime/melange/atomic.cmt) -(lib/melange/camlinternalOO.cmj as mel_runtime/melange/camlinternalOO.cmj) -(lib/melange/bytes.cmti as mel_runtime/melange/bytes.cmti) -(lib/melange/js_null_undefined.mli as mel_runtime/melange/js_null_undefined.mli) -(lib/melange/belt_internalSetString.ml as mel_runtime/melange/belt_internalSetString.ml) -(lib/melange/hashtbl.cmti as mel_runtime/melange/hashtbl.cmti) -(lib/melange/listLabels.mli as mel_runtime/melange/listLabels.mli) -(lib/melange/belt_internalAVLset.cmi as mel_runtime/melange/belt_internalAVLset.cmi) -(lib/melange/camlinternalFormat.cmti as mel_runtime/melange/camlinternalFormat.cmti) -(lib/melange/camlinternalMod.cmi as mel_runtime/melange/camlinternalMod.cmi) -(lib/melange/set.mli as mel_runtime/melange/set.mli) -(lib/melange/belt_SortArrayString.cmj as mel_runtime/melange/belt_SortArrayString.cmj) -(lib/melange/atomic.cmi as mel_runtime/melange/atomic.cmi) -(lib/melange/int.cmti as mel_runtime/melange/int.cmti) -(lib/melange/js_string.cmj as mel_runtime/melange/js_string.cmj) -(lib/melange/js_int.ml as mel_runtime/melange/js_int.ml) -(lib/melange/js_float.ml as mel_runtime/melange/js_float.ml) -(lib/melange/list.ml as mel_runtime/melange/list.ml) -(lib/melange/belt_Int.ml as mel_runtime/melange/belt_Int.ml) -(lib/melange/belt_HashMapInt.cmi as mel_runtime/melange/belt_HashMapInt.cmi) -(lib/melange/caml_oo.cmt as mel_runtime/melange/caml_oo.cmt) -(lib/melange/unit.cmt as mel_runtime/melange/unit.cmt) -(lib/melange/parsing.ml as mel_runtime/melange/parsing.ml) -(lib/melange/belt_Map.cmi as mel_runtime/melange/belt_Map.cmi) -(lib/melange/belt_MutableMapString.cmi as mel_runtime/melange/belt_MutableMapString.cmi) -(lib/melange/caml_obj.cmti as mel_runtime/melange/caml_obj.cmti) -(lib/melange/belt_MapDict.cmi as mel_runtime/melange/belt_MapDict.cmi) -(lib/melange/caml.mli as mel_runtime/melange/caml.mli) -(lib/melange/belt_MutableMapInt.ml as mel_runtime/melange/belt_MutableMapInt.ml) -(lib/melange/js_list.ml as mel_runtime/melange/js_list.ml) -(lib/melange/belt_MapInt.mli as mel_runtime/melange/belt_MapInt.mli) -(lib/melange/belt_Int.mli as mel_runtime/melange/belt_Int.mli) -(lib/melange/caml_exceptions.cmt as mel_runtime/melange/caml_exceptions.cmt) -(lib/melange/result.cmi as mel_runtime/melange/result.cmi) -(lib/melange/js_cast.cmti as mel_runtime/melange/js_cast.cmti) -(lib/melange/genlex.cmj as mel_runtime/melange/genlex.cmj) -(lib/melange/caml_parser.cmt as mel_runtime/melange/caml_parser.cmt) -(lib/melange/option.cmti as mel_runtime/melange/option.cmti) -(lib/melange/belt_MutableStack.cmti as mel_runtime/melange/belt_MutableStack.cmti) -(lib/melange/js_promise.cmt as mel_runtime/melange/js_promise.cmt) -(lib/melange/caml_gc.cmti as mel_runtime/melange/caml_gc.cmti) -(lib/melange/gc.cmi as mel_runtime/melange/gc.cmi) -(lib/melange/fun.ml as mel_runtime/melange/fun.ml) -(lib/melange/internal_set.cppo.ml as mel_runtime/melange/internal_set.cppo.ml) -(lib/melange/caml_int64_extern.cmj as mel_runtime/melange/caml_int64_extern.cmj) -(lib/melange/js.cmi as mel_runtime/melange/js.cmi) -(lib/melange/printexc.cmi as mel_runtime/melange/printexc.cmi) -(lib/melange/weak.mli as mel_runtime/melange/weak.mli) -(lib/melange/belt_Result.cmi as mel_runtime/melange/belt_Result.cmi) -(lib/melange/arg.cmj as mel_runtime/melange/arg.cmj) -(lib/melange/queue.cmt as mel_runtime/melange/queue.cmt) -(lib/melange/js_cast.cmt as mel_runtime/melange/js_cast.cmt) -(lib/melange/node_process.cmt as mel_runtime/melange/node_process.cmt) -(lib/melange/belt_SortArrayInt.cmj as mel_runtime/melange/belt_SortArrayInt.cmj) -(lib/melange/belt_SortArrayInt.cmti as mel_runtime/melange/belt_SortArrayInt.cmti) -(lib/melange/either.cmi as mel_runtime/melange/either.cmi) -(lib/melange/stream.cmt as mel_runtime/melange/stream.cmt) -(lib/melange/belt_MutableSetString.cmj as mel_runtime/melange/belt_MutableSetString.cmj) -(lib/melange/caml_sys.cmj as mel_runtime/melange/caml_sys.cmj) -(lib/melange/moreLabels.cmj as mel_runtime/melange/moreLabels.cmj) -(lib/melange/list.cmt as mel_runtime/melange/list.cmt) -(lib/melange/queue.cmti as mel_runtime/melange/queue.cmti) -(lib/melange/js_types.ml as mel_runtime/melange/js_types.ml) -(lib/melange/js_json.cmi as mel_runtime/melange/js_json.cmi) -(lib/melange/js_string2.cmj as mel_runtime/melange/js_string2.cmj) -(lib/melange/belt_internalAVLtree.cmi as mel_runtime/melange/belt_internalAVLtree.cmi) -(lib/melange/belt_Range.cmt as mel_runtime/melange/belt_Range.cmt) -(lib/melange/js_dict.cmj as mel_runtime/melange/js_dict.cmj) -(lib/melange/belt_SetDict.cmt as mel_runtime/melange/belt_SetDict.cmt) -(lib/melange/node_child_process.ml as mel_runtime/melange/node_child_process.ml) -(lib/melange/seq.mli as mel_runtime/melange/seq.mli) -(lib/melange/belt_Set.ml as mel_runtime/melange/belt_Set.ml) -(lib/melange/js_obj.cmi as mel_runtime/melange/js_obj.cmi) -(lib/melange/caml_float.cmj as mel_runtime/melange/caml_float.cmj) -(lib/melange/belt_internalMapInt.ml as mel_runtime/melange/belt_internalMapInt.ml) -(lib/melange/js_typed_array.cmt as mel_runtime/melange/js_typed_array.cmt) -(lib/melange/float.cmt as mel_runtime/melange/float.cmt) -(lib/melange/caml_array_extern.cmj as mel_runtime/melange/caml_array_extern.cmj) -(lib/melange/belt_HashSetString.cmi as mel_runtime/melange/belt_HashSetString.cmi) -(lib/melange/either.ml as mel_runtime/melange/either.ml) -(lib/melange/caml_oo.ml as mel_runtime/melange/caml_oo.ml) -(lib/melange/dom.cmj as mel_runtime/melange/dom.cmj) -(lib/melange/int64.cmj as mel_runtime/melange/int64.cmj) -(lib/melange/js_mapperRt.ml as mel_runtime/melange/js_mapperRt.ml) -(lib/melange/obj.cmi as mel_runtime/melange/obj.cmi) -(lib/melange/caml_module.cmj as mel_runtime/melange/caml_module.cmj) -(lib/melange/caml_int64.cmt as mel_runtime/melange/caml_int64.cmt) -(lib/melange/camlinternalLazy.cmt as mel_runtime/melange/camlinternalLazy.cmt) -(lib/melange/js_global.cmi as mel_runtime/melange/js_global.cmi) -(lib/melange/caml_option.cmti as mel_runtime/melange/caml_option.cmti) -(lib/melange/camlinternalFormatBasics.cmi as mel_runtime/melange/camlinternalFormatBasics.cmi) -(lib/melange/caml_external_polyfill.cmj as mel_runtime/melange/caml_external_polyfill.cmj) -(lib/melange/belt_SortArray.cmti as mel_runtime/melange/belt_SortArray.cmti) -(lib/melange/string.mli as mel_runtime/melange/string.mli) -(lib/melange/caml_oo_curry.cmi as mel_runtime/melange/caml_oo_curry.cmi) -(lib/melange/node__no_aliases.cmt as mel_runtime/melange/node__no_aliases.cmt) -(lib/melange/belt_HashSetInt.ml as mel_runtime/melange/belt_HashSetInt.ml) -(lib/melange/belt_internalAVLset.ml as mel_runtime/melange/belt_internalAVLset.ml) -(lib/melange/js_undefined.mli as mel_runtime/melange/js_undefined.mli) -(lib/melange/stdlib.mli as mel_runtime/melange/stdlib.mli) -(lib/melange/belt_HashMapString.cmj as mel_runtime/melange/belt_HashMapString.cmj) -(lib/melange/option.cmi as mel_runtime/melange/option.cmi) -(lib/melange/js_exn.cmi as mel_runtime/melange/js_exn.cmi) -(lib/melange/belt_Float.cmti as mel_runtime/melange/belt_Float.cmti) -(lib/melange/digest.cmj as mel_runtime/melange/digest.cmj) -(lib/melange/scanf.cmj as mel_runtime/melange/scanf.cmj) -(lib/melange/stringLabels.mli as mel_runtime/melange/stringLabels.mli) -(lib/melange/complex.cmt as mel_runtime/melange/complex.cmt) -(lib/melange/belt_Array.cmj as mel_runtime/melange/belt_Array.cmj) -(lib/melange/js_console.cmj as mel_runtime/melange/js_console.cmj) -(lib/melange/js_OO.cmj as mel_runtime/melange/js_OO.cmj) -(lib/melange/belt_internalBucketsType.cmj as mel_runtime/melange/belt_internalBucketsType.cmj) -(lib/melange/bytesLabels.cmti as mel_runtime/melange/bytesLabels.cmti) -(lib/melange/caml_format.mli as mel_runtime/melange/caml_format.mli) -(lib/melange/caml_undefined_extern.cmi as mel_runtime/melange/caml_undefined_extern.cmi) -(lib/melange/map.cmt as mel_runtime/melange/map.cmt) -(lib/melange/belt_MutableMapString.ml as mel_runtime/melange/belt_MutableMapString.ml) -(lib/melange/belt.ml as mel_runtime/melange/belt.ml) -(lib/melange/belt_HashSet.cmj as mel_runtime/melange/belt_HashSet.cmj) -(lib/melange/std_exit.ml as mel_runtime/melange/std_exit.ml) -(lib/melange/scanf.ml as mel_runtime/melange/scanf.ml) -(lib/melange/pervasives.ml as mel_runtime/melange/pervasives.ml) -(lib/melange/float.cmti as mel_runtime/melange/float.cmti) -(lib/melange/belt_MutableSetInt.mli as mel_runtime/melange/belt_MutableSetInt.mli) -(lib/melange/in_channel.cmj as mel_runtime/melange/in_channel.cmj) -(lib/melange/belt_Option.cmi as mel_runtime/melange/belt_Option.cmi) -(lib/melange/caml_hash_primitive.ml as mel_runtime/melange/caml_hash_primitive.ml) -(lib/melange/array.cmi as mel_runtime/melange/array.cmi) -(lib/melange/int32.cmi as mel_runtime/melange/int32.cmi) -(lib/melange/belt_Id.cmi as mel_runtime/melange/belt_Id.cmi) -(lib/melange/caml_parser.ml as mel_runtime/melange/caml_parser.ml) -(lib/melange/caml_hash.cmj as mel_runtime/melange/caml_hash.cmj) -(lib/melange/js_cast.ml as mel_runtime/melange/js_cast.ml) -(lib/melange/hashset.cppo.mli as mel_runtime/melange/hashset.cppo.mli) -(lib/melange/mapm.cppo.ml as mel_runtime/melange/mapm.cppo.ml) -(lib/melange/belt_Option.cmt as mel_runtime/melange/belt_Option.cmt) -(lib/melange/parsing.cmti as mel_runtime/melange/parsing.cmti) -(lib/melange/belt_List.ml as mel_runtime/melange/belt_List.ml) -(lib/melange/node__no_aliases.ml as mel_runtime/melange/node__no_aliases.ml) -(lib/melange/caml_obj.mli as mel_runtime/melange/caml_obj.mli) -(lib/melange/caml_int32.cmj as mel_runtime/melange/caml_int32.cmj) -(lib/melange/caml_array.cmj as mel_runtime/melange/caml_array.cmj) -(lib/melange/js_string.ml as mel_runtime/melange/js_string.ml) -(lib/melange/array.cmt as mel_runtime/melange/array.cmt) -(lib/melange/int32.cmt as mel_runtime/melange/int32.cmt) -(lib/melange/belt_Set.mli as mel_runtime/melange/belt_Set.mli) -(lib/melange/oo.cmti as mel_runtime/melange/oo.cmti) -(lib/melange/belt_Id.cmt as mel_runtime/melange/belt_Id.cmt) -(lib/melange/internal_map.cppo.ml as mel_runtime/melange/internal_map.cppo.ml) -(lib/melange/option.cmt as mel_runtime/melange/option.cmt) -(lib/melange/caml_string_extern.ml as mel_runtime/melange/caml_string_extern.ml) -(lib/melange/belt_MutableSetInt.ml as mel_runtime/melange/belt_MutableSetInt.ml) -(lib/melange/js_exn.cmt as mel_runtime/melange/js_exn.cmt) -(lib/melange/caml_oo_curry.cmt as mel_runtime/melange/caml_oo_curry.cmt) -(lib/melange/node__no_aliases.cmi as mel_runtime/melange/node__no_aliases.cmi) -(lib/melange/buffer.mli as mel_runtime/melange/buffer.mli) -(lib/melange/caml_array.ml as mel_runtime/melange/caml_array.ml) -(lib/melange/camlinternalAtomic.ml as mel_runtime/melange/camlinternalAtomic.ml) -(lib/melange/char.cmj as mel_runtime/melange/char.cmj) -(lib/melange/caml_undefined_extern.cmt as mel_runtime/melange/caml_undefined_extern.cmt) -(lib/melange/camlinternalMod.cmti as mel_runtime/melange/camlinternalMod.cmti) -(lib/melange/map.cmi as mel_runtime/melange/map.cmi) -(lib/melange/marshal.ml as mel_runtime/melange/marshal.ml) -(lib/melange/ephemeron.ml as mel_runtime/melange/ephemeron.ml) -(lib/melange/bs_stdlib_mini.cmj as mel_runtime/melange/bs_stdlib_mini.cmj) -(lib/melange/digest.ml as mel_runtime/melange/digest.ml) -(lib/melange/complex.cmi as mel_runtime/melange/complex.cmi) -(lib/melange/in_channel.cmti as mel_runtime/melange/in_channel.cmti) -(lib/melange/caml_int64.cmi as mel_runtime/melange/caml_int64.cmi) -(lib/melange/camlinternalLazy.cmi as mel_runtime/melange/camlinternalLazy.cmi) -(lib/melange/js_global.cmt as mel_runtime/melange/js_global.cmt) -(lib/melange/camlinternalFormat.mli as mel_runtime/melange/camlinternalFormat.mli) -(lib/melange/obj.cmt as mel_runtime/melange/obj.cmt) -(lib/melange/int.mli as mel_runtime/melange/int.mli) -(lib/melange/belt_MutableMap.ml as mel_runtime/melange/belt_MutableMap.ml) -(lib/melange/camlinternalFormatBasics.ml as mel_runtime/melange/camlinternalFormatBasics.ml) -(lib/melange/belt_Result.ml as mel_runtime/melange/belt_Result.ml) -(lib/melange/belt_Float.cmj as mel_runtime/melange/belt_Float.cmj) -(lib/melange/stdLabels.mli as mel_runtime/melange/stdLabels.mli) -(lib/melange/string.cmti as mel_runtime/melange/string.cmti) -(lib/melange/camlinternalFormatBasics.cmt as mel_runtime/melange/camlinternalFormatBasics.cmt) -(lib/melange/belt_internalAVLtree.cmt as mel_runtime/melange/belt_internalAVLtree.cmt) -(lib/melange/caml_module.cmti as mel_runtime/melange/caml_module.cmti) -(lib/melange/arrayLabels.cmti as mel_runtime/melange/arrayLabels.cmti) -(lib/melange/belt_SetDict.cmi as mel_runtime/melange/belt_SetDict.cmi) -(lib/melange/belt_Range.cmi as mel_runtime/melange/belt_Range.cmi) -(lib/melange/node_path.cmj as mel_runtime/melange/node_path.cmj) -(lib/melange/queue.ml as mel_runtime/melange/queue.ml) -(lib/melange/js_obj.cmt as mel_runtime/melange/js_obj.cmt) -(lib/melange/callback.ml as mel_runtime/melange/callback.ml) -(lib/melange/js_json.cmt as mel_runtime/melange/js_json.cmt) -(lib/melange/belt_SortArrayString.cmti as mel_runtime/melange/belt_SortArrayString.cmti) -(lib/melange/belt_MutableStack.cmj as mel_runtime/melange/belt_MutableStack.cmj) -(lib/melange/stack.mli as mel_runtime/melange/stack.mli) -(lib/melange/caml_bytes.ml as mel_runtime/melange/caml_bytes.ml) -(lib/melange/float.cmi as mel_runtime/melange/float.cmi) -(lib/melange/int64.cmti as mel_runtime/melange/int64.cmti) -(lib/melange/belt_HashSetString.cmt as mel_runtime/melange/belt_HashSetString.cmt) -(lib/melange/js_exn.cmti as mel_runtime/melange/js_exn.cmti) -(lib/melange/bytes.mli as mel_runtime/melange/bytes.mli) -(lib/melange/camlinternalMod.ml as mel_runtime/melange/camlinternalMod.ml) -(lib/melange/js_typed_array.cmi as mel_runtime/melange/js_typed_array.cmi) -(lib/melange/caml_bytes.cmi as mel_runtime/melange/caml_bytes.cmi) -(lib/melange/caml_float.mli as mel_runtime/melange/caml_float.mli) -(lib/melange/caml_array_extern.ml as mel_runtime/melange/caml_array_extern.ml) -(lib/melange/js_dict.mli as mel_runtime/melange/js_dict.mli) -(lib/melange/seq.cmj as mel_runtime/melange/seq.cmj) -(lib/melange/stream.ml as mel_runtime/melange/stream.ml) -(lib/melange/belt_Set.cmti as mel_runtime/melange/belt_Set.cmti) -(lib/melange/belt_MutableSet.cmi as mel_runtime/melange/belt_MutableSet.cmi) -(lib/melange/random.ml as mel_runtime/melange/random.ml) -(lib/melange/belt_SortArray.ml as mel_runtime/melange/belt_SortArray.ml) -(lib/melange/caml_io.cmt as mel_runtime/melange/caml_io.cmt) -(lib/melange/string.cmj as mel_runtime/melange/string.cmj) -(lib/melange/oo.ml as mel_runtime/melange/oo.ml) -(lib/melange/ephemeron.cmt as mel_runtime/melange/ephemeron.cmt) -(lib/melange/caml_bytes.cmti as mel_runtime/melange/caml_bytes.cmti) -(lib/melange/belt_MutableMapInt.cmt as mel_runtime/melange/belt_MutableMapInt.cmt) -(lib/melange/caml_lexer.cmt as mel_runtime/melange/caml_lexer.cmt) -(lib/melange/node_module.cmj as mel_runtime/melange/node_module.cmj) -(lib/melange/dom_storage.cmi as mel_runtime/melange/dom_storage.cmi) -(lib/melange/caml_hash.ml as mel_runtime/melange/caml_hash.ml) -(lib/melange/int64.mli as mel_runtime/melange/int64.mli) -(lib/melange/caml_module.mli as mel_runtime/melange/caml_module.mli) -(lib/melange/caml_format.cmj as mel_runtime/melange/caml_format.cmj) -(lib/melange/belt_internalBucketsType.mli as mel_runtime/melange/belt_internalBucketsType.mli) -(lib/melange/belt_SetDict.ml as mel_runtime/melange/belt_SetDict.ml) -(lib/melange/stringLabels.cmti as mel_runtime/melange/stringLabels.cmti) -(lib/melange/fun.cmi as mel_runtime/melange/fun.cmi) -(lib/melange/belt_Id.cmti as mel_runtime/melange/belt_Id.cmti) -(lib/melange/caml_int32.cmti as mel_runtime/melange/caml_int32.cmti) -(lib/melange/bool.cmi as mel_runtime/melange/bool.cmi) -(lib/melange/stringLabels.cmj as mel_runtime/melange/stringLabels.cmj) -(lib/melange/scanf.mli as mel_runtime/melange/scanf.mli) -(lib/melange/belt_internalBuckets.cmi as mel_runtime/melange/belt_internalBuckets.cmi) -(lib/melange/belt_Array.mli as mel_runtime/melange/belt_Array.mli) -(lib/melange/belt_HashMapString.mli as mel_runtime/melange/belt_HashMapString.mli) -(lib/melange/digest.mli as mel_runtime/melange/digest.mli) -(lib/melange/out_channel.cmt as mel_runtime/melange/out_channel.cmt) -(lib/melange/digest.cmti as mel_runtime/melange/digest.cmti) -(lib/melange/node_fs.cmt as mel_runtime/melange/node_fs.cmt) -(lib/melange/camlinternalAtomic.cmi as mel_runtime/melange/camlinternalAtomic.cmi) -(lib/melange/uchar.cmti as mel_runtime/melange/uchar.cmti) -(lib/melange/caml_md5.cmt as mel_runtime/melange/caml_md5.cmt) -(lib/melange/stdlib.cmj as mel_runtime/melange/stdlib.cmj) -(lib/melange/js_undefined.cmj as mel_runtime/melange/js_undefined.cmj) -(lib/melange/caml_hash.mli as mel_runtime/melange/caml_hash.mli) -(lib/melange/setm.cppo.ml as mel_runtime/melange/setm.cppo.ml) -(lib/melange/caml_int32_extern.ml as mel_runtime/melange/caml_int32_extern.ml) -(lib/melange/bytesLabels.cmi as mel_runtime/melange/bytesLabels.cmi) -(lib/melange/in_channel.mli as mel_runtime/melange/in_channel.mli) -(lib/melange/belt_MutableSetInt.cmj as mel_runtime/melange/belt_MutableSetInt.cmj) -(lib/melange/belt_Result.cmti as mel_runtime/melange/belt_Result.cmti) -(lib/melange/belt_internalBuckets.cmti as mel_runtime/melange/belt_internalBuckets.cmti) -(lib/melange/js_result.cmi as mel_runtime/melange/js_result.cmi) -(lib/melange/stdlib.cmti as mel_runtime/melange/stdlib.cmti) -(lib/melange/belt_internalMapInt.cmi as mel_runtime/melange/belt_internalMapInt.cmi) -(lib/melange/belt_HashSet.mli as mel_runtime/melange/belt_HashSet.mli) -(lib/melange/bytesLabels.cmt as mel_runtime/melange/bytesLabels.cmt) -(lib/melange/belt_Set.cmj as mel_runtime/melange/belt_Set.cmj) -(lib/melange/caml_obj.cmj as mel_runtime/melange/caml_obj.cmj) -(lib/melange/caml_array.mli as mel_runtime/melange/caml_array.mli) -(lib/melange/caml_int32.mli as mel_runtime/melange/caml_int32.mli) -(lib/melange/stdLabels.ml as mel_runtime/melange/stdLabels.ml) -(lib/melange/belt_internalMapInt.cmt as mel_runtime/melange/belt_internalMapInt.cmt) -(lib/melange/caml_int64_extern.ml as mel_runtime/melange/caml_int64_extern.ml) -(lib/melange/bs_stdlib_mini.cmti as mel_runtime/melange/bs_stdlib_mini.cmti) -(lib/melange/hashmap.cppo.mli as mel_runtime/melange/hashmap.cppo.mli) -(lib/melange/js_result.cmt as mel_runtime/melange/js_result.cmt) -(lib/melange/bs_stdlib_mini.mli as mel_runtime/melange/bs_stdlib_mini.mli) -(lib/melange/fun.cmt as mel_runtime/melange/fun.cmt) -(lib/melange/bool.cmt as mel_runtime/melange/bool.cmt) -(lib/melange/belt_internalBuckets.cmt as mel_runtime/melange/belt_internalBuckets.cmt) -(lib/melange/belt_internalAVLset.cmti as mel_runtime/melange/belt_internalAVLset.cmti) -(lib/melange/char.mli as mel_runtime/melange/char.mli) -(lib/melange/caml_int32.ml as mel_runtime/melange/caml_int32.ml) -(lib/melange/format.ml as mel_runtime/melange/format.ml) -(lib/melange/node_fs.cmi as mel_runtime/melange/node_fs.cmi) -(lib/melange/buffer.cmj as mel_runtime/melange/buffer.cmj) -(lib/melange/camlinternalAtomic.cmt as mel_runtime/melange/camlinternalAtomic.cmt) -(lib/melange/arg.cmti as mel_runtime/melange/arg.cmti) -(lib/melange/caml_md5.cmi as mel_runtime/melange/caml_md5.cmi) -(lib/melange/stringLabels.ml as mel_runtime/melange/stringLabels.ml) -(lib/melange/map.cmti as mel_runtime/melange/map.cmti) -(lib/melange/fun.cmti as mel_runtime/melange/fun.cmti) -(lib/melange/belt_MutableSetString.ml as mel_runtime/melange/belt_MutableSetString.ml) -(lib/melange/out_channel.cmi as mel_runtime/melange/out_channel.cmi) -(lib/melange/mapm.cppo.mli as mel_runtime/melange/mapm.cppo.mli) -(lib/melange/stdLabels.cmj as mel_runtime/melange/stdLabels.cmj) -(lib/melange/stdLabels.cmti as mel_runtime/melange/stdLabels.cmti) -(lib/melange/node_path.ml as mel_runtime/melange/node_path.ml) -(lib/melange/ephemeron.cmi as mel_runtime/melange/ephemeron.cmi) -(lib/melange/belt_MutableSet.cmti as mel_runtime/melange/belt_MutableSet.cmti) -(lib/melange/int.cmj as mel_runtime/melange/int.cmj) -(lib/melange/printf.ml as mel_runtime/melange/printf.ml) -(lib/melange/caml_io.cmi as mel_runtime/melange/caml_io.cmi) -(lib/melange/weak.cmti as mel_runtime/melange/weak.cmti) -(lib/melange/belt_Float.mli as mel_runtime/melange/belt_Float.mli) -(lib/melange/dom_storage.cmt as mel_runtime/melange/dom_storage.cmt) -(lib/melange/moreLabels.ml as mel_runtime/melange/moreLabels.ml) -(lib/melange/belt_internalSetInt.cmj as mel_runtime/melange/belt_internalSetInt.cmj) -(lib/melange/js_undefined.cmti as mel_runtime/melange/js_undefined.cmti) -(lib/melange/caml_float_extern.cmj as mel_runtime/melange/caml_float_extern.cmj) -(lib/melange/belt_MutableMapInt.cmi as mel_runtime/melange/belt_MutableMapInt.cmi) -(lib/melange/caml_lexer.cmi as mel_runtime/melange/caml_lexer.cmi) -(lib/melange/camlinternalFormat.cmj as mel_runtime/melange/camlinternalFormat.cmj) -(lib/melange/js_int.cmj as mel_runtime/melange/js_int.cmj) -(lib/melange/caml_lexer.ml as mel_runtime/melange/caml_lexer.ml) -(lib/melange/belt_HashSetString.cmti as mel_runtime/melange/belt_HashSetString.cmti) -(lib/melange/bytes.cmj as mel_runtime/melange/bytes.cmj) -(lib/melange/stack.cmj as mel_runtime/melange/stack.cmj) -(lib/melange/curry.cmj as mel_runtime/melange/curry.cmj) -(lib/melange/format.cmti as mel_runtime/melange/format.cmti) -(lib/melange/scanf.cmti as mel_runtime/melange/scanf.cmti) -(lib/melange/caml_bytes.cmt as mel_runtime/melange/caml_bytes.cmt) -(lib/melange/belt_MutableStack.mli as mel_runtime/melange/belt_MutableStack.mli) -(lib/melange/std_exit.cmj as mel_runtime/melange/std_exit.cmj) -(lib/melange/js_option.cmti as mel_runtime/melange/js_option.cmti) -(lib/melange/caml_parser.cmti as mel_runtime/melange/caml_parser.cmti) -(lib/melange/belt_MutableSet.cmt as mel_runtime/melange/belt_MutableSet.cmt) -(lib/melange/js_dict.cmti as mel_runtime/melange/js_dict.cmti) -(lib/melange/belt_SetInt.cmi as mel_runtime/melange/belt_SetInt.cmi) -(lib/melange/dom_storage2.cmi as mel_runtime/melange/dom_storage2.cmi) -(lib/melange/js_typed_array2.cmj as mel_runtime/melange/js_typed_array2.cmj) -(lib/melange/caml_string.ml as mel_runtime/melange/caml_string.ml) -(lib/melange/caml_splice_call.cmi as mel_runtime/melange/caml_splice_call.cmi) -(lib/melange/js_vector.cmt as mel_runtime/melange/js_vector.cmt) -(lib/melange/js_array.cmj as mel_runtime/melange/js_array.cmj) -(lib/melange/node_fs.ml as mel_runtime/melange/node_fs.ml) -(lib/melange/format.mli as mel_runtime/melange/format.mli) -(lib/melange/caml_format.cmti as mel_runtime/melange/caml_format.cmti) -(lib/melange/caml_nativeint_extern.cmj as mel_runtime/melange/caml_nativeint_extern.cmj) -(lib/melange/belt_MutableQueue.cmi as mel_runtime/melange/belt_MutableQueue.cmi) -(lib/melange/caml_int32_extern.cmt as mel_runtime/melange/caml_int32_extern.cmt) -(lib/melange/js_option.cmt as mel_runtime/melange/js_option.cmt) -(lib/melange/lazy.mli as mel_runtime/melange/lazy.mli) -(lib/melange/caml_string_extern.cmt as mel_runtime/melange/caml_string_extern.cmt) -(lib/melange/belt_HashSetInt.mli as mel_runtime/melange/belt_HashSetInt.mli) -(lib/melange/arrayLabels.mli as mel_runtime/melange/arrayLabels.mli) -(lib/melange/caml_option.cmi as mel_runtime/melange/caml_option.cmi) -(lib/melange/belt_internalSetString.cmj as mel_runtime/melange/belt_internalSetString.cmj) -(lib/melange/oo.cmi as mel_runtime/melange/oo.cmi) -(lib/melange/node_child_process.cmi as mel_runtime/melange/node_child_process.cmi) -(lib/melange/random.cmj as mel_runtime/melange/random.cmj) -(lib/melange/lexing.cmi as mel_runtime/melange/lexing.cmi) -(lib/melange/callback.mli as mel_runtime/melange/callback.mli) -(lib/melange/belt_MutableSet.ml as mel_runtime/melange/belt_MutableSet.ml) -(lib/melange/belt_MutableMap.mli as mel_runtime/melange/belt_MutableMap.mli) -(lib/melange/map.cppo.ml as mel_runtime/melange/map.cppo.ml) -(lib/melange/belt_MapString.cmi as mel_runtime/melange/belt_MapString.cmi) -(lib/melange/belt_internalSetBuckets.cmi as mel_runtime/melange/belt_internalSetBuckets.cmi) -(lib/melange/js_types.cmt as mel_runtime/melange/js_types.cmt) -(lib/melange/belt_MutableStack.ml as mel_runtime/melange/belt_MutableStack.ml) -(lib/melange/caml_float.cmti as mel_runtime/melange/caml_float.cmti) -(lib/melange/belt_HashMap.cmi as mel_runtime/melange/belt_HashMap.cmi) -(lib/melange/pervasives.cmt as mel_runtime/melange/pervasives.cmt) -(lib/melange/char.ml as mel_runtime/melange/char.ml) -(lib/melange/caml_hash_primitive.mli as mel_runtime/melange/caml_hash_primitive.mli) -(lib/melange/belt_internalMapString.cmi as mel_runtime/melange/belt_internalMapString.cmi) -(lib/melange/printf.cmj as mel_runtime/melange/printf.cmj) -(lib/melange/caml_gc.cmt as mel_runtime/melange/caml_gc.cmt) -(lib/melange/sys.cmi as mel_runtime/melange/sys.cmi) -(lib/melange/caml_gc.ml as mel_runtime/melange/caml_gc.ml) -(lib/melange/js.ml as mel_runtime/melange/js.ml) -(lib/melange/belt_SortArray.cmj as mel_runtime/melange/belt_SortArray.cmj) -(lib/melange/caml_sys.cmti as mel_runtime/melange/caml_sys.cmti) -(lib/melange/belt_internalMapString.ml as mel_runtime/melange/belt_internalMapString.ml) -(lib/melange/camlinternalOO.mli as mel_runtime/melange/camlinternalOO.mli) -(lib/melange/js_list.cmi as mel_runtime/melange/js_list.cmi) -(lib/melange/filename.cmi as mel_runtime/melange/filename.cmi) -(lib/melange/js_null.mli as mel_runtime/melange/js_null.mli) -(lib/melange/marshal.cmt as mel_runtime/melange/marshal.cmt) -(lib/melange/caml_string.mli as mel_runtime/melange/caml_string.mli) -(lib/melange/caml_js_exceptions.cmt as mel_runtime/melange/caml_js_exceptions.cmt) -(lib/melange/belt_internalAVLtree.cmti as mel_runtime/melange/belt_internalAVLtree.cmti) -(lib/melange/caml_module.ml as mel_runtime/melange/caml_module.ml) -(lib/melange/caml_hash_primitive.cmti as mel_runtime/melange/caml_hash_primitive.cmti) -(lib/melange/js_array2.cmi as mel_runtime/melange/js_array2.cmi) -(lib/melange/parsing.cmj as mel_runtime/melange/parsing.cmj) -(lib/melange/belt_Id.ml as mel_runtime/melange/belt_Id.ml) -(lib/melange/uchar.cmi as mel_runtime/melange/uchar.cmi) -(lib/melange/belt_SetString.cmj as mel_runtime/melange/belt_SetString.cmj) -(lib/melange/hashtbl.mli as mel_runtime/melange/hashtbl.mli) -(lib/melange/belt_List.cmj as mel_runtime/melange/belt_List.cmj) -(lib/melange/js_mapperRt.mli as mel_runtime/melange/js_mapperRt.mli) -(lib/melange/caml_nativeint_extern.ml as mel_runtime/melange/caml_nativeint_extern.ml) -(lib/melange/unit.cmti as mel_runtime/melange/unit.cmti) -(lib/melange/marshal.cmi as mel_runtime/melange/marshal.cmi) -(lib/melange/js_result.ml as mel_runtime/melange/js_result.ml) -(lib/melange/caml_js_exceptions.cmi as mel_runtime/melange/caml_js_exceptions.cmi) -(lib/melange/js_float.cmj as mel_runtime/melange/js_float.cmj) -(lib/melange/bool.ml as mel_runtime/melange/bool.ml) -(lib/melange/js_list.cmt as mel_runtime/melange/js_list.cmt) -(lib/melange/filename.cmt as mel_runtime/melange/filename.cmt) -(lib/melange/belt_SortArrayInt.ml as mel_runtime/melange/belt_SortArrayInt.ml) -(lib/melange/belt_SortArrayString.mli as mel_runtime/melange/belt_SortArrayString.mli) -(lib/melange/set.cmj as mel_runtime/melange/set.cmj) -(lib/melange/listLabels.cmj as mel_runtime/melange/listLabels.cmj) -(lib/melange/js_array2.cmt as mel_runtime/melange/js_array2.cmt) -(lib/melange/js_typed_array2.ml as mel_runtime/melange/js_typed_array2.ml) -(lib/melange/uchar.cmt as mel_runtime/melange/uchar.cmt) -(lib/melange/js_null_undefined.cmj as mel_runtime/melange/js_null_undefined.cmj) -(lib/melange/caml_int64.cmti as mel_runtime/melange/caml_int64.cmti) -(lib/melange/belt_internalMapString.cmt as mel_runtime/melange/belt_internalMapString.cmt) -(lib/melange/int64.ml as mel_runtime/melange/int64.ml) -(lib/melange/belt_HashMap.cmt as mel_runtime/melange/belt_HashMap.cmt) -(lib/melange/pervasives.cmi as mel_runtime/melange/pervasives.cmi) -(lib/melange/belt_HashMapString.ml as mel_runtime/melange/belt_HashMapString.ml) -(lib/melange/belt_MapInt.cmj as mel_runtime/melange/belt_MapInt.cmj) -(lib/melange/js_null.ml as mel_runtime/melange/js_null.ml) -(lib/melange/caml.cmj as mel_runtime/melange/caml.cmj) -(lib/melange/caml_gc.cmi as mel_runtime/melange/caml_gc.cmi) -(lib/melange/sys.cmt as mel_runtime/melange/sys.cmt) -(lib/melange/js_re.cmj as mel_runtime/melange/js_re.cmj) -(lib/melange/weak.cmj as mel_runtime/melange/weak.cmj) -(lib/melange/js_console.ml as mel_runtime/melange/js_console.ml) -(lib/melange/belt_MapString.cmt as mel_runtime/melange/belt_MapString.cmt) -(lib/melange/oo.cmt as mel_runtime/melange/oo.cmt) -(lib/melange/node_child_process.cmt as mel_runtime/melange/node_child_process.cmt) -(lib/melange/lexing.cmt as mel_runtime/melange/lexing.cmt) -(lib/melange/belt_internalSetBuckets.cmt as mel_runtime/melange/belt_internalSetBuckets.cmt) -(lib/melange/belt_Int.cmj as mel_runtime/melange/belt_Int.cmj) -(lib/melange/node.cmj as mel_runtime/melange/node.cmj) -(lib/melange/genlex.mli as mel_runtime/melange/genlex.mli) -(lib/melange/js_types.cmi as mel_runtime/melange/js_types.cmi) -(lib/melange/moreLabels.mli as mel_runtime/melange/moreLabels.mli) -(lib/melange/caml_sys.mli as mel_runtime/melange/caml_sys.mli) -(lib/melange/belt_HashMapString.cmti as mel_runtime/melange/belt_HashMapString.cmti) -(lib/melange/belt_MutableQueue.cmt as mel_runtime/melange/belt_MutableQueue.cmt) -(lib/melange/dom_storage2.cmt as mel_runtime/melange/dom_storage2.cmt) -(lib/melange/belt_MutableSetString.mli as mel_runtime/melange/belt_MutableSetString.mli) -(lib/melange/belt_SetInt.cmt as mel_runtime/melange/belt_SetInt.cmt) -(lib/melange/caml_splice_call.cmt as mel_runtime/melange/caml_splice_call.cmt) -(lib/melange/js_vector.cmi as mel_runtime/melange/js_vector.cmi) -(lib/melange/js_obj.ml as mel_runtime/melange/js_obj.ml) -(lib/melange/js_promise.ml as mel_runtime/melange/js_promise.ml) -(lib/melange/float.ml as mel_runtime/melange/float.ml) -(lib/melange/caml_option.cmt as mel_runtime/melange/caml_option.cmt) -(lib/melange/belt_SortArrayInt.mli as mel_runtime/melange/belt_SortArrayInt.mli) -(lib/melange/node_buffer.cmj as mel_runtime/melange/node_buffer.cmj) -(lib/melange/belt_Map.ml as mel_runtime/melange/belt_Map.ml) -(lib/melange/caml_int32_extern.cmi as mel_runtime/melange/caml_int32_extern.cmi) -(lib/melange/arg.mli as mel_runtime/melange/arg.mli) -(lib/melange/js_option.cmi as mel_runtime/melange/js_option.cmi) -(lib/melange/caml_string_extern.cmi as mel_runtime/melange/caml_string_extern.cmi)) \ No newline at end of file diff --git a/lib/dune b/lib/dune deleted file mode 100644 index 6ba92efb6b..0000000000 --- a/lib/dune +++ /dev/null @@ -1,59 +0,0 @@ -(executable - (name find_artifacts)) - -(rule - (targets artifacts.sexp) - (deps melange) - (mode - (promote (until-clean))) - (action - (with-stdout-to - artifacts.sexp - (run ./find_artifacts.exe %{deps})))) - -(rule - (targets - (dir melange)) - (mode - (promote (until-clean))) - (deps - (:artifacts - (glob_files ../jscomp/runtime/*.{ml,mli,cmi,cmj,cmt,cmti}) - (glob_files ../jscomp/others/*.{ml,mli,cmi,cmj,cmt,cmti}) - (glob_files ../jscomp/stdlib-412/*.{ml,mli}) - (glob_files_rec ../jscomp/stdlib-412/*.{cmi,cmj,cmt,cmti}))) - (action - (progn - (chdir - %{targets} - (run cp %{artifacts} .))))) - -(rule - (targets - (dir js)) - (mode - (promote (until-clean))) - (deps - (:runtime-js - (glob_files ../jscomp/runtime/*.js) - (glob_files ../jscomp/others/*.js) - (glob_files_rec ../jscomp/stdlib-412/*.js))) - (action - (progn - (run mkdir -p %{targets}) - (run cp %{runtime-js} %{targets})))) - -(rule - (targets - (dir es6)) - (mode - (promote (until-clean))) - (deps - (:runtime-mjs - (glob_files ../jscomp/runtime/*.mjs) - (glob_files ../jscomp/others/*.mjs) - (glob_files_rec ../jscomp/stdlib-412/*.mjs))) - (action - (progn - (run mkdir -p %{targets}) - (run cp %{runtime-mjs} %{targets})))) diff --git a/lib/find_artifacts.ml b/lib/find_artifacts.ml deleted file mode 100644 index 88abb1d3f2..0000000000 --- a/lib/find_artifacts.ml +++ /dev/null @@ -1,16 +0,0 @@ -let ( // ) = Filename.concat - -let () = - let dir = Sys.argv.(1) in - let files = - Sys.readdir dir |> Array.to_list - |> List.filter (fun file -> - not - (Sys.is_directory (dir // file) - || Filename.extension (Filename.chop_extension file) = ".pp")) - in - (* Format.eprintf "x: %d %s@." (List.length files) (files |> String.concat "; "); *) - Format.printf "(%a)" - (Format.pp_print_list (fun fmt f -> - Format.fprintf fmt "(lib/melange/%s as mel_runtime/melange/%s)" f f)) - files diff --git a/mel.opam b/mel.opam deleted file mode 100644 index 6f2ea9b0ad..0000000000 --- a/mel.opam +++ /dev/null @@ -1,34 +0,0 @@ -# This file is generated by dune, edit dune-project instead -opam-version: "2.0" -synopsis: - "Build system for Melange that defers to Dune for build orchestration" -maintainer: ["Antonio Nuno Monteiro "] -authors: ["Antonio Nuno Monteiro "] -license: "LGPL-2.1-or-later" -homepage: "https://github.com/melange-re/melange" -bug-reports: "https://github.com/melange-re/melange/issues" -depends: [ - "dune" {>= "3.7"} - "ocaml" - "melange" {= version} - "reactjs-jsx-ppx" - "cmdliner" {>= "1.1.0"} - "luv" {>= "0.5.11"} - "ounit" {with-test} - "odoc" {with-doc} -] -build: [ - ["dune" "subst"] {dev} - [ - "dune" - "build" - "-p" - name - "-j" - jobs - "@install" - "@runtest" {with-test} - "@doc" {with-doc} - ] -] -dev-repo: "git+https://github.com/melange-re/melange.git" diff --git a/mel/Docs.md b/mel/Docs.md deleted file mode 100644 index 83131852be..0000000000 --- a/mel/Docs.md +++ /dev/null @@ -1,23 +0,0 @@ -# BSB - -Bsb is ReScript's build system. User-facing documentations are [here](https://rescript-lang.org/docs/manual/latest/build-overview). - -This directory hosts its implementation. It reads into `bsconfig.json`, uses some BS/OCaml/Reason-specific logic, and generates a [ninja](https://ninja-build.org) build file then calls `ninja` on it. So much of the incremental build and perf work is delegated to Ninja. - -There's a `templates/` subdirectory. It's the thing shown when you do `bsb -themes`. To generate a template for the user, it basically picks the chosen template from `templates/` and copy pastes it into the destined user directory while substituting some strings in those templates, like `${bsb:proj-version}` in the `package.json`s. - -## Add/edit a template - -The content of `templates` is packed into `bsb_templates.ml` automatically when running [pack.js](../../scripts/pack.js). - -When adding/editing a template the script needs to be rerun to update the relevant parts in `bsb_templates.ml`. - -## Testing a template locally - -Do the following setup steps to build the compiler: [build ocaml compiler](https://github.com/rescript-lang/rescript-compiler/blob/master/CONTRIBUTING.md#build-the-vendored-ocaml-compiler) and [build everything in dev mode](https://github.com/rescript-lang/rescript-compiler/blob/master/CONTRIBUTING.md#build-everything-in-dev-mode-using-vendored-compiler). - -The built binaries will end up under `lib` where you can run local `bsb`: - -```sh -./bsb -init test-theme -theme new_theme -``` diff --git a/mel/bsb.md b/mel/bsb.md deleted file mode 100644 index e081fa461d..0000000000 --- a/mel/bsb.md +++ /dev/null @@ -1,201 +0,0 @@ -# Phony targets - - -# collect file groups - -1. we need check integrity of files here? -cases: -one directory have two same files -- ignore, does not matter here? -two directories ha - -# generate ninja from file groups - -`Bsb_file_groups.file_group list` -one directory, one kind -- -when we merge we will have two `dirs` - -do we allow duplicate modules? - -suppose : -lib -> 0 - -dev -> 1 -dev -> 2 -dev -> 3 - -so that they can have same names - - -.default -All output (not just js in case we support native build) - -.install - -It's hard to bake it in built rules, since it is flag dependent, if you have `-bin-annot` -then you would like to install `cmt` too, however, it might be or not be there - -# meta-data files - -- .bsbuild -- .bsdeps -- .sourcedirs -# post-build - -Here we have `js` generated, we can do either post-build or -create a new rule. - -Note creating new rules will get more concurrency while post-build is easy -and can do in source modification - -https://groups.google.com/forum/#!searchin/ninja-build/post$20process%7Csort:relevance/ninja-build/Q4hpcDmhPzw/KZpDyOEFuTkJ - -# Performance tweaks - -Writing(truncating) files are significantly slower (20~30x) and it destroys cache(see Appendix), we should -try to avoid writing too many files. - -bsb is optimized for incremental build (especially for modifying files ). - -There is a trade off here: if we generate `.bsdep` file, whenever adding or removing file, `.bscache` will not -impact the integrity of `.bsdep`, so that it will run `.bsdep -> .d`. - -The downside is -1. clean build will generate more smaller files (slow down), -2. build system has to track more outputs (latency, stat more files almost doubled) - -Whenever we change a file it will regenerate the ast, optionally update `.bsdep` - -So assuming that merge `.bsdep` into `.mlast`, build system will track not more files. -The integrity of `.mlast` is not impacted by `.bscache`. -`.mlast -> .d` can be still improved, not as good as `.bsdep -> .d` since `.bsdep` -can check `.bsdep` time stamp. - -So let's change the `.mlast` to such format - ----------- -magic number -length of dependent modules -dependent modules -binary ast ----------- - -This file is integrity is not impacted by `.bscache`. whenever `.bscache` changes we check if we need regenerate `.d` - -# Appendix -[source,ocaml] --------------- -module Set_string = Set.Make(String) - -(* let v = Set_string.of_list ["List" ; "Set" ; "String" ; "Test_order"] *) -let v = Set_string.of_list [] -let deseralize f = - let ichan = open_in_bin f in - let v : Set_string.t = input_value ichan in - close_in ichan ; - v - -let time f arg = - let v0 = Unix.gettimeofday () in - ignore @@ f arg; - let v1 = Unix.gettimeofday () in - print_endline (Printf.sprintf "%f elapsed" (v1 -. v0)) - -let deseralize_and_compare f = - ignore @@ Set_string.equal v (deseralize f) - -let seralize f = - let ochan = open_out_bin f in - output_value ochan v ; - close_out ochan - -let try_seralize f = - match open_in_bin f with - | ichan -> - close_in ichan ; - let ochan = open_out_bin f in - output_value ochan v ; - close_out ochan - | exception _ -> - let ochan = open_out_bin f in - output_value ochan v ; - close_out ochan - -let try_seralize2 f = - if Sys.file_exists f then - let ochan = open_out_bin f in - output_value ochan v ; - close_out ochan - else - let ochan = open_out_bin f in - output_value ochan v ; - close_out ochan - - - -let () = - let file = "/Users/hzhang295/git/tmp/bench/e.mldeps" in - time try_seralize file; - Unix.unlink file ; - time try_seralize2 file; - Unix.unlink file ; - time seralize file; - time deseralize_and_compare file; - Unix.unlink file - -(* -0.002452 elapsed -0.002440 elapsed -0.001954 elapsed -0.000079 elapsed - -*) - --------------- - -# package-flags - - when designing bsc command line flags, we ask user to specify the output path of package output - instead of calculating, - the reason is that the user input can be absolute path or relative path, to calculate - we also need the location of package.json. - - - ## document when regenerating `build.ninja` - - - when `bsb.exe` path is changed - - when `bsb.exe` version is changed - - ## other internal options - --no-dev -- don't build dev directory group --install -- install files - -## document when regenerating `.merlin` - -## TODO: seems we can do it - -1. instead of specifying the whole relative path, just specifying the offset - ``` --bs-package-output commonjs:+lib/js -bs-package-output amdjs:+lib/amdjs xx.mlast - ``` - - With this we would simplify the build a lot. - - on Windows - ``` - -bs-package-output commonjs:+lib\js -bs-package-output:+lib\amdjs xx.ml a/b/c/xx.mlast - ``` - - so when the user input is relative path, we do the concat, - if it is absolute path, we calculate the relative path first. - - This is complicated vs - - ``` - -bs-package-output commonjs -bs-package-output amdjs - ``` - - however, the bsc is almost sitting in `lib/bs` - -2. caching Directory operations -3. Read `bsconfig.json` from watchcer side, so that we can caching io operations more effeciently? diff --git a/mel/bsb_build_schemas.ml b/mel/bsb_build_schemas.ml deleted file mode 100644 index 733f8777bc..0000000000 --- a/mel/bsb_build_schemas.ml +++ /dev/null @@ -1,77 +0,0 @@ -(* Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -(* let files = "files" *) -let version = "version" -let name = "name" - -(* let ocaml_config = "ocaml-config" *) -let bsdep = "bsdep" -let ppx_flags = "ppx-flags" -let pp_flags = "pp-flags" -let bsc = "bsc" -let bs_external_includes = "bs-external-includes" -let bs_lib_dir = "bs-lib-dir" -let bs_dependencies = "bs-dependencies" -let bs_dev_dependencies = "bs-dev-dependencies" -let sources = "sources" -let dir = "dir" -let files = "files" -let subdirs = "subdirs" -let bsc_flags = "bsc-flags" -let excludes = "excludes" -let slow_re = "slow-re" -let resources = "resources" -let public = "public" -let js_post_build = "js-post-build" -let cmd = "cmd" -let ninja = "ninja" -let package_specs = "package-specs" -let generate_merlin = "generate-merlin" -let type_ = "type" -let dev = "dev" -let export_all = "all" -let export_none = "none" -let use_stdlib = "use-stdlib" -let external_stdlib = "external-stdlib" -let reason = "reason" -let react_jsx = "react-jsx" -let entries = "entries" -let backend = "backend" -let main_module = "main-module" -let cut_generators = "cut-generators" -let generators = "generators" -let command = "command" -let edge = "edge" -let namespace = "namespace" -let in_source = "in-source" -let warnings = "warnings" -let number = "number" -let error = "error" -let suffix = "suffix" -let gentypeconfig = "gentypeconfig" -let language = "language" -let path = "path" -let ignored_dirs = "ignored-dirs" -let workspace = "workspace" diff --git a/mel/bsb_build_util.ml b/mel/bsb_build_util.ml deleted file mode 100644 index 750b51203e..0000000000 --- a/mel/bsb_build_util.ml +++ /dev/null @@ -1,235 +0,0 @@ -(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -let flag_concat flag xs = - String.concat Ext_string.single_space - (Ext_list.flat_map xs (fun x -> [ flag; x ])) - -let ( // ) = Ext_path.combine - -let maybe_quote_for_dune (s : string) = - if Ext_string.for_all s Ext_filename.shell_safe_character then s - else - (* Dune allows `'` characters to be part of a segment, so 'foo' gets - interpreted as foo', or something. For dune files, we quote with `""` - instead. *) - Format.asprintf "%S" s - -let ppx_flags ~artifacts_dir { Bsb_config_types.ppxlib; ppx_files } = - let ppxlib = - if ppxlib <> [] then - (* We don't need to grab the name from `ppx.ppxlib` because it'll always - be same everytime (`.melange.ppx/ppx.exe`). *) - let path_to_ppx = artifacts_dir // Mel_workspace.ppx_exe in - let args = - String.concat " " - (List.concat_map (fun (x : Bsb_config_types.ppx) -> x.args) ppxlib) - in - let ppx_command_with_args = - Format.asprintf "%s -as-ppx %s" path_to_ppx args - in - [ maybe_quote_for_dune ppx_command_with_args ] - else [] - in - flag_concat "-ppx" - (ppxlib - @ Ext_list.map ppx_files (fun x -> - if x.args = [] then maybe_quote_for_dune x.name - else - maybe_quote_for_dune - (Format.asprintf "%s %s" x.name (String.concat " " x.args)))) - -let pp_flag (xs : string) = "-pp " ^ maybe_quote_for_dune xs - -let include_dirs_by dirs fn = - String.concat Ext_string.single_space - (Ext_list.flat_map dirs (fun x -> [ "-I"; maybe_quote_for_dune (fn x) ])) - -let include_dirs dirs = include_dirs_by dirs Fun.id - -let rel_include_dirs ~package_name ~root_dir ~per_proj_dir ~cur_dir ?namespace - source_dirs = - let per_proj_dir = - Mel_workspace.virtual_proj_dir ~root_dir ~package_dir:per_proj_dir - ~package_name - in - let relativize_single dir = - Ext_path.rel_normalized_absolute_path ~from:(per_proj_dir // cur_dir) - (per_proj_dir // dir) - in - let source_dirs = Ext_list.map source_dirs relativize_single in - let dirs = - match namespace with - | None -> source_dirs - | Some _namespace -> - let rel_artifacts = - Mel_workspace.rel_artifacts_dir ~package_name ~root_dir - ~proj_dir:per_proj_dir cur_dir - in - rel_artifacts :: source_dirs - (*working dir is [lib/bs] we include this path to have namespace mapping*) - in - include_dirs dirs - -(* we use lazy $src_root_dir *) - -(* It does several conversion: - First, it will convert unix path to windows backward on windows platform. - Then if it is absolute path, it will do thing - Else if it is relative path, it will be rebased on project's root directory *) - -let convert_and_resolve_path : string -> string -> string = - if Sys.unix then ( // ) - else fun cwd path -> - if Ext_sys.is_windows_or_cygwin then - let p = Ext_string.replace_slash_backward path in - cwd // p - else failwith ("Unknown OS :" ^ Sys.os_type) -(* we only need convert the path in the beginning *) - -type result = { path : string; checked : bool } - -(* Magic path resolution: - foo => foo - foo/ => /absolute/path/to/projectRoot/node_modules/foo - foo/bar => /absolute/path/to/projectRoot/node_modules/foo/bar - /foo/bar => /foo/bar - ./foo/bar => /absolute/path/to/projectRoot/./foo/bar - Input is node path, output is OS dependent (normalized) path -*) -let resolve_bsb_magic_file ~cwd ~desc p : result = - let no_slash = Ext_string.no_slash_idx p in - if no_slash < 0 then - (* Single file FIXME: better error message for "" input *) - { path = p; checked = false } - else - let first_char = String.unsafe_get p 0 in - if Filename.is_relative p && first_char <> '.' then - let package_name, rest = Bsb_pkg_types.extract_pkg_name_and_file p in - let relative_path = - if Ext_sys.is_windows_or_cygwin then - Ext_string.replace_slash_backward rest - else rest - in - (* let p = if Ext_sys.is_windows_or_cygwin then Ext_string.replace_slash_backward p else p in *) - (* TODO: it's unclear whether we should be calling Bsb_pkg.resolve_package here instead. Let's discuss in PR #304 *) - let package_dir = - Bsb_pkg.resolve_package ~cwd (Bsb_pkg_types.to_string package_name) - in - let path = package_dir // relative_path in - if Sys.file_exists path then { path; checked = true } - else ( - Bsb_log.error "@{Could not resolve @} %s in %s@." p cwd; - failwith (p ^ " not found when resolving " ^ desc)) - else - (* relative path [./x/y]*) - { path = convert_and_resolve_path cwd p; checked = true } - -(** converting a file from Linux path format to Windows *) - -let get_list_string_acc (s : Ext_json_types.t array) acc = - Ext_array.to_list_map_acc s acc (fun x -> - match x with Str x -> Some x.str | _ -> None) - -let get_list_string s = get_list_string_acc s [] - -(* Key is the path *) -let ( |? ) m (key, cb) = Ext_json.test key cb m - -type top = Expect_none | Expect_name of string -type package_context = { proj_dir : string; top : top } - -(** - TODO: check duplicate package name - ?use path as identity? - - Basic requirements - 1. cycle detection - 2. avoid duplication - 3. deterministic, since -make-world will also comes with -clean-world - -*) - -let pp_packages_rev ppf lst = - Ext_list.rev_iter lst (fun s -> Format.fprintf ppf "%s " s) - -let rec walk_all_deps_aux (visited : string Hash_string.t) (paths : string list) - ~(top : top) (dir : string) (queue : _ Queue.t) = - let bsconfig_json = dir // Literals.bsconfig_json in - match Ext_json_parse.parse_json_from_file bsconfig_json with - | Obj { map; loc } -> - let cur_package_name = - match Map_string.find_opt map Bsb_build_schemas.name with - | Some (Str { str; loc }) -> - (match top with - | Expect_none -> () - | Expect_name s -> - if s <> str then - Bsb_exception.errorf ~loc - "package name is expected to be %s but got %s" s str); - str - | Some _ | None -> - Bsb_exception.errorf ~loc "package name missing in %s/bsconfig.json" - dir - in - if Ext_list.mem_string paths cur_package_name then ( - Bsb_log.error "@{Cyclic dependencies in package stack@}@."; - exit 2); - let package_stacks = cur_package_name :: paths in - Bsb_log.info "@{Package stack:@} %a @." pp_packages_rev - package_stacks; - if Hash_string.mem visited cur_package_name then - Bsb_log.info "@{Visited before@} %s@." cur_package_name - else - let explore_deps (deps : string) = - map - |? ( deps, - `Arr - (fun (new_packages : Ext_json_types.t array) -> - Ext_array.iter new_packages (fun js -> - match js with - | Str { str = new_package } -> - let package_dir = - Bsb_pkg.resolve_package ~cwd:dir new_package - in - walk_all_deps_aux visited package_stacks - ~top:(Expect_name new_package) package_dir queue - | _ -> - Bsb_exception.errorf ~loc "%s expect an array" deps)) - ) - |> ignore - in - explore_deps Bsb_build_schemas.bs_dependencies; - (match top with - | Expect_none -> explore_deps Bsb_build_schemas.bs_dev_dependencies - | Expect_name _ -> ()); - Queue.add { top; proj_dir = dir } queue; - Hash_string.add visited cur_package_name dir - | _ -> () - -let walk_all_deps dir : package_context Queue.t = - let visited = Hash_string.create 0 in - let cb = Queue.create () in - walk_all_deps_aux visited [] ~top:Expect_none dir cb; - cb diff --git a/mel/bsb_build_util.mli b/mel/bsb_build_util.mli deleted file mode 100644 index fe6e9ee322..0000000000 --- a/mel/bsb_build_util.mli +++ /dev/null @@ -1,92 +0,0 @@ -(* Copyright (C) 2015-2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val flag_concat : string -> string list -> string -(** - Use: - {[ - flag_concat "-ppx" [ppxs] - ]} - *) - -val ppx_flags : artifacts_dir:string -> Bsb_config_types.ppx_config -> string -(** -Build quoted commandline arguments for bsc.exe for the given ppx flags - -Use: -{[ -ppx_flags [ppxs] -]} -*) - -val pp_flag : string -> string - -val include_dirs : string list -> string -(** -Build unquoted command line arguments for bsc.exe for the given include dirs - -Use: -{[ -include_dirs [dirs] -]} -*) - -val include_dirs_by : 'a list -> ('a -> string) -> string - -val rel_include_dirs : - package_name:string -> - root_dir:string -> - per_proj_dir:string -> - cur_dir:string -> - ?namespace:string -> - string list -> - string - -(* The path of [bsc] and [bsdep] is normalized so that the invokation of [./jscomp/bin/bsb.exe] - and [bsb.exe] (combined with a dirty bsconfig.json) will not trigger unnecessary rebuild. - - The location of [bsc] and [bsdep] is configured by the combination of [Sys.executable_name] - and [cwd]. - - In theory, we should also check the integrity of [bsb.exe], if it is changed, the rebuild - should be regen, but that is too much in practice, not only you need check the integrity of - path of [bsb.exe] but also the timestamp, to make it 100% correct, also the integrity of - [bsdep.exe] [bsc.exe] etc. -*) - -val get_list_string_acc : Ext_json_types.t array -> string list -> string list -val get_list_string : Ext_json_types.t array -> string list - -type top = Expect_none | Expect_name of string -type result = { path : string; checked : bool } - -(* [resolve_bsb_magic_file] - returns a tuple (path,checked) - when checked is true, it means such file should exist without depending on env -*) -val resolve_bsb_magic_file : cwd:string -> desc:string -> string -> result - -type package_context = { proj_dir : string; top : top } - -val walk_all_deps : string -> package_context Queue.t diff --git a/mel/bsb_clean.ml b/mel/bsb_clean.ml deleted file mode 100644 index 8b4a09dedd..0000000000 --- a/mel/bsb_clean.ml +++ /dev/null @@ -1,59 +0,0 @@ -(* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -let ( // ) = Ext_path.combine - -let clean_bs_garbage proj_dir = - Bsb_log.info "@{Cleaning:@} in %s@." proj_dir; - let try_remove x = - let x = proj_dir // x in - if Sys.file_exists x then Bsb_unix.remove_dir_recursive x - in - let try_revise_dune dune_file = - if Sys.file_exists dune_file then - let buf = Buffer.create 0 in - Bsb_ninja_targets.revise_dune dune_file buf - in - try - (* TODO: revise merlin too *) - try_revise_dune (proj_dir // Literals.dune); - try_remove (proj_dir // Literals.dune_mel) - with e -> - Bsb_log.warn "@{Failed@} to clean due to %s" (Printexc.to_string e) - -let clean_self ~dune_args proj_dir = - let args = "clean" :: dune_args in - Bsb_unix.dune_command args - ~on_exit:(fun _process ~exit_status:_ ~term_signal:_ -> - clean_bs_garbage proj_dir) - -let load_import_map proj_dir = - let json = - Ext_json_parse.parse_json_from_file (proj_dir // Literals.bsconfig_json) - in - Bsb_path_resolver.extract_paths_from_importmap proj_dir json - -let clean ~dune_args proj_dir = - load_import_map proj_dir; - clean_self ~dune_args proj_dir diff --git a/mel/bsb_clean.mli b/mel/bsb_clean.mli deleted file mode 100644 index af5dc88562..0000000000 --- a/mel/bsb_clean.mli +++ /dev/null @@ -1,29 +0,0 @@ -(* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -(** clean bsc generated artifacts. - TODO: clean staled in source js artifacts -*) - -val clean : dune_args:string list -> string -> Luv.Process.t diff --git a/mel/bsb_config_parse.ml b/mel/bsb_config_parse.ml deleted file mode 100644 index c8453eda93..0000000000 --- a/mel/bsb_config_parse.ml +++ /dev/null @@ -1,435 +0,0 @@ -(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -(* let get_list_string = Bsb_build_util.get_list_string *) -let ( // ) = Ext_path.combine - -let resolve_package cwd package_name = - let path = Bsb_pkg.resolve_package ~cwd package_name in - let package = Bsb_pkg_types.string_as_package package_name in - { - Bsb_config_types.package_name = package; - package_path = path; - package_dirs = []; - package_install_dirs = []; - } - -type json_map = Ext_json_types.t Map_string.t - -(* Key is the path *) -let ( |? ) m (key, cb) = m |> Ext_json.test key cb -let ( .?() ) = Map_string.find_opt - -(*TODO: it is a little mess that [cwd] and [project dir] are shared*) - -let extract_package_name_and_namespace (map : json_map) : string * string option - = - let package_name = - match map.?(Bsb_build_schemas.name) with - | Some (Str { str = "_" } as config) -> - Bsb_exception.config_error config "_ is a reserved package name" - | Some (Str { str = name }) -> name - | Some config -> - Bsb_exception.config_error config "name expect a string field" - | None -> Bsb_exception.invalid_spec "field name is required" - in - let namespace = - match map.?(Bsb_build_schemas.namespace) with - | None | Some (False _) -> None - | Some (True _) -> - Some (Ext_namespace.namespace_of_package_name package_name) - | Some (Str { str }) -> - (*TODO : check the validity of namespace *) - Some (Ext_namespace.namespace_of_package_name str) - | Some x -> - Bsb_exception.config_error x "namespace field expects string or boolean" - in - (package_name, namespace) - -(* - There are two things to check: - - the running bsb and vendoring bsb is the same - - the running bsb need delete stale build artifacts - (kinda check npm upgrade) - - Note if the setup is correct: - the running compiler and node_modules/bs-platform - should be the same version, - The exact check is that the running compiler should have a - compatible runtime version installed, the location of the - compiler is actually not relevant. - We disable the check temporarily - e.g, - ``` - bsc -runtime runtime_dir@version - ``` -*) -let check_stdlib (map : json_map) : bool = - (*built_in_package*) - match map.?(Bsb_build_schemas.use_stdlib) with - | Some (False _) -> false - | None | Some _ -> true - -let extract_gentype_config (map : json_map) cwd : - Bsb_config_types.gentype_config option = - match map.?(Bsb_build_schemas.gentypeconfig) with - | None -> None - | Some (Obj { map = obj }) -> - Some - { - path = - (match obj.?(Bsb_build_schemas.path) with - | None -> - (Bsb_build_util.resolve_bsb_magic_file ~cwd ~desc:"gentype.exe" - "gentype/gentype.exe") - .path - | Some (Str { str }) -> - (Bsb_build_util.resolve_bsb_magic_file ~cwd ~desc:"gentype.exe" - str) - .path - | Some config -> - Bsb_exception.config_error config "path expect to be a string"); - } - | Some config -> - Bsb_exception.config_error config "gentypeconfig expect an object" - -let extract_string (map : json_map) (field : string) cb = - match map.?(field) with - | None -> None - | Some (Str { str }) -> cb str - | Some config -> Bsb_exception.config_error config (field ^ " expect a string") - -let extract_boolean (map : json_map) (field : string) (default : bool) : bool = - match map.?(field) with - | None -> default - | Some (True _) -> true - | Some (False _) -> false - | Some config -> - Bsb_exception.config_error config (field ^ " expect a boolean") - -let extract_reason_react_jsx (map : json_map) = - let default : Bsb_config_types.reason_react_jsx option ref = ref None in - map - |? ( Bsb_build_schemas.reason, - `Obj - (fun m -> - match m.?(Bsb_build_schemas.react_jsx) with - | Some (Flo { loc; flo }) -> ( - match flo with - | "3" -> default := Some Jsx_v3 - | _ -> Bsb_exception.errorf ~loc "Unsupported jsx version %s" flo - ) - | Some x -> - Bsb_exception.config_error x - "Unexpected input (expect a version number) for jsx, note \ - boolean is no longer allowed" - | None -> ()) ) - |> ignore; - !default - -let extract_warning (map : json_map) = - match map.?(Bsb_build_schemas.warnings) with - | None -> Bsb_warning.use_default - | Some (Obj { map }) -> Bsb_warning.from_map map - | Some config -> Bsb_exception.config_error config "expect an object" - -let extract_ignored_dirs (map : json_map) : Set_string.t = - match map.?(Bsb_build_schemas.ignored_dirs) with - | None -> Set_string.empty - | Some (Arr { content }) -> - Set_string.of_list (Bsb_build_util.get_list_string content) - | Some config -> Bsb_exception.config_error config "expect an array of string" - -let extract_generators (map : json_map) = - let generators = ref Map_string.empty in - (match map.?(Bsb_build_schemas.generators) with - | None -> () - | Some (Arr { content = s }) -> - generators := - Ext_array.fold_left s Map_string.empty (fun acc json -> - match json with - | Obj { map = m; loc } -> ( - match - (m.?(Bsb_build_schemas.name), m.?(Bsb_build_schemas.command)) - with - | Some (Str { str = name }), Some (Str { str = command }) -> - Map_string.add acc name command - | _, _ -> - Bsb_exception.errorf ~loc - {| generators exepect format like { "name" : "cppo", "command" : "cppo $in -o $out"} |} - ) - | _ -> acc) - | Some config -> - Bsb_exception.config_error config - (Bsb_build_schemas.generators ^ " expect an array field")); - !generators - -(* return an empty array if not found *) -let extract_string_list (map : json_map) (field : string) : string list = - match map.?(field) with - | None -> [] - | Some (Arr { content = s }) -> Bsb_build_util.get_list_string s - | Some config -> Bsb_exception.config_error config (field ^ " expect an array") - -let extract_ppx (map : json_map) (field : string) ~(cwd : string) : - Bsb_config_types.ppx_config = - let empty = Bsb_config_types.{ ppxlib = []; ppx_files = [] } in - match map.?(field) with - | None -> empty - | Some (Arr { content }) -> - let resolve s = - if s = "" then - Bsb_exception.invalid_spec "invalid ppx, empty string found" - else - Bsb_build_util.resolve_bsb_magic_file ~cwd - ~desc:Bsb_build_schemas.ppx_flags s - in - Ext_array.fold_left content empty (fun { ppxlib; ppx_files } x -> - let Bsb_build_util.{ path; checked }, args = - match x with - | Str x -> (resolve x.str, []) - | Arr { content } -> ( - let xs = Bsb_build_util.get_list_string content in - match xs with - | [] -> - Bsb_exception.config_error x " empty array is not allowed" - | name :: args -> (resolve name, args)) - | config -> - Bsb_exception.config_error config - (field ^ "expect each item to be either string or array") - in - let ppx = Bsb_config_types.{ name = path; args } in - if checked then { ppxlib; ppx_files = ppx_files @ [ ppx ] } - else { ppxlib = ppxlib @ [ ppx ]; ppx_files }) - | Some config -> Bsb_exception.config_error config (field ^ " expect an array") - -let extract_js_post_build (map : json_map) cwd : string option = - let js_post_build_cmd = ref None in - map - |? ( Bsb_build_schemas.js_post_build, - `Obj - (fun m -> - m - |? ( Bsb_build_schemas.cmd, - `Str - (fun s -> - js_post_build_cmd := - Some - (Bsb_build_util.resolve_bsb_magic_file ~cwd - ~desc:Bsb_build_schemas.js_post_build s) - .path) ) - |> ignore) ) - |> ignore; - !js_post_build_cmd - -(* ATT: make sure such function is re-entrant. - With a given [cwd] it works anywhere*) -let rec interpret_json ~(package_kind : Bsb_package_kind.t) ~per_proj_dir : - Bsb_config_types.t = - (* we should not resolve it too early, - since it is external configuration, no {!Bsb_build_util.convert_and_resolve_path} - *) - - (* When we plan to add more deps here, - Make sure check it is consistent that for nested deps, we have a - quck check by just re-parsing deps - Make sure it works with [-make-world] [-clean-world] - *) - - (* Setting ninja is a bit complex - 1. if [build.ninja] does use [ninja] we need set a variable - 2. we need store it so that we can call ninja correctly - *) - let json = - Ext_json_parse.parse_json_from_file (per_proj_dir // Literals.bsconfig_json) - in - Bsb_path_resolver.extract_paths_from_importmap per_proj_dir json; - match json with - | Obj { map } -> ( - let package_name, namespace = extract_package_name_and_namespace map in - let gentype_config = extract_gentype_config map per_proj_dir in - - (* This line has to be before any calls to Bsb_global_backend.backend, because it'll read the entries - array from the bsconfig and set the backend_ref to the first entry, if any. *) - - (* The default situation is empty *) - let built_in_package : bool = check_stdlib map in - - let pp_flags : string option = - extract_string map Bsb_build_schemas.pp_flags (fun p -> - if p = "" then - Bsb_exception.invalid_spec "invalid pp, empty string found" - else - Some - (Bsb_build_util.resolve_bsb_magic_file ~cwd:per_proj_dir - ~desc:Bsb_build_schemas.pp_flags p) - .path) - in - let reason_react_jsx = extract_reason_react_jsx map in - - let package_specs = - match package_kind with - | Toplevel -> Bsb_package_specs.from_map ~cwd:per_proj_dir map - | Dependency x -> x - in - let bs_dependencies = - extract_dependencies - ~package_kind:(Bsb_package_kind.Dependency package_specs) map - per_proj_dir Bsb_build_schemas.bs_dependencies - in - let bs_dev_dependencies = - match package_kind with - | Toplevel -> - extract_dependencies ~package_kind:(Dependency package_specs) map - per_proj_dir Bsb_build_schemas.bs_dev_dependencies - | Dependency _ -> [] - in - - match map.?(Bsb_build_schemas.sources) with - | Some sources -> - let cut_generators = - extract_boolean map Bsb_build_schemas.cut_generators false - in - let groups = - Bsb_parse_sources.scan ~ignored_dirs:(extract_ignored_dirs map) - ~package_kind ~root:per_proj_dir ~cut_generators ~namespace - sources - in - - (match map.?(Bsb_build_schemas.bs_external_includes) with - | Some _ -> - Bsb_log.warn - "@{Warning(%s):@} `%s` is not supported in Melange \ - and will be ignored@." - package_name Bsb_build_schemas.bs_external_includes - | None -> ()); - let reactjsx_ppx = - { Bsb_config_types.name = "reactjs-jsx-ppx"; args = [] } - in - let ppx_config = - let ppx_config = - extract_ppx map ~cwd:per_proj_dir Bsb_build_schemas.ppx_flags - in - match reason_react_jsx with - | None -> ppx_config - | Some _ -> - { ppx_config with ppxlib = reactjsx_ppx :: ppx_config.ppxlib } - in - { - dir = per_proj_dir; - gentype_config; - package_name; - namespace; - warning = extract_warning map; - bsc_flags = extract_string_list map Bsb_build_schemas.bsc_flags; - ppx_config; - pp_file = pp_flags; - bs_dependencies; - bs_dev_dependencies; - (* - reference for quoting - {[ - let tmpfile = Filename.temp_file "ocamlpp" "" in - let comm = Printf.sprintf "%s %s > %s" - pp (Filename.quote sourcefile) tmpfile - in - ]} - *) - js_post_build_cmd = extract_js_post_build map per_proj_dir; - package_specs; - file_groups = groups; - files_to_install = Queue.create (); - built_in_dependency = built_in_package; - generate_merlin = - extract_boolean map Bsb_build_schemas.generate_merlin true; - reason_react_jsx; - generators = extract_generators map; - cut_generators; - } - | None -> - Bsb_exception.invalid_spec "no sources specified in bsconfig.json") - | _ -> Bsb_exception.invalid_spec "bsconfig.json expect a json object {}" - -and extract_dependencies ~package_kind (map : json_map) cwd (field : string) : - Bsb_config_types.dependencies = - match map.?(field) with - | None -> [] - | Some (Arr { content = s }) -> - Ext_list.map (Bsb_build_util.get_list_string s) (fun s -> - let dep = resolve_package cwd s in - let { Bsb_config_types.file_groups = { files; _ }; namespace; _ } = - interpret_json ~package_kind ~per_proj_dir:dep.package_path - in - let ns_incl = - Option.map - (fun _ -> - let artifacts_dir = - Mel_workspace.absolute_artifacts_dir - ~package_name:(Bsb_pkg_types.to_string dep.package_name) - ~root_dir:Mel_workspace.cwd dep.package_path - in - let rel_dir = - Ext_path.rel_normalized_absolute_path ~from:Mel_workspace.cwd - artifacts_dir - in - { - Bsb_config_types.package_path = Mel_workspace.cwd; - dir = rel_dir; - package_name = Bsb_pkg_types.to_string dep.package_name; - }) - namespace - in - let dirs = - Ext_list.filter_map files - (fun ({ Bsb_file_groups.dir; is_dev; _ } as group) -> - if (not is_dev) && not (Bsb_file_groups.is_empty group) then - Some (dep.package_path // dir) - else None) - in - let install_dirs = - Ext_list.filter_map files (fun { Bsb_file_groups.dir; is_dev; _ } -> - if not is_dev then - Some - { - Bsb_config_types.package_path = dep.package_path; - dir; - package_name = Bsb_pkg_types.to_string dep.package_name; - } - else None) - in - { - dep with - package_install_dirs = - (match ns_incl with - | None -> install_dirs - | Some ns -> ns :: install_dirs); - package_dirs = dirs; - }) - | Some config -> Bsb_exception.config_error config (field ^ " expect an array") - -let package_specs_from_bsconfig () = - let json = Ext_json_parse.parse_json_from_file Literals.bsconfig_json in - match json with - | Obj { map } -> Bsb_package_specs.from_map ~cwd:Mel_workspace.cwd map - | _ -> assert false diff --git a/mel/bsb_config_parse.mli b/mel/bsb_config_parse.mli deleted file mode 100644 index 19f04f1795..0000000000 --- a/mel/bsb_config_parse.mli +++ /dev/null @@ -1,28 +0,0 @@ -(* Copyright (C) 2015-2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val package_specs_from_bsconfig : unit -> Bsb_package_specs.t - -val interpret_json : - package_kind:Bsb_package_kind.t -> per_proj_dir:string -> Bsb_config_types.t diff --git a/mel/bsb_config_types.mli b/mel/bsb_config_types.mli deleted file mode 100644 index 30fa5c0ece..0000000000 --- a/mel/bsb_config_types.mli +++ /dev/null @@ -1,75 +0,0 @@ -(* Copyright (C) 2015-2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type install_dir = { - package_name : string; - package_path : string; - dir : string; -} - -type dependency = { - package_name : Bsb_pkg_types.t; - package_path : string; - package_dirs : string list; - package_install_dirs : install_dir list; -} - -type dependencies = dependency list -type reason_react_jsx = Jsx_v3 -(* string option *) - -type gentype_config = { path : string (* resolved *) } -type command = string -type ppx = { name : string; args : string list } -type ppx_config = { ppxlib : ppx list; ppx_files : ppx list } - -type t = { - dir : string; - package_name : string; - (* [captial-package] *) - namespace : string option; - (* CapitalPackage *) - bsc_flags : string list; - ppx_config : ppx_config; - pp_file : string option; - bs_dependencies : dependencies; - bs_dev_dependencies : dependencies; - built_in_dependency : bool; - warning : Bsb_warning.t; - (*TODO: maybe we should always resolve bs-platform - so that we can calculate correct relative path in - [.merlin] - *) - js_post_build_cmd : string option; - package_specs : Bsb_package_specs.t; - file_groups : Bsb_file_groups.t; - files_to_install : Bsb_db.module_info Queue.t; - generate_merlin : bool; - reason_react_jsx : reason_react_jsx option; - (* whether apply PPX transform or not*) - generators : command Map_string.t; - cut_generators : bool; - (* note when used as a dev mode, we will always ignore it *) - gentype_config : gentype_config option; -} diff --git a/mel/bsb_db_encode.ml b/mel/bsb_db_encode.ml deleted file mode 100644 index 603af78c28..0000000000 --- a/mel/bsb_db_encode.ml +++ /dev/null @@ -1,128 +0,0 @@ -(* Copyright (C) 2019 - Present Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -let nl buf = Buffer.add_char buf '\n' - -let add_int_3 buf (x : int) = - Buffer.add_int8 buf (x land 0xff); - Buffer.add_int16_le buf (x lsr 8) - -let add_int_4 buf (x : int) = Buffer.add_int32_le buf (Int32.of_int x) - -(* IDEAS: - Pros: - - could be even shortened to a single byte - Cons: - - decode would allocate - - code too verbose - - not readable -*) - -let make_encoding length buf : Buffer.t -> int -> unit = - let max_range = (length lsl 1) + 1 in - if max_range <= 0xff then ( - Buffer.add_char buf '1'; - Buffer.add_int8) - else if max_range <= 0xff_ff then ( - Buffer.add_char buf '2'; - Buffer.add_int16_le) - else if length <= 0x7f_ff_ff then ( - Buffer.add_char buf '3'; - add_int_3) - else if length <= 0x7f_ff_ff_ff then ( - Buffer.add_char buf '4'; - add_int_4) - else assert false - -(* Make sure [tmp_buf1] and [tmp_buf2] is cleared , - they are only used to control the order. - Strictly speaking, [tmp_buf1] is not needed -*) -let encode_single (db : Bsb_db.map) buf = - (* module name section *) - let len = Map_string.cardinal db in - if len = 0 then ( - Buffer.add_string buf (string_of_int len); - nl buf) - else - let mapping = Hash_string.create 50 in - (* Pre-processing step because the DB must be sorted with - `Ext_string.compare`, which is not equal to String.compare (the former - sorts based the length of the string). *) - let modules = - Map_string.fold db Map_string.empty (fun name { dir; case } acc -> - match dir with - | Same dir -> Map_string.add acc name (dir, case) - | Different { impl; intf } -> - let acc = - Map_string.add acc (name ^ Literals.suffix_impl) (impl, case) - in - Map_string.add acc (name ^ Literals.suffix_intf) (intf, case)) - in - Buffer.add_string buf (string_of_int (Map_string.cardinal modules)); - nl buf; - Map_string.iter modules (fun name (dir, _) -> - Buffer.add_string buf name; - nl buf; - if not (Hash_string.mem mapping dir) then - Hash_string.add mapping dir (Hash_string.length mapping)); - let length = Hash_string.length mapping in - let rev_mapping = Array.make length "" in - Hash_string.iter mapping (fun k i -> Array.unsafe_set rev_mapping i k); - (* directory name section *) - Ext_array.iter rev_mapping (fun s -> - Buffer.add_string buf s; - Buffer.add_char buf '\t'); - nl buf; - (* module name info section *) - let len_encoding = make_encoding length buf in - Map_string.iter modules (fun _ (dir, case) -> - len_encoding buf - ((Hash_string.find_exn mapping dir lsl 1) - + (Obj.magic (case : bool) : int))); - nl buf - -let encode (dbs : Bsb_db.t) buf = - let tmpbuf = Buffer.create 100_000 in - encode_single dbs.lib tmpbuf; - encode_single dbs.dev tmpbuf; - Buffer.add_string buf (Base64.encode_string (Buffer.contents tmpbuf)) - -(* shall we avoid writing such file (checking the digest)? - It is expensive to start scanning the whole code base, - we should we avoid it in the first place, if we do start scanning, - this operation seems affordable -*) -let write_build_cache oc (bs_files : Bsb_db.t) : unit = - let bsbuild_cache = - let buf = Buffer.create 100_000 in - encode bs_files buf; - Buffer.contents buf - in - - let bsbuild_rule = - Format.asprintf "@\n(rule (write-file %s %s))" Literals.bsbuild_cache - bsbuild_cache - in - output_string oc bsbuild_rule diff --git a/mel/bsb_db_encode.mli b/mel/bsb_db_encode.mli deleted file mode 100644 index 300dcdd67c..0000000000 --- a/mel/bsb_db_encode.mli +++ /dev/null @@ -1,26 +0,0 @@ -(* Copyright (C) 2019 - Present Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val encode : Bsb_db.t -> Buffer.t -> unit -val write_build_cache : Out_channel.t -> Bsb_db.t -> unit diff --git a/mel/bsb_db_util.ml b/mel/bsb_db_util.ml deleted file mode 100644 index 83510f390e..0000000000 --- a/mel/bsb_db_util.ml +++ /dev/null @@ -1,149 +0,0 @@ -(* Copyright (C) 2015-2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) -type module_info = Bsb_db.module_info -type t = Bsb_db.map - -let conflict_module_info modname (a : module_info) (b : module_info) = - match (a.dir, b.dir) with - | Same adir, Same bdir - | Same adir, Different { impl = bdir } - | Different { impl = adir }, Same bdir - | Different { impl = adir }, Different { impl = bdir } -> - Bsb_exception.conflict_module modname adir bdir - -let merge_dirs ~(impl : module_info) ~(intf : module_info) = - match (impl.dir, intf.dir) with - | Same impl_dir, Same intf_dir -> - { - impl with - syntax_kind = - (match (impl.syntax_kind, intf.syntax_kind) with - | Same a, Same b -> - if a = b then Same a else Different { impl = a; intf = b } - | _ -> assert false); - dir = Different { impl = impl_dir; intf = intf_dir }; - info = Impl_intf; - } - | _ -> assert false - -let fix_conflict modname (a : module_info) (b : module_info) = - match (a.info, b.info) with - | Intf, Impl -> merge_dirs ~impl:b ~intf:a - | Impl, Intf -> merge_dirs ~impl:a ~intf:b - | Intf, Intf - | Impl, Impl - | Impl, Impl_intf - | Intf, Impl_intf - | Impl_intf, Impl - | Impl_intf, Intf - | Impl_intf, Impl_intf -> - raise_notrace (conflict_module_info modname a b) - -(* merge data info from two directories*) -let merge (acc : t) (sources : t) : t = - Map_string.disjoint_merge acc sources fix_conflict - -(* invariant check: - ml and mli should have the same case, same path -*) -let check (x : module_info) name_sans_extension case syntax_kind - (module_info : Bsb_db.info) = - let x_ml_info = x.info in - if - x.name_sans_extension <> name_sans_extension - || x.case <> case - || x.syntax_kind <> syntax_kind - || x_ml_info = module_info || x_ml_info = Impl_intf - then - Bsb_exception.invalid_spec - (Printf.sprintf - "implementation and interface have different path names or different \ - cases %s vs %s" - x.name_sans_extension name_sans_extension); - x.info <- Impl_intf; - x - -let warning_unused_file : _ format = - "@{IGNORED@}: file %s under %s is ignored because it can't be \ - turned into a valid module name. \n\ - The build system transforms a file name into a module name by upper-casing \ - the first letter@." -(* TODO: add a link for more explanations *) - -let is_editor_temporary_files basename = Ext_string.starts_with basename ".#" - -(* - Example: .#hi.ml - Note for other files like ~, .swp - it does not pass the suffix rules -*) -let add_basename ~(dir : string) (map : t) ?error_on_invalid_suffix basename : t - = - if is_editor_temporary_files basename then map - else - let info = ref Bsb_db.Impl in - let syntax_kind = ref Bsb_db.Ml in - let invalid_suffix = ref false in - let file_suffix = Ext_filename.get_extension_maybe basename in - (match () with - | _ when file_suffix = Literals.suffix_ml -> () - | _ when file_suffix = Literals.suffix_res -> syntax_kind := Res - | _ when file_suffix = Literals.suffix_re -> syntax_kind := Reason - | _ when file_suffix = Literals.suffix_mli -> info := Intf - | _ when file_suffix = Literals.suffix_resi -> - info := Intf; - syntax_kind := Res - | _ when file_suffix = Literals.suffix_rei -> - info := Intf; - syntax_kind := Reason - | _ -> invalid_suffix := true); - let info = !info in - let syntax_kind = !syntax_kind in - let invalid_suffix = !invalid_suffix in - if invalid_suffix then - match error_on_invalid_suffix with - | None -> map - | Some loc -> Bsb_exception.errorf ~loc "invalid suffix %s" basename - else - match Ext_filename.as_module ~basename:(Filename.basename basename) with - | None -> - Bsb_log.warn warning_unused_file basename dir; - map - | Some { module_name; case } -> - let name_sans_extension = - Filename.concat dir (Ext_filename.chop_extension_maybe basename) - in - let dir = Filename.dirname name_sans_extension in - Map_string.adjust map module_name (fun opt_module_info -> - match opt_module_info with - | None -> - { - dir = Same dir; - name_sans_extension; - info; - syntax_kind = Same syntax_kind; - case; - } - | Some x -> - check x name_sans_extension case (Same syntax_kind) info) diff --git a/mel/bsb_db_util.mli b/mel/bsb_db_util.mli deleted file mode 100644 index 43e5a77847..0000000000 --- a/mel/bsb_db_util.mli +++ /dev/null @@ -1,40 +0,0 @@ -(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val conflict_module_info : - string -> Bsb_db.module_info -> Bsb_db.module_info -> exn - -val merge : Bsb_db.map -> Bsb_db.map -> Bsb_db.map - -(** - Currently it is okay to have duplicated module, - In the future, we may emit a warning -*) - -val add_basename : - dir:string -> - Bsb_db.map -> - ?error_on_invalid_suffix:Ext_position.t -> - string -> - Bsb_db.map diff --git a/mel/bsb_exception.ml b/mel/bsb_exception.ml deleted file mode 100644 index fa7cb0e57a..0000000000 --- a/mel/bsb_exception.ml +++ /dev/null @@ -1,99 +0,0 @@ -(* Copyright (C) 2015-2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type error = - | Package_not_found of Bsb_pkg_types.t * string option (* json file *) - | Json_config of Ext_position.t * string - | Invalid_json of string - | Invalid_spec of string - | Conflict_module of string * string * string - | Not_consistent of string - -exception Error of error - -let error err = raise (Error err) -let package_not_found ~pkg ~json = error (Package_not_found (pkg, json)) - -let print (fmt : Format.formatter) (x : error) = - match x with - | Conflict_module (modname, dir1, dir2) -> - Format.fprintf fmt - "@{Error:@} Module %s found in two directories: (%s, %s)\n\ - File names must be unique per project" modname dir1 dir2 - | Not_consistent modname -> - Format.fprintf fmt - "@{Error:@} %s has implementation/interface in non-consistent \ - syntax(reason/ocaml)" - modname - | Package_not_found (name, json_opt) -> - let in_json = - match json_opt with None -> Ext_string.empty | Some x -> " in " ^ x - in - let name = Bsb_pkg_types.to_string name in - if Ext_string.equal name Literals.package_name then - Format.fprintf fmt - "File \"bsconfig.json\", line 1\n\ - @{Error:@} package @{%s@} is not found %s\n\ - It's the basic, required package. If you have it installed globally,\n\ - Please run `npm link bs-platform` to make it available" name in_json - else - Format.fprintf fmt - "File \"bsconfig.json\", line 1\n\ - @{Error:@} package @{%s@} not found or built %s\n\ - - If it's a dependency, did you install it?\n\ - - Is it a workspace library, did you list it in the `workspace` \ - config?\n\ - - If you did, did you run `mel build`?" name in_json - | Json_config (pos, s) -> - Format.fprintf fmt - "File %S, line %d:\n\ - @{Error:@} %s \n\ - For more details, please checkout the schema \ - https://rescript-lang.org/docs/manual/latest/build-configuration-schema" - pos.pos_fname pos.pos_lnum s - | Invalid_spec s -> - Format.fprintf fmt "@{Error: Invalid bsconfig.json. %s@}" s - | Invalid_json s -> - Format.fprintf fmt - "File %S, line 1\n@{Error: Invalid json format@}" s - -let conflict_module modname dir1 dir2 = - Error (Conflict_module (modname, dir1, dir2)) - -let not_consistent modname = error (Not_consistent modname) - -let errorf ~loc fmt = - Format.ksprintf (fun s -> error (Json_config (loc, s))) fmt - -let config_error config fmt = - let loc = Ext_json.loc_of config in - - error (Json_config (loc, fmt)) - -let invalid_spec s = error (Invalid_spec s) -let invalid_json s = error (Invalid_json s) - -let () = - Printexc.register_printer (fun x -> - match x with Error x -> Some (Format.asprintf "%a" print x) | _ -> None) diff --git a/mel/bsb_exception.mli b/mel/bsb_exception.mli deleted file mode 100644 index 46a8b04832..0000000000 --- a/mel/bsb_exception.mli +++ /dev/null @@ -1,39 +0,0 @@ -(* Copyright (C) 2015-2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type error -(** - This module is used for fatal errros -*) - -exception Error of error - -val print : Format.formatter -> error -> unit -val package_not_found : pkg:Bsb_pkg_types.t -> json:string option -> 'a -val conflict_module : string -> string -> string -> exn -val errorf : loc:Ext_position.t -> ('a, unit, string, 'b) format4 -> 'a -val config_error : Ext_json_types.t -> string -> 'a -val invalid_spec : string -> 'a -val invalid_json : string -> 'a -val not_consistent : string -> 'a diff --git a/mel/bsb_file.ml b/mel/bsb_file.ml deleted file mode 100644 index 519e0e6562..0000000000 --- a/mel/bsb_file.ml +++ /dev/null @@ -1,71 +0,0 @@ -(* Copyright (C) 2018 - Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -(** it is not necessary to call [chown] since it is within the same user - and {!Unix.chown} is not implemented under Windows - *) -let set_infos filename (infos : Unix.stats) = - Unix.utimes filename infos.st_atime infos.st_mtime; - Unix.chmod filename infos.st_perm -(* - try - Unix.chown filename infos.st_uid infos.st_gid - with Unix_error(EPERM,_,_) -> () -*) - -let buffer_size = 8192 -let buffer = Bytes.create buffer_size - -let file_copy input_name output_name = - let fd_in = Unix.openfile input_name [ O_RDONLY ] 0 in - let fd_out = Unix.openfile output_name [ O_WRONLY; O_CREAT; O_TRUNC ] 0o666 in - let rec copy_loop () = - match Unix.read fd_in buffer 0 buffer_size with - | 0 -> () - | r -> - ignore (Unix.write fd_out buffer 0 r); - copy_loop () - in - copy_loop (); - Unix.close fd_in; - Unix.close fd_out - -let copy_with_permission input_name output_name = - file_copy input_name output_name; - set_infos output_name (Unix.lstat input_name) - -let install_if_exists ~destdir input_name = - if Sys.file_exists input_name then ( - let output_name = Filename.concat destdir (Filename.basename input_name) in - match (Unix.stat output_name, Unix.stat input_name) with - | { st_mtime = output_stamp; _ }, { st_mtime = input_stamp; _ } - when input_stamp <= output_stamp -> - false - | _ -> - copy_with_permission input_name output_name; - true - | exception _ -> - copy_with_permission input_name output_name; - true) - else false diff --git a/mel/bsb_file.mli b/mel/bsb_file.mli deleted file mode 100644 index 3bd2113fdb..0000000000 --- a/mel/bsb_file.mli +++ /dev/null @@ -1,26 +0,0 @@ -(* Copyright (C) 2018 - Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val install_if_exists : destdir:string -> string -> bool -(** return [true] if copied *) diff --git a/mel/bsb_file_groups.ml b/mel/bsb_file_groups.ml deleted file mode 100644 index 0fb3540035..0000000000 --- a/mel/bsb_file_groups.ml +++ /dev/null @@ -1,73 +0,0 @@ -(* Copyright (C) 2018 - Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type public = Export_none | Export_all | Export_set of Set_string.t - -type build_generator = { - input : string list; - output : string list; - command : string; -} - -type file_group = { - dir : string; - subdirs : string list; - sources : Bsb_db.map; - resources : string list; - public : public; - is_dev : bool; - generators : build_generator list; - (* output of [generators] should be added to [sources], - if it is [.ml,.mli,.re,.rei] - *) -} - -type file_groups = file_group list -type t = { files : file_groups; globbed_dirs : string list } - -let empty : t = { files = []; globbed_dirs = [] } - -let merge (u : t) (v : t) = - if u == empty then v - else if v == empty then u - else - { - files = Ext_list.append u.files v.files; - globbed_dirs = Ext_list.append u.globbed_dirs v.globbed_dirs; - } - -let cons ~file_group ?globbed_dir (v : t) : t = - { - files = file_group :: v.files; - globbed_dirs = - (match globbed_dir with - | None -> v.globbed_dirs - | Some f -> f :: v.globbed_dirs); - } - -(* when [is_empty file_group] - we don't need issue [-I] [-S] in [.merlin] file -*) -let is_empty (x : file_group) = - Map_string.is_empty x.sources && x.resources = [] && x.generators = [] diff --git a/mel/bsb_file_groups.mli b/mel/bsb_file_groups.mli deleted file mode 100644 index 5282c629ae..0000000000 --- a/mel/bsb_file_groups.mli +++ /dev/null @@ -1,52 +0,0 @@ -(* Copyright (C) 2018 - Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type public = Export_none | Export_all | Export_set of Set_string.t - -type build_generator = { - input : string list; - output : string list; - command : string; -} - -type file_group = { - dir : string; - subdirs : string list; - sources : Bsb_db.map; - resources : string list; - public : public; - is_dev : bool; (* false means not in dev mode *) - generators : build_generator list; - (* output of [generators] should be added to [sources], - if it is [.ml,.mli,.re,.rei] - *) -} - -type file_groups = file_group list -type t = private { files : file_groups; globbed_dirs : string list } - -val empty : t -val merge : t -> t -> t -val cons : file_group:file_group -> ?globbed_dir:string -> t -> t -val is_empty : file_group -> bool diff --git a/mel/bsb_global_paths.ml b/mel/bsb_global_paths.ml deleted file mode 100644 index f709241340..0000000000 --- a/mel/bsb_global_paths.ml +++ /dev/null @@ -1,52 +0,0 @@ -(* Copyright (C) 2019 - Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -(** - If [Sys.executable_name] gives an absolute path, - nothing needs to be done. - - If [Sys.executable_name] is not an absolute path, for example - (rlwrap ./ocaml) - it is a relative path, - it needs be adapted based on cwd - - if [Sys.executable_name] gives an absolute path, - nothing needs to be done - if it is a relative path - - there are two cases: - - bsb.exe - - ./bsb.exe - The first should also not be touched - Only the latter need be adapted based on project root -*) - -let bsc_dir = - Filename.dirname - (Ext_path.normalize_absolute_path - (Ext_path.combine Mel_workspace.cwd Sys.executable_name)) - -let vendor_bsc = "melc" -let vendor_bsdep = "meldep" -let () = assert (Sys.file_exists bsc_dir) diff --git a/mel/bsb_global_paths.mli b/mel/bsb_global_paths.mli deleted file mode 100644 index 6bdeb1bbad..0000000000 --- a/mel/bsb_global_paths.mli +++ /dev/null @@ -1,27 +0,0 @@ -(* Copyright (C) 2019 - Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val bsc_dir : string -val vendor_bsc : string -val vendor_bsdep : string diff --git a/mel/bsb_log.ml b/mel/bsb_log.ml deleted file mode 100644 index b73ee27b66..0000000000 --- a/mel/bsb_log.ml +++ /dev/null @@ -1,91 +0,0 @@ -(* Copyright (C) 2017- Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -let ninja_ansi_forced = - lazy (try Sys.getenv "NINJA_ANSI_FORCED" with Not_found -> "") - -let color_enabled = lazy (Unix.isatty Unix.stdout) - -(* same logic as [ninja.exe] *) -let get_color_enabled () = - let colorful = - match ninja_ansi_forced with - | (lazy "1") -> true - | (lazy ("0" | "false")) -> false - | _ -> Lazy.force color_enabled - in - colorful - -let color_functions : Format.formatter_stag_functions = - { - mark_open_stag = - (function - | Format.String_tag s -> - if get_color_enabled () then Ext_color.ansi_of_tag s - else Ext_string.empty - | _ -> assert false); - mark_close_stag = - (fun _ -> - if get_color_enabled () then Ext_color.reset_lit else Ext_string.empty); - print_open_stag = (fun _ -> ()); - print_close_stag = (fun _ -> ()); - } - -(* let set_color ppf = - Format.pp_set_formatter_tag_functions ppf color_functions *) - -let[@ocaml.warning "-3"] setup () = - Format.pp_set_mark_tags Format.std_formatter true; - Format.pp_set_mark_tags Format.err_formatter true; - Format.pp_set_formatter_stag_functions Format.std_formatter color_functions; - Format.pp_set_formatter_stag_functions Format.err_formatter color_functions - -type level = Debug | Info | Warn | Error - -let int_of_level (x : level) = - match x with Debug -> 0 | Info -> 1 | Warn -> 2 | Error -> 3 - -let log_level = ref Warn -let verbose () = log_level := Debug - -let dfprintf level fmt = - if int_of_level level >= int_of_level !log_level then Format.fprintf fmt - else Format.ifprintf fmt - -type 'a fmt = Format.formatter -> ('a, Format.formatter, unit) format -> 'a -type 'a log = ('a, Format.formatter, unit) format -> 'a - -let debug fmt = dfprintf Debug Format.std_formatter fmt -let info fmt = dfprintf Info Format.std_formatter fmt -let warn fmt = dfprintf Warn Format.err_formatter fmt -let error fmt = dfprintf Error Format.err_formatter fmt - -let info_args (args : string array) = - if int_of_level Info >= int_of_level !log_level then ( - for i = 0 to Array.length args - 1 do - Format.pp_print_string Format.std_formatter (Array.unsafe_get args i); - Format.pp_print_string Format.std_formatter Ext_string.single_space - done; - Format.pp_print_newline Format.std_formatter ()) - else () diff --git a/mel/bsb_log.mli b/mel/bsb_log.mli deleted file mode 100644 index d92e9e525d..0000000000 --- a/mel/bsb_log.mli +++ /dev/null @@ -1,39 +0,0 @@ -(* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val setup : unit -> unit - -type level = Debug | Info | Warn | Error - -val log_level : level ref - -type 'a fmt = Format.formatter -> ('a, Format.formatter, unit) format -> 'a -type 'a log = ('a, Format.formatter, unit) format -> 'a - -val verbose : unit -> unit -val debug : 'a log -val info : 'a log -val warn : 'a log -val error : 'a log -val info_args : string array -> unit diff --git a/mel/bsb_merlin_gen.ml b/mel/bsb_merlin_gen.ml deleted file mode 100644 index e87109dc2d..0000000000 --- a/mel/bsb_merlin_gen.ml +++ /dev/null @@ -1,221 +0,0 @@ -(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -let () = () -let merlin = ".merlin" -let merlin_header = "####{BSB GENERATED: NO EDIT" -let merlin_trailer = "####BSB GENERATED: NO EDIT}" -let merlin_trailer_length = String.length merlin_trailer -let ( // ) = Ext_path.combine - -(* [new_content] should start end finish with newline *) -let revise_merlin merlin new_content = - if Sys.file_exists merlin then - let s = Ext_io.load_file merlin in - let header = Ext_string.find s ~sub:merlin_header in - let tail = Ext_string.find s ~sub:merlin_trailer in - if header < 0 && tail < 0 then ( - (* locked region not added yet *) - let ochan = open_out_bin merlin in - output_string ochan s; - output_string ochan "\n"; - output_string ochan merlin_header; - Buffer.output_buffer ochan new_content; - output_string ochan merlin_trailer; - output_string ochan "\n"; - close_out ochan) - else if header >= 0 && tail >= 0 then ( - (* there is one, hit it everytime, - should be fixed point - *) - let ochan = open_out_bin merlin in - output_string ochan (String.sub s 0 header); - output_string ochan merlin_header; - Buffer.output_buffer ochan new_content; - output_string ochan merlin_trailer; - output_string ochan - (Ext_string.tail_from s (tail + merlin_trailer_length)); - close_out ochan) - else - failwith - "the .merlin is corrupted, locked region by bsb is not consistent " - else - let ochan = open_out_bin merlin in - output_string ochan merlin_header; - Buffer.output_buffer ochan new_content; - output_string ochan merlin_trailer; - output_string ochan "\n"; - close_out ochan - -(* ATTENTION: order matters here, need resolve global properties before - merlin generation -*) -let merlin_flg_ppx = "\nFLG -ppx " -let merlin_flg_pp = "\nFLG -pp " -let merlin_s = "\nS " -let merlin_b = "\nB " -let merlin_flg = "\nFLG " -let bs_flg_prefix = "-bs-" - -let output_merlin_namespace buffer ns = - match ns with - | None -> () - | Some x -> - Buffer.add_string buffer merlin_flg; - Buffer.add_string buffer "-open "; - Buffer.add_string buffer x - -(* Literals.dash_nostdlib:: - FIX editor tooling, note merlin does not need -nostdlib since we added S and B - RLS will add -I for those cmi files, - Some consistency check is needed - Unless we tell the editor to peek those cmi for auto-complete and others for building which is too - complicated -*) -let bsc_flg_to_merlin_ocamlc_flg bsc_flags = - let flags = - Ext_list.filter bsc_flags (fun x -> - not (Ext_string.starts_with x bs_flg_prefix)) - in - if flags <> [] then merlin_flg ^ String.concat Ext_string.single_space flags - else "" - -(* No need for [-warn-error] in merlin *) -let warning_to_merlin_flg (warning : Bsb_warning.t) : string = - merlin_flg ^ Bsb_warning.to_merlin_string warning - -let package_merlin buffer ~dune_build_dir - (package : Bsb_config_types.dependency) = - Ext_list.iter package.package_install_dirs - (fun { Bsb_config_types.dir; package_path; package_name; _ } -> - let source_path, package_install_path = - if - Mel_workspace.is_dep_inside_workspace ~root_dir:Mel_workspace.cwd - ~package_dir:package_path - then - let rel = - Ext_path.rel_normalized_absolute_path ~from:Mel_workspace.cwd - (package_path // dir) - in - (Mel_workspace.cwd // rel, Mel_workspace.cwd // dune_build_dir // rel) - else - let source_path = package_path // dir - and build_path = - Mel_workspace.cwd // dune_build_dir - // (Mel_workspace.to_workspace_proj_dir ~package_name // dir) - in - (source_path, build_path) - in - Buffer.add_string buffer merlin_s; - Buffer.add_string buffer source_path; - Buffer.add_string buffer merlin_b; - Buffer.add_string buffer package_install_path); - - Buffer.add_string buffer merlin_b; - Buffer.add_string buffer - (Mel_workspace.absolute_artifacts_dir - ~package_name:(Bsb_pkg_types.to_string package.package_name) - ~include_dune_build_dir:true ~root_dir:Mel_workspace.cwd - package.package_path) - -let as_ppx arg = - let fmt : _ format = - if Ext_sys.is_windows_or_cygwin then "\"%s -as-ppx \"" else "'%s -as-ppx '" - in - Printf.sprintf fmt arg - -let merlin_file_gen ~(per_proj_dir : string) - ({ - file_groups = res_files; - generate_merlin; - ppx_config; - pp_file; - bs_dependencies; - bs_dev_dependencies; - bsc_flags; - built_in_dependency; - reason_react_jsx = _; - namespace; - warning; - package_name; - } : - Bsb_config_types.t) = - if generate_merlin then ( - let buffer = Buffer.create 1024 in - output_merlin_namespace buffer namespace; - let dune_build_dir = Lazy.force Mel_workspace.dune_build_dir in - if ppx_config.ppxlib <> [] then ( - Buffer.add_string buffer merlin_flg_ppx; - Buffer.add_string buffer - (as_ppx - (dune_build_dir // Literals.melange_eobjs_dir - // Mel_workspace.ppx_exe))); - Ext_list.iter ppx_config.ppx_files (fun ppx -> - Buffer.add_string buffer merlin_flg_ppx; - if ppx.args = [] then Buffer.add_string buffer ppx.name - else - let fmt : _ format = - if Ext_sys.is_windows_or_cygwin then "\"%s %s\"" else "'%s %s'" - in - Buffer.add_string buffer - (Printf.sprintf fmt ppx.name (String.concat " " ppx.args))); - Option.iter (fun x -> Buffer.add_string buffer (merlin_flg_pp ^ x)) pp_file; - Buffer.add_string buffer - (merlin_flg_ppx ^ as_ppx Bsb_global_paths.vendor_bsc); - if built_in_dependency then ( - (* We can't use `Js_config.stdlib_path` because that'd try to find a - relative path to `mel` rather than `melc`. *) - let melange_path = - match Sys.getenv "MELANGELIB" with - | value -> value - | exception Not_found -> - let pin = - Unix.open_process_args_in "melc" - [| "melc"; "-bs-legacy"; "-where" |] - in - let stdlib_path = input_line pin in - close_in pin; - stdlib_path - in - Buffer.add_string buffer (merlin_s ^ melange_path); - Buffer.add_string buffer (merlin_b ^ melange_path)); - let bsc_string_flag = bsc_flg_to_merlin_ocamlc_flg bsc_flags in - Buffer.add_string buffer bsc_string_flag; - Buffer.add_string buffer (warning_to_merlin_flg warning); - Ext_list.iter bs_dependencies (package_merlin buffer ~dune_build_dir); - (* TODO: shall we generate .merlin for dev packages? *) - Ext_list.iter bs_dev_dependencies (package_merlin buffer ~dune_build_dir); - Ext_list.iter res_files.files (fun x -> - if not (Bsb_file_groups.is_empty x) then ( - Buffer.add_string buffer merlin_s; - Buffer.add_string buffer (per_proj_dir // x.dir); - Buffer.add_string buffer merlin_b; - Buffer.add_string buffer (per_proj_dir // dune_build_dir // x.dir))); - Buffer.add_string buffer merlin_b; - Buffer.add_string buffer - (dune_build_dir - // Mel_workspace.rel_artifacts_dir ~package_name ~root_dir:per_proj_dir - ~proj_dir:per_proj_dir per_proj_dir); - Buffer.add_string buffer "\n"; - revise_merlin (per_proj_dir // merlin) buffer) diff --git a/mel/bsb_merlin_gen.mli b/mel/bsb_merlin_gen.mli deleted file mode 100644 index a63fdd1158..0000000000 --- a/mel/bsb_merlin_gen.mli +++ /dev/null @@ -1,25 +0,0 @@ -(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val merlin_file_gen : per_proj_dir:string -> Bsb_config_types.t -> unit diff --git a/mel/bsb_namespace_map_gen.ml b/mel/bsb_namespace_map_gen.ml deleted file mode 100644 index d40b87304a..0000000000 --- a/mel/bsb_namespace_map_gen.ml +++ /dev/null @@ -1,45 +0,0 @@ -(* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -let pp_module_set fmt xs = - Set_string.iter xs (fun x -> Format.fprintf fmt "%s@\n" x) - -(** - TODO: - sort filegroupts to ensure deterministic behavior - - if [.bsbuild] is not changed - [.mlmap] does not need to be changed too - -*) -let output oc (namespace : string) (file_groups : Bsb_file_groups.file_groups) = - let module_set = - Ext_list.fold_left file_groups Set_string.empty (fun acc x -> - Map_string.fold x.sources acc (fun k _ acc -> Set_string.add acc k)) - in - let mlmap_rule = - Format.asprintf "@\n(rule (with-stdout-to %s%s (run echo \"%a\")))" - namespace Literals.suffix_mlmap pp_module_set module_set - in - output_string oc mlmap_rule diff --git a/mel/bsb_namespace_map_gen.mli b/mel/bsb_namespace_map_gen.mli deleted file mode 100644 index 44a9a90937..0000000000 --- a/mel/bsb_namespace_map_gen.mli +++ /dev/null @@ -1,29 +0,0 @@ -(* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val output : Out_channel.t -> string -> Bsb_file_groups.file_groups -> unit -(** [output dir namespace file_groups] - when [build.ninja] is generated, we output a module map [.mlmap] file - such [.mlmap] file will be consumed by [bsc.exe] to generate [.cmi] file - *) diff --git a/mel/bsb_ninja_file_groups.ml b/mel/bsb_ninja_file_groups.ml deleted file mode 100644 index 810595406d..0000000000 --- a/mel/bsb_ninja_file_groups.ml +++ /dev/null @@ -1,353 +0,0 @@ -(* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -let basename = Filename.basename -let ( // ) = Ext_path.combine - -let rel_dependencies_alias ~root_dir ~proj_dir ~cur_dir deps = - Ext_list.flat_map deps - (fun ({ package_install_dirs; _ } : Bsb_config_types.dependency) -> - Ext_list.filter_map package_install_dirs - (fun { Bsb_config_types.package_path; package_name; dir } -> - if - Ext_string.starts_with dir Literals.melange_eobjs_dir - || Ext_string.starts_with dir - (Filename.current_dir_name ^ Filename.dir_sep - ^ Literals.melange_eobjs_dir) - then - (* We don't emit the `mel` alias for the artifacts directory *) - None - else - let virtual_package_dir = - Mel_workspace.virtual_proj_dir ~root_dir ~package_dir:package_path - ~package_name - in - let rel_dir = - Ext_path.rel_normalized_absolute_path ~from:(proj_dir // cur_dir) - (virtual_package_dir // dir) - in - Some (rel_dir // Literals.mel_dune_alias))) - -let handle_generators oc (group : Bsb_file_groups.file_group) custom_rules = - Ext_list.iter group.generators (fun { output; input; command } -> - (* TODO: add a loc for better error message *) - match Map_string.find_opt custom_rules command with - | None -> - Ext_fmt.failwithf ~loc:__LOC__ "custom rule %s used but not defined" - command - | Some rule -> - Bsb_ninja_targets.output_build oc ~outputs:output ~inputs:input - ~rule:(fun ?target:_ oc -> rule oc)) - -type suffixes = { impl : string; intf : string } - -let re_suffixes = { impl = Literals.suffix_re; intf = Literals.suffix_rei } -let ml_suffixes = { impl = Literals.suffix_ml; intf = Literals.suffix_mli } -let res_suffixes = { impl = Literals.suffix_res; intf = Literals.suffix_resi } -let reason_rule ?target:_ oc = Mel_rule.process_reason oc -let rescript_rule ?target:_ oc = Mel_rule.process_rescript oc - -let emit_module_build (package_specs : Bsb_package_specs.t) (is_dev : bool) oc - ?gentype_config ~global_config ~bs_dependencies ~bs_dev_dependencies - _js_post_build_cmd namespace ~cur_dir ~ppx_config - (module_info : Bsb_db.module_info) = - let { Bsb_ninja_global_vars.per_proj_dir; root_dir; package_name; _ } = - global_config - in - let impl_dir, intf_dir = - match module_info.dir with - | Same dir -> (dir, dir) - | Different { impl; intf } -> (impl, intf) - in - let which = - match (impl_dir = cur_dir, intf_dir = cur_dir) with - | true, true -> if module_info.info = Intf then `intf else `both - | true, false -> `impl - | false, true -> `intf - | false, false -> assert false - in - let has_intf_file = - match module_info.info with Intf | Impl_intf -> true | Impl -> false - in - let config = - match module_info.syntax_kind with - | Same Reason -> re_suffixes - | Same Ml -> ml_suffixes - | Same Res -> res_suffixes - | Different { impl; intf } -> ( - assert (impl <> intf); - match (impl, intf) with - | Ml, Reason -> { impl = ml_suffixes.impl; intf = re_suffixes.intf } - | Reason, Ml -> { impl = re_suffixes.impl; intf = ml_suffixes.intf } - | Ml, Res -> { impl = ml_suffixes.impl; intf = res_suffixes.intf } - | Res, Ml -> { impl = res_suffixes.impl; intf = ml_suffixes.intf } - | Reason, Res -> { impl = re_suffixes.impl; intf = res_suffixes.intf } - | Res, Reason -> { impl = res_suffixes.impl; intf = re_suffixes.intf } - | Ml, Ml | Reason, Reason | Res, Res -> assert false) - in - let filename_sans_extension = module_info.name_sans_extension in - let input_impl = - Format.asprintf "%s%s" (basename filename_sans_extension) config.impl - in - let input_intf = - Format.asprintf "%s%s" (basename filename_sans_extension) config.intf - in - let output_ast = filename_sans_extension ^ Literals.suffix_ast in - let output_iast = filename_sans_extension ^ Literals.suffix_iast in - let virtual_proj_dir = - Mel_workspace.virtual_proj_dir ~package_name ~root_dir - ~package_dir:per_proj_dir - in - let rel_proj_dir, rel_artifacts_dir = - ( Ext_path.rel_normalized_absolute_path - ~from:(virtual_proj_dir // cur_dir) - virtual_proj_dir, - Mel_workspace.rel_artifacts_dir ~root_dir ~package_name - ~proj_dir:virtual_proj_dir cur_dir ) - in - - let output_ast = rel_proj_dir // (impl_dir // basename output_ast) in - let output_iast = rel_proj_dir // (intf_dir // basename output_iast) in - let ppx_deps = - if ppx_config.Bsb_config_types.ppxlib <> [] then - [ rel_artifacts_dir // Mel_workspace.ppx_exe ] - else [] - in - let output_d = - (rel_proj_dir // filename_sans_extension) ^ Literals.suffix_d - in - let output_d_as_dep = Format.asprintf "(include %s)" (basename output_d) in - let output_filename_sans_extension = - Ext_namespace.encode ?ns:namespace filename_sans_extension - in - let output_cmi = output_filename_sans_extension ^ Literals.suffix_cmi in - let output_cmj = output_filename_sans_extension ^ Literals.suffix_cmj in - let output_cmt = output_filename_sans_extension ^ Literals.suffix_cmt in - let output_cmti = output_filename_sans_extension ^ Literals.suffix_cmti in - let maybe_gentype_deps = - Option.map - (fun _ -> - let root_artifacts_dir = - Mel_workspace.rel_root_artifacts_dir ~root_dir - (virtual_proj_dir // cur_dir) - in - [ root_artifacts_dir // Literals.sourcedirs_meta ]) - gentype_config - in - let output_js = - Bsb_package_specs.get_list_of_output_js package_specs - output_filename_sans_extension - in - let ast_rule ?target:_ oc = Mel_rule.ast global_config oc cur_dir in - if which <> `intf then ( - let input_impl = - match module_info.syntax_kind with - | Same Reason | Different { impl = Reason; _ } -> - let ast_input_impl = - input_impl ^ Literals.suffix_pp ^ Literals.suffix_ml - in - Bsb_ninja_targets.output_build oc ~outputs:[ ast_input_impl ] - ~inputs:[ input_impl ] ~rule:reason_rule; - ast_input_impl - | Same Res | Different { impl = Res; _ } -> - let ast_input_impl = - input_impl ^ Literals.suffix_pp ^ Literals.suffix_ml - in - Bsb_ninja_targets.output_build oc ~outputs:[ ast_input_impl ] - ~inputs:[ input_impl ] ~rule:rescript_rule; - ast_input_impl - | Different _ | Same Ml -> input_impl - in - - Bsb_ninja_targets.output_build oc - ~implicit_deps: - ((rel_artifacts_dir // Literals.bsbuild_cache) - :: (Option.value ~default:[] maybe_gentype_deps @ ppx_deps)) - ~outputs:[ output_ast ] ~inputs:[ input_impl ] ~rule:ast_rule; - - Bsb_ninja_targets.output_build oc ~outputs:[ output_d ] - ~inputs: - (if has_intf_file then [ output_ast; output_iast ] else [ output_ast ]) - ~rule:(fun ?target:_ oc -> - (if is_dev then Mel_rule.meldep_dev else Mel_rule.meldep) - global_config oc cur_dir)); - let relative_ns_cmi = - match namespace with - | Some ns -> [ rel_artifacts_dir // (ns ^ Literals.suffix_cmi) ] - | None -> [] - in - let rel_bs_config_json = rel_proj_dir // Literals.bsconfig_json in - - let bs_dependencies = - let bs_dependencies = - rel_dependencies_alias ~root_dir ~proj_dir:per_proj_dir ~cur_dir - bs_dependencies - in - if is_dev then - let dev_dependencies = - rel_dependencies_alias ~root_dir ~proj_dir:per_proj_dir ~cur_dir - bs_dev_dependencies - in - dev_dependencies @ bs_dependencies - else bs_dependencies - in - if has_intf_file && which <> `impl then ( - let input_intf = - match module_info.syntax_kind with - | Same Reason | Different { intf = Reason; _ } -> - let ast_input_intf = - input_intf ^ Literals.suffix_pp ^ Literals.suffix_mli - in - Bsb_ninja_targets.output_build oc ~outputs:[ ast_input_intf ] - ~inputs:[ input_intf ] ~rule:reason_rule; - ast_input_intf - | Same Res | Different { intf = Res; _ } -> - let ast_input_intf = - input_intf ^ Literals.suffix_pp ^ Literals.suffix_mli - in - Bsb_ninja_targets.output_build oc ~outputs:[ ast_input_intf ] - ~inputs:[ input_intf ] ~rule:rescript_rule; - ast_input_intf - | Different _ | Same Ml -> input_intf - in - - Bsb_ninja_targets.output_build oc ~outputs:[ output_iast ] - ~implicit_deps:ppx_deps ~inputs:[ input_intf ] ~rule:ast_rule; - - let rule = - let rule_fn = - if is_dev then Mel_rule.cmi_file_dev else Mel_rule.cmi_file - in - fun ?target oc -> rule_fn ?target ~global_config ~package_specs oc cur_dir - in - - Bsb_ninja_targets.output_build oc ~implicit_deps:[ output_d_as_dep ] - ~outputs:[ output_cmi ] ~alias:Literals.mel_dune_alias - ~inputs:[ basename output_iast ] - ~implicit_outputs:[ output_cmti ] ~rule ~bs_dependencies - ~rel_deps:(rel_bs_config_json :: relative_ns_cmi)); - - let rule = - let intf_suffix = - match module_info.syntax_kind with - | Same Reason - | Different { intf = Reason; _ } - | Same Res - | Different { intf = Res; _ } -> - config.impl ^ Literals.suffix_pp ^ Literals.suffix_ml - | Different _ | Same Ml -> config.impl - in - let rule_fn = if is_dev then Mel_rule.cm_file_dev else Mel_rule.cm_file in - fun ?target oc -> - rule_fn - ?intf_suffix:(if has_intf_file then Some intf_suffix else None) - ~global_config ~package_specs ?target oc cur_dir - in - (if which <> `intf then - let output_cmi = - Ext_path.rel_normalized_absolute_path ~from:(per_proj_dir // cur_dir) - (per_proj_dir // intf_dir) - // basename output_cmi - in - Bsb_ninja_targets.output_build oc ~outputs:[ output_cmj ] - ~implicit_outputs: - (if has_intf_file then [ output_cmt ] else [ output_cmi; output_cmt ]) - ~js_outputs:output_js - ~inputs:[ basename output_ast ] - ~alias:Literals.mel_dune_alias - ~implicit_deps: - (if has_intf_file then [ output_cmi; output_d_as_dep ] - else [ output_d_as_dep ]) - ~bs_dependencies - ~rel_deps:(rel_bs_config_json :: relative_ns_cmi) - ~rule); - if which <> `intf then output_js else [] - -let handle_files_per_dir oc ~(global_config : Bsb_ninja_global_vars.t) - ~(db : Bsb_db.t) ~package_specs ~js_post_build_cmd ~bs_dependencies - ~bs_dev_dependencies ~files_to_install (group : Bsb_file_groups.file_group) - : unit = - let per_proj_dir = global_config.per_proj_dir in - let is_dep_inside_workspace = - Mel_workspace.is_dep_inside_workspace ~root_dir:global_config.root_dir - ~package_dir:per_proj_dir - in - let rel_group_dir = - (* For out-of source builds, mimic `node_modules/` *) - let virtual_proj_dir = - Mel_workspace.virtual_proj_dir ~root_dir:global_config.root_dir - ~package_dir:per_proj_dir ~package_name:global_config.package_name - in - Ext_path.rel_normalized_absolute_path ~from:global_config.root_dir - (virtual_proj_dir // group.dir) - in - - output_string oc "(subdir "; - output_string oc rel_group_dir; - output_char oc '\n'; - if Bsb_file_groups.is_empty group then - (* Still need to emit an alias or dune will complain it's empty in other deps. *) - Bsb_ninja_targets.output_alias oc ~name:Literals.mel_dune_alias ~deps:[] - else ( - if group.subdirs <> [] then ( - output_string oc "(dirs :standard"; - Ext_list.iter group.subdirs (fun subdir -> - output_char oc ' '; - output_string oc subdir); - output_string oc ")\n"); - if not is_dep_inside_workspace then ( - output_string oc - "(copy_files (alias mel_copy_out_of_source_dir)\n (files "; - output_string oc (per_proj_dir // group.dir); - output_string oc Filename.dir_sep; - output_string oc "*))"); - let is_dev = group.is_dev in - handle_generators oc group global_config.generators; - let installable = - match group.public with - | Export_all -> fun _ -> true - | Export_none -> fun _ -> false - | Export_set set -> fun module_name -> Set_string.mem set module_name - in - let js_targets = - Map_string.fold group.sources [] (fun module_name _ acc_js -> - let module_info = - Map_string.find_exn (if is_dev then db.dev else db.lib) module_name - in - if installable module_name then Queue.add module_info files_to_install; - let js_outputs = - emit_module_build package_specs is_dev oc ~global_config - ~bs_dependencies ~bs_dev_dependencies - ?gentype_config:global_config.gentypeconfig ~cur_dir:group.dir - ~ppx_config:global_config.ppx_config js_post_build_cmd - global_config.namespace module_info - in - - List.map fst js_outputs :: acc_js) - in - Bsb_ninja_targets.output_alias oc ~name:Literals.mel_dune_alias - ~deps:(List.concat js_targets)); - - output_string oc ")"; - output_string oc "\n" diff --git a/mel/bsb_ninja_file_groups.mli b/mel/bsb_ninja_file_groups.mli deleted file mode 100644 index 405da26314..0000000000 --- a/mel/bsb_ninja_file_groups.mli +++ /dev/null @@ -1,42 +0,0 @@ -(* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val rel_dependencies_alias : - root_dir:string -> - proj_dir:string -> - cur_dir:string -> - Bsb_config_types.dependency list -> - string list - -val handle_files_per_dir : - Out_channel.t -> - global_config:Bsb_ninja_global_vars.t -> - db:Bsb_db.t -> - package_specs:Bsb_package_specs.t -> - js_post_build_cmd:string option -> - bs_dependencies:Bsb_config_types.dependency list -> - bs_dev_dependencies:Bsb_config_types.dependency list -> - files_to_install:Bsb_db.module_info Queue.t -> - Bsb_file_groups.file_group -> - unit diff --git a/mel/bsb_ninja_gen.ml b/mel/bsb_ninja_gen.ml deleted file mode 100644 index fa1d3edc34..0000000000 --- a/mel/bsb_ninja_gen.ml +++ /dev/null @@ -1,181 +0,0 @@ -(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -(* we need copy package.json into [_build] since it does affect build output - it is a bad idea to copy package.json which requires to copy js files -*) - -let ( // ) = Ext_path.concat - -let get_bsc_flags (bsc_flags : string list) : string = - String.concat Ext_string.single_space bsc_flags - -let bsc_lib_includes ~root_dir (bs_dependencies : Bsb_config_types.dependencies) - = - Ext_list.flat_map bs_dependencies (fun { package_install_dirs; _ } -> - Ext_list.map package_install_dirs - (fun { Bsb_config_types.package_path; package_name; dir } -> - let virtual_proj_dir = - Mel_workspace.virtual_proj_dir ~root_dir ~package_dir:package_path - ~package_name - in - virtual_proj_dir // dir)) - -let output_ninja_and_namespace_map ~oc ~per_proj_dir ~root_dir - ~(package_kind : Bsb_package_kind.Source_info.t) - ({ - package_name; - bsc_flags; - pp_file; - ppx_config; - bs_dependencies; - bs_dev_dependencies; - js_post_build_cmd; - package_specs; - file_groups = { files = bs_file_groups }; - built_in_dependency; - reason_react_jsx; - generators; - namespace; - files_to_install; - warning; - gentype_config; - } : - Bsb_config_types.t) : unit = - let warnings = - Bsb_warning.to_bsb_string - ~package_kind:(Bsb_package_kind.Source_info.to_package_kind package_kind) - warning - in - let bsc_flags = get_bsc_flags bsc_flags in - let bs_groups : Bsb_db.t = - { lib = Map_string.empty; dev = Map_string.empty } - in - let source_dirs : string list Bsb_db.cat = { lib = []; dev = [] } in - Ext_list.iter bs_file_groups (fun { sources; dir; is_dev } -> - if is_dev then ( - bs_groups.dev <- Bsb_db_util.merge bs_groups.dev sources; - source_dirs.dev <- dir :: source_dirs.dev) - else ( - bs_groups.lib <- Bsb_db_util.merge bs_groups.lib sources; - source_dirs.lib <- dir :: source_dirs.lib)); - - let global_config = - Bsb_ninja_global_vars.make ~package_name ~root_dir ~per_proj_dir - ~bsc:(Ext_filename.maybe_quote Bsb_global_paths.vendor_bsc) - ~bsdep:(Ext_filename.maybe_quote Bsb_global_paths.vendor_bsdep) - ~warnings ~bsc_flags - ~g_dpkg_incls:(bsc_lib_includes ~root_dir bs_dev_dependencies) - ~g_dev_incls:source_dirs.dev ~g_sourcedirs_incls:source_dirs.lib - ~g_lib_incls:(bsc_lib_includes ~root_dir bs_dependencies) - ~gentypeconfig: - (Option.map - (fun (x : Bsb_config_types.gentype_config) -> - "-bs-gentype " ^ x.path) - gentype_config) - ~ppx_config - ~pp_flags:(Option.map Bsb_build_util.pp_flag pp_file) - ~namespace - ~generators:(Mel_rule.generators generators) - ~pp_file ~has_builtin:built_in_dependency ~reason_react_jsx - in - - let lib = bs_groups.lib in - let dev = bs_groups.dev in - Map_string.iter dev (fun k a -> - if Map_string.mem lib k then - raise (Bsb_db_util.conflict_module_info k a (Map_string.find_exn lib k))); - output_char oc '\n'; - - (* Generate build statement for each file *) - Ext_list.iter bs_file_groups (fun files_per_dir -> - Bsb_ninja_file_groups.handle_files_per_dir oc ~global_config - ~package_specs ~db:bs_groups ~js_post_build_cmd ~bs_dev_dependencies - ~bs_dependencies ~files_to_install files_per_dir); - - if - not - (Mel_workspace.is_dep_inside_workspace ~root_dir ~package_dir:per_proj_dir) - then ( - output_string oc "(subdir "; - output_string oc (Mel_workspace.to_workspace_proj_dir ~package_name); - output_string oc - "\n (copy_files (alias mel_copy_out_of_source_dir)\n (files "; - output_string oc per_proj_dir; - output_string oc Filename.dir_sep; - output_string oc "*)))"); - - output_char oc '\n'; - - let artifacts_dir = - Mel_workspace.rel_artifacts_dir ~package_name ~root_dir - ~proj_dir:per_proj_dir root_dir - in - - output_string oc "(subdir "; - output_string oc artifacts_dir; - - Bsb_ppxlib.ppxlib oc ~ppx_config; - - Option.iter - (fun ns -> - Bsb_namespace_map_gen.output oc ns bs_file_groups; - - Bsb_ninja_targets.output_build - ~outputs:[ ns ^ Literals.suffix_cmi ] - ~inputs:[ ns ^ Literals.suffix_mlmap ] - ~rule:(fun ?target:_ oc -> Mel_rule.namespace global_config oc) - oc) - namespace; - - Bsb_db_encode.write_build_cache oc bs_groups; - - match package_kind with - | Bsb_package_kind.Source_info.Toplevel source_meta -> - output_string oc - (Format.asprintf "\n(rule (write-file %s %S)) " Literals.sourcedirs_meta - (source_meta |> Source_metadata.to_json |> Ext_json_noloc.to_string)); - output_string oc "\n)\n"; - - (* Add `(data_only_dirs node_modules)` because they could contain native - * OCaml code that we do not want to build. *) - output_string oc "\n(data_only_dirs "; - output_string oc Literals.node_modules; - output_char oc ' '; - output_char oc ' '; - output_string oc Literals.melange_eobjs_dir; - (* for the edge case of empty sources (either in user config or because a - source dir is empty), we emit an empty `bsb_world` alias. This avoids - showing the user an error when they haven't done anything. *) - output_string oc - (Format.asprintf ")\n(alias (name %s) (deps %s " Literals.mel_dune_alias - (artifacts_dir // Literals.sourcedirs_meta)); - - (* Build the dependencies in case `"sources"` == []. *) - Ext_list.iter - (Bsb_ninja_file_groups.rel_dependencies_alias ~root_dir - ~proj_dir:root_dir ~cur_dir:root_dir bs_dependencies) (fun dep -> - output_string oc (Format.asprintf "(alias %s)" dep)); - output_string oc "))\n" - | Dependency _ -> output_string oc "\n)\n" diff --git a/mel/bsb_ninja_gen.mli b/mel/bsb_ninja_gen.mli deleted file mode 100644 index 019632bf35..0000000000 --- a/mel/bsb_ninja_gen.mli +++ /dev/null @@ -1,32 +0,0 @@ -(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val output_ninja_and_namespace_map : - oc:Out_channel.t -> - per_proj_dir:string -> - root_dir:string -> - package_kind:Bsb_package_kind.Source_info.t -> - Bsb_config_types.t -> - unit -(** generate ninja file based on [cwd] *) diff --git a/mel/bsb_ninja_global_vars.ml b/mel/bsb_ninja_global_vars.ml deleted file mode 100644 index 19a3e4e113..0000000000 --- a/mel/bsb_ninja_global_vars.ml +++ /dev/null @@ -1,79 +0,0 @@ -(* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type t = { - package_name : string; - root_dir : string; - per_proj_dir : string; - bsc : string; - bsdep : string; - warnings : string; - bsc_flags : string; - g_dpkg_incls : string list; - g_dev_incls : string list; - g_lib_incls : string list; - g_sourcedirs_incls : string list; - gentypeconfig : string option; - pp_flags : string option; - ppx_config : Bsb_config_types.ppx_config; - namespace : string option; - generators : (out_channel -> unit) Map_string.t; - pp_file : string option; - has_builtin : bool; - reason_react_jsx : Bsb_config_types.reason_react_jsx option; -} - -let make ~package_name ~root_dir ~per_proj_dir ~bsc ~bsdep ~warnings ~bsc_flags - ~g_dpkg_incls ~g_dev_incls ~g_lib_incls ~g_sourcedirs_incls ~gentypeconfig - ~pp_flags ~ppx_config ~namespace ~generators ~pp_file ~has_builtin - ~reason_react_jsx = - { - package_name; - root_dir; - per_proj_dir; - bsc; - bsdep; - warnings; - bsc_flags; - g_dpkg_incls; - g_dev_incls; - g_lib_incls; - g_sourcedirs_incls; - gentypeconfig; - pp_flags; - ppx_config; - namespace; - generators; - pp_file; - has_builtin; - reason_react_jsx; - } - -(* Invariant: the two string literal has - to be "a" and "$a" -*) - -(* let src_root_dir = "g_root" - - let lazy_src_root_dir = "$g_root" *) diff --git a/mel/bsb_ninja_targets.ml b/mel/bsb_ninja_targets.ml deleted file mode 100644 index 938d7d85f0..0000000000 --- a/mel/bsb_ninja_targets.ml +++ /dev/null @@ -1,145 +0,0 @@ -(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -let enabled_if = Format.asprintf "(enabled_if %%{bin-available:melc})" -let dune_header = ";;;;{BSB GENERATED: NO EDIT" -let dune_trailer = ";;;;BSB GENERATED: NO EDIT}" -let dune_trailer_length = String.length dune_trailer - -(** [new_content] should start end finish with newline *) -let revise_dune dune new_content = - if Sys.file_exists dune then - let s = Ext_io.load_file dune in - let header = Ext_string.find s ~sub:dune_header in - let tail = Ext_string.find s ~sub:dune_trailer in - if header < 0 && tail < 0 then ( - (* locked region not added yet *) - let ochan = open_out_bin dune in - output_string ochan s; - output_string ochan "\n"; - output_string ochan dune_header; - Buffer.output_buffer ochan new_content; - output_string ochan dune_trailer; - output_string ochan "\n"; - close_out ochan) - else if header >= 0 && tail >= 0 then ( - (* there is one, hit it everytime, - should be fixed point - *) - let ochan = open_out_bin dune in - output_string ochan (String.sub s 0 header); - output_string ochan dune_header; - Buffer.output_buffer ochan new_content; - output_string ochan dune_trailer; - output_string ochan (Ext_string.tail_from s (tail + dune_trailer_length)); - close_out ochan) - else - failwith - "the dune file is corrupted, locked region by bsb is not consistent " - else - let ochan = open_out_bin dune in - output_string ochan dune_header; - Buffer.output_buffer ochan new_content; - output_string ochan dune_trailer; - output_string ochan "\n"; - close_out ochan - -let output_alias ?action oc ~name ~deps = - (match action with - | Some action -> - output_string oc "\n(rule (alias "; - output_string oc name; - output_string oc ")\n (action "; - output_string oc action - | None -> - output_string oc "\n(alias (name "; - output_string oc name); - output_string oc ")"; - if deps <> [] then ( - output_string oc "(deps "; - Ext_list.iter deps (fun x -> - output_string oc Ext_string.single_space; - output_string oc (Filename.basename x)); - output_string oc ")"); - output_char oc '\n'; - output_string oc enabled_if; - output_string oc ")" - -let output_build ?(implicit_deps = []) ?(rel_deps = []) ?(bs_dependencies = []) - ?alias ?(implicit_outputs = []) ?(js_outputs = []) ~outputs ~inputs - ~(rule : Mel_rule.fn) oc = - let just_js_outputs = List.map fst js_outputs in - output_string oc "(rule\n(targets "; - Ext_list.iter outputs (fun s -> - output_string oc Ext_string.single_space; - output_string oc (Filename.basename s)); - if implicit_outputs <> [] || js_outputs <> [] then - Ext_list.iter (implicit_outputs @ just_js_outputs) (fun s -> - output_string oc Ext_string.single_space; - output_string oc (Filename.basename s)); - output_string oc ")\n "; - Option.iter - (fun alias -> - output_string oc "(alias "; - output_string oc alias; - output_string oc ")\n ") - alias; - let in_source_outputs = - List.filter_map - (fun (js, in_source) -> if in_source then Some js else None) - js_outputs - in - if in_source_outputs <> [] then ( - output_string oc "(mode (promote (until-clean) (only"; - Ext_list.iter in_source_outputs (fun s -> - output_string oc Ext_string.single_space; - output_string oc (Filename.basename s)); - output_string oc ")))"); - output_string oc "(deps (:inputs "; - Ext_list.iter inputs (fun s -> - output_string oc Ext_string.single_space; - output_string oc s); - output_string oc ") "; - if implicit_deps <> [] then - Ext_list.iter implicit_deps (fun s -> - output_string oc Ext_string.single_space; - output_string oc s); - Ext_list.iter rel_deps (fun s -> - output_string oc Ext_string.single_space; - output_string oc s); - if bs_dependencies <> [] then - Ext_list.iter bs_dependencies (fun dir -> - output_string oc "(alias "; - output_string oc dir; - output_string oc ")"); - output_string oc ")"; - output_string oc "\n"; - rule - ~target: - (String.concat Ext_string.single_space - (Ext_list.map outputs Filename.basename)) - oc; - output_char oc '\n'; - output_string oc enabled_if; - output_string oc " )\n " diff --git a/mel/bsb_ninja_targets.mli b/mel/bsb_ninja_targets.mli deleted file mode 100644 index 0b3e294c95..0000000000 --- a/mel/bsb_ninja_targets.mli +++ /dev/null @@ -1,46 +0,0 @@ -(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -(** output should always be marked explicitly, - otherwise the build system can not figure out clearly - however, for the command we don't need pass `-o` -*) - -val output_alias : - ?action:string -> Out_channel.t -> name:string -> deps:string list -> unit - -val output_build : - ?implicit_deps:string list -> - ?rel_deps:string list -> - ?bs_dependencies:string list -> - ?alias:string -> - ?implicit_outputs:string list -> - ?js_outputs:(string * bool) list -> - outputs:string list -> - inputs:string list -> - rule:Mel_rule.fn -> - Out_channel.t -> - unit - -val revise_dune : string -> Buffer.t -> unit diff --git a/mel/bsb_package_kind.ml b/mel/bsb_package_kind.ml deleted file mode 100644 index 77d80f0a28..0000000000 --- a/mel/bsb_package_kind.ml +++ /dev/null @@ -1,37 +0,0 @@ -(* Copyright (C) 2020 - Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type t = Toplevel | Dependency of Bsb_package_specs.t -(* This package specs comes from the toplevel to - override the current settings -*) - -module Source_info = struct - type package_kind = t - type t = Toplevel of Source_metadata.t | Dependency of Bsb_package_specs.t - - let to_package_kind : t -> package_kind = function - | Toplevel _ -> Toplevel - | Dependency d -> Dependency d -end diff --git a/mel/bsb_package_kind.mli b/mel/bsb_package_kind.mli deleted file mode 100644 index d0cb738d92..0000000000 --- a/mel/bsb_package_kind.mli +++ /dev/null @@ -1,35 +0,0 @@ -(* Copyright (C) 2020 - Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type t = Toplevel | Dependency of Bsb_package_specs.t -(* This package specs comes from the toplevel to - override the current settings -*) - -module Source_info : sig - type package_kind := t - type t = Toplevel of Source_metadata.t | Dependency of Bsb_package_specs.t - - val to_package_kind : t -> package_kind -end diff --git a/mel/bsb_package_specs.ml b/mel/bsb_package_specs.ml deleted file mode 100644 index eb85a9a4a0..0000000000 --- a/mel/bsb_package_specs.ml +++ /dev/null @@ -1,225 +0,0 @@ -(* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type spec = { - module_system : Ext_module_system.t; - in_source : bool; - suffix : Ext_js_suffix.t; -} - -(*FIXME: use assoc list instead *) -module Spec_set = Set.Make (struct - type t = spec - - let compare = Stdlib.compare -end) - -type t = { - modules : Spec_set.t; - runtime : string option; - (* This has to be resolved as early as possible, since - the path will be inherited in sub projects - *) -} - -let specs t = t.modules |> Spec_set.to_seq |> List.of_seq - -let has_in_source t = - Spec_set.exists (fun { in_source; _ } -> in_source) t.modules - -let ( .?() ) = Map_string.find_opt - -let bad_module_format_message_exn ~loc format = - Bsb_exception.errorf ~loc - "package-specs: `%s` isn't a valid output module format. It has to be one \ - of: %s, %s or %s" - format Literals.commonjs Literals.es6 Literals.es6_global - -let output_dir_of_spec (x : spec) = - Literals.melange_output_prefix ^ "." - ^ Ext_module_system.to_string x.module_system - -let supported_module_system (x : string) loc : Ext_module_system.t = - match Ext_module_system.of_string x with - | Some t -> t - | None -> bad_module_format_message_exn ~loc x - -let rec from_array suffix (arr : Ext_json_types.t array) : Spec_set.t = - let spec = ref Spec_set.empty in - let has_in_source = ref false in - Ext_array.iter arr (fun x -> - let result = from_json_single suffix x in - if result.in_source then - if not !has_in_source then has_in_source := true - else - Bsb_exception.errorf ~loc:(Ext_json.loc_of x) - "package-specs: we've detected two module formats that are both \ - configured to be in-source."; - spec := Spec_set.add result !spec); - !spec - -(* TODO: FIXME: better API without mutating *) -and from_json_single suffix (x : Ext_json_types.t) : spec = - match x with - | Str { str = module_system; loc } -> - { - module_system = supported_module_system module_system loc; - in_source = false; - suffix; - } - | Obj { map; loc } -> ( - match map.?("module") with - | Some (Str { str = format }) -> - let in_source = - match map.?(Bsb_build_schemas.in_source) with - | Some (True _) -> true - | Some _ | None -> false - in - let suffix = - match map.?("suffix") with - | Some (Str { str = suffix; loc }) -> - let s = Ext_js_suffix.of_string suffix in - if s = Unknown_extension then - Bsb_exception.errorf ~loc "expect .js, .bs.js,. mjs or .cjs" - else s - | Some _ -> - Bsb_exception.errorf ~loc:(Ext_json.loc_of x) - "expect a string field" - | None -> suffix - in - { - module_system = supported_module_system format loc; - in_source; - suffix; - } - | Some _ -> - Bsb_exception.errorf ~loc - "package-specs: when the configuration is an object, `module` \ - field should be a string, not an array. If you want to pass \ - multiple module specs, try turning package-specs into an array of \ - objects (or strings) instead." - | None -> - Bsb_exception.errorf ~loc - "package-specs: when the configuration is an object, the `module` \ - field is mandatory.") - | _ -> - Bsb_exception.errorf ~loc:(Ext_json.loc_of x) - "package-specs: we expect either a string or an object." - -let from_json suffix (x : Ext_json_types.t) : Spec_set.t = - match x with - | Arr { content; _ } -> from_array suffix content - | _ -> Spec_set.singleton (from_json_single suffix x) - -let bs_package_output = "-bs-package-output" - -(** Assume input is valid - coordinate with command line flag - {[ -bs-package-output commonjs:lib/js/jscomp/test:.js ]} -*) -let package_flag ({ module_system; suffix } : spec) dir = - Ext_string.inter2 bs_package_output - (Ext_string.concat5 - (Ext_module_system.to_string module_system) - Ext_string.single_colon dir Ext_string.single_colon - (Ext_js_suffix.to_string suffix)) - -(* FIXME: we should adapt it *) -let package_flag_of_package_specs (package_specs : t) ~(dirname : string) : - string = - let res = - Spec_set.fold - (fun format acc -> Ext_string.inter2 acc (package_flag format dirname)) - package_specs.modules Ext_string.empty - in - match package_specs.runtime with - | None -> res - | Some x -> res ^ " -runtime " ^ x - -let default_package_specs suffix = - Spec_set.singleton { module_system = NodeJS; in_source = false; suffix } - -(** - [get_list_of_output_js specs "src/hi/hello"] - -*) -let get_list_of_output_js (package_specs : t) - (output_file_sans_extension : string) = - Spec_set.fold - (fun (spec : spec) acc -> - let basename = - Ext_namespace.change_ext_ns_suffix output_file_sans_extension - (Ext_js_suffix.to_string spec.suffix) - in - (basename, spec.in_source) :: acc) - package_specs.modules [] - -type json_map = Ext_json_types.t Map_string.t - -let extract_bs_suffix_exn (map : json_map) : Ext_js_suffix.t = - match map.?(Bsb_build_schemas.suffix) with - | None -> Js - | Some (Str { str; loc }) -> - let s = Ext_js_suffix.of_string str in - if s = Unknown_extension then - Bsb_exception.errorf ~loc "expect .bs.js, .js, .cjs, .mjs here" - else s - | Some config -> - Bsb_exception.config_error config - "expect a string exteion like \".js\" here" - -let from_map ~(cwd : string) map = - let suffix = extract_bs_suffix_exn map in - let modules = - match map.?(Bsb_build_schemas.package_specs) with - | Some x -> from_json suffix x - | None -> default_package_specs suffix - in - let runtime = - match map.?(Bsb_build_schemas.external_stdlib) with - | None -> None - | Some (Str { str; _ }) -> - Some - (Bsb_pkg.resolve_bs_package ~cwd - (Bsb_pkg_types.string_as_package str)) - | _ -> assert false - in - - let distinct_suffixes = - Spec_set.fold - (fun spec acc -> Set_string.add acc (Ext_js_suffix.to_string spec.suffix)) - modules Set_string.empty - in - - let distinct_suffixes = Set_string.cardinal distinct_suffixes in - let distinct_modules = Spec_set.cardinal modules in - if distinct_suffixes < distinct_modules then - Bsb_log.warn - "@{Warning:@} @[Found %d package specs, but only %d distinct \ - suffix(es).@;\ - @[Melange can only output multiple package specs if they have distinct \ - suffixes.@]@]@." - distinct_modules distinct_suffixes; - - { runtime; modules } diff --git a/mel/bsb_package_specs.mli b/mel/bsb_package_specs.mli deleted file mode 100644 index 425826606d..0000000000 --- a/mel/bsb_package_specs.mli +++ /dev/null @@ -1,43 +0,0 @@ -(* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type spec = { - module_system : Ext_module_system.t; - in_source : bool; - suffix : Ext_js_suffix.t; -} - -type t - -val from_map : cwd:string -> Ext_json_types.t Map_string.t -> t -val package_flag_of_package_specs : t -> dirname:string -> string -val get_list_of_output_js : t -> string -> (string * bool) list (* in-source *) - -(** - Sample output: {[ -bs-package-output commonjs:lib/js/jscomp/test]} -*) - -val has_in_source : t -> bool -val specs : t -> spec list -val output_dir_of_spec : spec -> string diff --git a/mel/bsb_parse_sources.ml b/mel/bsb_parse_sources.ml deleted file mode 100644 index f002092881..0000000000 --- a/mel/bsb_parse_sources.ml +++ /dev/null @@ -1,379 +0,0 @@ -(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type build_generator = Bsb_file_groups.build_generator - -let ( .?() ) = Map_string.find_opt - -(* type file_group = Bsb_file_groups.file_group *) - -type t = Bsb_file_groups.t - -let is_input_or_output (xs : build_generator list) (x : string) = - Ext_list.exists xs (fun { input; output } -> - let it_is y = y = x in - Ext_list.exists input it_is || Ext_list.exists output it_is) - -let errorf x fmt = Bsb_exception.errorf ~loc:(Ext_json.loc_of x) fmt - -type cxt = { - package_kind : Bsb_package_kind.t; - is_dev : bool; - cwd : string; - root : string; - cut_generators : bool; - traverse : bool; - namespace : string option; - ignored_dirs : Set_string.t; -} -[@@ocaml.warning "-unused-field"] - -(* [public] has a list of modules, we do a sanity check to see if all the listed - modules are indeed valid module components -*) -let collect_pub_modules (xs : Ext_json_types.t array) (cache : Bsb_db.map) : - Set_string.t = - let set = ref Set_string.empty in - for i = 0 to Array.length xs - 1 do - let v = Array.unsafe_get xs i in - match v with - | Str { str; loc } -> - if Map_string.mem cache str then set := Set_string.add !set str - else - Bsb_exception.errorf ~loc "%S in public is not an existing module" str - | _ -> - Bsb_exception.errorf ~loc:(Ext_json.loc_of v) - "public expects a list of strings" - done; - !set - -let extract_pub (input : Ext_json_types.t Map_string.t) - (cur_sources : Bsb_db.map) : Bsb_file_groups.public = - match input.?(Bsb_build_schemas.public) with - | Some (Str { str = s } as x) -> - if s = Bsb_build_schemas.export_all then Export_all - else if s = Bsb_build_schemas.export_none then Export_none - else errorf x "invalid str for %s " s - | Some (Arr { content }) -> - Export_set (collect_pub_modules content cur_sources) - | Some config -> Bsb_exception.config_error config "expect array or string" - | None -> Export_all - -let extract_resources (input : Ext_json_types.t Map_string.t) : string list = - match input.?(Bsb_build_schemas.resources) with - | Some (Arr x) -> Bsb_build_util.get_list_string x.content - | Some config -> Bsb_exception.config_error config "expect array " - | None -> [] - -let extract_input_output (edge : Ext_json_types.t) : string list * string list = - let error () = - errorf edge {| invalid edge format, expect ["output" , ":", "input" ]|} - in - match edge with - | Arr { content } -> ( - match - Ext_array.find_and_split content - (fun x () -> match x with Str { str = ":" } -> true | _ -> false) - () - with - | No_split -> error () - | Split (output, input) -> - ( Ext_array.to_list_map output (fun x -> - match x with - | Str { str = ":" } -> error () - | Str { str } -> Some str - | _ -> None), - Ext_array.to_list_map input (fun x -> - match x with - | Str { str = ":" } -> error () - | Str { str } -> - Some str - (* More rigirous error checking: It would trigger a ninja syntax error *) - | _ -> None) )) - | _ -> error () - -type json_map = Ext_json_types.t Map_string.t - -let extract_generators (input : json_map) : build_generator list = - match input.?(Bsb_build_schemas.generators) with - | Some (Arr { content; loc_start = _ }) -> - (* Need check is dev build or not *) - Ext_array.fold_left content [] (fun acc x -> - match x with - | Obj { map } -> ( - match - (map.?(Bsb_build_schemas.name), map.?(Bsb_build_schemas.edge)) - with - | Some (Str command), Some edge -> - let output, input = extract_input_output edge in - { Bsb_file_groups.input; output; command = command.str } - :: acc - | _ -> errorf x "Invalid generator format") - | _ -> errorf x "Invalid generator format") - | Some x -> errorf x "Invalid generator format" - | None -> [] - -let extract_predicate (m : json_map) : string -> bool = - let excludes = - match m.?(Bsb_build_schemas.excludes) with - | None -> [] - | Some (Arr { content = arr }) -> Bsb_build_util.get_list_string arr - | Some x -> Bsb_exception.config_error x "excludes expect array " - in - let slow_re = m.?(Bsb_build_schemas.slow_re) in - match (slow_re, excludes) with - | Some (Str { str = s }), [] -> - let re = Str.regexp s in - fun name -> Str.string_match re name 0 - | Some (Str { str = s }), _ :: _ -> - let re = Str.regexp s in - fun name -> - Str.string_match re name 0 && not (Ext_list.mem_string excludes name) - | Some config, _ -> - Bsb_exception.config_error config - (Bsb_build_schemas.slow_re ^ " expect a string literal") - | None, _ -> fun name -> not (Ext_list.mem_string excludes name) - -(* [parsing_source_dir_map cxt input] - Major work done in this function, - assume [not toplevel && not (Bsb_dir_index.is_lib_dir dir_index)] - is already checked, so we don't need check it again -*) - -(* This is the only place where we do some removal during scanning, - configurabl -*) - -let single_source_subdir_names { package_kind; is_dev } (x : Ext_json_types.t) : - string list = - match x with - | Str { str = dir } -> [ dir ] - | Obj { map } -> ( - let current_dir_index = - match map.?(Bsb_build_schemas.type_) with - | Some (Str { str = "dev" }) -> true - | Some _ -> - Bsb_exception.config_error x {|type field expect "dev" literal |} - | None -> is_dev - in - match (package_kind, current_dir_index) with - | Dependency _, true -> [] - | Dependency _, false | Toplevel, _ -> - let dir = - match map.?(Bsb_build_schemas.dir) with - | Some (Str { str }) -> str - | Some x -> - Bsb_exception.config_error x "dir expected to be a string" - | None -> - Bsb_exception.config_error x - ("required field :" ^ Bsb_build_schemas.dir ^ " missing") - in - [ dir ]) - | _ -> [] - -let arr_subdir_names cxt arr = - List.concat - (Array.to_list (Ext_array.map arr (single_source_subdir_names cxt))) - -(**********************************) -(* starts parsing *) -let rec parsing_source_dir_map ({ cwd = dir } as cxt) - (input : Ext_json_types.t Map_string.t) : Bsb_file_groups.t = - if Set_string.mem cxt.ignored_dirs dir then Bsb_file_groups.empty - else - let cur_globbed_dirs = ref false in - let has_generators = not cxt.cut_generators in - let scanned_generators = extract_generators input in - let sub_dirs_field = input.?(Bsb_build_schemas.subdirs) in - let base_name_array = - lazy - (cur_globbed_dirs := true; - Sys.readdir (Filename.concat cxt.root dir)) - in - let output_sources = - Ext_list.fold_left - (Ext_list.flat_map scanned_generators (fun x -> x.output)) - Map_string.empty - (fun acc o -> Bsb_db_util.add_basename ~dir acc o) - in - let sources = - match input.?(Bsb_build_schemas.files) with - | None -> - (* We should avoid temporary files *) - Ext_array.fold_left (Lazy.force base_name_array) output_sources - (fun acc basename -> - if is_input_or_output scanned_generators basename then acc - else Bsb_db_util.add_basename ~dir acc basename) - | Some (Arr basenames) -> - Ext_array.fold_left basenames.content output_sources - (fun acc basename -> - match basename with - | Str { str = basename; loc } -> - Bsb_db_util.add_basename ~dir acc basename - ~error_on_invalid_suffix:loc - | _ -> acc) - | Some (Obj { map; loc = _ }) -> - (* { excludes : [], slow_re : "" }*) - let predicate = extract_predicate map in - Ext_array.fold_left (Lazy.force base_name_array) output_sources - (fun acc basename -> - if - is_input_or_output scanned_generators basename - || not (predicate basename) - then acc - else Bsb_db_util.add_basename ~dir acc basename) - | Some x -> - Bsb_exception.config_error x "files field expect array or object " - in - let resources = extract_resources input in - let public = extract_pub input sources in - (* Doing recursive stuff *) - let children, subdirs = - match (sub_dirs_field, cxt.traverse) with - | None, true | Some (True _), _ -> - let root = cxt.root in - let parent = Filename.concat root dir in - let subdirs = Lazy.force base_name_array in - let children = - Ext_array.fold_left subdirs Bsb_file_groups.empty (fun origin x -> - if - (not (Set_string.mem cxt.ignored_dirs x)) - && Ext_sys.is_directory_no_exn (Filename.concat parent x) - then - Bsb_file_groups.merge - (parsing_source_dir_map - { - cxt with - cwd = - Ext_path.( - normalize_absolute_path - (concat cxt.cwd - (simple_convert_node_path_to_os_path x))); - traverse = true; - } - Map_string.empty) - origin - else origin) - in - let subdirs = - List.filter - (fun x -> Ext_sys.is_directory_no_exn (Filename.concat parent x)) - (Array.to_list subdirs) - in - (children, subdirs) - (* readdir parent avoiding scanning twice *) - | None, false | Some (False _), _ -> (Bsb_file_groups.empty, []) - | Some s, _ -> - let subdirs = - match s with - | Arr s -> arr_subdir_names cxt s.content - | _ -> single_source_subdir_names cxt s - in - (parse_sources cxt s, subdirs) - in - (* Do some clean up *) - (* prune_staled_bs_js_files cxt sources ; *) - Bsb_file_groups.cons - ~file_group: - { - dir; - subdirs; - sources; - resources; - public; - is_dev = cxt.is_dev; - generators = (if has_generators then scanned_generators else []); - } - ?globbed_dir:(if !cur_globbed_dirs then Some dir else None) - children - -and parsing_single_source ({ package_kind; is_dev; cwd } as cxt) - (x : Ext_json_types.t) : t = - match x with - | Str { str = dir } -> ( - match (package_kind, is_dev) with - | Dependency _, true -> Bsb_file_groups.empty - | Dependency _, false | Toplevel, _ -> - parsing_source_dir_map - { - cxt with - cwd = - Ext_path.( - normalize_absolute_path - (concat cwd (simple_convert_node_path_to_os_path dir))); - } - Map_string.empty) - | Obj { map } -> ( - let current_dir_index = - match map.?(Bsb_build_schemas.type_) with - | Some (Str { str = "dev" }) -> true - | Some _ -> - Bsb_exception.config_error x {|type field expect "dev" literal |} - | None -> is_dev - in - match (package_kind, current_dir_index) with - | Dependency _, true -> Bsb_file_groups.empty - | Dependency _, false | Toplevel, _ -> - let dir = - match map.?(Bsb_build_schemas.dir) with - | Some (Str { str }) -> - Ext_path.simple_convert_node_path_to_os_path str - | Some x -> - Bsb_exception.config_error x "dir expected to be a string" - | None -> - Bsb_exception.config_error x - ("required field :" ^ Bsb_build_schemas.dir ^ " missing") - in - - parsing_source_dir_map - { - cxt with - is_dev = current_dir_index; - cwd = Ext_path.(normalize_absolute_path (concat cwd dir)); - } - map) - | _ -> Bsb_file_groups.empty - -and parsing_arr_sources cxt (file_groups : Ext_json_types.t array) = - Ext_array.fold_left file_groups Bsb_file_groups.empty (fun origin x -> - Bsb_file_groups.merge (parsing_single_source cxt x) origin) - -and parse_sources (cxt : cxt) (sources : Ext_json_types.t) = - match sources with - | Arr file_groups -> parsing_arr_sources cxt file_groups.content - | _ -> parsing_single_source cxt sources - -let scan ~package_kind ~root ~cut_generators ~namespace ~ignored_dirs x : t = - parse_sources - { - ignored_dirs; - package_kind; - is_dev = false; - cwd = Filename.current_dir_name; - root; - cut_generators; - namespace; - traverse = false; - } - x diff --git a/mel/bsb_parse_sources.mli b/mel/bsb_parse_sources.mli deleted file mode 100644 index 8e3a92db7c..0000000000 --- a/mel/bsb_parse_sources.mli +++ /dev/null @@ -1,37 +0,0 @@ -(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val scan : - package_kind:Bsb_package_kind.t -> - root:string -> - cut_generators:bool -> - namespace:string option -> - ignored_dirs:Set_string.t -> - Ext_json_types.t -> - Bsb_file_groups.t -(** [scan .. cxt json] - entry is to the [sources] in the schema - given a root, return an object which is - all relative paths, this function will do the IO -*) diff --git a/mel/bsb_path_resolver.ml b/mel/bsb_path_resolver.ml deleted file mode 100644 index 9987679616..0000000000 --- a/mel/bsb_path_resolver.ml +++ /dev/null @@ -1,21 +0,0 @@ -open Ext_json_types - -let ( // ) = Ext_path.combine -let cache : string Hash_string.t = Hash_string.create 0 - -let extract_paths_from_importmap cwd json = - match json with - | Obj { map } -> ( - match Map_string.find_opt map Bsb_build_schemas.workspace with - | Some (Obj { map }) -> - Map_string.bindings map - |> List.iter (fun (key, value) -> - match value with - | Ext_json_types.Str { str } -> - Hash_string.add cache key - (Ext_path.normalize_absolute_path (cwd // str)) - | _ -> ()) - | _ -> ()) - | _ -> () - -let resolve_import_map_package package = Hash_string.find_opt cache package diff --git a/mel/bsb_path_resolver.mli b/mel/bsb_path_resolver.mli deleted file mode 100644 index eda5c90df4..0000000000 --- a/mel/bsb_path_resolver.mli +++ /dev/null @@ -1,2 +0,0 @@ -val extract_paths_from_importmap : string -> Ext_json_types.t -> unit -val resolve_import_map_package : string -> string option diff --git a/mel/bsb_pkg.ml b/mel/bsb_pkg.ml deleted file mode 100644 index e2e8da33f3..0000000000 --- a/mel/bsb_pkg.ml +++ /dev/null @@ -1,134 +0,0 @@ -(* Copyright (C) 2017- Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -let ( // ) = Filename.concat - -type t = Bsb_pkg_types.t - -(* TODO: be more restrict - [bsconfig.json] does not always make sense, - when resolving [ppx-flags] -*) -let make_sub_path (x : t) : string = - Literals.node_modules // Bsb_pkg_types.to_string x - -let node_paths : string list Lazy.t = - lazy - (try - Ext_string.split (Sys.getenv "NODE_PATH") - (if Sys.win32 then ';' else ':') - with _ -> []) - -(* It makes sense to have this function raise, when [bsb] could not resolve a package, it used to mean - a failure -*) -let check_dir dir = - match Sys.file_exists dir with true -> Some dir | false -> None - -let resolve_bs_package_aux ~cwd (pkg : t) = - (* First try to resolve recursively from the current working directory *) - let sub_path = make_sub_path pkg in - let rec aux cwd = - let abs_marker = Ext_path.normalize_absolute_path (cwd // sub_path) in - - if Sys.file_exists abs_marker then abs_marker - else - let another_cwd = Filename.dirname cwd in - (* TODO: may non-terminating when see symlinks *) - if String.length another_cwd < String.length cwd then aux another_cwd - else - (* To the end try other possiblilities [NODE_PATH]*) - match - Ext_list.find_opt (Lazy.force node_paths) (fun dir -> - check_dir (dir // Bsb_pkg_types.to_string pkg)) - with - | Some resolved_dir -> resolved_dir - | None -> Bsb_exception.package_not_found ~pkg ~json:None - in - aux cwd - -module Coll = Hash.Make (struct - type nonrec t = t - - let equal = Bsb_pkg_types.equal - let hash (x : t) = Hashtbl.hash x -end) - -let cache : string Coll.t = Coll.create 0 -let to_list cb = Coll.to_list cache cb - -(* TODO: collect all warnings and print later *) -let resolve_bs_package ~cwd (package : t) = - match Coll.find_opt cache package with - | None -> - let result = resolve_bs_package_aux ~cwd package in - Bsb_log.info "@{Package@} %a -> %s@." Bsb_pkg_types.print package - result; - Coll.add cache package result; - result - | Some x -> - let result = resolve_bs_package_aux ~cwd package in - if not (Bsb_real_path.is_same_paths_via_io result x) then - Bsb_log.warn - "@{Duplicated package:@} %a %s (chosen) vs %s in %s @." - Bsb_pkg_types.print package x result cwd; - x - -let resolve_package ~cwd package_name = - match Bsb_path_resolver.resolve_import_map_package package_name with - | Some path -> path - | None -> - resolve_bs_package ~cwd (Bsb_pkg_types.string_as_package package_name) - -(* The package does not need to be a bspackage - example: - {[ - resolve_npm_package_file ~cwd "reason/refmt";; - resolve_npm_package_file ~cwd "reason/refmt/xx/yy" - ]} - It also returns the path name - Note the input [sub_path] is already converted to physical meaning path according to OS -*) -(* let resolve_npm_package_file ~cwd sub_path = *) -(* let rec aux cwd = *) -(* let abs_marker = cwd // Literals.node_modules // sub_path in *) -(* if Sys.file_exists abs_marker then Some abs_marker *) -(* else *) -(* let cwd' = Filename.dirname cwd in *) -(* if String.length cwd' < String.length cwd then *) -(* aux cwd' *) -(* else *) -(* try *) -(* let abs_marker = *) -(* Sys.getenv "npm_config_prefix" *) -(* // "lib" // Literals.node_modules // sub_path in *) -(* if Sys.file_exists abs_marker *) -(* then Some abs_marker *) -(* else None *) -(* (\* Bs_exception.error (Bs_package_not_found name) *\) *) -(* with *) -(* Not_found -> None *) -(* (\* Bs_exception.error (Bs_package_not_found name) *\) *) -(* in *) -(* aux cwd *) diff --git a/mel/bsb_pkg.mli b/mel/bsb_pkg.mli deleted file mode 100644 index f2ce9f4ed9..0000000000 --- a/mel/bsb_pkg.mli +++ /dev/null @@ -1,40 +0,0 @@ -(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -(** [resolve cwd module_name], - [cwd] is current working directory, absolute path - Trying to find paths to load [module_name] - it is sepcialized for option [-bs-package-include] which requires - [npm_package_name/lib/ocaml] - - it relies on [npm_config_prefix] env variable for global npm modules -*) - -val resolve_package : cwd:string -> string -> string - -val resolve_bs_package : cwd:string -> Bsb_pkg_types.t -> string -(** @raise when not found *) - -val to_list : (Bsb_pkg_types.t -> string -> 'a) -> 'a list -(** used by watcher *) diff --git a/mel/bsb_pkg_types.ml b/mel/bsb_pkg_types.ml deleted file mode 100644 index f9fa229b58..0000000000 --- a/mel/bsb_pkg_types.ml +++ /dev/null @@ -1,88 +0,0 @@ -(* Copyright (C) 2018- Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -let ( // ) = Filename.concat - -type t = Global of string | Scope of string * scope -and scope = string - -let to_string (x : t) = - match x with Global s -> s | Scope (s, scope) -> scope // s - -let print fmt (x : t) = - match x with - | Global s -> Format.pp_print_string fmt s - | Scope (name, scope) -> Format.fprintf fmt "%s/%s" scope name - -let equal (x : t) y = - match (x, y) with - | Scope (a0, a1), Scope (b0, b1) -> a0 = b0 && a1 = b1 - | Global a0, Global b0 -> a0 = b0 - | Scope _, Global _ | Global _, Scope _ -> false - -(** - input: {[ - @hello/yy/xx - hello/yy - ]} - FIXME: fix invalid input - {[ - hello//xh//helo - ]} -*) -let extract_pkg_name_and_file (s : string) = - let len = String.length s in - assert (len > 0); - let v = String.unsafe_get s 0 in - if v = '@' then ( - let scope_id = Ext_string.no_slash_idx s in - assert (scope_id > 0); - let pkg_id = Ext_string.no_slash_idx_from s (scope_id + 1) in - let scope = String.sub s 0 scope_id in - - if pkg_id < 0 then - (Scope (String.sub s (scope_id + 1) (len - scope_id - 1), scope), "") - else - ( Scope (String.sub s (scope_id + 1) (pkg_id - scope_id - 1), scope), - String.sub s (pkg_id + 1) (len - pkg_id - 1) )) - else - let pkg_id = Ext_string.no_slash_idx s in - if pkg_id < 0 then (Global s, "") - else - ( Global (String.sub s 0 pkg_id), - String.sub s (pkg_id + 1) (len - pkg_id - 1) ) - -let string_as_package (s : string) : t = - let len = String.length s in - assert (len > 0); - let v = String.unsafe_get s 0 in - if v = '@' then ( - let scope_id = Ext_string.no_slash_idx s in - assert (scope_id > 0); - (* better-eror message for invalid scope package: - @rescript/std - *) - Scope - (String.sub s (scope_id + 1) (len - scope_id - 1), String.sub s 0 scope_id)) - else Global s diff --git a/mel/bsb_pkg_types.mli b/mel/bsb_pkg_types.mli deleted file mode 100644 index 8462ed742c..0000000000 --- a/mel/bsb_pkg_types.mli +++ /dev/null @@ -1,35 +0,0 @@ -(* Copyright (C) 2019- Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type t = Global of string | Scope of string * scope -and scope = string - -val to_string : t -> string -val print : Format.formatter -> t -> unit -val equal : t -> t -> bool - -(* The second element could be empty or dropped -*) -val extract_pkg_name_and_file : string -> t * string -val string_as_package : string -> t diff --git a/mel/bsb_ppxlib.ml b/mel/bsb_ppxlib.ml deleted file mode 100644 index 16ac93c95c..0000000000 --- a/mel/bsb_ppxlib.ml +++ /dev/null @@ -1,38 +0,0 @@ -(* Copyright (C) 2021- Authors of Melange - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -let generate_rules (ppx_config : Bsb_config_types.ppx_config) = - let driver = "let () = Ppxlib.Driver.standalone ()" in - let ppx_ml = - Format.asprintf "(rule (with-stdout-to ppx.ml (run echo %S)))" driver - in - let executable = - Format.asprintf - "(executable (name ppx) (modules ppx) (flags -linkall) (libraries %s))" - (String.concat " " (Ext_list.map ppx_config.ppxlib (fun x -> x.name))) - in - Format.asprintf "%s@\n%s" ppx_ml executable - -let ppxlib ~(ppx_config : Bsb_config_types.ppx_config) oc = - if ppx_config.ppxlib <> [] then output_string oc (generate_rules ppx_config) diff --git a/mel/bsb_ppxlib.mli b/mel/bsb_ppxlib.mli deleted file mode 100644 index 3814ad4077..0000000000 --- a/mel/bsb_ppxlib.mli +++ /dev/null @@ -1,25 +0,0 @@ -(* Copyright (C) 2021- Authors of Melange - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val ppxlib : ppx_config:Bsb_config_types.ppx_config -> Out_channel.t -> unit diff --git a/mel/bsb_real_path.ml b/mel/bsb_real_path.ml deleted file mode 100644 index d4c33d5eb0..0000000000 --- a/mel/bsb_real_path.ml +++ /dev/null @@ -1,50 +0,0 @@ -(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -let ( // ) = Filename.concat - -let normalize_exn (s : string) : string = - let old_cwd = Sys.getcwd () in - Unix.chdir s; - let normalized = Sys.getcwd () in - Unix.chdir old_cwd; - normalized - -let real_path p = - match Sys.is_directory p with - | exception _ -> - let rec resolve dir = - if Sys.file_exists dir then normalize_exn dir - else - let parent = Filename.dirname dir in - if dir = parent then dir else resolve parent // Filename.basename dir - in - let p = if Filename.is_relative p then Sys.getcwd () // p else p in - resolve p - | true -> normalize_exn p - | false -> ( - let dir = normalize_exn (Filename.dirname p) in - match Filename.basename p with "." -> dir | base -> dir // base) - -let is_same_paths_via_io a b = if a = b then true else real_path a = real_path b diff --git a/mel/bsb_real_path.mli b/mel/bsb_real_path.mli deleted file mode 100644 index 65a93ef7f8..0000000000 --- a/mel/bsb_real_path.mli +++ /dev/null @@ -1,25 +0,0 @@ -(* Copyright (C) 2020- Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val is_same_paths_via_io : string -> string -> bool diff --git a/mel/bsb_unix.ml b/mel/bsb_unix.ml deleted file mode 100644 index 332455a3a9..0000000000 --- a/mel/bsb_unix.ml +++ /dev/null @@ -1,65 +0,0 @@ -(* Copyright (C) 2015-2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -(* it assume you have permissions, so always catch it to fail - gracefully *) -let rec remove_dir_recursive dir = - match Sys.is_directory dir with - | true -> - let files = Sys.readdir dir in - for i = 0 to Array.length files - 1 do - remove_dir_recursive (Filename.concat dir (Array.unsafe_get files i)) - done; - Unix.rmdir dir - | false -> Sys.remove dir - | exception _ -> () - -let redirect = - Luv.Process. - [ - inherit_fd ~fd:stdout ~from_parent_fd:stdout (); - inherit_fd ~fd:stderr ~from_parent_fd:stderr (); - inherit_fd ~fd:stdin ~from_parent_fd:stdin (); - ] - -let default_on_exit (_ : Luv.Process.t) ~exit_status ~term_signal:(_ : int) = - exit (Int64.to_int exit_status) - -let dune_command ?(on_exit = default_on_exit) args = - Bsb_log.info "@{Running:@} %s@." (String.concat " " args); - match - Luv.Process.spawn ~on_exit ~redirect Literals.dune (Literals.dune :: args) - with - | Ok process -> process - | Error `ENOENT -> - Bsb_log.error - "@{Error:@} @{`dune`@} not found.@\n\ - Dune is required to build Melange projects.@."; - exit 2 - | Error e -> - Bsb_log.error - "@{Internal Error:@} @{%s@} (%s). Please report this \ - message.@." - (Luv.Error.err_name e) (Luv.Error.strerror e); - exit 2 diff --git a/mel/bsb_unix.mli b/mel/bsb_unix.mli deleted file mode 100644 index 00010e6bdf..0000000000 --- a/mel/bsb_unix.mli +++ /dev/null @@ -1,30 +0,0 @@ -(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val remove_dir_recursive : string -> unit - -val dune_command : - ?on_exit:(Luv.Process.t -> exit_status:int64 -> term_signal:int -> unit) -> - string list -> - Luv.Process.t diff --git a/mel/bsb_warning.ml b/mel/bsb_warning.ml deleted file mode 100644 index b8f0267e0a..0000000000 --- a/mel/bsb_warning.ml +++ /dev/null @@ -1,97 +0,0 @@ -(* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type warning_error = - | Warn_error_false - (* default [false] to make our changes non-intrusive *) - | Warn_error_true - | Warn_error_number of string - -type t0 = { number : string option; error : warning_error } -type nonrec t = t0 option - -let use_default = None - -let prepare_warning_concat ~(beg : bool) s = - let s = Ext_string.trim s in - if s = "" then s - else - match s.[0] with - | '0' .. '9' -> if beg then "-w +" ^ s else "+" ^ s - | 'a' .. 'z' -> if beg then "-w " ^ s else "-" ^ s - | 'A' .. 'Z' -> if beg then "-w " ^ s else "+" ^ s - | _ -> if beg then "-w " ^ s else s - -let to_merlin_string x = - "-w " ^ Bsc_warnings.defaults_w - ^ - let customize = - match x with - | Some { number = None } | None -> Ext_string.empty - | Some { number = Some x } -> prepare_warning_concat ~beg:false x - in - if customize = "" then customize else customize ^ "-40-42-61" -(* see #4406 to avoid user pass A - Sync up with {!Warnings.report} -*) - -let from_map (m : Ext_json_types.t Map_string.t) = - let number_opt = Map_string.find_opt m Bsb_build_schemas.number in - let error_opt = Map_string.find_opt m Bsb_build_schemas.error in - match (number_opt, error_opt) with - | None, None -> None - | _, _ -> - let error = - match error_opt with - | Some (True _) -> Warn_error_true - | Some (False _) -> Warn_error_false - | Some (Str { str }) -> Warn_error_number str - | Some x -> Bsb_exception.config_error x "expect true/false or string" - | None -> Warn_error_false - (* To make it less intrusive : warning error has to be enabled*) - in - let number = - match number_opt with - | Some (Str { str = number }) -> Some number - | None -> None - | Some x -> Bsb_exception.config_error x "expect a string" - in - Some { number; error } - -let to_bsb_string ~(package_kind : Bsb_package_kind.t) warning = - match package_kind with - | Toplevel -> ( - match warning with - | None -> Ext_string.empty - | Some warning -> ( - (match warning.number with - | None -> Ext_string.empty - | Some x -> prepare_warning_concat ~beg:true x) - ^ - match warning.error with - | Warn_error_true -> " -warn-error A" - | Warn_error_number y -> " -warn-error " ^ y - | Warn_error_false -> Ext_string.empty)) - | Dependency _ -> " -w a" -(* TODO: this is the current default behavior *) diff --git a/mel/bsb_warning.mli b/mel/bsb_warning.mli deleted file mode 100644 index d5c3ef923d..0000000000 --- a/mel/bsb_warning.mli +++ /dev/null @@ -1,36 +0,0 @@ -(* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type t - -val to_merlin_string : t -> string -(** Extra work is need to make merlin happy *) - -val from_map : Ext_json_types.t Map_string.t -> t - -val to_bsb_string : package_kind:Bsb_package_kind.t -> t -> string -(** [to_bsb_string not_dev warning] -*) - -val use_default : t diff --git a/mel/bsb_world.ml b/mel/bsb_world.ml deleted file mode 100644 index 04242fcef3..0000000000 --- a/mel/bsb_world.ml +++ /dev/null @@ -1,91 +0,0 @@ -(* Copyright (C) 2017- Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -let ( // ) = Ext_path.combine - -let install_targets dune_args = - Bsb_log.info "@{Installing started@}@."; - Bsb_unix.dune_command - ~on_exit:(fun _ ~exit_status ~term_signal:_ -> - Bsb_log.info "@{Installing finished@} @."; - exit (Int64.to_int exit_status)) - ("build" - :: (Literals.melange_eobjs_dir // Literals.sourcedirs_meta) - :: dune_args) - -(* Don't use package specs from config because it could be a dependency, which - gets the root's package specs. *) -let maybe_warn_about_dependencies_outside_workspace ~cwd - (config : Bsb_config_types.t) ~package_specs = - let is_path_outside_workspace { Bsb_config_types.package_path; _ } = - not - (Mel_workspace.is_dep_inside_workspace ~root_dir:cwd - ~package_dir:package_path) - in - let has_in_source = Bsb_package_specs.has_in_source package_specs in - if - has_in_source - && (Ext_list.exists config.bs_dependencies is_path_outside_workspace - || Ext_list.exists config.bs_dev_dependencies is_path_outside_workspace) - then - raise - (Bsb_exception.invalid_spec - "`in-source: true` is not currently supported when dependencies exist \ - outside the workspace.") - -let build_bs_deps cwd ~oc (deps : Bsb_package_specs.t) = - let queue = Bsb_build_util.walk_all_deps cwd in - Queue.fold - (fun (acc : _ list) ({ top; proj_dir } : Bsb_build_util.package_context) -> - match top with - | Expect_none -> acc - | Expect_name _ -> - let config : Bsb_config_types.t = - Bsb_config_parse.interpret_json ~package_kind:(Dependency deps) - ~per_proj_dir:proj_dir - in - maybe_warn_about_dependencies_outside_workspace ~cwd config - ~package_specs:deps; - Bsb_ninja_gen.output_ninja_and_namespace_map ~oc - ~per_proj_dir:proj_dir ~root_dir:cwd ~package_kind:(Dependency deps) - config; - config :: acc) - [] queue - -let make_world_deps ~cwd ~oc = - Bsb_log.info "Making the dependency world!@."; - let config : Bsb_config_types.t = - Bsb_config_parse.interpret_json ~package_kind:Toplevel ~per_proj_dir:cwd - in - maybe_warn_about_dependencies_outside_workspace ~cwd config - ~package_specs:config.package_specs; - - let deps = config.package_specs in - let dep_configs = build_bs_deps cwd ~oc deps in - let file_groups = ref [] in - Ext_list.iter (config :: dep_configs) - (fun (dep_config : Bsb_config_types.t) -> - file_groups := (dep_config.dir, dep_config.file_groups) :: !file_groups); - let source_meta = Source_metadata.create !file_groups in - ((config, dep_configs), source_meta) diff --git a/mel/bsb_world.mli b/mel/bsb_world.mli deleted file mode 100644 index 1b00c7c9c4..0000000000 --- a/mel/bsb_world.mli +++ /dev/null @@ -1,30 +0,0 @@ -(* Copyright (C) 2017- Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val install_targets : string list -> Luv.Process.t - -val make_world_deps : - cwd:string -> - oc:Out_channel.t -> - (Bsb_config_types.t * Bsb_config_types.t list) * Source_metadata.t diff --git a/mel/data_format.md b/mel/data_format.md deleted file mode 100644 index a47acf0f79..0000000000 --- a/mel/data_format.md +++ /dev/null @@ -1,24 +0,0 @@ - - -# format about lib/bs/.bsbuild - -This file (in binary) contains all file info needed in build. - -It is encoded in bsb_db_encode.ml and bsb_db_decode.ml, the format is optimized for performance in decoding where it is used most. - - -- The first 16 chars is digest of the following content - -The rest is encoding for each group (source code and test), in most cases, you have one group or two groups (one for lib one for test). - -Begining with a new line, the number of total groups (encoded in text format) are encoded. - - -For each group, it starts with a newline and the -number of modules (text format). - -The following are list of modules in sorted order (Ext_string.compare) separated by newline. - -The following are list of directories separated by tab character. - -The next is a fixed length for module description, its encoding is hard coded in Bsb_db_encode.make_encoding \ No newline at end of file diff --git a/mel/dune b/mel/dune deleted file mode 100644 index 0d496508a4..0000000000 --- a/mel/dune +++ /dev/null @@ -1,9 +0,0 @@ -(library - (name mellib) - (preprocess - (action - (run %{bin:cppo} %{env:CPPO_FLAGS=} %{input-file}))) - (modules_without_implementation bsb_config_types) - (flags - (:standard -w -9)) - (libraries mel_workspace bsb_helper common melange.ext str unix base64 luv)) diff --git a/mel/mel_rule.ml b/mel/mel_rule.ml deleted file mode 100644 index 398360d324..0000000000 --- a/mel/mel_rule.ml +++ /dev/null @@ -1,195 +0,0 @@ -(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type fn = ?target:string -> Out_channel.t -> unit - -let ( // ) = Ext_path.combine - -let mk_ml_cmj_cmd ~(global_config : Bsb_ninja_global_vars.t) ~package_specs - ?intf_suffix ~kind ~is_dev oc ?(target = "%{targets}") cur_dir = - let package_name = global_config.package_name in - let ns_flag = - match global_config.namespace with None -> "" | Some n -> " -bs-ns " ^ n - in - let rel_incls ?namespace dirs = - Bsb_build_util.rel_include_dirs ~package_name - ~root_dir:global_config.root_dir ~per_proj_dir:global_config.per_proj_dir - ~cur_dir ?namespace dirs - in - output_string oc "(action\n "; - output_string oc " (run "; - output_string oc global_config.bsc; - output_string oc ns_flag; - if not global_config.has_builtin then output_string oc " -nostdlib"; - Option.iter - (fun intf_suffix -> - output_string oc " -intf-suffix "; - output_string oc intf_suffix) - intf_suffix; - if is_dev && global_config.g_dev_incls <> [] then ( - let dev_incls = rel_incls global_config.g_dev_incls in - output_string oc " "; - output_string oc dev_incls); - output_string oc " -bs-legacy "; - output_string oc (rel_incls global_config.g_sourcedirs_incls); - output_string oc " "; - output_string oc - (rel_incls ?namespace:global_config.namespace global_config.g_lib_incls); - if is_dev then ( - output_string oc " "; - output_string oc (rel_incls global_config.g_dpkg_incls)); - output_char oc ' '; - output_string oc global_config.bsc_flags; - output_string oc " "; - output_string oc global_config.warnings; - - (match kind with - | `intf -> () - | _ -> - output_string oc " -bs-package-name "; - output_string oc (Ext_filename.maybe_quote global_config.package_name); - output_string oc - (Bsb_package_specs.package_flag_of_package_specs package_specs - ~dirname:cur_dir)); - - Option.iter - (fun gentypeconfig -> - output_string oc " "; - output_string oc gentypeconfig) - global_config.gentypeconfig; - output_string oc " -o "; - output_string oc target; - output_string oc " %{inputs}"; - output_string oc "))" - -let cm_file = mk_ml_cmj_cmd ~is_dev:false ~kind:`impl -let cm_file_dev = mk_ml_cmj_cmd ~is_dev:true ~kind:`impl -let cmi_file = mk_ml_cmj_cmd ~is_dev:false ~kind:`intf ?intf_suffix:None -let cmi_file_dev = mk_ml_cmj_cmd ~is_dev:true ~kind:`intf ?intf_suffix:None - -let process_rescript oc = - output_string oc - {|(action - (with-stdout-to %{targets} - (run rescript_syntax -print=binary %{inputs})))|} - -let process_reason oc = - output_string oc - {|(action - (with-stdout-to %{targets} - (run refmt --print=binary %{inputs})))|} - -let ast (global_config : Bsb_ninja_global_vars.t) oc cur_dir = - let rel_artifacts_dir = - Mel_workspace.rel_artifacts_dir ~package_name:global_config.package_name - ~root_dir:global_config.root_dir ~proj_dir:global_config.per_proj_dir - cur_dir - in - output_string oc "(action\n (run "; - output_string oc global_config.bsc; - output_string oc " -bs-legacy "; - output_string oc global_config.warnings; - (match global_config.ppx_config with - | Bsb_config_types.{ ppxlib = []; ppx_files = [] } -> () - | _not_empty -> - output_char oc ' '; - output_string oc - (Bsb_build_util.ppx_flags ~artifacts_dir:rel_artifacts_dir - global_config.ppx_config)); - (match global_config.pp_file with - | None -> () - | Some flag -> - output_char oc ' '; - output_string oc (Bsb_build_util.pp_flag flag)); - - output_char oc ' '; - output_string oc global_config.bsc_flags; - output_string oc " -absname -bs-ast -o %{targets} %{inputs}"; - output_string oc "))" - -let meldep, meldep_dev = - let meldep ~is_dev (global_config : Bsb_ninja_global_vars.t) oc cur_dir = - let virtual_proj_dir = - Mel_workspace.virtual_proj_dir ~root_dir:global_config.root_dir - ~package_dir:global_config.per_proj_dir - ~package_name:global_config.package_name - in - let root = - Ext_path.rel_normalized_absolute_path - ~from:(virtual_proj_dir // cur_dir) - global_config.root_dir - in - let rel_proj_dir = - Ext_path.rel_normalized_absolute_path - ~from:(virtual_proj_dir // cur_dir) - virtual_proj_dir - in - let ns_flag = - match global_config.namespace with None -> "" | Some n -> " -bs-ns " ^ n - in - let s = - Format.asprintf - "(action (run %s %s -root-dir %s -p %s -proj-dir %s %s %%{inputs}))" - global_config.bsdep - (if is_dev then "-g" else "") - root global_config.package_name rel_proj_dir ns_flag - in - output_string oc s - in - (meldep ~is_dev:false, meldep ~is_dev:true) - -let namespace (global_config : Bsb_ninja_global_vars.t) oc = - let s = - global_config.bsc - ^ " -bs-legacy -w -49 -color always -no-alias-deps %{inputs}" - in - output_string oc "(action (run "; - output_string oc s; - output_string oc "))" - -module Generators = struct - let regexp = Str.regexp "\\(\\$in\\)\\|\\(\\$out\\)" - - let maybe_match ~group s = - match Str.matched_group group s with - | matched -> Some matched - | exception Not_found -> None -end - -let generators custom_rules = - Map_string.mapi custom_rules (fun _name command oc -> - let actual_command = - Str.global_substitute Generators.regexp - (fun match_ -> - match - Generators. - (maybe_match ~group:1 match_, maybe_match ~group:2 match_) - with - | Some _, None -> "%{inputs}" - | None, Some _ -> "%{targets}" - | _ -> assert false) - command - in - let s = Format.asprintf "(action (system %S))" actual_command in - output_string oc s) diff --git a/mel/mel_rule.mli b/mel/mel_rule.mli deleted file mode 100644 index e0bc89ea67..0000000000 --- a/mel/mel_rule.mli +++ /dev/null @@ -1,71 +0,0 @@ -(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P. - * Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -(* The complexity comes from the fact that we allow custom rules which could - conflict with our custom built-in rules -*) -type fn = ?target:string -> Out_channel.t -> unit - -(******************************) -val cm_file : - global_config:Bsb_ninja_global_vars.t -> - package_specs:Bsb_package_specs.t -> - ?intf_suffix:string -> - out_channel -> - ?target:string -> - string -> - unit - -val cm_file_dev : - global_config:Bsb_ninja_global_vars.t -> - package_specs:Bsb_package_specs.t -> - ?intf_suffix:string -> - out_channel -> - ?target:string -> - string -> - unit - -val cmi_file : - global_config:Bsb_ninja_global_vars.t -> - package_specs:Bsb_package_specs.t -> - out_channel -> - ?target:string -> - string -> - unit - -val cmi_file_dev : - global_config:Bsb_ninja_global_vars.t -> - package_specs:Bsb_package_specs.t -> - out_channel -> - ?target:string -> - string -> - unit - -val process_reason : out_channel -> unit -val process_rescript : out_channel -> unit -val ast : Bsb_ninja_global_vars.t -> out_channel -> string -> unit -val meldep : Bsb_ninja_global_vars.t -> out_channel -> string -> unit -val meldep_dev : Bsb_ninja_global_vars.t -> out_channel -> string -> unit -val namespace : Bsb_ninja_global_vars.t -> out_channel -> unit -val generators : string Map_string.t -> (out_channel -> unit) Map_string.t diff --git a/mel/source_metadata.ml b/mel/source_metadata.ml deleted file mode 100644 index 50b7f14458..0000000000 --- a/mel/source_metadata.ml +++ /dev/null @@ -1,72 +0,0 @@ -(* Copyright (C) 2017- Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type t = { - dirs : string list; - generated : string list; - pkgs : (string * string) list; -} - -let kvs = Ext_json_noloc.kvs -let arr = Ext_json_noloc.arr -let str = Ext_json_noloc.str - -let create (file_groups : (string * Bsb_file_groups.t) list) = - let pkgs = Hashtbl.create 10 in - let dirs, generated = - Ext_list.fold_left file_groups ([], []) - (fun (dirs, _generated) (proj_dir, { files }) -> - let dirs = - Ext_list.append dirs - (Ext_list.map files (fun x -> Ext_path.combine proj_dir x.dir)) - in - let generated = - Ext_list.fold_left files [] (fun acc x -> - Ext_list.flat_map_append x.generators acc (fun x -> - Ext_list.map (x.input @ x.output) (fun x -> - Ext_path.combine proj_dir x))) - in - let (_ : unit list) = - Bsb_pkg.to_list (fun pkg path -> - let pkg = Bsb_pkg_types.to_string pkg in - if not (Hashtbl.mem pkgs pkg) then Hashtbl.add pkgs pkg path) - in - (dirs, generated)) - in - { dirs; generated; pkgs = Hashtbl.to_seq pkgs |> List.of_seq } - -let to_json t = - let { dirs; generated; pkgs } = t in - kvs - [ - ("dirs", arr (Ext_array.of_list_map dirs str)); - ("generated", arr (Ext_array.of_list_map generated str)); - ( "pkgs", - arr - (Array.of_list - (Ext_list.fold_left pkgs [] (fun acc (pkg, path) -> - arr [| str pkg; str path |] :: acc))) ); - ] - -let to_file ~name t = Ext_json_noloc.to_file name (to_json t) diff --git a/mel/source_metadata.mli b/mel/source_metadata.mli deleted file mode 100644 index 9a6125527a..0000000000 --- a/mel/source_metadata.mli +++ /dev/null @@ -1,42 +0,0 @@ -(* Copyright (C) 2017- Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type t = private { - dirs : string list; - generated : string list; - pkgs : (string * string) list; -} - -val create : (string * Bsb_file_groups.t) list -> t -(** This module try to generate some meta data so that - everytime [bsconfig.json] is reload, we can re-read - such meta data changes in the watcher. - - Another way of doing it is processing [bsconfig.json] - directly in [watcher] but that would - mean the duplication of logic in [bsb] and [bsb_watcher] -*) - -val to_json : t -> Ext_json_noloc.t -val to_file : name:string -> t -> unit diff --git a/mel_test/dune b/mel_test/dune deleted file mode 100644 index 448e84b12a..0000000000 --- a/mel_test/dune +++ /dev/null @@ -1,6 +0,0 @@ -(test - (package mel) - (name mel_test) - (flags - (:standard -w -9 -open Melange_compiler_libs)) - (libraries ounit2 ext mellib core melange-compiler-libs)) diff --git a/mel_test/mel_test.ml b/mel_test/mel_test.ml deleted file mode 100644 index 291f543502..0000000000 --- a/mel_test/mel_test.ml +++ /dev/null @@ -1,9 +0,0 @@ -module Int_array = Vec.Make (struct - type t = int - - let null = 0 -end) - -let ( >::: ) = OUnit.(( >::: )) -let suites = __FILE__ >::: [ Ounit_bsb_pkg_tests.suites ] -let _ = OUnit.run_test_tt_main suites diff --git a/mel_test/ounit_bsb_pkg_tests.ml b/mel_test/ounit_bsb_pkg_tests.ml deleted file mode 100644 index 11a3378d18..0000000000 --- a/mel_test/ounit_bsb_pkg_tests.ml +++ /dev/null @@ -1,110 +0,0 @@ -open Mellib -module Bsb_db_decode = Bsb_helper.Bsb_db_decode - -let ( >:: ), ( >::: ) = OUnit.(( >:: ), ( >::: )) -let printer_string x = x -let ( =~ ) = OUnit.assert_equal ~printer:printer_string - -let scope_test s (a, b, c) = - match Bsb_pkg_types.extract_pkg_name_and_file s with - | Scope (a0, b0), c0 -> - a =~ a0; - b =~ b0; - c =~ c0 - | Global _, _ -> OUnit.assert_failure __LOC__ - -let global_test s (a, b) = - match Bsb_pkg_types.extract_pkg_name_and_file s with - | Scope _, _ -> OUnit.assert_failure __LOC__ - | Global a0, b0 -> - a =~ a0; - b =~ b0 - -let s_test0 s (a, b) = - match Bsb_pkg_types.string_as_package s with - | Scope (name, scope) -> - a =~ name; - b =~ scope - | _ -> OUnit.assert_failure __LOC__ - -let s_test1 s a = - match Bsb_pkg_types.string_as_package s with - | Global x -> a =~ x - | _ -> OUnit.assert_failure __LOC__ - -let group0 = - Map_string.of_list - [ - ( "Liba", - { - Bsb_db.info = Impl_intf; - dir = Same "a"; - syntax_kind = Same Ml; - case = false; - name_sans_extension = "liba"; - } ); - ] - -let group1 = - Map_string.of_list - [ - ( "Ciba", - { - Bsb_db.info = Impl_intf; - dir = Same "b"; - syntax_kind = Same Ml; - case = false; - name_sans_extension = "liba"; - } ); - ] - -let parse_db db : Bsb_db_decode.t = - let buf = Buffer.create 10_000 in - Bsb_db_encode.encode db buf; - let s = Buffer.contents buf in - Bsb_db_decode.decode s - -let suites = - __FILE__ - >::: [ - ( __LOC__ >:: fun _ -> - scope_test "@hello/hi" ("hi", "@hello", ""); - - scope_test "@hello/hi/x" ("hi", "@hello", "x"); - - scope_test "@hello/hi/x/y" ("hi", "@hello", "x/y") ); - ( __LOC__ >:: fun _ -> - global_test "hello" ("hello", ""); - global_test "hello/x" ("hello", "x"); - global_test "hello/x/y" ("hello", "x/y") ); - ( __LOC__ >:: fun _ -> - s_test0 "@x/y" ("y", "@x"); - s_test0 "@x/y/z" ("y/z", "@x"); - s_test1 "xx" "xx"; - s_test1 "xx/yy/zz" "xx/yy/zz" ); - ( __LOC__ >:: fun _ -> - match parse_db { lib = group0; dev = group1 } with - | { - lib = Group { modules = [| "Liba" |] }; - dev = Group { modules = [| "Ciba" |] }; - } -> - OUnit.assert_bool __LOC__ true - | _ -> OUnit.assert_failure __LOC__ ); - ( __LOC__ >:: fun _ -> - match parse_db { lib = group0; dev = Map_string.empty } with - | { lib = Group { modules = [| "Liba" |] }; dev = Dummy } -> - OUnit.assert_bool __LOC__ true - | _ -> OUnit.assert_failure __LOC__ ); - ( __LOC__ >:: fun _ -> - match parse_db { lib = Map_string.empty; dev = group1 } with - | { lib = Dummy; dev = Group { modules = [| "Ciba" |] } } -> - OUnit.assert_bool __LOC__ true - | _ -> OUnit.assert_failure __LOC__ ) - (* __LOC__ >:: begin fun _ -> - OUnit.assert_equal parse_data_one data_one - end ; - __LOC__ >:: begin fun _ -> - - OUnit.assert_equal parse_data_two data_two - end *); - ] diff --git a/mel_workspace/dune b/mel_workspace/dune deleted file mode 100644 index bcfc53c63e..0000000000 --- a/mel_workspace/dune +++ /dev/null @@ -1,6 +0,0 @@ -(library - (name mel_workspace) - (preprocess - (action - (run %{bin:cppo} %{env:CPPO_FLAGS=} %{input-file}))) - (libraries melange.ext unix)) diff --git a/mel_workspace/mel_workspace.ml b/mel_workspace/mel_workspace.ml deleted file mode 100644 index eec686d35f..0000000000 --- a/mel_workspace/mel_workspace.ml +++ /dev/null @@ -1,79 +0,0 @@ -(* Copyright (C) 2022- Authors of Melange - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -let ( // ) = Filename.concat -let cwd = Sys.getcwd () - -let dune_build_dir = - lazy - (match Sys.getenv_opt "DUNE_BUILD_DIR" with - | Some value -> value // "default" - | None -> "_build" // "default") - -let ppx_exe = "ppx.exe" - -let is_dep_inside_workspace ~root_dir ~package_dir = - String.starts_with ~prefix:root_dir package_dir - -let to_workspace_proj_dir ~package_name = Literals.node_modules // package_name - -let virtual_proj_dir ~root_dir ~package_dir ~package_name = - if is_dep_inside_workspace ~root_dir ~package_dir then package_dir - else root_dir // to_workspace_proj_dir ~package_name - -let absolute_artifacts_dir ?(include_dune_build_dir = false) ~package_name - ~root_dir proj_dir = - if not (is_dep_inside_workspace ~root_dir ~package_dir:proj_dir) then - if include_dune_build_dir then - root_dir // Lazy.force dune_build_dir // Literals.melange_eobjs_dir - // to_workspace_proj_dir ~package_name - else - root_dir // Literals.melange_eobjs_dir - // to_workspace_proj_dir ~package_name - else - let rel_package_dir_from_root = - Ext_path.rel_normalized_absolute_path ~from:root_dir proj_dir - in - let path = - if include_dune_build_dir then - root_dir // Lazy.force dune_build_dir // Literals.melange_eobjs_dir - // rel_package_dir_from_root - else root_dir // Literals.melange_eobjs_dir // rel_package_dir_from_root - in - Ext_path.normalize_absolute_path path - -let rel_artifacts_dir ?include_dune_build_dir ~package_name ~root_dir ~proj_dir - from = - let proj_dir = - virtual_proj_dir ~root_dir ~package_dir:proj_dir ~package_name - in - let absolute = - absolute_artifacts_dir ?include_dune_build_dir ~package_name ~root_dir - proj_dir - in - let from = if Filename.is_relative from then proj_dir // from else from in - Ext_path.rel_normalized_absolute_path ~from absolute - -let rel_root_artifacts_dir ~root_dir from = - rel_artifacts_dir ~package_name:"root" ~root_dir ~proj_dir:root_dir from diff --git a/mel_workspace/mel_workspace.mli b/mel_workspace/mel_workspace.mli deleted file mode 100644 index da4dc3e0e3..0000000000 --- a/mel_workspace/mel_workspace.mli +++ /dev/null @@ -1,49 +0,0 @@ -(* Copyright (C) 2022- Authors of Melange - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val cwd : string -val is_dep_inside_workspace : root_dir:string -> package_dir:string -> bool -val to_workspace_proj_dir : package_name:string -> string - -val virtual_proj_dir : - root_dir:string -> package_dir:string -> package_name:string -> string - -val absolute_artifacts_dir : - ?include_dune_build_dir:bool -> - package_name:string -> - root_dir:string -> - string -> - string - -val rel_artifacts_dir : - ?include_dune_build_dir:bool -> - package_name:string -> - root_dir:string -> - proj_dir:string -> - string -> - string - -val rel_root_artifacts_dir : root_dir:string -> string -> string -val dune_build_dir : string Lazy.t -val ppx_exe : string diff --git a/meldep/bsb_db_decode.ml b/meldep/bsb_db_decode.ml deleted file mode 100644 index afa2bbeb06..0000000000 --- a/meldep/bsb_db_decode.ml +++ /dev/null @@ -1,134 +0,0 @@ -(* Copyright (C) 2019 - Present Hongbo Zhang, Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type group = - | Dummy - | Group of { - modules : string array; - dir_length : int; - dir_info_offset : int; - module_info_offset : int; - } - -type t = { - lib : group; - dev : group; - content : string; (* string is whole content*) -} - -type cursor = int ref - -let decode_modules (x : string) (offset : cursor) module_number : string array = - let result = Array.make module_number "" in - let last = ref !offset in - let cur = ref !offset in - let tasks = ref 0 in - while !tasks <> module_number do - if String.unsafe_get x !cur = '\n' then ( - let offs = !last in - let len = !cur - !last in - Array.unsafe_set result !tasks (Ext_string.unsafe_sub x offs len); - incr tasks; - last := !cur + 1); - incr cur - done; - offset := !cur; - result - -let decode_single (x : string) (offset : cursor) : group = - let module_number = Ext_pervasives.parse_nat_of_string x offset in - incr offset; - if module_number <> 0 then ( - let modules = decode_modules x offset module_number in - let dir_info_offset = !offset in - let module_info_offset = String.index_from x dir_info_offset '\n' + 1 in - let dir_length = Char.code x.[module_info_offset] - 48 (* Char.code '0'*) in - offset := module_info_offset + 1 + (dir_length * module_number) + 1; - Group { modules; dir_info_offset; module_info_offset; dir_length }) - else Dummy - -(*TODO: special case when module_count is zero *) -let decode (x : string) : t = - let x = Base64.decode_exn x in - let (offset : cursor) = ref 0 in - let lib = decode_single x offset in - let dev = decode_single x offset in - { lib; dev; content = x } - -(* TODO: shall we check the consistency of digest *) -let read_build_cache ~dir : t = - let all_content = - Ext_io.load_file (Filename.concat dir Literals.bsbuild_cache) - in - decode all_content - -type module_info = { case : bool; (* which is Bsb_db.case*) dir_name : string } - -let find_opt ({ content = whole; _ } as db : t) ~(kind : [ `impl | `intf ]) lib - (key : string) : module_info option = - match if lib then db.lib else db.dev with - | Dummy -> None - | Group ({ modules; _ } as group) -> ( - let i = Ext_string_array.find_sorted modules key in - let i = - match i with - | Some _ -> i - | None -> - let suffix = - match kind with - | `impl -> Literals.suffix_impl - | `intf -> Literals.suffix_intf - in - Ext_string_array.find_sorted modules (key ^ suffix) - in - match i with - | None -> None - | Some count -> - let encode_len = group.dir_length in - let index = - Ext_string.get_1_2_3_4 whole - ~off:(group.module_info_offset + 1 + (count * encode_len)) - encode_len - in - let case = not (index mod 2 = 0) in - let ith = index lsr 1 in - let dir_name_start = - if ith = 0 then group.dir_info_offset - else Ext_string.index_count whole group.dir_info_offset '\t' ith + 1 - in - let dir_name_finish = String.index_from whole dir_name_start '\t' in - Some - { - case; - dir_name = - String.sub whole dir_name_start - (dir_name_finish - dir_name_start); - }) - -let find db ~(kind : [ `impl | `intf ]) dependent_module is_not_lib_dir = - let opt = find_opt db ~kind true dependent_module in - match opt with - | Some _ -> opt - | None -> - if is_not_lib_dir then find_opt ~kind db false dependent_module else None diff --git a/meldep/bsb_db_decode.mli b/meldep/bsb_db_decode.mli deleted file mode 100644 index 029e724be7..0000000000 --- a/meldep/bsb_db_decode.mli +++ /dev/null @@ -1,54 +0,0 @@ -(* Copyright (C) 2019 - Present Authors of ReScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type group = private - | Dummy - | Group of { - modules : string array; - dir_length : int; - dir_info_offset : int; - module_info_offset : int; - } - -type t = { - lib : group; - dev : group; - content : string; (* string is whole content*) -} - -val read_build_cache : dir:string -> t - -type module_info = { case : bool; (* Bsb_db.case*) dir_name : string } - -val find : - t -> - (* contains global info *) - kind:[ `impl | `intf ] -> - string -> - (* module name *) - bool -> - (* more likely to be zero *) - module_info option - -val decode : string -> t diff --git a/meldep/bsb_helper_depfile_gen.ml b/meldep/bsb_helper_depfile_gen.ml deleted file mode 100644 index 54caf59abe..0000000000 --- a/meldep/bsb_helper_depfile_gen.ml +++ /dev/null @@ -1,124 +0,0 @@ -(* Copyright (C) 2015-2016 Bloomberg Finance L.P. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -let ( // ) = Ext_path.combine - -let write_file name buf = - let oc = open_out_bin name in - Buffer.output_buffer oc buf; - close_out oc - -(* return an non-decoded string *) -let extract_dep_raw_string (fn : string) : string = - let ic = open_in_bin fn in - let size = input_binary_int ic in - let s = really_input_string ic size in - close_in ic; - s - -(* Make sure it is the same as {!Binary_ast.magic_sep_char}*) -let magic_sep_char = '\n' - -let encode_cm_file ~ext ?namespace source = - Ext_namespace.encode ?ns:namespace source ^ ext - -(* For cases with self cycle - e.g, in b.ml - {[ - include B - ]} - When ns is not turned on, it makes sense that b may come from third party package. - Hoever, this case is wont supported. - It complicates when it has interface file or not. - - if it has interface file, the current interface will have priority, failed to build? - - if it does not have interface file, the build will not open this module at all(-bs-read-cmi) - - When ns is turned on, `B` is interprted as `Ns-B` which is a cyclic dependency, - it can be errored out earlier -*) -let oc_deps ~deps (ast_file : string) (is_dev : bool) (db : Bsb_db_decode.t) - (namespace : string option) (kind : [ `impl | `intf ]) : unit = - let cur_module_name = Ext_filename.module_name ast_file in - let s = extract_dep_raw_string ast_file in - let offset = ref 1 in - let size = String.length s in - while !offset < size do - let next_tab = String.index_from s !offset magic_sep_char in - let dependent_module = String.sub s !offset (next_tab - !offset) in - if dependent_module = cur_module_name then ( - prerr_endline ("FAILED: " ^ cur_module_name ^ " has a self cycle"); - exit 2); - (match - ( Bsb_db_decode.find db ~kind:`impl dependent_module is_dev, - Bsb_db_decode.find db ~kind:`intf dependent_module is_dev ) - with - | None, None -> () - | Some _, None | None, Some _ -> assert false - | ( Some { dir_name = impl_dir_name; case }, - Some { dir_name = intf_dir_name; _ } ) -> - let module_basename = - if case then dependent_module - else Ext_string.uncapitalize_ascii dependent_module - in - if kind = `impl then - deps := - Set_string.add !deps - (encode_cm_file ?namespace ~ext:Literals.suffix_cmj - (impl_dir_name // module_basename)); - (* #3260 cmj changes does not imply cmi change anymore *) - deps := - Set_string.add !deps - (encode_cm_file ?namespace ~ext:Literals.suffix_cmi - (intf_dir_name // module_basename))); - offset := next_tab + 1 - done - -let process_deps_for_dune ~proj_dir ~cur_dir deps = - let rel_deps = - Ext_list.map deps (fun dep -> - Ext_path.rel_normalized_absolute_path ~from:(proj_dir // cur_dir) - (proj_dir // dep)) - in - String.concat " " rel_deps - -let emit_d ~package_name ~root_dir ~proj_dir ~(is_dev : bool) - (namespace : string option) (mlast : string) (mliast : string) = - let cur_dir = Mel_workspace.cwd in - let root_dir = Ext_path.normalize_absolute_path (cur_dir // root_dir) in - let proj_dir = Ext_path.normalize_absolute_path (cur_dir // proj_dir) in - let rel_artifacts_dir = - Mel_workspace.rel_artifacts_dir ~package_name ~root_dir ~proj_dir cur_dir - in - let data = Bsb_db_decode.read_build_cache ~dir:rel_artifacts_dir in - let deps = ref Set_string.empty in - let filename = Ext_filename.new_extension mlast Literals.suffix_d in - oc_deps ~deps mlast is_dev data namespace `impl; - if mliast <> "" then oc_deps ~deps mliast is_dev data namespace `intf; - let deps = Set_string.elements !deps in - let buf = Buffer.create 2048 in - Buffer.add_string buf "("; - let deps = process_deps_for_dune ~proj_dir ~cur_dir deps in - Buffer.add_string buf deps; - Buffer.add_string buf ")"; - write_file filename buf diff --git a/meldep/bsb_helper_depfile_gen.mli b/meldep/bsb_helper_depfile_gen.mli deleted file mode 100644 index b54332f8aa..0000000000 --- a/meldep/bsb_helper_depfile_gen.mli +++ /dev/null @@ -1,34 +0,0 @@ -(* Copyright (C) 2015-2016 Bloomberg Finance L.P. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -val emit_d : - package_name:string -> - root_dir:string -> - proj_dir:string -> - is_dev:bool -> - string option -> - string -> - string -> - (* empty string means no mliast *) - unit diff --git a/meldep/dune b/meldep/dune deleted file mode 100644 index 1560e77ca6..0000000000 --- a/meldep/dune +++ /dev/null @@ -1,11 +0,0 @@ -(library - (name bsb_helper) - (modules bsb_db_decode bsb_helper_depfile_gen) - (libraries base64 mel_workspace unix str)) - -(executable - (public_name meldep) - (package melange) - (modes native) - (modules meldep) - (libraries bsb_helper cmdliner)) diff --git a/meldep/meldep.ml b/meldep/meldep.ml deleted file mode 100644 index e5b29bd4a8..0000000000 --- a/meldep/meldep.ml +++ /dev/null @@ -1,78 +0,0 @@ -(* Copyright (C) 2015-2016 Bloomberg Finance L.P. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -open Bsb_helper -open Cmdliner - -let root_dir = - let doc = "Directory for the project root" in - let docv = "dir" in - Arg.(required & opt (some string) None & info [ "root-dir" ] ~doc ~docv) - -let proj_dir = - let doc = "Directory for the current package being built" in - let docv = "dir" in - Arg.(required & opt (some string) None & info [ "proj-dir" ] ~doc ~docv) - -let namespace = - let doc = "Melange namespace for the current dependency" in - let docv = "namespace" in - Arg.(value & opt (some string) None & info [ "n"; "bs-ns" ] ~doc ~docv) - -let package_name = - let doc = "Melange namespace for the current dependency" in - let docv = "namespace" in - Arg.( - required & opt (some string) None & info [ "p"; "package-name" ] ~doc ~docv) - -let dev = - let doc = "Whether we're building in dev mode" in - Arg.(value & flag & info [ "g" ] ~doc) - -let filenames = - let docv = "filenames" in - Arg.(value & pos_all string [] & info [] ~docv) - -let main root_dir proj_dir namespace package_name is_dev filenames = - let impl, intf = - match filenames with - | [ impl; intf ] -> (impl, intf) - | [ impl ] -> (impl, "") - | _ -> assert false - in - Bsb_helper_depfile_gen.emit_d ~package_name ~root_dir ~proj_dir ~is_dev - namespace impl intf - -let cmd = - let term = - Term.( - const main $ root_dir $ proj_dir $ namespace $ package_name $ dev - $ filenames) - in - let info = Cmd.info "meldep" in - Cmd.v info term - -let () = - let argv = Ext_cli_args.normalize_argv Sys.argv in - exit (Cmdliner.Cmd.eval ~argv cmd) diff --git a/nix/ci/test.nix b/nix/ci/test.nix index 6e0304eece..edfb9619db 100644 --- a/nix/ci/test.nix +++ b/nix/ci/test.nix @@ -62,7 +62,6 @@ stdenv.mkDerivation { buildInputs = [ nodePackages.mocha packages.melange - packages.mel packages.reactjs-jsx-ppx packages.rescript-syntax ocamlPackages.reason @@ -73,19 +72,11 @@ stdenv.mkDerivation { checkPhase = '' cat > dune-project < x.ml < let nothing = Belt.List.map [] (fun x -> x) > let () = Js.log nothing