From b2916373552be9db7a00a220b64bd619367af6cf Mon Sep 17 00:00:00 2001 From: Kilian Saffran Date: Tue, 2 Apr 2019 10:02:06 +0200 Subject: [PATCH] service added --- .gitignore | 3 + Module/GISFiles.pm | 9 +- access.log | 81 ++++++++++++++ build/build_gisservicehelper.bat | 9 +- dist/gisservicehelper.exe | Bin 15837631 -> 15879285 bytes dist/gisservicehelper.json | 6 ++ dist/gisservicehelper.pid | 1 - error.log | 17 +++ gisservicehelper.json | 5 + gisservicehelper.pl | 179 ++++++++++++++++++++++--------- htdocs/img/SOLINF_WEB_72DPI.png | Bin 0 -> 5948 bytes 11 files changed, 256 insertions(+), 54 deletions(-) delete mode 100644 dist/gisservicehelper.pid create mode 100644 htdocs/img/SOLINF_WEB_72DPI.png diff --git a/.gitignore b/.gitignore index 5781a7d..667f8d6 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ dev/testfiles/* build/deps.txt test/* .vscode/* +access.log +error.log + diff --git a/Module/GISFiles.pm b/Module/GISFiles.pm index 377de2b..f0852f9 100644 --- a/Module/GISFiles.pm +++ b/Module/GISFiles.pm @@ -112,17 +112,18 @@ sub getfile(){ } my $ret = ""; $basefname = basename($file); - if (-e $self->{gis}->{filesbasepath}.'/'.$file){ - my $mtf = $mt->mimeTypeOf($self->{gis}->{filesbasepath}.'/'.$file); + my $dldfile = encode("iso-8859-1",$self->{gis}->{filesbasepath}.'/'.$file); + if (-e $dldfile){ + my $mtf = $mt->mimeTypeOf($dldfile); my $mt = (exists($mtf->{MT_simplified})?$mtf->{MT_simplified}:'application/x-download'); - open my $bin_fh, '<', $self->{gis}->{filesbasepath}.'/'.$file or die $!; + open my $bin_fh, '<', $dldfile or die $!; return [ $status, [ 'Content-Type' => $mt,'Content-Disposition' =>'attachment; filename='.$basefname,'Cache-Control' => 'no-store, no-cache, must-revalidate', 'Access-Control-Allow-Origin'=> '*' ], $bin_fh ]; } else { - $ret = "File: ".$self->{gis}->{filesbasepath}.'/'.$file." does not FOUND!"; + $ret = "File: ".$dldfile." does not FOUND!"; return [ 404, [ 'Content-Type' => "text/html",'Cache-Control' => 'no-store, no-cache, must-revalidate' ], diff --git a/access.log b/access.log index 9eefbfe..c25f91e 100644 --- a/access.log +++ b/access.log @@ -60,3 +60,84 @@ 127.0.0.1 - - [13/Mar/2019:12:58:13 +0100] "GET /gis/file?file=2003%2F000008%2FIMAGES%2F1d9o7yjylthtj2hva4p0.docx HTTP/1.1" 200 9926 "http://localhost:6060/index.html?path=2003/000008/IMAGES" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763" 127.0.0.1 - - [13/Mar/2019:13:05:38 +0100] "GET /gis/path?dir=2003/000008/IMAGES HTTP/1.1" 200 328 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763" 127.0.0.1 - - [13/Mar/2019:13:05:51 +0100] "GET /gis/path?dir=2003/000008 HTTP/1.1" 200 101 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763" +127.0.0.1 - - [29/Mar/2019:08:00:33 +0100] "GET /index.html HTTP/1.1" 200 1447 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:00:33 +0100] "GET /vendor/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 155758 "http://localhost:6060/index.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:00:33 +0100] "GET /vendor/jquery/jquery.min.js HTTP/1.1" 200 86927 "http://localhost:6060/index.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:00:33 +0100] "GET /js/site.js HTTP/1.1" 200 6522 "http://localhost:6060/index.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:00:33 +0100] "GET /vendor/bootstrap/js/bootstrap.bundle.min.js HTTP/1.1" 200 78635 "http://localhost:6060/index.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:00:33 +0100] "GET /gis/fournisseurs HTTP/1.1" 200 136 "http://localhost:6060/index.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:00:33 +0100] "GET /favicon.ico HTTP/1.1" 404 9 "http://localhost:6060/index.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:00:35 +0100] "GET /index.html?fournisseur=1 HTTP/1.1" 200 1447 "http://localhost:6060/index.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:00:35 +0100] "GET /gis/data?fournisseur=1 HTTP/1.1" 200 116637 "http://localhost:6060/index.html?fournisseur=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:00:38 +0100] "GET /index.html?path=1983%2F000009 HTTP/1.1" 200 1447 "http://localhost:6060/index.html?fournisseur=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:00:38 +0100] "GET /gis/path?dir=1983%2F000009 HTTP/1.1" 200 38 "http://localhost:6060/index.html?path=1983%2F000009" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:00:40 +0100] "GET /gis/data?fournisseur=1 HTTP/1.1" 200 116637 "http://localhost:6060/index.html?fournisseur=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:00:59 +0100] "GET /index.html?fournisseur=1&adresse=L-8036%20STRASSEN%2C%2023%20%2C%20CITE%20ORICHER-HOEHL HTTP/1.1" 200 1447 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:00:59 +0100] "GET /gis/data?fournisseur=1&adresse=L-8036%20STRASSEN%2C%2023%20%2C%20CITE%20ORICHER-HOEHL HTTP/1.1" 200 399 "http://localhost:6060/index.html?fournisseur=1&adresse=L-8036%20STRASSEN%2C%2023%20%2C%20CITE%20ORICHER-HOEHL" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:01:56 +0100] "GET /index.html?fournisseur=1&adresse=L-8036%20STRASSEN,%2023%20,%20CITE%20ORICHER-HOEHL HTTP/1.1" 200 1447 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:01:56 +0100] "GET /gis/data?fournisseur=1&adresse=L-8036%20STRASSEN,%2023%20,%20CITE%20ORICHER-HOEHL HTTP/1.1" 200 399 "http://localhost:6060/index.html?fournisseur=1&adresse=L-8036%20STRASSEN,%2023%20,%20CITE%20ORICHER-HOEHL" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:01:58 +0100] "GET /gis/path?dir=1983%2F000009 HTTP/1.1" 200 38 "http://localhost:6060/index.html?path=1983%2F000009" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:01:59 +0100] "GET /index.html?path=1983 HTTP/1.1" 200 1447 "http://localhost:6060/index.html?path=1983%2F000009" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:02:00 +0100] "GET /gis/path?dir=1983 HTTP/1.1" 200 28 "http://localhost:6060/index.html?path=1983" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:02:01 +0100] "GET /index.html?path=. HTTP/1.1" 200 1447 "http://localhost:6060/index.html?path=1983" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:02:01 +0100] "GET /gis/path?dir=. HTTP/1.1" 200 25 "http://localhost:6060/index.html?path=." "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:02:02 +0100] "GET /gis/path?dir=. HTTP/1.1" 200 25 "http://localhost:6060/index.html?path=." "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:02:03 +0100] "GET /gis/path?dir=1983 HTTP/1.1" 200 28 "http://localhost:6060/index.html?path=1983" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:02:04 +0100] "GET /gis/path?dir=1983%2F000009 HTTP/1.1" 200 38 "http://localhost:6060/index.html?path=1983%2F000009" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:02:04 +0100] "GET /gis/data?fournisseur=1&adresse=L-8036%20STRASSEN,%2023%20,%20CITE%20ORICHER-HOEHL HTTP/1.1" 200 399 "http://localhost:6060/index.html?fournisseur=1&adresse=L-8036%20STRASSEN,%2023%20,%20CITE%20ORICHER-HOEHL" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:02:08 +0100] "GET /index.html?fournisseur=1&annee_demande=2008&numero_demande=000007 HTTP/1.1" 200 1447 "http://localhost:6060/index.html?fournisseur=1&adresse=L-8036%20STRASSEN,%2023%20,%20CITE%20ORICHER-HOEHL" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:02:08 +0100] "GET /gis/data?fournisseur=1&annee_demande=2008&numero_demande=000007 HTTP/1.1" 200 179 "http://localhost:6060/index.html?fournisseur=1&annee_demande=2008&numero_demande=000007" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:03:51 +0100] "GET /index.html?fournisseur=1&annee_demande=2008&numero_demande=000007 HTTP/1.1" 200 1447 "http://localhost:6060/index.html?fournisseur=1&adresse=L-8036%20STRASSEN,%2023%20,%20CITE%20ORICHER-HOEHL" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:03:51 +0100] "GET /gis/data?fournisseur=1&annee_demande=2008&numero_demande=000007 HTTP/1.1" 200 179 "http://localhost:6060/index.html?fournisseur=1&annee_demande=2008&numero_demande=000007" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:03:52 +0100] "GET /index.html?path=2008%2F000007 HTTP/1.1" 200 1447 "http://localhost:6060/index.html?fournisseur=1&annee_demande=2008&numero_demande=000007" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:03:54 +0100] "GET /gis/path?dir=2008%2F000007 HTTP/1.1" 200 115 "http://localhost:6060/index.html?path=2008%2F000007" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:03:54 +0100] "GET /gis/data?fournisseur=1&annee_demande=2008&numero_demande=000007 HTTP/1.1" 200 179 "http://localhost:6060/index.html?fournisseur=1&annee_demande=2008&numero_demande=000007" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:03:56 +0100] "GET /gis/data?fournisseur=1&adresse=L-8036%20STRASSEN,%2023%20,%20CITE%20ORICHER-HOEHL HTTP/1.1" 200 399 "http://localhost:6060/index.html?fournisseur=1&adresse=L-8036%20STRASSEN,%2023%20,%20CITE%20ORICHER-HOEHL" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:04:00 +0100] "GET /gis/path?dir=1983%2F000009 HTTP/1.1" 200 107 "http://localhost:6060/index.html?path=1983%2F000009" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:04:02 +0100] "GET /index.html?path=1983/000009/AVIS_POMPIER HTTP/1.1" 200 1447 "http://localhost:6060/index.html?path=1983%2F000009" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:04:02 +0100] "GET /gis/path?dir=1983/000009/AVIS_POMPIER HTTP/1.1" 200 265 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:04:04 +0100] "GET /gis/file?file=1983%2F000009%2FAVIS_POMPIER%2F2dqhj21wr-zu3.dxf HTTP/1.1" 200 100733 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:04:08 +0100] "GET /gis/path?dir=1983%2F000009 HTTP/1.1" 200 107 "http://localhost:6060/index.html?path=1983%2F000009" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:04:09 +0100] "GET /gis/data?fournisseur=1&adresse=L-8036%20STRASSEN,%2023%20,%20CITE%20ORICHER-HOEHL HTTP/1.1" 200 399 "http://localhost:6060/index.html?fournisseur=1&adresse=L-8036%20STRASSEN,%2023%20,%20CITE%20ORICHER-HOEHL" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:08:40 +0100] "GET /gis/fournisseurs HTTP/1.1" 200 136 "http://localhost:6060/index.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:08:42 +0100] "GET /gis/data?fournisseur=1 HTTP/1.1" 200 116637 "http://localhost:6060/index.html?fournisseur=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:11:08 +0100] "GET /gis/path?dir=1983%2F000009 HTTP/1.1" 200 107 "http://localhost:6060/index.html?path=1983%2F000009" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:11:13 +0100] "GET /gis/path?dir=1983/000009/AVIS_POMPIER HTTP/1.1" 200 265 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:11:26 +0100] "GET /index.html?path=1983/000009 HTTP/1.1" 200 1447 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:11:26 +0100] "GET /gis/path?dir=1983/000009 HTTP/1.1" 200 107 "http://localhost:6060/index.html?path=1983/000009" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:11:31 +0100] "GET /gis/path?dir=1983 HTTP/1.1" 200 61 "http://localhost:6060/index.html?path=1983" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:11:31 +0100] "GET /gis/path?dir=1983/000009 HTTP/1.1" 200 107 "http://localhost:6060/index.html?path=1983/000009" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:11:32 +0100] "GET /gis/path?dir=1983/000009/AVIS_POMPIER HTTP/1.1" 200 265 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:11:37 +0100] "GET /gis/path?dir=1983/000009 HTTP/1.1" 200 107 "http://localhost:6060/index.html?path=1983/000009" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:11:38 +0100] "GET /gis/path?dir=1983/000009/AVIS_POMPIER HTTP/1.1" 200 265 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:11:40 +0100] "GET /gis/file?file=1983%2F000009%2FAVIS_POMPIER%2Fpk%208i4-qmcbmc_-.pdf HTTP/1.1" 200 3908 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:12:47 +0100] "GET /gis/path?dir=1983/000009 HTTP/1.1" 200 107 "http://localhost:6060/index.html?path=1983/000009" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:12:48 +0100] "GET /gis/path?dir=1983 HTTP/1.1" 200 61 "http://localhost:6060/index.html?path=1983" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:12:49 +0100] "GET /gis/path?dir=1983/000009 HTTP/1.1" 200 107 "http://localhost:6060/index.html?path=1983/000009" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:12:50 +0100] "GET /gis/path?dir=1983/000009/AVIS_POMPIER HTTP/1.1" 200 266 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:12:51 +0100] "GET /gis/file?file=1983%2F000009%2FAVIS_POMPIER%2F2dqhj21w%C3%A9-zu3.dxf HTTP/1.1" 404 77 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:08:12:57 +0100] "GET /gis/path?dir=1983/000009/AVIS_POMPIER HTTP/1.1" 200 266 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:01:56 +0100] "GET /gis/fournisseurs HTTP/1.1" 200 136 "http://localhost:6060/index.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:02:01 +0100] "GET /gis/data?fournisseur=1 HTTP/1.1" 200 116637 "http://localhost:6060/index.html?fournisseur=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:02:05 +0100] "GET /gis/path?dir=1983%2F000009 HTTP/1.1" 200 107 "http://localhost:6060/index.html?path=1983%2F000009" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:02:06 +0100] "GET /gis/path?dir=1983/000009/AVIS_POMPIER HTTP/1.1" 200 266 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:02:08 +0100] "GET /gis/file?file=1983%2F000009%2FAVIS_POMPIER%2F2dqhj21w%C3%A9-zu3.dxf HTTP/1.1" 404 77 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:07:01 +0100] "GET /index.html?path=1983/000009/AVIS_POMPIER HTTP/1.1" 200 1447 "http://localhost:6060/index.html?path=1983%2F000009" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:07:01 +0100] "GET /vendor/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 155758 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:07:01 +0100] "GET /vendor/jquery/jquery.min.js HTTP/1.1" 200 86927 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:07:01 +0100] "GET /js/site.js HTTP/1.1" 200 6522 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:07:01 +0100] "GET /vendor/bootstrap/js/bootstrap.bundle.min.js HTTP/1.1" 200 78635 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:07:01 +0100] "GET /gis/path?dir=1983/000009/AVIS_POMPIER HTTP/1.1" 200 266 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:07:02 +0100] "GET /vendor/bootstrap/css/bootstrap.min.css.map HTTP/1.1" 200 625953 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:07:02 +0100] "GET /vendor/bootstrap/js/bootstrap.bundle.min.js.map HTTP/1.1" 200 311949 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:09:06 +0100] "GET /gis/file?file=1983%2F000009%2FAVIS_POMPIER%2F2dqhj21w%C3%A9-zu3.dxf HTTP/1.1" 404 77 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:10:03 +0100] "GET /gis/file?file=1983%2F000009%2FAVIS_POMPIER%2F2dqhj21w%C3%A9-zu3.dxf HTTP/1.1" 200 100733 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:10:20 +0100] "GET /index.html?path=1983/000009/AVIS_POMPIER HTTP/1.1" 200 1447 "http://localhost:6060/index.html?path=1983%2F000009" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:10:20 +0100] "GET /vendor/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 155758 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:10:20 +0100] "GET /vendor/jquery/jquery.min.js HTTP/1.1" 200 86927 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:10:20 +0100] "GET /vendor/bootstrap/js/bootstrap.bundle.min.js HTTP/1.1" 200 78635 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:10:20 +0100] "GET /js/site.js HTTP/1.1" 200 6522 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:10:20 +0100] "GET /vendor/bootstrap/css/bootstrap.min.css.map HTTP/1.1" 200 625953 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:10:21 +0100] "GET /vendor/bootstrap/js/bootstrap.bundle.min.js.map HTTP/1.1" 200 311949 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:10:21 +0100] "GET /gis/path?dir=1983/000009/AVIS_POMPIER HTTP/1.1" 200 266 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" +127.0.0.1 - - [29/Mar/2019:09:10:22 +0100] "GET /gis/file?file=1983%2F000009%2FAVIS_POMPIER%2F2dqhj21w%C3%A9-zu3.dxf HTTP/1.1" 200 100733 "http://localhost:6060/index.html?path=1983/000009/AVIS_POMPIER" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" diff --git a/build/build_gisservicehelper.bat b/build/build_gisservicehelper.bat index 8a1eb3b..d7c4c51 100644 --- a/build/build_gisservicehelper.bat +++ b/build/build_gisservicehelper.bat @@ -30,4 +30,11 @@ C:\Strawberry\perl\bin\perl.exe ^ --bundle "%SOURCEENV%\gisservicehelper.pl" REM --gui ^ - REM --tempcache "gisservicehelper" ^ \ No newline at end of file + REM --tempcache "gisservicehelper" ^ +REM del "%SOURCEENV%\dist\testsvc.exe" +REM C:\Strawberry\perl\bin\perl.exe ^ +REM -I %SOURCEENV% "C:\Strawberry\perl\site\bin\pp.bat" ^ +REM --output="%SOURCEENV%\dist\testsvc.exe" ^ +REM --cachedeps="%SOURCEENV%\build\testdeps.txt" ^ +REM --compress 9 ^ +REM --bundle "%SOURCEENV%\testsvc.pl" \ No newline at end of file diff --git a/dist/gisservicehelper.exe b/dist/gisservicehelper.exe index 3f3d429f3e76c6531b02c7366db3abfb58fb81f2..4d21c3283060ed8759b6fe5fd464788f149badd8 100644 GIT binary patch delta 67495 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

FtO}WIG@gbQu_>7XfwK8r=I=hQVN2 zaht3iq4H1M0+lV1iddfCM=m1s^PT$7whn;DG|{nLzR{Da7f;)`3&G^zVY0Xjq1JyX zW&8yqw)0@o$E?1kt&fk@e!VG-Tv{31(^Z>k-S^pwBKdxX5+ygu^%lzmb;5- zbbJ)L!Yg*lTcN5G{x}x2ewl$2U`3-9_S%;`KL}*iOLEx0!G-a{=uA6t`1t!YWh`2a zT-#lp?st9pTt)?T*7E+ivARX}t_k#b*h74F$wA3u+Y;geYqLBqD52$*jDHAmZV9n& z>Em5>nznvCv;|x?1ze^D+*m<%wFX@BLC@5DdW=O0@1`XeW+nG^5%ZMkc~B4BW_s%` z`EI^ms8FrcO>r4oSHL)0A^+p|sXo72m|+vFAip6FN|en(pCsG?S8`E-X#f!Qh8bJ0 z?#dVYl_>j!?bFA=gDCRm$8|S9{=qt)rHFOKHKjjYOqde45I;azMD@{C)ik+ng_9_$l0x5v! zDl^O)QUtO4i(?I>C#F9#XdL(iw+`Kn-p(#^-!=7ZP~!$BW4i>}1GT61N&)IYIH2fC0nP)q zhv*&RCg2*fix+Js81NzKp?MJd9N3PUXNOS;>G8SeJ+JX>YXS0ai0b{1enj?vMzU!3 zKjXA|9}#w;qpP4YKqT<&ZG@gt_5m3*JyfpHw!y}VILccI`(ku0rx3WJ2(K{ULVR)| z1tft0w0Dw6L~vzxHx63#94(6@opV78D+{i_b;7Yv!ygm3eCkQ;yrBXkllC2Af$A0N8(Lu<^eOfCI z+)}mx!%Xn5<9-OwF#Z;fhY$@QHoUc4!az|a6~3)lo8E6LQ${`6NVN$5MO)PnEolC@ z{fJZ0-GV^>GRphap90Yy3H?0QsZT0PNSr_UAz4E=GqgM9kHj~9{1Cm7$Lii^P!cK}6e4mjMn(XpYOOTSVa2m41b=g9Nu% z#d;6f9lXvv*A*oA4&6KsdWHt~7SzYju=YQJvru7h&1Arxq~#P+IyZy^cL(P23-P2K z^n+kP&BI}9!4cde)~g^oTF*ED?Rmky1CJl-lVwBB(i85P6D7&l!}vI`Xd>F{!hk5u z2eVcNVF_}eZaIWB5D7mV3~DDe(V(1+NW(RmGZ*HAUx#oAGiDfsZ+UReBUuZBByERs z3~q-uSwzp#N3^%6pNt9E`~mJKnSGuY430I>Y5ZA-3qktuS4bq2one4|zyrvEXa@1h z?UAJC5dr{cCjCM@A@sI9uy-LU+mLR+r<1x>QWo;umT_nlVocq#2)TyPjqk_@fubDb z93X^h!uyH|ZXieASJ$l^c<>cZ=&2$Cxg>5qAfAu~*lay`;e-Ie#?CBc^)H8wrdjSN zxuZjO+h(*<#rNp|p6c)MY3`rmLc1^EV67p^!XJm$jJ+*PX!1$EWRNE*1RJsoR;tc)t&b||tHkvIFu7?=Y-`0IMfc#Xrsc-Jz$XS|0^q zm-J7DY(ebq{&e8+L0>JJ+y6B59E3#lypf>(kR?&1AsCMN8vY-x{@ zOEz_{aXwz7l!qcxnjr4hepZwttM7Nf*#*4%1f0N-H5v4Y61eARyW4v?RcyNk1PW5b z7mFF)&Hs40h(Mq#8f}#o{HiHkH1W%U4epAiu7-*O5U!4x7njK8J>R}Uoij#p$a^jG zDzq;N+zi~;oGq*_=(#aQDtAlo?Z(r53i;u3@;c|M_MNgRj@R8=gP+MJO$}<*BrVZ*~~3v0sL%7sXSKsJM=0SULG4Z ziBnyd`g$m|`LBQfKGr#&K03Sk?%$HvuDLBfU6yDkZu?Nbsx3~n+8+=)Lq%18U)1_V z0(Uz$#^UvTo}Deuj`Hnt^Fs=VtGpdYW?nVf02)aTK3zV(x~_WJU%YI6R8L;=T=}>| z|5e{mA7^myS+l143sy7`ydr8xJov)cZMUV}!fw~SW$A&S5Dck2-4z29WX0_ht* z@!*yf+$;e%7k?^94^Eq_B^HDWhsL!uV$vUm4VGS`hI7FOJAoL2GT#fk^?*9zFU73Pq=p3zUEe%v<#Zg&1`P%8@S_u3%P3%+kS_(-{C zS5j~vgIoWrDOl4kmkaD|V}(=Z@Qek8TOjTJcV764=2x_EbbK$VLScTB-@w{=VFX}T z93O$LDfsUeY#Rvb(#I!3Ddq(0>3N~(;a7h9Uj^27lsDn-JAsh@o$24LS1QYB5w6bs{4NgW88Q$9cp9S3i ztIz+6f~;Z|1vdgVLDrZFY_L1H86F9P$r^7y=KKDCpWr)3;tTu!Y#>)t^Lb|GCWG>k zeg{rv zWMn9Zh@9Uo}n^7aXC9*&G7Zf9!Rv;1-N zFhekn&zSkKp`m5QFv7;tT7!TDnlJ4Nj@aRccPP(*{T)I9MRpTvny!6wa1-Q%-;MH= z^7{0oDYcfkrSBit*sCx1y}dI>s86|~r<{t;4I!C$QR>y=J79j8y3ZDn?_z-V?|NZ$ z-W0T2{BP~@)%RH1dvkDeuJ%|8S@z$iRzsQsmGQp0IeM7AK#f7=;f0v7i6tPpO`Nl^>C zRB=LA+p09#69E+U%a9>k6dFyOr<9>D$E`}0JbSD#5IjBsjUmkBWrgJ3u5hcSYvTmhDoS~Lsl7xtOb}Idm2HLf9kv+5 zHz*3`a?3%CpS4GotC<u!l4-*e$O`v96Vn+`eq}HY#PIF zIB&Az%<;#*6-5a3`_Exdc4_c(L6>JYUu>)~1_yTW(V3PH6`nYWT;ZQ7C~W(9hDMGg z;##*R-2HIO#PA-FLibXz*CaB@=h`lRLL$j2r`0sV)>i>7Wuxp2HlYMa9M*NPKauX- z`F%CvrGWk7kb>F_g#+z_f=B0vFiU*}7Me8XW?y$Xum~$i{-VHSNvc56ear8fs#%HO0p4R0zn*wZN=l?`V35A zp_>G_LN|-$FTL$wzOmS^hhg`S{dLQ>khWG;g#{jd(KeSltI83Cr>PyU4T*?q#p(03 z7HO*MAn)E=c}tDCS-pBx_VJ4qY`mbpC25(;+qb5wuSv49vDGw?qwzIr2Mmrdgq!LF1L2SE{x&d?oL^bg^lvSMhJh65WMVMzK(&+W6$T(%nz4&;3z7#Bu zin~x-d1OErPeyqHtoc(B@k1ya0)0p)vWYuJ~+n&cICZs9;P zK%Nm^F5va1JQ6n{J5`W$a$$d88#u(lGd-*5+|=n@^z3G=)C@S0evZk{Xf8#7Bb|EY z((u<5+tj!>)Xf2ujdZ;r)frSW89!Fag_#)kZs+i%K2O${Lb>)5o&>M<-Bz^X`5GH3 zhNT$<#=iW(iexnR&!MC!*0`xP(s1SCI*?F9MU z;A#XJ%yDkQwy2Wa2|O_}m5*fbx=CL|rzhS-D%|2h*y(pr%vw6FY0cv$HNdzH&>3|T z{5eV=HDt`i+)~awA(A~5d3a&n?Yj1#Ob?Wi7`rGBV|0;A_222pCtBoW5OPO@Qu%cAKzI^m$Owtkceyc4XbR^lhOelBu z4*zv}{|tGJvbaw;fX0vP#j4liBr)&b6U1@iz!Yh^~aXxcS60sm%JZ^Ac^QDf-XN|HuK9*fFOC~A~Rv%kIUz6 z5^VWn=PjWtZ9UHJQ8gXMb+-b0@?S`xOJE0$Z#Ir7v07sm_;^p9g#FodDJPKY<*6_O zXnTKrTzRBrPnuuRxxdpl+VumcA0NnoU``Z><8JH|n@ic$;qS$aJ)U%%g-YFKi#|fu zM7qmgi=B-(RnN`96#ux3r^`V`>O$w-mD;L8nDL2cgg#NTRx_`g-N8y$U)c51fnAPIT3BhKXHp z<}v=?-v1tU10P`@?_??p&@k8#P!I?ZNP$60qv*7{g!2&1he4SN^N>ExTsm3nLEtUM zYL=N6cYl!p?k~z`!-b^wzu@ZtTWi& zS?K>#y@dbR#9rAONPj`W|M zK0|N!fBUAAF!#>?m-Uai7v=xVU|4%i|L?$7?7iYJ|9xA@-Rty!#gYs5(%}D>C#%*g z`G0%FsrLqB{+EYi(Q5;V3aFiv z!Sx0rh7NTQwd$KsKtnbnB2^)*2D03S;lMTjUGqa$CqiIdqV>xRJkkAGtAG1peG-~? z_K2+WrNtnBcXna4OrkD+1)I`+NHQl#OqTSyzM?DlC&sDkhG)>gMx^x$L!um`Q1%~c zBdbw<1Byjp)p7VIEwRtcscY;X9L9wtV`;p@?1}v%qc_q)wj8S9AuYK|IaPjWJ_Lbf zC#G{fr9?KW$?h*`_3TJ0c-Rp#)+@*HVfvL4?%5m^&AMT_#QNGBG~&{#G58|G@#n>a%U%bqJjfM;2cV@*aOb@4{nb_lw@anudF0^9#a6W=jYYqyv~ zgsh549k>CMZ{0I`eWxI=8hy0{E@9bzd|hN&4~1=FgKeK*LxxoqaA8x`>&ZFT)Qmq4 zC0@P(%?+$Y!qGJR4zbd2yP(=#ZkBJe>HYX=8zn8DAlb&H82hMkt9R+Hg$;cF86(0Q zk@WTlslkW!uuDG6W0O?UoZ!rSVhpwC=rtKdru|)__>=bn*8)ys56kBF9aD-*T~5=Dc2& zuH8FBLW}$(0~h?1NvoOpKu>w6L+ReCPApc$g@u!2fG3nUk^F;hOoL`uzW(H$fW19@ zLXz6jSH97BDSGPN&yu#G#}o!>uO@hX)QP5l5#%rj^l!1(f1O215>@9zJ|2bkEBBMG z0B#cfSX<8Wx?fzgS-fjPM_PvBFc8z2CGje=+vF)vA%alayVeO74NButl=F@1^}L)^ z7Ga#5LNB^<4#YJ=6)l9NDWQfBGOFK0T=1mdwjF|vfR%QBGBmb{;^12+fWL$PGvNc` z5DAlsNl4Jb%WpYN=5QN3r8?QOKfJyG;4i{2>eoN>tm>uibFU!kbwfg^k?o_>=U#}r zJ-BVShbVx9eL~1rsfHCB@y78dRpwG=6Zwj7oY8#9kgCOn^d3&NWQTRH`Be4c$i?x! z>w~@FgE-Z}>ro}_iL_g0H)>4A?>(iYaO*~#`QLgdTHYT0qQ~Azz^qiS_2Kd@fF}x) zIsHefDfa_eY(iZtxvGGF1UwdAuP1H~L?8U=QaLrel zui1n4qyq#XNfbovmhM%xg5xb(@2JNKl9d71%X3Eu8jZa14sl$cJWO(ADawv#WIe15 zVWukLW)gighEDt?%`jT?eMs|tp&}-q5m!;9$)VZ&vQJNKPn!jM#f$XYCJLeI~ zEK}GI+xuXZ!e1U04^BD_TOj=bt5o>V&qd_XZDuCkctesoM1L^(AkSu?Xnje`uOp7; zr{zh=GMA0w)MH4UVQ%?jgObhz#yQ8SOF<|q39Jw-0j8P=>BEMSSNO5eL9PxGdQjO+ z8s_e&IJ6<(LoPaDoyJof0j}w2&P~fNfB(?8!LlLfOlf@k-SszVy>OR+Yx z432k{ZLl@zsc03OUOC8^mqf@D`~7nb96$mRjURcciFb5X1$Aqm*#CU?zZK-*RPy19 zzI=*CXfiWKjXh2AaTt(>)319oua{q!|Gtu{+M?g0nrBfUp{^4Gm8xSS9n~@b>9;R9 zgQcx)T1a|0B^Zc{1pLUZsw-GsdfSV@665{n%Z?V>J3qNYA6>In<%snEwRI$LF?HXW z3azqK+O(IlrA3P(6;WwZwj?cz_LVlNiI7s3bWlk|*>@pJWhW~9?PTdg)XaPKkK%vs zn^&K~{J#5pbIv{I+_T+t?|pajwRxIaJv-+1F-@-d$cErEJj)@wJ|DTbI#*10->K=t zLf62ph@_n@9~P~f(I{1!efsU#>hH=i>X&5aHmeQ$92eAD*u*ao^IbXQYk2*W`n2k{ zqeZ5Z7eBwFy25nRwn@_J3BCL?(iUq^NxIi3G4rdW(dW76&7a3d6?6pl^_iLeV9A61 z4--6#wi%ubOtkY`aiZkZ%U$73TkE#-t4yvfuKc1fJ+brn`?KcJ1D0g#U)*a|qa-)n zM6P|lS0?@y`L*;&S=pKrv6enxRy~pa()J|X@`I$I|0lC7nSCCL=WgwedAv93)%y(d zfvz*Or(NEXJEEoWa&`S(f2*NCPK|oF@2Bx-U1N!x+RJA*XcQ+69X;$xsk$W{_eoq~ z^TTiUE-hZ=yLa*1zv|`JUz|EUZe_mRFyGo+h9~C)-rN5+ut05A`{OJ(HJ@xBIGb=1wJhltiE@Hcc?J~A2*sfx` zhV44G25dL5-Ne?2tqEH*wp-Y4W4nXxf7tF;Ux~UmK9;+Ch1An~*zRL{fbAi+N7x=? zdxGsLwiay9usz520^3V$t=Rs-_6pl;Y;Ul&VS9`19k%vrsiz&cCW&!^s-NidyZUqE zsvlYM!zA!I(Uz|)j!%C({#*${aL$oGst<0qC>Q=!#Gi8I-$pvf_vGJ3FvyFqD2C5u zZ~hu7LM}ar|3r>_X$$9HktJV_B=J4_B8kLuzFaSS4#?$S>_s{rtl@k2M#Ko<^Ti2b za54Wd^QCzUzi=SI%se6DHa7jX%tVKd*y5E1GB z@_*vqusZ!azm#wuQx}BG6M~iU0t!ci6eYn+gu#E1U@Jb4D+>~Pb1kYDY6wcD@j1{) zutp4@6~hF3`ry;kOrTHTMWY21#JEP)HI{-xMckiyx(R+ra^0#urVDZog3rokPP0}0T%9yXe%*WTt2Z9ocn=94SR2G`-!e9LqRP#Y=Vf{y zSXJfnV8O?C^rP*1Av*UT@0AeOPBC52`{uvQ*5kcQ`E0$>s-?^0`_7OtmN9;C^n%j? zn{T!m3d7~ic7FFCd@j{Q^-RskOB#3kD|(q?}8=88t2B1*%jD1NcLxf zMP9CSl&-{{6Uv{9iq+IOCC=>WxOSQM9@nUV6o8L0$nhkj4I9;kO;q#D((j%6y z8uz(wFE7_h@ZtLDnXS}k-^oRFYKx}f{#5wT%~ zrf#9(C!Y`TYRw<4U|P6A`R9r1`DxKNUbjm>GC0*x-sOB#XE`-O&mo zV>Zvcchtk-wsc;@zjEvNVgoh{-eqv_^hwIF2zI!C^2d_RN-{r}4H@Lj-=^{9d*5s0 zY6USK{<;xc@|~ub+$}8m$EfC`LWB8*;WHy8o-SRt+GhN%IQsAp>6MXt3#12J*K=98 zaZYYk;5MnxD)u97Z@u#H>~n6*(7C2pt*(vSzRdEC*24Qv>GG>0p57m6eXDx&sMwny z12bwHe#%^+B4aI-`x-|td};SBrjM-F)hiOt15S^fy1{(8ql9_EywoUnYI||A{(+o? zDd{fnY6qVZAALDqXUhkb;}ZuiJMQh~*EYhXXnWO{_taOnj2j_h*B9hkyJS`dFUpJS z?=&4oTf0OVS`^5o%da`5Jtlbm|7)JIj!PBTU0s*g-_s+g;Pb6(VT$I%<2K$ge|E9W>f_rdK6)yb zJWCE%@w>j?TY_vgvquH9d?oK%UDK(1(ZA1q*|4_Fi;{Qd zrFt)$-n{+L*^H|XY`@FTyZm#NO7%INv;lg-VyfZ0-mkn^XZg}~b+GJ%LofGUFS~Zn zE%kp#?B`~T?GtnMhj-=AE3I44@KkzL|9j+ii+;qq67UaFh+ zh1;dM>q!4>yIqz+ms!1|{I9rD>*N`B z+Nkd@U*CE=Ip3Z(&da;hyVvE0tReTMryppDn6$vDe|W0=Krbbo@*7QC)m(DQH$C^{ z998`{DDQK`;*WMR(P@kS_pPedv9(cl?QF?ir}~%hMmN^-s%k4X4jPc}{`B0q$EKTp z{G2nqN-pVb*3NZxExRYzPClP;`>M70(3@ADWo9%z&y{d}rMF_!?*5}@zSNuF|8&>O z9Y6bAG_;l$SBP_rmi1l`eAjfYH$UC^6Ez}y#c1cgGAXN0|Ig~u&2OP24jC>qp~sJC zKKN*n_t@bs>zbNfa`-0eDx^x)9{IjlLN8ym_5ltiJHDqXO zJf7hFNO|Ogom<=bsn6F>%}OuMZW`+}_sPli+g_~Me&iDVGY&d&!>@7EXG(pTuNM8) zsnOJ6EB+6QoNIQT{j^8$YTWjK3C@=dReYt2;jKlVv9lXg=F1(g(W;3wSyb77%+2G) zHT6>0!r`dN>zvyu;-@Zrr%NYunyPJ&t^aW|zW1WGw#{BS z%VL|^S0BBTuj_xjbBz7&)Kx3zcRgX>4#V9WirYHe1=qZXMFoyMRAbX#m(*haX#1dA zw}rXmCS;5-@y&ht#!tmr!SC>7H>c}+3qwkBhHeNCF`FH=uh=Wvd1UdBtc)vTlWq3D zS82AWJL6_{ZPAz;0r^)qDTQ$>2Oqdyp!ukJ*RGdk9{>wf%WL!zhUa)4Fi|wU!Q}gLx z)YhGJtr(DJr!#fA!*FSh(Lt_OJBH*8DjBrcHbpEwd7weov5qbmr9Kmj^am7={;2wG z!s`b~Q-jC5#F!TZ$lNUd)NcRIea9l1rAd3D z`4IQ%$pNizx1?+8te=>3kZRxOXWFsIr)jLzkKX@n7T;w?xQACyOcQJo!wo`fx}c#K zJ`XJwESJEi)k;APfj_PmNcF+zk3vB|aeT^e6!=QvGrU~jOg0urD+O^f_%t{oSVHJ_ zoFW?&-|Fk91$jiy%sRnW!sm5SaDvcFHwe`G;d97iK@_3e@Kj(yI_k1pe_|7 zDd+1lMRS183m-`ir=K!xT}r9Jj}lt8`uH$vt|U?^nNtr4H)TbI66I#tQ6q@dYzOKh zQNnd1rA7K9ovCc{eD6jziV>;d`yx(gh;cZ}BtU)xO3g2$<*Gk>QbvSJ%bThsx?Gt_ zZ6{JA=Teur_%sWoR+9eH!IT?$N{3QmWVFOE%AH6*A4LU7<5Mr0x<~MxY1BtTM=zn) z6aMT>sxQG8E~QF{e3Kl?OPpx)BtL%NPcDbkTLRWPpf+w5v~=~+JW85ypUbB%kms_s z)DprizJU@W0qeb$iX)y%uB2!pJ$x6{LA02;pIWDa&v%!pJA|+H8l^x2^uOEGQ^I$& zg;FQ<&CjThg#XeTY7(LA`;NLrp3gg|tMd5V(?v-t;q&M~dZ-vTvARW(UZh4|9>Po$ z+L-yW%7k`dzT7jRP36ej#4)kQml?@$I2S?5ls3{NDCxZo;td=QM->gkIQD!hc%#7I zlpe$oMcIb-f7+YFxi^5r(dr@La4L8@P-sdUTN6nE4sO%u%5pfHG=G;g&NZ4785U&h zFfumE)0HcxATE5HO|B$_z^Ui(|XJRyPd_QzoXZzaS+h~ia>ret zIK7oMCu!batm%CBVQS(C4rkj*4ySLAn#8$gCxv_y93~jsPw@B)Z*tAkhjutoco-Z7 z5#HOcdU)Z=Xj+9)Ib`6X$To4Lljd-gM93!;S71S;o333v|f?$g!XYGw?0~uY-#yi-9``JQSoXX#-~b?NyQz#}zr8|GE5b z>R@oUWQ9aqBGXS;Wy!|j0D-^2bxT@<5!z1R7Lc@JGiIn2ttPf71J+v6gTUX49>@$e z;m73D|Db2mND7FUu@}}@(IXjAb%gciav|#{Y_=tcb)e+0rXg9L`>4 z4o62s#Drp&Hhm1O#0(cI*VX$D(gLQwwg~N%9W3pQF|;D%0{yfB9!fZ;J5+x6_FUlF zu-?|TL2s7BSR2-xa|!$j(rj37mk?M5PT0@}j2oU4cm{OYu+wa5h}IVaROm9628?Xa zr-FA9#@Vt{<#Fvsan5iK$K(Kq)4zv=r1${f+0t5!x`XRa8DwJpXdBJppvFC)3Z6aG z+R}#1@b7GK_^;4sEIovQO~xYZ2ySE9`4&mwuds3~t;O{3L0H^gHy*rnhDkof=l3DCq2D-mNSkpe;`aD>5IDuF!@_a2JQIncI;l;!(Yq5+*P%Vi5}R6_ z7}{abG>#2?3lZ_ngFz1lRXetCpbDaHu?0^%)-BpUH`J!8aX79)xXOx* zvj__8*r*+{L$fvDh8;b`hD_q7Ufb?>%;0cN_T`ef-t(#8HRZ)KrFDXX^PlwujK`y# zf53G-J)Ci0D#BuK-@%mev@#qR&(1Apg8?gdV9pz0DN*l{O-$bi&&Sil7*=_E6qN+S z?CBv)cvsBIYA+wm;T#I!a4^w(J{7#-5QjtzQ!z4$iTlF|`|fljQu;!dJ#8qgPH(N} z)Zx&_aA>U_8D!|IkqOWlo1h8-4(z-ts2|by8Pe7ut$_&bm1vfBzXPqp41CQ2Bh((t zp!Gq{kqw->Bci+F6F@E@K?{7l(P4X&l_qczBRm|lNi-X(Ab$dz&xaRyQ)XwsRf009$OLt+rmO@Z8rv_3P~vg7Uf&A4cE;`%ANgyuja3S)>| zKAx_7g3ddD%aZ6)kPH2s*a%rWp^HkD6JhrnR)@ui;m(GQPW0eeBpK@}G-go&SRTT; z9Gu@hp9X7B(_2sPeKJWmM6l< z<%vpvOmVxI0Znhvh8&!#qJwuqKH(&rkiGatLcS2a_UxZo3eYl%^%@`X+zODM%uci6 zlM&tqle^(?0>{E~gae4B=59Om%rN8JaWN2`s~>I%Ep-Zu3^DeO4GI2>weI?_;1lX- zkL!qNDfMYY)#~2+DuSvrtD2EBs=W9y;>Rn`Rs#QSd=%oj*^uMRs=SB51L1Nv+(zJG z(94C^noU$bZ_w0h3cA<{T`ao$FrT%M364`(^gM^K=)Wjj*>$y4+=Rm!vg`M>-V2#7 zY+B#2tvu8Vg=gTT7xhUC)Vk1`%(M>ZSDEqxwW!05lxXcAuyG*-nh6Gh>^fSW36_y7 zMr~LrgI0#Qu53|C++8pw3^SUC6HHemS02M!SK5>r=S-^YJye$S0-NY+y?h5F&;Wj} zV?C@g1;>fs$&TYOg{>431bw)2AuL(X?s5(h%d9o|i0`M)8W8wE;kv^Jyn z7&j#AcYPsfU0*l|V%%7=C5W~vYZm(2`EQ%NPpdWcJ<&P)v672!G&P~wjV%Neis5bs zS$B3_AMTFu0hsL0=0P~ZuFb98!x(#p#fJPPq_r1)CPrcg@4yTetyHpadw9J=LLwk; z96fLj$)L!-DuENx@rqcqL<3y)?iZHGkl@6>49LCpBQYG4zDw_SZZ#P1L2ELFNF^f5 z`aMqIDY$-!&Wt0l#Dm>rJh-{z$r@DKA9sABME9W%i86??CmL-A9>Hu}tMU7A#nOwI zba(bJ_D+lsi=O`%W!=1E%bakQ@G!wdOcI16 zmzdq&ICBC_k|EY4S?!MszjnX7!Ys7?4cd8=jmu+}i zrn>}fmH8vjAHm4!>|{_=$ooDRC*@Mi2GPw#9>h&&x0X${$=Po)7vJJxLX_w}9PB3A za@X46ADnmj9=|W3Gzg|+U~pQ2+zkA}X-tOBo5`BsGJ~ycvk+~&>Pa#)u{=ZKBmY|8 z6gw3&bkMDvu!(x;G8~*i>uZsTo9rXz7>BW4icR#SJNOxVn!#>8RA#0V4y0 zBmSI+?m_*^lIEh9$Dx-+3&nJZok{C4VXMBk(cv`4`4yHO(Y?=`f099Kqd*yM%w)}c zjH8M_Xv1g%JC!tMVG>M%F|%0hV{hHvmWAQyh1+FOPs`JgF^ip$<;W#o`z0B;)|4Wg zC}B?;KSqS@{)lFuNB`*dq&L|Gz5JRC&0A<~(D!9&yF6g_bPVZ5jF_mKl)oiI_)b>8 z6ki-^t9T0R-N|mO<=v`Bs-aVs;Oik#rzG}Df#z$J63A4tX<9L2&&@{k%X*w{qIIku zv}dz-i>PX$lxBpmW%Pbe+O zB_4b_1?HYkQ3sVdv@8?(9rw5HA*m>a0z~V{!Mc>9D=8{4cMiK1iJOBGvd#;!Rdd)k z1!oCX;tIiPLl=r=Y>@Rw9p8bWKf7&pCh#l>@n_e#tfkMczD6gU!f7o!_xZ5hpVnq{ z`}f$Kg`H?l8u3_9RBb;92w6>k4n(EwVQe6~OY$S|3P=uQmEJ_)VmKDaCe{N2uY^y5>@qPp2;n5K4q_9{kH8cp z2X*rk*d2}qv1{NX0^7ouZhF;Vgx`WiFv~v+;c?5B3H|RApJMD27M=1J@5C=_otK8@ zZN>x^tv+Yra4@?pK0;yE(QAalrcM3JdEULQW6o-KOsLs714Sp{9x$HAE(5dE=bA_1 z)R)G(AxdNj(MZI2a_u}!>I*wkp>{{A;vZ}9ET^GA&SFT6an6YDKQ4h_9=rdL4?$-f zgkd4<8s!`R>2N19so>b6Y1R(WA#9qhK_)S!qp%PEeNaY`27-`01#KbS#UK>Lwt!J6 zy9T%uI0M4F;Q|7mgFT_F#2W+-fVOT}WWjEYF;G6KK8VH5b z8~$)pjNE^U#>V{3$U&)FnwMfp-Goh4p?qkJVkhIm(0wkak>J%IwRb%9jb`0CDjKyK z3R9w4Eu#pG@8P@q_YimmT*iJz>xjvd&0e4@>am=N23Kw1e_AJm{Y~ra4>?XNQJEds zMBl*}!T1zaK`U7BxeSA#nZZ)ae-5`VtA`o<546N4=>$&EzD)kabD*_LNpKt z$EQibfp~Vvv+-Ez>eAs+JgtGz`xZ~Di|t9W>P+aW03S9A$G&V%LfA%QkP9@RwTk=zefiS%%-F^k;9$Cpmqf;n1% z)1&*vvQWXJ50}E$>TE?g_+)7x*qTW9#r!^i?BaRP|Lc(hDv_4sj)5PfC#51=$WyvC zTN1`BWUX>uh>l!a!}O{4{ne4KW1wImGD_WG8An{rmWCS(QRH%XM0)nV$cCDy*{UM` zzm=WkX5qNT_+Jh#pcef_?q!biPHu$pi_k;MA#M>`OK*aLMf6BC{w#vxT1(f0amHF@ z5rN_PZjSy1`S$JP*cI|$K!vU_+zi@D7|`W@Zsz`*t*!9LlsxA@9}9_`PC#%H`dAuP zCE=(?ZbDTOZHP)V6L8pF5G3KrS3284{^ZW+pEyyHur72TzJwwy9)ejit?tHAGZMEDFl`f@Mo?3-uj{TnXY)`DbR@R!W3f;~bqR1&=po$2V3b0u_wg=WPZk2G zbr05rh!k||Vo1Rb@sh!Xut%j(1Ef=N6JEJE%PpgErtvBx6c`}-?*2HBE-ozESU7}` z%3)F}ry~Eki-mBru25YhnjvWrh@E2a4l+{d5lFj_fEBuMJ(bqO1f~eccZI%bv=R1N zrJ#j~FP*jt z_IhnH5@B7O2Ab(eo0JV>(`hrLjU%8*6%?e?!@22jnt&f$;9)vu<5G}Wf?#Vk7%ibq zka#u$ug!#%CG<#dXYX`(cW7>0ycw0oxAw${?vEbt+45p$Jr7)%7{eApVHxeNrpXB- z=S4>T>OpB9?7{)WOSMZtkX5W<@@waMbnoRm7r*St!ZFmjB8RTyy!W3=n53~+i&Dm^ z!UTP62FhwmDFwd_v?UEzBP?dt1bZ?tBT*VB&tThz4VcyYB}J<5ab9F6P#L)8!6|#j zZ`$Y^CK{Z&riC0s);eL@ny)K|XPNX6n4L+><4ldn#Nj4gIL9FSja=}n@@?5rhuvbc z`OuO{kKy`)Di5ilS3RLt1a}^-g~%9!)E~zpe}vZchFv_|ucX5{(o^JI4^MgQ0wcNkEA(&MBqVBy-I96EbZvzpE zLr5X^b35GZ7Se%;nY$~5ELaErH8y)a_)Cm7hEQcUl~C<_xZoqGzrh z$Km}l_C%*Ln^6s9G?gpRhEH2!R5|ab!U5!$#JJ;|nx0Pu@6k1(oP>ozzlWVfWBhWIbmThB zSLq#(kkzCp;eC@}snOz!qq-c%{$2IxJ;LUi9~&12HiH$|BX5nEl_MLH@UMA-3ah z1A3naua)e(*R++GoloV?!={zAy4Dt3XA9HC6TZaY2CRMx`Tar9=QyuH{yZ4x&_?iM zCEXvls{L}%8oA8-1ZhM5QXn!1ReW|Ca&mCD69;>-U##T;T+6{93&lY@0iB=MQFhhY@#dm$98C5g+JdxqO2+plWnNSA(Yg8mJ~`l+rj_k zQdle}4y<$0F( zspdRXO43jOR32_R<3N5j!b&3qFmg4mqlLc8TGbGvgVTB^x>4(tsez2QDg?;yy>f6G-QtC7U5V$RS1{fonN;N0r2I6^0e%|egl0tp&LGivyW8I1sN`07LP*A7M8JF2#thq49-W5ag}F zd84@vcC8U6K_h{44?+7Hyca@U8l4=Zk75dc!`A%@Q)qPh2{2!ammH|dIDj>1e3oi*a81kg`epa56a(sEiB!BgOg)#&+He#vX` z?)zmTPmh;UE9kjj?#H!&!RyezLDw0i@OD`&)&jx^w(16p-MWreLDEwM>GMAZ$=n;u zAyRHVB2(|Nl;qY}%-IO$B3A6&14v&_57EM(lzv&Vd;V37>0AuxuL-8d^ARAcn?MDg ztjDd68@wa(yuS+myIj@|vs>j7tjLigwv(0Z*OQVSuZ2SqS~Z9+#LbH@EGa|*{(UGY zEySx0kv~!TATt`K!=SE6Si~N8&=tgP`CXE0~ifH2a4yIt#bXrI3voE-8z#%#{ zDG1wu=LKIVAn;Xv3ifZH4T!nHGKu4s;j(@Vw<^D;upZBICDTJ2#~U{dwV8z{_RmPRf8x92G&)NT9U?mX z89xf{0%LzC5&qJjg2$%?Y9f=7h?q0FOz|?#`u#ZCuk}@r7aL4L@J69N7Aue3$iM&# z{s?f`dXxfOQ=|nTgp$MyPLfCEz1FM4fCd^e|h$6^+nH1!068iDp zmg$))IDCZV?=zw`hk_@s1**`#i3!O!!fL*Sf)Skp1F+l7Al)`2vSTX+k(=>ol?a;= z78|z>P9Ug>MuN(!f{&OuE762s=cXR7sS+fLaYaL-h^+g)Z=xeRa3>>5^l3LtL?Tpt zK`{>W@c;!Ka+K)#4x@MoJH>|~37l*&9hpQ#1Oz{l{IS781(8`EZE=A8y;_%-gU-8*Q>Od3 ztHNqk+6qlu@TYkD94M*ZQ#x=9S|9wH5a=)$f?7ltWsF8vjNCHWQ?)IE!rDiW@Fppb7F$ zFBWM~j!OV4zWMRC59H2a2u8X4DoALZjwDOExSUobq$?h3?2oxc``H{ zDyMC5l#X&7t-Cq5?QrG++(ZCkPd>VZS){QT0iNU-cj_V z9_GES2&sYwOIovyRwbmd9%WWOsKFp4*AXF=(q?s+*)Ak~eD}@yt4LOW@i7!3E!AO3 z_hwQ9A$mI#jK$m0ioN=5Pt8(F7S0HJu9F_;VZxrG3L5|I6;Q4~T=7Vj8vnR~G2}qJ zuH<4IvK)sTCNku`Q7q}^3Z_J#CHy63EOO6UN*I!RBKE8AnTlc{g6I}sV{Ns}vXQZ`l-SUj92 z7u-g~+Y%1=0}qVf+TS*;dc6CQbkF@ZNoAEvWbIf;gHdG~`w> zq7M=Hd>Kuy$BAePVX=l|(03QUp-Kd+UD*Alng&V{vomHFEjjr-_dNGRGKUj&o5moS z28LQ#hMENjS_WE~&oeW%7-eN;8e|n55)@);Vi{s#X<;2~X=!TBakO`wJdsm!KTO)w Jo@{`n{|`iGfVThu delta 26288 zcmb?@c|4WR_qc1#zLS05O4hPVTF9C$t&~LB_w9;nxg`lD42ek6N+m9$&?;qVQCUJ# zS#p;sOZ1)Rd2aR5yWfAm=hb=5oHOT~IdkUB%$eu8n$BxwyZhoHTLKYBWF#^XnTae! zRw5g58IhgHLF6QI5xI#xL|!5vk)J3)6eJ1}g^40WQQ~r<7*U)kL6js)5v7STL|LL7 zQJ$zkR3s`9m5C}uRiYYk1#u-&ow$mqLDVE_5w(drL|x));u@kJQJ-i)G$a}kjfo~i zQ{q~p8F3xaoVcF2fw+;liD*HzByJ{J5v_?fL|dXA(Vn=4=sK5B(b|Y(v?%xAMA$U2EiS| z9te9Oc#zZ|>`O~cxiGQ=!cNkKkzGdyQb_im5cWgxg5V9|0EB}Od?5Hj@Ppt_BH0IA z|ICyd7yx|r17*<4as5Cew9={{D9;U>?A_Zp`Ac##Fr31RMPRaat>!ls<@@!n zhew~<=_R@AkA&T+m@8&J*e*8xy>mmBq{|$B^+ke%%qfNomT8HbKhzK^b}y4`&Et$H z{$@=MYc3ODP6=>zY}sD0_Ja11qu-`!>kIb3n z{yrTQ`Av6B!^M0~%hY+-%oWab`=1H2ZJl3Ta_ps*UYf_m{^W|1`rTjiIdb;aG_ACd zb}WCv=j*8Gl$qb2x|iwdbuWTw*k`L##Ms%KSL+(9J%_dD+gn&8G#f>(nV!pV)wFQV zuc5A#u#gbnam?SFJL>)xm*n@y4%rHW=mLe!(hd0m9&(nfc2u5f*xEG@ll zhm!NlYp=6~{CM0WSsEjMR9fv+^TBgAlKG996~bNz^8@r6d|6j>8LsNJj3%^%IGptO z@HOF$z*vj4;@KvA?1;!0!jCe&F3wk8+{I~o+;TM!gx;*WUM*+Jqtf@t-|%cbS?t?f za>#&M)&jp>wnahtP*~91+_QqabwbKThZyG#DskZ`daOcJfm9%&{33KnAnV$N zfOfs(t_4(wqrR_rqDEENw{<5MZ@7FsHg&`z$X>lc*25pSo&1DZ)PN(e>#^$Ru8VxljbFE$_w8JDF73g-iUr{t zgeE>lsp^!68$PVKv*{FT(LhC!vaMsZ>(A0>Pq%H1ajpIO%=LAWSJ|0SdKBIYo??bHQtdNIPJpj$t2b> ze^BJqXFJ^U7te*r+s+&5l=-iX+W2z#48P=#+7+uy_-set6f;~Z?bi5EP7={kxF)bU z?P50bmE#G<=BD*x+V0n4Ime10s#N$&USee~cl;>x{+^bP(`Y{a;+xsS0;KQ>(cRU&aXek4j~lV-`&WrW+3;R`i8(RVi zKhtex_BN|qOa!NZ-iXx|fsFMM!6K6fg6LrW{tI70zG z-<9I;b{ycFSbMqbZT=U90oL}XcdOnXQx<%6b7znxBP%sA?e;xoX+mmJL_lSD=-$i? z;ZnMj_8%h)3vK<%tc2>MUfrKE)cxw95w+_Y`+fVxLidZ@m;F_IofIu<^oG6f_gRFR zJ$>NpVzO?-vct!(?=1Cy_mX{Vbldbyg*nUkRD1Fpc1g$NNOLPKo0p%@S(OW>dv}*w z>2Ge?TJVlD{a%IM_7jCldkEu#p16k9(YK7WjBR4xEa#nHy|s7BW{|72z-iU~&*x5v zmrZxOPKL8xf2TexS11-+Z)BWZ>QZCeq?ZiQvvG(QWU6tSu*QR0s+b`%>cJJ2Za96&t(dYk8Pmz7YtqDoHR84lbGnN=o-s5?#AB%btu?ac7dgZ5!KuFXx(O0&H#|S|aQ)Bq%}(K;Jlm{x z^3CQy*|L>X6z6nrFv^j4IwOi^u=nb|Z$WI~JFj@3T+Aq*F*LWE=R1FQRd7s<#2NRs zdcI!^-c5u?_g?TqK9nE$EIx8+%EaZWPg-Z? zadtOOg>Ng?Uq5XnW;&vs?dM=<{>7@GI=?sIWe$(_bV`Ml>hqs#cv6fUNx8e?dN`-D z6NKZl=NY!!Q$9Vr@zdqr7eVfb;{*N$Qh3+sy8^2dntpzdezA|#T|{`MgF7oXq?$Y# z<@8hEEZmFP>`LS1q#l>+gt(7iwTPt6`y}-iexxir+@QQ&Y3s-IiZ&I4VF{HeS2uPo zDMO$%Mfs2^*%Kh0#3{BZI9^9UlttgkPkYMh)y2!EPUeF6pR&}n;0;tC~=!5Twqg|Ke*4Xo1E0uHfM1mMv-})_iMpjEzf1Z_4PUZmI<|X zWSxfa9+@xk_*kJa&f5yrhwnKT8yoZ=&mDCzdu32H*>sm|T)s>AX4MN}-fvRUqdbcg zsVUn}-!?d$r`?*&8#~|fV4sm;?i`USupm;hja)qfcs1=ucYbm(4tv4KZ|_Yd9o@%z zBIjNgk}4PNUTdBmSd9CgIqY!YiTgRiqVmrlrugZ5ylVS>^uE3VG9>}WiwfWKgf|-n zHKoZ^Kg-ml9pj)14ONN$6fvZ{lDTsz>f0U%8zyEU21bTu3`ojpx*?E^WSS(+je%lp zXwAkZFo_GTb#4p%(TCPLRtJ5TM{BLyf&`YKwRd}hrdV)c;DuMv6waFT*gNRRDzw2d zJ1Cn4t$of9s%1uNrA0vsjA*U3I4FEMT3c5aRES9oehdo4S{+A(A$FF_G}DBs70 zpc-zpc9t_ZhXbwYiv&|Ji4|hO1HvecOEY+yAFVN)2aiajwTV5!t!Pe7swD(3GNH7( z)jLizyvBSZF}ojr^Uab-tqG6^B->S)dWYRE0j>nwF4o3U;k z>O*dBLRza?LM;?9HigiB%(oh9p_QU2ZE#&EJ1bh7un1j_DQ0sBHN&j4+8L^k(ULtw z%Op^~m4whr%%lCsLj|^@G}?zyMl1lnkB45tdMo1%>!W*sKkTLk%4fJP?4=Z1<8u#N zhDk_xh1FuUZvU_!n8d5VFgeU;v%z6JSdAkrYzDKG1s_(w0@c!TKCDX!t>xB*bz^)% z4PhIwS*z|1qhe8TX(H?mC(1{h2{Xm4zt0kW7mJo79O2y9{N-|o|HS&p6AI_WS}!jT zzl~`=C=tFH^Iw&0xTpuJ?^$B_E{t#Gk?=muR~#pP$x3F2XJKQzQ4l_ldAzbJybbFu zjuf6Cf@rB}4|m4~?$HshgqfGx7tV^Aob@R@%@gfR)+Rz2n;3(w5v*9Z<~t%Huv(p4 zgqAkSH<1ycMURoZ2ocO=gTjaktdG&6h;nq0;8a<}C@Mg>5Mhcn-Yt)i7C>o(brArI zM|?{}F;=p~w&()T#yf$R@0hCgn(qDnbKQTOz-p zjinBe^kED;M!v(8+;@pQigmliHF5znbjz;D6C8|6>G0-v0*)}C%tRm_3Ewctm|p}HJGLwxnhbwfc2S2{Y=(!ju03t zfV+tMjUB1U@nB9~NS#;r!YB8$4e^H3ckim@JBCcXzaKA|{^)Ibt^M?j*IG?^g{?=< zjAV5i*o0ILQ$0@RY|04pzQh}}<)P;)^WDN*y!lH{mTc2m6y8!57VZ1Nq49&hgNT&| zX=4QLtCpQdHOtJY{^;9DWmJa99gCJS1ZB!05mjq}WXrI{@Q6st;-0Eg`j5)j*e(*g z24y2)|L<+ z9c~qpY`yciYrXd+-C*8(vq`h}@1?n%Y<|YM=W$XMZt(S)<*X;RuAe)zkXW-mt>oMm zCM~}~`Sz3_D>QQr8*cMwc~NrRw%I-oU|TD8VN0`X`sTUgz7v6&yUJTuPBGkP>0lrU zr~qMJFQ*S{S&|uhOl2K%p9J1I%on)t^b|<|Lq(*?}JX_F{whrgFxo!*pCd26&2bwQOGv1zVoXvH9#&UvMtktz4Ie?~^fBonQ7dK5CA& z>f_t!r!EgqpR6+R0(X+~kL0nWr8luTJipDRC?#4s7L>3#D9nX#m-5Lgr{1nflXpJ7 zcMso(7KMOCp$JMrK27P=aRu@U>*!=2rxeeZ-&JoD+9iyY9!*_iKGI&dmTUQ}nfdYd zlu!4%KGWJ)FP8qy-OFHQp}bjO*v)#Y0JjzM>dff506R))Z?sZnDyMp!^?0XL-3BGk zF!`ddh8dd#iIGn170*PJ+D^WTjR>bjULVp)e0H#nB{ZSjGcqZJ-@+BFF$|q{(aW@( zlioLWM3Ug_w^yfXqbmM!*aIq zm$q3rN~YPftmFI+TRbzrJ*W8yZ_M4SyoNj4QPQe%pkrf}2iF7kw6R4qa-sC?91ZzE zGltp##t7A0=FfN3YF91fl^@=lUaBsjE`74;V_t6HK|;!>Cl^UO4hq|)PusP3zrE`b z`J+;2xLx06OVWPZbsJV~mA+vx6FBQMynI9CdxL_HTSmq&H2C^-zTVT(Tu}M*if;6J zgM&ePEt>m(yv-*och(yk7h03?&(@1xz)`Y~Tv##Ve=2yJeBt?7hvh*RTaWA>J{*)r z)^NQu!+!+7lStq{9IJA`@1o+Yy8B+fA501!_uSSu-{>rksY#xen0kmSaBMpLwsd3m z;mrptH->Le({|ETWLbCRq@Qwa=Y_N8L^6_AAALru0wZleR%F_Xbb%{0?Q>d)~`F8en#Kx;`!B z=AHf+b(?;?$@7@ib;0GMYjTxBK5s9-Ipbojl-Rxys1SMkVvKTA`unaz`>OZ1Bn#K~ z`*=_8Ebjf5x51=7^@1QlC;wo|zRRaf4OeyvPRy$lC$;Cs+POu9QzQ%5;G%+fJwtc! zjNS{)Gcyiu)8F|dFJWzRiouuD^_C6;&%RhTAGOYQ)VV2HbL>^X1N@!cTJ7TgQRb1a z_D#4egr5n}k4k5J;=ApZ_NV+8G1~Ply;F^w89JlZSD$L0eASs>+YWCrjdJQ!z*4lauyps@r!E(FQu`{2Ett9EY-3_SW9N3(<-5;KRhU#i*Nc>ijV)dK zgTi!67mw?6A#K|D(#gUvM3Ug9s*svwBckSU>*-FxNBI|>F1hMG_x0;f3QGxlWup4S zF7TOgNKS`ZfM8#*PN{!+8&`MU8J}E{;2vuIkC_{Btvg9EkBmt+HoGJy+e6(7jHD{@ zjJ3tgq43~1dzw2&dGGEsFFWpg-j1tp%=7myR~0Db%wgvzrmcU>mVb0J!B$CnSWf!f zt7PTYzDG{%56|vZ+aQw$*dpiXcVH>nxuhxD0jM@-h8`%x^;bH^ltSZKB<>M@ z^QIx|&B3mgxvmFY`kBLgU3{bCg#7m(c5i;Cp{05GOv9bZ@|R&meEPu_aDJciCr)?u z18ENG25F5S1K!`c#g&(9)ex9h?8n;ZU65wCg2ngnb;0L01wy`@mH|@b`w4TcB54`i zl=hsx6_dTM6?JxGFXQZ3>`{6VXvxxFHK@7d24&AFM4g^vCOycDmc^2a&xO$yShA2` z9BqXqNh24cMX+RQ@p?2Db~WMdh)%&0BG4aggry-b-$gs4HLzkZx){klz_Y>VQ)m+6 zITW3VH*h7^Cf&jHahtlGNx5tk-AXqh&F@l$mH9tfn*YjYj4x=#jGCZUjRwRh*q}Aux)^uN zs^EqgYs?po%`qLAZ05Zf0@errb&a8dy-oUqwk*mGJc#zmE#u539Xa#VcU71vR`qRKyhI7#jKc%5hfb&1aF86fJ+_tNtEq$C*BX!v8)@v9P3}9 z2XBG(>fei>#%TKo@ue7z<2`;0rf&BL-j#(1&Vc<#Cfz9xsj2RxjX{F@Bp7#2R}NRRL_+W3Qm3S@ziH7^$6$PCCRLD~XW` zcw;LOE?~zO`w6Y+^T(o*1U~X(+#p*Z_9UuFRWOzl^SYi$>`jz=TqL#?t&l`x+m|7( zxjdiQ2F%4`g~7Syu>fr|5sSTnDxiqPHer@mNyN@#gRYc`&B9(0Xq&{AV#9yEHdX*z zofDR^?b!Njbcv;3i*vWdhDhUlNXsH)?_pQc_PE$_R$LgVo*4TBkBcUee#T1H;^IDkeYguU$f!}DS1Q5q`V>G zL<^)HK7UvQyY3dd61U^;V6Vu2*)6#K{yT} z9YO|#Ot?3m(8uB8NelTWG)AF}dh$tQpVe&x&G$ zxPEsQ2Q$Ri_hjiX<7!9|@3Q!BLp&w_lra;I0o*%tssI;G+EaLHa{??cN@csm!*Zb@ z`KTYne9pPO6P6b@IpCX1Qo!L; zwq)dzwq$^bQP^e@o#)>V%S&7H-)h1#`EY)nJSRY9Npx z)Iz9(P!HiYga!zW5bluHW!)9ff&Dw*zYC#>H_%*mE{v`H$fB^HbJf>SL&u)XQ@nU;Il z_Otg~%O$iGaGh_thzgL-x4gg>Mf$}S`n!h5*IJfgi{eFPOCNTi-K=R@gYk{kwG3cg zJiXoGiq(`FTNbfHR{3$uU2K_ue$w&^?V_ozg$rZrc-rEDDc0?1F~>HWs243En04cC zT9mL=DM)SEh)L|EwItJDs4(C2!=W2t{Eu-HS!M=?M0T))^`0!@n(IJNuO44~(N7Kw zs;uwz{ol)YY5Q(j<*vTh!x}P>yQ;XX>e&uu;jGJ^`xggdf5`1>*C}rL#<$Vroz&g= znf|VF717y+m#Q`SiB7%q;w}+p!!2?9Da?%)OkEb#mgD{3g)3z{I`UbYy9Wba@7*6j z`=PHU@{V@6vTK~_E)(GkH+Xv8?ILeq5uI&!5S>b`GKIY*9+ms!xB{DQB3 z-*V#fkA*4FR&d+o$<9aW^`b|+$h`tdxS)x!fLfu`7Keqx?#$dac)@R2aALmZ4ldQ- zt@)rCfA1(GS6wiF`aV6T5W;SU*uwo9!Y$UzoG#pu+}-P^;N8l6V_#_5m)T@XMZPw9 zH*2ZK(aR6i=a)==R#$!Iq`RE^`U!!ejB6nxDpn!~2tI22Y*LIr63<`XGGWiI9y4`G zkT$emj=LpbV@%Q%-^MoXxKp+MDx8+?fE|^`*I~WO72TK z@%@c9o4fSW8&swal0Hc8p5IzT=qeeh+x{fNZa(L$LO=@$_gwefHN`Rnr&L{G_4pjA zr|GoCk?wurGJ}4@Yq)2D_;&4%(73&Rq{&{&2$v#<%=@@s+D%c#`(#5ODiL78jiZRHU7Cyb!VZ4 ziMjQyuF92_xlbmt7HVVSWKKN@vJA2eJYFk!**dW4SfWL@g80U(s_VvYWpVBvyrQ;s zMsMbG>%;o1Z=LH;`m$K3$8Km>Ys4->-?-kjE0%R5S~JK2B9572ZT-tT@ao_cmd%hgjW!{A-pEN;eE3% z7A0d2#@EO7=gfR%?5GEje zA&DhSKDT77^&owDG`YYJ(~|MGlRnI_-1=^EITI`chbH$hBMcoQlUi&zpWH8#t&sfW z%j65l28w8tFCZHFbyAoSmPe;2Pp~80;y)+*xsl2&7x^(4cddt=mNT(UjtB0wDxicr zT%7b-jJ%QuiU_HaxmjQ-zl!{T1(6ulAv?1|f~g^Sk_jQKG9}+cD?{tZ*@6fq%7wgu z8Wp*Ntd3Y)>PD7ehvi*w@*oE+i$ln{IE2$6jO?Nc3F!sopYV7ir5BP5QAzc4WM5u{ zBku;80=omLwd7%lgTOj+F+%67Cx^4*G)RY=$b}rRRA?igV1(tZXXGnvu-yBKtc2i4 zUXwR6;^ateZ^_xh@Q~e0CND0-Z6fWNA*U_F=~s_a;#nctmyI&a&Hc(Rz@F^uYSRJV zIeYwnd*}QlI9}LYC)#b})+Y~#2khTTsi+Ayce^SrU)Fl6j_c)joewctdpJzxE2uN- z*_^fR_#M#?yp?$7+{V%z2-i)X<`u=p(dI^?e=J_uZ}FfjO>jPBwe$h~_eQUV!ED3P z<1S*Mxi&k8)gLrwJWAQ*Dq`54U$(ZvR4lWaIb^Fz{-)y=N8DRywwXL@AG&mM!*tfb zx*dvjeFCpo;9HZ!uS5p7L=J!9$bHE4#%oq4F0bk9j$&0SF6n2pFJ8TECd?C_*}s!K z+pRS#Xz|lf=E0`JHT+3icORd-a?PDLK{xeO@ypp4Hp<4fKJw?EABo-AExvt)w3{r4 z*XCp93w@4uA1dtk;diRdj`Npk&z;zQ$6n3Kv?ScFWUlem(85L5#y#H%Vh5EPGY6$b z>NdWfB}$7bI|nPy%Ug2hm$f&U61YBbeiY=@blSwKuX#w0vz;|zPuRZY>s;AK!@jZg zaI89VY%O=w)xkoyvltbl<;ii zK6{&v-ACWLt^<$)zZ)RwMtv~6{qRPrM%Y2Z=_;>r6%(Nif-54!7lm*0 z4}Q6JeAhORdXd_Z<+k_M5wWD1fo2NoLA2%u0Lz^p|U@E(BVR7^0Sw| zn`R1_$4`H=I=D0Wq~Trj=W*-Se~mLvU?mJnKmBC8Y~{Gjd7m3oTVg`ys2`eu6Xe)~xf(<{#D3&j4bv#OKtJP{n{!Wwkqog&>nSsMO4ayqVr_`=( zi2A^jbNpFqbo(a*5j(yfE2Ub!UD@iEuH;u;t-Z}h+L-l9SBXBx6=l3-f4FJ+4!7

(gA%Vb8J5+NyPxgsb;koGqng;zHoYmy3IEw10T_J z|09mJPx7j>t`%#O+2U#&9gB6Q>83q4ZRK0}cF5*_V# z`i8p>5PlwcOTGK#xbc94DSMVSj=S0==KlM^+aosVo?LHJhy72RJFD*8-ah-@a`~7KzlG3b;hAeCSs$vR6U`~SgyTf+D0Y@d>ytme<>?OUlwk9> z!1;M+3OI_$moy4=ahKiS{Op7f!!?VF{J|&bZHotP1YRq(I4hKUQAF$1>s9AmB-q=7 zH;i*j9pz9jiIE$cnYvd{8W5&ALm-KanG|ZA8;zxqeAToxsFcv=gq?;);)62x@98wN z8n=2>7;zA|z8JLbU?#^CMt<7!+r{4xws?6G+!N|qMvA%V!*ln->lx|7hey=-d*eCA zBSeSy$KC$AJ-2>3`ux{}p+ojB{M2pUciyn~qF&0jW-OfVx0r}@{A!yZ@u1YW(EEXp zq0!;`7f<`D*O9(xr$mPf+Ntc<>Ee0dq7obGdQRod_Z@^~{hm{=3MJH6@E98TF;2dd ze)!?0~ROflA83QRkCvFv#FdxLrh3jr3O?$mNHzgjs%m*80Dbj|<#tL}Q1PduM4 z$2iOs^qr1+zv8TOk8&-^%i^s)5WA{v_(FZv;H}|^S*quJR(0UljHp16Tcg)kI8v_{ zVdOr|9Bj`1;q!x3vo#Vl+ooEBOJ`FbMb3xEYQKGI@2F@YxBxF@PU$uND-BB7j)OCzhjijtnW80>ld6Z4twmBci!wSo_n7($k;K zc?eJLT#r$@(RJ?dbZJ^?kn|(Db8^pL>pp0$JJH~_*WJZ1CT`Cb!lh5krp3F6npO{N z+eI6;w~Lf)4;G1i)_XtBM@(zgspx(!^VeMXXL_OqE*vj8JXFpDJ++r289he!t&3Bq zR*6VS3>L0z-rY~CwAz1Dm0zT2q1xs`e+EbWf#(1Dna+5$pS|zCXZRra+KmivoWcwY z4E{d*H0?-nQj}wiFhN)*OL@uy%U4R2Bh0Yey@GNZ!Ix`M*x9(9tZm84n`e8W_ze~? zq(l)St=Fee7?B16E*~akb_NCxk=&2bQl#BR6m51Wn6ZIkg=8LYtSBLzu(aMviD!dl z>uw56T%1T`cgk_3qeGsQ875dp9H7)9{2GB2Nj_NG#8UzgzPbd89-@zuO4%X=%XLMR zT7*7ZOmV>B{7Kg5C?^p^`^qVbh#uS($|BTTbDd&}plhor8m?3t>4pCMi3NL-2JV5#n z`b3dM6rUKU97akJ3Z(;~f22{|kaFWRr5x#SVvbUZ$e+MbAL3xSjfr{`X&+>v+99RJ zGO7=vH;%gy4{*9cu!nmUE>3CmGWA@Y~xsXPe1R*8BB(Z6*i)e*tV zHK@i2->??-K2l!PrN$$46@4lr;{O%vsUgU~&sb5Zh@K1^>KCNHLk`p|Fu0CaY3d2(z#{hp{ z_UAdDsIVcB!ETd_xkgNYzk>~qQHbf!Z_v)Xq)IReZwv%x8w2G)?@KEB-V=;LvV^ux zAR6rJHG%{FmXm!&mB7^ilUG#iuO{3Pyc*zNQN?8tYi@||@%sR?y z394RE<&_X7E3Y>n+gKPFWVjg^;J@F``NaEsf{?Dk*%_*cjCxp--L0&bl!uU^433VU z&IqdvHHq~=vzsc1vj&dc(BYLJu$wB6n!xlR+0z?pU*P)N1btBXi%GiB)$Ax-*jwP= zcOZ-V*KUq9IkL*L_#yB$RScchW3Qw|x*mQE z0+f$I!eI6_l}ipW*-J3ef0PL_!A?b%@am5S0gurjQDFLpKH0W!U<|l?2?Ft7f|m3C zJ<}&)EAA<{_J)f7@(esfxDRs%gG$a|QNZ<{u7v+BWRn7`-cpr!AqJFQT*h1jJ^IR; zfdO70e?R9F`NV?JutEm9alPF?25LPgsQ(DgGSK>a=4hbeEq!`RGhz#GOEWMy`7$u@ z{#K88b_|f;Qqk{xfUgHy^&F`8(8JUo;*3QE;LuAI1@8#KY#_CV$|Z{!ym4`J!wB?l zEE14Q^qoz{_y>}MIadDV9{VF+2l~xnY)n9qT_V;DaJ^JbG!$Q43YQLtvtb5Tgya&Y zbzn;`btM`FalO#7lWD=gqaaueM2%3f?`}^Jawq&bBud8h(PKuc50ZWJ=;Uj8a45U_ z=yTzVwCNY1Z3^JZFLFIXHY=lxQ2VIpPd5R3KUKoisq)XH*m(u~V^RqEfvL)HW4SBJ zz`(a;4B5b=pDKe66x?BxmU`s`xco<d+=MK<)#ybE-$HB@0stRh9x^|W6u}usN%0jrm*1R4F8K6p{{hh#st`1Pq z->QKQh%>EL2nFs6p^~6aorW#O=fW3wVxd=TUH&#hNG%ksRSOjd4uf<%_6))ZeYg(D z4pF5*{vZ|m(s~72Il;=Nj_{iLEZUOqI3C6Co zqz8@pwTmLW=MyzS_z+dr4Os|sKXaP!5)2GB`~IG2AJ5R=D>on}EX4mGVPaok+Ik3X zlKf^23~=B3{hUwa2h<^|3hFnB_f!ePd&hriv-*b~@#72lCvc;Sl4oF$`mF^q^$iGm zPgO_t6hS?V{o^3`J#{&do(N?FJ-_y&QP{+k#v2Ag-cv<@)G$>L^?+Bh+Bbp*0|T!4 zZ}WV?mSMViF~cwxWI)a@{4T_qzPW_~S@$rp|9F0fGoKz2F6<7t&n^uz9FY4!RYfhe z{Qxa(@CTeDREgYxFgB3(fj;4-WM z588XGf1jh7fclZXruaTVXZy~CfpzLMY*jfz3hpup_(WAe)hJBNT<(KAH9HKCrDvNz zsQg4#LYas)6B%8Q;RoDNmToGCz}HVyd3nSk)>945{cvBdgeMeS62G7GiSa_=4B*SU z?V{kUHVw;(+&)9YPAm@xdv$4;zl$LSXAc@a(~rhJh!gT>C3?ml5s)6XPl~p#`H-9 zj|SJq>D_c7I4cz3pTpFlN(6?Y)1XlqEC#X_r9F#A#7Ba!pMdi}pF@F}EpP`Y;JaOanRi85$^Sm8QsfQ9`hc~XfxdQmTmwnc@ZGw z6i9(MD4k~0Q0LoOV3_8`g=ZoRKa5*d}{yo(^wBH6g2YLE=h5uu!#ry&c zY0!hV@JL#^{w^#=fX>AT5l~O1Pf#n;a~l|;(vuS|8pJbzDvfTsHG&5LZ-}F_V_$l9 zZ5CXwm!Th*?pVX%JdM7^w?ZM)3(ApbP+B{0vDb8P_=la^aT3oP;AE_T)3S7n%m;E` z=}XJ%D^-Fm)dAH77P_gTs2NX+3eHx+X}AX?dg)qd1tnkUwx0FBd1x2Z-2fSvo+OvS zz*njqs>!v0iRU@g5(&5brJB|NnJKy#%%`9i)&RFDsvP`_0+4{9kHDEJ`t;pJ@D-qU zimHG{BW@bvV?b(}ivDH{SRr^J@S3JaYbt{Cg0g9Za&u|z^7sMI8XvD?fhHtJgu=_?|y?eev?HVBV8~u=R{V68P1~>80{eQdJ65Rd8 zq_nR4=6iVR`d|N>DG4xrr_aU8?@)6du>4L>K|&C`1*Ctcr@z1d;sI_jOD8lQv_mBx z$To)k9Fl>d9>(|5Svir14oA~2Xn%yimnL#V|08O0hR-U*LsxLZE6~#Dt}l!Refsoc zFJ=bX<_B_SsIurhcQ!>I9)m$U2JiYyvq}(!s9**>m(Yd>e8zJsODyv4%AC%8@${wbTO1 zdHPX#(<&u26S`0rx^U?{tpx7#R3-FU68yaTToT;nSm0f7slz5I(LmgcCXHH@btQRV z5-#GCa9m5Xle1uGo*v*FKcGb|Gtr=AoFWITe$XRz7ef9%8x3TwXxKhph)@VjF+kRr zDhcAP=ywxdJCcS39CrMFUVu2W#DJ45F(Sb9S3at?09BN*$AC#IdTQniDYz1FWP!e1 zFCiS-GBF@XCPo4b+R#%cD#8{IxEJZGRC^KP9l&mpE*6a7x54p6sv7E`=8r;;l;KvG z0iCoo`5&r{0Wx(l(*HS#PE!-PgrL)h;0uqXOL;wz`AI+9Y=1)YGMi(7+~XKAjeo3w zIAtfzP0$-xpcc4fe?R9FJ;05hR1MU+Ou{vtOK?tTaGqs_( za8Ghc?zNYNP*IR*N)toF>huYoPG`7jap?S=fNlXzILt&a1bc-uw1A^2 zqC)wH6K|)&F+Ya0vNW#a!8%5o68Z|IueBg%4P>JHXFD}k0p^S}VUVtZU-q|izzs&4 z1mh)DjANLQhW)tO-W!}@ zq7SAK!SUcN6MZQxAou|w#!SOMMcn3Jc{7W9eSAn<8H0%)iiQp1I zf`!h%mIdOiVCOG94#7P^J_}vG9>EJiHwz6rlzt+(9gtw9i4l-}yZMV-x;>2DU2rp4 zx*r@Xz~+6cla=PCK+mB4|H?mi#qC)g0DZy%_u!@CY$g9A9_Hy0{2y^?*nLe+*U?V6 z(sE%?EPbz73c6Tn3h4X19TqDV@4&g$gaNQLJ1e{TrxPouf8FI19Y2n;LpdLKOJ2IQ zW`ZqjG(~sB2|GilZ~lNCh{2I8jo`K$e>!ju_V@W$V#dG5(eNR3VJWn2sd>{?po@(j z7!)=bQ=jSp_cD4UXfJ~^aR=BfqharinIFEc=7pj42FCc(9LybL{9@uuN~eXv;pjoe zrIr?fj%D;^OGPxB0d96WuE`GZSoi~JddvhOxIZ|?PLHYU2;Kvp{%R*foN@Xs;Nqa0 zs>J~r)&kpKcrb$Nf#V!B>{i_R;oVLpXw?TelW-z`Kj#zsKsyIL63K{=2H@nRJZM>jkkaKM5LQZA< zBOT!3;~)OtHw#h$_I6i?Y?5HlSrC@`ObXz5Y1sRFIbLXT8!+Xi55XP5ivj)@UVz~C zfCTx`A&KIPx{{&7djor17*me@fsAAJZX`Jl4+LZ2|o?H%;~D1&_%T0hp==iQo#T} zeJXxJyKp;!gut(JL;&JEVCOG94&qELVzIg6u@e7Dc-n(Q{F`BrJHvc+X^wOl3<=P% z7o>cGP-7xchXr~aN`nO%=@(<^)BLHNnNt z0o}KBQmbOXI$@eL{GToM2t%Rb1P~`olZWqriV?JM9^4V8Y2o4k8A0o-0JjKD9Tx$N zL?D`)1h$LNlwm6YLFX=kLZnp(Jb@_Fh3;g~)srl>>VJo%LP)a1Q#H#fTHq!i!ptBC zXY1EflNjHRib#SjqBKDnok+WFk?KP4;K?v!{^v6e6oelk{fa@NC=GjoQXvXQpG-ms zBH96de?_$o)Dx82F?0a#e1}6A7~mHy^uhGZKSsrX@w3AmJpXIyeVAq~hodTb2i%v_ zRAu6l?DRIA(40kHy6Ex$W%!kBP_~?=B^#e)cOpYDgZ3HrAjG&Np{+?A&N%^iPM?qk zkC)T9WRF9IQDYI#FGQdr_KZvJ8#Rdn1o+1_(6vXvK{05AcrG|12B$V2T!tuBmv5;Sf|e24I4h=CsxFh0V8nk3{I2HAk;OtuOLl7u{A zAPy24Z#07fN!kiU_yO9pT_UGTA38Gf&zvC>SCg3fDI0xNuwtLD1m?^@$R7@Zb3|1k z!@i}5TuoxG4A7FIDauAC*=>0GaJ>EuWOBeUz{~URrzUaGG6!(l=171{Db$=oDQM&K z4>@4rbB+w?#fYN_F~cku)NROB04t@@!5K1$tcs}Va#7Iq<(~U{R`)|D_)YVFuTnLM^5J>FE;>&V$jYErX~;k) zWjX>|8Ja%gBBPXGxTF`K#C*(2QQmUkF_e~t>~7lc(~crOJ+^cUt4UNi zpAYOW=1ZeSF|LjPa*xYcveJuPV4gYgBOz$QXV-HHj>} zXTX=3LaYbb^N`o$O@;uoI^^*F6Nw0aP2xdq;2{qqF$^4)hh~(xfeZ39MYt)oL6pho zYcX)lDp6aqwnyWDoC0h-q;wZ)R0RhWXgsoTK{~gbD*Fo8N`Ddq!%Dh2SiGOu(u}aG zfU}d$EK8Jqa{`@+vZvlChcIYmX%PgXiqPZmM><*hLxtM#rtbvdf5)hpxbrNXe}^JX zLN+4FuFg#$y2JqXny~aLT$9*#xfx_D($vw*@EiFfX6A57Q=mGi^!IZ<@zQWJ7*eER zFR_0>txST{W+1La6W{COVVl)DCix6n34pmV2N6211pAh(pWeD^xTi-2G#)1>VB9ZEWP5}tAVq> z^fbcCHa>MsPgumhf92CmDyxf-yfYMzb!lvVrVB=ddmH?9K*RhHXsSW0zpnzeYBVu) z=FA^|zPKFTL}<{Ur8Bon3o{|oD>Td}=wBJ|N{^Qt*TX1cg4xc}JJH$IpjnM3j|OTL z*R9zZc&H_8{j(mBNj{$_XtbmU&B)+?-Ff_PCm$4r<6M9M!}a%bKGE3eFZt-de6w0BychV%U023kiS(?TLr`G<_2J~3g)&xz-JX4(g*8F!2e|ues5j{k5(UW z4Ix(8OoE_K@XJW54KZ7Qkp|T4>Ik-Lpqcg|1od|Yr!{DbNJmW? z(0L2HC&3N)?ObjG4*a@`e>H$Nh65UZ(h|(vKHo_ouSrvoUGhgif4k>G)FklIq{+#` zp|9si)Ek8U!NWb|*F^}^HFJ0pT+pORBV4ho1(UL2_=~{U{}uii7i-!i_@GIXM|w;; z_B2Qyy6^&2^y{4f#`W~XBv95uhi9z?T_6W0fsYnV8W~?Ie6PyHS1<`oP03=QNsEU3 z?GorfsP~H|0d*Z&9I$D_qYw6Atu|2D0IfxS52Qp75v+%uH&IqmP~<}91v?=>qQys> zCc(UeH2LRe0O+)6LlaVNPlBh~@G=93cj0Z1cN#>c{kXB_GXdq!O-q0c#19c za>)E7dT3xT1~px_{k4-J^UbjKX@?;^_y*3Y8bhAslZ8P1YB*#KaC|is z@{tDA)wJd4H*nct4Nu#_-61kt;gT7Lqx#?Lk76R58p65?O3JK(l6fl;R16@W!Wn}# zKrlkwsEZM0C#mA7x{xO~6tlW}6FZ-Vld{}tuhLJ(% zcd7#8cr<9#haKw0l97*b3OJ`+1BkwfBLf)&nC8O{b2C|vIYPH05&3H$#yTuZCWHM3 zFvOfd8X~2Blneq^P$ZVzhY_1^lsi?thQZJZx5xhtXvM_O>12=#KcC4VY=3^%{&!Eb zY%=^0qR^gp8^WHL^2o^NG9}n^34*(qkU4Dn45$N+bYA_#)wDXbven8uIT*+vYA8HTIF6W-|HM?3Vv z{JPloho24HHKxJe;Db&?lSJR27Qz3xIXC};2M${21`n;JGnM*|F1OW$CJ2@Jm_TJs zpHQOsl7NJsxQ;aP{U8I!B8oEb)2DHvvy&5m{|tY)$e;w*#jo#Jn7yrwbnQ|l6z(P3 zp7{d@QyAXj3_#A5CJGLl(%|pX!5M^hl?BwBqE6~Z(60Y0<7z{ijH0j_q)k_vNu_1^ zl|TAo%i64T&NhD8X}~9QlSkhh!9** zDMWSOHzG(EJ@-ASy|#b%oafwg?>*<9^WLw;&;%D#^PxXz6qL{nkrowUu#@cc<7S$g(fJL;%)PZMLQ!>)NjzhrzWXGWe7@jBZycV?@CH16m9ClnJ6LS25NFfq&^`ZT`#B7fysx95 z54AOn+~QF2>V&)wD9!dUt!0j~h%P&LO!}jaUXOwJDfkIymG+I=MEH;{@#LYJ8$zs%-b%p`QS1Se@C}wAtjK(%*46g&jSfVjfO2Fto&kSz~ z4qRZY<=6Y(=fV3XVcJZc@}>*Z$hma8gy+N3$JJLJVg#)Soas9F&x;JNu%PcTF1BNB zOK0XLY{*3+U+A;>uWJnVxVYl+N1=*4FmW^5qOZ82osr~HlVyv`JKR;b;TP=)2KwQu zzRAcjmx{+X6zN9zDeDySnnSt_)WMWX#aH1~htOAj7#V#E)ZeQQG9a``(Yw#Z%pC_g z|6WS!vsXf1aYzFyz7*w-Q9JQJ}QjlS8{L$`KxkySz@AQeOZ(PvCStW&rOEpuDNX=27K`iB5dGu}PgG-p1@326_ z$L2qp-+U2d_wW}$*mENL9rE^zyxHx$78Z0mtfXoQ;_beK&hKdVE!aZej*diS`u2tq zXJ21EaH&^G6j!FExdtN#BUd#=M7T`~^jiaae14zF@6Ywso6P17btX%0&IYr&E?}w8 f$qo2({T8d=S{I0L*c~os#MO=62Cuym>DurIRV#2t diff --git a/dist/gisservicehelper.json b/dist/gisservicehelper.json index 472941d..61737cb 100644 --- a/dist/gisservicehelper.json +++ b/dist/gisservicehelper.json @@ -7,6 +7,11 @@ "timeout":"300", "max-reqs-per-child":"1000" }, + "winservice":{ + "name":"gishelpersrv", + "display":"GIS Helper Server", + "description":"SolInf GIS Helper Service" + }, "database": { "dbhost": "solinf.arvixecloud.com", "dbname": "strassenab", @@ -17,6 +22,7 @@ "gis": { "filesbasepath": "N:/TEMP/data", "sql": "select annee_demande,LPAD(numero_demande,6,0) as numero_demande,adresse_%%fournisseur%% as adresse from table_gis where adresse_%%fournisseur%% is not null group by adresse_%%fournisseur%%,annee_demande,numero_demande,numero_demande_%%fournisseur%% order by annee_demande,numero_demande;", + "webparam": { "fournisseur": { "1": {"name":"LuxPlan","sqlreplace":"luxplan"}, diff --git a/dist/gisservicehelper.pid b/dist/gisservicehelper.pid deleted file mode 100644 index 11604ee..0000000 --- a/dist/gisservicehelper.pid +++ /dev/null @@ -1 +0,0 @@ -25656 \ No newline at end of file diff --git a/error.log b/error.log index 824560f..4156b58 100644 --- a/error.log +++ b/error.log @@ -1,2 +1,19 @@ Starting Starlight/0.0306 (MSWin32) http server listening at port 6060 Starting Starlight/0.0306 (MSWin32) http server listening at port 6060 +Starting Starlight/0.0306 (MSWin32) http server listening at port 6060 +Terminating on signal SIGHUP(1) +Starting Starlight/0.0306 (MSWin32) http server listening at port 6060 +Terminating on signal SIGHUP(1) +Starting Starlight/0.0306 (MSWin32) http server listening at port 6060 +Terminating on signal SIGHUP(1) +Starting Starlight/0.0306 (MSWin32) http server listening at port 6060 +Terminating on signal SIGHUP(1) +Starting Starlight/0.0306 (MSWin32) http server listening at port 6060 +Terminating on signal SIGHUP(1) +Starting Starlight/0.0306 (MSWin32) http server listening at port 6060 +Terminating on signal SIGHUP(1) +Starting Starlight/0.0306 (MSWin32) http server listening at port 6060 +Terminating on signal SIGHUP(1) +Starting Starlight/0.0306 (MSWin32) http server listening at port 6060 +Terminating on signal SIGHUP(1) +Starting Starlight/0.0306 (MSWin32) http server listening at port 6060 diff --git a/gisservicehelper.json b/gisservicehelper.json index 472941d..1c3e8d1 100644 --- a/gisservicehelper.json +++ b/gisservicehelper.json @@ -7,6 +7,11 @@ "timeout":"300", "max-reqs-per-child":"1000" }, + "winservice":{ + "name":"gishelpersrv", + "display":"GIS Helper Server", + "description":"SolInf GIS Helper Service" + }, "database": { "dbhost": "solinf.arvixecloud.com", "dbname": "strassenab", diff --git a/gisservicehelper.pl b/gisservicehelper.pl index 65debb0..71ea98a 100644 --- a/gisservicehelper.pl +++ b/gisservicehelper.pl @@ -5,6 +5,7 @@ use Getopt::Long; use Time::HiRes; use Data::Dumper; use JSON::PP; +use Win32::Daemon; use lib (dirname($0)); use Plack::Builder; use Plack::App::File; @@ -12,19 +13,23 @@ use Plack::Request; use Plack::Runner; use Module::Service; use Module::GISFiles; - +my $START_TIME = time(); +my $DEFAULT_CALLBACK_TIMER = 2000; use FindBin qw($Bin); my $cfgfile = ""; my $stop = 0; +my $install = 0; +my $uninstall = 0; +my $service = 0; my @match = grep { /par-.*inc$/} @INC; my $basedir = dirname($0); if (scalar(@match) > 0){ $basedir = $match[0]; } -print "BASEDIR:".$basedir."\n"; -print $Bin."\n"; -GetOptions("config|c=s" => \$cfgfile, "stop" => \$stop); +# print "BASEDIR:".$basedir."\n"; +# print $Bin."\n"; +GetOptions("config|c=s" => \$cfgfile, "stop" => \$stop, "service" => \$service, "install" => \$install ); #get Configuration file (JSON format) in same folder than exe if ($cfgfile eq ""){ @@ -35,7 +40,51 @@ if (! -e $cfgfile){ print "Config-File: $cfgfile not found!"; exit(1); } - +$| = 1; +if ($service == 1){ + Win32::Daemon::RegisterCallbacks( \&CallbackRoutine ); + my %Context = ( + count => 0, + start_time => time(), + ); + Win32::Daemon::StartService( \%Context, 2000 ); + sub CallbackRoutine { + my( $ControlCommand, $Context ) = @_; + my $Return = undef; + + if( SERVICE_CONTROL_INTERROGATE == $ControlCommand ){ + $Return = Win32::Daemon::State(); + } + elsif( SERVICE_CONTROL_RUNNING == $ControlCommand ){ + } + elsif( SERVICE_CONTROL_TIMER == $ControlCommand ){ + + } + elsif( SERVICE_CONTROL_START == $ControlCommand ){ + $Return = $Context->{last_state} = SERVICE_RUNNING; + } + elsif( SERVICE_CONTROL_PAUSE == $ControlCommand ){ + $Return = $Context->{last_state} = SERVICE_PAUSED; + Win32::Daemon::CallbackTimer( 0 ); + } + elsif( SERVICE_CONTROL_CONTINUE == $ControlCommand ){ + $Return = $Context->{last_state} = SERVICE_RUNNING; + Win32::Daemon::CallbackTimer( $DEFAULT_CALLBACK_TIMER ); + } + elsif( SERVICE_CONTROL_STOP == $ControlCommand ){ + $Context->{last_state} = SERVICE_STOPPED; + Win32::Daemon::State( [ state => SERVICE_STOPPED, error => 1234 ] ); + Win32::Daemon::StopService(); + #exit(0); + } + else{ + $Return = $Context->{last_state}; + } + + return( $Return ); + } +} +# my $LOG_FILE = "$Bin\\testlog.log"; #read config; my $cfg = (); if ($cfgfile ne ""){ @@ -47,58 +96,92 @@ if ($cfgfile ne ""){ close(CFG); $cfg = JSON::PP::decode_json($strcfgdata); } -if ($stop == 1){ - my $pidfile = $Bin.'/'.substr(basename($0),0,rindex(basename($0),'.')).".pid"; - if ($cfg->{webservice}->{"pid"}){ - $pidfile = $cfg->{webservice}->{"pid"}; +#install Windows Service +if ($install == 1){ + if (!exists($cfg->{winservice}->{name})){ + print "we need at least the service name from the configuration-file {...{\"winservice\":{\"name\":\"\"}}...} to install the service\n"; + exit(1); + } + if (!exists($cfg->{winservice}->{display})){ + $cfg->{winservice}->{display} = $cfg->{winservice}->{name}; + } + if (!exists($cfg->{winservice}->{description})){ + $cfg->{winservice}->{description} = $cfg->{winservice}->{display}; } - print $pidfile."\n"; - my $pid = undef; - open(PID,$pidfile); - while (my $l = ){ - chomp($l); - $pid = $l; + #my $ServicePath = $^X; + #my $ServiceParams = "".$Bin.'/'.basename($0); + #if (basename($0) =~ /\.exe$/){ + my $ServicePath = $Bin.'/'.basename($0); + my $ServiceParams = "--service"; + if (dirname($cfgfile) ne $Bin){ + $ServiceParams .= ' -c "'.$cfgfile.'"'; + } + #} + my %service_info = ( + machine => '', + name => $cfg->{winservice}->{name}, + display => $cfg->{winservice}->{display}, + path => $ServicePath, + user => '', + pwd => '', + description => $cfg->{winservice}->{description}, + parameters => $ServiceParams + ); + if( Win32::Daemon::CreateService( \%service_info ) ){ + print "Successfully added.\n"; } - close(PID); - if (defined($pid)){ - system("taskkill.exe /F /PID $pid /T"); - }else { - print "no PID-File found!\n"; + else { + print "Failed to add service: " . Win32::FormatMessage( Win32::Daemon::GetLastError() ) . "\n"; } - unlink($pidfile); exit(0); } +# #uninstall Windows Service +# if ($uninstall == 1){ +# if( Win32::Daemon::DeleteService( '','gishelpersrv' ) ){ +# print "Successfully deleted.\n"; +# } +# else { +# print "Failed to delete Service: " . Win32::FormatMessage( Win32::Daemon::GetLastError() ) . "\n"; +# } +# exit(0); +# } +#stop the Server +if ($stop == 1){ + system("taskkill.exe /F /FI PID ne ".$$." /IM ".basename($0)." /T"); + exit(0); +} -my $gisoptions->{database} = $cfg->{database}; -$gisoptions->{gis} = $cfg->{gis}; + my $gisoptions->{database} = $cfg->{database}; + $gisoptions->{gis} = $cfg->{gis}; -my $allapp = builder { - mount "/gis" => Module::GISFiles->new($gisoptions); - mount "/" => Plack::App::File->new(root => dirname($0)."/htdocs")->to_app; -}; -my @args = (); -if (!exists($cfg->{webservice}->{port})){ - $cfg->{webservice}->{port} = '6060'; -} -my @allowed = ("port","access-log","error-log","timeout","max-workers","max-reqs-per-child","pid"); -foreach my $c (keys(%{$cfg->{webservice}})){ - if ( grep( /^$c$/, @allowed ) ){ - push(@args,"--".$c); - push(@args,$cfg->{webservice}->{$c}); + my $allapp = builder { + mount "/gis" => Module::GISFiles->new($gisoptions); + mount "/" => Plack::App::File->new(root => dirname($0)."/htdocs")->to_app; + }; + my @args = (); + if (!exists($cfg->{webservice}->{port})){ + $cfg->{webservice}->{port} = '6060'; } -} -my $pidfile = $Bin.'/'.substr(basename($0),0,rindex(basename($0),'.')).".pid"; -if ($cfg->{webservice}->{"pid"}){ - $pidfile = $cfg->{webservice}->{"pid"}; -} -open(PID,">".$pidfile); -print PID $$; -close(PID); + my @allowed = ("port","access-log","error-log","timeout","max-workers","max-reqs-per-child","pid"); + foreach my $c (keys(%{$cfg->{webservice}})){ + if ( grep( /^$c$/, @allowed ) ){ + push(@args,"--".$c); + push(@args,$cfg->{webservice}->{$c}); + } + } + # my $pidfile = $Bin.'/'.substr(basename($0),0,rindex(basename($0),'.')).".pid"; + # if ($cfg->{webservice}->{"pid"}){ + # $pidfile = $cfg->{webservice}->{"pid"}; + # } + # open(PID,">".$pidfile); + # print PID $$; + # close(PID); -my $runner = Plack::Runner->new(server => 'Starlight', env => 'deployment'); -$runner->parse_options(@args); -$runner->run($allapp); + my $runner = Plack::Runner->new(server => 'Starlight', env => 'deployment'); + $runner->parse_options(@args); + $runner->run($allapp); + print "Started\n"; -print "Started\n"; + \ No newline at end of file diff --git a/htdocs/img/SOLINF_WEB_72DPI.png b/htdocs/img/SOLINF_WEB_72DPI.png new file mode 100644 index 0000000000000000000000000000000000000000..3bef3b3fb5b08e378ce4418c8ebed1d6b633b8bd GIT binary patch literal 5948 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 literal 0 HcmV?d00001 -- 2.39.5