bplist00_WebMainResource_WebSubresources ^WebResourceURL_WebResourceTextEncodingName_WebResourceMIMEType_WebResourceFrameName_WebResourceData_~http://www.fussverkehr.ch/aktuell/aktuell/detailansicht-news/?no_cache=1&tx_ttnews%5BbackPid%5D=117&tx_ttnews%5Btt_news%5D=183UUTF-8Ytext/htmlPO fussverkehr.ch: Detailansicht News

Aktuell

Häufig gestellte Fragen zu Fussgängerstreifen und Antworten von Fussverkehr Schweiz

 

Nach tragischen Unfällen an Fussgängerstreifen, sieht sich «Fussverkehr Schweiz» immer wieder verschiedenen Fragen und Behauptungen konfrontiert. In einem Positionspapier haben wir nun die häufigsten Fragen beantwortet:

1. Mit welchen Massnahmen kann die Sicherheit der Fussgängerinnen und Fussgänger auf dem Fussgängerstreifen verbessert werden?
2. Was bringen Mittelinseln?
3. Was bringt eine Geschwindigkeitsreduktion?
4. Was bringen Kampagnen?
5. Hat es zu viele Fussgängerstreifen?
6. Fussgängerstreifen bieten keine Sicherheit. Sie regeln nur den Vortritt.
7. Fussgänger treten überraschend auf die Fahrbahn und die Fahrzeuglenkenden können nicht mehr bremsen.
8. Gibt es gefährliche Fussgängerstreifen?
9. Sind schwach frequentierte Fussgängerstreifen gefährlich?
10. Ohne Fussgängerstreifen achten die Fussgänger besser auf den Verkehr.
11. Sollen vermehrt Fussgängerstreifen mit Lichtsignalanlagen gesichert werden?
12. Sollen vermehrt Über- oder Unterführungen gebaut werden?
13. Fussgänger sollen zu ihrer eigenen Sicherheit Umwege in Kauf nehmen.
14. Soll das Handzeichen am Fussgängerstreifen wieder eingeführt werden?

Download

10.05.2012
#'+/37;?CGKOSWO7$/* default styles for extension "tx_felogin_pi1" */ .tx-felogin-pi1 label { display: block; } /* default styles for extension "tx_indexedsearch" */ .tx-indexedsearch .tx-indexedsearch-browsebox LI { display:inline; margin-right:5px; } .tx-indexedsearch .tx-indexedsearch-searchbox INPUT.tx-indexedsearch-searchbox-button { width:100px; } .tx-indexedsearch .tx-indexedsearch-searchbox INPUT.tx-indexedsearch-searchbox-sword { width:150px; } .tx-indexedsearch .tx-indexedsearch-whatis { margin-top:10px; margin-bottom:5px; } .tx-indexedsearch .tx-indexedsearch-whatis .tx-indexedsearch-sw { font-weight:bold; font-style:italic; } .tx-indexedsearch .tx-indexedsearch-noresults { text-align:center; font-weight:bold; } .tx-indexedsearch .tx-indexedsearch-res TD.tx-indexedsearch-descr { font-style:italic; } .tx-indexedsearch .tx-indexedsearch-res .tx-indexedsearch-descr .tx-indexedsearch-redMarkup { color:red; } .tx-indexedsearch .tx-indexedsearch-res .tx-indexedsearch-info { background:#eeeeee; } .tx-indexedsearch .tx-indexedsearch-res .tx-indexedsearch-secHead { margin-top:20px; margin-bottom:5px; } .tx-indexedsearch .tx-indexedsearch-res .tx-indexedsearch-secHead H2 { margin-top:0px; margin-bottom:0px; } .tx-indexedsearch .tx-indexedsearch-res .tx-indexedsearch-secHead TD { background:#cccccc; vertical-align:middle; } .tx-indexedsearch .tx-indexedsearch-res .noResume { color:#666666; } .tx-indexedsearch .tx-indexedsearch-category { background:#cccccc; font-size:16px; font-weight:bold; } /* Additional styles, needed for the tableless template_css.tmpl (styles don't conflict with the original template) */ .tx-indexedsearch .res-tmpl-css { clear:both; margin-bottom:1em; } .tx-indexedsearch .searchbox-tmpl-css LABEL { margin-right:1em; width:10em; float:left; } .tx-indexedsearch .result-count-tmpl-css, .tx-indexedsearch .percent-tmpl-css { letter-spacing:0; font-weight:normal; margin-top:-1.2em; float:right; } .tx-indexedsearch .info-tmpl-css dt, .tx-indexedsearch dl.info-tmpl-css dd { float:left; } .tx-indexedsearch .info-tmpl-css dd.item-mtime { float:none; } .tx-indexedsearch .info-tmpl-css dd.item-path { float:none; } /* default styles for extension "tx_cssstyledcontent" */ /* Captions */ DIV.csc-textpic-caption-c .csc-textpic-caption { text-align: center; } DIV.csc-textpic-caption-r .csc-textpic-caption { text-align: right; } DIV.csc-textpic-caption-l .csc-textpic-caption { text-align: left; } /* Needed for noRows setting */ DIV.csc-textpic DIV.csc-textpic-imagecolumn { float: left; display: inline; } /* Border just around the image */ DIV.csc-textpic-border DIV.csc-textpic-imagewrap .csc-textpic-image IMG, DIV.csc-textpic-border DIV.csc-textpic-single-image IMG { border: 2px solid black; padding: 0px 0px; } DIV.csc-textpic-imagewrap { padding: 0; } DIV.csc-textpic IMG { border: none; } /* DIV: This will place the images side by side */ DIV.csc-textpic DIV.csc-textpic-imagewrap DIV.csc-textpic-image { float: left; } /* UL: This will place the images side by side */ DIV.csc-textpic DIV.csc-textpic-imagewrap UL { list-style: none; margin: 0; padding: 0; } DIV.csc-textpic DIV.csc-textpic-imagewrap UL LI { float: left; margin: 0; padding: 0; } /* DL: This will place the images side by side */ DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image { float: left; } DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DT { float: none; } DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DD { float: none; } DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DD IMG { border: none; } /* FE-Editing Icons */ DL.csc-textpic-image { margin: 0; } DL.csc-textpic-image DT { margin: 0; display: inline; } DL.csc-textpic-image DD { margin: 0; } /* Clearer */ DIV.csc-textpic-clear { clear: both; } /* Margins around images: */ /* Pictures on left, add margin on right */ DIV.csc-textpic-left DIV.csc-textpic-imagewrap .csc-textpic-image, DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap .csc-textpic-image, DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap .csc-textpic-image { display: inline; /* IE fix for double-margin bug */ margin-right: 10px; } /* Pictures on right, add margin on left */ DIV.csc-textpic-right DIV.csc-textpic-imagewrap .csc-textpic-image, DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap .csc-textpic-image, DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap .csc-textpic-image { display: inline; /* IE fix for double-margin bug */ margin-left: 10px; } /* Pictures centered, add margin on left */ DIV.csc-textpic-center DIV.csc-textpic-imagewrap .csc-textpic-image { display: inline; /* IE fix for double-margin bug */ margin-left: 10px; } DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image .csc-textpic-caption { margin: 0; } DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image IMG { margin: 0; } /* Space below each image (also in-between rows) */ DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image { margin-bottom: 5px; } DIV.csc-textpic-equalheight DIV.csc-textpic-imagerow { margin-bottom: 5px; display: block; } DIV.csc-textpic DIV.csc-textpic-imagerow { clear: both; } DIV.csc-textpic DIV.csc-textpic-single-image IMG { margin-bottom: 5px; } /* No margins around the whole image-block */ DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-firstcol { margin-left: 0px !important; } DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-lastcol { margin-right: 0px !important; } /* Add margin from image-block to text (in case of "Text w/ images") */ DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap, DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap { margin-right: 10px !important; } DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap, DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap { margin-left: 10px !important; } /* Positioning of images: */ /* Above */ DIV.csc-textpic-above DIV.csc-textpic-text { clear: both; } /* Center (above or below) */ DIV.csc-textpic-center { text-align: center; /* IE-hack */ } DIV.csc-textpic-center DIV.csc-textpic-imagewrap { margin: 0 auto; } DIV.csc-textpic-center DIV.csc-textpic-imagewrap .csc-textpic-image { text-align: left; /* Remove IE-hack */ } DIV.csc-textpic-center DIV.csc-textpic-text { text-align: left; /* Remove IE-hack */ } /* Right (above or below) */ DIV.csc-textpic-right DIV.csc-textpic-imagewrap { float: right; } DIV.csc-textpic-right DIV.csc-textpic-text { clear: right; } /* Left (above or below) */ DIV.csc-textpic-left DIV.csc-textpic-imagewrap { float: left; } DIV.csc-textpic-left DIV.csc-textpic-text { clear: left; } /* Left (in text) */ DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap { float: left; } /* Right (in text) */ DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap { float: right; } /* Right (in text, no wrap around) */ DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap { float: right; clear: both; } /* Hide from IE5-mac. Only IE-win sees this. \*/ * html DIV.csc-textpic-intext-right-nowrap .csc-textpic-text { height: 1%; } /* End hide from IE5/mac */ /* Left (in text, no wrap around) */ DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap { float: left; clear: both; } /* Hide from IE5-mac. Only IE-win sees this. \*/ * html DIV.csc-textpic-intext-left-nowrap .csc-textpic-text { height: 1%; } /* End hide from IE5/mac */ DIV.csc-textpic DIV.csc-textpic-imagerow-last { margin-bottom: 0; } /* Browser fixes: */ /* Fix for unordered and ordered list with image "In text, left" */ .csc-textpic-intext-left ol, .csc-textpic-intext-left ul {padding-left: 40px; overflow: auto; height: 1%; } /* default styles for extension "tt_news" */ .news-single-rightbox, .news-single-imgcaption, .news-latest-date, .news-latest-morelink, .news-latest-category, .news-list-category, .news-list-author, .news-list-imgcaption, .news-list-date, .news-list-browse, .news-amenu-container, .news-catmenu { font-size:10px; } /*----------------------------------- clearer -----------------------------------*/ /* prevent floated images from overlapping the div-containers they are wrapped in */ .news-latest-container HR.clearer, .news-list-container HR.clearer, .news-list2-container HR.clearer, .news-list3-container HR.clearer, .news-single-item HR.cl-left, .news-single-item HR.cl-right { clear:right; height:1px; border:none; padding:0; margin:0; } .news-list2-container HR.clearer, .news-list3-container HR.clearer { clear:both; } .news-single-item HR.cl-left { clear:left; } /*----------------------------------- tt_news LATEST view -----------------------------------*/ .news-latest-container { padding:10px; } .news-latest-gotoarchive { padding:3px; margin:3px; background-color:#f3f3f3; } .news-latest-container H2 { padding: 0 0 2px 0; margin:0; } .news-latest-item { padding:3px; margin:0; } .news-latest-item IMG { margin: 0 5px 5px 0; float:left; border: none; } .news-latest-category IMG { float: none; border:none; margin:0px; } .news-latest-item > p { margin:0; padding:0; } /*--------------------------------- tt_news LIST view -----------------------------------*/ .news-list-container { padding: 10px 0; } .news-list-item { padding: 0 0 10px 0; } .news-list-container H2 { margin: 0px; } .news-list-date { float: right; display:block; padding-left:10px; } .news-list-imgcaption { padding:3px 3px 0 0; } .news-list-container IMG { float: right; margin:0 2px 5px 5px; border: none; } .news-list-category IMG { float: none; border:none; margin:0px; } .news-list-morelink { padding-left:5px; } /*--------------------------------- LIST2 / 3 ---------------------------------*/ .news-list2-container, .news-list3-container { padding: 0 0 10px 0; } .news-list2-container, .news-list3-container { background:#e5e5e5; } .news-list3-item, .list2-subdiv-hdr { background:#f1f1f1; } .news-list2-container .hdr-left, .news-list2-container .hdr-right, .news-list3-container .list3-left, .news-list3-container .list3-right { width:48%; float:left; padding:5px; } .news-list2-container .sub-left, .news-list2-container .sub-middle, .news-list2-container .sub-right { width:31%; float:left; padding:5px; } .news-list3-item { padding:5px; } .news-list3-item, .list3-subdiv, .list2-subdiv { border-top:5px solid #fff; } .news-list2-container IMG { float: right; margin:0 2px 5px 5px; border: none; } .news-list3-container IMG { float: left; margin:0 5px 5px 2px; border: none; } /*--------------------------------- tt_news Page-Browser ---------------------------------*/ .news-list-browse { text-align:center; margin-bottom:20px; } .activeLinkWrap { font-weight:bold; } .disabledLinkWrap { color: #999; } .disabledLinkWrap, .browseLinksWrap a, .activeLinkWrap { padding:0 1px; } /*--------------------------------- tt_news SINGLE view ---------------------------------*/ .news-single-item { padding:5px; margin-bottom:5px; } .news-single-img { float: right; margin:10px 0 0 10px; padding:0; } .news-single-img img { border:none; } .news-single-imgcaption { padding: 1px 0 3px 0; margin:0; } .news-single-rightbox { float: right; width:160px; text-align:right; clear:both; } .news-single-backlink { padding: 10px; } .news-single-additional-info { margin-top: 15px; padding:3px; clear:both; } .news-single-related, .news-single-files, .news-single-links { margin: 0; margin-bottom: 3px; padding: 3px; } .news-single-related DD, .news-single-links DD, .news-single-files DD { margin-left: 20px; } .news-single-related DT, .news-single-links DT, .news-single-files DT { font-weight: bold; margin-left: 5px; } .news-single-files DD A { padding:0 3px; } /*--------------------------------- SINGLE2 ---------------------------------*/ .sv-img-big img, .sv-img-small img { border:none; } .sv-img-big { float: right; padding: 10px 0 2px 10px; } .sv-img-small-wrapper { padding:15px 0; } .sv-img-small { float: left; padding: 0 10px 10px 0; } /*--------------------------------- tt_news Archivemenu (AMENU) --------------------------------- */ .news-amenu-container { width:165px; padding:0; margin-left:10px; } .news-amenu-container LI { padding-bottom:1px; } .news-amenu-container LI:hover { background-color: #f3f3f3; } .news-amenu-container UL { padding:0; margin:0; margin-top:5px; list-style-type: none; } .news-amenu-item-year { font-weight: bold; margin-top:10px; padding: 2px; background-color: #f3f3f3; } .amenu-act { background:#fff; font-weight:bold; } /*--------------------------------- tt_news Categorymenu (CATMENU) --------------------------------- */ .news-catmenu { padding:10px; } ul.tree { list-style: none; margin: 0; padding: 0; clear: both; } ul.tree A { text-decoration: none; } ul.tree A.pm { cursor: pointer; } ul.tree img { vertical-align: middle; } ul.tree ul { list-style: none; margin: 0; padding: 0; padding-left: 17px; } ul.tree ul li { list-style: none; margin: 0; padding: 0; line-height: 10px; white-space: nowrap; } ul.tree ul li.expanded ul { background: transparent url('../typo3/gfx/ol/line.gif') repeat-y top left; } ul.tree ul li.last > ul { background: none; } ul.tree li.active, ul.tree ul li.active { background-color: #ebebeb !important; } ul.tree li.active ul, ul.tree ul li.active ul { background-color: #f7f3ef; } /* Styles for catmenu mode "nestedWraps" */ .level1 { padding:1px; padding-left:10px; background-color:#ebf8bf; border-left:1px solid #666; border-top:1px solid #666; } .level2 { padding:1px; padding-left:10px; background-color:#ddf393; border-left:1px solid #666; } .level3 { padding:1px; padding-left:10px; background-color:#cae46e; border-left:1px solid #666; border-top:1px solid #666; } .level4 { padding:1px; padding-left:10px; background-color:#b0cb51; border-left:1px solid #666; } _=http://www.fussverkehr.ch/typo3temp/stylesheet_dd5b3f3ae7.cssXtext/cssO>body{ /*background: url(../images/bg.png) repeat-x #fff;*/ /*background: url(../images/bg-shadow.pngx) top center #F3F3F3 repeat-y;*/ /*background: url(../images/test-bg.jpg) top center #333333 no-repeat;*/ background: url(../images/bg-spot.png) top center #afafaf no-repeat; font-family: arial, verdana, sans-serif; color: #555555; font-size: 12px; } .clear{ clear: both; } a{ text-decoration: none; color: #004EFF; } a img{ border: 0; } ul{ margin: 0; padding: 0; } h2 { font-size: 15px; padding:0px; margin:20px 0px 10px 7px; } #wrapper{ width: 960px; margin: 10px auto 30px auto; /*border: #999 1px solid;*/ border: #afafaf 2px solid; /*padding: 1px;*/ background: #fff; /*-moz-box-shadow:0 1px 3px 0 #999999;*/ } #service-nav{ width: 960px; margin: 20px auto; height: 22px; position: relative; color: #333; line-height: 12px; margin-bottom: 5px; } #service-nav ul{ list-style-type: none; position: absolute; right: 1px; } #service-nav ul li{ float: left; } #service-nav ul li.lang{ border-right: #333 1px solid; } #service-nav ul li.disabled{ padding:0 10px; color:#939393!important; } #service-nav ul li.last{ border-right: none; padding-right: 20px; } #service-nav ul li a{ display: block; padding: 0 10px; line-height: 12px; color: #333; } #service-nav ul li.service-nav-search{ margin-top: -2px; } #service-nav ul li.service-nav-search span{ padding-left: 10px; } #service-nav ul li input, input.tx-indexedsearch-searchbox-sword{ border: #999 1px solid; padding: 1px; } input.tx-indexedsearch-searchbox-sword { font-size:12px; } .tx-indexedsearch .tx-indexedsearch-searchbox input.tx-indexedsearch-searchbox-button { background-color:white; border-bottom:1px solid #555555; border-left:medium none !important; border-right:1px solid #555555; border-top:1px solid #555555; font-size:11px; line-height:16px; padding:0 !important; width:13px; } div.sbutton { float:left; } div.search-field { float:left; } .tx-indexedsearch-searchbox-sword sword { height:20px; } div.search-form { height:20px; display:block; margin-top:20px; } #header{ background: #fed400; height: 125px; position: relative; } .gfx{ /*background: #FED400 url(../images/header.png) no-repeat !important;*/ background: #FED400 url(../images/header-spot.png) -110px 0 no-repeat !important; /*background: #FED400 url(../images/header-bars.png) 0 0 no-repeat !important;*/ } #header #logo{ position: absolute; right: 30px; top: 30px; width: 318px; } #main-nav{ height: 27px; border-bottom: 2px solid #747474; border-top: 1px solid #fff; background: #9a9a9a url(../images/main-nav-bg-2.png) repeat-x; } #main-nav ul{ list-style-type: none; margin-left: 208px; } #main-nav ul li{ float: left; } #main-nav ul li a{ display: block; padding: 0 20px; line-height: 27px; color: #fff; text-shadow: #000 1px 1px 1px; font-size: 16px; } #main-nav ul li.act a, #main-nav ul li a:hover{ background: url(../images/mainnav-act.png) repeat-x; } /* alternative #main-nav{ height: 32px; border-bottom: 2px solid #000; border-top: #fff 1px solid; } #main-nav ul{ list-style-type: none; margin-left: 193px; } #main-nav ul li{ float: left; } #main-nav ul li a{ display: block; padding: 0 15px; line-height: 32px; color: #fff; text-shadow: #000 1px 1px 1px; } */ /* Home */ #top-container{ background: url(../images/home-main.png) no-repeat; height: 260px; padding-bottom: 1px; } #top-container #content{ width: 500px; background: url(../images/bg86.png); margin: 15px 0 0 15px; padding: 10px 15px 0 15px; font-size: 14px; color: #333; display: none !important; } #top-container #content p{ margin-top: 0; line-height: 21px; margin-bottom: 15px; } #bottom-container{ position: relative; } #bottom-container #border{ position: absolute; bottom: 0; right: 20px; width: 200px; padding: 7px 15px 20px 15px; background: #9b9a9a url(../images/home-border-bg.png) repeat-x; border: none; } #bottom-container #border p{ color: #fff; } #bottom-container #border h1, #bottom-container #border h2 { color: #fff; text-shadow: #000 1px 1px 1px; } #bottom-container #border h2 { margin: 0 !important; padding-left: 1px !important; } #news{ width: 500px; margin-left: 20px; } #news h1{ color: #333; font-size: 15px; padding-left: 3px; } #news h2{ font-size: 13px; margin: 0; } #news a:hover{ text-decoration: underline; } #news a{ color:#555555; text-decoration: none; } #news p{ margin: 6px 0 1px 0; } #news .news-item{ border-left: #FED400 10px solid; padding: 0 0 7px 10px; margin-bottom: 15px; } #main-container{ /* border-top: #fed400 10px solid; */ padding-top: 23px; padding-bottom: 10px; } #sub-nav{ float: left; width: 200px; padding-top: 5px; font-size: 13px; } #sub-nav ul{ list-style-type: none; padding-left: 15px; padding-right: 15px; } #sub-nav ul li{ list-style-type: none; border-top: #999 1px dotted; } #sub-nav ul li a{ color: #555; display: block; line-height: 21px; padding-left: 2px; } #sub-nav ul li.act a{ border-right: 8px solid #FED400; } #sub-nav ul ul{ list-style-type: none; padding-left: 20px; padding-right: 0; } #sub-nav ul li ul li{ list-style-type: none; } #sub-nav ul li.act ul li a{ border-right: none; } #content{ float: left; /* !! */ width: 500px!important; margin-right: 35px; margin-left:25px; /* border-left: #000 1px solid; border-right: #000 1px solid; */ } #content .img-wrap, #content img { border: #999 1px solid; padding: 1px; overflow: hidden; } .subpage #content .img-wrap{ height: 110px; } .subpage #content .img-wrap img{ height: 110px; } #content .content-img{ width: 496px; } #content h1{ font-size: 16px; color: #333; padding-left: 10px; padding-right: 5px; margin-left: 5px; border-bottom:1px solid #FED400; border-left:20px solid #FED400; margin-top:30px; } #content h1.csc-firstHeader{ margin-top: 10px!important; } #content p{ padding-left: 7px; padding-right: 5px; line-height: 18px; margin-bottom: 18px; } #border{ float: left; width: 175px; margin-top: 190px; padding-top: 31px; padding-left: 5px; border-top: #FED400 10px solid; } #border a { /*color: #FED400;*/ color: #004EFF; } .home-template #border a { color: #FED400; } .subpage #border{ margin-top: 105px; } #border h1{ font-size: 14px; color: #333; padding-left: 2px; padding-right: 2px; margin-bottom: 5px; margin-top: 20px; } #border p{ padding-left: 2px; padding-right: 2px; margin-top: 5px; } #border h1.csc-firstHeader{ margin-top: 5px; } #border .border-bottom{ border-bottom: #747474 7px solid; margin-bottom: 9px; } #footer{ background: url(../images/bg-footer.png) repeat-x; border-top: #999 1px solid; height: 150px; margin-top: 20px; position: relative; font-size: 10px; color: #fff; } #footer #address{ position: absolute; left: 228px; top: 15px; } #footer #address #address-left{ float: left; width: 130px; } #footer #address #address-right{ float: left; width: 160px; } .tx-indexedsearch, .news-list-container { margin-left: 5px; } div.news-list-container { margin-top:15px; } .gotoarchive { margin-left: 20px !important; } .tx-indexedsearch h2 a { font-size: 16px; color: #555555; font-family: arial,verdana,sans-serif; } div.news-list-item { margin-bottom:20px; } #content .news-list-item h2 { padding-left: 3px; margin-left:0px!important; } .news-list-item img { float: left !important; } #content .news-list-item p.bodytext { margin-bottom: 12px; padding-left: 3px; } div.news-single-backlink a, div.news-list-morelink a { color:#004EFF; padding-left: 7px; } div.news-list-item div.news-list-morelink a { padding-left:3px; } .news-single-item { margin-left:0px; padding-left: 0px; } .news-image { margin-left:5px; } .news-single-item img { float: left; margin-right: 10px; } div.news-list-item a img { margin-right:10px; } .news-list-container img { border:medium none; float:right; margin:0 2px 5px 2px; } #content .news-single-timedata { padding-left: 7px; } .browsebox a, .news-list-item a, .news-single-backlink a { color: #555555; font-family: arial,verdana,sans-serif; } .news-single-item h2, .news-list-item h2 { font-size: 15px; margin-bottom: 10px; margin-top: 20px; } #search-button { background-image: url(../images/pfeil.jpg); background-repeat: no-repeat; border: 1px solid #555555; border-left: none!important; background-color: white; padding: 0!important; width: 13px; line-height: 16px; font-size: 11px; } #tx-indexedsearch-searchbox-sword { font-size: 11px; } .news-single-item, .news-list-container { padding-top:0!important; } .news-single-backlink { padding-left: 0!important; } .news-list-morelink { padding-left: 0; margin-top: 5px; } .tx-ttnews-browsebox a { font-size: 12px; } .csc-textpic-text { margin-left: 0px; } #content .csc-textpic-above { margin-left: 2px; } .csc-textpic-text .bodytext { /*padding-left: 0!important;*/ } #content ul, #border ul { margin-left: 15px; } div.tx-indexedsearch-browsebox p { padding-left:0px!important; } div.filelinks h2 { margin:5px 0px 10px 2px; } div.csc-textpic-intext-left-nowrap div.csc-textpic-imagewrap { /*margin-left:7px;*/ } .news-list-container h2 { margin-top:20px; } #content ul { margin-left:6px; line-height:18px; } #print-logo { display:none; } .csc-textpic-text p { /* margin-left: 2px;*/ } .csc-textpic-text h4 { margin:5px 0px 0px 7px; padding:0px; } #content ul li { margin-left:20px; margin-bottom:5px; } fieldset.csc-mailform{ border:0; margin-top:15px; font-size:12px; margin-left:6px; padding-left:0px; } fieldset.csc-mailform label{ text-align:left; margin-right:10px; } div.csc-mailform-field input { clear:both; } fieldset.csc-mailform input,fieldset.csc-mailform textarea{ margin-bottom:10px; font-size:10px; font-family:Verdana, Helvetica, sans-serif; border:1px solid #ccc; padding:2px; } fieldset.csc-mailform fieldset input{ float:none; display:inline; /*width:50px;*/ text-align:left; border:0; } fieldset.csc-mailform fieldset label{ display:inline; float:none; text-align:left; width:300px; margin:10px 0; } fieldset.csc-mailform fieldset{ border:0; } fieldset.csc-mailform fieldset legend{ display:none; } fieldset.csc-mailform select{ width:220px; margin:2px 0; } fieldset.csc-mailform option{ padding:0 5px; background:#fff; } #mailformformtype_mail{ padding:2px; margin-left:40px; background:#eee; border:1px solid #ccc; width:80px; text-align:center; } div.csc-mailform-field { min-height:20px; width:475px; margin-top:15px; } #mailformGemeinde.csc-mailform-check, #mailformSpenden.csc-mailform-check, #mailformNewsletter.csc-mailform-check { width:auto; } ul.browsebox li a { color:#004EFF; } .tx-indexedsearch .result-count-tmpl-css, .tx-indexedsearch .percent-tmpl-css { display:block; float:none; font-weight:normal; letter-spacing:0; margin-top:-20px; text-align:right; font-size:12px; } ul.browsebox { margin-left:0px!important; } ul.browsebox li { margin-left:10px!important; } div.tx-indexedsearch-res { padding-left:0px!important; margin-left:0px; } div.tx-indexedsearch-res h2 { margin-left:0px; } div.tx-indexedsearch-res p { /*padding-left:0px!important;*/ } div.tx-indexedsearch-res #content p { padding-left:0px!important; } p.tx-indexedsearch-descr { padding-left:0px!important; } p.tx-indexedsearch-descr descr { padding-left:0px!important; } div.tx-indexedsearch { margin-left:6px; } .tx-indexedsearch .tx-indexedsearch-searchbox input.tx-indexedsearch-searchbox-sword { height:15px; } input.mf-check { padding:0px; margin:0px; margin-right:1px; border:none!important; } div.smalladform-field-check { float:left; width:23px; /*padding-top:3px;*/ } div.smalladform-label-check { float:left; width:417px; margin-bottom:5px; } div.smalladform-field-radio { float:left; /*padding-top:3px;*/ margin-bottom:10px; } div.smalladform-label-radio { float:left; margin-bottom:5px; margin-top:15px; } fieldset#mailformMitglied { padding:0px!important; margin:0px!important; } div.smalladform-wrap div.smalladform-field-radio fieldset#mailformMitglied input { margin:8px 0px 0px 0px; } div.smalladform-field-radio fieldset#mailformMitglied label { margin-left:10px; } div.smalladform-wrap { } .mf-input { float:right; width:250px; margin-right:90px; margin-bottom:0px!important; } .mf-text { width:250px; float:right; margin-right:90px; } .mf-submit { float:right; margin-right:266px; } form#tx_indexedsearch div.search-form div.search-field input.tx-indexedsearch-searchbox-sword { border:1px solid #999999; padding:1px; height:13px; font-size:11px; } #footer a.mail { color:#FED400!important; } a.mail img, a.download img { vertical-align:bottom!important; border:none!important; } a.download img, .download img { margin-right:5px; } a.external-link-new-window img, a.external-link img { border:none!important; vertical-align:text-top!important; padding-left:2px!important; } h1 img, h2 img, h3 img { display:none; padding-left:0px!important; } a.keinIcon img { display:none; } a.keinIcon img.social { display:inline!important; } a img { } /* h1 a.download, h2 a.download, h3 a.download { display:none; }*/ div.csc-textpic { margin-left:5px; } div.tx-ttnews-browsebox p { padding-left:0px!important; } .news-list-browse { text-align:left; } .news-latest-container hr.clearer, .news-list-container hr.clearer, .news-list2-container hr.clearer, .news-list3-container hr.clearer, .news-single-item hr.cl-left, .news-single-item hr.cl-right { display:none; } /* * Tachoshop CSS * */ div.tx-x4etachoshop-pi1 { float:left; } div.image { float:left; margin-right: 15px; } input.shop { display:block; float:left; margin-right:0px; padding:0px!important; } div.tx_x4etachoshop_products h2 { font-size:15px; padding:0px; margin:0px; margin-left:0px; line-height: 15px !important; } div.tx-x4etachoshop-pi1 p { margin: 0px; padding: 0px; margin-bottom: 1px!important; margin-left: 0px; padding-left: 0px!important; } div.tx-x4etachoshop-pi1 .number { padding-left: 7px; } input#tx_x4etachoshop_pi1-email.required, input#tx_x4etachoshop_pi1-name.required, input#tx_x4etachoshop_pi1-firstname.required, input#tx_x4etachoshop_pi1-strasse.required, input#tx_x4etachoshop_pi1-plz_ort.required, input#tx_x4etachoshop_pi1-telefon.shop, input#tx_x4etachoshop_pi1-fax.shop { display:block; float:right; margin-right: 200px; width:180px; padding:0px; margin-bottom:8px; } label#anzahl, label.anzahl { float:left; } textarea#tx_x4etachoshop_pi1-bemerkungen { display:block; float:right; margin-right: 200px; width:180px; padding:0px; } input#senden { padding-left:30px; /*margin-right:356px;*/ margin-top:20px; } hr { margin-top:10px; } hr.gelb { color:#FED400; background-color:#FED400; border-color:#FED400; } div.tx_x4etachoshop_form { margin-left:7px; margin-top:8px; } div.tx-x4etachoshop-pi1 label { } div.product-wrap { border-bottom:1px dotted #999999; margin:10px 0px 0px 6px; padding-bottom:10px; } .product-wrap h2 { font-size: 12px !important; } .product-wrap label { margin-right: 10px; } div.tx-x4etachoshop-pi1 #content p { padding-bottom:5px; } .csc-default object { margin-left: 7px; } .csc-mailform-label { clear:both; } td { vertical-align: top; } #content th p { text-align: left; } th { border-bottom-style: solid; border-bottom-width: 0.5px; border-bottom-color: #555555; } #content td p, #content th p { margin-bottom: 0px; line-height: 15px; } _?http://www.fussverkehr.ch/fileadmin/templates/styles/styles.cssXtext/cssOeՉPNG  IHDRBNtEXtSoftwareAdobe ImageReadyqe<"iTXtXML:com.adobe.xmp 讟/bIIDATx83iwsx 'q$*bJ؎-؊ཱི{oxk7V@o4 :XE|?'}i6|c ȿ>!Ķ-8~C)cWsu/U%8+$;7u;  <{?YKCwfl:|4^#eױ}B9̯qK_^>kmt(E/{ֺwz.{][ k^LS  Lcjb{ [% 7F V.E\6CEx[ZB%_7Yh?עE8׳-=cvǑkxiJX5dS:m% Ј>! dJ ōgq&4F"1]LLK%XgY^nޑI9]#ZK.V.Y'YIɷ" <;'Gc$z3D hdV7Q0Dt@%i&b9:@DeEO ⃺ 7AӭAž\x6Ew, yнjgcv4݅AkC6_Z%¦Zb`R5w7\1 $M8*Ƴz}nc6'dA/|-²u%*.+xuה {).go`SCӬj}ic?51a!qc}w5 ׋0Y78pV"Z}GW`cѪr ˬbAA6k\ z&\QYvI,Gqk̯gטۓ`pp5X]cm{TĤ wdy?]q;ZްK%)23.[4L*1F2k:X[AqW78Zv.a2Ui0 Cui\ jfGI;ruoOʦNX \ɿXrfJCTzu eA!+w%Ԡ1Ĩ˨x,u\BM%aYQǻǔJl,ߩk8=/%YYhXlɕcxe+2jVP]x"gEuJӏ]&l `uSE2ҤԛdX]]GV +]7rq]epJ_5];hD(LEM{=a&#|E9vgzUZ:a 㹗彶x)†YglHi+ hTD_˷ؕA*EnMڕRkRY Vvl+N!Cr(s>1=&of";e*-^%JҌBo^I "k=m4wJ?[z;Ai4V%EٳG1d׫K\\gglyAUk*$E׫cP+d4\~RfNR)efw4p+-DR ᪅ނ ={0xdNXT ""P`hF-iK]} dīeMi_AAdrA^FXߕr[--hTѤʫbOW߻(jV6BT e-) w^!9:٥ )ihi)2𤼹z ;@:5[eqIeyףc'AXNg(ivK-9z]S &؏;yO՞BHaK)WݴH-J[%x]LV<1 7xȳ1 '-ǹN1Ү۩e dh Zkc  \L;6am``:FU ^A w}m/L΁_J4WoE&hK`qkQO/&㰮g  ]R,(K*d0[un[uυo[o[ωk)#H02EI( @Uc\l]H3o0| 8@K;$iyd%5iٖҊI;o[t:72PA`4XM_jÉoj?=cܒ䍸SHwUZ{DDFbtYu] k!i#w,Ɗ|ˍwHbx]KhNXaokլOLJƈ0AWER%MS[_tn>+_BWJ/"J_!+ODg'>^ /~Ori fT1ZFk| <똩u.͕Hdwjvܤ[v%Eq*no& 6X_PmHя^cb]Α%Qi 主K6†D$:3Dc72Yƨ#lh^JH_j^cVw㑜em=ȟԇΟǾMj Y,gc>yq\r0\)=e +3=P?w#z*ƵݵOD%xH_ec]/#2 \j5CJ|JZwԜ߹NJc|*A׭A}jM7>r]hqE@b|We@!G~ TʄH ,yiH.ο`_];Cd=ҼgkE¦k^ȹm#aH]6R - =̩(ں*upUyd@F*bj?\T{L]eSfLr]䌬9ޘSWd05H׫zKײMxmx' ,h͎PπvJ]լ`皆ʜb2TעcUSq;WjXvLq?d+D+ynqgV򕹊ٻeqbR똥!}o 3i-sW7:uiuH82\ݦ  }^u{G ,IT"_q~(bɺ뜠KF 0ZoA* S؈|ߤOWpbP~ |IZ,_@$|:,)1Î8MW}*D8.| ,  (f_Fѹ cR-ѸQ)pD#uxBҼCl]⚢XD,HL~g?` D:m_2Hd@ ՕD[K2t/UQn0y? wr..  , )"v"X.嵉-Yƽ^ ir m/;^cjxچ#H)+1#'&˞Špc^adb;Gش+{{uI6<. 4C#k~AšX6 BMR_ z70Z\}j1VAwYYdɍ/iuڗb{2kǹHB0ҩق"\yP6\qp'KV B4"reόvغeO\oefWƲ ? J:odǑ2K<)8׆ƊfHۺc\EBF=J_L9lc']GEAA(FkTD㭂cx:1x{@vn4I 劊ʨqݢF略yy8u?|XרnqUA')[(fAk!;F}zu,VXq B]hYņ5#y1:ބJoUXa[ť 8A?V ԕe$]1Y c7YG"FL)R0:Hf8,~EPO]L&g{fNd% 㧵(8/>r=TKO$L/wR jX͗sg,YƯ 7#}[ si.0œN<83҈j|cP#Ȧ{,% WrcM+<>PrxζG rUETl1\`Nu+Vٝ t51(ʥHP8I |,~f*ywbIbĖ 2YA`~&}sa7{*tA_F'^kkEށ)Fā/v 6Z>J8,YUw%yv&kvs3hys@Y!' ㈑/[:yXkߵ8sWަya8#Vyhl\- Ek_Q?NeAʼڽXkbvE(,ha`ؔ?cw$pXjqN8H`wU>(3:Zs OH.u8<Alp/޹ cMz瀦>(ȳ|O#uHKA؊IL8 >2Mgbzl.#q9&؋gQxE88,޹Ҹ \XǸ@xN 3;ς5+sdĺݾtE'+dF@ꅱGbܙm}}9 a̹*-㿪^c|V[bNA4R|H|;=X0bb*1Y`zn,2"+d eW/HE5ǀ.&McJ; \%3XJ`rЮLײyCW0>VƂﻬf(oJA(FG+ld@ ;r.g;Či@sQjw=^M\#Hi`t(SNviGLc j楫._0#X!nTI+aYܸ,3²AzM*L5tmv-Vqw?>>8TS0[ *KN. i\Jav[ciœy?.Dy/c@eft `~$Ɩ(o&w=j.?X .tT\0UǞ'\6Z#"&Ik^xJ/ >#dG\X * RQ Q";S0 Ev@VXRaI&[Ƭ|:%10;&]ћCLVeqX\ǏK`ZWGwq=[g (8++WEC^3u~ (d9"Y.Y+"~ע0YQy;0Xr,FÊ2v$7!Φ]&n:T8vј)JAvIuOuy\m»?©y?|O-m6:UJ G5EWsOzg6XTjP3r@v! ʫ1d]c i/Q2m"'X,02lx$-%w 0o4VR`ϥ$%A?N"ob2!U( J{R-]WoefdQt[eW*^_g#NM ?i2& QZ/z/A[W+G,Ox$-"~M$Vl('ڂA $2-RJe.bnӦ<(i28@ؾY3Z9va [pt|<-1_X'Cwh,Aa%f?x1!OGÞQhn/ zi|4WK2+X2=WLX5E<ɬXDעO#o|G24UX;YQ3Hli$z4T>=m_#uYPX .7&vk`L6z, h;0oW9{:}kl^cAX%$^vI"Q!6[Y*vmbANe3B"e*ؓ 1+Aǟ_{He /eU<{5N)QWk2IρXynX&}S]!&ǰ@*ܸ|! nd;Z\f]إXVɧ_CY1IԏCY Qg6jy-WU,9q:`J_Eh=OMF}PⳎd-ȿOL".fа Ql"+Lϧd/}/@{]DŽcc&i91PA7(t3ف[*LT lplE`l' Hjޕ͹*y ehERPcU)p}K~=%̌8Q]l*Qȳr hDclG$ZxvN Feeٳbf'֨qnxHEI%1y$wqđ.k.eC.M #xy<UJec&sʤ  %މG+L垮 ){&>ГIdր Y>KkvZxHˉU50ya[ Q !8I(`veFݙ_eun4*JAG/v$↩Eָ?GBx1RrF߉կzXr7%;kXӈIS<ښҜ/ElHjJ0nr>AF=v,unuqVp_sW=ACX0gSKPJ܄N^~BZ2Uywx&WkWfX0BH:PȈ`5CV#\N:`^'<ܚv$!yX>,,_@`}š>DI}̺)% չ1`E][}~,N$;`DaY(\3n7ybXhd?(Wz2X{5XS/"t_xĥT|I@_a*Li\ N +G~.!6cs݀I,GX MTy ݭ֯ ^ήn4lFĖLquKTl^ eBci&<(,k{}|//= ĕAnb 1'IؚKUfs|zH6! D`?"{jAtqNz71.&>)J,#.'}N[[YVc2:7[A{ f〒(ݭdekH+"^TjS%II+$6ApxqU:bbJT+r&%~ 'jNA.?v/R3{k fΝeu[XGAXOc}r+k\QQn2xY*(̠,`ރqW bRI "MecM VV0_ ,|EBk+2'VeF'q3w7(A:hc(RPʚx+#0ca'wf7E?% Aez5fX}7u\TrvU^@=Nmh}FxET4rmL6gUҥ"q),A4V֧:ARgcm_ܽ޵qUWJ).mdn{p$+rǀbX)L^,c{#)dI I@oX]G!wKJ,yw^J#TV{&+J9n =5 7;0d\I^3X'N2Vǵ.eCA~ ]$SA[k!kk)ɖCF.cLGy`ccs~K*:8,WeRO8"7w3 EHN+.3[" AXLc%*7]Ƹ bZ"ƬqM^ BRepCXR5ݓ α~|+ٶvYtW=2;֖Sƀʹ+,֯  G]}czBv]Gz¬Ǧ批(.46.\ (iw$oR]غ$,xr{sW86ɛ$ei|Yj~̭s:%}A! ib_(S\9-L %qܙ`der,%>{+xnƙ?|ў*嬉l;Kf>ZPZv#+wW~cL1s{<,\|e AXśŊJY۵ vB.\vw~6b5ч$B6Cp-[X@(IYGBn J)  34&YM:,,A隣(ČXe r ܹ:DB[1UwuPdg=Ѱk }3)PXgB5"kHp:1Ir՚D!Qv0b|jH}xH]`0AAX;ї cHCCl Œúg.ߝe Hy]Nut5&[T',]27XOgiţLXARz/p@cIK(_[@WI::~3 WA+vƊ;3]h?s[R.xLvHRpX܁naG~ }nQҔ{>9~0ޫ g/5XbqXokg~RA4V=bOY5#gqrO;4ջFw6VA}K=EZJ)D7_$ {Zx}ɒԬQ)~#adQK% P*ɲw$>%5N>тcId9Aew{,=>-{rX{9^LK!arZNB)1YSnei,eu±kARYE%xa9\5 }qpCEo4%QxoKQ-v/hEׄYX$@ЏkQX~`\= kfx-V[F~ޱsµDI 6X'_ ,/o,Xk--oyk2z8CM0ԉ4 E=wb`75vYNKBkSήKQ`w7e^N)9&Z7k[A@cg 2;['41k]U%C78(xMĢaϿSfgZerXwq.BEoCvQь+`ݫǤXKW4Vq¸xӆ层_M9;e` 7A Ji ,)I&zۮ׿ SH:ٶ8ASrNKgW>!` mYN6jZ;tu/`I{+8\w&ŘǬUث火 +T ĆhJ/@twrF̀xm۲XK8ȬNQZ[A+RaXbZr.03bXܶGy݂`m8|tjW"փ{ "4A:kM';ZKfE>bf1;,H1I RΫtyѪϖR=1- PuW ݴE@w};eW8~Qg==nHK}R'xwqX#!Ks'8vy=jXn <a2~yʻ+=ȮT`IuuSF÷X8pzB&CY(V^FIe={}$k/ೈoupG)+,ئ6T{a|hϪkp.I1wڼ>م  X&GZݗ'avo(=_;׵pإ=}O&^3. ^L; HYcGy2~(^R6(gNǤG"PAx)J+qRmv.ڻt)3k4" Y)? MG7sy_S]w0TdN%>v*`K^j޵,YF0uKCky $lA! EIxoh0U22 c&Qb"P7gF=cGtV?*CΑ(o~nAC@˻6 oJyz&J=,T}Dd @GER$O6˛NH1ޠޅaB.XWdg)&p6Z?)3+0#+*p/Ǥ){JtU/ *" pwz{C-Y},l۵m\GOvςYbA.* ' [vR~yق2ϑ{l 6̵bq H;Sw(Xb^Ykʉ 1Gب!gkG:_d!Sln]SzIMLGL`?uA(ƪٕL`Zq 1蹄]vE7dq?Σ{D'O%\zWw;Pd+/YN-1|@XyXu*S|,= L- :<Au$=۩EBr:rl*Ki5X/^] cU l<"y RwlU}11hc%A}?>hA ?<'NRYATGc{窃L.{"({\ؖnbx2ʺggŃݤYò-S[)=VҤ%&؉o}2g(TPۀB^_qq-*K(;gSѥ짻 cW$ªܥ3,N9/pTXVl/_xEv!P/}ܝ/epc)3!_ +Y`(=F7MHFATHOh|+.ftwυbף'`S]:\,dTװr;,{(os/}ĵ #HR乕Mp6dM}8Q}xލ~Ax6kW8^*đsWJ^4Bq(ȝeR3|ٸB-, ra}wY. KqXˠǢIW~\*}IoBamZHWA~"O jy-e5g5|^7y8.-`n.oߛKo#%%hD)5-e^x5JABm_ 5AAzQŧf]Z\xj%c'}#t}C}28l:A ^Ocʸ [c1o/kh%S"=vNB+2J>cΖ>}IS5) !hg䃎f5 ϝa&1Z҂ B/t}wAko^S}v(P(\1FQWLy;HHbc3y񵱠|/\6θЁ];WwY/u[ d&kdA!Xcr~_}uX;WwZR!u@{ y[p~R#HYjfb+7)4R0{ *N+#1{q|VY>wƁ;+| 0Eˎ,]񤏳Ŗ*|npp>#'x_7R;D6վm;Ke4r-U} O0ScTD`LЃͪvNl?>Au4}yc`O/Gá7#55K*I=Ϧa1י sځshD|f 49LAx#ҵsb7{Y.[bT7wM=758V[out;L=mjo 8׽#S)ELM&D2A2Ec}ⰾf".U%*LַJ1_I ĕ3^T{4wR.6<țy[@@s:_m$9&R Ȣ>9?S,LR *\wTa`^ܱ6o1O+?̗.:CIEZ9K7ŏ^24oU07 Tǘ;oG.Dַ?Ɩ0ATj|X`k陗ZNo.?c3^xV=?Bόڎq (hp1('Vs>tUSN8,A >ug(t bc. 8 O{{k5[#} @uY 10Ъ YZ <(_hHQ>4*dJ `ƚb*R=g@W(Vg]g]sW<$d{v4Q(3J]mO /UuTew)׍bbXd"<{xSըLQU \kwk@e}gn?[9j@g/ *].GA,disw].b PTs.cA,%ȬY4>@j'աZlLm BR Y=%nXl&Y`Wks>6Sh۰qQ7Y[~vуC;@*]奥$qşnYV8#rw+>L ױ1mZ E{sMG`82^qpGy37z.>zQٲ^VBo>Jg1b`񊤀Q4齏V%5=S?tOҞ+ ``Xn<:qUZ)SKK{.=ZG--.ϒYV fQBЁLy[-Vȍ Kj7xy`L}[Q8r4Y.3fQܖ IcM+Lnq$5Gӿm+oWnVԹVcAZ{}BAhXaX$j͏ܫ hwڍ:gؘ1Wt@Xx:AȒxv"XX,:ٝMm0&qābx/ [dMBMVCS]?Xbr4(?q.^dJ+z>Shy8rx G{j㲗f)bx}1xL$RîMe ]ﲒy!4]0w뢴]ILZzx'ͥp -O,ShOyR OcTݎ cse ]XDGh:,/ .lX[͢ns 9U(RqNdoBv`I` -뽤 n@j.=ϗD"+7iowծEA!EcEl &xi& q>[3bYybƵg,*Qh,Ah8 7֜-]_BM\3zOp`| aQe]:t? qI%&a62ױ2a q,(P_~Ւx4"gUUJ8L7w=49d7>31#YpcvŋR8 5doNz^W8W-1 e4V\ _o#h DR¼0Xݜ*F)h |+M zr v-#t-Z0q P-QpҜ;eƚn2u.% `x{̂J]Hy#-JL<Ŷgd4 B8)\vvZ EQeK##Ok < 7|X1ƣcAW&n<#S( A#Eum1xu2K|AFG ,l/jы"L*S{7[VR]uf~'Wr~ǙpiCNe >) $}Iq3+:`3"wj ;5fthMsЌn!{W,5&wIeto7j'V 5vd]OW @ğ&S~ȁX v^ O.qTlOqU֋7MzѴgs{,2-]E1udZ|4-Ѧ<+ V+niyc q`؍XiwM/pe _?*:UזVHOg2]= ]}*N};I Ax%Ex aazwmqFWVFU%<[&B]=8.+5K狑:?QT7}I&".%n' =JXVv'Ȥ[gF K͈s_\7wH:qy^j { _`\-7 ]S"e+9 vpsNT4o)d#{u< ??I ӹha^$ rnD +[~ U? _GR;#.iHԌ0^A^kxJ+=W,Ҁ`I;פm{GAջAX" <{o~GJ[l ;۽V`@R~ o">Jڌ뷨p){'edU٩xpw42^`/hIA2۞gopxjd4"|(6(]@ {Fv|͗o!tD].#ݳe9v 7#䔤:2/[]  K*bqֻ"˘vgF⃌ ++sEOp^Rr;"dL]H3Ǹ8 (QQ0R.wiۍ{:\'AxeRa^<bǒ`yT\$W0I955a· 2U~w~۠DXs0CDXz ݂퐱HA.:U'5AěhшEEaM;{|!vYѬY;}( l8?A;\ē|y Ǫ{>#Q?Gqٲ$#F//|QNVsji^t  4u%a1*˗[V+Nܱ4c*l\eKH"ʽQ==8GAKƊk`@qUf`.kZnO'qW8Ϙ+ Y٦{2_m} VXP/^@ms3x7&N/X({"qZc?K,UAX7z-R^';-g[uثQ9+h1[4j [-5X!b2پB5"G tz;|&WrN+oql8N_~VN ?0j wX͛B5OWZE#.kQg؊-)9elH1aw*s {=FcuYwOj-|c0.Rp2`V.tgja% < `&,{6(T`JAxnxf,#RƤ\dGc#={Smw1k&DAk6KTH >6ic?l`)8uxT^S}9ZK"R}qƿ;+ $vF2.AY xdY%Vܲq$$C%uW^Mۄ$[7ρ+ĬfJ?cw2sSF Ag>nQ&WPɒDZ(oV~֬Eiwuojx^QE ߄hcE-]DKO9zrjڦ0}!!ww.V9 9a[f%:CA›!ygi[ztgkRGgjw3k[4=e ^: }z5C_!sWd`4E^?"u0R R?QEУt."c9cw 5xM4V0:"0fO\-1tΆ]Mlo3Rd[[B7d$p?3$S Ujnk9wtpmI`v4oT5,JA4dž'cŒxpy)KZ^p̊^kĸջ~}ghX"\]s+ŧ%x@~#)XS䶬cܚu f41[ZAXIleog 6(f9&Q_` &jQkr-ugsqmy n9Sbh qc/M woIA'^u;jډ ŮTf"hywRbgB6-"w=.`_k5B㳓-d,Gmb@0/54[lD?\٣~ X#Ʒȋ8R+#_6uL68CʝkfEgհIޫ  /(cJGˁbw6ڂ' OXyU}'ᴌl?`cU0rʸ?gg[ F`&.vI 78&T'Ϲ$e4 B^֠:Vrcӗ߰P:vs-A {?IA9 `d.%H ŽٌQ|{nS<`7&aMcATM'E% ;n#vj>}G0a]wo $s-fh6޼&v8!> hrvƅ,9}?^N!*(ꚽ _*؅v^AFw,$t]q`ճqwְI`xzNv7W@Ƚ_-Ӡ%_@vDo}+c-󖛗g4*(K=kB5>^Sù"BA tM1"̀z,5ʘjvi*ob3C J[z4 B@g/7 gįe.UUUpBK2_wt{3р"LE^TPAhMc9 kEcumhE{]q>k-ha(/~j7s"Bl/ A#]GzLjUD\[ʏ GN}Lb}?piIlߙyA iux?oyJ+5] /=W[Ķy'y٠I[MȈ<.Oa X$kd渢Yxw(S:υnLsdEW IxdosylAR zzvdxAKU~eOy˕Oe/_Ϳ GJKﱎKW]9 &-UAH;*N⑩Ƹ7Ƿa*ط80h޽Bu;," qs~`ـ  FfQ!r>~ˡ˿N_gf*XG[ ; //Qx\LכOh)V²S/x[ /]M>:ʆ@0/vG+L-g<3J#ykoUaIM-O{ 4ESgU(K&'ž׵ewD%>}K1|W{Z,GA 8W2Q~'ܻN+ Ab>]~^ BGco8+U; x鬼 +=z[ ٥6c}D7!Uҗ.򒃓j5R\sEU#~c~Y_x"A^S0bw`EBYxTH~bR@:_ܐW>W-u+KŧzGKٮ!xc>ȯ]Iu,Uw꫗YǕ$  C15 s g<Ā6ʣDlFj/ *=ٯPM<%>M7zNR_Yv)5 ?k3#w[% Ga ZtTHّڦA.4ֻv&r6|'V<$ׂGyvWwgrwK kXhS-h[0:8R}BƢpFN>i}W[{`S R+ǨJr8XS1µX`%n~vvc]Ƚ_f3N*Y. |ZGcQrh.~q:X Qmo_&/vl#k߼} bڥ q 2 M$'-llK^V M6 [s}:(A0D^c$mEGAeL` z ;kg$i-X,Fu/ CGv{@ʂCO%zX0UՌ,$1kApi?%޲imYnu#"A!֕ )fyb;\kGEMRDA/ r~r誠f"p7`cxբMu㭀= fwUۭm K'0A/C4>d>Z:L O@Ir'*L̀#V oI㊔T%2Rj`^n"EMFVw)Rӫ wuR./bرax QX}/k2PKM:" W-X+ _,z@tU :e?k \*Qx%[KkA&m;XZ?!HY+|6{jTh1EXJ(r-\享d BgKɥs,,2V[O٫O +[}., 01CWM/A ֆ$;E|PﴱX)]M9)='n>݈I5qdu#As`K->?ྔnI%K(qĢO3[ֺ __\UKkXS\ޙg ;jN͡2o1X<YM)q+V{[g%ݐe3c>QEe Tmػ3#'Kg| j aP Rg曪ZK}ӆ71cW.a]Llt1JT-goDQNI æsfsxWA,hJcz` ͈IB5S$<[(>H  X`"1Y٥{I S^\Δ.GGsa)Zk4{lYA+x(czKqi( ЎJr},0cP=Q e@pۉK2G<;7@QƮ,u&w{#Qxm}kW~ccgD6Aq7}#V4Yϥ{·먫no$ h,Zyϒx޽L1Z@M^Ѫ|CSc̨ A1Tz!Ώ( m !zi V-\t/MU@ Ƣ ƽhSd,hbYeFvOriuſcz/wSuN(4[~c^!Kuyja-LHAy\b<~<B Y@0 Rz[vL kث! v4.Ϡ(PUd˸b,aM(u]&~<1"^d ̉m%k,qaA 9^s02! Nu=`\`G^¥$]WLw#U\YA)4',""e+$Bx 贈&&,WaI6n8_}RQF[|{N FGbs^%_\yU)Wcz54AGao#E9H@soRB'dGq~%U>oQގuVPn<zͻPǀ Rџ>7!3ô?6DA?m[JTJ  !ncXfF^s+ f%WRe~+6l/'//eO͢J|{j0ه+`&b:gx v P4el޻}G[iupN ,nƣ p{P~W"[ӽnS>pKM"uD}Ŭ/5A3lu`XrTithvv;Ƣw\HrA~i,+|6lVC?rIxb?EOfx[R``U7y>qYYXC%yg=e4t// ]& V|qBۨ:K)~L_$% h؃!ٹ y7.yzB-%I{YԹGi[w^g2))OgfCTEVlxk LȬ3QX.u^??Seύǽ @G#k2P3)ݾd).$. LUT!kU:~/u|)5%m7gmfsm#u8[g3I 4uT^OZ)pZk% hS/=^Kec)2jwi /CԲ &t LF?5'CE _ \X:_ABmIBq@n9 I]@^ͩ:>% ލNAx#%#)dBy#E J7ףkfa)²ķp"CdٿwJ-& 6A-SM%WVVب{U8)@D7n7a^Zx^p^d_lo̖e'M_Y lR0 _%OnӏicL%8:L5٘F}+< .4Y}L`8HSGawʩF҄xozA2XFa}/Ymp,7&ד, 8Ō1NޫWV =Uh8*=~{*]qf[J9%O6b 4/xKAA#ES& [SEB?~3R;IFc2&#F?k"bgCSh! ۛWxI뢇)o: #^8vx|rf( Iŭ㲙GׅTBܥqdJE59؊ TzJzWW ZNk}iz`Y/ݡ@"\C6^[ST瀬O / /  IhJcE"6~ ]RwނlreSnq^k8 5T Ӱyy,ٜIAn+h#mH$ XgCc 4TAގv4nJ ,L!>nFTJ]̦(G,TvjdL>1V\=X3vE[GLb%U #"Lu/ юھ-wN72v7c?`bX@bW[o(~] ʻ|AXg5?[AYTx. k*vI##5ħpy5 IT y葻YjpLJ DVbAO8_.O!Vۧq727_# Ų歱rC GFctɂBh1H2c,#aZGjm %V*{UY'(۝A?7jZz$_=F-[] T'ƳdHA$1 kR S}(dY^)D,3VY6\B vlԺܵOVc. % q[fc {?FTލ<7@P^FWg2+ X߾0Rݼ%͋e(ck"<0.M0ua-?BAR4vg%+01^$ʻRz4UAKoQ:d'xסFDٴٕNm4yj!x$Ң)( ٙT+,`un9nʻ,A!i,u 5v5Q(ex+CPSlh@/Idۙ׵ᛐǪil,{P|Q6OmOogqX _:%GZQ='(A fG}h1˲캼/eo"\:?pm BZKsU\!ܺB<K}hׁePjS%I37#aVwS&|皢WqLkOKbvmF>I+j*OpYbVSԼE~AA Mi1⚲ {E3G}PWA"zT .+Z3PYy ֕zب)75,mZEa/P}}5//% o4+v1`x'`+G:SX7rI2ؼҍyLfUryMyqϟ,+z,DǛnqznX\kaMX[‘F͕*VKA#5niwW .f kSbL PcD مU!Nc26sr5Hb/QhdXl.:s4"dA4c^̲.!X^0wJ#Uc[U7&CH\`\ _ѫX\_b5ϚoR-f`|w!RPK]F^LhO!ZS6VAݵXu8m0> VKRUj$XtZ{mT&yV٬]oG?F,VX2~M$H%`v%\L;k_W B%W*$|+zֆѲI Fջ"?%ٳj$X:6w,+ֈ:Xu aO$")iy|lR^=SCwL!TIc]g`iicҸ6Fj*4x?3A/FXa|EIK'ZKN :dSZӱ[E)c9xm cè$'x:F̲kMtmy^Fc5ѧ?L: @Sh &Ez r(CoR{uW0ʥ7Ӹul4m1fG- X%ϼ\l?9'7M6IUg ٫4W;W% *o$% d׿!ju/͒ޞLjǸfĄɚO(u^)P}:O w3R]޶qcE] |lbX:Kϣ{z% ёnxk+neAtJ]G.`83^a9IjD^dx'6uHO'lUx-}!0:ڞ-~k?3Qk!,mVAAxul/fߔ`%i:la*UFcW=>uއ#,:43uci4 [1a JW]VWVQV1U0#CF &Q"QI%d48 KRAюjɯFP|$&!ieK*YM6[IHXM RK\rۅɛN{{AAa zXI};!r:M /x͵ 3ޓ#FE INBYwn$MH37bQԫҍy7eGظ~4Q?=7OM4/= Ahq nf'Uf?^WF] 4ySޓR?J|\"kd !f-yESR:BL=2e({,g,P`5ǖM9;wm˒Y< %%ṗ]6$TAp;6\(HT?HCe{X\gE.w {Rlρ44_M¸#1xԼ[w+*aI^&5e^߼>o<, >2f,ApI9 4+ؐ׬57)6 *G,M$(#~?S9Se>Wq^=a5>KyG練R 'EFčmSqHvc~. "5 |y$Pj~4Gb}|KY *{$qJeM{!q@-Ukȧ(jqsUrwϴӛKP"]J~2ړ[z>ccȡ! ,HA|.O#6c˧6 E'Je; g>xK rPAcTfר,e 8B^ʠఀ~|zj SUp627 |j 2ޫY"~>zmIo<,Aٸ+xO}_U-8TL.ГYݬ۫8q?kNω#Rv˴ ֎z d Qʪ{=>i[YswCɚlmڮͼT5eNHA:5&p,mzafiL Pjk7Tܥ S(6cɂ!ܓ-NYP]nSia>JnV-I]ՇA_?r/"6!oVviz5LI;FTP:ozFoH~X-1WLS\ U w RAw5~= e sWm4rJ JBc=1}d[֤B+՗63"Ȳ~'@>SF{B 2PZ TS>V]Qer(˞v"RYUʞTt"-[ zBc^Zn{rk^~v0QFw֣t}0=0CߌYI j,Gi|PR,Mܜ<j|!wz`:Ґ0(WΔ_AgqWRaλ'ؤB ox S a1[ٕܧJ b<tRZCv%NjTyeDjayHjvy-W]N,5/Y&j|M5YF3C%ʯ # ϏJ .X$G阀%[(.&TǓ_ hKr^>,ܺk<7_zw|\uϦ=Uoj<*Ӳ+y: GqAQXŏo[:ę,_#Z]hSIدRo E)d8I}[I8) lP#-2ǐ:*jD^s-<,!⯧;Z;^5>o=aXVDV ujӘ!td,:YZuy`Cc˂Va fw DQU TZ}BQYSU35GW!gJRP &3"+= jv*ݸ}(IUnnA5hqI4>T yAF"&Rl3B0i${Ok"Q} DyvwWuJE*7RFT9=HI3fe߈)Ͳ2 OUyj%cuwaTܠV$g0]%uZPs-.UTmś ~/2$2-^xէQχ+iY~9? v,Ub/N:aM;w"S6 T*=UK7Vֵ&.6Um6!DRKKa4ҝZtdJHLYL4Ļ+B#*_TvLAme3 (uOqLKeKu CVܣ@:T|y<+ǫͯ!AhNr9铬Yw&9lUå-"K#$FrX e+\ј@98/W.soջ :pd WuNjm$i(JԾVߩ Q6/ *\W/SH3xD(ߓKV.kEp_wC\?H4d*˳N'4Y=#) R_R5Nu] = `:R)G^F?i{wB}f:ADnTxYb@%!`Swq.?nTFe TX9nS#WФJXW8WnӼek' 8{KMúP>YSwyS #+U0ʏBEU w:_5:ɔǶxk@Οwlr*aо_|_kQH|i㓒=Ƈ(0]޼xJ|->}5צGZADxϳތWyJ9,欎Z-%{ %V|p4-Tӂ?$<_geВ â?X}%V_?FuAaIB`k'8.7f&KYAe*OMr"Kb7$PSݔ #!I @s|RB[=*cxr asQVe@DԌ 4ڐPIRsYK4V1|\(u]-a;yiHAexARaf1_{-V eq$Pyˆ R{_((Ќ ;b]yȲYZⳆǾnȫZ Xr<Ju:]V % j`Y=zQ"G{o5.uѠ  (JOL v].OϦ̘Hso h3U⃩4s2mU:"5]d6}j3^[`ǻQH)1^mIj,"[2{IG|z`Aq{3Bo=6lȷ5>>ٙ"OM,L0l ZPEpTx}6F׽Jp3լ| #vORaڡzwR?2vi# -P צYﱩ=Ja\:T ϺT7,#@wO~j2V⯹uH ?fgT`4x #>3SЊ1NBnI\105~G.wLI]Ae ᡠoAMQվ;ԘVJ簶,VȽC\nYpRbUQ9V* ;9"mgu ȗƭІ}V}o{Cڐא JndD nمA)UAe,^Q =VpUZ\OSr/=<B;BfL64*"s.UҵS%Miy)ot}4hBǖpRk Q0Jaiu"wLsLTq2U]I5%_SzE=qQn&5Sٞ +eAğ;hJ" Q֭2FZóH)XqL즕KS{ U \|d?ӈPCpS[,H6xG*j&ޞMdOjA7 DcUj)u|Od󃗀7# !d,[0ajq̸J|֦g"ԧCdx35`;.c&?TrT6 .a oCo(AAL>ս!c!⎯+T.OGw# gsPxEPnY:89</nvPA%"cP'A`-2 B{KLbz|if;e&*B Q5VLeG}5`){x:ɡ,p;˕!^uK+~ixI!>> Eb BxM\ա vND g?(H-X%~2Nd|Ǯi`?W_AqQ5Vtk (w*]yK[S.O<]eZӺsH #|Mq(Ui)ZφtL1 cUk^r䧝֨ yWsE298cTn4^^8Pqbm'c -_=n2٥{u^UNrE=L>>&A7e4Vvg"Ȱ/fPQYPϋ[3 z$ "hmuķ+> *= Lרn>")n<36YY+͊{_pMbk8篳[7n)+u lAQY_@ҚގWZ1,ݮrJ /xhzR2qwk4QTУ0p=jH׎S?~/C=̾tw ԞBFAq /WK?= )Z%b$IYIU4ݲN)d!IuLҨp74s"W||tʘ>hIcPfq(8jE[\ohtZ'{:A s |E!<ٺl./Tm)jrKHvKÅ))2ާro(I5VKj:AAA5cM{ ZzqvnSm e\a #dwӉJ&0kp*V%~ؤu]|LwNԅby; 4ffC{۰ʺyCB D o=g_>x [HѕE xBg aPW` u3NhКג{6 l( -kp~hAD%ޔT(XDlBUfAEerfml##DH$=f Dېn~!' aAu-V~@:!n96|2ÆpAEs-P)(55"B1/y)F[6Y/A6c"=IgfRO_P.r@66z<>߉v%5[2FPZqz%AqAcM-y)i ac9HX-|86%|b{5 ."H]L!#P}5u`JLSa P/}ufA#.TNԏ\l_zpArexx|,X`HA>KgKoܫ`ԈzɞٽnVEtBXj:!ԩ e89( Qcfܠz̼S*d݌xK~:9fU %E^atgg0Ӓ͉aXYz)zZeA>@ X=MH, kV@sԎ. iDyfRIrԿp< o h*N(P8jQQK LHa\D4}ʛT:Gߩv ,Y$Y7j2Fo&tǞw=k  X3YK%5s":`U-w^)@^lzY7oʵR]3#逤)j4[se@q|ͧvQKGӷm⊬?m,9)AA܃hRa{?qwy s'(?$s|_ʁgJ4 i qx:{$4hɧ85aLU3p̦_M z*%&bnٞA= c@eG{3M.mX<\dAq3nO*TX-P` QֈVo~*)^2bࡠCd(U}LQ=1y%V>TFi2tCRFRԏ*$ ǧwMq2YٟrH6Aa4Jz)sZ4NY1"PYJ$`ghT<ih&rDΑ1EBhՕ#ܚjg8TJ`eհ`?rؠsAhO6M~Xv3~,?dAąXGmaE1)_1D oequQ*q/'ks/SJQh_  Zk!D J?5h`wa?RIߗlMe2<+zQm0s/|@W}]NfIӱ$vKMAq^`>|DSb%ʊZU/pe"-ϗ:$^A,"_{ɥ'R=V/dWX`r ʰ 58 -LĎyE*5}i9X_UqSOuC]i~_, *hʥCPܦ֣q/}讍l &\q 4X=hLj 4}9>(VR)C^Vao >C;x+pi5(*,,m,:l~ٝ2 ǧbkj^A].<0{,FչiEۣsX4MCv3zvӳ3;㲅8{*M/uyIˣN:{*fpyf zUTyDV\Z:)onACLd7|$ 8ޔTDm19hձm]hwV~R)eZ#{~-="" EJ7Kdl9w ik)tG؟{7Bo(!xn5O~tg%r,b:#2~ {GO)Np'>M}kfZMSTTr.fO{}k) k?EVpU5=h#-_]BsiRIKzm}SaPj'Nr ߑQ'$F:^x`AO Ymf~HAA,FeOqx_c[zf$6 Eoo?tʎ g F|߱Q_$I-8w~EP9WnMM$nUj o\1'C* r*Y86sXhXҤ^I{XNSaAeJEfïI)RG>2Y( ?jP8lpaCT9lv0 GQ6X!Io+ uqh-̸H *S n?i #Rgޱkݦ&YވAD:Ulx_OW*s}+u_QB1B 6NAՃUd0+ڢ$[mS0(CtTp =p2%#1ב'[ ꤩ .uz Cbդ\k.Ju! xXg?oC-[l,Sk;1aeem +K/Oje2s٭Z%Vd4 gijf.ZTIY~òG[\O$?ҥt7a2p4zEEnM#+)S++ &͂^buۼbMmaD )#)a=ZPpSR)z FmcOU!`k]K<ڕ^9, -&<ˋGV@IRCSN*HFh|'Y2fjgx~OhAeΌPf'UBaOȥ7nLM)Jݰ0)K, B/~:,bh j_pS\][W8̐N^Y($ ވwIF_]wvj߼历׀4F/R˔nV(|!rFS0fkr"P'M;nWAԫW"Xxbcǽr|6%Q^ns'^ c۫BAVc*JJ'y.շ:F 6áBeJJ-}[-lWG4p*oJEj|^`XHFޟ^a7Q< x#/53 wKX}9~>UYT-3Eف>QB rJ<*D >k?5P?rfGU  C7LUVS7n xMfXlXfy/ٮhOm9REA J5Y{؞84j)׸ p'+Ti\+:VntݯV($ ^Y2&a4#>ڑMHbHa 6f)kkE3ߐ$xCd  $ؗ/'L~ =ʃrgWY[Of/`R'LI uIJ=G<tӟUL~J5qb(W)ժx`Ń(mFNT`\KćuBڎjz[b93%ݻ--xÈ7,/_I'ө=ְK x;B4Vs-Y}Gd1qQjBHPOo31&u[(8/q5_WEPOf&(}Q-4 OwMRx)!}MͩbuFcU?;AvT^Τ1AF -og7cPeL \WIʔ'_w9{C}4$PuwJTmB]+aRA~ !k`dJ7fTVX0YV*DC| _4 _Hφ:$䣥dէTr1LSY@j)͌DC&pL,"`킶FZ̚}$}V}B閵EAs lO/^?s )FJtW{A 8Oa tEM2~n:RS<(ꠖ?iFcΑnSгfn RAhY*X5lm%EA!oDfWo:MIq}>dkIa}dQ[w}8/<^oV*l^H N|$Vsq*23}k&@XXXtDd*&YA j.w~6Mnd {9l/x[V跑دp y64WL΃jPkJC (ě\B$g6ͳcc%u(:2$ !.| _#Pxu@h}vd o+oHI?4ǔ8!~˻M]ğ]pw-ϫZ[6Ղ)f(Wћȧ?CB|0 JB"EbR_`;N+\t+&R#7ʚWf*슾.PRx.aUW}maA5]6Ypɒ}uLכIZUHk}̂ -JbIb^4`̮UVeu/yU\"k|Vw>VC'ߝ=\Q1[%q "_JrڼF2WH" 5 H.Y ~0ʉlЇ@۠<]5ֹJdmbR {ܽ;g>F}Ra_28ݓIRnI@ijg_aOA ꍵyef5,!l1_Lvo`}ɀI)un}ĨQ?47;!V_%_HPYqHku5g|}kɠflۄK#kҧYf.A}$w ^fPes}rh7ҠDIo>m澁Jug0Yދunst10;jM*)zi缁j$ cɇ7m,f!Xe XAw Dc+?=l#FPC"d="!PEVVVk P?;I}2&;~`dt—g5/K}]%k'B~BMAA܉๦&,`YpyL0\dW^˃/pbM^QBO+M`nMm  3;Zh  jmOPSb%=H)fh} ~M [ ྖtuJ0~_}r5sݍo\g>DsHkx15/j N ak׶uv~XrC Ӕ?Sc!AA|jՇ$Mp썟PgYp?F)ZM3ۺ걾Ѽn\i.5 $de^&SMDH*&Deb xZA{zl41ɲ9YIM_9sTB )J z[FMw>;gxljxj0RSt5HrUYC >*ث!M}2Z2tw*!ݩ':tL{c|w~+tyk!H )0lOӡT 1B[OΆ/Kzfҥ3b0Xz p35<,5ΉAMKxZ6n o9oOg%E5d@U&h|jʘ+VU ѧ22&aʲ.y(Z&8g4ARo$uDkO,`[epMW14-* rcF.\?F+n  =jO)hǐ;kVB}rSo&#{gwoDDšvESJqkME6= eìhv~4碼*+$1@UR5NO)z`د ' ~vT^/ ? w~h ,9;lw}AP95IJqD,ȏCe8L gVTHt;,4Ƈqk893I;J.cI~Nko%}jUOnuL$$ jM婮omUj3}6Ax}'+*16J_ ׻t;<3">.3* ^ Ux^O+ l­HS׼3ܢf;` r1sF`F;>Wd+0>6cu_J JS>+UFYf oӴLׄ+I V:'iw>~'}Eݝ //lN5u+k 3k߰w Eo5MS`iBX{ˬ٧Z,{1{ZMw^zAob.8l)"5pp#*aA@#qpC- Vʣ4tIpDەWtL83lkkTYwC)C;8bǒIUnC O81^jj1 gy#!_" X*ȅ_ܞ.$GGka[,@ͣm@K;۠)" 뻿(@ H̀~6v~ كzX_FxÊ7/{l&M{FLo, /ƚ.VBqvZK9rS3T7kU >dM6Uɶ>)o6x+ 9#DúWҾ[;lO!cB;ؠ! -[Y8!)05ALE{3ҷAuCuBy!rfgUZqXAYL +k"ghv`~*$\%i.2A\@"8wݱ>9րQ omV@= w%cpFC)nٖxړ,=2(:U[0ITLrim%^*$$Rt<*pVNW%ƩOSO +)t X%  ^ kc2vta8T3b.OL]y$'Y(.k j:#^9eݸLfN.7̱֌ ‚Pqmgz%ZICLLwߕ--lpKHAԩ6P]`دSGNב3+6 L¥Ջc4g84}{RrQ*uFqr*{\}bZl mng.E4LB$0N13)R BgmRDAGPڄ]AmR`}=ϭ1l) *f.eT85g>L ҵ'GTOi@kLWy 1]gSfJz3dW%" ok˝5l=ˠ裓67@A8UVg F}4:W`˚I-utATھFaA;LQTrHT=H|ܰ%%*/H 2̢ #:hZ#" ?keH‰"iL+8SIؒ Pr0^I3y]AJI@xlVG:qB_=E!OR6kZW`S8yt@I`iZ"XAD + oNjȷ R)FVh;Giu% NCz.M6S4hOMʃ-,4^8ϸ !Eo7ULa>ޔ?mIPzKI`Ej(HeS5=+\F^4ƲiU !2`7"/0 r3SBdN-XrUߑ…*)w=8,a ĜE&ZU\aYH4/N?V^$QGZqZH? ",Y4'BI?Bf&Ηa7Y5 cYr@'D RwT<1#T-;v\e+j*| YVK>$#o1VF]Ghؓ쏝DyUWS*lIzrdB|ag^4H]>=U[O*A!q8p*ws>ms# )큆}T%y|HOsMm*~F]}=\Y4dץj6(3z 3y`U,O?gśojg4ƗKXV@>d9Xi!WCz\A#ƒIp2}-K&{k k|%LZ@78hDv=!*ք\t{`) 6UqJw ]/b^a\R%ֳußaADWcS?VمJYja%e\=D V,}ϠfL#_$_^Pi/kW{ҋ>ydO੠~JD'NTD7 /,SQN}#$7 Gk[\N%KGh6` +Y#dl|2:A)٣ $2sMr'cY1ySSƬyeǚ[TPhCOkY`b4l}2zYy]h[ 9, گD}X,G5WZGK`H>clMm F\,wt%'֪o6-2>6T@3ohPwBw3Sj"ԧO>~Ef46,Qj_i,= NA_K1lɯT=~pSeleA$2U0~(fe`O-2J?)>x'8KF~vj7TA ⽨9zF\L%e,pYm|;rp,ͳ̜G}dXs%Q')r\`L# -|q4o%jf˖oГ97J& oUܤjO #KM6;@1m!ÓmD -*& jwG N6[.Ѳ,NP6K7@?wEq _jGuX=WA7{mV;Tz]jPk-̀yr<'2}|a qCGOKj}+7)B{y׉C|ɆX2JB7̳4&u:V7P9rDX>VAau4Q#d5U{jZw(`Vin#Y~!#C:~$|W~(R- tMG)'Q=ǔ[/`B`bENjWM,XX%L'AAXF~)3,[{dy_G4t~G→ XX83*Sbs^60M懖N2W}"`($)&JF, N?ԏwE4%%hma" X?Y]ӯn`;!RTW?Q~ DD*Ph "ͯjIHJLt T!T|aeB"aGyNo{nGr߀=e"!<uwC2 㒮~8{NKdܰs_E 3RYAq~_֫Xm]fDYQj5*o]ф(yٔR?f$V'x,…1[҅,WUQIzڡA\A __Xyw$P7ٗ` h - -DŽk 'AT`~`(5<ےl@{DWGHDGIFf y(]78@@*W+QhӞ83EjH#*_NH|l'=UAmxk"w/be7 0BTG wmojAe!8J>_UEʕI54 $WSs[+*v25{;@ȷJǗu Pi&IKi '  VW% ^`xJtM6޷PiZ:+sܬZCb ,x>6=b碡ITIgD6%ڔQ}.b5,M}H¼t~ 9,.4 o}ϒ:a-/}aA Xrq@B⯏|}"tq|c5Lb"q~$yz l"xt5ѬiDs l%ӵiNO-d,r udM%z5[,A5x_}5AD=Z~0| ӆ\Hxv95Z5[e {+T/2QA>**i(润-X~z *#? %=]ڠؙ|$mLς_~*ͫ] joi OۏIe"ͩKؠ×oG+9<;,k}ޣ:I5>ލ2l"+lk_ϐ5ed~gs X{;l2L}/r.A_:9gOA}Q[a~It*;XxKE#hv݁\yЛ@By!4OcTx1Y«~WwqcjT2%j5nIjNHS}Ag *cg/< '&d,PI#ӿ֟Z {'DBG"gvE@¾D5ʐ-W/M'EHAyKCepsĸr)Q.#)38LEZ`T3d}=ˡ=+|E5lgZ#Ou289jp*$A] ÚfXwK:Ì  w) y+ҟo *_VY_Vsa3[Va3g؇"$N:14KʹNXy'%5o 9,ڍt$,"D|G6Ų?aU  ^@cMϟ sF,34f_EG?Ddw.aAD/6ˬhS׬U8R nsXR^N+#dZAx,QtwřZ8:MۂāM I5jˣCKq RճCykb2rxYDǖIfd0\>;y5wtV%S6tO˺6coQg[iHkY- WYAkX2C*e0Lo4 ȭPY/IE|b%u'KiUVTtNլf+GVȞv IW5e@*dB+Э8N^^IR5$bv&F[S3*AAƚc+~=*|-H3 Tu#R+yg o7Kc<$2j giU|!GPS*L{ee%6c61}ǧ>܈=ʠv*=Np!%{F&_Ȥr--+9!kLdL^"&Pu#C|[O輤M,ח'Be|^6P+q+?+K !'iJ@6 ZțuN(7% Šw5w/|%%Vڃ͛PU>yAhzREW4<y:nfS-w8މ{!&>άMHqw͙zAFЊZwAK=1I@҃*`-ݶ)$%B$Hܦ>Fp%rnҒwˮK *;OquL$+y/xٷzb?1LpMn  xk6]#Xj: TSZcIO6_>X2]Ū_H~[G8"J=fYviȴwSR+DdpFQ0 {gJwAA$j,My:g0MOrG/1_*/H:h&͕ӻ{shBWPQoКN0C˘Z}C+ol*Ȩ/pkӚkM7r:b+)j1   ާlSܳPma3<>G..bMeDX-sg5Tp{8M'䊫)s䵺~m%U7PmMg { P%ʬU#'&j4ORt(" 4ާ,>[}ʈt ^Υv7w";*M0#u [@9.:f*ت\'AQ/I*Ҥ:=n>hx47 wd]_-hr6EjE 6ךzFK:AQCrI])ir|D]OYGݰLAAKXuN/{ۅIlԯgOc6 9<}9S,-}$ ߛO?QChcхGbX= G3,o/Ɯ0 d(+XOwE8HSu[~j7,b}ykj%AA ߩrU4̺񛼡d0}TFTWyUƀ%iC|xqA#{Ί<@hZ=НZVMwɑVjZq5GVyAQ/~ira6 =4<-d1--sw~nUѯsQcʂoVA͊$FxK\EsS!qOȏi_6LJ"<\aCe^S,Mވ|vI& ppjj.zTlV`0f\ h +侺~8 *ld7[MoP>UdjZkzU0#P&SSRpσc[dpG,xzf(M@M֔_AU~k UΩ*DXW=9n>eB!0yMmzp뽽znNo:Ou'x RuklCOtVcxXAq?V4=h\S6QCfp!+vcxTܖG=| K\G *_)wۈqh^Xuzw9o  ?2E~ud /"8Sdg oyp9d0 哽YuT (¢O:"4/VeOglh.J+ ˪w0VeaU,! ?u+eY{orB΃2=َī3(4_o ;C#F6Cs%6qpY`|$P^{Ud!vHZAq;+]mɆv',*k]9*[|L7إN_iWz_pf^FCU N{*Q>)Tu螔 ?NPr|꛵@lY| BA)Q1jd$9͈<A l=TGdmٟ-h$WoVg=6fҫ,GΐLyfs ')*8ȝHaPfF&$Ӽ]Ƀ~}3]M'Ya  *w W5riw.Y[iL q =֟p%yL!>ĕa] 6C;_T<ʩVM"/1Q!?bľ d,SuZ'^Gth*4ï 8|1LݼH }#Ȇ@ qNR:9$Ad PEw/~3twAnLf7  z ]tSm.ԔemFhaFH!p: 3SlU~ǩ& jF6~*m  , M}kR:xX2«fz {AHL䡰vF}2lo66,oՒx\ Wq8¡Z@5o#R K}t/PS <4+ SVݔS7p!FZNՀFuT)+Yh`.ccw;)UWAq?Xp~oCk(Z!͸!0ƶ_Ѹj^yWHڱKm1R|Dچuja6[BHRu%yIـ׻7V)4/+Sjפm,|$IoI#"ouIgSQL PVARP[˵NoVrs [5 imuPҚ;CD-h }1yΈq^Rd*J}[)*Hc`ߘRW(m[%1(/Q3- fN[=V[6c6yhfAAkGOٻy U6e#7N7"4!rwnAOFFtꅝ áO6/M8ʓɴ_yDzwHFraq˛ }i A|wi׷8>-AASRkyHt} Xlⶤ hrJk>9tQF }/P1OjTzףOӹ|B|Tnjf|tɐ/7}:]O]5};AA &jfD|W1}O4)e)0%mJԹT/HO%8{2)5h![qa4kO,U/eɗHWw17  " \-_Ǔj<ڙaI-PGP-PcxiıYdutU!B[9WJ"ٱ3,*AE^|6ʱT.VA0а|d>wH#9Q)rwT`Nr(7uܔJ>q`Me8öM p0Al"FN'T_(jWgNk_jU$ZMlnyVW=;  )z\pKS+i"@<:6&BN]q4 nMZ5'(O?>hNdEĖ{y3tOmҠlI,ҩl8-3HZAA˼~4嗇m-Ū\sK?J Zީ`Rc2"l߱ ~y C$#)-靝RIм)HYL2J7D=2<0$8Dqvb6Q#÷mUNs$WIC$ ] VeKUu\䥖=QP6O ev0qoY{]Q{\ tJdf\B~ʯzO!LQ~_վZP   !Xe飏Yas04-F]^7o}<)w|Z0Yh[g.ovY4Q6S7<7aH&v9jwV$6AA+֑ʘA<ڬ e֌6yX@i  Ndt.T*n`F/ EYSn#mXeX!ϾVKP ftHSLM X2z/S!>R$ 8HcɫU*Zݧ(ԫȤclE_PMbizS/Thp2oļ.0͞اc#fjxk$,ӞȬ*g i*K~  `R!`|^m*hAyȦ2 MeIO, {FrRj| ; b?2ypI³ʜ鲯%mUY:3ú8Yi%*M  RBPzh엉7{>{'=lm57K`jm`d(%;= 4<)l۷|}6  GƂ,b]f^^4gt|QXnSCWg[Hxs+9SǷi}BY^ ehiT8C-m/,[G;|*Ӈ  A`;2M9ޗdvN|mw;80NneQ ^eE_6G Oa~"ދ +L)rfĭzwzAA<4laRo\T <];W(WIjm9Zv2%um 2ӻ,!E׹捋09QZxy y/ye UYt27^n2 J\.&z#KgiQc'9OAn/{7CGȾ*f+%ԅz`|4eETh9 NRӝkIsa`?S1AA|%Hc%.˴4޸mP@t %oC kYc7i^K%4nh}/m߆XmjA\9oc/ew6X  x|2]?I۬ҹ]8ёvq*^\dy@e>*(mw{3m]>M.G>`ƅMv|NFi6Je47/4AAPt"[O7!Gʇ1[+ï6c!i"ӦiS# Y5L.b_ղl;iwJFiL퐷T<ٽ1֐Iy" "Mh(6򇲍nHY_jטyBXܔ\<ؔrX\UzQ8JO)UٖY}G+ny=_L.~zk*CDFNc, Vʊ0fe{Zf_ge6ydRY@imbN´#9 4;5z_ZV>L6 AG@+w *5V ]ϒ ׎~r_^Iհfm&r[-r&xmcΫBˏޙإ  K@b>]=H+)qR'r[ z+2>[^zرVi8e\aưSrk5od#+]8}Y`/@@2;M9_[' "XK&*^ n)¿pڶu8Ȑ* pSUl[fnj䳦K<AA`A%ހvqx]d~yͽ9b7)!Ny+O-6ɫT$J ֫|Yĸ ^{ʱZ^֑tqLip/ZS*- ƺb!8l\2ҫt%[qL͚N{%>&GI}*9#Xgn޵~Ka!?/}ц\?:$ f:xY.jH{]stYTjT׼䰦mhŅJG+QA9ӍN8(z= xHc]IVe_0_4pmn=ird{|2b(urt̫5r:͛χ:!t+׹02p+Nʧv^  l:y0DߘPu^"IC0sʾ&`;jgiȬfOsv`HylLEg뜬T[AA4mX)\eU>lՍ2ʎ me ac w?k2.Aɩ6s>5[)@4b|o )k)# Nƺ16q\n{0$;h^Isۿ.gS6/=/锈c՞)^ᑜ^3K s7|KMLC/%G*밭E|Q  F*H+  ?]ὥ\iT][ABTvuLa< N}7L%lmeN^]R$\$55LAA=Hcݲ.n@},i_ڶr xVm5lZoWnD7)R(.BP)ug<at Bh{ӡҧ]Obk) _`:ڶ x Hc]1a)ok~L˵HYR#s^Zӊt!Nw7 V]4=rgQܪOwZFT>^ e/"{ȼġ!U>`۔3C[+_FcA/fD*W9X%jpG:zc}h3/+i$R3- ٗؗ[k?׎_4^ͣct*QAŞeŏcAi:~oAq-ƺ1]r򛪧m|vnX[0ѵl{Vk7L}Olu)sÅLҔ[;CoMY677z9,  L Im͝K˓}h%ڿspLFS7SvO\4L,=rp;aP9Z[zIW@i;8Ws% B zc]||>kᾔAwPSfz_e Op='X$WO2۸GFq5X;{.oY{}7K>IWuGAAVPu/] {=ߵ_/'Sb=a4C0V렵m1JĒN7zccjf:f[:n jaMs*8]CAiw~cȿx]%sxL-{ 2I_)${D';_/r/"v)g?mni6A6:p^rѲI5AA4;~wޯ˖?b)uGb2dl 7z,S9_;ӿy)uծ*9SIOm:jHfm0b j9?iU  ^fDrYzRr׺,1mƫLkϬ~nKXɡv!ƴX~?(/碁ɺ3͘V{%S_ Knum]5U;} 4é4ȎBNL/1SE;̜JZaM3VV} Ej0y޲z7;uU)Rf#M__6ʈ* T:^AX`P=^)\ewJ&^9ܖu(x)2 aSKl6$xOI991nsxǿwn;y$-Ւ#=ݮ,4E#_:O2JVuf:̃6K f_%7xmI@.%]e-yC*Etde 4N*_)ŽruT?*#lZ)HƼ1MWk*%꭬/ R|vQҕ&+m\6Uu)cD&n dg~{6͛2ka25#MQcniO@Z>"ު'V[?_o`&DВ2h(+U*1zsF5-6Ղh߮TU_XSNԏ4] c-ճ'e?]HBz~_f[:ln^vSIjRUXKJ$#OG}Gmzrv_XfE^}4.+ЏHUb+5[.v8-+]Ycʰ-dyS*B~\8YU'd@47; xuoLD-C;+M+靏~ǸDGՉ \dmwUsfz}u6&c\,z f &n 79(&O'\z SF)mOy*lma&6 -kd˦@yx^yuG}u{WUTUhTkU(?.2Y4Ud(Kwd1(]'byۼQN4׳Ve'ds%H/?j[׬1l `^#x7LeRY`sW-ACKeLΥ^jIEVKvWM͎nnVRl_dӵ#(32ZFבt߈ndսC_u.KI?|0moPS N)@ZkܮsUUeIsufW 5z%՛lnfxzqSrz~:VɪrKIuP*E׶*C ~o$hyF7mtZӠrn]Չt//$QoU2߯uVǬete׽p4cTpjuӸz\ZT{6d 9E?R})*!e~j!W3*g i?2Q fO\/B=)O~2ֽH'WퟴH2X4nImV2}o8jթP^?54 XW0>Y 7ȵI&6L}땱{Aƺc0l ӷE;G}^?KUIj?Mk|M׀ ה˫<*& I}Eagc?FؚAF|[?*D)%P UY"'-d3s}~av77~2֭3m~hLJ;~_ٳI\$v ,[GhN>j}'Zw;{j׎?~~x`O$^@"`38XS4L=l֕%kʬ; & G[ ™ͅl1/O!6)j~ W wmƈ .SSZ4z~Mb~95U22=s &,2tf bXX]=`j ߔrqYPhҦ{~||Af,ZpO b0גcsSml Շ|JCW;憦(nqOK^~[ў&vm ' V &mltW5썣 ?'dχ&\e qU[ܥ1+al6{sneNq> #2 [}-}dfbi/]L?cJup c-Ѧ|t7;B;L$,ݍ>g?ō(PQcs!'k{J%}&𔠜* }nV$E!40yyVf|+4Z˛=Ga) '`GF Nhf].Q0Gfݝ"Z\VW(X0V_yǻUA|@>fT2NSeCXw'5WGjai\&YsJ/]p-*DԪQ/7 $ ;URJX3 N*_+p4\էI͗iQX@b@Pe6+j|f? mimqvF9Vvf:[UaE@ƂV}IRAZll= ϴklioW=dTrZf|fʽѰ[P8+^uu+B cԗ}o{U4{C ϙkU9$C@[˥qaN]R6eˤC 6'Bqdۜc,U/7_k ŕOP'X !FcU}s(j1MR]>9fږR OuAƂ 3ۻ凥UFZ ٓ['LS$4-;V}+\qF2ų h=^ D&wrI_;+%s1[VS/|s%X8,=Qx<_;ƅ7Vb_+ɌL c<$gm,qhͶff>v˹.۪o+fT8lkzX621:an. I- 0fO_*y$2}Zº3DsvGfNj-G盇Lu@Ƃs_oÚ~nʰo%Vej-i>6#fVwU-SM1D*kF?`{7ʅ[,-yau&&&Մh뼘T8i j`0Mô>{$1n c 9sMhuۡk2#>3zVJhz6_BǭV yTvqUKG [Ur WzCixwcJ䡤 pN};3B ~X/Ս{f #&[Ʌ/0s'M&ǿ) Tb¥'; \FlpR=a߸:tQ4zNC:j`ޥyWdWQnUیgg};d:<T%;Oӡ#iyT`z`:(+]8o\_D4/;C@:fixƇ 7 sBXQ6uL IhƙMǺqK7~ʟJuAV]jmvL4J}k-ec%= cFRÝj<Gƚв ڒ:BTgϔ޲ꃝB\xB2B8]cnN5K%mTnAOcZiM_aSk>6.` c`FW^|)#0ř<3v˚^h{Ա|f3 D$UJVR4[SjӘ{XmY++ݻUr.v]zz c3ݓgJ?u#|[vV{XT1i[kC.#Υ^.5h[4jj![*;4*h}j>Toש0Vٷ* FooÞ򀪲&bڳ'Ts"R!q*ihM⯜eg>tg|ͶiT"G7X5ww1~Xꌬ#i'kJGnN 8W%vE~‡KUE:[ok~v Xw%~f䕆J5l k+0s:lcQ>2"f&V&Jqb8 ^ Rp7Cv4}UoFb'|DO5 Жyv>DuGxZUb̀/QU_[0e% aӑbs/ڄM'?Wf2§TcrU p d,x) mG3';LYиȶJypenǟVgS3vWP%I5͖St0R߲[BZ3[~XfX-u=ZO>[~+ڌ{u?oJJ1o΅ RL-=MVy$Q k9ޗirpW'k24E nӤ?kBr\vV7P=Db -FMu6fۘ7 2|*$He36mȹ:qM]RN<W~S 뿁'=N;[k+ 0;4ENl)nۖ'*i(Ჽ̬mۦ.CJ*J+Vh]kLPMvL1g 9AObSrk*YQ[eS8ϝVRbUE`c=!}Zԫ4h:jujoԧ4Xf'-$L_L NAӲi 6h%,bQuc~l9OW3~i+3݆_ >uhQeoe q'\*Ϡ =`9-Nըj\\I8ў>n7-!K&X8D =l1$,ֆ ,SØ4)ۈ߱G՜zP$w9~UZ#S[Y +NbGۄ;M|d,xRXllU5/Q1mG_5xi^ ۸LKEVUV7T櫆QTRm߻ؚ>2|*kb\p@>q+kj 9`{s 3LU1'diռĩ-Po*_dea*}&)O2|/HH 665P!qfIEYces-"(T@;<6z5cVo娘,*Yk!:w@ƂoG&)y EYo%)$DmځZ S̐«<|t:^:Q쓬㕝Yѧٮ=^AlڟAƂ7sرk^Zw_9SPYZL?,j68!=p;ZSv؜y꩏C]VnK&Ŵ/(uXдSnWV&t {FeҪIܡM☙`09ήľ4 *ԲU%vzYZ}#ږ>ZV}ՕEwd,M@2FUznT+T*rZi} em;)(\~Ī_{%tE6&=&sJ`BAsՈBlNm}k5Pwr~GAƂG,3q=IZqJInD6FM>aNNoZ\sN"hw˙C[ZjWSi2Y͚đ~ʔBPxvKXp`RY;l 0(.َcbTho][ M>|&lFهs%*s*Ӧq5fcԗ}o6W^$,[izq!,Xp`RaJc{BC2~mm֍Vk{uv"hd-so'wRm |d,Ué6kLXDm kMrVLu-NcOx*٪7r=TЌa4YpN>jrʬ*M!+z HkmN5= W ~IRACܘEJ5#j?Tg#tyh3•FX\soԪ7mrּp ՛^"_U+RVס=#!^|sIAǹ0 h*$Q cyu;٠Vc[Qt㧦%)Z%;51D4J>o]AР *Gb+ JD75֜yf_'Jέf}-yWT8lglrX^DZd=tRLcBI=X/$KR+s(uԄ44YMş +̽k2YT6纲OR cE%꟪(Hz[EDOV)ZᵪgL6lKoP&Wa=f`T?I7:PU=#57(j(w_4]Z|U? cSfSdCm16uDåS1&l Tꫨʎ+J5zZ[I2̳=6sx.f尟 :l6[+&WE~&e=g.B1tj3֯zTl* $TvA삭 Ȕ9~t<:Ynw,2\QMh*IO؞)E!&tUvi1mqZmrj2{*[Zg*ɞcVTUBL>mթS^AƂŢʷkא>NU9wՙئU^5ӜQ g3zi5ZL?T{A6gF#v2Z+Ql 2Y5a6)W\qҐp&FSU7dF%Z/FVcQ?9FojTofX `-TRHV4ҰZ,֙'G&j~3)ŰԶ#L! cTǿ᳅hU碭jolW3XmlZ!g6 cQ=i+`٧嚗> fUۋum mp d,X'c+))IZ[UhT϶fH%`H2mZ! mk%u cƜMtJԘY/r` ΘUI{nz6+mUwBݐռCd,!֚tz*h_%+XiqL?[jM@ƂU#k)VU-RL*Iʦu}gC/p_sZm6jTP  c摘Ewi]LR'dUtcBx j>~E-r?AƂ8x=ma-KRQB\gF~gSG? K-хd,؍ʐ8)J,E.) ODUU`QYj-mM n2諱}َ)VM9dc9ZkRfSda*64]w!m U1ךb 2@>k}SS8ZepΚWg8-'VRQ7g\U5TGsljՋ>#21MBM7ЇS\W%D7{c p[4J gu(&V X=V*JTQx1Lشfk vjJ}|*n)ϕ 54i ; JEڃyTl Sա:ErzlP߆5J/l ct1aOUBa[I_Yۅ*RJ;[کҳY4Q[oE5x, c丱M1c6]0y&0U,۲MnjToe6*oOpYig. Z}10i /[8#i[SYTVW(ƈQUOp"԰lI^g4`NUN.]ܸb:i뉘޲.SMKYEQXu29^ڮWiS{u(BقU3^)͛j*qɇMRSkكi!x""}6f.$c1*v5F3) 0Ze*E5Z_tҼOILB}Qs![!Z4Ɩ*uם-cIҌlfoO3ӭ&6o q_trq5DU[G<Ʈ[UzN7٭@Ui]It9WU;m(Qԑ _ =g-قaibd3Rk5N־'īpOgQM]*Kuv=Xͻ۽EOc:ī6UƛfT_T=>nl;3 ߧF&1Kcn } c'8hF46F)vMZU4ƥb j#bWK#-[]PEC8(s5B-1]اb@j[*.U$5_)UԌ5pikK3đneԈ0 S—]}Z\e)B(VY;ZR8/ 6âkܧ)N_7BN{BaL%_ur4eXY5E+ i&d_9W>Tf|əf窖֎udXM+1:uԗn?أ~X Xz%%=glQ`8"F|fr.Q?l,Xd,Xd,Xd,Xd,Xd,Xd,Xd,Xd,Xd,Xd,Xd,Xd,Xd,Xd,Xd,Xd,Xd,Xd,X`>j3QIENDB`_@http://www.fussverkehr.ch/fileadmin/templates/images/bg-spot.pngYimage/pngOPNG  IHDR&kQ߅tEXtSoftwareAdobe ImageReadyqe<"iTXtXML:com.adobe.xmp i5IDATxܽ,9$9ҬVZ}K͎^ MWfxݫ}+3?th|d?a_o}4}+N~k?fGIcU?}XlaPҷCެ,5<etwahLAn#lsX"򁯃Gٮy\b?ٱ ~c鈿DTۿbx˖.9TC t7Z,_^'>&W&{!9)AHG{{xx}7>4!AD<U)-n,[c_wb܀ZK*catjͼ 0ȷOX®o%?݁rW)|}p~q\: E 0@#W 7 [g T^$ `v@G: ֓ƍf5 ǻ!K>xUaw4|Ka8׃ѣ1B\{$3@#!c P?rJKל#+[}e:-T/ ~OV'|gT6-mR#yyƑG>w>)88g8f@H`mOϽp]#na;Њ:X<3!%/7 y.>o!]VxniXҩʘhD[;SP ܻ;ˉ~('s^юRĊ'@HS;SowFJȒX7"b1ѝXXˎ`6*n4m|tkη \(*ۖ!o*VIo9'HF9x{};iIJZT,Z2i쥟AW cx^ls/>&Hœ<=Dop{!%9_3'v}^D׉Lx'g@5? i&}šg[&H uGz%J?Ώ-I E =Ъ7B󤭦қM%9Ro$'=*JQ2yxRz.v5XIgEb Ġ1|fρJ9g| Cc #PQ:)ڛ.#fZr$E.8h#u28ͣbIgBވGL_ 0*x"ޫzJ~:Qxϡ-ldŏpV=v"gTV3S 07^)GY '/:#Zu-0ro/*?,^k{x2,1+<`@N HZ]qw.Izb1p0K! ɂeȼ) > )X:'leU|LH}]xEاmh8;KYTyv2h`i*rfbrJs{)͑e'!읢j>2XS)gB~Go*3.L'݂[lZ~J|Q}W{&֤,z3wD`@g ;/2 ș{6%43'D~" <5_<8\^T71qSs^I?GLzPF'K ).T rWi "Wts w(mKg;'~< DaX&nG_/\DŦ y+p ^WrBeӃ`aק_A915pƦ~w\ຯG]h5^e<;e2ȫcd(Z-iT O 8[QW'gmDxԡ7Кہ#ӮalȀmUNR,=e(]Ѥ`L.p6+,TjZndz`֍P8_ >waO<|ʿ4\`E08`d?(eY11k]f4b pVT-jʊx‚(kRI{ ╫47)1JDguxxYa5,@Ou=" -h*J`b Q qwTRaAsX]slQ3ݸ+J 솔c0'8 Wҧ$')YU EO+U٪ů Z9 $Om\u#AZpJ oH;9o@Ftj &ȃm8lqc:z@niW7Td H#+QWZM}/ zQ,-9G:g4dm̃3 <*{GkVqÝIc(02Bh1K᮲8&]:OQHC0*Q.Kvڃ8K jvMo xNGV0GZXu~0/ B!QaY y}3խbPjAZ&oyF:϶MJ"ŅdgڸDqCPWܼ7UHrV vxs%5 49i!"U (ߓ{aw)aF)d񎾫Dԋ[%ZIVbh6#w x5 (w1k?At8`;.諎+b3.ڽnK"R-v̚m Aۼ0yk%H,wKDF PBE:3sѕ!^O˩ s,jo6Fۢ&b_x=krD[Swds~h 2dĝ A/f||l*sꠐ酊a=owONS'i6 bXAl߇Q=q-]q P (赕 #QV/dY(P8h-'m>`%:'@4#EiGI$eKDLL){G!,謹1亾 `~KY"L־kT 𺔾CQGv{+Cm[`bѨ)ڞqRc5I%CVK,9f4Qgww/F*G#srMMq)w5<{%UV0^}eւ0 {&J[Q1[u'Cu^tTtj tw\cgB"v?Tֹ d61^\H;/00ب[O!lAy$N7BW:ZKd7>DHDߪV^ɉuv 1 CXvgz5|Y6k~CaEZ@hs@F.3. inxpOֳir+ҔUA:>*eMP xV/!+;Lfv`.cUjLp;u[H a߷OAoK. h8Iw'Q+檰-@5ۼhlr!Sq&~̎ԶkF{j%#)=21}ĺbμ ܏o J AFAE7nh. HneG$DpsQ1)Jbz NY@m*E V1q|{qSh~Bkvs[5y8f5OΚ{\l:Zrn7e΅Q )^Ve\4 L!:#&ꢂ㬧LV*כRw{sQߘ(7?ŴDeLh=}'<Ɉimgw]/Uh/6.%BI;ԗJ. a ME4 F3t1MM K z# Em#ph[B@Q9Zbw˵X9۔YVUD'T:ZM~@_(y񟫏aٰZ/lVQb&v6O%*G\n~b]be?$>>2,ʁ=}|+*'!ȭJq|ѽs'dߺ3&?mfI|빮z q+R(W5q(n;y>}|&{-em{,unuF,=~*((UKlbx||7 ĈyP>1N[Qx[z+H~>%u? y-߮ܚUt2\qTW^ㄴe(9;h@ri?89V wcrt+=m&2Vh}.ÿzr2 +=8:mfW80&/:,}oZX  y0`*~;{! XQx@B)kZdx(:!.*޲j# =gX_~aD8O+;}Ck_zIrcONʄJ m94N]&[%+H\\҇2 oɴ͢tީSnG>_JaA#R9-[prЮYAҮlsm{@X ^)O6I2LFB!s|3RZЂ7,HRV,3:/u(#>4JJ* ҵ)H@OƱ@rw/M$l_)RsIP_'gຮ~z\?)2$^.0ů [cH|!*5?C`>mD iz#`kytKD[85 ew#)y|2zw$O 2>oMK=kn%w ˜ .'>g8,<_bl?. ],ǣkL.Vu$p9MB4ͩqDcAXDM4Rz^x?؞]@k EEϔM~OCM;ν.,F;)qdʆfM1BfQ#YM73F0{H˝P^鿛כEFo +iMy{4վ pF;ayJey6~~K ER_VwR1C*2x$n>-M^+ h#ǃڭ0BdV[D K$a}Mv;w`j2?\vSdGQg"ɉK[)~3\!G0Y\ѐS ]f|g+e(Oce\x4қJ+`{Ʉ!ōW"ܚu?AF`>vQWiv?.^僧>YbEр&6,6)zB)QE`.QW#H6WakMp2/iRDǨ(Ʈq -Γ_ 5N0[9[b4.JO9&Fj0!Lޚam~Ƶ'? EAQ$Ja+ WXyZmXU?^^dH'մc:u?&a} &U!~b. vZj/ˉtq9u<s@ti%_^X{}a_r9;-o0&*ƒO~z U}_4M|O!H`,\jMy0[z肫7l WwztmiGeUAY v-ڵk9Zj\J4Kܢ E6s줃"&)yd|DBKWp * 0La9JyRw~KA=A1gdzLo8Pɳ\ޥq(/kp n r |ʻ2c>In:?i3Gtvl"U<ئ[wOlMO]v6Jtj,>xuR S9yD#OeHSGe/fa`\В ^#Xg،̢d%dd=MGĥ>D"D=e:a]oG$L!dLr"X S +$Y~JV0&W`c, ,' Mv}3v-;Q3MԘGI W {YI5f2Fu:\J?| .Y &TL͖=!,K q5vpŲS`6m斉\V5c(J|qxnXYzEٱ^ :X.Yzy㶉勣4e?wpZw{ނLBsVʐQ[ ;'#;o۲RjboӁT_v2zϝd 0)=(كh[E68Z)[;G@\5I9 !4:`[,#$CI9aѲTTG=ѭ)$$J$HUj =*8-hxK냟oeesTd.!"㼴&L<>l;`O֪gW[)ᡴ2mUvvUl=tac .X`ŷC^΍Jv=W(" ֥^Q80.K>eyK^8)MA$(,bfny#*$#% BŹ6xġ6UZj(E;N=>, SGqVsۇ QUzNvNKLAe1!JI?#<dLXB~V5&AHi=U.iZzh&_HntG>bRD?C}IF\2o \!g֙5W*Wp@q!/( G{2"X̸5>W ȥ׬8mhUCdEmO).HC[@qVhH| jp[k XB'iv}պZ\jX oI}#>Z&Gqo3Gb ~jw`AFdZW+)Z>̱JPT%Ρ%zb3>IF>?T317ΐsR0$wr1h5S3[|KeYG*K&r򘴾A=Ӥ[Ao 2#K0p`2 =. |yb_O3ķqKN@%N)DoWp&WQa<'bz%&UHfqAW*V IOsG %oeɢ!O8{ן_!5,ךp^O_L+p常q$~2%_nxE4vUY2:b4zZȦ}Xw  ; EW}'&KB.8 _xW l=YmHU¤,Lj#%́ι9N󮩉Qo2Q1g%b9\9 Fl%&ᗑ'`umȇxpJNN2 uu rW61hA8b=g39Ai ƍeJvV@.@ڤ<1CSuNAŐl"ǵGG|{އvMB)ҙ$.آ܂ mݓ`ྊ-@vϐi^yKAې֐ 2(ԕ*Щg./:lGGbޮ'Q KKn"Gٿ/]q$ łMwV^EӏAN>,sb_N Pt3F5厦 W;y9LH]s&6Z]T=GWGl7j`F |Rõ-]ߔϷrc=^Je/+5'Rb+wNSY!@֫rdD(j+hM) h4?ytd L*7&ڥZ'BiU‰5ئ_낢`G5kjQA~2{owԶ^r9RWUVYL&  ohHodG#z=9*c=Omʃy6?yIZ#'xp6]9VncuvB6\.W-:ʹoёNmGN#S(A>ĝ써\G=ITȽR,/"ߖd5휺#o-nRa{JB {$WYu޳TpN/> TC|ĪPTqw`oYS% Nv\|% _09e7O0[md aW4U]!4.+;ATxV qex(SKo=̀@LMݎ^ضM;aϤ_l9H0l9aLjQ?F_>&gT"Q aT>ۛv|I%'QrӨ^ɺ谀6xݿ#k?6f1?.u",hcTVUz+ Or *VAB;d4.!DwUԩI,g@Ҧ^sG; oe'㷙oTRFZ56l͂4> /%@YѮUKMv 28FV(Jdzޙkh7%{5tU~;65K9(2bhV"^h4ԯJRu}e?3Fћ'B@9 \Z"ݻaQrO8!݅ɩ3 Ns0ܓZ[]S7R EPrV!ѬkȜ;˃!]B^f;}]Y(F˰۫?#"uKܩzzXa2aM ›GO.ɻ:!:UIc!Yx଴iNGv~:QTW /G5 0w8A&󎓂II+Ղ\S-HFd[({@>Q668`e|EXs{Ǻd[7SeH Ϋv絃iAEqK5[tྨ#cw^'2è>\O+f<%5 HܐOnĿ|&@Sіc?49WR9H< #ՠ͊*s0؏@g0 z'c | \5λIRnG踡.H@Z*+F 2IqqL lJōLNY 걧&U +/]JZ.z?0~U s`[|mÝ4Qqxq`E?e4C !\ca_dnAjk|GX{-7H&y0;lYǪTd sBNq|"#Qtdbcq}Jp▾+z(AF.7Џj3HVV?Og5˵1p}=T4Nq9QXnwpg:f8 Evf`sٷs)*[<[xD!n*ٚX4׫A/F\3w1sćEղ'P#wX?]Ԅ%t󲍑Roh/lddf˜%[Mu6 Q/E _(XV|Lsj|d>0=ֲn~t6xSy/95 ɝy2۞pIqhjTM ])̤ Q i%^.@"yг-Zѫ{Ft %fλ:T!b0 1JqĩJ͞qҲ a>[:@:OBq,&# oe)Z#wit#m4xYKx"!ECrKZ?2ފgN n|/7v6?ⳳ^ޒ,ތZ(w ʼnD*3GjqՐK.OP:۸"k KB\( ^*u^UfWf$H%N 䙤{s}Y#e/IhYwk ^%q0d;(>Re.L{NJ=ebL^(e.CTߗuMJ{dK-c=v rxf,?7EFya"ƐDw2h)8Dc6iN 21?n4'GeFOԦo'zq?%/^xhR;~DᴦFa@9,W2dEӐio>0nSSD{뫏]ĥQ2hNz[SlG{XrWI$~L4B}@B{%vqnNŝx;9rO L2CWx$.R#Gqnns;8߼vцY 6,]39(M;~e$=_'@'[qc!kAJ:{qMy )7]U$Cdx %[Z4۽)XSR_}Sр*I J ~ ^r.l4MjS*̳Wn-DϷaRlmo&k< : 81CJIv-%N w4]ԪP J:— F*?N,)cQ'l\X0#}s٣;0^Xh+4b_7ĂX%"%|d*lu1(Z+E nrmC!qO8uTKy N(hch1&E:pv5Nw?<`Yf<}I W2~4΄4P5q(K^.av!ńPv:ۦ"t=ܣbLb_]! FDbw'w:N4TMҽZf6s<|k]&7qְϞG(4?c{f\d+R߿r8Z][~;YI(RΚ(!f4T@D NȀ(*HPAwGuǽBlOVou>-x-?ȳD7iPEޖ&K%`9knu6/:}+.Z SUFB>H=XHts9*ީq$e|UfU$"u$㺠\Y!*pP-v r$ ;rH攍mylgD:ῪKH%<=[ ^:$`+E냌OOmtm!-|)A47qʋOc]¦|f"uWGPe^Zwz GT΁IaHfFWhbb^%1l<(:дNUJLoLT%wa)_Mj423<,5Ɩm Nj\PGXkR8!ZO\^YGMOSxрӔ x}Pik#ȗ`KoF ` Z9rE6NOF/P./6Ƥ` 9Fdjyc74@9Co~y5^Gn Z#Gp"=~/'e`xZJCR'1Мh$x(5hU<6dRw 3ޅg1'W԰K~^sO'5g:E'W6A!2-It+敉 Ӣ{"]V# 7ûZq۾d3 O5Y4$܋-٪_gيYHek{codd+,^p-YHw!}gH~{]˕26?|m!gRUz/=+?\7 o~x,$aעLȭu0biфtZFrEc%L\];Ĭx`w9$.nYPv 7:USy;؋ՕNJ}CG0YOYnѬ1t)*f'uh慒3\y1}^Y[&;N;H<ԝĢOxϯF-鍖E$wh/hcȀ3J^x9ohs^-Vi5QSq,6ud^ #EBNF^뢻V:3`a`#s!bgsNXq??@)fn B֧3HE 6R Xy"]F׿4)#fx`=fcy \^ /I3ƺ=vK O7; ]d|Y#F~FjZ]ʮl9qURZP~I aZ=O3:XXW4>5%uVyXv;: 9$._\QH㭐fzZVr-džX AlUG9nS{ @r] M:WzTyLڸ/ tť]F4BB'` Aa%*5" d*lxe6&j~*%`Zs;n&6_Ο#f7geTO䫎m~\@VJ "br~N=?4i<4a4ڈV9B;O)=\+KDvPN'$7z:QF\C/^±e3K+|)'eca/+riQH6.\RUKWqϏWi>#GoT!Pe5p;=g?='~RCޱ/7?Sgt;rw`- ٘Kwfeio{!D kꐭ`sj->C/7^_U^%z|\uDxۃ"vs8Ls+qhQTb&TY|!{_yDw` gc+.Gp+ѥĚՒh6fBRk?G,}JX)Z]Kr%]h= ߸G.N}n3'AT&3oX9ceKtD\g%tҔr($2ڇDqYcfcY wQ~(5(z~^j54,mƑ͈%XX/bQjm=Yp ogҫ>:ՖqO-^I¾@/PVF|5B=X ?LXB/^(`oxW6׿XLC8^ vN~@plԠf.)!`hi>q%RK̜!poܲ^B|QuHl]p}Q:u@;%ְP)Rh.Z)'B6'҇Bp.snJ[&\f36ăwК;ưF˂WVa\|ê78s&I`2?skAC)nLKY]kb;鱁zӞ|n¶2 䨐qVܹ !vAU!,23zڥG"]EDy ]#STxIHm=r jo~u= ̨-WO'C@‘cl[E1G亝l}eU6PƙZ|JpWj1,LFsGI\6rJKZwgiV睑{$ XogzFBz|-hDR0"*}}>-&rzVv%wcClZPq':%hl_LQP1 PhTfaя%u}6G"NPP(/ż&ʒI,T^]t DNLdvt,>]+F̊`-Osh7&kٹV7q0lt;V(W\GWeL˝LtO9,bӨ@*ܬ(vhl]I祈[UN/xLZ;hY][/[##Krꫤ(t AC.&XV}hI ໴g|3x YO r]DJ+9eд8Zk OX f!F^{_V@3HNn- DCY3MӹfI<zG8hH:- 8mdy=X*&?0zc8MfU~u~*]o.e(7ӧc Wh#^l:KpLp_JkQ"TWnl4'O*n5BCꇱ6U'sFku'bWM!NvBbV{mIޅ8籴Wk *|uYI '8%og @5 78>v}$3$H)70 IodC/sv^&޼ RK^%f9fBM,y,m~lǣ4 $}/`64 s> 7(Vn1eO<;.ʷ0PSsp g"a{o#x7\oˢǹGxRf J9G_[+tǔ%F@[τ fZVl~UY#q$gsQev!!1:6+ȁdJ|ٹ|Ѿ$&7]]N[VDbuFExz(: 穫C ҒVcOv T1XI*r?RgX%XeW 43D$}% *Dq&UT+ NOSAw<<:#NF3.$Sj.=D=eEfD\iF_ܘZ3_/7'%t5LC + ,33.'ZVN ^4Cce>zn3SJDT6-Dzkp!(L֣O/zR+le@ljvm2^Se;P UߖEIuzlRBl};NȏT)ݵJH\ϣDb6C96oVoS=DAQDxk/hf7d~N?ii* ubL j Z4&\kh~F^1H)(⑪"!oϐ' t$C,K$>EHFoqd H cŽr`K!zD9 ;ƞg>4l5x %azd[JYvp!G=8KR)k>[t>r mkH䋁-T_kiדj$_Po$0D\F?y'}Xf27 V_r"jXȨ|+^ )A  Lar_JJ Jr5[j0K6(HQ269{+Q*lkeCd)}fTU##/'Mf~TM O2cX,X2 =՝ -=R T[q&:=/[n.urbWNOD9_(6U _^0zM;^.B~o(FOw7yt3t82 Fg2b{y;3`$AZ3tl@g%%oxY(}e7l ԭe򉞾0y)')^+Gw,fbפ@JxU%#ywϿUiB2äA;bn*sAdUHgvI Rc(1KWsuZ=q_ӡ;ӡ~r0ŪQM}Ǟh:'#`jk76E=0][,U{UG+UpjxT`%ds@D9244Җȏ+%gR.<T|#> Vn`mD;UWY@z!?;{|Tmz*ع@j*Di]$t'G[dTtPNщ{%YSTrIlUQ8讆{:&qL?]wijEU,W}uBISy')LANLUBl''XGUr"_`0%Ju@#eiQǔHKU#~_̷鼃.v,hB=]D9|멪:JP̲*2}>վҾED.g+**bXFdnҳw5 +BFW% tm۾r]A\Jy͐$!{bdZW ~oTX;z?faGĢ溾q5s.j٠~&MzLJtNs>ep۹.x'AĹrtЕCY1#,#$:7hQmAV*g}'%it+*|~:q~9]/QwEQ:Y?W-e/˪nj!nw}^$DKYBŽV?ޓ_GOƌ ?_E6uմ/sʮr&/,*[L :Zs]R1^6e6'=y THROٚye#ʖJ'}Nˁ5?⥓!1cO|%FWRKNp-S-%"ŵ#_.<9Ҭ0^ٻd|[[FfF&խZiٸ/.8z$,z1{9G(oO$gQE*eNs(l4'6EҁrM%r&ZO\ Uz ,ׁV. n*':pK#h2a)}=qI1$$2A` \rNje#<**.Vf7;^?oNR,ⶉ;@ǩ T>67-07׸?wnSV38 8ʹa5r4R56qLwZu{MJ'DD`TCy-ʼnnEh*DHB$/[5:Ή7evxo [JMfsfGxBA$HjBhCfô 2' }WZfg5Y 亻bNgZWXauɝG;⧞Kd9d̤H n|Fw)N,aMf ]rɷc0+FCLչht=e`=,kɔaEۋq̉l琢pvRHk XfWY\sYJ%jSXVwbB*ʞAp;Kq4| Vɽ USK"_wo|c)mȸS^NYnː(G>6T'd(S;ʋvlk S0K "r N+դNzv@vg`N#X&Dč';9 U#A6be L^S7Pm Z+GsKbhg]Tfh%h qY~AדO )Կ@TD0AD<t!Mt}&V~ljy^Dp0W{f,kpoH)6e=;ڸALK119}]8{'q]~uG?^eGdţdpNG'xȉj;s9λvi{&^d\~h'ϳby5֭}E6ݱLh׿[}N|b[.:8jFM wJ.^o fmLuD91rFn9'+^ė,M#^e5L!/$;l;yB!!]N3کC'-] ݇Peqy¦%ŷ-~hFl"lHh hK "WXMrhMrW>gӭ~+XjfT}^\jT$7")qyڢg>ЄrK0.{qHF[ȄhӋڳ\UUCOPo_TQU^'EbY*>z\| ooE `ˉ^H=ɝpQepF#0\ 8,RYɴȽ YVieR-g1`+I}!t% g,Zv6(ׇ!ZRu:r Ű=D5 ~TbKl;`+sf">*hJ[˪ ]#d-3\|3#ٹt/ZaP:y_Hl$_Y=K\:">!Cn> ko>]NӅg~ԉrK]PpofRm8);⋈%/EfDs щcunH{'e\jf=]VZ|UƳ e>S[C.zcU:XGds11>qeav| !; `ߍhp$cbt,\F4`mDZc&Ĕr:z5ɅL'Ւ!Wb?&_Ց) 駱5!|"pH -1$v U#^`z xwޅ5T"UK}Q`g58/SjZilj\D^ !-/tU0d\>]" :  "9Cb[)O"y%tv7߼}W}Lbh*XU~`Rc1{6B~>.cY#~FH$?/s]^yIP1v;%O2lr+A†hrcIعwr^l>n{XD;1|zY'ck7XTVBe^*; my(oe-r6؋]ɌK:4::5i'=*Q[aؒNMsh Vy6MFKNڹ5 rg_?J6{+Bv~%mcWb鿛 'z[8Z%X&N6Wo|ojgH4(2Ldl aJ{p${p\h#!?=Q#g(+nru6S~U8h4OrڪzL449e#ljd93ԔSx R'@E=ZU>7Z_O9Dz5U+`dŏ YjXTp?Ģj u DfR&Т|Qq0@[h]/?~  [읉Fˋaϥ#l@7{o&Hrx\7/\AX7rLj+ɀZ1Xt@XOaD,*"ba4=RFHݼ=lxl`n]M')G;5d38~bӰ*WȚ}Bm%/26 X rj$nڂ\&e@] YWsuR^ea,[BQh](ɨ+(E؟A|pB*ߙi*?+~K [TtX4V^5d*4 w-,颐kAUYؤ 7P|oی̌-6jJu")J= s<`&P@>NI= Y>\R-D08Ъve#D.U;27xɤOvT,IRax Ҁ'fzPބz$oInq<@ :R?N$RҬb>uʽ&tq~KbmGj͖ƨ:!bL^00r>f$u6Xd\^ת91g\88O|{(N c.QWn.Ğx$_|$;zF*F*U<%~Vl ֹQ":*¶֫nj:ނ$$2*N|@R6P`4ނ$Ygг!p҇kJB--U'4ajQZBqRKfiX MO֥*dN at>Z9"xd%Z !ϟfq.z0A'X搦2%'F= [CBfqu.#'<̤w/obv$2 1rFO݈G}rIJ^%d2" J|1P*^AYis$G}[xuP-&!nɨ$\s9jpnaBIм@͞ $1 cf!b)N48sau~|Jc@pu5^Phqnu;FFzn-vՌ^xh7m:|!=]:q06uղ(V'f%_vt^;m|jI;AO2Pvy?jE_rIATls W5QLL>كy6b\&:6\FX!0, H>1m V`oyE{,yI%1h@*RTuAWSp,j]tJF-YÔ=~*:0WhBڸ4s+LO0 f7-;)iC|%—cFQ.؝%]F!kqQGB73Cz|7>ǶQevājS=S)݀ڜycZӺxWƙfyA6f=Q.۰@ cQ -@Ĉc`)<-ouySMԑriapкS.S $[”Z%ڞ X6%a;*卒oؼ%k[O>`A%?:Q2kvRJ`ǨMbGbCChR˼t@P>EimZw=jhHXrOtj;k`ȽZn6^Ðښ%hֽȟQO/'\N:C"UTҟՈVIrdl\0L5KP`>,&9Qy *5[;1D;:8y|TN&9v!1ք1"Jc2-h-6BoGu4:]r漚 >ۻPr9nC{FLZꌳ򱔷 @oM8GmVBdػ2w=.+ bF8oJ.$qh~l_'Ju6-F$WmMd\lq=/s.z=3EU+{d4*%SB5[3NZGOZ[^0݄t hS&DMN㶿>W.aM3~j\Wn*Xf(R34.|ْh>+p@4bеmGY6G ]a+P)P$l6X+2 J-lهQ|,MMML]ƌ& Wp<~]%)P{>'y,g%imgJQAFhMǻ΍_\{t!SMfkz>&+;W@)]^]}F44+295N֖0blȢ{-QN]-Nx') n8NoUs:T%oK&>&4HM*=Ty| $2g.yh̖bky=H4mͳ ɵ])~qO+pEo/oy ܐ}aﵩ\OM;ߓgb#Zjit9U4Y/F; _="E]ls8yyw.抍uY]hT0x$^ڗf kF9QH^uDK7?` :ѩH [HDaT\Hp6PcVۛgU5xHAGDQo%w}'n)6Z)ޔ.@ [cpiӰ%~uӉ9vG{\5TQMwn! Hҥ,[L>sqEUe4 ?o &1vk#<wRKq_߯sIt3,͟[Mo[ Z%_~O#j* pp1R{~m:^7Eȩx[D婕 tq%yAz [ !58" 'bQ_n$JrcG JNcʘx0/ ϘiH==iF+{2~Ť‚ LyXZSt k k!N4uocža4?g{+0beƚX46BwZA?J2ۥS{%WɇePoLO89g{; 4oz3ό]>].rږ^t~# Bf!DT.yU|Q݈7,WM-/ \;,*&wsɧrv^0R?R>'&z*΢ G#俍2}z0!uȈY ^v#bM,Cob P GƇlzls,եy[(٩9MOYaɾ[T'/;6J*z'%mK܁4M`VP$Aqg :֣w 'T4NmM/zbbAh&8 6>pJ(QrYœZUqCؾIC+T.v1RXm68^|rm.pP%$DnSm(9rrZH}6 Ue(o;I y4a>·p{|(<{/>u s*Ď#/ycE`.Te,)1yΫB~&,AaIQ, C-oԨ`[c&.,N~j.q !G=V3z&Щ=zTHsjvxu.+rFzdd$DPk ]MAGD,iB"CF6FE^!k*p)+L:ɔUw̚CѯG!w\tq mx ڎKeyΎAl$4J@q!1  vw/LT ﭕ4yt 4i[ʓB+;,_U.Ͱ}0wt9S.W_X(J] EI;ӇvE'kDZ%[CҤ[19qžW>ޢ\B%\ ;]ez_&oWJ&ךϪ3?s}v:ՁY#@}5d$vUt/A^/BdV8Q=aH孓e9?b)ЬqlANEz[I2VBct-f4 6ɧ @šV5!UzEir!"*<0yBw?Mg/ڕ ,1w-J:T8MwےONR3,A uq7ڻZS(~m{J`"~f6+aW}g1-@e1q5TЛd=F+Ux||Q<;Sb^fY{/\1բ">2&cVUf`MA*@`߾lrȻ@ ֡"v(>?{g4J(mLҘb|>">!t[^U4YN{9z/,aF`bCtWȵxtV٤F` [ojhY W5EzufyAݷN >#8oY~ j Ctsg&jf1B{ŻrXMf'SsrB>)(Vi^dPUbX5GHPyhF6ΔLI&᧡Kଁ"ʐ.Nڱn¡jY-itmR  hxjRaJ |HP"Ϩ(w=)Ϩ^> apoqZ,?fva7h\"*;+;|Ɵs5Y]ג&V2N}Tj+>>s~RGq5N߽n-RsC=v!hQ; H6͌䔌LB>2V8k ~=0\~ 5 h9(y}7ZbZHجRe 1{x.C.L(I_6Qi R3"qUW{xn]A!,_Uad)=I{:R27ິZ1cHű%(y=۝*X5cАz?oOyd]<Ͷ66.m\䆝_d^鍐iZBb)&A!c4! }֎V콸 LbѵjsmUD?Xg\\  Yd: 0R$0%$ݰ3zj8~S)b,Jӝ7uQVf7/47YvR 8%A0nnE=Vc.kˏ>eV-cNfAsϹY)Jh=pJLfỘ8OǓv N~ӎ&O zn4-ԣ.u[DXU+}hKvֶ^ :}QݔnΗmjǭ4ٰYn=Ec*@nĶ_EV#cӥoJ]ItɄ~C8 ݊Zw"MrDEА>'aǦZ\ }өl g[\`Qk"phdRc4w̹cFCDr|JkP ZS .z>ek7eWN·xkEF> ].na 8zW7) ˓/cɯ40oޱM>a7zPLljYϩG2Rm ^(6bYJ0i5`9kHNִ'Q37*^v]n"\PR APkadW9K1,W;gs\VpČCtwv Qn{&]~.xk/l߂%Zt. l[*[.dz;!SJ) E`(J >{1@b>o::pn1%u+8?oU!ME\\::DߜMTT+{1w4Ĩ9 FENU+n|_r6_LArNǢõ3r85} %Bi`EX^׆NAL=YdU(š=Ļ:dw;&.#^t#|(+lvŕ9Lp:6~ևj^B#.(FU}͊$= $o[OlX{TSE#>FE2naH]xDf}w@& g?0U٬ F@@F<+h!GUyED j3޺KA~ q9qB]\~VX :nV ns=-drDy#0T,'0uFL؊XI#x_27OMSO\5mkLWO!6Mzɲ5i9D _J0S5Oya%4繕55pABtNa"Z!!t.YLN~bG2Al=w0$(GށdTx.Zs'UTNK! D8Gjo;ic#YpFӁ3 4J76e>Qn.l6,<6kq-ԣsOyv;1Y[^+;iW휲6}0d|oF (  CNeɁ!fJ|r(t({C-SHu|H Ef/ᮺG [uBcU$ irYd$toNn"TGB=m"k\3dCm%%?&A֙wv0%5_c S[z xmv|FX(݉d@eY,8fJ< G©~H-%mƀқԹQ` `TGiUGY^YEEN)kJ# >m|?ZnJĈ Tm&M5"Ǥfw 0Mׄj̢ՕVMFhUw9B>LqWu%?VcV(ȃY)6W: \u Z-pɟ](ꈙ#+JhDeTfIؽT*"h&\cIXۭ),9K8J =,e+`璬QyALڡǬUP.p©fLGVJP&dڬMFw7Ěی!UI`)i/NF{Ζ#.ҢƜB!t"DŽЊ)V5C*8$6o?[YOOI},HƠn\L*ጳ gH0jMMIsaȻSV diT7Əzv0Xi`jE .+3O; ㄯu+I5lU0ꊇdhnNB!gV1e8ρz'e3gf@M@0Wͅrs9b L'?~TY<+XY ^36.]$Pi;(4 #"7J">AvNwzFJOUGejBw7|/s󅳥ӐVQbͥ+gzp~k6 |ȥT(YQodn?$oduFCU50Fs:wmf ' 9¬OHWyo,qA?\`Tְ]թ8i5,LȇxD5G'\́ђ2r9VFK8t1rne N<]6Fbm4 iʰ _-نU}a 0o~}]c&<1 ɅhL|G}# a+Bov:p%&۵hLV/T.%b3שּׁÃ;l/V[F/ ,ޢ*o:T]er*#֪Wb sc!n߮\;!,[.tv!DX˘cC"Yhlԛ\kCݠK G0m~3qس A#qS4J*Z$Q7`db_c3kToY+hUiLd|m,Ψ?YEt9o4)2oyOpTr0.e8dL㴟>:bzȵT?O+>\>cv''eU4uq FAM"DP/d* (%,j:d" e09?pWCr"bm[[qd|֑,* 6eaƪE8P%obe%U-W6zC7E"+#%~9[w/jm;xWgi> ,ڲ>~*!s^ߚBqh"<ˣvJ> J&|`yh n=C\])ʐr7nZ*}КDHw+,.t#R$7|ߙh3D*eY[vLR22"A";Ń`xY3ElLF N⥍3Qi 37:\rNĚ|5|i-0q}=`5^i,I$`b/xqQMxq]gg흳PDYz(Aoٚ)!BTzϥ^i 3vd_ziHCEơR/OCޒ)!Ȑ}+pET5A,DfROq W )zf_+X3VHeƓ턶Z}Y8- T98Cpo YXi$2+cuLN4]~/4^{ч?av T~t935^lg6ͨ!FB3T9-a#ްбtKVU+d.m!Ћ[ϕQ_G~H*mku |q@C5ШbiaxmAiZ"@ztFӎFDr=1@}p&٩itЊh'E?i`ko9>I;*ZYxFYtm}C|*iܚLjChw],3WMMoHҰzEZPT])(!x%WS-#+]@#uon눅CJr9Sjrd\` Kl:̴XIKpJgh(0 %523 x8櫬es ~$b8u.+8&md='~q +Ȣu:تuI/~Zmlb9|k`gb`|I#( դ~KIJЧPkWiu}2j1K@fKF[6@x%!o0G x'⟹!G=UJW\J{ps.18xIu &oy;vYa4W4Io ^i\;$YGj]@گ 8t 7^ːĔ1vx!Mҋ3aEBdC)Eԑuj[X%X7h^eWKb5DQ5wf_ q$շg5JӋd{H=v|zs_WV(?j#'Zv ay#Äl dit\Zpe%x(%u [\]x697_ Xԁ#Nчw34DEo)-O_2gXgځ),E(!/4M:HW*q9qښ@~]FMGA v_ CZ[Fx1Yt3 w'6xOUQp?.kػҢ|Ej庁H]QS8CM(O; ޫ#MhwTx_cW'O5C5$-,u%t5wqHCL9 ;'kffݓx؋6o\L^g9hN 9闌 65T3Q=ކ\!,&uwNPW΄Bg4Q䟯Đ|f Vtq :U:Dա܎h̓ou&R hk}cф(AkDIj  ;ښ0J;e\j"lJRQMM,pIJ\0%ex@$ ˚!J)p>+8 S"?=UI-0(k]6X[н̔@o:W7U#в^I^ۗfk=u`K+m2+&\V)ڡҦl닮6V0[wS0d-/S W:0)}a%;KE l݁b6X|B.*{ َ vX~Ey7H-!D=ԓEB6dPoCڦuI-a="GeEX \ iτ(dg^b47CNU7k'RB{Ц9#h;3epE۹tfDŽ}c/Rޗ7CO,|c:Sء;jfB|44?K *DeJ)_&k-U2L ]&яî RUz.GJy)C=<bl43+q]^le"!zy|El!?ߚqA$\\EjU@WFhVe1no3pc'| ޔ/fz6;S/݊C<.2 8iލ9| ~9nEӂQ@*~15j6?$cx"pO\O=gFc'֧Y]JAv{'n(| vi--%|:Ak_qI&{݅b/'H8^\x1CDvW9]D¬ u{ٮh}^q]pQnR: h3}e]2vri4b/; 6.7RJӭMe'̀VCykֵKs H/N1oy__α)Ud^ k'NwWzSLyXeU"ۼB;%JѥE4º;js$ՎIl ڱxhb =iGrPۑ|cs;' ~C>3_R@< |J[tq#b= ɑTS}wP'&:Js/;,d-|{6 ~ѭ6l&2q}՝a]5FI3|~^Һ_cKGu<ҷ|C&, iP!6Q^ڙ2=%>̉A7`tzBXKI櫧(z| k7tAna~ة/W ޞ j ԉJZ`S4-s ,Qk jw:"F4:`HacԽN(ƎLS߽R|~T\}p#> Hbe l#6; +Ng ų^8e[<Ƙf ;2lV6ml"땡\yEH+"s~NbZtr ߷承Wan?}W”{)%`Qpna*:_h 5'Vn}D:G냄2 D(tC<6d9Z(kNCo}2AX6lA:Id*Rzm?ø* n ɖ)+[߁,˜ȕπ/2MQEkܵC̿چdm,zN,O[Gx<# 4f, !9w!C9UEb@ߑc"Vx=ubSdy {[: [v|?s>vKzuܽ]AL-x:_>[p,ןiR :K2|ŧ{HKfl0Վ~ Jeo]8 ]& >SÓ |NC!$o?  Vt՝xrďgHaC|C_<ѷQN _TnN*=n 27`U{8B;I޲Hz{XT;:dV̷j;l- @U 2R-S6z359_?$xFyIENDB`_Dhttp://www.fussverkehr.ch/fileadmin/templates/images/header-spot.pngYimage/png !"O PNG  IHDR R tEXtSoftwareAdobe ImageReadyqe<"iTXtXML:com.adobe.xmp 0HPLTE(Uc@IDATxL S 1nd_+}vAEb ъM\8D'&G J΁ۭIENDB`_Fhttp://www.fussverkehr.ch/fileadmin/templates/images/main-nav-bg-2.pngYimage/png$%&OPNG  IHDR xtEXtSoftwareAdobe ImageReadyqe<"iTXtXML:com.adobe.xmp o) PpPLTExxxyyyzzz~~~{{{|||}}}~~~|}|{zz~}||~~{{|~}}}~~zyy|{{||{zz{~~{||}~}zzy}}~~}~yzy||}~}}|5gIDATxڄwgߌF2J {7+6`71Cef{~#Ir|o;3Ea%,,aomX}C@0}=ك=ыQɋOՀR_O_54|>[&?}C1?^Zaa̿cu̵CtڵC@?=ׅ1˾/M_}˾|Mu[ѮgvڽϞѮE_`zm@^>_k|>}_5>)xy+/G=/WSϛ,_E_@=|6Gk _Y"#&'*L#9j5z>*'&*g=''R_CUzF#yԚ*Q#Y nwq8O8S*Зāt:}ii@qz݊.tR2.N[C)++{{cZ)eX j])9]VgǺ9m|-L,C΅gugdǔ9+EB䅬sghX9'"˺|F:#/tgHA:6CM<$ #M熇qHjn!Yn6oA(csTQMQQQF#owFx?øhК1cm9#HXCeldoD(_o_i~ l`= 6y- ~)Zl8X&`JH`Zkkxa|<6hk-;m7o&ԎNn:k[o:['玢tPuu:NTbb |QtrTǏRaU^9jϽ{TQ }t%ҙ(GEHQ:剂2AQ:''VebT&M L.)L:M&ӑSOKG.:iB}XB_.4 Ȩ23>8PC2=hEd{EQjZ[}hVd2d=UkQYͱ1{,H;6[F2{y|dcacvL;ww8,VǝdEgQgp608Ϟ?$[ZcK ˍo l161Ңru򅆷P,nY4?bH#lT.~1uU,-I*+-4rGZ\dW,UɯJ-JW%O2\l.J"IIRRK&3̤҃$bERT5S}FG$IUmQ/fLUS {KMj;T5[mFs{I5:;ۏ{lsv6p{t{K^j6gfU=ݎJ'O^`6GGz/4$zf|a&"so6Y:i{̂942 iix/p/]@<( xA@ifMO4A`1EBI w "JDH[ e钺E"P$̈%33%w"H|h(bb Πۿv$ou]M>W4xTQhDq*^ރSxVc%oj)Ca* ДWF᠁=`zK T)mRdz覡XBC` AC1|aZpas00ȵrmHoDžns=h0vxm04p\,[ƅrHsXIMĹYK-ދF\`7sڞ Kn4.no"v#E,' bnZ HK$|JR%`J'%{ɝٔ`b,SȝoS K1Jn@ca {O{). pQ~` Fiky >q|bsy'$W˕7pN\+>BrOhK[VqaIENDB`_Bhttp://www.fussverkehr.ch/fileadmin/templates/images/bg-footer.pngYimage/png,-.O5JFIFHHCreated with GIMPCC " "# ?ҿZ|*CzcYjŜb4+/cjI<;\ ɇ7=]#`4Vh2c1L ǂ4"AqM18.zOhttp://www.fussverkehr.ch/fileadmin/templates/images/pfeil.jpgZimage/jpeg012Opbody { color:#000000; font-family: arial, verdana, sans-serif; font-size: 12px; } h1 { font-size:16px; } h2 { font-size:15px; margin-top:20px; padding:0px; } p { line-height: 21px; } .csc-firstHeader { /*margin-left:5px;*/ } #service-nav { display:none!important; } #print-logo { float:right; } #print-logo img { width:217px; height:44px; } #logo { display:none; } #logo img { float:right; } #main-nav { display:none!important; } #sub-nav { display:none!important; } #content { width:65%; /*overflow:hidden;*/ margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; /*border-right:1px solid #000000;*/ float:left; max-width: 65%; } #content img { } .csc-textpic { max-width: 100%; overflow: hidden; } #border { width:25%; float:right; margin:0px 0px 0px 0px; padding:0px 0px 0px 5px; } #news { width:60%; float:left; padding-right:10px; } .news-latest-item, .news-latest-container h2, .news-latest-container { padding-left:0px; } #top-container #content { border-right:none!important; padding-right:10px; width:60%; } #bottom-container #border { padding:0px; width:32%; float:right; margin-top:-180px; } #footer { display: none; width:100%; border-top:1px solid #000000; padding:5px 0px 0px 0px; } #bottom-container { margin-bottom:20px; position:relative; } #top-container #content p { } #content p { line-height:18px; } #address-right, #address-left { width:200px; float:left; margin-right:10px; } a img { border:none; } a { color:#000000; font-family: arial, verdana, sans-serif; font-size: 12px; text-decoration:none; } div.news-single-backlink a, div.news-list-morelink a, a.external-link-new-window img, a.external-link img, a.mail img, a.download img { display:none; } div.csc-textpic-intext-left-nowrap div.csc-textpic-imagewrap { /*margin-left:7px;*/ } #main-container { } #header { position: static; height:100px; } #wrapper { position: relative; width:100%; } #border { } .clear { clear:both; } _>http://www.fussverkehr.ch/fileadmin/templates/styles/print.cssXtext/css456O##border { margin-top: 95px; }_?http://www.fussverkehr.ch/fileadmin/templates/styles/border.cssXtext/css89:O+#main-container div#sub-nav ul li.act a { border-right:8px solid #AAAAAA!important; } #main-container div#sub-nav ul#ts_sub-nav ul li.act a { border-right:8px solid #FED400!important; } /* IE fix */ #main-container div#sub-nav ul#ts_sub-nav ul li a { border-right:none!important; } _Bhttp://www.fussverkehr.ch/fileadmin/templates/styles/treelevel.cssXtext/css<=>O#service-nav ul { margin-left: 5px !important; } #service-nav ul li.service-nav-search { margin-top: -4px !important; } #service-nav ul li.service-nav-search #tx-indexedsearch-searchbox-sword { margin-left: 0px !important; width: 119px !important; } #service-nav ul li.service-nav-search #search-button { margin-left: 0px !important; height: 17px !important; } #main-nav ul { margin-top: 1px !important; } #main-nav ul li a { line-height: 26px !important; } #home-template #content { padding-top: 11px !important; } .news-latest-item { padding-bottom: 2px !important; } .csc-default object { margin-left: 5px; } .tx-x4etachoshop-pi1 label { line-height: 23px; } .tx_x4etachoshop_form label, .tx_x4etachoshop_form input { margin-bottom: 4px !important; } #tx_x4etachoshop_pi1-bemerkungen { left: 0px !important; position: relative !important; width: 182px !important; }_?http://www.fussverkehr.ch/fileadmin/templates/styles/safari.cssXtext/css@ABO/* * Shop CSS * 4eyes GmbH */ /* textarea#tx_x4etachoshop_pi1-bemerkungen { display:block; float:right; margin-right:200px; width:180px; padding:0px; } input#senden { padding-left:30px; margin-right:356px; margin-top:20px; } hr { margin-top:10px; } div.tx_x4etachoshop_form { margin-left:7px; margin-top:8px; } div.tx-x4etachoshop-pi1 label { } div.product-wrap { border-bottom:1px dotted #999999; margin:10px 0px 0px 6px; padding-bottom:10px; } */_Hhttp://www.fussverkehr.ch/typo3conf/ext/x4etachoshop/templates/shop1.cssXtext/cssDEFO"^/* Prototype JavaScript framework, version 1.6.1 * (c) 2005-2009 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * *--------------------------------------------------------------------------*/ var Prototype = { Version: '1.6.1', Browser: (function(){ var ua = navigator.userAgent; var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]'; return { IE: !!window.attachEvent && !isOpera, Opera: isOpera, WebKit: ua.indexOf('AppleWebKit/') > -1, Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1, MobileSafari: /Apple.*Mobile.*Safari/.test(ua) } })(), BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: (function() { var constructor = window.Element || window.HTMLElement; return !!(constructor && constructor.prototype); })(), SpecificElementExtensions: (function() { if (typeof window.HTMLDivElement !== 'undefined') return true; var div = document.createElement('div'); var form = document.createElement('form'); var isSupported = false; if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) { isSupported = true; } div = form = null; return isSupported; })() }, ScriptFragment: ']*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions = false; var Abstract = { }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; /* Based on Alex Arnell's inheritance implementation. */ var Class = (function() { function subclass() {}; function create() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0; i < properties.length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } function addMethods(source) { var ancestor = this.superclass && this.superclass.prototype; var properties = Object.keys(source); if (!Object.keys({ toString: true }).length) { if (source.toString != Object.prototype.toString) properties.push("toString"); if (source.valueOf != Object.prototype.valueOf) properties.push("valueOf"); } for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames().first() == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments); }; })(property).wrap(method); value.valueOf = method.valueOf.bind(method); value.toString = method.toString.bind(method); } this.prototype[property] = value; } return this; } return { create: create, Methods: { addMethods: addMethods } }; })(); (function() { var _toString = Object.prototype.toString; function extend(destination, source) { for (var property in source) destination[property] = source[property]; return destination; } function inspect(object) { try { if (isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } } function toJSON(object) { var type = typeof object; switch (type) { case 'undefined': case 'function': case 'unknown': return; case 'boolean': return object.toString(); } if (object === null) return 'null'; if (object.toJSON) return object.toJSON(); if (isElement(object)) return; var results = []; for (var property in object) { var value = toJSON(object[property]); if (!isUndefined(value)) results.push(property.toJSON() + ': ' + value); } return '{' + results.join(', ') + '}'; } function toQueryString(object) { return $H(object).toQueryString(); } function toHTML(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); } function keys(object) { var results = []; for (var property in object) results.push(property); return results; } function values(object) { var results = []; for (var property in object) results.push(object[property]); return results; } function clone(object) { return extend({ }, object); } function isElement(object) { return !!(object && object.nodeType == 1); } function isArray(object) { return _toString.call(object) == "[object Array]"; } function isHash(object) { return object instanceof Hash; } function isFunction(object) { return typeof object === "function"; } function isString(object) { return _toString.call(object) == "[object String]"; } function isNumber(object) { return _toString.call(object) == "[object Number]"; } function isUndefined(object) { return typeof object === "undefined"; } extend(Object, { extend: extend, inspect: inspect, toJSON: toJSON, toQueryString: toQueryString, toHTML: toHTML, keys: keys, values: values, clone: clone, isElement: isElement, isArray: isArray, isHash: isHash, isFunction: isFunction, isString: isString, isNumber: isNumber, isUndefined: isUndefined }); })(); Object.extend(Function.prototype, (function() { var slice = Array.prototype.slice; function update(array, args) { var arrayLength = array.length, length = args.length; while (length--) array[arrayLength + length] = args[length]; return array; } function merge(array, args) { array = slice.call(array, 0); return update(array, args); } function argumentNames() { var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') .replace(/\s+/g, '').split(','); return names.length == 1 && !names[0] ? [] : names; } function bind(context) { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = slice.call(arguments, 1); return function() { var a = merge(args, arguments); return __method.apply(context, a); } } function bindAsEventListener(context) { var __method = this, args = slice.call(arguments, 1); return function(event) { var a = update([event || window.event], args); return __method.apply(context, a); } } function curry() { if (!arguments.length) return this; var __method = this, args = slice.call(arguments, 0); return function() { var a = merge(args, arguments); return __method.apply(this, a); } } function delay(timeout) { var __method = this, args = slice.call(arguments, 1); timeout = timeout * 1000 return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); } function defer() { var args = update([0.01], arguments); return this.delay.apply(this, args); } function wrap(wrapper) { var __method = this; return function() { var a = update([__method.bind(this)], arguments); return wrapper.apply(this, a); } } function methodize() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { var a = update([this], arguments); return __method.apply(null, a); }; } return { argumentNames: argumentNames, bind: bind, bindAsEventListener: bindAsEventListener, curry: curry, delay: delay, p_defer: defer, wrap: wrap, methodize: methodize } })()); Date.prototype.toJSON = function() { return '"' + this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z"'; }; RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); this.currentlyExecuting = false; } catch(e) { this.currentlyExecuting = false; throw e; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, (function() { function prepareReplacement(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; } function gsub(pattern, replacement) { var result = '', source = this, match; replacement = prepareReplacement(replacement); if (Object.isString(pattern)) pattern = RegExp.escape(pattern); if (!(pattern.length || pattern.source)) { replacement = replacement(''); return replacement + source.split('').join(replacement) + replacement; } while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; } function sub(pattern, replacement, count) { replacement = prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); } function scan(pattern, iterator) { this.gsub(pattern, iterator); return String(this); } function truncate(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); } function strip() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); } function stripTags() { return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, ''); } function stripScripts() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); } function extractScripts() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); } function evalScripts() { return this.extractScripts().map(function(script) { return eval(script) }); } function escapeHTML() { return this.replace(/&/g,'&').replace(//g,'>'); } function unescapeHTML() { return this.stripTags().replace(/</g,'<').replace(/>/g,'>').replace(/&/g,'&'); } function toQueryParams(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()); var value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); } function toArray() { return this.split(''); } function succ() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); } function times(count) { return count < 1 ? '' : new Array(count + 1).join(this); } function camelize() { var parts = this.split('-'), len = parts.length; if (len == 1) return parts[0]; var camelized = this.charAt(0) == '-' ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) : parts[0]; for (var i = 1; i < len; i++) camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1); return camelized; } function capitalize() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); } function underscore() { return this.replace(/::/g, '/') .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') .replace(/([a-z\d])([A-Z])/g, '$1_$2') .replace(/-/g, '_') .toLowerCase(); } function dasherize() { return this.replace(/_/g, '-'); } function inspect(useDoubleQuotes) { var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) { if (character in String.specialChar) { return String.specialChar[character]; } return '\\u00' + character.charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; } function toJSON() { return this.inspect(true); } function unfilterJSON(filter) { return this.replace(filter || Prototype.JSONFilter, '$1'); } function isJSON() { var str = this; if (str.blank()) return false; str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); } function evalJSON(sanitize) { var json = this.unfilterJSON(); try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); } function include(pattern) { return this.indexOf(pattern) > -1; } function startsWith(pattern) { return this.indexOf(pattern) === 0; } function endsWith(pattern) { var d = this.length - pattern.length; return d >= 0 && this.lastIndexOf(pattern) === d; } function empty() { return this == ''; } function blank() { return /^\s*$/.test(this); } function interpolate(object, pattern) { return new Template(this, pattern).evaluate(object); } return { gsub: gsub, sub: sub, scan: scan, truncate: truncate, strip: String.prototype.trim ? String.prototype.trim : strip, stripTags: stripTags, stripScripts: stripScripts, extractScripts: extractScripts, evalScripts: evalScripts, escapeHTML: escapeHTML, unescapeHTML: unescapeHTML, toQueryParams: toQueryParams, parseQuery: toQueryParams, toArray: toArray, succ: succ, times: times, camelize: camelize, capitalize: capitalize, underscore: underscore, dasherize: dasherize, inspect: inspect, toJSON: toJSON, unfilterJSON: unfilterJSON, isJSON: isJSON, evalJSON: evalJSON, include: include, startsWith: startsWith, endsWith: endsWith, empty: empty, blank: blank, interpolate: interpolate }; })()); var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) { if (object && Object.isFunction(object.toTemplateReplacements)) object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object == null) return (match[1] + ''); var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3]; var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = { }; var Enumerable = (function() { function each(iterator, context) { var index = 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e != $break) throw e; } return this; } function eachSlice(number, iterator, context) { var index = -number, slices = [], array = this.toArray(); if (number < 1) return array; while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); } function all(iterator, context) { iterator = iterator || Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; } function any(iterator, context) { iterator = iterator || Prototype.K; var result = false; this.each(function(value, index) { if (result = !!iterator.call(context, value, index)) throw $break; }); return result; } function collect(iterator, context) { iterator = iterator || Prototype.K; var results = []; this.each(function(value, index) { results.push(iterator.call(context, value, index)); }); return results; } function detect(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result = value; throw $break; } }); return result; } function findAll(iterator, context) { var results = []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; } function grep(filter, iterator, context) { iterator = iterator || Prototype.K; var results = []; if (Object.isString(filter)) filter = new RegExp(RegExp.escape(filter)); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; } function include(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; } function inGroupsOf(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); } function inject(memo, iterator, context) { this.each(function(value, index) { memo = iterator.call(context, memo, value, index); }); return memo; } function invoke(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); } function max(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value >= result) result = value; }); return result; } function min(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value < result) result = value; }); return result; } function partition(iterator, context) { iterator = iterator || Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; } function pluck(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; } function reject(iterator, context) { var results = []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; } function sortBy(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); } function toArray() { return this.map(); } function zip() { var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last())) iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); } function size() { return this.toArray().length; } function inspect() { return '#'; } return { each: each, eachSlice: eachSlice, all: all, every: all, any: any, some: any, collect: collect, map: collect, detect: detect, findAll: findAll, select: findAll, filter: findAll, grep: grep, include: include, member: include, inGroupsOf: inGroupsOf, inject: inject, invoke: invoke, max: max, min: min, partition: partition, pluck: pluck, reject: reject, sortBy: sortBy, toArray: toArray, entries: toArray, zip: zip, size: size, inspect: inspect, find: detect }; })(); function $A(iterable) { if (!iterable) return []; if ('toArray' in Object(iterable)) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; } Array.from = $A; (function() { var arrayProto = Array.prototype, slice = arrayProto.slice, _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available function each(iterator) { for (var i = 0, length = this.length; i < length; i++) iterator(this[i]); } if (!_each) _each = each; function clear() { this.length = 0; return this; } function first() { return this[0]; } function last() { return this[this.length - 1]; } function compact() { return this.select(function(value) { return value != null; }); } function flatten() { return this.inject([], function(array, value) { if (Object.isArray(value)) return array.concat(value.flatten()); array.push(value); return array; }); } function without() { var values = slice.call(arguments, 0); return this.select(function(value) { return !values.include(value); }); } function reverse(inline) { return (inline !== false ? this : this.toArray())._reverse(); } function uniq(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); } function intersect(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item === value }); }); } function clone() { return slice.call(this, 0); } function size() { return this.length; } function inspect() { return '[' + this.map(Object.inspect).join(', ') + ']'; } function toJSON() { var results = []; this.each(function(object) { var value = Object.toJSON(object); if (!Object.isUndefined(value)) results.push(value); }); return '[' + results.join(', ') + ']'; } function indexOf(item, i) { i || (i = 0); var length = this.length; if (i < 0) i = length + i; for (; i < length; i++) if (this[i] === item) return i; return -1; } function lastIndexOf(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; } function concat() { var array = slice.call(this, 0), item; for (var i = 0, length = arguments.length; i < length; i++) { item = arguments[i]; if (Object.isArray(item) && !('callee' in item)) { for (var j = 0, arrayLength = item.length; j < arrayLength; j++) array.push(item[j]); } else { array.push(item); } } return array; } Object.extend(arrayProto, Enumerable); if (!arrayProto._reverse) arrayProto._reverse = arrayProto.reverse; Object.extend(arrayProto, { _each: _each, clear: clear, first: first, last: last, compact: compact, flatten: flatten, without: without, reverse: reverse, uniq: uniq, intersect: intersect, clone: clone, toArray: clone, size: size, inspect: inspect, toJSON: toJSON }); var CONCAT_ARGUMENTS_BUGGY = (function() { return [].concat(arguments)[0][0] !== 1; })(1,2) if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat; if (!arrayProto.indexOf) arrayProto.indexOf = indexOf; if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf; })(); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { function initialize(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); } function _each(iterator) { for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } } function set(key, value) { return this._object[key] = value; } function get(key) { if (this._object[key] !== Object.prototype[key]) return this._object[key]; } function unset(key) { var value = this._object[key]; delete this._object[key]; return value; } function toObject() { return Object.clone(this._object); } function keys() { return this.pluck('key'); } function values() { return this.pluck('value'); } function index(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; } function merge(object) { return this.clone().update(object); } function update(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); } function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=' + encodeURIComponent(String.interpret(value)); } function toQueryString() { return this.inject([], function(results, pair) { var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') { if (Object.isArray(values)) return results.concat(values.map(toQueryPair.curry(key))); } else results.push(toQueryPair(key, values)); return results; }).join('&'); } function inspect() { return '#'; } function toJSON() { return Object.toJSON(this.toObject()); } function clone() { return new Hash(this); } return { initialize: initialize, _each: _each, set: set, get: get, unset: unset, toObject: toObject, toTemplateReplacements: toObject, keys: keys, values: values, index: index, merge: merge, update: update, toQueryString: toQueryString, inspect: inspect, toJSON: toJSON, clone: clone }; })()); Hash.from = $H; Object.extend(Number.prototype, (function() { function toColorPart() { return this.toPaddedString(2, 16); } function succ() { return this + 1; } function times(iterator, context) { $R(0, this, true).each(iterator, context); return this; } function toPaddedString(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; } function toJSON() { return isFinite(this) ? this.toString() : 'null'; } function abs() { return Math.abs(this); } function round() { return Math.round(this); } function ceil() { return Math.ceil(this); } function floor() { return Math.floor(this); } return { toColorPart: toColorPart, succ: succ, times: times, toPaddedString: toPaddedString, toJSON: toJSON, abs: abs, round: round, ceil: ceil, floor: floor }; })()); function $R(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var ObjectRange = Class.create(Enumerable, (function() { function initialize(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; } function _each(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } } function include(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } return { initialize: initialize, _each: _each, include: include }; })()); var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method = this.options.method.toLowerCase(); if (Object.isString(this.options.parameters)) this.options.parameters = this.options.parameters.toQueryParams(); else if (Object.isHash(this.options.parameters)) this.options.parameters = this.options.parameters.toObject(); } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.clone(this.options.parameters); if (!['get', 'post'].include(this.method)) { params['_method'] = this.method; this.method = 'post'; } this.parameters = params; if (params = Object.toQueryString(params)) { if (this.method == 'get') this.url += (this.url.include('?') ? '&' : '?') + params; else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) params += '&_='; } try { var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).p_defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300); }, getStatus: function() { try { return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null; } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); } if(readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml; this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; json = decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion = { }; insertion[options.insertion] = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = { }; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element = document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath = function(expression, parentElement) { var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*--------------------------------------------------------------------------*/ if (!window.Node) var Node = { }; if (!Node.ELEMENT_NODE) { Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function(global) { var SETATTRIBUTE_IGNORES_NAME = (function(){ var elForm = document.createElement("form"); var elInput = document.createElement("input"); var root = document.documentElement; elInput.setAttribute("name", "test"); elForm.appendChild(elInput); root.appendChild(elForm); var isBuggy = elForm.elements ? (typeof elForm.elements.test == "undefined") : null; root.removeChild(elForm); elForm = elInput = null; return isBuggy; })(); var element = global.Element; global.Element = function(tagName, attributes) { attributes = attributes || { }; tagName = tagName.toLowerCase(); var cache = Element.cache; if (SETATTRIBUTE_IGNORES_NAME && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); } if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); return Element.writeAttribute(cache[tagName].cloneNode(false), attributes); }; Object.extend(global.Element, element || { }); if (element) global.Element.prototype = element.prototype; })(this); Element.cache = { }; Element.idCounter = 1; Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) { element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element = $(element); element.style.display = 'none'; return element; }, show: function(element) { element = $(element); element.style.display = ''; return element; }, remove: function(element) { element = $(element); element.parentNode.removeChild(element); return element; }, update: (function(){ var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){ var el = document.createElement("select"), isBuggy = true; el.innerHTML = ""; if (el.options && el.options[0]) { isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION"; } el = null; return isBuggy; })(); var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){ try { var el = document.createElement("table"); if (el && el.tBodies) { el.innerHTML = "test"; var isBuggy = typeof el.tBodies[0] == "undefined"; el = null; return isBuggy; } } catch (e) { return true; } })(); var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () { var s = document.createElement("script"), isBuggy = false; try { s.appendChild(document.createTextNode("")); isBuggy = !s.firstChild || s.firstChild && s.firstChild.nodeType !== 3; } catch (e) { isBuggy = true; } s = null; return isBuggy; })(); function update(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); var tagName = element.tagName.toUpperCase(); if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) { element.text = content; return element; } if (SELECT_ELEMENT_INNERHTML_BUGGY || TABLE_ELEMENT_INNERHTML_BUGGY) { if (tagName in Element._insertionTranslations.tags) { while (element.firstChild) { element.removeChild(element.firstChild); } Element._getContentFromAnonymousElement(tagName, content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else { element.innerHTML = content.stripScripts(); } } else { element.innerHTML = content.stripScripts(); } content.evalScripts.bind(content).p_defer(); return element; } return update; })(), replace: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).p_defer(); content = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element = $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) insertions = {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content = insertions[position]; position = position.toLowerCase(); insert = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content = Object.toHTML(content); tagName = ((position == 'before' || position == 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); if (position == 'top' || position == 'after') childNodes.reverse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).p_defer(); } return element; }, wrap: function(element, wrapper, attributes) { element = $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); else wrapper = new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property = pair.first(), attribute = pair.last(); var value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property) { element = $(element); var elements = []; while (element = element[property]) if (element.nodeType == 1) elements.push(Element.extend(element)); return elements; }, ancestors: function(element) { return Element.recursivelyCollect(element, 'parentNode'); }, descendants: function(element) { return Element.select(element, "*"); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { if (!(element = $(element).firstChild)) return []; while (element && element.nodeType != 1) element = element.nextSibling; if (element) return [element].concat($(element).nextSiblings()); return []; }, previousSiblings: function(element) { return Element.recursivelyCollect(element, 'previousSibling'); }, nextSiblings: function(element) { return Element.recursivelyCollect(element, 'nextSibling'); }, siblings: function(element) { element = $(element); return Element.previousSiblings(element).reverse() .concat(Element.nextSiblings(element)); }, match: function(element, selector) { if (Object.isString(selector)) selector = new Selector(selector); return selector.match($(element)); }, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = Element.ancestors(element); return Object.isNumber(expression) ? ancestors[expression] : Selector.findElement(ancestors, expression, index); }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return Element.firstDescendant(element); return Object.isNumber(expression) ? Element.descendants(element)[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element)); var previousSiblings = Element.previousSiblings(element); return Object.isNumber(expression) ? previousSiblings[expression] : Selector.findElement(previousSiblings, expression, index); }, next: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element)); var nextSiblings = Element.nextSiblings(element); return Object.isNumber(expression) ? nextSiblings[expression] : Selector.findElement(nextSiblings, expression, index); }, select: function(element) { var args = Array.prototype.slice.call(arguments, 1); return Selector.findChildElements(element, args); }, adjacent: function(element) { var args = Array.prototype.slice.call(arguments, 1); return Selector.findChildElements(element.parentNode, args).without(element); }, identify: function(element) { element = $(element); var id = Element.readAttribute(element, 'id'); if (id) return id; do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id)); Element.writeAttribute(element, 'id', id); return id; }, readAttribute: function(element, name) { element = $(element); if (Prototype.Browser.IE) { var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element = $(element); var attributes = { }, t = Element._attributeTranslations.write; if (typeof name == 'object') attributes = name; else attributes[name] = Object.isUndefined(value) ? true : value; for (var attr in attributes) { name = t.names[attr] || attr; value = attributes[attr]; if (t.values[attr]) name = t.values[attr](element, value); if (value === false || value === null) element.removeAttribute(name); else if (value === true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return Element.getDimensions(element).height; }, getWidth: function(element) { return Element.getDimensions(element).width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element = $(element))) return; if (!Element.hasClassName(element, className)) element.className += (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element = $(element))) return; element.className = element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; return Element[Element.hasClassName(element, className) ? 'removeClassName' : 'addClassName'](element, className); }, cleanWhitespace: function(element) { element = $(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element = $(element), ancestor = $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) === 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !== element; while (element = element.parentNode) if (element == ancestor) return true; return false; }, scrollTo: function(element) { element = $(element); var pos = Element.cumulativeOffset(element); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value || value == 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { element.style.cssText += ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) if (property == 'opacity') element.setOpacity(styles[property]); else elementStyle[(property == 'float' || property == 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property]; return element; }, setOpacity: function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, getDimensions: function(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display != 'none' && display != null) // Safari bug return {width: element.offsetWidth, height: element.offsetHeight}; var els = element.style; var originalVisibility = els.visibility; var originalPosition = els.position; var originalDisplay = els.display; els.visibility = 'hidden'; if (originalPosition != 'fixed') // Switching fixed to absolute causes issues in Safari els.position = 'absolute'; els.display = 'block'; var originalWidth = element.clientWidth; var originalHeight = element.clientHeight; els.display = originalDisplay; els.position = originalPosition; els.visibility = originalVisibility; return {width: originalWidth, height: originalHeight}; }, makePositioned: function(element) { element = $(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; if (Prototype.Browser.Opera) { element.style.top = 0; element.style.left = 0; } } return element; }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } return element; }, makeClipping: function(element) { element = $(element); if (element._overflow) return element; element._overflow = Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !== 'hidden') element.style.overflow = 'hidden'; return element; }, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; }, cumulativeOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }, positionedOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (element.tagName.toUpperCase() == 'BODY') break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); return Element._returnOffset(valueL, valueT); }, absolutize: function(element) { element = $(element); if (Element.getStyle(element, 'position') == 'absolute') return element; var offsets = Element.positionedOffset(element); var top = offsets[1]; var left = offsets[0]; var width = element.clientWidth; var height = element.clientHeight; element._originalLeft = left - parseFloat(element.style.left || 0); element._originalTop = top - parseFloat(element.style.top || 0); element._originalWidth = element.style.width; element._originalHeight = element.style.height; element.style.position = 'absolute'; element.style.top = top + 'px'; element.style.left = left + 'px'; element.style.width = width + 'px'; element.style.height = height + 'px'; return element; }, relativize: function(element) { element = $(element); if (Element.getStyle(element, 'position') == 'relative') return element; element.style.position = 'relative'; var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); element.style.top = top + 'px'; element.style.left = left + 'px'; element.style.height = element._originalHeight; element.style.width = element._originalWidth; return element; }, cumulativeScrollOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return Element._returnOffset(valueL, valueT); }, getOffsetParent: function(element) { if (element.offsetParent) return $(element.offsetParent); if (element == document.body) return $(element); while ((element = element.parentNode) && element != document.body) if (Element.getStyle(element, 'position') != 'static') return $(element); return $(document.body); }, viewportOffset: function(forElement) { var valueT = 0, valueL = 0; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (!Prototype.Browser.Opera || (element.tagName && (element.tagName.toUpperCase() == 'BODY'))) { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return Element._returnOffset(valueL, valueT); }, clonePosition: function(element, source) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); source = $(source); var p = Element.viewportOffset(source); element = $(element); var delta = [0, 0]; var parent = null; if (Element.getStyle(element, 'position') == 'absolute') { parent = Element.getOffsetParent(element); delta = Element.viewportOffset(parent); } if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) element.style.width = source.offsetWidth + 'px'; if (options.setHeight) element.style.height = source.offsetHeight + 'px'; return element; } }; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'left': case 'top': case 'right': case 'bottom': if (proceed(element, 'position') === 'static') return null; case 'height': case 'width': if (!Element.visible(element)) return null; var dim = parseInt(proceed(element, style), 10); if (dim !== element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style === 'height') { properties = ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties = ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val = proceed(element, property); return val === null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute === 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { Element.Methods.getOffsetParent = Element.Methods.getOffsetParent.wrap( function(proceed, element) { element = $(element); try { element.offsetParent } catch(e) { return $(document.body) } var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); $w('positionedOffset viewportOffset').each(function(method) { Element.Methods[method] = Element.Methods[method].wrap( function(proceed, element) { element = $(element); try { element.offsetParent } catch(e) { return Element._returnOffset(0,0) } var position = element.getStyle('position'); if (position !== 'static') return proceed(element); var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed') offsetParent.setStyle({ zoom: 1 }); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); }); Element.Methods.cumulativeOffset = Element.Methods.cumulativeOffset.wrap( function(proceed, element) { try { element.offsetParent } catch(e) { return Element._returnOffset(0,0) } return proceed(element); } ); Element.Methods.getStyle = function(element, style) { element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') { if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value == 'auto') { if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity = function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element = $(element); var currentStyle = element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal')) element.style.zoom = 1; var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { (filter = stripAlpha(filter)) ? style.filter = filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value = 0; style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element; }; Element._attributeTranslations = (function(){ var classProp = 'className'; var forProp = 'for'; var el = document.createElement('div'); el.setAttribute(classProp, 'x'); if (el.className !== 'x') { el.setAttribute('class', 'x'); if (el.className === 'x') { classProp = 'class'; } } el = null; el = document.createElement('label'); el.setAttribute(forProp, 'x'); if (el.htmlFor !== 'x') { el.setAttribute('htmlFor', 'x'); if (el.htmlFor === 'x') { forProp = 'htmlFor'; } } el = null; return { read: { names: { 'class': classProp, 'className': classProp, 'for': forProp, 'htmlFor': forProp }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute); }, _getAttr2: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: (function(){ var el = document.createElement('div'); el.onclick = Prototype.emptyFunction; var value = el.getAttribute('onclick'); var f; if (String(value).indexOf('{') > -1) { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; attribute = attribute.toString(); attribute = attribute.split('{')[1]; attribute = attribute.split('}')[0]; return attribute.strip(); }; } else if (value === '') { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; return attribute.strip(); }; } el = null; return f; })(), _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } } })(); Element._attributeTranslations.write = { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; } } }; Element._attributeTranslations.has = {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; Element._attributeTranslations.has[attr.toLowerCase()] = attr; }); (function(v) { Object.extend(v, { href: v._getAttr2, src: v._getAttr2, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); if (Prototype.BrowserFeatures.ElementExtensions) { (function() { function _descendants(element) { var nodes = element.getElementsByTagName('*'), results = []; for (var i = 0, node; node = nodes[i]; i++) if (node.tagName !== "!") // Filter out comment nodes. results.push(node); return results; } Element.Methods.down = function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? _descendants(element)[expression] : Element.select(element, expression)[index || 0]; } })(); } } else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; if (value == 1) if(element.tagName.toUpperCase() == 'IMG' && element.width) { element.width++; element.width--; } else try { var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; Element.Methods.cumulativeOffset = function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }; } if ('outerHTML' in document.documentElement) { Element.Methods.replace = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling = element.next(); var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML = content.stripScripts(); content.evalScripts.bind(content).p_defer(); return element; }; } Element._returnOffset = function(l, t) { var result = [l, t]; result.left = l; result.top = t; return result; }; Element._getContentFromAnonymousElement = function(tagName, html) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; if (t) { div.innerHTML = t[0] + html + t[1]; t[2].times(function() { div = div.firstChild }); } else div.innerHTML = html; return $A(div.childNodes); }; Element._insertionTranslations = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['', '
', 1], TBODY: ['', '
', 2], TR: ['', '
', 3], TD: ['
', '
', 4], SELECT: ['', 1] } }; (function() { var tags = Element._insertionTranslations.tags; Object.extend(tags, { THEAD: tags.TBODY, TFOOT: tags.TBODY, TH: tags.TD }); })(); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { attribute = Element._attributeTranslations.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag = { }; Object.extend(Element, Element.Methods); (function(div) { if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) { window.HTMLElement = { }; window.HTMLElement.prototype = div['__proto__']; Prototype.BrowserFeatures.ElementExtensions = true; } div = null; })(document.createElement('div')) Element.extend = (function() { function checkDeficiency(tagName) { if (typeof window.Element != 'undefined') { var proto = window.Element.prototype; if (proto) { var id = '_' + (Math.random()+'').slice(2); var el = document.createElement(tagName); proto[id] = 'x'; var isBuggy = (el[id] !== 'x'); delete proto[id]; el = null; return isBuggy; } } return false; } function extendElementWith(element, methods) { for (var property in methods) { var value = methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] = value.methodize(); } } var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object'); if (Prototype.BrowserFeatures.SpecificElementExtensions) { if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) { return function(element) { if (element && typeof element._extendedByPrototype == 'undefined') { var t = element.tagName; if (t && (/^(?:object|applet|embed)$/i.test(t))) { extendElementWith(element, Element.Methods); extendElementWith(element, Element.Methods.Simulated); extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]); } } return element; } } return Prototype.K; } var Methods = { }, ByTag = Element.Methods.ByTag; var extend = Object.extend(function(element) { if (!element || typeof element._extendedByPrototype != 'undefined' || element.nodeType != 1 || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName.toUpperCase(); if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); extendElementWith(element, methods); element._extendedByPrototype = Prototype.emptyFunction; return element; }, { refresh: function() { if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); Element.hasAttribute = function(element, attribute) { if (element.hasAttribute) return element.hasAttribute(attribute); return Element.Methods.Simulated.hasAttribute(element, attribute); }; Element.addMethods = function(methods) { var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods) }); } if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] = { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent = onlyIfAbsent || false; for (var property in methods) { var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] = value.methodize(); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; var element = document.createElement(tagName); var proto = element['__proto__'] || element.constructor.prototype; element = null; return proto; } var elementPrototype = window.HTMLElement ? HTMLElement.prototype : Element.prototype; if (F.ElementExtensions) { copy(Element.Methods, elementPrototype); copy(Element.Methods.Simulated, elementPrototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache = { }; }; document.viewport = { getDimensions: function() { return { width: this.getWidth(), height: this.getHeight() }; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; (function(viewport) { var B = Prototype.Browser, doc = document, element, property = {}; function getRootElement() { if (B.WebKit && !doc.evaluate) return document; if (B.Opera && window.parseFloat(window.opera.version()) < 9.5) return document.body; return document.documentElement; } function define(D) { if (!element) element = getRootElement(); property[D] = 'client' + D; viewport['get' + D] = function() { return element[property[D]] }; return viewport['get' + D](); } viewport.getWidth = define.curry('Width'); viewport.getHeight = define.curry('Height'); })(document.viewport); Element.Storage = { UID: 1 }; Element.addMethods({ getStorage: function(element) { if (!(element = $(element))) return; var uid; if (element === window) { uid = 0; } else { if (typeof element._prototypeUID === "undefined") element._prototypeUID = [Element.Storage.UID++]; uid = element._prototypeUID[0]; } if (!Element.Storage[uid]) Element.Storage[uid] = $H(); return Element.Storage[uid]; }, store: function(element, key, value) { if (!(element = $(element))) return; if (arguments.length === 2) { Element.getStorage(element).update(key); } else { Element.getStorage(element).set(key, value); } return element; }, retrieve: function(element, key, defaultValue) { if (!(element = $(element))) return; var hash = Element.getStorage(element), value = hash.get(key); if (Object.isUndefined(value)) { hash.set(key, defaultValue); value = defaultValue; } return value; }, clone: function(element, deep) { if (!(element = $(element))) return; var clone = element.cloneNode(deep); clone._prototypeUID = void 0; if (deep) { var descendants = Element.select(clone, '*'), i = descendants.length; while (i--) { descendants[i]._prototypeUID = void 0; } } return Element.extend(clone); } }); /* Portions of the Selector class are derived from Jack Slocum's DomQuery, * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style * license. Please see http://www.yui-ext.com/ for more information. */ var Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); if (this.shouldUseSelectorsAPI()) { this.mode = 'selectorsAPI'; } else if (this.shouldUseXPath()) { this.mode = 'xpath'; this.compileXPathMatcher(); } else { this.mode = "normal"; this.compileMatcher(); } }, shouldUseXPath: (function() { var IS_DESCENDANT_SELECTOR_BUGGY = (function(){ var isBuggy = false; if (document.evaluate && window.XPathResult) { var el = document.createElement('div'); el.innerHTML = '
'; var xpath = ".//*[local-name()='ul' or local-name()='UL']" + "//*[local-name()='li' or local-name()='LI']"; var result = document.evaluate(xpath, el, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); isBuggy = (result.snapshotLength !== 2); el = null; } return isBuggy; })(); return function() { if (!Prototype.BrowserFeatures.XPath) return false; var e = this.expression; if (Prototype.Browser.WebKit && (e.include("-of-type") || e.include(":empty"))) return false; if ((/(\[[\w-]*?:|:checked)/).test(e)) return false; if (IS_DESCENDANT_SELECTOR_BUGGY) return false; return true; } })(), shouldUseSelectorsAPI: function() { if (!Prototype.BrowserFeatures.SelectorsAPI) return false; if (Selector.CASE_INSENSITIVE_CLASS_NAMES) return false; if (!Selector._div) Selector._div = new Element('div'); try { Selector._div.querySelector(this.expression); } catch(e) { return false; } return true; }, compileMatcher: function() { var e = this.expression, ps = Selector.patterns, h = Selector.handlers, c = Selector.criteria, le, p, m, len = ps.length, name; if (Selector._cache[e]) { this.matcher = Selector._cache[e]; return; } this.matcher = ["this.matcher = function(root) {", "var r = root, h = Selector.handlers, c = false, n;"]; while (e && le != e && (/\S/).test(e)) { le = e; for (var i = 0; i"; } }); if (Prototype.BrowserFeatures.SelectorsAPI && document.compatMode === 'BackCompat') { Selector.CASE_INSENSITIVE_CLASS_NAMES = (function(){ var div = document.createElement('div'), span = document.createElement('span'); div.id = "prototype_test_id"; span.className = 'Test'; div.appendChild(span); var isIgnored = (div.querySelector('#prototype_test_id .test') !== null); div = span = null; return isIgnored; })(); } Object.extend(Selector, { _cache: { }, xpath: { descendant: "//*", child: "/*", adjacent: "/following-sibling::*[1]", laterSibling: '/following-sibling::*', tagName: function(m) { if (m[1] == '*') return ''; return "[local-name()='" + m[1].toLowerCase() + "' or local-name()='" + m[1].toUpperCase() + "']"; }, className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", id: "[@id='#{1}']", attrPresence: function(m) { m[1] = m[1].toLowerCase(); return new Template("[@#{1}]").evaluate(m); }, attr: function(m) { m[1] = m[1].toLowerCase(); m[3] = m[5] || m[6]; return new Template(Selector.xpath.operators[m[2]]).evaluate(m); }, pseudo: function(m) { var h = Selector.xpath.pseudos[m[1]]; if (!h) return ''; if (Object.isFunction(h)) return h(m); return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); }, operators: { '=': "[@#{1}='#{3}']", '!=': "[@#{1}!='#{3}']", '^=': "[starts-with(@#{1}, '#{3}')]", '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']", '*=': "[contains(@#{1}, '#{3}')]", '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" }, pseudos: { 'first-child': '[not(preceding-sibling::*)]', 'last-child': '[not(following-sibling::*)]', 'only-child': '[not(preceding-sibling::* or following-sibling::*)]', 'empty': "[count(*) = 0 and (count(text()) = 0)]", 'checked': "[@checked]", 'disabled': "[(@disabled) and (@type!='hidden')]", 'enabled': "[not(@disabled) and (@type!='hidden')]", 'not': function(m) { var e = m[6], p = Selector.patterns, x = Selector.xpath, le, v, len = p.length, name; var exclusion = []; while (e && le != e && (/\S/).test(e)) { le = e; for (var i = 0; i= 0)]"; return new Template(predicate).evaluate({ fragment: fragment, a: a, b: b }); } } } }, criteria: { tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;', className: 'n = h.className(n, r, "#{1}", c); c = false;', id: 'n = h.id(n, r, "#{1}", c); c = false;', attrPresence: 'n = h.attrPresence(n, r, "#{1}", c); c = false;', attr: function(m) { m[3] = (m[5] || m[6]); return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m); }, pseudo: function(m) { if (m[6]) m[6] = m[6].replace(/"/g, '\\"'); return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m); }, descendant: 'c = "descendant";', child: 'c = "child";', adjacent: 'c = "adjacent";', laterSibling: 'c = "laterSibling";' }, patterns: [ { name: 'laterSibling', re: /^\s*~\s*/ }, { name: 'child', re: /^\s*>\s*/ }, { name: 'adjacent', re: /^\s*\+\s*/ }, { name: 'descendant', re: /^\s/ }, { name: 'tagName', re: /^\s*(\*|[\w\-]+)(\b|$)?/ }, { name: 'id', re: /^#([\w\-\*]+)(\b|$)/ }, { name: 'className', re: /^\.([\w\-\*]+)(\b|$)/ }, { name: 'pseudo', re: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/ }, { name: 'attrPresence', re: /^\[((?:[\w-]+:)?[\w-]+)\]/ }, { name: 'attr', re: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/ } ], assertions: { tagName: function(element, matches) { return matches[1].toUpperCase() == element.tagName.toUpperCase(); }, className: function(element, matches) { return Element.hasClassName(element, matches[1]); }, id: function(element, matches) { return element.id === matches[1]; }, attrPresence: function(element, matches) { return Element.hasAttribute(element, matches[1]); }, attr: function(element, matches) { var nodeValue = Element.readAttribute(element, matches[1]); return nodeValue && Selector.operators[matches[2]](nodeValue, matches[5] || matches[6]); } }, handlers: { concat: function(a, b) { for (var i = 0, node; node = b[i]; i++) a.push(node); return a; }, mark: function(nodes) { var _true = Prototype.emptyFunction; for (var i = 0, node; node = nodes[i]; i++) node._countedByPrototype = _true; return nodes; }, unmark: (function(){ var PROPERTIES_ATTRIBUTES_MAP = (function(){ var el = document.createElement('div'), isBuggy = false, propName = '_countedByPrototype', value = 'x' el[propName] = value; isBuggy = (el.getAttribute(propName) === value); el = null; return isBuggy; })(); return PROPERTIES_ATTRIBUTES_MAP ? function(nodes) { for (var i = 0, node; node = nodes[i]; i++) node.removeAttribute('_countedByPrototype'); return nodes; } : function(nodes) { for (var i = 0, node; node = nodes[i]; i++) node._countedByPrototype = void 0; return nodes; } })(), index: function(parentNode, reverse, ofType) { parentNode._countedByPrototype = Prototype.emptyFunction; if (reverse) { for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) { var node = nodes[i]; if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++; } } else { for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++) if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++; } }, unique: function(nodes) { if (nodes.length == 0) return nodes; var results = [], n; for (var i = 0, l = nodes.length; i < l; i++) if (typeof (n = nodes[i])._countedByPrototype == 'undefined') { n._countedByPrototype = Prototype.emptyFunction; results.push(Element.extend(n)); } return Selector.handlers.unmark(results); }, descendant: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) h.concat(results, node.getElementsByTagName('*')); return results; }, child: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) { for (var j = 0, child; child = node.childNodes[j]; j++) if (child.nodeType == 1 && child.tagName != '!') results.push(child); } return results; }, adjacent: function(nodes) { for (var i = 0, results = [], node; node = nodes[i]; i++) { var next = this.nextElementSibling(node); if (next) results.push(next); } return results; }, laterSibling: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) h.concat(results, Element.nextSiblings(node)); return results; }, nextElementSibling: function(node) { while (node = node.nextSibling) if (node.nodeType == 1) return node; return null; }, previousElementSibling: function(node) { while (node = node.previousSibling) if (node.nodeType == 1) return node; return null; }, tagName: function(nodes, root, tagName, combinator) { var uTagName = tagName.toUpperCase(); var results = [], h = Selector.handlers; if (nodes) { if (combinator) { if (combinator == "descendant") { for (var i = 0, node; node = nodes[i]; i++) h.concat(results, node.getElementsByTagName(tagName)); return results; } else nodes = this[combinator](nodes); if (tagName == "*") return nodes; } for (var i = 0, node; node = nodes[i]; i++) if (node.tagName.toUpperCase() === uTagName) results.push(node); return results; } else return root.getElementsByTagName(tagName); }, id: function(nodes, root, id, combinator) { var targetNode = $(id), h = Selector.handlers; if (root == document) { if (!targetNode) return []; if (!nodes) return [targetNode]; } else { if (!root.sourceIndex || root.sourceIndex < 1) { var nodes = root.getElementsByTagName('*'); for (var j = 0, node; node = nodes[j]; j++) { if (node.id === id) return [node]; } } } if (nodes) { if (combinator) { if (combinator == 'child') { for (var i = 0, node; node = nodes[i]; i++) if (targetNode.parentNode == node) return [targetNode]; } else if (combinator == 'descendant') { for (var i = 0, node; node = nodes[i]; i++) if (Element.descendantOf(targetNode, node)) return [targetNode]; } else if (combinator == 'adjacent') { for (var i = 0, node; node = nodes[i]; i++) if (Selector.handlers.previousElementSibling(targetNode) == node) return [targetNode]; } else nodes = h[combinator](nodes); } for (var i = 0, node; node = nodes[i]; i++) if (node == targetNode) return [targetNode]; return []; } return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : []; }, className: function(nodes, root, className, combinator) { if (nodes && combinator) nodes = this[combinator](nodes); return Selector.handlers.byClassName(nodes, root, className); }, byClassName: function(nodes, root, className) { if (!nodes) nodes = Selector.handlers.descendant([root]); var needle = ' ' + className + ' '; for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) { nodeClassName = node.className; if (nodeClassName.length == 0) continue; if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle)) results.push(node); } return results; }, attrPresence: function(nodes, root, attr, combinator) { if (!nodes) nodes = root.getElementsByTagName("*"); if (nodes && combinator) nodes = this[combinator](nodes); var results = []; for (var i = 0, node; node = nodes[i]; i++) if (Element.hasAttribute(node, attr)) results.push(node); return results; }, attr: function(nodes, root, attr, value, operator, combinator) { if (!nodes) nodes = root.getElementsByTagName("*"); if (nodes && combinator) nodes = this[combinator](nodes); var handler = Selector.operators[operator], results = []; for (var i = 0, node; node = nodes[i]; i++) { var nodeValue = Element.readAttribute(node, attr); if (nodeValue === null) continue; if (handler(nodeValue, value)) results.push(node); } return results; }, pseudo: function(nodes, name, value, root, combinator) { if (nodes && combinator) nodes = this[combinator](nodes); if (!nodes) nodes = root.getElementsByTagName("*"); return Selector.pseudos[name](nodes, value, root); } }, pseudos: { 'first-child': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { if (Selector.handlers.previousElementSibling(node)) continue; results.push(node); } return results; }, 'last-child': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { if (Selector.handlers.nextElementSibling(node)) continue; results.push(node); } return results; }, 'only-child': function(nodes, value, root) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) if (!h.previousElementSibling(node) && !h.nextElementSibling(node)) results.push(node); return results; }, 'nth-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root); }, 'nth-last-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true); }, 'nth-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, false, true); }, 'nth-last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true, true); }, 'first-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, false, true); }, 'last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, true, true); }, 'only-of-type': function(nodes, formula, root) { var p = Selector.pseudos; return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root); }, getIndices: function(a, b, total) { if (a == 0) return b > 0 ? [b] : []; return $R(1, total).inject([], function(memo, i) { if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i); return memo; }); }, nth: function(nodes, formula, root, reverse, ofType) { if (nodes.length == 0) return []; if (formula == 'even') formula = '2n+0'; if (formula == 'odd') formula = '2n+1'; var h = Selector.handlers, results = [], indexed = [], m; h.mark(nodes); for (var i = 0, node; node = nodes[i]; i++) { if (!node.parentNode._countedByPrototype) { h.index(node.parentNode, reverse, ofType); indexed.push(node.parentNode); } } if (formula.match(/^\d+$/)) { // just a number formula = Number(formula); for (var i = 0, node; node = nodes[i]; i++) if (node.nodeIndex == formula) results.push(node); } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b if (m[1] == "-") m[1] = -1; var a = m[1] ? Number(m[1]) : 1; var b = m[2] ? Number(m[2]) : 0; var indices = Selector.pseudos.getIndices(a, b, nodes.length); for (var i = 0, node, l = indices.length; node = nodes[i]; i++) { for (var j = 0; j < l; j++) if (node.nodeIndex == indices[j]) results.push(node); } } h.unmark(nodes); h.unmark(indexed); return results; }, 'empty': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { if (node.tagName == '!' || node.firstChild) continue; results.push(node); } return results; }, 'not': function(nodes, selector, root) { var h = Selector.handlers, selectorType, m; var exclusions = new Selector(selector).findElements(root); h.mark(exclusions); for (var i = 0, results = [], node; node = nodes[i]; i++) if (!node._countedByPrototype) results.push(node); h.unmark(exclusions); return results; }, 'enabled': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (!node.disabled && (!node.type || node.type !== 'hidden')) results.push(node); return results; }, 'disabled': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (node.disabled) results.push(node); return results; }, 'checked': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (node.checked) results.push(node); return results; } }, operators: { '=': function(nv, v) { return nv == v; }, '!=': function(nv, v) { return nv != v; }, '^=': function(nv, v) { return nv == v || nv && nv.startsWith(v); }, '$=': function(nv, v) { return nv == v || nv && nv.endsWith(v); }, '*=': function(nv, v) { return nv == v || nv && nv.include(v); }, '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); }, '|=': function(nv, v) { return ('-' + (nv || "").toUpperCase() + '-').include('-' + (v || "").toUpperCase() + '-'); } }, split: function(expression) { var expressions = []; expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { expressions.push(m[1].strip()); }); return expressions; }, matchElements: function(elements, expression) { var matches = $$(expression), h = Selector.handlers; h.mark(matches); for (var i = 0, results = [], element; element = elements[i]; i++) if (element._countedByPrototype) results.push(element); h.unmark(matches); return results; }, findElement: function(elements, expression, index) { if (Object.isNumber(expression)) { index = expression; expression = false; } return Selector.matchElements(elements, expression || '*')[index || 0]; }, findChildElements: function(element, expressions) { expressions = Selector.split(expressions.join(',')); var results = [], h = Selector.handlers; for (var i = 0, l = expressions.length, selector; i < l; i++) { selector = new Selector(expressions[i].strip()); h.concat(results, selector.findElements(element)); } return (l > 1) ? h.unique(results) : results; } }); if (Prototype.Browser.IE) { Object.extend(Selector.handlers, { concat: function(a, b) { for (var i = 0, node; node = b[i]; i++) if (node.tagName !== "!") a.push(node); return a; } }); } function $$() { return Selector.findChildElements(document, $A(arguments)); } var Form = { reset: function(form) { form = $(form); form.reset(); return form; }, serializeElements: function(elements, options) { if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit; var data = elements.inject({ }, function(result, element) { if (!element.disabled && element.name) { key = element.name; value = $(element).getValue(); if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) { if (key in result) { if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; } } return result; }); return options.hash ? data : Object.toQueryString(data); } }; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { var elements = $(form).getElementsByTagName('*'), element, arr = [ ], serializers = Form.Element.Serializers; for (var i = 0; element = elements[i]; i++) { arr.push(element); } return arr.inject([], function(elements, child) { if (serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; }) }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return /^(?:input|select|textarea)$/i.test(element.tagName); }); }, focusFirstElement: function(form) { form = $(form); form.findFirstElement().activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || { }); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(action, options); } }; /*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = { }; pair[element.name] = value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !(/^(?:button|reset|submit)$/i.test(element.type)))) element.select(); } catch (e) { } return element; }, disable: function(element) { element = $(element); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } }; /*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = { input: function(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return Form.Element.Serializers.inputSelector(element, value); default: return Form.Element.Serializers.textarea(element, value); } }, inputSelector: function(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; }, textarea: function(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; }, select: function(element, value) { if (Object.isUndefined(value)) return this[element.type == 'select-one' ? 'selectOne' : 'selectMany'](element); else { var opt, currentValue, single = !Object.isArray(value); for (var i = 0, length = element.length; i < length; i++) { opt = element.options[i]; currentValue = this.optionValue(opt); if (single) { if (currentValue == value) { opt.selected = true; return; } } else opt.selected = value.include(currentValue); } } }, selectOne: function(element) { var index = element.selectedIndex; return index >= 0 ? this.optionValue(element.options[index]) : null; }, selectMany: function(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(this.optionValue(opt)); } return values; }, optionValue: function(opt) { return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text; } }; /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = Class.create({ initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); (function() { var Event = { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: {} }; var docEl = document.documentElement; var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl && 'onmouseleave' in docEl; var _isButton; if (Prototype.Browser.IE) { var buttonMap = { 0: 1, 1: 4, 2: 2 }; _isButton = function(event, code) { return event.button === buttonMap[code]; }; } else if (Prototype.Browser.WebKit) { _isButton = function(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 1 && event.metaKey; default: return false; } }; } else { _isButton = function(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); }; } function isLeftClick(event) { return _isButton(event, 0) } function isMiddleClick(event) { return _isButton(event, 1) } function isRightClick(event) { return _isButton(event, 2) } function element(event) { event = Event.extend(event); var node = event.target, type = event.type, currentTarget = event.currentTarget; if (currentTarget && currentTarget.tagName) { if (type === 'load' || type === 'error' || (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' && currentTarget.type === 'radio')) node = currentTarget; } if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; return Element.extend(node); } function findElement(event, expression) { var element = Event.element(event); if (!expression) return element; var elements = [element].concat(element.ancestors()); return Selector.findElement(elements, expression, 0); } function pointer(event) { return { x: pointerX(event), y: pointerY(event) }; } function pointerX(event) { var docElement = document.documentElement, body = document.body || { scrollLeft: 0 }; return event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)); } function pointerY(event) { var docElement = document.documentElement, body = document.body || { scrollTop: 0 }; return event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)); } function stop(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; } Event.Methods = { isLeftClick: isLeftClick, isMiddleClick: isMiddleClick, isRightClick: isRightClick, element: element, findElement: findElement, pointer: pointer, pointerX: pointerX, pointerY: pointerY, stop: stop }; var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (Prototype.Browser.IE) { function _relatedTarget(event) { var element; switch (event.type) { case 'mouseover': element = event.fromElement; break; case 'mouseout': element = event.toElement; break; default: return null; } return Element.extend(element); } Object.extend(methods, { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return '[object Event]' } }); Event.extend = function(event, element) { if (!event) return false; if (event._extendedByPrototype) return event; event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement || element, relatedTarget: _relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); return Object.extend(event, methods); }; } else { Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__; Object.extend(Event.prototype, methods); Event.extend = Prototype.K; } function _createResponder(element, eventName, handler) { var registry = Element.retrieve(element, 'prototype_event_registry'); if (Object.isUndefined(registry)) { CACHE.push(element); registry = Element.retrieve(element, 'prototype_event_registry', $H()); } var respondersForEvent = registry.get(eventName); if (Object.isUndefined(respondersForEvent)) { respondersForEvent = []; registry.set(eventName, respondersForEvent); } if (respondersForEvent.pluck('handler').include(handler)) return false; var responder; if (eventName.include(":")) { responder = function(event) { if (Object.isUndefined(event.eventName)) return false; if (event.eventName !== eventName) return false; Event.extend(event, element); handler.call(element, event); }; } else { if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED && (eventName === "mouseenter" || eventName === "mouseleave")) { if (eventName === "mouseenter" || eventName === "mouseleave") { responder = function(event) { Event.extend(event, element); var parent = event.relatedTarget; while (parent && parent !== element) { try { parent = parent.parentNode; } catch(e) { parent = element; } } if (parent === element) return; handler.call(element, event); }; } } else { responder = function(event) { Event.extend(event, element); handler.call(element, event); }; } } responder.handler = handler; respondersForEvent.push(responder); return responder; } function _destroyCache() { for (var i = 0, length = CACHE.length; i < length; i++) { Event.stopObserving(CACHE[i]); CACHE[i] = null; } } var CACHE = []; if (Prototype.Browser.IE) window.attachEvent('onunload', _destroyCache); if (Prototype.Browser.WebKit) window.addEventListener('unload', Prototype.emptyFunction, false); var _getDOMEventName = Prototype.K; if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) { _getDOMEventName = function(eventName) { var translations = { mouseenter: "mouseover", mouseleave: "mouseout" }; return eventName in translations ? translations[eventName] : eventName; }; } function observe(element, eventName, handler) { element = $(element); var responder = _createResponder(element, eventName, handler); if (!responder) return element; if (eventName.include(':')) { if (element.addEventListener) element.addEventListener("dataavailable", responder, false); else { element.attachEvent("ondataavailable", responder); element.attachEvent("onfilterchange", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.addEventListener) element.addEventListener(actualEventName, responder, false); else element.attachEvent("on" + actualEventName, responder); } return element; } function stopObserving(element, eventName, handler) { element = $(element); var registry = Element.retrieve(element, 'prototype_event_registry'); if (Object.isUndefined(registry)) return element; if (eventName && !handler) { var responders = registry.get(eventName); if (Object.isUndefined(responders)) return element; responders.each( function(r) { Element.stopObserving(element, eventName, r.handler); }); return element; } else if (!eventName) { registry.each( function(pair) { var eventName = pair.key, responders = pair.value; responders.each( function(r) { Element.stopObserving(element, eventName, r.handler); }); }); return element; } var responders = registry.get(eventName); if (!responders) return; var responder = responders.find( function(r) { return r.handler === handler; }); if (!responder) return element; var actualEventName = _getDOMEventName(eventName); if (eventName.include(':')) { if (element.removeEventListener) element.removeEventListener("dataavailable", responder, false); else { element.detachEvent("ondataavailable", responder); element.detachEvent("onfilterchange", responder); } } else { if (element.removeEventListener) element.removeEventListener(actualEventName, responder, false); else element.detachEvent('on' + actualEventName, responder); } registry.set(eventName, responders.without(responder)); return element; } function fire(element, eventName, memo, bubble) { element = $(element); if (Object.isUndefined(bubble)) bubble = true; if (element == document && document.createEvent && !element.dispatchEvent) element = document.documentElement; var event; if (document.createEvent) { event = document.createEvent('HTMLEvents'); event.initEvent('dataavailable', true, true); } else { event = document.createEventObject(); event.eventType = bubble ? 'ondataavailable' : 'onfilterchange'; } event.eventName = eventName; event.memo = memo || { }; if (document.createEvent) element.dispatchEvent(event); else element.fireEvent(event.eventType, event); return Event.extend(event); } Object.extend(Event, Event.Methods); Object.extend(Event, { fire: fire, observe: observe, stopObserving: stopObserving }); Element.addMethods({ fire: fire, observe: observe, stopObserving: stopObserving }); Object.extend(document, { fire: fire.methodize(), observe: observe.methodize(), stopObserving: stopObserving.methodize(), loaded: false }); if (window.Event) Object.extend(window.Event, Event); else window.Event = Event; })(); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearTimeout(timer); document.loaded = true; document.fire('dom:loaded'); } function checkReadyState() { if (document.readyState === 'complete') { document.stopObserving('readystatechange', checkReadyState); fireContentLoadedEvent(); } } function pollDoScroll() { try { document.documentElement.doScroll('left'); } catch(e) { timer = pollDoScroll.p_defer(); return; } fireContentLoadedEvent(); } if (document.addEventListener) { document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); } else { document.observe('readystatechange', checkReadyState); if (window == top) timer = pollDoScroll.p_defer(); } Event.observe(window, 'load', fireContentLoadedEvent); })(); Element.addMethods(); /*------------------------------- DEPRECATED -------------------------------*/ Hash.toQueryString = Object.toQueryString; var Toggle = { display: Element.toggle }; Element.Methods.childOf = Element.Methods.descendantOf; var Insertion = { Before: function(element, content) { return Element.insert(element, {before:content}); }, Top: function(element, content) { return Element.insert(element, {top:content}); }, Bottom: function(element, content) { return Element.insert(element, {bottom:content}); }, After: function(element, content) { return Element.insert(element, {after:content}); } }; var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); var Position = { includeScrollOffsets: false, prepare: function() { this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp = x; this.ycomp = y; this.offset = Element.cumulativeOffset(element); return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight && x >= this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache = Element.cumulativeScrollOffset(element); this.xcomp = x + offsetcache[0] - this.deltaX; this.ycomp = y + offsetcache[1] - this.deltaY; this.offset = Element.cumulativeOffset(element); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, overlap: function(mode, element) { if (!mode) return 0; if (mode == 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode == 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, cumulativeOffset: Element.Methods.cumulativeOffset, positionedOffset: Element.Methods.positionedOffset, absolutize: function(element) { Position.prepare(); return Element.absolutize(element); }, relativize: function(element) { Position.prepare(); return Element.relativize(element); }, realOffset: Element.Methods.cumulativeScrollOffset, offsetParent: Element.Methods.getOffsetParent, page: Element.Methods.viewportOffset, clone: function(source, target, options) { options = options || { }; return Element.clonePosition(target, source, options); } }; /*--------------------------------------------------------------------------*/ if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){ function iter(name) { return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]"; } instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ? function(element, className) { className = className.toString().strip(); var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className); return cond ? document._getElementsByXPath('.//*' + cond, element) : []; } : function(element, className) { className = className.toString().strip(); var elements = [], classNames = (/\s/.test(className) ? $w(className) : null); if (!classNames && !className) return elements; var nodes = $(element).getElementsByTagName('*'); className = ' ' + className + ' '; for (var i = 0, child, cn; child = nodes[i]; i++) { if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) || (classNames && classNames.all(function(name) { return !name.toString().blank() && cn.include(' ' + name + ' '); })))) elements.push(Element.extend(child)); } return elements; }; return function(className, parentElement) { return $(parentElement || document.body).getElementsByClassName(className); }; }(Element.Methods); /*--------------------------------------------------------------------------*/ Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className = className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /*--------------------------------------------------------------------------*/ _=http://www.fussverkehr.ch/fileadmin/templates/js/prototype.js_application/x-javascriptHIJOvar browserName=navigator.appName;var browserVer=parseInt(navigator.appVersion);var version="";var msie4=(browserName=="Microsoft Internet Explorer"&&browserVer>=4);if((browserName=="Netscape"&&browserVer>=3)||msie4||browserName=="Konqueror"||browserName=="Opera"){version="n3";}else{version="n2";} function blurLink(theObject){if(msie4){theObject.blur();}} function decryptCharcode(n,start,end,offset){n=n+offset;if(offset>0&&n>end){n=start+(n-end-1);}else if(offset<0&&n=0x2B&&n<=0x3A){dec+=decryptCharcode(n,0x2B,0x3A,offset);}else if(n>=0x40&&n<=0x5A){dec+=decryptCharcode(n,0x40,0x5A,offset);}else if(n>=0x61&&n<=0x7A){dec+=decryptCharcode(n,0x61,0x7A,offset);}else{dec+=enc.charAt(i);}} return dec;} function linkTo_UnCryptMailto(s){location.href=decryptString(s,-1);}_;IKHOQNMOLZ\YWYVkmjbdaxzwuwtrtqoqnmol~}     &'%$%#)*('(&-.,231675897GHFEFDAB@?@>RSQefd]^\{|zijh ֺ"a޺ݹ۷ٶصֳѰЮάͫ˪ť£~|{yvtql~j|gzfwcubs`r_p]kYjXhWfUaQ_P^N]M[LWIUGSERDM@L?I=E:D8A6:05,/'%ӱml[bRXJȧOBNAxe>4G; 2*!)=27-*"( $ 8.-%c!,=@ H&|cÇ#JHŋ3jܨqڛ CIɓ(G䫛Wज)R͛81óϟ@ JѣH*M:ӧ G&T=hz&ԙ9ÊMsٳhӪ]K׷%4mMT~YBpML,È+>6c8L>g&o}$a /M4_@EWAPe+Hj<oM N|(\T9)5kn0xG"NrQԗM4 -Ͻ+{HzϿY 17@\Jvx,^tD6]bH巟v(TLF1N1Dt C+ֱG#lh!~zZAfQFnA$'4)dP7QG7r`*I @Xy5 D31ʓZyWrS#Ume}D0fQ֑┕W&L'hv9C fmI]`1N%f(Hojc@DXTPDH @tLH6}3K^vԯ+h?,0$R98[6y@e3\2;nb4D[` ;zT LƍV) -Kbn %=PRA\`0âb<אA[1 I`]I0r_HpV A5<` BiT 5 @3٠JG!V8\Too5RE\@E^*Zǡ-Sja ?6,u/ UC%@Y1Vwo8Q=]U&Uu$5D}{n{o$b6\YGjIQJa :~6\0`4 BtJaBrЗdq8_~TTVlgѣSZ4` f+7,(4~Fq- Ԋ@?Ԡ ABrL p!X NlY<`( ) tBOAvg0 :SHJ6Ї@| r-+IL{bi~EMoC'$La< E@ NA1*e0 ̀)6`dG?" ӓt!%q#HjsFtXA3h&2@I XPtR$tD3 a{(aGفF<01D4RR[E6xq É5A! Z"CX`Ld"abbFLM4bV}ɅI9uZ aC7U60tepJྡྷԠ3hQb`sJ zƠ@iLpۨVHA?Iq`[ ՏCF8M F2 #Zq 0 a0D@q \B3aZ>ZrdA̐` }zD A( 0F2 P 8Ac15#v\`h" 5._q1@a<㹄&a o?Œ"xx!6~nUhey-r! =XN%kƯODDXV1+8>@^e 64: `V  f!`he B PSR!Ǵ1 Ȅ¸q9Db ^8Q7Nq p H@$aַ!9q g"a j83f/>XlXI _`M4C{ߕ@jCnpʼnX  !<0yI,`V AF$|PC NK $4B, -gqx=abfƀbsЂ w qd F J@@+lЅ& ;ҿ"#$ ygy!QtB1`Rc$q P[ p" s{p ˱6Pe a!+1|?~@Yvw06`TW( /g[@=]Pフ'8@ ^WXyf0yp< `er q ` H$} [Orp  r6 vZ}H<7MY BP`xZi8k8m`!w"}a XLI p`tH Z1{cZ hÁQbQp _09Yy .]pp 8W0 PD :"[ ?`0"w ib0=]0`0?-39<"01 @ uLW @ P  up ` R0ٸ cI b 0 %00 0i hc3 ٘iI3R~ =)pFc9LU aAٚUI bᚸ" yZ`$A#v?q pP/( Ԑ Pڙp فPp fy ` vr p i4QI T K a N | t@1prpq ̐4oxU )"1  ȹvS {4pD*ttPot-/@oy Qy2 s %!ΰ L"0Nݰ o0 p 3r  |@e @ y kP ڀ hP o@ۀ Lq ް yt ݰ'р : r0!2 P z ΀ ( ˰ ݐ ڰP  ٰ{@ ` B ˀo р Ьg o ڀ vP j z6 o o p] HK @O y@ ؠy k  )o *; o  q`poP訇yjPv0  F < tZ uq P o `r |r s a  `zPk+ |  0 v ]{ o` @ o 0V ` w0Po` ~  1! 0  0!Ѹ 1  sp ~ r I ` }0 2qo yk>\  [  o` v oP°j@unl+%y p 1< 5v  v |@@ qԐp ppP ٕ@v $2  J , ᱣ F̻J,z Tto0Vl 0 op $} k d< p `~pq Ւ  M }k۠s v 4 v p Zʥ@0"  l|`2Q lʰ,4@ TaPV {I@ r@ dp T{ F=k ǿ ``)_,͛ $ ` Ԑr ݐ y0ѦP o k ]P v )u+ô  @ ` π  Ǡ l " r` h ѵ ` v   ˧  J jP  F 3 ` x z o`ڍ  1+r` `c u `9 s P2ro ~{0 i    tz p Ã* ~ UFrr x8 c [(j"vB3[b 6y P /;_=http://www.fussverkehr.ch/fileadmin/templates/images/logo.gifYimage/gifPQRO ExifMM* G(12Їi-'-'Adobe Photoshop CS5 Windows2010:07:06 16:15:330221Gjr(z HH Adobe_CMAdobed             " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?DI%):ds>mvg):'CYW0<\6~1Տ_YzilSmvis^ݖ1ےS⾷b~`at\~sm cz55nmmTJ4Y\GvĔU=SGQɫ81N\۞/!k`.7f\nswZ?\>j^kSsp1;cmNW`cAkF湮ok?f}d>*u\ȩR7_Moe)שp)?q*e5qmmwU:> ng\ u+o˄Yc+mnV%+G[=euaA8P;A/{jmc7z7#tV1`=cfCwTسԭn9{Ki{뮦6[5<В;_Za{{缲_pM{_+F~v MOKO ht{ i$׾6E%ޫGo"+?_>Aﭖ4n)mKf.$X}/2E,I/{@k]VI%?מzGKeͲWe }[^Y_6ϫ{}fMm.CݱbzvnF~TeϯsGwm{2Su^ΉΤki {scm}{s?Ua_PϮ_:ዷ_Q]އRIH1q˩6Sĵ.ҺwInN+gsޭ$\F3ߓKm.~En춎 z.$'׃<^$5muN_o&gMv+6uﮡ4tP36TuUΟem6>ӗu VS;QWSbE\K=?B1~!ZoJ>E?mmw/eTѳշժM%8=OwwcC1*7 cSGkq2۱_^gP?_M srn0mM fF6u1ugTF`4{n ݼ}_}6ۛQ>_PgU딹ي܇7=͍h(5貿?W}x cpfbV̻ۨ-[Mv.-OQLUJևXwUF#[I`uT@Ȼ-~SmlbٌӛG^r,=㋾.3=ʱP~b.sk{^2;l{Yg]~t➫ueZ?U{wOIwYfO?KU_+Ϯ'vEMպ7N/ƹk c'#Qm6SN9GXl1T*"C̏g޳UfK\@kq[MN{lu7 iGb8uS~%qeXMXo,nMZ*Jr?Guu#;'_2okjI6ӷe][\)nX[ccO3uKle͏~ƺۻmMc鲛ؔ擄۝vdA^ݰޖ5VwoߴNllבd8k_]iF?_WIO0Photoshop 3.08BIMZ%G8BIM%ȷx/4b4Xw8BIM: printOutputClrSenumClrSRGBCInteenumInteClrmMpBlboolprintSixteenBitbool printerNameTEXT8BIM;printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oGrn doub@oBl doub@oBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@r vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIM,,8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM08BIM-8BIM@@8BIM8BIMYGLogo_Fussverkehr_dGnullboundsObjcRct1Top longLeftlongBtomlongRghtlongGslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongGurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM8BIM  <  Adobe_CMAdobed             " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?DI%):ds>mvg):'CYW0<\6~1Տ_YzilSmvis^ݖ1ےS⾷b~`at\~sm cz55nmmTJ4Y\GvĔU=SGQɫ81N\۞/!k`.7f\nswZ?\>j^kSsp1;cmNW`cAkF湮ok?f}d>*u\ȩR7_Moe)שp)?q*e5qmmwU:> ng\ u+o˄Yc+mnV%+G[=euaA8P;A/{jmc7z7#tV1`=cfCwTسԭn9{Ki{뮦6[5<В;_Za{{缲_pM{_+F~v MOKO ht{ i$׾6E%ޫGo"+?_>Aﭖ4n)mKf.$X}/2E,I/{@k]VI%?מzGKeͲWe }[^Y_6ϫ{}fMm.CݱbzvnF~TeϯsGwm{2Su^ΉΤki {scm}{s?Ua_PϮ_:ዷ_Q]އRIH1q˩6Sĵ.ҺwInN+gsޭ$\F3ߓKm.~En춎 z.$'׃<^$5muN_o&gMv+6uﮡ4tP36TuUΟem6>ӗu VS;QWSbE\K=?B1~!ZoJ>E?mmw/eTѳշժM%8=OwwcC1*7 cSGkq2۱_^gP?_M srn0mM fF6u1ugTF`4{n ݼ}_}6ۛQ>_PgU딹ي܇7=͍h(5貿?W}x cpfbV̻ۨ-[Mv.-OQLUJևXwUF#[I`uT@Ȼ-~SmlbٌӛG^r,=㋾.3=ʱP~b.sk{^2;l{Yg]~t➫ueZ?U{wOIwYfO?KU_+Ϯ'vEMպ7N/ƹk c'#Qm6SN9GXl1T*"C̏g޳UfK\@kq[MN{lu7 iGb8uS~%qeXMXo,nMZ*Jr?Guu#;'_2okjI6ӷe][\)nX[ccO3uKle͏~ƺۻmMc鲛ؔ擄۝vdA^ݰޖ5VwoߴNllבd8k_]iF?_WIO8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIMhttp://ns.adobe.com/xap/1.0/ !Adobed@G      0@P`89!271: !1A Q"$0aq#4%@P2Dd5`BRUe&67w89bCSTEufvr3tGx FV'y 9Pid $9?FK)ʴyΰfoNT Q9,9ZdS 1tT$1aQBn,C p2KćzSNT=C0I)BZq5{ a SS*-)kpS;S8!ns2Jl*)ʀ@5r5OXXs;F Q.v #|Ln6vT=d c k )904t 9Iɑ<0꘰KD r-*d@_v'rq$.nxA+"#0\ٙ"$DX]6HF,.2g#9{v'D ("7t6\L 'ؚ%4C̓p8^,03n y4m$_JrLI6ẙ7tF&r&NFTΤ 0>n6C#%^Dߑ+Ν"*$J S: AhDT >T6>aDKTlĆ )XKuU6Z#s/ ٸaT̐^K5G(qt:t#ns 4i6@DA6ĉrGh9>Nu6^R00%?Zr0XGΖ< ː}!m^ ?Oh#?<x@< $NTFpF5|*A7 r23m1/I35}&̛0̻M,g6kȚc26h '5Lb3Fao|&.PYMg9T dQ&9P)ĬHpeycIfO!I.m )/Y3b7EXS #3 BoH,-[I5H<6t`RXwM>mfM0 @b e1f~b`Rv6TS[#'F. Ę_#:q0 ɬcg)ZcS] IfIi5o4ן1v @]]3N rNTSS)ʀSSͿ:)ʂ8}l r@mފwNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNti\j*7K|~3 JL,v{]:AuvWdWr\-WnV R~ ~vVBt%Gߌ”*DaeS2A)nLȋ&?wY#6VU"Ra9+Ǣve [9J  iovrwY^;I R,oыi&5pQ4zO 77l2(s;ʌA@}6&'"/)wӦ;}r姖~My ljޭ=]GcoXt;gO&RIpb&I'ֳM(>^^.)-cfJN\j.aT*bRD~#; FW[Ux6Ɏ5"qC prWO ɤv6h*GXTRk#Y1?>,<;~|U&墆;ۈux1%ea0E&{ӶoyKKsmY̏$#fR_Cя{#(8&﵇Ĉ܋ vEh]}=odzN3SBJVsAiκ(]6㯃}OA|)%IŰ/^=rK_6"jz.ݖN'`P2(w9k۵ۨTJ@W%Ku}uFU.$gpo'rtz%cN&Jws9.ds^B[j-RjNnl*&Eaq&f&5y,ǫ#fT R ~MwVY3F>l]80;ScZ]a?:y Qb?$c䐟e~9-tlbFm 8䫏0%`yN:KLrgC ><5 x"޷e-SS6Kӓ9\pspc"KpLt|ۜոLWcqku>ÓRX nX Ƞd\!$&7&IM;s]TF`J@G223'Xi 4Hb0!J)!9KIQlN2$O0aĤ|t鑊܉@nZ=-2e#0:4CeQ!3e $B+.酨0oAYT xT_$<+dSA&/ :)o8(d{P^_ٙI|k9(? )2x-8@SW$"ĜZ?J%">F_#*fs4!FH ~#|a(TH"M1jY63 ~"Y1yXec(I,1=HKoш=I $0,&}Z bQEO#L`mݧ[!WHY;o8㍃SLsWj7냋f_1qY{12~k,@ eqg4ҤY.[is<(𿦊GN&D}*ͽ>Y=r1'4%,][|% f3Ɵo;X~cvod7&OڔIzmeʥ.2BY"T>T5\M،9 s1Fc 6^"o͊UB_xQޚj'G˪-*(/N#D1MGC];R;7}Bb if7.6{:lV#H^D[md@9 Aߣ El4Fw^tΝyӯ:uNם:^tΝyӯ:u{k}=}VmySmy=綼מ^{kmy=綼מ^{kFמ^{kmy=綼מ^{kFמUo:_Mx{(4oŲ7_?Ο7AtdKQQmx^nM:Fq89Px$!g % &x W޳DΙPj#ƛ3m=H,"[tD")IsJzV|`t{HKسd"`wH!6@e^.%Z@V%ZH jQuؙj␲?(.k $0$w >DD|%L1bYcXx裌cÑXnڛWnR_h+i@?:[NRbM&=>-d痹z F=b`l\9ѕ3.dUT7C38b,&n[!>aL:LXa(O`(2 A5-eHtRqMNvK˛l5) 3,dƨhj pdL(jIԳ<Ā%_A'Xm K$R%reljzAvqQ22"e"'Ӥ621-Z$c'}Izt*&5mR EIP Gn9vnt@ju?=dCxN%^IYRE&~ Etˈ5-bK1a:~Qܗ_ R& O{& CP4\1#۝88vr'ch2 Z+V 5[? PD}(rŒgB,Ʀ"r=[(vGH[T/& ~b}tZfi*̰4/6/ W0W9K2v̋p[ᆵW$ '*@{ȱoq%pI3l,oyhpJ;b*ЭB)Hҭ/#$2P;5߀kkPL!xD 4t^ݗ +ù gX:PEjV^;>Qڔbs*F(0"(e*"r.qD| "^ƛ|@oZye;4^@8<<(XrKիVp,?|8SI3ULӆ+ӭ4v$b} |C-rpD(\N]|4a:9w@G3tݿ=E\X] 5,[FU^6 TLjc&l616W 72vj&(U&Tm2?S!Bcվq5)t`ǘWdvZЌ|L sy¼"UM෫BYV2{Gcx˕EρB^BuZFj!CKϱi|tB 0חZ4e| ~W#P1y|,VUQ\lҮ[[JPD3,'V:k]>o!8\:!3uĒFnMYX܈ʒ2_)G1NU)'"j+j*oR'vҍ"1K&.Ώs/?2&T<IΥ9Lr3Ɍœ,i+jI03bݔMf W%Rrf Ә0xg9LQ `РBwN6,n9rC.+ VªN+L`2H! +M l MBrg?;ZLՕ0 ͐K%gך;`K>٘Vu(r=&k|M 2);>6>mhݸtzPLcfTqvtה,YZu̡Lc'vtHLD4h ~m!\TiW3o\˴f~7( |5m*]qdiN+Hp܅Ԓ4.ʭuz(gQ䀵r,i1]987Qyǟ7!`+{YؗC*P=<85e:#dc)%)z$xUF ~cfvX7\jY!KX9d3W ۭo,Fl(3b& ]Gd A*'$epNGI1wx}E[.uMu DwT2"DI(7Vs0`%9@J`jlJ0ֱHe(Ik^GX; ,Dӿ1@)Izyh˟RCj:nj2QV{'w cVvx#ׁڨțl;po|S5gV!{ě&mlm2YD':L.C8|1`ϗ!Uqo·:l[78mMb)'ϋ/uJ|c1LP059tAԚ&]~>)Β_#Bp5GQ6+ݕ1ch'DDP$D2ttHѣ2|`P?βmC`@ڱ*ehuHQc\#]tC۠bpUf3 %j5:oA(u0X{DřՕXҕ>Sc{!Y%fM=4!`aacB3#+:ijgFА@3bD 42gϓ8q.lN\xbQ>L2@Bj<>{Z0HR!wnו˖:],wD \ JCPɔA3nwL2Y~1"%u`}K)^eV~@L!7LJEƅ.3@#Xd4=80Ǔsσ>_?1JR6h[ԑuJ[JM %($9;4U${qc+ڲc &P153qœw1u9q;Rj0mP!Rur9e7y;>u؎ٲr~G~ј^Zk>QwjMm-x@K]4 @ | g h0r]C^asqӸmGw>/X'xÞ=VT>17q?M#+<%+Sfb) x\61M[K^{V(y] :sٺG#:'uo T8sdY3.̤UGl,dmLfшu~ 8tRun3 *d?EFbMU!'pHbD( F*0 wS8I9͠ :+߆1?4~gj)j ͱZ^;!2 - UA-ɤ-W9'lٓrAkA\2w20IgVqjJ4itصLLTOxǙJ&`**dowMGa4[PbBiO3˓|@>0).Dsc SXUKÛ``&Q,r,.eb8 uILveϱ cQl9d8`roϜ:4*kJ_ RLD#;NCeC\䒹c\r3d"H kojiLی,|p0"O׶f&/5ȭRes M4+XΡ\:lx{ $E lX<ͥ3i 5ɭa2&UѸ%ģqgL(3ˋBe Ł'2XChd.,"q<\2 J4ݒ^ 9ZTLR4.!zId"\Ͼa e.\=G`D#QH3lv5dGfƙcbNj B>9@{ uF9QGGx̍sH!StLv,.;8Nȉ)O6 } j^>pj> CA<"U3y:cɓ3< _46| I1C`);xl6v>TnF¹+S{<*ClOI[VQ>l^2 Bo5'RcҤTP7] 1GR@Ə8>{! oftXŢp3'6bfcᘴX+)˟ r?pJo࠲nomߒݭ#&ȁDaیL10 ypڊƫ#ŋg (O|7!͐f6&U3&uj\i0M)C& )) :|\m5~"6cɤگ|~ܖƥT7v7[53J\$,(\K<81F׷&XmlDax~7]w{M [ht&$Rzo1ڶ8c3oyy~Al>9+̋ssRaLY%{$Fm @_bz:|[q}X[GLJpӞo>G-Dy=Ȱ!kob>cRRr,a헼#߃6.{4hFdBcJi2ȝV yqS_97[BvgePQUrTQS5=> 2BB?ٞfVWU (22Nvה2e 833fr$g~6#fHٷ=vGjyfnept;KZT!ܙ4I*$ɝ@S.Ld(iUcA*qX"4I*A|/hjG ZswlB!\MeNb" ~9#rvS G>n!9͡ a^-mK(:GNx~Dڳ '*b 2WAUrd˗91ds!|DG U>%c8B_40||1.+Zїv՝ ևvwB)lsG&LfL؀ C;`sSu 8UhcM뤌C?J"y<q)%֨RnBh)7F ZP_7TֱE$>v(0Ó!Nݹŵݽj M9 LrM(k^+yU7=bg_0~6d)"ulr,rZ")xv"; IO:MɕܑG*1% )S4d6 ڗ ee5IP#I >ZTI'6TBI=aW,  ]ܝ/X%٨s?<>7NMܙ f<ܛpȖrJrd0 4DG܏mdkNhq&xrZ1{o8ZÜq |"6XEۤ(j̹3#-aVxjL˓2t丒ː ' yA~/1 MS$)%hVylPT-]p`XF()L!kW}aW,(M_ 6GG̸^ਅT Mxdd>\)a Cnc_ P-2T;,‰k$Ɛ+\R74A\s$SlZ+ajI>dߝTlʲ &s:᪜*UKtPuP@܋;THpa6srewHPe/^#kKrENܖtD*XZ~bas/nT+)2{*Iz7#6Σ r^.!_M\kqԠs=^~]gp_ b S&DTzvX~_ivO;Pv=+㓛v4n lRU 9s6fC8d#<]Q'|.~3JѫQ3B6+Akv ^2ed>1ŏ5mfSEެaT)DD8yHXSs2+N~ڦ6߄^23(DXU뒝beӀ DyKWnv*uQYXlE/[mK׶;e cք=KbÌRLj59bra6WkjAԥmj5wQa#yv1BmHK68  t\/UA{-K>7U* FkӍ~B(kn|Vcr3<@^tQ)F/Q(7;kk;?x~?4{xwDd:n {X9h\R]V&/,os6>? 5wEhRN*֊$K,&VQוp)Y%ѷs#7!`:ڇ zrxs`鍙nA0xQu_7_ +$!HZ.Js4ZZgMIMټ|j flRD~޾;_df jhC;cc%FUrlFn..J}JI̛J%3bM` 0˛@dq*&@Hl66F2ǭjtu4,)J d:kt8;K<,E B%ǦnlLL8l frY_َ JWLۋ8wqa;oZC[rF*]bƝ k\1P& QE,[HT"1b9h3cvs3rgVс:y99qψNՇLZ$Uԙ&q4Q?ki?"Se@(nqM[WM}[DJAZ$Me,h#wyƒ]Sl9Lyle6# 63J2Cʢh>n1ĩZ2:6VBP4eroZ`g+j=ljZTSl\ePa >"c1ʢkiK  >WՀ&؄3&#!k;<=55`r\9bL vܳElȳ&,r:JrL_m*e aZ칆i>gk4"'TY&j1VU+XT[W's,T&'Wp3q <;D%XJrNm@][uf>G #OrZOU cBiLF_ K\pla+n GPS6|;pm_!YbB6yDׅ;ow-q֝Rr 9w@t ]wSXV rdA("( wJUrkQg~5rn\ c-#92z@LM1v/Wp}~^2y4Fv\Z[ŋ\spcs;l> C8IK+4wb-Eo+66)dxC;#7aaHVk!X,7 h\R2dsE.52ٲ|X^h\>@[*-͸I2S*4m^~2$JS >C0=T\T]s~o(rG/bF˓yV'6aÙ!paʄ Prq 1]d10ȑf 0 r2^cٌm:0;;i k&fEHZ)N1.BN齡cQVt[܁4,l+Dʼn{|[̣j;q?kIˑ& $mdj=&<>`?0dGA̧ !JLPCcfW{[d^k9+G 3^WhUgnhgL8H|c Rà:J>bШOyd#閾C"ɃpR% (560mnI*ݘp ^7ɛx9z8%WA\X:سY)#nY#h(;v\AfJszΧ0WB hOaG泉@pSҐm]0+|V!*&friC%(Xa#}?jQh|F:4 vD ل0"~ЯKš:2(ѴuSz;Oy'ǩ?bVcǗ,Ǐj֪O\1Sоts%oY~qg_5^;Eu"GPޱI`MEZpirF*;/y"SW mIx$lNfgCGMp8P;jmp-N3g絨dy$&~M"h#li8=ǦۗEV+ ,٥ܓE$YhӋۄ^Bb70ŸO"g1Gk5p"xAG#i_dYn cj@i]HV-+4.~.Xi3mڹpv#-͏71PI+b,qvȔFjl:yٿ,ai/wQwB],!­DϙXxS9Ci0}9b k>_#ZaJјXvKN0^5xɩf2)J̬if/p!14! R5Х)CQ z0@ E*y>Cs! $j!r -gVOHV527֤Jt91u @׊cvJIbutQ {ZT(Ƙ0#m5T&re˘2nj1 rޠa1m?wi9, 4r;wӺ ,1%nnkę ϗ6l)1 !@(ld0݋AQ$`7T -m-{GueʘձCRa*r=w\g}fq9޹%{  iFɮ7sM۞qL2.lPۖ>8ȓ 41t˔3ɓOn٠=K)l2jJͳJXF8Ѕ3"뮣+qE80J!򈭌DǮ˼j'i+;G#Hjm[IWOk=&nS;jŦnIB믋"au :nH3pMUmِ8d7wZ0״xR*K~>Ɖ;3#3=_$Hҁ 434yqDWe{Y+b s']O ](%($[8?O:ٻ6dgP-#<,hZ6րp8mgNk:T=1[ɁH crEqw/Bn}F̷@a =RFVWՅ0XKt?g thg^@:":sz=:S*20n %#u.Ú ;4 Fՠ ϴ8wli, ^'nRR+\azro.h?ܭ{?cY؜ fY>tnBUD^}3ztάK?#\2u~~*¼yog)(&wǠ~M5v)ؽ*MA_,,Q Ʈߴcm)󨷗&vn¢7'ߖ9(^Uehh )m "tP`,yIVA[-\S<ȤZ#4,gMQ1A(\ƙW0υĖ@3/G܌Y? ~V"zczB!Ѽ3Pn!MRm#D†8DR>A P)]9t6VMkp-z!V}<:w^29| DC?}x-TNz`3L,jO  ~+ -cEFdg?g~6A%u=ka,nBVF0 HJ&Z:&4F i:*pGcum9؈ݻ:5{`9raHl;34, q\ }ǝƮnr]^ ^<)| ΩEjI30gȯe^Snjw O7E4&V1ND|tX#kpFdǘİe..6:x2.06Q าdό{{.|m;US$M`gIsH0W̩AڥS 2 e&^Q!ڋ+5US˫HiGĩ0M ~yɝ 6h^Cmdn8kB};\3)<^Lm}RSoxE+Dr(ljnL9!TZ,(}#:yK,i* 961b'6{k;zx~IԱ2R9ױU l4D"#8v%͍LzyGUɞJ;c($I~"R=Ƥ-N6<@#cz/H\6Dj6->3<ÄT۾(LfWs-K)5)kƱ6xzzǴ)D(n+>0+􎁯.n1&3h#+vPj[T5Sed2bw?2=cȩ: a0{(nm3cgp`\ܹrv &s-RAC;dE;q3ZLT9bE)F4,Yէ C#2B^%.ҨT]J䮕H+cf6;2(`|kLΥyp.fՍ|3ӔLAھ a捱u˦WLg#n$6L6Jy)٫]_84ANQGvl䭉fLfLqs&O62RLs3e;wD6AŌ@c"ɚHWwmqr-f˕J'"R蘙LGQ{@7=]˟ )7rlۺܑb%,0Q0 :iz55ؽ嶹竚Ѭpyqd^)"×&Lف@?.9[s^Ы#A87ԼQg +a*(Q.p< r8//2O'Gwx#s]* R$<HԐD#1! :XAWa1prWCyrfHnm؇%|CA @xAPI`ag'=!Bʤo^W%dyݩsFfl#l 8ƐتVZ)lXxD0H:Q(/@a#n7s;`xHwJB\:1IM+8!>aga>l^DV=B:.kx?ŏ~:dޟpIGÍ&hߡ˺.b,{%(+b׊u[z41$[i],~vX ݨNr eH4Phw]uhGZL,.-tPb8KFiF \Y]Bj'~>=XU$L&Ւ4(tDbkL߹DG#;; r{hݘtQQ#klj)+ \~O4-_$yǜprRDZU;1E 4iŽ#BBBQGQzⷘ7|JJs􆽿[p"P#Zyd BűQ@C] W^۴ P 6c6걲FPFci0|'TF R T)sR6&db9D Sqq_%¹tuZIJl*lJT#ɛ1ç1_cߴf*M  ::5׎qxZЂD|ZFS78dQuZ "&T|0dvkw\xrzp$Iç[zɔZ4Dp'Y!s`W }%8r L9L :(JP Parā(&B[^O2j`E\Tr'| ׏ڄx[XcPo3xi^jww4hV"\gh#Ux5.?0oIi 5˪H9>KaP"ST&5](zZ cLy1t 6Yяo&vvxۮ?bIi^r$4<ѷ+9 ӿtߧ-QIpCmUp++udwŇ_v< PZ4Q3&{fV4U r7yƟb1⿧tqáܺVV!_W o>;~Aqߐ}\vW o>>>5Oӎ|^;Cq=|z~O_ǧ=|z~O_ǧ=|z~O_ǧ=|z~O_ap=|z~O_ǧ=|z~O_ǧ=|z~O_ǧ=|vǧ=|z~O_;m{4T1i&nۋy)eleP=;3\Iuc?#|/|LѮ[Џ[чn#ѧ@EYVh%Bk{pC{?q+F?gI=35;}}_:m^B-9ᇕk4zT/ RW!ެlyշov.ז%.ez\t ѪJP9 y6|6zvO6u'"ҽvN؋2Pi~ޡN##;1^-,cˏ^;8afj2eM(P d-iE^z> ﻲg8ɒ!}|t/$ҺzEPD22>l^z9 އp7 R|n1 R(`}L%!7%\[7 /wR2bXhPl?K]Ͼ``jVq-n}gʞ$R&p8p @h)HM{ӷz(ocJ(S/@JmlA-;<>a{gg?0 C`C\mkY|Xbw\cSsĆpr29CWpsWwx0jxMWg0{:ەt4 ?!py,n25ȀDz60҄;>P t^mW+ZWuUků ܭ=[Hd{:q!{fDO4,p3ɤb2 n,+5a Ylwv7 -.JY"G 31yBPW}weW"T0[Z^590!XΓ!xanS -@ 9=[\M eAŏp{yImSBlj^V6Ick+`ڭ4hzֿf;+ \UVh຃Ć=#@9VA=׻Vf9yUR|r҉ŕh#?98GhhQQ{=;]V`mgXe,C{:j,}~Z+Ħ?CEc5 B`dKq(jg!)G_߸=a }}+D#A[-!ï68XHݨW(,%Tk0EI r)Qjc4s+{ t܄?n ,gX:𓢘HsVy#tq9m^ a`G`+?Cӟ?HqX1.穯gb;ҳ\[fyE4$:z'CǺ(miTMYl>m"0AMghɐ+C0z8^Y f%121kvGؐ,~e@tvK:mZ[h{12'bT^WY|(q:;/hMȈ{ŷܺ]wתa- đ\pKs 赿n7m[{f`=ڼ734#22gC$NFsq4`%Q{7,Yk:aֶ"BF1#23uc+hՠRJ<{b[9q{۴Hzǒv CpY,k0\!N-}77ݥCEhINWFjP/kvH,ip榞|G.@8w[dt 00FM%G\XCFh#q7vNɟN FW 2)ZͫG^2=s>bӽ߻7+a/8=Qi@xwBغD=寙9szηaKDx ;sHJ ,)AÜG.'g[w|B*6%7,>T8ϴ/5IA0o_pgT:~x82|sY !Z!]ZjJD5dOG1qO Ƭ{^;˛(~u5L4ޝj$aml[}.›tz4IZZ\ZEvxr08`D@9];ײ=n֞.'w1Qv8Y Egy}?HwB6zgTtSeCW$W0oH~RDx8iw܌U\L4ͣ!G4dڗ^$Y1ݑ=1H jRLiAh\^MgggYг/M{la<^nZ3Hd313@9b*"ADd,#nxx0xK|q問1^/lMu߱up5:u[<&,挚8)1 xJ2`7$8[rbM$ ?ۺ j0v#Y$D<7S8yXOF/7!u?YNz(6&6I)>)Q2ºEk< yuwyG]n tkgotOXL55GVMX:63{7y[.%p1?DGDw[U_uT'hhԳKѸA q^ _Z x(L:a8`c@~Xw\1W輕EL%9;:rόfŶv\y,:)L,cosgA$u}D^NZL{9SPvywk,ѼI\$ \3DWl |qgX0%QCs'B?05P.AZnkETHWr4I#@G[]K Ji,mZM#I(+X n-F ; S~>!50@1Z681,vsX T`ΗQNѭD} :jSvz@xa:Ab':sgkuЍL?}E+ZQ{}E3di <"V > I\,+3E?-DkӃ]Dygj|̱,hjJWFBG}!Jr."qv[?LS>W iŦfρ7)X  ejY]G;)$s cR!qeݳFp"Fa/z/,Fb]+DUT`hg_A=Nز(3z2KzEr3dQP6ƒP3 zDLAu@@o+f.];5.~XP"9;A'>zvi{K| 7Z:N "ehxx4.qj=AkhJ2aIZW ᐾd=;/7XF!R> QVw. H۱#3$X>&b{Xe^:ĉdU?={2GfvgGDG@{L^3j?2E^`>K„=«9i  0;4fF<#n5za|= 6 {mF Xi>F)Z2U|و{aFY4`T*֬Z FlG\RWHaKʜ׿$[|oR;3#hrJ|ƛh?f>Z8P ]rT:jNQigX|)Jy/38$,Dn03%N3捂m>Z*ԋYs!/8y.pZ ᮟ uS yW^e{~ui^#,#I5aaQ7Lji ܊4\i>Bi0X`z8ǶuDEqk[/pyز˞\]9PO 7FN ʡ}4f@h>e:#ϬFGaot%nUd9GyE(X9y0^! RM3@ke5ʥɒjuoQwg0e`9v`W#5bKḲ2b@v(I8D G8mI6~RmBg3UR-nV:\a79zyKj.a]OaVz4ot*#^P8vI Z6zz^JcFlnŒMD. m;Dj>c,wxϔ.OmW\j|9D{; vflǠCT5O"g-2K}TYaG '“?ʦ5/ "#s_k,9p!*b=S55) &|Z4Fi,H+|y[vkNS}V^i:vp3@hq|Am\u@WS365bJfM.@HYZJlDP8l˖iN6/48}F:,hpjDlog `̏S!u١`$U*Daטkӳ`σmckb:e{ڶ6?iWsc P!-^ .] EDDل5.+Zbn[E^/qv*䵨nhPxO3FZ$ĩ,>#MEѣwd,#(蜮ځC@A8G6K+9({BsddE0%w0ry,k&0rdn[Gkc%Z+%D4w 1baj_[g"xl.. ӸVM+:K0! X?g1wg[?xq8UkϿ/=-/3_^|TH1v~_@http://www.fussverkehr.ch/fileadmin/templates/images/logo-bw.jpgZimage/jpegTUVOJFIFICC_PROFILEKCMSmntrRGB XYZ -acspMSFT09D1017D+KODAcprtHwtptlumiview$K016$qK017 K031 K007dmnd`kdmddidesc8wK021 K025 K030 rXYZgXYZbXYZrTRCgTRCbTRCA2B04K070P B2A0\4K071P textCopyright (c) Eastman Kodak Company, 2009, all rights reserved.XYZ :view:B*FL;descManualManualManualw^zw8'PWvui32text1.0descWhitePoint=D6500, Gamma=2.2WhitePoint=D6500, Gamma=2.2WhitePoint=D6500, Gamma=2.2.z{wDPWQwdescBenQBenQBenQPoint=D6500, Gamma=2.2.z{wDPWQwdescBenQ V2400Eco ز@desc V2400Eco V2400Eco V2400Eco0Eco00, Gamma=2.2.z{wDPWQwui32ui32XYZ _i2 XYZ r(] XYZ %Dcurv 7mft2  *5AO^o+Ij%O{ >sY]3lj  { :  h ;  n^VV_p?nD-~*: !_""#$Y%%&'v(C))*+,f-A../0123{4h5W6H7<829+:&;#<"=$>(?.@7ABBOC_DqEFGHIKL3MXNOPRS5TiUVXYOZ[]^\_`b?cdf8ghjGkmnloq;rtuvxny{a|~]߁ctH|\SaͣBªL౮R(ۼ{`H3 )=Tn?k  *5AO^o+Ij%O{ >sY]3lj  { :  h ;  n^VV_p?nD-~*: !_""#$Y%%&'v(C))*+,f-A../0123{4h5W6H7<829+:&;#<"=$>(?.@7ABBOC_DqEFGHIKL3MXNOPRS5TiUVXYOZ[]^\_`b?cdf8ghjGkmnloq;rtuvxny{a|~]߁ctH|\SaͣBªL౮R(ۼ{`H3 )=Tn?k  *5AO^o+Ij%O{ >sY]3lj  { :  h ;  n^VV_p?nD-~*: !_""#$Y%%&'v(C))*+,f-A../0123{4h5W6H7<829+:&;#<"=$>(?.@7ABBOC_DqEFGHIKL3MXNOPRS5TiUVXYOZ[]^\_`b?cdf8ghjGkmnloq;rtuvxny{a|~]߁ctH|\SaͣBªL౮R(ۼ{`H3 )=Tn?kEE y(8 }'MQ- 4Q <: q8Ae GmNy Ue[ EbIq Y    U!$ M ' .8 <4 ;]A qA Ha NIUu4[yb  $} (  ]Y  !0( Q.u54;BIEMHOmU$\qIb }e m y,a4"y( /,e5Q<0BIEY(OVYm\c}Mqa8u0}u")U/46(i<,C<I( aPAm!V !]U!"Ic MIA q]!!aE"Y"")#0$068$=}%eC &J8!&P#<'MWM$q']%(dQ%& EU&']Y'(#mY)4))0q *y7 "+ =#M+D$,AJ%,Q$' -W(A.(^I)u.d+<,Q $,Ai-.8U .#"/}*i#]00$07}%1E>'1D(Q2K)3,Q*3X ,4a^-E5e4y12 ( 3<"83M#}4q$5$Q%5*',6I1e(a67)7>y*8 E, 8K-e9eR.:X/:_,1;.>iEu/? L1$?R2i@AY3@_4Auf(&>y']? (?)@Q + @,AA%4-B(+.B2I0Cm81ED?m2DE3EELq4ER68FY7}G`8Gf)D+,EU ,QE-F.G<,0G%1UHa,02I23I9E5JI?6IJFY7KL8L S}:LY;MMU`` ?]`'}@ae.Ab4C b;DAcMAEcH FdqNHeU4IEe[JfYbYKfh<qY $  8 e e'M - $4aiM:AuqG N] U Y[ b( A $  i 4 !4y ' A.I 48 u;]}AHq]N,Ua\4b 8  Em,E!I(0.,5E;<QBYqHOm8U0\qu}c qeYI" (]/<U5*I3D+40K,,4Q-5uX0/<6^0q6eE!3"4A 8$ 4%e5M&6('6$a)7]**Y71u+87,94>.9E/]:yK0;R(1;X3 81/m>8q0?}>1@E3@L4QAUR5AY$6B_8C,f8)E@ *@ ,+Ae,B0.8B/}C<%E0C+1Dq2Y3yO `?Og0L2ME 3]M4Ny5O7O&(8QPQ,9P3M:Q9<R8@Q=ERF>SmMe?TSATZyBIUEaCUg4R5S q7,T  8aT9UU :U&< V-$=UW<3>W:8?Xq@AYG]BYYMCZITaDZZF[auGM\ h8qY$i9Y :ZY}<0Z=u[ >\0'?\-A$]u4 Bi^:C^A4D_MGF(_NIGm`THa$[mIaaKbihq`@a4yAEa!Bby'Cc.Dc4F8dQ;,G}dAHeH0If(NK(-u5ED.5K1E;E2y<K3e(;0)<0 +<E,Q=e->Y.>$0?M+m1U?12@8q3A$? 5AE6IBYL7BR8CY$:D0_;MDf8,qA-By ,.C 0 CA1eDA2D%U3E+5$F(2i6iF87Gm?}8GF:HL;]I4SW&?]XA-4@X3AYu:IC Z@DAZG]E[]MF[TqH\ZIE]4aJy]h;Zy<[m >(\?m\@]E A]',C^-DQ_,40E_:F`QAEH`GIUaNYJb8TKb[mMc}aNIdh?}a@a uAbIC(06D17K<38 Q4Q8XQ59e^6:ee(7 )E7 Y*y80+8m,9u.8:$q/}:+ 0;]11;83<<>4a=$E$5=K6>iR88 ? X9e?_M:@Ae+=E0-= .I>yU/?0?i2@Q$3M@+}4A25B(86B?80CmE9uDL :DR;EEY4=4E_>yFfI/C}0D <2D3]EUA4E5F%e7G<+8QG2y9Ha8:I?<IF=EJIL>JS,?KYAL `0BILf3mI$4JY 5J87,K8aL0M9L%:Mu,Q<N2=UN9u>OM??OFAPMBYQ$SCQZ(DRi`FRg<7S,?TA3]A$T9BiU@aCV(FDVMF(WmTGmXZHXaIY4g; V8X@X 0AEYU&ByY-ECZ3D[,:YF8[@G}\aGmH]MI]TqK<^I[ La^aM_}h>\q@] AU]B^YC^ E_'838D594KM6I9Q7:yXQ8;^:;eu+<8,a9E i-9.:}0 ;,1e;$28>7>E48?}K:@RI;]@XA00? 1u@ U2@3Aey54B$6yB+7C<28C8:(Dq?,;mEEO,a?MO2@PQ9uAP@C QFDAR8MERSFSmZ(HT`I4TgM:iQ;RI 0(SE?mT @T&YAUU,CU3mDQV9EW<@qFWG HXqMIUYTJYZKZIa$MZg>8W?}X @Y$,AYCI6:ID80:K]9u;Q:<Xa;<^=4=Ueu.Y:Y/: i0;2<03]<4=e$5>+7>18A?M809?>:@EE<A$K=EARY>BYX?B_mACe2(@Q3mA4 4Ae5By7,C y8aC%9DA+:D2<E8=UF(?,>FE?GmLAAGRBYHYUCI4_DIfi5F7K,2?K9A$La?BiMF(CMLDN8SOm@P %A4P,qByQe3 CR9DR@F8SMFG}SM$HTqSIUZ8K,U`LaVYgM=S]>S 0@TAUU$UBUCVi&iEW ,FIW3}GXA9HX@JYuGKMZMLZT M[]ZN[a4P0\gAeY(BZ8 CZY:(;D;mi_ @a? e1<2< y4=E5E=6>y7?$9?+,:I@Q1;}@80=B8EU?F2(?MG<8@G?(J?mK%@L0,AL2CMu9$DQN?ENF8FOMLHOSMIUPYJQ$`QKQf8O] ?}Oi@PAQ4}C,Q%DaRy,ES3 FS9H TA@ IeTFJUM4KV(SMVZINYWm`OXg]@UBU ACMV8DVUEW}FX&yH0X,IuYU3JY:KZ@M4[,GNy[MO\aT0P]ZR(]aESm^IgD[<8E[ G\qMHA]I] QJ^Y&L^-eME_3N` :O`AQaeGR8bNS}bTTcM[,UcaW9^?:ye$07}2(8 3m849E,597,:$08a;,*9;1E:i=U=D>>8K}?>QA?}XBY@_ C@e4=5>I 7<>8q?9@ (:@$<0Ae+<=eB1>B8A?C<>A$CEUBiDqKCERyDEXF(FY_G]Ff8Cq9D ; E$G %$?G+A4HA28ByH8CIu?MDJEF8JLQG}K]RHKYeIL_K,M4fKm@LAUL BME%CM,ENy2FIO94GO?HPQFIJPLKMQS]LqR8YMR`aNSmf@ PaUAeQ BQiCRIERFYS&GT ,HT3JUU9K]U@ LVFMW>7?M>>i@?MDA?KC @RDAA$XEA_FBYe7?]9$? :i@;A4(By$?]C +M@C1ADA8QCD>DQEEeEF(KFFRyHGmYIEG_JHf;E8F?}G}@HAH%$C,IE+DaI2IEJ8FK,?]H KEIeLaLaJMRKMYuMN8`NYNf?K@Lq }BMCMMDqNYEN%FO, H0P 2IuP94JQe?KRFYM4RLNiSMSmOSYPTq`qR(Ug C]ReDR ES]yG SHATIU$&JU,LVi3,MEW 9NW@0OXAFPXMER8YuSS}ZZiTZ`U[]g}G,XQHaX aIYJZ8uLZ MU[m&N\-O\3Q]E:(RY]@S^G1EdQ/.I0. E2(/3m0 Y4051e#m7,1)8a2093<7 :3=<4qD=U5J>5Q$?6YWA6^IBY7d3}4<45$ 55A7<6i8q7 U97#:80*i< 80=e9u7}>:>?:DA$;]KBi;QC>y*??1eA4?7By@Q>yC@EDAKF8B8RG}BXHCm_,IDe;AB@C}8AED$BD+]CEU1EE8aFIF>GGGM@ G AeHBI$ CIEJY%4FYJ+GK2IHL08JL?mK]MuELNLqMNRO OMYPAO`QPfBMCN( E4NFiO]GO,HP%J(Q4,0KmQ2LRy9EMS?O,SFYPQTALQTS}RUYTV(`UUVg FSuGTa HUJ8UK}V8LV&(MW},O5=?M6(D @6JA7]Q4C 7WDA8^IEu94d668<76 9$7}Q:i8;8e<9E#>9*y?]:1@;,7A;>C8X0H>^IE?}eE:y8>IM?}>@?$aA@ *C,@1uDaAe7EB>FBEH CIB ?C] @C4BDCJHEKIuLM$JRNiJY$OK]_PKf8BHC]I ,DJ(EJ0G KmHAL%EIL+JME2YLM8MENy?mNOEOOLPPQS R8PYS}Q`TR8fEO<G,O HQPa(IQJQ-$V?-]uA.ic28+mi3},4,}5-47<-8q.y#9/):/0 < 0Q6=e0=4>1C?2(JIA$2PBi3mW]C4]D4dq617M2I e8293}y; 450?67,A47<=By7D0C8aJD9QEF89WGm:I^YH:d97M;8q :Yu@:#AE;*B<01C<7E=e>(FI>DG>K(>> I@ ?]Ae?]B@CA4$aEA*FYBy1GC8HC>JDAEK]DKLER8MF(XO F_MPAGmeAuDQ0BD CEEE$F8FiFYGG}$HH+mJ(H1KmIE8qLI? MJEOK,LPQKRQLaY$RM_TMfIEEJFK< ,C]?M-I@.8PaA.VC /}]D00d5e-y6-7.I9$.:i/;0 #,<0)>1e00?]16@2=EA385?m6i#@7 *A70C,807I:( ?:a@;mA<uC<<$Dq=E*E=1F>y7H0?>(Iu?DJ@QKMK@QM$AXQNiB8^OBee@?B@a YC]ADAmEBIG B$qHAC+ ID1JD8LEU>MEEE$NyFKOG$\?%4c<0"828" 3}#}4$45$7<%U"I8q%(9&/]:',5< ')Iu?)PA$*IVBi*]C+}c4(q6)7M)8*Y9*0; +"<0,0)E=u,/>-e6Y?.1#,@2i)AE3 0AB36C4A=UE4CFI5JiG6(PH6W}I7]^K<7d68@ 6AU7}B8#C8*(E9E0FY978d@0;<mAu; BI$G>*H?1$J(@ 7Km@>8LAeDMBKMOBQPQCPaGE4QHAKRHRIT IuXUeJ_]VJeGGAIHQ JIHeKILJ(yNJ$OMKm+PL2QL8RME?,T0MEUuNL0VORWOYEY4PQ_ZyPfYKMLN MNO<O]OQPPaQQ%uSQ+TQRI2UR9VS?XT FYETLZUUS<[UY]V`A^IW$qI?M%O@%V(A&I\B&c<4 #5e$ 6%$7%E9$&i:i&"Y;'(<(0/m>(5?])u(-4"?m-)U@.y/A/6iC,/I1?2I(@2A3}#QuO>WP?M^R8?eCm<}D= E>(G> HQ?]I?$ J@*LA414MUA7NBy>IOCDQCK]RIDAQSDXaTE^VF(eGSIEEETIKVJRYW]K,XXK_mYLaeJIeQL0J MuJeNK<OKQ4Lq%RyM+SM2TNY8V(N?,WmOEXP LAYPR[,QeYU\aR_]RfiNOPP0 ]QEPRQuaSRUR%uVIS],W}S2XT9YU$?[ qO$<?%BA4&I$By&OC']V8D'\F((cM7]%8&809&;'mE)E(@)/}AE*5B+,-@.IAAU."B/)UC0 /E06yFY1e2@02 $Au3MB38C4E$5$#MFi5)G6i0QH7 6J(7=eKm80CL8JM9uQO:WPQ:^Q;]dB8Q D8 E49Fy:(G:4H;m#J8<*IK}<0L=E7]M==O,>yDaPa?JQ?QuR@QXT @^UeAeF>G?, I?JI@aKALA$ NBI*OMB1EPC7QD>YRDDT0EUKmUuEQVFXqWG<_ Y4GeJYDKEe yLFNFO]GMPG$QH+,SI$1TAI80UJY>VJEUXKKYEL0RiZLX[Mu_}]NfN(K aOmK PLAuQLS,MTaN(%UN+VO]2(XO8YUP?>>(>8>I>Y>i>y>>>>>>>>? ??,?>>(>8>I>Y>i>y>>>>>>>>? ??,?>>(>8>I>Y>i>y>>>>>>>>? ??,?>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~UUUUUUOmUud IuUs CU=Uא7U}1VY+V8$%VYVyVVqVV(WW<:lS4l0b.lQq(lqq"lMllӬl mʚ$m4emUAmummmmRaupA(< ]8}i40QqEQ4`n}8mY8yֺQ<]}aO^m|Q<$EeƊU (I,NM]Uml ǎzǮϘ}I $AaȂȢM$[(jIyiqފMު˴ Қ,eMAmߎ߮KZiexA$Eei4(IiJiY4hvm8޺QIWfuQ,ΊU GVeUt }I$FIU$crqMښeADSbqeAi4CRia4p~m8B8Q_n}Q,ǮyU @O^mU| }I$IeU{IduIs}pIǂIjI$d J^8J(XAJIRYJiqLaJMFyJ@J:J4K .K,(KMg,` Tqa4`AcM[M`arUU`Om`Iu`ÞC`e=aA7a$1aE+ae%aaaabLqvSFw a@w,p:wM4wmi.w4(w"wϺwɶ x؂x m xA8$xaxxx1ǍQ+ߍ`%om~8(I(i 8Q, ,MmaPQ$_< q>(M>I~>ix>r>m>eg>a$? [>(S TS,c](SMr80SmISߴQSiSϭqSQT,T TAӐTaTT~TxT]iS,eib}jpӥj(jIyjiUj jjǁjآ{k }uk,IpkMjkmd k^8kQǖ`Ào}ۀ~I~$xEs emag,Ma4[MUUOm(IuICiMPq|m_Mvnp|j(ϋd0^IeXQ 0RiALqaF@:4.˙(ә$gMOaE(][]IlUei{O}iI4C˨=7 Ŷ1ǯ,Ԃ+߯M]%m8(LMF\@k]:4z84U.u(Ŗ"ŶQ,$ <8EYyƚƺ1۞LQ+۾[,%i x 0y8QEAq Yܒܲ}I4Uu,YJ4yY MhUw}ۆI<]}aM0IXagMve0H0Weti4Ͷ܂](FUds]8Q,ETQc,qyE }D Rap}IɖaMBQ`aoM~e0 Wfue0(Iiiy4 ,Mm0AVi0ae40t00Ñ0㠂1]1$81E1e11112 2(GUG>? ?}?@a@AEAB(BBCmCD0DEEuEFIFG G}GH0HHIUIJJyJK>? ?}?@a@AEAB(BBCmCD0DEEuEFIFG G}GH0HHIUIJJyJK>? ?}?@a@AEAB(BBCmCD0DEEuEFIFG G}GH0HHIUIJJyJK)oa%=kReY,8eI?G@!J#1XLw7οƲ&/[BXChR{%#$A6"A,.qϐT&KJI0FXC-p եZ%Z' c8Bӏ?9g`7Qkez6IIu<9.4HW!$yr{~^:#$p<ni: (z0NH53qsS 47'n@Y˺ʉD̯Ku~آ88'@O: cwW72> ! ڥ0\ >*HGxAե:y -¹+D\W|i۞@ =pm3߾4$Vhw5yuJĻjen d%!ImI*P䌥@hXƪpOmܩb(fZrLut\$ǜZ㓜x5!G%N }Lj 2Lf% ܮN;۾<8u9 h.4sv 74%,ťkVkk4e";~y°6a-V2YT˚-FM~qJ DiB nlESsAtnkVnʍ}=&RtĘ.#. Q'} NHTUNBu8s{3#4! %8CovH#f|$P坛P[|/bFf%>|J9<x45_DG&`ѷkV'X:S5Gf$H pʨ[7 Qd0N4n UźՌQ;IVo7OzZ!qi~9\|l܄GN6IUcbTtM6VHd*+Z;r .X%q¾9-cdie}Os"m.~IN:LuNcF%6x.6:UqDVJ3aA%RNH%\N{Axzt2!\R\+ш;19:}g 8&uNUyJn@f]۵T?[(-]yFJ_)yYfF dt[UN]s-(Nw,m9M\.>ڂR Hw@?o4crU e,لT?PR)ԧ߈$$D4nEuA+ Ri2g5p- I2G-qwRmyxp5CET .)D)DRG|{}f rKqeSCSirdm@'0IFU( y粿Yr__Phttp://www.fussverkehr.ch/uploads/pics/PP_2012_05_FAQ_Fussgaengerstreifen_02.jpgZimage/jpegXYZOPNG  IHDR(-SsBITOPLTE糪þ~mZO=YHF2k`»ٻžܹʻ̲ܲϭퟒ٣֠׎lօw҂ztvfkRmZjUtoi\^GYC]NWFR@K6QDN?="98?/B04.3,* StRNS" pHYs  ~tEXtSoftwareMacromedia Fireworks 8hxIDATMr0EQSB `19 #a5sj\Ms WP b$~bC͒mMVL0@tLSSa0$G٨L%Ϗzw>Ip)uDPݲn) t܇1}'IIENDB`_Yhttp://www.fussverkehr.ch/typo3conf/ext/ml_links/Resources/Public/Icons/filetypes/pdf.pngYimage/png 1<Ki)/9:  W3WsW|W&:!Z!bkrɘ^gn#enu>~["$+LMMMXM_PP`[Pj