PK oa,mimetypeapplication/epub+zipPK V\j~~-META-INF/com.apple.ibooks.display-options.xml PK оOMETA-INF/container.xml PK ZOPS/css/main.css@charset "utf-8"; @namespace epub 'http://www.idpf.org/2007/ops'; /* Remove margin for WebKit-based reading systems. */ body { margin: 0; } /* Disable hyphenation for headings to avoid single-syllable-lines. */ h1, h2 { -epub-hyphens: none; -webkit-hyphens: none; -moz-hyphens: none; hyphens: none; } /* Set the minimum amount of lines to show up on a seperate page. (There is not much support for this at the moment.) */ p, blockquote { orphans: 2; widows: 2; } /* Turn on hyphenation for paragraphs and captions only. */ p, figcaption { -epub-hyphens: auto; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; } /* Shortcodes for page-break rules. Use data attributes to designate if and how the page should be broken before, inside or after an element. */ h1, h2, h3, h4, h5, h6, table, img, figure, video, [data-page-break~=inside][data-page-break~=avoid] { page-break-inside: avoid; } [data-page-break~=after] { page-break-after: always; } h1, h2, h3, h4, h5, h6, [data-page-break~=after][data-page-break~=avoid] { page-break-after: avoid; } [data-page-break~=before] { page-break-before: always; } [data-page-break~=before][data-page-break~=avoid] { page-break-before: avoid; } img[data-page-break~=before] { page-break-before: left; } /* Custom Styles */ PK f f OPS/css/cssstyles.css /*body must match the viewport tag in XHTML file*/ body { width: 1003px; height: 1417px; margin: 0; } /*Background Image Placement*/ .backgroundImage { position: absolute; margin: 0; z-index: 0; top: 0px; left: 0px; } .backgroundImage img { width: 1003px; height: 1417px; top: 0px; left: 0px; max-height: 1003px; max-height: 1417px; } @-webkit-keyframes viewShow /* Safari and Chrome */ { from { visibility: visible; opacity: 0; } to { visibility: visible; opacity: 1; } } @-webkit-keyframes viewHide /* Safari and Chrome */ { from { visibility: visible; opacity: 1;} to { visibility: visible; opacity: 0;} } .searchViewShow { -webkit-animation: viewShow 0.5s; -webkit-animation-direction: alternate; border-color: white; visibility: visible; } .searchViewHide { -webkit-animation: viewHide 0.5s; -webkit-animation-direction: alternate; visibility: hidden; } #searchView { position: absolute; top: 660px; left: 130px; width: 300px; height: 30px; border-style: solid; border-width: 2px; -webkit-border-radius: 10px; } .searchText { position: absolute; top: 5px; left: 10px; width: 65%; height: 15px; } .externalLink { position: absolute; left: 100px; top: 100px; width: 400px; height: 30px; background-color: red; opacity: 0.5; text-align: center; } .linkTitle { color: white; vertical-align: middle; font-size: x-large; } .gotoPageLink { position: absolute; left: 100px; top: 150px; width: 400px; height: 30px; background-color: red; opacity: 0.5; text-align: center; } .emailLink { position: absolute; left: 100px; top: 200px; width: 400px; height: 30px; background-color: red; opacity: 0.5; text-align: center; } .audioLink { position: absolute; left: 100px; top: 250px; width: 400px; height: 30px; background-color: red; opacity: 0.5; text-align: center; } .videoLink { position: absolute; left: 100px; top: 300px; width: 400px; height: 30px; background-color: red; opacity: 0.5; text-align: center; } #videoWindow { position: absolute; left: 140px; top: 340px; width: 300px; height:200px; } .imageLink { position: absolute; left: 100px; top: 350px; width: 400px; height: 30px; background-color: red; opacity: 0.5; text-align: center; } #imageWindow { position: absolute; left: 100px; top: 420px; width: 400px; height: 300px; overflow: hidden; border-color: white; border-style: solid; border-width: 2px; -webkit-border-radius: 10px; } .messageLink { position: absolute; left: 100px; top: 400px; width: 400px; height: 30px; background-color: red; opacity: 0.5; text-align: center; } .popupWindow { position: absolute; left: 100px; top: 420px; width: 400px; height: 300px; overflow: scroll; text-align: left; background-color: #333333; border-color: #7f7f7f; border-style: solid; border-width: 5px; -webkit-border-radius: 10px; } .popupWindow textarea{ background-color: #333333; color: white; border-style: none; margin: 20px, 20px, 20px, 20px; width: 100%; height: 100%; } #closeButton { position: absolute; width: 50px; height: 50px; } #messageWindow span{ position: relative; top: 10px; left: 10px; color: white; margin-right: 30px; word-break: break-all; display: inline-block; } #modalLayer { position: absolute; left: 0px; top: 0px; width: 1003px; height: 1417px; margin: 0; background-color: red; }PK eBNV&V&OPS/package.opf application/epub+zip urn:uuid:00000000-0000-0000-0000-000000000000 uuid urn:isbn:0000000000000 15 urn:isbn:0000000000000 15 1970-01-01T00:00:00Z 102_comuna EPUB Template, The main 1 102_comuna Non-Fiction en 1970-01-01 QUAE QUAE aut The Publisher Publisher, The pbl Copyright Statement 1.0.0 false pre-paginated none auto none none PK kkOPS/book/table-of-contents.html 102_comuna PK XrI8I8OPS/book/ebook.jsvar bookWidth = 1003; var bookHeight = 1417; var bookPageCount = 18; var pageWidth; var pageHeight; var modalLayer; var messageWindow; var audioWindow; var videoWindow; var imageWindow; var closeButton; function clickModalLayer( event ) { event.preventDefault(); if( messageWindow ) hideWindow( messageWindow ); if( audioWindow ) hideWindow( audioWindow ); if( videoWindow ) hideWindow( videoWindow ); if( imageWindow ) hideWindow( imageWindow ); if( closeButton ) hideWindow( closeButton ); hideModalLayer(); } function hideModalLayer() { document.body.removeChild( modalLayer ); modalLayer = null; } function showModalLayer() { if( modalLayer ) return; modalLayer = document.createElement("div"); modalLayer.id = "modalLayer"; modalLayer.onclick = clickModalLayer; modalLayer.style.opacity = 0.01; modalLayer.ontouchend = clickModalLayer; document.body.appendChild( modalLayer ); } function updatePageImage() { var page = $("#pageIndex").attr( "value"); page = "images/page" + page + ".jpg"; $("#bgImage").attr( "src", page ); } function test() { var link = document.createElement( "div"); link.style.backgroundColor = "red"; link.style.position = "absolute"; link.style.left = "100px"; link.style.top = "100px"; link.style.width = "300px"; link.style.height = "10px"; document.body.appendChild( link ); } function makeWindowSize( width, height ) { this.width = width; this.height = height; if( width >= bookWidth * 0.9 ) this.width = Number( bookWidth * 0.9 ); if( height >= bookHeight * 0.9 ) this.height = Number( bookHeight * 0.9 ); } function showAudio( source ) { showModalLayer(); var url = $(source).attr( "destination" ); url = url.replace( "content/", "" ); var x = $(source).attr( "x" ); if( x < 0 ) x = bookWidth * 0.2; audioWindow = document.createElement( "div"); audioWindow.className = "popupWindow" audioWindow.style.left = x + "px"; audioWindow.style.top = $(source).attr( "y" ) + "px"; audioWindow.style.width = "300px"; audioWindow.style.height = "100px"; document.body.appendChild( audioWindow ); $(audioWindow).addClass( "searchViewShow"); var player = document.createElement( "audio"); player.src = url; player.style.width = "100%"; player.style.height = "100%"; player.controls = "controls"; player.play(); audioWindow.appendChild( player ); closeButton = document.createElement( "img" ); closeButton.src = "../images/close.png"; closeButton.id = "closeButton"; closeButton.style.left = Number( x ) + 300 - 20 + "px"; closeButton.style.top = Number( $(source).attr( "y" ) ) - 20 + "px"; closeButton.style.width = "40px"; closeButton.style.height = "40px"; closeButton.onclick = clickModalLayer; document.body.appendChild( closeButton ); } function showVideo( source ) { showModalLayer(); var url = $(source).attr( "destination" ); if( url ) url = url.replace( "content/", "" ); var width = Number( $(source).attr( "popupWidth" ) ); var height = Number( $(source).attr( "popupHeight" ) ); if( $(source).attr( "popupWidth" ) == null ) width = bookWidth * 0.8; if( $(source).attr( "popupHeight" ) == null) height = width * 0.75; var size = new makeWindowSize( width, height ); videoWindow = document.createElement( "div"); videoWindow.className = "popupWindow" videoWindow.style.left = ( bookWidth - size.width ) / 2 + "px"; videoWindow.style.top = ( bookHeight - size.height ) / 2 + "px"; videoWindow.style.width = size.width + "px"; videoWindow.style.height = size.height + "px"; document.body.appendChild( videoWindow ); $(videoWindow).addClass( "searchViewShow"); var player = document.createElement( "video"); player.src = url; player.style.width = "100%"; player.style.height = "100%"; player.controls = "controls"; player.play(); videoWindow.appendChild( player ); closeButton = document.createElement( "img" ); closeButton.src = "../images/close.png"; closeButton.id = "closeButton"; closeButton.style.left = ( bookWidth - size.width ) / 2 + size.width - 25 + "px"; closeButton.style.top = ( bookHeight - size.height ) / 2 - 25 + "px"; closeButton.onclick = clickModalLayer; document.body.appendChild( closeButton ); } function showImage( source ) { showModalLayer(); var url = $(source).attr( "destination" ); url = url.replace( "content/", "../" ); var player = document.createElement( "img"); player.src = url; var img = new Image(); img.onload = function(){ var w = this.width; var h = this.height; var width; var height; if( w > h ) { var rate = h / w; width = bookWidth * 0.8; height = width * rate; } else { var rate = w / h; height = bookHeight * 0.8; width = height * rate; } imageWindow = document.createElement( "div"); imageWindow.className = "popupWindow" document.body.appendChild( imageWindow ); $(imageWindow).addClass( "searchViewShow"); document.body.appendChild( imageWindow ); imageWindow.style.width = width + "px"; imageWindow.style.height = height + "px"; imageWindow.style.left = ( bookWidth - width ) / 2 + "px"; imageWindow.style.top = ( bookHeight - height ) / 2 + "px"; imageWindow.style.overflow = "hidden"; player = document.createElement( "img"); player.style.width = "100%"; player.style.height = "100%"; player.src = url; imageWindow.appendChild( player ); closeButton = document.createElement( "img" ); closeButton.src = "../images/close.png"; closeButton.id = "closeButton"; closeButton.style.left = ( bookWidth - width ) / 2 + width - 25 + "px"; closeButton.style.top = ( bookHeight - height ) / 2 - 25 + "px"; closeButton.onclick = clickModalLayer; document.body.appendChild( closeButton ); } img.src = url; } function showMessage( source ) { showModalLayer(); var width = Number( $(source).attr( "popupWidth" ) ); var height = Number( $(source).attr( "popupHeight" ) ); if( width > bookWidth ) width = bookWidth * 0.7; if( height > bookHeight ) height = bookHeight * 0.7 var size = new makeWindowSize( width, height ); messageWindow = document.createElement( "div"); messageWindow.id = "messageWindow"; messageWindow.className = "popupWindow"; messageWindow.style.left = ( bookWidth - size.width ) / 2 + "px"; messageWindow.style.top = ( bookHeight - size.height ) / 2 + "px"; messageWindow.style.width = size.width + "px"; messageWindow.style.height = size.height + "px"; var text = document.createElement( "textarea"); text.readOnly = "readonly"; text.style.fontSize = "300%"; var txt = $(source).text(); $(text).text( txt ); messageWindow.appendChild( text ); document.body.appendChild( messageWindow ); $("#messageWindow").addClass( "searchViewShow"); closeButton = document.createElement( "img" ); closeButton.src = "../images/close.png"; closeButton.id = "closeButton"; closeButton.style.left = ( bookWidth - size.width ) / 2 + size.width - 25 + "px"; closeButton.style.top = ( bookHeight - size.height ) / 2 - 25 + "px"; closeButton.onclick = clickModalLayer; document.body.appendChild( closeButton ); $("#closeButton").addClass( "searchViewShow"); } function hideWindow( win ) { if( !$(win).hasClass( "searchViewHide") ) { $(win).addClass( "searchViewHide"); win.addEventListener( 'webkitAnimationEnd', function( event ) { document.body.removeChild( win ); win = null; }, false ); } } function clickLink( event ) { event.preventDefault(); var source = $(this).data( "source"); var action = $(source).attr( "destination" ); var type = $(source).attr( "type" ); //alert( $(source).attr( "destination" ) ); if( type == "message" ) { showMessage( source ); } else if( type == "audio" ) { showAudio( source ); } else if( type == "video" ) { showVideo( source ); } else if( type == "image" ) { showImage( source ); } else if( action.indexOf( "http:" ) == 0 ) { window.open( action, "_blank" ); } else if( action.indexOf( "mailto:" ) == 0 ) { window.open( action, "_blank" ); } else if( action.indexOf( "page:" ) == 0 ) { var page = Number( action.substring( 5, action.length ) ); var url = sprintf( "page%02d.xhtml", page ); window.open( url, "_blank" ); } } function createLink( source ) { //alert( $(this).attr( "page" ) ); var pageNo = parseInt( $(source).attr( "page" ) ); var x = $(source).attr( "x" ); var currentPageNo = parseInt( $("#pageIndex").attr( "value" ) ); if( pageNo != currentPageNo && pageNo != currentPageNo + 1 ) return; if( pageNo == currentPageNo + 1) { if( x > 0 ) return; else x = pageWidth + Number( x ); } var y = $(source).attr( "y" ); var w = $(source).attr( "width" ); var h = $(source).attr( "height" ); x = x / pageWidth * bookWidth; w = w / pageWidth * bookWidth; y = y / pageHeight * bookHeight; h = h / pageHeight * bookHeight; var link = document.createElement( "div"); link.style.backgroundColor = "red"; link.style.position = "absolute"; link.style.left = x + "px"; link.style.top = y + "px"; link.style.width = w + "px"; link.style.height = h + "px"; link.style.backgroundColor = $(source).attr( "color" ); link.style.opacity = $(source).attr( "opacity" ); $(link).data( "source", source ); link.onclick = clickLink; document.body.appendChild( link ); } function createButton( source ) { var pageNo = parseInt( $(source).attr( "page" ) ); var x = $(source).attr( "x" ); var currentPageNo = parseInt( $("#pageIndex").attr( "value" ) ); if( pageNo != currentPageNo && pageNo != currentPageNo + 1 ) return; if( pageNo == currentPageNo + 1) { if( x > 0 ) return; else x = pageWidth + Number( x ); } var y = $(source).attr( "y" ); var w = $(source).attr( "width" ); var h = $(source).attr( "height" ); var url = $(source).attr( "image" ); url = url.replace( "content/", "../" ); x = x / pageWidth * bookWidth; w = w / pageWidth * bookWidth; y = y / pageHeight * bookHeight; h = h / pageHeight * bookHeight; var button = document.createElement( "div"); button.style.position = "absolute"; button.style.left = x + "px"; button.style.top = y + "px"; button.style.width = w + "px"; button.style.height = h + "px"; // button.style.backgroundColor = "black"; $(button).data( "source", source ); button.onclick = clickLink; var image = document.createElement( "img"); image.src = url; image.style.width = "100%"; image.style.height = "100%"; button.appendChild( image ); document.body.appendChild( button ); } function createVideo( source ) { var pageNo = parseInt( $(source).attr( "page" ) ); var currentPageNo = parseInt( $("#pageIndex").attr( "value" ) ); if( pageNo != currentPageNo ) return; var x = $(source).attr( "x" ); var y = $(source).attr( "y" ); var w = $(source).attr( "width" ); var h = $(source).attr( "height" ); var url = $(source).attr( "url" ); var showControls = $(source).attr( "showControl" ); var autoRepeat = $(source).attr( "autoRepeat" ); var autoPlay = $(source).attr( "autoPlay" ); url = url.replace( "content/", "" ); var button = document.createElement( "div"); button.style.position = "absolute"; button.style.left = x + "px"; button.style.top = y + "px"; button.style.width = w + "px"; button.style.height = h + "px"; button.style.backgroundColor = "black"; $(button).data( "source", source ); button.onclick = clickLink; var video = document.createElement( "video"); video.src = url; video.style.width = "100%"; video.style.height = "100%"; if( showControls == "true" ) video.controls = "controls"; if( autoPlay == "true" ) video.play(); if( autoRepeat == "true" ) video.loop = "loop"; button.appendChild( video ); document.body.appendChild( button ); } function createAudio( source ) { var pageNo = parseInt( $(source).attr( "pageNumber" ) ); var currentPageNo = parseInt( $("#pageIndex").attr( "value" ) ); if( pageNo != currentPageNo ) return; var repeta = $(source).attr( "repeat" ); var showControl = $(source).attr( "controlBar" ); var url = $(source).attr( "url" ); url = url.replace( "content/", "" ); if( showControl == "true" ) { var s = function() { this.destination = url; this.x = bookWidth * 0.3; this.y = bookHeight * 0.2; } showAudio( s ); return; } var player = document.createElement( "audio"); player.src = url; player.controls = "controls"; player.play(); if( repeta ) player.loop = "loop"; document.body.appendChild( player ); } function updateHotlinks() { var currentPageNo = parseInt( $("#pageIndex").attr( "value" ) ); var file; file = "data/page" + currentPageNo + "_links.xml"; xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",file,false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; links = xmlDoc.getElementsByTagName( "hotlink"); for( var i = 0; i < links.length; ++i ) { createLink( links[i] ); } currentPageNo++; if( currentPageNo <= bookPageCount ) { file = "data/page" + currentPageNo + "_links.xml"; xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET",file,false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; links = xmlDoc.getElementsByTagName( "hotlink"); for( var i = 0; i < links.length; ++i ) { createLink( links[i] ); } } } function updateButtons() { xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET","data/buttons.xml",false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; items = xmlDoc.getElementsByTagName( "button"); for( var i = 0; i < items.length; ++i ) { createButton( items[i] ); } } function updateVideos() { xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET","data/videos.xml",false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; items = xmlDoc.getElementsByTagName( "video"); for( var i = 0; i < items.length; ++i ) { createVideo( items[i] ); } } function updateAudios() { xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET","data/sounds.xml",false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; items = xmlDoc.getElementsByTagName( "sound"); for( var i = 0; i < items.length; ++i ) { createAudio( items[i] ); } } function pageLoaded() { var image = new Image(); image.onload = function() { pageWidth = this.width; pageHeight = this.height; updateHotlinks(); updateButtons(); updateVideos(); updateAudios(); } image.src = $("#bgImage").attr( "src" ); }PK SF  OPS/book/jquery.js/*! * jQuery JavaScript Library v1.8.2 * http://jquery.com/ * * Includes Sizzle.js * http://sizzlejs.com/ * * Copyright 2012 jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license * * Date: Thu Sep 20 2012 21:13:05 GMT-0400 (Eastern Daylight Time) */ (function( window, undefined ) { var // A central reference to the root jQuery(document) rootjQuery, // The deferred used on DOM ready readyList, // Use the correct document accordingly with window argument (sandbox) document = window.document, location = window.location, navigator = window.navigator, // Map over jQuery in case of overwrite _jQuery = window.jQuery, // Map over the $ in case of overwrite _$ = window.$, // Save a reference to some core methods core_push = Array.prototype.push, core_slice = Array.prototype.slice, core_indexOf = Array.prototype.indexOf, core_toString = Object.prototype.toString, core_hasOwn = Object.prototype.hasOwnProperty, core_trim = String.prototype.trim, // Define a local copy of jQuery jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' return new jQuery.fn.init( selector, context, rootjQuery ); }, // Used for matching numbers core_pnum = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source, // Used for detecting and trimming whitespace core_rnotwhite = /\S/, core_rspace = /\s+/, // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, // A simple way to check for HTML strings // Prioritize #id over to avoid XSS via location.hash (#9521) rquickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, // Match a standalone tag rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, // JSON RegExp rvalidchars = /^[\],:{}\s]*$/, rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g, // Matches dashed string for camelizing rmsPrefix = /^-ms-/, rdashAlpha = /-([\da-z])/gi, // Used by jQuery.camelCase as callback to replace() fcamelCase = function( all, letter ) { return ( letter + "" ).toUpperCase(); }, // The ready event handler and self cleanup method DOMContentLoaded = function() { if ( document.addEventListener ) { document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); jQuery.ready(); } else if ( document.readyState === "complete" ) { // we're here because readyState === "complete" in oldIE // which is good enough for us to call the dom ready! document.detachEvent( "onreadystatechange", DOMContentLoaded ); jQuery.ready(); } }, // [[Class]] -> type pairs class2type = {}; jQuery.fn = jQuery.prototype = { constructor: jQuery, init: function( selector, context, rootjQuery ) { var match, elem, ret, doc; // Handle $(""), $(null), $(undefined), $(false) if ( !selector ) { return this; } // Handle $(DOMElement) if ( selector.nodeType ) { this.context = this[0] = selector; this.length = 1; return this; } // Handle HTML strings if ( typeof selector === "string" ) { if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { // Assume that strings that start and end with <> are HTML and skip the regex check match = [ null, selector, null ]; } else { match = rquickExpr.exec( selector ); } // Match html or make sure no context is specified for #id if ( match && (match[1] || !context) ) { // HANDLE: $(html) -> $(array) if ( match[1] ) { context = context instanceof jQuery ? context[0] : context; doc = ( context && context.nodeType ? context.ownerDocument || context : document ); // scripts is true for back-compat selector = jQuery.parseHTML( match[1], doc, true ); if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { this.attr.call( selector, context, true ); } return jQuery.merge( this, selector ); // HANDLE: $(#id) } else { elem = document.getElementById( match[2] ); // Check parentNode to catch when Blackberry 4.6 returns // nodes that are no longer in the document #6963 if ( elem && elem.parentNode ) { // Handle the case where IE and Opera return items // by name instead of ID if ( elem.id !== match[2] ) { return rootjQuery.find( selector ); } // Otherwise, we inject the element directly into the jQuery object this.length = 1; this[0] = elem; } this.context = document; this.selector = selector; return this; } // HANDLE: $(expr, $(...)) } else if ( !context || context.jquery ) { return ( context || rootjQuery ).find( selector ); // HANDLE: $(expr, context) // (which is just equivalent to: $(context).find(expr) } else { return this.constructor( context ).find( selector ); } // HANDLE: $(function) // Shortcut for document ready } else if ( jQuery.isFunction( selector ) ) { return rootjQuery.ready( selector ); } if ( selector.selector !== undefined ) { this.selector = selector.selector; this.context = selector.context; } return jQuery.makeArray( selector, this ); }, // Start with an empty selector selector: "", // The current version of jQuery being used jquery: "1.8.2", // The default length of a jQuery object is 0 length: 0, // The number of elements contained in the matched element set size: function() { return this.length; }, toArray: function() { return core_slice.call( this ); }, // Get the Nth element in the matched element set OR // Get the whole matched element set as a clean array get: function( num ) { return num == null ? // Return a 'clean' array this.toArray() : // Return just the object ( num < 0 ? this[ this.length + num ] : this[ num ] ); }, // Take an array of elements and push it onto the stack // (returning the new matched element set) pushStack: function( elems, name, selector ) { // Build a new jQuery matched element set var ret = jQuery.merge( this.constructor(), elems ); // Add the old object onto the stack (as a reference) ret.prevObject = this; ret.context = this.context; if ( name === "find" ) { ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; } else if ( name ) { ret.selector = this.selector + "." + name + "(" + selector + ")"; } // Return the newly-formed element set return ret; }, // Execute a callback for every element in the matched set. // (You can seed the arguments with an array of args, but this is // only used internally.) each: function( callback, args ) { return jQuery.each( this, callback, args ); }, ready: function( fn ) { // Add the callback jQuery.ready.promise().done( fn ); return this; }, eq: function( i ) { i = +i; return i === -1 ? this.slice( i ) : this.slice( i, i + 1 ); }, first: function() { return this.eq( 0 ); }, last: function() { return this.eq( -1 ); }, slice: function() { return this.pushStack( core_slice.apply( this, arguments ), "slice", core_slice.call(arguments).join(",") ); }, map: function( callback ) { return this.pushStack( jQuery.map(this, function( elem, i ) { return callback.call( elem, i, elem ); })); }, end: function() { return this.prevObject || this.constructor(null); }, // For internal use only. // Behaves like an Array's method, not like a jQuery method. push: core_push, sort: [].sort, splice: [].splice }; // Give the init function the jQuery prototype for later instantiation jQuery.fn.init.prototype = jQuery.fn; jQuery.extend = jQuery.fn.extend = function() { var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; // Handle a deep copy situation if ( typeof target === "boolean" ) { deep = target; target = arguments[1] || {}; // skip the boolean and the target i = 2; } // Handle case when target is a string or something (possible in deep copy) if ( typeof target !== "object" && !jQuery.isFunction(target) ) { target = {}; } // extend jQuery itself if only one argument is passed if ( length === i ) { target = this; --i; } for ( ; i < length; i++ ) { // Only deal with non-null/undefined values if ( (options = arguments[ i ]) != null ) { // Extend the base object for ( name in options ) { src = target[ name ]; copy = options[ name ]; // Prevent never-ending loop if ( target === copy ) { continue; } // Recurse if we're merging plain objects or arrays if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { if ( copyIsArray ) { copyIsArray = false; clone = src && jQuery.isArray(src) ? src : []; } else { clone = src && jQuery.isPlainObject(src) ? src : {}; } // Never move original objects, clone them target[ name ] = jQuery.extend( deep, clone, copy ); // Don't bring in undefined values } else if ( copy !== undefined ) { target[ name ] = copy; } } } } // Return the modified object return target; }; jQuery.extend({ noConflict: function( deep ) { if ( window.$ === jQuery ) { window.$ = _$; } if ( deep && window.jQuery === jQuery ) { window.jQuery = _jQuery; } return jQuery; }, // Is the DOM ready to be used? Set to true once it occurs. isReady: false, // A counter to track how many items to wait for before // the ready event fires. See #6781 readyWait: 1, // Hold (or release) the ready event holdReady: function( hold ) { if ( hold ) { jQuery.readyWait++; } else { jQuery.ready( true ); } }, // Handle when the DOM is ready ready: function( wait ) { // Abort if there are pending holds or we're already ready if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { return; } // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). if ( !document.body ) { return setTimeout( jQuery.ready, 1 ); } // Remember that the DOM is ready jQuery.isReady = true; // If a normal DOM Ready event fired, decrement, and wait if need be if ( wait !== true && --jQuery.readyWait > 0 ) { return; } // If there are functions bound, to execute readyList.resolveWith( document, [ jQuery ] ); // Trigger any bound ready events if ( jQuery.fn.trigger ) { jQuery( document ).trigger("ready").off("ready"); } }, // See test/unit/core.js for details concerning isFunction. // Since version 1.3, DOM methods and functions like alert // aren't supported. They return false on IE (#2968). isFunction: function( obj ) { return jQuery.type(obj) === "function"; }, isArray: Array.isArray || function( obj ) { return jQuery.type(obj) === "array"; }, isWindow: function( obj ) { return obj != null && obj == obj.window; }, isNumeric: function( obj ) { return !isNaN( parseFloat(obj) ) && isFinite( obj ); }, type: function( obj ) { return obj == null ? String( obj ) : class2type[ core_toString.call(obj) ] || "object"; }, isPlainObject: function( obj ) { // Must be an Object. // Because of IE, we also have to check the presence of the constructor property. // Make sure that DOM nodes and window objects don't pass through, as well if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { return false; } try { // Not own constructor property must be Object if ( obj.constructor && !core_hasOwn.call(obj, "constructor") && !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { return false; } } catch ( e ) { // IE8,9 Will throw exceptions on certain host objects #9897 return false; } // Own properties are enumerated firstly, so to speed up, // if last one is own, then all properties are own. var key; for ( key in obj ) {} return key === undefined || core_hasOwn.call( obj, key ); }, isEmptyObject: function( obj ) { var name; for ( name in obj ) { return false; } return true; }, error: function( msg ) { throw new Error( msg ); }, // data: string of html // context (optional): If specified, the fragment will be created in this context, defaults to document // scripts (optional): If true, will include scripts passed in the html string parseHTML: function( data, context, scripts ) { var parsed; if ( !data || typeof data !== "string" ) { return null; } if ( typeof context === "boolean" ) { scripts = context; context = 0; } context = context || document; // Single tag if ( (parsed = rsingleTag.exec( data )) ) { return [ context.createElement( parsed[1] ) ]; } parsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] ); return jQuery.merge( [], (parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes ); }, parseJSON: function( data ) { if ( !data || typeof data !== "string") { return null; } // Make sure leading/trailing whitespace is removed (IE can't handle it) data = jQuery.trim( data ); // Attempt to parse using the native JSON parser first if ( window.JSON && window.JSON.parse ) { return window.JSON.parse( data ); } // Make sure the incoming data is actual JSON // Logic borrowed from http://json.org/json2.js if ( rvalidchars.test( data.replace( rvalidescape, "@" ) .replace( rvalidtokens, "]" ) .replace( rvalidbraces, "")) ) { return ( new Function( "return " + data ) )(); } jQuery.error( "Invalid JSON: " + data ); }, // Cross-browser xml parsing parseXML: function( data ) { var xml, tmp; if ( !data || typeof data !== "string" ) { return null; } try { if ( window.DOMParser ) { // Standard tmp = new DOMParser(); xml = tmp.parseFromString( data , "text/xml" ); } else { // IE xml = new ActiveXObject( "Microsoft.XMLDOM" ); xml.async = "false"; xml.loadXML( data ); } } catch( e ) { xml = undefined; } if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { jQuery.error( "Invalid XML: " + data ); } return xml; }, noop: function() {}, // Evaluates a script in a global context // Workarounds based on findings by Jim Driscoll // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context globalEval: function( data ) { if ( data && core_rnotwhite.test( data ) ) { // We use execScript on Internet Explorer // We use an anonymous function so that context is window // rather than jQuery in Firefox ( window.execScript || function( data ) { window[ "eval" ].call( window, data ); } )( data ); } }, // Convert dashed to camelCase; used by the css and data modules // Microsoft forgot to hump their vendor prefix (#9572) camelCase: function( string ) { return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); }, nodeName: function( elem, name ) { return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); }, // args is for internal usage only each: function( obj, callback, args ) { var name, i = 0, length = obj.length, isObj = length === undefined || jQuery.isFunction( obj ); if ( args ) { if ( isObj ) { for ( name in obj ) { if ( callback.apply( obj[ name ], args ) === false ) { break; } } } else { for ( ; i < length; ) { if ( callback.apply( obj[ i++ ], args ) === false ) { break; } } } // A special, fast, case for the most common use of each } else { if ( isObj ) { for ( name in obj ) { if ( callback.call( obj[ name ], name, obj[ name ] ) === false ) { break; } } } else { for ( ; i < length; ) { if ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) { break; } } } } return obj; }, // Use native String.trim function wherever possible trim: core_trim && !core_trim.call("\uFEFF\xA0") ? function( text ) { return text == null ? "" : core_trim.call( text ); } : // Otherwise use our own trimming functionality function( text ) { return text == null ? "" : ( text + "" ).replace( rtrim, "" ); }, // results is for internal usage only makeArray: function( arr, results ) { var type, ret = results || []; if ( arr != null ) { // The window, strings (and functions) also have 'length' // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 type = jQuery.type( arr ); if ( arr.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( arr ) ) { core_push.call( ret, arr ); } else { jQuery.merge( ret, arr ); } } return ret; }, inArray: function( elem, arr, i ) { var len; if ( arr ) { if ( core_indexOf ) { return core_indexOf.call( arr, elem, i ); } len = arr.length; i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; for ( ; i < len; i++ ) { // Skip accessing in sparse arrays if ( i in arr && arr[ i ] === elem ) { return i; } } } return -1; }, merge: function( first, second ) { var l = second.length, i = first.length, j = 0; if ( typeof l === "number" ) { for ( ; j < l; j++ ) { first[ i++ ] = second[ j ]; } } else { while ( second[j] !== undefined ) { first[ i++ ] = second[ j++ ]; } } first.length = i; return first; }, grep: function( elems, callback, inv ) { var retVal, ret = [], i = 0, length = elems.length; inv = !!inv; // Go through the array, only saving the items // that pass the validator function for ( ; i < length; i++ ) { retVal = !!callback( elems[ i ], i ); if ( inv !== retVal ) { ret.push( elems[ i ] ); } } return ret; }, // arg is for internal usage only map: function( elems, callback, arg ) { var value, key, ret = [], i = 0, length = elems.length, // jquery objects are treated as arrays isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; // Go through the array, translating each of the items to their if ( isArray ) { for ( ; i < length; i++ ) { value = callback( elems[ i ], i, arg ); if ( value != null ) { ret[ ret.length ] = value; } } // Go through every key on the object, } else { for ( key in elems ) { value = callback( elems[ key ], key, arg ); if ( value != null ) { ret[ ret.length ] = value; } } } // Flatten any nested arrays return ret.concat.apply( [], ret ); }, // A global GUID counter for objects guid: 1, // Bind a function to a context, optionally partially applying any // arguments. proxy: function( fn, context ) { var tmp, args, proxy; if ( typeof context === "string" ) { tmp = fn[ context ]; context = fn; fn = tmp; } // Quick check to determine if target is callable, in the spec // this throws a TypeError, but we will just return undefined. if ( !jQuery.isFunction( fn ) ) { return undefined; } // Simulated bind args = core_slice.call( arguments, 2 ); proxy = function() { return fn.apply( context, args.concat( core_slice.call( arguments ) ) ); }; // Set the guid of unique handler to the same of original handler, so it can be removed proxy.guid = fn.guid = fn.guid || jQuery.guid++; return proxy; }, // Multifunctional method to get and set values of a collection // The value/s can optionally be executed if it's a function access: function( elems, fn, key, value, chainable, emptyGet, pass ) { var exec, bulk = key == null, i = 0, length = elems.length; // Sets many values if ( key && typeof key === "object" ) { for ( i in key ) { jQuery.access( elems, fn, i, key[i], 1, emptyGet, value ); } chainable = 1; // Sets one value } else if ( value !== undefined ) { // Optionally, function values get executed if exec is true exec = pass === undefined && jQuery.isFunction( value ); if ( bulk ) { // Bulk operations only iterate when executing function values if ( exec ) { exec = fn; fn = function( elem, key, value ) { return exec.call( jQuery( elem ), value ); }; // Otherwise they run against the entire set } else { fn.call( elems, value ); fn = null; } } if ( fn ) { for (; i < length; i++ ) { fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); } } chainable = 1; } return chainable ? elems : // Gets bulk ? fn.call( elems ) : length ? fn( elems[0], key ) : emptyGet; }, now: function() { return ( new Date() ).getTime(); } }); jQuery.ready.promise = function( obj ) { if ( !readyList ) { readyList = jQuery.Deferred(); // Catch cases where $(document).ready() is called after the browser event has already occurred. // we once tried to use readyState "interactive" here, but it caused issues like the one // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 if ( document.readyState === "complete" ) { // Handle it asynchronously to allow scripts the opportunity to delay ready setTimeout( jQuery.ready, 1 ); // Standards-based browsers support DOMContentLoaded } else if ( document.addEventListener ) { // Use the handy event callback document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); // A fallback to window.onload, that will always work window.addEventListener( "load", jQuery.ready, false ); // If IE event model is used } else { // Ensure firing before onload, maybe late but safe also for iframes document.attachEvent( "onreadystatechange", DOMContentLoaded ); // A fallback to window.onload, that will always work window.attachEvent( "onload", jQuery.ready ); // If IE and not a frame // continually check to see if the document is ready var top = false; try { top = window.frameElement == null && document.documentElement; } catch(e) {} if ( top && top.doScroll ) { (function doScrollCheck() { if ( !jQuery.isReady ) { try { // Use the trick by Diego Perini // http://javascript.nwbox.com/IEContentLoaded/ top.doScroll("left"); } catch(e) { return setTimeout( doScrollCheck, 50 ); } // and execute any waiting functions jQuery.ready(); } })(); } } } return readyList.promise( obj ); }; // Populate the class2type map jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { class2type[ "[object " + name + "]" ] = name.toLowerCase(); }); // All jQuery objects should point back to these rootjQuery = jQuery(document); // String to Object options format cache var optionsCache = {}; // Convert String-formatted options into Object-formatted ones and store in cache function createOptions( options ) { var object = optionsCache[ options ] = {}; jQuery.each( options.split( core_rspace ), function( _, flag ) { object[ flag ] = true; }); return object; } /* * Create a callback list using the following parameters: * * options: an optional list of space-separated options that will change how * the callback list behaves or a more traditional option object * * By default a callback list will act like an event callback list and can be * "fired" multiple times. * * Possible options: * * once: will ensure the callback list can only be fired once (like a Deferred) * * memory: will keep track of previous values and will call any callback added * after the list has been fired right away with the latest "memorized" * values (like a Deferred) * * unique: will ensure a callback can only be added once (no duplicate in the list) * * stopOnFalse: interrupt callings when a callback returns false * */ jQuery.Callbacks = function( options ) { // Convert options from String-formatted to Object-formatted if needed // (we check in cache first) options = typeof options === "string" ? ( optionsCache[ options ] || createOptions( options ) ) : jQuery.extend( {}, options ); var // Last fire value (for non-forgettable lists) memory, // Flag to know if list was already fired fired, // Flag to know if list is currently firing firing, // First callback to fire (used internally by add and fireWith) firingStart, // End of the loop when firing firingLength, // Index of currently firing callback (modified by remove if needed) firingIndex, // Actual callback list list = [], // Stack of fire calls for repeatable lists stack = !options.once && [], // Fire callbacks fire = function( data ) { memory = options.memory && data; fired = true; firingIndex = firingStart || 0; firingStart = 0; firingLength = list.length; firing = true; for ( ; list && firingIndex < firingLength; firingIndex++ ) { if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { memory = false; // To prevent further calls using add break; } } firing = false; if ( list ) { if ( stack ) { if ( stack.length ) { fire( stack.shift() ); } } else if ( memory ) { list = []; } else { self.disable(); } } }, // Actual Callbacks object self = { // Add a callback or a collection of callbacks to the list add: function() { if ( list ) { // First, we save the current length var start = list.length; (function add( args ) { jQuery.each( args, function( _, arg ) { var type = jQuery.type( arg ); if ( type === "function" && ( !options.unique || !self.has( arg ) ) ) { list.push( arg ); } else if ( arg && arg.length && type !== "string" ) { // Inspect recursively add( arg ); } }); })( arguments ); // Do we need to add the callbacks to the // current firing batch? if ( firing ) { firingLength = list.length; // With memory, if we're not firing then // we should call right away } else if ( memory ) { firingStart = start; fire( memory ); } } return this; }, // Remove a callback from the list remove: function() { if ( list ) { jQuery.each( arguments, function( _, arg ) { var index; while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { list.splice( index, 1 ); // Handle firing indexes if ( firing ) { if ( index <= firingLength ) { firingLength--; } if ( index <= firingIndex ) { firingIndex--; } } } }); } return this; }, // Control if a given callback is in the list has: function( fn ) { return jQuery.inArray( fn, list ) > -1; }, // Remove all callbacks from the list empty: function() { list = []; return this; }, // Have the list do nothing anymore disable: function() { list = stack = memory = undefined; return this; }, // Is it disabled? disabled: function() { return !list; }, // Lock the list in its current state lock: function() { stack = undefined; if ( !memory ) { self.disable(); } return this; }, // Is it locked? locked: function() { return !stack; }, // Call all callbacks with the given context and arguments fireWith: function( context, args ) { args = args || []; args = [ context, args.slice ? args.slice() : args ]; if ( list && ( !fired || stack ) ) { if ( firing ) { stack.push( args ); } else { fire( args ); } } return this; }, // Call all the callbacks with the given arguments fire: function() { self.fireWith( this, arguments ); return this; }, // To know if the callbacks have already been called at least once fired: function() { return !!fired; } }; return self; }; jQuery.extend({ Deferred: function( func ) { var tuples = [ // action, add listener, listener list, final state [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], [ "notify", "progress", jQuery.Callbacks("memory") ] ], state = "pending", promise = { state: function() { return state; }, always: function() { deferred.done( arguments ).fail( arguments ); return this; }, then: function( /* fnDone, fnFail, fnProgress */ ) { var fns = arguments; return jQuery.Deferred(function( newDefer ) { jQuery.each( tuples, function( i, tuple ) { var action = tuple[ 0 ], fn = fns[ i ]; // deferred[ done | fail | progress ] for forwarding actions to newDefer deferred[ tuple[1] ]( jQuery.isFunction( fn ) ? function() { var returned = fn.apply( this, arguments ); if ( returned && jQuery.isFunction( returned.promise ) ) { returned.promise() .done( newDefer.resolve ) .fail( newDefer.reject ) .progress( newDefer.notify ); } else { newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); } } : newDefer[ action ] ); }); fns = null; }).promise(); }, // Get a promise for this deferred // If obj is provided, the promise aspect is added to the object promise: function( obj ) { return obj != null ? jQuery.extend( obj, promise ) : promise; } }, deferred = {}; // Keep pipe for back-compat promise.pipe = promise.then; // Add list-specific methods jQuery.each( tuples, function( i, tuple ) { var list = tuple[ 2 ], stateString = tuple[ 3 ]; // promise[ done | fail | progress ] = list.add promise[ tuple[1] ] = list.add; // Handle state if ( stateString ) { list.add(function() { // state = [ resolved | rejected ] state = stateString; // [ reject_list | resolve_list ].disable; progress_list.lock }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); } // deferred[ resolve | reject | notify ] = list.fire deferred[ tuple[0] ] = list.fire; deferred[ tuple[0] + "With" ] = list.fireWith; }); // Make the deferred a promise promise.promise( deferred ); // Call given func if any if ( func ) { func.call( deferred, deferred ); } // All done! return deferred; }, // Deferred helper when: function( subordinate /* , ..., subordinateN */ ) { var i = 0, resolveValues = core_slice.call( arguments ), length = resolveValues.length, // the count of uncompleted subordinates remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, // the master Deferred. If resolveValues consist of only a single Deferred, just use that. deferred = remaining === 1 ? subordinate : jQuery.Deferred(), // Update function for both resolve and progress values updateFunc = function( i, contexts, values ) { return function( value ) { contexts[ i ] = this; values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; if( values === progressValues ) { deferred.notifyWith( contexts, values ); } else if ( !( --remaining ) ) { deferred.resolveWith( contexts, values ); } }; }, progressValues, progressContexts, resolveContexts; // add listeners to Deferred subordinates; treat others as resolved if ( length > 1 ) { progressValues = new Array( length ); progressContexts = new Array( length ); resolveContexts = new Array( length ); for ( ; i < length; i++ ) { if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { resolveValues[ i ].promise() .done( updateFunc( i, resolveContexts, resolveValues ) ) .fail( deferred.reject ) .progress( updateFunc( i, progressContexts, progressValues ) ); } else { --remaining; } } } // if we're not waiting on anything, resolve the master if ( !remaining ) { deferred.resolveWith( resolveContexts, resolveValues ); } return deferred.promise(); } }); jQuery.support = (function() { var support, all, a, select, opt, input, fragment, eventName, i, isSupported, clickFn, div = document.createElement("div"); // Preliminary tests div.setAttribute( "className", "t" ); div.innerHTML = "
a"; all = div.getElementsByTagName("*"); a = div.getElementsByTagName("a")[ 0 ]; a.style.cssText = "top:1px;float:left;opacity:.5"; // Can't get basic test support if ( !all || !all.length ) { return {}; } // First batch of supports tests select = document.createElement("select"); opt = select.appendChild( document.createElement("option") ); input = div.getElementsByTagName("input")[ 0 ]; support = { // IE strips leading whitespace when .innerHTML is used leadingWhitespace: ( div.firstChild.nodeType === 3 ), // Make sure that tbody elements aren't automatically inserted // IE will insert them into empty tables tbody: !div.getElementsByTagName("tbody").length, // Make sure that link elements get serialized correctly by innerHTML // This requires a wrapper element in IE htmlSerialize: !!div.getElementsByTagName("link").length, // Get the style information from getAttribute // (IE uses .cssText instead) style: /top/.test( a.getAttribute("style") ), // Make sure that URLs aren't manipulated // (IE normalizes it by default) hrefNormalized: ( a.getAttribute("href") === "/a" ), // Make sure that element opacity exists // (IE uses filter instead) // Use a regex to work around a WebKit issue. See #5145 opacity: /^0.5/.test( a.style.opacity ), // Verify style float existence // (IE uses styleFloat instead of cssFloat) cssFloat: !!a.style.cssFloat, // Make sure that if no value is specified for a checkbox // that it defaults to "on". // (WebKit defaults to "" instead) checkOn: ( input.value === "on" ), // Make sure that a selected-by-default option has a working selected property. // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) optSelected: opt.selected, // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) getSetAttribute: div.className !== "t", // Tests for enctype support on a form(#6743) enctype: !!document.createElement("form").enctype, // Makes sure cloning an html5 element does not cause problems // Where outerHTML is undefined, this still works html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode boxModel: ( document.compatMode === "CSS1Compat" ), // Will be defined later submitBubbles: true, changeBubbles: true, focusinBubbles: false, deleteExpando: true, noCloneEvent: true, inlineBlockNeedsLayout: false, shrinkWrapBlocks: false, reliableMarginRight: true, boxSizingReliable: true, pixelPosition: false }; // Make sure checked status is properly cloned input.checked = true; support.noCloneChecked = input.cloneNode( true ).checked; // Make sure that the options inside disabled selects aren't marked as disabled // (WebKit marks them as disabled) select.disabled = true; support.optDisabled = !opt.disabled; // Test to see if it's possible to delete an expando from an element // Fails in Internet Explorer try { delete div.test; } catch( e ) { support.deleteExpando = false; } if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { div.attachEvent( "onclick", clickFn = function() { // Cloning a node shouldn't copy over any // bound event handlers (IE does this) support.noCloneEvent = false; }); div.cloneNode( true ).fireEvent("onclick"); div.detachEvent( "onclick", clickFn ); } // Check if a radio maintains its value // after being appended to the DOM input = document.createElement("input"); input.value = "t"; input.setAttribute( "type", "radio" ); support.radioValue = input.value === "t"; input.setAttribute( "checked", "checked" ); // #11217 - WebKit loses check when the name is after the checked attribute input.setAttribute( "name", "t" ); div.appendChild( input ); fragment = document.createDocumentFragment(); fragment.appendChild( div.lastChild ); // WebKit doesn't clone checked state correctly in fragments support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; // Check if a disconnected checkbox will retain its checked // value of true after appended to the DOM (IE6/7) support.appendChecked = input.checked; fragment.removeChild( input ); fragment.appendChild( div ); // Technique from Juriy Zaytsev // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ // We only care about the case where non-standard event systems // are used, namely in IE. Short-circuiting here helps us to // avoid an eval call (in setAttribute) which can cause CSP // to go haywire. See: https://developer.mozilla.org/en/Security/CSP if ( div.attachEvent ) { for ( i in { submit: true, change: true, focusin: true }) { eventName = "on" + i; isSupported = ( eventName in div ); if ( !isSupported ) { div.setAttribute( eventName, "return;" ); isSupported = ( typeof div[ eventName ] === "function" ); } support[ i + "Bubbles" ] = isSupported; } } // Run tests that need a body at doc ready jQuery(function() { var container, div, tds, marginDiv, divReset = "padding:0;margin:0;border:0;display:block;overflow:hidden;", body = document.getElementsByTagName("body")[0]; if ( !body ) { // Return for frameset docs that don't have a body return; } container = document.createElement("div"); container.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px"; body.insertBefore( container, body.firstChild ); // Construct the test element div = document.createElement("div"); container.appendChild( div ); // Check if table cells still have offsetWidth/Height when they are set // to display:none and there are still other visible table cells in a // table row; if so, offsetWidth/Height are not reliable for use when // determining if an element has been hidden directly using // display:none (it is still safe to use offsets if a parent element is // hidden; don safety goggles and see bug #4512 for more information). // (only IE 8 fails this test) div.innerHTML = "
t
"; tds = div.getElementsByTagName("td"); tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; isSupported = ( tds[ 0 ].offsetHeight === 0 ); tds[ 0 ].style.display = ""; tds[ 1 ].style.display = "none"; // Check if empty table cells still have offsetWidth/Height // (IE <= 8 fail this test) support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); // Check box-sizing and margin behavior div.innerHTML = ""; div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; support.boxSizing = ( div.offsetWidth === 4 ); support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 ); // NOTE: To any future maintainer, we've window.getComputedStyle // because jsdom on node.js will break without it. if ( window.getComputedStyle ) { support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; // Check if div with explicit width and no margin-right incorrectly // gets computed margin-right based on width of container. For more // info see bug #3333 // Fails in WebKit before Feb 2011 nightlies // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right marginDiv = document.createElement("div"); marginDiv.style.cssText = div.style.cssText = divReset; marginDiv.style.marginRight = marginDiv.style.width = "0"; div.style.width = "1px"; div.appendChild( marginDiv ); support.reliableMarginRight = !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); } if ( typeof div.style.zoom !== "undefined" ) { // Check if natively block-level elements act like inline-block // elements when setting their display to 'inline' and giving // them layout // (IE < 8 does this) div.innerHTML = ""; div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); // Check if elements with layout shrink-wrap their children // (IE 6 does this) div.style.display = "block"; div.style.overflow = "visible"; div.innerHTML = "
"; div.firstChild.style.width = "5px"; support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); container.style.zoom = 1; } // Null elements to avoid leaks in IE body.removeChild( container ); container = div = tds = marginDiv = null; }); // Null elements to avoid leaks in IE fragment.removeChild( div ); all = a = select = opt = input = fragment = div = null; return support; })(); var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, rmultiDash = /([A-Z])/g; jQuery.extend({ cache: {}, deletedIds: [], // Remove at next major release (1.9/2.0) uuid: 0, // Unique for each copy of jQuery on the page // Non-digits removed to match rinlinejQuery expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), // The following elements throw uncatchable exceptions if you // attempt to add expando properties to them. noData: { "embed": true, // Ban all objects except for Flash (which handle expandos) "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", "applet": true }, hasData: function( elem ) { elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; return !!elem && !isEmptyDataObject( elem ); }, data: function( elem, name, data, pvt /* Internal Use Only */ ) { if ( !jQuery.acceptData( elem ) ) { return; } var thisCache, ret, internalKey = jQuery.expando, getByName = typeof name === "string", // We have to handle DOM nodes and JS objects differently because IE6-7 // can't GC object references properly across the DOM-JS boundary isNode = elem.nodeType, // Only DOM nodes need the global jQuery cache; JS object data is // attached directly to the object so GC can occur automatically cache = isNode ? jQuery.cache : elem, // Only defining an ID for JS objects if its cache already exists allows // the code to shortcut on the same path as a DOM node with no cache id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; // Avoid doing any more work than we need to when trying to get data on an // object that has no data at all if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) { return; } if ( !id ) { // Only DOM nodes need a new unique ID for each element since their data // ends up in the global cache if ( isNode ) { elem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++; } else { id = internalKey; } } if ( !cache[ id ] ) { cache[ id ] = {}; // Avoids exposing jQuery metadata on plain JS objects when the object // is serialized using JSON.stringify if ( !isNode ) { cache[ id ].toJSON = jQuery.noop; } } // An object can be passed to jQuery.data instead of a key/value pair; this gets // shallow copied over onto the existing cache if ( typeof name === "object" || typeof name === "function" ) { if ( pvt ) { cache[ id ] = jQuery.extend( cache[ id ], name ); } else { cache[ id ].data = jQuery.extend( cache[ id ].data, name ); } } thisCache = cache[ id ]; // jQuery data() is stored in a separate object inside the object's internal data // cache in order to avoid key collisions between internal data and user-defined // data. if ( !pvt ) { if ( !thisCache.data ) { thisCache.data = {}; } thisCache = thisCache.data; } if ( data !== undefined ) { thisCache[ jQuery.camelCase( name ) ] = data; } // Check for both converted-to-camel and non-converted data property names // If a data property was specified if ( getByName ) { // First Try to find as-is property data ret = thisCache[ name ]; // Test for null|undefined property data if ( ret == null ) { // Try to find the camelCased property ret = thisCache[ jQuery.camelCase( name ) ]; } } else { ret = thisCache; } return ret; }, removeData: function( elem, name, pvt /* Internal Use Only */ ) { if ( !jQuery.acceptData( elem ) ) { return; } var thisCache, i, l, isNode = elem.nodeType, // See jQuery.data for more information cache = isNode ? jQuery.cache : elem, id = isNode ? elem[ jQuery.expando ] : jQuery.expando; // If there is already no cache entry for this object, there is no // purpose in continuing if ( !cache[ id ] ) { return; } if ( name ) { thisCache = pvt ? cache[ id ] : cache[ id ].data; if ( thisCache ) { // Support array or space separated string names for data keys if ( !jQuery.isArray( name ) ) { // try the string as a key before any manipulation if ( name in thisCache ) { name = [ name ]; } else { // split the camel cased version by spaces unless a key with the spaces exists name = jQuery.camelCase( name ); if ( name in thisCache ) { name = [ name ]; } else { name = name.split(" "); } } } for ( i = 0, l = name.length; i < l; i++ ) { delete thisCache[ name[i] ]; } // If there is no data left in the cache, we want to continue // and let the cache object itself get destroyed if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { return; } } } // See jQuery.data for more information if ( !pvt ) { delete cache[ id ].data; // Don't destroy the parent cache unless the internal data object // had been the only thing left in it if ( !isEmptyDataObject( cache[ id ] ) ) { return; } } // Destroy the cache if ( isNode ) { jQuery.cleanData( [ elem ], true ); // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) } else if ( jQuery.support.deleteExpando || cache != cache.window ) { delete cache[ id ]; // When all else fails, null } else { cache[ id ] = null; } }, // For internal use only. _data: function( elem, name, data ) { return jQuery.data( elem, name, data, true ); }, // A method for determining if a DOM node can handle the data expando acceptData: function( elem ) { var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; // nodes accept data unless otherwise specified; rejection can be conditional return !noData || noData !== true && elem.getAttribute("classid") === noData; } }); jQuery.fn.extend({ data: function( key, value ) { var parts, part, attr, name, l, elem = this[0], i = 0, data = null; // Gets all values if ( key === undefined ) { if ( this.length ) { data = jQuery.data( elem ); if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { attr = elem.attributes; for ( l = attr.length; i < l; i++ ) { name = attr[i].name; if ( !name.indexOf( "data-" ) ) { name = jQuery.camelCase( name.substring(5) ); dataAttr( elem, name, data[ name ] ); } } jQuery._data( elem, "parsedAttrs", true ); } } return data; } // Sets multiple values if ( typeof key === "object" ) { return this.each(function() { jQuery.data( this, key ); }); } parts = key.split( ".", 2 ); parts[1] = parts[1] ? "." + parts[1] : ""; part = parts[1] + "!"; return jQuery.access( this, function( value ) { if ( value === undefined ) { data = this.triggerHandler( "getData" + part, [ parts[0] ] ); // Try to fetch any internally stored data first if ( data === undefined && elem ) { data = jQuery.data( elem, key ); data = dataAttr( elem, key, data ); } return data === undefined && parts[1] ? this.data( parts[0] ) : data; } parts[1] = value; this.each(function() { var self = jQuery( this ); self.triggerHandler( "setData" + part, parts ); jQuery.data( this, key, value ); self.triggerHandler( "changeData" + part, parts ); }); }, null, value, arguments.length > 1, null, false ); }, removeData: function( key ) { return this.each(function() { jQuery.removeData( this, key ); }); } }); function dataAttr( elem, key, data ) { // If nothing was found internally, try to fetch any // data from the HTML5 data-* attribute if ( data === undefined && elem.nodeType === 1 ) { var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); data = elem.getAttribute( name ); if ( typeof data === "string" ) { try { data = data === "true" ? true : data === "false" ? false : data === "null" ? null : // Only convert to a number if it doesn't change the string +data + "" === data ? +data : rbrace.test( data ) ? jQuery.parseJSON( data ) : data; } catch( e ) {} // Make sure we set the data so it isn't changed later jQuery.data( elem, key, data ); } else { data = undefined; } } return data; } // checks a cache object for emptiness function isEmptyDataObject( obj ) { var name; for ( name in obj ) { // if the public data object is empty, the private is still empty if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { continue; } if ( name !== "toJSON" ) { return false; } } return true; } jQuery.extend({ queue: function( elem, type, data ) { var queue; if ( elem ) { type = ( type || "fx" ) + "queue"; queue = jQuery._data( elem, type ); // Speed up dequeue by getting out quickly if this is just a lookup if ( data ) { if ( !queue || jQuery.isArray(data) ) { queue = jQuery._data( elem, type, jQuery.makeArray(data) ); } else { queue.push( data ); } } return queue || []; } }, dequeue: function( elem, type ) { type = type || "fx"; var queue = jQuery.queue( elem, type ), startLength = queue.length, fn = queue.shift(), hooks = jQuery._queueHooks( elem, type ), next = function() { jQuery.dequeue( elem, type ); }; // If the fx queue is dequeued, always remove the progress sentinel if ( fn === "inprogress" ) { fn = queue.shift(); startLength--; } if ( fn ) { // Add a progress sentinel to prevent the fx queue from being // automatically dequeued if ( type === "fx" ) { queue.unshift( "inprogress" ); } // clear up the last queue stop function delete hooks.stop; fn.call( elem, next, hooks ); } if ( !startLength && hooks ) { hooks.empty.fire(); } }, // not intended for public consumption - generates a queueHooks object, or returns the current one _queueHooks: function( elem, type ) { var key = type + "queueHooks"; return jQuery._data( elem, key ) || jQuery._data( elem, key, { empty: jQuery.Callbacks("once memory").add(function() { jQuery.removeData( elem, type + "queue", true ); jQuery.removeData( elem, key, true ); }) }); } }); jQuery.fn.extend({ queue: function( type, data ) { var setter = 2; if ( typeof type !== "string" ) { data = type; type = "fx"; setter--; } if ( arguments.length < setter ) { return jQuery.queue( this[0], type ); } return data === undefined ? this : this.each(function() { var queue = jQuery.queue( this, type, data ); // ensure a hooks for this queue jQuery._queueHooks( this, type ); if ( type === "fx" && queue[0] !== "inprogress" ) { jQuery.dequeue( this, type ); } }); }, dequeue: function( type ) { return this.each(function() { jQuery.dequeue( this, type ); }); }, // Based off of the plugin by Clint Helfers, with permission. // http://blindsignals.com/index.php/2009/07/jquery-delay/ delay: function( time, type ) { time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; type = type || "fx"; return this.queue( type, function( next, hooks ) { var timeout = setTimeout( next, time ); hooks.stop = function() { clearTimeout( timeout ); }; }); }, clearQueue: function( type ) { return this.queue( type || "fx", [] ); }, // Get a promise resolved when queues of a certain type // are emptied (fx is the type by default) promise: function( type, obj ) { var tmp, count = 1, defer = jQuery.Deferred(), elements = this, i = this.length, resolve = function() { if ( !( --count ) ) { defer.resolveWith( elements, [ elements ] ); } }; if ( typeof type !== "string" ) { obj = type; type = undefined; } type = type || "fx"; while( i-- ) { tmp = jQuery._data( elements[ i ], type + "queueHooks" ); if ( tmp && tmp.empty ) { count++; tmp.empty.add( resolve ); } } resolve(); return defer.promise( obj ); } }); var nodeHook, boolHook, fixSpecified, rclass = /[\t\r\n]/g, rreturn = /\r/g, rtype = /^(?:button|input)$/i, rfocusable = /^(?:button|input|object|select|textarea)$/i, rclickable = /^a(?:rea|)$/i, rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, getSetAttribute = jQuery.support.getSetAttribute; jQuery.fn.extend({ attr: function( name, value ) { return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); }, removeAttr: function( name ) { return this.each(function() { jQuery.removeAttr( this, name ); }); }, prop: function( name, value ) { return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); }, removeProp: function( name ) { name = jQuery.propFix[ name ] || name; return this.each(function() { // try/catch handles cases where IE balks (such as removing a property on window) try { this[ name ] = undefined; delete this[ name ]; } catch( e ) {} }); }, addClass: function( value ) { var classNames, i, l, elem, setClass, c, cl; if ( jQuery.isFunction( value ) ) { return this.each(function( j ) { jQuery( this ).addClass( value.call(this, j, this.className) ); }); } if ( value && typeof value === "string" ) { classNames = value.split( core_rspace ); for ( i = 0, l = this.length; i < l; i++ ) { elem = this[ i ]; if ( elem.nodeType === 1 ) { if ( !elem.className && classNames.length === 1 ) { elem.className = value; } else { setClass = " " + elem.className + " "; for ( c = 0, cl = classNames.length; c < cl; c++ ) { if ( setClass.indexOf( " " + classNames[ c ] + " " ) < 0 ) { setClass += classNames[ c ] + " "; } } elem.className = jQuery.trim( setClass ); } } } } return this; }, removeClass: function( value ) { var removes, className, elem, c, cl, i, l; if ( jQuery.isFunction( value ) ) { return this.each(function( j ) { jQuery( this ).removeClass( value.call(this, j, this.className) ); }); } if ( (value && typeof value === "string") || value === undefined ) { removes = ( value || "" ).split( core_rspace ); for ( i = 0, l = this.length; i < l; i++ ) { elem = this[ i ]; if ( elem.nodeType === 1 && elem.className ) { className = (" " + elem.className + " ").replace( rclass, " " ); // loop over each item in the removal list for ( c = 0, cl = removes.length; c < cl; c++ ) { // Remove until there is nothing to remove, while ( className.indexOf(" " + removes[ c ] + " ") >= 0 ) { className = className.replace( " " + removes[ c ] + " " , " " ); } } elem.className = value ? jQuery.trim( className ) : ""; } } } return this; }, toggleClass: function( value, stateVal ) { var type = typeof value, isBool = typeof stateVal === "boolean"; if ( jQuery.isFunction( value ) ) { return this.each(function( i ) { jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); }); } return this.each(function() { if ( type === "string" ) { // toggle individual class names var className, i = 0, self = jQuery( this ), state = stateVal, classNames = value.split( core_rspace ); while ( (className = classNames[ i++ ]) ) { // check each className given, space separated list state = isBool ? state : !self.hasClass( className ); self[ state ? "addClass" : "removeClass" ]( className ); } } else if ( type === "undefined" || type === "boolean" ) { if ( this.className ) { // store className if set jQuery._data( this, "__className__", this.className ); } // toggle whole className this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; } }); }, hasClass: function( selector ) { var className = " " + selector + " ", i = 0, l = this.length; for ( ; i < l; i++ ) { if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { return true; } } return false; }, val: function( value ) { var hooks, ret, isFunction, elem = this[0]; if ( !arguments.length ) { if ( elem ) { hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { return ret; } ret = elem.value; return typeof ret === "string" ? // handle most common string cases ret.replace(rreturn, "") : // handle cases where value is null/undef or number ret == null ? "" : ret; } return; } isFunction = jQuery.isFunction( value ); return this.each(function( i ) { var val, self = jQuery(this); if ( this.nodeType !== 1 ) { return; } if ( isFunction ) { val = value.call( this, i, self.val() ); } else { val = value; } // Treat null/undefined as ""; convert numbers to string if ( val == null ) { val = ""; } else if ( typeof val === "number" ) { val += ""; } else if ( jQuery.isArray( val ) ) { val = jQuery.map(val, function ( value ) { return value == null ? "" : value + ""; }); } hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; // If set returns undefined, fall back to normal setting if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { this.value = val; } }); } }); jQuery.extend({ valHooks: { option: { get: function( elem ) { // attributes.value is undefined in Blackberry 4.7 but // uses .value. See #6932 var val = elem.attributes.value; return !val || val.specified ? elem.value : elem.text; } }, select: { get: function( elem ) { var value, i, max, option, index = elem.selectedIndex, values = [], options = elem.options, one = elem.type === "select-one"; // Nothing was selected if ( index < 0 ) { return null; } // Loop through all the selected options i = one ? index : 0; max = one ? index + 1 : options.length; for ( ; i < max; i++ ) { option = options[ i ]; // Don't return options that are disabled or in a disabled optgroup if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { // Get the specific value for the option value = jQuery( option ).val(); // We don't need an array for one selects if ( one ) { return value; } // Multi-Selects return an array values.push( value ); } } // Fixes Bug #2551 -- select.val() broken in IE after form.reset() if ( one && !values.length && options.length ) { return jQuery( options[ index ] ).val(); } return values; }, set: function( elem, value ) { var values = jQuery.makeArray( value ); jQuery(elem).find("option").each(function() { this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; }); if ( !values.length ) { elem.selectedIndex = -1; } return values; } } }, // Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9 attrFn: {}, attr: function( elem, name, value, pass ) { var ret, hooks, notxml, nType = elem.nodeType; // don't get/set attributes on text, comment and attribute nodes if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { return; } if ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) { return jQuery( elem )[ name ]( value ); } // Fallback to prop when attributes are not supported if ( typeof elem.getAttribute === "undefined" ) { return jQuery.prop( elem, name, value ); } notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); // All attributes are lowercase // Grab necessary hook if one is defined if ( notxml ) { name = name.toLowerCase(); hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); } if ( value !== undefined ) { if ( value === null ) { jQuery.removeAttr( elem, name ); return; } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { return ret; } else { elem.setAttribute( name, value + "" ); return value; } } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { return ret; } else { ret = elem.getAttribute( name ); // Non-existent attributes return null, we normalize to undefined return ret === null ? undefined : ret; } }, removeAttr: function( elem, value ) { var propName, attrNames, name, isBool, i = 0; if ( value && elem.nodeType === 1 ) { attrNames = value.split( core_rspace ); for ( ; i < attrNames.length; i++ ) { name = attrNames[ i ]; if ( name ) { propName = jQuery.propFix[ name ] || name; isBool = rboolean.test( name ); // See #9699 for explanation of this approach (setting first, then removal) // Do not do this for boolean attributes (see #10870) if ( !isBool ) { jQuery.attr( elem, name, "" ); } elem.removeAttribute( getSetAttribute ? name : propName ); // Set corresponding property to false for boolean attributes if ( isBool && propName in elem ) { elem[ propName ] = false; } } } } }, attrHooks: { type: { set: function( elem, value ) { // We can't allow the type property to be changed (since it causes problems in IE) if ( rtype.test( elem.nodeName ) && elem.parentNode ) { jQuery.error( "type property can't be changed" ); } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { // Setting the type on a radio button after the value resets the value in IE6-9 // Reset value to it's default in case type is set after value // This is for element creation var val = elem.value; elem.setAttribute( "type", value ); if ( val ) { elem.value = val; } return value; } } }, // Use the value property for back compat // Use the nodeHook for button elements in IE6/7 (#1954) value: { get: function( elem, name ) { if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { return nodeHook.get( elem, name ); } return name in elem ? elem.value : null; }, set: function( elem, value, name ) { if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { return nodeHook.set( elem, value, name ); } // Does not return so that setAttribute is also used elem.value = value; } } }, propFix: { tabindex: "tabIndex", readonly: "readOnly", "for": "htmlFor", "class": "className", maxlength: "maxLength", cellspacing: "cellSpacing", cellpadding: "cellPadding", rowspan: "rowSpan", colspan: "colSpan", usemap: "useMap", frameborder: "frameBorder", contenteditable: "contentEditable" }, prop: function( elem, name, value ) { var ret, hooks, notxml, nType = elem.nodeType; // don't get/set properties on text, comment and attribute nodes if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { return; } notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); if ( notxml ) { // Fix name and attach hooks name = jQuery.propFix[ name ] || name; hooks = jQuery.propHooks[ name ]; } if ( value !== undefined ) { if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { return ret; } else { return ( elem[ name ] = value ); } } else { if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { return ret; } else { return elem[ name ]; } } }, propHooks: { tabIndex: { get: function( elem ) { // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ var attributeNode = elem.getAttributeNode("tabindex"); return attributeNode && attributeNode.specified ? parseInt( attributeNode.value, 10 ) : rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? 0 : undefined; } } } }); // Hook for boolean attributes boolHook = { get: function( elem, name ) { // Align boolean attributes with corresponding properties // Fall back to attribute presence where some booleans are not supported var attrNode, property = jQuery.prop( elem, name ); return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? name.toLowerCase() : undefined; }, set: function( elem, value, name ) { var propName; if ( value === false ) { // Remove boolean attributes when set to false jQuery.removeAttr( elem, name ); } else { // value is true since we know at this point it's type boolean and not false // Set boolean attributes to the same name and set the DOM property propName = jQuery.propFix[ name ] || name; if ( propName in elem ) { // Only set the IDL specifically if it already exists on the element elem[ propName ] = true; } elem.setAttribute( name, name.toLowerCase() ); } return name; } }; // IE6/7 do not support getting/setting some attributes with get/setAttribute if ( !getSetAttribute ) { fixSpecified = { name: true, id: true, coords: true }; // Use this for any attribute in IE6/7 // This fixes almost every IE6/7 issue nodeHook = jQuery.valHooks.button = { get: function( elem, name ) { var ret; ret = elem.getAttributeNode( name ); return ret && ( fixSpecified[ name ] ? ret.value !== "" : ret.specified ) ? ret.value : undefined; }, set: function( elem, value, name ) { // Set the existing or create a new attribute node var ret = elem.getAttributeNode( name ); if ( !ret ) { ret = document.createAttribute( name ); elem.setAttributeNode( ret ); } return ( ret.value = value + "" ); } }; // Set width and height to auto instead of 0 on empty string( Bug #8150 ) // This is for removals jQuery.each([ "width", "height" ], function( i, name ) { jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { set: function( elem, value ) { if ( value === "" ) { elem.setAttribute( name, "auto" ); return value; } } }); }); // Set contenteditable to false on removals(#10429) // Setting to empty string throws an error as an invalid value jQuery.attrHooks.contenteditable = { get: nodeHook.get, set: function( elem, value, name ) { if ( value === "" ) { value = "false"; } nodeHook.set( elem, value, name ); } }; } // Some attributes require a special call on IE if ( !jQuery.support.hrefNormalized ) { jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { get: function( elem ) { var ret = elem.getAttribute( name, 2 ); return ret === null ? undefined : ret; } }); }); } if ( !jQuery.support.style ) { jQuery.attrHooks.style = { get: function( elem ) { // Return undefined in the case of empty string // Normalize to lowercase since IE uppercases css property names return elem.style.cssText.toLowerCase() || undefined; }, set: function( elem, value ) { return ( elem.style.cssText = value + "" ); } }; } // Safari mis-reports the default selected property of an option // Accessing the parent's selectedIndex property fixes it if ( !jQuery.support.optSelected ) { jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { get: function( elem ) { var parent = elem.parentNode; if ( parent ) { parent.selectedIndex; // Make sure that it also works with optgroups, see #5701 if ( parent.parentNode ) { parent.parentNode.selectedIndex; } } return null; } }); } // IE6/7 call enctype encoding if ( !jQuery.support.enctype ) { jQuery.propFix.enctype = "encoding"; } // Radios and checkboxes getter/setter if ( !jQuery.support.checkOn ) { jQuery.each([ "radio", "checkbox" ], function() { jQuery.valHooks[ this ] = { get: function( elem ) { // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified return elem.getAttribute("value") === null ? "on" : elem.value; } }; }); } jQuery.each([ "radio", "checkbox" ], function() { jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { set: function( elem, value ) { if ( jQuery.isArray( value ) ) { return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); } } }); }); var rformElems = /^(?:textarea|input|select)$/i, rtypenamespace = /^([^\.]*|)(?:\.(.+)|)$/, rhoverHack = /(?:^|\s)hover(\.\S+|)\b/, rkeyEvent = /^key/, rmouseEvent = /^(?:mouse|contextmenu)|click/, rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, hoverHack = function( events ) { return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); }; /* * Helper functions for managing events -- not part of the public interface. * Props to Dean Edwards' addEvent library for many of the ideas. */ jQuery.event = { add: function( elem, types, handler, data, selector ) { var elemData, eventHandle, events, t, tns, type, namespaces, handleObj, handleObjIn, handlers, special; // Don't attach events to noData or text/comment nodes (allow plain objects tho) if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { return; } // Caller can pass in an object of custom data in lieu of the handler if ( handler.handler ) { handleObjIn = handler; handler = handleObjIn.handler; selector = handleObjIn.selector; } // Make sure that the handler has a unique ID, used to find/remove it later if ( !handler.guid ) { handler.guid = jQuery.guid++; } // Init the element's event structure and main handler, if this is the first events = elemData.events; if ( !events ) { elemData.events = events = {}; } eventHandle = elemData.handle; if ( !eventHandle ) { elemData.handle = eventHandle = function( e ) { // Discard the second event of a jQuery.event.trigger() and // when an event is called after a page has unloaded return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : undefined; }; // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events eventHandle.elem = elem; } // Handle multiple events separated by a space // jQuery(...).bind("mouseover mouseout", fn); types = jQuery.trim( hoverHack(types) ).split( " " ); for ( t = 0; t < types.length; t++ ) { tns = rtypenamespace.exec( types[t] ) || []; type = tns[1]; namespaces = ( tns[2] || "" ).split( "." ).sort(); // If event changes its type, use the special event handlers for the changed type special = jQuery.event.special[ type ] || {}; // If selector defined, determine special event api type, otherwise given type type = ( selector ? special.delegateType : special.bindType ) || type; // Update special based on newly reset type special = jQuery.event.special[ type ] || {}; // handleObj is passed to all event handlers handleObj = jQuery.extend({ type: type, origType: tns[1], data: data, handler: handler, guid: handler.guid, selector: selector, needsContext: selector && jQuery.expr.match.needsContext.test( selector ), namespace: namespaces.join(".") }, handleObjIn ); // Init the event handler queue if we're the first handlers = events[ type ]; if ( !handlers ) { handlers = events[ type ] = []; handlers.delegateCount = 0; // Only use addEventListener/attachEvent if the special events handler returns false if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { // Bind the global event handler to the element if ( elem.addEventListener ) { elem.addEventListener( type, eventHandle, false ); } else if ( elem.attachEvent ) { elem.attachEvent( "on" + type, eventHandle ); } } } if ( special.add ) { special.add.call( elem, handleObj ); if ( !handleObj.handler.guid ) { handleObj.handler.guid = handler.guid; } } // Add to the element's handler list, delegates in front if ( selector ) { handlers.splice( handlers.delegateCount++, 0, handleObj ); } else { handlers.push( handleObj ); } // Keep track of which events have ever been used, for event optimization jQuery.event.global[ type ] = true; } // Nullify elem to prevent memory leaks in IE elem = null; }, global: {}, // Detach an event or set of events from an element remove: function( elem, types, handler, selector, mappedTypes ) { var t, tns, type, origType, namespaces, origCount, j, events, special, eventType, handleObj, elemData = jQuery.hasData( elem ) && jQuery._data( elem ); if ( !elemData || !(events = elemData.events) ) { return; } // Once for each type.namespace in types; type may be omitted types = jQuery.trim( hoverHack( types || "" ) ).split(" "); for ( t = 0; t < types.length; t++ ) { tns = rtypenamespace.exec( types[t] ) || []; type = origType = tns[1]; namespaces = tns[2]; // Unbind all events (on this namespace, if provided) for the element if ( !type ) { for ( type in events ) { jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); } continue; } special = jQuery.event.special[ type ] || {}; type = ( selector? special.delegateType : special.bindType ) || type; eventType = events[ type ] || []; origCount = eventType.length; namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.|)") + "(\\.|$)") : null; // Remove matching events for ( j = 0; j < eventType.length; j++ ) { handleObj = eventType[ j ]; if ( ( mappedTypes || origType === handleObj.origType ) && ( !handler || handler.guid === handleObj.guid ) && ( !namespaces || namespaces.test( handleObj.namespace ) ) && ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { eventType.splice( j--, 1 ); if ( handleObj.selector ) { eventType.delegateCount--; } if ( special.remove ) { special.remove.call( elem, handleObj ); } } } // Remove generic event handler if we removed something and no more handlers exist // (avoids potential for endless recursion during removal of special event handlers) if ( eventType.length === 0 && origCount !== eventType.length ) { if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { jQuery.removeEvent( elem, type, elemData.handle ); } delete events[ type ]; } } // Remove the expando if it's no longer used if ( jQuery.isEmptyObject( events ) ) { delete elemData.handle; // removeData also checks for emptiness and clears the expando if empty // so use it instead of delete jQuery.removeData( elem, "events", true ); } }, // Events that are safe to short-circuit if no handlers are attached. // Native DOM events should not be added, they may have inline handlers. customEvent: { "getData": true, "setData": true, "changeData": true }, trigger: function( event, data, elem, onlyHandlers ) { // Don't do events on text and comment nodes if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { return; } // Event object or event type var cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType, type = event.type || event, namespaces = []; // focus/blur morphs to focusin/out; ensure we're not firing them right now if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { return; } if ( type.indexOf( "!" ) >= 0 ) { // Exclusive events trigger only for the exact event (no namespaces) type = type.slice(0, -1); exclusive = true; } if ( type.indexOf( "." ) >= 0 ) { // Namespaced trigger; create a regexp to match event type in handle() namespaces = type.split("."); type = namespaces.shift(); namespaces.sort(); } if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { // No jQuery handlers for this event type, and it can't have inline handlers return; } // Caller can pass in an Event, Object, or just an event type string event = typeof event === "object" ? // jQuery.Event object event[ jQuery.expando ] ? event : // Object literal new jQuery.Event( type, event ) : // Just the event type (string) new jQuery.Event( type ); event.type = type; event.isTrigger = true; event.exclusive = exclusive; event.namespace = namespaces.join( "." ); event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null; ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; // Handle a global trigger if ( !elem ) { // TODO: Stop taunting the data cache; remove global events and always attach to document cache = jQuery.cache; for ( i in cache ) { if ( cache[ i ].events && cache[ i ].events[ type ] ) { jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); } } return; } // Clean up the event in case it is being reused event.result = undefined; if ( !event.target ) { event.target = elem; } // Clone any incoming data and prepend the event, creating the handler arg list data = data != null ? jQuery.makeArray( data ) : []; data.unshift( event ); // Allow special events to draw outside the lines special = jQuery.event.special[ type ] || {}; if ( special.trigger && special.trigger.apply( elem, data ) === false ) { return; } // Determine event propagation path in advance, per W3C events spec (#9951) // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) eventPath = [[ elem, special.bindType || type ]]; if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { bubbleType = special.delegateType || type; cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; for ( old = elem; cur; cur = cur.parentNode ) { eventPath.push([ cur, bubbleType ]); old = cur; } // Only add window if we got to document (e.g., not plain obj or detached DOM) if ( old === (elem.ownerDocument || document) ) { eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); } } // Fire handlers on the event path for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { cur = eventPath[i][0]; event.type = eventPath[i][1]; handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); if ( handle ) { handle.apply( cur, data ); } // Note that this is a bare JS function and not a jQuery handler handle = ontype && cur[ ontype ]; if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { event.preventDefault(); } } event.type = type; // If nobody prevented the default action, do it now if ( !onlyHandlers && !event.isDefaultPrevented() ) { if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { // Call a native DOM method on the target with the same name name as the event. // Can't use an .isFunction() check here because IE6/7 fails that test. // Don't do default actions on window, that's where global variables be (#6170) // IE<9 dies on focus/blur to hidden element (#1486) if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { // Don't re-trigger an onFOO event when we call its FOO() method old = elem[ ontype ]; if ( old ) { elem[ ontype ] = null; } // Prevent re-triggering of the same event, since we already bubbled it above jQuery.event.triggered = type; elem[ type ](); jQuery.event.triggered = undefined; if ( old ) { elem[ ontype ] = old; } } } } return event.result; }, dispatch: function( event ) { // Make a writable jQuery.Event from the native event object event = jQuery.event.fix( event || window.event ); var i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related, handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), delegateCount = handlers.delegateCount, args = core_slice.call( arguments ), run_all = !event.exclusive && !event.namespace, special = jQuery.event.special[ event.type ] || {}, handlerQueue = []; // Use the fix-ed jQuery.Event rather than the (read-only) native event args[0] = event; event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { return; } // Determine handlers that should run if there are delegated events // Avoid non-left-click bubbling in Firefox (#3861) if ( delegateCount && !(event.button && event.type === "click") ) { for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { // Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764) if ( cur.disabled !== true || event.type !== "click" ) { selMatch = {}; matches = []; for ( i = 0; i < delegateCount; i++ ) { handleObj = handlers[ i ]; sel = handleObj.selector; if ( selMatch[ sel ] === undefined ) { selMatch[ sel ] = handleObj.needsContext ? jQuery( sel, this ).index( cur ) >= 0 : jQuery.find( sel, this, null, [ cur ] ).length; } if ( selMatch[ sel ] ) { matches.push( handleObj ); } } if ( matches.length ) { handlerQueue.push({ elem: cur, matches: matches }); } } } } // Add the remaining (directly-bound) handlers if ( handlers.length > delegateCount ) { handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); } // Run delegates first; they may want to stop propagation beneath us for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { matched = handlerQueue[ i ]; event.currentTarget = matched.elem; for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { handleObj = matched.matches[ j ]; // Triggered event must either 1) be non-exclusive and have no namespace, or // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { event.data = handleObj.data; event.handleObj = handleObj; ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) .apply( matched.elem, args ); if ( ret !== undefined ) { event.result = ret; if ( ret === false ) { event.preventDefault(); event.stopPropagation(); } } } } } // Call the postDispatch hook for the mapped type if ( special.postDispatch ) { special.postDispatch.call( this, event ); } return event.result; }, // Includes some event props shared by KeyEvent and MouseEvent // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), fixHooks: {}, keyHooks: { props: "char charCode key keyCode".split(" "), filter: function( event, original ) { // Add which for key events if ( event.which == null ) { event.which = original.charCode != null ? original.charCode : original.keyCode; } return event; } }, mouseHooks: { props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), filter: function( event, original ) { var eventDoc, doc, body, button = original.button, fromElement = original.fromElement; // Calculate pageX/Y if missing and clientX/Y available if ( event.pageX == null && original.clientX != null ) { eventDoc = event.target.ownerDocument || document; doc = eventDoc.documentElement; body = eventDoc.body; event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); } // Add relatedTarget, if necessary if ( !event.relatedTarget && fromElement ) { event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; } // Add which for click: 1 === left; 2 === middle; 3 === right // Note: button is not normalized, so don't use it if ( !event.which && button !== undefined ) { event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); } return event; } }, fix: function( event ) { if ( event[ jQuery.expando ] ) { return event; } // Create a writable copy of the event object and normalize some properties var i, prop, originalEvent = event, fixHook = jQuery.event.fixHooks[ event.type ] || {}, copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; event = jQuery.Event( originalEvent ); for ( i = copy.length; i; ) { prop = copy[ --i ]; event[ prop ] = originalEvent[ prop ]; } // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) if ( !event.target ) { event.target = originalEvent.srcElement || document; } // Target should not be a text node (#504, Safari) if ( event.target.nodeType === 3 ) { event.target = event.target.parentNode; } // For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8) event.metaKey = !!event.metaKey; return fixHook.filter? fixHook.filter( event, originalEvent ) : event; }, special: { load: { // Prevent triggered image.load events from bubbling to window.load noBubble: true }, focus: { delegateType: "focusin" }, blur: { delegateType: "focusout" }, beforeunload: { setup: function( data, namespaces, eventHandle ) { // We only want to do this special case on windows if ( jQuery.isWindow( this ) ) { this.onbeforeunload = eventHandle; } }, teardown: function( namespaces, eventHandle ) { if ( this.onbeforeunload === eventHandle ) { this.onbeforeunload = null; } } } }, simulate: function( type, elem, event, bubble ) { // Piggyback on a donor event to simulate a different one. // Fake originalEvent to avoid donor's stopPropagation, but if the // simulated event prevents default then we do the same on the donor. var e = jQuery.extend( new jQuery.Event(), event, { type: type, isSimulated: true, originalEvent: {} } ); if ( bubble ) { jQuery.event.trigger( e, null, elem ); } else { jQuery.event.dispatch.call( elem, e ); } if ( e.isDefaultPrevented() ) { event.preventDefault(); } } }; // Some plugins are using, but it's undocumented/deprecated and will be removed. // The 1.7 special event interface should provide all the hooks needed now. jQuery.event.handle = jQuery.event.dispatch; jQuery.removeEvent = document.removeEventListener ? function( elem, type, handle ) { if ( elem.removeEventListener ) { elem.removeEventListener( type, handle, false ); } } : function( elem, type, handle ) { var name = "on" + type; if ( elem.detachEvent ) { // #8545, #7054, preventing memory leaks for custom events in IE6-8 – // detachEvent needed property on element, by name of that event, to properly expose it to GC if ( typeof elem[ name ] === "undefined" ) { elem[ name ] = null; } elem.detachEvent( name, handle ); } }; jQuery.Event = function( src, props ) { // Allow instantiation without the 'new' keyword if ( !(this instanceof jQuery.Event) ) { return new jQuery.Event( src, props ); } // Event object if ( src && src.type ) { this.originalEvent = src; this.type = src.type; // Events bubbling up the document may have been marked as prevented // by a handler lower down the tree; reflect the correct value. this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; // Event type } else { this.type = src; } // Put explicitly provided properties onto the event object if ( props ) { jQuery.extend( this, props ); } // Create a timestamp if incoming event doesn't have one this.timeStamp = src && src.timeStamp || jQuery.now(); // Mark it as fixed this[ jQuery.expando ] = true; }; function returnFalse() { return false; } function returnTrue() { return true; } // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html jQuery.Event.prototype = { preventDefault: function() { this.isDefaultPrevented = returnTrue; var e = this.originalEvent; if ( !e ) { return; } // if preventDefault exists run it on the original event if ( e.preventDefault ) { e.preventDefault(); // otherwise set the returnValue property of the original event to false (IE) } else { e.returnValue = false; } }, stopPropagation: function() { this.isPropagationStopped = returnTrue; var e = this.originalEvent; if ( !e ) { return; } // if stopPropagation exists run it on the original event if ( e.stopPropagation ) { e.stopPropagation(); } // otherwise set the cancelBubble property of the original event to true (IE) e.cancelBubble = true; }, stopImmediatePropagation: function() { this.isImmediatePropagationStopped = returnTrue; this.stopPropagation(); }, isDefaultPrevented: returnFalse, isPropagationStopped: returnFalse, isImmediatePropagationStopped: returnFalse }; // Create mouseenter/leave events using mouseover/out and event-time checks jQuery.each({ mouseenter: "mouseover", mouseleave: "mouseout" }, function( orig, fix ) { jQuery.event.special[ orig ] = { delegateType: fix, bindType: fix, handle: function( event ) { var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj, selector = handleObj.selector; // For mousenter/leave call the handler if related is outside the target. // NB: No relatedTarget if the mouse left/entered the browser window if ( !related || (related !== target && !jQuery.contains( target, related )) ) { event.type = handleObj.origType; ret = handleObj.handler.apply( this, arguments ); event.type = fix; } return ret; } }; }); // IE submit delegation if ( !jQuery.support.submitBubbles ) { jQuery.event.special.submit = { setup: function() { // Only need this for delegated form submit events if ( jQuery.nodeName( this, "form" ) ) { return false; } // Lazy-add a submit handler when a descendant form may potentially be submitted jQuery.event.add( this, "click._submit keypress._submit", function( e ) { // Node name check avoids a VML-related crash in IE (#9807) var elem = e.target, form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; if ( form && !jQuery._data( form, "_submit_attached" ) ) { jQuery.event.add( form, "submit._submit", function( event ) { event._submit_bubble = true; }); jQuery._data( form, "_submit_attached", true ); } }); // return undefined since we don't need an event listener }, postDispatch: function( event ) { // If form was submitted by the user, bubble the event up the tree if ( event._submit_bubble ) { delete event._submit_bubble; if ( this.parentNode && !event.isTrigger ) { jQuery.event.simulate( "submit", this.parentNode, event, true ); } } }, teardown: function() { // Only need this for delegated form submit events if ( jQuery.nodeName( this, "form" ) ) { return false; } // Remove delegated handlers; cleanData eventually reaps submit handlers attached above jQuery.event.remove( this, "._submit" ); } }; } // IE change delegation and checkbox/radio fix if ( !jQuery.support.changeBubbles ) { jQuery.event.special.change = { setup: function() { if ( rformElems.test( this.nodeName ) ) { // IE doesn't fire change on a check/radio until blur; trigger it on click // after a propertychange. Eat the blur-change in special.change.handle. // This still fires onchange a second time for check/radio after blur. if ( this.type === "checkbox" || this.type === "radio" ) { jQuery.event.add( this, "propertychange._change", function( event ) { if ( event.originalEvent.propertyName === "checked" ) { this._just_changed = true; } }); jQuery.event.add( this, "click._change", function( event ) { if ( this._just_changed && !event.isTrigger ) { this._just_changed = false; } // Allow triggered, simulated change events (#11500) jQuery.event.simulate( "change", this, event, true ); }); } return false; } // Delegated event; lazy-add a change handler on descendant inputs jQuery.event.add( this, "beforeactivate._change", function( e ) { var elem = e.target; if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "_change_attached" ) ) { jQuery.event.add( elem, "change._change", function( event ) { if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { jQuery.event.simulate( "change", this.parentNode, event, true ); } }); jQuery._data( elem, "_change_attached", true ); } }); }, handle: function( event ) { var elem = event.target; // Swallow native change events from checkbox/radio, we already triggered them above if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { return event.handleObj.handler.apply( this, arguments ); } }, teardown: function() { jQuery.event.remove( this, "._change" ); return !rformElems.test( this.nodeName ); } }; } // Create "bubbling" focus and blur events if ( !jQuery.support.focusinBubbles ) { jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { // Attach a single capturing handler while someone wants focusin/focusout var attaches = 0, handler = function( event ) { jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); }; jQuery.event.special[ fix ] = { setup: function() { if ( attaches++ === 0 ) { document.addEventListener( orig, handler, true ); } }, teardown: function() { if ( --attaches === 0 ) { document.removeEventListener( orig, handler, true ); } } }; }); } jQuery.fn.extend({ on: function( types, selector, data, fn, /*INTERNAL*/ one ) { var origFn, type; // Types can be a map of types/handlers if ( typeof types === "object" ) { // ( types-Object, selector, data ) if ( typeof selector !== "string" ) { // && selector != null // ( types-Object, data ) data = data || selector; selector = undefined; } for ( type in types ) { this.on( type, selector, data, types[ type ], one ); } return this; } if ( data == null && fn == null ) { // ( types, fn ) fn = selector; data = selector = undefined; } else if ( fn == null ) { if ( typeof selector === "string" ) { // ( types, selector, fn ) fn = data; data = undefined; } else { // ( types, data, fn ) fn = data; data = selector; selector = undefined; } } if ( fn === false ) { fn = returnFalse; } else if ( !fn ) { return this; } if ( one === 1 ) { origFn = fn; fn = function( event ) { // Can use an empty set, since event contains the info jQuery().off( event ); return origFn.apply( this, arguments ); }; // Use same guid so caller can remove using origFn fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); } return this.each( function() { jQuery.event.add( this, types, fn, data, selector ); }); }, one: function( types, selector, data, fn ) { return this.on( types, selector, data, fn, 1 ); }, off: function( types, selector, fn ) { var handleObj, type; if ( types && types.preventDefault && types.handleObj ) { // ( event ) dispatched jQuery.Event handleObj = types.handleObj; jQuery( types.delegateTarget ).off( handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler ); return this; } if ( typeof types === "object" ) { // ( types-object [, selector] ) for ( type in types ) { this.off( type, selector, types[ type ] ); } return this; } if ( selector === false || typeof selector === "function" ) { // ( types [, fn] ) fn = selector; selector = undefined; } if ( fn === false ) { fn = returnFalse; } return this.each(function() { jQuery.event.remove( this, types, fn, selector ); }); }, bind: function( types, data, fn ) { return this.on( types, null, data, fn ); }, unbind: function( types, fn ) { return this.off( types, null, fn ); }, live: function( types, data, fn ) { jQuery( this.context ).on( types, this.selector, data, fn ); return this; }, die: function( types, fn ) { jQuery( this.context ).off( types, this.selector || "**", fn ); return this; }, delegate: function( selector, types, data, fn ) { return this.on( types, selector, data, fn ); }, undelegate: function( selector, types, fn ) { // ( namespace ) or ( selector, types [, fn] ) return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); }, trigger: function( type, data ) { return this.each(function() { jQuery.event.trigger( type, data, this ); }); }, triggerHandler: function( type, data ) { if ( this[0] ) { return jQuery.event.trigger( type, data, this[0], true ); } }, toggle: function( fn ) { // Save reference to arguments for access in closure var args = arguments, guid = fn.guid || jQuery.guid++, i = 0, toggler = function( event ) { // Figure out which function to execute var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); // Make sure that clicks stop event.preventDefault(); // and execute the function return args[ lastToggle ].apply( this, arguments ) || false; }; // link all the functions, so any of them can unbind this click handler toggler.guid = guid; while ( i < args.length ) { args[ i++ ].guid = guid; } return this.click( toggler ); }, hover: function( fnOver, fnOut ) { return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); } }); jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { // Handle event binding jQuery.fn[ name ] = function( data, fn ) { if ( fn == null ) { fn = data; data = null; } return arguments.length > 0 ? this.on( name, null, data, fn ) : this.trigger( name ); }; if ( rkeyEvent.test( name ) ) { jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; } if ( rmouseEvent.test( name ) ) { jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; } }); /*! * Sizzle CSS Selector Engine * Copyright 2012 jQuery Foundation and other contributors * Released under the MIT license * http://sizzlejs.com/ */ (function( window, undefined ) { var cachedruns, assertGetIdNotName, Expr, getText, isXML, contains, compile, sortOrder, hasDuplicate, outermostContext, baseHasDuplicate = true, strundefined = "undefined", expando = ( "sizcache" + Math.random() ).replace( ".", "" ), Token = String, document = window.document, docElem = document.documentElement, dirruns = 0, done = 0, pop = [].pop, push = [].push, slice = [].slice, // Use a stripped-down indexOf if a native one is unavailable indexOf = [].indexOf || function( elem ) { var i = 0, len = this.length; for ( ; i < len; i++ ) { if ( this[i] === elem ) { return i; } } return -1; }, // Augment a function for special use by Sizzle markFunction = function( fn, value ) { fn[ expando ] = value == null || value; return fn; }, createCache = function() { var cache = {}, keys = []; return markFunction(function( key, value ) { // Only keep the most recent entries if ( keys.push( key ) > Expr.cacheLength ) { delete cache[ keys.shift() ]; } return (cache[ key ] = value); }, cache ); }, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), // Regex // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace whitespace = "[\\x20\\t\\r\\n\\f]", // http://www.w3.org/TR/css3-syntax/#characters characterEncoding = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+", // Loosely modeled on CSS identifier characters // An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors) // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier identifier = characterEncoding.replace( "w", "w#" ), // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors operators = "([*^$|!~]?=)", attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", // Prefer arguments not in parens/brackets, // then attribute selectors and non-pseudos (denoted by :), // then anything else // These preferences are here to reduce the number of selectors // needing tokenize in the PSEUDO preFilter pseudos = ":(" + characterEncoding + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:" + attributes + ")|[^:]|\\\\.)*|.*))\\)|)", // For matchExpr.POS and matchExpr.needsContext pos = ":(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ), rpseudo = new RegExp( pseudos ), // Easily-parseable/retrievable ID or TAG or CLASS selectors rquickExpr = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/, rnot = /^:not/, rsibling = /[\x20\t\r\n\f]*[+~]/, rendsWithNot = /:not\($/, rheader = /h\d/i, rinputs = /input|select|textarea|button/i, rbackslash = /\\(?!\\)/g, matchExpr = { "ID": new RegExp( "^#(" + characterEncoding + ")" ), "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ), "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), "ATTR": new RegExp( "^" + attributes ), "PSEUDO": new RegExp( "^" + pseudos ), "POS": new RegExp( pos, "i" ), "CHILD": new RegExp( "^:(only|nth|first|last)-child(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), // For use in libraries implementing .is() "needsContext": new RegExp( "^" + whitespace + "*[>+~]|" + pos, "i" ) }, // Support // Used for testing something on an element assert = function( fn ) { var div = document.createElement("div"); try { return fn( div ); } catch (e) { return false; } finally { // release memory in IE div = null; } }, // Check if getElementsByTagName("*") returns only elements assertTagNameNoComments = assert(function( div ) { div.appendChild( document.createComment("") ); return !div.getElementsByTagName("*").length; }), // Check if getAttribute returns normalized href attributes assertHrefNotNormalized = assert(function( div ) { div.innerHTML = ""; return div.firstChild && typeof div.firstChild.getAttribute !== strundefined && div.firstChild.getAttribute("href") === "#"; }), // Check if attributes should be retrieved by attribute nodes assertAttributes = assert(function( div ) { div.innerHTML = ""; var type = typeof div.lastChild.getAttribute("multiple"); // IE8 returns a string for some attributes even when not present return type !== "boolean" && type !== "string"; }), // Check if getElementsByClassName can be trusted assertUsableClassName = assert(function( div ) { // Opera can't find a second classname (in 9.6) div.innerHTML = ""; if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) { return false; } // Safari 3.2 caches class attributes and doesn't catch changes div.lastChild.className = "e"; return div.getElementsByClassName("e").length === 2; }), // Check if getElementById returns elements by name // Check if getElementsByName privileges form controls or returns elements by ID assertUsableName = assert(function( div ) { // Inject content div.id = expando + 0; div.innerHTML = "
"; docElem.insertBefore( div, docElem.firstChild ); // Test var pass = document.getElementsByName && // buggy browsers will return fewer than the correct 2 document.getElementsByName( expando ).length === 2 + // buggy browsers will return more than the correct 0 document.getElementsByName( expando + 0 ).length; assertGetIdNotName = !document.getElementById( expando ); // Cleanup docElem.removeChild( div ); return pass; }); // If slice is not available, provide a backup try { slice.call( docElem.childNodes, 0 )[0].nodeType; } catch ( e ) { slice = function( i ) { var elem, results = []; for ( ; (elem = this[i]); i++ ) { results.push( elem ); } return results; }; } function Sizzle( selector, context, results, seed ) { results = results || []; context = context || document; var match, elem, xml, m, nodeType = context.nodeType; if ( !selector || typeof selector !== "string" ) { return results; } if ( nodeType !== 1 && nodeType !== 9 ) { return []; } xml = isXML( context ); if ( !xml && !seed ) { if ( (match = rquickExpr.exec( selector )) ) { // Speed-up: Sizzle("#ID") if ( (m = match[1]) ) { if ( nodeType === 9 ) { elem = context.getElementById( m ); // Check parentNode to catch when Blackberry 4.6 returns // nodes that are no longer in the document #6963 if ( elem && elem.parentNode ) { // Handle the case where IE, Opera, and Webkit return items // by name instead of ID if ( elem.id === m ) { results.push( elem ); return results; } } else { return results; } } else { // Context is not a document if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && contains( context, elem ) && elem.id === m ) { results.push( elem ); return results; } } // Speed-up: Sizzle("TAG") } else if ( match[2] ) { push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) ); return results; // Speed-up: Sizzle(".CLASS") } else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) { push.apply( results, slice.call(context.getElementsByClassName( m ), 0) ); return results; } } } // All others return select( selector.replace( rtrim, "$1" ), context, results, seed, xml ); } Sizzle.matches = function( expr, elements ) { return Sizzle( expr, null, null, elements ); }; Sizzle.matchesSelector = function( elem, expr ) { return Sizzle( expr, null, null, [ elem ] ).length > 0; }; // Returns a function to use in pseudos for input types function createInputPseudo( type ) { return function( elem ) { var name = elem.nodeName.toLowerCase(); return name === "input" && elem.type === type; }; } // Returns a function to use in pseudos for buttons function createButtonPseudo( type ) { return function( elem ) { var name = elem.nodeName.toLowerCase(); return (name === "input" || name === "button") && elem.type === type; }; } // Returns a function to use in pseudos for positionals function createPositionalPseudo( fn ) { return markFunction(function( argument ) { argument = +argument; return markFunction(function( seed, matches ) { var j, matchIndexes = fn( [], seed.length, argument ), i = matchIndexes.length; // Match elements found at the specified indexes while ( i-- ) { if ( seed[ (j = matchIndexes[i]) ] ) { seed[j] = !(matches[j] = seed[j]); } } }); }); } /** * Utility function for retrieving the text value of an array of DOM nodes * @param {Array|Element} elem */ getText = Sizzle.getText = function( elem ) { var node, ret = "", i = 0, nodeType = elem.nodeType; if ( nodeType ) { if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { // Use textContent for elements // innerText usage removed for consistency of new lines (see #11153) if ( typeof elem.textContent === "string" ) { return elem.textContent; } else { // Traverse its children for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { ret += getText( elem ); } } } else if ( nodeType === 3 || nodeType === 4 ) { return elem.nodeValue; } // Do not include comment or processing instruction nodes } else { // If no nodeType, this is expected to be an array for ( ; (node = elem[i]); i++ ) { // Do not traverse comment nodes ret += getText( node ); } } return ret; }; isXML = Sizzle.isXML = function( elem ) { // documentElement is verified for cases where it doesn't yet exist // (such as loading iframes in IE - #4833) var documentElement = elem && (elem.ownerDocument || elem).documentElement; return documentElement ? documentElement.nodeName !== "HTML" : false; }; // Element contains another contains = Sizzle.contains = docElem.contains ? function( a, b ) { var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode; return a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) ); } : docElem.compareDocumentPosition ? function( a, b ) { return b && !!( a.compareDocumentPosition( b ) & 16 ); } : function( a, b ) { while ( (b = b.parentNode) ) { if ( b === a ) { return true; } } return false; }; Sizzle.attr = function( elem, name ) { var val, xml = isXML( elem ); if ( !xml ) { name = name.toLowerCase(); } if ( (val = Expr.attrHandle[ name ]) ) { return val( elem ); } if ( xml || assertAttributes ) { return elem.getAttribute( name ); } val = elem.getAttributeNode( name ); return val ? typeof elem[ name ] === "boolean" ? elem[ name ] ? name : null : val.specified ? val.value : null : null; }; Expr = Sizzle.selectors = { // Can be adjusted by the user cacheLength: 50, createPseudo: markFunction, match: matchExpr, // IE6/7 return a modified href attrHandle: assertHrefNotNormalized ? {} : { "href": function( elem ) { return elem.getAttribute( "href", 2 ); }, "type": function( elem ) { return elem.getAttribute("type"); } }, find: { "ID": assertGetIdNotName ? function( id, context, xml ) { if ( typeof context.getElementById !== strundefined && !xml ) { var m = context.getElementById( id ); // Check parentNode to catch when Blackberry 4.6 returns // nodes that are no longer in the document #6963 return m && m.parentNode ? [m] : []; } } : function( id, context, xml ) { if ( typeof context.getElementById !== strundefined && !xml ) { var m = context.getElementById( id ); return m ? m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ? [m] : undefined : []; } }, "TAG": assertTagNameNoComments ? function( tag, context ) { if ( typeof context.getElementsByTagName !== strundefined ) { return context.getElementsByTagName( tag ); } } : function( tag, context ) { var results = context.getElementsByTagName( tag ); // Filter out possible comments if ( tag === "*" ) { var elem, tmp = [], i = 0; for ( ; (elem = results[i]); i++ ) { if ( elem.nodeType === 1 ) { tmp.push( elem ); } } return tmp; } return results; }, "NAME": assertUsableName && function( tag, context ) { if ( typeof context.getElementsByName !== strundefined ) { return context.getElementsByName( name ); } }, "CLASS": assertUsableClassName && function( className, context, xml ) { if ( typeof context.getElementsByClassName !== strundefined && !xml ) { return context.getElementsByClassName( className ); } } }, relative: { ">": { dir: "parentNode", first: true }, " ": { dir: "parentNode" }, "+": { dir: "previousSibling", first: true }, "~": { dir: "previousSibling" } }, preFilter: { "ATTR": function( match ) { match[1] = match[1].replace( rbackslash, "" ); // Move the given value to match[3] whether quoted or unquoted match[3] = ( match[4] || match[5] || "" ).replace( rbackslash, "" ); if ( match[2] === "~=" ) { match[3] = " " + match[3] + " "; } return match.slice( 0, 4 ); }, "CHILD": function( match ) { /* matches from matchExpr["CHILD"] 1 type (only|nth|...) 2 argument (even|odd|\d*|\d*n([+-]\d+)?|...) 3 xn-component of xn+y argument ([+-]?\d*n|) 4 sign of xn-component 5 x of xn-component 6 sign of y-component 7 y of y-component */ match[1] = match[1].toLowerCase(); if ( match[1] === "nth" ) { // nth-child requires argument if ( !match[2] ) { Sizzle.error( match[0] ); } // numeric x and y parameters for Expr.filter.CHILD // remember that false/true cast respectively to 0/1 match[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === "even" || match[2] === "odd" ) ); match[4] = +( ( match[6] + match[7] ) || match[2] === "odd" ); // other types prohibit arguments } else if ( match[2] ) { Sizzle.error( match[0] ); } return match; }, "PSEUDO": function( match ) { var unquoted, excess; if ( matchExpr["CHILD"].test( match[0] ) ) { return null; } if ( match[3] ) { match[2] = match[3]; } else if ( (unquoted = match[4]) ) { // Only check arguments that contain a pseudo if ( rpseudo.test(unquoted) && // Get excess from tokenize (recursively) (excess = tokenize( unquoted, true )) && // advance to the next closing parenthesis (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { // excess is a negative index unquoted = unquoted.slice( 0, excess ); match[0] = match[0].slice( 0, excess ); } match[2] = unquoted; } // Return only captures needed by the pseudo filter method (type and argument) return match.slice( 0, 3 ); } }, filter: { "ID": assertGetIdNotName ? function( id ) { id = id.replace( rbackslash, "" ); return function( elem ) { return elem.getAttribute("id") === id; }; } : function( id ) { id = id.replace( rbackslash, "" ); return function( elem ) { var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); return node && node.value === id; }; }, "TAG": function( nodeName ) { if ( nodeName === "*" ) { return function() { return true; }; } nodeName = nodeName.replace( rbackslash, "" ).toLowerCase(); return function( elem ) { return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; }; }, "CLASS": function( className ) { var pattern = classCache[ expando ][ className ]; if ( !pattern ) { pattern = classCache( className, new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)") ); } return function( elem ) { return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" ); }; }, "ATTR": function( name, operator, check ) { return function( elem, context ) { var result = Sizzle.attr( elem, name ); if ( result == null ) { return operator === "!="; } if ( !operator ) { return true; } result += ""; return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf( check ) === 0 : operator === "*=" ? check && result.indexOf( check ) > -1 : operator === "$=" ? check && result.substr( result.length - check.length ) === check : operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : operator === "|=" ? result === check || result.substr( 0, check.length + 1 ) === check + "-" : false; }; }, "CHILD": function( type, argument, first, last ) { if ( type === "nth" ) { return function( elem ) { var node, diff, parent = elem.parentNode; if ( first === 1 && last === 0 ) { return true; } if ( parent ) { diff = 0; for ( node = parent.firstChild; node; node = node.nextSibling ) { if ( node.nodeType === 1 ) { diff++; if ( elem === node ) { break; } } } } // Incorporate the offset (or cast to NaN), then check against cycle size diff -= last; return diff === first || ( diff % first === 0 && diff / first >= 0 ); }; } return function( elem ) { var node = elem; switch ( type ) { case "only": case "first": while ( (node = node.previousSibling) ) { if ( node.nodeType === 1 ) { return false; } } if ( type === "first" ) { return true; } node = elem; /* falls through */ case "last": while ( (node = node.nextSibling) ) { if ( node.nodeType === 1 ) { return false; } } return true; } }; }, "PSEUDO": function( pseudo, argument ) { // pseudo-class names are case-insensitive // http://www.w3.org/TR/selectors/#pseudo-classes // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters // Remember that setFilters inherits from pseudos var args, fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || Sizzle.error( "unsupported pseudo: " + pseudo ); // The user may use createPseudo to indicate that // arguments are needed to create the filter function // just as Sizzle does if ( fn[ expando ] ) { return fn( argument ); } // But maintain support for old signatures if ( fn.length > 1 ) { args = [ pseudo, pseudo, "", argument ]; return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? markFunction(function( seed, matches ) { var idx, matched = fn( seed, argument ), i = matched.length; while ( i-- ) { idx = indexOf.call( seed, matched[i] ); seed[ idx ] = !( matches[ idx ] = matched[i] ); } }) : function( elem ) { return fn( elem, 0, args ); }; } return fn; } }, pseudos: { "not": markFunction(function( selector ) { // Trim the selector passed to compile // to avoid treating leading and trailing // spaces as combinators var input = [], results = [], matcher = compile( selector.replace( rtrim, "$1" ) ); return matcher[ expando ] ? markFunction(function( seed, matches, context, xml ) { var elem, unmatched = matcher( seed, null, xml, [] ), i = seed.length; // Match elements unmatched by `matcher` while ( i-- ) { if ( (elem = unmatched[i]) ) { seed[i] = !(matches[i] = elem); } } }) : function( elem, context, xml ) { input[0] = elem; matcher( input, null, xml, results ); return !results.pop(); }; }), "has": markFunction(function( selector ) { return function( elem ) { return Sizzle( selector, elem ).length > 0; }; }), "contains": markFunction(function( text ) { return function( elem ) { return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; }; }), "enabled": function( elem ) { return elem.disabled === false; }, "disabled": function( elem ) { return elem.disabled === true; }, "checked": function( elem ) { // In CSS3, :checked should return both checked and selected elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked var nodeName = elem.nodeName.toLowerCase(); return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); }, "selected": function( elem ) { // Accessing this property makes selected-by-default // options in Safari work properly if ( elem.parentNode ) { elem.parentNode.selectedIndex; } return elem.selected === true; }, "parent": function( elem ) { return !Expr.pseudos["empty"]( elem ); }, "empty": function( elem ) { // http://www.w3.org/TR/selectors/#empty-pseudo // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), // not comment, processing instructions, or others // Thanks to Diego Perini for the nodeName shortcut // Greater than "@" means alpha characters (specifically not starting with "#" or "?") var nodeType; elem = elem.firstChild; while ( elem ) { if ( elem.nodeName > "@" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) { return false; } elem = elem.nextSibling; } return true; }, "header": function( elem ) { return rheader.test( elem.nodeName ); }, "text": function( elem ) { var type, attr; // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) // use getAttribute instead to test this case return elem.nodeName.toLowerCase() === "input" && (type = elem.type) === "text" && ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === type ); }, // Input types "radio": createInputPseudo("radio"), "checkbox": createInputPseudo("checkbox"), "file": createInputPseudo("file"), "password": createInputPseudo("password"), "image": createInputPseudo("image"), "submit": createButtonPseudo("submit"), "reset": createButtonPseudo("reset"), "button": function( elem ) { var name = elem.nodeName.toLowerCase(); return name === "input" && elem.type === "button" || name === "button"; }, "input": function( elem ) { return rinputs.test( elem.nodeName ); }, "focus": function( elem ) { var doc = elem.ownerDocument; return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href); }, "active": function( elem ) { return elem === elem.ownerDocument.activeElement; }, // Positional types "first": createPositionalPseudo(function( matchIndexes, length, argument ) { return [ 0 ]; }), "last": createPositionalPseudo(function( matchIndexes, length, argument ) { return [ length - 1 ]; }), "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { return [ argument < 0 ? argument + length : argument ]; }), "even": createPositionalPseudo(function( matchIndexes, length, argument ) { for ( var i = 0; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; }), "odd": createPositionalPseudo(function( matchIndexes, length, argument ) { for ( var i = 1; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; }), "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { for ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) { matchIndexes.push( i ); } return matchIndexes; }), "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { for ( var i = argument < 0 ? argument + length : argument; ++i < length; ) { matchIndexes.push( i ); } return matchIndexes; }) } }; function siblingCheck( a, b, ret ) { if ( a === b ) { return ret; } var cur = a.nextSibling; while ( cur ) { if ( cur === b ) { return -1; } cur = cur.nextSibling; } return 1; } sortOrder = docElem.compareDocumentPosition ? function( a, b ) { if ( a === b ) { hasDuplicate = true; return 0; } return ( !a.compareDocumentPosition || !b.compareDocumentPosition ? a.compareDocumentPosition : a.compareDocumentPosition(b) & 4 ) ? -1 : 1; } : function( a, b ) { // The nodes are identical, we can exit early if ( a === b ) { hasDuplicate = true; return 0; // Fallback to using sourceIndex (in IE) if it's available on both nodes } else if ( a.sourceIndex && b.sourceIndex ) { return a.sourceIndex - b.sourceIndex; } var al, bl, ap = [], bp = [], aup = a.parentNode, bup = b.parentNode, cur = aup; // If the nodes are siblings (or identical) we can do a quick check if ( aup === bup ) { return siblingCheck( a, b ); // If no parents were found then the nodes are disconnected } else if ( !aup ) { return -1; } else if ( !bup ) { return 1; } // Otherwise they're somewhere else in the tree so we need // to build up a full list of the parentNodes for comparison while ( cur ) { ap.unshift( cur ); cur = cur.parentNode; } cur = bup; while ( cur ) { bp.unshift( cur ); cur = cur.parentNode; } al = ap.length; bl = bp.length; // Start walking down the tree looking for a discrepancy for ( var i = 0; i < al && i < bl; i++ ) { if ( ap[i] !== bp[i] ) { return siblingCheck( ap[i], bp[i] ); } } // We ended someplace up the tree so do a sibling check return i === al ? siblingCheck( a, bp[i], -1 ) : siblingCheck( ap[i], b, 1 ); }; // Always assume the presence of duplicates if sort doesn't // pass them to our comparison function (as in Google Chrome). [0, 0].sort( sortOrder ); baseHasDuplicate = !hasDuplicate; // Document sorting and removing duplicates Sizzle.uniqueSort = function( results ) { var elem, i = 1; hasDuplicate = baseHasDuplicate; results.sort( sortOrder ); if ( hasDuplicate ) { for ( ; (elem = results[i]); i++ ) { if ( elem === results[ i - 1 ] ) { results.splice( i--, 1 ); } } } return results; }; Sizzle.error = function( msg ) { throw new Error( "Syntax error, unrecognized expression: " + msg ); }; function tokenize( selector, parseOnly ) { var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[ expando ][ selector ]; if ( cached ) { return parseOnly ? 0 : cached.slice( 0 ); } soFar = selector; groups = []; preFilters = Expr.preFilter; while ( soFar ) { // Comma and first run if ( !matched || (match = rcomma.exec( soFar )) ) { if ( match ) { soFar = soFar.slice( match[0].length ); } groups.push( tokens = [] ); } matched = false; // Combinators if ( (match = rcombinators.exec( soFar )) ) { tokens.push( matched = new Token( match.shift() ) ); soFar = soFar.slice( matched.length ); // Cast descendant combinators to space matched.type = match[0].replace( rtrim, " " ); } // Filters for ( type in Expr.filter ) { if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || // The last two arguments here are (context, xml) for backCompat (match = preFilters[ type ]( match, document, true ))) ) { tokens.push( matched = new Token( match.shift() ) ); soFar = soFar.slice( matched.length ); matched.type = type; matched.matches = match; } } if ( !matched ) { break; } } // Return the length of the invalid excess // if we're just parsing // Otherwise, throw an error or return tokens return parseOnly ? soFar.length : soFar ? Sizzle.error( selector ) : // Cache the tokens tokenCache( selector, groups ).slice( 0 ); } function addCombinator( matcher, combinator, base ) { var dir = combinator.dir, checkNonElements = base && combinator.dir === "parentNode", doneName = done++; return combinator.first ? // Check against closest ancestor/preceding element function( elem, context, xml ) { while ( (elem = elem[ dir ]) ) { if ( checkNonElements || elem.nodeType === 1 ) { return matcher( elem, context, xml ); } } } : // Check against all ancestor/preceding elements function( elem, context, xml ) { // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching if ( !xml ) { var cache, dirkey = dirruns + " " + doneName + " ", cachedkey = dirkey + cachedruns; while ( (elem = elem[ dir ]) ) { if ( checkNonElements || elem.nodeType === 1 ) { if ( (cache = elem[ expando ]) === cachedkey ) { return elem.sizset; } else if ( typeof cache === "string" && cache.indexOf(dirkey) === 0 ) { if ( elem.sizset ) { return elem; } } else { elem[ expando ] = cachedkey; if ( matcher( elem, context, xml ) ) { elem.sizset = true; return elem; } elem.sizset = false; } } } } else { while ( (elem = elem[ dir ]) ) { if ( checkNonElements || elem.nodeType === 1 ) { if ( matcher( elem, context, xml ) ) { return elem; } } } } }; } function elementMatcher( matchers ) { return matchers.length > 1 ? function( elem, context, xml ) { var i = matchers.length; while ( i-- ) { if ( !matchers[i]( elem, context, xml ) ) { return false; } } return true; } : matchers[0]; } function condense( unmatched, map, filter, context, xml ) { var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null; for ( ; i < len; i++ ) { if ( (elem = unmatched[i]) ) { if ( !filter || filter( elem, context, xml ) ) { newUnmatched.push( elem ); if ( mapped ) { map.push( i ); } } } } return newUnmatched; } function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { if ( postFilter && !postFilter[ expando ] ) { postFilter = setMatcher( postFilter ); } if ( postFinder && !postFinder[ expando ] ) { postFinder = setMatcher( postFinder, postSelector ); } return markFunction(function( seed, results, context, xml ) { // Positional selectors apply to seed elements, so it is invalid to follow them with relative ones if ( seed && postFinder ) { return; } var i, elem, postFilterIn, preMap = [], postMap = [], preexisting = results.length, // Get initial elements from seed or context elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [], seed ), // Prefilter to get matcher input, preserving a map for seed-results synchronization matcherIn = preFilter && ( seed || !selector ) ? condense( elems, preMap, preFilter, context, xml ) : elems, matcherOut = matcher ? // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, postFinder || ( seed ? preFilter : preexisting || postFilter ) ? // ...intermediate processing is necessary [] : // ...otherwise use results directly results : matcherIn; // Find primary matches if ( matcher ) { matcher( matcherIn, matcherOut, context, xml ); } // Apply postFilter if ( postFilter ) { postFilterIn = condense( matcherOut, postMap ); postFilter( postFilterIn, [], context, xml ); // Un-match failing elements by moving them back to matcherIn i = postFilterIn.length; while ( i-- ) { if ( (elem = postFilterIn[i]) ) { matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); } } } // Keep seed and results synchronized if ( seed ) { // Ignore postFinder because it can't coexist with seed i = preFilter && matcherOut.length; while ( i-- ) { if ( (elem = matcherOut[i]) ) { seed[ preMap[i] ] = !(results[ preMap[i] ] = elem); } } } else { matcherOut = condense( matcherOut === results ? matcherOut.splice( preexisting, matcherOut.length ) : matcherOut ); if ( postFinder ) { postFinder( null, results, matcherOut, xml ); } else { push.apply( results, matcherOut ); } } }); } function matcherFromTokens( tokens ) { var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[ tokens[0].type ], implicitRelative = leadingRelative || Expr.relative[" "], i = leadingRelative ? 1 : 0, // The foundational matcher ensures that elements are reachable from top-level context(s) matchContext = addCombinator( function( elem ) { return elem === checkContext; }, implicitRelative, true ), matchAnyContext = addCombinator( function( elem ) { return indexOf.call( checkContext, elem ) > -1; }, implicitRelative, true ), matchers = [ function( elem, context, xml ) { return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( (checkContext = context).nodeType ? matchContext( elem, context, xml ) : matchAnyContext( elem, context, xml ) ); } ]; for ( ; i < len; i++ ) { if ( (matcher = Expr.relative[ tokens[i].type ]) ) { matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; } else { // The concatenated values are (context, xml) for backCompat matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); // Return special upon seeing a positional matcher if ( matcher[ expando ] ) { // Find the next relative operator (if any) for proper handling j = ++i; for ( ; j < len; j++ ) { if ( Expr.relative[ tokens[j].type ] ) { break; } } return setMatcher( i > 1 && elementMatcher( matchers ), i > 1 && tokens.slice( 0, i - 1 ).join("").replace( rtrim, "$1" ), matcher, i < j && matcherFromTokens( tokens.slice( i, j ) ), j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), j < len && tokens.join("") ); } matchers.push( matcher ); } } return elementMatcher( matchers ); } function matcherFromGroupMatchers( elementMatchers, setMatchers ) { var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function( seed, context, xml, results, expandContext ) { var elem, j, matcher, setMatched = [], matchedCount = 0, i = "0", unmatched = seed && [], outermost = expandContext != null, contextBackup = outermostContext, // We must always have either seed elements or context elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), // Nested matchers should use non-integer dirruns dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E); if ( outermost ) { outermostContext = context !== document && context; cachedruns = superMatcher.el; } // Add elements passing elementMatchers directly to results for ( ; (elem = elems[i]) != null; i++ ) { if ( byElement && elem ) { for ( j = 0; (matcher = elementMatchers[j]); j++ ) { if ( matcher( elem, context, xml ) ) { results.push( elem ); break; } } if ( outermost ) { dirruns = dirrunsUnique; cachedruns = ++superMatcher.el; } } // Track unmatched elements for set filters if ( bySet ) { // They will have gone through all possible matchers if ( (elem = !matcher && elem) ) { matchedCount--; } // Lengthen the array for every element, matched or not if ( seed ) { unmatched.push( elem ); } } } // Apply set filters to unmatched elements matchedCount += i; if ( bySet && i !== matchedCount ) { for ( j = 0; (matcher = setMatchers[j]); j++ ) { matcher( unmatched, setMatched, context, xml ); } if ( seed ) { // Reintegrate element matches to eliminate the need for sorting if ( matchedCount > 0 ) { while ( i-- ) { if ( !(unmatched[i] || setMatched[i]) ) { setMatched[i] = pop.call( results ); } } } // Discard index placeholder values to get only actual matches setMatched = condense( setMatched ); } // Add matches to results push.apply( results, setMatched ); // Seedless set matches succeeding multiple successful matchers stipulate sorting if ( outermost && !seed && setMatched.length > 0 && ( matchedCount + setMatchers.length ) > 1 ) { Sizzle.uniqueSort( results ); } } // Override manipulation of globals by nested matchers if ( outermost ) { dirruns = dirrunsUnique; outermostContext = contextBackup; } return unmatched; }; superMatcher.el = 0; return bySet ? markFunction( superMatcher ) : superMatcher; } compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { var i, setMatchers = [], elementMatchers = [], cached = compilerCache[ expando ][ selector ]; if ( !cached ) { // Generate a function of recursive functions that can be used to check each element if ( !group ) { group = tokenize( selector ); } i = group.length; while ( i-- ) { cached = matcherFromTokens( group[i] ); if ( cached[ expando ] ) { setMatchers.push( cached ); } else { elementMatchers.push( cached ); } } // Cache the compiled function cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); } return cached; }; function multipleContexts( selector, contexts, results, seed ) { var i = 0, len = contexts.length; for ( ; i < len; i++ ) { Sizzle( selector, contexts[i], results, seed ); } return results; } function select( selector, context, results, seed, xml ) { var i, tokens, token, type, find, match = tokenize( selector ), j = match.length; if ( !seed ) { // Try to minimize operations if there is only one group if ( match.length === 1 ) { // Take a shortcut and set the context if the root selector is an ID tokens = match[0] = match[0].slice( 0 ); if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && context.nodeType === 9 && !xml && Expr.relative[ tokens[1].type ] ) { context = Expr.find["ID"]( token.matches[0].replace( rbackslash, "" ), context, xml )[0]; if ( !context ) { return results; } selector = selector.slice( tokens.shift().length ); } // Fetch a seed set for right-to-left matching for ( i = matchExpr["POS"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) { token = tokens[i]; // Abort if we hit a combinator if ( Expr.relative[ (type = token.type) ] ) { break; } if ( (find = Expr.find[ type ]) ) { // Search, expanding context for leading sibling combinators if ( (seed = find( token.matches[0].replace( rbackslash, "" ), rsibling.test( tokens[0].type ) && context.parentNode || context, xml )) ) { // If seed is empty or no tokens remain, we can return early tokens.splice( i, 1 ); selector = seed.length && tokens.join(""); if ( !selector ) { push.apply( results, slice.call( seed, 0 ) ); return results; } break; } } } } } // Compile and execute a filtering function // Provide `match` to avoid retokenization if we modified the selector above compile( selector, match )( seed, context, xml, results, rsibling.test( selector ) ); return results; } if ( document.querySelectorAll ) { (function() { var disconnectedMatch, oldSelect = select, rescape = /'|\\/g, rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, // qSa(:focus) reports false when true (Chrome 21), // A support test would require too much code (would include document ready) rbuggyQSA = [":focus"], // matchesSelector(:focus) reports false when true (Chrome 21), // matchesSelector(:active) reports false when true (IE9/Opera 11.5) // A support test would require too much code (would include document ready) // just skip matchesSelector for :active rbuggyMatches = [ ":active", ":focus" ], matches = docElem.matchesSelector || docElem.mozMatchesSelector || docElem.webkitMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector; // Build QSA regex // Regex strategy adopted from Diego Perini assert(function( div ) { // Select is set to empty string on purpose // This is to test IE's treatment of not explictly // setting a boolean content attribute, // since its presence should be enough // http://bugs.jquery.com/ticket/12359 div.innerHTML = ""; // IE8 - Some boolean attributes are not treated correctly if ( !div.querySelectorAll("[selected]").length ) { rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ); } // Webkit/Opera - :checked should return selected option elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked // IE8 throws error here (do not put tests after this one) if ( !div.querySelectorAll(":checked").length ) { rbuggyQSA.push(":checked"); } }); assert(function( div ) { // Opera 10-12/IE9 - ^= $= *= and empty values // Should not select anything div.innerHTML = "

"; if ( div.querySelectorAll("[test^='']").length ) { rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" ); } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) // IE8 throws error here (do not put tests after this one) div.innerHTML = ""; if ( !div.querySelectorAll(":enabled").length ) { rbuggyQSA.push(":enabled", ":disabled"); } }); // rbuggyQSA always contains :focus, so no need for a length check rbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join("|") ); select = function( selector, context, results, seed, xml ) { // Only use querySelectorAll when not filtering, // when this is not xml, // and when no QSA bugs apply if ( !seed && !xml && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { var groups, i, old = true, nid = expando, newContext = context, newSelector = context.nodeType === 9 && selector; // qSA works strangely on Element-rooted queries // We can work around this by specifying an extra ID on the root // and working up from there (Thanks to Andrew Dupont for the technique) // IE 8 doesn't work on object elements if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { groups = tokenize( selector ); if ( (old = context.getAttribute("id")) ) { nid = old.replace( rescape, "\\$&" ); } else { context.setAttribute( "id", nid ); } nid = "[id='" + nid + "'] "; i = groups.length; while ( i-- ) { groups[i] = nid + groups[i].join(""); } newContext = rsibling.test( selector ) && context.parentNode || context; newSelector = groups.join(","); } if ( newSelector ) { try { push.apply( results, slice.call( newContext.querySelectorAll( newSelector ), 0 ) ); return results; } catch(qsaError) { } finally { if ( !old ) { context.removeAttribute("id"); } } } } return oldSelect( selector, context, results, seed, xml ); }; if ( matches ) { assert(function( div ) { // Check to see if it's possible to do matchesSelector // on a disconnected node (IE 9) disconnectedMatch = matches.call( div, "div" ); // This should fail with an exception // Gecko does not error, returns false instead try { matches.call( div, "[test!='']:sizzle" ); rbuggyMatches.push( "!=", pseudos ); } catch ( e ) {} }); // rbuggyMatches always contains :active and :focus, so no need for a length check rbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join("|") ); Sizzle.matchesSelector = function( elem, expr ) { // Make sure that attribute selectors are quoted expr = expr.replace( rattributeQuotes, "='$1']" ); // rbuggyMatches always contains :active, so no need for an existence check if ( !isXML( elem ) && !rbuggyMatches.test( expr ) && (!rbuggyQSA || !rbuggyQSA.test( expr )) ) { try { var ret = matches.call( elem, expr ); // IE 9's matchesSelector returns false on disconnected nodes if ( ret || disconnectedMatch || // As well, disconnected nodes are said to be in a document // fragment in IE 9 elem.document && elem.document.nodeType !== 11 ) { return ret; } } catch(e) {} } return Sizzle( expr, null, null, [ elem ] ).length > 0; }; } })(); } // Deprecated Expr.pseudos["nth"] = Expr.pseudos["eq"]; // Back-compat function setFilters() {} Expr.filters = setFilters.prototype = Expr.pseudos; Expr.setFilters = new setFilters(); // Override sizzle attribute retrieval Sizzle.attr = jQuery.attr; jQuery.find = Sizzle; jQuery.expr = Sizzle.selectors; jQuery.expr[":"] = jQuery.expr.pseudos; jQuery.unique = Sizzle.uniqueSort; jQuery.text = Sizzle.getText; jQuery.isXMLDoc = Sizzle.isXML; jQuery.contains = Sizzle.contains; })( window ); var runtil = /Until$/, rparentsprev = /^(?:parents|prev(?:Until|All))/, isSimple = /^.[^:#\[\.,]*$/, rneedsContext = jQuery.expr.match.needsContext, // methods guaranteed to produce a unique set when starting from a unique set guaranteedUnique = { children: true, contents: true, next: true, prev: true }; jQuery.fn.extend({ find: function( selector ) { var i, l, length, n, r, ret, self = this; if ( typeof selector !== "string" ) { return jQuery( selector ).filter(function() { for ( i = 0, l = self.length; i < l; i++ ) { if ( jQuery.contains( self[ i ], this ) ) { return true; } } }); } ret = this.pushStack( "", "find", selector ); for ( i = 0, l = this.length; i < l; i++ ) { length = ret.length; jQuery.find( selector, this[i], ret ); if ( i > 0 ) { // Make sure that the results are unique for ( n = length; n < ret.length; n++ ) { for ( r = 0; r < length; r++ ) { if ( ret[r] === ret[n] ) { ret.splice(n--, 1); break; } } } } } return ret; }, has: function( target ) { var i, targets = jQuery( target, this ), len = targets.length; return this.filter(function() { for ( i = 0; i < len; i++ ) { if ( jQuery.contains( this, targets[i] ) ) { return true; } } }); }, not: function( selector ) { return this.pushStack( winnow(this, selector, false), "not", selector); }, filter: function( selector ) { return this.pushStack( winnow(this, selector, true), "filter", selector ); }, is: function( selector ) { return !!selector && ( typeof selector === "string" ? // If this is a positional/relative selector, check membership in the returned set // so $("p:first").is("p:last") won't return true for a doc with two "p". rneedsContext.test( selector ) ? jQuery( selector, this.context ).index( this[0] ) >= 0 : jQuery.filter( selector, this ).length > 0 : this.filter( selector ).length > 0 ); }, closest: function( selectors, context ) { var cur, i = 0, l = this.length, ret = [], pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? jQuery( selectors, context || this.context ) : 0; for ( ; i < l; i++ ) { cur = this[i]; while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) { if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { ret.push( cur ); break; } cur = cur.parentNode; } } ret = ret.length > 1 ? jQuery.unique( ret ) : ret; return this.pushStack( ret, "closest", selectors ); }, // Determine the position of an element within // the matched set of elements index: function( elem ) { // No argument, return index in parent if ( !elem ) { return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; } // index in selector if ( typeof elem === "string" ) { return jQuery.inArray( this[0], jQuery( elem ) ); } // Locate the position of the desired element return jQuery.inArray( // If it receives a jQuery object, the first element is used elem.jquery ? elem[0] : elem, this ); }, add: function( selector, context ) { var set = typeof selector === "string" ? jQuery( selector, context ) : jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), all = jQuery.merge( this.get(), set ); return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? all : jQuery.unique( all ) ); }, addBack: function( selector ) { return this.add( selector == null ? this.prevObject : this.prevObject.filter(selector) ); } }); jQuery.fn.andSelf = jQuery.fn.addBack; // A painfully simple check to see if an element is disconnected // from a document (should be improved, where feasible). function isDisconnected( node ) { return !node || !node.parentNode || node.parentNode.nodeType === 11; } function sibling( cur, dir ) { do { cur = cur[ dir ]; } while ( cur && cur.nodeType !== 1 ); return cur; } jQuery.each({ parent: function( elem ) { var parent = elem.parentNode; return parent && parent.nodeType !== 11 ? parent : null; }, parents: function( elem ) { return jQuery.dir( elem, "parentNode" ); }, parentsUntil: function( elem, i, until ) { return jQuery.dir( elem, "parentNode", until ); }, next: function( elem ) { return sibling( elem, "nextSibling" ); }, prev: function( elem ) { return sibling( elem, "previousSibling" ); }, nextAll: function( elem ) { return jQuery.dir( elem, "nextSibling" ); }, prevAll: function( elem ) { return jQuery.dir( elem, "previousSibling" ); }, nextUntil: function( elem, i, until ) { return jQuery.dir( elem, "nextSibling", until ); }, prevUntil: function( elem, i, until ) { return jQuery.dir( elem, "previousSibling", until ); }, siblings: function( elem ) { return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); }, children: function( elem ) { return jQuery.sibling( elem.firstChild ); }, contents: function( elem ) { return jQuery.nodeName( elem, "iframe" ) ? elem.contentDocument || elem.contentWindow.document : jQuery.merge( [], elem.childNodes ); } }, function( name, fn ) { jQuery.fn[ name ] = function( until, selector ) { var ret = jQuery.map( this, fn, until ); if ( !runtil.test( name ) ) { selector = until; } if ( selector && typeof selector === "string" ) { ret = jQuery.filter( selector, ret ); } ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; if ( this.length > 1 && rparentsprev.test( name ) ) { ret = ret.reverse(); } return this.pushStack( ret, name, core_slice.call( arguments ).join(",") ); }; }); jQuery.extend({ filter: function( expr, elems, not ) { if ( not ) { expr = ":not(" + expr + ")"; } return elems.length === 1 ? jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : jQuery.find.matches(expr, elems); }, dir: function( elem, dir, until ) { var matched = [], cur = elem[ dir ]; while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { if ( cur.nodeType === 1 ) { matched.push( cur ); } cur = cur[dir]; } return matched; }, sibling: function( n, elem ) { var r = []; for ( ; n; n = n.nextSibling ) { if ( n.nodeType === 1 && n !== elem ) { r.push( n ); } } return r; } }); // Implement the identical functionality for filter and not function winnow( elements, qualifier, keep ) { // Can't pass null or undefined to indexOf in Firefox 4 // Set to 0 to skip string check qualifier = qualifier || 0; if ( jQuery.isFunction( qualifier ) ) { return jQuery.grep(elements, function( elem, i ) { var retVal = !!qualifier.call( elem, i, elem ); return retVal === keep; }); } else if ( qualifier.nodeType ) { return jQuery.grep(elements, function( elem, i ) { return ( elem === qualifier ) === keep; }); } else if ( typeof qualifier === "string" ) { var filtered = jQuery.grep(elements, function( elem ) { return elem.nodeType === 1; }); if ( isSimple.test( qualifier ) ) { return jQuery.filter(qualifier, filtered, !keep); } else { qualifier = jQuery.filter( qualifier, filtered ); } } return jQuery.grep(elements, function( elem, i ) { return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; }); } function createSafeFragment( document ) { var list = nodeNames.split( "|" ), safeFrag = document.createDocumentFragment(); if ( safeFrag.createElement ) { while ( list.length ) { safeFrag.createElement( list.pop() ); } } return safeFrag; } var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, rleadingWhitespace = /^\s+/, rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, rtagName = /<([\w:]+)/, rtbody = /]", "i"), rcheckableType = /^(?:checkbox|radio)$/, // checked="checked" or checked rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rscriptType = /\/(java|ecma)script/i, rcleanScript = /^\s*\s*$/g, wrapMap = { option: [ 1, "" ], legend: [ 1, "
", "
" ], thead: [ 1, "", "
" ], tr: [ 2, "", "
" ], td: [ 3, "", "
" ], col: [ 2, "", "
" ], area: [ 1, "", "" ], _default: [ 0, "", "" ] }, safeFragment = createSafeFragment( document ), fragmentDiv = safeFragment.appendChild( document.createElement("div") ); wrapMap.optgroup = wrapMap.option; wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; wrapMap.th = wrapMap.td; // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, // unless wrapped in a div with non-breaking characters in front of it. if ( !jQuery.support.htmlSerialize ) { wrapMap._default = [ 1, "X
", "
" ]; } jQuery.fn.extend({ text: function( value ) { return jQuery.access( this, function( value ) { return value === undefined ? jQuery.text( this ) : this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); }, null, value, arguments.length ); }, wrapAll: function( html ) { if ( jQuery.isFunction( html ) ) { return this.each(function(i) { jQuery(this).wrapAll( html.call(this, i) ); }); } if ( this[0] ) { // The elements to wrap the target around var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); if ( this[0].parentNode ) { wrap.insertBefore( this[0] ); } wrap.map(function() { var elem = this; while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { elem = elem.firstChild; } return elem; }).append( this ); } return this; }, wrapInner: function( html ) { if ( jQuery.isFunction( html ) ) { return this.each(function(i) { jQuery(this).wrapInner( html.call(this, i) ); }); } return this.each(function() { var self = jQuery( this ), contents = self.contents(); if ( contents.length ) { contents.wrapAll( html ); } else { self.append( html ); } }); }, wrap: function( html ) { var isFunction = jQuery.isFunction( html ); return this.each(function(i) { jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); }); }, unwrap: function() { return this.parent().each(function() { if ( !jQuery.nodeName( this, "body" ) ) { jQuery( this ).replaceWith( this.childNodes ); } }).end(); }, append: function() { return this.domManip(arguments, true, function( elem ) { if ( this.nodeType === 1 || this.nodeType === 11 ) { this.appendChild( elem ); } }); }, prepend: function() { return this.domManip(arguments, true, function( elem ) { if ( this.nodeType === 1 || this.nodeType === 11 ) { this.insertBefore( elem, this.firstChild ); } }); }, before: function() { if ( !isDisconnected( this[0] ) ) { return this.domManip(arguments, false, function( elem ) { this.parentNode.insertBefore( elem, this ); }); } if ( arguments.length ) { var set = jQuery.clean( arguments ); return this.pushStack( jQuery.merge( set, this ), "before", this.selector ); } }, after: function() { if ( !isDisconnected( this[0] ) ) { return this.domManip(arguments, false, function( elem ) { this.parentNode.insertBefore( elem, this.nextSibling ); }); } if ( arguments.length ) { var set = jQuery.clean( arguments ); return this.pushStack( jQuery.merge( this, set ), "after", this.selector ); } }, // keepData is for internal use only--do not document remove: function( selector, keepData ) { var elem, i = 0; for ( ; (elem = this[i]) != null; i++ ) { if ( !selector || jQuery.filter( selector, [ elem ] ).length ) { if ( !keepData && elem.nodeType === 1 ) { jQuery.cleanData( elem.getElementsByTagName("*") ); jQuery.cleanData( [ elem ] ); } if ( elem.parentNode ) { elem.parentNode.removeChild( elem ); } } } return this; }, empty: function() { var elem, i = 0; for ( ; (elem = this[i]) != null; i++ ) { // Remove element nodes and prevent memory leaks if ( elem.nodeType === 1 ) { jQuery.cleanData( elem.getElementsByTagName("*") ); } // Remove any remaining nodes while ( elem.firstChild ) { elem.removeChild( elem.firstChild ); } } return this; }, clone: function( dataAndEvents, deepDataAndEvents ) { dataAndEvents = dataAndEvents == null ? false : dataAndEvents; deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; return this.map( function () { return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); }); }, html: function( value ) { return jQuery.access( this, function( value ) { var elem = this[0] || {}, i = 0, l = this.length; if ( value === undefined ) { return elem.nodeType === 1 ? elem.innerHTML.replace( rinlinejQuery, "" ) : undefined; } // See if we can take a shortcut and just use innerHTML if ( typeof value === "string" && !rnoInnerhtml.test( value ) && ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { value = value.replace( rxhtmlTag, "<$1>" ); try { for (; i < l; i++ ) { // Remove element nodes and prevent memory leaks elem = this[i] || {}; if ( elem.nodeType === 1 ) { jQuery.cleanData( elem.getElementsByTagName( "*" ) ); elem.innerHTML = value; } } elem = 0; // If using innerHTML throws an exception, use the fallback method } catch(e) {} } if ( elem ) { this.empty().append( value ); } }, null, value, arguments.length ); }, replaceWith: function( value ) { if ( !isDisconnected( this[0] ) ) { // Make sure that the elements are removed from the DOM before they are inserted // this can help fix replacing a parent with child elements if ( jQuery.isFunction( value ) ) { return this.each(function(i) { var self = jQuery(this), old = self.html(); self.replaceWith( value.call( this, i, old ) ); }); } if ( typeof value !== "string" ) { value = jQuery( value ).detach(); } return this.each(function() { var next = this.nextSibling, parent = this.parentNode; jQuery( this ).remove(); if ( next ) { jQuery(next).before( value ); } else { jQuery(parent).append( value ); } }); } return this.length ? this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) : this; }, detach: function( selector ) { return this.remove( selector, true ); }, domManip: function( args, table, callback ) { // Flatten any nested arrays args = [].concat.apply( [], args ); var results, first, fragment, iNoClone, i = 0, value = args[0], scripts = [], l = this.length; // We can't cloneNode fragments that contain checked, in WebKit if ( !jQuery.support.checkClone && l > 1 && typeof value === "string" && rchecked.test( value ) ) { return this.each(function() { jQuery(this).domManip( args, table, callback ); }); } if ( jQuery.isFunction(value) ) { return this.each(function(i) { var self = jQuery(this); args[0] = value.call( this, i, table ? self.html() : undefined ); self.domManip( args, table, callback ); }); } if ( this[0] ) { results = jQuery.buildFragment( args, this, scripts ); fragment = results.fragment; first = fragment.firstChild; if ( fragment.childNodes.length === 1 ) { fragment = first; } if ( first ) { table = table && jQuery.nodeName( first, "tr" ); // Use the original fragment for the last item instead of the first because it can end up // being emptied incorrectly in certain situations (#8070). // Fragments from the fragment cache must always be cloned and never used in place. for ( iNoClone = results.cacheable || l - 1; i < l; i++ ) { callback.call( table && jQuery.nodeName( this[i], "table" ) ? findOrAppend( this[i], "tbody" ) : this[i], i === iNoClone ? fragment : jQuery.clone( fragment, true, true ) ); } } // Fix #11809: Avoid leaking memory fragment = first = null; if ( scripts.length ) { jQuery.each( scripts, function( i, elem ) { if ( elem.src ) { if ( jQuery.ajax ) { jQuery.ajax({ url: elem.src, type: "GET", dataType: "script", async: false, global: false, "throws": true }); } else { jQuery.error("no ajax"); } } else { jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "" ) ); } if ( elem.parentNode ) { elem.parentNode.removeChild( elem ); } }); } } return this; } }); function findOrAppend( elem, tag ) { return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) ); } function cloneCopyEvent( src, dest ) { if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { return; } var type, i, l, oldData = jQuery._data( src ), curData = jQuery._data( dest, oldData ), events = oldData.events; if ( events ) { delete curData.handle; curData.events = {}; for ( type in events ) { for ( i = 0, l = events[ type ].length; i < l; i++ ) { jQuery.event.add( dest, type, events[ type ][ i ] ); } } } // make the cloned public data object a copy from the original if ( curData.data ) { curData.data = jQuery.extend( {}, curData.data ); } } function cloneFixAttributes( src, dest ) { var nodeName; // We do not need to do anything for non-Elements if ( dest.nodeType !== 1 ) { return; } // clearAttributes removes the attributes, which we don't want, // but also removes the attachEvent events, which we *do* want if ( dest.clearAttributes ) { dest.clearAttributes(); } // mergeAttributes, in contrast, only merges back on the // original attributes, not the events if ( dest.mergeAttributes ) { dest.mergeAttributes( src ); } nodeName = dest.nodeName.toLowerCase(); if ( nodeName === "object" ) { // IE6-10 improperly clones children of object elements using classid. // IE10 throws NoModificationAllowedError if parent is null, #12132. if ( dest.parentNode ) { dest.outerHTML = src.outerHTML; } // This path appears unavoidable for IE9. When cloning an object // element in IE9, the outerHTML strategy above is not sufficient. // If the src has innerHTML and the destination does not, // copy the src.innerHTML into the dest.innerHTML. #10324 if ( jQuery.support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML)) ) { dest.innerHTML = src.innerHTML; } } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { // IE6-8 fails to persist the checked state of a cloned checkbox // or radio button. Worse, IE6-7 fail to give the cloned element // a checked appearance if the defaultChecked value isn't also set dest.defaultChecked = dest.checked = src.checked; // IE6-7 get confused and end up setting the value of a cloned // checkbox/radio button to an empty string instead of "on" if ( dest.value !== src.value ) { dest.value = src.value; } // IE6-8 fails to return the selected option to the default selected // state when cloning options } else if ( nodeName === "option" ) { dest.selected = src.defaultSelected; // IE6-8 fails to set the defaultValue to the correct value when // cloning other types of input fields } else if ( nodeName === "input" || nodeName === "textarea" ) { dest.defaultValue = src.defaultValue; // IE blanks contents when cloning scripts } else if ( nodeName === "script" && dest.text !== src.text ) { dest.text = src.text; } // Event data gets referenced instead of copied if the expando // gets copied too dest.removeAttribute( jQuery.expando ); } jQuery.buildFragment = function( args, context, scripts ) { var fragment, cacheable, cachehit, first = args[ 0 ]; // Set context from what may come in as undefined or a jQuery collection or a node // Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 & // also doubles as fix for #8950 where plain objects caused createDocumentFragment exception context = context || document; context = !context.nodeType && context[0] || context; context = context.ownerDocument || context; // Only cache "small" (1/2 KB) HTML strings that are associated with the main document // Cloning options loses the selected state, so don't cache them // IE 6 doesn't like it when you put or elements in a fragment // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache // Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501 if ( args.length === 1 && typeof first === "string" && first.length < 512 && context === document && first.charAt(0) === "<" && !rnocache.test( first ) && (jQuery.support.checkClone || !rchecked.test( first )) && (jQuery.support.html5Clone || !rnoshimcache.test( first )) ) { // Mark cacheable and look for a hit cacheable = true; fragment = jQuery.fragments[ first ]; cachehit = fragment !== undefined; } if ( !fragment ) { fragment = context.createDocumentFragment(); jQuery.clean( args, context, fragment, scripts ); // Update the cache, but only store false // unless this is a second parsing of the same content if ( cacheable ) { jQuery.fragments[ first ] = cachehit && fragment; } } return { fragment: fragment, cacheable: cacheable }; }; jQuery.fragments = {}; jQuery.each({ appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function( name, original ) { jQuery.fn[ name ] = function( selector ) { var elems, i = 0, ret = [], insert = jQuery( selector ), l = insert.length, parent = this.length === 1 && this[0].parentNode; if ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) { insert[ original ]( this[0] ); return this; } else { for ( ; i < l; i++ ) { elems = ( i > 0 ? this.clone(true) : this ).get(); jQuery( insert[i] )[ original ]( elems ); ret = ret.concat( elems ); } return this.pushStack( ret, name, insert.selector ); } }; }); function getAll( elem ) { if ( typeof elem.getElementsByTagName !== "undefined" ) { return elem.getElementsByTagName( "*" ); } else if ( typeof elem.querySelectorAll !== "undefined" ) { return elem.querySelectorAll( "*" ); } else { return []; } } // Used in clean, fixes the defaultChecked property function fixDefaultChecked( elem ) { if ( rcheckableType.test( elem.type ) ) { elem.defaultChecked = elem.checked; } } jQuery.extend({ clone: function( elem, dataAndEvents, deepDataAndEvents ) { var srcElements, destElements, i, clone; if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { clone = elem.cloneNode( true ); // IE<=8 does not properly clone detached, unknown element nodes } else { fragmentDiv.innerHTML = elem.outerHTML; fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); } if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { // IE copies events bound via attachEvent when using cloneNode. // Calling detachEvent on the clone will also remove the events // from the original. In order to get around this, we use some // proprietary methods to clear the events. Thanks to MooTools // guys for this hotness. cloneFixAttributes( elem, clone ); // Using Sizzle here is crazy slow, so we use getElementsByTagName instead srcElements = getAll( elem ); destElements = getAll( clone ); // Weird iteration because IE will replace the length property // with an element if you are cloning the body and one of the // elements on the page has a name or id of "length" for ( i = 0; srcElements[i]; ++i ) { // Ensure that the destination node is not null; Fixes #9587 if ( destElements[i] ) { cloneFixAttributes( srcElements[i], destElements[i] ); } } } // Copy the events from the original to the clone if ( dataAndEvents ) { cloneCopyEvent( elem, clone ); if ( deepDataAndEvents ) { srcElements = getAll( elem ); destElements = getAll( clone ); for ( i = 0; srcElements[i]; ++i ) { cloneCopyEvent( srcElements[i], destElements[i] ); } } } srcElements = destElements = null; // Return the cloned set return clone; }, clean: function( elems, context, fragment, scripts ) { var i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags, safe = context === document && safeFragment, ret = []; // Ensure that context is a document if ( !context || typeof context.createDocumentFragment === "undefined" ) { context = document; } // Use the already-created safe fragment if context permits for ( i = 0; (elem = elems[i]) != null; i++ ) { if ( typeof elem === "number" ) { elem += ""; } if ( !elem ) { continue; } // Convert html string into DOM nodes if ( typeof elem === "string" ) { if ( !rhtml.test( elem ) ) { elem = context.createTextNode( elem ); } else { // Ensure a safe container in which to render the html safe = safe || createSafeFragment( context ); div = context.createElement("div"); safe.appendChild( div ); // Fix "XHTML"-style tags in all browsers elem = elem.replace(rxhtmlTag, "<$1>"); // Go to html and back, then peel off extra wrappers tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); wrap = wrapMap[ tag ] || wrapMap._default; depth = wrap[0]; div.innerHTML = wrap[1] + elem + wrap[2]; // Move to the right depth while ( depth-- ) { div = div.lastChild; } // Remove IE's autoinserted from table fragments if ( !jQuery.support.tbody ) { // String was a , *may* have spurious hasBody = rtbody.test(elem); tbody = tag === "table" && !hasBody ? div.firstChild && div.firstChild.childNodes : // String was a bare or wrap[1] === "
" && !hasBody ? div.childNodes : []; for ( j = tbody.length - 1; j >= 0 ; --j ) { if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) { tbody[ j ].parentNode.removeChild( tbody[ j ] ); } } } // IE completely kills leading whitespace when innerHTML is used if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild ); } elem = div.childNodes; // Take out of fragment container (we need a fresh div each time) div.parentNode.removeChild( div ); } } if ( elem.nodeType ) { ret.push( elem ); } else { jQuery.merge( ret, elem ); } } // Fix #11356: Clear elements from safeFragment if ( div ) { elem = div = safe = null; } // Reset defaultChecked for any radios and checkboxes // about to be appended to the DOM in IE 6/7 (#8060) if ( !jQuery.support.appendChecked ) { for ( i = 0; (elem = ret[i]) != null; i++ ) { if ( jQuery.nodeName( elem, "input" ) ) { fixDefaultChecked( elem ); } else if ( typeof elem.getElementsByTagName !== "undefined" ) { jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked ); } } } // Append elements to a provided document fragment if ( fragment ) { // Special handling of each script element handleScript = function( elem ) { // Check if we consider it executable if ( !elem.type || rscriptType.test( elem.type ) ) { // Detach the script and store it in the scripts array (if provided) or the fragment // Return truthy to indicate that it has been handled return scripts ? scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) : fragment.appendChild( elem ); } }; for ( i = 0; (elem = ret[i]) != null; i++ ) { // Check if we're done after handling an executable script if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) { // Append to fragment and handle embedded scripts fragment.appendChild( elem ); if ( typeof elem.getElementsByTagName !== "undefined" ) { // handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript ); // Splice the scripts into ret after their former ancestor and advance our index beyond them ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) ); i += jsTags.length; } } } } return ret; }, cleanData: function( elems, /* internal */ acceptData ) { var data, id, elem, type, i = 0, internalKey = jQuery.expando, cache = jQuery.cache, deleteExpando = jQuery.support.deleteExpando, special = jQuery.event.special; for ( ; (elem = elems[i]) != null; i++ ) { if ( acceptData || jQuery.acceptData( elem ) ) { id = elem[ internalKey ]; data = id && cache[ id ]; if ( data ) { if ( data.events ) { for ( type in data.events ) { if ( special[ type ] ) { jQuery.event.remove( elem, type ); // This is a shortcut to avoid jQuery.event.remove's overhead } else { jQuery.removeEvent( elem, type, data.handle ); } } } // Remove cache only if it was not already removed by jQuery.event.remove if ( cache[ id ] ) { delete cache[ id ]; // IE does not allow us to delete expando properties from nodes, // nor does it have a removeAttribute function on Document nodes; // we must handle all of these cases if ( deleteExpando ) { delete elem[ internalKey ]; } else if ( elem.removeAttribute ) { elem.removeAttribute( internalKey ); } else { elem[ internalKey ] = null; } jQuery.deletedIds.push( id ); } } } } } }); // Limit scope pollution from any deprecated API (function() { var matched, browser; // Use of jQuery.browser is frowned upon. // More details: http://api.jquery.com/jQuery.browser // jQuery.uaMatch maintained for back-compat jQuery.uaMatch = function( ua ) { ua = ua.toLowerCase(); var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) || /(webkit)[ \/]([\w.]+)/.exec( ua ) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) || /(msie) ([\w.]+)/.exec( ua ) || ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) || []; return { browser: match[ 1 ] || "", version: match[ 2 ] || "0" }; }; matched = jQuery.uaMatch( navigator.userAgent ); browser = {}; if ( matched.browser ) { browser[ matched.browser ] = true; browser.version = matched.version; } // Chrome is Webkit, but Webkit is also Safari. if ( browser.chrome ) { browser.webkit = true; } else if ( browser.webkit ) { browser.safari = true; } jQuery.browser = browser; jQuery.sub = function() { function jQuerySub( selector, context ) { return new jQuerySub.fn.init( selector, context ); } jQuery.extend( true, jQuerySub, this ); jQuerySub.superclass = this; jQuerySub.fn = jQuerySub.prototype = this(); jQuerySub.fn.constructor = jQuerySub; jQuerySub.sub = this.sub; jQuerySub.fn.init = function init( selector, context ) { if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { context = jQuerySub( context ); } return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); }; jQuerySub.fn.init.prototype = jQuerySub.fn; var rootjQuerySub = jQuerySub(document); return jQuerySub; }; })(); var curCSS, iframe, iframeDoc, ralpha = /alpha\([^)]*\)/i, ropacity = /opacity=([^)]*)/, rposition = /^(top|right|bottom|left)$/, // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display rdisplayswap = /^(none|table(?!-c[ea]).+)/, rmargin = /^margin/, rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), rrelNum = new RegExp( "^([-+])=(" + core_pnum + ")", "i" ), elemdisplay = {}, cssShow = { position: "absolute", visibility: "hidden", display: "block" }, cssNormalTransform = { letterSpacing: 0, fontWeight: 400 }, cssExpand = [ "Top", "Right", "Bottom", "Left" ], cssPrefixes = [ "Webkit", "O", "Moz", "ms" ], eventsToggle = jQuery.fn.toggle; // return a css property mapped to a potentially vendor prefixed property function vendorPropName( style, name ) { // shortcut for names that are not vendor prefixed if ( name in style ) { return name; } // check for vendor prefixed names var capName = name.charAt(0).toUpperCase() + name.slice(1), origName = name, i = cssPrefixes.length; while ( i-- ) { name = cssPrefixes[ i ] + capName; if ( name in style ) { return name; } } return origName; } function isHidden( elem, el ) { elem = el || elem; return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); } function showHide( elements, show ) { var elem, display, values = [], index = 0, length = elements.length; for ( ; index < length; index++ ) { elem = elements[ index ]; if ( !elem.style ) { continue; } values[ index ] = jQuery._data( elem, "olddisplay" ); if ( show ) { // Reset the inline display of this element to learn if it is // being hidden by cascaded rules or not if ( !values[ index ] && elem.style.display === "none" ) { elem.style.display = ""; } // Set elements which have been overridden with display: none // in a stylesheet to whatever the default browser style is // for such an element if ( elem.style.display === "" && isHidden( elem ) ) { values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); } } else { display = curCSS( elem, "display" ); if ( !values[ index ] && display !== "none" ) { jQuery._data( elem, "olddisplay", display ); } } } // Set the display of most of the elements in a second loop // to avoid the constant reflow for ( index = 0; index < length; index++ ) { elem = elements[ index ]; if ( !elem.style ) { continue; } if ( !show || elem.style.display === "none" || elem.style.display === "" ) { elem.style.display = show ? values[ index ] || "" : "none"; } } return elements; } jQuery.fn.extend({ css: function( name, value ) { return jQuery.access( this, function( elem, name, value ) { return value !== undefined ? jQuery.style( elem, name, value ) : jQuery.css( elem, name ); }, name, value, arguments.length > 1 ); }, show: function() { return showHide( this, true ); }, hide: function() { return showHide( this ); }, toggle: function( state, fn2 ) { var bool = typeof state === "boolean"; if ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) { return eventsToggle.apply( this, arguments ); } return this.each(function() { if ( bool ? state : isHidden( this ) ) { jQuery( this ).show(); } else { jQuery( this ).hide(); } }); } }); jQuery.extend({ // Add in style property hooks for overriding the default // behavior of getting and setting a style property cssHooks: { opacity: { get: function( elem, computed ) { if ( computed ) { // We should always get a number back from opacity var ret = curCSS( elem, "opacity" ); return ret === "" ? "1" : ret; } } } }, // Exclude the following css properties to add px cssNumber: { "fillOpacity": true, "fontWeight": true, "lineHeight": true, "opacity": true, "orphans": true, "widows": true, "zIndex": true, "zoom": true }, // Add in properties whose names you wish to fix before // setting or getting the value cssProps: { // normalize float css property "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" }, // Get and set the style property on a DOM Node style: function( elem, name, value, extra ) { // Don't set styles on text and comment nodes if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { return; } // Make sure that we're working with the right name var ret, type, hooks, origName = jQuery.camelCase( name ), style = elem.style; name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); // gets hook for the prefixed version // followed by the unprefixed version hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; // Check if we're setting a value if ( value !== undefined ) { type = typeof value; // convert relative number strings (+= or -=) to relative numbers. #7345 if ( type === "string" && (ret = rrelNum.exec( value )) ) { value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); // Fixes bug #9237 type = "number"; } // Make sure that NaN and null values aren't set. See: #7116 if ( value == null || type === "number" && isNaN( value ) ) { return; } // If a number was passed in, add 'px' to the (except for certain CSS properties) if ( type === "number" && !jQuery.cssNumber[ origName ] ) { value += "px"; } // If a hook was provided, use that value, otherwise just set the specified value if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { // Wrapped to prevent IE from throwing errors when 'invalid' values are provided // Fixes bug #5509 try { style[ name ] = value; } catch(e) {} } } else { // If a hook was provided get the non-computed value from there if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { return ret; } // Otherwise just get the value from the style object return style[ name ]; } }, css: function( elem, name, numeric, extra ) { var val, num, hooks, origName = jQuery.camelCase( name ); // Make sure that we're working with the right name name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); // gets hook for the prefixed version // followed by the unprefixed version hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; // If a hook was provided get the computed value from there if ( hooks && "get" in hooks ) { val = hooks.get( elem, true, extra ); } // Otherwise, if a way to get the computed value exists, use that if ( val === undefined ) { val = curCSS( elem, name ); } //convert "normal" to computed value if ( val === "normal" && name in cssNormalTransform ) { val = cssNormalTransform[ name ]; } // Return, converting to number if forced or a qualifier was provided and val looks numeric if ( numeric || extra !== undefined ) { num = parseFloat( val ); return numeric || jQuery.isNumeric( num ) ? num || 0 : val; } return val; }, // A method for quickly swapping in/out CSS properties to get correct calculations swap: function( elem, options, callback ) { var ret, name, old = {}; // Remember the old values, and insert the new ones for ( name in options ) { old[ name ] = elem.style[ name ]; elem.style[ name ] = options[ name ]; } ret = callback.call( elem ); // Revert the old values for ( name in options ) { elem.style[ name ] = old[ name ]; } return ret; } }); // NOTE: To any future maintainer, we've window.getComputedStyle // because jsdom on node.js will break without it. if ( window.getComputedStyle ) { curCSS = function( elem, name ) { var ret, width, minWidth, maxWidth, computed = window.getComputedStyle( elem, null ), style = elem.style; if ( computed ) { ret = computed[ name ]; if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { ret = jQuery.style( elem, name ); } // A tribute to the "awesome hack by Dean Edwards" // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { width = style.width; minWidth = style.minWidth; maxWidth = style.maxWidth; style.minWidth = style.maxWidth = style.width = ret; ret = computed.width; style.width = width; style.minWidth = minWidth; style.maxWidth = maxWidth; } } return ret; }; } else if ( document.documentElement.currentStyle ) { curCSS = function( elem, name ) { var left, rsLeft, ret = elem.currentStyle && elem.currentStyle[ name ], style = elem.style; // Avoid setting ret to empty string here // so we don't default to auto if ( ret == null && style && style[ name ] ) { ret = style[ name ]; } // From the awesome hack by Dean Edwards // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 // If we're not dealing with a regular pixel number // but a number that has a weird ending, we need to convert it to pixels // but not position css attributes, as those are proportional to the parent element instead // and we can't measure the parent instead because it might trigger a "stacking dolls" problem if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { // Remember the original values left = style.left; rsLeft = elem.runtimeStyle && elem.runtimeStyle.left; // Put in the new values to get a computed value out if ( rsLeft ) { elem.runtimeStyle.left = elem.currentStyle.left; } style.left = name === "fontSize" ? "1em" : ret; ret = style.pixelLeft + "px"; // Revert the changed values style.left = left; if ( rsLeft ) { elem.runtimeStyle.left = rsLeft; } } return ret === "" ? "auto" : ret; }; } function setPositiveNumber( elem, value, subtract ) { var matches = rnumsplit.exec( value ); return matches ? Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : value; } function augmentWidthOrHeight( elem, name, extra, isBorderBox ) { var i = extra === ( isBorderBox ? "border" : "content" ) ? // If we already have the right measurement, avoid augmentation 4 : // Otherwise initialize for horizontal or vertical properties name === "width" ? 1 : 0, val = 0; for ( ; i < 4; i += 2 ) { // both box models exclude margin, so add it if we want it if ( extra === "margin" ) { // we use jQuery.css instead of curCSS here // because of the reliableMarginRight CSS hook! val += jQuery.css( elem, extra + cssExpand[ i ], true ); } // From this point on we use curCSS for maximum performance (relevant in animations) if ( isBorderBox ) { // border-box includes padding, so remove it if we want content if ( extra === "content" ) { val -= parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0; } // at this point, extra isn't border nor margin, so remove border if ( extra !== "margin" ) { val -= parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0; } } else { // at this point, extra isn't content, so add padding val += parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0; // at this point, extra isn't content nor padding, so add border if ( extra !== "padding" ) { val += parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0; } } } return val; } function getWidthOrHeight( elem, name, extra ) { // Start with offset property, which is equivalent to the border-box value var val = name === "width" ? elem.offsetWidth : elem.offsetHeight, valueIsBorderBox = true, isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box"; // some non-html elements return undefined for offsetWidth, so check for null/undefined // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 if ( val <= 0 || val == null ) { // Fall back to computed then uncomputed css if necessary val = curCSS( elem, name ); if ( val < 0 || val == null ) { val = elem.style[ name ]; } // Computed unit is not pixels. Stop here and return. if ( rnumnonpx.test(val) ) { return val; } // we need the check for style in case a browser which returns unreliable values // for getComputedStyle silently falls back to the reliable elem.style valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); // Normalize "", auto, and prepare for extra val = parseFloat( val ) || 0; } // use the active box-sizing model to add/subtract irrelevant styles return ( val + augmentWidthOrHeight( elem, name, extra || ( isBorderBox ? "border" : "content" ), valueIsBorderBox ) ) + "px"; } // Try to determine the default display value of an element function css_defaultDisplay( nodeName ) { if ( elemdisplay[ nodeName ] ) { return elemdisplay[ nodeName ]; } var elem = jQuery( "<" + nodeName + ">" ).appendTo( document.body ), display = elem.css("display"); elem.remove(); // If the simple way fails, // get element's real default display by attaching it to a temp iframe if ( display === "none" || display === "" ) { // Use the already-created iframe if possible iframe = document.body.appendChild( iframe || jQuery.extend( document.createElement("iframe"), { frameBorder: 0, width: 0, height: 0 }) ); // Create a cacheable copy of the iframe document on first call. // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML // document to it; WebKit & Firefox won't allow reusing the iframe document. if ( !iframeDoc || !iframe.createElement ) { iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document; iframeDoc.write(""); iframeDoc.close(); } elem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) ); display = curCSS( elem, "display" ); document.body.removeChild( iframe ); } // Store the correct default display elemdisplay[ nodeName ] = display; return display; } jQuery.each([ "height", "width" ], function( i, name ) { jQuery.cssHooks[ name ] = { get: function( elem, computed, extra ) { if ( computed ) { // certain elements can have dimension info if we invisibly show them // however, it must have a current display style that would benefit from this if ( elem.offsetWidth === 0 && rdisplayswap.test( curCSS( elem, "display" ) ) ) { return jQuery.swap( elem, cssShow, function() { return getWidthOrHeight( elem, name, extra ); }); } else { return getWidthOrHeight( elem, name, extra ); } } }, set: function( elem, value, extra ) { return setPositiveNumber( elem, value, extra ? augmentWidthOrHeight( elem, name, extra, jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box" ) : 0 ); } }; }); if ( !jQuery.support.opacity ) { jQuery.cssHooks.opacity = { get: function( elem, computed ) { // IE uses filters for opacity return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ? ( 0.01 * parseFloat( RegExp.$1 ) ) + "" : computed ? "1" : ""; }, set: function( elem, value ) { var style = elem.style, currentStyle = elem.currentStyle, opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "", filter = currentStyle && currentStyle.filter || style.filter || ""; // IE has trouble with opacity if it does not have layout // Force it by setting the zoom level style.zoom = 1; // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652 if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" && style.removeAttribute ) { // Setting style.filter to null, "" & " " still leave "filter:" in the cssText // if "filter:" is present at all, clearType is disabled, we want to avoid this // style.removeAttribute is IE Only, but so apparently is this code path... style.removeAttribute( "filter" ); // if there there is no filter style applied in a css rule, we are done if ( currentStyle && !currentStyle.filter ) { return; } } // otherwise, set new filter values style.filter = ralpha.test( filter ) ? filter.replace( ralpha, opacity ) : filter + " " + opacity; } }; } // These hooks cannot be added until DOM ready because the support test // for it is not run until after DOM ready jQuery(function() { if ( !jQuery.support.reliableMarginRight ) { jQuery.cssHooks.marginRight = { get: function( elem, computed ) { // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right // Work around by temporarily setting element display to inline-block return jQuery.swap( elem, { "display": "inline-block" }, function() { if ( computed ) { return curCSS( elem, "marginRight" ); } }); } }; } // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 // getComputedStyle returns percent when specified for top/left/bottom/right // rather than make the css module depend on the offset module, we just check for it here if ( !jQuery.support.pixelPosition && jQuery.fn.position ) { jQuery.each( [ "top", "left" ], function( i, prop ) { jQuery.cssHooks[ prop ] = { get: function( elem, computed ) { if ( computed ) { var ret = curCSS( elem, prop ); // if curCSS returns percentage, fallback to offset return rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + "px" : ret; } } }; }); } }); if ( jQuery.expr && jQuery.expr.filters ) { jQuery.expr.filters.hidden = function( elem ) { return ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, "display" )) === "none"); }; jQuery.expr.filters.visible = function( elem ) { return !jQuery.expr.filters.hidden( elem ); }; } // These hooks are used by animate to expand properties jQuery.each({ margin: "", padding: "", border: "Width" }, function( prefix, suffix ) { jQuery.cssHooks[ prefix + suffix ] = { expand: function( value ) { var i, // assumes a single number if not a string parts = typeof value === "string" ? value.split(" ") : [ value ], expanded = {}; for ( i = 0; i < 4; i++ ) { expanded[ prefix + cssExpand[ i ] + suffix ] = parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; } return expanded; } }; if ( !rmargin.test( prefix ) ) { jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; } }); var r20 = /%20/g, rbracket = /\[\]$/, rCRLF = /\r?\n/g, rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, rselectTextarea = /^(?:select|textarea)/i; jQuery.fn.extend({ serialize: function() { return jQuery.param( this.serializeArray() ); }, serializeArray: function() { return this.map(function(){ return this.elements ? jQuery.makeArray( this.elements ) : this; }) .filter(function(){ return this.name && !this.disabled && ( this.checked || rselectTextarea.test( this.nodeName ) || rinput.test( this.type ) ); }) .map(function( i, elem ){ var val = jQuery( this ).val(); return val == null ? null : jQuery.isArray( val ) ? jQuery.map( val, function( val, i ){ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; }) : { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; }).get(); } }); //Serialize an array of form elements or a set of //key/values into a query string jQuery.param = function( a, traditional ) { var prefix, s = [], add = function( key, value ) { // If value is a function, invoke it and return its value value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); }; // Set traditional to true for jQuery <= 1.3.2 behavior. if ( traditional === undefined ) { traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; } // If an array was passed in, assume that it is an array of form elements. if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { // Serialize the form elements jQuery.each( a, function() { add( this.name, this.value ); }); } else { // If traditional, encode the "old" way (the way 1.3.2 or older // did it), otherwise encode params recursively. for ( prefix in a ) { buildParams( prefix, a[ prefix ], traditional, add ); } } // Return the resulting serialization return s.join( "&" ).replace( r20, "+" ); }; function buildParams( prefix, obj, traditional, add ) { var name; if ( jQuery.isArray( obj ) ) { // Serialize array item. jQuery.each( obj, function( i, v ) { if ( traditional || rbracket.test( prefix ) ) { // Treat each array item as a scalar. add( prefix, v ); } else { // If array item is non-scalar (array or object), encode its // numeric index to resolve deserialization ambiguity issues. // Note that rack (as of 1.0.0) can't currently deserialize // nested arrays properly, and attempting to do so may cause // a server error. Possible fixes are to modify rack's // deserialization algorithm or to provide an option or flag // to force array serialization to be shallow. buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add ); } }); } else if ( !traditional && jQuery.type( obj ) === "object" ) { // Serialize object item. for ( name in obj ) { buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); } } else { // Serialize scalar item. add( prefix, obj ); } } var // Document location ajaxLocParts, ajaxLocation, rhash = /#.*$/, rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL // #7653, #8125, #8152: local protocol detection rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, rquery = /\?/, rscript = /)<[^<]*)*<\/script>/gi, rts = /([?&])_=[^&]*/, rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/, // Keep a copy of the old load method _load = jQuery.fn.load, /* Prefilters * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) * 2) These are called: * - BEFORE asking for a transport * - AFTER param serialization (s.data is a string if s.processData is true) * 3) key is the dataType * 4) the catchall symbol "*" can be used * 5) execution will start with transport dataType and THEN continue down to "*" if needed */ prefilters = {}, /* Transports bindings * 1) key is the dataType * 2) the catchall symbol "*" can be used * 3) selection will start with transport dataType and THEN go to "*" if needed */ transports = {}, // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression allTypes = ["*/"] + ["*"]; // #8138, IE may throw an exception when accessing // a field from window.location if document.domain has been set try { ajaxLocation = location.href; } catch( e ) { // Use the href attribute of an A element // since IE will modify it given document.location ajaxLocation = document.createElement( "a" ); ajaxLocation.href = ""; ajaxLocation = ajaxLocation.href; } // Segment location into parts ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || []; // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport function addToPrefiltersOrTransports( structure ) { // dataTypeExpression is optional and defaults to "*" return function( dataTypeExpression, func ) { if ( typeof dataTypeExpression !== "string" ) { func = dataTypeExpression; dataTypeExpression = "*"; } var dataType, list, placeBefore, dataTypes = dataTypeExpression.toLowerCase().split( core_rspace ), i = 0, length = dataTypes.length; if ( jQuery.isFunction( func ) ) { // For each dataType in the dataTypeExpression for ( ; i < length; i++ ) { dataType = dataTypes[ i ]; // We control if we're asked to add before // any existing element placeBefore = /^\+/.test( dataType ); if ( placeBefore ) { dataType = dataType.substr( 1 ) || "*"; } list = structure[ dataType ] = structure[ dataType ] || []; // then we add to the structure accordingly list[ placeBefore ? "unshift" : "push" ]( func ); } } }; } // Base inspection function for prefilters and transports function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR, dataType /* internal */, inspected /* internal */ ) { dataType = dataType || options.dataTypes[ 0 ]; inspected = inspected || {}; inspected[ dataType ] = true; var selection, list = structure[ dataType ], i = 0, length = list ? list.length : 0, executeOnly = ( structure === prefilters ); for ( ; i < length && ( executeOnly || !selection ); i++ ) { selection = list[ i ]( options, originalOptions, jqXHR ); // If we got redirected to another dataType // we try there if executing only and not done already if ( typeof selection === "string" ) { if ( !executeOnly || inspected[ selection ] ) { selection = undefined; } else { options.dataTypes.unshift( selection ); selection = inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR, selection, inspected ); } } } // If we're only executing or nothing was selected // we try the catchall dataType if not done already if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) { selection = inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR, "*", inspected ); } // unnecessary when only executing (prefilters) // but it'll be ignored by the caller in that case return selection; } // A special extend for ajax options // that takes "flat" options (not to be deep extended) // Fixes #9887 function ajaxExtend( target, src ) { var key, deep, flatOptions = jQuery.ajaxSettings.flatOptions || {}; for ( key in src ) { if ( src[ key ] !== undefined ) { ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; } } if ( deep ) { jQuery.extend( true, target, deep ); } } jQuery.fn.load = function( url, params, callback ) { if ( typeof url !== "string" && _load ) { return _load.apply( this, arguments ); } // Don't do a request if no elements are being requested if ( !this.length ) { return this; } var selector, type, response, self = this, off = url.indexOf(" "); if ( off >= 0 ) { selector = url.slice( off, url.length ); url = url.slice( 0, off ); } // If it's a function if ( jQuery.isFunction( params ) ) { // We assume that it's the callback callback = params; params = undefined; // Otherwise, build a param string } else if ( params && typeof params === "object" ) { type = "POST"; } // Request the remote document jQuery.ajax({ url: url, // if "type" variable is undefined, then "GET" method will be used type: type, dataType: "html", data: params, complete: function( jqXHR, status ) { if ( callback ) { self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); } } }).done(function( responseText ) { // Save response for use in complete callback response = arguments; // See if a selector was specified self.html( selector ? // Create a dummy div to hold the results jQuery("
") // inject the contents of the document in, removing the scripts // to avoid any 'Permission Denied' errors in IE .append( responseText.replace( rscript, "" ) ) // Locate the specified elements .find( selector ) : // If not, just inject the full result responseText ); }); return this; }; // Attach a bunch of functions for handling common AJAX events jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){ jQuery.fn[ o ] = function( f ){ return this.on( o, f ); }; }); jQuery.each( [ "get", "post" ], function( i, method ) { jQuery[ method ] = function( url, data, callback, type ) { // shift arguments if data argument was omitted if ( jQuery.isFunction( data ) ) { type = type || callback; callback = data; data = undefined; } return jQuery.ajax({ type: method, url: url, data: data, success: callback, dataType: type }); }; }); jQuery.extend({ getScript: function( url, callback ) { return jQuery.get( url, undefined, callback, "script" ); }, getJSON: function( url, data, callback ) { return jQuery.get( url, data, callback, "json" ); }, // Creates a full fledged settings object into target // with both ajaxSettings and settings fields. // If target is omitted, writes into ajaxSettings. ajaxSetup: function( target, settings ) { if ( settings ) { // Building a settings object ajaxExtend( target, jQuery.ajaxSettings ); } else { // Extending ajaxSettings settings = target; target = jQuery.ajaxSettings; } ajaxExtend( target, settings ); return target; }, ajaxSettings: { url: ajaxLocation, isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), global: true, type: "GET", contentType: "application/x-www-form-urlencoded; charset=UTF-8", processData: true, async: true, /* timeout: 0, data: null, dataType: null, username: null, password: null, cache: null, throws: false, traditional: false, headers: {}, */ accepts: { xml: "application/xml, text/xml", html: "text/html", text: "text/plain", json: "application/json, text/javascript", "*": allTypes }, contents: { xml: /xml/, html: /html/, json: /json/ }, responseFields: { xml: "responseXML", text: "responseText" }, // List of data converters // 1) key format is "source_type destination_type" (a single space in-between) // 2) the catchall symbol "*" can be used for source_type converters: { // Convert anything to text "* text": window.String, // Text to html (true = no transformation) "text html": true, // Evaluate text as a json expression "text json": jQuery.parseJSON, // Parse text as xml "text xml": jQuery.parseXML }, // For options that shouldn't be deep extended: // you can add your own custom options here if // and when you create one that shouldn't be // deep extended (see ajaxExtend) flatOptions: { context: true, url: true } }, ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), ajaxTransport: addToPrefiltersOrTransports( transports ), // Main method ajax: function( url, options ) { // If url is an object, simulate pre-1.5 signature if ( typeof url === "object" ) { options = url; url = undefined; } // Force options to be an object options = options || {}; var // ifModified key ifModifiedKey, // Response headers responseHeadersString, responseHeaders, // transport transport, // timeout handle timeoutTimer, // Cross-domain detection vars parts, // To know if global events are to be dispatched fireGlobals, // Loop variable i, // Create the final options object s = jQuery.ajaxSetup( {}, options ), // Callbacks context callbackContext = s.context || s, // Context for global events // It's the callbackContext if one was provided in the options // and if it's a DOM node or a jQuery collection globalEventContext = callbackContext !== s && ( callbackContext.nodeType || callbackContext instanceof jQuery ) ? jQuery( callbackContext ) : jQuery.event, // Deferreds deferred = jQuery.Deferred(), completeDeferred = jQuery.Callbacks( "once memory" ), // Status-dependent callbacks statusCode = s.statusCode || {}, // Headers (they are sent all at once) requestHeaders = {}, requestHeadersNames = {}, // The jqXHR state state = 0, // Default abort message strAbort = "canceled", // Fake xhr jqXHR = { readyState: 0, // Caches the header setRequestHeader: function( name, value ) { if ( !state ) { var lname = name.toLowerCase(); name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; requestHeaders[ name ] = value; } return this; }, // Raw string getAllResponseHeaders: function() { return state === 2 ? responseHeadersString : null; }, // Builds headers hashtable if needed getResponseHeader: function( key ) { var match; if ( state === 2 ) { if ( !responseHeaders ) { responseHeaders = {}; while( ( match = rheaders.exec( responseHeadersString ) ) ) { responseHeaders[ match[1].toLowerCase() ] = match[ 2 ]; } } match = responseHeaders[ key.toLowerCase() ]; } return match === undefined ? null : match; }, // Overrides response content-type header overrideMimeType: function( type ) { if ( !state ) { s.mimeType = type; } return this; }, // Cancel the request abort: function( statusText ) { statusText = statusText || strAbort; if ( transport ) { transport.abort( statusText ); } done( 0, statusText ); return this; } }; // Callback for when everything is done // It is defined here because jslint complains if it is declared // at the end of the function (which would be more logical and readable) function done( status, nativeStatusText, responses, headers ) { var isSuccess, success, error, response, modified, statusText = nativeStatusText; // Called once if ( state === 2 ) { return; } // State is "done" now state = 2; // Clear timeout if it exists if ( timeoutTimer ) { clearTimeout( timeoutTimer ); } // Dereference transport for early garbage collection // (no matter how long the jqXHR object will be used) transport = undefined; // Cache response headers responseHeadersString = headers || ""; // Set readyState jqXHR.readyState = status > 0 ? 4 : 0; // Get response data if ( responses ) { response = ajaxHandleResponses( s, jqXHR, responses ); } // If successful, handle type chaining if ( status >= 200 && status < 300 || status === 304 ) { // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. if ( s.ifModified ) { modified = jqXHR.getResponseHeader("Last-Modified"); if ( modified ) { jQuery.lastModified[ ifModifiedKey ] = modified; } modified = jqXHR.getResponseHeader("Etag"); if ( modified ) { jQuery.etag[ ifModifiedKey ] = modified; } } // If not modified if ( status === 304 ) { statusText = "notmodified"; isSuccess = true; // If we have data } else { isSuccess = ajaxConvert( s, response ); statusText = isSuccess.state; success = isSuccess.data; error = isSuccess.error; isSuccess = !error; } } else { // We extract error from statusText // then normalize statusText and status for non-aborts error = statusText; if ( !statusText || status ) { statusText = "error"; if ( status < 0 ) { status = 0; } } } // Set data for the fake xhr object jqXHR.status = status; jqXHR.statusText = ( nativeStatusText || statusText ) + ""; // Success/Error if ( isSuccess ) { deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); } else { deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); } // Status-dependent callbacks jqXHR.statusCode( statusCode ); statusCode = undefined; if ( fireGlobals ) { globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ), [ jqXHR, s, isSuccess ? success : error ] ); } // Complete completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); if ( fireGlobals ) { globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); // Handle the global AJAX counter if ( !( --jQuery.active ) ) { jQuery.event.trigger( "ajaxStop" ); } } } // Attach deferreds deferred.promise( jqXHR ); jqXHR.success = jqXHR.done; jqXHR.error = jqXHR.fail; jqXHR.complete = completeDeferred.add; // Status-dependent callbacks jqXHR.statusCode = function( map ) { if ( map ) { var tmp; if ( state < 2 ) { for ( tmp in map ) { statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ]; } } else { tmp = map[ jqXHR.status ]; jqXHR.always( tmp ); } } return this; }; // Remove hash character (#7531: and string promotion) // Add protocol if not provided (#5866: IE7 issue with protocol-less urls) // We also use the url parameter if available s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); // Extract dataTypes list s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( core_rspace ); // A cross-domain request is in order when we have a protocol:host:port mismatch if ( s.crossDomain == null ) { parts = rurl.exec( s.url.toLowerCase() ) || false; s.crossDomain = parts && ( parts.join(":") + ( parts[ 3 ] ? "" : parts[ 1 ] === "http:" ? 80 : 443 ) ) !== ( ajaxLocParts.join(":") + ( ajaxLocParts[ 3 ] ? "" : ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ); } // Convert data if not already a string if ( s.data && s.processData && typeof s.data !== "string" ) { s.data = jQuery.param( s.data, s.traditional ); } // Apply prefilters inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); // If request was aborted inside a prefilter, stop there if ( state === 2 ) { return jqXHR; } // We can fire global events as of now if asked to fireGlobals = s.global; // Uppercase the type s.type = s.type.toUpperCase(); // Determine if request has content s.hasContent = !rnoContent.test( s.type ); // Watch for a new set of requests if ( fireGlobals && jQuery.active++ === 0 ) { jQuery.event.trigger( "ajaxStart" ); } // More options handling for requests with no content if ( !s.hasContent ) { // If data is available, append data to url if ( s.data ) { s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data; // #9682: remove data so that it's not used in an eventual retry delete s.data; } // Get ifModifiedKey before adding the anti-cache parameter ifModifiedKey = s.url; // Add anti-cache in url if needed if ( s.cache === false ) { var ts = jQuery.now(), // try replacing _= if it is there ret = s.url.replace( rts, "$1_=" + ts ); // if nothing was replaced, add timestamp to the end s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" ); } } // Set the correct header, if data is being sent if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { jqXHR.setRequestHeader( "Content-Type", s.contentType ); } // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. if ( s.ifModified ) { ifModifiedKey = ifModifiedKey || s.url; if ( jQuery.lastModified[ ifModifiedKey ] ) { jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] ); } if ( jQuery.etag[ ifModifiedKey ] ) { jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] ); } } // Set the Accepts header for the server, depending on the dataType jqXHR.setRequestHeader( "Accept", s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : s.accepts[ "*" ] ); // Check for headers option for ( i in s.headers ) { jqXHR.setRequestHeader( i, s.headers[ i ] ); } // Allow custom headers/mimetypes and early abort if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { // Abort if not done already and return return jqXHR.abort(); } // aborting is no longer a cancellation strAbort = "abort"; // Install callbacks on deferreds for ( i in { success: 1, error: 1, complete: 1 } ) { jqXHR[ i ]( s[ i ] ); } // Get transport transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); // If no transport, we auto-abort if ( !transport ) { done( -1, "No Transport" ); } else { jqXHR.readyState = 1; // Send global event if ( fireGlobals ) { globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); } // Timeout if ( s.async && s.timeout > 0 ) { timeoutTimer = setTimeout( function(){ jqXHR.abort( "timeout" ); }, s.timeout ); } try { state = 1; transport.send( requestHeaders, done ); } catch (e) { // Propagate exception as error if not done if ( state < 2 ) { done( -1, e ); // Simply rethrow otherwise } else { throw e; } } } return jqXHR; }, // Counter for holding the number of active queries active: 0, // Last-Modified header cache for next request lastModified: {}, etag: {} }); /* Handles responses to an ajax request: * - sets all responseXXX fields accordingly * - finds the right dataType (mediates between content-type and expected dataType) * - returns the corresponding response */ function ajaxHandleResponses( s, jqXHR, responses ) { var ct, type, finalDataType, firstDataType, contents = s.contents, dataTypes = s.dataTypes, responseFields = s.responseFields; // Fill responseXXX fields for ( type in responseFields ) { if ( type in responses ) { jqXHR[ responseFields[type] ] = responses[ type ]; } } // Remove auto dataType and get content-type in the process while( dataTypes[ 0 ] === "*" ) { dataTypes.shift(); if ( ct === undefined ) { ct = s.mimeType || jqXHR.getResponseHeader( "content-type" ); } } // Check if we're dealing with a known content-type if ( ct ) { for ( type in contents ) { if ( contents[ type ] && contents[ type ].test( ct ) ) { dataTypes.unshift( type ); break; } } } // Check to see if we have a response for the expected dataType if ( dataTypes[ 0 ] in responses ) { finalDataType = dataTypes[ 0 ]; } else { // Try convertible dataTypes for ( type in responses ) { if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) { finalDataType = type; break; } if ( !firstDataType ) { firstDataType = type; } } // Or just use first one finalDataType = finalDataType || firstDataType; } // If we found a dataType // We add the dataType to the list if needed // and return the corresponding response if ( finalDataType ) { if ( finalDataType !== dataTypes[ 0 ] ) { dataTypes.unshift( finalDataType ); } return responses[ finalDataType ]; } } // Chain conversions given the request and the original response function ajaxConvert( s, response ) { var conv, conv2, current, tmp, // Work with a copy of dataTypes in case we need to modify it for conversion dataTypes = s.dataTypes.slice(), prev = dataTypes[ 0 ], converters = {}, i = 0; // Apply the dataFilter if provided if ( s.dataFilter ) { response = s.dataFilter( response, s.dataType ); } // Create converters map with lowercased keys if ( dataTypes[ 1 ] ) { for ( conv in s.converters ) { converters[ conv.toLowerCase() ] = s.converters[ conv ]; } } // Convert to each sequential dataType, tolerating list modification for ( ; (current = dataTypes[++i]); ) { // There's only work to do if current dataType is non-auto if ( current !== "*" ) { // Convert response if prev dataType is non-auto and differs from current if ( prev !== "*" && prev !== current ) { // Seek a direct converter conv = converters[ prev + " " + current ] || converters[ "* " + current ]; // If none found, seek a pair if ( !conv ) { for ( conv2 in converters ) { // If conv2 outputs current tmp = conv2.split(" "); if ( tmp[ 1 ] === current ) { // If prev can be converted to accepted input conv = converters[ prev + " " + tmp[ 0 ] ] || converters[ "* " + tmp[ 0 ] ]; if ( conv ) { // Condense equivalence converters if ( conv === true ) { conv = converters[ conv2 ]; // Otherwise, insert the intermediate dataType } else if ( converters[ conv2 ] !== true ) { current = tmp[ 0 ]; dataTypes.splice( i--, 0, current ); } break; } } } } // Apply converter (if not an equivalence) if ( conv !== true ) { // Unless errors are allowed to bubble, catch and return them if ( conv && s["throws"] ) { response = conv( response ); } else { try { response = conv( response ); } catch ( e ) { return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current }; } } } } // Update prev for next iteration prev = current; } } return { state: "success", data: response }; } var oldCallbacks = [], rquestion = /\?/, rjsonp = /(=)\?(?=&|$)|\?\?/, nonce = jQuery.now(); // Default jsonp settings jQuery.ajaxSetup({ jsonp: "callback", jsonpCallback: function() { var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); this[ callback ] = true; return callback; } }); // Detect, normalize options and install callbacks for jsonp requests jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { var callbackName, overwritten, responseContainer, data = s.data, url = s.url, hasCallback = s.jsonp !== false, replaceInUrl = hasCallback && rjsonp.test( url ), replaceInData = hasCallback && !replaceInUrl && typeof data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( data ); // Handle iff the expected data type is "jsonp" or we have a parameter to set if ( s.dataTypes[ 0 ] === "jsonp" || replaceInUrl || replaceInData ) { // Get callback name, remembering preexisting value associated with it callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback; overwritten = window[ callbackName ]; // Insert callback into url or form data if ( replaceInUrl ) { s.url = url.replace( rjsonp, "$1" + callbackName ); } else if ( replaceInData ) { s.data = data.replace( rjsonp, "$1" + callbackName ); } else if ( hasCallback ) { s.url += ( rquestion.test( url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; } // Use data converter to retrieve json after script execution s.converters["script json"] = function() { if ( !responseContainer ) { jQuery.error( callbackName + " was not called" ); } return responseContainer[ 0 ]; }; // force json dataType s.dataTypes[ 0 ] = "json"; // Install callback window[ callbackName ] = function() { responseContainer = arguments; }; // Clean-up function (fires after converters) jqXHR.always(function() { // Restore preexisting value window[ callbackName ] = overwritten; // Save back as free if ( s[ callbackName ] ) { // make sure that re-using the options doesn't screw things around s.jsonpCallback = originalSettings.jsonpCallback; // save the callback name for future use oldCallbacks.push( callbackName ); } // Call if it was a function and we have a response if ( responseContainer && jQuery.isFunction( overwritten ) ) { overwritten( responseContainer[ 0 ] ); } responseContainer = overwritten = undefined; }); // Delegate to script return "script"; } }); // Install script dataType jQuery.ajaxSetup({ accepts: { script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" }, contents: { script: /javascript|ecmascript/ }, converters: { "text script": function( text ) { jQuery.globalEval( text ); return text; } } }); // Handle cache's special case and global jQuery.ajaxPrefilter( "script", function( s ) { if ( s.cache === undefined ) { s.cache = false; } if ( s.crossDomain ) { s.type = "GET"; s.global = false; } }); // Bind script tag hack transport jQuery.ajaxTransport( "script", function(s) { // This transport only deals with cross domain requests if ( s.crossDomain ) { var script, head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement; return { send: function( _, callback ) { script = document.createElement( "script" ); script.async = "async"; if ( s.scriptCharset ) { script.charset = s.scriptCharset; } script.src = s.url; // Attach handlers for all browsers script.onload = script.onreadystatechange = function( _, isAbort ) { if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { // Handle memory leak in IE script.onload = script.onreadystatechange = null; // Remove the script if ( head && script.parentNode ) { head.removeChild( script ); } // Dereference the script script = undefined; // Callback if not abort if ( !isAbort ) { callback( 200, "success" ); } } }; // Use insertBefore instead of appendChild to circumvent an IE6 bug. // This arises when a base node is used (#2709 and #4378). head.insertBefore( script, head.firstChild ); }, abort: function() { if ( script ) { script.onload( 0, 1 ); } } }; } }); var xhrCallbacks, // #5280: Internet Explorer will keep connections alive if we don't abort on unload xhrOnUnloadAbort = window.ActiveXObject ? function() { // Abort all pending requests for ( var key in xhrCallbacks ) { xhrCallbacks[ key ]( 0, 1 ); } } : false, xhrId = 0; // Functions to create xhrs function createStandardXHR() { try { return new window.XMLHttpRequest(); } catch( e ) {} } function createActiveXHR() { try { return new window.ActiveXObject( "Microsoft.XMLHTTP" ); } catch( e ) {} } // Create the request object // (This is still attached to ajaxSettings for backward compatibility) jQuery.ajaxSettings.xhr = window.ActiveXObject ? /* Microsoft failed to properly * implement the XMLHttpRequest in IE7 (can't request local files), * so we use the ActiveXObject when it is available * Additionally XMLHttpRequest can be disabled in IE7/IE8 so * we need a fallback. */ function() { return !this.isLocal && createStandardXHR() || createActiveXHR(); } : // For all other browsers, use the standard XMLHttpRequest object createStandardXHR; // Determine support properties (function( xhr ) { jQuery.extend( jQuery.support, { ajax: !!xhr, cors: !!xhr && ( "withCredentials" in xhr ) }); })( jQuery.ajaxSettings.xhr() ); // Create transport if the browser can provide an xhr if ( jQuery.support.ajax ) { jQuery.ajaxTransport(function( s ) { // Cross domain only allowed if supported through XMLHttpRequest if ( !s.crossDomain || jQuery.support.cors ) { var callback; return { send: function( headers, complete ) { // Get a new xhr var handle, i, xhr = s.xhr(); // Open the socket // Passing null username, generates a login popup on Opera (#2865) if ( s.username ) { xhr.open( s.type, s.url, s.async, s.username, s.password ); } else { xhr.open( s.type, s.url, s.async ); } // Apply custom fields if provided if ( s.xhrFields ) { for ( i in s.xhrFields ) { xhr[ i ] = s.xhrFields[ i ]; } } // Override mime type if needed if ( s.mimeType && xhr.overrideMimeType ) { xhr.overrideMimeType( s.mimeType ); } // X-Requested-With header // For cross-domain requests, seeing as conditions for a preflight are // akin to a jigsaw puzzle, we simply never set it to be sure. // (it can always be set on a per-request basis or even using ajaxSetup) // For same-domain requests, won't change header if already provided. if ( !s.crossDomain && !headers["X-Requested-With"] ) { headers[ "X-Requested-With" ] = "XMLHttpRequest"; } // Need an extra try/catch for cross domain requests in Firefox 3 try { for ( i in headers ) { xhr.setRequestHeader( i, headers[ i ] ); } } catch( _ ) {} // Do send the request // This may raise an exception which is actually // handled in jQuery.ajax (so no try/catch here) xhr.send( ( s.hasContent && s.data ) || null ); // Listener callback = function( _, isAbort ) { var status, statusText, responseHeaders, responses, xml; // Firefox throws exceptions when accessing properties // of an xhr when a network error occurred // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE) try { // Was never called and is aborted or complete if ( callback && ( isAbort || xhr.readyState === 4 ) ) { // Only called once callback = undefined; // Do not keep as active anymore if ( handle ) { xhr.onreadystatechange = jQuery.noop; if ( xhrOnUnloadAbort ) { delete xhrCallbacks[ handle ]; } } // If it's an abort if ( isAbort ) { // Abort it manually if needed if ( xhr.readyState !== 4 ) { xhr.abort(); } } else { status = xhr.status; responseHeaders = xhr.getAllResponseHeaders(); responses = {}; xml = xhr.responseXML; // Construct response list if ( xml && xml.documentElement /* #4958 */ ) { responses.xml = xml; } // When requesting binary data, IE6-9 will throw an exception // on any attempt to access responseText (#11426) try { responses.text = xhr.responseText; } catch( _ ) { } // Firefox throws an exception when accessing // statusText for faulty cross-domain requests try { statusText = xhr.statusText; } catch( e ) { // We normalize with Webkit giving an empty statusText statusText = ""; } // Filter status for non standard behaviors // If the request is local and we have data: assume a success // (success with no data won't get notified, that's the best we // can do given current implementations) if ( !status && s.isLocal && !s.crossDomain ) { status = responses.text ? 200 : 404; // IE - #1450: sometimes returns 1223 when it should be 204 } else if ( status === 1223 ) { status = 204; } } } } catch( firefoxAccessException ) { if ( !isAbort ) { complete( -1, firefoxAccessException ); } } // Call complete if needed if ( responses ) { complete( status, statusText, responses, responseHeaders ); } }; if ( !s.async ) { // if we're in sync mode we fire the callback callback(); } else if ( xhr.readyState === 4 ) { // (IE6 & IE7) if it's in cache and has been // retrieved directly we need to fire the callback setTimeout( callback, 0 ); } else { handle = ++xhrId; if ( xhrOnUnloadAbort ) { // Create the active xhrs callbacks list if needed // and attach the unload handler if ( !xhrCallbacks ) { xhrCallbacks = {}; jQuery( window ).unload( xhrOnUnloadAbort ); } // Add to list of active xhrs callbacks xhrCallbacks[ handle ] = callback; } xhr.onreadystatechange = callback; } }, abort: function() { if ( callback ) { callback(0,1); } } }; } }); } var fxNow, timerId, rfxtypes = /^(?:toggle|show|hide)$/, rfxnum = new RegExp( "^(?:([-+])=|)(" + core_pnum + ")([a-z%]*)$", "i" ), rrun = /queueHooks$/, animationPrefilters = [ defaultPrefilter ], tweeners = { "*": [function( prop, value ) { var end, unit, tween = this.createTween( prop, value ), parts = rfxnum.exec( value ), target = tween.cur(), start = +target || 0, scale = 1, maxIterations = 20; if ( parts ) { end = +parts[2]; unit = parts[3] || ( jQuery.cssNumber[ prop ] ? "" : "px" ); // We need to compute starting value if ( unit !== "px" && start ) { // Iteratively approximate from a nonzero starting point // Prefer the current property, because this process will be trivial if it uses the same units // Fallback to end or a simple constant start = jQuery.css( tween.elem, prop, true ) || end || 1; do { // If previous iteration zeroed out, double until we get *something* // Use a string for doubling factor so we don't accidentally see scale as unchanged below scale = scale || ".5"; // Adjust and apply start = start / scale; jQuery.style( tween.elem, prop, start + unit ); // Update scale, tolerating zero or NaN from tween.cur() // And breaking the loop if scale is unchanged or perfect, or if we've just had enough } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations ); } tween.unit = unit; tween.start = start; // If a +=/-= token was provided, we're doing a relative animation tween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end; } return tween; }] }; // Animations created synchronously will run synchronously function createFxNow() { setTimeout(function() { fxNow = undefined; }, 0 ); return ( fxNow = jQuery.now() ); } function createTweens( animation, props ) { jQuery.each( props, function( prop, value ) { var collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ), index = 0, length = collection.length; for ( ; index < length; index++ ) { if ( collection[ index ].call( animation, prop, value ) ) { // we're done with this property return; } } }); } function Animation( elem, properties, options ) { var result, index = 0, tweenerIndex = 0, length = animationPrefilters.length, deferred = jQuery.Deferred().always( function() { // don't match elem in the :animated selector delete tick.elem; }), tick = function() { var currentTime = fxNow || createFxNow(), remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), percent = 1 - ( remaining / animation.duration || 0 ), index = 0, length = animation.tweens.length; for ( ; index < length ; index++ ) { animation.tweens[ index ].run( percent ); } deferred.notifyWith( elem, [ animation, percent, remaining ]); if ( percent < 1 && length ) { return remaining; } else { deferred.resolveWith( elem, [ animation ] ); return false; } }, animation = deferred.promise({ elem: elem, props: jQuery.extend( {}, properties ), opts: jQuery.extend( true, { specialEasing: {} }, options ), originalProperties: properties, originalOptions: options, startTime: fxNow || createFxNow(), duration: options.duration, tweens: [], createTween: function( prop, end, easing ) { var tween = jQuery.Tween( elem, animation.opts, prop, end, animation.opts.specialEasing[ prop ] || animation.opts.easing ); animation.tweens.push( tween ); return tween; }, stop: function( gotoEnd ) { var index = 0, // if we are going to the end, we want to run all the tweens // otherwise we skip this part length = gotoEnd ? animation.tweens.length : 0; for ( ; index < length ; index++ ) { animation.tweens[ index ].run( 1 ); } // resolve when we played the last frame // otherwise, reject if ( gotoEnd ) { deferred.resolveWith( elem, [ animation, gotoEnd ] ); } else { deferred.rejectWith( elem, [ animation, gotoEnd ] ); } return this; } }), props = animation.props; propFilter( props, animation.opts.specialEasing ); for ( ; index < length ; index++ ) { result = animationPrefilters[ index ].call( animation, elem, props, animation.opts ); if ( result ) { return result; } } createTweens( animation, props ); if ( jQuery.isFunction( animation.opts.start ) ) { animation.opts.start.call( elem, animation ); } jQuery.fx.timer( jQuery.extend( tick, { anim: animation, queue: animation.opts.queue, elem: elem }) ); // attach callbacks from options return animation.progress( animation.opts.progress ) .done( animation.opts.done, animation.opts.complete ) .fail( animation.opts.fail ) .always( animation.opts.always ); } function propFilter( props, specialEasing ) { var index, name, easing, value, hooks; // camelCase, specialEasing and expand cssHook pass for ( index in props ) { name = jQuery.camelCase( index ); easing = specialEasing[ name ]; value = props[ index ]; if ( jQuery.isArray( value ) ) { easing = value[ 1 ]; value = props[ index ] = value[ 0 ]; } if ( index !== name ) { props[ name ] = value; delete props[ index ]; } hooks = jQuery.cssHooks[ name ]; if ( hooks && "expand" in hooks ) { value = hooks.expand( value ); delete props[ name ]; // not quite $.extend, this wont overwrite keys already present. // also - reusing 'index' from above because we have the correct "name" for ( index in value ) { if ( !( index in props ) ) { props[ index ] = value[ index ]; specialEasing[ index ] = easing; } } } else { specialEasing[ name ] = easing; } } } jQuery.Animation = jQuery.extend( Animation, { tweener: function( props, callback ) { if ( jQuery.isFunction( props ) ) { callback = props; props = [ "*" ]; } else { props = props.split(" "); } var prop, index = 0, length = props.length; for ( ; index < length ; index++ ) { prop = props[ index ]; tweeners[ prop ] = tweeners[ prop ] || []; tweeners[ prop ].unshift( callback ); } }, prefilter: function( callback, prepend ) { if ( prepend ) { animationPrefilters.unshift( callback ); } else { animationPrefilters.push( callback ); } } }); function defaultPrefilter( elem, props, opts ) { var index, prop, value, length, dataShow, tween, hooks, oldfire, anim = this, style = elem.style, orig = {}, handled = [], hidden = elem.nodeType && isHidden( elem ); // handle queue: false promises if ( !opts.queue ) { hooks = jQuery._queueHooks( elem, "fx" ); if ( hooks.unqueued == null ) { hooks.unqueued = 0; oldfire = hooks.empty.fire; hooks.empty.fire = function() { if ( !hooks.unqueued ) { oldfire(); } }; } hooks.unqueued++; anim.always(function() { // doing this makes sure that the complete handler will be called // before this completes anim.always(function() { hooks.unqueued--; if ( !jQuery.queue( elem, "fx" ).length ) { hooks.empty.fire(); } }); }); } // height/width overflow pass if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) { // Make sure that nothing sneaks out // Record all 3 overflow attributes because IE does not // change the overflow attribute when overflowX and // overflowY are set to the same value opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; // Set display property to inline-block for height/width // animations on inline elements that are having width/height animated if ( jQuery.css( elem, "display" ) === "inline" && jQuery.css( elem, "float" ) === "none" ) { // inline-level elements accept inline-block; // block-level elements need to be inline with layout if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) { style.display = "inline-block"; } else { style.zoom = 1; } } } if ( opts.overflow ) { style.overflow = "hidden"; if ( !jQuery.support.shrinkWrapBlocks ) { anim.done(function() { style.overflow = opts.overflow[ 0 ]; style.overflowX = opts.overflow[ 1 ]; style.overflowY = opts.overflow[ 2 ]; }); } } // show/hide pass for ( index in props ) { value = props[ index ]; if ( rfxtypes.exec( value ) ) { delete props[ index ]; if ( value === ( hidden ? "hide" : "show" ) ) { continue; } handled.push( index ); } } length = handled.length; if ( length ) { dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} ); if ( hidden ) { jQuery( elem ).show(); } else { anim.done(function() { jQuery( elem ).hide(); }); } anim.done(function() { var prop; jQuery.removeData( elem, "fxshow", true ); for ( prop in orig ) { jQuery.style( elem, prop, orig[ prop ] ); } }); for ( index = 0 ; index < length ; index++ ) { prop = handled[ index ]; tween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 ); orig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop ); if ( !( prop in dataShow ) ) { dataShow[ prop ] = tween.start; if ( hidden ) { tween.end = tween.start; tween.start = prop === "width" || prop === "height" ? 1 : 0; } } } } } function Tween( elem, options, prop, end, easing ) { return new Tween.prototype.init( elem, options, prop, end, easing ); } jQuery.Tween = Tween; Tween.prototype = { constructor: Tween, init: function( elem, options, prop, end, easing, unit ) { this.elem = elem; this.prop = prop; this.easing = easing || "swing"; this.options = options; this.start = this.now = this.cur(); this.end = end; this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); }, cur: function() { var hooks = Tween.propHooks[ this.prop ]; return hooks && hooks.get ? hooks.get( this ) : Tween.propHooks._default.get( this ); }, run: function( percent ) { var eased, hooks = Tween.propHooks[ this.prop ]; if ( this.options.duration ) { this.pos = eased = jQuery.easing[ this.easing ]( percent, this.options.duration * percent, 0, 1, this.options.duration ); } else { this.pos = eased = percent; } this.now = ( this.end - this.start ) * eased + this.start; if ( this.options.step ) { this.options.step.call( this.elem, this.now, this ); } if ( hooks && hooks.set ) { hooks.set( this ); } else { Tween.propHooks._default.set( this ); } return this; } }; Tween.prototype.init.prototype = Tween.prototype; Tween.propHooks = { _default: { get: function( tween ) { var result; if ( tween.elem[ tween.prop ] != null && (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { return tween.elem[ tween.prop ]; } // passing any value as a 4th parameter to .css will automatically // attempt a parseFloat and fallback to a string if the parse fails // so, simple values such as "10px" are parsed to Float. // complex values such as "rotate(1rad)" are returned as is. result = jQuery.css( tween.elem, tween.prop, false, "" ); // Empty strings, null, undefined and "auto" are converted to 0. return !result || result === "auto" ? 0 : result; }, set: function( tween ) { // use step hook for back compat - use cssHook if its there - use .style if its // available and use plain properties where available if ( jQuery.fx.step[ tween.prop ] ) { jQuery.fx.step[ tween.prop ]( tween ); } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) { jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); } else { tween.elem[ tween.prop ] = tween.now; } } } }; // Remove in 2.0 - this supports IE8's panic based approach // to setting things on disconnected nodes Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { set: function( tween ) { if ( tween.elem.nodeType && tween.elem.parentNode ) { tween.elem[ tween.prop ] = tween.now; } } }; jQuery.each([ "toggle", "show", "hide" ], function( i, name ) { var cssFn = jQuery.fn[ name ]; jQuery.fn[ name ] = function( speed, easing, callback ) { return speed == null || typeof speed === "boolean" || // special check for .toggle( handler, handler, ... ) ( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ? cssFn.apply( this, arguments ) : this.animate( genFx( name, true ), speed, easing, callback ); }; }); jQuery.fn.extend({ fadeTo: function( speed, to, easing, callback ) { // show any hidden elements after setting opacity to 0 return this.filter( isHidden ).css( "opacity", 0 ).show() // animate to the value specified .end().animate({ opacity: to }, speed, easing, callback ); }, animate: function( prop, speed, easing, callback ) { var empty = jQuery.isEmptyObject( prop ), optall = jQuery.speed( speed, easing, callback ), doAnimation = function() { // Operate on a copy of prop so per-property easing won't be lost var anim = Animation( this, jQuery.extend( {}, prop ), optall ); // Empty animations resolve immediately if ( empty ) { anim.stop( true ); } }; return empty || optall.queue === false ? this.each( doAnimation ) : this.queue( optall.queue, doAnimation ); }, stop: function( type, clearQueue, gotoEnd ) { var stopQueue = function( hooks ) { var stop = hooks.stop; delete hooks.stop; stop( gotoEnd ); }; if ( typeof type !== "string" ) { gotoEnd = clearQueue; clearQueue = type; type = undefined; } if ( clearQueue && type !== false ) { this.queue( type || "fx", [] ); } return this.each(function() { var dequeue = true, index = type != null && type + "queueHooks", timers = jQuery.timers, data = jQuery._data( this ); if ( index ) { if ( data[ index ] && data[ index ].stop ) { stopQueue( data[ index ] ); } } else { for ( index in data ) { if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { stopQueue( data[ index ] ); } } } for ( index = timers.length; index--; ) { if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) { timers[ index ].anim.stop( gotoEnd ); dequeue = false; timers.splice( index, 1 ); } } // start the next in the queue if the last step wasn't forced // timers currently will call their complete callbacks, which will dequeue // but only if they were gotoEnd if ( dequeue || !gotoEnd ) { jQuery.dequeue( this, type ); } }); } }); // Generate parameters to create a standard animation function genFx( type, includeWidth ) { var which, attrs = { height: type }, i = 0; // if we include width, step value is 1 to do all cssExpand values, // if we don't include width, step value is 2 to skip over Left and Right includeWidth = includeWidth? 1 : 0; for( ; i < 4 ; i += 2 - includeWidth ) { which = cssExpand[ i ]; attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; } if ( includeWidth ) { attrs.opacity = attrs.width = type; } return attrs; } // Generate shortcuts for custom animations jQuery.each({ slideDown: genFx("show"), slideUp: genFx("hide"), slideToggle: genFx("toggle"), fadeIn: { opacity: "show" }, fadeOut: { opacity: "hide" }, fadeToggle: { opacity: "toggle" } }, function( name, props ) { jQuery.fn[ name ] = function( speed, easing, callback ) { return this.animate( props, speed, easing, callback ); }; }); jQuery.speed = function( speed, easing, fn ) { var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { complete: fn || !fn && easing || jQuery.isFunction( speed ) && speed, duration: speed, easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing }; opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; // normalize opt.queue - true/undefined/null -> "fx" if ( opt.queue == null || opt.queue === true ) { opt.queue = "fx"; } // Queueing opt.old = opt.complete; opt.complete = function() { if ( jQuery.isFunction( opt.old ) ) { opt.old.call( this ); } if ( opt.queue ) { jQuery.dequeue( this, opt.queue ); } }; return opt; }; jQuery.easing = { linear: function( p ) { return p; }, swing: function( p ) { return 0.5 - Math.cos( p*Math.PI ) / 2; } }; jQuery.timers = []; jQuery.fx = Tween.prototype.init; jQuery.fx.tick = function() { var timer, timers = jQuery.timers, i = 0; for ( ; i < timers.length; i++ ) { timer = timers[ i ]; // Checks the timer has not already been removed if ( !timer() && timers[ i ] === timer ) { timers.splice( i--, 1 ); } } if ( !timers.length ) { jQuery.fx.stop(); } }; jQuery.fx.timer = function( timer ) { if ( timer() && jQuery.timers.push( timer ) && !timerId ) { timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval ); } }; jQuery.fx.interval = 13; jQuery.fx.stop = function() { clearInterval( timerId ); timerId = null; }; jQuery.fx.speeds = { slow: 600, fast: 200, // Default speed _default: 400 }; // Back Compat <1.8 extension point jQuery.fx.step = {}; if ( jQuery.expr && jQuery.expr.filters ) { jQuery.expr.filters.animated = function( elem ) { return jQuery.grep(jQuery.timers, function( fn ) { return elem === fn.elem; }).length; }; } var rroot = /^(?:body|html)$/i; jQuery.fn.offset = function( options ) { if ( arguments.length ) { return options === undefined ? this : this.each(function( i ) { jQuery.offset.setOffset( this, options, i ); }); } var docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft, box = { top: 0, left: 0 }, elem = this[ 0 ], doc = elem && elem.ownerDocument; if ( !doc ) { return; } if ( (body = doc.body) === elem ) { return jQuery.offset.bodyOffset( elem ); } docElem = doc.documentElement; // Make sure it's not a disconnected DOM node if ( !jQuery.contains( docElem, elem ) ) { return box; } // If we don't have gBCR, just use 0,0 rather than error // BlackBerry 5, iOS 3 (original iPhone) if ( typeof elem.getBoundingClientRect !== "undefined" ) { box = elem.getBoundingClientRect(); } win = getWindow( doc ); clientTop = docElem.clientTop || body.clientTop || 0; clientLeft = docElem.clientLeft || body.clientLeft || 0; scrollTop = win.pageYOffset || docElem.scrollTop; scrollLeft = win.pageXOffset || docElem.scrollLeft; return { top: box.top + scrollTop - clientTop, left: box.left + scrollLeft - clientLeft }; }; jQuery.offset = { bodyOffset: function( body ) { var top = body.offsetTop, left = body.offsetLeft; if ( jQuery.support.doesNotIncludeMarginInBodyOffset ) { top += parseFloat( jQuery.css(body, "marginTop") ) || 0; left += parseFloat( jQuery.css(body, "marginLeft") ) || 0; } return { top: top, left: left }; }, setOffset: function( elem, options, i ) { var position = jQuery.css( elem, "position" ); // set position first, in-case top/left are set even on static elem if ( position === "static" ) { elem.style.position = "relative"; } var curElem = jQuery( elem ), curOffset = curElem.offset(), curCSSTop = jQuery.css( elem, "top" ), curCSSLeft = jQuery.css( elem, "left" ), calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1, props = {}, curPosition = {}, curTop, curLeft; // need to be able to calculate position if either top or left is auto and position is either absolute or fixed if ( calculatePosition ) { curPosition = curElem.position(); curTop = curPosition.top; curLeft = curPosition.left; } else { curTop = parseFloat( curCSSTop ) || 0; curLeft = parseFloat( curCSSLeft ) || 0; } if ( jQuery.isFunction( options ) ) { options = options.call( elem, i, curOffset ); } if ( options.top != null ) { props.top = ( options.top - curOffset.top ) + curTop; } if ( options.left != null ) { props.left = ( options.left - curOffset.left ) + curLeft; } if ( "using" in options ) { options.using.call( elem, props ); } else { curElem.css( props ); } } }; jQuery.fn.extend({ position: function() { if ( !this[0] ) { return; } var elem = this[0], // Get *real* offsetParent offsetParent = this.offsetParent(), // Get correct offsets offset = this.offset(), parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset(); // Subtract element margins // note: when an element has margin: auto the offsetLeft and marginLeft // are the same in Safari causing offset.left to incorrectly be 0 offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0; offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0; // Add offsetParent borders parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0; parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0; // Subtract the two offsets return { top: offset.top - parentOffset.top, left: offset.left - parentOffset.left }; }, offsetParent: function() { return this.map(function() { var offsetParent = this.offsetParent || document.body; while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) { offsetParent = offsetParent.offsetParent; } return offsetParent || document.body; }); } }); // Create scrollLeft and scrollTop methods jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) { var top = /Y/.test( prop ); jQuery.fn[ method ] = function( val ) { return jQuery.access( this, function( elem, method, val ) { var win = getWindow( elem ); if ( val === undefined ) { return win ? (prop in win) ? win[ prop ] : win.document.documentElement[ method ] : elem[ method ]; } if ( win ) { win.scrollTo( !top ? val : jQuery( win ).scrollLeft(), top ? val : jQuery( win ).scrollTop() ); } else { elem[ method ] = val; } }, method, val, arguments.length, null ); }; }); function getWindow( elem ) { return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 ? elem.defaultView || elem.parentWindow : false; } // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) { // margin is only for outerHeight, outerWidth jQuery.fn[ funcName ] = function( margin, value ) { var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); return jQuery.access( this, function( elem, type, value ) { var doc; if ( jQuery.isWindow( elem ) ) { // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there // isn't a whole lot we can do. See pull request at this URL for discussion: // https://github.com/jquery/jquery/pull/764 return elem.document.documentElement[ "client" + name ]; } // Get document width or height if ( elem.nodeType === 9 ) { doc = elem.documentElement; // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it. return Math.max( elem.body[ "scroll" + name ], doc[ "scroll" + name ], elem.body[ "offset" + name ], doc[ "offset" + name ], doc[ "client" + name ] ); } return value === undefined ? // Get width or height on the element, requesting but not forcing parseFloat jQuery.css( elem, type, value, extra ) : // Set width or height on the element jQuery.style( elem, type, value, extra ); }, type, chainable ? margin : undefined, chainable, null ); }; }); }); // Expose jQuery to the global object window.jQuery = window.$ = jQuery; // Expose jQuery as an AMD module, but only for AMD loaders that // understand the issues with loading multiple versions of jQuery // in a page that all might call define(). The loader will indicate // they have special allowances for multiple jQuery versions by // specifying define.amd.jQuery = true. Register as a named module, // since jQuery can be concatenated with other files that may use define, // but not use a proper concatenation script that understands anonymous // AMD modules. A named AMD is safest and most robust way to register. // Lowercase jquery is used because AMD module names are derived from // file names, and jQuery is normally delivered in a lowercase file name. // Do this after creating the global so that if an AMD module wants to call // noConflict to hide this version of jQuery, it will work. if ( typeof define === "function" && define.amd && define.amd.jQuery ) { define( "jquery", [], function () { return jQuery; } ); } })( window ); PK mOPS/book/sprintf.js/** sprintf() for JavaScript 0.6 Copyright (c) Alexandru Marasteanu All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of sprintf() for JavaScript nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Alexandru Marasteanu BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Changelog: 2007.04.03 - 0.1: - initial release 2007.09.11 - 0.2: - feature: added argument swapping 2007.09.17 - 0.3: - bug fix: no longer throws exception on empty paramenters (Hans Pufal) 2007.10.21 - 0.4: - unit test and patch (David Baird) 2010.05.09 - 0.5: - bug fix: 0 is now preceeded with a + sign - bug fix: the sign was not at the right position on padded results (Kamal Abdali) - switched from GPL to BSD license 2010.05.22 - 0.6: - reverted to 0.4 and fixed the bug regarding the sign of the number 0 Note: Thanks to Raphael Pigulla (http://www.n3rd.org/) who warned me about a bug in 0.5, I discovered that the last update was a regress. I appologize for that. **/ function str_repeat(i, m) { for (var o = []; m > 0; o[--m] = i); return o.join(''); } function sprintf() { var i = 0, a, f = arguments[i++], o = [], m, p, c, x, s = ''; while (f) { if (m = /^[^\x25]+/.exec(f)) { o.push(m[0]); } else if (m = /^\x25{2}/.exec(f)) { o.push('%'); } else if (m = /^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) { if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) { throw('Too few arguments.'); } if (/[^s]/.test(m[7]) && (typeof(a) != 'number')) { throw('Expecting number but found ' + typeof(a)); } switch (m[7]) { case 'b': a = a.toString(2); break; case 'c': a = String.fromCharCode(a); break; case 'd': a = parseInt(a); break; case 'e': a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break; case 'f': a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a); break; case 'o': a = a.toString(8); break; case 's': a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a); break; case 'u': a = Math.abs(a); break; case 'x': a = a.toString(16); break; case 'X': a = a.toString(16).toUpperCase(); break; } a = (/[def]/.test(m[7]) && m[2] && a >= 0 ? '+'+ a : a); c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' '; x = m[5] - String(a).length - s.length; p = m[5] ? str_repeat(c, x) : ''; o.push(s + (m[4] ? a + p : p + a)); } else { throw('Huh ?!'); } f = f.substring(m[0].length); } return o.join(''); } PK rSA OPS/book/page01.xhtml iBooks Demo
Núm. 102 / Novembre - Desembre 2020 @revistafersalut Entrevistes al canal de FerSalut Els aliments i el risc cardiovascular informació en salut a un clic cat Infants Motricitat dels infants Gent gran Refredat, Grip o Covid-19. Diferències. L’entrevista Donació de plasma convalescent Família Aliments i risc cardiovascular Salut Si has passat la Covid-19, ajuda. PK 44OPS/images/page01.jpgJFIFICC_PROFILEappl mntrRGB XYZ   acspAPPLappl-appl descodscmxlcprt8wtptrXYZ0gXYZDbXYZXrTRClchad|,bTRClgTRCldescGeneric RGB ProfileGeneric RGB Profilemluc skSK(xhrHR(caES$ptBR&ukUA*frFU(Vaeobecn RGB profilGeneri ki RGB profilPerfil RGB genricPerfil RGB Genrico030;L=89 ?@>D09; RGBProfil gnrique RVBu( RGB r_icϏProfilo RGB genericoGenerisk RGB-profil| RGB \ |Obecn RGB profil RGB Allgemeines RGB-Profilltalnos RGB profilfn RGB cϏeNN, RGB 000000Profil RGB generic  RGBPerfil RGB genricoAlgemeen RGB-profielB#D%L RGB 1H'DGenel RGB ProfiliYleinen RGB-profiiliUniwersalny profil RGB1I89 ?@>D8;L RGBEDA *91JA RGB 'D9'EGeneric RGB ProfileGenerel RGB-beskrivelsetextCopyright 2007 Apple Inc., all rights reserved.XYZ RXYZ tM=XYZ Zus4XYZ (6curvsf32 B&l@ExifMM*iC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?(((((((((((((((((((((((((((((((((((((< (uV(Br #{B b5nZ|?$@dԁpqpY&;1Qr~[?g. 4W_E O?G[ P9s b蚼) CrlwIcBJ\/ 7Z{a8.TThWNOe>+=((((((((>5I#_ 6Itq Yq82*3эp~0<1lO |Bҿ[Qsqo"[yA9!fhl;ipgZ1h=vIͦxx+)FUM&Ҫ+W?s/^ LJAx?~HÕN覿F<+{ڦ[Gyeyn⹆E :5Ǐq]Ivևn_`KV;3J(8(((((((((((((m> "Ou{ i7Z|飷eM.OZ+m,-i~ԵMKڵ-4S=IUJSIrfщ7ő[ O*i><-+!O)m$aX ~0*V oahuk袛Q ޟutZK!I2X@DqԛW0As^?m>W6W:|N5/'Xę _W7%|Wi;dž42KhtɣfRI$61S9N2W+.5)fY2%)ݥVܰvZJh1Mr?kռ-OgH/XD925s:'ɣj߲ߏ~-/uƩ64r  6#&o|//|gM3⭔GuKψ}ŖB nWJcEL@5/V{I~{J|J~\E%qsuZ$q,&kΫM˚WMͭodҵ蘆)g.fSw^.ůOHGj_|B< l.5+Y4uSpd{.D1K+?ÚE߄&5m*{/ "9kKU;m3S)M)SvvKUfd3*^K]E]6rWW9|kon-͌Woaw<(B(i SMĉk',JXͨ˾&mŶ21$~;~1 /¿o_ zмo^O .#XR@{*/q_Ϋk?אh|WiREGХȷ#?2Fs7k_߹)E= g髧mPω񎽨^CmyHѣҷ+ 9 M xI<5kO'Lzc2" yċx9SCl#1]?$yI5  3\[/1ڑk Ō֖.(aIgrwEBוo\mWGZE<;sߖ<˧}Ti~_|CNϋ<5=̈́I}HU\J,7i|#I|+ӼGjfwwe>s\P=oDLXwd~ik aj_uæMVYV0"F:ו|}7<97?<-O/qxYl?ےHJEw^3#POufc}9'R .n]N|zK߁t}(_4𝭉WHlum`?MX~[YMu_^)"Fb]|P~V| gýkHЭ[jh Ek6nEŤacqNj71Y_`ʷrln#P$<I§74lZJKɲg^jג2rk[&߇ geYQk/b{o]\W|9|6gzFK[gkw_c7&zf5Dg,G@>+NO?hs@[}^ķ[R uIb51m9' L⇃> |-𗋼=> %u< ڇ{jkKXm<5@i;{ᚧk[Um݌i6aJnݕe\dJ-)|'*"xHOYӢ Kvy5o91D[Y}9YZ^itf+We*^)P:BUٛ>}/'_Lm1us5͸{Yq}$0~ V8]F7,vG dWapisэ.k[ws-W5һ-l+KmQ^Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@_tu/߄Zk/PHsXUG\o ]fx_Wkaa\ɒHQq=?'%?/|u:>4imGٷDfE8=zW>;=luh.+%G4wel1#ڥ`fF,U|4s XeI9z\crcN [ٶ|a0<7/OG'Ef]Bždnv8U$ f/ x Ē^hx×>#"im%54R3 ?M_g)KCsj3$L.4PK BuziUr/x]:wܺ:0-hѠ]B27BVeXXR(I_Fk%mnmLk3Ԅc'^m:ut~s>1b׼YekZs,jGxfc+ g'Q(.4:;[q441 LO"<Y#C4eaʾ#gqci=GwaBvq3*7m*q߲Gms:?hOM7 xSIR'GMj_|(Q/ Rik{5'kud8o-.h$ekky5OWſ">/Ҽ=CkjEg}r=ECJaP/o߄V`Prf߈E+Ğ𝮩֚kko sɨM4* XcT6bx$)^7k4һP溍Pe:r'.[7kiRmkGڼO⯀xzo|洚krp(+Ǝ à;s?-߄^x3UOףU[xd, o<4wEm-~|h#I^2ѯ~ioV><:u*.n$dWA${yawPi>Ϋm}=Ũh"ftd t`(9RM)J狺=׼Ɩ/^0M]5gx߯fv=ŸO_xAN;JJ\~iw>V!g+b |:ƍ;RK kƽ"Y[x቞ql0!ʐE|C3+ž_p> ףռeg>cyinM3wL.q,H\[iT?='6ռo;/^-SlKw2Y;C"JdHUk 'Ȫ6ך?߻csuO_by?˧%)jiik6zn4TWtEtɭ[qf1p _jpH5Y|fNi0[I5SWPY\V{kp;kO~ uoIM]| }X5 Fyqoř1fD֍!Pyc:W[Sh:wi!0]FH ۪̣'=[m{wX[Q-kmm[tkcJOsj:fwcl+ F1Ҟs-}K^*u}?Z5[t+('P` k,|t|6Ƨ C—u-sO{Z=&.eGi!eT;-oؾ |IK ׾dMs7x$xTvV +;i'J-gۆUY&m/R{+Z\Ӣ+=?.|;3X~ Pᢑ-e`{@5W Oɵ|CgRYkl:X'~fGi}5W6R.%El209 bkW>) g4'"Y,%FKBebmYQ'w-_⿁C.|3o,w[mvJ}sS< XÚn3X-nDy%њ`7 PI՛c%Z*\ -n,~^4Uj-U8g}tzT~Ѣo=ff{P$6%vbŋ؀HK.u%߀Q֧oc\ Qi.xSG½;A/li6[*o>aLKE?!l\E##jqj/;ck JeMϡhO6-^ 5\i7V< 3y<1Od+㎓g.YxYԂzwX- nl x+P~j>'~&xsIԵ6Ԯ<DYѤ*Ѳ2+6~Ϛg_b4?x) >Jϊ4۝h,h#mB3tn}1OQBu}ݼڵnֿ[>.:ӌl{ۥ\h_EgN.5  [4#pjHhG&x U:doH\Ak⟏#W|./x[Pm|-%Ů`qIyd#FV*7$dܿ,p|j Ö yFtiXƃ"Mٌchexz}\[jrz[NWwȖeZ4>Ev{[VW? uokՕ(ڴ#[#prpX8/Ak,"^ %V2_ݼ8~(~˾8?m1]+NO&INx$6D  ;?䴛Fuzcx2[(|2x"[q^ICʂ5>hYFi%SWoKmmJ3*m7dUދ蛲Xx#q/៴^kRG2%mp5u]"U&m} ˨B@n(}zr|~5.&6*)i#}a )v<d!jMZ3,FX?2p ?V"ƺWg|!!w gVmCzk a&_qK VYIJ`X*%A`Z7LrzRޣJWQk>e{]-.9TOI;_cg g- |]5+i6vWhw1CGc|sNnӴ"j1̯okE.-o Ooj,n]kg}] 4s-͆Ү hk+^x3 ^ZԆUP5(d U&b( ORMGGŏmZo_vStؾl"1ʖd` ?wS=#G<GUo^|t;8X<6/j_#I%v`fɺ9~.[*wv(ݽd֍[-웩a.h')3KdNjvtķox|z.#o<;}}N3\=~|nǕ +ß<h|6-%ow5P6l3m T!ov^i]7k8٧txƶso޲z.$imvԾ͚y|`o.tucI[YC,MYJ["ɧ7S^>y[=.XkHV2Zܙ[!Y:NC:'-|6o~mcׅth5qdM?Pk\ɉoڨ *_Mӝ[.VaW0kjovM/ڴQExQEW&&F .13GeE(D|q?4gPtE .Q\CPt]ß2u4W+ Ÿ4xoPtWQCPSErngF :?]4|p?]uTW(~6LuOeC|m>) 1g|5(S4kPt\oxkPtlQ?%@]7 <7(E6_2 J|5 ӗoߧ|7(I8I>|4M?| +?'E?σŞ],|#)3U8#@Mˏ='CQ €' _]3WOxoPtQ\|ly?]8|f.G;ч ω:?#M?|(?h w#%?U+b|;騮_7I7sa.a-O F/*:J+0#Ğ?] Kq騮b/OރRŏ ?h0?'wkO4u soyCq}i1Fgca!J)g ҿHS+<5TkiXx^h U;XR0@#H^Oaj|b|= *OT~Vsnc>NnKg֡`/٭~lPOܻ+אGuB&O#DŽ Ctkm{]A$5Is# l +'? F2|OP<&˟I=U}Z .ui5_rIM,N/:){ꗭqS?2{iC :+]1o ;|K}(3ƾ߃umZ=fk7*26z|Z7?&RM{x|}uGN2qi(? |!>R>1t[Jo4w+LT?Ts)Pp/15kJ }Ø1n ߖF~2Qozj0T1Z9:ԛMɻ%{8^˩#q#tvmJ?#ipf#=o%#!9Pq_M^0k:\jrBwF.n&yD?Ĩdqf4b_*0x]{0Ufy hߙݷk-l^^lx+ܪ˕%{.~~H騮w煉/aSg㯉4qO:+^ og0U*Y.O4PX>&OM<-a[#?0U.o $?UtW3/O '0T|KӟPOEsoGRIw &<=0TQ\_Ğ?UG ™7sa(({υn@ǯ?UD~1xXP:j+O^g7cO?,?f a⨰%F|MF**oqQGEsI²?~Sx1tW1 ¿2{0T­3/cNtW2,?d awG-u6;l   @|s WI]:?e&[,_jҢ(b x_֜ ٦U?ڢ׾c=>\E5x%_I3Z' 9ٓνas?Fбd=wŭLqt԰|G {TzVZW)5-cv8kP<1?g{ݦ:pV?tGfO_z  wNI\yHlBeǦͺ,Wq2(l2Ҁ+M2.hϦ(d^xWTog;hj?} \E0jVDYƀ>|g9%q~v !Sl I|@ju?_u> d:w?Tl^LHȞFWxX.2k9Ax7Mͺ֥mP;?z61;GֆTF#y"~϶#uzTڦq@^6! |%sjcZ_Κ\q[Hz|+ul}.O&˫UeCFy>4iJ۠ *Ŵ'@D]PW& TA6oG 1ɶ  |(ZojcY Q^BH9 hixr2(QD$)(:X:գ|Hc+oԿM.;qXz$IT@=Z߲s00ڧ< MKP Zv{q֑qV=姬xgtO{g\^srGsVgm=8eZj-W@2~:=cúiZLצsrNBScApP;/Y%SZ 84 D$#j;kbZف)|{Xy XTng IdADV_c ;@b?:_AKX1]Ō1 GZ mvsov!M:v20SWO *xKz~tr~򶱟b/` %m pWin>a@k9ʽ~|-zx֫p*en-:O!Ϣ+"[l88jc8>P+Mjǖ8=ڿm2KoXD]`mQ` JhKo0k58~hAfAWʦ~X^@>doP#[kcϧ%mX,]xP1lXZ?Lkcu$4{ۄN~6ʀh#=?Zwl"ϕ~ϚE d㯗֬g)ɶps^|>ӎEmYYC@ '<~=yΣKDm [YF?u֯XM{Jaf<;Um'|bޟT_j,4h䱏5CZ[dVnʙUl,X>_⯚8HQ@U~'TIsKR"M~o{=eثBzqYZݖ9ހTڇKgX)U^ _\z5'|G-G졲8梜Zma)s} _TYEs^]xv1@X6IYhj'&od "0{UKٛLB;E{qд,\pƷpRG0z󋏂H#[f]H`L<ʽ/L+>0Q9uWog] ݿu֫:_ X *,"lϥ{MmJK-X?Ʃ߳_{8A#yğ-XW72 QQ\{yKVkUv4YCIh9^kv%Ȅsҙ&$.Jz9ПO/Xw?͌3EiF^,+LJ$X8-il'泥fkh yej%r^sǵ\3Dr#t٫F-Z1~ZJY f{mG(hVG3V~'INnmٵb$ڭpF=+O1n9PY,cjOize" 63Vq-1nrqxPU@\] !TF0OV.]GxĔU]t|gFF& U`$ttjd35nn\=^h:S~X\Zf&;k~2YT5ܝItm:YmX!h@lz1`r[Bc(ƽr<`+QW0 ֛⑚CE 'E[y8jPAugN xjE}Is}+QVԫ~cV-'s*:}T~͎Z2udgPvXshٹzm){=ˁ ,=Zs~곈ȎqOҀ,,m Wܦ}UYѭc3U.n'Dzkon$G]WS*J~ O5Y@9[x*Ǝ'^3T`5mGn1}m^^q3.>UtrLFXɑr}MT;b;(j[h{uF(B@"yc'*4I?:sBbn!v @lE P GMZk JaD#`p[2jrtƺҋ@ejrKYfq=}j?ׯZ׾Iʒ];D5{WO@&L!,G>ƥfT}7S~rzUMTSFFi+;bqA5V-2]i/%nqguq[ ^"J|:<>1nuUMԮ D:cwuq-X7 `Ҭ[#\:HB(֬-vL֎᷶? 6rgT4xlcq[֩jH Gg-e~e* o.yO?$VpeL,!S!nf y8nN|hZa&E Ǹ*i1,dgEV \jնmqthвg.;T5SBqb^+Cr.IS"hQKڧ-,x~eҳ^@O͟LjKeu-yq.5)U_d r/Z}5w+9@X^[^xEq%`_.!G9׮2"ܹU%z5\=mR? }qҀ-%F3=KܓMQix6 Sڙ '=jUeڃM1Y:>Ǚfm5%2C{Nb,`hV+yZeQw=F!ldmVM=¢XU>CЌS$y.Pkuf\eڧY)8o.-5uY5IL}`c tyr,ab&h9EIcu.S\ϓ;ߥW0Y׺Bj1.=jq{?8z9XdƱƤk. KFSm-ֵleY핣~fmW"ԲYr*龍mDIӀHSU=FIE!Ӵ!q">8fEw3J2gww2;-wu!MhQLs\գ0mz-`/Mlc Tq{Sq3ʹaEZ*pOJϖf|'4$P@ztXkr$R`BX>`|gq3#m+)DˀqXhe{ҿlx$}+tK*[LdG_k8Lmr?+ `?Ҹyr+w Dp[_is!]uB#fZ GoxJ]`0Zwfgp\ȉICſ--_28QFz]{D5~$H2I},Q`41dq5 #vr0C^s]+~ߊ|':ϿP?M!/fAaO]S?hx~-&Pzb3?$WQ>@8o_DŽm/xU:~bO'WYkrʀA#esHt/vo9vx Td~5 w6 D"-?%-!rdCoB_4`hSk1–:׎x3Ǎ}NaH a{?uYmQPˀoa&&G1V^ `C&TU8*eYf`z`Mŭ˳nǖAiHLU;idQ"|Zo$X4[ 3hLqlջa:wC%Kv0,V5xɦ g$Lօ0\IàU"6Ypȫt UӮUCz񒢙c|\JHrs*ֱ6ɩSNcqP]Z]OAZ0[Kn(9=Jq jR9 fَ=-̲\VWy"e?¬Y[! 4-.͛mt*4F\YC"lOLG ѭ,^l3O!ߧo=!遃T`a2NsbE.3ᡖ`&*μ"9g^x[XX(&L =:G灁'kJVmIvN+u+ G`ˊ4i~voP3TuFIr~n3XXqi=8,d+2˸ ,`U4ШZf *dԺNsvD =uiQ0U3֛奼3.}y|86C7uqP sDL2&<c 6'7^uG F_'c-QN|y_MXp=@`>jZ5n.6slj:H|qb'sp~4i,{x |Hv FuM`2IoLtv_ TGnXoUs?A@_ȬUNp9UG̶w.MTu`׼Gui'jyMݱyQw*f@ƬZw)|9fCGSfEd?.<0e$oM*6OK|uy{nZl#IsU*?J!r:r*Ph WQ#hOdUaI5ei/2gꮯ}~y ~^>*曡YZ|~b9mgbG?w(nXۙen^c#dHV9FGL*Gx7 ig>ul)Nppg$S6&MJ"ѫAG]E]4aJ=O~.Bx Z6,ByE",cֆD3h=B>P855՘qz~+RzR΍yaȪz|N{島brT̟zHp;PgR[Kt+mZ2&d<ӽwZD=\)ux=~]ZQe%lje)]I^M\OkOdS&htҦ>I83 "m</Ut˟>w/ "=E[k yr+dF*pI7i#OLDn*tghO58e#Tb"i vg(nC]A%YQT!ܐ2h#g,: |IKe*R~!M25ow8DYxVI5;آ* <Z_M-?],nOCY*??}GAjUrת|}I.>c_|!xU%Psd~LuxԀ@$T,xҼ'oVpIxJgB""{JD>#ӄdIţ4.fMZDH!sŃZ'wӷVV[&ipjC/kZt2g#j͆ǧD-=\֝# ֦@:g@S'fS,QVnHmI s#D~ ޝ<"OJkov%u=DGf_N6r׳7&j?N-㊤mHy5tg$=y㚆k!sH M9ene!NO5~HPf`~Wu(\Qx6~WWeyVmmnjgwB9o; BZycvnQq.,]XdO("!錂'8Y6nۻi޲ 6})eqPCk\+z֝ԱOB+kd daؚ5a o5 - ^cPv:қwQג2sրsk4d$yfgقV$zm;ZMmMKc֋483;{~U;%sjݢZW=j'U Lڕ;]I\̼t @<[\dwqrKK $ m :gP=[#ҠM$iE;L#H~qM,8. {MyO+Uj 畳'6 QsU5"1(%{ hhB,nO̓޺+ۈ#x8<895ׂV67zw⥂UvqH>n# ֐LH&`x֔ @\ cfC (m֬uV|t=[Cm'wrjS6׀BR '%R!XY̪|9S4'y(3MK.(HjvvnA,9@TUZAhUyJսӠ2a0[LyJvYat#>]tT~nY|(WtMrY@ i:tV+턐5wEq@Ȭ;RyE^v`,Gq%~5~GlY%:Qy@-ޡ d;~%Lc=kC{JMum-Ɓԛlw!.(>[+k7N5s홷qI [[wu} >x,6੝O\9.\(|@C~"6 q" PEtԊI.* $Gzݢx> I/vV/g^uЩF?h [K>$Ifp3 !%~G>Wɟ?k}s̪I  fH]Kzo{_s R܏ū;mO/ͥ G$f߲-WyB/j)m¹ޙ[<9ͧú3 WDRR NȘҸ?xS.f`Cmd~B#N1Atr:SJou'H ++Fs+9(^KSE'T<¥"O4&tS$$f~_jn#{kG+ĚKhYA`m8??H mc;3/_Ʀ HZD5 qė1Geܫ9 bH~|?|!K< i?A]|l,t?*l7%kqt3C^ '4YTV>|'Ҿ7& (j e4_P}:yr*sEnx%Nhŵ?A^/Ok7UJW9ש#='HFP??i-U'sB+woP8%wcmCE웧?ȨW*'[+;sqxm0CڪEFh9{6^ҹcL,am(_'ڽYDj8tլHgRﻺ*q3m?b c_5@o3w?3v{Kk|yV=zb$hi-j8swVrs-b~5;}BH^"õP/JȾcfk~t@u_2.?C\o~ӢYUN0ўq}ۭåȌMX,u+i.nFWp:QOP?(|PhZx^>nt|[mH_4)OcZWx3kt`%}~׺{yZ5b'Wg?e;;ۦ"W%Y+'*nʏ|DFz\~~ُ}~k|2\[er=þ%~ȷ:Z_E-Ben2$:sYeY3ӥ}ٲOf3Zp315"@m+E5MXpNb ]~O ŢQ@kyc+=1U%)S խKFPr?5K:=Q?05&<;P{5WKilj639?C_TjI3sڡZ~aE=Zx%tAn-As \L_ȟ~0xz9lon-Ǖ# skkR [Rr=ܠpGgyu*y{oN5~en}[\7GbfĆiF=k|isQQȀѺh\,ؼ%?PԘ"/֟"Ekd-TZֳmvw}4Y$DџJ\QԵ \ZKsJRU eb!r=8\4}9pkjC$1􉯎gr޴buXҢ6g9s-;3ı|#sd>Y@cKApu9*' jk|{խ#Ocazq흙 q6˰zgVa8 v3D΍$sHIu>y.Y~F GKZ&8[;c k>/iCJO@ů#/$$iKXaVTt9o|rZM6iqZwORAuQJ?w=@}Mp!ԭ3Z}$>sB n5<ھ%dcӭ/mU%?zfV'K e"'wP8&-4mJ=2*S~ZeM~h<1)F:UFI~E9%^I"#YeEϖJ-"eYedackzbd$ WKp08#ڥ;2|I^zU6rx: Yg ءF3Z:n-qE/4by|'0j스,N=qYmkXV<ځ!'iꯛ#^ufG[q։$"ğmF zۥ"m=0:][w- }@pLR(IAp%" [ȗhkj2[6Ё*坄~,gGjM lKy5ss5N2'˘ޮ YL{q>8$S#0'uH8[AԀLNj-VyF[UjZCgy[TRܨ[KGp)GMkKon?Ieu$pڜ/~;*a>wde!HU8YudVk<Z=jiCtT;zY ˌiV uĝ[\t*K Zeoc^ҐujSt4CH#,^ ٭f.Ԑxچk61;T<h}(-O -ԂKs,Djgp[*[cb|-+H*O5=6YNaZQu%A&G kn@-x~)tRni6vYځ-*9{6{yFe N)3:^ 3Ձr ޥ֢mnŬS׶OFr M׬rk7zVMI˱JAnt'<{"%v ?QQ\ ,dqFUd7Ҹ?R-:smx.X.d 9$y5#tNqpH]\W?>, selGP\{F}O|'-AFjz?.k %O5xMB l uq\WgkK+x/@ QPÕ# ??vsQeI`85ݏx^m6"i# vrvku.wN)hRkk[b 5ǩ"*RxTy,9|4E~7L[=7Ex2(-.k& WQf|I?4G^'߇߰mAƭb}^^2gk{GY4Gee/+wy{m2$s^9Ox{It,vf?YH.߉5Ef0 hxHAh?n+ ᾩ? X麎+[ ti@e\?Z09)yaiio iS uXcO$r=?Z hQ^jW25hKr3sr9kEY6W=s^bŽDT\|>aE] OOӯ\Y8g* px|P"[' #ż$<ɌıHsXƯmH7$TZgol4-׊XmEclȞXe8%d ⥥% sװ淊0s^cOVW2?ƾu? kĩh1jq~+[1($5xkIY>5ͪg\cb!f=R01#$\ed|E7̮< q^d37kj0O? }|c+^% 1yQTӤh7WVڙv`+_욶ekZ:cVgL {‘j(!UD@UFR ehV.bl`:frur oNrHY܁_}V?"? C' }Nߦkƿc!Sßz. bm1,u]>[Sf#WF-~ğu=nGYxQ{`ʲD;fNg`WӞ YǞkȣo+|Eim$dmP @:cz zrG$M`r:z֩+i @-goZH*sYv0OCX,D#=1U{Gu%ݹI*01LMg/1P! ҩt3hi"X@cґq)ٙ,3d֡K*h4$MZDľ1ީ Xs)΢[Te},>=sk^K@`'YL;*ojb9eA2n}Nk` i,tϿ3O4YYf `Ԋ [nz*Qoyd!x4&әPq)q+4`;z׉2Qz`tz_'ݑ1gRq<ـcXwQH>PK3mX֩-]/'館_.𾝷WtL d:tlAe@-c^Vd8qsZj%ߗ2"k[gS st$zz2Ң2{֗jT<5nYqi\-u78_1&vuLxRMjO4-cҥi=);ԏN~cT/AP>?:: #!S C캥D}zufEl y!1㩥't!p-V/ !*f3$=3Imc۵bO45d8ZR#[!c1 r T|YX#:3‹~lV9R?T:V z\].dRoBkxeas8t&َA?}*Y$gȗo)ֹ-;)7eɏ_ZOMbu7",s%&d[\1 8|:b0ajdWv2Yw3oN֝kbܞ V5O$v5=qlݴR/.g ?0s \ia3Sw 0zM:<4s׬x&h\rz?ZS ?IK!9'Qrr]x_MpZwM*<5 K(1I ZW̫G;wVn ,\v 9p"繫1 qi2v`F,ں)pOe?Q6p',K!ZŻg]H,*qJArגEiNtHyȫ$@ W>ȮA@U _[õsRO Z̐zCLY2k&Yg%BnnO~A<ZjsgtPqϚoȮpI7+|ޕ2A,۱i5F_Ơl%o99&vA9Vp83Hq^m_-w8=j AsW<].w >/'\|}%OC\>l/ÒNyNω<^mNN8g?l?Mi`!}+9i6hsTSE|GOO\<1EVɩP/QK6<36vm?Ҳ|-c./$;DB98¨&%>1xHr\^8Az)<xmlV17.e7F~V*:_M9rԬ'[mQKiz${g駅HQԯz_-A4$/$Fyn/R{ܟRCVeh[۰ݔWoOOHIf{i $TtKmȧUz>)\3\N9G(_gĿo|el.Nð5~xfP񕽬CiszzW|$ui1o>fǘ~˟O 0Es:_K]],\ BЎw3>bGY'-Z5XuMR[!3Yzuvdb]6ӖQKuB嬀9 ]#/4ךj>' ]cXѷZjprO"Tgd!xÞboy`vc }ᶝ:6X~Csݘ+`?>6v!yڋ,S?0_LW=I]QEŠ+;=~־~&+pm#k2UNW =&q־Fjޅ']vO-1Uӿ} Ayi!G[7̥Cs gQl.|=ߍ~*#y5V"SFS QW^о-uu(1y63`Ny{ #тs_t8'ں9UȹP~4[YvH+K=״ƕ'Rc`YcrT:kְ0Ϸ^-+:^U%'Ib}k㗇m?Ǯv'htwo5hu>o7Eռe ^Xx_PB6ekUy%l$!9<8=Zְ͟MsG󤢘s֟3ɾ(Zx~ O_[%)PmHSa5_^>߉m>>ӧ $FL嘈G$cu2:Bcn\x2H"L8BGÏTZ̾)Q6 Db-ncV ,|5@~đ#+tG\ h<#n숁P9_:B4@BG|GW o:Ժi  NAGޭ:˭fxEt*ٷQ69G5my4k=<'5 >!M^Ȱ[AK碨kۼWumi-¨8=N1oؗ2XC'|[l]*75'csQ%ʆ߱o[k;]hC;`z6^0:(QEQEQEQEs?#oxPjZ /wp/",jXʧ2Heƿ ?b/,>{M6z|Bbb 2I'~-97_ i&K#WU>XsOTg8w^]x_Tmn#YT}Ig2myF:t_$xxlJԮYaPX}{o=j?}`Ԍ@8s; nլ*"iPv.|dw;_/,kGҶ/#B j乍bt=<F5a8Uyt@ bOm.G/>I-,MT4]6? ?tF@c׬ng̎U~PZ Z5UU(9n&`/h?>N]Y&\U{1К`4 m!W%8W䄵ί%} >ƫ\ `)Ʈ"!kf]q*eCt?[:f%7#fמּ0 Snyֿ4 㟽\ğ!Kn[F(vn zU?akE>9Q4-mI>dcGQE`XQE[Cmfs!J½;α(`<.G?VDƇA^ۤMF8yTڷB;B7ȭ4kX;,3*ۤfBB0 sW]jLxihɪK8AO~J-3*`_ VfgW.o6c;UX5TLKd'X=Z؊0 iOf0>𦪁 pAk|#-}@$8翅Ye,q {wBXOjX?OZ`[; e0.vⷬcڤk*̨|D;c sX`1g[sŠ3Y L@{S(m>zjV]v4*K-jM8e$3urHZg隭{v%Ld}_m *14_Q\@gτ#8֒To/OCQ\#|9A#ZJ"Q5#tUȥ#&f:L s9骳c]HF C,L ʷK-۾:~4 SnF-indYdXw(J[p!O}}#Π2+OfjeHhn>nԓi׽V e֣W[umO/|Zّm=X`VN=9]#5 EDas*WY xĉfg3W1;+>%9:R׍# Broz_xˆg>-$w@OO\Xr9 ݑ8'dX}k_:$*rrv]/]C[3sB/% _^.ney% :8ERlYwl<%:MpddF=+nQnoN:\/x:N OVXwqW`kPXkWC+r+UDf[hIgI n3V<1Й[PtUxdtfwk6i'}x7a$ (v_0r;`< 8t[Ym1naJDXI=m*K)RAhrU 4=,I˸͝2^#3.1].ׂcouGaqҺM AuM]l9{-Jݏj+ng2,$]^.r^ivS{e| -*BƓ,uث0}E.d;\|য়l a?e[E8)?srP+:`~[_&&9\x622[[5۷mO FIoj:Yb"GاƿoKVD+"a{ ~\EXF+(YVΟv9饪~9Z_vMi(WRhO V:*x*ˌ^`Db|5.F54b"=Ҳhw-jIme6lg&,Z0S;zQv6/`_YRN+JE=6f_4 sOuGgMBM /tE䟖Oͳunw-Oޯ#/1dv5T[s5 [ڧwJZ j{*Fr^9׌g #-Gۏ?:~"M?O \ֱh|:%XC$_—MW5 eSfw_0 kĐ߅n c.e&4 ;]m4S+5saU2OȒ}7Oc%Uu5*2E6۷S=׉/$Ĝ`eũ`AVʡFqQj]+ͯл&OmٙjXt ʂEAgpJD 4{q+4`7g ;隊[sAךok*Z RK,Jnho5s!tsGQ.1ҬFZ;T2\ ԖZ XI|]ljyོI'oỻܻ{[ibU55Mz ΕUNs\|qf,i]=\Lw2('<p0A!drOʚeG㯈Z}"+95sqGI.aמ~夻|kmP\Qm: ;Obi~uHӴC}=F`MpG|WoxVx-`8X<*g|f'M{w;d/'o5K5cR/ ]-޴<1[?_} *OCzBq\6Nr:}+-Ƶ$FFN?#ט|;Ws ;mJP-@3>ƾzx&8+}*ƜF.1;?wug/6&gsF6H~l|cgxvX lڀ+> ocg .:WEwj 95Jkc'v6i>pGjźĚ˝FE1 .zVИoM.˙`?J-BmlK^)MdG~k~xOu{)a?ޮbWxuIc$ҽ|[kxlKKs}yG2iDAI|cx.dbFy潳N|/ i^){ˋXm$d1$VՍ#% ,g]_K'd]G;NCEW׵%n2] Z?fo_Tz۵c{8TF, 'R${ QY)L4 ,@IUzxgQҵ';}N[IZ"Pn͆8=~Pc+׈fɯj$k+W_-E#&=?30HU,KGi1z0+g5OH^>vy{deE,sǵx>qdlW /_M|S#Ogj~S\|lubm4u|&;ki&r>?`A#VxpY>F{f=ֽ{CtݍjvhV(aKźyH-.G_SUCT6]Qvq_lS| uDзAַc-ܒԣrp#|K'ƚq񆙧֍ d3pEx7&sx`~ٔ+c\[O3{u);!ǨM]7?>&֦SдHXd0=(]B+jX5_*c6y 61>k|'}ܭϋRVaϲEسWx3oóqI!1i) F{z{R\|}mAxJ9 ~7^t+XXڄjGpܬ°?zy!o#ު?©>mDj?](~+<}]c2y`<9[t]WZѼ "(f<䓌$$ ߄LkL&sfns8wV_^xƟ? x۶8_GU cMv:J" !言 XrŠ(EP_90ǚK/ _͠i14nT(V>['b$vx~֞>Ѽ@KO6İ\6 ײi~4Xmʚ!ZZ \q?ʼsǷ2E#}ˣ|ғKs9'j;I[{'<Op%M>h`6ba+X@N~XG5f%v7^L#ֳwG^_EIQ[ޝn} &)v vs2 Z!֢G~A,% q^?I36#5*Y9 r?0+p־?gX5ܙ (eƒISCufs < Pp|n^澭?h(Ķ|&g$}yIP ʗ $ةZO}a /Y?~~V \mkz1jl%^X>޲c4KKK (VG0x r8??cO> O~tȒнY15>c'R$Ju%pm4kECqk$y(c?>.i{BAo Vn*FѐC6 yNz@;_|zvMV2L W8XOx|0c]4_U4㐍^/؃gZ;rO/e0k/V#KĚ'RnM뺟:b|i8oi2J 3~~;~&VJ]leG9d}0:=j=圩Vz/SIءLg<¾ts U$Eċו?5' i-!D?5qhE6pEU ?AQPhEVexRxCUԖmWPLu0|$0x *#~%EnE53~YB<ׯDsFOך~Ou!xfq(X،1JF)iε\Ћ\ҤeӟQakqAzld> j?<[?' v:ĻFL:uľ ǒp>-~J2vIVF2>@~*$}[⯉%ɰO&>Ri_|Okq'a|}ޟTaW0vЊß[e_PjY&~*k편 a@%W\WG%Aί4OV8}~^#xg?ʥ۩HgʨRNCQ]Зf 5zg'y׆}/jz|ijD쵻mxՁzߟ&ǝiZł/BǜVDc#+_C&]m+o'FOojOxovp}Տ^2Eoge:UKNiok7O/?/ZƦEjLSmp:s=s3O+"0N:wq Z\zn OZ4؅ę{VB3uA$2BƠ>3 sxE $%ƃau" P}x`չ#$dxY%& Xcb0^C֟/QY\C9B4gqi6sM[ډ>ny֑&w{rE[ d#dVGk˰΃ L1b1,~?ޟ(]{w9/"P?P\E!77N+FD^TW-=+֊l|+Mf<+ԂF#x'^Wczcvejw!8n+t7oaViqxh,LpkI3j+ClIaipRYЏBzWuio%R31b䜜ש~?f,?^3]8 Cf O$X7gFڭ(p3=\fkD +ً*mYdkEP,5R2O%+jpY;>_A_ZM0b=N8oA r7JQ"ya}Wm$Rٷ 9K khi=N:E\x9.%[^:!{wqw*+vPz^eYmIPkMҋ+㷽rZySO9Q __u_in8|+¿$EX&ggcUP2Ğ__`9YgĞ"mݴ?S?G/>=!zxZ}IpYOKS(oP__X jHt2Ӹ3vN~*?<B(T0)hn(@QEQEs~?wx2r.c6y 6>$\j~$k4w4K AcyR-C=_05ei'1UL ||\2~]*RNI rkk!";pV= G ?Uu)n(C<З_|p2:Lڌxz$_^0i%Svg*2I$~~ךhw v^nYWOO F myz' MH WY |߳^-enk o"EA>z4QPQEQEQEx%C@iׄhQͱ/y[%X'bko?n4YͧztEդVH$C?c^UDORi)L[tp>zیqKؘ. pzVڼ^߉2ڌX)]ܧ ISpA2HYA6kUܓro [Yc$s\7~^Dق2ǿ3ֽLif&:[\8&5aߊ4 jXq'־q&[F?~Dݵ˵ghdW?л^5''T?Z,L+;ʅ~JX ǟl|)O@I'$ CTߌ9NRֵkgk/+X(&VM ~^mN+Mc6][Y)S[R) d8ɢM2؏$?a'"]In\p ܏m 7MѴ{= KKH qŠTE*prrܐ)QEQEQE~Ӟ%KClo=R"̂Z5ICp<(W8gVǮ YȚ67i=DKlyg@f$?j]xoߞ7Kx ndKX.?H(@~~"inSѭ}{Ks^Y^x/:>m/I1ƨ?ՠ((((#?^q"sE0)OV[\j:92GqPx?g+smG ,|Bτ4[X=s]Sr~T ^öXſbiVNM܁"-9 7nE]C Op #0 қc>zj+I..Bq&bJyHcG p>72Lw+4y ~jem)#s9-9ylzдBAa#g}MVLj F6Qgu%QMkwm;zK1?SRϺ v2R &༊Pz7$X8c@s#46{pu|J R~Y\ ڮְc9r?l[F%?\Uq1~2ب$klxPXe:Uk4PoI$w+ Ns>"feC5:oxͺ++յo|*^\즭 5@G_9~džEdaW"|kƍl3Fiy&xf XXA(5zIh5t:}"_?H_غoc_֭5)] r" V[rm'<zMzu3giObXZ|c~G_z&t9{vE݄D0:UCE-k8\|SCqb"q"-(p?/Z죷KuIHp>f1P#}Ņhh@o. ҝ}nT(#@#\2zUhȷ>oL~U8c}+H-rj|yg;j* srrON78{7xLIzZ;-+-uO_ZXGak;2IX÷ƾ| ):/L+ͫ[‚V&K)Csevĸk7 Rg{BRu,f xMp{)1m.+h[6bTS1JJNET+?mn~.xm.EfJc[ ?+]@d~*GcCJkW˛/>c9Mvٿ/l?bԾ& G$ɯZyt 6ϰ4=vuӼ5ywr kx%UP3ԒWO1?~k:|7_1u4语uh,pye'9X\ѵݦ~XBf1Hw)=N\*^YQEwsvmrOXP.fKM#̔D`d=?SoךD%_?F&e$cPXv&;O-tΡy)gggaI$M\cq6r>/'XMC/]M!C{5g!e?9?(UQ$V*ht:s!5dU=`PWZ% ㌾iњ"Sξ?/MM#,s-pO}~c֚5WɫZBar`К~z mj~j}C(~?>SЂ8)xŘ|;p;-Z0IWYɎPNukOux > sA2I~*+>IwKuhdSv`k}PJH5|suٗ }no{ He 4sqǺߡ|)|ڝr٭ІjkmXJ񟌐$Zmu-m@߄_ %~C*i|ɟOc|75=NeVIkXXE,Ā9$2k( <;9hZ!5_Hυ# iwEneؤ/lֲYEV QE|/GSn.]zH3J yZ5pLvWw$?Qi tgG ZI|6 z~ZY!5| ^6_d?l_IVRh(~F~#O~ҟ51 pH1)cZmoҴd6Ѵ7UFI~/ijͽ楮 I,Oygb5pLX?ؽہjW`x(H3E}!^S w#Vv ڵ/qQHOƻ?߫m{m"?L~,@g}[}#}u߳N6u,qa|+׍|<7opڵ md KFp[֯2+Dz!Ji.$cuv)#LҢ-iwk: iWif'q<3GRǗrBWX.D+8,I?%?hڜ#fG[):o]n?̫#\Bs^9A~ֲiE0~4_/h~(ӭk*;bUX,JpWHυ|/셬b?^R`;7ZrQ@__CYMsM4#HFK1<$^ uݤ|J-Ů[8??ȩkɡ]Fs<4I:,XŠC$YM;48OHmZ.C'1˟Eԡ?5|~[ g8t/iǜcu;?cNQ/ZON+Uq#Y4{d Hqk|ȇʹ5nM2*H_4&w^H#8JEn13ðIo-؁VHqצ:56B%H+Nj)KcfC %J8TO=yow g Y+=2hnAytXmTvvc*abmF'K)ɢ6%1ǚ5+)l}zVpZ0@=ٸԜtX1d 3a5^5JNym$484"c(oU5/:@-*8[О*-M|Ls_&n[4qfv5n%p&Kmj.>Q zU`7Cj[ s_bK|܎WTMOVYq>eOcփ[巸i%䎸R(`/"`MZbx߮ZP{g~OSEojr4lF AbsJ"(K (^ leMpsGl)?lw/?mc0pV3\EuxUax|cL,JZWCX׺xke֭ť.T?u-,zp~tD珼^.#;>k~+F/ =CEdm5+yC8lѼt$_>"hNxuS :e6l1[۠(@*%.iE¿.}+m7;9V)e8c;W߶Gi9J Y6m= G GNyd֮nn&}K#v$rI$UL ;{滕)ƾ Ym.lk]ѢV}{R0(ۯ/bbo&EaMָ?19Tpǝ" _ڿσ>]OQKI&Y9ZI7w\^wj ^+FxU`WC_zD>kgwmz$dyzk'Pmؖp:}:057[6cP&;rkupVΡCz|߀0m[E6V,RrD8 kf/NI)@XCa1$Iu\Ckξ &֭%Ss\N?o|#ƫ/ &u&K0t !F֭! 7ohySebLtTQ_pO'f*Xn r#dQD lˏyM~yx'✟5xcG [iYn<W랓[ZUkgA k@USbE((+/3~3VnRI-%Eh] xJ =6m3~ c8lgn$nxEGW>k> DwRy:uJYt$b { rcsV*|%Kuc py}k O7z>_tcZu]m_)GsxuDkD@l WZP-|)6ohѯ/HLp ?¾Tȿoů<3o݉@~*Տܺ(!EP?|U^K@dOjAO#2Ϸ5qU]+eTicvD22>}7{YDUJAkh,b1gxnc_RO'?_Bn \7,;0N}!z`)w? y$:Ds'w@]^9~~0o/T֬ퟎӨcj㰙C~4xITk^*QE|@/?>zP˟y3Am4X8Pg< v7lk")?O%3Q;h2+z{ 2eJ'Ja%PqnNy]So`>Cv7N0ڵ$1D++t?Gg0d[D0w\V )翵vǛh|ψF=y_0| 9oBG{V[?"Vںƭih}^G- ꪈN KZ~_sT5`U uPh/"IqO %GR+uGZ< l0E]<"0{5jޙY0Kts L }:J@p l=JkU r8fKH+S]HIzsG5`Xaf$O5嗏-+a2F,oZ}(4la=LD/Zk/]q] y`2;Fq4Ŭ]Y##0Tǚ\08t6iUSig$r6*'4{nƞFjķO&>Oš I4?޴. [C=~@*7Vm6*ʃE6~Z[7 Vȩb~o|O&{Ê,0y_ϓ?ʼO+y5c]S0.Y$CķIut@6ֺX fn 5Ź\^oJª#_ ;4,k?Pa:L/5{kFbsٗ_{[6奚4>8 YT5ql%Ɵ.0>j6~_ _kh܂G=z~{GgO~uM+gRf+rk%.̹kp+ԝ37u,mmwK@>0Uy㵷g*F{x_yB:;G)lk"VI;Ceߓx x@Kys%0aW d@?jΖ*ړ4Ɯ%"P_j`"M# zԷ`(^f=xm:@t`YW?ogϗor:ۜax93Y''ŋhF_NTn&tw.u9_V׮[8eξQE ]/|g_]K+8ЫWρ>x\Vt}6q-~VO+{Cn-Bdz^ucڿ@f '?Ovy$Ww_^Zgnʄm `t4{hxKx%(*$rz(2$t:T]ơ$Db9Kh rp8G@~Cm/ᮝlq0 Yp P{HHG |ŇG aL.:%l݉5QNQEx;hMKxIҵAlk.2,́[§<W~߶vbi? A-O8{>f;_Pe- | vbl7YL,eGvq'joYmcKuh9-$ ;II$&)=s~'W|LQo&G DaPfMwiln^G󯄼;݆2 uG]jlXX~l?olᷴ]@/?!RE`lQEeZzvlWp;ܐ+Aֵ/5o]jӳVK9=Ip|S{;@oD㮧-<[{ 1z|jV}HKXv URCBsYCMxATNτ x GJf}Rgn?!aR7pupq[d'UT\y[0Fq^]W0oaBOt11ڹ-OHQOZѸym$!d8ݎ7sOݦ,qC|E<3R`+ʷ%ܜ<$ kNd`9+㟆 ֬|$3I%kusI̡2AG9+?1o쟠G;6$Pv<␈3kXQEQE)2_|An~{ Kp;b7GbZo, Z!fnK^<~)GW4^QE'5U# $r?"AsC~?'rA;DX +7c˼Qhfg)񟁉ݽSN2+[ּH#`2p&&|U/]Đ~_ DŽ V @84Z ?k_>o&uȯ"͏=WQwVO4ַ-( .x |OL)֓u!]Q?m7no,X>|N|Du'^c;HI19$?~_|_=;m=H~u[u/Q܅'\5zQj{Gúk;t"ʮQEfhQE| W6weS)|xtx즞ʷa+Կா$[$ ;K̩5SYKM#Ay%;U"QPEP_=74L7&ZY ya] לx.SV 8 B+4pRARjĶ!24]kHJZZeup?R+W y/Kooal6к?` iDR>ȴM&bHRǢ?AV(( z/tfsOxB,PkED?¡YuO?Úm̺~yJ G֩ZVIzY'~67K(nA  ?:^q f_<ග!<8 4u? }QREPfu_>ҲH.yK&qqcp?d)l1c^KzzX\=AoB|ē |7mstPY#bF}5FQvd3Z <)72΅UTg^{jw,8@v0<.ՋP@ wvq5#8DM#ht3,Dg=+FD!Q#ߎ1U d=lϙ"j79Lf@XD\t5Ӥ_@8f-3-Kh]ٴbKeNrX\ϗkfS&fpL5|4L操*5%T:rFIl :RQҝfveQnH朖X́]wŝ?J̈́0q0[='+|E#6*K-|{9+-X9 qb;T>"Ƽ[fidG6xY 󸴮k !"<\VrپklTϥrw:ZD|e;Ke;DЀ~;|t>ebZm!vP۱ k4ENOjo.KBpyj`Ц: tz<@tivDϡc=B'!!5v.Cז~˾9 \۳;-Ksw3ސTc<_׻ynշjCi deyVO=ό0'ڵZE,qa8&}F| jpWB%CsJy~|拠.ҪJ]UԐ}"' 5o3l$|dFm؋?+qֲ."( 8޳oyJI)bʰNMW]HgߥrߋF 9ұ53!Tq"/utU]\_&db|urj|RDKEch[i? _RgޙvzàdoM]A[k+VuxacE¿xZД~5I7WfhYZյݞμ% 隥ZWH}U0 ^ %TSo_A$4m#I+C Fc*K (0?h٣s5 .A{i"YAr?{?좷 A|Y7-iͨ\YZvWำ߉zecDу0'vt|M-k᧍xOӵm;P1%.c6?Jr$ݐjDs?oQձh*]|!Y2|xvKoTn罽=ĆIfrrY݉,INk$dM4AEiA~6 ԯ'F^15?52dzV 09<ב|e}ijs017A݈i? xwqi>l(` 'y$rMq߳գ^Eާz}SQdė .HT =N ~vڷ췞.?<šGLMSA_mO,3,~u| 6&#_ƒeIB޿[?7?no~'xs&\u{nG)i0[{cEW8Š(̏(&5/Xs1`Ak˺̿}쬢oMgq?hj߈8|kw6G;0BOm~ZMS_7$P!s((W_},Tr[4׶[޺[ϋ:.$ziѯ^M[;3(S@uzO[|tCx>WԮZٹiO($kJț3aja:f>^W<rI$+ ~o{ >'׶j,[q|}ufn~_5߇g5muN?L|܌yq+]e9lPQEQE|UE\\kN}sKMu:Nsmjq~yo{k}=WlEZӴ:zi|oZ$+Q{t!(֒d Qj_;DC(!Tҟ%3yc۫Vv#K r(QEG{_Liz^[lRx?x\|[[+xn vb,ciWKmp皵=z5Q3&׊Mft.B'I{]0 z㊿;dN17OjK@=PSbO~WvK,Jָ=^mNѴH#1]&eE{[bAS#n&O+Ghef4=zn℃SO/y66ր6n|u*9Y0&qY_\X8;~Uf96;W$jn$Fޤ~dqfVճw?S^ymED8oQ:}KԓqX2[7AO^6m!,Hp=j;.KˣJЯDO51@$Yb~k=3QמLg0[kӥ>x 2&sޒU Z$p[.?Jx >63y?zoJ̹0U)cf`YdԊ05#1fj'$޹]Fre5>acy)8/ Mx:ĠeQl猵*''aQEuQEZ^|E~SD6$*dZE +^Wʾ/*kP^ %!gf?v~U}~&j 6ne$b@lj(Br-z?oN_N?D<͡2~0߳]nJuvR,`UxSEc?~$g'?F#: A<8%?BtN3K#DMO@kهmC,g`_Z1ND?đ q#NSo[^4F#i=?v)ML?L7ZպDm#׵Kp %~k(%kj(e xHu/!IKZ؟xSW|Em%IY,/(Ι|v zn澽lGo+D]YTPY'ngmǕWS^S)?TC"(PO-|KW_ʱҭeGc5~ ^>+\ݶ՗jw9V?m{^4^kLZWcr64Խ1 ~? sNFcnUc Ojx2>:⮡nOn<+NF6](ɞ*-i?>}Ue׮I2tDcr!_OVwf(Q@Q@Q@Q@pK_]z#ksr,1q+"MwYhΒW[˻ݙ Tb?A=SxBie}ۮI%/_ο|+؈DoD)} q In$rr≫1-GQE# (8/~h(rVo>PzӢ *6g/-ьF A&skz0S[rL\&E֫TalG袾֏x:՚,.uqxY:}*Q5γxM6vs IK,ru`A/ 'Ӵ{hZF{3ij07 e?Zˡ-#BYrH'޺'֟x+v 0zaF [UhpTO\h|oh5k{\7Bή"e?Db[_E (9=2t HY gldBA$o? s4VَPYs| DuJծVi`/*r {-2U9 `N}sOM{> P:]1mkU-Ց[ovƽ>.g'Hb LLU=3L7: v=6o#Vde j{$8om&}*bj $}sjhKn~zN8#zӬߟsc)h7?֖wc̰2y-zk-L6͓>=En.iISW#nPgciw]C㚿 ]eTngm$+8=ji3+.iqӽ ugT6qtESQhgJS%㏶nOzՄ+[(gWb]R͉)sּK6r+h(Pr:׊x.kxr E'- z|Cf3r c L#^\.C, s־*7"Uh%w5tA%'5 YmWj0˧z/§ EicXLn_$8?ѧ}Z[ˑ9ZjB3ǕK~wM;T%u6ҫ 6x_ؗ4i$P9xWğfu*p;WO۞7n# dvcMM qKc:!(c&[c%g¼m⷇<umq ،q_J/ ]+_tv̴"M[tGS`dBU}sX,L7c鞤}kYeQJ|`̌%o |ǭ<kA<]bgdOYQxaՀ͏ku]e*Hc^CCWe[O/}Zh>qhE&mFÞBc ;cU4-~Dom5 ͬ43/{V ((<{# t5O֙iHnoE'p6iwNKQU[d=b=3aW#$dGtI7왤pX`l<> Z]x⮩kWsor3¯eQPJ]2~>;|OMΝ!m+kgHΘ#(Pq_OOS*{ M*vYH?Z/߂kU bNG,[ٝFÚ GoTP! tQE`XWʟZ!KGOӐRBk C$M,:j>D,>4I݉/Zkdzb{#>Eؠ- " 2q]/gKևxG6>;;=U:A.xl8ZNJ+:h-A$rE#!E~C\| tiTxV> |T,^9+ä#}"Ν)N"nc'FQc>].-j+㯄Wj^U^_GX? '־g- Qk4я0iYE((('k<~giƚw`ҷ77|GY޿1m(?.ixwwg\))b* gV!6fχkֲg Si )?h/rG;UWG¨e:_κ]#Qݱ"Ȟ);V̙4xgǺi_P?h[OºKxZ%繳,RsԯI!y xXW_ޝ⯆7erE$E'F/p{֞6rvH{ t- A1Ay@c> _~A5%t0)QQ]Ecm$G 0y$v dO޾[m6U߆?gV]HB<ރrpҸ.>3h7jtx 10"X&:F$߇1,|qq̤ 4-O.eQҼOmхӒI`I9kGKǭiv\hX5;De̱dL7,Fx 98i)ϼhOO~Vm&6Qu`Ƞ(_9WoJiTS5m˕lmrq9;m?/߉<%p.tJ!,.:Xve "σ5ًs`|/(k0n`'>1<0\KmB%5lMlݖ3!zhZ);%QR0(, l2 ,@Myį[ K/ /uʋm:Eh/ h̿k/ |yXBev 4 F:vKK8ux>!Ů%8"c8eq]烼<6Z=7L׮/ՠT{pMMҐHdv]$==iVDP㞵CG CJD-bSц?Z7]b_ܚ]IpKd/ȩ 32NuGSKx|,ջ: :ȸ$1!p5zU>^olVf&IvTʷ'+ <❮܅W }:9ms14rEaa!},]Ilq"ÿ?U-BKc1zW1E ьuyZkFz-utBkr?g]j|#-ƎQz漟Ƕ.G#?ʽW{ sּ>Lm:=+.x:iǕ#s6rb+1 ]rOy DܯuW""ȹ52?iS%R>/rEյyiS8=ۿ+Yh;>"/\Ƕgz߽{f-VM V̢W?w>*T*Tcvx:&z3GZ1峁6?Bao(6<49&U'ojmYZoׇ֣ k&0{WsV O<⽿omZWfO&H9A#!h lgc_y$ÝEGז1A<{z3Þ+ք67pH89jGOT ۽/rJh&W5xrZ|CqֹVys\iU} vXbA{ԺVxoWPw{?('c.:+}v:ZƁr9+Vic3~ߺ_\x_ޣmq^VU1L`uZv׵|GOu} Y?O_5 SegiBp9$'/|X^_7QNc5e-FR8w<L7WCKЈuOkW"N7".%$vh~>,FSԧK+Oˑ%xpsvេ,;9%c AWh+=ƺ'(1F7(İ3t>~>;UWHݚqFMze| |\<7/P ,:fY?TvH1Z VOrGҽÒ8cHA5o֑-x\ķjƹ|w]pݜM gۚ|F("`u$ؗG>Xֶto{}q]1#E!$ru?&yXFsO^=*++ԬP&`1֤7_7_-jE.i 4/ `߆0Փqʎ*?=k:> [LûON~/:4 [Knӿ?$}%mn2y=;޳;(-HVS`FSw*7?3Fv5?ΛcLٙ[{.;eoZE*c}Ch` uoO»GKdl"G3CQmE1zb4 PtyZ#Q2 iJF0WRTlVG?^ވ8?zWgۭ K.qzWO[MwO2En<#=ܨEO?vNAXt7s ^kuW@`޺ [x-Yv5+6Xg\ς&+TrCgiN_ir"g +~YZJ9K]X|'RHڊ%_5]Ͷm|-tUV2 }/EaW?=ܸбQs+k¢=?١XnK{([pi_Qϋ>_-7z⎲Ojߌr*VM͞G<Ov b?w˥'4!x3yL>hfOcoR\Sg<+T28=IUVa#`.Ro<%O8nP/ZL3,yd_IJ?~%U)ƺN0L*fwtwIع?^+>I)ci+mн~a]o| |&w2q7n2P?1\?a}]FwKkiJXjҲA煍o"y?`I">|3 8+ C ң}Wh7`4uS##ƚ5r 㩕RIw?(aC#HnBA$sDv.C+/  ׳?ⱼִX[m_+wfu?"i~ߥXȍ<~O4- .XbR83#ְXjƯVp?tP5߄-ĸ jHS:n'`=^{Yki[Ƌ#GG*aW>!m>!ܘ~%,LWrm?-?WydrТX vg|,mç$ OkӐoZ]ّTdEbx=:PS?L+Uݛu> q~U:Gtg bh{akXc.X>MÚ>jךM4yA"X?k]k*}E1yyǭJ?+GkՖQgKkkqG` @k8H]o 8Ak_Ӥ' Ȱxɴ_u$}$\~ W$k v`2$bBePGji 1'CFYwayϊtT701ιg'} #/O#FL|9Uq?-0bq_[] fGZ 4IH{ P`\oKi#ϊ5;k)$1vȄ`,J8ko=nwOҧYcR8\UkA#'b SjFye:dVCm*dqzI x_S(A.]?:ǛŖQ4&Y%XFݝ"|1%uQ\?,y9 25Z_Iޕ2z+n-"!}M]{dn+~nF71>5=m3Byn$A5EE t!~Z2,v(]ݽ|M_"'p@(L.f H rj_ iBy8?\ŝ%9wxn%yU(45xΠ}y=RIVHgi礓D^&sVޔ-c`LR`g\N׬($s7nEx8öi;c;N*SzBWRAǥUiܘcwMJ4 =[2B%GbsRzsiHqV]_j2bx]ݬf"^M\: #Hׇ45','8`yw*nł>d*7kG"pǜc֢{:q@z~˓V7e'QX?:W+j9 q}t!,Ұ|G[y%e_>Oi/d?;Vf`󑚉Q'ψ~eʍA+pFG Eohb]N+|]Ē7cwpb(s;BG~!x(\~lΕ2Fs;{dזDFDҾ٘It&dm+Ǯkxí3R.݂V1 '#_k~߰/;+k$4H #k0H=#㜡oQn}_m:{Xӵ]+[9#PqbN1~jmSouxB4-)ߣ,JY6w5]'@VM $Ұ\ k$t vP~+pi=Ig|:Mxg7|MDz̀dE8de<ֽW5mpGm |#ή4'|KvNK?c?!>'jzr2ɩ_f2RZLd~ᇍG3fPE>ZX?[L<3FBNRW(Hule#GoM#F`[k;;hq[ƣUGO5_uԔ$2B( CP}5-*A6WÖT/rQ3d~~ݿ }.&7m-Ͷn\ 1~x!M-ЄdH'Qf{~a ӰcKqgu"DzhHٰ`v#oVtrٵ9m>\Ŋ7 .icnCeXǸ"X`+jҴjk#~-O:) 4[zu{=OZ]2#N+мqxrF$l9&&*Pzu}k4-(ቦ^ciw /nZT7#V//k1ѰN}1_W[h~Ak7͌[n7v5$6aDe6?Oj2II=ւ: y1nJХ lc? }͋G$m|uP[i]65h :ɼPmS*-;A+:JdckBMeeۮV3DO Ҁ0O[As!ǸBvҵu⷇NIA?Gbjkw46֐vrG^{V5)z4 ꦵJG^W|7%ư\;H})0#*[YZ&2.sbm("O'+7Sa*S9Is0\ /v{:~l۫pxVԚiRiOK SJBs_ְ48-0' z5}4HA?@<757yf,´O7) Z6m$v׮PLpBr5^.gTS+s7.mnYAz V@9>uᘭ8WO94ͩO- | ]ORvs\Πq0Fs=+)k3^n,;sQ]qܨ =I~>PE ه=N,xed~Fsֻ؋qP;5p:3Ș5Lό'p+l #-ꦰ~|&uu/cX w2l㓎qu"/5kWP@#7g5{߅G4 #SE{Hekzc+Nkʛ-]Ӵw(|Ui`;Aʍ՘n˯GyoٯMf4]-7Oy'P8^hڷ¯&ޙiIo92n yNJ iqsK\u%$`+n+d"DԱ'k~6hu K$> =غ4KFfy~lrP'WÕ8<9+oES?9Bt"qk56>xT2hVw)-] +O.+뿅?a.9wcc_/'.x$Q$(8ƻq- ` 'B_~#5$[w![Z` wz_ٗ~&Jk&wז2=SnXةRR&G^Q<r~UJ QÞtۙbUqYqǘimS&rWh_u=Cϋ| ys%厅a&%bHv5eoV'MUҿ7:f{⏃|v0^t=PpGq50|eG+-*}c]t;>52y1UOjq~2୚^\W2dЩh¯]XPrd]G7MgWy̒ZT2$AV9kG?S\$?i^x>|>vAIC7˹9_Q||E6\ē}.'2N}1T<1⯄~\i6DOc+Z6p" wG]ƍ)'z-/mo/DX6Ku|WpUEd1O|Wƿ ۭgWb6=+㟉Hž0hđ,Ĩھa WGCb/lХR!^|c a 9>__S|^k>9h>k=“GnI2]"mu_4gΞ%b5?ࡓ|eKX|IBMq!X\J9m\l87 ~R<oo-E5X#<Ϧ"W%(\S_ڧ_7W]Լ~&v.m9RO8 dƫ]ëxD4C<'P<`MpxzWΞ?wx#wO/['BT|%|/]mba5g!Gwc~3qt3xn.(oےp~S0=5]3п]˩XozL2KUa2(Dq~:3|_ι=[K}:KBd?OmalYQ9 Ӌh{kZ 烾i>./- ra6ķ"Cq|?w|&#];e/,71I/τ'kzfsecP qj=J߱h ˫,|*ĀGu]^y׈?>!VtfCϺ(%Rw &c?汫IðxjYL?s氼%"S $bYpOKwԼ=ix#Jkϳ[DY$Ӝ~_ďwχÚUOyu%-cpT~yw /1WqvHNnG yf[@$3#d ;aOZ͝*k7{ D0^=~=WWXִ?z<6d~l3m02r/αᇂ>JI {E%H,,HQ}+4?;=/yzUuV(昐-19Xo{Xjl,qfS O x2^uX:Eƥ{?cyomOO]1-bIXyy;1c]o|A2\B\u*,xu%呈+)c|uX#Zo%KK2 F||;xkP冝in\sv|듀3A3MFy Im'3>FY[6y{X?O | [KV~2$XԗG#ԯߴoWÿ-x;.\ȍۇZͻ;×,s]h-oSE$ 9fa,c/W.œΏr\ȉ c^om?S<[6Qk?R+Zx~8,S:'Y\ fyY6zoa;k$ڞäJAqܓ2G#9#i=K__>!|r_'\|R~> kRD2f) _֑)-rH:Omz>p=FɫEesH+#s11Hy7$aW>#њ2݊xEE+%xÓ,BkT3lC 0;ѺÓ4 ,sO&hfvD;I5©ʞDfx|36Sר!¸'iGWJ{žg!W8,x)UPixd𻶣n- :Wj>\o(TZek "Uc–#q錊ωUam4$ȇGOƽJxr'ʍh3_DNO~ױ HS4|ѷ#g@z}B^ C,ߍ.}#Ϗ1H CXf9<*z|<&qv&BbWCުx'ht+qg87=wMe6~ɺwzʵAi.cC򽥬<8AR\8l 8Yt][쿭ݑ_ o?$I-SQ?, G)=$`q%|X :W%kM# @ACLdxjO^!c'ˢ^Hrw6no o|bVTfk{vbX.@[\+")p1\߆7w֊uf%VRJ-18e#EK&XMb\_VG+k÷q-2~Ɉ[V:MtD~Q]cp80Jtrj%1'?һ7C ܾ_ꦔ7laJuki؟ΣII *φ0\8^n:BIW2:ǐȡgE[K̩xV9|rз1c4v7_:6̝x2n5`9}dMh}'SŴ=/Ƌkotx 0\ A^[j?ۭ&Frn_mk1ѐXzυ=:#r;姈Wd}wK^ Gq|1Ț|9z֙0$* xUҡX <2K[~t;&:hե wAPEs$f sOs ꮳ>eOTF'22UŤDJI-P[i\&g?V"P:zX@>>̡E?Lg)[ i`zn?T]cuhv⢹_Pn&Q{\Fv)i_#:D+5xNvJ+MO6lV8=\5}I&&nter?A?LkdP J]Vy94>bHKmƔލ#gUy5 /njЌEs+VRYV>i9[on {pU H剭8,Uqޭ,wMeS">D]!/$p?*kcȷW/lrrQЧ]#NAZ8fe5"s?j -;_דI }V_XX]Kվռ H\+MY %k<έ,224mӹ_]Mib[? i WڛŞmCX{+˘NIRɌ1RHm `Ww:,!(π tϽaj? _3DXaC߉Q<ӵI㿸 !A, `z _ǵ1 TgU=T;|hhmsx<j~"}Fׄ%w)P4jH|yF <ֵ!*) LSp9?|Io/ً}adwYi#XA;Pc5>W-V:^:wy AWw_A[I馘w;>d?>o %kxCLR>tKDE Eo0Bq~0_5/Mmڼ 6Ơ/H9K{ൔ0* zgޭZ5 _3;,%nR}L8,p ܊I# ~^!k^+on4$+J9k"C'nv)jom. X_7o4/ m4o0 6p@Wa,B=~_m7[uIwNgU{G)QM&{|ʠx;T7qkrw̕O)Voco=_B:މ ȗtb_s>,[]#NkOYIHfW*J4`݊` wHCq][]@ FZ|ramZ-a֮z]mlkKOMB[RK M׉de 눞&6.$nb|>OX.B߲_O_G 9̨B0TIbC9'!>m/0{˘XSqT[;Iϭ?e)>9!4^f#"=,HyN9FOpv/^.Y/Lv– Tq_>溗 AvT_^_xBOƻcc/#bd=?-O7Vf; cGT[xJ|+c~d4X6A qc玘<>toBHVlOgV|ꦻc:u5G3⟎:"dW=GZFSn[7h#='Ѓd|eu/Oz=+}v'q=*τmizlU) ⫕E;9Xu7>om;eYy)O㟎/GxGO@dP"2~dqfAiV1aby&?wH$xJ)5[!ռKok j `<]>-^A :H4T0 @#}iͣ[K#=;]ծZn*L~y1 qD6EoEt _lm2L@zy[CcA8!wzүiL`QBc|e84Z\]qi8cy jo5!eyxczyp2Hr298 + "K8G%af $ *vy΍j>x;H-^FwC:]JX 'h_aі+#lRGOk:YOAmAj^|q<~ӴDtX+J$WjȪA`|% x~ZVxn;K8tm  _V4@I;>kXpȽ;ͤރxCω|#gĞ(On_InۤXǐ#(Nq-w~7xDKC鍦cif;Kt-*Ԝ8Lo6 >_f#ȋurApʐiNj߅;:t wON6'uRi+}<:QJ!__}攟t% / VNp+wNl懓οt5o٣S[K(3N7XOogU-6['~/5KGUӆ|SȩH}{s_4W?/c"{?_G?gntis\kb諞( >Utnz\ I:&Z3>Z]ǁC^gNʱ9W+QB}ImcsWR3h uEѭĒ/?>Ptqח{'-N=k񦿤~z\vV}fp1|/$9]xxDӕ=Ixs²2J EdnI /a^ohtRrӚip{lIIc"|>i:-_,l1Uj6Z-׫:u*ߠnxjŬ|.3)TLBȪ۱Ԛ%ڝ'ě,Q\uu`7d+|w"kGkçP(gWv7628ɯwa ]tRwK}SBh΢n*Ht_Z$l,fdW5 g~mken"TO$MN5?ࣿgx&.5X0g޿*ol\!* j]jhC }2?¿xXjKƢ溯n4^s+GX䞘-^ᯛ0b`ڌ_`\ v84J:VMrO(%:Te69%$lHxLP.,Euu[08P?z/¯gȶ'k-0x%ӧ9y]p;.N=qW쵙 b W[辕 9<'kӆDR~cٮM"hb7i9m8~{s с ~Ï#d|7p_',淟~s\$&Bۏiw}+45'QdWIo2GBI5^G2z]!]J=@>z ZNVHOk6),R<#I.㱐c5tVmm+g^ص L`v<^4!*uw-EH¹C;6}ŔkG83FS`CfʹMd~bO~x t@juRH=VW$&KhӍPGjww&E=*[Wέڇ$>"urZBlz|p9_ұ(YPIϽ)A\cGej0m^y [˹oB?Ҳ/"ñs{sJ^iϰDt`S#=Y- 4\{ԶWl<̥x?ͷIn޼g^<4 yW|)y0>bSl[sI+*Wx%ɞ;G_PkB\q\<.װ9W#7Zw_6'd/x;G^ S[t=N*Qk~&|1MP$ s_6|gf4gQ|ONOOJΟ6' >=RY8wS|Q ٓ]x2@ޛ'=3UoXxZGÏyzb1w_~ ە' T`ta^t+Wi|<Qͳ6J+Oq&Z/ i+=#rgǥ{/ࡿi{SiRȁ7dW 5vOCHW_ |[ .@^%'/J񍈺}\>eI&~*+[\Tʃ.[4o] U~|Iq7A^jE?ϭ~`h_Cע;"I>zR)xܻFTkYȠ:g|nKvvUi=XxV`dmcWz>{E^ƌԺF}Ʀz&&I71(5ׂ5}}kԧ%%3 q$ AߊձsbվҊSJdO݂EV]ͺ[K\cL8[8^ܣ57M:X, UfSo'gYZ?h/`G}o|;G@2!p͓ *<0^v J+lMfbP IGIaRNOHgLEi\-Ͷõ7&a'$sGw 9.?l0'92urd="0D!KfTeχV;.]qtMiO84ȱjb:zs͞ORIF!;"O$W^q$Dw5ZTZwW셸)sK5ِ_;s*@Yg+EH0 Vm=vQazx<Q\[L1p$87oǥ\vF\U\Aޭʌs@"ic֗EUld?~{F ϼ{lfhjz$r 9i-Z:^ѩ1@N9 zVUWPҗMKθEiҮjހ]۳ڰR)$zEeW5lgZo-G>~#-WlOJڂH$ۋMi5 kLL;Ɗ;H>lz}ṑ#X 8'oJֱGmm{q]/#ll$:J gGZ^╣0߇z|Ec_጖~#EeZ~^qױ©4WnKҲ'H;xHW6>J5VyWKutV 8֮[Nhsj?ҽ[᷋B-.Lk /Wx+dT4в Eb0K_S*SF>[<*?ƾ`DfY0 W㖟'm䷈7k\^gO5-Gr2 ʹoyFzț[4)F ;q瞧ֵJ KѭSʺv*o :sy F}<> 洴I"qTq/e=ıq`jɻ8ktMI2d2`qtgK{cnٕU!s-d6FG=!]u= ۤ.Rq5~Ђ]Fa 6ݪz%O H+j`Yec4MWɇ,;?l&5jÿAd eͿ.*S^k6c X~?ҹ MlX~XvS[Y\Bt_z<*oB9 957X~a(,9 "Fd `JHY wIվoI{2du8OG_njյyRH*du:*RđZ]/v6B5Rpq]$ڤڵ\I*F\.3uv?Uw?ʾq8M2H[+.~x)+q:74OZë{e + G5\Ȉ2z;vcO.!$}1_МIa^n{wz{BgtAL$- a4ڬ7(<1<tI4o jyzW/pPso?B֫il~`I#Z6m3[u`/|zzm^ xF+&xngV?;ĪU3K/(KHJ%ۺ@Wy`w>n&OzQ\4l3~D],!!鎕%kHߚ`mGXرd H1p9#֪[q Hl"="<#'KQ]]3ksHo3\ז OWvgJxFUGQޘ,; 󩎟2 "&+$MO4-{ }h`-օ u0NG5<:dZ]1.U`5̬ێqW%~`f %-/c402ɒ:; r8)@<Ê;\b?]Q9t*#w*27S-/!i"w-q6.sRxKO6:4kp9$WQG=1Y4eC!Q֧!XP}qvGrOJ hȓ$) 9T$ciijM(LWLg44iu蹺8kbmYk57;谮ekZ$/lL~U^[+}4s%F ֒խ/6K*6ђsQ&c7_[Xc ,sznWtw }+kh[W^OXgkIW-jNQ102rZχls8eHc6HbT#ZOxKWG־g, X1Iq \ujKw>fWuJ`þ#$ˣsJ2qڼǞOGX~cӮHCP󗌼76~)!bx my`y_/`Biuo ߴ#5k,D9^U ^7 -3F$LA\ur>gMrT)8pKcƽux_ΊN3'kFQ.*o>~5ѱ,:5z"e#w_"%pۂzc WY^&rgw ~Zx'մ N`N8g"׬*wls:9yQ k$i.[G4M!۟^kOx8u ^ ^xK-K+9Xc1^M-Շ4|H@۹d_s?3iD$FcRvk=>~s&i3q^L^i ,0, vƶ5IsJ}"IXc,j5iN[ < y7 AXkq\Ϳ1Z!]F 48X?pK1ڹC.=܀8bARI9ʒB1/YI5iU:Ol=*EZ0b9S԰>-5 Qqw-n1 `gڹ{ZkTIY3jMNУK,zwRM\̵[sA!ԭR$IQIva丝;Skmrc:K"yˣDfwh[\ 퓊Jm ~;LO+2 6 z%[WlߊGmLC`nד#B /m3WT'V;{]W/nZӴ lh0ȮDoC\‘b*w%{xrf2Mz'y#",1s!a'6ڃi(!@*O|u|z1/xH4 {Ѝ[6CHɬ *q#`Wckl^ZF/kuV5l%K WU!t 8p[T4-vNX[s-Q$\jVpv^nkvIU?kvm`i6,r8qZ쒖>9/~!\ZVj) Ϧ+s\94SKֵ$AQ{ǀo'/9&Hgs*ƾlk{Y&#a@t^OKeӯpUʠ=`9+ 1WfUR{9Qhg_s( yǶ?;+Kj̤}@jX,K; #㯍^&ͥc ܕgIxש,9`I9r~xe>ʳVt".4e0wc?ȪbI r@1y\^jDǺYAsUKT6XD2@y^Xph /Wg\|dq]wŧ%8`s:N6hi}8- 覸qx%{1=þ+"pPß<7H"&C)lPOCWhܣi$&B9z-P 3|6iM{s;^*`}+#1ȳ0 :7}Z0дmxV21+>0gezԬ =8MIc׊[ӯm#U=63]%7VQ+<:RJMv7) D4?ճu2W1UkHu,qgT+7gO`M ͏9\WuYcT㝔 HiN~kS@0CzZXjk4 ϝWRAU_L }EL*IoQE%P[b)cinr2>FP}PC;Ӭ[[c!ZgBT)!xjuȸoݨ8چ\CN3\\W\k*g儶*ցEFʹ${W:[߲B=PGlsZ op$JVS}PE1 NsTo45ntgyvݥGU( pw_[=?lwcRIwe⸸\j `Ep̱$^`ՆEa%沵'LHЉF5ڌHad_XH-a1|'>9'ӴnW9gakڛLf\ K =셵yxHv(Ɏ:VRz;מK;.eӜ 4.ȳc:T#{w`ۚmΞx㡭#Լ':D|es/"W2[bX4sJm&I^0p;, LzWI$ϱ@}99Y"A#0o2IPOJLiz!9#+YlUHⷃCe]Yx=PߵOP5"!ОB~;'O=`M^2qDY^"Cc7 )Y ㋕lF7_iWl`WImz gtbԩ_C)@Jfk}JFg s+w>oEKچxj "yYfAۂzOPO-5Rtڜ0e>aJ͛^M݇-=Ğ#O΢u/n\]Oû[9e+1a97k_NY~Iw[J-y3%fBdZV- L\7*} n3] CRksQciM:Om2:r*熼[*\Nkg4Nn1uW|[an}nvCh:{?qUw/Ӟǃxw|\'wԊUƽAWό~_G/ޑ!ukO㵑[-no+m'ʼa'vG3OyGG ,~J |M|fŭ$ dy.O%7PU?:_n[O& FU.s]4uoS[cqE+⿂PT}ˍo3_Q+W!Vi;(mh\ vSS5&دkgUJnI$:Ie=J}iڅ`(@$WTK?qf5 Tr(5i! A횱aL㩥 dH&`yQU Dxa)Fa=: Y6굅vw2! T<դ~MY]Ibxclz'uMxwEŻ>)_Hdhq$P9_&&}9f`cy:X֬ys%OMl'5|bX b__J/:zaʆl腴9  +ӮaHKf>)8Q2}Y]Өo%$JhAvkr"uq"}Le+:Iih--668|[:h*oj\G?_Лm4{ɨ܁=#=9rZQh4p_Q]< 2=k!bmjvd}H?UkXcl>3|O"^-յCҩd,\$@w.nd}Z鵛H!8?L3ܩCjW.'c6\]@NҞ;/)7g϶cYEVZP6 Zzzo럥s3f% s|CO1J<9x#?XoMJa#?_gQ3.m˺/$T*9U8^lsv?".mTbc=+Wv7H$m_r\]%Zy)2xXB '8W .*q)S,KȗwbؐÎq__%,HMɩXHG`8'iM{>, nn|?_:Ė{mVB^0a #&'ÿ:'4kHRH6?*_?|MǂR Hŭm|g־<qx4kA7cbl ¯F-b\K[w:-N{M1@c 9;I=n :+_ȩjkgIE@7dgƾ0DJS鶀h >gU1Ӵұ(" h.퉏T9;R[x~Ҽ,]$3J?1 kFWFk|.92xDdmaC7c^ a=#B)&q{Im Ǹ'J747<1H`qԵS-?G;,t`>icM ߜ_Sƃ{+NpO_Lx^R0LgZ:Pۭz_54J+{7C_xuO WOFek{&itNFnW*wE׎?Yen3zSᛦk̑q犒 XyvCj$9gǦ\xЅ#=:T[6}k&H1xh?.:1M>ɯiYLy9U.լܞLeUP4(E iqo65Um`b.0}jimM; spkOZK@?sՎ|,G8iĖ:~8vþ1g-&*q~_Z62\DmGL'o^iLaL|F~i0mʋ\Z0HTb7iǪV㺟WXC֬mV/i@Ky3}O֯bGUn`LJ^ƺ;{RhKCRm 9[1Jre"5ao$#++Ğ4˙0v X) ՈMD\=ҩZ{{nӲD V8=}*9xwQk׷CbPvn=kO^?|ci ؄ Ȯ_EKoq1ݺN^+> :d$cIJMF{XtC|C&4<^O^[L\__\LG/x^7;8OD֯g:EE N?sך^--7t}+<'M4.0Hg('>"q9{c,N hwvRH\Y:엍{VLNH<} nԲk6H:kJfSw9\UՈ"6C}jap46'[RWI6QjO 2t`eVNt^[\޹_:u1ZM-hڙ+yfvG($kLm E.4&4,`4a›v Wm۶zb6M%=Mn„#Ҫ\[s3Uw$c^y!pܨZ?jVܻt9?^9ԅQRkE"NA]5-y-ɴmId Ykiw%y. u?-|Gm =/ߎa;M_L)$d ǧֿ\,9[NP_G.7W ayFQV =Vm\~ϧI$)`du犒C^#M&^Mt>)ӚbjȂD#ӟ:5k6ܘ…$Qf"֤9[B}Q6gM8桼*<:5Z x9@kx.Mfi/T89Ww̱ DD;$ʴ `jҖU85)1#`%6I&+a#-~ti~7әR& ;wҽxj9?vҬx,Aۃx>w;߅W ri^ 9+ӯzk2JMDps翵ypSG$Ͽ>G%8<9t+h%p*0}b7 W~q^ㆳrVΪr21YGRwD7?g.DF27B5$Wa`+wCa}/%Hb+_n|8ˠ|]wKDžc85R*tn=T61A6mh9U#?(Ӯ%Zz펟3:?Q<,4}̎)K{_?~[Lԭ/3{BwkixoՎgRx6ɿ6-~".$\r\ ϥb=V ~HPng~@]d _|m >&d`Zksij$ GҠ{r-V-$E6O#JTt\ :T *Y~uA"MFyrEP!{% D*YsWKE!`sH$RA [+uc#C`֬w')`\*twJ@z$tǜp}MQ@P+v=Tr#z@[`S$d’:Ua%aln8ޱP}Áӵ&̀q\^c_}iE?3X9`QYTSetTs?xO%;p8o Di }־Z~$bE>_8LzkN<7Z+S1\j]ySL__|Lcc+8nڿ-Ts3:֛"P6 Eu9",>^yM^ #XTʝ=Xe ] ˄Ē"wVv^H d+Z|-7k*+m*G v)[^ճ?21os6lk6Q:13_;W[\t6S W]+bosa ]oN? 7`Fm# x<7ҭb.Awg~ ݱ;٧+ȫgN! julVl >>xӼǍ<>/~k XOsӭG:kԼ h@Uf;sƽ21\Hl[{-?tֵMyWq?v@vx:eZi"'$8b`;z~OU0KQ'on1ץq \՗ [g:}bKGG*( Q؎?%ռm !Nuv+t$"K)+8tMcfWW:==lpUʔی+(=M?|[>5lnv\ԟjCBZY>}mD~Ǿ1| 20빷v+xղ U6MRŽ7Yp8QuFXPmms:ӭzg_29";wP9x_\`d60*;ʌcZV+{& 5hMVI|ifՍ/Z4aܢ\>&tJrI8klw%}k~=t /$G"z|`04l{]{uOFY6NiiZ'4&9 +ȭt*5-Q'i,Hg]B$٤D`V wkM.2jC}V^ (;&ibk4gRRug-xO^ǭDf F= gc5:q~iwl(h؁Gvd"JKYxn{O1$i9<ʨ.mIGpq8ƒҺ]2}+WQ.# YE9O-xkteaGҿDC4Gv;MԥvBt `Mbo "Cә`ԏjpmw,f!R{tEɡk% X#=*KQEN1U5)oe1IqY4sIUi"$U|Ս>Xx&,r#AYv4(qڴ}:xiWEyUENy-$VhCHZ|HF_\+rǜz#_ ޴k?4RS y8|'P[Y5k)/-+c[􋁧YM0KuojOxKK6npzT;ki s?|@՟<,beעD妵M\юԺ΁g0G 㹪v}ǘ@>Z٥HJNk[F{rxnag"sz`X'+ Դ ~j+}%=Z霚}sq*]ۑZѤ}EqWǥ٬ 皟NH<`u栖{?۬$@y4Vqi5Ə]98n߆W6'ѱ[{S.=>ky]yfl\x/xv> $ZtE|Op&qH10V׃|MvG#́ױx?~$,1񦡤\Qgpz`]:Dq;60x|vIx;4~qtyc/7l!Eb;ł5]V' u9|Yz&D/IJ,k_Y6sC57uGբL"XD]f[]mznFsbj8@?ZP)z^lg kq\A\J:y72SQiZWq,qE 5' Yw:rڱ[Lp}1V|.e v:VC *ҵ 4d2J!cǁu%::k0bId6nH({W1[-=,v}MƬǦ^?+Si5R(wg~9eDH_yf m57ᓩʹ޼ ^$N5N'xCq;O=+ ~ 9 N+o5)ĖNW>ڼK➓is[[>df#T$4Ѷ㟁7t\Gs_MAMVL<O־r_zUS9sUhɛmnQO ^3|W_wH(;N?|.!;r}5T3f4><)@ߥz^e0ʩ81_E~o~9Iչd`ːLg}+E1L$I`zWZ}$6=HSp>u{K~#'joYYem;8]O4}&?X}ܟȾ ⥋7I$Vz蚰Ch:Z7w @h J4g#}<~,tN#!6ss\vG;(^OmRkU-o}B9YG#_=~?N \fӤcʳ ی!Ju7Ԭ~P]ߴʼn!Z gg⿄: lB|afx'SJRfQFMg|.Z^u;^)C<y<ѯs _H}oWlvrxrzھӯ-.lo2k=ƺn[MF͸6={oPCb9IRs{ۅƺ3)qG/▍>v6 ~B~ϳ7Z-"$H?~ڟlndMRJa[yj>]F_'&-oKܞK<:MOv} CgL&k1Ak'GMlSgK?a%#Y,{z "?&(k֭%$H.t[[ sr &4s?SV66OgBD~Lj0jՅP'ܟW` V2M:@6 )4ֆ4oϵ2K]lڦK(|'Ԛ|PG& ɠiagu6G*>Q@ kTn*'LTбxn?^Rs+~u27iŽMat(_S$Hr*l9$nu?Q}Tg5ohLRH";fcR$VIo,vR*]߅-qי۲n^8c_RI?cR'zѹGcnW) NSn pKH):n^J$^dž|OXM"S;W _J鴛CqoӮ.Vxf3E1׮ڜlV= )`0q[E۳|A5*涏r?Ow>⢃M.Gٺ+,bnw]ⷣlkjWóǡ湳]}on5+eov^gD10sxɋ)3S/{ӯԊ`U+-Ohn8V[D]^2ET1V1+GR "1]Zkr"iQ5y?&hiҨm.H5S'=.g-_~maYF6=WD\0kYjqpwc֖2_ G,v۵X(珧^zӞ5屏)_k:nbXe#02}kw!&2k!Te%7,4|Kp9^UL|䝶'xm)19!\W=~,5)v\F0e=jGDSmiNfҸV1ҝ(t崞ȵAz ;W&0p?/\W[}v"Yj\֯i _z9MդdT/xKt32ԍt(1TnTv|1«"5mi6;XuW:#h)hΈKژ3mXhrOfg󀧒x=+[K(V s8ue=jyUؒ@#jwxZpQ]eow:W@>FҾUl4@%B}<2#."IOGv=#!IZ`ej^+[qFh 湏  ;t[ڍ˵>.XB~ç /J#egAZ|BudcBVַA#,W>VTIX*pOE)-Y3F*zaEX1\'P^) Ң. w;Un.K`'q}m&lhrD|6ЌEH;zǛ'Ɛ7F14m·)Z \s6'\ߍ Ds$YҳH['9ISZݎlQ|,~97LJNyDGď8x-M}z$~H4W✳_[D>H2'fY-K:jWW=_^tkkP5Ȗ$d {5[ A?Zž&ҜAn"9%y8Rj7X*WW XHEҲJ\ݼ3/+h1)㸐vU8U[ʤs{97kkS? mu#"ׁ]WcCcyl ~op>1j-^c=}'e ʆ݂+8f$Wھ_%eO/;$>!Y~ޣYmYaGEe$国}j$e9p=sU~T|4:.ĈG~'k} Q#t] TvkS^n_zOBNt[&9 I“/=EciHd{׏xG("Uxɲ"<{q]Y6 q89+uG^gDr5N>lǿ-WWnnv9NԠmϲ5$WxocMaFeʩ?u7fqq=zV*meNKtXO7MuҮe۴NjDG5fX)|ۺs]lPעh|ݳ{QXNҺ?%#(k @'ҽXNFqҸMݷzWwsbӾ[5k]q9ڲYSXK1)> %I'&|2Ru2H"C'YfQn~V:h\Y<2vrמE:K}&ysWxO/~k>G$GJenV>;hq.<3W͟" }bFOB7);JЏ|OZmR}a'}>Փ\3gʺei׭Ìm&x5#xsQv(CF9x+ŕI*z!~$KO麨b q;[C?O)?hz|>uҭF %9!{fV,t]Cl҇9* *&b;u\宥#j-)Yݍj{k =h JՋƦ VNMxQ5xwY \#j/ԊmMdϭ2-eX3P00(GZj\vg*~۪1>=(w`T0Xy}9Έ61F}i$uu(L~59ۋww\Km@jF=6#q5^%.8j:(hs5}<I?5x"r[w׽{/[:do#M|c/ha.Wc6#U6R#5jڃ I)SNVmi; T4b0p3^0H5Ȁ `ҷ4/;I9Y{7A2 @H+OCXܪA$ ~e"P {כa6LmS=mv'~k𾤚 ^cz.a ח:I Kuⱪ͸йv09,rlZKyOC'W&&8 -é:Ջ4Dd_GJH5pfrUW W:ZK6;"߭sjy [\[D"@{YZI;FN}kҶbYҽ [FĖD) LG𮇪?5M7M&.` pyȯgz#s"O0i7W#UIJu(ZڟRq>͸}j>DK)fe sX 1l㯽v0 ^.:U)S Sѣ=^&-_$@)my6u)I>_IEL~23(:W\5\KVC,`[8- +/·Ob ~chZ-!Jlg+ N"^I%I,{eдz+'mhQb8}i=C\C_\o Ev!Kv@?tdtZx;-5y[x"Oi8 r/LnU8(ʶ6u⛣85<1P+ g#'/eEgx~KJ ߆#Gª${o|GWRL_x8_*| )h}]෶$@c5|sZ[-RGMsqVߎyKɤ(#AHM;żyM8ߓWgyͨ<5x^Li>UK7^OUܔf<AWUwjGoi֗q]ArrR=_c08{D_#ٝ:zHhZLDz$͹?  DOQ]O5ވz^!Ҏn[E+֯2\FTSm4xZՊrvB&rO @iK\:}̒ǒZCO%8*R[H>[LG 7-Dᶆ*ANRuKM=[hT=(*ιgqIm +xݏ F4u+м5 nMıoR zԱɫH䩇QM) UK)CuȚ2 V'4,dzWB%(wX5`[k>)DfIBҽSx3Gq^:Q`q*G n**C*;oou `O'{לC#9 $ھ`lY`=Zķ1n#k6N?9qq\ONvWK{Mn#> [I׎>:Ic8>*-K5ުo/$t]y;]'ZlpkwFrwWZ˖Ӟ=׈.Yg1צj#UzU9l;]wmIZK .8v+^kǶ\>J]̉"[tWOV't6w*r9xCqo>EϽwNi7vֺodčP'9ہ#ݸ zmr ~U|C]7S4yf8k%vXv(;Ak7ψ7M:),yg]E]KR^3Ey\dKuŽx%SM_E[@OҸ%~Djc2eѯ#[Ȍ2ήy0ڪB( ҚX/"0xkF1;S+pZ:FϵXh%+$vȚc#cY>'gOF$ɢ| \xu5ËQ&֤I±jbZ{wlXq^%}3^% W0NY_) V$HĞ&RCmT 'SyYYGs*&.=:_eFWEyM/Sٕ] gQt–pQl%睿ַiU{kCr3TK82hiP}Ahg\{Wmy6pC2k"k;y}8T&ƛ:ɧ`HxEspgdqްmn#[6@19*_y1 v.ft&dLz FI,sJMTY }s]LJ-o)q^Dey;3Hɲc52X/{A\%Eʣ#%yrN*(^>]]70wuZma#VτhKMӼax IڥӭZD ďp}ӏִ-b2s,ti$Clcu-֩h!>Hz9Sk:[\Xaֱk.j !щ%OqŎMjpmR;Ժ6ȑOשhn[~WShl= :̃)$\8:Jhm#ҬG ^n`_uU,QmXfzG"[wKm?˹?9R1ߟCNcjQu( t+ҩF厚A+j~ػwH棷 ;D2c_|:;u[:e~?vJzRq4a6$ǵlZ!ޕ>溈5ygkx/j|Hд$f%qk|4# 8[$yl:`}k+Ig41>q.1[Ę(>^qq^}#D/:Dۯ5d!C!ٞosY)'qPɸ2^%ӧqrDr>e\-JU=N&^<24F֏_'0ZW:G'&'_VyJP(+Ef~ʳ *}:Ϻ/~6Ki<s(Ury[޸_^~|9;A"7x=/i ۊ?G_Sc*ciCupy{O7xiTrvlA@wk_ڵC{́}Ez6$jz`zCl)$[0:֘e:]VӍ+6#Okk$gik#dA; 5%ڥ׳3XG+i,NzLwèDf*KH`tzWv? -.g{ħ/s^4JT3sR{?:Edn$!C?3^q麀c2Io{OKM*)t)b9-G!7=`S^y~.:o'ek otvJk`zז\=ۜ# b"[EN+g4KN<ծ^zןiu $]~Wvk{E2.ٯ.jIk,Մ;r=OZseF]OrvFdɔc Akiv1!EAZtYhZyn^j@qwyaqQ͉$,W PCq֟/v]I< "<2WM|ˬiPP01rƾƺ?KY5\[A(k?jRRd'N'm:e!g>'xUWiJwNˆ^H2 i69nƿjnHJaF2 jGn#J u[M;Ōd9@ vzͣOR۬gJ]qی*IrZĄ4ov^$oY/b'݂Zftt0}~Emݶ]uF~Ȯk7 Ukzw$w @7 m]3kXtKkr͍Ʒ˙uK m *]o&o-+zlHlc¹׻vhiZݦ#)3ѵ3A;c],tak}|~Pxkt]2[|oozKGSQ4{ovFZ[_i uޒI6ib4#5k|_*B o0oH&k^|\3зV`H_5o^.5C+v-\@"s&SŒFn#_O xvn81-{`qKW|}5~\T` 6ǮG}Uiv^ :4PwwιO64& V+UiH6>=D\xȭT'{W\h rOcߵCKI˫j-ej@SlAڰ|ޛ2s&,pZٟ|uW>NHI'laߓ\5{A'\q#qvF ؆oxxQd|1w[]μ^7Kv ;JƢISmP72nHa )v4_R+koŷ;K%'IMwR Z|qYR` zmE B_9<["v*ϑYϬRlHrzjnQ="NQ&1]D/O_CM3Ż5bMؐ"3;d0VCv"&Rre-)7e}4/\ꗥZ6q?ζc<2y94ۋd?&s~|ڹ؊ב,Yw\߈]\O: RSŰ`^v9ڝǺЃO85?X?׬2I֞a'^?~&g DT?*n|˗(ҡK _'ZN!e6WbkvBeO3`gQ.i/:׮q].]滨\"RODqr#@v/9֚lz}$WdՍ?[P.+ެZ{71zWFBt9Lf hN~Ctބ^Tc|pkHy4bI1Wm%b]HJnNWwb\,Z![q]!_yk-»ĊK4àbI54!%YpCBTigAG*3ҳlNzԹQ A'/C-ռC`7;3GO>fg5hu4(<խ2c>0:φk0+dIt~z~x FQ*͹[& Es}^[{7Rmai~ya`*;zЂ< 4VˀdjSqM]]ZA9Ӕ\*ܖ(72AZUXTEfdF dAnk_CS>0jn%F]φ|#>YFCW?`X-҆_t~D_zt(uqZk\C'vQ4qÞTc*1L˲X8Z(#088obkj0^lEwW+[-:o4;88a6˸85J0|̳,.&J߽+\ޒhtA.N:5^`+Znjd0lO_hpzRiЕޅOܢ2kۏB𽶯a:ƙ;q7'tO!tB+r Oaf+:1Te*S%tq2˫۶9# Ts+χ7b&ix~[CxKn#rq;צ|k8_0m4#8!;Wp&;/RKe'F|`C N:Ig =M|ڭh%ERH{O7u\FvwIq(Wd*WrԞ敪}@BF}jΙOBO*G_d>?g t)B|Ҏ,kr.Ix73¸MoJӼEz%JeysDϩ"2=QY/]n@5ĀOB݅}ݧ=:|rH,݃>-$ eڼ敩3^aħqRq߃W_b1 c+ߎu:ifq;#yXQZI'{kma^}>GZgʼn<*X0rks:w1i{IIsSG|pҾr1? h[9Uq5{8|F[|&o \YUNz|<#ԭ=ϲ~kf8"T*K_1E$EU|5 ,I2:pdG{%tMKz[#0oYYz;LN>S԰Ζ>o{;VW$n nlnp}E~p~ 5#~BI9s}J\;Yb1_|]z4̡gC.s}qνigv0C p9¼Ri{:K==|'eo }+ohگgҼg>-Tq= y^#Fd.H,~{ZP/'ۢ ?v1x ګDj&bDk_T$2(]n 7(71=e)-Tr{=} Ǿ$.%mU2DCc`ʾMX.k+QH\z UQi88鎯ƾVY时+#4TR>]aHgIm!Z>ZE,̛,D?¾.iH ԭ@7%g9 5g:>?3Cu?d)9jSXTʡ [>t[Q;mB:;F#SOlBxxםÀ?:(^,[iD}ů]*y999bj5ߕX.?u.[i*S5t F<)/JWyl r/~-4|.#5/2_xMRHk8=+a E£wR>SeekL!%H?w־D'׭- Jɒe8=:pk5; kb)Yў#kkM(ؽ{5>@@;9_D˨AAekԿf jqN[S5%8Km45m9vo^C 6$B)sy$텧=0麵rcL ]gf@-X,ΟxZVgVu2v~&xAU30?xV.="h-ǿ~ɣ‘xHmT(Z޵nn`;b8C~ ܣ "~X -Aʒkڵ?zlۯO/Q0?=X6!i}N\emFwO)F}\ƨ-r:>Jhvsaa%h;94\H?J5)hj䢮wZ[Z` Aj b$4+Ծ>_FfNd5a|W#=kxd^3?ym;i:17xb|;-'4`NxW3P}p uS09j>(KAy@ICcZچ=f[c?vg5kHI~+9`v7t *<#{r޹x={*d)Ѥ'G ^(˙$(/kEv/ W~xwÿma(Ȯ#i8Y 6)_^c3ᆗqy؂IJ5D+HهC-ݭ͛AExA^?OWŮHŎz>1Wբqߎbo:mR\p(uHC^Hվ!x].T{'U-p{jB>OŒl8. Ug鞕tNX-6f8V# {xd禎ۯr8z}i~gЫt-="s30zd֩b`Yi i KQ{7TWN b?өR+y|b$%z\n$m+L(O%y@nvҭتza?U sr8>@ ީ>-D_ #Y`$PΕl5}ǩ(݁ yrǏ/.I{8VD Spy=ի2| }i? I("Ku-rytLͽCzgi,!F3U; +<-Oz|Iq4keKj~#}4[ Y{[-lr]&;UZh|<1U?d6kO\o-9'rfR@r9Z˂ĭ\krcssַ .M2 \ukʥ—R+=3^k2^٫~`97[/f})Xo8['\rѷ}Qʀ]lk"2s]5("ud@~J"4&+)8~XFj^ɎxXgנqӆR\O\ς>O|k#C}wu >Z6w,ÖoASTjѯNG5d _+Ҕm&8>M:.(fֻWSH4/@V>2 Ì3l Rrʌy,v!H&PIvNIɮV-#Bu\O85qrlmc7;vGOLp+^ͧ9Wn`,vͪnKBVyFNJM:\c֡o z#l>0y=yңKqQvgCbՈ H<=t.O>[:]=S؎|`_̭Z&9'޾3/(USLOnGs;Ƿ&T|GZ*\?t⾔YaɓNN?OoAxͩH*}&8R5mNJteZiCvw?O"E:=A4$緵~|=aΕ$S[\Ag~^k>BFCq^)7? /N.S,Y aӯbkN:xU0amnԝ:jG6: ĖPXO_xx {&vC{z p*rՃC]Y$17#6-_wE wH=]>܁:ڬ갋(O$-xRX2%ʷ>8| ෻;hX,l2~SW|=k)/*!A*Iz|k=5u>B}3W |2T%UY>V @l{p-okIn}kHRȘMaGj`]AT <5?PƋ`s~qU,};GIy^# jQe99׻cs(ئ}+ϽV khj}3Zՙ0 ٬D|O9ٶ0xkmGG]L|t; FÕ^|sէb=L&3G~~kbYEnqמ־M&] ;*>PyOj?o_O GBpFH0oR, =F=3UW>Ljb|9D"} $ǮZ,lq s^ml\"IPG D*cazlz$OEgVෟ #Wӯ+!9 p rk:R"Oٳ1~5xZYeHS:g"Gcků)oZXt-"YF|]XxZ^ ^,g).k:#b =Ad73twHӦ_% e=}Mm^u4qT(a^G^xwvxU2:7T 6ydtI.U4u]H5ï\x‘i̅YA=8=3ޕ}h1_:gG[GF|>//ow>M&I]C>WѬ54Sywen?;RҬ"sc Mg)OYzλ萁em+DXgӽ;៎K_atEwc zUseP[M[[;mOe=[.*ȇ^u뛛xQcZ~y\eIFAޯiX^I{WS|AYUӀ¨r-xKb(ԕkPsϵs:wnB:)#jm_֞gw3Nr̯?m~.{d]BX#՘ߊ|OP&֫9yB\|$w]!⏌&IPcbH "ثM%EdDkdg'9VOh]sfI~hMoiԂWߵ}  {̣OXP"t0KtӢG}]0A:`6˚Jx71.5 @+(c a4AL%]F𣓐P̱fRfj+H2ҥi64ejf9ǭK%=i8ےI R}k[e3R}M/1T!~RB6/aWv(^U忓~P*HVNbү^g#X!#ӓAkc>K,mXwks3H [ 4?ƛӸEayD_9tvUu_$eg`%Ӟ]7f k^"ah3{(敵Uh-W>!)GBvG=RW'mH!/[lL@+{TˋJԬ]%`.l98يGxeff4m%ɮNT)IM %%ʬF<z8CFxgTddgq o^&ܖ>iNd<ҵd R>e[klϥoh(=ĻW!vB9Cd λ~u7rc?f'ٖ'5ibߥ|*B=GC#=Ӝ޺NgXD3r9;lB͜r=CGΏ?'ze%RJFv+%@[ۚ"P/(e1jhڥq1 **xF9,U]4hxf[D> ӳٰeNniXbc& m ֆ֑,0Jݼ:Wab!q5fǘJј]xje˹WZ2# N߈QDgBwtnOҮiȒ/z֕iRN ;]ǃ*p\$>uTI}w WJ4WGK8}U@qULS)vplfW%xt{0%kM;~w? "i-ֲ9 qǜq>[SY\A*@A 3Gqӎc`]?I^$3d򵃻,wSϳi<}~7pKW*~{#5ڨG|-Kq ɻE#+|)!\xzWgRRU޽Q͉zG@ok7gs׺6 2C+mdd\kW6H#΀$cZ_Mykbw 6ݘG_~z{삻`W4ۭRJӠxLar=qu:N~c^ If+4R1O)a~;KyZS<6=4/ROo!b(m^>P/S6&`br! ȯ&R9' y(gץ~[E#b5u=/igBH?:],K0ϯȸ!m9OrZ.mj1wQB2#M~Ðc~$xU? =Vb$o-sG׊^w98C~~_ȚE}YPD|x82X-rzXz>=>ӛFY3 B71\KYx'F<+w2Kܓ޽ EЊ&98P'|KKT{yp2fxs[DPۂ`>9o0\;Alhm`m.&v Nv~a}n|AbHb8m:Hna|ڋ$ӯ$-_Kn['N%=G5>#98~1|%ѷOdfsSھ>nZR(u-Ԛ 8>} rlџ~;Y$H $qy[xWԿ~I+b0&_.6lWaS斎ƞ2FN A5? [u+vxff4Cצ|(Tvz~نQs>efe$@I/|×<]v7)>*KRe.W+ sH\|f5oFՔW=ޱ}I .X Q523u[ bYYwp yܩ񇋠}J-mfU-"l8\ut *+B?67`pk‰b[v=  t֍.Wڕ̤ߟʰh/߱7~$÷F7 UߵW?g j5lRl'd!KaK`y" ਟR? 6[?[{ QBP [?tOga4$\ڠYgsZ'VcR\bdnO;s۷jP%4–?SxMj x&,U#ƟUIsfߎ Q*= _yxopxSFѕ`Fʿ1?ޛfS+X2`0jkeŤI!=ռ+äL'{Y]07 T`ahHI sS`;WY-U@9Y[űN\2 mϽ?)x벯MXt8jZo CI}zS5=B;hJS{e!ʀ}3ZFh-9S4`Xd`g"as0+=5. #jL/:7\ BhѲ>gI$"?H  OMMsD'V#6 F&l\/NSi:a1g}=j[ly ;ip]_L_ƦkX6na+77pիQ4!-ҿ=ebH8!ERnD{@K2r>eVm^5V vcx_,m_-־RsK--e;^'.?'Xܲ\; ǻ)=KKMnElps2[-@ y3\ޝ,z3IbOyQfœW/ryg-JMJ98I+9RY#o1wkM4,pm L`Gq\b@UyJQ ,P;橥[XrkCK;ۑ}+ͭy}6}mmh[{d}f?i=zgmDY*WVOWcDsñjqq]f8P\X]@10kФD$NUOzUf*(; 6ٞeTCoIYyN^ǫڬs8 ~czVΉò&?yc(نA hynYZlw6kHm&R 籮 ּSI2}9~ 6O?Υ^j'Z_Q8cj谘B=MW;:.\^T*qFʹ2"ċ7dw%ʴVKv6{j3mZywLABN0k0OV_֧S<"랹;GXmWֺ=&[<( 1R[j v[vxZnT&q^;򜃎3K|9,T#wj@zֲ5[޵7 qP יf.hizʧTirw|mr׸Xu8iMyƳʓOr+G;m8?Ju;ۈKy|EuZpT9W5xBaA.[Wa7)vEl]PGf֥tDXql䓞~9k4]. YzWa߁5npcI'5ɇtԩȮ|)‹kKE^ W烞ׄ"?d~%Oqh!좖F^) F?it,]:wd э-qkCg]?nkxw +fnUcdm[ {wD`99|~$nnXѾ=8* r²ȗYA$QI7BgM~ j 'D, (#:-⟇y1}RJu;YnL6Pu{{HU&GEJ1zv<&?_jZYH6xwϽ|f)o]FĨ. 8_m,t]]7K&I;ws_ҿ*lŨ|B:qVUU_nˡ5=*Uyf_) |kw!Ӂ?2H2O^@=7,Zi%o4N L6{_$Nxk?aoWC=/7.O5pu=8 C>OP)izqh;^Լ;yՄꮳ/C:=B89W9֍2yw2HUt95|}3|qUƓ STSצkÞ,0VĖC0AP^]9]\JxL ІpѬ{zWx'ΗW-S k꟎4_WYl( <ݴS־_>xbȑ&c'⿚s|7ïeMUªS˨E#\ƻ%|',UwLzcm*_]ׁus"NgV?g}bZU^9=k9ᤜvsu_cݾA:vYY /4y0vQ rWgxvZ_Kt *7?p~ _74dKmhR"hEyv9_yvuvwrUF޽=MJnFF70Q_=G^uϘϷ󯠵IDLoXͣ zWsJx,6AyӆFjx̵15/[}_6D0v'#A59?BFvx*}6[}ep n=5vG\܃EY\hChsڣ8g|g~mwȠE+p5#±ͭG$N`owƟ.u >e)Z<WedcVW>GӳkAu+WC\A\=GZ!Jdr{z~>q"`8>n_|nt6s/4D|4OQB? u?7m3\ihs6LO_<{'s<:㎥]vp lDZn3鿋~9j3M;빖Cb(20q+[VqT;MKUVN20r1b_ţ˭3ɢlɓl1sg}m?M팒nsioٳ_>i%V[\(zlU3[V\/J 0!`O }+GTvw-$* i{ Wԣ|E"OiK ȒONr|=*("USC6ߜ*PQqΌNZɺ\զG7.v~Q2߄5fM!I=9RM?Mf+Ig ]zWU}R]z5%AscA=b[wNkWMTc{ןFNQZiMvlqϽqi4HVBg \Q$+)y+޺*sCKi/<[qtݪ~WiE'Jt@G"I1?)W&;xvvZMmOV5݌+ IW|dJm劎95pf#ӮL?Wxr <7~\sMzj).ad$`~> e{|[[}mc{{k yjQӱkLk[NȬKgµK!^+yL͞GV)Qzc2MX3V^(4sЂ;l(ؑK5+͂#TݜuY_ǽK܈H?}WT[ K)**aiOY7 VeuoQ@kfZ҆P2Xq^EOťrgVYe\m#^V)Sq[UM%ƶējO35{՗(O6ʪskO) F-W_$cxѿ#kV2-+ %To^vm[uXbDq:asڬ#}LN׵HeHWfQT l8)7;#ɢQl;;_҈lM#t{diٶMY@Ngd_~kΜWv;mH8^rGaDaF5'EɁNr29럥i{iTn.ocQ&Ae_? jH[=__P?CV**( n _lu=Jc~ztϑt;6y[ƺwo5 ,!%< |lĚ5Hj, B:6yE~0(WQՇ}Wu4mWd&f ^$ ?j>Y7-U]Q'tw?O(n;ص+@JƨAisG=?=3Ҿ})n^F;gך* UgN?LMF!"nZ}M F.HُҷOǩۨ{TY"}%SR {DŽױv~|||n>xf+*s7Bہ;"g-$(}+>e-$ƣ rh/o!RL$߂϶?+ROU$"? kvO>b8⸟ F"vJh5u0)r+ŕ5e5npvu~]*f?LvzO!&mԊkY,W`=zՔmXGSJX|n7-- "}g4U3wmkk2|{>"͢EVCWyៈ_6z`YӜU,G9o#Qh5)Itl ks?~G W2{EZs3A->W9r `*ԍ&:}*ra*Gz1%8`}r\t]%9j.C\Mi XO'u(Τ#_by}[3~vؿ5α- >OF0 d;Hǽ|âvCG^E* ,V!JT~v~zm׃>0iE2`>n=}M~,'8TqǨWɨ޽Ι=wh|k?z˻._DR)gos׮s_qfh9R̡%fW.T¹QCȺDS@+g?S1N'o !f-=*;ţt}S֝7E9*D?w Ͳ~U$}/|1Tֿ> ~![*ecKh¢|D#X<,zC`WlOҷ̈́yۻn:6mcQ=.&m'ͨVXgلjx>.Oz}f~~˨=H3">ԗ#׽CuoSPvz8L'đTk}2 zNG;aێY~8&/QZ@FkuUc ]H>5xWx, Cg:v8V׀K.>͊3>qxVv o pq3~k蟉:Xx%p''\Yу9]L\x H 688wusw3/Ɍ:Oj800-7)T9;׹IH2p;_x]0rڥmo%=hk{o&6WD ?z忈dXbuu3! / _x]PWݶf^")?]U{!F:+Gs7 7KdH!T9班|&BjYY Qjf)-vb$3S$ %Zd/$~pLM6 9ۃaD/"Z eLc5PG-0!ϧn5u#ӌ~(i͸$kqNm/L+KXْϥ$R-:ft|Xb8C^֬u$KO/0Eq_ҟs2OZΦhMF!? {"ܜl7kskƹ *x8N3q7EUlsS@3X6O-=*tte J6'p:tS'ޡ-:5ɬ+TВ.8 dK [Do-Ө q_l]ài“z~\ zWiN:WZqROhxDkXŅ,A^xiJ.ֻ _ 6ZJtn> O*޺K[Čr2[j¢שղSX.uMo87yYwZ)Q]/88ңVWhl0FOj>g`3zVa:Ƨxlۖ)F ORd:2k\qolh3ȁߘ⦂Hf&>i WCakΩ&%tjs@Ǻ#)cϭuXW+r::xBMMNH&A+ f,. FRjfk)YQ\{jNJW (-<}+'T6xP*r},eEƧ=]Jul-h3) Q5aA >Ԃ ͒v~~ڿ]kna29u$ Z#gS_I\?_1ҺǟZw9_Y~Y\'c'?VVl]݇UVl办}k 4^~պf~Eʱs:NXCkekl5w⿣8acZ-μ=nɌEVѢ7;į.ӷSĭ"} 晥FmU#MNФgE<'Zz.t"+TZܟ\EA$+qzVk1TzҲ~"-")"Op1ڸ][+ˬṛi'?han b F +K~ ѯ巛H@m!%y?|}k:_Q'?JD-$+ w/6֖X=} ҢjyyFcxhԿS A0TQ(w򜎟J;?qGv?Ư/D|p`|y&Oޙ%Os1"3l 1h^)hFQضP=W/V:is\4rrp?g؇[k!*?νcCu_ٳĐ!EERBK# _as1fU{9|N[5CMͭ/ԁ ^J-Y2_~3k6PMG,7K&PZ9qP*#珄6 |? ֍3rEʤ{ʹJ pfBWvڰv{q].f~%W*9ֱ}Pi F/}2YdFdm*猑 zK1=}I`xʿ~;Ҥr=U;x>sO/i=*c4\I|\nu綳UjF/N+u/]Z;d>lԶ]yIf}:~h/tdgu޹=)sTju=[^GQ|UJ2ݫѼ;ľ`ctl5|ŧު.Y}[xAANTc?Ҿ& (qb0JO( \օА}k<1VT\2DZ&F@6Wĸldfx5u)4NÊ M ,54.9x'YxȯJ)+\ԡ/xR=@3^2$& dp_cGd '޼|Gܠq".ק^&y1ZûZT8F+n8#җͣxc w"ɚ˒;s|?6Ié0*7wajQuhԍ> 8\w>7vH9]lu'p36d[>RØR4w>I`9~ww0tv,2}Ʉ?ֹ?GĿ|Kgl`2Od UZGD۬E#zWy|#M=C[> b ݌$t^MZU,ֆmK[p 7zyM~ERpIv5$H/8'S $89{vZcrs E60%;?Qk^B!ԦҟtjZ01)_ڲt8,y'{Wտ lm[wl0\ǎgk:5^fM5$G?\׭iõc)>xE.^Sgꥧ-'ƺ:^o.'{Vޫ5R(8wwi$V {3SkӾ!|Vwp$+}+icc7V>[zӺG~񗅯ir8 68P=3_t;=F}>s nƿHV'|rM/QOsQ`F2 'U;-ou֙5H^&2y|qMH8 cG8%ca+\ ~W_<,]դޜd#?*:yuagsK"zº 襱\ÁjuHlᤒwۏ_nB|Q8Wt9ިUmESD6OB'gW Q>!x'OGAVe!O-N|8ށ+?ELM| rƖ1ъnF,kS0X2$n5/ej;W൝@LǕ Œvx>=X]1+F< Q=ٮVK)d<bRDYj'Hq#?Bφ_<$Zj16ہTczJ_o44!sב]*wCqkv],|?gtM&e.8$vz?!/,6ѬCbq~eGc^Geẁ*Q: PP |I鰬'n9;B4h$ң)tsKdcIH3< *Q:WqMxY;X⅄.7gMנ)\{,JҦx|HzQvsQ]֤"<~yu_Ee=Tu\Ik14ȮiUN70.G"Xd9=hӔ\*jhjG=hRvC=hۖZk,|Jռ0FpG^FV|߀55;~uS?zY ΖIq}OO֬Z; 95ܶ5f6, ~ i]+^I34,F6GX WjOxz_#фl< FBr*]Ko)5Vb3j'ኩIv*8-.|1;BMfZ]Ivw\3X߇ϵfs7gbُXD.ͨ9}ȿs?YVFf$N%q**/wT8jf9.x>U-j.bY!8`yML"mx}sYrmfʚ㜬'}-_|S5wǵd߫$[4Y4a$nH&wZxń9tc\vq5ſ2kXKkx8r=IMմeЖ ii 5hZS"7|WMcu\0#=8ztesJbk35ū4IV~gKER^\4v]UdIҌw-mbM*\9\m=wOLQnCֳ-mNo(שWiLH9xq;MF١Ju,;41k N@0ֶ@ǽ= e{KVTa!OZB H4 }{4hVk_3%̏%b|Ib~CCU>рZЖ۩/CkDL0z?ŧؓX_7W,n#J\05~>شI g=ͭQ'C7Cy,O#"qf}jBb xA?QJ1 $XQyi?EY8ʌ~/m=ulG+8S^&v{Wk`:u`ot7u>^wmi,QY"@6rx N⤹S2iOZqi#+q`;W!ծ5QaIZib%zEsƬ|8ёfM*傎DŽGOHa:6CS&o ȹ2}~eX|슥A\?Y Z`_¼$Hzrs־]6.*ELQڭ-"U"a@4#K~½sӅT\R֡kh1G2%pCBDKִj6bwL΢89Gߧ|+bO2$`^&=Ciԥ+of3\ Hv%??\KNq-$gɻ8 tQjLCon[x8$CAA1^ mM5;-c;v,u> _j麚fIߥ{[Jm%;~~\Yng9? C7?^]Jw³۟JOV{~f+/Ğ!Ie܇jb#& \Ҷ2|r>ùNJh$bͷ 3p }sc%XD|( ?&ézO,V[h9ɉkGƖӧUFrGWd__ % eʪL=ylG$#'4𯏭0$s{=zqid-iE=WRt_koՆe9O"`u|1Ia6o`0n0=W33" I cCۗDg˴ y %+hm*^˟`ѭ z'9#>I4TNi/Se(Ve;m#HXl\d t7bjRji+v^sQ5 cE+ۺ#WV780OnMu[nc}մ?/kT۵e ø_hյYᷓNRFĹlr#k,' +mR >G:{Qs y;V55b:[3dgkr 4Wſʔ=ῃ5fPO8&UA'-3SHrdku 6)?I@oXZFe-"cM~c[K]>IJq.vե Q׎i-ml ]p{R:?]+?N8.zW#6kl-ZOğ#x%ݸ3c+ρD#M$j@rK [ERؓx=O70[4U6t\l:䌸c=޼m~zK9-lP99{Ҳ?g~.}kp*8ݴoҿb^,!ShԻZylj)f ~sl^x랾+SDsMOz׫COl|"<1ld9ns{1EH.0FO -VgQӹ)s;{k)شc==+//^/) w9vtn[2oO_h8"l}kp5,qPgO6n[ic#ZnQnXw=>?xVKh#ԤPԈ%{ϻgnk^3JGDjH03^u2~>l%—p)@IS{9 rW3ԍ_:x+0pCQ)[X~j-+mBb:Psߨ滿 君&k7O\_xQ"+ovyUV"dA2uZ$w:gDAfXqF46m?ÚÖvlPx *=\Mk\ο Mu+jb +=j-MsWL9\{w氊W,[@8]+-heylÃsHK0/ʭG !x g?҇5 (xcAwKp~$ZۡEQmm-aaϽV{I+,א[,S.nS5WRKi;J*퍪Cm9@zFɍ2aUL:JExZGk!W9?jk+(zmLO7gxs@iCۯ.Ka؎qV g}1Md#tzj{& m xboʀze֜mJqFsS| Ź 0zzvԅۂ"GZmAUw/'M]~45hK)٢[^9!d̢H8 35[[7ghJ-g{O3,$B5ʮ<68H?SQaŶ4b\y)0{]X?ʯiou т 9εA eEƲv("s{)@!n'+o|RbE`͟zW?|k0FqsYȎ? Yfz-LW:VnSsj ֳ.:m~-a ;aWs}j =+A.1K@@E^KŶSׅ^ؒ;v Yd3VMGWlẀ5V3[l0ZZ.m9 yXhήx00CzMl91Xj+y0Q oWTa'MEA|_7ܮIw2?S^UƂ}MPе)?{ޮkwZُFC]yx+PÞ4v뢶_''zWtM;wܵv{ʥDZl+} EaFNkeT'Uuˡ D6S|LiTxWҭ ģs`?_I*JN+˥i:livkO* as|Vށ5N7h\eVvD~^.M+]11FLu#/>zI>w<7Bď1KZ7Bc~^.f xNX-l++D|xL8_X`?:IsTR<>//_x[ȿCѫwB| _uvgß\zƟi.Jl#cUZXZ[˅SVEK|#:UX'M³ozeli/yG(fiı'TlKUHLmw'. ֫ɒ͐7=z-1\1ֲg#7𪞵=ͻ@rc?U]#G|K к-y'tFӗC>1_uJ`rYsޯě5=I̮.nq|ZR{yzQ %*ºO 1ǯSq"#淊t\<7GQ9/ޘzB3\(0gs&V;Nǧ h]1b@u\jYN2eJ>nP;XIYٜ6cȮ|2(g3PFS$ԍkY?>i2ws>8': Uŧ2k]v 9?~|kxWNҬi&m9_5U׷"s *QI=O*aT8M9mc X|{>ժ~G5cM/]}s7[FSq^/Y|Us+K dXdY"| tܨܶ(^C2:G q6;q8GsۿYp>)t_ H5kͨ* "vq]?z> O72YT=z^۝[>6Gc`QzJrtm>8񋉳e8rò6'#h<iK)BUv99z+c>/eӛZ r<өՏڇ%E7IQ$L{#򯚼K5uфi AxX Iڽl?T}pOfW4b$I!/yEIQO+4\$*\WQ_,*ϡEҭa_Ʃw7Y#QZwQ(EaYs"M]/+CHJ]1%~X\VF Iu+ =YA8R r63W}tGj}?oNRszÿ%w댖h3$N҈o־aE;.I$= tSq|ԩJ.TV"7$0Iu/<<ɯ1ɴőxTnzg"Dx~Kȸז =YgQv>7."v>V9Ԫ#=A_SSiCƗ=E'V }9-me|{i&5-#&SO,sPZIggN/[6O5FYzT^mi_Z~Hń`U'z KvֹY>lfB}q:13d\n)' ,NG+;UI~SֺE6~4FVIT7N ֧juZ)~\/Y-|N½K[;wkcsזVrhiYbׇd-y6 Ԍ_WPxfkK~tW HЦsd֯VX*ўKd҃Mt[6fi5Bd' M?ϊl. kq!!( JqHDYV>kN |D -Bv9<3nZIC[ᨆa!KEsۑ^[ve[hA:sc 4?8P@O=WWx8Yw>E 06ֿG>uVs9jn=4q,f1S ,Z-An6۶޵muHX嵙ZtB!t1`ie#Ju*q呋 ְ2=/ wGo~tâ'Kcl\w_67S!͆B"?mV &emu j]$;Hִy̿_1xkF Z LxTr15yX [V,$\XNL2^__r51c˔l.6(Muh@$E=qi%ZP [>ޔ׺}~ғ|$o/W)aO.[Ex~{?fx9o_ɷy~^'B2/E~?SyLCgikyx=3ik=?g=m#T7dy]֮J`aQ@8E>ݻrW̷1'ޞ0?LQc3(})׮aO2B=*e:xbr;0}Аb4E3ҩԎZ&l,irrsV)U RE"k`"߽m\:cT}KحTIn:w-85[NУ fY tޗK!KY7 C~yqmHU4뻕LLzv-%ųY[NVPU 6ƀ+gaI~Ic ڷN|Î:5,. = Sfm$[KOʀ.@F83]fa`ՇZuΧiFXށ=ZF?hU3xĊ 89K*j5B.@ZuV7>ݪղ בA%B 9EH0H֕>r| aO,;W򳯔s$zUTM/Nz2E)>SRyIs3gs.;MX,cI8TX|ۀ]Iui\E^r KO9!Ձs7 .ⱵC%֥-L!5E,{t?e&onx<7;{2Gcڻ*9q-̔<;d}w '>Z@Or=+OGq6efbj:s_Nv6#|1,v 5argD(1Ÿ$G!~wk $Y{c?w๾Gylgۭ=țTWAݹW:M%,ȯ *ңз&=ݖ-Dq@X={W1]ϭ޶D߀LWARHvG62rsQiwyv^c^#dZɿ{Kdc@:sO=h*Ѵ!\W~U_Qrr: Rg__NN(aYw8c\Mj$FFWOqxⵞ5;!9Kxlu_K VYSTVK,q_=3޹K-#κqoJդ1mUNȨm. #O<s^ms }iaY*R$leH/~ׯK(_;N[]LVO6V8 Uq~ Hz2u{Il)^4`k^?:dO-Bd!YU~)coP8GߪKqp0s>6Fns:įK{};'ye:c*-%Q EP@ωŸi.MxO AH- Ȭ2y]w:xWME,,Pa!G"= )~s_9O}撲zIk8Y-x_[U(kCg⎳xR6~u? !YQ],}WfaQBcr t0Tm= 2|#[kH'cirė^0>$v O }>U9'Wy hzО98y5V>_9'qQ'z3n2>`( &b3Ď\6vTɏ(Cg$ռC^F%YyQ^?>_dKU1S1Rھ')y>ic] cw}1|\_4xle5m⽽υY#8> 9пe ^k: х?}w3&"mIJRf|0S SӠ9c^7aFm"˺?et7 ot%#^`**u٦_8M%VVz:}.ddh!Q ߗx旦ۼZ"W뗅f-o-|&(c̟o|M0@ }Eygӆ&oIjvximabM%cw ImVlӦ+U=“ d0w= }I],s_3bԚߍ.#k-Mx!V*ҭ$]ϗO/U0Ғ-϶bz ϚQ$]`}} }ӭ$n2O~ xg\־ FxdB0@C:?j~*xV[y@TKA-=~鯜^'ӡC RG鯇|cDõnoW@Q_<2%.$P?WxcI[g9{()ggW|7{éc v!H#4+еNwv=E~\Yʷqq;7:Om.;cl(gMҎg5:c/mn~_N;b{{՝@_;Qҵط xKRW*A$* ;wZg!-\Lr}kЩOFztEVhF/Hܤ5qGkXrEz¼{'|Id~) 81xkVhSҖH7Zo \@sק~9`^Fj|[OS[ ]Α:7Xzs{RArw.~do*qtVGjK}w˱e f 6Z-#-i O',jW@H \vemf,H11^"tDK]>yb(eDb[#'lznV><[;]߅2ђ(&jۀ=9$pTKMg`anSG,g<9$ԕN2=yVRdӏ+M3*Q6yO_{ dF#نg={ bF\ $}@@Œ\<mKCoɏ0^ut-RyYsTfNPb^7υoA6< ''kŭdkᣄ~Ϊ4R9L'2cx;.#QqԠ]:\Eyr#xr4՝6m`(WwۖRxҸ/ںeB_agDs;Xʎ1W}{۝bOxrs/uB4@liZ_G±k l$ެ!lÎ^meq揜gCխCB:?cJJ Jiu(Ӧ״ $rpo\5m5W'KtMH_mC$SWQ_G]Y ~,+3Jɞmhٟ7Ƹo5{ڧ5ubfb`/8YXλ4] 9A_?AoڇsxsS`n-0U~5~ xGY-Ö\_q+?h)~`Ozw)OB;N[XrՔkҖQӊռk&tp1OA@>{t#1*]k@F;Pӧ`;Vr׳wچ4CM+O?5SEkk'_ 5ro*GRY O'V V [pW-H."ki֩fO՘#̛^W wP@Ҷnc9A%%,ı&Q:րX^U f (%ŶnّB]|?v,PGhM6ȖU`F~TUݻ9jBe m֞!ÄޙO"3X[a5o8KP5sS<朳Fr^J`jw/fѝiZi+ɕGֶ1{orP#BTk\ZM#5^C`=+.[E&5]ztX1ͧ0VxjYrRCzV]NPͮRE\Ijds*ʽƦn>Uq鶩m뺹eE^`7J kįzQ˪\-3;tP=ZY n!APY:Ta̭cm/dj/>iaiu|xA)3uح>i_F .&!0}܁׽uӠ尣Iy\y{YK1"+oO ֭5]*}3XYQ7Az?7_m`׾&YD[ekydm!*CWcN]:T(T :Bu.Z![ IUXu;.!iDα 8Gү%G6f K}BFF}ZEzp1*[ɮ? 1bWVk^M lz 5MF5 s`?4Oym%ǑtY?嚨YWD]^[{{C9 &6R<~T.=YDdL1Z2$fmm$!Xs%nFrַ2)d 4;^ ĩi|q%L`8$v8Ҽƿ56$h$Oj1Umx隊$Jznk4_`A,q`I&I7.Heϵxf }Qwd?t6A+9Sh>=Es0w[s:dFNo6p%zt;מx[jsmE>}si6Ll[R-_0 Շo[iZsU^':5Puws^c-۷PURN2:iĢKXCfG85|f6V3U_h;X13T&kZ4Р[}q{cxğ,jIξ N,v>!K+7g  V;h-&6#iNtWx5k>6H$ pʬ^j{&JKXKX?J IGiLǑY٥#W>0M\`P@X{gKZҤ㸯t2eHl%|TB6#ZVbrzk2N+t YT 5cԊK̿ ^a8-|tOFBDwVp1f9`|M&YDMҫ׊a!h~u.$XAsOZ5i B[|Qc#{/r׼8LЊc1n0UvPS x/Y&}oUHNʀ6=+K:cigvKd\7FͤiSi_ bܥHݻzZY`>'VR՟ cxug޳~VZl _sFxߕ}qq?)I2}cb|S^;wRҸE*7c+)RϚoq F銇guOg#b/ѳp5Wvo#.++JUAq\X̋ N&0E/'aNUhO;Aj|ezT=St/glo;y]2*_ 5k_MWx-3Oh4˕wDI-yIt8Zt9pJe2rI;F}o o_G[AdOiI!LjѕUi~NmRK9YC?ƻiR|ѹv4i.#X%ӦonUFP𼷚z3 H#+LחEJDl{vi+MĦ߇˷*/99-~t]&sk3Ly4W&EP5F8좢I=z9SEolj偃p9ֽ3>`>ΞGoPHX=tmP۫J}Ir+6+c SI#(5+Gz~^B) =+MgɅZEwr.#IZg0rn?0_<]E7D:D.c=8R;OVg$ee|^ƽ\*4qҪπ|eS9sѹu~5bh|5_G+>=ƔY!U8H_+jz؞y ӚJ 8MjBc'Qi1OӾ6rip[rzd{֦EtAyrmVAQ'q7W U_kAf#|cϰ:ḻpG@iԚ|Po·&ZMB;i]A-||LLR!ݲT#w^K<~X db[85 ӻ]˥?5},&][":sW~%q)Ec0bÃ/Q^7_ "iu/}=s]5VZe\>Pz} ~ycMh:(wS>"В[bL2z=k[ڦgA*o12Gq!HG#uX~ _ՕZisʞVtǝFߗ]Sϯңh#p.>\wzN0|LoWu#jS)A_-?v΀ʾQg 8?N3^3_xJԡb,0W,&9g3]O˰xX0YuF<_$I f]RkYCE-ۂg/ {D>~#! `͎;%1  cZu7"ڡc!V$y'k?Q՟!c4:{HZKVb0=;w54mG$QOkj@39YX@1Ȧ&Rm-䎧X/0&LNEl`N?U,u{l8U#v-.`[F$Oj.2 K\GXnn@Qiox&TU! )_8@^ kUܘ%d u4:,csT]Ng`V9P(oЅ[nN;H 9\jNhHe:n p#q0=zխT۹5d^vޓأ=[]~Sqݪ K믳ƲyowL`U']U#^hH<)^CZ-yǕ '^/'5'bq(ʐe2UR0zMh%G?fϩ$,Yk[.?紘ݏzUe``WyFneP;/?V?&3[0еs^]+U Y}?ɮ"ƃ+ӷz}3tv:Μ7)4 ι6~q^3T.&y"$ qXW?t1K)y:}:ens*KcF{6}y4qX{j6HO΂44&%Sjef#r)|IqZui ]T/=A-\eSXzm(>qo!<XzQ-[j0 ONwF8V ýI^|s{UO x톓 \FONHקxR[= 9 3p˗ZKCsvL>%P:0 -/,."ռLF%7޼ՂOVтq̉TL$+ͳj"i[I!hܻXḌ̶ִ[iT AmE I!C(VcUUU$[4${.&i[8 qsRFChn9lĽ6Ml',&\AZ:s:'etxEܠv}ǚ5YkBRv~Y,j r8<ukvl|58D>kwi?5>T#ӡ4F75 G?}11|*u"ֲn#)?t8lpGM7C[PR`;o *VѕO#>\J72ZLy⤖28`ت&HͱyWDp,R|Qb$zU ww) LL0 4!t/NWs98'>p>0X{Qv^lyHeV3'V^D)kc+5>2}6X8|A$tπVȃUF??xPj2RIHHO"ɡEpr<.h>[j jyQ[Yhv_lml7+k+OF~ib3|'Wf15HL4FKge2A:߽A:jj`thIw?#~h~)R2(>J+ɖSOs nPi-d F8ַl|J|%= kˣ%F Jπ2ynan <=Hjȼ5y=v1XvH1Ÿ+o}/~Κ4SN~$Ȃ"Ĵ0Ƥjթ_e9jwnB8pH p^ &ҪG=+㻻h!Hd>޹Prh+$.!y9\_iI 2:WӤEd#=U--_9>\X׸2xtu3x$זW>85/:abHЪ A?+ZK}~fq'[6_ }OiyI< u'5nm{QҼ""G!Cx.zM*MYYQ*MyIIHpRI-d]rzU_{ԋMdF+|yM%K NGemd#{g[XDn8'^]Ah]5ˑ v#O AR8g ::@kos:_xu,ҰU,2x刕:NJG_~-[CqҹjCByQFM{Ai%Ա(l8_<(8-OK8ɯͲlYϕ5ׇԯ#El̏:ݱ!fu+fdGs_:V]Cx6{hhdv< fr%qV ;p1VT*NDqU4|C@a5DE{fq x]:efBzzg s*ZJU}?5FLI59VW~տwp#vG^كZB\rjk7 un>xew|[9knxtmFF7Ƹ-_SO@*\uǑ޾tΛmjW@p~`+믈6]YsՋ$k8;{WSZڰyPo>ݫxoRM_GkU"- /zxcֽ1ig׋{V요R Qױh+c= 7= {ZլwP}$jw&pšȀp O$f#xټ9I8.$8PT5Y >C&MKi:9ZԣkcOj7Ѳc?uwWk~rPǯg˰',u%bl?n|fCӚ4?hw~C~6<#2G5WŚ]p.nʿ%gρYj< &]nnqE]\ɭQw4<=*Kqs/vC!jF`UK]R7}o*u:6DW6b6#̥G6-8UԜZX`Q;@ս̺sSMeW$>mp- jVGj6We=@uog$|m[w?N)tF=eR' #=Se]j\,lR[+|YxoEcf[bO4gq8N*֚)ĒEm=֣Cݓr0Krkо5$Z7=J>m"r7 ޽mJ(b ,€!ɘE V/60) (ozeKIkYq|?q$4SV݀ Lf& 'k~u>wnmW-ہ[Q22O#{("(P(`{1?Z'B21\[DϦ@[ö:K$AO2G՛p?I%QT3ꐣ#hP6?Y?ONy~xȵKfs~u^}Ri}b #/);Ē[o^O[7t/&ObH 0?_r\$3[.iimIcjm:*N{DR]skmw@|yr .Pfχ}kX[=GW~%w,(tkkNy a^Qzh6oc(*Vsװi;p#k|]WW:!)&H?5{6m΍A\zzKd֯d%Qv.ʴ<9}J]5COaϰZyi%a@~d#Z!񅯇:C;ska)Rڸle0,S ns>2ѝU2 29y{h_ tԔ{q5s)y4߅vaUDQ񁓜f]aѫ=ݽŧS3/#^}|áx#kD9g{[ZU5e%gr? }OgăAK\;ڼةWǀ|&"4$`ϭ} _ʀGmo>j4oMuYFNkҼ'[?X:r&r ѕQc5o.TWXtD(&1\G]4kTdqt*gjVHH籭mF=> GI~)XǯҴtMi&,+w:En ¼ěMnR+wHH˅-*7g&<(c6@3؞fVIj[di GEXH޹0WGC eaFy0DI z{_S9(rP}υ?4Vڤ>XsϧjtGwF =c1_Y&c2k/!;ȯg g36h ܌9e;H\:{enV-L]5X5-L ~)??qjv-=V_hoֽdt1ʷ7/I,`̌G8L WyWѯllm$gnBzvQkzjc3RO$s<($d9%|I< LwHS\]bs"\6d}_ cZ1IoiqJ ?L/ !oZ¿c╬mݴFu;a1^v2m~|CE7#;sqb`Z ?:ru93vxOlkSisS}sʐ*ȹ+q߹:gYʰ4y3տhگRak \cdI.VA'zM[',[Mr}B>XkNUGHJ'`<7 rxN_] yR0PG#8EKy~:uy (|H | |w/k}S>yu\HlBe8%s쿴׾?íA8h Hu8U+_Κ]Q[?5\DŽb_N ǥDp[_OӾ2ÚƛFVGh19f>~k4~$|CN (kL `I8c3۽~ .9xÞSSњL33e$Fz U%Qf*cIɭO!>C?X\<1OjqjLʡ ?_ҾZxKn1_ꟳ{#_$dʿe)+^>{5aFq{OFWi^+n;{mjrOݣ05Go!ŕ;(W>V{t5r}98|>AXzѮ\ kizLr_ a/Ɇ^aj## ^8iWC\jF= / X%]y$[ `U?Nk;ZhpxRx]Jur`g<pU>s'9r@Or$hc\ B_0a]W@& ?f ) ![X ~Gcf3 -8,:B*۞hNmrxaK[.2k0A^a%!6E:Rکd|3k,*Cݪ9QRzN|a?ZK}Vd`s{\Ѳ#0'+oH5m.ʾ\` s}_g% 1$UUVT8g??}3xy)ZVxW][FHcxJ2Ę݅z&⤼b!k4+\F⊟9[k{+nuc kO֊zݤ U%2Iww_[Y*7OڛƯK{jw062=[zשPr+r6>֭s}5loؠ+J3uZ9I5[L ?}UYκohᄖ1( [jOuhrFrr<~Fxzk (JW>מ&q +m@봢{u~kOmy\`4-Wh^4L;]+P)+Cj/C<6h6IVoTd콪Zs:@leN8 [p[A2ko'˭ג\\Ag];׵_#4GFQӭv.^]qr:=n̬B_ϩoE}%]*rX%)h7GZ('m o é(!zuzhA={x fNO{fsNgwUݻN6a^~`rz iY|䔸fF ~x.#8Ø2$lcӵ|v|:OxUӡ,9@㖮i+Ub| nRQa=cYn51mu#qҳ<@ yG{9ݳHVOK`:׬5=&_4r ~9xR%oq wV&YLj$W\c$zm IX*~`$3O3,G_Ҫ=_>iz)OnjE5)Gs-I2}GÖvO_«hLI ?.~$ԗZҬnY*x TeX$F__CPi"1BYyݏխ;Nqq?l"caZ;6hɖ<~su l6p0'm{Uݘ@5oQme͉] ube>RB.Zr)567x> `i_tO k)uk7TM!mV-I>d*ʱZwΖgpKS,KKhJEww1:'i~R)I0AY7/ hz ɝj3ϥz R`~;~a, `eMN2K>m@aV&L7V2Td`XȯVeº =+Pbܘk2)?{<^m!Tw.c3mŷѭ'+-=?S,tYi;xcoH-윀OkTȆLr0 ^ne3`N3eڛ+bX~kº8,;?)>wqӸ+Drhmgu7>ie$#~>=x֝팖~Za)3_v6wY/s`}[W?޴XMp;,%47"6cvuj#5jOIl3SqOե]V?{=)ڬ_C$85 a<Z̹0iθ{}j͏WT}l-I&|˺gY7:q:C=+r Ԣ18+68r)]\ ˋkbtxT;${qZ!q pXw-IlWl͚ -4ORk+:$\ [\lzV>A-H3i!}r;_<Ƶ<I|a~mmǂ?ңԴtFp d}kOI-t/cIED$ ׵9Z s_ŭZ%u]RSEYhYUzo= Y2[Z1i}MfyYBW2w"{U ?/l4X{*wo&S^-jf FdQ:xy| 5)n#ZiKHl5xYAAcPLw; Ag-ޠXmP>T׍ǧq p?JzAL*6e>%xsH L^#p mz䢁+_&-?T폒j03߯UdtZ_ 4+\|xGl1%>fnsgyj'/E*. M#KY^PF';0VW uwe&׏ Fݎ:i._c%3iM0c##"8pj>V6?ͨ=Le?՟L*B4TlnWcU ^+ ߡ9nݼڏ|E,xʹ\_LdxNx##WUa/-mumt7Bjnd_ze;[Oi?nwܵz?'5fv޲5R4O+:Kcw4C~h]'Ut ۛ-I! $נh҃/X&tg^hx/5Ƙ+LfA~'?٢aKvuG) $g>_aҿSufX.Wy5gū;kmyqJ"?ZpݤzZV.'$͖t> ޠԶ_LQd='%_DX %$B?#rbpTt~:VhhZR@>q{V,D{w(kûywH_#{* &K=/̀n=kZA7}u%Xʷ彮ĉ$ Fe;GS.U o"FN;Z6--t.>SyZ<5Ggl"h-@ ^k\G,:8WZ|xX;FxS[8yV'R|a}ޚim uM/Xt/ن|F?ܟ'RQqL#( W⠇]?3̙ }fޥKK;xv cU:^ ඙2ͦ[r22xVVee)K,3Q%֗m, 3[bޛ|k9&o ܛĮdFM⵼k&TE(bi{b U }24;, ?|.㷰}H d׿C"1rц-5i#ß5̺S®\y1gH>%11oG?4.iAv ,m.x G,Yi2q?WxZk8/+|˩eP6JB=;׈~;Bgb/P13>"j g nBNK~9+Y\n-Nw >GV+wmμ['$.At@_OoA4fV Ks:3؟;F:Y+&/m|/t]Ӄ?* ;d OsuTq|'|Fqpz#/Ej2E3,W|Genu;[cq4jp3R5Q?WDX_͘[2ӵߎ?lS]\(6'_ֿbeogᇀ5Os bLڼC @-–{1 8?)>irŸW!uУP*jWM1 dwڭؘ(cY'BZpJ=?abF+ܧky;AZ5K4\~iO#mqu BM \tR(7dg {WLjtoCKqu¾XSa%Ŷ$\s_NOA|Yh| }>I͂H\[OT)9 MJb=bnxsߙ' U.X`$w YƋ(5>nVz5}tMy&Sv \]E[sr@ukK8Ozʻcc9ۚЕ5ڌ'n3[lT Ǘvj\7Fx=i rI=k;_`o0a@=pSie~Z47">i'KmߜZo\,>Kw7w_)}}94xVv39 %Jlb4;_/lCUksz;?cgĞ?5J ϓ;+X9aczdZ{0RW/WC\3%kiV"B:??MW] h~2q IHC_D~o|fhtfQ&KQ=񯤌%fsN d5?޸zd٣q)dm{CUV YmvO/0i_VikVGfPeyFwqbgԟ4}U~/&Qڀ?/"w2ږ j[YSi;t;)5S֣VXff=v"Iq֪j٤Md~TI3[a%ݪ-!ֵشxVv?(SݫIuc҉4{|rgq.[mCܼL1+(UƿH_*γuK=?Zi\וv)G  uCU\7cmycMfufO9%'hM6V#.u(Mrۗjm-#nn@ 9a<1ygV\ؗ vi 1P\ۛA VrN6Fyv !@7گx ᮫3Ķgyd '@V6{|*B'w68==׷z_O{~HcRLVB5#WJ)_ xcsw*蟵ǁ\7^y,G!sMf~Ϳ_ T"9d=qi)_i݁cvsT5=:[ݮ%PI|mleLt:3ǺϖoSO]t},@p2:WIV?ca [P)L?`nws¶ĥ)XWI<~|=O,jENuj|Tߏ 6mVԐ6GfNx=0AQ?_ '|8YZ[kM R*y=qשC0V?Wrpѳ{)kx2({[)̋py繬φ|C&k$)nCjS4^-?uo$:* '{)#BG)xV? 6T1kIMg[5 ҵ F!}{W]}nDWȜ|~ҺV{-VAlʃ{Wꚻb XFwddxUQ]՞oW6 $#Nէ'~+[ JGm9fb۰q,/ۯkn>vT:nJr9|C1Y=7:><[._ZX[pSc?ѩYIgzk^ J^p ?ָ/|t7%A=d XqzW~-2< r:*RGwZUtm'-cUa&ݤ |!x/K[\!+6|s𾫠VGȌ,ѫ+&H===+O(S_Ÿ:B~>"5;<0G1z'8 >'sa0XT,ϚmjfЯx f{FD.ix H?3\g$.-™ x+oZ7Njd Xm ξX.[T<>h+bΏYx[.|t^xQ # s|Y݋D0oi @$+keR)e8 =tRz)W.K[#Wu>A&7<BD#$ntĖY@{SaU~|tlοEմxe8?WPjt&3t".et|{j_<5_I,CWkIּ6+ rU7[8]+hQqrG,?v6DC8xg>JG5ԣ{Q%p^l'+q_,|5}0`=qڱc>FCr'=}5MBʜ yb\eG)t)VO5l楴 Eڔ#s% O+FUBW 9:X3/aQ՝֓tKɵ%qZ-#QX~kѵq F|7˭:+`bޫ}#7ˑҹMC^:fn 'V޴nw =+>'xi~2O/o:)SG,5df// [+5[S\g'^Ms>{!ř8z׬|~۪*샐OS'Fo|?g84wvr71ީMJ1'I>)j(I5~/xji~6tG^O/i%欫+LDg?uGg}/c{Ku,QF-9[5~;Ӣu+&{̄gy{ 7bTi9;ƜC 1\->H<χzqmo.LB3l?*.A'M~`^Y_׷4뫲ׄv;yk?ࣟH4nWQ*1ȯ8B_x$֩-Ϝ2~'_xMì-''6sD;VGޞX2+8F:׭>6[ا8oFG~Ҳ[+ Ǘ?^ғ>0^O[hz ?i[ Fa(>R{|3L</*k>/ӴOxbye%F9HέwgZ[#4q;R?/2ԫFtשW2V*pf|![o儊55 `~8btVqٟU$dv~ |mY5#Wco >jd✷T~;<:Tm/l}a}X|jv+<7Ҫ:W߳ç.М_cYB;ɞϱ<V?g{nt- .6Wm=,TB5^f^d?xc}d(- -zўjGS\qֺ$]3Or:U}&-c]qY_Yk WĢki.e|TRW"%y5s9c*|tgZ-fu-Ux秥p"NPyWͫ]hߴOm^@3&t֊`f\= ?Ρ]"W:TN.3؞_$QߩLy5|U^$K/#+޲4/&0r1Z\Zn3_t3:6JSEkx&Jbc:N^ou] GQ"Ҩ }Q~/ 3ʲHFpAY_Q v"I*qWC''Ijդ? |Z,zW2Bw U8'l/oZۿ'2ISDU|s澊,~8.x{mpb#$5lM1 #5X. 9J5lTp]&?b7[V99?|hKK#0 с?Չ~0Z)eG<ןE^.,F9^|X:O姃t۶nokIw#: 3_ឈ!a)s{v_<ڬs9 smCšƙ{ 3Ke24lĖáN-S-GExWVQa˜>x@28?¾L9IMkx:gш_HcV)cܡ9r}VQk.}i7w4uK|&=KbPd$A^x_6%iD*Fz+%@y N9LׇT]"o8G\;ZMQ 6xw텦Gj5)mLgNxlOR{O%a!ՓtҸ,FN1iFe4+|g>~.ltb$˘Z)X($uMn.:`q>i^8m;yg2tPO_ɿVxXǟ_K4l ]60V)'}"Hx"Đ 8^Pp8ݻKCO%ƙ~|OXpBk.5ݍ.Y3yW3xW⍌9kN#YFegͻ[?ګZIC X(3)l>ԲB'vfgux&[ :*d!R!}3ںK\D?X}) iM%1?:Gh=-+r_-ΎP{dꗭ6e֭BHPOoOր*.w$ gjn%!axBp*-NB43B.CznTdy˩]D ըnM@7 :~tB`QԯonbPV/%EOL)tخHO`9 :VyiK=G2IkHJ6 |Tws7׫)tss@.!V @^ca>y(1`A3@V#D8Z0!֩Aloם-Ⱥ\(־Ad."lj9!F3Y; -qW%12q6*%ң[ݘG*HtP(i'eHZKo4TVVg|uq Ǎ/gPZ޶'+c7{zI>brAXTzJ?~ZZrFz8ꄗnm\Z6 VYy 5|1̏qI*WڟOß+_=A*09a_#|ƏFc>|n؀8~h&ZF H5"5'Yr+jd=Dc=G)#MWp}h&&F+@ǯ_Q6K4Pnr3/CkpI[e,FʸyZ5i~W孕k[QBzmʹ٨T O4]P7"P@ꪪT{'|^,u~/V-H(9_TWO/baƩU뎼36lj&M O-u %?<s^soN!Ոrt+uRtg-Jke w??Z|YDcڴ>/Zjz/Bb9N~my{>&k^!6$ӧ<ҶU] g>Մ$j/jnϊnҮ&E zw4i? ~.m%וw+G_9ºNǻorA6!۬۲W:;j}U Xy&[NYrpƟuoK=ƍ.b* n#RV?ѿq˭>"K 8>.֋SW4ʪ7Hb+Ѕ*wks\Sm_~_,,n 7%e]JgƾEK譞NtKw9eg-w\_kwYMlع' icy58ہ3?UZ[GW]Im5(X9#^> bK399JwFHݟqߵk갈ZS ]ǃ>l!IR<ʌqۨ^Ek|}u|7-#JXANJ> G|8ҮIh{}HL{돟׵xWk[~> ~$xZv eeg99O r, ήa.iz'X燸v7"Ǜ_vV< m&DkP@Cl#S^3h<}٣xž'ў6M|icv1oJ']|S?4?_#+󯿫u1-2UU_5uZO$2.9㩭-v͔~>0mk sW:tpm*p_I7#'?ྛ7GW_u/*XS\h`;3X&GaaZ~֛toqyB9_k⏈XK,2yCWu,~UVkFu?}$Sʹ,w`dt]/;dp\S|ѓJt7w?Z Xjp~xݖ-iWy/gXȶϵ'ޮAV5UZ~IsF'.AWmPYPpIozom9SltE9)Iݽ,pr}T)[iAQK*?Wߋ6'KV 8 4hmfyO%9kھ~ lͶXi6q|F?8=벆mo\Cet[6O&Y&yP[bgU>*~"MM޼~uWì5Kb9; -E>s-xAQ[_54 b]+N{ Iɞ rʩpqwfw6{YSmȅayyk'Ͻ?f+\jdS&An'Am2t".lgx?λFOi+5ѯ1@'']CƗg,UZ)!˃S_%f?Sua45_>w{ S޷䝌rIH?ōkP)/v }k𵸶\$>Y*2_-_pk .W[SE*pq,5hKX~.NcGFg]T&>_Rc\N} 9 ˎ'*XO55QY溉`Yye95#T~4.I+NA9^<qx~Hښ[lFA 0d7V{S[ҩlv~gx[PyZ M.mXSԊ/Klexb+:aAgJCcš;k)mTcUl';-Yĥ G|g$ ;φiqUW"fz}HjҾߝ|=i/<= XyrRFF$`}AG hmwW.A g9oUG,I_~ҿ?sⅇ|/mZX6Ak*ɻ;]_M*xjJRi6oe9pnޭ+ |@~!Z֝x{TbDGp Ac>kff_xhȾ!uXpNH= {?t_~xS :eε$4nT/?eտgB1 $-ZCU6Y=~c(^ӡ~^xo]|Ekyjɟ_M]@GGY\\=G7/b qF"|;ߊz I$MNydݫmX4\LNFms^ˠ|LɧOXyzB)b~W@uW/x3+4s+.!V8Ai}}N$%(Cпf^5v|BWotI9jċo^M͔&! ^7p{kN>XYwSN<}e䓀}"ׇ?-_m5ÏF4fL+7m|c̻yq4ezO/4;Ѩ>.ݎO\p+Ľ [Okoh#(d9`p'x5}~7xmQoplE\ 0ޅJ!⟎ͷ>M S ;ppUOZq RՒ=CPδ|9K-61*Ғ8Q_a2~ږ./~ZyZY"R;z~?exIg"JNyA$v+ֱ6guX"k Kr2~l#\297 C/-;T~7+c|MgG}^[n1s~08V| D. -[O~Mxſ mk\FpͰ:s_ẘ*1O¤U+1b9+>$^&O )IoκF W>Jw9mw%#gj W Far yFJRG)f1'xL% f'Z s]"׃YjpmexP_!H ޾b/[K\%AqqM}q?tUyI$۞NxS;~6I9q֯/d[W:]ZRnh0TXOIi@3)=;z{eգ:1MjxبUnC{#Ivb^YdÎ񼟼`1%n +f?oB(kһfӎ1?igY@`#'2W̷>6eM$qW_[QBA?Ҿ`њD,$秤WRM vxXo-dk(lR ?Zoc5q8WLilζr1NF_T hbPʧa:,kLv>2,̎ 3ڹ  v z\ zg>mҴFK|ܑϭZKýݷV׹&^m4p'\dm= <:5b9|JǞkea/G'?R'+._6{p[#'}tEztcMF\IPϱKӠ$z~\˟[=C fTRe{1Z[]ۅrpKVVxMH*֢ d+& /5IV )$ā$ʧs&4=SWJݳA?*3ƾ[K܀'s\.뵖yu0R~|rC795ѥ}$aWV.zOӵ^K]6?Wh9ϰo_IïJB9mF ]A8d#oEe fsdW/{-im \iq:)a=z渱Jx>S>uc!x><3pEyأp~Td?@+tCĚj*>I `Y^ gJgDÒ#(w%>XxgQ|Ii4M { G+'_X`3c=8?:6 C-]WV0F6el{y/? mk UK#KѴQu[AyfXdDkAP?ֿWޝ=t&_njeq+%̨,R5g6"R/K-okA2?W{MNjywk1Ze.y 5D-s趯?#,>7܌j+f^[b'G܎u|3?dS/.mѣO03$؊'ms;{"B|@|%~~8|oio % S>Zat?~iڽ@do,8bC>p֊)Ghhyhq5?Z_8=ok$J> kP-RP*ֻqʦ; kK?/i>lt##y$'Hg|ʂJTv.+OFu"# éi~ vm{ryo_#}]q3DH|>tZ࿏1_k#yU9+(8#j^/t(Ǧkli6,˅dqR7, ɨCU/%m\ř; K/V?fItKy'NjH$ͫ<>fYn9?I4->/|m-4-Qۣ0 ~bp+Lw74yֶ_4x}?nQijuؽ5:?:įokY|;u1,,v6F!1_/]d>:o:? ?7?w<[WA0kpxsw pm& NAa r'|}/3h,K>o5e_τ?|]ƋNISX|G,XES2ːk 7h?ػ~1i/w$Zf%q4?#|"TS_5({o4elj]H. P]lo_C62qqKM\W|]x jSw}.{t%Ho-2KҢoj[m^kKoRxf#t{{bU,(=z1gm7eoh^&>xjKTz:כk -9%y2 )P^%([y?ÿ_-7-J!GBٯCG|R^weu"Dp9z( ׇ5XKlp0Oa5giه|kSL. H&Lk~ Bg8mG~{t?EcOQ#q>xVuU=zz8N{k [hdSiTԨOj#ukxL5#oh-o-!U%1`e9ۀH},cRJW }m5y[IXr:>u#o\\Lkn}!SXЦ{K:R=k¿_MQw/RNҦ~ ԥ.1ei, Q,`۴<[̧=lz ~_l1@hڢ4F`5hԀ[0VWM6P˹O*Yiu a"`;^.7Wu0|5a~ֵh8nIh䘶#* %OLcns6kzM[71Y\oLt-FwI47i w0ٳnm\\~WYIKQޭ+$'<+…V֏k_[P x7y6 &|1gy%`$revbH@2Ojv1[xI.pҪ'L}+O۫;j~Zf{i_a]o0g;!e1gw]< 4x(l/o|+}6wuhI2>N9|e."Um JMz_ɣƝ):o޶41a}jPzԨw.>ƽN{- #PEo*g b{=z/ٟb[kxᦕm ۡ1ũs٢P0ڱ@|%.&o##bld/,f6hZ/k=NiQ9Ɩ$?{-M3'~Y|LZ]6 qow╭xÞ1K{'f}e3+(˟(^<[*|iN~t&ኽmegL mqܞ~JXC\SJଟ~YYY!`ҽ5-[/.]]h~g}u@̷6PSkW{V$ӥ^`@N $*xM=j$LW(`H9sP3ݩTB Q2v?}\>exr ?P.mn!pdtaRGPk-|=%oi~"A&d {ۖX0𤏍?SNciNWvucxk^M/Pe4k rUA$~ߴe{xJEX'FMʶldML*,&evOG}ݾ}:4JRM4}m~g濍4où.fR8bPtћ_M_ت/e$"3~B(=~cּGe[ާ&!_2IؑTq^٣/-sO2E~uھK8GUG_|c$U͕,$*8Y%].Jс_U}+Cg+m""A_B0ToNg&~l I~J8$}s:,O٧Q>!&(G¹o/5Ė>}1'Uۢcsy/xO Ή}Nwpڢ UOGN7+[k>")՜åid⌓ǫo^_M+QaBK. ۈ9WɚWm;[m%ïnp: FKO>Sl/r8[tr1\k[,mV.INV_q>#m|E]7CX[ Nw5f{'Ka$29J_!Cw=[2~siM\GՑ ,PI*#~6|[q["G%5ƛa m؏紊\3A# cNtUzgҥ#W 5/0H3@"ex+:gkJςc_hZw<mij7S1 I*FV$WMCdžƓ/ 5/y VIQ "Jcla)廊+WI^GLAA7)YYcޱ*%BFLu{&7L-`1FνZ\ğ3Yףu-&AI fb9$<>&?nѦb9Xt%Bg#$"G噾]S6ůav^n[%*lݡ?bWR Lrb08'v^eR?fNm^<ϓjI%п'o7>rxt)Ye 1`Lbxᶃ|1:&WCZs*)-}WcptjA/qX<9^/{(˛K᥽- p? -Jh8%Fs} }SPKK+{m)YcӛN0$Ò@j&OJ~0JC#.|B.rrV=yS+X|Prk?mfڔ/ǥzi@|ee"?1ppx =+쟂'WA{icmm>hB-Ҹm8?u+gRֶd`ʍvSZDžsZFm&Bywb~߲.Zm;|Ȅa;`s߯}QxNK`K8#q"O,whSʶЊYzz/.$ mҾ.R+Fg(<2g]$jŴ Rۍֱ`3z/xj+K^JV5G%QeϩA̾&H!_+7JI?y}+F! y%7N |g\P[ϐ;9AjrBHx7Kྜྷo٪X-;[v4l{<{QV3QU OZ@o%cuS^VeUt2^?UmD|67u-?ַ/ϱ"MfͧҟiFߥ{)_S6fy\_S~_mBLjBC A^M^@'c҇ff~ h:73?1E?ֽ*uuGF.-_}6HTƘPkn%ˈƢCv^FX?˸| a+=)IY n1 R\1QpP٥N95 X4'$DGyf JWehr5uuph6q|N2ITBA 7VX9cS yoTQF,s 䍧<:J~gВ?osyi'dUyavҦݗۑ@ cx ިkW2ܬAL> ]Tմ6#,K4p4X|*"l848cɅN}I-*UQ.]7*hl@ vi(w}jY-ݤ^gjޝ},'U7"+vk.O-!ӒW4$tEanC6d9V2>EqreKHJ]c)qGʸKl Xt9O5cv$O=jVVf5 fwaۑAu{`9l]쉡7um'#n?qVq́>E}i-M{}j4Ej}}.qzP;xܣx[ZĜqb 1B- S#n]t\RgM[,I\*y$RY[ +s֮xյfmR * I}5ľ!nW+y$W1|Ukž v'-6'sx5U 5T{hӺ(<}E?ߴͣB^/mJKsɨs+=iۗ.V af~"/Gv [ G_ٝ{|0(j'#?nWPx޿g[&sǝȪ In%lȯ 5?tlqucb>~x֦д F-*+./K\H:!Kx݀+cg$g!~ tWlg ?x?_V~eX訮OKw?=i'Fߏ_>z4,q -Iempr9x|3s'~cuX]I1t;#:Ǐ jj %łp[y=> 3ʮxrqտ&f.[\/qd=g^ q96kρ5E~[~~,?==&5g1l{wԯȋg|'m_߱=ͧ?ė=:B?1vcjciWkrwW?{;(´o𝇁|3c^-t:Tw''$$ɯ=?lyKOx}.k(R#$51[5,Rtt`FAuww }~6sF_5N-]2GV @5%U>FKc"?go-Mjo>&fvBiMX*$;Erǰ??ď-?j߈XK_h ܉RΈZ?l6Zwdqc. z+?M_6dQ_x7P[YZ$L B]![k+2ު~Z|VkO&RVmsJ/Kv[k.f %6}?tp<=}FiDMC8}'+Bյ^&!L Fû~;9W\xj]gm<{,g~Z B!›rKKp0@L^~=WSlw'@Xlb1/-A t|G𪑕'B׆|z~˿HSOS!Ѵ^5#3Z$@~}ه_ i/[ wT2aG p뒱n,45o\j_w?YR&קy2\PGI6~K}獅RqMv_Igÿ~1IkĖ}_Bq e= @ +rXѼmmh7回 NN趜uWe<1SgM Jះ? t ZK9u R[B舤EC'=Tdpcwg֩Pi)Ew?8ٟC|LKv6('6X_5dVz|[^XVnn\a9|QeBGmB^|hҭC&hFϳ}='lsOXB#:*] .K>ێ ڬ [q˙i.ܞ? c\'EmRόKk.q_%D`hEo%vm%zA]^V}ϝ_TL_MZ9IҴCwj>^+ @ݕAe,M?i_t?BfDh*9#p9Ց I {Þ/o~ iZ4ةiH;ظRA_J/&L|0/wZk-\X\# X!~T4c[WF+IA)?'`j?:N>\#ɾߊ_w=x?>!\:޳oa&1 YL']*?p] חXZZ,Z M`e$ָ`9y-g<1>+K N|EUG-{ >|{c 2}} \Oa>H|-;#Vس1W$>O?&7hq;Bk</4r_;ٳ¿ ;|sZjݙcH 61_,\9&ݡ}>J,VG_k:8)./ S=~n~>.ԴYE~lo(&2%'iw_Mt~.[\"V/w,yq#/ o~ GX}E#gOi`7%xW{|='5#smPqnMҘ'=oKSe$6快QLpnn*myZWٶGAiAk0ā#aUTp@+?n)o'74MW׮t-̖]7S!TNfḅ@>\/= ! :*ne_6 6.[ FpM}h\{a|mk߲s4i5ä˥_\ WI[JC4oGῆ?ݴW+mK|U5} x(ZM'[|:d[R:>0Hz,ɟZ6#&.~;Xd6C8 R\(ec,l G[MQ}}==<)ʱ 򼴴m?K=ƿ|m+_Ieucua.~nq8 xoٗÚ-x*FI&8O G~/}}5[03K*}1Ez'> 3|ksig#?(09F"n4]ϣ.|189տ)ŠFhJS+wH F=?ݯ  gxZףNWL?#C%(2|W شpn ھ,Z(H%\'=+> 6m(Ez_ta3FqT^'w'y3)TN/ˆb.]i J9g?k_MnWMOT]cJSk7 ['rne6T^wohڼ mwk2%Ca@5W[C|j7-ŨfXZ"$n7X|;dkeZ"*4UM&Zl?\?Y[M" 7sJ:5_T ivT/ u V@Ԥp%Q0Ny _N^ h֧ #1k)w_v| Mo!⩞ WRz ) j|"j֨/110HN7s_^%%GqV_o]WgEk`gܫh2oFy߶+o>ef)w [dl}Gs㫙,i#,V3:20 C Q%Է33eI$k4xfGmVxF]B;޿b?gwkC¹\]0iԻ (? S]EPuFɥVWn\%Ͼ?w/⧀&/4v+Iȡ>uzWnUqkiG^b#o[i/? ~? 5iFLJ`]O/K;3(UW__]BF5>}:'}M ~9]:W58Z.-aI#pUԎ _#R~4=ÙM S@?qƋTUhmM6; E[gx_ ~_Au{ㅏWԮ-*ihǵUAX$^:Blt(nYʨin@%!URݪ? to9q@V&C8#"Ln[cGVgc/Y[WiW [%r7/'ij:oyl.֢&DDQqƒeīhѸH??JwĀQ/c!EcwF/%?|itwDf Fk: ԕ54G1uj@OA]o%29OYz[:C]^9 vzxre?o__c<|peG3F0ps_\?>*mo١gj 95D1]dqքD3;TT^nRO sXٵ)?{`2㹛?q߿Sb=*IAԉ.K$,+3sW`/~&i0ޢsJm?k*MoL)!YS ++$ќ]TRf)Ss0u ??J6hd8FHs˷+UO,TѧMt~#e7֦G*Nqޤ]mT5B-<]2ɎX?*񧨆{z5.uXBm)JGT]˟/ ܏ƭYŒ9$|[FȵOaڔ[@1[̓;6BWr#'\AQigpTȮm{>ph5ŵm0즹|ogsu%#G 8~Um^XtkVn?Z~akOg`j[琑xcְ(k~[!stpbORKl QyfJ24{}h?.ng᥻l G{WǷZ^$ۂ+.to:i*ČҦoCM x1Wh3 m }Erx[D ʐ·H&W?#y&MK)+.nߛoʥgRkoɨx?V=Ѡ'~#?bzT6sHdc^k>k?d4-j}OZ^Y`Sxb ^.*O VPZqNM>ПDM&!S›I!J[*Mn`)>S2kf9g9g|\qO CrHyuhaໆHp*4}^k]VnnchTYOH Gx|IEhcEΙdkm*Cz{׵OLмeo=vVV.B"(? ?? |/uq;\ţV4_B*ʀX}__xawn PK^"^K?"Gxh3%FjS.FbO~ϪWp?Wx|[I|m^Gc1+~+pGyWi#X@'| 31<өqet튣O~'i/]ֶbEOr}կ. :xG?ƿbZP"Ecጮ2b;HX'eLxII0iZH~WC_S_>$|1}/k:bBLc'-㝒.wWa_ՏYd|?+ @}I [;sF[t )*%`h?f)?-yYwF8k/m]c,F 3^35mGe %kDUrr8ks Ta~ ?oڿ6^+ vIe `X`J*H?}{}3R֭dƳwSxẑGSP0 xcVrۧ뿑kPJNkw-B֟]= Q֒=RqO:z#enkox#vgw xGE=^KҮ#C.'b[̣rrQZ5yeȶ GF6kF3ۖVw}e8;[ZU'ݺUOeUUwП,b;V_l$i84Q? xg6%+8X*e3tM[F?R>*mJWşrFx픐F?'o^܏θ>5C|Y⿴+/_ZƯ { 8:s/ucϝd(3V6=5\ /_\{,kSW;̼BjX_-n3\:n$qFOz [K}뷐X@ـkQ~ h~*j-YG}/g%ͨvqo62c_2~KWǚ΋m>hZvM*K׹7<-3y4 21|F38T9Mk-e۪yvOS˧EtdWi4Cµ*_Wׇmȷҵ}FiQ8uX6KmenC1kOӿh x἗#}AdW- ̒G}X;W韋|@/N}F3 ݍ\\E *}"\7_lc/ Zneg*[O_ocpnzZ_{IЩ,F Ӯӳ+)%+"VS wJ]ɖF fe?L7S<+h^58nc][qBᆕkx :"Ā ZJ0[F&#2w~o=|SUnҭ1im\tܤ𾢵5~|wiAOi# 689Y0xIs\\(#3{ ]A[U.r Ĉk +8뢼{4<*i]nb_߃5JO,&aoTu~xO? _9k|Em_\՛l i1 XWjO PZo^cl\/$o٣ͪx^i̢|>n~[##T|8^}+Ĭ]+Hf"vW>MBWmTFX? ;}f^i)cO>ߴ%1>ữ7&mr-]|X(2$jO;*m!^emyքoEbNNȖarxE!(W~ 1/< I>mhʮ_z,8b-ܚܤՍ$:O _CW?%Xv];?FkI/RJpD>1ҿT+O ,g%5{}_Mu5lirH-82 ܐ?I"l⸲uIu# i4wי܌f]ã/|ٿ~]`ZO#̰V~W[KlKJ$량N?g}cSFBIۧQ-wQ$ lwdk3/bwGvƺ橴{}y(Juo{s>q w-Q/Ϧ; L eR;H:W#k}jqckJĶ֭:[DFv .32b'm#,>tkSIf֗G`B~~_A׾ 6"l]e88>~Wd^uru ;V+gTaXjŚ@`m8CЮ%xF{̿U jJ7 ;?_Qxzp.Au+C̿M7dc8O±oj;Vc@1z9,8vAׁt4q4½Z $3FM΃3\pTp+:Y,@WikE&V36 2w __tI4k' 9^Iv^6 [*v =u dg+%rs"h$đ[ϤbOόzkcyCVJd|Pt=A=ZEnsIᇈ^w%_jx4{DΣw81ZN<2GF`>@R>Q uA *:ItdF3+Y%':wFÞ8??4c֬ZlV8 #B +H@P}sr-f -ϧf`=L%ao)9=CCi1JO,]^;zU]&-2sC"20va=:-dQR?@ "}@pZle=x搉]u82)o 隒;Qh{Paǘq{XP W*:|xO0&n9#ӊҵ!ԩ$zi&Ll"PHnKB!~[-)/J%Je~[P6cs֥ &MFJA_νZ|pbK,k >64F->3ς h4$F(ڲ53 $2} …G} Z28+>+_K_LT .7ӜU©"߃Z)r.%⸹)P}:8WU[Hm֔fX3U,@p#(dڡ/{8gMƺ5D|M#Ņ#XFWw ɐ2OZ-ഴӌvm!rk_ب(Ӆ6:ow8&?r5i pxyg})s_ m6᛫¾c.Xx::VHlnrq:u_:7m8`T`T4Ÿ6gNO_ߴg«߆>,4Z$LXpf/bIR7"]Og⏏|:OzlfEw 1 9Q#j fk,V ]SMiUS͍YN%a9[۴Y+I޿P,=?Dl"CHSN.(e5kh]zj;0=YYj|}B5ρ}!_^91}7(/)kO<F&,..u3-MiX|ǿ1%XŻ)ԞC20s־?WPP&^쭲RM*tG Qz7/ǗD m%8Dwn@-!К+H;LxWohͣ}G­BR+TڅDS68<]tVq(V?A!7|QPe7728, F+x%R} @fk/ S<}iڎ r<LTGeu9ϯW/t1÷{?;N_ 9E됴VVڬGpvOڲŶגW=v%O^g?|a+YO5O%G9~?~Z]wpxp0X[7v7\6 u<5hIF|A]u#[]ŘA=Wu<;6TKxѡ|w7ۡK_\TKAvd||qx_߁<=}3Z|ZmiN .R=j&/,tyxdX,zdz_P|E]6;bE-#+id8j4Sev=>?7]_ğ |9w0jBit7Ҭ?)234ұ% `t~%%L d{Wx pu?x{İ?Y9# ,JK`FO[2mWHya*v5-$(Շ/(Ǐ)OMo?-$fخn#A{"m y7:MSS A K{9'R;GtXmtK7jEpA¨Iy8x\DHw|m['Wގ;-w?./ਟu?fxXxo_<<\Â|ݸEz o;s x5_ZW_'υ>4$*f=Slo-K, &?!~!o {~tRjC 8ttdua+)J2JxL*1W6kkuF'_ }gmsH+0@0'nߋNxMu'(F:v>:Ms hdcU+k sa",635+-G<4ɹA?X=+$a_\hп4Dh=~١MD7:fmnŠ٘{ _w I sNJm\oDF*㽪|Gp_xI_>য়KPxEγ웜C I)@ q]  {Ro>0_Y\$kHb0I1_%izEafm"fp ߵ|z5_k {$2lv_:Iҕ4~b&Ci_~Cf+fF{4$6QK$ؔܓ ZV >cs,F&ʬcxW̏!**2jn۟Z_%IcCӴ_{{ tˢlQBH7_oUe \\Ow]dҠ\:@UdUV8I=bQk}ښ~z7jwz't l!ʲ< $W?:g9;B.rho6ޖ3 lύnmo[/ \\^NYW%ؒKI$76DѮ^C? |mНFA'h9烓Ҿ(A~Ciaomæxtbm_w67ɿ9(s%>tsg 7Qq>+\v/_JUoe ingج =UgӴ3N&EKT?ཟox'wí:՝ԺΓ̓ƂIe"FT7j\o,Bk t<=e%VyE -ͰpQY(XJuu[ϘEN[#_k7u_A009Z?hך][RK#(1v$d/gÿMHč| H@9jkmiz}__\E!]Q`vƽ:ʰJЋ>vYQՔ]/X[Ķ솊U +T7}JEՆKQڽy>[3DX,NIoRxAЬ:7Nư\13֧ϊ涱>բ4<9&]rHdu_86"Z4}Cl ;U揢4v%'q_;|xڗm>)&seblF|yZF{VFq𗊿D>Qf{ٌC^9v6~fVXc|@+7qx:.i.~X\MjzƟv76e 0s95)f2~-xBygmw=7:y$V;EhVFTqf٥|{KaRëSGUW7uwú :1Z.0 ̸ݍze~ӗ$} $7=uZ| ӡp[YħyP~@=5hn| @~_8ݱǭwฃQV~?88*8ݳ|EC▥⯋6.Reh.ݘqbk~|M hp3c1#v^!72s:ȓ8@o>!Ich`WnxU{p^Xe{+BɌU(U&LFFKNhO|[!HGq7>51>wkOzG4Hea^Ϥo5O}F+񯅠[.k-}R@>?Ҿyh~eyNwT@K joXx@-E\y` +7r+վ7Qw4&ڶp]W댟U|zƇ(.S7IۇּPb9^FT(6Yc;2FQʆZBxw7{}]/M)Q5m5yc`O*{W㍠S$a{xJ1j2jPJևg7Β,{[8htPA5I:>=eM薍{ƇKi^~c^Pc+^T í2.-mo19,zVr?MG4RF2sֽKs.-1_;|LXf~nW2-9s_KRp6O|9hNޛ#ҡ *T_6@!@ hZ"_$=qҽjJ&GQ? DbqRyU8-OڷuFKƎX͠(M~$ *~>7g__ k'^+%-A<~{2QY[2DG'qS&FMz7X\mzWhsƪm|ͥ~#Xk~̎&Ct o2MqA~ֿ #u V#w*~m&>R|60bF+>M?kCVn9ܠZIBs\sD>k91\+| T  $ԌC8ɧ׍޴Q YQc @¥fV7Zk[岧}| R,Y\c !D"1 מEBtOvYcegZ%r k \yn X?_€5aYI˜?/M}Ozmz奄^!_n?Z/cS$Ml<{U+<(-]5ֵܨTZ=i9泻}ج9vVz+!@s^.YX:W/Xc/xn&mݎf sU_F2'#q} +:޸txB/[')no>7NyTOrNVbx }<4Y .Dz6# @2.?*Q>nnG?)`ʼn1GǶExtFd=9Z0xN# ĖhwJ޲(<`WVH-γc\ ڼ_iw·,IsƳ>s*O^ck-u V74Ys(y2EqWþ^hx.ϋ:s<↸4@}B|k:65]ю֗ŸfxQ ҇&*#][V$ 1_~ϟFڮÿj./?ZOZ#CY)okk$h=2p_~*k:4(C>Z5麂Ѷk4H#RgC$n:5~|sG4 ;_ʀ|: <= ~~ᔺpmMdGe81⩵wD!r?`w0:J&W4xa{ptU3xÖ7XGӼ2ƞ+O+|UWN"[jzX! K)J ύ|Fquu7nkG=-֮kgmIJ\PX~2_RxW~yr<Pӏ9_>2Zj's&څީ~"tRO|ǿWOIPK8UVu}??x; [;^x f3}'lN66 1Wm/ 7-n~(|Z(OH_2I-=+O&]|F_ͫÕ!Y`&MƤF8yȢ B͏XUp垫dN14iu*p ۿu|L״ 5$S[ |WZxrLe?^daIͬb2(a$PN֟/&C_xrT6au+.18_# eO3:n^{_> K2|GXnm<iRO 6Vy3]ʼ`xwsDѵ YM I,^M@>Ge rq&qf (uG@EuF#8>KZ7[Rys(M0`a8' Qjm7w}#]}u::uSQkk5g{/;E?] ?ڵ 툲HXp̱ BO*E~~P@ǟ ! Ư ]]jLqq NT_/GoxTn4o,euwv o͖bNNM|gbjҡM[Vz\#_/k+k||?n蚍̀-#Γ8- [1eW!"A79$/ /q4Bw3G:}fw‘zL7aE>Wջ/csl'j[sv/_X6|eۺ‘^ m'O#a쑰+$ѴwgOկqmSE{8\4M)3|)/_ntRѼ-J%#/o0;[BW]T+ ~Meq]ӺӖYF szY'~a-;:lP2wsxV$w>l6瓏q_%xK|Ak=/^Ivh%] ۸j/?H>!񦅫ZMI+9[ώ<4la觓hJbw}z>;˰!Jdiu~=|O_fvMcŲAw>?ԼEx7NK\]sl΁qz^UBtm[ݻ3H6^waML;9I%?gVv _{~տmgOைWŖJ xlWta'0L]{MCg_MwK j q_#ŞΫM$sIi0# A6~~jߊwg j+^[1؄5$",jt'sxƬF6܏V݌K>r^H=F^U$5 9|G<3č<;$Im\t;DG5^+*b`.9a#o;TgtiaJufY6[mR c TӬ˛·?}Iީm7o~IӌfohVlc_ÇG8 Ef`U`#:iFq^ku![m:>ۭn6s&b{ z@CQ,< \~!76P4oڱ|̂/?(M]t{#^<~R?3x"In^Ii~ȿG~)QEѴ &pXrG^+'O|9׵-s6uM>#X;c'ھO|޻3x.c}::mZI# f1cbq_~We߂ZN'%׮Mc8r7Y&E(s©zj7n{-RFџCjX'-% :53„ _C~?Oj i7H3r[<8wЯ,şR+ WId@NH+*p_??Y6_,U{ot)$Nwaaɴ 'ƾ=l,ӏ,bڷK=_O l>jO{,L!Fg8N03xvQ}#[J:e(+6$#+ߚ>~5|Zƍ7 ZWZƣ,C\K;X{ط'GߌZ.g RmeRɸg^nYuY+[7G.372j9]z3sxo~ېq[iWh$Py<ʿH+K KVRLb؋4zkt_6S>?̫R5 ŸSKFeݝ73*o]'wVZdEU}E|Ծ6bK >~ig]}{#^t_5-ҮDR<ynw<[B\9M+}Mߒ>JgcK漸eӥSmM刦\<-k*ҵ`i$<ԯjo6톾 _b^6*5hz,$1܊=Ԫ ~?n0xr{O _i8&m_oࠂ2H+ZLmy+jtu(hE+t  A%mb>Yx9T-esr$aqʼW| qPshyq^o WY X%"ҳx^[HO#O&ɊZ8L>>\_7lyY#f>hz kkmvWxĞtv \67nsUEZ?z:2 68'gw_.pgi?{} NG|HlХ/"Oݰ/JQs Ó[VP90y*d/ xy]H~#ҧM%B]OxoSp -\"=~nM2x#d!־:>K e3X(}:%ՙ.P$F8^1~١ݽ'C"=E|&q24дev1?Û?hiwa)$;X+y~#D#D/\H㌜w?BĩjS5cO7 n$/aRv⠶?[6SM0zeZ?ڻI{{V^W|#xTkxrZ]&dOC_sPDxؙIُ%Ƌy5+0nq"}c ZӦP 8>WI[cy.zv^^~6^LҒ-*&*Dw9J-?jgq1EwN{3ֲt|k"dI݊w$WYߤVӛ򇑴F"[{mR飙XOi˙c]lWi* :t-⾑8`KAN@M<{t2JK -_rxF]Ő.q}+Ч ﭏƂGuQ|qw@$a''^BŔּ\b0݀:ӱ9zt ň++nvu6z'>^Dqe9;w?_ǿ׆;(EzDg富' \qH6ٯȰVӮz*GV*M$[r.#{X:?;Zc;~ppq>InxqW4VjfbI}ix2, h06TՋ``KPO#u,Ƞ@cF.2æzqYvSj3J|xaZubHʬs@s)?CM}%wӺLm)'‘r?P&?vm:h=ie+PgɌbJD* ,0@ǽOX/ t|L eTqMU|UtqUGy~1[mzU}D0K_hG>:3o,K|-*׊&,:+WLU|P}qKs!vnrjKqTy+rrviC,NO6Z]n ^[yo?c*1OAQ>׬X7A4=BP3 "LR*mE[ynn#7$IrF0+?f1>nMR"g*c$+ M=t9_\zZ/lnE<]!Wh{ersZ7V0\>Q#יh3,JIX7u:v2Lz-Rint3#c[.n`t?EkIl,65IVxodR{ S\ǎH~,j_4޷Syo \yyIr{s\TR'֦rOq"}>WF3=G늆KQSn-2_A: tcw>I 7F&g&9Eb?韱kt+=wZg#XFGPzT|%:iєlW--~4j(`꬀01u=:4 8iuɞs= |-qt/?rpw<S^=R_iqG'Aҿ>Xx~_o52K6f`2#cuӼRk"BWV  ~c_iX'ŨY[GGгWO44Omf !4.@ { *j63դڳk~'YH/<]ezݤs"1Z9pHJ)^cqaemZG!{gcD}8 :u?Nm;YcY)?5?x7śߋB|1[`q*iKY7TC;Zr{N)kzk߅NX| Ck%ƒ]z=?_S/[ tO*o>{Mo? /o#,J] E|Mwv<~~8hQ7b9%VbG!dڙR7dw A \|r|TMu>"x`&5MM#wc_߆\>"y#g~hѫ_<: un"ޕKkk(uR@4b w"X?yyfU峽/yF5!ougot?b xg[ͯD> 7S+|%5?OGZ~ Ӵ;I`s{q!! !˻a8UU$z]~H_e?ς=)|Ow|`Ui1nJ+ΔR]m-=& 1J5nWmz6~~mV;^0t8xfG\A V`^k E5K^I(>MG?j/|A-|OU7#^#YB$GL] eqMT= .G$@R6o Яmdyd1z;8 z^|O)qe@8VSA"|rOط/ P5%F>Pb"O%~Tag^,R՛/˗D4}%nEWĶIw<%ŝ,% =kt l@Ku_67i!Ou 6oȃM}HPKKC+-ۓ&{^fwK3?z//:n|ad6^6ykNC\Ac>zyV7$?B|crFM`$|d${dr(,{ .uۏ(#{o51xzQkHl-Igg֞ |O5M?]Va#QUci0˒#ICXbk3RM6{'整[5qU1ockm徯k.}Wc #:?|*+A=7iDBܑ z,1$=?߅ko޵B=N]A"%_i]YQO[K~bkۅ[|<@|g m#Qu9cK -`8.UPtQ_e?=>'ZG7>/-ZX4f#r: %A AUgM@h_?_ _Ft_ \W^kX1 aē!@xDbkOn`HvIԴߓƳAg|?'Waxnu -oaX2Jr3t>b)o -.m5h7OKuilʰP@ {8ԫV}6KIz؉aʕ'6[~54{M?֖K6"DDP(?os}xBk>ּG,EFyR 1VPm Q=*_q5Z{ :mmXtY~nl,Xý_60PKO[]7a֋|EezC; D$4`o64^}㟎j*񇃵]VeMdOb@T}Qª8S.Z/0TFv<8m\BfO)-C=>]>ZZU$+NǽdYlӕj/3_t]}OxwJ#}Ͽ_ʿZ]?iſVicoiJGkͯyҏ#tO[ \kN?WڴuiYDII5pԿO؏ #Y%h$!g HG|}#9R~~WFwEK?rw_i7jFOik5WeMO'(@a̖濤ڨԠ&iob~\G)̚}JqWڿ|z :*YZj'SEn~ak [/)|@W[ҿf wT;-kW7oo,Ya%tm:>?a,E8CIԝko_L-:e>W9ki?#im[$z\ۺ"a*}?g?K»/|֣<=}$ x卶rE*)  < }'S]8ɧGoazd ğ dg;jJPS2j4lw ƃo06ae^N_XIioVP\ߵmG_>kzIlK9 p;IS+a@=o7޳?Qvo6FV +?'?mZ[R^>` q_|DQo #:,.=tooyŒWI_\kHҵ[ærm\Ddm9C`q 1K5sap>DzkvS~ϾiYdoRt1Lo8ڜ>_ ZkA6b*Fn4|O<>MX?ď/cBleRPIR+2JNZVK(k݃,*:zƵJC[}d*4e%-%<<] E5Q1Jٻ//oL~>C.d=B @rÜھqLGƊ xGmqJƝQh|n+]FctgϭP7QX%cjJ*$OeJ8ZTȌc nRColcdߓ;䞥ZK{Y, yo?{sx[MhnNr[UqCӿZpb1ڪ*2B{czp՟|l}{ NIؘvgxi᫨2E<\,y¾^aTÁU? <8㯋" `XFɺ5)yx75XNdX_ y"3m 1W}⏐+|$6QUf^}3yXfO!UHzT!1&yj͗滟t?/Z\%r0p=#>r'wpsߧx柢<= O_νOjsE0WcyTV][e ݧAO#-b,@M~9XFI^\IO^J|7  ET9 \UT`I?Z4"Yl{YܲFbZin-̻ qiԟmP98!XɬKc$,S'i[(n fkfw\HTw5z35VFx9Kq@sXKFi- ȈR2scFJ,A׭Iazp:p+G17 L>J3ǞpZyR#>F6k[VHT2JWS{fԮdcuλyQsޟ-<>x͉1`fH ڽ1IjTRUUh|g s0)oۊtG6g3|#SA Ø-eFǡFk -˜ɸ _`J|ʕe ;>h;4{kxcM4q X>&`MB7,FA}2HɽƼ7gwz$Os09U"'6}cҼ>R{n~@N|i/QB[fԜzS.;m=KB2#F8'zOVvl|R>XhyyQ/mXnV  UtݞL>kb'kMcb41dz{WxugY`;c&^V<?Qj6o% "QD2j=SL#VANAYN4]-rOD'JKԼ/s嗜<;ڽu)NI_ǖ%9%D?*wwf= +aLJ_[ZSm${/h'? $zC\:,r: V+K;ּ3 kNЮ`Ȫ3zjJ4 %3Ny5/cqM+V[VvQ)y# k걹= T~_{ j|y/\ |k{#B|U0=~OZzG(d wÏT ~')%߃,hὄH!*9g w9n;"8vm. GJ>|czȿ_xb<62T՟en"K)V /~)~1Yxzo4{ Uc] m[M+`uJyOum'H/[H,ITTQbdse}M%j=խK,71:xF2 A^<&?gSύ%Ƌۙq%wcl2Ilav :WtrsovVG MF ޻O~ ~џJd[;KGX%89 aRTDUT`(yw7=cY)|X!eM DyIYTp 3x7ڋ³꺿^Y35rfle _gi6Y[%`43W5hj<)C٫$z O$Gӽ|Y-O"6sFӟٚn>W{?d_xS㦭o jZS<&"&1& _mEV~/ť^Givxq8YU$2 x\uKI%|lWL,_OCc͉k>kI?&. nɝI (t?;$ʟ$?^K|cbf,V+K呺R1cq*Gt_v{V hךzwG'᥽Gp5ԭUn#ka>}+oË13 h:ƿh~#tL-$ńR4A&1Ϥ*PzX pJsy%sc쬭ʚ~m~mvH~~?幯-5tߌV,:.otfu"S6OhW;NbHuĿb^7^#C+m\t?ގ/:a\:|jEz7l5.ؕGu^VRW^_|`;Nj[~6C-wRn|Y)Q|i@ dF*GCZ.?"K=Jh摇M_jTЕ-wKqBҴjt巧*?R7s/?C2JfI)j¤Ww;c?Ji9`Ѽ:x ɯsvmy$6%ʗ%0qYwwkޛ6!ӕ[MF~=UjipgAC5S?&.|Gn r, #Dbd7#__:d?G'o}s x,rih2qI}ϽMHb|0ܶ7ԯžNוܨ$@Emfey٭Ofz53 5)^>ɿY>;Z>?_ 쮬ݠԮ=l5v}, i`k sQ/u )hٯt;3"?.98~֟L>?jUF"hZS> v(fh~OO_{BM,5iO(aK0UP ue3f?_ƇU_jS!G}@<|vK'úoÍFm2}-lAbżn1S|(w6^-u;\֓ѳr_[[ܕ.sn2as!`wJ8o}_C1Χ.6M]k./J;V]WF1eW+^F2>~_ҿ +p9x,S%`+p95Ο<ˤ]Sǡ_ةjߊY~ΟN47V?O>>)iW)iMwz4-t!b$q"*\o7 xxj=v ^F?xSMib'S#/J7{8?5?ҵ;[ԧ- U)X*aq_kt:־$h9r*k[ Ox}@KHy1%oVw,ݫl'*xu67xJg5+Km 1 C%m08$b}2|jxgƫfjv[Ɏ\t)Xy oG *RMyb{eN%o筽BnM30K:zFA8wO$D!mcI5K ^k7>!hzos4ib2[9 A^L~ W&9 ;&T!ffVX'5KQ_o3L-q4>70q]Jnkw_aS_v6*~x MK=K ,.^Jc#p!$I]<-֣oO뮑ۙ4<ݬ#BF8Uq1W=8ꤿ= $j {(6,4PɓIUi_Uj/-x8K!I#֞1^{_meЕLJVQ3iȁ|6zW5=hX,k$0x}+^J^] ,R79p8-[$2̈ٿl_ t+?lrY㍶gI#*OJJԴnD&4$޹ۯkoV oSPuQaq|@cnq/"Xd%8:zMKujXCӼ5ƅrgqP^/~;xp߈W@!APu!ZUD0  穯#o0 rz)Y&gsɦgu-;|4]{>2_awAI+P=5?qhvHq^HGuayɌTO''|ozuN{P!V%!W9ָe^\I/ Ww8X'&x7Z47I"kawsizO[l]@x?y)d$?y?^_xwQx7풾7HIp-6lx&@澊mɛaF׉Ƒi#<ϧ&HU>ƾ dxxzZх-ĤckЬ,uQܩH:-Va#`]V毌WX(G#(=},<_5z;O"]n2ӱ)v5كQq.榝 bJJfF<4;J+COZ~YR{ס u_9᮪ J(UB͇?Ŏ}8}W#?޷ז%<1Ir8)ώ࿃U?-4: *ʬ$zdk{ƶ!>[ UN-d%1 ccLkyfB]:sZHy jaNx3Hϔ8$TGxFgn& v>`|K}YbrOQZxWu;.,bcZMf>.hRqeF=8,3UytXےv赥EzwFn [vwR31&ǭ$jcl^yЇہgS9*2=hy՘GXtP 7~톀#ќzsUQ灞 :VwFÓԶv2|IT5oߋE 6cD2\sTNEcҬK(qI Tp0.sU N+@r$9^4િ`j_3UFGXFDT#_~*d;y[' V V翎[fh#B-eߎ3Ur w"|F9ۍ]!nȭ[=In}@J^A/ewL洼#2̒ȝj[fUq:>޻Jddb%Hꥮ|CaM$R(<9;総 O?{VWku}r$uް~/;Tu"G)'x ]Ntqytj+>>W #/_<_F-"";I'bevdLמh|. SLUpqWL)t.𒦏pfnȤnw Þ'Jc&qlK`ߵϊ McDUFRNȑq*7=2s 8Y*W$qz%Z?y랾+Fivw #$bHە]"W F61ˣ6Tm/W|ES2A.AZqzw&f-H&#`^cEq[Э*RceM՘^m}K3m|}~Ҽk%)"+mqW*Ԣ WN$vR*34_jkPcZ'd&]NE?į_6Զ s'Q_?IloOwX˲e}ň'vTb7ijYd pBw&Ň7Q؉~O=F>ˏ^Ldj+#V&ܨW K~lw+rys0G|Aun-n knjV>>D| /`VHg`8">Ěw,cmR9?;T=Eg?jRowZŽ_HЭNsZ))H|o<2K}%ʚ [ޡ$DI]SjZ2Dul#"+cDiq≧'޾yg2sN׻za[/Z8꿭Ո/V?[[^2%4hޥ=xV:/KƓhDmi?l͞ Y&>d8 & #f*~P4a,IY8^Ez:o?kg;H\޸F2S~]N?-Ϡ?ࣶ6k6:- !3`]:176`9iO?o$F'K"HՄ)ؒ;EǽTqƴ+rc_1v,'ҽk<]3ٲBaS裏J<ES>k, ٕ|U?Vhu("Ij¯ڏtƾm5(]@EtN8E 쎧gH,oU9։~*6762p&s^Q&Mtn26&7F %y%-;Pe>]-%`7ࣿ4}SP#R^/~~¬ t27|v/vҋ`9y`n> O4w0NL,[ :{۩+5dx[Pwjʞ4sS? ]A_C, ::m%Y)*@*8=+ XAM K] ;QVWW)!VAq lX` bnt 첤Q}GߏZvtx>(&ac{^K8F'~/ѡvkMƇHp 蚯?Sh?Y~=]?I/d{t%H#Y$p6ƽ\xDŽ;rn3kl4/m@E` mȯgUWȼ#җ4M3xCJVbQDw6ϔ ˸*y<BCՄV~ h'cZNq|3? ^ܟ7[SR8֙$%e`^zq^U&SzbڔϪq:l~ozuK9V;u8 aꦾ<_/ߌi~(=҅ +Q#15U8&<)k# Wk&o>ۯasF?J3L.YKC8g>jp}F]v3@In |mom|}>[Fy~mqis"R0UOjP1 r>WIMcT̞/\ez _-K˫ƽ IE%Fok?7emR 8^Q\k?>#x?..I9人hDB"""XFI<֟{[_.`(P9I6b. A\Wn?1ٴU*l9f᠓*}Hjz>9k6hfrnYHr?߅V@N6 <._F╖9bsӕ=ymMnm|'qzAtU f=~fkhM}jo7Gھiu|f38RG;]i>:&lzՠCm⶷f^;^8 Y~,x{ķ-yE^2˶T{rG$rK+3:ݵbrSt Hg 3Ƨ[1笀參{Ww6|HœqfTjsR~{L_({9M_q-? )@N Uƚ"\Uj%xK+8&u;F$8c 1Pi?4Ց.ќ$FDxt:6qO,Ǖ?¸.7~gƓ(V"u]c5,$*@u\u I)yb`c>i5êȷ$6,1;W蝧)|kq,k`xeOl6~j3u,rNxJ\cQn<'֧i/C@w4;Ku\wq2 H$iAfo.3~͖]xșt@{|៏ Ma®r #޿+?ࣟKQ6߄z$ Q+=}:=TYF1rϿssa*鮟-E;𶣠|@9_bCin5e[HpFHq_ImZ^XTb֡ߥ˭\&Hnߜ,d($ k?cؓğm`-4ƑwM(n Œa6]Mל|53IЦg)Xow}CYĐŨ.Oq$QM V'bs_]ȿ|CEmnv 7ZLj`F闷K;v`  9+q95;+tM T,G~ᢇl^R!o{Lt8um~B{o.?_4KOj,>*JEo+ެJngff'o~*tgċ [{i:dgKzqV(3˨$$G`N{_Q|W~T!YVDG9c`WʚpR~k^8ĞŬD5w,rGB+gGL=o~7 ,ܻ`\Ewo'$_o^.1I9R]5Q/å%)kGdBŬ?4"2k~[1%$7'mY\|1XN S^G3.v PѴ ̢;ȓ|ۛ$KE5$Ha\qjj'i-Ѯ=LHJ2O~b|Qx5$k7oPŊm^u H|eO.Ѭ#N7XGuq7ߌA! W1h6Ksz&OYS?$}86^)U[Ujr[]8BVV?੟hO.'GVO'Zͤ+I0bpXdj?=xO‹=>Uh[$xKld]X9´4@D=f8ؒkI֣: 7qzoXn6U-4ՕESxiG.TJqw~oVzauO>^MPrE,߆O`t{ duf&RO޺{-^a4l`e:u>E ZͼKb:5k^' Ѣx姆tXgdېs5ֆ˪@fEt|JٵxڪC1\lGrHHӃʿ!s ʥ} ը_1q{ђy8+uGmgVX7@sҺ;:}'42d)8R]| 7RIfP/@=0֩F/Mҭ{mlGZ _LJZɈXV 9.jZ䱩JJt?PύtR8tۛ-I#yǏ?hxᾡk}p+?jnjt>iEԊw. *^_@x S@Jk[ N0y_TQϛܶ [SϏK/U{iW,5|+2LW#߽}>;*VG`ό𿀟|BW3r&ӕ&yyiIxw_Q[ׁALg%_}]xlᴿ-Ker+ѴudVH<סHQ;Y3hS`Y˔Ϳp ߋ%eeFovkw(T__]_#26 E2H??{٪WGZsd?:ᣐ99R"Qg_/K9+|`_|)i"j WՊu~~2}[34%fBR?kDlIaҫjO@Uݓ}% sHvIpd}f`K+'fսqLD #mR% xOz-v6? .|;mݷT,7b`$RX>'erINgkh;nTvzݱ)>{D9R9ɥl/@t"& (WI?JLC=h:҉le 4UernAjޛxIf9.yIGeɨ#KPӰGA/t}uf2{q9j," !#\9<jt5: L}J$b9O2}j3ւZū?Qj1˵5b1)LZDUcnb 2eAMvޏTޖWebu>ye~;xF7‰S5Ɛ-2~ׅh :^4|LO=Z@]̌&@@%$f(|JYa=pk<}"Mޗ6+&2תL2#ڑqk{lc<+տfWgpc;Bռpqp[_q'V? E \zpwd#Nq}9C@Oo}g'M<4O夑 gU:rVngzuًRҮ[oP zvھiU/➝ VpYef=Wn~f~ؿ oNj.ZO4,\o>%d]Z !\t{hQzr_&b-Jꍍ1j/:?up~Ӛ/o'yfE(r2p}^s_󔆸$?)ɹn8L5/!ҧt:]_\m`pX J~aK}iݳ yF>g<^:c "U ?'j:v632!__JH]m~kU-Ƿ)JN/XyL\4j+ӟ_S'WGϱ5q1D,#>d? o.$$Ȼ`,r?&|3quZ<̾ZDQIJI=9F,>jyiyg= }#:moUݗ~ug?2k+ n?.?}K.@#YNz~ck{GcuhleWty#^⻯:4SjE[ƲC?:Iк iw!bdI^T줜]U#݄=`'Otރ%>zt4p@wv?xRC 1#hX6 SֿBRx^jI{_ÍNu K+p@<ȯdԴ]Laq+O |BhOת攱Xx9:p} UʏVIǀ~ Cy&eeG8|A4d 5PF6g2M[ӻkǨGc- d0?JjI(ZpL?-+M_>-6"e|^gm>o ֏jG3qS޼O~4ufXcs?zύ-1%閪 w QKZNY<]KqV=^ ެw#qzW?G|!8D'ּdXIaw#e,HJ_%׈7P9,Kg' FQi:iguɝGcNqҽ)ܤ$2y28µeso_zomѵxf9=g:.Ӕ\,G|-7ט@g6=:W> 3@hzd>l7?O`fi Ȥ_b~ݹ\*SGx_m|0Y+*$c__AޫKi <!y ~?pNtϰbpw]'v6Odm4 -^5wхk#Ўkt}⏊ tٍSa9?iGKcxi'@i3ɉoB}J|m;ǚrk_G$`+|sR{/~-N)n=~IJz_Wpi-te|J_xoq⟋V3ZJUWt=E|39xn|k% GMm$s\K{Zbb?gR\|cy$&k2*YG/Ie%RI]Oܾ.Yl|:eةnsG7I|U&ܹϙבT?&{$:SM}kCmit|Y:zcxj?v> :6u)/uɮ 2:`j M [[2˨̄Fff@ w+Py=kozd.$qEF_/<)'bPZT`rx_ Yz~yʃ5E7jW+q"$.-WcVa=S MSr^d Aa\oQx~-N6.K+ '?U8a^Td2lv3l$Y qZ~ 'k'+VtHU=VL>tI[vO1F,lWaityΕs\-QM'kY`\Cň {q]_ u7خH\O=x_8 Ԥƶ㸂v[~}EuXL@gn z5-+ZЭɺWn;qzͺ1F˝ֶ`X-Y<>#%hӏ,%ס9.r$fEl5pmG>蛨$n+ߍ?VԬ|`[ *Ƥ'cʓ_$V}X>_$Lᯀ.uKR~:<35j7rvA5Sm路9^Pr=3\-ߥ^+OM;hHy<+~)"ŵDyQ+]T#G; M?3DW;ղ̸R7|3DuH/eWgRFF߿^ 3K+d^cY lg=kjA(yXe')#~ xx}G!dy__Oj"Ӑ6s_V Qtc(L?W}Z&/-K7SXU#J17ʚgq P-3-87֮ DaOH; :0gkR{o'm=y}B-ML}Z칝uRhpLg+Bօ|FOgZZt{A/ ^=iIxKȺҴrJq95[u΄ |qs6hպbBskA){fhX#ά_]ޢ+H: R)8s,*<ÁH9!#mO|ı]f=kc>$GbNI2MV(}V4# iGuOE6I#`i_}xK^Ҵ&+"~f|x`rym,Gi$:W7NC_Itqw޿]t0ma5 Q"mTf4AS\W~>6o_~1³+dX5 e]}l6c!GOZ`LΪy~K9SjcgUX PՆM3`֪FZD!+4wmoiXv9x=j(PdsYzY6dAQ4gh"lČH!~>Q%?GZ{oxVNVI/Kx8ǥ9}<9?ujHS׭~*3HGNvEKxZݤLo'[7yײcu}_8=O_>ElvZE]= Edn. !ʶnY%!" OCT?#P1ﴨPeL6$j֟$8 =zW4fh˕|K2ۍ_MB++/T݃u[q3pU^W%r<ޕHܪU _]HF,v+)BOOyj,mPAo>TR-Pm,NsTu6dJOvhGKGPB:֞vul`1]dQ%?)1R=}oPxc>&v`*zvNV[7`Fz_Zn`I}0:.S𭆩wP9X$WF|]zW-޹sFzm52?~,%B[ ckrknCjG*yX<%.[(&oP:z[+X/xRؾKĂQPZ;?f /h+ty1ӊ~x3[6.=>377ecXzxլ|mYkX_G?Ua'>-InN&88=Z?ͬ||7'јX0;/zu]26$V /`PW0%x쓮ֶ&N3H 3ׯ~߲%h-}Rea.Ԝq@\YeMB >~˟uՍ3Jۑr=?ڼ )1E߮iR+/vXϐf/?JgME0GAMyX\MZIW)7=v?zlE\/(:»M.3p?l/hmWM|s,; 8'Ni5%WbWXHe u9?jI-ww.$_O N q2$'z[>~ O\}p~Mn0zu^3+G"Y&W&;GG5-oْ[Մx~5> ҥjۥ ["g8>\X^( sO{fYmW;=:0ө|*y&TcOk|#ks'9g޵g'-<@E 2ʸ_ZV_gYb58{V/~OQ{UV~;|{eYIo[F0?x qӿE$,Kڼ+s_ɽdpbۉA^pH& g99-SqraSM"Ŧ̇wAϵblelZ}J: pM3--9徚+t8rq\/] O|K̉ RXhh5m D3_ߌm.Rn2Ə{mcr!$w$3#/`EJ w>k {L7S0 k"נϏ,mlU3~:5Y8>'ϗS˯؏~h Css~&O]ĹH',@cvG>)d´NWT= Z,qL{CS"gZ7<΃*NGxw~"is-sFkEW;N?*quSTy8XI6*H%.]H8./R+V9~ x)<` t+ j&x^oCf9l_8Ƿ^e[xoN__,ҽs?n]t-;T7rC%0WƗHpMo{ EWo|AO.L6xvWXy9UhcaZ*5vn?k]y:^7~پӠh|? I@|?4xR|A FXWxK߆(ŧnrFƾ )>ǩK ^Kxwm4MS@>-xfÐeUݓ*w>>MVkwo5:6ng[yё+(g8H$M/SYmx$sMֵ NX#עVΉNպv~E[.X/?_{=:v] ׷Tg=Ět~\h'^mikNW^[.S~<^7񟜱1u4Q/GGm韠^me黧׆|ŮA?_4KJ[ Y51|U,=GcɎO_kB=ЪW1^{EOsSu<~<kw-cM#c]te0S;oM_J==>m7u)1,}*ԗM! *Wzd8ː|]lʝ->*Jn+C hFנYiVqu&2w Ԗy6gnw)"8ci\wDqf7{}5Y5Cy hiWΛwu2kWd_j*ꯙtNƉ6#'_{=VNv"1~+Twz{$&vOҽ῅lM6F )bc O'袱~&i{]i{Q ;H#RkT'ZPV#w5(ubr妩RG1!\s\U''#5.DkN&iNQOfni&}['ׯ|sd:jR_J7*㡬1,g- W\q4*QY.>7f}"K|'sMw9,#@89?A_/~^"O|Gֵ@wo>zg8׮|ASZyw5נ+٧/gtn̫~9aܟoҹ]<$24P[nf2$BRiُ_+g>d`f$3;Q.Ut%>UtѮLgI=umD$v8ۨ>#]?1Yds(>nWyxѥ֜ [:x߃iW {lEqK{͡>rGN{1ENItk:^%DsGA=:\810䒺f?%?hGWY<KI z\&X Tcx8MSO߿j9=_?G~ y wnA\|dWO?-VqW| j7nVD O= ^i-bVkP;ފy<0'jwzkͦ["efیm=O_fZRp+ Э|%U{qܚ 3d=&>`j6Xcף (5иhr7Vkv\n v $6+Z+<Ɏߥvڡ@--vV%(m/,W϶xfl/4[_1^k߂aFdVƿgय़-i?gI NIɢxP na12b⾏)9=b=YWc]56ceu%ZvqpELG?^0Al8al=~w^"A3ӥgZn4[eJg ;U\kX]V|!a0A|('sXZB3zb4nPWNySƼ\OZiq ĒIH#+ޝ{uQ C nc>mq`HMɻ^l`Glrj-C?|5z֥rM.8k=^!-ƣܽYEN?_ҰoO/u!F㓁9_Ѽ LJEf d6qxJiF;S(.wl"meǵϮkT1dǖ=I$ח~m?ShE9`~qֺۏi+cr )55Ys#jo.l ;LD> 02ĜWFc޻pɿzOCvzuCiF8,|37lDn-Wi| kQ[sO$gf(_4<O $$œi#zS3Jު-_ϋ~ϧ^=n,mANzo0OzW_Ѧ[<CMIs s qWcxVx$gTg·Nls+M7LO2P}ݻW_|\6ji$~*ֿhs[4kYJ\Kq̹ k<0%D|Hdfie $inkֵ=R=ޒoO?wL-umm!PGZ|t|?Ţl05bWQֵ翼/@{gbkGX|& =^Х9wWG9m -j5ݿFWUIyuU̎PEypis9\^EƤl|s nݍ2ʱ:sP/kkI3@E~,iHY1Wk^CIA2Lw^# -xzosyY @%69{7uom۱~x}Kȉ -rF}Jnwjgw:>[0H?JO>Y( `|Dުl=6;n@>ץy֮lHZdNTaq޽F#o(1$2I8V*Mf#6l)JRTq|4NZ͕>bkci<_fy WSM"A#/5@\pr1ңk#bW8:g7j6 (*>Pɣ\+ qvB,Wv,-<׷ k4 >e;FA?8{L}:\[u~&2J('<Kx=DHț=O4As9V''άJI NOڨǥۈfT)ifz40yKdhx]IB^ Ck:d+<+h4mʮkмO}xM$n-~]x:o.K된i֖{G ש?ָ/}_nWF]GMi,cX]X8oNiO5_b` Jwj g)RI1Dp5l<(˙|LT^x|k[LUK+'v.#uk+-\?m랝uh @ kLE 4ƺVsakTFKK[Mt؇{c= o3U-iqy`9_i,mftzeE͸ӏҍ⍻0W+}? \Ftg+oڧ *cǖV9'ƚ ̉ڼ\[%*Sּŧ7Q@ e5_QEӤ'>pUvHosE:G3ݹWÿ)$šUL RLd`\h vOԩ,(>]瞝żk/G 2}6%eR3׾>7pe(q0B{NBT638,'=+~5E,,lBs+˿dgI9|7QK{ 6 x/+8t-@3g,kki$Xu Jwz av}FM)E7wOB|5ZZJb}JxWk7O趲O6#޿07|/6+o)3N}W*?rƶF03BU'1Џcu`&kKb&_֗JvsVHpws^mO+&qBVySnt Z#06!IM}9bKHTt+ڙ s.2>ָ('UIt0>H*vc9m/^^{F=MzcS孉hNj[[՗:Y[Njw+0[MOڶ|1u :.FG\-v?OEiy]01qg8ZYzU|Xo,v w!2^7hUg@ =9^9">E|v42qXĒG''W/hr[3L}ݐnsmu843ԉjQF֨%Y*ne+Yzq3ƀ+8jD'Xb~>MA2%N=js()?=?Z?P3899 VG7%RJmQ|ŷ#ڼ Bq:@ `P zo &=;ljXSjSÓֽGG𝇇 ߈byzI?Z.!kklr?d׼y]: \q.`y6+]m ܄M*YK_ =ד~|s׎L37LҾWZKCy5Id'V>x/̙lWK p+ߧ5'=p&5'=<;9HY8j6xK2\V࣪v)k׎+ Ɍ ySbw2[{X- L. Jm|AkqG6J/P$-:4}AOƴc亼i#j<]a%resop(OEr"m$V<XJ(|Cz-e/K,JݳU|C RV BZT`#?g:ʽNx!ACdzw'K3t;Z_=sM}qǝ}v5{e䁞WOI_acXsԜkJqc-5 nS/Fӓx 5w|DVYu-!TH{5}9{o`ͪ^ēw?U\+Kݟ#'S^U))կ.iK1iCݧݿ&<,㵂v>9KWLӈ0g*O_,U48R#mԓ`c>51AV7zNX:Vz(|t|/&uτc0ȣ nKfŋ[ m3u־.<7[۽bdv͒}Fk>9ʖmP A־#;v2 zkcLa> m]aSl~/-#a7w z_MS]+Xs!{Wj;SkŪ(-RA^<擺}W?슶Vg?kko43-|?2#8kς<+?8!d_x9= eRYW؞Յ%r[c;tyػ=[9⩿zj`c5f*G?Ic~iadPnQЌ{fJgcax'ڼ)n|^H\L\{I;&u1}i# ^Zlg߆b8?Ҷo7vF>~yn%W/\7uKBxRDnz9*{jfim58,X~*xqdWYٷ u?A>Dۖu'{Ƹ-e->YzV2"VmZfW:szG-ѻ5~# |%OΓ,0I8]:^N Wh:]JOU/h?u^f2>t"Xc* :V{Xr?wglH!{Ue :.ϖ0kEuG[T!P7˸R:+3fXGȥ(=ű G&$@78*JO'",N/9p\N"x4c(Ie+Io.#4{'Ykʼ2:2vP#ED+ԍsfkJ=i7LUq䈒>[I\HU_WΩƜcNk%'^{pm4{vN;1^oiGI+ L5x9f9Rv}k NuIgĜ{㌌-> OVv.Uޮ3St D/2ɞ;T5 B {38ctcھuH&&e@ugq|? sLJ`zt8|% JZ#jG+&>_-|PߩxS{MȒު^>%݀.fw0.~`yzU 82PJK3.A>οPRQjyvg0gF0a7/>M*X`b6~dq^QOe~;zO dq mrJ+.H=1WX:#4,Kȼ-{[&u2vK;?zUX+@8QDt;cs{gk w Yz~w˙.2n`ν;ky5e$xW:V=?I^V<ѵωzz|ךs>:gpU|@>ia[1Y?֌|I:;ExONۅ^9#A~#s-jQNޜ#m{_3><sτl;KG;F6s=2c9w#CO95f6z7PVNq횻:( 2;pjxF}vbh?NJP5;oDI=pד9phqp=+|3o7@qu=/Mu!A@^4x(m695,8Ҽ_9W# o)jvHQ,#| v$wl+;IR@4 n{ϟƤ{-.d`$M=UB u@S?3@Tj?'i7|($jձ Q9ت]^:Tc$eνrkuN~^q^iV+4k)rv5wuVaW Z. .m"QK&Ӵ2Gӎ@[gTԈe0"S;NZP4L5=Xw=kLi2.yg;sڻ^IR3J{Y6)GZ#s )Z?gCyqo)MvZeݳ![Ҟ6lBQg,ҫ}$ĊsR?yBX ׯ<}փq= s"7cO_k~ .;{s(!a־"htSRh:rYL`Nc#qMܮnnh֧Nix>k W7,H?6;c&>@kSr>^u+Knc E'>P8a/W,=Z?hT4k-%_њ?k+D-,IqGV^-d=ƞ1Vm9944bXJHWix[xԿ^;O&s/3'|.2k>qi=Z5IdH%ԚG8i1f%ls?[C*OE?4Z-ג79Xk,~{Sn;=US/sX'2,⽻&iր fCp3;ZeS^/ K:B0BٻQXBSYh}ק؃I.|]#s!*P!!/ \Xi+d!Ee}F8+Q\,)סԒN } ?k("KG'8$gڼ"+Fhc 0qmٷZh7uV HOlL>%|dڄYtʂz~5Ӎҋsa*˪3ZKx|5oBFؚ=*ͦ/U>qJ~~׎Kn߳i'Tw^&6ɧ[R?xex8]>b)hy*sǿvlpA?2ZmFLx~sϸX~!o4 !YcU\0<<~E;H>pẊjVgW _ E1!ig% Iq.X{~5a?/P,#‚[$>[Ch5p[Eu{+6\{dz Qv<_:Rn?P5ϟEm@AaT^=uk3/\ .rFBg.zܑ@F[t[9 ^ !cB>X=ݮ~eU'm.>xqmtO}JJ4n-5vikw]9*^#o;K|߲&;9GU &U Jj[ \eZ~ax?}SA`BE0zum%`2ȦMߖ?+ N.APpw1'+O蟴U֋{̄K(\pOEg<8MOs_~=7Y<.oa!*p=}kε)]xn;Bu Źu os/7Y]K `v zg9#j?]IkZkMOH4͔ɇKHPAί:a x>/Sns#Kuox4hia`nÎ$' m[hgY8wϥ~OZotK.t))X5ZOtXy Hھ[t牌gKĚ*{#~^/՟sm^{YOkx#dvLge]꽣Bv|z*񅫱QxǣF{WY7*A/jײÖA$6?k ԢT=̯ĚВGZx;?H28a]GK;B.$;9?/OμGV4 {d# <^ ֕!i iv:DZCpUg`6m%O;C}J2JfXoX_#w !rZa[oȈq}+/AGq͡Ixz:DM5PS͓sy#+M𤱳 C)~+xL׳H(ہߴ_L6_¿^>߽ς>R/c-ͿaD[W}FIBTiCWsVM%lni ZN!+)'DY%vu6Mj2+[Y[\oO5hp+߳䷷X ]8L̈́5x7:+8s 8Y~!u/1$"&t\ْJ<___LLsjUL'Oh6kC|[6cp~ }nezy/)% [ m'cTOwZyd  74Qd!#JL!$\Ya<-i"LfbGͳ\6qk'=>fúѬXtJ=u3=ZkJ L"a1~g_:|R%ݎN5Txtx#9+kko1olI[$jW{XGg\̽2db~U]}+ V3 ¤QCIeO~?$l˫.Xgvs~'?n֢muˑvw3NGaZڐH /m #׉sv%Ont-+n3gkd2\w+d~PH-;gz!)g{=;SI~yID mnT2I3-V'g-:»,ڞ!8?_cxUm[@ue'hA-˻igi=@#e$G~f椾x~>K5Pl`InTy@Ji1 /o^Le}ia2;۝j]E@ ?m;W[g70?α,džى^ZOOʔP%LkӠe䊥qo{}`Fӽx̒erf$tK,"²H>e=qx@+m_+Uy}h,Ɍ23=W7M4V/#?|6wա 5oͽ{osr8Wzovv߻Lc}sR|'d'ÿ_ʿ>tSUQ{/Jo]3Tf{ oyv!q]gjbюpx-drccY7f=ùӉ̉GzJĐMz_|m->{*y+vT ;平ZmhR}#e9J)_jڼJ[N08Úw0?|__/ϼE6οGy; T{9"Ե,\`ݺf`]|>]M]o5ƑJ+c?ΡpzIE{^2Ų}ëۡͫ2mP۸CD4jfS7-q1?{uG[״PO&;mr8]ڽ F$aS^!Vi5;X #R4dյ]oA 3L2Ic؎i_r[ZIwԼ{#_Jx0Y7gK ~{%[v+~Qe[I[<<1wپc׃ !}C`0c]nMMe koknߝv5Kk$$^HeE?v _"*bqo-hӴoubCw㈐ zt?ֲFwbF1Kk }z#Q\1=벝XKS|L^C"WPr3sNm }Y{}zTgWWMt5ݱ% YSqqvꭺ*~G[O[ӑ*rԖ$eĜO.9Y&xTw#byq<ZԹhuqZ+ԱhvuckC1·Xd[jGw|ΛO'.Ć"s^iYts֭ZZȒ7SKG"AŽg|UJx_.([$G=1^#w;k0JϦ};_Yc쾣ߥx_ ^"̈yЃ_-,+;uuf*qT/gpx_W_krs 2V>S2q~U~f%;=I&n$>e|_f(ʖU ǭ~|u&x~i/XXmÂzzE~i|TҮ^Ϩ],kNY־Mtj3<7)ўi$ 8Ĉg޽?>:5 ŧjLs鞄zw cB * \ys\yLN>.)0p@Q6YE>Vs߳G/)a,.[G'L@ :sڿu`/~oⷉm @νvmq9 6ӑѣlCJd~⺗dy/~TI9Gp~9<ˣ9> r,p&I'ҷG>RVwv{ӂAQ 熼%sxv+ F '~2_茗LJ榑n jK)Ρrc^VI#oċH#EbHLǰmǧmF.crmzZȺo's:Gx/] \rryk˵9Sz׮xi a#=Ȯ:ޜSG95B珟^.dģ:~bckc$9sCR5nrs;8huokr֗*EɿLo{{ss)( ʶy9\ ҰElH<ףBZ=Gº\Vp.GduczRMON΀dB*ϱS^j+&=k_|x{eE|GX{+aMх%U5$wN#8 nkؾ5ɾm O YZkF;uÚ[߰qC8?(H$0HFr#UΛٳG5=57hOc!?FCDϷzbr$|_8Ɵey٤c?5ܗay&ꦤRkcGn"ɨLuh œ;:v!HȬCe 崻u&ެ`H[C⦃QmtHxo kK%ztwVo'\ƴRH zm>bܮ!1#ҴW_Q.` YR%? ~$7͂>J@IHR96D"L'cuY9u ~@ai[T-ɬ.U[Umg101~?+: =2t >#p.j8uN-tG[v]4d-I2Hi.fB IҎXQMSC{&$ّ[7(ޭ/#$zT SX-:[BP)PaKc-ċBuc*¡/Ÿ.hWnxY& E\`w Ƥf 8h~cQ(m޼7YW%ߖszˬI2 ~m^j(9Yfqr\mC{ЩEc>"6aJq֪~F_]H> Ʈ]:JrX'A5^%s#M3L۸NFGX\ EN*#ڱ< uVl?*ґd'Oڮy1ɬ}H ?lU I y#gl!~~&fe!};lכBe[`-k~gKI$r3sYV6jm c& e\:rO~_h|Gm3Iw^t{>&m r?3_AqotXI;Ք=~ Zue윧>5-+HCY./4cW嗈㲎 J^}H2QePۦjſv| `ÿZҝEQ{ۃt7r\.u[]]cg+noe4Gjp7jk_CtP|myI}+w "TC>} z>0KLp9Zl}>p DS*)^^@mڶ~ʬ_zv,h3vOy'lq.=cA(o|-GcǙ d=J,b%'=X>?mb:Pvk8jsζCgP YŞcks~f>9g,n~COCw/ٟI[ &ӎ|Ou/°I'c`c&NyT2|o-OTϗ~ | 4tn b0a5h^MlŻnk6XKShH%d? 2Y%ЊXJ)\̪XJRzpȺ.5y$MR[[< /xŁmX1k_|gtR=*$r6} ]oŖ)-6?x1UeIӲzul<=ï~'|/f)k9?׻]"R2CDeq_n¾$ӒWnl @1ƹ~>M3ºWY<ߏsf\;VW7v_k T?ڋ:ֺՅ%# ~L6_K)y^KzWw?c_ jեƿ+#mD κ1ޏk~Ƒo26\` U~{SkC(ɣsz1qۗ c?/Q_sD6k{ +}Bs[a..1[(jܟgoi58DS=Oֽ `TJ?|CQ| PzYL z| ˦rQ/c^nXlb~"Zh>yL˃,擧o;TIɼ5:˨„ޙ957]VrCd$08ztvn\!)`8GL+&I3LXArW>5 79eV~ihgK)xy ),3'1X~^ 4%DtVM3xkQy0: ~u[/Xlmv,M?zףK JM-uYwt|[yw?H⇇ ==+W\K}lM)Gk<-yqqer ɳj'Tt^CMUŴFBe.5B6],Ÿa=}E]#r49P8\cڡ<حo$w elϯZM&3޸jQ4mb7iw1 GOҖ wO$OUsɫ:ncm%r*GmH^%APqU}gTm</*h{#xޫ[_^eaINAgبA54w & +?NaX-+oN:)^o_1^[$NibP.=*3Ay#&6Fr㚸ޔB\K֠W>oOYZecNo+jxs3y%%@zA9+=k?vN<%qO|#{wpY7k7̫,z?kVLC0A a/h,oY{ڔ^'ƓHXCTw%:HTnP!6AZ>OǪx~Z\wDxjuYfL=L5h^Et\\Uݜ]jOok0th<t={:͢L6I־m?.cL$I!$sMia.!JbAw'_ XEg-9jƶ+pZNUz$WǥæIy㼴ڼ'aƝq e gZSXdj.~UoMguܔ?r1'_= Uw.zˣF1>o$$gۗ܃۩xFKä ۵w<"e\ev:?/_GÝI!@wV⤴8kХ&44Y bkg6L,RLҾT}vQP< y}{\Gkr<~^|$\ύT%F,0H _CocBo^ߕVGB-7* bN6mlrڎwT8ʼ=Tg ~ VIg;zuVhsT0qAS.@ Jg8F8>اK<1C^vdC2 q֔,.m1 &K%KryhDgup<+|q+a=Vv<]y)1,쓂mF2,Vm1\JVgB߱IӼ[zl|G"gmXU #Q:{%3#V2m \ueHٿ9#[{# H޽?L>zeWK*{r_&>V7Cm*)I85VXxxwׯlV-"w1m?öVWƞ>һ":la^|:YpqVtOvIy/jKic4eʹy=C܌^r0dz|?dcUadmAfJ9h9W*`5UU1rM!FQX"V=SFIQrJt߽E4RܾgUyQ#8>MXd%} VKRpۍYBO9SU:sSRգ9+9Zr7cԱ ~u ס#=gFYSL^'@:UIy<Ř y? zV /Dkt p]eW6KOf+랎U%X- ,LC-?/kϷ1F/qi't+#U%etӎ,+o B#'ۯzb:.,'?ֲ*>pw+sknIֶOeHGL2Y[xmj\y7H.NqƗĚuϙoiNfv*ȩåOkj 7>nGC\\n.TI3ӽmjZ0y1 m}M;PAk3bϽ_jڕ_rn 8A[ h\ $ʳ/d#?['T-((b9`ijT`D`^{9>Abbosx֏+m!Tm<[ŖdF_*ķK[@1t(sU'}j:$ў2@ ȹӯtv8#>xg\ 7qf Yd6f^DKx-Afv[דU`R&|qq^c^3w-6cdvhKI%nNG+D\f5́ ,T` dߚ?tdzik:r@\ck Eǯt~qgpd!~R:"\o҇ woϞ_%}skq ry#)QhΦ\LAQw*~6~ߖ'Q<9wqg\-hVTP70Si,ʊXAHYΗ3e>ym!^3dlpًsw ƿ&&`Q0߾V?ClV- {XJ:'?qԋWq,rm?J5Bgm}juxhիWG;Ӭ> dnqX?j~& ݨ2 @8G|ǧֽc7}s=Vokm*k./׿uxU6OR$|aJK]XG}b3O*d4VN['#̉].rkgMƫVC—%ğV\ (Z8فd)+p54a%7𳺺ݤ%..0A3crŚƷ΋Z[K\#sń{ ,m>"2eej_CsWÈlcZښ+Sn1tߥ5x"Y@ ͌-?\tkikk db*=zIޑKs4`S|+ 稭ai^ڙKkxPSg5+z\{Vkyu!}b$W-9Z}G~ît =R'Y,XxԔ4D>scM_'I-'+׌5[Uh ?hMYG.ΰHAe'xmw WSL>-xHYDڔr2۰9ϡ ?(i 2mIvdT*đ1׽)8KQLfd GMrm#!z}[QVt0xϊ,|EB;4-PG$}鶿n/~48RWOp!`BF57ZVr4|RhЅܣiKCy#U$aF{oc]QˆJ!x`LiH9bAkV(9MBu\<㷊$dvV+DG`2A#W+ėC(xڇ .q.GgyoBA.ae<ÞFGN^QWAkLBdv $tat{M)ry 7>~R]=ΐ&Ny澇)n$#4^qsO.K_RXEqc>3jt s꿕|kS[Լ+"fD{b7샨Mǽ}ӂFocGLl>$u I6HUH+ =K ZR.+:u华#"%z+z ͡2緧ZQ#{hϖN\/Iq0I!ir_\"NgOGuS*8prxin,\[p-t=M.|AؠUuI__ƽxь|τv&]RUڗm?zϜף#Oy ZY;T_cgӣcҶjjƯɛhG^+] N)bdZ ̋'#'tO$,sY:癪Ff ^3fq&ӣYa8y_tg!>ca^si˔(ب˔[18c\v.mwz{ d3d#+S2f Zi.~aZw,͂^Oz͖I$!hi1.%dMrdt-ͮ6e9FMzWfZGJ$4=N!}jx# mI!$;ס {=?.?|JX H\3>G_m͜1O_Z hxÚ&FR6d_t 9 )[˘xt=2Hse>ӧhoct$9k}W[PdQ^Gospx W$x#@i[HTBZa_'?gpgS 9{F!{z,3|Â1Uo37 c׌ʅ8,U{rNHo^›e|m2%p FҭKHkQ&4ܕ;5.q"B~pJ`,7v;I-+ޘ?l#<:P␎\L7aH⹟x^-uxD<?uP} 9nq~+DPł`={ᮡhsKdd\;x;d~ҝu+Ȉc$ykKKV>f#.)χ5`f.s?ahdoZ泬 =O[|0CmGPG,@**=7ڭƸWe;׮==sş:qnve T<:ꆥc|Z[ĈHyW٤YTMt$Uk6fVBܳ ڗKVˮLo'.ǿn,(4[GL֪;쯑[d!HS8LKSM5edd!׆W,Aؤw":gD%sV[YcP:zztGҠ6MoO|*jC[=ޭ$6;qϩZYeJΞqҧ[N)frA3Ymq(ѕߑ[G& xI V i|'x;(4uxԏESodj/fS79. j/UyyOU:#^[gšMn'ѦxEp#ֲ/ys${UqC_ 5hJjmI*,}k72H>Bwk_?߉|3Yc:I}2#1_J _’tHZ)rA'#Q/f^&Epq^hNSyQp?ee^; ғT(O:xۮx~ -#ׇL 5 > ~&~YZ}Oմd|ۉ(fYPl{l\XU'̙i?+yR*(NpzW|CWWڞxG Gp~?bԴD%=Jgz3ைqJR\LI+ #-Mٟ߄3kZq^%nBJQޱ>~ښ)&m D~ڧR|=o+͗ 3?Һ{Oij^07cn2ÓRCˡ-~[CC<>l)rQ^ãZ1xr!@QUK?t㱯ǯF<]?_hre,34sJXǦx5EqDV.H\㹯|[J}V%͛ƭ4?'}+#Leğn4k3aOV#jTJtW/H#g6&DȱVQ9|olڶ77L쏟LCW+V7wpkǵU?ZsM#ha$}Ih:|ok[[5MN>]r3VV}7=2G1[RYCoR9Pw2}{?}e,N s۽tx_>[]vc,,Sy*%гzkZ>l쑤1FE'v5Y^-dqB ;H":S/v?.;MNDkvѸGXA㎠_ ~ٖw VM 7m; (Pߌp:S5Mf,W Z4B'漷kx^* io X%D ,c-?Q^E'~(LA.a<IGHNWKWo^YZ麜"$pGX?/=R/ԉr>.!.1mܔU0>v?|cڅZV$kF0S(GjCƍ74 kI2YV6aԂ;_5|ON!~z 'ʻOQ]1S؟eP^8վh+[M<@i`6OJߏ'B|#O{ i-ק躵%AgncrpSO_ʾAk+oI_Ggj8~؀3e/w-txwrsq=QX t gNOsz/QݼE}l))99Îp6|?OۜHÍǧ^U_E񶓩xxl1 ʿ_s?fw -f[qY&[hz坰LŹL WsR<3ʪ\cA!=CEν {k F1 1azk5gcmvZ2\?W`e`Cr3ÜmgL^¨l>I:4|=MT\k7 u5w=FzTZ9UOz,?;*]2==l_[Glw.-QQe]RPZBN;^tyF{jl;+K1^ d8d`ȚV꾊x{Zvs&x|l0($,@Wl%@8|ź.N9/.ؾ2AGﵣj~U$V=}[*ʣ#"w౒C 9$x/{?dqϭcx/ t320p?+63*3n,=Їh_fkQф` u8/~|mm9_OkHTNm3"Ť]$=!N.up?x7*q}n+*4]JPN.V캞+~[(D1@$ҽվK&oƼOڳb+7l^ ֓ T_ ,b#Zm'1XH{ :36-gFԖ'|5Vdk(Iu_?Nڇ4HxRXvKp{W᷁QIc`@_gG2Q ݺi̤'wJwOp-gۜi,T5ݫJH}-.U}wM-v `s'vL:¾S 9 }֮vq^oHͯЙWdd\gz Y_ 4"+\6(m`?Zu1{z%"ϓ[ֽXirUwj"ALx! XU|b>n^y[1TBܥ{^U _am6zծ. mngY b>ah,(Vsמx9*;һKJO7v?ӑ\w^D+4/S*F k[G2bCXTd޿ZC? \4c]E2@OLt7x`Ko>sֺ?bi9|»kС,/͚li4$1>οßz!I`>C_Cx̣3b~|oM#0+.| KRF+J(ACv>6kw4 䲀G5הqaR[z{M-viE#AU􉓩\UK53S9P@T;8.GK>NN;N#jj`Pyt7)jzx\G# Z6DnG9꾵.+Œh#4dq$¬*H Oc+s :ivzsv#FVA8S! _c-?MϨ_oCJd+wk~7k{?X[K6*F1jYv7<{psq)O}ᇳDŽ4_r4/3Gˍˡ"d#Shmbygzfm'c%f9-ۨSW憥v5覶$-I98 ǻkz^ԆL~O8V/W1xZ+]F[5+{w %Oe=]->*Zj;ா =#guc[cXGNR]~ZF/;Y;3)PO=6UqY3١_WAʹ=cPUԮLAZ58@ n|K  TĮ+լbBtR;u/Gp[x~ڃ(*+9?LM7oHaϾkoćxݫ~>nqWw xխ o77G5ٻG\IFF֧ܸ,n",.AmUuL5y#5'Ě\qZ,`?̹>i0p"rf{%VZob +~3H<-لycznZigC&{A+̤_EШ>}{k.VVH.F2;;[*=\'Oz&?H1yqd)U߆ ݣyT&R]My<#Kj^('>5_ *գ#~^#I4o w0؋+a7}ef4x~2HMyzҴRr`";i 2sW+tvHK|.@(=r3H@[(I8rNzĥ5s$M.>ڹ)x;b+i&EP"'XWSz<3xI%oޤMH~\e`l${ݬkFr6`,j">,XO TR E$&ʟeGLqDZto=*y%~1~b<>U︬fEݩA?ʮn\E 9\>tV`v#I-aS8yS{ T=mBDyaFb'WwJӅƑA'8v~w'#1k Fr8a=Mc:*:59{߁V/tY%7wl-&0'{o;y+8D`I+Ӿ-m ܳ~֛hg{7FFO [C>(a+|E}>{%"<R̮G8 k婓-kw_&1Ozk#V7c Z0k=GUf>Sr) X- 㞠B..~f3i,Qol\׌?^=qko^̰u;ێWğ -܇(=UM, l,Lѷs[J|sb#̏Ym.۵T>x٘AYI'?ҿ\P;Fɝֳk 1F գ=Z4k+3{:{OX2qױGmn.a&59\ޞߥ~_~>X`3pzOKtƭ"1 ? ?-tV~;~l.Yqz|ZᥝƝnG%8>?O(FK{;7uoAv3p;ROW>w` sqՏn+<{U=eQcמeqN"ڷMXrڲ悄-}ںZ ܑjK-B%"l*rKg=5 FxTlm<^٫ ē}ISKٸ:{QFc?h-{^:>jTc2+~:|5]0H_D̄߳ ?2v=Pqս$eE2TNӎA۸cs|oúՖ;;@z= -cSݦx|`'|OkI6Q088 #2SK*<2|ݻ8~U VS3xZ}GIMCC>͘KHV~po|-4-%Fx4rw\1.>+]]ʲABȫ$D:+^ O>b)ިwwϏB0ͷZkVؒ`$s(M ޓ,:% Y\!&F#%~9s^xgY|ןӵĞ+3}ZIV<}GןιCdRt?Vt(Nz߄lzNn"u+YCܠw6xXk Q8yWE -y^NOB*=mO [/='UgYY;A3O^_ڦ㞧O[z}y n˵]du0޿~|bWfAڎ<^ >6^iyɽ6< :y+IP-{u\L]oC-Gv%vX}?mi1۟ |FUH!;J~|({jbOCm>%3F:"~U'ŽCF;ӱIy[̫F(]|@P2̙.͂w~|n ZZ#+JE<:x5+-\- 8ھ弾,;|__nn<-,Zc-7`̫6z_-牼1{KKO2[!NFsڼqO|̪xC4sgU𗃾uiJ5U_S|<+>޴KV54_?!^Jך\ !?1>|:e֭Eʡ†ݐF3W8=O7}z8zii ^t[,4pv(Ԝھ? w:xHm;[uWM|oC-NP~P!Xn0 ~Y|ėBHU-@uH 51ƾ[xk+sC¾9`<9ϵ?ßl>/xj–@ƶBgq{Wx? MnoiVVy ~ ^_'<'i|Eo J瓏vbx_wyM"~^ _]Mk8Ӵ#s͍}\K1Oaxkۋ!NT뵷K\ Fk|yDm|qJnިb5aܥ@>-^iN2}|U<:z4%YX<_-rlH|w+ʾ>)ԅ2J%Mzf_ VjqE AGNrPkZs(u |:+|vjm- +DS(\ ~r}N*;Iz.y~ l#<'nc:@IP)5t ]VHAj:V< gssiwc.G~Q="kiyUxܣU#,+#1:'eL`Y8$G4H2Xd``^m~}y0'jwQ:ōFM>b _¸]X2W&ɀWo9K-9W$SE}( @#o=+O(xҽ/k7$`@H}ZFr5KN?,;']./:?,sisjlc1szWxH X8W.0uӤ9\CWއm}%οk?$kMF' s0 -mkSaq ,d_X?w+$̯z"#vOt"r3Z+g\tzWgt:ol.h8'7hH<-K;~\:?tkxU8+b/xP0,Xb}+z]iyhn/˴0\Β9zюhř 3OCY> tZlV2A_ҵDu*OJ'm0n)n&hmhU%G-{B#)oMÊϽEo* Z k-:ޠ?^EU[pQ֡_T=UdtKdYa-ԎrimL7s㸭28b ~ub?AqG$,z6Ȯ> wrS[qp5i uaèG,~g_~ğ :g Mv z%o[2&ĺՇ dr7Cu+wRB`~]0WOڔ~ _#@V0xW_~ʛ45iQVH}G$R5 v~3Z<- IJe_ӣ$~?GÏ 5+p7a]c'?YWajb.gݟ6x29}o"'] S)UP%c8WotxOjq@-lK3F2+'F,Wb|+Zi;4qhS,2:I3~?|;䢄Wm=V#'?}W BǦ6PfHm#TXx>9w%ݶۯ?ht?k|{OV?ai|!jd(Q\WW[8)*K _POi#_+jN5d\3"y_o"/vFE#Gֹ[ 'RtQjG_Hov6kwIe$6Z/$û6Kmܑ@Hȯbm./>Tb =3T:Q|y*N_jaws$|`HZ=9s ą^KV ve]*|{Ge=hpc\ytڕk{aqtÀAJmOa,*_ldTʔе+~{kI t#C'؏}; iaG%e'gg־_?鳀=d8#fCaiϋIi#ϥV 䀁w9緡޼ƣ*zƎFY?WV I#OUu}US  HrE~|m gE{ORwX\`r"ʾ׬Y M20RwY1J䍾"im`w'bTnym"ӱ  '<q=Ծ񝧍t庵q]?޷c^i}Zy-%21n߼1\̚ߥLJ"3|zrR l_Յ)^dVs݌fSE֬uW 6V6ӹ_ZA"9EoIyJIfm֫SNTbe 0aFz:I"G)['P?Cb'!$'\Vf1qޭSH%Ee0n ֜QĀLUSumE- chX[x^̍}^C G'1j{LkQ,d<zj+ #O:rDQ3~1q^Oik̚l$c_XX8DWʻXiolӹk]Oh雫#Pj̫q޾S|yxL9{q 1l~Wd&[k;b{g4)4+X.N ךsηFx]wItXvi'"s;`a E1=U!Kqm*8kMYu*I31$Rtl)Zi U,Ʒl~Sנ۠( 'ܚ4ŐX=tC!rS=VϯJגlq7Bz)al~_ &V3cf19kLDݯZ)㎕tVISWZȧ'ФTR\VrZ]H1#5^7C{TpTe瓞uD.ޛ׷R6o[ht2I@2+Єc>5;Q:)Sⳍ*]Y] Euj³ڋN!HhYc>S@maHT}jɕjg꿲g|RU4HˆR1W?&}vshf_-ڃ [pJgtX[[2J穬]7Eƴ>j? o'{ovU9g'Y'ƚMDp|fcP|~ ][j~WR!חc_/h1]k_xɧYik~]ck<ӕq5{T;z'wlvGޟj 8 *5 wGgql7)޼v=CdF6zuҰ5+͓ jݑ%冘.aeʿ53-5N+/Yة)!UcR ZEhѻpvڹ^ؗ~OR\xt=?GY*_P kXwѫ˶ǫi1eh>b7>QCvY%{wkrş)+WFTCjMg#u{8':v@Huvo-ǝO ᷃V.%8>ιeQT꓍8 {쬋7E᛫lrGG òr 9"nqr#ךNvv bTӼ;aQM6* "vb2~9Y7Da8SXLLexz~|=J$*hK9mBY&Fj|]"(81!&xwv=;E?WkcT2V=*nZfo<LJ Qx뚔va۬}ɹr=}+Sl#U&|F79.n2Hy=>,W7-/RCw]@p)5>3|}f{C{Sfv_OJg3|%Cߤ,%Gˑ\ӲNq1kИuipV_-ӽz?ÿ?/x&[wH:`UZl!Iey \z?4,m|9$񞥩Ʈ1:o&[ǂJg`q>BFkư,S/HF4?Ń+ῈZ7w+e>dgu8ë}M[4;+nJke_p+Xt:;t!*8|_,_K&⯉snkK68 q!}׵|!m>Rx1 I 3zW!珼9s\[`|׍=kESm~&Ҭ!\T3c': XtT]߲'??fj~"FeusƲU~N/HSBmy/:`Y?{mH"*"`vW| K>xvxLܰi 0n]?d>o2I73='{;IὪi} a(|ٷ] _]<2FΏ"xe|g? m}s^ZD%J)[vTuj^ >{dzͯƆnye1Ik,܃_k*֐lE]&]'Ei'Eo=q}jQ6dcڹquR(ҽ#Z^;*v)|51Dsq/?4\[.nA6}~#:-Ljn<Źn61j_@CTV0!mVedS :篽 ݦiGSjyzŃZ;$ȃy?kO&ˁ0ʱ0< bPk7=bOsICbO,̾eDU 5Ql$Iևc™5K9l/9eDyyzl er';7Hc0k7Fڝ W<*OHnDeit)?/7Sa53ڒ@=Oqz%ZDLc_X[ةS-G\"}C"ɷi|?iFlY#]o#յaP`A^2F+&cŹ]ٕL2u*2kYز~`XFEhw=ɵA0W>Wy5|Jvr-H=1Qޫ /+^du)TsTҐ[7a5,`Ȼu]΍[xoҮ!{8kOL"؅1Tv# <2+Oa8{Z qK$22-g}vYc6;ƒץ?ŚW{{ff@R]G)BF*vı[7\㚆[8a*-j?hPb 0Ivj|}";i8@ `r9Xεqx`8Hݑҝoooܩ^9a b+SFNFyzt J ϡoMAFd6Ru&Ӿ,ҵj1zmyEb‚}:1<=+Kѥ~ rOx.V2@p+gD/<3Yb-_?\X%Vc˘^<mmHlJiݏtHl-FF/6EِC sةޑilxoZY<3[>3nٺԘfPKM=yOz]b?_P+KY`Ӿ6V50 qM.8?GiG`=Kbm&-6< OړúsjV. {:XWoe:k5;eQ(u&ƀuf:(ܪN+wE+&yz+Ts3 i-T&JCÿMj̒X(7ҷlK"М*Dks0tCO.n"O2HIJvQ@BK!Hcc0GZN5fCjh$Sk9=S֦Z_1XI py4ҚavsSr{ߴ]"Y}O{J[ 5pGdUt:]}&w"KF]PGLq#p;kjUԉҒCe}?0lZ^:Vڧ-6%C7IFA_sHm24miEX̕v9e}g>) 7;OT^#GN@j1 bLdo*dVE_54&Krv1ȭUe$xĖpwe(PT˓cⰬZFc哏ιV OF ĐXK+vWU_,d Ԓ|(\=qVkτm%sW|gbn N=φNVO^ߟKqyrU6\KH=2<\d/ BmF>]u(P1U纏zƯٻTvxV=x?LW?G-œ+VC kȣ^4N DjzוxƞU3jڊ+ކOֽgK4+Hڨ|7't_L 2w2͉]\!%k;eCUkiFEJ7>xǭ|Yh#42x$}qWh^]&O/ʍA3L v$@[S[*SV*\$|>Uϧn+\30ʁ\߇=vA<_6Pak"i1ϠȮ0٩g5E#i|Pw#r6Ӳ[X$ske/R&[OOμIC5ʅX043ӵPzzJ~n&}}VFVԫ.Ҡz|?*W"}gRK{8rsI妱qPl;G+;pwo5 FJltA]LJQ?X6|cW~$irx2M5T Vǿ㝧$|85tVpTegJa Fo}2ݤ[% {?F~+w|wvʣę:*>gOJξ6-ƒ?4kֿeNmBRY]v}޿,`?8|Ӷ B- oWg_.-wƕ3Lo ,?TW.U'8=֑Vʺk*׌ ڰ|1ԁF 3`5oKL5{c kLIO]b%Pg%V?jW[?_|5:9<=LϒgMǞ#4 aۦ=k?_|Qu 0!q^ !O(Cn4Q=`Zk&'?au^k=fIJsD'c/&9 f!k{o+v9 nlԦGʾA4/ޥ/fgUpñUb[Vֵs.?tB2`utnW)PNV$/qE(BdnGjF/A@5i?:ɩ]aB+:W7ij>z^)8]O|Gc.t4CtBjhn9YbEa;I ġN5xN;\oY\ ~ḯ"'\om@{#g[uuUyUYUqի2,ds&A'9I,yn~\U+"3-Q)+1WH-Ա~* my䌖(Xe *MDU6BebT)jԦhL{_韥;VR}+xú1|$pZ𪲡?7PPfYni#5ʑ>~[&2jw/NJZr3m~ZDoZ4I< )!FkBKZYjzJƒfwXI;X/Qn _t?j_k6;;&$okug_K.rOZ9Fv*qJwg+y`nd6~W Q/.AһoR#-:~"KMS%ē.YTg*yx+7;ÔDTJERv`ڽƕj\Y|݇Qho-~ݪ<xlzt*k{hxv*rnqT=yWxx/PṚ{Fr/j஼mJ餵;)Sؾc<otM">B>{W1f-TXٓɯ4=v }jcRBN@>i0S_:1./o?Ý5l@1ܟ5ȴ[btkqnϧ{^i&, r*ͿУ4Y1} 9$Tg:P h pp ~ڢ .goyڽT`W!thEn 8uپsC/EcFCmz-xs[[)HfM:v.nÌ#ڱtCVĒ }œ ;ZӾKY:Ib#% t1j G ?Y:%!"_g{]ڂo4'G59_ûsqڝٛK|Jwtd&Oc ƺ22åsJ_JA &2 ҤkY`팭׭jzXx1ŜLB]R(MsrRT$=W%2ZȈoQm^qXJ #ӂ@'"ۢz2}jDTRdzu2nb[CfXNwc֗HP-všJ ff8V!Z!Cnq+TF1 rOyGҤzTQ0'jGkAr2TS+C+Q bfV^q5r=bIU+Ĺ7@HБCS" ㎕ %ojl}T|!>Ɵcw_k/-8lU[?<\ Hޯͧ)#N$=?­a Ӛr늠9n/ ƛ}qo!9gqg3:^=nxd'?iCf%}8ʘ\̳SkoK{eu0~t*N}VƝ[?¬i4՚1dnJOjU9L/|#4i ],g?t2C萅=pJi%ԄڃvM:)GcW]Q6gx=LGyÐF~a;YnT6)wzlP)`p tyU*Jɠ^v6mjm6}>)!7庶:5Q#?qhV{,v5|Gq֚\:}L1(s~n3?joUydM;5JXيaqScӱo2js2l6x>8Zgj>(fT j k^ z.%j ؂ wZO=\]jZ<뇳ޚ95Ul-b 2G$h TQA:Z33l5N?͓ԛ-53確FvvGp̃ S|uG5)6/iƯ4oP( u0U&V)=;oO֡O7~Id'%E:/_ d[:I#ܰDs%k_#\R0ϒ>=Egswx($HۥqǸSc۹e̹8ݖ0n=9;rą7%#^Fәg߫\9uERs.%gCŷHlbsnXƼN2$fEXw}XoIM=O>~Vik1,3?1] iz΂ZE&>zN|/Ÿv2pz)QI $ewR:UV9SD h:8LG5`zfH e##'vDh5tHR1w~nҖƕW^m+K]xEM+ pzfOV&S$>VO]'ï0CuVcm)(OӟAZ~ ZV'$v[B>7.nly#7okqhe˩K"a,>&\c됤}I<>?k9-D0<Tm`Pퟱ7k;C{%Fcp=ZX} ?nP΀^㸫W>%TVb$ب89|r]Iތ1mFC$D\1G X|$ /$-W=Tn#w T]d|WA͔m[  3GOtnjVirb` (SJ lto8PzoSIyVOc32\_i4d(QXo<F~#~{L5 ^;{}hmJ-dğxosWz}]߼}{WWeFI-h8gY6ckO ^&1\Ƒ|fEeujwK1$s[p*_" =2ֵn-}mF~l7zh9j6mɎ]玞$/yQUue>n7vlg5Jm`_1̌k Ii,"iOz\@AW_ u]L߭V:})p䞠ff=~hc.q:ҦC+EIeW5fS6h^YS7 "C/a?7z.;scm;82r2:}k4ˏk(Ze힕ؗztD<"1չ\t6Uы:t\ȳitDxL1gh~ht-uYl mT8Zl.oEkm>%Lnr<}ir 2.M,6/ѫ^,١E>lNO`xJ5T_ OU|/{ &8`A }g{٭PAPaF>ڎAGS]K\a<7ZU}2`1px{`^X<$6ê@ts7JZ]_먺띭 35vC^xbo,B3G^?U{fŢGR+ӴoiG[ ~qm-wil0A!TrR.[@-l׾^ZJ#"s{zxbva J9P]7xv i $p>PqZ\,v}&V9.( 沾"xO;e/nxDpsƹ >fԾxt&ye=f ?fCPIQ(|u&gֹIFuTh~\+ .V6X䃎qj<E6nmshġ6m馹^l,@S֟jIKmH2Bef6xŚQnk.BK 2cWΟ1)T3AlU~#@1sҘ]`7U aܻpi͜@[PG~+!L[ j4[Mvljkn!{eS<ON/˷v3 {*/dQ&>X;xW̓a;m͞Rb~P8QՋLFaAR+Mh&زF{2@Cz|/.2~VkDC+9t$^*FIVLhE*ۡCg6oLwf{Hl4l=л4#WҮylT={'9Vmu+l'尾8@2>jm#CzXw2XbٖcX ֛lN=Ǭ4Kc,x ȭ [ JsjK]M}7UV,ڬCEq2+%KstEg%Age*>l@@jO>;{,]xW5.D[2HjR|6jl9NN }5QuTFc&I˨#~*tv0f6 {JFgymc6=3]8t8 ֬9rM=#kJijgQvih F e֫E_3gl9<)9U.bչdICsn&E6֋e)H*=ꬷɉW>kWK<`Gs]0mI6gR+m 4[}V|qAk놎sk_ED_fC4А01יxQ;O\qmX,Ì)W,dG~џ4W:Gӣ5 jmx{^IKℎkWBKx+&'3x+ς 8.q$IPk>rŗ~|զ~#$;_C+~e[Ct-&;dPv%ys{+kXy0еvqd:gtٗ_p{yx8V|FRVV&$9*~cFoA;#OG<;w[=.;%/)1߶juO7nn0=p40W~~QkU$ٝ79?[y:.pLVVi03:ZQCεIn..asZ["8c_2ÇN'IFrN;u^0} Q;}6C\['#nz:nWƟ7|.:|{N⬤{2+E6㸬M~).Z cq[q_QFf.-ihIpq35QUUl.qKl.>sUi(ay2HzF![p̣:KQh偙qXiz&9'lnPD )nLf,nc|;{}[ ytUցuqpĒg[I1^N*ω,hV8ea<~tR8H q =;ÍzG2Jp3d-ij&-IbAXn$M&s'esSk>81hvFsǨ eNssƙmW ~tZ\4#(-sCZ>|ͳZ+ "ap:XD` nQ]A4+pcrtɼMxf )}kz-҆,8fUomtlbh8F1𣕏mFOqTn"W$-9:~_J|);NNYo:A턐{ \sfk4w!%d۝20g@~E]~c6]nL;r:)þxcQec@1&W 7 p[]'ܷ6RUA[#@u|Ma_mb?ϵac)uc ksTH`$+(`cڙ?7Wf?0}?ơk{W"mv^a3GÖYZ+cȭ;K/ eu6])! =uCnf;˘ {}hc,}ec?NB-vSc0*ej-vȌIB3֠Ҽ#:Ftg\?Z ,b5qjIm9x[H- i!̅i5លy1+IY'<˛7vg RdHVg$kfic).@k]+S#+@pҴ.Rgۑ>r77FFM-8p7?j5RQ[n&+( eZtr8G sy%o{fӣnyz O{h0@AW[E,HڤF2|*Aa-Z+xbF=ir7煢V<3an&^=Eg[|𪴦6v%W`oe_@ #%[Aj]?a{+x<_jOXgh8eqW HNMpS왖81ݑA rG u|3Ӡ=Go>C*.P|H}֙[3M*Cc޸OdyA$/^jjRB?n2K7E @T1xs8KKBHoݏ}dޛ}qqd\O,,Z_ ~8'ĝ[(?3xd$xޅ/i4*rdy.8-MBoK.2/$]nlMuNUg@o^e5ܷ0Qr?yڱxN{171]8H6Jy_B3nA^ ?F_,6pxy拫adf䞙a* ho _s)ϕv +#Tu??ï6Q,. Ipt]a|, >iI$k ДzbI$Qb)bbŤ8<ߥy'?hؼMXմ\^ČgZuO/c_(U^6x1qJ̖HHD*p@0CJREO2g1VHtSiwi95z:9>';FeNy/nQMydzU M7S|x ">l].Q*|#en )"Vle#9 P!M^UF$_9Nm~ȌE!+ӃRipaes?dØʼp\ |8?iͥC-F0g[{[dU$Ɣ1srFkv"䚵iWR[TaE{ r@<ҏ@;?3'֣? g[FPlq`_XdweylEn'w7Ie-q P T1MŘ/EM8Q\يItr2v}gLm"@HR8+HTb& hThG^GmͬR+mp1kun#ȧ+f&]4{;zGӒ:qZ gj=ҹxN$i.TC[:vpҨ'ⷉI`9*q#s MBhlI y2.ukȬUf$ڭ-ܘg~!LU.wm dvcΧ7CG 'BiHC| $_wzO\jwP[Cn6J78B9^!SԵ۵[rzg߃ּAFK3d7mceZ`%@aOZ@؀v㠮'w"mhK7&+`/o|zҬͣ>V23~VMuetQ#F%lciɬx[E;X+hu*w5x~Iōf]Z^;W&e"[䩌lQ1&3V4kX1qC*^u)6GLV̶m"0z(9rKS̨H%^ b_Zc3Ii0gһU5] cN#;Z8u)HMq,هa pMcAK,gasǍ~S)]M-I?akb.%[럑I zt1Ta#&Iu_7I/w;'?fd/"? kRK'ށ@FT>7c,$ #UZ3zU4nP\Od]ON)9 q5plg޹ω~1Ůy=kŒm#Nt|l}_/$~&#*WUOO%G%I鞢o?<@WdUo7tu:vAe:~]W a ~P ^~KU6[p<,K` _rq1G!I?:k]#r4"$>>@7g9m ]bSJKrkO6Mzn)6kjo"0OZ:| A;;f4 J<]4,#ccZoഴT%){L [̀IY$HLi%}>+PGH0 9ǽM_I0N I9uycQ2 ־̖C@F瞞5 6? Fnul}>FpI<]&gs'fQ~44fiK%IOxX/Y$+]밞=16?WRcFd?_ZKxU1x;s1r\\j[RxU~?qMYfd3&;nHHIgekH.M(ddp~ +:NKG]8+|f9*ݗ'K$`ҥfu[x 019ZV[X[ =ENipt0d W9Y$12acKC 5CֲY&l;s.d=7yё4 K D[yP௘'׭Mwn)pH'c2<Y쇛&^4Cim:FI ֦AL$>W2>Kf0uS\Kj|ښ"{1u2[PqAY=ڮ-Ԉ^5t; vHGByQY6UI/WG0QndtFVP(?"p7Z.#$D@/8Mo(㝜/Ҏ`QEW&H#iv?Uv *,F9g݄3G0r#&q!Dgst&y.`Ͱcw]'LoyYߞީ)NnuqG$\R:r3x52v(K[-.9'?i4mcGiBw=+waobgqOwT) A0Dz+%QN[X1ú+J#L.>^,NT⽚m> m_d[``l̀fw x[\Lb4q}pt2@P6^ƽ[HB8##Դ߱3je't/Jfz½>HF4dX㔏4qQValazݒ-@O~5o ZޛFevK=#WԴ /(ȁJ8oCjwkχ?i_xj2@A>R=s?exW&`ڥIc$,GnNHmh61[ؓ5p̮&Kք&csfĩ#!:^MG*N-IS' 7X3r<_gҭ7{j""n@Nu_ ]?T#2O¾{&4k!|@f"IO+?8#g9q~|3ÿ:ek&?.9X gX;smGw}:bD@VmJeE, !_Er{k]Xc瓌QYŧХ&> ~!%tA؈]T{b_#ԵX(ck |=e-K|Us^^+[4٢H1n th|~sȗú` VʟO}%7˜fmR&J8 >S4OV/)'[<zñ><#Mml[e˺ ҟsGsxIW|8NinM[Lo{R$<3P~. q#TIeY {>{~ZK|X~-[1KA%˦65< [Fgm QF5 ُ*+Et,$Iǹ6ێ+hm䵆XW1lNp:g~|=j"Ֆԩ/0{w=0}ev8 /o{&ԜInBjxnjHQ̀r;w->K0t»pa{Տ~κ_N}X,9 6s=Ϩ&=Qw([+-dgK6A^/;4ɵ(cyYG=F x:^%S?*e]C0bx2吱oL}qGlx?^|M`x ʊw)9Tp^X0d >`}jOw" g\$>Tq[V59۲Xe@^^e*E[3쥕Z!Ҫ8ENgσKe7]؎z1beWb^`LC=}^> jڶuuecjWjW/;Pl16ӵ>]/yML+[1Ƣg|+oi3H֬_"H+g=j灾 u|5GhOm\c$ݻMWKK9ls*23FeC`dInLX$i`bEEs=[z$7F ,&$h4j&ڮ"ُ.Rr<քi2Fc-ʫk\18S׺"mVay0-88wnл~PX\.5랦Hc5*m; 6+sS4l7A^ ԟ,H=@]#4'ՇB/nT?!4q0Fe-ضq^}jDv*H;d/p5\jvH]L3]QV"o~'Mo8`>ei$y-_¸13711`׉Q[??gZ קy& 8=W^LTFFWg-{ 1V5kڢ_ҩa#[r ͍ۜt.߇N éif:n ]?My` r2qk^G# ٜNNHm-]Y_GR}+Ϥ,s[]ں[M"Qx5en; M6XB}a> ik!@5B23_|/9giEF)cKIVռSPC`%8\97 Gr򓞻X__#tr$i{4M,ξ.o'_v5ĭ/iQ&eeIt=_̒lkoyk.w=GzuỖ+*HI {% L~Z[+M{?{k\P[icc9ʎAil3-$5)i+ھÙc^s>D܃3MPf+WzQt+YEO2Xc,?fKwS$;2.-t"=.K'w z#!ckeiO̍ .[R8[,_ŏfEzMU !XÓjX3o`jۣe4iA1]mMkvX``tPY\o.U8=*TQ?Jg2KI ' njU;pepS*IǥqEkS0#8S7@H ߴN2{~u];K\g#=i,Υ@aۃp4U[p!Eܭqjr $7$ 7^[qDP};Bz.~j`6#k}ޝ>oU5E9yH&v%Ptb*1ShIsyDMUSޭ^%Tw^)IXVwurn;tի+{m>ޣߺHڝ*æ̅fb[V%ɩARcY,- kK8o_uU[[oH>oԦEnUQ 3*gm5mN1I%$u [鶷91Ҷ<7k~(M6/(OnLҴLXĒJ+|ڷcY Hn$pOc~9ؼ;<\Z\oW8<9=)!dž4O~Sj"O TJA}nhr@9}@M˛P#99O$' q$ +#Ti83j.hoo]jr;{ןSއ>73Je9;Gj'm5(cKrix8?JJwm-qw㝥pz{~[\ͦ]711So.κ|ob,Pˌp9Yeh ; 8s\'[y%|m˲6.[٭R`gO#֫N]8`~%͆Ac0~rtv_A wE.3=4rZx6]>&7j@J3nN0^Ҵ~:.c;&h\$ МEyV45mcfBqh@}k?IԴ:SFq1^w=H5[Ervz rK;C[, JwkJ{붚o-Ād0$ϷEx/ X+@Q' ¼m?ZD3|ôiӞlڥֈ?#X~SlU%||F:8e78qk+gDPAls{-SehHV>\\Ԟ]/FX-&t.wb2 qֹψgU]:&V9'n ?ҷS- yfdA'gɣ"dyA*vq޷rH]՛'*k[n pȡVdr#IMJ y k[zҘ#mt};̿{{UxO܂Phf+ڡ1}뇳# [Khr.p^{W\#N8|CjʺM^7S\ڣC&ẵ]FWЎRɡZHrw_Gq4[Upl{Uh2ƪH+TD FB4P FG@1T zWA[+ ޓRrIsׁW} [q[OpaqK=%JsC5hVQ4jYuj OVUա?_*{2>EdYTz7.B~99( 26 }=+:}}!,.oK)i=LSY>,e$mOʡF@"k7@bH)NUOz-I+n5W@x MpםxNQ5sdr?*˹V([~X?k~*iw  Y4Iēȇr ǽJO) 56ֻpgG 瑌z{iN-_wZUi b==tOw'nCm9Oζ>vz,P,X;ʛJۚE#֭_KtFT@Oᛩ,Q1E9PH9.,IP o-OXɿ"o&Ռ[l( Vă20<}*8F1*E#:qNU5 qO)UGS>͹C9朻3ښWG.IA&.ഐŦ*%@Om>!0=)]J]Ǹf,S4Ĉbg= 6Wאو9U}jgHgnNriv/1gxgH>^6qM+iwl.G^qVf "_Fv_؈*>ˌUMbpΟŌ_4keAz{GjɀȸSi>'֜ymgi^ j~b8=@c'48F0,E 1rxSGOVo~7sޫ ޜU&uW6Qz#łظ}1],k >|6ٟSߎع>:瞼׏˩y1@AQ?Uq)$ZJk{w"Lzql,>!iB^G#oH_(` cG,.c# + h?7L?wiDqԟ&kn:Z_`C{x*>1MPG}'[PI|AW?:tZɋ=V F:kN̡5u.EyMl:#xtMBfȮ"(ndJugڹȚމv N-֌:u-gNU:7rG0T3Y)+_3ì̚lug@Ƿ&ŞCs̎x<u 7Fe)#>J̊W>ҷڨlg=qW#JF=wu,ctc1y3C7.ш>^i:6bǧzֱo]-2GxEmP`ǽs>/Mq 2+[h ;a~hz 5o…NU2d8۞OShi՞-kK|?-!R&m$sgq$^[B#cʒW-O^&:F%TCyi5%ON?b+m65GDA?B?*GS+md#kyx԰cnzhics$7ԏՏ>ymhРhI8:sۚ'm: !$'`}NVL%B7""IS=-8_ E< fqҬM5ldeÁlN-mbt֥v\PQ$9e{il m`.ZQjFQ-MTF[3xⰮtBaNryjp/j]{or'?+pk2[]y ZQ+~AoE"(ls+r į d<93N:S<&10b=2q޵|o5D>XWVTzZXrxD,2qC1WIhr7ZڼM&.]VK 7Vjh'{o!#Ʊ 5 u-O^P[[r>v&U]GWk:aCd{ ~%i ӭ=1,nSWjIiebY8.LGzZkoȵUx8BZw㩞N7X.dnu}+7*L(r-#EW,wW$yr>j?? XŤh[]^s#*y,*_~.MSHt=Ka|v^]xKmSAN 0[_+ pkꟂVh~H3} f Z @n^^Bz+-l"4R,PqڧI:P^ t'?-V9ewÒ29z|A,eU6nr}p*ηGiΓ9G"E9?JK]:po[l 9;exPˬ5Ō%˿dA]ŅNNDX()l'`9KTֵmE]m28ӭnu3\/UjjV6cך4ɭͬ<~U@kAD`Kg*n\w5ٛȗF8՗$9?4t'9'ҲᵰZ5/C[ߥh-2N Vm'BSH 4#sY7lba'hT8 [GHU@|OAӥ1cա\`d`{_-pDiqLcb &H]]4:P" *s}j߁<kf% $e,9s?#> ' @=ۇo8H%m>zv?붗Q$'8$|]NZ6Mbi\C%O=>~i ry?L~vGqWn-TR1M3q<3gBF;RqFVSƦ-!*T5yNJ!ޤ^HOJfZypFsohĭZ]B*;h9?'>*ʗg b#L@%y>՛kHE 7uL wqTztVz+Uʌgp.yXmn#P}uk3WmB7Uv'1hX' G9- ?ώx]IFXpySj֕r4 s(bcS /k$: ̮0+Lޝ^{DEOil#׷?nhbH{b2UM:ŝ{Ն&ݸTD1=GJay緐[/_#$v L@@{sPdP1}?EB]$WE73/Ze}$QμZ9/?vN+u.; j5!F}-+1QdѦ{Fv%KbGD+v5yh&\<6UwgDrΩ%dj9mf~QSCb@޴@We:J)`ch/ޮFpD`O޺ٿms$W gYQ8^˭x^=bٞdĊUs_8q|=w6ͱ3hU#NV2ZGĽ; ܤq1/F1G_-9 F8/l2# ]} NqQ2>ӴV2oi2*d79Z>|kM8\wYLn=Z ͤ&}mYW9޶w- j\E*HggBu>{@x-l5D:H6eTcCK-֮ްݜTսj[KtG'1k{߅Ѿ oI6s(R ˒zcҾd345{G:;C@!}8޺_fE卼vl[aUm` d(O<%}|2u s˖6'#9RGCڦsQh.vl}@;둛t l89z2|Ct"I?t~$꿴7^M^E.2yzwPo4mgmߚAy?S¼RU%d4*vS]Oůh&@!+2ZBMX,ubKic?tWp d/2C4ii:1Wj$6~%u"gw_߅,ĒG<;{tc 7aw͛!%} 'Jߣ)sc$㑌-nJjLB̸M}AN"">8s#YVνGOi|Bz+ψW7>8`iU7z~3hȭ7l.>B;~9}_X&vy`eܿ{nnVM$۹-}:UKAź6jbTq+M~nA^ ĐqF{擣jU]\f?PxXˣxAahNnd(@銻ͪZ \f&p~WZH_v '%]H$R-ןӵs C޿A%rs*{hf?Q[gg?( 2 =ݬ;DzvlIA [ڔ[J@YR10:Uؒ@Ϧ4][56ZñT\3t:q|:DY%prEr9rŧ^1yJ$_݋`P20I 5(ypfoùCi^ŲʷW"h#}Mt3iyivp"RI͌FP:K)چN/̡HP˰M 5] n׊t֋<(2c'Jk@JO624(UϨҡ]Y._Wՙ眯|Y>?F=>Қd?^ꖱӌ6Ra6UʒN1ּkr|TT[˹S('WsB2x[zF`gI1ad{gBamǂ`M*E #zXzW[V*i`FE_t(- .}f|./3.q{?5닝=Xrm鏯JՌ)\&^kSÚLV:t1Ykj։If$Hr^)嫳KIT`Ton& 3=jq-ƹs '5%s 3HDɀbGGJ9:Tz|D_7kaZW1I4G\'#&91\ e\g5a4|Okб8<{׆HeOzWO<]F<&$t:-xψ_4sԟ$7 Ry?塭W0,Jmo R M>76q ΍7)lO~ ir#5XeV{6Q]D72ۢ,>^'oYP^'}I(ͳlIN9,.zw^u;/ًc Nw~ ׍=尺ɸ6uI3n8 ⱴص RHuXMݲ1}:[ݨR2{ bmt— Zo|OC*L.'E\L{޾ YLMБuHf_u %FfZHuÂ,ω%{xV%x"^bi|)`W G\4wH;].SE4ݜd(5 ֹ#ৌ_OH,4匃yn sT7;ݴ#YUsJ HQps].;Xp|?ZV4ih|)y=|F{@T5T~~ÿ4߱g;o-I-3JSw:4H]r)ڲۼ0EjjSg.Ʒ5Lxlu[NW mopD0_\ZOkN9̑$O?;7wiZ8NW :Yژ+5iF>g`2:}rռ.M/|a|{ I .<[0?Ǔ( F;+u) }(p1j|$~=C`؍@>]>R 5_Wm<mV`gǭix"I:qQi %ʠk[2C,3{tkV8z{S{~|P;& ,p{n݆qckotHhPB7r3U (ܻ.f/}sƼܞe>⎙tv&9?lRH ߭EZ}#Eg[ޗH.lHϻ,B3}YC cmekԦ_]+#9HY,PA#p|'<o|sWQ;~jBb,սk@`+Q&n>IW+q׭KjfP쑲rr2G֮ji7J?Bsm򌬊xp=;U}FÚ5ٗߥhxMhn!O+8[+/Pu>}L\+ $=Mk h_OC,؏ǯ]L?,3^yO{U==@kSԾK A`ouݪJGWˈU[/k&m?T 4k1!"4^Jk~sa N36H=zU46Y:X!<2ZKa-b0y9u{XW/qWṄSN6kP-DXen,mx c:ƯGlq!b7$b/>" nVFOe^QprN8ަ Kp{b\;$FjxXyߧ#StkyFӞ 'u;Ʉ Wd8i&]\ÏjYƪ\Qppsj (b1ai&]v̿=2O~M9YͿlʹG}Kn"Լ6Y!\qZqx[<>ػmN83ici0N_Bc)[o{K:@cp9WE yՁW+wy-R&zcdGOE&ciՠ 8j^%M 79=ڋ]Ll5I m}?Ry+J,3]Iy3}SlrF5:!`Bm'D%êE6Hu+xr3Zb'>Z),|]j!u9QZ>h7/Qn\edž7ċZͱot8M| z[{#@txDG7S 1_:/὇|ok?u;YaOF9=+{`j0@"u=ꎩI7!nI\|uޮSn/OA5 j$<'Vg|Dm u1ؘ n^9/Y%@n :ySN-#.mf9r@1gF ;X[@Q@ qQiww7Cp$UQ#KPnӜ&?}4=,NzOick,hg/N?#ckmC$j̀Fw4ix9 [P9]i^i #-ci6U $Ғcuª;ķ2ɹ!VY0ڽ *1V׆xƑ (-zwV*f@kN{Xt|!y ە+JmAi$i q9zVbmO5J]V!QcnNqdqw7>u#]p~w)GGsۚF< wrGz֭u3w*:GZ7wԪu K+ #7^mYG嚳kc̬@z{Itʰ֓`X3q՟aGCV$~UrBU6⣋r1 p%XcBzj\7鉲@[KJ1iR{Aj }-̒>^pkBZ)'`rIc)v@'rҀ9 |JB3ǽ>F9',/l{Q$&1ּdžFi@V+c@q붸9جNWZT33$cS^~+4򦿕>^5aYcix9h{5eW cind2r;RȮ+ގNŒC;q֩iUlnnP`llA>FN>-ntU-kR6G[8|sV-V(F qHd"?}S/Oүv3 ɚڸ{Pm5a#C5jMrB)~7Ldy|8u 6h1ȯ5ʡ>b/l^ ҭ,>taIpP/y5c}Mzu3 Wx'B랹OD$q\G|@TwѷWEti-+Ex`BC!  'B+/5#m*Nԕfz7-?vPI  'o$|F8#z_}!!DB5a21~U{x_YXhĖmE{ڭ[it&,ڸE8K.X ,A[[[~1R[h>>FYfQXi`xXGC3 ip?x?s>Z5K" _8^tAr璼7\B UELc 3[HC7mn~![wf^u{RIu#ii (A= * X_j*0:5FFGp5W;I3z4ªGZslL:`3Ȧ\ʫj^0ޝ߈#W5p\S)Ju"Sjw7u@e;ŸgqF? [<'U'0OEbF܂VU+XJ7ig/ۣk!1kWÚ7#z=IN*G@J^pϦCUU@?v585vPg; 8664.M.|QCI+|Ezr|>i)-c*8&%NIנß,nck8Ȫ]j" ִV0YFwF:9N@iJڽ{pbss֝,OYyFG8$#^d-_ߕݾ!8 ,SE+qE*m xkĹQB9 BaWYzjψUdx|TI?/Ƒ5%Á;q?-tDO:I\0= 9ELp& 8w27F B_68P<{gR=n@8Wϥi\kDdrh{+E$gU_\w ޺kf9r~[UYA  Oog7۟çQ-xmU:s[2ݦ(GwO9".<qIK$?'ϥiwDI𵍚J.B9ٽruZXZ+5qGA՘ =k)-.cs\\ ׫6ڔEo~'a=bP^ |4aAI ,%Է+Y}jߒ7/($gWmn.;ks;\(jC1?,G=Zsj f,QÐAsZIMë*}qk ƗKmsK?NG.oiڗsPBOJ&0`Ve9xZJE@A[k((_kX.'͏OJo\lq\t՟ GAY#ķW ,ZVwh[Z;H*GcsCz [ۈJ̺Ե/N-̇sVefCud-@B4H0>gp-;6ѐ}+lyFɾsz,ZcM59OL1]$I"[?JZ3: /-N-؉apG5{(v_ q?&IBQR::+ڭe^çOQpuƱ0Y8z-EbȨ-buio$@ufMF$ʀv@<;2QѾңq_M%ŝ+HՙútV^ [ s}kx"Tz 1Rj`w 8Ъ빣x7gE&.#T{TڄИlR8CqI}M6%L}?5b59)Jӭt-D4:) k]R}v٥",:yc-X 9e `\xiU$~T,_ҙc7âvx<7Arza\x-6N~wC67-pJ|%oΒnR}bn|CnM;N;NZpi) Ysr+BK]DpAuwUïj_Ǎ[mA.cOAixb|<n;m>n5Y{Fbdy8?𪓺@Mb/ )шƌ34N,vmxu I%rV40EҔ_lv)9<q֤KP&o;?5+[C7U?~Z_$"'S-ƍ#9'Wͺ|.Nژ?$S 8=x䒏D,xĒhj:o P |wi{]2/B?iظ*cPsҰnWwqOe2F^}9U+P|AG KEfCJm$V,?}-Jr?!Si2Hߎ1벖jDr!q~x涡̪˲)i]@:vQ2i,!^pxH>3]Ÿ.nawq_ c(|*-Q ƛmnu͓qҴV5R-5G?f(x8O#­ %8p6[{MDH0"C1i >&cSw&eK-9#|_=WfsfϬo~׌40تI9<x@="-V)`YPif G.ONk>(6?p}X~ 6Ie1?Nv:bA"1y'3Qg[S-e4~ /X&vSO^uEDcz\֖BޏPϜcGO=醱&6^WfQ_j&Y$fbr=xgZCG7wmd7;68|E73wNˏ>@|B:ǕUNyj%qa=~%ȖSj8gn2Whe'Q_~:2\xܕJz=xxCn@9=J >uX6q)!Čz`W"f&֤+5x% +\j?di-7eŭmM$8p:Imiwi9 6b9kX_^ċn*8 ,z' 3]Ctݧ7˱1e" bJpLW' FtSEW)1b I`z)iG'n4W8kTGtֵFCurcm%GR@1g{=^Dk[Qm)<z{2iGM ;$?gG|ک=Ɩs*^Nٞ:h߳Ʒ۔v Nw6sX o'a?Eo4=Y>W'WPb^ZXjoQZڰRr2Iʶvg,Qy$Sk?g}rc@1eڡldP!~O?1T曽Z$- ]jVECm4ӬmQ~g\+Ԯd^b<*?~~:~1zG4qY~Yx+ϵ][bQpN?5Su~xj9ZʄAQ;/0O]c ) X2?ع:g,mO=Q?#CYwYxKpBOӆ[ώ-8N둎]+C}It }tO ?}tv_H)7zxϯ'ʞ;Ե[RE9A_D~Ϳ # Z[G1=;W]24;>X+*BWxbt !vH@̋,G涌0?rᛤjyPWU r\kX?gY+(grV;{mA"PzjsC5—?gYR_Rn;sŸ{5vuWgםZ0-{S?]DŽtY;{=Jo&v/(>Xl`:⬀Ң)QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE|W5ػχSeg+̱Y vnre v}l -k趻<7X*SjWzKm#+oS' h{h?OS"~m"ug%A4~={D4M s_?D?4d_L!o j+jzU쫴4BeWԃ'bUZjGfN㟄muXr) `pGOQQw?'ko1"qI, F8J6}(T/z&_M|ErPcɥ# xHI]Ba I̙yZ>#in}5_n;i(TZWZ=~9 (B9B(|u 4:摠XK0KF;hBXcS[UMGCI.A  g}k(OE3_>sE1 ACAs~`|'/Z?>L~GFC\蟸 x ֿrlS<_9_4Q@0?'76)?Wl$>A  g}k(OE3_>sE1 ACAs~`|'/Z?>L~GFC\蟸 x ֿrlS<_9_4Q@0?'76)?Wl$>A  g}k(OE3_>sE1 ACAs~`|'/Z?>L~GFC\蟸 x ֿrlS<_9_4Q@0?'76)?Wl$>A >xº [ V VNs? u5~&|):- ++VU,B1 O~]y{(?s[LЅ\D68{w;V< ;G<7'?U`hܿ,?܏x<7'?U??)®EKA/>#~ ;G<7'?U`hB}?%~O߀ZWch ;_ X/DW_Ÿ*߀ZWck ? ?~kS]_Ÿ*04Qa_?{?xoO- ~kS]?,?܃"^+|Gg EOv?vxoO- GKψ?)® EOv?v(P_rx<7'?U??)®EKA/>#~ ;G<7'?U`hB}?%~O߀ZWch ;_ X/DW_Ÿ*߀ZWck ? ?~kS]_Ÿ*04Qa_?{?xoO- ~kS]?,?܃"^+|Gg EOv?vxoO- GKψ?)® EOv?v(P_rx<7'?U??)®EKA/>#~ ;G<7'?U`hB}?%~O߀ZWch ;_ X/DW_Ÿ*߀ZWck ? `|5~) o2.7'223\ĿCw\h<M߹~(ת : ]Nt KİYm@#ƾvK=|T\792\03g?C&~tDѿn1"3A'/F}x(7!EFsQygɟQ4o7?C&~uES"3O?k?ho7G<MF?D?6gK&~Dѿnx(7#?O?l??L߹Q4o7(G|ٜ=/]!EFs??ho7_4Q,>!8z_t3KgovZqm Hbs|ҫO'/?~W#|#>"n,t!2HEk7B z`~8'}c QIN~=foSSt^RnekrMr>.4F.<)MsLQoݘ.B|^#KƟMt;'f{ CbJ#T%[o64x:[MpQq'$d2]#jGX3jڅبBo]3x9kT"6祠Oy+j׆3*Yժuzm{ӣ_9xS۽Y[ Q9$k!=`|ܒ)x+ž慥ٰ+YZd2 ϔAA~c~-;?-/Mk&5q&--r?CG3Y,?.*֙&#E4/^{:L xH^oG;AIH~]K,R5\JL.K.MVi~7myccNEaomj]B),"Tm8SǕ,^" ՗+Nǥjn]v}gin࿌ .:7#MM}Y`ˋb/U[YmdtWЦ{ߢzGW+3J-D^N!N08$WS eNkN}R} ,3(ذ&WpI\#jZN/#p?3)K-XX(*֯ҭ:5-> cdSum{PkǙ~o>^xzk+(/5nbv(':V¯'cH=z-278qg=ԟ|V?>MyFB^/Hǽn|,1o X^bKc=_;?B}6pYoa~~t|GF ^Eض!V+^;>(_Cxu\J+^_e{{*=$vBQś Fe鞸O i-|% VZn gPݓS2ۂ.3r_)=A cgMV+m_Ҟ[K=Rp>;Hqת%)%gmUv_Ѣ*SbW]w"i%Gi5՞ PuA:_gjyIQZEc+SGׂÆ+?- O|sgag|M,-73;^kO:/ǩj6qϧ mfa^ {%n+Q,Ι2knTݷj[ۭ߲ޟZB-a uIo YW졧uɯxIlamBDxFE`)}OąR@ſ_*5+_kR',G<)!pOoZ|J4}^T7(HF3$0`܂H/O)m%klC u)ۛ|K{u8} |7~<dPI˷x[U5g#úFgZ]iqɣweiTuCdk/ĿiSkO{ϾL: SDW,j'ׯngY`WZ2[Gq`bTxEfs*ѕ\_|}GDW,0cQ *cksC>exOzhMO8K* RT6J *s|]x6X%XZ8WY%|b s;(½IiW]UL2 pzU4=mkfmBѵo xzVeH! @##x*Ey} Yx <^*5 iAYYQXS=|W+{[Kt^zXlKh;oW߫ (S>2E`K_'e΋N[+O/GS%_%D(\((+{G6uC_p>mWAoa"Gx$3Ӑ?3(?ݟ{/o6$MEax </?+Ie#z^5T,5=_ktN[-tfhrJVSAާKI㮶N6,5W^*=OG;uwW2Cwiq tkXGj?\I<}#޵_Ƭ3%36"55;w>9U9$SΟ"ơq,nZF bz(n&XELDz\#?d*>_:rc~*͎|uu}_|i (u<ࢊ(_j:VIw_`[/5ƫo$'>À?~LXh|+K57$9bٖA2#88h֛zٿ.2zRK;u;ݞCE{7ONq^2 _7G1' x=vE>;/$Q kDSgEP1 WqG7ON}C/L?s2^ kDSgEvE>;/$Q 0 E{7ONqG2 _G1' x=vE>;/$Q kDSgEP1 WqG7ON}C/L?s2^ kDSgEvE>;/$Q 0 E{7ONqG2 _G1' x=vE>;/$Q kDSgEP1 WqG7ON}C/L?s2^ kDSgEvE>;/$Q 0 E{7ONqG2 _G1' x=+w:FL ;l(\Ef*2y+8#__ )U*H#}+oyO}&Q=i>2a!21z26> f6ͯHc eHq?m?G<]>+ >օ6Nksn(?m?G<]>+L~b{cF.qɔle#?2L__ (?m?G<]>('|>b{cF.qɔle#?2L__ (?m?G<]>('|>b{cF.qɔle#?2L__ (?m?G<]>('|>b{cF.qɔle#?2L__ (?m?G<]>('|>b{cF.qɔle#?2L__ (?m?G<]>('|>b{cF.qɔle#?2L__ (?m?G<]>('|>b{cF.qɔle#?2L__ (?m?G<]>('|>b{cF.qɔle#?2L__ (M?i8hCIuң34w;,‘=s^e])9϶ Xq}3 sc.}~*k$t?˨(+_I"o*|B78>ji vL:vw[$((CyO/ÏShȹ:~ln,7#'cVRݸr0jn_"_?k֔0x_k~-Tʧ哺:A>}I'I?Ps'n_"_?h%# &л'_{ON_T_LL y$Yv$KXn_"_?h%# &5C}X|sOs[kx%6D77$ kDKGsMv}{@j'GQ^ kDKGsM6D77$w?!j'GQ^ kDKGsM6D77$w?!j'GQ^ kDKGsM6D77$w?!j'GQ^ kDKGsM6D77$w?!j'GQ^ kDKGsM6D77$w?!j'GQ^o>Ğ4=WN7[ ?ͮ+DuTpkī Zdj\;ǟBJohվ#/t_u_F_< yT9Ӟ Ȃ__B(͏Š(("˞2;U=]kxV]١飸X$q_k@U|9LOI'({j<~ h_W.ڌnԓ?bJ>#7y(D?wnj+(b?{?'!?bJ>#7y(D?wnj(x?`.tNcq|V-3C*x`@yA+ʤWs q/-[Oγ]j[^g : ēMW=k_?r?mKß>n8oŰ}_)rVRE̝M}Ńϖ:uPۥ.In+'mwѭ<¿tW~5nVU?,;_|73|-ysy}90<9E}WL4px 1J;F*]_ͽل*N( ( e&mu |}QjK={8JJ$~6Mþ/ΐ-|=GӮ)DP2$} poE1<58mdKO470[wM%>œ* /EJ lVYjgLf/eV|n+n׻G斑2x\|IA~7=Fv匶Q}8y8xK ceq6t/+W8o3ohxE}X_MhȐ̿:;u<9e붩#%֣1$kAipfګ!QL&kzMK{A񥎛 %^y2;,RE1`X s7Ԅ(NXS|\T_%\u춿.xÞU`")s.{knֶo j5֫}ᨢRJ[{XJ*|a',oJukO|KExN_n/^ɴ3P.G;q@bSW DށSG𥩸 !&!y/+ +n\E:x| o/_i>ys^I^$^Z6~ʈis`=G?|2'PЯe_|fHܣml bQVzZ׳v0} XuWJsIGUZˊ+K:uV7fMK1UI1ҀͯZd%(EQ@Q@Ry{(?s[#uo?cGv?Ky_GJ__LO*G}0,5 <3g+y%6kjX–%[zu+O U?(vo5?4\_XMY'եMѤ<_9:]O*Ti6sY3VMY;EJ+?2j?Yya+ T$]\*Bc漆yj?ٻpp,޹Hn[Ȯ[׶2+J3?I/?t>(3>QӼD@0Y[Mm3_#U=Ic]AVuUIaO?g~'-nnofG?Ksp4T7%p6>(T"m/r|{؜B8zsօSr~˳zF[k\q_|G\oѾ&:x׵97Ә`(d8&#ſ &>A?t4͡j>Wsv f f1wOA*v\aB):4i4滳i~]bhՋUx;yU/f~jI/ڶtm!,lU1>0~$xC^w/߆h`*QFYʤh;X|.'t;h7~}m5 YRo> ˶6 [k2eMG+ecNo-x KϽ'|ɡe4yyk[=woߴxtf ZI#F߱y,(fko/ ^#5h6j/!RѲ #GBc5k[{m4[R֑!#!ljY{,BU$Qk[M7ug{+G}.U[ 'N)Iڽ,qV|Zyoc/-EύoIOũi-q GdS17(ݏ<~|zIk'<=I-[SFw=w|0ZVb\!b5gq'~?(xSY բnnL.͊i7[[ 20UN)F$Si.U']5ls<R+JnX>g)[ݳW˪+&g_Lh_o:ߏ$Y,M E%,Z9G8 y#q%x޵3h.{yh$4m#3p2R >+8YrFuxVO}OR[XedHaCeH5ƿ,>$j٢]Z[qgq+)"A -=OK_:օk2^]uvGu${ZE9{c;|AC~~оb?jsΐԳ ݶTMʄݞ1P1jZ|K\-778eibZ sG[/w+S:-s2GTz_d>1[5}5|6EwgKw򮙒Asf\Yf;6IojRσo~8$-mM#Za_ZAB4/d8 9Ӛѫ+IAknk?M|G8NX8J4eIIQZ}-??mcw4|sm oOm\ xQpۑ5-㻯ضxX2=`ȋf6,8ߌNlkS寉|M|=6Z=DfO2k 5uR_%I/?COE+_X[if$5ڼM$cu2x8&N:nnpR|Svm-7GXjIST(G7JW])5u?+MG @{x m^en5+hfƅavp >0 >>| [OѼ1a.zmQ JYʮѸ+[ iW#t+9 qoh;`>L;püF_8ME-ݮVsxz/ٝ9RMIﭴ~u~ȿOO ^:QB~d70vb)  A\aWO}`7*2>FA&L__ > xun{>][@Y(LgXHSvHCkw<,`|Ihݭ<)to|oMsb3sEyyY5%~kCg%+S#[~P|&[nGŪk""Yes܅QH"[ݭ+]vYM>$^wC /;qπ񟉛V[~MFY4AKfc7*/ YRNu2oඊos!ʰ8;֤)Vﮩ~axW ׍~.mxg:4 -pUPH!8?Gī-Cս᰹?ڍ ı(S&d%]g*~k>c:47_^X/M2'⺊I]6_t~>8|,9J񄚞a6I2XCcjRYpMS\tl5x8M(&-UmK%oCWa#Nry[^Ӌ~ݒZݴKSߢil%?exᆵ{+VSiR,^47sARAX`++c_ٳZÛOk6?>)jq2\Ox7>XF~NVaF&I'NKk?Ug{~aRbr]\mw?+ ٳ>'xZ߃ Əay]qgxDx#)#>_MU;N]oO& v ^6.s,l!$϶߰w:|*sxnkmCP/#Y.gCtDF6E(rlw՝OjSa}NJ׷wcQdOΖY~[P0@EvX+_+~ULy' V~|5,u?9[2,mˏ0ml?d~x+|)M|]wg%ݙ* b =NTa+$^g J8jBVi*J2qK~3D=Mix{P. l 88V=~?L_ڿ+|3O=Uggnm`'Y_1<$;F9':E/֟^xfA+O *FOu4 c'p0,=ʊNJ7m%QRi+U{JRm蜹Sn~e  W=߂>9%<%O-duX7A+)Y ~}׿f̨jivN6h+WY&잗M&tg(]CE_3[U^I}19PQWV>׵E^GU _F"gUh|m߅4ož VZ{i7ń~t2 tmprg^_'|e~3蚜59xNv(C nE=;WOahϗRiixC$etiIk??6̾<4jC7y%r[GUIfwP _<_l|]sk?<[!TTo U čN\0g HyyZ5ͼKt:ĺ AWbHSc5x: f0~3Z%jv斺}.}cJ,NiՔbӨڌ4ۢꗯ?$CK⇆~)x_ǃu판Cqd7\(8`2ُ~-|ckye|72[%&J)̧ˏr֍);{/)tןLteY njI.mmk;~_~|>u|sZYr^+wi]bP9D+L6K]V_&$//3-ɳnNOΤg)%&e_[38qΕ: 9r^*k< z%Tn>+5>t'?_S|Iq'~&|_j^[rL'H1#d!dRT]*><|Z9?|@FaZ7w3idc 1ږ[u,r`Xj )FpQ:s{h{JCJ*Nz7m{xk 񏈿f[2h:o,mhn8H&cPX_Ou4atuU m0TI*q_ ?g˯?UK+nnDn+(=H8+x9O+r{rړWյLǛܔ+NҊKI诮2 ׿h߉v^l$GQ -e=|dK| xOn"p KYԫk+| ~ΟΜ>xSohvRI&yA,!+d ^{Sh?h]{P1B8+&XYW(hYAyKL=L|k )k梭4տ3ܫn*[[ɤ"ѧ.F'jҾ,~$_\oY٣1,Uy?wn9FoΨ{74h<ȱq?_t]+_<q<i:3E *tduI rpG6? ?r?|Vݪ{Ս׍/%2 i}#qZߌ߷Yt_t!{]SWm~4?}jQ%ɱ^U#9??+<:+V6UҒ5`'qh6__?M񏌯/<#ͯ\\!-N?cm7x:_xM]b}o:Vlo2Gߴ_>~^ҼCM=IlxRU~tQzb23MoO+o{EԴŵ [u;rua&»|gφ_a;bQU6by5kVyP.Yq9pr^3>"뿴w|gt>/< }k%^γ0D*$pkV)Qg5$?iu.dy[[Sqex2&8RTU8<(o~फ़=~St Qxr1aDZg4\H'GQx B^65ۓ7ųiwƍ5Ă8՞]A< *r+mgkcK5_H%.:! *:5YRemތNgy*rUAr74ܹ]O>?x-OX\ypua7(8¾:_~ֿƀ6 kqzIf$p<ĝ(r$PHOۏ㷏~_:׼{oij:ԧdo N7cng0g+k?hOx)^ V_r5xTWl`892 IQ-Sq6rJ\.gWy7,E\aS8ӌu.i謕/_,~+8|Q3;Z|ѬG5^Iɕ|,fDz|.6hb*RѓK~b%ѯ?Q~&Š(c(+-cU]5MGCI.xIo揰(p__?-+k M Mv|AOG:nŪmkHPؖ%`Sw)k+S%\oӭ Qu9/+]Is+tkC:J&Oݾ.-=/40~xQy^1t( {$i8O,a-_2 ½"/qsƚ-Ί4E`6yf%s}^'uiӛ+ԢG-o1sU*SR溌~︭{Y|71^'u{kygv[@RɆ #g!~ |\Q-:-ռsƐIc#ƨ~=z >1|k~R;:qSqN7|ֺ}OS,.5c)ԩGQFIŴoh~H~iWíkMm<3w*t${ig(>^g%{DVlOL)WJQJVrkk&[C?Xk>+֯!i} eF#Ob Y?j/~x#x:DZuȬ76#+BXhnzj*0%8ism[I;T(M;);jiVMZEF2\ܪ컿t$Rߴoxo]5@IŅdn#XHMfԌ_?ٻ[;|'h<ּu {[ۂs1HMբ҄mfrj4ڸx]U*JT~]aɪpjk]~ן9Eޏ[dd"eCB7Q"c$v?WL.;mZKYB0kVjm2~eü?nE ;* &V2QS[ž$tnL>B-9/4|" @߷7ĆÞ(-2>ʱ<}E|JW!ӧJkIZ򤨿*+FRGooi._MncF c zIqiook+}q$2!!sqovkϳ঳&0('1/H+L' ^Ӗ1o4jj=WB1ѝ)ת)|qNnI8>G:^/Slvޫu *q8('99=ƌ#N;$QRXQEQE/O:7 ױ#;%=Y&AZ?9?Qcw{t_7GW1Ҥ~ݟ m"%k}a%#Rc0 2F~8caM-;ŦWZY~aS-*mQ״k`sߏ>.&Jmnm$e1d(YBq3 g z#4ue\IiZkEltY^Hqk[F(y78@0 a*5iI-tMZҗ3E}U}5䃕NыWmic ^#:gMG]tf}m1'\(w?-֋q/=S]c42ΟIacrScvO"қۿ>V幺yi}^'դ$ߧگS^ d|@z?n.u0мq%L;‚x=|qKxߋ|}Em=5$Y[\OC~^txG 5ut\yZvk~ǘɷz4ni{+_#,|R}xJ.hei0I),[g_|[j%9!io5ms_Ee+\¾"QRQ/ntҵb^.'B9blɼRp|=b) ~_!潢M\^[@Ӷ^h&Y5:˖6l<)w:quGu"\ʟqو$vd:z:RSz$w[8"& UZrKIIm7սe+X*~ȟ[Oٗ|XH4{ 'I,>lGmԎ-#@ॿ¯Ū#; MͻX%N ^g󪊌' 𕡈甧{\zl^b ºp9+Y'v⼭OSjo׊^aur,mid' "9W]/%ZGgēxVPtAnX˝-?mk_^|kx/ 7_)op,b3%4 ˱Mi$U? 3 s@q xr]6R1DG ye >܅j+|+̥9r]Z5o5Ϋ vPݓd$:\  ־~Ğ:5MJT[幽o\5q.0cg) z+ hJI.Vnr{tSU9¥(7%(R}.}u5kG{;?|qibnt=UѤ!=0xw/x]iP-HpUVW9=ƚWm+ϫu]e[';nVvgΉ|W/|9{Igj%. q w#!]4?n lD~D'. xcAC,USi29ɵy{Uld+%xE%+V>2 F{;TUo%?ࠟ΃8`?Tf3qQ.WiׁtXy{L3z+,' ap9;4褭F/S*pJIh۶mOK~c>#;G⧅*zJ$սLmBb)lb/ý ~hOV#2ۭAu<6=; j"PH EGITI5uoM~ʒS*nI7ړKϷ";wOi5k45mm?nu|oW{X$U(]CE_3[U^Ipp7XJx$np&|_f?N^\b_ dU3_U'V_D[qEjTDYUW\IgN2mmmO LbiJtCݟ{_ُ[!ZB"tX.@ Vgž'nSFMr,RP36L8cox]h|Bֵmz`:Sm|N9;X|f:ᯄKoO ~>vmo-G!7B#O#H BMosi4ǂ!(T9? oirx{9e VhzUVW?8Tu?7[c^1U滦'gOO%ݪ39t3pּbԩ*i9>gtݼvzZaRz^*+e}V׾>ʷa>'SEnk^XZZFP#vFH zVP8^E9Ǜ'dGsM~E|B~ |YO? yK,%F([i##"U>:f4~8𿌯)|_r:7wYOHĀab#5 p@K^5k>2u ,tmN+X"/e$<+K$Flg BoKx 4/kV0'Z-;s#9%-H.m joKEeׯ|9mudLJ/,gͳ2Ybuf0,b ;HP!xJoE$)mmȑq11NK-Ԥ7k7 q$dOe_+$%Z9(0i}UeVeoD?mo}=SC{kuΥck#֣X !Mok+4'xTVqO|IN'4O^iNxWR ZK`D7]7<ZxחDž \C|6@}_w~ퟳ<_*~mwkۛ*~՟Mo~t|V5}3KVsG2y\BNHȹd'U;V Ӕ3 R6##4o( ?e/x_ukúVym&w 6AR.oP˙«DA|K­ZtWŞis_^YHbYYHP7K$z,ʅӮ-dyu^SGdKVUmW{l^Fe"xGpboY\Ypp_@xİi3*)l*>bW pGW jj_%y Oͦ{oͦ^iډ >Y%*aK-_ut9^ .]NOwKKsŅ!7lw!;F?2^Y7vT}K̸O(N3 ͫ6Iۣz=O |;-Ú|:|\meH(ggk+\! R/,碙SZuԩ*sn՞PӍ*jъI.h(4 ( VYg:ލ 'dvdX`ϰV1 q1%f|μ:[^4jE=4=ƾ^Əq?|׿/(m)GI_  ?q?|׿/k5k(m)A'10Oƾ^Əq?|׿/(! D%>c{b?ƾ^ƾ袏7@k$xD_k5hc{b?p I_  ?q?|׿/k5k(m)A'10Oƾ^Əq?|׿/(! D%>c{b?ƾ^ƾ袏7@k$xD_k5hc{b?p I_  ?q?|׿/k5k(m)A'10Oƾ^Əq?|׿/(! D%>c{b?ƾ^ƾ袏7@k$xD_k5hc{b?p I_  ?q?|׿/k5k(m)A'10Oƾ^Əq?|׿/(! D%>c{b?ƾ^ƾ袏7@k$xDSb蟲Ÿ[xUծ"[mhDref޺k7. 1U)K5mrh{~\/~ A+U_W9t/&uK?.?UO ^EW?*z(ZsOy7 _q+UGB*)T]~GӚGKɿRˏ_U|S??UO ?֜?^M@$~\/~ A+U_Q Ro_#!{W_._U|S?G4: ߂Pt/~ A=9t?Լ/H^EW?*!{W_.Qi?A)GB*)T] ߂PuENi?/&uK?.?UO ^EW?*z(ZsOy7 _q+UGB*)T]~GӚGKɿRˏ_U|S??UO ?֜?^M@$~\/~ A+U_Q Ro_#!{W_._U|S?G4: ߂Pt/~ A=9t?Լ/H^EW?*!{W_.Qi?A)GB*)T] ߂PuENi?/&uK?.?UO ^EW?*z(ZsOy7 _q+UGB*)T]~GӚGKɿRˏ_U|S??UO ?֜?^M@$~\/~ A+U_Q Ro_#`طM'-^5 BZ]]H?:?*Ǐ+_I"9j]ɷo@?0|;BhƬR^\|E_/%~Ϳ WwOWӬ6z%$k$ >س䲡NYn1Qi;~5KV"sF)EJRmZ|~6? ;Ěޙg=+H\LrTV??xCEo>Y$Ux͎+/KW? F6aͼX\6Gb'쟉T#44l-~Y^oYG~/ $QP儓ڨ4mx%[~0_1Cg7> aӥs_dj÷_bbݭfE<))aweԈ\tSKG oo)/?|F’־|YׇMW[u6::7 xMi iԿ#|w&i 61*f ݰhœc^~  >+xvM/O[ ,26܅83W PD<䂓m$nL_lT#I{hEK7vUPϨ+FEK7vlT#I{khU0? #ѿ~-R%/R^(4} 7olT#I{hEK7v=?_p}C >=/R^?~-R%9cOWPϨ+FEK7vlT#I{khU0? #ѿ~-R%/R^(4} 7olT#I{hEK7v=?_p}C >=/R^?~-R%9cOWPϨ+FEK7vlT#I{khU0? #ѿ~-R%/R^(4} 7olT#I{hEK7v=?_p}C >?K?v0״5Qnn,X#q~o>s.w4_k˟9G4_k˟9\U{o~5z漚Ze[%Rud 6>dg$7u붕FocF֕V8Cys(Cys+V[\~:&sG"Ж^@'f~ @M&X iFkx䙗ҔqR ܤy,LvvME%IIg# %Q %Tp|u׋,484mWTi1~[Av쟨G7i5c]W,^T6xfYz*rO`ҊMI-7(Df4_k˟9G4_k˟9\U*;ُgk %Q %WEXa3I|Eƿ<I|Eƿ<QG*;{zv_~._~.qTQާ?4_k˟9G4_k˟9\U}b󿽇gk %Q %WEXa3I|Eƿ<I|Eƿ<QG*;{zv_~._~.qTQާ?4_k˟9G4_k˟9\U}b󿽇gk %Q %WEXa3I|Eƿ<I|Eƿ<QG*;{zv_~._~.qTQާ?4_k˟9G4_k˟9\U}b󿽇gk %Q %WEXa3I|Eƿ<I|Eƿ<QG*;{zv_~._~.qTQާ?4_k˟9G4_k˟9\U}b󿽇gk %Q %WEXa3OZؽ/kj:h{v{p2xz 'H!~E_[U^Ib'*z@ a&|_~ |:)|&?hzue^j&ZF< 6T;_I~I~ZuI'9[,'`Q ~yN/4`^N,yVxhZ{/eʞ+߿K_o"|LѾ"íiɬ0PuvZm;r=G'1|2:p[ ^ߵTk G@,@Z*_Խ+9I2ѵ.VjE/3hxRܶϤ L@J꥘{&j+᫽;VghRt6Zr3WAg }3bm%bѦZ«}Z/XIkkgilz[Kmo׍tkn5ѵČ8e \Wz+JKV?+.JYɷQ[EPEPEPF_< y$yie8x#r?|(Q_Q@U/xռMswuq'܂(Գ{6vɔ.3r-~T|wۧ߹>&|@@Y6XsU\ąH2+Oh>^<ӭ<7i"@CӠ:ӏ3i9uk+iy\C:ȧ*\Oxz+e>EI<<4 B!+tL4P#;aҿiڻO J ~|H7u-Zm;Pǫͦm2]UmҪ(Ǖ+0sDӌyg38FZ*dﮖOW_Lc|E~#E=O}U#Hg ,KD Ʌ_/+$gf]Y.9EɄBG[\rάSނmjO?3У0jvm'Wu}?E~8~ٟm|i Q|G}+ۃ+}dmUTJ5ƿuωΑyo SH-&@I=1%l:#y{HZEͲo>=^g)GY-y~'m,]OZP?_ W3OtjSYYuI՞$&,HݡyiaGpO 4]<4S~v:acT2Mzo.ӴVϊ5:ŖqrAc*˱¨$\?ۋW7>xP ky@$xɀ !r@ Ɩ_FXty(e7աZ1/.IJ^W OC L5 is{O6b|v0uj^zŻZdYyР?3 dm.+J~I7 $խS4UN|]?q7%ջF_:>m?[~g}Ka,--&(Gt?=̲N&x\Dm(}S)p3 +I>WWvkQEpW3( 75Q_t¿P,ߨץ>~}y9\~ ~wo=b$v̊AhY1c}`C۷~7c85]z*Q{\p 0i褛h՚>/x#Ǿ4M+XME#JU`C(EsWΩ|==yڜZ,73"K,t ш=|i/~+=|M ɠfVQ' S5o~']zት%PA1vm]r< G'-4>,TJqlފqv[v~zַWxoMuK7RWՓkLb7c8 ^>!j?~+Xa?SP|+&g#aSSi-^mHaP$Am{euI߁θZqb8&O}q_E'I\C'm >xG|AY)y-+$BZY9{qt5P-8K]x>oz/?xJkk+EW}XQEQEQEQEQEQEQEQEQEQEQEW)n-n<[τ"7| 7r>c]ir[~TvM];,dO ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (?e_cia|}oW{X$ULm??{}~*k$5?$CHUZӴ;]]; a/y|=eÚYqWQEJXg, ga{J[Isru]gd~7;C;XGF*Rj$^z%S]\حhw2 g$&9>|z?PG↡ú-i+ vα4Vxe"Dg0#8"fb(Ԓ0j䔢lmW>*ye:rR76~WiK,!fsZ'n-n &xxt+߱Y|;occ?H!K|H~lP\|A5=` o{}팝jMI}{^W+N[?.KٿuVj1ך_=?6%f#jΙk{oai6gp8kad>%Eww%撬+C5ч+hfVv)m.IdC5) ۼY|*x]L5x%)TQW9֎:/7ؚ8SbZiKVs_%?ڗ爴ח6zfR <$'<{׃xc7_'kus\)ArdM~h <9/+8-.L~HBc =+iPE.ewmȲq_Z|K$6hkSzmbIBU7\3SimCV? >%[|p}uhHO+EM{C2o3m\ z03:*8_ky-դ߄J.63HkSmy+}~7iMЏ0CUxiTYUU,O@zaO[<|u,z+("tWtd,]Iy|yv6z>k-Ո%ש $ ]sE<5\|/.nY)'viiݿ?+}? ppb2r\r4KUMjeVx2M.!ift)o<ڣL\ &[x2VP/.{1QV~--]0|=olB LaIbjd'=+ "WŪt5:eQrRmx]8 1fۤ8KMmg1j/C7{g_i^Kp#TRss~|S\YK4Y .ٍKƑ'|?v*|u/1{'e J%(+ Qj?~6\xKXlwVj@x#wiFT%OW9l/.{FX+3#/t_u_F_< y Ȃ__B(͏Š(_];>4o%۽HYaRA:֍y'Jot/Xo˔,*4sc Mu0ձxtp鹶mNۜY+ԯiSwn{7š㷎mb؈Km'0yhXr n5__& ڵ]OZ-zXѭ*;it2p I#fO~5o{KD6~SeLA"7PDM<@5l~0t"M2-#X,[e,.+YpiI55hnj-s*l(RJsSI 9MJpqWrJ'H$۞ vY_ DB 2+yG 0!w`0x*_9BٯM |FZ+i VԙUH2DEw5_;^%{jޭo#Iu fqmxXOg5g^O)}c U c?xx1b4iӌ_,^2=C20Pj:ow|-CN>$_?φ_ukmzUեkk0Bn>L\'l,} s$|&Ea|/0ZX WMqq}uwt\bFAl],)Z|$9xG_ [~[΢1;^!%-łl@^+?/xA|hɨyDPfLmR, jKp7-tZ=:1Sjj9+z^[>|j2?kG q?XL-O|t{WMF1Z{R50;"O1Bt <;xc⽆?H漖(V]6D[$x>e=# /l 'x~"YxZ in`-!' ;S8RS6U릉kzsR4FiG);Muj_? $\mlrCjJ ^dπ?U`ρ4 0^򡾑!dy%r9q^Oge࿉_WǞ MCsi&5!{w},$ | py.9>b_?/+hnYivjSM"z2"8's8ң~NoZjSu$I菩L`sU3øRy\ʝ&{k{)+[ޏ ii=4[ն*XooٓMV)5JϵT4/p"Y gG5dx;Vzg|3jPHK;=&}\ʋ*eYU~Q;4?Ιϯ X=ir$nޘ㟰+etJJ-kNUGQ9\6 Ҫ߰9F2"/vZYE>Z' `_xKo!Sim?d̎ $A`T+mgU0ŰjwC!mǖ͵~V$Q!$. d6C7`!]?#/|7?颾ѥ [XLP#kc-!+|\Zm5){KPV[ZPsj/>O_iNϢj<~Ȟ#+v*5hQpe)ڎ ~Uj l`C5M6֭6g["fd`Y٘1hۃII^8­Hb]xԖ(v?w<,ye*U0$^Nfr^EW}W3( 75Q_t¿P,ߨץ>~}o֭Iޏcc>Q: NH;WTWiMz[Laej_T>_V}$ -/I>//;UZ¯|t>h_V}$tQY~2@[E[_G*طO#&K~ ƫA~֟b*??WſU:e5]}V__5_ >_V}$ -/I??e_*طO#&UooGM|EUAW*?WſU:e4¯|t>k(jW }i -/I[E[__%Ge?ecUʿ|?OUooGMb*?.>//UZ¯|t>h_V}$tQY~2@[E[_G*طO#&K~ ƫA~֟b*??WſU:e5]}V__5_ >_V}$ -/I??e_eӼ#Mխzα(Q^j֩ky:lRXP.b+*+8:pQm+]څQL6Ryػ _?^2/ƫO'6Ryػ _?^2/ƫO'K W^_/i]=3nm;C`$ySa9ExF+)zhIQRwqOGп~P>+7kc_ _?_=Q]?]Mn??7$} 'Ev~A?f?(}v7$[MB 1@ݯOُ&|E]M>cGп~P>+7kc_ _?_=QGa>!AϘ/ M?|WnTQψ}n??7$} 'Ev~A?f?(}v7$[MB 1@ݯOُ&|E]M>cGп~P>+7kc_ _?_=QGa>!AϘ/ M?|WnTQψ}n??7$} 'Ev~A?f?(}v7$[MB 1@ݯOُ&|E]M>cGп~P>+7kc_ _?_=QGa>!AϘ/ M?|WnTQψ}n??7$} 'Ev~A?f?(}v7$[MB 1@ݯOُ&|E]M>cGп~P>+7kc_ _?_=QGa>!AϘ/ M?|WnTQψ}n??7$} 'Ev~A?f?(}v7$[MB 1@ݯOُ&|E]M>cF+M ƺ? 5 C@b,n/X.fHԐ9XQ\2|ͻwmɍUO_aW?C/1>?*ҠmxO"gU[oW~ο7rz恭xP'DEu, ;I"4L犓IBtq=-~UN*BJQm4l^[|)'ےڮiŬ},\3‹]m`S9sdgƞGW,ʷ)4)g"Ɗ;碼]GEs<\cy:TKϒ\%{mzks_Əs?~R|5ԭqيZ,l7)=3Ӛ࢟g$xgqͨ\/-DmّI4ݻpvc^~,?p%)?d4V~ZIvx:1T`iAt;vw]?A?P|rm|)^UTScqm &h12g'l5#7?mmP1<-4)qnnʝpNqZ] -,%:%$3rI;[l۞C566:rs`.[E-9{޶wLw_ڿo^#vݽ+Ͼ֟~2~Z¿_Լ9jp*KȥNp ȣC?=(}8(­DZw]OJ%:i8˛<.zZ+Z~.f |N'4? >'fa5> H4a7sʗ9k ~xɾ^1o,i&Lf Ux#[k|2F#*x{ӝj+NIwxM<YӡIK5=[+KUmm.mu~߳Mܿyk~h.) ]K$n%#6H':ߛ?iì}f .EU]mRW $~bJ~:̭i)>];SK5ʕ*Jq+暂j*^okyXů?~g:f=v@CEDKUo(/o ]/jJH!{CK8N==~ /pgZBS$wd1yЫ tN1,bՔeέnn~|]0wztK-g\G:#H@H_'#i?)~|I֭O0jzB[p.℆@C@b99n2 5WU8JNNVZZ |@Tq41Ti8֒ (Frv|[wm(>'/?~WO:/^:l?tGO |+cp(_U/Ykg϶K0>ZpsEmCW 5RdMב' GMANu$vhWt]K쬭#X`1P*@QEdۓ6IE$ERQEQER!|D~#ZXj~ү[Uӵl5;[]J[{6H2ۜ02y ~$h٦ut{-D:u1cQ1F̌ ]O>蚟S4?NK;Yqvd1l>e>S 6mvE[5ޱ0Kk:<+]i׋|D 0>y-qz~~W~8x?Z> ѢW]H,WrEm(a7~eW߰@xo u̗zK /)YcP@]z곣+Ez1dUs{Z*n_+%b̃Vto=:e ]xH*}~"QVo[|oTs tOZuyvMK[Dcef/V2~??)e)5_.gkWzR;@ȨBe G#KK31跗4ҤGv$Iv$$ֽ>i~ŵn](aj)խ JqzNvzrrumݻh|լχjv s}->|?8~ VDd827gɣs {,(eh)ҠգoZ&$HZcĀTmorIn-WU~ xjxUco19 !iF3s6ݎW_;? 8lFT״n]mQMia q2PIɥ{-//xs)Nj%fgD\p' Hp;?e7|4h?4 J]LSHr Jx%ضGU& /zIwd;>7ΰy'9JW-%c_ P ufx[L"dJb,;+#rᲇ>y_S x_W<#]wZ&[Z%9dN`( p;,'~r~c g\MFoyZ黓JݪHfO4,y۴ -?]?u\>*X-v~ NQΪ,|RwZ{<|+7_QkMNM,噕c9+ǭpGc+ %Xc}Fio\j˦1Eo"٢Wǯ?9qrhV4WPir-D<v` A< z|_so4x{ρYXj~ >Zm d'a&R06|8(%Y/Sww{zS|."9Ju.^^XέRrmY˚VZ{$~c9_1ODZM_.)`n<;wc>(:|xVo_U]8_2n%Xaeܿ. RT[o xHwkv,_HH) Z(l0`jğdO$-iix|3KiSҬ3ŔI/ u`sN&qS_$kꬖޭ-;҆#N1=#R4WiZ)s?|@5[J,?im{]wm]Q[X%G+ wϏ IO y`Wյ6268٥ dm Z's#ShWS@mcȋpmCX׫Ο4?wK|c/C\IԴ[Ak:EH④a,deo):TIFګJ)?mvgNZ[&҂NT/vq=̿=Bh~܏闚әmL"X+l$2XCIoxC|8KkUXi<*`lB?xB>;?Qmhono3&^.ſ=Q|I}%-I GsI# 8Q\<5$$\W[]-yx_sn 25J0z3м 뿰c>_MO#%̈ V>S|~D??ࣟU_~ _ 34]fR YeuF 629~?|Iea 2)cW410+W;>J*^+*4*SnmUSz i/?>/e/Kceՠ[څA,qglK2u~=~ОY~2? n%-tWY[f9JC9 N9*xyWRmy>ghХ>g:/,U-fbS={>_Ϳ$wC;|}߃oMtj+ Py!CZ;%b2:Oڻ -(gO|τ 5IZ)$ӠqQl+1T ?fs$x%|yY'+mam|5?e㟊?ƿxkm*oYjC4bJP.@9f>^9'ȪF/unzV~z3q7Sҩog+&>$MM.Oߴ&}g>yᾺ]9%B"K(U$1y' A __u _Gv0ydi!@C Tg5} ŎFG7?iʎ;kE[;syX7n`v'6?P^;*WꖱK{tPy*G'j* ʳLV?XފIۣmNqvV*8ICYݓvF}9O4u?+G &[iU]O4u?+G &[iU%{Yy#J 4? ~(ᏅgEmȉ$.GdBw>6__O?8a;?g~"I7>{V9Yet$61`Ey(7joTz+1iݫݛl沓/domGOڳ7Ѿ)]x7_IӤrDy`t[o]/|(60oP@(p++ŖZٯXɥ_ę忎7aHkl,/` '7?Z򞾟0 mkޗO=pOJgq%]yr~"d3Zms>|\,vP>R326` <׉| 2PH\?mΝi.g;,PPˆ%y}5WSC啝a@*p ,}Mw>s|95? kn4]6 _\k+^- WR"G&cqxNf 8MZ5ދ{F+fڮQbjwSͩG]i{D AC●g_I /VT/Ym|A"4b&HPH'߱7c_z/ү#!3t-҆ Uee,`~m{/ߴ%ޝ'5M6P]F忳,C~h0J9 +; e~'Es\6VG$fb]vUvL6|oa(aiN WmԤֶܭ盘|. jiAͽ,ʺY龩ߥ; _uȣIñˏ1ӑ:0ľ>_Io5KX^byhņ֍kxҿaA7< > F/ gbobMɹ_{ txcm[H>$j:_ Zje4kg;K+wg;/W*Ԥ}OpQ>o'ØE$$Wĝ9IN[K_kG_W7(|9q.˪E=-tI 29HcE|QSV=">,~E֑zW Dڻc]ll/h>%ƿo \ڕ̟ U!2#98/|'M[u|X&*d+Z, S eݪ#h2~M^WQFNW]l58o [2WZhFVM=_ڳ|y=|KXeαZv?7Uүe{4mDq @5o]w_]s'Nԯ-~s}7ڔ` ~ppA#- +sSGΟ*ďV(G#e;OHTq_};H|9xG[5M@6ie\&@m}!Z|Wx>Voyu+-%ecExGWH>_W־׽斧 oؖcY?)T[[ |:1n"xNo|c :"DXVP<T}p+?^ a C}7V-Z8w(&e/#SIGxG>5i~Uݎ$Xd<^ 䌰w&7kVMۮPp*+.k9wKi٧ OJ|)'Y,4.Y.Tld8`%칮|aHu-,O6)"l1p(AA/[k#xo\mYMim̸,Y7$TUGOBK{K3yi'+t#u+K!1s&GķQ'8N"/'&=7& x~6.$ˌA*vn:} f9ז3̩)%($Z'tv{U*ҩI{k +66bIk>E'_>t[`OVV]Z09!S;bͧA5ZiZjO,mPyoܶ%_o?kD|G#(b7ٚ@< =X4wIc[^ C%UQ^k_cg3K*$t޷`e)5mzL_?OO_x'V^ [rZ $lѧ/կ,g¿S߳76la%9K 9+?#ៈ~?~ skCP ,V.f_1Q<?Q٣X5+aygZ_fHWRXbI$Yf9^ W7&+%Kpnvw/5k%J x[5/zeƵk+,`(.;Q_z2;|2^IǦ[[lDKdŞXo?}#J~|3K/ kOK3[8†2dk/(< H`ƺ&o/,NnF{Ș5[CM5Ir^p4!بH=s-o |oU% /,tH*FqI[?|<߳>ᯈ3\^5΍,Ʋ̓WKwLvc򀣍~'mW<50GV9&E 8ɯW?(|*V^ͶĴm\,e.j\Wf]Su~xx3l6ڡrq/Y䑰HUPO}/?$Gٲ}77 vkv){kgy(1I=e ?EgKi75mxLh#[EYʖvzd8gJ\s7y=> |W0ɩkTĻK-[9'ſ'Kiw (m,Apf4 6s|[ G<'#Xt;Vk LIV'q;qD>~=w~O/^!-l;av1\ ϗ;?X~>%k5.֖ KȲfdސQQVF;H#'aqpӝ&4ۺTMytI,_ٵnͿz);ݟd?_/ŝSaWҊoky<'GP$oe`yA_So? X^f Ɉ)vk1̰3b'JIIFb|^sg%'|^EWQ@Q@C/1>?*e&6QWV>׵E_^xT OO _!L(#((((((((('/?~WO:/^:l?tGO |+cp(C[8/ ޭi91Uѷ6 M-v}w-_ZN\1e x,V\~GB8cޠwzohjkslkؑ\)ḻ ?N߃ֺOzo,wX\ھoo:musDQ,YURϲjs|^\x\:=ȴ[bfvVibccfE,K`}\.7ѭMIEuuyk컜ivZ89'k>?^#"+dzR[p 1{IRxbMm$uKM]<+ iPMv22(n5p]AEs?b 'tk;כUK5pʌI wlvcOx{E)Nxo>/Җ5[bum$euyBm2xr|KxoRPԼ.4eM*9nD?+|_SoӴ^Ë]A"%p8/Rɜ\kJQ>kZZ-{Ui{=ZKE[~eg>~%xsH0kk%f<>uIɼDZr3oVLw:hYg0mS~>s<ƳShE;dI1H9"vEf`5PHN٫]g*z.vv t։ߥB+;¿5GXQҊ u &~ 2:Nt^DeF%\G:g++XsL~ QJ3M^gA]O9x4x)<'8MniӴh-q;M}~ҟ$2u?~\ pF,e&ڭ=;[ZO-|L viv>(\AJ!|pw5vx5[(Sķ#=J%LMտoÇs-߆Iܼͯ2Aa%q G'm1{MBouW@1lHE_*ݷcC!J__<Q~ҟ$?{V獶c)W T$4Zmm}m?JqrodTOF-'xE)nv7yHU3g5C!J__<Q~ҟ$?.M58]m*jsXbh%d-y!|"0O9#3Mg%#VڌI$IO4~+|F,]W#y垱Ea~/|NFSEFQ:Sp#G+ R1+|UZ_įEK 루DB-|61+_C!J__<Q~ҟ$,~]e8\Q‘QVk۶l|QHַm+%jb6v"0dNM3/j?{Oj Ιuw7ir`ydfE?)=Cy'!?ïI)1HONËx^cSKU{>cS~:%*x2c!7g$ Uo|c<9s⏏|1b47\%$G&bĖLy' Wן )=~O1GC!J__<T{-4, N~އ.vK|y&U;'\cOZi6$}nO6x]o :7-nq!|o=WAq YW W'Jگw+kW"Ƀ[kw0oU8gw8_ d4Ê7_O3W9Q}5fiS^MG𿌯ExڂkiPM&`ccv3 R5YE{Bا!CHI5g8_ d4Ê7_O3U 83j.4ڽ3ʳ*p9(MO:4&= ,MWM+sT3u}&o_hM9jn9̒la?158_ d4Ê7_O3[bp9*ʔԛoK_t>mJIi+$Mwċ{J/~ x}KCWM:]nW:!1 zT>?{ST?ZS2sLowŹvpx8_ d4Ê7_O3\(ZR׿],iӝ|[ËL狵(ciOq CFA9"Ab|Z,l'x m1vZuBv0v+_qWh|o fVuw/gR}vj7$]0W5}OPG]_R bk ,^gGF%9$ڎy/Cԥ~5H`d~lM}S*=|Y?⯍5عK}/z[sw|/s?| y D˥=ۉTGrܜc'|m{^}oW*=y%ê(2Hň3}k*=|Y?⯍5өfRͥU8:Sml|׿|-H/ |G񽆑^L6kW xDEFd5|ur[Qt߶2ۭzEV'};*=|Y?⯍5ռ:rSu9t?}=;)⿊pO3zޭo,-xjWQk7kUڭ+˲$㯌/eem/~$qjzikL\?_篂k'Uz/rɳyǒT[ 噛N.z xwz5]Sw^c v{w$BXz w_L¢⯍5*=|Y?:y>qIr”2ʟJk͟i #O9^3\%4Iq+u69cV4*>)E!+^ں+!fv)UwڬEw⯍5*=|Y?oCaNkG=]V6ͰiuwWӫ>Hux szk6dญ aH< ucEhP Mfhnbf7! c WO*=|Y?⯍53gN>_К9vgBJJigW|le9_xiiq]5h]oYB<o1Ǻeŏ}M^u[ %R e*qc_篂k'Uz/ήYV*So{]6ͱU'Rtnimm4>~0^S[Fb7hʧszf1Q|JOiZGe1+U\m%c?⯍5*=|Y?'M{:gf$i?WzϏk$ muI\/Bʱ&e@b;qWh|o fEw TU>*R~>3|o fqWj诳?_篂k'Uz/?.?|K>3|o fqWhW/ظ/+e&6QWV>׵E_LٗğgоsjU͔hHoUyOoO&ď;<]<4BTW#lSߥTx5USJ^:z|Bɱُ pZ2H-+fWֿߌ Q]C'C?Qj,*?˿?p?2A@5?|E}k]ߌ Qd?~  >J.dfjrOGoƨ\2O ? O%Q_Z×~2?35G9w'#7T'C?ϒ˿?? !SgTWֿߌ Q]IAG+_rOGoƨ.dfj$AYU9w'#7T×~2?35Gd? Qj,*?˿?p?2A@5?Ee΋N[+'D>&6tn-OZY7Ϳ)A{UGن3͕l-E8E];ݟѾ嘼%t1'$%gfQEG!EPEP6|UV\[@8$j7(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((PK ?ccOPS/book/page02.xhtml iBooks Demo
Editorial Dr. Ramon Vilatimó Metge de Família EBA Centelles President ACEBA Dr. Toni Iruela Metge de Família EBA Vallcarca Director tècnic ACEBA Sr. Josep Lluís Lafarga Advocat especialitzat en Dret Públic Assessor Jurídic ACEBA Les EBAs, entitats d’Economia Social ACEBA al XVIII Congrés Internacional d’Economia Social de CIRIEC-Espanya Què vol dir ser una organit- zació d’Economia Social? Se- gurament aquest és un bon espai per explicar als nostres usuaris i lectors que els cen- tres de salut que integrem ACEBA, més enllà d’oferir serveis públics de salut a la nostra població, som entitats d’economia social. En aquest context, podem afirmar que “promovem un major grau d’implicació dels professio- nals en el procés de desen- volupament, racionalització i optimització del sistema sanitari públic”, tal com esta- bleix la Llei d’Ordenació Sa- nitària de Catalunya, contri- buint així a l’interès general. Una mostra de com les Enti- tats de Base Associativa sani- tàries (EBAs) s’adeqüen plena- ment en la seva organització i funcionament als principis identitaris de l’Economia So- cialquedeterminalaLlei,es va presentar al “XVIII Con- greso Internacional de Inves- tigadores en Economía Social de CIRIEC-España” que es va celebrar els dies 17 i 18 de setembre al Tecnocampus Mataró-Maresme, amb la col·laboració de la Càtedra d’Economia Social de la UPF i la Fundació Roca i Galès. Un punt de trobada de reconegut prestigi en el qual ACEBA va presentar la comunicació “Las Entidades de Base Asociativa Sanitarias (EBAs). Un instru- mento de la Economía Social para la gestión de los Servici- os Públicos Sanitarios”. La comunicació, que pot consultar-se íntegrament a la pàgina web d’ACEBA, està estructurada en dues parts ben diferenciades. A la pri- mera part es fa un recorre- gut per l’entramat d’actes, instruments, i disposicions legals que regulen l’Econo- mia Social i les EBAs, per verificar que aquestes enti- tats compleixen els princi- pis de l’Economia Social. A la segona part es descriuen els excel·lents resultats as- sistencials i econòmics dels nostres centres, emmar- cant-los com un instrument de l’Economia Social d’èxit per a la provisió dels serveis sanitaris públics. Pel seu model de gestió i na- turalesa jurídica, les EBAs formem part del grup d’enti- tats que la Unió Europea con- sidera que millor s’ajusten als paràmetres desitjats per col·laborar amb les Adminis- tracions públiques per a la provisió dels serveis públics d’atenció a les persones (sani- taris,socialsieducatius).Però ens cal avançar i formalitzar la seva condició d’entitats d’economia social per gaudir dels avantatges i de les obli- gacions que aquesta categoria jurídica comporta legalment. Per això és necessari que les EBAs estiguin degudament acreditades i que siguin in- closes als Catàlegs d’Entitats d’Economia Social del Depar- tament de Treball, Afers Soci- als i Famílies de la Generalitat de Catalunya i del Ministerio de Trabajo y Economía Social. Situades a l’economia del coneixement, les EBAs hau- rien de ser considerades una alternativa d’interès per a oferir solucions professio- nals a problemes territorials i/o estructurals del sistema públic de salut. PK w,a!!OPS/images/page02.jpgJFIFICC_PROFILEappl mntrRGB XYZ   acspAPPLappl-appl descodscmxlcprt8wtptrXYZ0gXYZDbXYZXrTRClchad|,bTRClgTRCldescGeneric RGB ProfileGeneric RGB Profilemluc skSK(xhrHR(caES$ptBR&ukUA*frFU(Vaeobecn RGB profilGeneri ki RGB profilPerfil RGB genricPerfil RGB Genrico030;L=89 ?@>D09; RGBProfil gnrique RVBu( RGB r_icϏProfilo RGB genericoGenerisk RGB-profil| RGB \ |Obecn RGB profil RGB Allgemeines RGB-Profilltalnos RGB profilfn RGB cϏeNN, RGB 000000Profil RGB generic  RGBPerfil RGB genricoAlgemeen RGB-profielB#D%L RGB 1H'DGenel RGB ProfiliYleinen RGB-profiiliUniwersalny profil RGB1I89 ?@>D8;L RGBEDA *91JA RGB 'D9'EGeneric RGB ProfileGenerel RGB-beskrivelsetextCopyright 2007 Apple Inc., all rights reserved.XYZ RXYZ tM=XYZ Zus4XYZ (6curvsf32 B&l@ExifMM*iC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?ᮾ,OQ+7>c?? _z5ŏ)]|X ;;^yEٸ?kc"?kS!GyhE?wv?p? D)_?CŽ uc?(?yfAR3ᮾ,OQ(Ϙ+[Ag]|X ;;G5ŏ)Q1W;'KCE?wvkS!Gyk(7>clwO uc?(?_?CŽמQGn|_/=Q?ᮾ,O<?? _z5ŏ)]|X ;;^yEٸ?kc"?kS!GyhE?wv?p? D)_?CŽ uc?(?yfAR3ᮾ,OQ(Ϙ+[Ag]|X ;;G5ŏ)Q1W;'KCE?wvkS!Gyk(7>clwO uc?(?_?CŽמQGn|_/=Q?ᮾ,O<?? _z5ŏ)]|X ;;^yEٸ?kc"?kS!GyhE?wv?p? D)_?CŽ uc?(?yfAR3ᮾ,OQ(Ϙ+[Ag]|X ;;G5ŏ)Q1W;'KCE?wvkS!Gyk(7>clwO uc?(?}aY/]NQծ.&29㌊27L!ѵ\aR(ee}wX&z96~m^oj~U#r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r??Z(`r|);h=ô۲rO{ ]σ\F1J ˩Մsw}(<((((((((((((((((((((((+#w2_W?F)2d?6cK_R>(0IEWdQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE;Eok.[#\x߁zx?Q_QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEW?F)2d?66Sr o~?((((((((((((((((((((((7L!ѵ}n/Ck8DE#? tQE9AEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP]σ\Fj|" B5Ǎ׃ߡQEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@}n/Ckj'%3_ Fqq>JGx%2?@袊r?(((((((((((((((((((((((((((((((((((((ȹmЍp;Eok/SC+ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( '%3_ FOJg?}J 'd~EYQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@w>r᫹w/7^^~EW QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEOJg#w2_1%/)eOW?৾*׼5?j爵 ]';s3/",n) M"?o߁. w'c[CMccv4Vywz۔ "|?mCY^3߁>.\j ͇$ҵ }>mF8c+eu!~d+bK_V'cbVo+xf$ѤmroWC?_=ޕ-BA5K`7Ѯn-pIpC+SE +\ |?5_}yrt~ֹWqmFo3'$NK! ůOٕJh 5~/ǍK~ѣ57Pچڐ-X$,Ȃse{bZ%4 ~-CN̓Oy!h'ئF'='g5~]G,!5Θt [:_Yuk7N6^->T k^MM7x?,xnO Ȯ-/wY"iI-+rAmß{TڥOxOv+v[F 4PGj#i%򙊇7Uy߲'OUgk߇5Rү/~C˃w6us] 4Z]0C}+,|>ߋ.tۈ}ۯGv[+uI}ܸ+H'ڗՅ/_\g^Ek;o /us8`|_w.[_G x_S=Whz- k$VEH^KO Yu]2[kI$K-'^gsyjT~6a!Iy) 囨lE/'O~ѼE^Apom77Q<>\1TBJ7IyWH/CȺuixztT䴷s 6Ey*WW%^"Ч^ ߇iYӬniCDFp $ʩ-)\OSYmo|#?6uj7lXԲ[4p2oBmםw/}t/*|C3MA;ˎҤ[]guib^?<+g9xygIE/0&n.qbp!/ |a+9 ?Z'Z}sQ,5mll1N^ xdnC:[jz[}EVAEPEPEPQ>$k?SS|C7umxfI3~Z_G?xk\Oh~..V;y =On+eCh>k7UK6\񿆯tk;H&EiZ4wTF8 y~q~ 쭵KUlfvKhVEfE,UX#6 &_x\5fIK9;I#͆ǀI(Tg'x_~xZtx,iͼskm42J".#g 'Z/b׫4n?z(Ӿ,-[A}toQ.Kial ~?u ~۟=]Zh)KY؎Ay}z[nd?zyŸ*_^]:7}u]LY 8)QY~q|c+;izH59rɬK]YY!uqh#ʮgO y :>|=$$4u=y:8䉤O0BJioN}]KJ|5ޭ#JbhvjvZ{ywIgn q e!O*旟 ?W/ށxW(Oĺzk4#ėV|'Еd%ܮGd*N{xTv[mVdgawF(9+}̚:dfXM +,3ŧmUk~#4d2 KY~/HZ?okh.6/pWhаRp5+s((((mw6u`c|;MCΣfPj \\JcڌSl>(/|3ٵ?_< ,ek.=&X@# :W$.RO/{/^?i^iCo5a^^,KE0@.FmAk~ }K@O/mCTǸ`^ &~)5Fok:¾i5 Stq.C}n@݀ [ѿh[jo_߇n n-d[ h6c gc7Rnڃ<'G ?>-|G~h3ZVAsƓOqw,j\O 2('^ uGV_xĞ>o|G6:Ki6WQu-¯̞I7F$7L-&l>~爴kZ*Eq k{1IGN6WA?!foŸ.FԵ=CTNuˣꚅ2iw*\8Ȓ ƙ7V<Gg_<:)ּ;kiPxKKx.t0q5b9VYDd'r=NxKoWgZc +嵼UUY3$6w<-㯀} bcQ7suޝi՛M*Y. o `iu,zPlioVǾ^ROԑ#쥞eFeEqo*T?V ;-կo|Q|'ӵM"{4yˌǎ[#fMow쩨O潬٫buZe0%ٍK cN~?h~ QX; +ڝM,S4IȑS8ج*K'MltOoڐBg,:Χk7u'1Wfn95t⅏|'<ODu?_E7űKf @gT9߱Oُ σv |Q{|%ѾW/tȡNye4V3м $q"]x|;?05iڥۦv-%I],lr =%t{@e}w-͒i xTe,$dr7_ $w_u]RӬsi=HH-mK^~>'Lj6o|69 I< jzf|qL%q,Pdn|ğAS}~tY ' m6mM*wi"8ԗcyiM|D,Ƕ@~ԟLߵE~'x;_udIx^֯/JMT/ХSGpk#ɑ7 3Ww]CCߎ~i7Krj\KKBHU8|V-GzOzEycխ~2 |[gw\nQۿ.s"Yc~Sl!ξgMモRi]xS?%=CQx̀s?~|O7k|5P]i#]k6[9쥾KI y26J/$7w^-F{-:Wݍj*qh-..#A270Z\ҳo|nǷ)|cG\[ ]~\Xim!{`ɗ!<,c޻kj6/xo< ?hխ uo<J$NNQO^ cKO_|_i6ѵ/B%?5oi?{!K5_[HJGx%2?@袊r?tE~6YH, ?;-o.wAat \E>6 /w"|=M8!0iZU ?7`Ջcobڿغ+}ό|Gexw<bjھcUy0Y JWo/>'o[^m+ EMl[WEC2p?)=\ih^'KE| ѣ㞗 ]S3|B+IF*E;>;y/ y㧁<|/[ D%)J y8 A_MU'NKFdoU῎.|L6i̍q4@g&6Ww_M,/;|_~#|nS"c$SjsJegU(#`:V*:NT+`ۋP/? oD6·i+[0Y̤rʏ?%?Ů[|c/.>ʺ!l!F'#4:Z6~% O?>(|5Mxw_Z׷hȍ7aUKdKWO|?|)j^',lR!,uvNkJ!=An-S$B)0rbA+:?~,p־@ .Gtȷ #V^ KRW)9x >7w? Mj>(M>)9WkLc,5pWo98eߴlo |i&kҪ[*CX#KDDzQVHQEQEQUGUO q_J,Ɵ|?Gמ/-O}oBP$Sj6i3UAni~_?KO+O||Q?||7<=Xip}oo,aʤ3p+k.42a߆>Cy.QmP24|%WW)ѕӺ+ j;?_~ T0_= 6q]"u : r[ ( HO!O4>|Nʋ95/Xaf+ BTi `^*<9OxZ7K"0 RcfGB %X`c O *O >/i~o@4Y̍ 20DgpVA*Ӕؚ+^|{ >|I߅tXH+~S#H%F*9U76Wv M[nj>3|Ws-{JVXhp1YpTRo96s+W~ ^3׀?iJžMu1ܴ!SaeC*ݧZg_~x¾ tOJ[I/Wk,2$6Rdf9#3ڮٷy C=k߳/;toJ!_JYp v$vUbr /o)Ɵ_I?~ mV,4 jz<Kd5I^CD2Pe.~4z*4iw!G=xTYZ8viKu4sܐ]x7K xx<POx)eM ivm F/kn_~\'w~K7|OA[@'-9 *[z ٿe~/}g{o  \U7U;cQv)a=z&ޜ"]],Y~а31 1!eV+"]GkxwvƋk[+> "ۘu,BM@OX%~bC㑤kl 6hȎf 8  ,&R IF#Ӽ $69 ڧ5Wo!]6M[:zZ=$' ]wodMԌwbPGW-ڟ_~.||oG4`t_+YL(@q11 {Yr{;G. _jlER[rkh3 2{Xwg.ݔW ?ໞ _#||XI6,֦)2b'>7|j+ {Siv++D/m"F *Β RRX&~Q_~_UGZ~|Y4m*UX%G,hYdK"́3 Sl$j?4tKp=J'`ao@Պ6?P+'&x^Di> o-ΟZGwkp "a +{_ⷄiٗω]jl,r᫹w/7^^~EW QEQEQEQEQEQEQEQEQE-6tƃ8'G6*fbt$mLJ5?\-l&{{_U;):*(u?5?n?p>:Pҙ+?EjP O<- Ӧ_u,T<)=/=X_ld.rtQ]ԣ8+NW~<ӄzq]p+C#w>Gn#|IN5U ¿isl[>=(uY~"xOCS.H+ge='mʃذ5|p3ogNrr{&(&NfkY`$W2<U}/T_TB.j/8f-Wc?–y N' xRIUS"Ӳ:t%V3*KgEV!EPEP[,.u {O iʌկmm6/vXUo]xOC%PI.Z@KG]Li#k7u]_?k_-Q[Q@ /O\iw=jeIl짻d-P{f?)~%ysB"t16U|NRO(5S |uc߲U!5xڭܗWhj'*1sc^s]Zg}4xwtWKN&sidP\\"c*\܊ҏZ?> Uj~"1إ̪:}4Sxhcqq];_o*7ß|~xjV饛X줻ŔTTC{W|1KC&_o/ |3'je΃ss4CJ1KE2#8˖VƗި C/? ~)~ ?5 -ݞ=<Tǵ*OJ!ؿ&mݟ>E|E/wS%,QɑL67mj 7 )Bjo&Yxσt[ ;M쑛»#AΌ t|^E㿈g iS7j7춆#+U8$ɢ(zItZ3?ۛC F& i~9jf2\$ћ5.w%w'\wd~Ϳ+0]{s]IEʹq]G,LrZocO~|3Oi>3լmKhR%I)hO,"2 #-'ǺjZi'm-UCثpt< o ?O/]O^uVZ֔$q ɩNҕCt\*uϓ& τ~#g[fŚvSIͬs'k+7JD״k˸Z I&X:*,+̿e⏈?Fyxڤw+f{b[e$bLjb'N/7 Y]| _cU՛27BF[ƒ4qe[^z`Mi?>%i/}x,ӤS8.򪌜?A.Ҟm;w%{i_I XF"*7=8 w>;_|#cKNgks&.`B+@Jӎ=Ikw<PDL~~3~m/GXywrc&[KfT?24䬻$?ěo55O~^]yg?>!lM+&3 D5+D4SN8.ל~5%P)-|{}Zf-Xw\~hnsZ{(s?i+X VwS6~yqKBU.Kys843##r _bO ;\xv_hkyf&' 4hJQWQ Q U՘QEQEQEj׺e1h= k'ßmI~?*xºnW#sz%Y$D(fnEDƧ\faH<{@K +ƾ 5Ԑlj`@ p˘Ly ?6Oǂ[Ꮙ>(xb-LN E0-jRI$qcV` WQ)|uočxxwG<5L븱€2rkʾ l''/ ~'d 3|H4^=j9gz;|v_/߂Q/??k~0OSHoi'ďZ\[j6[KnKH eHG U{]ү>ŭhd[U[H7vz~Es-SƱ*F|TKǶMMĺPK :H~Ծ%o:|hSjxI<@) ,nY?oC_>5ņjce e!v5 @|5?T-I=W\y"M{ nO1kYB}43S7ǺcŞ +?Ksg+-KDF{q1RĜ+,O_(5?ρ~ҵ&4[hl [%Fك܊ڿ!?i~ktF&C+˹Qy\G)  ik/ɩIzG 7313xipP$o1'%5[NԵ;}?IM MD;}QNJ0@$|?:Nizoou8JbH#xD\-+I#GM}E_Igoi]oI^ja1Kk؎HՈB=ȧ*0VQV>T 4[|h:jhAݞG} f9 ?_e ~:wlF}܏zķll$ .<m3K}Lu-gJknHbO+vbp{UK>z牼?6|a[g\J[i8O~j_DoWA{kk}xwiw hе,5ד?t/->xXkPxSՏ0xYѼ⹠}NL .%ξ'!xIEkV&SM+iURYYmd27JiC?߳ ᕏ/^,55[Y,ybTˑ-AG7*=ȯm#J,|Z~q68XjMuUk8M;6<B /x ni-#ֽx^#Y쑕<,ybN\C9<oL+IlMnǑ_I%OZN[E;wc?9l'9t|{wj˯xZ_j)rʆy!fWeWil_~_ k$|e|;\ V\J0K{0(|uh$e$w60e6XpA_ ᾍ'^O߮:HDa-QEt%uUhU}kW$/'z-O;N@je]E`4YC0:bG/"^o? |=O?<3MS[A'qcYd<l/Q [>%߇5?Yۛ3ywMp>?=Cᯅ|c'lMxZ (.m%1@6=k/gMjޟoD>t|+_a; x:u MLE-ZgлAa^'?j?%ǎgOQmmC-跚5ɰ-&y5݂QdyTSzo__cUĔ/hZ+*,IX$@q?)j|t> ݩ T:n p4we8\f^_O<Ajߏ^><;}o7+=njn?x {KX*+x O" 9/k*5j5J_L"UV< #_W~޿P!tjH5Jc:R@"?֡ů >Me{{Z9Y%@ /i>UEU}3ƿ֫RG?Mzl."pe$0 $ 4ޱ O? ^-Ӽk&&\k3,m6~.Yg/7Oh<ƗZ+l3X]soBHϵjU{('ڳ?,.z_Z#-I 8ԍR2'~_ou[φo.Լwo4S^Zݺ0(-*r᫹w/7^^~EW QEQEQEQEQEQEQEQEQEtCZ>K1QS~Tt?Oa?Jkھ&FtI~7;7RɷQ֏R [Ak݋|?a1$ckX#.=+?`_MUӉVF'm\5q&(ufj7jaѯ^)h1Xj&Ny".GQD >1+>Ooh71CMf!$ kϨ:ZG^|9^渙=ex-/6_$z5ci_X%6 [u=@YI*@fSF /_7]?E "hF=Uߎ&|-LQcا_1_ylҩ]宖-\֍-:YxSħšK7Q! y7x{7Yxᓯ<'ڼ1$dce&ڒm@~ǫ1^^D)RaVBS3$ac+P#NV\9m} i.aO/ff,ֺ:wǮ]+I&㶞g$6WhMVR*Rk?5CHkLT!N4NIi}puINҔbީ5{׿k7uliW-!v$vB[3 3O|]hZo5(t_H[{hvG]Y >I^%?G-cUE6+mӺ}N:+JyBRIjݝjthg /z%}WBy47w:ɪ fԤqD呵~yzƟ&SOm*0Ri9knzZ9F1炿N ^"5K|i WAs]y+q#|8_Km}#pٻul%˞U9&)&J8j)R)Vu۬hT$ՖUdyz珵;yפ \W5{^K,P⍉v*Xu{IjVxTo%Yev,I&RIFUevMkK]41ו(4c՚Wik{uMjj'!Jմ_@~/ . <6"YM'ohڧxhֺΝ},V7 f&Hbe" WiBGuu߇mV.'Mg%ȿddPH##ҸyRvj-jKM4wM&6 [QrNGfWM^2f?)~%yz%#ROĿb<u?gSƗ '%3_ FOJgK_R>(0IEWdQ';MCiI| >)MK AK i+Y$Kt$c12#? (Ѽo7~.|S𧏬;zMׅd$]nHR$ºH_͓i!FQ4W;IW |x$-җAIh-'Kܼvc+%/kP6kε*6>E2O\Ey%BI`+Nѵ&Uom6?-eo+¿MN6 ցx^=PZ GJԔc &O 3-620"~$[*ͪY˫^[4RHbX,?gG?CmW>jPx<p66]BJ QKtӬQB4F'94+kZuz?OHƿᯉ~#+㯃:[^#ҵ/K MƦgIx5ퟳ@(>o#ٍl ב3e~EiGbǩ8OIDpuk~SI| ?+yK; +đx[8TX^IUt ='6I4co-~5~$hx_R-$f 7(gXb$cώO|RCc IJ I,P7Gmv9W澛EsQ@Q@Q@Q@s޽ZYԼyc:%/K# ۪#%*1ʌҾs~ ~5>#h xcz x CJKv5Ŭc@1l"w'Eɷ}Ѫco[?Q|k&|D| ϏiƓHY]˯kwAi>Kn&f%_+s~ xEޜWott.ϴy+᫿CB[gfk֗N:~֙6!S% 5>b?wiC) zDjXl>x?(k>i> o]x`k+{yTG%ז[:}꿵/-"wڞS5ߛ#!6sK8c8W<`^>P{%B۩nZQ2p~!
 HjG.XA 4V 1v5&[i$k Q4B[O,1Wdd qC ~ ~_Ÿ SώuxsOHN\l(B(((((/B ڂតwu_nyb.$cIE*\ VH?g?g-ZX,A W?8Epa dU`Fpĸڢ_) B3ԕtf_moGQ S]6Mj2B~`||? ޴ /|y֐xoJ@,1 dlv h GE7EXJMu1&%ѸXAX^8r@Dd _/~?,|u? 7l/K]ʗ:ǔNwF[LZEQ€@OSOWzG /}?G>2ino~3SVŗoCO{pˣF"?d\͒W+5-"(i@@g'IMQTo.sw\s/ L_u~xoᎹ+o;$۳yĦR0FT ,mQsHkg_iRJUq{ 8>ꟳmcXt 3 N?#e~@+B4oR5{;Őϣ,7f!9fp#5ġUFjR29Zֿ%M2(`-1 -W6 ~ڪr᫹w/7^^~EW QEQEQEQEQEQEQEQEQEtCZ>!|W8,?CJ_}Q?p>:Pҙ+j1|Jվ9xJy㛛[vXfAxFr# 5)|Rm'y, ӭ} UZ?_e~G^.a.;/  -3O]]0 wd 5X⾑ʺ^-/$$vJʿBJVت+*Rdwhc<6EҋZ]kC~;1k\ҥcM[ItE<@I AȧX~͞,HV6i}Z$cGl’7iqRUU_x'JW[o=8ș3]FُJFbWiD`ҾC=>¦$S/smmn@$Ceu>d!G"~$'ָ/͖}O.zJ<V/ |(N_<vW/ ^X'<o6evϨڽQl2s24@Bm*rRZEKW^2W~Wi| +҆t][S웷uzcfv5?3u-|)=Oy)wyM A!VVPHV rޚ~ x?IZn[\LD n/<PZ1UBI2Wi-ZL&9 NPi&ۺv<ʽKcZ~C6ׄDV>@dZ@6"si1Tg7(iڲKyfC/$pI- z$3/CKeƗ*.Z[c̺bL:; Mg~'kٴ7NC>\.bEyǐc4B B,H u7ּiLGy.tF;ZcvO7.TYbNrn[Jۚ{u75g:nWߖ-~CʿVT ̏!,;OZ~8mqKK-m. F>{ ~%/fOsx hVCkj6_"9vDbhTJ魴{s\6Jzb4z;^LoُJFb^y^2R2? N~^}]4J4?&W?F)2d?66Sq*ωkmIKͪ^ͩZ Hnnö92QSq^[#^i'|'s\GޣxUt=;5d@X f迭js/ qi*/\cm=6%@IR#M6]bώ?g~ї.d!59]{ZeϊZ)t=-n 0GB`( 7G?k;!Mgg|D=@m,fl݋1`sԐ :;~$k/+TZO=aEk~/? D?dfOs ei|ؤ]r6p#δ.񗏯/qhV:eHVZ5)-b}j#ȰH 88PIžȷI&v{._?~,W|YM;8㰴UyXw \s7sͿşx#5Т|=}C2 FG@$UmgM?gCXMVҴ?o8I_@Hj2$_JVUkmmxY8$}l_,rS$(]=/X?k{__EQ4Z=v:Ch]*.+|`du~o~7,mៅ_ſm5 xG]cF7)sX.qiOsm+r)ۤ? *ѴȩO#+s(7 im$%.&g&ǚrV:-:imn*>F ;*W^ {w<1R,o5F/+֫__՞ #VQkBgW6LV“jv()~[j?|$Ӵ? i6yM2h۱a$nץK?&7Q]K?$+mZhOtX>#p]0NO'5CҼk#_I\x2xyL&ˠM>01NNu^7ծ~GGo7|Cg_u=k29}R@ceT@`~b=kYCßWoߵ C<_G;|R|7m{Oִ`/kGsVTImҪ́Ols3o(G־ zdrʀ(ʩzן~}ÞïږKxY|anm[Dne[kǷ,-nq"9?ςow?յM8LKPqj$R%UD%5/? m}_Mhm-Yl0ʜr"*.7sSQHu浒IbދFHr0z>/O$ _ 'x¾36?[\Gx$Np 1&BS? +g-G~xw|:H=xCZs݈*HoP;`m&߱Fl?!¾9 {#W"R,<8]W:>kW:tF_݈ JK) AـxvxXk1|Bώ[\|=9[oq{"i7mUc n~ĿٿRK5jt5I,ฒ^U»BKD߿|]WU]`I$vYJyǖLe]nWğZOOZyr,? pTmM,#J؃ g 7uJOZ^ꋪis(.VFUwX\Tg4zǁ|RtZ:Hn.nXhVU!Z6#' O?gM//g9e_*)|tzӝ0/412u+ҿh*ُx_?>&<;wMI=O JdH9QNi/xBzgh__iԴ[}hrm#y"&lܦ0BۋM_ x[7 <uR4׵ eev"&0cMϼ''h3lWZ].~~?l?PT"[ xs<.7HkO6GA`F&[QCl͖i\EunI0˼nL8'~M9s6aR/ 9@C(OUf c*xk˜ dEi+@'"z5=WW)ЩAQ c*xk]@bZn-[0#+6}cM,,C#3RHɯSS_,ǃT *#_UE:J2]/??; ?¿xLx?O "SS_,O_?1?OD_jG"z5?SS_,ǃT (O_???;Oht6Hb}SS_,ǃT )?)g*cW&tvo^KYl_D_j_<BYG)ЩAP\ed~'3Pw ?;~˜ dE<BYO"?A~'3Pw ':x3/񃦓lI!d"\SS_,ǃT +La%qR]z<},t1JN 8{} +ß:/*Y^U?<BYG)ЩAW^v~Wƚt};t6҅  HBҹO~ɿ??xcvֺZ ,S$ar22M}; c*xk˜ dE\,;4q_5FN. `;&k"!495=AY.-yrZ8ɕrQNx')ЩAQ c*xk}sLx&௉3i|G3c;[)5[D(Xyw vZ_ R ogӿ$h5I,>xL;_-p<BYG)ЩASe ɏcWQx{tD мF""K0IuV_R˜ dE<BYK??c1doُj鴍DmM gd2FV5zkͪ 7jnAѴ6v\$F =SS_,ǃT ( }~\sPɏ 𿀾]<4qׇm 'I-DN` 9jqM?AysC`[[;N%X24<BYG)ЩASe 19A^ c*xk˜ dE^vSLy,E?exs/EW˜ dE<BYGװy'o $؈#Ѝe?٧-τ x[Z`jGt),Q)1<5??Lx?O "=/&<ſ xW +֯[e\3k6vnL#"I (*6?bF-m|eRm W˜ dE<BYKO?c&>nOٻw< r/\;&- v @Df(P˿z?xO}IΛorsnŔlɯLx?O "SS_,?U4?c߳}cB>'爯1o>RiE(D&8ӪT@Jac6o[x\iH^HS8Zi:ye"ǃT (1<5?>Y~LwxLJ|k7K‘_&,7 woY&f8b:\okoi7>-i6ioempFdC$uʽ?Lx?O "SS_,0ox/:u>5x'YjNx6`ȧdCc7?  q6T8PQTK {)ЩAQ c*xk}sLxF࿆uo@_+յS!6ӼPd]|ch+?6^~ΞSK`@ӤPITU,B< ǃT (1<5?>Y~LwxNj#ÿ i:Շ{%mgiu8 5FYwpYIs=x^;y]WON^#Iok˅K#Ec_G˜ dE<BYGp/>zAu/|B=FHOi+assGG/š[=MNT0lOl#n3[0w?^<1+ƹOu k+m@R3 p1^ c*xk˜ dE],;?cϿexs/EQ +ß:/*ǃT (1<5?^v/{&<W??t_U9ALx?O "SS_,Nxɏ>G,ESS_,ǃT (7?c4M/ᇆ!~/巀x8ah"uTBB7*,jv!@`Wd@k?YԮ5д^ovcO.);hN}A c*xk˜ dE/`ٗ?cڇL|??jÞ;wWW|-z.-gKXbfM5o$,<  5ht+>m;NSonR0$wLx?O "SS_,?U4?c@U-7"i:z,ϧirh:a 80̀عM??jÞ;wWW|-z.-gKXbfM5)ЩAQ c*xk}sL|>%1| ? ;K6}?Mge)#Gzыx,%m-'ህO>1vհ[O<BYG)ЩAQc&>ig/_ ~Ph>,EZɭ=k)bG"d2(KACp+G߀=?xÑ}*mgM}:"1eVӧʸ_B˜ dE<BYG0/>hǀS^ZQ\+<7-ۿdPm_1۳VyjKq2y~!$qķV4dEK^ c*xk˜ dE],;?cȿ',fI-c#beVh*A"M?gs?H5;-5Ybk2*exs/EW˜ dE<BYON|1Q}5/~ʶvc EYFJҋ]mQۯ]Kh};+i0^$bZHى,翥qߴW{mvee dE [?U^I~x _LNmF{{" MeAAֱ>)2\8.gv[sU&I#Cj~?!R )}clz)R }NŖ_w]D ,A+ 8H'8U~˾+SxX>iip@@&kgU?|e⇵4TSL[RiTUcM랢p\ۇ'5X4^mWK+u*2N(eLX5"ԥˤ٫'Gf>>1?[nޓ`̸ B# kGkKQ'cŏxsV#[+hDY7GvVR:Wp-a(,%*&vi%{_|sI?߇? G)iE+!ڻ85i)F-J/U}U8|D| [VQ%4ғѦg~=~ͿoO xZMkL{pf_EqW_~0|{'afvibϙ'G#?4ʸcbj>cgm^NY2L- U^i{krF RMY]w]z9E~`ci~6ya3yV.7q~|a. $6zܤR^!S NZ H'zjZjuTQUZ IdZBT_8>wf'WRMNӎo+,m-4oOUtSNЪOSOU~thVWҠ.˞T屑ro*Vy|.S*E/~Q_ܿo<#&xxIo7\If!.C xt?+'x:tu?#jvPK|;dO-6%'k@K6eo:j:TVW!b#^zs_+_w:}LJ%]V,/5H@x+ΐRwbٞ :Z8m'gFpV31x&VqW,k5l}7~LjGtgJßg3 ͥ ;t[9QלxQcx ~x&Ítd8zgr`wQx{^$e"KhS AR)|AJXNpa96n^k[>VmObs9UHRI?ޥy&e%]ϥfo_a]#^Ut+KT[sH|R=IS{~ lԌ/)I#(̪zcRhI}GZd?jkFE31h"SŰA_77ğnrQ#M!Ҽ%_ܓ?n΃;~̓ ߵ/US /[6iUb8ݓ vS:Rq+B볳yq_*Z*q^|K^aY/9+kB=6(lB waz|/ g$wjܥΝcFX>Ha/+oO FkjiOelb썲6$ '10(a.5ԴUzMO 53 S'bV5m9Z_O]~oX˝6 R4X Y~ %F 9"`\fʹziǐnd'e9I(Y붻$}E~bc­QB%\klQ'%z?O3#U桭AxC[]J rLYw$n%XI$;^ǼEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@#i0ʚ3ᖭ_['Q7F&dfI_MJʟ|UtWrXNj~ }uO οG]έ cx}OTԴdP7Jd_@$dͿHA CO ,< A,MTRvJ((P(((((((((((((?.4GA. ?Qm> o> &qӐ=&IFG'd_*V\[K>ڱ-9ll1g5yY2PyV5cq +B^vnS4~{^t8$,9ygY+_ϯ8_ßڂ['ol>% G*!6砯x~+ߵwè1+o{򽇅Eu3bFיiZݣSqs'uK7omY#Yc|wG.zgq쿶wkqi~϶+]ޥk9Ur' ̤c<~0bG{eU0RUixCN?d5kw22E uaUCc?ßW3hqh7FwլL2*~Lp2 {~;x? xNYmZI.PJtuMɰ7&8 q4^t _ W]+݈&rʳ NJ< r4TeZJT&}SZQaa,DhEƬ^2JZY%~ҟio+O>!|=¿u 廳>4wJʩ!#*1PMQ4] ?}^g #3S8Q J+<B4-`$E]/+vg_3e^ң^PU;ɤߝ]Oǯ+gWI"|+HN6>)I/mbc ]>N_V>׵E^.M߇=a` m6e߱Bg8_br\ym|?2?cj7=OUMZK{2T"<~G|Ck<]XZ뺜\@ ; ''{Ixuk4YSQ7B`ϰ$یWi3-Xhd?!fqv5[6.[q/q.w+%gԔ枒KJ>sw}!~᷎uգ-B #2P6:כ$k_xg㎏^P𶶷[[NH4'e)r GX<3wk6(f2E}O-Fc$uD}Sç~[ttf*30;p l~\CkߵMgVo5;h`V,eaw>lXtM}JĿWT4Szqm4o$i*,Jpk縷&< *4BJwy+kmR_pF}R:8RK-6/kK:;VF~^< I_;6o~4.7Kz=WPI4EHTf=t={}=?㯆"-$ƙsbz)&@W3᱖RvwVv7.W,^RJoS(ŻWlO$%iyv$EeaXq^VxtH>)|%׭Ai-虌o._#kbMj;4躕aŹ2Fŗw4KA^kP.w0u4o~ZQ ۷E`n9/c }]L|.uY}i̹u|,sYm%}#:u擪k}F)nCr)'Zwv)4J8ldɯ>% G|I{1H6Y0RI?wj.ɝc=pJO7u~Ô2K\4Rkџ aHm}MEVKg `g(Կ U|mԿMkSᆥ {[ާu O;AOGvo(;mՍ ը(6%aQ#4+QIumT ~QsKwC #ßѐׁ~_ާ xDr=r[HHYn<RLWO8Ix׍t\ӵ'&0V"7]1{ɱt8]nk^e#ePE=e=k?uGCw_/uҾ7o%8qxcRӢ$#=a_5]KiItkiiC19y9>y=г*WcqPq\9nƜ/+7ov=cϺKMC%ׄPD=ċ"IFV.\.:| ٓL?gOM/nԦĒ5 >Uhb> ~޿MG×Z0ߊcвK Po7Q񴞃5?KG6JEwor-C!e$((X]xw%K(OBUƥjյv|Z\*l S sF66<_K+k{ck"Oڛf;&=MB"6pg FyUv}+cѮ~|ct+jdHSʁ"egUHp?H੿ !svWWtC$NUG-OI^{X̉J*bڷ72Vm&QroֶsC57ZWSi+|E%a>.-"P#pIڲęE*m\+xOk C}?VĚn}h%1myrR wߵ{o_Xj#'tZ`ŤoZl,8q=ln*3i(6N_Us҇dY|tT6ܭ;M/mG:N}ov4ZjɥE8 H];⿇:%hqʮх-ޟE:~*T6?,[ ?+:& qAO ο2pCh'g⹯? <GxC!m\GEިIC/?cZNJGX]Z!1cZ_A O|7iw-ݲF)'rc=;\p٥ a庖Cx<%泍䖚ݯ5~ |_>x6G2I;i %cԻٮ~m?*kR8X-Y*O^m +r)E6#aģ^Ie|<>ifއh6Luvz@'޶(RNSwo7N[%96>uE rKȅ; Y_ȿ ?|<rW]01TItRr,ՓŷqWoxW~B^ LHbQ gֱ/?eܳ5I$֌19,ǒI9ɮQbc'5VW{Q/ lU~_ tIs;Y^OKzvMjWZ]&[9W"0Q#i\qU**bVjU&[]b`*q{%[>xGl'm/Mpģv2qZ袳VuRMݚңNT)EF+V_r8:_^<}qg7#QFK)$7$9|@9/Ŀ1Xrau% WIEk꧴2z3%OGՕV 3|;cG{/ɎL.=q.|~s4k:dwQ[E# E*@!HC.9~6;sKfKk=2m:sOӺ>kq~~ nm{m}-0YEⰣ9v,rJQEsfy#7-$ZYFUXHڜzݶg- >,o?ž4$}IQ"̿>jς3ߨ!ntcp *7,{ßm=FO?n7ln:dzֿEEԼ+}g׈$fu?Ďty=7|q.\uH/>^%č FR R$pE 6<~hxG=9m4HVnI{sZW7칟.;>IT܋k^ݯxG$k Dg5A#-Σ[L !CȄxs]L0),qơUT`()Q:*EBrm-z/N =*Ri+^)珼Mr os!LMGϾ G/Y,-.4ky`V 6B@$(m>7|9p"J\]Gራ~oZ\'ݒ'#[gN1|Imv9VSN\ŢϹ?z5k=3NA+ 0(訊#x[ÚmKME8!Z9Hɩwy<=*SqҷdxCB:_tM#C OˍBdcïR/^ [ăGwmٍ8z-1NRI'-޾̪`0ԥqNޚi9O|?-Z-C k w:os4hUy@&00(j"96{zv6B)JpN[o׹xpy JKZI4Kirz$- ]Ě.hʋ\-UU21cY^|c퇍%>絯lz]HhW5Ej|Wjuy}%k;;~Lm78MjFOm`0B:0DD"0 u|U|UjVp,> 5Bc}R_Q\=G?xS{Zfǫ۵ߜx q]}MZ5(TW][B)btmv} (6 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (nh9EyoF+~^&Q\4v'WRG?zFENyzI!|-ck۽#ϒ-Tӵ+E, eB1W*apUQWbGFkׅ9=Gl:ǿ?>9 GW7CG,u]YkkuIi `Q *Io|Ufm&NoOϯ},f N+=>c/ -gz*h#|}wXS/o&􏈞y\3>z@*$r2kw;ED7_+Ctֻ߆>* -a/iވ:~_)srĨ#JnmƘ~}{K^湯LsAlaZAnaC¼fzs8ǜ5OJR~ZHq&Bq!M_I5?N?:Wa&=-a6GP~xCx<׶qz%Jit\]E^JٶǎP:Q[Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@W3_j7ZnYɨ_gk q #={9KS1RD<&p]S0%Y.%~osIy.m8>?+Me_rK _Wğ73_/lQ3ʞ<0)y~ _kzk:xǶrjJWFQj<~Q,Vt?yEx;lvEU?i[#GXﴈ9%Mg$LN}k|sڷo;(KC\"LUIa_ d?j|*Þ a]hXPn$h$y"YJ[(2|$LFM񵇈|=m&l/"PRrp@.5ycTvꭷ3Nּi$αqe5*e+ h_P7=߈wOt^.nMԌPr(–bFիp%jج],MxӧWVZt맙GC ʭ\Oz;4ݟ]oCR=)*r)HĿ?v?ۋkgw=0!N A9~J0f_W~Z8SRd QpThУbV̢Mmw'Wr^NW%%%}ߣ[륏6 2Sp+7T?^|#5j:M@Th/ #}&$/ gnpgdψ_t GZwɖ{-CH9c) +1NG\ {OJ0}JyVK깴_" BW7E;N\wub'@2NA_ 3ॾu-eG[8f6V7rFQ+4 i  o3J[KUWv{MB˸8dm2j^ѫFKۧ{[*:^_R8J%RN׿U4Uj>1u|+С] nSP&FM#ln|a5j\=Yw³($g|ao,|[++b6Q%eR=kX|_Z}nL֓N Sz`W9_ 2tgeԕXT٦nWw[[asL9gFQN4tm(YYi.}4o{Xuf8~B~_?ࢉ4hy5CQTqXw'Iq4[[!mV@`rG#*NիSX+r4}uH"z4icYl+*龺g|} 4K|c-O=QA\mnR9cC2ȯ75爾Xj~]XۡymDA˔hW*8rcVk w{{>[>3NUn]̹om{'_L~SƫFK(<(8]˒%I0O'+ F >V[}Bʻev-۠pCT ]FW+_xBdwk[=3`FvNI~+?Qi|M%ƯnŌ(faoo0C=;s 81uieV].~m,s$wRRZMo[n}}킔Z5';VX~V$r*H'Rp[;?Vg]t|7y?.46yh?R|w3>'>#? ?duW$#r#lwQg Q̱BFj[o=ֱwO)2֧5%tᅱJ+k|{7~Zgïj׷=ָ|7iw7 q OyN²%xaw?XŖOÿj>-Yн.JAdT)\=jSˡV.3:NUjg0_3Je~Ӻ;WY=m}HC1:\z_/W>\]wwe6-s$ٴ3Fwb5*}wKnMӧRHx$>j vpqYfB;/ƴi|iEůM] 6l,E\Ɔ]`%e7%$tV[]!?-kxQ<,Dw)hL(],or9z;mJ_)^ّ;nH<8ǥ{[g{?}siKZHzI,b&u ŝ\8s^2r{ouww_✯~aC(5l'kYrc/^1fFz_~#@nmu!;-1yV?5Lz@1s^hSk}^kd:[j:sJKfm;v;OgσeYR+.+lϤ,Ɔ]`%A:~JݻIcX%_'ocz~'^ycQEyQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQElFf43H3 ӥgv^6K8/J4n W}j9`g?wq?ڷY+:D)ʨ( 3ܐj^ YeQ% jg?g s-_.|S5ۍ2V.#~@еhE["A{ M`8#뺧jӷSvF4ӀM TL bacQ#AT*efӳI?/՟0l۽WpF}ƬvP*Jp.r[F7R؈neaT|Guef_ͅ2E,z cRߥp?|Mh |oC` k_:%%z!{zpYW9hi-g$]1paj֩3_#O |5'ěeP|1^u^XO1^WQxzͨ+|˴>>GpT¸o2\|+GuŶ;Zsj2r~#{}__$#{) Oո=?ޘQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@~`r|%bҙ~>)֞M.]-䱿O2_|rF -x{Nbԕފi'+=ZRN.]I^k}ɟ|5vE-~`\VʿKReφ;-P­L},J08 Vwÿ;'He:}uN.d,X\_M,֯X*Z=q&+Q()JQә${ݽo)Ҹ+k?࡞|{xIN{jVͶ'`;UA(3NT޸c!vTI.>;ƯLJCacm%^$HB@%kh|-o{e*bH*=~Y8_C#X<)4j%F%`0Ielļ翂G"WQ}LF0 RI([$5? $r<Th7%J/y6ODlr|%bҙ{L)k/)O[_c|_/Z[joQ#4y!w$@S0~yIYTk?rwm8Tc< @+̖_& ^JOJVįӪ׎g.v?WqnO[5㏊@kxrų2,Ve'Y_,8G' r_(Q#~Z~>7ƈ>$|l|?m#D5Tw1$`c&OZOF k~t]5w`؄20 cy| _4gKM[5ew[rq$"pَ#(V]+;[SMOwz_G/5J-*׏iڧ/ocA[KJXn"aW", av5L/_t/x՚ɥióHJ3$`&r68|8S!aUkFWoezX|iĘ V QS<Tvݯ.2"=^WL;LW˟KF<{hzePgKBʣ̑Yk*wW}|<-wQ]Jo[=%c@Y5|OS5#4⽝՗.\#SlƔMM;r;-Ϝ?e?H&'ubH|DѾ2xs\^!JKIgH8~g>=~_[E2iZy ncURpWf.xuyyvOܶO{k&/,:<1nQW^kkyꏪiGy^K$>5[]/C^eHR b+Au+FWeSףRؼ h,x|sw]>Ρ_g~feįösh4٬Y 28VeRuU,V[3N2b*SJ+krn #ßѐר5:_XiK0A*Ndg#|/ ᗅ|C8m-o#>[!@q\qgҷ|E!nl<_m"/WH,幎v 698FkdE \'WTtU;`{qyZYh?qQYn}.(,Z— 2@#'kPOڠ|f![-|mɏmϯ5i_ُO|)ѹ{{ I1bTghƃ'+ A}C⯅[wZmI"-N˞/g&K*ifeTծ(RVoes7_.i+ 57eC'V741(QgЭDm(z_+Qac𾏯|( I1[ U]  ? G.SiobJvmn<]<֎MRy;~*-Y&Ms$i_K_yg_Oþ-0]N͉Z/Qw sq[?Ex+Tӯtk7+`Kd1 !Fkm8ދ =.ј[qs|#IbZy5nd/]Z v *ngjF䌖[1Uk1vdivm?lƇmO ǚ^G[{kt$AR^x߈i WԬyWg.ğƿI?a3.襯N_ï\~ϰ-4#Dl)trnq#S|5#*sqZMkѯ+yA#b:% RyiFuM=o~w8JWܽh\M^?Kz7!|I|Eri5XJI(:fB(g!TQirZJ_$ڟviZ\8,4I>q@7\'ů]u}VEefm0U,Iw΃,+Tj5WdObt|'0ܧUʖn9澃M~Þ)k^6g#NӤeiㅝ$y%HBLql~w*6b/IkZvOԲ7ٖ ԃN:}ߡOIcX 1?W>+R;byzE H e$c>)hG}G-G>&:وӿ6u ?<BԼGv%i5ŔF"LB8?yyV?~4(Űh[$g[1w<^¼݃_N"z7JjVi?@ [ *qgk.EW!EPEPEPEPEPEPEPEPEPEPEPEPEPA8Efx04c׊w+MQRy\JSZ2Xd{aӥ*OXuQ@ ӘҸn)K-͔HT{7bO^OޙoxQ]V`Rɬ7H|^Xv q<#!ܾ_ux!ߵ_«[}>-^&so=k|_|=S 5\&]|d2l1Sϻ$pc8A{S!ғ9p^ wEᯏ,G u.Gꎈ$?f _soZ/4 ylmy#N 9G~qfrWM'{L0 Z5KrDX0#= vFz{Ə%~?~Ǟ"nH?ȲY^&VX ~k>M fͥ张 )qyZT~#/$i.se,G9ZO_ivv/dPg51uKz5^e*8(Ў~xca_LJ5+[sԭcZK?9K$Prdv57^0>)3VXFﰀ'ϵxgiG/h<`Fc%x!SF}q>>?K{#ks> |s?-#/Zڤ[G63&O?Oszm_lw[i]$WMms? o-O%$hOP\~:+N|?O_Mi__QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEdxZgj"tK˩v))' 9c@PIB vEJ9$%עE+kזW&f)V`AGP@~>B>)BM.dD|H -q+Q$WCΫe0TAQr\EyGk9$NDgHp>uJFq4?X?@jɗޟfN0r+ӭsU⌢*ubNY׳K>CR|2~/5HxkTԛIAa!*1 b69Ұ!Z#^!gp|C6AzqqㅛQm;E5ۧQOrzr'j{5w}EPQa Zpugr$(xr|UiZB{H"8am?kφJ3F 6NVvWR;J0ӨI۩4QEsAEyO >(x;^5֧op/go ,Ҥ@"t1VxIl侒H2cpp˷Ey8SAm|QvZ}ƕ4pwҨ-sZɱ%Ji/F~i'|-¨:ؘEM)FZŴZI=>/|==|;O ,77hidfw Oj4ۿޭxvR]Sǖ0:LrXH$2v#bnzΆYSiJPTZ+|pU i?yi]W韵wu&mxOΚjRKĸNb?i=_v? .<-4p߉^"'OAD]:nIE(ɻ;rHI=PjTa^.nRWWrn[OH|0ַ5~Ym-'7l8X y ! MúՆH!Q{u*,$ #|rx^_n)&]"UG!l4??Jh8WV͆P΄Ԓm6֍zQU}bl׺յ{V(_Vf ic}* j7-YbAH8 QYrKw77%mܷETQEQEQ^SK~^u |H֮$m̖f7ȸN^+ a7{%W9qub13Q]=Z(s((go?Z_tqg-bI$|24M[tap&zvZG./CS5ڊovKV+ ( ( ( ( ( ( ( ( ( ( jphtZ H d\o~xy~""ǗQMo}L{wdt-*TQLU{W|ėiyf̞}DĮZ|42GxkΊ+k~U>FN~#{qYU .f{O;ĐTE..pO_Yx- u?m_'|K@7e60KY|+fA<%M=.B> A^Z#|լ>5K오+ #nL@yPIÃ^پm~r5 b:D0o6H]T?E$0B=mln:-w>}_,Oÿ^F-఺3>|C"/yYWvҡsiZvV=OO?? xᶭa{XԹdjִ$`H{q_ ~F?iE[GRkK\T(.79V0== xMKeWU?/Y ?Y[3.WEhOIJIN0pq|u:㵞Iy,uo], aHvnYJH7 Iqpy}|e_eJab1p|~O~:xzHغF W̴r6@G"@Э ;Hb-E_ u~ q?h߃8ּGo[)X5ޛs*`HtUW (7Y쵝 "{ #2s@k\ˇ*duS6Ψ+OV]G>޵ixGjOxyN%֒i%> *ftՓ<P{} :#m41GH Hn1N/ 0X {DH(P@s_)&?׆*xjRd7'sfѶG1^Ld=FgÝ?ğ /R4f In20  ~ $~"SC1rmcgbP/A:z!,fLP{/Z?e?>>|u_ x (&Ӛ-w \uO g|D>;j?Si,#ylʗyqPkҿet)b! ڦpz6޼+Se@> >[Zs[!e%Vcsψ?wn5&Ojp?`ۉ$n@E{c^ſ?W5A]Z!`D[X+? |M៊:<猼G>pZ@$1.7F5\BJ3؟Q26$#?o~ ԼGl4.ƊX'B`U:5nwG1w`u,kؾ m5m&;-R":U'j8-}QsEQA8<њW((uQEQEQEQEQEQEQEQEQEQEQEWXߊ2xG_Ύڏ8$ DJq}~|l(߆>/WCOi]F8LM-(Pa澳搯]ڝI m|WakҊV٭lmݻM߷`"|#iݪibEBaJ'GF't`:`q"U`@`PzN+c_S'_~>KC˼/-9=3M!mM&GF.Ih2lVc.H˲Ul1_b(<5XsaN7FvNd Y,60[jV:ruzt'?ھǂ5E%ibZ{c0ea{g9SV<xSkI-K*L!\E}0ӿ?kGUtvZ|lEmbS+Jff A^ |#?wĽ/ė7\Bt!QQ dA esᱱua˖QW;yY,va8sBNӜbeϡ_Rω^~hZSZEk$E"G2 lr ד~ߎ)*{$nmlR _9\Vb -p7G&tOߊYjZrxY9w'Ӽ`籬oP~߲O Vllm>'[Yb1nx|BeU}+#U7Z{4z{^j88F+2 N+~ը){YJ]{G hi:oK҈"0C My7No5x^Mkg<8S_֮n4cIf533iq,"nhmOp}aξ6#|;/:ĉh{y#Bd{)e~11`԰'^.'I+?yRM.ToFaC<JEq(޴mI(u?D?h_/!t[jeM:'efTQbf;T_ ~)GOEB4m k "Y mPdn?ֳ ˑ־|SE7xq-[5B{&f܌U7c'&vn1 d Ogھ4Դ?[%晫Iiu 7R==z~pzAظ|#C\ce}\֟]sźIn4vsw&DH}oU %I0E~1-Sm:u|^5Ow-|̋5oBl<pI nC C2Qw}ES ~ĞuiZ2(2k6"YMx|Qo-ƨ.u@P';?9 9ۅ&F  V5}SMCՓ, @ h_L59h:5ykr^e7J)Z+1tjb(Pw+B 8IInzXuU|#yĺ ە"Ϝu_=m>_{X:6gn܎9nGW*~jk!gbU\T;mia5f"f|"±ΟdG@mZ,;iѯ7R}Qa2WSjvMY?T'N??ޓ%3wU;fsG&g1YqY)}yٷ K%_o?P?S?-a)U +) rS3xrkOxvRm3L5e )?NJ*F+>ZD|5RKt,rL8J6$CY?ࡾ*~%x+_ݿ4Y趫+0 [8XB}ʆ2rF[W5)b+-wZjnSf\ڋRX8IZ+hK]zh~ǬErpi|)tÖzc[2w6\{?n۟Lf hl4=BKV$[UKIFX1`0,T3Ǥr 4V sGI'PhivR|N7v5mծ9gν0:w(ͻ&f}t?l'> jE`,epQr0iφ6Vp%"D] #7-n/uO'մ{[z%ZٕNH)#Cd`\۟;<e|+/-^Q21a"hPHf!@aX̚8aU|\n9 +YY];3 Vaϥ2W:19sJ2Qs#MRn<]g/ 5O򥞇)}OXD2qb|lGd/~*JX{ xf[Q!B1,q70#y ɯϟ8Q#V񤟵'l.d{fFMJ@ב$- $o >y?Z5?Oj^}edw,B\F4)?b+aZӴ?^YXzͥ[m&չ)ђ%O5it*wǛk-V=+n-dzdTl]j? "4>6R&%-$0Q1 @H_ ZC/bexDwu#6 JN/ykؓ,GzSk'`N-c7@&0w/wx-[S9\MP$5̎G(I..rAjW>$Ζ:vVtKksqX.EتO~d |;-zto$Դ!,PԞu|8pKޭk0R`NNI;56<%R9ƅ9NQ$64o4tߴ'}G~Ϳ쌞'nO~?G;x3u|}swZe98p]@,%Hs6z]"G=[Qm$b3YٙYn<+eœTCJZ9GM=թTOVxNr;6V_l2~V-kGTMɅ%cBQp97u&Zv¿fBľg-*“*kG" !?/Z ]Q{GO(=_S ~v࿁NKCǧKͽՁ;גڗ!fKxjF%te'ˌϚ?'' 9C+|8#)cYv fAkfkje~֘[x)Pm3unsZrH OcZ19sm~98u+x6o}]Ӥ3+@L0J{P[Ex? x) e-ɘo5ퟶs{% ?6 :n̐Ȭϵ7&+^Y3d=xn2j~39Y܉FZ]@R(8v6pf(׃|5;fxxtMF GYn!n<`".QLfH" 7ψ>5|e/}@_຀54nr@1+`A\8 ](Tk*x7ϣnZD/Ls]eSXƱGi)\5GvK8z^oi^~;.2I_Pz"H5mZbnLr2S~G~'|~BW2ĺK;݈V8ò r~G>:W Qo5\pO.d?sY4φUD[Y&IK|l=kl~*1j?4'B4A~#HuF|JVDVFݞvgW.aՉouhK^mŖiIR<ͪE=} (TTw^qh}:%UONsd-~Us+}χeuS &xumAy1ni0_w/;㾹*Emn?*OȑS7sJ[\?rS{'*ƿ/?koP?I@gg)m7ݷq9n\lR dǕ/=5FYGs3F20 !@_$b6n[\*9^O .V??a/l4qxHAh2^4WV9=sg>i>-m ƕ%dce#d rJ{V}2#e/GunId]>nmlgci'oɺ^X`j:3X1La|q)3 A+^KZG:k? R8IzwS_$#Mi--123$W nQ/;@w{8lixWŹvz.?b{»O)O1}Yn,%IVWUbtH cToͤGk!)Ni]d ' 62;3$=^\%Ljp1%lI-62Ya>+Q@Š((((((((((4 s%,a~C^x:v,K=3: k iw&ih6J\Q[[GVtV0nn]ӹ4aV4%4+in}mQEQ^]_7E.jPR.ĆUd!#>fUfci IheH5[TJQٴ~rP0ʕRMTѡL;T+mFB^)W)2;]Fꮡ 9T*8v t AmK+2OO37:a5:2B*+}SckhЫ:rɽWX4ƌJ-i_[lvUm-o a uUW'<_GgɧXi+;"1PåiYRO޵VZӿ:QkUj^5]墳jy!QiH?hw:7ŻeP]X+&DO ƾ4X|7Yiv[m㓵(n<%:V o..stQLϾfGpbFouSe$[8Yom~:r\*GewduL6Ƒ)9(Q^*=+S[-tַq,рe< 4>5+42[htiGhPTJ}fxƺ?ϫxTQn'XbOL2{ { xwZE T/M,'R9J+viz_0aj*U3&wg\>xK^!,KgK0Y*]|y_|1a⻭+WI68ʲ1U:RmE_aUtZъOIYw{[oc(ObG¿h> x<4кG v)Sþ"nJ8Ѯk#]ON zsҲU-̚699aioӷ!Iȯ\{ӫ71fYi7S\?R^e c??'UbqrJRK[+2ण7$lYI#OAe%Tu?hvZb&:GS jr8KtvE.h\p"0V)cb@(UQRVQE6(R0"~((((((((((((~"x]|mOH%2wc35HsFҒ_7w|l-溚"YHϷy83<\ح$W/J!UGoS'yYsŷGy||f|*g±} eC-->>5y|>ascAkl$ۑڼ_|z5mJZ 7x݊X sJy'j3[ FU?S%{<'7^<˹9,љo4m#yH#@|'?xѺ$|axnHRb#5xᎱǂ>+i?ٚrΌF:쏇#|wᎣ$%z_Kf:V95GCcpk'u:iq2Տa޿8jO-/?f?ˣ6i\dbOv57dK?#KET;-sZBA&+yg#vm|v]+vvoH;v@K `p|6+x ܕt;UC;bsѕ<^{u܌u`9^qf-][aMBX]L/lCƧktFef˴ PHVlz5/oY_:TN?86F-5[GҗDҭ-_B1v0zry'*0$}j&8ӂCg';=^џGS?m"Y[NT:|@-_N]d63V:kkkk+k(cQo,pc}+@֝,I%ݜXnavYm_"0BA?Sq~:tBicƷo*(;I|( [a$#aOFR_tGY#2T bHgx.}C7Ķs>F¿4n'D0334OjaC+=zW?TؗOwOkHu]rf8dDag9(5lZ`? />~ȷp>05${]J 8yT  k df,{J~rj?Ě<B MTR8µ`f:$jWz5ICQ{vbH€ge펕qWu <]O&7s+?Bf>M,dS@65/űy ÑwVgaX#JoCdq45QҒwĜFUࡨnDr)>km{u?zMv =<2%$63Wx(9S#B5o"o_&3Ě= .&۩]4 dфB1Gx#t_~nF}>gGmcnDq ڷH86#LJjY8j?7,*U~c}" )k=QE ( ( ( ( ( ( ( ( ( 5>x:]rHB"r|$98>noi_ |[,wBQ%1-'qȯ (V9a9(I+^9̫t*PSJzYjA ⏃uktV}ΝvYA,lʤ F*y=ko ~ |Jּ&dw1! 0 $?h U;'OM7[y[ "n&Q r?s'臯|V' 4"tNwKg Ԛ*ugR[ӊrVn^?1`~7MN?;#j5v'\52 '?+O?ce ůX[ku K8nF9 YiA6$ͨi9EP%[y'Q/)qhD~隍QebѬ,P)0Fv2+3l9zbiWt&,kGd# [(E{^)Ԅd^N')'du~?xgh%?$H[0Gr}prA۟)/_I? cNY7WW{ZP8\M[].qtz:|-qs꫾8ȒA)  <'I~к֥.-f}.byG95R[<գ8Ӽڕȟ:ߙUP9JԪ ǖa}']l{O ?7i3ܱCq:ŽheS9qZou¨%I;^G˃LQOt 9V8&ٗS)_w?')`˟ʸT)ŸaZӻvwnf"9(-f+hޞO[ Xx㗂|5KjyS R<س6?|^xVfVGe%хe6q=PIU@HFE B+F¾Ny([;6](:5#Yj@H!Hc: `}}ۋ֥q+hj$ȭ c 's)j|ug⏁Y>7.y$ ݴg11R倣X0Mέh?۾YxDOEyeنB, ^'d|0uR')/I-&nkYh 9LvZU)œ$)'%.k:^-?9bC7tCޛm#؊">x$WY?e;Cn~Կয়?Ho֞/|+Yew"/K ?q?ßׅ$}67Aq*V$P>wk߇~ g{[m*Oҫ5e.̡pp0Nr1*|@#kٷ^΍i^ѠH JrHr+ɥø:k`*'Y*~pѾgsڭX7= ʧۦI?;A|"Ŀ_1_웛"̂Rݦhsѫ8#~'>~6e=]0td]BH1b}A< c ῎௃oF̏nF FټY2q0ΟV\a-ǸS <-|kGca/Iԁ$C" 1 t@O#h5*{1k7N&7#2Ȋ՟>ad^h7vӥCK?Ac?Ao~-:Ua½JQ_exO^y})!Gi4M4w>F6n\+s>g崣KIOm˳Wjz!fէ[1U{8B9)?rouڲ^yG/۫V ]O6WQC-Ǔ HAbbP 'eŻOWy򥎣^pЕHֻoڃ )5Ӭg3Ht?min` B7b6385ptO:ͧi:w;cyFc?ݭڿ ~E6^꺗%ǎbwd# Gp^ʡ{a v>!-៏Yxw֛Mj=%.uS'VzJ#:i,⻎_1ԥ^sF Mj_E=}K>W?Rin.乷4I>wпdKW_UiU?c__ſ>[xݟZf(oj)j`KJ+<ƲOJ+ YSNi6ɚet:Za78FlJWF}|)%c}E:oe{pD[d`>l}kच#>a& -5L ~u6~0| iYv'ΥDq)|0.k/i(^&$y-l|@- &<|grehȹtwz2S|%^0sO݂h";m׿Q?/KӾ ZoY6Ū1G vX61}kG w>cu\w->F f/S_'rxODgMd㩢Z\钕/F 6d#kҵؓπ ڒ f hn㲟슅JU*vi[#t_f|Xjk>(Q拕K^M>Gk?N9TquetaRnY(廲n*KtPVU>"sʮRd~:gLE7PhtFgŗ3я'ij~^g &bRT 0>c^?~?foi-}sM!hN-?<|`{%:q+GC۫:^is7'');OۅmW2S><~~~.\iPMwK;k0'd p̸UI KcO>8xnAh/D +&˝" `UB0|<@j7,[Z LA5|ϴkm}/ͮ,nLLiY˴{ 2r0_ jRsRoi=4tڌ^+|P-:|0PqISJUS-w>M^kn]FeUij>nPXWqVtM<3$ޥ>Jb$D.e۟/f_>߶>~^6'^(~$ޙFShS/~:6m>33jy#8 UnYy\7H}z)^TYF7ҩ7}~4B凔)Қbˮ;uzX(Ŀ<%~? <1xqե$@!v@"nBQl㱿 MO%v,gW3Io2`||qBxK~.9O_64j6C,X[6/$WD _5C\؎pbj~¬W\8It;0O[Q/ѦI(Ԅܗ4Ϫ:R⿉>|NskM&I<[`A8t:Üj|gW}wߴ+q "Xg 5toM|W{ǯ  ?+ X,m1Y _ϽcO2ޥ<=*JJmNMUJfnoW|\Mjέ:u1t[Z]>{UL4oه~2|o7q\imtb4KgbV@x[{O 9cOY4yq ά<ªr8~#|01ᖴК#idy>B@ܧ2I+!9ςk 5w~1xMI5 N b[F7*#+á$qֹٖ׎*EZQrJ-jZک6Oe8᧋MЌsQs⢡QE~6~QEQEQEQEQEQEQEQEQEQEQE2Dfs1׽E%9\XNOV+>+-lI㿄c/¶rIh#VZnʠ}"Iiz5~+h;Wm%|BF_3DCb)wi+ 9NOG?x[ï$ׁ?ickߡrӘN *>t=r+djxI򽼏̸b!^kU>|=MVİgIn؃,Gˏҿ=F'Ce$ [WIroەfN+O(h 'ޱ~!|,Lx\t=9?ⰸVrmTv26'(sf9bW! Ob:RUkK=/R2M& [''&H9aU>ZIc){ {ٰO=j)G  !TSrqV-E|&0z_E"6ÿjsv3%$imV[$ u*W|-/+\|m'Pe[[;eh˒l_ ]_֨!U^ +aZXXE}wg'C Mb%%)0qM6GݽXSe8Nq9?:s=2֣5 M-pǺQCb$t 0í~0xhAR\NemӉG$`t c˫K!\' 'r? i[F7Q*R=*X:ų~I s0|徒w>Ib7B|GRz׿hO:Em{|Ie $pWo8χ?o<"k Mxjrx |g\/gĴ^>uzqOYDs0+пmثNZ |:1ڤMv .0 W}OGr9G : Tu|/O F7PvysԒܞ/vB/w*j Z q^a]ơOKky p8'z 넶퀜z .ouRfY_Ȯ[ŭ<9+F/jV1]X))ۜ t4Uӫ:2S&fuiB\*E8]}/iCz~XxC^iP,z&bv8R9ckP(t1$R0U sRNrmTR//C?~0y;8WÃ`Ha%mْĞI5Q[OnzvwWoG})JWughu?>^s.f]OitPH*/> ~ib@])}w{_i.~w0QʭZ |-%4OB6t0 0uᯇ ^OQ>^wl6۞qf_{w_=>Gܻ/ |+%<2O#]>/*6$c5O Fq W .&Cc8(*]%Qh蝕ף0߆>Ѽey=uHl">_Iq'=o h2:Hl"NߖIq'=nQR]7{v)aZ G}|0->x_O]a sT{ǧ·wIf NAQh! h> Qf{:L+K )2B BJ(5;K A;5ע׿S~]& ].U[O[c .v!L3 ͂y8+h᲎8aBG(UE81RQJ"MշPQKOdq=uOx+]]h+z2kޝ+XXYA$^B 1FиU)VʹMoN§FR:qN[o׹h_ xwuI-rDF q]w~_tqQ4o*Ȥ9)^ITz2aSBT^%gfs^366|/ mO\ clQ\! h> Qf{:L+K )2B BJ(,Ui66۳zZ8<<i$Z-/'׹Z~ |?.kq*--Y;]]:EUB'H& *MU$޽_]Ԙ0V(]5]:=Wb|1D<_m sGXdkoٛŧG,;ٝ$Wd)`c}k*ӛJmkԺ:Rdkmz>0WᏈZ:_|;Zm<[!b: c^Om4? <7xz; N#r7訥s^vP\K_ܩhV>&g%ct&eed`Cb+j~ 'F&զo Tu@WvQOZ\!6&~W BR4m&ףaj 3x:t+i#簊KUXe.sG>'n˗VK.֜.6@[Q;۷E+-ak_ 3O"i` =F)n%fR~R9&'wt_xBejhcԠ;%IYfURA'hmknޞAZ<܊C? ?.Y=><;i%c.ia6b"9g#VLn"JkͶgK/|E=Z} ~ |+ᯇ I;m02b(b*uf -*q$"|9E|Waei׉Z:uVW ',zTquԪ8&M|ԫSO9|g<3e~t1vvW:l2[٨@6\F ` ~%| 58xhW^U#尉 BWb~̳Ne&ri9Y7dmt92 !%]y%keM/KVq e/c>WW+]>j/?%?)aadin61 ܢ;To~^k=g? |4|pV);pM,5Gv>S^2OG+X|!cpd9 a\;S>I۱JA^$~^7( | H-:u#M\)w8) B9$Z_2*txVYm>զjw.@ya%@;W pӚ2ڎqX C114sUni/Ϧk PnmG4d:=pRG I~ֿׂmFQx.F1X%xѓ׿jo;xVyk.ܮ[2f)v8C2I!8?fdo%3^vMrIlqHG޿$JxeZoiߩ/:r#3gE gh !Nx2SuV ~~m#(c l@tҿ #m8.Ut~UU*19p,j`;z3c5oO? k+>җnRdԢc&Gro9sP;lA$>OMNcr!i䬁͂ JiV֝5[Fb7YGWO)_^,F!%^rq8G{N|n"|SZo"cP&:s˱)r5+~MwxUΡVV]>"^( Kst ucj%*ݰ:ߥy7Zx BD 5Gi iJۈI⺓Gn;l0IE-Yk;|x/ |GI/*8(ȕâ¿~\OK5W在v}+O{ )>w߇ u9%hg5`-ex)XCDӭ|?A p(BE1_u8:niVapJqݮms[XpUcv<8z^71{Cʏ_[|yJHO<ALm'j[w%^~:][|(?h)4FP)PJdFmB1kq|)+|4ӼwGҴ[ Na6bڣ8z Z6c4: U ~5ߏqyq5V_#ʌ,޷,}b;tmiCvGߴiMĻ/iW~)gi4}*nYcspBnrV~wʓ*{3*cr?J{_M7 AuxR}VL K_dLXf窓ાſ?Û \xGOta F6CᧉbI?cvF֬uJ)UĒHDl|\51U%:m(Њ4GdIu}nUwkK3]ܓ+Xd_7If^kX[]n @*/~R÷~ :,&f"u&@ Ib8$py89%O ZX|E?{|+ j>dhV rq #gǟc^-'Kuy6ʑ)F(8@{{a 87@=}Y:7ѯb*<`~+r)Q(8¬fVKfrZ_k2,d򆸾s]ܜ$sSJԼ'+MSwWtk FC \ x#kԝ["q֠4`h&2H6$c6&Ug-n}.+p}R1\5?G(U948ƞZU,c}I y=W~߲߅l c \"fۄmn6 b;;VO?<]l&G Իa;':1ImCwV^vPG%Ho¿|L)UzFR?!d%xg¯+]t ii67MGA3n2coo=}i|\ q!so w_iMSw[/]vNq5|2@s.[.qܭ*7nʰpٶWs7rV7qv䯡}-&~˞~ |+KKC-7;BBc?`c ğq|}>O㾶žO5O yg*ό绂V !-`$wgVSg(tZRS z5c?_h<ϧ-cHB`&B'ޥNqUZ4Ej#%U>zY,A]XI50~XlAS9f9|B5[?w~È?~ J"mmCr4?WE*Cϋ<-q[im$wo5p E}F$vAkn2U𴮺_ g~64+sP(((((((((m+~|)'xJӮ wj3;aQU5&Osý[t_+ycTsod9I<>x<ǩg[`3FgXW C"JgcMSﴝ7V.5M1[8-󵥌k`qҾt 0x?ic,x?+".&QL 8Z59 wlx_O𯆭4xKYhO5]#y\&>:E~5jvvwJ0<袕 щrƏ|`Sƞgү{k4Wv&k`Z $I#|ɱ߳ƚWS'~Z5- uI-#ݶc )Q/s ¿P?|g>;ºG.|-xw:EŤ~ YٟoFB +8#]<-ϨxNa!2ްw/K/Vw^fssV<|A𶡡NmZf'dA ~8~0wGӯfwW>x{I\&N/]cv~x'i*?go}ޥ 1_nIFs_5UkωΙ]"h^ aՇPX̶rp?x2AOm@~Z6i[>M6Hm-,(';F>F\&hZw}w3NZ핹b X>u#}xY!jvAҖtsH#lW֕s~_? -,u?RXŤw:WBmIE%A@5b?ۿi,ֽRǟ >  "iid]\q,Č]_\> !ekat"o^%/+7r56ҹɯ9[ĿJ*-5_o5-" >)cҮ,핔esmt.Nz?7^:KU<3z5]pO=ޜ,5:ܿabPqR𷌴]+UuH{w.#IPв)Qޡ=ណčsGҬ+s^i n88r??9~>𖇯k^"y \2Q(ƀK {cOL>xxmsLkuNOwBprqR}/<2uM94a \c>gqYUGi _D{ ~Ax5k_M ~><;$-<+֖M'jv7,}[2vI 6(^kka۟ƿ4 ?ht)#<'i&h,+g0]3h?Djo] cef9+ <WuzL%ӬmW|7S,0¾@QM|%}爾.鑛Um0ܓ44sNel\ B:дth{7YL]CO,g%d\2(+4*R״k{MzHa&$Qy-Y˨P-c9_%4oGuC AlĹyۋտc&gFѮ1h:t}[&nR[Ǎ*ܚ'Ӽ]kZ5=>GG =ŌPv;ψz}:Kχ揯ZC!IGPl@auoK^' K|5|7x=I^ c-VWZnlZxT'Hfݿcx4/8n<euyY*2jW%Q!dKG9n|j:HҍB ݼsVGg{ͷMNrp 퐓)5?~8Xb[sC_k9Aiy?]TqO߰gFҼ?oۏW>_4!"vP { b72B쩊#Dž{[o~K4TuK5†A> `xO_zNeF+ߞ+ 9(_­7?< =Ki5-GS]JEo/c963\7 ޥCOo߷W~(ÚO5^- 2VOD#HR h9x&Y4g.MQ@N29G \A3Ǻ_Oa/Zg^]bFTpE#-O_i>'IjK_](UU6ߗi iZ k+Kp-SZ[HQEtI|,ą.N@>g|(< Q+[2]J@|4~RT*5~g¿?ρ< k VWAŶE=«37g,2¾'G4|*YK3ZYe`nVEp~>(qk)i6< xᖉ(|Me$Fv,7s/~eZjl('cGg<=+Fg'>ǚ[l\C.%ĐcF)BK5?~7_iZ['`<7yiX]'ʹ,3/Ԑh?V7ߴ6l|!?i3>G G 4L1Uq_?lu |~!9כI2 n3&,0-3 B<>%cŞm+<-:Jk}聶W18JsÚw߆7~$;l~h74WKrURX|87/&]kWg>]te=tDswDȅъ0% l%'^>([t_Wo,Qd-^_]ۈ [o%ruʀ~?|G_^>?k}ƫ{/+/,ܨ@e|OzM |#*;A iޢ14V<,"Ff*,|!m#%Ox~L㴃GIinѭဪp$k"Wqy$t>!/ï՟=ZhZe%ۦD&OL+|; ixrx? ֛kWGiZF&TElsNk_ֽJWkPx;úfo΀g _K$䐠gko :,^v:eJM: O(>5Ѿ h~oMK |W~'ƺw-oL>"h~ נ4-Bc2KF8?$j6~"|&|Tֽ?K+; xKM]FՂW*fh D̪~q_!x+K}/~eZjl('cGg<=+qT 68$d x>Km+K}7'5+ _MV8!Is-QIYy\Gbynk~<NG[OuCx.u ҕg 9pJ'ǝC|#Mc};Ze힢~-T,lL<%WW̚oүbcݏ&?NvR_̬֟ <LsWgфW6G{; O[_MߵǿxGnqyY]EvQ1Dz¿C_? v/6>=7 B Kr[Faxx?g ?oUf)ϲq)>5[F7w|_~ 'x~\msige}$yF&[R{;Njȼ,?Ow{@- hcE I(ٗ=6#Wk6^+Ei/dm|eapG1|"I(<ɬOt VT-=Y  9wz?Ýwоi:n?&mcmkgc(XQ@Q@Q@Q@Q@Q@ w|n^ [⟇`(D1DC3F^++Xހ>gֿe;o/3g|Gom[A{56ejB:WԟPX ~:l8xBl2^%~ӕzT//W |Z~B`hpR7mQq?={A?.+_|I;Եm/v6Nd@0z?C@S^~f XvvfU.a捛p:7ߵ|?u:=4c잝k߱~ZM[ͨ_- kZKyvH >^NoA3G3軎8KaW_Jn)ǧQ%--h9TdoG4cŞ f~$ɸqȉdo.s_@/kLosW|f/*XU &IX$8_~>..xsNEW$5Mʙ *D1A5OOylc/t d?R߂f?ǴO啗?(U[xP_ßٚDև[`>bo܎FRH)diT0U8=k [Yx@5}^2г1'Ma?UvmQsÎ,k<\+O [뿵wMoMi5ƳX}N+uȳÕcpqǵ~_6t9.irٲq_x}=HVg|gVׄ:a־nex3o͏?%|3I͓e|7՞==rѴUI,%c{|oqTwzo dXԚȢ+`(((((((((;eτ,t_kvMzqWEg1[Ok2'FWQ@~'?iO&'ZmkV>=Z?xj̕f5hԔ2+;ȑ>|t~{K5lvz킒5'"V+Ä%}E| o'xoJĺFvһ;\nmPR-N/6p]kVӡ#]D 3^^y7x/ kw?,z햛emŬ.[^"U$H,zp~|o/4-,,-SV KKWi;Tcq$F{o3ƚ gq>_kZq 18Wo*3ȟ={ x'//gˠYG i7x+Ǟ-!H捡xV,t;aӮW6$ԳC^0V><*MOP.u-cFi$I~6\h'# =W%}N?ZDZq6!"V HBc;@>-7N{-x{neE $@FfcĒMxC5c|N𷍾;R{x-LZN76o bsc9E>)Mv+I,U؇î f/:'_(׆5#N޽<UA W?gTN-/ 5>7~.x{N?{Үg1̓l`{ 0bpE|mMe/^xk垩]{RZQGv QW~0~ |"|L75|yh׋uۉ3ۋ 8U[us'>3|1xூ%Ԕ{}O\NMܼ(\feڔWGsfH_X=. ӌm5嶤tENod61#*6~{Y<m3$2-J\Gʌrq:>kzlU֧. ! 7о!ξ3w|x'k5v/ ږkz+DBNU._V|!>|^|]jV7fq49h,OKۡ?h~!wkxcžhuRI$SD%%X)kJ:~췩|1>}i:N[ѪIEUW{f[׀<1 _]Vm#¾^=]O=dCLv$1<;n|Ig?t#U՗TuKmG܈f(}8h 29jOOOKXK4otje0vQj@7x ׶QEQE߶;uiڟ°xLoSRn.;gt289WQ۷Ŀ1<@t˯YoV$[}O(]Dx9 L/;[|Li^6Lz>'/f79N'w^~Ug|/[ßҺ_zu+;tWB=>i9)3铵N}/O__ ~1?Z]Xw&gCt\,jwEfU^xwk_>xg_ޯk^i7CMY%W*a򏗮i~?PMs-ÚWc+>o ]RQ#,SnwiS~=^S kKڂq, ʰǶh!H!@><Z|뚶X/>,tz^pɨ mr |%ei|[n| {>:OȱVM/Αk(AvW[ź0#}Gܠ J()Mڇ]ˠ>(hV.|g[0[c5Z ^\\lU'%7Ώ/7 Zt/ ]xR΃~]6z< gbh1&|KnԠMBb{?'t ps@ s6Nk_4C#6x_uхۼ GFh2<g?|%xd6>"V\$]>>[??5 xGԴOi 9'WïDOkL5;("($xĞ#-~'Y=#&kexM%՜7Km$1^}߈pԶ> >3:K=.6.4ݞc)xm#~=xOtesc7O&{&gN%<542IʨZ:-0|"| ZN𿇠}ΥuC Rx?_!~%h1q־:m|? iVS#Φ=Z݌|GDWCO |&_4WúLVV’]$кpT!@=3%t*t}[ڴ~7\:hO ՔH4jd@d8] G79<a?OuKm^iKLTs}wr=dM$ǵbz'= oIxsUhO1G<Ino*!mxC0|Gbgؿfxв"НG6?pPUv5_kwË I5ܓ%m Ah#b-۸_WQ@7i?I?m HsCY8PČL9`?cτ:Yjg4,,oc)TE $pQ%`9 3ǿb_o5/iZ@ }PWNЀpϼ ŏ%|mcszڤHc8*e|*1#cR* ן3Ew;Ii.s5ǿ sk4kwz><6v~Ӌ[Jv۫HI+Dxe$Xxm{cNBD5 *80sTkk[:Wuo ^Ac_F4w>^w ё2ω#,P&c & @;$Y dYa*B>5<>|v/i!м|KI? xTΥwhAq>s \Fe߷qZK¿AVx{s=ε=85Zw{].E:49vEX^EyO|:>0u`iw%5kYڥK;,[ywW/[[7VLƩ75BX㹵5b#)E\ sQ(&'Û?;ImCa-z̶"KSll+ОC~k-ƗgGk%etBH;tMFk{*ztFqIwc B2щ'(@Q@Q@Q@Q@Q@Q@p?ڦI&{_ۚ>GؤWB!/ V v&z?~g[).[XoBϖr9_A0~=|M5F9㞾^?&5^~ikN;y'f)T7`,QH\]'ڒQʒ'#/ YA|C+T1]ߧ_hnz/SaX^_ޯzH j@7:w#tpPzoQxe#R;<o6 Hr"/FT?{YllZ96 )Yp9O_MG0đƽY@?udҭAK6t<2AbpًS^.;? /[4t@è/ :1 Oqo tw ? Z/>)1|X8ڼ CמGs5mxܰIUdqv>rbᘼ-0>6eO[#ӿxM_x.[_M0Zym ;V,9+,Ǹ Gz>2~ "tNMITK$I޺Wnx<<(WiZF{1q)6HCt=>8~n,á&A6D6m:4Wq;èЎo}*~ɺ/קkWPO/ ur7^\?!L tzBo\73|)XIoeag /Bq򨇁`ſǩ:jBn;n}#ix:sT>َimn͂LQ:tU97aF.QRPQEQEQEQEQEQEQEQEQEW?Zk|_⟋Gω)>4m]ZjSMљ3!؀@T fO1[/L~)x?4CNѸ\\mj2,m(9x?e?~/gωzooh Ӡ$RK'M(ؠr¾o~7>+l6㫯6=]OL^-9lū[bLG^ ]O!xOŧx JZ rG3FURb ?C$}:~$_I{OySybηvk4I E2Gg?$+&x>xRRqLw.yoF3+H_O-3q"K= B/4k4(l$3M5ì9exF0yD~$"_?XwxMK7Vqq%ŅfHgE(6y_e?&)_]t+⇍z]ԭ |PmC\iH2E`\[:nY"a" mSōW ^"I<- )%Ӯqqe HdQrzWzWm<ߴ_ھxo${#9 *d`&i߱cEr9F d6IyR6@ amX=xƘ5O3-wf<<\^xvK!Y6o#Aw?>&|I?h躔v~%fMJ|?2^_\[܅LVYkI߄(qM^6cSZֵi$ђ$Eth"D%E&T /(#}I U>u}BJ3$/3%Ϝp(߱"{ovީۍSRgM$iO8PsI_,t/'~.OEu$,LM ްmM*Eu?s'NGMV}O^%PҢּ6'HՆx$xeKK?׌>|bϦkmbknn` E>FNUF6xKݯ4_x/UM{~!9@H'{_#Ὲ^7,/~.s/ziImjfH;<ع> +t_ƫ j6"Fq;Ge}gcI&U.gú?#mMܾm W7le$?T'O[>{/Q/غŔE?nHi[΁%мY&7_'ISF!L|n|AVvkV@:#I2'o5C|FG<595+]'U%ۭ76̍HV@ApL|.t#xHbֽ⛘NG~]I8;q+qg  xOg_j~8?|79/>#f.lb]Bm fl⾭?h>M> ͥ Yj.ћ9\ Bcg@|V|x ~i^EwkkƑGu*}x8h(B>zW~WFψ_7\-KMڿkq+^\16HEeCWR[+i⷏>)[6y|tcuqi{.%'m4ΰ)TۻwԿL:ŏ&O|Fn_}_W.dKZIc;,$gK'_i>.|caѼiZwv]\DlIw֭A*}.?bO |!DX~$R;pB8@PT8`.嶱yk*nN[+Bm`w[ZX#A*^Mu_~4JτWSiK-#].^Qޛ3_o韷/?^#g f4 O jq y't뗑HSc?$mgN׾ vvךZ^t4Wh"IhcGcfӶ>^tf+_@<\|mkYn^6rv"ť6 ڸW_Y]ۿ//|?hhiIY7 Ξ8nE}6Hkm|L~+)=iK4l8'+NQ$mlda!1">&|]~6fƓf5 D]R9b|VWF?gq_xP$1ܿWjm5xWYiO9׿ycT0xH丷HlrF-/[_bg$?ƏRsW{~"i6"=ϗ@)|)۟mgeIO>#?M{ᇆV{(a`ͬ(#ԤyZᮝ]ռBk ~8uƏͤϬ?e+@VU ;xWGſǏźwo4ҼEvWZ_G N1b~{ ?/xLnn[&ukڋ*i QO$P&%#Vvfۖ$gKo}ڟG<_g]I+ĺw-S“\^}CicrBP3)}ۇ۱4>?\]q @_ a+譥i^jM%0hĭ(K*G1:?<]|Bς~:.5kƝqbLi}vMho,yp5vV'Mo~|Dn 񯃴gQTGOk:(vVWN?dX|-y;lEg y[GfڣHHjV3o'߈obM3E0LBQc[ Q~'D*~>,|վ!N,+y>(#rZj7)IܞoC7oxbaѼy|V"6ey"ez7c c_hW˙'iK1=I&z[~~&5Oڜ%G9;ɖɊI+/~R~ʿ n5}ջ5wLgIv.!8D|߀eoK2Ƣka9QMAn|;H:ʪ=Ibo<q| z5 a{+nIլE4n 2ÿOy _ÏE|e{Fh$Ƿ]ӭ$_>GM.??g  qDž0jz]u+wյE}30R#ԡ$~'.du.{+{,3Hѣm I$n?6gEK?|~+0htTҞU켳:C?`H=t/40lxGGkI-bM&XF_ ( ( ( ( ( ("T$qWA" ~a]Q5h U\ڭ?;RH23 A[XgYܹIn=a1ۆqǭ}{$BcĿw*oo5/ x]6TA(U}x?_HS>fzWd8*lTc%paJT6=xo_TNWĞ(-hHb#)־vUϊmgwӬ o;|ۏ:mǩ d±*^ LΧ#:"c4pvzcǀ6޶z*sLJbm]pGD/o6n-5ͤFݖL\ywr~QϦ+d0X_ڿ.%T9cxgl^ԭ9-k,o?W1xZoP(.7dĞ1$WV91پ˨[xD,.hiywk)8UWuI$GݣZm>o 16ŚH1GIɸI3|*RN:\aWjBgVÿ|;&7Hִ$Yse<7_ƶm6E`ѡ [HA`?.w)9@+y"kS)%kc0NE4F6ikMp)(((((((((((((((hv 7 ~ 碿0!&tR/Mre4Ao/ >@r+ J{؟|Q|V)x_P[=*toຸ6;8 *#(P>2rિgd/㗍Tj"=BQ|7Ak Z,k R$etQz6ˀ~_@W U"> X:>g١1KGg2?&iSRfoŏo97x~zBȚMouw&-B`֊o¯"|_'>/I6wcwaj",f.\LD)_h߆>"%MQŨ>"|;5$4tM],ۛ*bSP/^uw񧎼3/Y%uQomʺ xDO$FW|*6u]_\kFTg"nzO'VAkO]W2E97Ql픙<߅L/_UO Uk OHyk,&S6k;R8ď Q T?%zo]߲o?~⯊,~)k>!g֣o$ZZh o Y\m?D(؇ǟ%|;?oþ'tt[]>hrm2EeH^ ]wĶVkkcl\^4 k|QH;0\4ٗ_u>XsMvRYQlDۙ.-» WfHJgJxqMHºɴob[6퇚lU>E6e*ѝtR&FmbXvpZ~wZ]:I.-'ʚactyhJLk˯𷋼IhVx0@4/ V7R&Dv 6|P4֧㇎O .Q[hղU<)J8p78~#GKSM_|Pu;CEеdox‹$JD@M#1/~E|+)?_|Sþ-5o$٢Z,a 2soh_xᇉ<`$A`װʐ[OZiRBB|bbϋzWǿ^2 ~"i2X#Onpr݉?S+oo(ڗmx_ xYt}Byf60&6yڷſ8Sj#OpV64~Mk  C4Ah|>⯀^)[ȼGRUG- eÅۏoKC w7>&i5GŬRWAG lh">[+~__¯_+_|5jZ_ OYxwQŊXƚ.SMQ嬒` bH >$~^-#vQvAG molDC:+8p>(c U㏈? 5_ٟPC~<1}bHKogpYk$EfMN}Tg?7;ӯutuesi2Y-ʈIFvU_WTl%x>K5ZA9"؈8ءYFAp5h|SaM?>$xcEդV!Kh_}nckYyd,y2Uّ%[f~#7oė6xDbη(Z%*5(>I LjZ5-&Y2C+*nRF9fFjQ d(O|)?iĚvMڻj31&c?1vXz~.9f.>w@|B~51-4ifGieT.WDhĀzs}hW|kc hfySJl*C8x ڗS[xO Mo7$'o/C^%卥S\2ǘCcpny}G_p|#vzQ k[Y,+Y-I"QIWn|M3I~e؉7s,1yʱD4QՙHx>Oah1KšTNk{HT|"hQݕGF4?OODCxWYLk&dH$@^$JKbO|axD𥴗ڝ 8)q<*c@1 XdG+u/7X|M_%bhH'!YƖ8f@k5߶O|*2Y^úG?[DmXm=͍Frq)D7g7֟~xOzťk=j t1*>F$pk/'m/_ 3x?>!/4-miJ]GaXI[imP ?j [WZUthZV-5GM,IVm.f@v?R$bT!F2}xoS^||" _Am 3P{? /+/iQ@+C>xOڮZ9vFd`:dP](~WY⿉&(|`ϭH:i0hdS+`zgO|? X0tA&]Mkh #W@n*Bß扯Au6Uc)g:wpZ;ɒr0<m+ip3K 7?, ??fEj'^6]xXdG i|bL-cEPzE~4~b/;$J59u춯~C)_̐F[3 W?`?)_>*m?,?d}WIQ{X%1:F~P߅-RMNaY΋ga.H!dr;+4W+W??lo5:M :D@2j`v$D%Q+>.Oyh93WVcatD sI!7n$vxgzg4CP,|i2^Sr7$Ȍ;20<_i:ߏ[U>kw4ẵs\$[ -¨8y$ |O7Zo5?xX]n}CQIWmFf2dg.׀z( ( ( ( ( ('|\?_֛aqm6 si X ?T"p=>x'4 } ¥DK?Z_\ÏC,R 'xGۭ")?⏻_x7& ןsqc,ROf6ڗƟ٣LkBV%9E]Ügq}>W>'qimFfi$l* W'rFBF:̾"u-C\%2+Q[h95V3ĬT]R|W xYW.&M_$beO!Gċ>5yzidNrd~V"ǵoݓ8== +갸J8Zq+c~al(((((((((((((((((+|cQF(?~{@]j}/xMP:Gsټgѽo5э@!oъ>&|gƛ;k~Nj-o~1Yd`~ /gn~*7%|7^Ҟi-+#-K0],<|]U?3º/Qni:l.c:+#pݺ6g&֖6q6,Q@0@ pf>N`O_8xⷃu?:m<qe% ًkӫɶ@#.$9ڑc|s#V'K_/;=Wu+n$P\A[GhUʌ 7''gZ W$Ӳ]I6e*`""%6>~ޟ~8XWMZiؒWIhffby! A_pO~Q]FRѬN-4+"pԞ:{+OG╧xi4 SZmxgF}BeU2ȥpei2z}Kue-ϴ,w7lAb?><%_O$߉eH7N}3w7.-nYҙ;&#Ln:O&Ǐ,'xԴ?>,~^i  MVKFéyYṋ pZ(':ޙ>$jzn/ot=[2~hi%+>j?'~+?-h>|653UӧeXջ[ͿZ@FISuh|qs ӵ_}f-˭l*\)B|z?RM>/huE☢^ܿO,B_2Yi&y?dVůQGDKD$$3x4&/swͣ?;˭k~|ueMji|lY \O u>j imh9^Dp&w}QkK?k:<WW.4[5"<)+DkgnZx[[־7zW\-5KѝA#Aʮ?f7E1g ftxk2iK[.0>'ڣ ky#VLs0{A~^!ux1 hO}ؤkRIO Oj(O&% |5+?|12=e)tk;bT:L0 ]2Kki_5m5׆|kͥj #qD#mul2+>Ucx?^;:+oe}E5@b$M`7;ǿ<{j_Z73srA9-|Mstmn73oEa4obNkfۛwh?CS>]xE$&Wx)w LllrG<W4(.Rx%wX~0е n[B{yݠRB;׫v??#nm?㏇꺄׀^i4}NIS̑핈TmgE qKU-#Pj.g]rJI"02*fw ~L-6uXO,0bL ̑1E'$)f q?hW8-s_ Tw)>cqmqv-:QuZ5Ie#9Q#:OS@"jGJ2 ׵xz<^akH2[gx P3HYOk _ψbZ/$ѦmEi{pJ!"C1IP/ִP?gZqoOÛ{mu_idf}$@ 7[Ct?.JE)f.nVfnk/b7h(>=N{S` Sko"sd:Jr㾣iyewa}wBdBrR66*󁁚?N?i5.ӼwLdҴV4O L%VLIDTUw?|9+a :-im~ӪxjE5F<p_ޝi>Ҵ6`T8EP @ y[?f\ps6Aqs|8^kONӲkT+\o׃;xo5m.o CfMP)$0d,qds oN_M>UnJM;YkE8̑[xbl?&߉/~^ #S? ~)xoE sh ~$ўc?.LRVi@sA"*n38?~ 5X|!o/~zϧ\Z ]FXѦD7#,$`"Iѿj/? Z^j6^M2HDdX"8@;h?Qi7?|1X\ sQc))K-+l> 5X|!o/~zϧ\Z ]FXѦD7#,$` Iz϶׊ /KiYjhd~j7Τo\n`oKVk5|pi|Mk_ooj"6 `P6`aG4P?/dNQD`]Y^XD]|.79]o Y/_~wom|O* 5;D6Ŷ-t.$}4IM!E|u&gQ$+4''x{rpj׺|+ޭ-\[|ł/&?3k6GG{O¿_w.{-WWI̶(ЫoѺ?kk~?k:y^BЄZ-7ʱE Z(Xd_WƏ<^> j]h3La ƖoVF2IL)_:' ?IkBjV3xF8$5-; Y[ [yw(9~+_>|Ls ׬<M{O.r#ZM &L = o?x*6~|K]OY%JsZ*A*2˝d7ۚƯ '|_vs-=r{s2~m40met| 4Gy,._hkz%M:W.d+p>կ#{s|5RxςBӎ-[ygeg`gA4|n|y_~zO5Vѭmu-OIU=w6/\&L1RwUjo {-~Ӿ2~$MoZi@VJ^d$:HRc}\?3<'xN`tSZ01ȬrFFqx'S|{43EqH# 1ȭP16a.rH$`y?~ɟtK?7ƧxKĞmZ q)[[B-B%F_6)61,믈<=+kzW;Bno=N-m,^Id!Tt{O~xYѬto%hxSXdi ;-YQʤnN>'K֡ S+ZƓxRMf_kW4cPfgIQd@GQ| 8x?P~mos5zL/_ qs.t:p43>T%gSk_Uo:ǃb> dᅇJ̅O.PKP>`(^/W /|'ƈmvovo;|62:M>~NOImB/5IN+U}K݀L|~5?/te6fnWAs bH$vHq*^|xak-:Oh}\睠[1U+=20A ڇ%_Ɵ?l| }NJd7=R,|19n#'7Nc3/ <]&/?ieŒ\gO4r-To0@uxyZk {\ -GF˚D.v''W/ߞ![ޅV-|%hv> :l7۴)i v?_?x῅V[ӵhin~$SA-+:(((((((H'&<\=UO_Z78KJ}+#ŭoj[*,ǯ#ʳ\g2bgRTͮi}]XH^N˪;2T?!' c"|6g4pn1][G+6c+ )We&g7mˣO [xBY^e#i3(?(۰Vr|o tjמ:-XZSom{#JEr>gHo &heqB]0Hy`7ق%YTRCmwyw5#1!wp]]h_µ [3>"jwzVՃXUs ( @>pwÏ,Wkr5ꍦšZ|޴%W}$P 召B!Q7Ɵޭ'_Aƒim%C%%Y[D!9(^[W>%Jh}^_j6j iv.ύml--$NI"IJp'Ϛ}G>>o-ÿZ|- VE5u˖dQux/ Kp?टW0ovGOHm&-kmiBr]A QIU=w>4X|h\rJW>-V:,0Y c+)AAh o'?ڟ֗/<+ Y^|X5LJѫiZr4ZUio.EǕWkgbO[( |e㖣 xUnM]c干Y"e^= ’ޕDUxDž~,i 6 |F%!x>(Mb'<$SzJ9_|-|=oGYyKA)u hfR#Tvo-<_?a?Ŀ;­C/m)4CNaWdi{(oSøm|I}{xZk ,Si$;\LZ"̹kY%A> -?>5eӵWY񭵍ťiI$P)YnHmu|E—V:[5v# J%X.r8WOvǟao0jNw2#OjK~0㖯-~'\[?|1^k j^8n`w 儥(}Ҟcs9u+k Ǘ3f2i^UڥYk_gnٛw|8mfNzoQs۴bKTu/#*x>|7|+}$ԯX IsŌ<7q$C +hojNwk5oٲRGu(]֚,fylHQIhw?+J /įQ_i }ો;MN; 2p]pЂH|R |N~ l4GƷfG}y{|7m*r l|~MD>* CEk;!iF)#Vg# Q_G#oIk iY[>b JF>()|'%Ǟm+ /MKI3i:I̔*NQ0߅OLJO|YCWH<0g|qpYFQ>fjEm|,p|zg52|D>huzݭVg'rɑ@}Ħ_[Hxs[&xj?j:WzuZE,M;*?m "?x;O.|>۠H]'^df{XYwI "0j ]N|We~˺tymϿx79+_jZn[_ 0\oq,^Oh$d 'ǟo(M#WA I$Z|1,wcU6^w`PO 3|9?ix3?-| s㏈~39[RP{K=*142ʩ {O?3 ;Sm> -SH_zo[SHVgƇL? oi~śOŸxmci< x[]3ĚA7Qc1L|-wo ~ʶ m/4#$I1|xlD2MgA|hV,?bǿZI5; !EY1}.^vI|B?YF.`񗁮/^% QiDRekaTr`/ٿX𞲺&!n☴-k'^L=2i9%UcGg!(( L_um'4/7ŏ>oI̓ cTmY"ʯ+J߲ ԵiOٴq-ю9'X1#6.#r.Qwj?ΡZwei^X 7+'Wn+~ߵS/ƿ>7|R״_%5ơ)nf\\F8Y1kS>'|H]i?i[Oxφ4jOTU%neblv#~(| 훥|5xMqo__ͳXM L1lݯZG|D|7OIzѯi>LDGƧuP,wƱפ|=5|9 ZoßhJ&[ƣk|qw5] ÅMB]Gf?`/7yo +x{7ޣifRua4jWdPXIl~ ~ź_(|k>"%Ӿx[R4[A[9U"OdQs$x}~`_D'⥟Ye|Kך5HY4.xneQc|c4)g3׆'nI4S֟u]$Q[)a "|{$ђ~z_7:Ƨ#G:Un-iIyoY7W2~ #_!_Ryu{Ieӧb{Hܦw>FITm[?e_i=;:_@ SKxȉoW'XOM> >o|[;Zg8L}uLK E44!&F*n_?l|omex?F흦ב>{l$JB]r-,-m2UFFf N^dk~M%<;χ:umLm{3H%q}EAÿEi'Vƞώ|>TKg͵4S팫SbRm(G>~ i> js=Sj4ıZA"y`2Ex@3~,xGgV=N/ jzڧu q 4kktbH(-濹lU%myoir0A1Q#@hXJp>"I<*@[_5hK)Լ7B;6.chrPbKxS Ax =|^ _>&`.͒Y~ӲdHhf/z}O?,?.~xƺt:COd A޵É05|A1Q ֭4j7ķgytO,I .L?b|Ծ6x^|Dx#UFKݵĒu+uh3m;VO֙E;ş (i6Ƶ&}b.%ȍTm1 {׀-=R!{϶$Ri夐W HU7_|]y/⦙?eΧ-[ -//-%+8A$E[~1xQ ^Im=F{>WRGHq+C$cxkW~">Zq< o$63\3|ھ#kO+[? UiJyNЖ_t|GGϋEÚŮwFm΅' U +A/WQ"heh(G˩_o,kZ,|iu^"յC9Ե;YۖC<fy"Ig>ZylȟUsTqiSika XB _CtԷ k|宓6?l&?k'Piᶊ]|o\C o'Jj 8?b/هeWo~$ov솑ZԞv'>gɝtb~%ğwğ|U׼;!c6Nm&-lL#f<[>E  3ƭ}Ef;|.!߈K{xh!ڈC'P͸_akc=]ؼK-t Bt{[ZE%q<+@]T( ( ( ( ( (7\SڬOUc<yy-׆ǖw2_,a[E;?]i'̞s xPk hVWN&4$g]UM1IJNb-*J(tES((((((((((((((((({TO/)cொz>Zk.[G,%"5R%r$!k̿jxC|M(],j׶VLhYUI+@+<oN " +羓_DoDvDFZS{?Eߌ<|ׇ5oGk.-5)wNapc#,62 K|1k| =|uO5J[CUK]$p9 Q /'B߂"Pھ{[a sr"@1' _Q9xg.a?xGDωCH#u!k_~:曡|<%NPᙼ).b-W_>6ҿ_ i -wctu}/[Ky{ԋ&w˻PX>?| ;-Skc;KIJk67Ɨd42(&eWtbA@s~οgeai>v:**,Vi 1*A 9? ~ZOxL2xڜrid=;KTڠ>dͳ;jZ炴{iF/,OvZH|1e88@w<i׊4ww1K`yFmo1 MANJY÷Ǎ-?Gtw omkJ*($ N|*OV/ۿ5C-jVg{hId0)*$ڤ1\\!X@"hExA.e5];))9sDk)<+%~EOLu|S|M"Kam{!Iv0Ydi-N3F9υߴ֩i<o PΙm+{osfK{6C87݈@>Ou? (a{4Rі*Æοgeai>v:**,Vi 1*A 9mF|vOg߄ YWHy0Q`LeeJ׎0molk3 ?Ki/ץi0*v 'Ъ`1˱$_V?d?xb?_N'> R;MJtEKhhĸICu.mw _xݵTI|DՁBgN@r_ |Q7 |)[4Lmoㅣyfic2*s|j'?iMπŷtn%Ӣ`ݍKp$nUE|A~~7'+ )iuMsVwm/dCi,QcҖL3͠$gፗËφ i~OޛݑCi$hBm7í> K2:i %6#*q_ |gW&0LQxMEm3O _xJb`iO }S_#SG_A#Aml$,*T1s?tiu5~6hW-hnCZ߉A$2c :k_ e|>ueׅiCx.bAoWL,,HZ+ۓW%⟌_+i_5 MX* +$eQ 7x{ɟh؝P֊QĿχ^_<)k>=oxN[Ki"K# B/x ƟٳDž/_>6ӼY$A/8r$Lm6JѪ+?PO < ±k\Y\1ZH=˙2 <=ciO{%[w^\2IwVݙIhO'|2_% ퟋ$-֣ SD̏@\к+ ¾7?+~|+m |BfeRw-בlIm4LJ3- vn KrcdžthR5 q*4g1J AƏ,ޗe_M_R/?NxRY M20CXRW UFS 3W!3߇z?h/xڟ|S{cv wʶr6߱hß }cᯇZjΫm7㻼YreTくK<+㯂ߵo_Yx7BЬψunZ'Ԯc1 ܸqs"@yQ_&|2>'߶0yYxڍwc]O-5X.yAxrKs+m/*VHeJYXPՙOz[R_OcqˋwIb8$e#־ GoWpk=nm/uxGӦ+JVr[YH-`oT4 ;[O}{<y/ kzωoe 8'"$3 D7yهB΃}pnN:rwSȰs]@ǩ(7W~%%zNQ&[Y,l :83K^-o74sSi1<@Ԟ_C˔W!XlP +又 Eg8-+X_- W%er*7aO^O)SgGǭ?2ikXiīeYĭI1Ԁ}Kg7_|QxV^ 4u[}M&F}IN85W%$$U>x> _ n =Lr@[6&V B/㏏/߱O/{/LwZ̰ KF\<"i,rVo iv٭wms͔K-EorT#j=A7<-6HSķ$7 s{v<&bqf>| ⦵xwú]rֶQ/y$r@&xso<5axNS5KXlmfYm,r)*A_~_߳wOO< Ǯޱ4:NnRsa-\I,qS,@~ooٿ<=s bԮ}^(Ùf OE_~m/|7M .$:i&̻##9u?i,Ej66k% %dxw._dm3"7?Ŏ}xz_7CNͧic2ĭF$'_'[L|IͮxC㖡?/mK=M4;"%pLfccu+65Oׇ`Fr+?྿cMewըaKy5\YYۊCğc^ S\ Mjzs3ͩȸ/uqF-*grc@E|b߄?jc㏁~ڥy1uH> ˉk0/Ҿ>6|Cu^|Iu"IuO z]iNnE͸FgSo۟7;d#YTܨ(%6=ϪNp EφQ7ʲ}Ex|sGV5uk7iGx[NK_2+Y'VEP7qT^.L~Ծ'][Sy $GfјR|r W/QkiSVR=t~S@K)SX×cojȬeEV51N'Al;9t{YkVdL&%2F :+ߍ?gu?>~:ix:.H𵔲Qi.d*хHUO>~ߴu{Tgx;Qڽl]¾D#לBTUE|U~:?hٻZG):Z 6p5:᭤aFcĆrr77;xu)+>W%>')5OV>iF| JQ4*@>')| ׄ|iq#V]VP͒@s G;[㮋OW"thܠIREkHOZwԾ@w|)#Q{oWÆXD< aLS!f4-X^>ᯅLWExjyW:VqI!Repp<rOwY_#}=>>wb5Οtۀ<6@?Հr âYkG uK[Ŷ}"xAIp;YO! K<_w-MeuXow`eLnxO~)譩|1_)!Yx0 z׌| N~No%c3Qē$_~߶ok{mSѾ7;~i3"8B_r!!;\ x@.u=;I^'1ȫ,LTue#<_-__>6|~|?~0|.l5%]?iw:Vp)VaTs9“Ɵ_> yy_~2j&|]}JkŸE Jdd(hD:kvo]N%%E*[$20@Ӡ |UZ KQ` H !fbN]~p~ c=!8}嶋隥߃/_GΚՊGt=-& };g|W<_|a{m*?]ej{de9ɷ˻j +_Xo~?/|7ࢾ*Q߉7/x2xKC׮|;MNf{I]L%ꤸ||7> {S[Zh>'Z5hfPщfmȥ~Q_|K~>4q6 -] M(|GnE탈ЅP"uIch @c_>6?m[ۣ&?xv"𷊵okVwyhno+FcperA2cgmojZ~c[-ZpLQ[U} E|c(Oů$o? 4~(xV-`tMSDӭ㹟7*-B'?4pw?i?jo~ϟzG֮`狴֟3[K=\|9#RE}oE~ZZ?;PnY~Ԗ~?/52_ lZ֑,>E->ntHWmW[.5("gd}̮sh((((((((((?~*iwnywR~"|E ZNDEsnײ ޥ\`neni_Gd|RnxU/cxI=Η<,WM.]D!y&{>'bjwHfl,na-w3Xk"^c~~%bH U_5#Xn5Oa:]&!wbeO<럾~*<̨ 31P;@_U_ٗP xB.xRm;Kυ^0Y~,R4wS-cC "FO|5/DŽt:׼MvZ3F8'n]殚 HPr :u|5gl>ᆝ$]cCXWZ.e^nO^3׮1=GQд]KwP4z|_D2v ":(K1X· Ÿ~[ↃxXҮE&{rt:utWAα6g_-꿷_/įٷR|sGkW:qsn^YV}H`c毴*9o"hXIX՘I ;x(&oW"kz,m<57th^-m`QY]1m܀<w'[|fߌ Exc_c,-.}"f6ky%7L`2rK(̏j%d 5_˧Oմۏ ťi[5 x[O~ Gr gATYԡ[R[kqbcnlL0O޴Po,6_CWy7{ú ygUR#7KywC2DlnP"O8Myϴ}ܜvZ?>~'|qO >,|e񵎹ڔwp^Jxwp|.~>6?׻|Ԟ,/OX!^5UKUwQ?aiOPtcS z!7vDyyz0"`<O^(y5nmn[Nids DK,ʿl~?~ҿyx~-t'=KL%FEVvpH6\=*|Om5Oٖj|oB++Ldԭ;%G̈\6 G-0OSK9"$f d״k]@iֺݱ+,l'mE~jx\+J&d_?hM;Ft}GI]{eu UcMS?;; |T k:-5۹$gcKՔB^<"3E| D| ڧڧE}sh:=^tD'wY~Ο¯U~G.EdaH#qPzn>4PEP_Z7쩨imqaJx&->InC]72xnďA5_hHkVfvWwm]_'(O4|7zx+Zw>xkYWnGSS8Ⱥ{;h =fy0?č7^[⿆WnQkdd`//n#Id+ i3^Ե+f[ʼnn/T,;rxP87k@?ᯁ죧xt?6hiZՂ|㻸6Udsn?b?~ԟw<| |g//.k mo;ֺ}=ʟ?ƍ q⟎oyi"j Z}:UhI`>.,/+7|OiDžmY4uX-m΢IF)X;Ie1ʈ34A:]B:NUGQ@fϋ-nC? M ~c_5}_O']%K$$x@|- Nk] |g='_T~b2ҬEwkjV-F ڡ9$gNk ycȬaHԀYr}ǭ~m~+kLaoڏj|oS/xƺƧS F6ZlXqLp~Q@kƫl=S➏{Z )xAimh_rpq<|c<SZxCKߍ4h>l[%^%3Š1lX1?w -⽌́ #aA5%~b~ϿW HSx[[𯄼ይ/RŨjE弖xKd¢2.bψw!Y'W/|{}SűwZZD.㴛QK;J<'Y@Jh?b|`+r~ |(:^+[cOɭ.faFd*3l)ҿ? ]$4ϋ_"x CAnݵ|t!w  E~xxF ]cִ-vĺ^iz$$ymn;|(G?KNk]F F HU14f#,c G(Uh^_ -?go=߈|G'&i$6_4\F/( ?ßOG6 aix7W ء "H'tQ2zV83ZX_H񵕍u3 }C>5؀*_fᏆpid_]L}FmN%ZA}V6BD\`qxڵ?lŚtυ~,h{iZ7Emsɨj&ok{_Xw1&2Xp]0Q@'$jJ?v>+֚f[]gu?GTXm5]6x+2Ҧ :/_HVEZi/y4ɼ;M{UQg}Z\id $"ģ((?ඟk';ik~47NijjvoVT8 3}`I~¿>%|+ѯuxkhު[D,S.maM\Xd|> j@._'_fYţӊp^ G% ?>rOycy$`ԓ(z׏iٛcgN߅]_AT̴zgm"夆uV FS߱{qϊZf(o'kZ]Yc\BDƁR:)hfk"Hb6 L3I@X5Exo5xgLмSi햙rO,Qch' mھgΟ?f~ׂܿl-tZ}-ݧ&Ysk(&B,aKHe uz^ =t?ؗ~?ּ㯈$f7uo\Χ.%,h+a?!HGg3wυE\W5Z;I慖)/%VBz(ῃh(뿳,&i>cRxCo4}5/v+dҌub~%|!a/O_u~!4K$}4{F9ѣd~C#q_P%ūπ>|ѯ ƜXA.sb2`HV!9 m|~O%_ -j 7Iu}{JƐ6}w%vws^8 v1u>) x>Oğ < _S:{!5 tHbdy#FsWO⯁gj;gt XY w\O-Pvy>a_aiXKv *c${QZإй4v-89$_~8gO~1O|5^#6YZDYֿe֦y~H0Q?~9~k? ix7㇉/c^ ൶k>($th 3rG57E~=;X~ ⻿|[xþOtI.3L&Fouw}_t~_|cL~?jzֻMR^VkEqo16mwj$G/.hu/l/4O|!4bm^$zZM4VY2Ukطğ#~q{žxZӓNVι}:n.dD1F `gq__] f-z٬tfoabkeK&,P*a?| ~4O|CM 1o 'J|d%r:@?_~" cƍ3ENZ4%) v8 ~;x3 =Xt[|4<_hWV%y7mu|YUfv*?5!gѳ sz(%e_Ğ xj7z%-i"تC Vk}O jnkwyo=) [D);'TPߋhe_}CX5 cWuKH{Y{/@dXZD]Nv<cO&Ь|#o2{0]Kyuy..k r\GyyQ_lQ@cnߎg[W△6Y/|:Ǩjw7w?-b%XIm.>a_^9|;o{.5ckuՔ)N/-%3B6II !H*> ( ( ( ( ( ( ( ( ( ( .|| C|7M?[u;{; L&Re *mQT'߄|o?^Śy^_Z[-kcynnTllu?&Gq}g/b/a4Y1K Ggi^<ǔ)N3~ZtwvL [gӯ*3$mteϋ?࿞ 姀3Kf_'?%uAyLl 6ʻ>,|୿Wb|Co:+x~sYj~>Us U/]  >k^Y心M:A}>7}A/6bVw#`dˏ>/_> 5VMiT][Iky58e;dSđI?f?φzY~uh^%x5z4R5Vxgu2G  e)"Ň >^im%)}[mfN[Ʌڄ-Grt| Oo Qi?oo? sZ~ ^]Ii%/߄}r>YWo<7|S5I&h.SϘ̧j_.߀ >xr_Q_F3Kﯮ$'Ʌ8SjH# 쾣پ<O+ė>סN{whpȒF̬)WC _? Ygm+O L]A_kw?M |D|s:En5MS鸳<8 ~~' '#2 x{Đ뚘o.gjqLe#,b! 0p?3|uCĺ7Zk? ?d~˿ nF|azŢC4MEv'\ K0d {Ij:?j~1𦳣x:TukK2>oC a+ 9k> ׆V,%C+(Io"~܊I ᇈP|%yhd1#*hIGܡ_yE+x~VUv]]"Ի#UUK< φ_~,&_ݦee~]K;ȣ,H ?vL>K-wt=>W}-$5vI(g< 6F+zj֖z^]GkmyťKId^M_~ ~8 {ZF uhE;l:ɷ : 9ּ}'~,7{s^\Ş%l o'_)Y&fAQaĚ׏<+~ !? ^x4VWᠻ9$ZÕ,TѾcٓ>G-> w-j-Z4ޤ+)+~ܑ|3j]/}WǎMK_C>mZkKV{v]C ܒHߊeߴgwXh >|Az_?{@5H{kURIHvؤƁrHݿ}_9c-_K ݧW^ەO?S{>k犵+mO.Myoms 0 #aWķU_WG_>j!.xY*-CI6m-dLpʌ* {??fO),Lj4 Ay$3{87C,pW60?:bjpڬ^]nx-vڊi-xLPnYΟ dlx4 AÝz;=Y+Ce]ZEDg3oƏooxTqmgmw-6XEd?#{~4O?|5?g>6im.;k[vqԒ[xI$+ ko-W|/eֵ?!t-zI'-nyTmdhثCګlO|{>.[K_O㿇SsI/n$RK۟!b2I+) O.|gxߵҾ&J<3#O-4դqDDBPVYxK>!C[[/m K;-ݭSH Ŵ2f0+<_េ~ $ ?״OI׭#R$oeׅd;k ;"|Gռqh^|O:W6WQ!6F $nĐ +];WOϊzG~t)u'ÇQ\%B)!Vk`Ѽ _@WYX:?(Oađ6>K}'e|[6xwƶFw6Β2*+9b RA+H ǟ'CmxxVu ᧈ=nKKKh>Ù ,J GS׀7? x~,mΫ,fVd1$_Ii6n&m"Z81Bko(?Q_ ~?O?kjYmb"N?Ѣb2P[~>27ƿY-B?^Ƹ>KYm l`Emw6X6ѱ>/گj7\{_ _^OxzOKkFD peJ׼my/g[x/%uW> _:wCyRf#l JG ߵv1hC?|pBjVBHb%X%Ff nV@ ?P/U| Oj{-m4;BHm4ԆPRr1*~{|5~$|[>)| ğwA|#u} ' +3)ڬĪh>xC?h?U"O &MJőm%Ν C)V$9B}+Ï٢-~$ I-a}V֖{S%UcC#:]Ɠ"Ý;Vwڦ_}Y#I6F,?w͜¿bsƖ.jWė^1TԴZ .9T D$=u 3|:7_O>|yΌW>նϬ^=r"Ύܢ͉hdUi(xWot+K}mhz*'䴗2F<1Qv{?M<_4,o m烼a OӉ[ ɠR, "WؕR+8j/k~ֈk!@+i"MXǽZ7 8\c]Q?Z_ԼcI[;Wִ}WPiI$*# ɯ'φk6z<[:W"Լ1]4jWW6\-əF,RVP$42Dʬ"Q+~Zg#/O{B<'坯tX㼷v1B::!1'{{Ekx;S֮&1$2Qah[,w /e3@jZ]"5jKFV߼3GOٟT?uۯ>lj|Xˤxr/ cPf|,V% ?Ikا~m;VMGB-ωlhMŴ)eHYZtM!2#Gۚ_ߴΙww 4ZKL[͓,LYR4B.H}Co~|:g⧅W0"ågN mfYmI[m;UCsw?/įOD#?|7]~-cGץ; V^`KhwW߲k9mv,~Rti).Ir]Hh}ۊ!R@>᭯Ok|;J >"Txy okx%~'̿n4xB\+GNV#siYݴw}$V?`ghWƾ bM'S񕗆PfU=sSJl ?|QqKX8A%ޕ|+סGdDau/ RPK 1'a/2_ GםeXck]WRraϘZIIoį+=~?|QP; kF8>f\F̷VȒF9asƟ߇ZT:^AqI}. K¶6/*҂VHO($|s~?Q6_*XNwK[&mV+ٗd.`ǻp.30P?)?_xC_i_5}:[E<*D8~TOAn_~Tu820Դ7İF?xyF m? >|9S@]G2D? F&M{d5W*I9?>ߴg]}^]=*Kҵsf~k"KI,}L\:kj$qb#Hl~feu{O ~ Ouc|}W犵-9l&S}nuH]HK* UJ|U8T<J|/?>CjR{k%[Ƞvc0;CǿPg?KRҬV7:\mJ TN+; Ks _>.W)躎{5 ul`KHcHGyWg?cwO(o|=sG|=4 3OiX%0Xn\/lj>|W|u_vܿk\xrusp_,ţj?~װxf)$k<,H /ˉZ3Y|Sj??>!9~;h>^-J$E,䁙 ܻs7ƾ h/ß!h׌~~'c>V'?֥qyqݶ٦I#D?+g-:ߴ~̿Vu|CgG]//#ỽ~]K{UJrs־_|!' ^8j)uKYDr;""E^ t h h~"c|^ou/6{kzY6W_gs[ĆQ'wBYK Ym0x'_>!z_3|t?qa#-¤~sV6eWkm7~G3_?4EgžmkvnP0aM~Q+'wľ;ծSFҦ/02t8 SGxnڔvd-t]WgS,64,p~gOJI*Jp\7-mmnȪ$Vl|Rޯ s\~Z/࿏>j=Vjni5en$ew~z@lW?|*/ĝ+U8 unz7G>"r͟-(\2?m߉sx x^ŪxSP_-~X4dlE9U*c ~S <"e׵o粺 ms<BX^ខ*9GxὝS$FHտ{ 7cQ>uQI>$tO _gwYWk;I+2_u]b|-s0e׈xxtvI* 3@?BvfQJ’q`{!x ]Ҳt˯ |n յ4A6<5ܤlA8_8||!| .jψ_?f) _ھkx/aBUwHΉP/Q/ǿ !숧0ElPͿhO0!WA̦tWPBxPξ Z=Γm5̶\Ȭx}]IQGx/¿VϞ5>8xWjvZx˫[57Fi7ܘ&݆|CWi/[j_~O4xpI59txm;A%̹gfp&2;Te8 -ݻ,>o KѰ(0 2([M3I>[nt]F9h%̓J fR{'ۚ_ߴΙww 4ZKL[͓,LYR4B.I?ٟ~˗8v-֘< Mg{"x+%q.Q*r9_QY<_T5} %CZĺ4Qq2)C젭xu?_ <i|(Dzhzek72M%G7y= }1 \w࣒i4|oA>ivG5\l.c]d (g _)Z_woOD vo ^ͭԋw/3kʻ7#}e?h?n!|6|oh>uX~ng`5ѰUE"HF܀}]; 1?u_ sŸEݵ56LnfIYrʬ2d: 09O |lS|+Ex4j-cHsnp\K$G bU|:ýK$?eτ?<Eᶷu*7y<r|q@'ė? <#'Y/_@Oo<߻:( ( ( ( ( ( ( ( ( ( (/~9]߳_K8"79>̖z}.-ԐWğFڏ>&|ķįτ<[jpJ߰m"=k+ǟU/x36h\IݿM?1̱"NM}E~^W<{$o:gƯ-h?-5֚Y@,/ٔ} 2]fY־ucoHmK^kAu/Or| e`N#%8zg"Anꟴ7ŝ^ imV3OuO Bk︿k/ ]o> zOjIB4[ﮡV >/ ~о38xKxj&v5[K;%0M}@W~۟π5m -?Mm^Im%4u3L+1D 8 uogO|8 {i+/ ͺ9p E|;?Ə5?ZG_X_wz&T6W 0C)' i_gV1ҵI;_âJƷJZ%;d#6'z(?য়oBy5KMWQ>չ{Km"nXK/rմ xPu`Tk+{@8YLJO;LS^*?j:?WzSG3ju4 92* d|@/?7Oe׼i]4jfYx %{p߽>ہvN[(W{1l4=]?蚝;A6’":<2< |{{ƾ/$_ k/j'kZA#Y1v\$ɸ4E|`~՞A_j4/|b ,*YNx>=2ncFEnVuY,:_ž|7swkqOOpT>r+i_Cx/ĭMwƞ0]3^ZA[`B~+āT>zy7$i_O; ֵ j״hZƔћ+TOk?2BYXk'GG+WΏhWo{[VII9;};[){xz4>"-uktɤhI^"3ÿ#fO_[| )\&~OA5FMR-p!cu(Pq)N;h+ W>p'ǖ*㟇~#׵ ;N׼Qj'TݒE>Lp2U ُGiaog奖k~E67hx`YHEQE|/ew?k |AGe I%(d{dpQW~<9KߊgWd]GpInaYtL$6HOxvY[r"1Gnc3+chZ|IpAMbmaPI,5٬在p"@C6>blU'NqxnWw5[籆Dt LyJ8iW 9_lO(_5+5ۚwoth]A ۫wq嬪d> EZw¯ no㟎l$vsnŎ[NX$R9 ,CF(날hΫOgG½[ū_ֺEmn56O%Xv/dJ|m:3ag[k/gYקn5-.Lg\~# 6ժ+A sῃ v Y|tHw)|S͌\$v]y+٫}⏄? ~xCoȄWFrPV*(~3Ǥxzo [Q_GkG[hʂ%biݕc%qjNh?E>JRK :M vH`{kRW6˵;N)w8#΀T[k}~"CY ZnKymamsd2e[k;U,BN֏پL?hmgG.k^{Vsj彥Ʃ>CZ$Ҡ0 sQ_^^]N➑ைkR&kyeOBG+@S CQ|Itl cskZLnZmbڄUbg,Kf<=7> =|Aoޱ:p/-8P4 @Cf>u j{/]x:4/ahZlχ_?$Fa}h| 2P z+ K|l4oį_ٷ֙GO;c!d2@&30-j_߀Z5MV6?`N~9oBU1(.b5 ^DZ1,h#:WGn?K꿴g|qxǾ!Ή\k zi췶IQ#Q@?Ht4s:;mn-f`wv֮h] Cd`AV mI'7տ4߈Zw60WN*|3Y5ʽh2+*E|(Լ7PYO}O iS^O[XoxH>th;`P^a=~ƺk{/.PX[P4Wt!/k4nID)߆RxX_^ ⟇4<G5O!}:X.daew!Uf2_(_ZG-|G|!.$%IB@ K2 9x?ᶍ|IlI04$k@tY$`rA7Z/FcGS4@2忖ho<7P5yI֝qxb{^]^۔[-BH^_15+qxP_Et-?Ptn3CYb\!m񏂿2 !S_%~mwrouG>];sr%lmۘ?fo[!tYWIӴ>4+:Ђ#9:"=;AφkiUԒY$6.X,lq#&+||ǟ|My#eZxz]ƙfque"y]@ҔWx _@*@7uihZ啰`ά X_ ?~,jȗ~67W l!#D䫏)]Z54Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@|+U|^wiLx NfաAoX%8(/d[x}E~B|4:C}   ׼T-Mu3KvH BpzW; /ؓT6W՗-]'Ol_ח!Hvrr*OC{[Qj0CpȁaЀ{Z@ԿI/Mj7N%!Km?R{ly_&1ɸ}?K}qk.v%Yuؿcڗ?n^|F~~׿~*a|'qh떶m>iX0XKT.ebIǙ" &ބ;ǸEG@['kV=:LX]!%ʐ884Pg߳牿`$S6k1潂-/cRFr ?S~q*y,> ֠i喡q5ͫ #̒? ciq$14)T.p*ZxkZC'q[|VYZY_V7 o7l%z;}7sk4R p|$ei m<~) ?aծ">/=NKW\˔vS#8(bPΏ^15[AE?4kg]ɺH'CqE뗇jH8?7umQY{CýHO4/~nW}ic%1@ƁAbrI=Zyl?k&9m/z\VYۏ-t5|>*BĿ zTҮ㻴$hY zڢ ( x >Qw^?|`5tQLAG5mndi$s#Ŕ#+g(AE =<@hk ]Cj_?f |6U4˫Xw4h&_-$?kk^_~07Ư HCFGcdnuglXܤvgZ!-XUD@UFڅSnQm\~CO'ioQ돈m2u_&}>OV/i+#I WIa /4Gb<*__hQCgw ^!6ȏ$jZ@_P߳|=?^ 𜺽Vx`Č"@5/3KR[mzLJmue[Ry]䐲4p?w-sIm,@r{g?JqvSq@Ǟ~&T>m0M]kv`Xq"BpH~ E -燵k!V`[GZwv4i"xA0!H"QOR7QoG>1O hKZ>o[<,j}ѤwX?lOG?,J~|P6-֝b\쳣iXebѕO^w /HbkԢJPU=@n(Z Oe먙?kd~xz[Hti/zݾ +ơ:TM>L$obH?fOo4/66j:\6:Z[Pnb]nwF1"r5R?iͿ~4c(s|=lןNZM/`.,VK(!V,a*(;?*F-;Z/MXt怛8o1Fe\+u_ ?dRo%ϊ R|~Z}l2#V9?Wvq_<7G<2 \zx5忴?i-W+h#/[xS(ZMV{dubK&X ;swo/>$|0}}ON_Y5𭁾3]ݳm zU5aDC70:dP߰ѿl ->+'x=3K & @F~rMw_1xG_V~Э=&?M3ŷIm&%2Aj$LrJE}{aC62rK@_h?Mkx{E3`5H #bݿώ1cs_Vf?֕/ KL#2Ukb #?OsI?|!oۮ:G3mX$ |i_'O-'KQxW]<IJ\'+ۨ|*?a(S/dm)x@&-5M!Ɵo}&²+MuuhUFۂE%>|uO_3nuqIqS41ZiWWђ6KcM%~*~P???4 C)k-]ev5Q:>"iS?>!![? W6RhIq"LFbe9<׾G÷ɶ6Hf]AqsdQEW_W]x[𕞓iaּWOx}MJ$ٱUA43tV֑Hd# z~w'Ծ%|[֭i?\|0jƋAo'5unfʂm^O-%*ep?xv8eݜW Q k"W |`+g?j _H~U-*[NʃXT)6@ːr~DXUQ$)lp '@Zo'|kUgStx;,n,q#31 '%~|S4ǹC{NY-<9l kv x,A?`_]|s/hu@?uۛ KtD-¸K>snv@h_%? n :-ƾ96ڤ^I)En.FXrvm }yk cm0Rm^5jW;$2ڲ@J芠\du42R;2ؿ<1񟊾'k4O| ӧ|U/s,MP$WbZG# /BOijpӎ&d΋ԸA#F ?)o],?4oژO}:{of81yެʐ 5:ׁ|GjϢ@/_&crCb 6@OثoSzã #֋/Szã #ր<(⿌߲sЇQ&<6@mz< B꿶w?-' ck/m}AWdrDeQ8fc"nη23!%ce >3KycP) ldfwÏh[ѵ3w.{o=̂;`O'fP#e~_xs_|E>"i)ywm=cI 2}A5bho oٿ EEžxN]^+HBGu ݂F Icq^I~$<‘ZA5Kiaw)RFHLnQ_ӏgE|0d'42`6*!(8bW Ǘ?Wi׋g[((.&HC Q9;(?j O |GF״DVEVrK#!X7?i?> 8|T=dkVsx_T񍇎mp6SjfYR\Mb_A$ˊ}X6U=?*lVA4Ci$T!?7^/ڗ|' YkO %Mݚ9FfP[rƨvƬ?I*+;4z|1@󚖀?<m%5't8'uF Dvje@Ny|a o1-x_վe= ZlpAm+)e\O'< g~]?ƃӵmnCRK pBXI/EMK!l/4'@h? qW_[>7=M7mwe.ϲ AJgk O>5hwa~0^6z3 %bDkv&Ea2}& V8OK@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@y/۩i?|Wa]YlkxvUǽ7T"ndWWώaz|GWï7DExN[˙tK *% ؾ-#߅Wk<9qo1oG$>z5Q03jO`x /'o7g,Lj/匲IieFGVAe*AS 6Wg_F-!qoq˥i5ޙd olʪZ@ ]/b!gF&zVGk^_t+p5b&/throxnO8c"H} XaLlOᾳ__i:$Jw,e r>lWϿTF?`/W "̺h> u;CHKӣBB3^ ࿋-~ſjVwxQ/7~AhCM7ĶxK%#FA}ۛOvO/ j^!5Ci1]̐1"gh0k>=xyo~'M d3*[<#9MB,q$;$F61`oٟP'쟨i1x tm3MIV&}G7/p'x6 q)6~xQ|I}7cbj"eجےfU8'}OMFt~8AK>mb$H՝Bۇ5.u:oi63PK;TI'~n2u7Lmu+$ZAa"6 yy[Jh-7a6s@|1ꭢFnUaeL?wA/^:M{?K.<&L²4v10 P`GwPj?\'HQ w&Hn \ߛ߆C2$K VĂG{]6m3HtDb)Oύ|+5|Ho7`ѩ|9Ťv6ejW[|rJRK|Oxw Sx@IM;[a{G(vHw&#ϒ]7 }xSg[s@|]'¾CY.4)`U g O4a|q2 o_ _ +Z>?Qrs]E{B#$W~͞"~8~ xK$~"Λ35d BI~~=G~`7j^5vY`VA2C $n }m_߰ǿ !?l+ιi @.T{#Kvdh16yRgccC}OV^8X" YlQX{W<ExvU'=7VzufsHH&PLr* z($x mu߉'+/Gjݬ!YAki٦c__SiRoI!ͭ 8@GacX98G=?[}gZ]ws,6ƥYDURʼnI-s|kψ:R-4:@m?u'@!^'b9<%/xzJֵbpOV#HWm~x_G_V/ /,OC1riZ2+,eNPLK9sI@|7Ǻ˦o`4SX6ݷ";o75ylk_i#I~2_ƹM#Y ~n&6DIQ m\uyEۯcboƓ0,u>'FMTZY%]:ij !|{i|0ߴrHOҡf@wˏ^(C~=ooo4b"]Y2\z?? ~zgjez$3ImXIį7?7.c!gfohwMk5Ύ7e2m}_+_~^[Ei| -@#j򔉺;y`?/=(+T[tַq,рe< ךn~^%:/Əh&aәk}S(b,|~2:*2qom(T2Tr*ee]¨Gq] _3\F$FkB1fezݦEnHn"OٙJLyWW >(.m~iߴ_ x/PMZ6O~1N⁝A|m\ ; q١4ܤ}@ɦ^f^6_~|_Y3`|b 6 AJZ|37gw^ Ik+6 *[E!\) -49oimoyϚ7VK]hmlg=|1]k^:Wm$4JI["i全x¼+q1sހ?a~6w:o>omtLKs 5@{PYAY nXɚ6~? ZXut/W1AfO ֟h[~m" ̤ ch^O ?IisƋso:&;Ϩ>SqK+|`AvڍŵI59P3*;E hۜM|Mzgno |Z.7D]dAFU3Hybvul>M~8aձk$9a"W9$`tkf8?&Ay|&G杸LKHΫ>|gUw-*mΡ/!~?dCHgψ,|;imNB5̧32<$|; !5}HJ(/`9%vRTYI )#FE|9;ك?_4O/xVzP+{X+t3#32kgl?b烼3K?|?v6Rxf:b6v67J i~KφX;&V. ,]껀$dWW~*xw?ī?Em,tދx]ʹ|UU9#*87Wwsm j:Y-cL"VČ^O,i?u{K\p\Σ Gng@fb?=?{zu-3 Eաyc)S_nxY&حؚgz~|$|c&V08\%?eߍiCNt{ʖ}BIUm[VĄXYG }=xaڟJpmV!(~E,A56\xc CwVC4x|VW<[Dzn$򈔀FG2)e,2*_PsqΉ|'k6- Auxfo?le-<̛g5?ݦWw Ԭᴷ5Kww]AՕ]*c4U IPY'laZč)wֵBUzP?_~KҼ⿁<7jZiڼQ_9?nCl`HO, o|b>;:x|򶨢t6Al|SB0ss_?Ƌ>|MEzHմ) nRjO#`2Ӵ?.fڿ< w}l.3ȟJ@k&??tikO[Ym Uo]B3%2BWe~՟c h~0ŭB]fUH,jw6*y%Al55%~vXt+[DV/ )j8Pd}?ѼcjLSt7ᕜ!D7uR\Aca qG缮ZxV,H:~'x;LÝ[N״n;?QP,R* |b~(|-xLM<-v-ƛqpEsbyݝ%%cUUi:宷a yox֚R 2-~V)q]+|7ku)oŋ ]WAn.NVkFPC@=w/KĚG7h-m4hNʰ%;6.3~/O^3 u/ G 6 .A3[O#Xy>S6c;MsY/ɮVyT`Kpq9LO-7xw+ybqC=ճ[K$PĂ8 _ m߄_z.;+^usbBZ$;]14bH˒s$G[Ln>WsZX(xH{mC\h.]^ܥJ2K+rXiWpS~C¢᫏Ti)$z!ȵgVXzoGoO9ѯm7H!Bf/LZ|r7U_P}I𶽯=퍝TO=`KdP4J?8x@4O&}NVPhb(o/nj?+ݶE[VM=/&] ?؉m4óحF!O,(?c?_+79׏xC/OZiVJz]I,aaˍ,A _?/W?CE_GlS.gi>$-q!PA_COlmoWU}&gdh˪J$VghvO_CT~9xuu"'X^$esş(7O~//_-jke+}7۝BE,C! # |A*Y~Zx7/|IVmKaeD1 I%`)B G5@<;3Ÿ"o|?-_T ?y+*"$K4ac@=6x ͽѯ- y~lʲ顰H v~֟ a8x/֗#}aze |~Sg(o>~$[^m[ߞ̰%2B]Gs_TjZ?ࡾ8 }WTQ][1|$:sܑywC mDbVn7 #t xwJVK-/JYG `"@'q_mo_N&.u4vODZ! -ſ(7<1| xkȲx{PVQ{ 7 @_;|s~>&ý'^ w#n}Kq ^AIˍX&; S ,$m yJή`@uO5il|vaV0최ri%P .H{P ~5|Kx>»oi5ƛen5Ƭ5RYRp9<|?M/ IKEhm59ItXv,7x~(4D'n͸ GMٛB!GQÚ-/oXiz|4n&7vn7 $>xG!"mU-t9m;Go=̏d#o\)3u-~%~ 1|exhfY2#aH4"jJfAk=ԭ˲e 6<8^w#:)m|sZ6E')Dt5gxTmZn[IO: }A|.+E|o ~<9CB'д?|SOhѭR( c/WKO )=rM?೷#n@>P5~˿/Mk m|,vKG3J" c$2&M0k~*_#D<3%բVYֳN4`oMp8+MG q-V }E|;w~vht/z"|QH=hol~8Tl^6弾O>ΰ/&o]߁|sNVOkP:ng(dE4N8dde`GPE~{Fx~2;%xNw߅Oox2G%5ə8_w@H9T)ƿ|$ |G7S]mq g&EgU)@ƪQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@yƯ!jߴxUmm5(Û$y[/;wq|kxwUXje"쪗a1pP5fsFx?zK}7[mTQʌR@ep+>+U)eѽЧ.kpWa;fƲKGEWN#_f{6;E/ddg#5 xoYxC6KM{y r( >x[5cZ|9.Y[nb &XpI&}@M ?0ѴhZ~u[[[vF*rX,x[+B;dIXCʳ+lo|a)kj+qCĤfp~|%񥧉>|*sXZre0LJH3qɪ^ ~|7 ߃ ?^u֬!,^!-cwe#(1]7ˁb7^2 |؞ SA𵎛yh^"LS𥍽b2A0͸95c9I8Wxд]>i D^amw<1,yg›-XIH%y0Gh\+ݗ+~Wf~s?fY~Zx6>2cJmF^{-D\^1&I"+*$|G|c7Íkź׺-'.?)22ϗ}ߗ g.uEW/#5ӿo~*fg ;D!h4ґ4S1ހ+K Zj_\Zx2r <'`L8B\w^kM>x "j3>`׮4=OѸ%%||͓4/ =8QwzڜE 3z'>|-4_Դ#X򮼟5<6ڪS~ğ>xZᇃ5R/o/ X7px%XHq>8<skŲJ:(F; C|Pν⻭C{Y.: \/ ud?O߁|[y1[KE+"y++0e N~t 7i>)85+O 5,* נ|#5D|9bڊjPt)+3,9V g.O7,Mcz ijGuu[s]<(Q`h +]iM6++G߱7ߊ^<3 o[$zuƃl.z6b##ۑȯP?>;<&i_!ƅqi6F"['ɍ}<|.z.I[evvq1'Vg? qᏏ~<9t$fChV]y Њϊ{KZeSkFY9h<| W 2Yfurw c4Q2O;qɬ'^kmeckZ5p[q-RܙOS]?jz9 憂]FYt=u-lR]|e}xp#ije6_n l' ހ6u:{+MGM`{[KVh.u*R kt&xOWt/,t?x'MQ1XP,IN 1 R S&Dioayogo_ WWvoV g\yq>Վ6{ W*O/Yx`]xr):D0ؤ. ~2/ AnMoZ,,t ǞMqk?i,Sy}-fO\&v]A[{Ha{w߇-}\{k+K-4rD1NX2)Gqtw-[n ivVxXG"2+ Ŀ[Qx>*l*ί+,Lh.Ok=м7ç[lo!+{XR:0%UA$&t(OƗ钳*]q@NFJ(| 7Q^16w:ƅmy-OO&#|^~z{cgirRKR[' (ľ#[VZzjtIq8|21 's?mL5Of?NҮ|9\u ]n.&b4jp@Nk Mߌ7!]GKmwO5!( 4O<| M.t| yfEeI?.$1o#5nv(ͺwmf=IQmƖK_]x4Re<[:\j R HiXJI sxu7 Ho+uKX_c/_;:kOo4Xٕ f%As_.|?~v@_íg~&׷^$M:k@$ktmH}⯈%Ō^7tm]R_"/ck8"{r8\h:W4:g+oShÑi0&m;O+99M9?/NmRK[Șa)WR8*Z5埶/ch-fKY [R,v֨d8 B O߇]V&öyJJaLlG[*A8xY^ կch%t+k)L%xc\)o溋o>ླoe]: hb`WL RKPhڎ?<:vp֗MB!@-ϻlnV O_?ï tI4M𵍮#8 ۉl|5-WS٬%cŞm+<-:Jk}聶P;?෌ǘ4}2 ؽe4F-*9_[^.?fjߴLj>~,$k:YdoyEPŏWeIx ]ѵ:'hOe^6*3Gெm[o :xf4l`Y5w6@9>|~%~|/k o4] c0v^$c.7 [y?^ M-"񇅙ˇTjLQo뫂W$Axg[I{DKEhHz"478o|R>9߅zinO4 [jYs}͹e5[[|.[|MyBxFYu$YAvϘ9oCuYP{ c IdHe#9ȧM2[\:h 31P:{ g ?VZ~Pf-ժ@,rF( *l5x7SJNon$פ1c sNc`zQՕ)VG_fmsNӼa"-6KUQ*e|uy'%S;C6`]'xľ-&j桧%XH$ 'rWMS?->[]:oZ[O(Q,Wp($W~?Ư ς>'C׼Ix>Ep-L , I1l'~ʿ=Ə|Ux_okIE+ۗ2,[NF;}~ͯxj+h4I!-0b XB`mM?Wqx>%cPլ<'am}|Ӥ!m9?k=< 4 UM>i"CPΫc(x'?ߊy϶ZI/^!R^K7.$X6äj&O;dIg19]ῂu// -1aX!#; q^\;iOxS[U Z@m<zz^ &lΓjKilX  tJI /z')y20fO|_kmߎe/k59y?Н-ž5M ,PR23`ӵ^1ij6qyV`+99ȠL~姎[|=in%ϛ9L`H$29 xJOOLWVW q*Zd_~~ x [ LJ<;g~Q3ĆLb7IT|/?śx/ Wr<#𵍾4Y!+49- Muz_xl^+݁м/pEyy[8]ݵ׾6jz?h{gTXBv<~ ;ivwZ^j Ox?OX@'tD$`?`O:/]MjPG%AՄm* QYgZwbM%ţ`-jKDw.$S4Gy5h?  x_T-g4,Zq S3.ISb~Zk< IVKdF)`3$5U߉՜;O8;XČ xp:#ž% I:͞k>J V+VҤć"aVGyM]d҅" F@vk܁5S 5T.ಂ @#>3ҴK|McQa[+N>kP71ld潂+ X8`qH P8 ; dB/NdM~KklyX139$bg=>%sG׭!$uwQZ6 0:Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@~pS?go?Ǐ< nj~,ӵ/k{-]ȇώ7fdG YGtįo|eG2xzƚޛ6[Z^G4H|ʿ+^([z؟POA]?N񎛢oagGk~ D4eۿj( Ac ?⯅ x3[^ ͉25ԗw "9mLv~S _A|Q 5\[`!kƵx{ypثOJo? _ xoX'c^&w.lynWŶ'bbM|)6g?5\o? i{_|3H:RnjQJ!x?ÿq' k^ K֣HdMnpnJH2B7M}MW sOį\xUN*G IHE YB|qо$J|=kh)4 C)L_|ؐ@>;G]n|][GwZ/.:lvf{;..-##,LĒX ?2!|?6Ԯa[KmSJx-i$(=16uϋ@1SjS_UTVX{線8GV!p1$_7SONK?gN $f6{{yv"c KE[w%4%Qf'$I3~_g~/|$o]/ǖVhV&L/)u@lb_|%` k_ ~˟4o|Ӽ/>ϧ\7Z&IYG@?eji_|x|-7PjZ 7$Kac0(-*~nm|k"<~׷"5Ƿztz d0)v82e$$q?g/+:i}-SMmaP0B# 3&|2>[U#sm{ҦHŰo6sfdʦL.W d~2z~wkzֱ$1ē$jX$Aqm@?+$ֿ |S<'⯆<<χ|ekhyR#Dʄ!fܪW]??}uAr5+F'; b=6o w4-gźz38LUwY=*TCO'/o~v>ᗏg/O_k8?i}Dvq ܗ:Ky'؈P@}O0iuoik4Z>ybn/o-!|{Epˆ-, eu;oZc v|V{%of'<+v?h_>/ x i#|Ohٮ1o5S'_,X'1]&|`z/K}#N"3^y%JZc( i2 x35_:Q}{\mBl`g $J;IԿ,(qix 22 Ro_I_w_ugԴmP1u_Cf x.2Y# s_W~>o+Y0]B$#^yʩ2n,l#yw5gmGO3^m K`U1ȉm4P$%dUV+"{O'_!>=[~+.t}VGdKKfBr4w7>|v7 ?g/ #'%[kk+)b&!.&c ?⯅ x3[^ ͉25ԗw "9mLv~ >~,^.j̺:vxR Zaajڅܲ#4qUK*1|<S|]Kz<5wB׉5+ 7Asgpp:-;#hO~">?Yޅku5XDҪ,JqyO|CxXѼ G:>ףA-džNo:Aa;)8wtHB3M~jN:a CNs|N6j}r8$1[5ظm^Qnk &-/ǚ}ŇyY$]fgei'y_Q.>G6Ya?~wxCq|If{94x&i$DYFe,zo_ٗ  ǟ3NHoW/h&{4Q|c??&Ϗ^⦕+Mᗃ :TtgM?;H;K)Uj>9Ziن,͟~mw/+ϳw4Geiתχ&_ixz9 K*qSؘ|мI~*4;/:9Ym.n`H®FA~_ E[T&@4#4=}Akm~[4 !+MJ|ӿdYxKWo]}oxW:\J73ݼ{dP`t]ʼn{d$oïCֵ hdV~6m}tirj\=g¶7mseh\)(Fnؠ|TTہJ_co_1|Yx>h'G>0x_$3IZ'Ԥ:E%-6w@# zg??6NAim;z͝%[ycMHLxFPK&DG_2[y7-|q)3 +ĉ"mT\A; h0|D_Bnڋ|F z[0k,$xH2+~~>GSizJO}1k۫2suup5;3<@Q@~wK. {U_nחt36qq9X!D/v1U$ /=POOx].q6ټtL:AE @ÿ'e#Es|7nwL,LFmQyAo,Ho)W?O{.Aqᜟwjwizo4 !M>~ȟ |cVw=B& O[2k{.vvewZEyud< jzzGk4;ߵO۳jrc1*J/u| ிG>.-f;6;3k=͝@&WbI,rsT!؛%x^!|] 2}ZzŞ}zmZ.[y^R >ѡΟy65?#$&e[O]SGy-ිRA_*_O$ܗ V/X^ye4w7f%kA(gx/_H~RI}zYt )i#"3eI|.ic336=tk循,g,mvRɰGP/_ somivwWUk|h\:ͰD+~럵elEkLѼSI2xg©`æKki34Mi9ڸ%_٠xsVa*K/5$O<ܝ=Rc,;?1~X?~>QѾ!YuYvuRΧ+s.sIAdT~;~b/4W)o|@N5;kɥTDFw1pe*)%8^w⏅^#m/L,cYAiy-;HARC nm3!~KηOi 4+-2\N]v  Ε>S=uؚᵸӧXh2UG|7|ɾ xK5\a f[/7U 83dEQ€<3M-Oڗ cҵ+<[O͎gs|m#E*#UkCt&O .i7zM?EC%C$ tdıֿ_x::G_$ԭ1ݣFZ" "ϯ4/Kxxw=[P ľ#M3j ,gΕC@Le+O$¿~T_ۿ*u_^Ogkb:*@(;K=_%$hڅK}2- 60%E E"7>bNW_A7v9S BƺޣQJEk BR,;c8P¿ x3_ԮO[C\eFΖkI'R w qN'orf ?4{_1va 2ik%U8ɯioً__-C\Uz}u U#YOB+>>|3?tO k[gz5rı2yx J#2JPqW6gui$<m%>)<)#xo%KL{ݳ'Q?m_Q?ߍz~|@xߊPmkyeUl",m_-<1^zma[ss+DQ"v s=+&//]p|Q?N>5٦3>4.MYVwVu%曯@6:mq cu*q؂G@?_C-Cÿ_3gW#L|0vӣS4MCB|KX<|=^n~~ [_ӵ|,gGePFWʆfi!Jj' #7DŽgмUi 𶇮[t?MK=2Kh!dG qZ??i/6> xgUӾ![[-^$9].1 m-:H G?M5^7< R[xK○NJ7O^'%k8t}]Wa'?~^|ZbY/L0GI&Xj+_J߂|mxKƻ&7|Gg.0j dSIyyـ3<Z>К^%~\K G0jK*)4x ޣk nS|2ǦVL>l$#g o ~P|'cMAV[U7Z?np7( 1?[L| Ki $Y'ҬA{H*:)Ua2>+)>k;|AnuiE f31hNؽ3fp?࡟G¯S/\128#'nn$i6}ߴ@v> b_: ˽br&Ϸ#MngkG5CY<'Ľ7ڜn>ObM=EYs#9ivwmmm82BY,}$EWr4o cMo.ts6$&bn+`E}\G9x/%_. KOi!ȲD$hPA> ʟ 4~WßX\7 =masmstV>\(G 2߲oO|.OßIP[ƾƍ*[װo} vvХPo# ,=ǟH_< Q=+:zƒ/K%aDW"O-la-~=9>v_X~1 KmV\"AtrTPIXO4Y־?N/ xbº iP[y!b,'lc5 ZYO|6t]2Q&Q-2!tb B6<)vWg|aa_M~n'xlƭ"g;ᶡÚibVK+B|Bu.#TBS(IV`@?2?gno9 |rI]'Ri&iOSİqɅTq/_ >0Ÿ xtx7?-zM}N67[ /'7Į*Jg9_u> i^$qk}w&կD>uqt{e6Ev'y|:mң} 94[ĺ[Mf1ŪɺK30y,@? 'O<}d%xt!֬$ߑޢUQSnmq= hWˆ1S*&1&%e J:~췩|1>}i:N<%qjg{⎅o/}Ɠv:rEUZY)/ pg 1mk?xV獎oIկnlm4˗lMss}S=~~~0;h:lj< $F6+.65LorI _Ae>д~vio a1 31I='FŸ'qc]|@CڶEc{`[[C]0?Y~x; C|Mm OJxS]nH,,,kP$'[ws'^n WV=qo#nآbWQl2a>RH>t|H~:M#L״=[>ӵTG,2 7 |":_ "cյltquEA$ ' w{@ x٬ZObP* A8`c.~Ͷ_a{}SV.cQOVwM7rIc)ie,s#ݸUp|+i }_t-t-#!kp\F:W˿ _?iw[?BW2K)/DRO*#e @85G/wd~|]s)EωotsY֟S$S"m"Kdni|Q{6^.-4$([hş<^ <;8xgbm.V8.!,nry1%?߳Ɵ Sobே:b[i~ѡ[JJ$Oq=$3J$O>)%~|cWox7  [ڍڜwW ~D\ijMτ7['մ]gtufT;eBIy3f_k>]ů<%GSizJO}1k۫2suup5;3<]~]߰O?XO¿89oӮ;i%zM3@?,&g|k,xg٣|7f%~6I lh!c48uHhS%^a_> ~϶?+վ:x?pxbwx:7\[{-0j!3Ȑo> >-|::ɣivq#쥵hu23H Dk g_Ŀ |R#fH?u{&7 Rbȃ c _o xE~%HҮuͬ\YM/R2B!dVp$WMOz|9_zUZ}77w p cߙㄬ nVR8b<+O]sN,5:Fa{UTQyŒ:o: h4ˋh<:#)4w*z_Ҫ'_?#|]-6gmrxX0$s,g+byniYXOkeg7{OGجnu[HKw,*q95]-dT 1F#k) Gj?? wq韶/xChV.G264(7OldX9H>y~1q/+VyR.. '_ >DO٦ž4 um~W:A]]os*ڣ+6ɿk2/'xs]ǞƁmxX30]3@ *QEQEQEQEQEQEQEQEQEQE cN>-|-7Kyk:oO|/?-Mg_ŷ_b;`dK;xԿy@ 2ƉPx:i [WhKf"F Cnaџ? ~"B-^iF@;^;$3mk>%vRtv4iE[wu,$k9Z$9ޫbKgs~!_w?Yuk AbAA, "c]Xzއ_~њ3xOntMWiu; uɴ xe&(yb͹|'|k|f2f2\VhwbN-+j~?2ixMn yR^ eVMʬ<~~=cj,%x_4kv-3l*?eF\gٌ02po/dg'1sj?=XQ+CWw֐ȑ;yd1 k:ݢIn#2eh q_ڳ~|_׾,^.Ѡ1#_6oOe<4.p܊S Gς'ɭ_xW:uΣ{)mu+XY,[ 1,dI4=7~=[?|dះO{9nQ/` #`hp~mOe? \!}>0yu3I:֦;1[oirCSCٚ+__ //'k<]oQ+8#Ing-a(HppG~^}wnj^ 1ѯzjVٰW[q2RYd8' 4WhP?`j*εO޷O&Z weK '͸xy1B_y~_7|o^Oÿ Myxte)=j߻)#Vv2)ʀ~V|e|Uo x_OT/ϗio $r$T'VΛëv hnV:U%zǀ<%<>'x:>D֐' glWh:7ů/qsEXŔһeL o^- x|xG4YԦH,䑟O$PܖUs B'?b? <=6>2<'_'#FXr"1ǻRFm a>>|W~nմF7P6$eaHYy^ bY/,G[㶖VZ/. Ֆ'#G^xOzWmGNΝk E Tv;!bXnǺum /<iyoiI6zlΥ1_FW(*L8_gxOFMzO]" [8]H Ycys+ilUB@?G(W~+~^ .ў>+x8,&Po(jdra`s3+2 I _c^ 5kծu;J'i]-ndNYEѩgPð5+>%|Md?4yEGs5Y.eD- <ZyiD7Lׇ08~/|N?%hZEazXRyM L@> |Q^h>x"\þ=M KF FsyWM­[eX *I'ฟ,_Lj<{k||ci=+WnZjo]\cPQ$ `csn{wk_~$Z|i.n𾺺7ĶK/-ݲ[$nŏw_xNXũiwwo*EA~\=GkT?ĺo%-CR x}w%36]/c/ {i/m5og,#^3EmYq:+OJŸ Fg|(u֫Io{%Iyf Xл P|=Y~~$U?H5 X`mԵ+# m2Ec!@ߏ>!J9e~^g.c-uصIa]Ċd#v uy~+M⧊kj ^i~tόܑm"82}YzAmaյ;jR5]5VXu[h$cJ! 'l0' g+߈ =O<|I'%uuy}iq=9NLpdO I¹ď4Zc>qxwMKA2qO&%Ҥ|?i%֚t0>FW (fp E$p((((((f/#?躷tmk‰asi:M[&TK1M"]Am۟C>nٗ{cmwTnOf{ǎRZud*+71>kK=6?u/ "ӛ02G Jip@M7e~ǻHiKκ,:FE@=6PH獼yf~:_.ux&iYY"I'>br7dvdj-̑+M YCnqW"H~N]Z?<$,UZGrj0[iш#w׍&ޟoZ~Eڧ<0>ԧMG>^?WqV2G4z?!@#j0=+w! =[έa{?kqMb+m>m.,DR m|>rcR>fG!$uv~ƾ ?inۚ/[[j!OS֘iLMq5 0*s[;<-jl.>#|<>&Ń[j+-đUZ@0W|*O)U)G#h7o Ž#Wmƶa1e+ 7xwxѤxVHFBh߽7AsDa@Y<{WݟYh?k o|1>XKռLU׎g+/{ ntad왍v򿷯?{~:tk}g~<;EO75J.D!Lcj*JOğ+_x֚?%ѵj77v[4)V%Ť˘"ooּ?kzU;euAu֫'19:\~מ|#?S[<-=f-v+& S1O 񅦹[xVMcw0lW3G]Nfq,̤2@?Z证??s#ை'xvFoWrcO-CO? + hXy~C -?/'Ek:?Mc-}s3+\ tMP/_8q~ÿ xX)]|'G'ocCbQ%1!bAI*;ŀ?[?gW5ޯ(>q=]ռX"E͋Z-q'_&y*[xVOo]ipjڨ%8\y195?tw3:MU gÿj6ksKohx䕠!Yn$e5G[kmo&wO?uO]zŔ):[$]N9@ oۃ ۗWW|Ix?ow-cAluʡf^HHe 0pύ*x{/|bXcC%i W, Nؼ1X'~5x'Z.4_\Ig*yl$ Ǜ$%}T5_kZ3L-e)*1(OJ]VO%G'kmKyg]oq5W7܉u\)q#*hN ?#,+UE>d:Lpw h`%GiZB"VBD:_~$xw? i<]xKK]rycMR{ >K{2X%1F`}B/|}ߌ#ymqkI|Lt1hfxS\V=8|j]Eut<<+XbE"8AA V%+/ <9e»{qB[%R(&o2ֻO~~0ƭO l%45|:[Ψiqz275_fcǚ_ Zύ7?i+/ Y6?c%Ny,Zdj}d>bq>2|! 7JյMvm>-QԚ6*yc$(a_6# U _|H/8,0υ5,4U丒9VQL5LRNș\~F/|7YV:XU$G 072:ב~߷->.0.kaAm-QXlI.AmBIrK7G?q|sᦉ +{ s7?hz^%jx>mSD+samo"̱.T _*?kP<7^%/?h:?$qFrK$ҺG!%@SPgO|1w<]p5qƲKGFI-Z*#dEp 4%o~&|]~6fƓf5 D]R9b|VWF[t_'cg|q h&m-eI)-,˫K41lE| ៊?N8<3HAeu8sn0 W!K?سZ xnk7'ƣ@Kp&nbFs/lE~OÿQ(x{^'ӵmWZZl׶vy|2fj}cmRľӯF7ڔ-"{)'Jh|QJw/|+g㯋W~GxXKQ 8$, .xݏ>!|mǭ:Va=?iPjvo% ա'!)!} E|w'~ |iƽ{9?h~&^S[-mme$꿲-;O^:-"OEQō ae((b/ ~+G:<)?:߄UMZtWd_ `7E+Z(%g3|`x⦏oj5XӬ-`;{(,EF-#H@# Y"|OoKxe5Gvpi2;3QP_L |:~&Od uxCZxeTxK>ۧ\By$t|k?o2M_ͦ^Y5(/.S(QH ,vf0)q0Y>9|~szMltkpiTuy UhnW>|⿂|v|mMKRrھo.YQ_NQ@*|\B;4Ox =캗49\(y [y%RF7Ȩl C?|vߪ>.}xqmeE8T<q!澰>O_BE>3+_MaS\;{ˡ_jcͺI/W0g @+mCgωx ƛqo6 ܐ$7'&GV<ҔPp.|/ ex%½?Vt˭ $$+[Ic`HYW`}SN7¶g./5kNy.nnUUidsUF*hiN >4xkS&]wT-4wPN&D)&.o=_; p4mH}*I$̡we峊_L>5~ҟ +x/ ֯/4ּy5Οqmĭ[IЇ+/^zhk񵧈|[^kzf,Dapf.EB d#fx]KWtt{tFTqFxdV2K&|J_ouOx?BiW*KY*[̝sji'/ړ+'Xç[ yt)-Ŵ@&IVa׼ LjZ5-&Y2C+*nRF9fFhſn?'nj~+7[ؠ{XJ4V<բ#or|mg{MK߱|@-3L_YAЍi`ZK$7 Y)8Ɗ{Jj7?~74 xwJ:?&41C5ˍ6[d3οͣ K 1?Pa{WχsxNPrZ=6iPDdW矴ǻٻcxH#/l#D,fo)mA'|6q{O᎙ksve+;hPGh8UP9$`~_?k߀(kLDŽ_dlu m6+㔑RDaʲ)Q~ߴd߂z׎~%uc*$~lnbGY@3\M+q#,$ ~<1x2U[4]eΡsYbFpNA+!sῆo=!=ǮVQtn֊(wF&@qʤ5$Ӟ(6Tk]—{i^"@G泿.XX,qtP̟v?j߆u?-KM;BF8|KyekLdʒL^W%W3O]#oijx>Ӥ5WH7YGy2ד1I;"er",o ?gmK6e @Mpҳoh{WP^C֭ V~կdԴ ʸ`c{O#_i Ax[vjdzW)YTbYo}wA> xXмCpkZɢE걩i^TPCn[9r (q^;(^QV_k!`Tgmo g$|hi-?a?gJ_w{i}cAOveYP"R0U#6^E| 3/N-_>!4z{Xl'6HT/  gQQ˪izu Xu-2խ/  ɐ >͢ x;=SYE2f h $3vr] h?'gMgD^ַ<_o-;y7ŭg\yyXڔuVO~0*>|S4z-WVy_zAqa!{1wy%\r>>N6p~ ~+gƿፅƛewhFCu|j I.giF Z7mS|1mG~&L7zeu(u )tRTw:iww#ʬ,,l<˂H{;q06d(_ |{zg_@]4Xt)HDWZd[*PτI|=}W>&}G:v|#m兒 ƾ\9 VV@+ΟKhf߇q|8m+O𶳨6uB;.5|FZ~N|y7߅:$T~(N+yggWCoFkffoV>7\?5i K8<=;5G-gPDFDr2Fk^KMx'7,YbkH 3yhz( ( ( ( ( ( ( ( ( ( g|viwÿ~!xRLk&[Hmb^iey hOؕ/՞'JUsº4[|IYб 12$*x$)Pjoĺx_i/:+[y,6<'*ewwx~%w^"Wc[+2=Rck>>=oo?xOLSqx rdc,5 F"U_ĿAɿj=/Ow椖.so],VYCCPb~kܿkoj???/!xm1Ӭ.%3 k(HBJFm?kߎ}'_UG$״Dԭ|&lQ4q{˽Ee2I # ȻF>믄>,T=k^Ѿ#x[Y4m$_d\qg+ۑlG~4{vZl=a,7FRUQ0¨Tp>'Z#CMc7_5Ƴ\ٷ X#t*', 3?|Q g⟇΍iDR\PP,mc#>>|X0&'aG{#[UangXwZc;s)0eq?x~]k ><#I,O#*`Z]7 /~>>>\Ҽ[“,cx]5_PnI o4q,/7 3y[msL-m:DɈ8D Wh''L現~_: ZZkHYDծ\uϘvP|H~rCZ4Aio.GUٷeN^!?W_ wo|]\Cq'L>ڂ2!ЮK*5&f"7 e8;}%_o?࢟>hE?q uNnXS,,>Z T2He?4񮽪uƚfIүhW*Ldy[(/%Wvo_5qы)8twK`*L5t3n>7_>9oOs_xZZkhkkI#=vp2B6gf м{K  vjZoq_sG?dIndm|| e-ڈos04hDmLdo!Po)?dswVּ9'Rj {koq+_K53 ]s)䟵O9s_OOc⯅*")DOVFS:jN8vV1 Ixh/-'ƫM'Atm+5σq}6SdD2sǂ狿Q|>>>xB8~k>j|4Yu 4 >#MecEd|4dS?獿go~%(f.g;$1spҤK++dmGmK? XE{?Q#&xyeh, 7Z )G_> ^|*sS<-hHcX.M Ȉo`_xg oxV१˻FQ4FmNH帅F🉿]O SǍ_nwY=YidRwUX%|E*6h4{E! ޵.O{KC>sj>ԼEmmok%$;RbB.wŘ_>7:O$^}-xY/4oi!otrc"se S׆<`Wx/14mKHj[ursJIb;*( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( o Yn,toH/#jCP&2<{(*~??FJ5OZ<%:ڽo"B̢UIel||~v5ߍo&>rUƱpJF +g^sN~%鿳ڊkZI.{Pr,#,ǰb$J= ^~ g 7+P ~6սUQ|+2eH*V)ࡿޝ 3W;M;Ś. [YH^/Z;]~`?.?8k?o_?sm4}NKº{-NtFHD'TBlc _s: ~*iF_Ɖe}h|e!b#/N?{|Kšx\4> NkC{c߅ASOoxNbEUu-]XA/#[ZkI>KOMh !Hm(,J[poeٻ'm ߈fa%wyKmR,_`峄7a̪XI? ?a@|oԵBY?n"m'ee]EkDK/Iu%W> USůk:TQ 0[s;mgXcrU_|cd&DΉZ4Zmݍ}Isrq,r,󂿘/#Vy_gMx_A}u[o SJC6I.k"zo L2MnY,>lsqo>|BL&`#,߉.xſ~϶& ^MC]յg{"wX$p(?><iM>]~0W R b\S>T8Ƌ,Ou_]CGY%h>Cs#k;Y.cm3(ŷ?_Wk?&WoSgTH̒Xb8q\+_|Z6;gxS|VQI}#f4s!rU??o?>xǖm<#[:Zc5gi0nt0u.v:( > OmR9<+'Ypڪ>d[U1?$_{O3_uKSK u }C,2;c}ř|i<ᗆOVm`a-8e+{~ޅeD|)Kՠ'}: ~ɩEEeUQ3 e><9x ~'~*|$ֵ- _hvm5`tf-D1c (/?i/x;x-[o^:Qp_Soo˻8d|Lo|Co>x1?_/5cpƿۅ9cHrB>hw]cIAel:f&ivxdhݹS3 ((((((((((g'vGCiz֨ vL@>R襲M_:_L~׿OBҮ/ =t[隄rio2H$g;C,@xM=7]u:]ܪ2.#`R8kNug XQ5[^xJ̟k\¬BB"VmYb)t_ڏP4_u*Ӽ+.tMSNϞ^H\:p7IP̿>5>&x'–O:?DxBimK+ 5;vAsf yp.n߶6mx |O_|F|(Z\K-<맸ؑkfŶB#yT~eZYD15*"@8T+ Gƿc/7o 3m<-_ kZ;A+BgjUa㐫p7< n_fkwlw¸I!jisF6)dFXlPC? D.|{FWԴ[v֤"/#1oI+eIh +>x>YMwk Ki~enR L&:wxzϊdB>k_MA@H\JLX~_ CE?'W/¯O~w%H߆.X0ח&x9ܶN~]?4Q_l?icw>ѦjPr}}oj >@Sfm˿ x> |rI<[_U6oW|?¼6֛Xt}nM[KjHG,JMBfŸ)W_|yjԴ:3 Y|BeA>Ծ 'ß>,X ;i4ۘ"7E>ԓ3m$W]?Oo-f+?_hZ;hz|io'qpۚIm`2a ?l #&t{/xV`|+oϦyIbFY a]/O/T 'Oy/Em(Ԣ+Z2%FprGm].j5 ^S,fMvfc kbxiԾ CiZNǶ U7V~HWa [p%i_h_P Ӿ ZiWj2_oǪ:"dIqO_,}m 4mM+oԗEDy7y6ry@&a~_w¿7=uj~%6u᫋ qQq &IQg_f?nٛw|9}fNucm>Q/"_HYw|Q_wߴq1DmWGӼ-[JX-nOc,wnJdvEڷ_OOw'R[AknE}kH;@!ԓI&>(&n_hӞ-Qoi\ $&S!wWpg_ S-}ݠk'l- m5 xa3@HQ2EWFVF*q('Q-Wa|앹i?y [ `EK>>Cጞ9]RNG!Ԣ̈́4,|8r@>֢(NSw|O?;:-FLOM95KSu;o"(+,#3Uv<>V|z>0|[|?-VG[i]iZNgp@R-go.&Y[lhh>ؿlh?߳x6O~𝯎<W܏g3n㻏̦-L hࣿ?jS u=[ӭOW<_jf[ľ$ITHR>$W?O?#ҎI4 i6ix7^\z>aG|nH <I&t};ڵ^?n2Ϸz)dAPJW%?;_ڏ^$M}8w\[E.4أnQ-#X{W,X{'i/'Oh|m߇O|#.{᫸ZbnMb>3@>7Mை7KQƟ .GӮ";،.1ېDnz@:t}?ςj_wSOA66֖sCLҺGkx PDݴG:X?m_ٓ?> +QҚkX3%wjiѢXWe>ڢ?ǿ+~ǟ vmq 4|EȷK*Neaoݨ O?o =ƗE~ xڅۛIZZZY[TkG{?Sx+R1Qӭa;/ mo\^ms̎ H$|D|%⏉ZMWO;x9Tkߏߵ7W,k-u\u c2CmxH#Ջ#&6Ɵ~_Gf?/]Þk:߇{˙:w(Aijox3G†4-"J#eqG(F\ o&_~V( j<oa\E_,Aý²e[ ~+(퓩? #+O!S~?Zj`r./ '١)p3lTwBQ_ ?8|?^}◇Gjr'[>##@^9Fr5CD:|i=\ZxoާXO HXHŌ嶖 }E~cx gO<[ZGğRT|I66^!i琴B(0BMۃşO/~"׈Wmdž|s·l-I"-HڒB1}}Ea# P_>2?ğo?~.$AgvN<6{$H[vm;qsh|y]|/E|nh# &w[UyqɵZSG~R$ ldAk];ſhTv?/GOi .bll,N_63m+U\4qy.<\K|$/;3yĂ&\(I$fN 5_ |e? :ޏjb>kw4V9?`2}E|o|}-;ρO}bŞ'<:wv\Al5LnTns$ J&[K~6x W,{?fkk?u7Gxs *"83~͟IߋsxgvjZI 1,P;eSV|qN&_-Ƒ5;dy`56hUt%]IVB?l':J7sk/0o\ 55\Onbn¯\\ $ P0kca`K? i}moX, {s!Ua]]:f+ /O +.剎{`ĐpH/՞(a|FO/.Q%אwHZ$ܣ( +S|5>!x|m  o2\jw! e 3EI<+|K~0w^+įt֛xxh2y{IdVOtF}0 v3JbIьB\cbnps% 5oWo k:VM~$OծIfy+xHOwkto֞0$Z_\]n]L-+BwHVԁ@lב?7_>:~k:|6{ILRAyk߳3|.χ>:oI4n,tz%ݤW) 2TϾ|[?Oڻ o>-g]#Gh\R?eD s^yW5Cfpiku|α,+?۠H]'^df{XYwI "0j~(~ߴa]忂>)x>j2"ϲ4 ݒ[/i0/tY^YBU7]IH A5j/> Z񍤺tyugkن̕MvpqFY|Pu-'DU縀I2m'Y9Jzo&o|FxOƅcocS׃|.[3&lҴjFI*UzW||~Co|/^3mu*xZ{[Vh\2kFp@5oi |`鍡ԕ0A\卋0r> k]еOGЍ33A#q)Go81 F+G'}Ek7]׼.ij<ւy4>a.d_-@V7gW3`z_^+h |0#orͧK@-tM2|?j/wG| Ecƾ,4-%ۮԕ6@nߵ⮅+P/Gѵ{vc`C<%FRAw?oWw|GgobH𷊴R,~!io5Ům$+ OMn<t_~ i-L76P;3[[Q g׺Msi6mo<^H522RI#kM|otggjA5ޗk![u[S'zJB*g? ࢿQ &j6z ͔{^3A.,R |pwg#gxš-269b'rŃ'x(((((((((()$bFiX*$hO8 R7?l5-bS/ciuvm KtcI9 H͵Kܨ$l`~'|H]i?i[Oxφ4jOTU%neblvߌjSo:w+狀yq4L7 7+D>i|O-KSA__]uy('H$܀|~( 홥6ß|I5DžM}0MbBf6*;0v-׭p^t~Ж_O)coQt>O_ Ƙ)ɷ($#oъ(/k?(tO|' [Z*XXK$kup3şO?[g/|wav66ԄsY0ݻh,rXØm ;5i~}KO:#=[Z: =I?0g#W߱jZ»/߲/lDt"DyAP:|yO.xfþ𾅫ͬYo] Ɛ$)(M\OcO#,n)+|4I[,܏Qz-:W|o: "6 ) 8 "><)ļSQk7{D:/cڋGPeۀZUX1,oAjbO[( |e㖣 xUnM]c干Y"e^= ’wQ@Qxr~_.ƵJonxM.`Ų<Mʟo+=\h ׀ ,dR^GtdYyd!)ؿ8w#?e/g:_4F}"I+[[ѱ "C=|~0Z1KX|5ĝ_M%-Xt`V5N--q=ǂ|OcY]CV-(eԴȤ qld\:.!:Y@xSH7I~4|I"U_?F}jl`X-&9 6Fs\ep?_in'մڼ(-5,F5Ҥ2J$DFN?YJ|>)Thj:[[;%+/ʧ>< '$|SeO_K{N5 kzzZq1Xܙ #h 8\ǯR_E ]SN,$jɶƌØ˔3<}E~gT`~)~:V_FxR>E[DDtU6e²0Q69/'OCT?fi]S>#Ҵ-^;h~jFO 5e?J+#_MotXtۻ|>^_`H-om8]A ;A3۹L zGa_m(>Nx_u˻ťIXe ؋bfBYc:gggօer\{4pni.e9y\' K#3I>1e__ ?ਿ>0BѾdtBV"ҭ|4♧ht.9:ۇ+7ZWS ]c h-|Եy+n?D&|]nٺ2\U&=k,`< $|gqF|'cϋ/xL&{kvٜ5~iE-Jm mg|}~:VioFpn˙CEyLF-L[_nEKch? 4l//GRy-DF\^;0Mʹ;]͌dw sk5BHf..7 ACG#Xyly% OI4z6]P+E Ui 04i:~W/g:_4F}"I+[[ѱ "C=|O#%'xW~wmSzY`;P$˹q_į+oRO_x^[ܤ\^ς-#2|?X@Q@|{x~-U~vx"dYDff6F*(?ko(_xcW:8+HYpj-n}JvҬ-䶵0idd?` 2?g:?ˏ!φ5+\/$l"ƪ((/~_f(637/5i>04o}aྰIFrrAb@Mo9s/ŏIk^=E}OX@#f`}E|o|[ƖVƿt' 1}PXK,I; qĹ)hGnZ`QQEAyl8v'_O?ό^6׼7^NPZ~A{qgT)@~Sv7;-~ooُ<=vL!&xRϫ%vκ)]718d;ŸGǟٿ KO¯955{;U児ci4w1ȠI3r-S$i ? $9+/+c_ĚvsϪ#K8C6\7~؟ B|[<]||GYSE{i-^Dn$%L@.w+jo /? ?h}Nͮ[NV1KEnXˎfv~#C3#ssk&7:rK( FU$'(wWǏ~ OEu=x7xt[)mZ+ھSoڛ%;]|(͗-F<; 71e%4<)>wiUQI_|CxD/|7M\Ii0ypfBHg#| ?iOO;=ßmg_Q\iY*腤2}2G\$$t.+| /hٟMF{6^mzO]Z6mI,2՚X#ރx*`">ků׾iOZ~(It# k jVn8,I8ԅg޳x D-gT}̑NW,]~%~ xEgi~:niF $j)~?2Cީ7l:ŵ2C~\ S|x+"gocK/uuօ}se}+IbMѩ_ '¯_^gǺwÀ.G}Vٴ«Go 7KQQ"Y2n9j\ԼOZ?)했q}ui7,WV}'FM!k(<=K^u)u8t]5 C]M1Eڑ80>~?aٗh; 7?-zkZ7y3XfV+q&YF5QEWV? 5M'GV>i:qb.l'18G9BUI+(ڳ3j>'xB%›FM[ί]GQְVEV[wj,yRnݻ yHh_w?i_jZu';H$4jwK' _P?e__}E-_kyojAh,űID)ٌ*qC[>?ׂ~|L}?|IM¾%f[Ų`1Gm>1(ѻ)ئvSWNOW/t 6J,Mܭhϗk aEnUN$ڧI|<O'͝dxl51dK3G*k`FA(_!㟂WL_|GOh>w34OIDR4Ԇs2 ,bE gg Ѽ|%5~[zA;I5m`K*'dve !ߍ ! x/@AjZh`l̫b9!Omx_5k>t^++w xF2#">c/ nO>?x~_kOf+oas+#1˖+2|y SW';Ux~Mo [xv^ զ{u{^Vv8R&%Cg I6>3~_k_}ox%=uMSlLTBXؔP~ڿs~>:M"?i[~n'w__?72׼' T~bimmmWOyCqnFYQ Z_;Ft6!cK9u `5 Qc$0i _%㨯+^ѼGO]$uRVF$mƃ'HF@j|DWd"am1_0WO__~/ ul5] CC6Vf(#|ES։xn|9oA.k $H#e{Ou G࿊4i:EƓ}V&bD%r{W>,~>`Sk Ioc$ umos!ld_' C-~Ki?/I/Ill 8>%QHV5GIP_a_~oxS/ u;߉y}HX.eaYu&7ߏߵƟo ]|>߇|!} WY޺- HR6Pf VQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@|G~?j/ | |;4)YKIg_EuMo,,b(5\kƿ KRz<3o0ծijzjzv2 0ܠWgc R+tE-4ѕ>bZI"Hipw׿i /Ɵ=^]kH⹵6Z-Jέay6?-|6jOwc{ |YhkF C)>C6e#k3 >*|T3_~ ky$HVj׿fY.>j~+Z%l滒F͕# /z~x'×ߴL_x_Rn>}k5r"R $aB/N[/O~$Y_PjV&T[E67W k$+ȦI0 >xoZ߈.> յQ7Dƹ Y_R|W<Oh:k'I{itDw&4e0\$}ERKB +T}1# J3,Q [?zkY~?Αgt_kWWaҌ=œ}i&miS U0HߌU{~*d>Y 85HV7-iT~\~ZIB,LG1s?tiu5~6hW-hnCZ߉A$2c sIvf=Ǐm;ak>I;M²,pOs@f#{]{iumoZ{/ lP[f|Ƌ&~֯(_U|2]wMУYW)~nuFo.[aB?PhJK"{)9jbN`@~u7~տmςum[g=cڶ4 άmN4gmHЂ_'?{j+_%Um~_ 5xUbtzPӬ|9 jKr.Bŕ.Im,|kU~ uk#uu #%܇@F (;w~ |LU㷎5n]:?LJ|3{uwTV\R3_?_d?Ꮚ+im_moN4M:+y5 ygIUJ ~? A~ _<x= -l֡nb3NKᄑrg ^ |H~7W៏_ [_J7&p2/6ն˳XNڏR߉8OΉŦ{SRN]گ}4I?Kx_zӟ?i4 o|=O"tۋyŔ/%ĪډX;x1~#o_׊im.GZrYWw \"o @?_ V࿆?G-5kKW.t"|2Uw8$ 6?gͭx{~=Լg5߂uuDaE6{KdT$B/O?u2 % _ˢí :fO] & Y g>t?b?| &|g>j־^׵=?xȲMckk b$K&(iZ>mG9  Gox>[&+ixFv[G15 ૖ b}o3"W}w xFqkr]D^4@yhC; aKa؏ZW?a7zׁ.!wYҥg iv[CO+FZe +׉|;sz%mO_~7|1k^ mrHX[\d`^UXÄB>ղkO۳@^M+Q|%jS|B{VHP>?? |NO#|BeVv59pq5ٳĿRK>;-ּޛKsx]:Śh&[Y\ܢZAI$S+*# .~?c_%m.=-ǎ]B= LoZ06F }hh+lBo |.>-R֕sxl__vK{x"(/Sٗ9 6\ͤx_usGtaFq0ޱGa@w[ C)X|)ZY>'Ѽqm/ڮ*kMiW)2@wU !HhU <OħzxMSաⳲK $O';0<>8H<?O jMx/o4ZiXiHȠ pY|<=}.)j/k絸H}څv qeuOOi? WOԅvmjVa!-Ho7g_ ~~߳4HnxcP4+-}Jcaya]<~%1zȺğ;]Z.{}Vė^oelJěxe=Ժ^A~~7'+ )iuMsVwm/dCi,QcҖL3s$+[>;('_BMoǶ.[wkygx-+]:F&uC*o{HG|eJ?7xg«Xj>)О{8-2+$+YY#l^ i~UW57=]Cg%[^{*_gQ@~Կ3^7}[6:^ m6V2F3yq'85ʿ ~*s !'>&X_JI.R9b&nb<_rV~L__k~j^ iF弍ặ ۅH;@>'C߶/W<|ZSgRp<6@?Հs^])OGGo |]/i5Մ7}mysqes:A.dkp[YIGCe4OׇcO78~Y}Ӿ)[^ mN4=ZYnN[VKl)GrlId{_$|EG>ifK1d bH~|A'_UK? ZxEu&qu8ı46)Lm*J| %|$񏈿`Ꮁz;]7S-7}*kY&KY0# 7l>e@\ckħP|{4{[}J&P'Y1<шr]N¾!{L%ya?R|~ A7n]k^ !HeM @[Xp0_o7~њi^;'޿5?߳Ŀ |Kccj qiHu ]j'M$"d "Mnh/VO Yмui閱xQJ͜V|Ognd4DBRmZ'#WFniş>Ѧâi<ךd1\NֲgҼS lx if[K>h g8yq<61^%4¶ WûOX"{`B lHc(dRJ{?'֙FxVO&O5ۛM 5^E8Ol|pb/̠o_xao?>*o,- ּ#KQLKk庴$!gh]v_E:u+隧+ uP#D>Qu%q(`To+^;_)gC<{y?x6ȧ}gLK8HUWu-1BSo^}=ʟ?ƍ q⟎oyi"j Z}:UhI`>U?e/w|QiZu,f[pFѮ bp~o/6 / |^c:E֑]_xs[I~B+N?YS߷{|Os#{ c@M%]F'ܖ*?vd'mj|eSC|_⿄>+š_4KCi;[E572d28Jg hoO6ZƑĆ{'ҎdծXa@b=8y+ *~/~xL5EiSť֡=%Ga8(i_|Inxf?^05隤ږ,m<7h/xOoHV% xYmHu"'Zm MRO1dvPJ3arIPŀ_S_x_3mş|_1\L|' )Ak_ÞwSoEn+JK)|$մg- M#.nk-8[i.%M;;ƫ~4~Wv:>Vz1Դ[}DkAn%־Ȥ90@n]?o_?ਾe?ŭ]7+xNWu[Xk}F$ Hf&NY3m?ş^)w_G,mdl.EżRڋ1_\kwn|e𦉤x~->W {]XiXLĬ'Bde?1?O/7_&@bF'$ |d~_<5|3о/xKVO<3 P+c8[+hYH}Hܪrƿt> fxoSuu뚑&6|s/\_~1ion xE#lu KNF6A<T }ڧ⦟qZ|-UHx]mŭ峙^nUIt-.M7Nnpܧ",C*1*G^//ſN;mY-laP̀Le- 0 |>8H<?O jMx/o4ZiXiHȠ pgl~+~?&|"şJ鮡8e.#@>PVpnQ~?9iz~s;'ğ6zߑ{mp.wءɓT Ur~۟o_xKw<,eFWu.Avym9"N^㟴w' QO~~u?qkZmNj;Vl^=SIQQf@p$g3w_^٫w]C/wzmy4+>i%H'u!g0@ n/ |kzιPS,K+xf[Y:4JֹeJ_:V6s͏f8fx=Ybr?k '-2~5j{WI-5(;w :+R1Xr>Lj/<)GR4=S׶P4iZt߰E]M *DZT_Vo?>/|3S1æYunT@ZC jgc9ž4_ {.]%,hŤ0@k卥J[AfOLqR|;|? ^_1^Ww=lIJ#;]O3 /|xŞ<+MGNGwMq%fY@m̹P2 >?~j_ašAS¶q[]:v:)fM'Ob<O _<83]AxBh^S{g?$95T K7~ٿj Ouu ' { Cwg"^YHfo͕Oş~ӟo>tKY=Ӊ, Ej$`^O_,cUm{෌& : XdW+qk&I]q8~-?|A~x.ks|Ia  AXͪ` _.> ~o(moxBž_5k:Αit.q(YCTU\PL CH|+o>c[w{w5aYZB7 1!.> u?_kSKȑlRmXo$J6|~_Oe mw#ƚ5ze忌l5f+ qbKAcRZ֝.:n6s?RFHW-\$W~-~qFI<|-ú~y0w)gsYPoY"tT}/1}'/? uummgk뛸oAudf< 3;Pɇ>%O$g_ƿ Gf=S[ѮmTK-DwgO]"7m|H?xC­{TRԿM?DOo3E漯4qB@'?_k|_cqx+_ YFiL/ _ú_MC1Ot]֖r+hVxzn*foC~"NkkmFKȳxd(( ( ( ( ( ( ( ( ( ( (k/(V|0Sk{Ǟ25-3Q 5Ċ3P]+@N_+?Sho|[?O>:g3{-u;B)${I+)j2'lW/^ ƿ%a{yu[gKKAy5hX\yUw]4XC)$# gԕ-'d_,G]><e !B_L#Xv~rkߴu#ׅ> xMcxj6ڕ[ kz䭭z! M&6o ~?|?ߍ_öka=,fh,[I,4x.7 P3UrxqSʿ^#}O~$;H auwkcyqm̙)m (>BqӼoo~-}'g<i7UZy)]E"H" ϕtl_$3&/ΩkWV=[ZHJ`N;@>WDg#x/>"eмW UOn藒X;/!i@S%$ v[Ƞ(4rV5f B; 9h CP?ki=׏^pżzm]c;XQ_+m> x {Ft{k]Y-?5aEҪ< Oj>4z?y5yqs&an`{Khb/Ȏ }E|A-~7Í#O~|'>/oMuk{oVC E$qzsx3g-O:GkҼ%wW$~dvWS(m,Ք5,$?ƺ>!D\ޟ5vcޯg+Qv# G|yoٗ׉<VC𧄬du;Aa H?TwcTPYT@̿۳ڟۏ/Ù5֚fY5ougnl GNU6E~_*VYxK>!C[[/m K;-ݭSH Ŵ2f0+<+?- x}zY[]+*ZD&(p@#8 *9o"xXY0 &N+οjګŸ cmkm/NӴ:s G<0U\9f*>u8c> |'~ojڅ樱ElmHՊa^A0~_ ' "~/C_oul[-ݱ_fHc|eMᏈ)?4KsŐ켅 Mbdhr"9>'%|0 |K[]woEu[I4^Nse-:Nq#SßEckY&+W7K YbhsX}E|>L%~ښVH o??j։g11"BY` d]H#B$| [4O%k'/5UudXՇP#J$J,~U- u_ <}ᯈf5QCk%)`]$nm`$b3}g s{wY2ӫ_dZ஛,7?)ỽJGў4 X tى${@eWW12emψ_Z ?>$To}[wvSY"P*n 2FꥨIo!xXY#0 !$( 㰩+oۛNf/E'uQy㳙M}|IkFIucO'zlcgP!C+ P4WǏ'?<}Mznx-@j lb2R.! j~5)7z~ x3E!,5=6Y"k{ۖHrF0Xs@Ex ?e|T wJ?jZ]0][Y %uL!w7;Max ?|S]@+5wp$V-i(dM}E|O*}oD=6Z> o ,t da#MջhC28;ޗ_i>;'_6w<}ውoKu ]WNl#bv$}-myZK0VN;%~6+: k"x__|>uika S[oʹ`Ӑr ?n)ǁ?Gu-g/kKsHu aH!y eNZ` sK&6K[Xr^Yvgwvfff$fu]|>.kT>׵oFUm^Ievp=q/OA?jhoRXO`Off*l g9Ao??g쏪EA zf,5#I^WJ학 cgMsHwo7`uBox 3FwNV}?΢=>' Z9O.m7Mӭ,!e}*ɺ| [Kn9@פw 掺o^%Ufާ-48S_\4Q^_ ~0|"#K߈_B>'Ԭ 4M;cbv4(UclE@E|b _Mޫ1o-۝?[5խûE[I!^!^&|Z(oυ<[|vI{z")-W}qun8e(RWʿo1xO'hephBe]Noo~ 6va,-Aly1 FHtPىcvn_ {'AWO_7L [{MFɜ=ƘɄV7D@`EQ^/~|jh(x}VAӥӠeI X%wHaIdh68 hf?4o^%|5~y"Ilhm-ac)}*y@>kYci-D*dyz_,o xn8S-+Í /74#bL+yI7$cDWab__C͟7x{xM. ZCt-P3q9cdUSV.Vo5mFC-ĭHU@ }V8^K,2 †;~_b x_eiekែ?_uMfAJK>թ]\0HbM"*$6#*{4׼';4oq஧⟇OZoji{Ljx w@ZSCٴq"V)wC_K1 F 2Hd$=|߁_K'umSĿ ASFXCe I= -cQdv | +jh:7|xc^=Ҵ+U "Ku k: [0xIU0AfI=\Gu{gIe`AE|}w|jixfQZ5?[xs\Сn\ۭBI/U;ɖ5~?|0-iRxA]υ/#5vW>,eƟqEdF`ī0`wPEp_+~ tѦ0\#P |,hgw%ıȕ#`w8V8+ j/\궗z~+VtI>}'ZkŸ7#n9hVKq[kdK\ܹa/28@>c_hw߅)>$>~um6x$]4A[9]cےW]7y|ٳ|!k}^Vѧm (5 ,Z_%ٸFK-{;?Ej3yXdnʂmq} Ooľڣm-2[Xhk,+n+e,6 kywFCbBF(+'{ 'Ÿ<q.!O Zi* .ݜ9hlRBdԿkG}kG,~|SԼ?ⅿpS~4!܌(( ( ( ( ( ( ( ( ( (  KjS<;]Ѿj!X4&-CJ6v%ݵwLpX E˟F*iٯ}KZ›=umXt仑%&MҤS,r5Ѽe  \ڛZτ5bk:}sXAiij.AD4]3  (+?_ Rm/|YxmKzo.>i^\YyfXcgLd_ _J_,aˢ~̺&uBԴxKm+Ff15Ϛy~yQ@~= /&ߴ_(_xB}XʹNY 710a$cv$_,t\_>Q·eGy\xZF3I G1h@&@u/㎳{࿉^7o~ .mIp1%ۄKßQᏅP>kWZN5 8tW])Ѻ(ۧޏS 59MrKu :rY ke{ q3\׌~]__|{Z`<~/`XmLIs:,ѣ{'>'B|t-hz^?9m.t..<0h*%7?ٿ|%Sh ZK~j:A%1yftIT[+Z~+>ÿ4_57 ?Z,<ē^,inZRD`3~Q@wo2~>|{WM|5h9|A1GĚnim_OW&r+7%RhZ̞Xj!(Z6QdE~l?ٟg=__ŏ|,:ψ4/C=ZX)Kf3ܺ#Z C kb]{j~4׭{-mB{A:>d'7P?\ٛƿ7gAx6[2PkS]m*2Fkl~7E>3PGs\G.%Oo/MWZ?/ ݍiY.\E8@$|ǟu/ڋ 3FWώ?? 6}^,dn/̐ʼyAeYb?N('Gk7Ofo" ]fZ5 7dmC,^Ҡ YWQ;Կ 4)𗇵 E k͒C$Tvt"!E~KYr "~jV"t19Њ2K eٗ:o?%tܲhm[jnĿ!loʡPPk _]O?.s[~Xx_}YhbmB+P1郁nHѲ_?c//֟,|G,3^nxZm $l"5 ~>&W^ мO躕+X|K `o'~џ*'oZ{OQ|֋RC-յke=弾e8dX#$kyyi]L7r:'gσ1|'C_>YA%hZEoo$ߜ@<p`ω_~%xះk:fafg͔1x/t7<3Om6-ӠҴ(ٙm@%QbI9$I?fg_$f?4_^5{k~uIHmDW"F/`gؿcm g Oxš!o`'Xo^X#-!u-gEb|J{\uSǶ}xMufJّ~5'4>!^|RuCoPßdkYRj6qcsݭ);Ōez@GR_%Ծ2j~:  ڝܗFM#;NkI Neϵ?~|J,W񏀵}.D2G{svC(V)_=zs_nQ@_&oy6h )^|jNj}+Rfijޭun+l\ٙ ~ȿY~|4:?ƛ+kk]ez%,_O(? >)?|d=d߈ |H~x3V4ivSum$fvWEtlGiE|mo+Ov_hOY07֯#Fg--exdBJ1^@7⇉%^?xz |Aiz>;heO")Ąk /m|3J ~~#4#YCLayTw{V_go4o/m/ĺ_CKEOM_[@ZE7 +|>?Em2H𥾛Ox۾=ޡjuXў*#T0ϟ-obK?m>&Ɵ.Z-̖{=6{hEܙ囝˻PXgC܇R0A@U6_͠|Iм9ǭM}i>ıiwO Skρ;a<][K/txOJ֦`Lb;"g<@7xӯ3Gu]?Bh&YXX[J0tZtL~?wc 9>&_sKVPмj"/+j@_+#5xπ||@~#|N׼9x/|5*x_ ks[Kue"tC<9TK&@8E| u!+~◲ioUI &df0#sFDmXI='Zy|Qߋn_D[qE&(;s uU(UDh(-lo(~*?Džix-3H<5ny2g Jϙ.;*(Ɵ?]se><=:k"~MJkqIkyfL!BPm1"C+!z7_B'>ux#:7$.trRK2*H OP_1W#_s>&?!uu(s4Zgx c*.rw(d(_<_t{o<+>y񗁴\i.-rAα\ Uyj u~*xt-/5_Vi#2YrO E~i5b|cONj~K-'`G# 4اb?P^9wY~i7|1OOIe"ݻT5L[4*(e2⸼u 7Y,!--+), @xgX jQE~|~_gGB㟈_ m|<֮<'M^Q{خ$Vdհۉhj~?jo M|?2OjViz:D-".ZM0V#>-(i%>W~y|n\B[By@VFd%"w12?ύQ0uèqm[_XE3Eb?4ωd+׉3j /OմOj7Z5 851[Dey77C_WxJ/kQ6p[ۘ)eܟ->\~@8JO-П~,[E/[O/jY\X^e\$Рe G |/t]C·>(= t:svw$Es$pGe`>Ģ ?b};P4)[⟆^5y#Zuϛ%` @ c )6M_W _j~*j [tϋa!i41;Y {VYoHox*|go1^[E|3#Z0E}E|#xs2kᇈTE{Xh$2bUJw~-?׿ ?`}&xmkQWdyhL+4h# io^&|-V{W"ψ=b}[w:}}J[_"4 o(*TQ'k O63xA۟m\^o5Ėb8DqQX?Dh_3_// !\|wo>*_ nt=b9⻃Q}FvH^PHV-ox_R_⦯/ڇjk}RT\ZEkVpca pl?:?a'Y`KOÏ~#YxKR|CgqhVk oo5 q?m|+šA<=?>x'VxkX־$7-p#jdU;f5PEPEPEPEPEPEPEPEPEPEP^@w GK@֬N6+)vNˆcn1>_ong{ߵgtKP]FKjl/H2ȯ%x@GUJ H/Bu<*`fOnV( ˨; o_puQ{qkGou=?qYBFddʧßgqN$/U/ -46S](,|z/ ~?V;?G|?९M?h:7n[[Owh2D%Q<   _Y~ŞGLx⟌!]]ixQ4Y+oLR$Yyw=3ߌ{4/멭MƦc]ȓqߵX)_1K~_U/ %IoXQV}c&-4O*DYPrEQ?~.>`i~|A5)|w'R>[;iȻ 89%wh?W 㯇vɯj|9/f'^V2@|6@:짤|c?5 _:!.α4zs٬fX ®[v ~ki?u~<4mWZal|B:i  ~Ҿ0p ~ h>W6t> ohFx^TF0?H~B<^oz~ek|! xj]oO[[V%k4hgr^5+k__GIn|ǣi2%ن1yQ+LFUk~ڧ,Skzg/$M{+;+sq; G: k'ֿm8iTfOyov2KpgELj\|?*:?j?YZ ɣ̎UA$u>3J|ig6 ڞ\j6󁽖%?0^8lA?Kl?z,a ~Ě{}0$.eTuŸj߁T_.Mxn' ]cX9F'Iڀw7G7?75O⅔<=OY KV/kskT6s+t,uQakDxO}MKxF!^k;U B1RH ~B[e>w Xx[Aegn4k+UE>+_>g 5 *ZҮ6,9Gu;X3ο gSOM};Uߌm6U|BIEPe!L}_??p7ex7F<%-R+f'qǒ&5|h9Of|R~|$5Οbk ogk\aB0O@~Z~ʾ|Y[hwKuKrmml3q5̏-d?sS:U/|Ьv"]\H4dqI1BqN# v6/Op|LNO A{IzJoB&XpfV]>'u 5[ž!gi0ͫlR`,8yܪ!%pU(?H_ 'ſ^!Q]o-o/wqo(R&w)&~oS3;x |Vˢk  cyF &C< (goL2RS$pxZOo"!$C%^6Ef^^]N➑ைkR&kyeOBG+|qJ?j/C@>a7HY&Ek+4[OthmՈJ# |fQ? >i:[?>3#4o?Ov3扩xwZ/[;ic3*r:rQ -bk <#5n}~a E9Mv SڋBWóxpxSt'Ho էnbX\sJA 1_O|2_gm?ڴfi c<_ aw10yO ?iߊt{}F}9iu'e?d }JEvKy 9X"3ḚcI//7s4&{ZɨAhlT526#6?? FFrF}ơϦں\1Jqo-g? Qŭ>> 1& BcU\|!)qK?kE×RBV+aoHD_570|(H~|thz8vT-/uk*6"F ?k_~Zt/O~+hR_ꚿx|D琤Iw8,3+'Dya%՗[ *xwLҝ|Gm:F4Z#kck#]#<^n%TmM?]>,|}I#KkmF&ܲ x۪x;CN=]gK݇?2aM3@NCi=:E ,O<uBZa1eiTKHVa-~^e-7D&KnE:͆Sg~FTÞ>9>Ok6?-5!,9uK(dh!fV@P@> ¿^*nxa~4_M _@TGK@XIb6b%xc>(~A&>b'Oo121Ay/)O͟ yww^X^Ѯw ݗީПNh|F1Nzwu bH>JƒsNPofQf_߀Z5MV6?`N~9oBU1jRiOm |>xX躽m[RE$l˸1sp|PxpxozO]ߎu$xlY$kչ2m* S> 7?_}'ۿ I⿱k#[(6+,3W&@e$2_-Q~?xß%P.oLߊ.jzL@\gbȒ!;~Rsk?>| CZ?u /{mj\!!r9>iBegŸDɦOkG3F$ }VV$0q‚Ò3!W-ǖVt-SZ.JM)r왒5D&Ld)!g;S'7s\mmɴ{uM.(I`i :~ֺW7k(3\xcJKck=Bһ}Ow Go~? 6}[w΁qcgh 22`+.ɄLQPA_snBS੾(k4Ѵo +xsѥ$<׏'*?7?P>*^^i6&oGN_h>\zte'^a?lO|#w|O&-B`1TObO"BJ* LۃNCxSLk~+/~$ u_]L3nhc,̨3_|Z7m~j]MYӤt[ʱ7VY#gF88JBźg5? 𯋼wMx([c,O?5({/)gKkO^״ zĖX"%7p"(F.2d*rs~W|fm#, O 5~ hZqWG/=sQ4i"9 n5goػ|6x |O=小Te5rV<ǏkqH|oW fq؝'C( `T o]kL${|/]ږm.bZIJ.vU"7؟ )>|cN/qkxKy&s!Auk,XD*<0HRG5|~:&1]Yxfh\5kZ+JUxՋy>3كEyRʚVM$ E3wpFG5'?k?iO :߁4{4Q0ـu];3Y[;n-o^񏋖]ú_jW[$PǾ0蛤EYO(>!ƩX\4<Oev$(@Q#??c㇎Q_u%wHm<0fۖ NW;~c*<7gj-Z~⿷flU}M+i]󪒅'N??Ej^ ֛旭NB6\:/-WH0O5O_~8|LZo-^׆9JH-|w%d+$,-4e"7;#;}@\Vo ;uHj+xm>,Iך^MiL[XGk_Q?>|H޻y ]mt?6{>}pCiZMK|t|^^.v$3coL$WCFW- x|փ{爇7x@mݸm/r\N̎R6ϟ/UUo?;!5Rh45+cn$$^QXB #4/n&o:5LӮ⹼ӯf˷%bᔪds@$W_6Ѽ Oo}_’sg`W0l-)̎ }"įV1|&;e='6n UL[p0weoT(/_|%5|,m\48KSs""(/$gweU[_2:_xٮ%I]4K̉ DpFvR@|Co  W 燼Y5冕}-VͶ4a`۷G ~ußſA#w~:{C% )Gc:E<1_|v"[sz.K);c'٥,PeHXm(yR@` [<v&Jֵ/?k^}] 'XSs&c?Oۿ>.IB ѿ#ѼUI\f-]Q7 "w]oLEI4RC್Ro"J{?(W_]5ω*׼*4M%<l&KBs%YҪfT.}cd>?]2ᯊ6ZhF<^_qtL*FF+ǿc?]+ںH$dK5UMdE`& ʿi/-`DŽSxIhuw^۬% &3Fe3( ?K?i_ n?[⿋?o<1e寄POy&]J5|č$-H$GK\c]r/ G\s}D"k⟎OfV_>X6ԺxY>,iI+)ʿQ_mBu=?z;Ailw˛x#Xdpe` A޼;x#y[O xx_4P7k!y_bF ?SV|=EqcjMʟ _X~eOZi^2:WMZYHʲ¦$wY%J/<1'_~őgt]ܢ-IdF*@(ɯ|71j34S[\ DKVO=n">4*%~'>?C,MhOE.oǯ /žit GMb[;YZ fd#o_5xΚej~4IMm-!P ~\ 2ew࿈^ a\/ _ǭLhZo$. GwUQ1n437~z)|@/wg.OXZY5J\ۗids<c~_ovWhHEf K$h&L6? ~_ 9"SeRjͥ?e!RCF^\5c~3M|k뗖E5}+UadU1ʻ%B|Z{~뫋h774H3;YI$I&$~^ lӮ㹊;lhYG"2U /-mgC׺Tŭ]WRK"Ug,۰#EcČ8q|~ ׇM,Mͣ^hq}k:G FPK+sŸfßahZS4̨ 8?n~ޟ?c RU$ɦTIͦsp ?~,jȗ~67W l!#D䫏)]Z55'\G>ZZV\LId}O`T$;(Y @ O>5hwa~0^6z3 %bDkv&?Dxz+> }ŜbW* X!kZO[ǟ&ƿxMOk=*rٺn&ap\ˌB$2ߎc|) ?oc׃%7tW?:-Ɖ]q$R/7hvIQՙ[5ߴgşIzk֭Sźl͋w_F%))"n*W~~8M엮_ [I;K=&cšI(POjN~ӟg{=> X<#O {?ule!(Xs@rx iM>+A;mg~<7WGm旧4dp&YVP#,IWōWvZ:}h8\q3yFf/"*x<k[N֩7702%ș܈ nǏ|P9F/ zaX\_+$l[49EPEPEPEPEPEPEPEPEPEPL#i,m]Cߡο~6ܿ|~:GydCXyM3N7p%let!Yea"G|_ߋ>ᆵ{booCϛ&z/+Ws ?ߍ oƢݿ-Te!ǖ-2>n#rik/?o>_OxEOnӮHj0 V XԒ26e5!/?dԝdIaX[KAX0V >,`')^:11'o|. |DcCx?ׅMk&EI-mܫ9 4cF|_6uw>(@kb{%ӥy(hfm7 }ExOি)ZVm{yŬEnRfrsTc; jhP_ #|GѾ%R$v<_P,,7\NZ)@0|;N=_4ψ~ ּ?:w-䵾67RH.< Fxތv"/Wïi>.kz:vcm ;xPGQQQU@ў-ѼAwRXdҮ#P OUU FxĶV?’_^^]oek[ K;eQ_9/~>/Bh/kMVgii&H!1$qPEH׾:?+Mn Xԅ7wy$sІc(뒁#"EE€R@ 4(B@Jm:1\A29:He<_^)l_cOşXm巚;9DsLȯ>.~>tu;FMy|#PҼV+J @Ab2(8lHB""TQK 3YxN;ŨmcѭVVwڕ4Kj<,;~( :r(T@w |M jHɥ*[-Ȧ;VF2޻A2]q̡ F⠒z${ ~7h=Ѽ @,þP_cek)w;e<$m#nm$^P|Pt|D5+ַB0 ܖݤ 8\Z%}N>?s gڣ[i'msk1YIw_%K}j9ݶ HO_'Ļo'/Oqkcm SRw!.Hv?3{[p46^F =i_Um__KZQ3H#{)7"ndK+{ kE/'vȳLm#+`˃)N.Zk1$zŭqȲ+ʰpA{U󏍟_X>2Iѵ}J[]4OqmYiZ$$n.$WQ⯆~8|?Yw_T2Tr*eexGupS.JU}VYNH hKoml̻ckюZt]G:Pv֤o//ycxgnt}6YqOkz9 G&@PͬW#har\x^E7& FG|ㆌm~ h-#^$v>Gek{}͞!#6fH< 0z)7x -c\F>%ƭWo zvq(^ L༓\[HV_.ܗv\(;}g#mP71Oׄ|?'kߌ!i eSTj>LjcGb$R1K7 y<x?O'3b,|HP7$̱#@"Q*K:tɬ#+ۧ~xK:4Cxj>{_-d3ƭ,28L aj( |1?[>d!humbg YwnFPa @@b$ qɯN|Y >|VW<[Dzn$򈔀FG2)e,2+[gun4ߌ8tmJk2qqabys*on0ٞ@ppUB=B0m arpk~1Hx{_Fᆕmiz&2O R_e76 iD>i_>'xN=`kwhu`J^e_3rq7m'Ɵi^i,o'XKm(,o?hOߴ>A|DV?.^5GM<H )lŔ0,ۏ}L46O/_¯mփaԊ ye'-m̫ž<ETǿhzon;xYWvumoqɞhV)L6zp$O#D) 8':]4&gYd>XqWOEGuk{sC Xzx4=Rژ$6PT1tǵ|-c k⿇X_ | Uh̏_bT&3[B Y cd% $qơQaTS`'|g;,x|WO NͭR&*2Cowƺu >RoQק]> -S$<2O*28';;_yl7Ɲz?]jBxR Q5Kp#RϺ,[H_~lY/Ě7<7[}GL[y<::`AV߉O'wό -'Hҭ份`5,#Ā$Ѐ1 OSM-|???|2rb0L-#@ w_|M<⿁<3bݯ-t^hO/)[-"W[hdb@ 䓎:a8H*Rko? Ɵ_s-xKq4-q9%RQFgE7 }@Q@d`+?Ş-Ҽo:iP=[ZD-$ $ @{Mdbڿ=jѿz-Yƾ5K 4X!(D2d7%t88[?7|R !xjQnX-F@;'ǔNv۳[pœ[Xdd1C9M{qԟZT;8Ye;=%xK 2Լj |MQd^M=6-BJ\ *.@^+>>5@¿hz޵[zڕ-g1QYw,r2Ezji{%^. `ʈNJ@$*:C }CwpoWV kfU38's{5W-,o..,mḻ *F ``2 ח/O>xƺnokz5S5ޖɳgq9TĚE>)kQ[˭> VkXėQ["ghya~܌{g_ K?K¶WiG 1\`W*q :gɥ>WzeҬ4k16c| Q|Jkd}3^|׿mmimo kƣ43#{(2(LA1I" Mninkv.cԮ kts>S )[mkB;H$*(QrxOd?!CF]w྽e .}:ymMo4l,mF2W}|^ *0kSe:h@/7>f.>+^_x?o xwM:ZCP]PX$>Ycόਿ 6xe߃h7M;Va5$0%4XD ld_~?~9_>/x'JxfKhv7zoEC4k˻*IۛOvO/ j^!5Ci1]̐1"gh0hԠid(䝷JȀ1#ǭKE|YWĽ7 G|x|+񦑣\iV\jlcY%U!!Ls#}T~˾8w>v&5umu C);Ο4>[|5Z{ikxG!"mU-t9m;Go=̏d#o\)2F5,IPI'*;o ]#e@#RוyZZgh:c%6b3En no2Hƈ6 8}.n 0͐; $g |'@CGǿ~ |c~|Ex1Fl6 ^hITJS9-/?;o߱kwyMoywJŕ&6+l3#FH_?7x0i7Z5]KJhZ v$33[[[2@5i-.O!7\nї*3@(((((((((+)P]i#W: tH\W5?b?{o⯍iAk~/X\MHI%@n"=:kż?ټ߹m;w{gTP'Ix> bkt?Z-P#)maoϹ;k{o?i$Nn,|#5ɺ|!dIHÒr\1нo 5_C~>Ȟ+ϠZ~ŏ*v00] @_i(%??GFXuo==-K{[۴24ƒ#UI*Sg?]mg|?gP]CbC;@fφ&u4KXUK"t8<2 0Z&o <kυ>м)UaiYۆ$XaQN$L_ٶMTiz^Y˻lF`̻i#q?+& a0P0˜q2W? ml9❶?_t{B4Utd&O1_EMO\Mk;O\3L=66dV# Yٺkj/s??o/,13|9nTx?-mhGo*>%XoekT#ki8p0; z Ucu#K7"B*zWL٦Gӭ?giujҖw Õ$n8k{^~ ~]Iuől2 F|ePN|V7߳'Pm. sOټ-IJHn.m^UZ_ <<||Cn cxGUhnx%atX]K4]׈/!oGTo< CJnHE* ڻ _ {{wl:o X"I3,e9<@GR:xw> ΍&Y.]09\S:?Zq!4{|o+iv;&u`7DB`jx+KWW"w5.=;֖w6[TD@ 1+?O [_>x~]{MF];V{cJB "3+F~V ǯj1,!i mZ_K^?Gƿ\yzſų޼WT6?_e=#՜xXiuW.=3n'k3$¯ط/[!ៃlMu}:tZ8aܤ(06# }MI/߉<1eiZm.,4OXsr8)osBO^/|kgKu[x~"(8H10` A޼ğ7xF |&ռ/$I#t-0=F&7@X D~>*ȼo4^!O .s$3v!]WpX AM[1$|E SS[]]Z 4І"/ j|6ϻqh0|J?y{/bm- 㣼"$_LG9,:S`oٟP'쟨i1x tm3MIV&}G7/p'WFsmĽ/\xڦ32fkc,89_|@> |-̷lm~ Y&n n3}EJ[ ;ho-/ط9=$' Eμ OQ=k&_,5;m>Ob`hAvyyTW궝 X4_usm;NKN+EwwJ`jylZ֎ V$ty-[ʋ$T`> kυ ~xc_,|Mw]fKScb#5< 1fe» 5/$?-l/luCq~ͮȪPcʺX5?6~=˷>zw27žd%ϖ-uτ߳瀾&< zjcCXgQ|7?1(Հb| }\Ư#пhOW:43V:3(*L@q4TQS7_xG^gk0}p1Yݺ њ3*eP*C/(u 9VZNiqpZ]iq6Cs{ggxG> RC0Ӵ-2> s*\e&O|_kmߎe/k59y?НOG> 0?HM3+Uk'zG+K[K`H4^8J+cRV_C}M$ xRu[VI[EwW%A5o}fԯf~^j7kVZLrm@lhS>o7`& i $t/x ִ߅!_#kNm%fo:\*Ac :5Mw›KL^–/6D/S6dEs;rhO^O*X|M27VF #uȩ?c[ wG-RwF$o4nd޾//Qsy:ybĨĕU I~ |<|s /4ܟiL͓q%snn9h 7G6{ngjٚzv5Owqsč*/t@z-iVk,ROנV!ᷮ0Anٯs| Wk3,{+e+4D]B@S?Y>υw:[G<'a.'&cBejd``@ |xV^7>w t]+hǴ62iLN|A \ă, Y_QC!oyk;7 -'׬c@kP17j3,3;M7i o J0x~_j:-ۯ\p[[o#BZb06V0~_hOYxo5R|5g]ƒ%Qe&mBh}+D[IfX~7vmV[cX5UF t_ aÏ&f[\7IՃ,H#K%RB̖窡?WkI)}r{&p$DiH[drf_?bt _|9. S(FX䌬+O(Z?f/}sPOkP3֗ZO72F?M|egж5Ӿ[ ?C4 )D82"D&&9 | ]x)?gxG\gG6jum?.^,=-)EȯܿO+/M⏁x?ē/h hVP@99V?~xW t_ZXܘbHRe<kǯ M|F"m>[";#Kx؀G4/w#|M[> uӸ+:C?@E^@֏σ~ɴ丙1%U.r[5[7/~@/hQ\-i"KDUe#pldaM~[NoZgďG7Mii3ꗢ9^8' g<$K :>?hߵW?GqZkV8s%shèe *mklu_q|:||>·k.Qh[&T U? 9xI~-^>"Ky*tD.B -3J'?i3*]\MĐ+矆?~!jݭ`V =nxHC3_x|b'~> 𯎴:]fxI,M2oP͆F㎵?|=|K>[.]2OigM#KXL;!f` 2I>ZuA2b:}g,\yq##nYA'~Ο o⋃w5Ė2\ +Lf;Oz|K\htfI]Tm3ad~[jiHt|'7 v|떽mRy7&sol*  >*#5B`񖋥kk ª&I;GF'YׇrX^j M 1\4 6Ng7Sw"Cpd;>lIp?M؟/z:|5]gHE6 hfkk. o<ɍ'ߞ!x>~7yVv ߄&LUe?cᗀ|jpk AۄEOs3zE~"`, tϞ,·OOFrCX]+MII$2H4aW`ē|7^/O-MO0DV[݉d:SHkѿk/؟Uÿ ~)|9}hV>dSW4G>y|RX/boxGŸ:|/mj>8HFI*@RNdU[Kρ%O%9:?\?wz@5g]ҿNWxӥ2H]zv( g]ӿgOR~_eT|sCΈo+kMX͞th%" c|=']WAe/1jb/)k6 I.ƷD6f(V~~,~4|Kރ|F'[X/mnOT{bk![aܳY$x<)aϟG\+U,m66/io`٤. X+o>:~h?>JOiߤ"BE8q BWGw| eeໟ τtۆDžv@4P)PȠ1f<DxC_!V)_ ߱mݮk>#kB@T"zGIv#%Iu|,C?~ / w.Vç[bRUQw1$ MA?hxc߄9O]:.i;*)rCc "?/?jj^%k1k6ڇneүKoUVmu y Pg# 'G ^C?|AcLmu:e9y o a_,D |& ^zO'9퍯k$MmoKrdq=Mz~S~ݷ* R['AtTcwzc6vYJc+fO ?.፷n^OSYyd` oɠg# 'G ^C?|AcLmu:e9y o ~%~ 1|exhfY2#aHO/A' Oqj&7[ĥ2iO|CѾ<\z|A#ԍĹg7=sCI @_K^8?} G7EoI]1[uO8d|^i3IJk5Z[-g$!BLDLd' ~5/~ȟeYw߶eyR)OHAppA?nk 4:+? |k[5J4{{;7 F*T*~ ~$G6G{= .dP V1)ݎs@R^A7 񌬱2nk`FOA}E~xCo 7%>0x"O#|$ څ5?|I.;_Lٺ M>|M/eXtVD>"# 3pMzφE? c0zMVVVhIbAF2p hj(((((((((( [^(wV%nK|qxDxC5MCwhS[%Ժ/fI]wBDLnMa+ӊҾ%xs]eރxDl"_E%ݼgy!V.w Ww◊|7A|W?v |9Z<rCh_KI,Lq4&P"ܩ'#Um1Fa~M߁?]S|I[~zLJ>`O>h!x64p+``pGAuB}К%Kg(c@8 :Pݺ猴 X[xUtR_Esr=ܟ܉X5__<;="P~2<776wO WtbpH#|~N_Y% K[?>Oo)N2Mqa7Ğo>j<oB{ut ;U d>&t O^Y?h''? x/# +]ii4*_`Qc; q{hׇ'խlV{])VcL WO!'4M"i>gcgIg_ZwnY) (=O>~gG>{n碆'qb|GA@xÿ|9/xW}jZ䖧FO"Ӟd . 87+?λ4?ľ/Wc>j-^k%0X>Lwn%4$(_<36|߀~ iͤSViU\KpmQ ;wf$4ß|YE~> GKKCHcvf Sºp"_o?b>$Ak67<5g%ԆIQfP[[+WbFYϮY[j7ݣJi1 ܹ qg|OcM_.5>}/IIY_@dE(]rM}oᏎ^w:/ tbInnWQޡP&@ƥzƷ.͛Ϥ-"GNO-fFu 0H$qQo=|(W_=o~֬_:X-;xnf33Gpp?Iy?ڻB𕭿4Ь&Y-,&DG"nQqK7cck_X]Cy#/&qsWZFz(iy__Ӎqk(?wPi|_}+Jբ[м.Ja>|\K#(iUHPߏ X$?D$:qZ=f 敼}' }kI 7f|:<777kBoo57{URbVq~+x[_it ZK4 B.+8X>6F K߉ܟu^K i] iGX1&?j?G|5OxOYxs_B~D|]+Pܖϳ| O6?f hnj?ghVc1xtm5D :H/%ˬqƥTI$h_t}i:HеƝyJp^6 0=GQ_ uo| 'o?$hۍ-iKI!)f5t<9;>*S*w'Y}eIm\I4?>)fA) 0 5cyFnSIDrw?m?w» C%B\o9hsu,"n N7 >8[P^%#N;>$|5ňfr&X0b\og_l|icB¾!̺'Nd"|B.5".!hvyV̪̳* 9.c'rt讅q;[~^&/xK ᆇ]f}A}n_\A@cPk&""ѴS;X o<7i~ݞg{hjRK!92й[8g(xGjZm7J[넴7I*F$*~xO~ucڮǯ }yC=Ox}[ɓj;[h8m vo<;q$Z.[I$6! pkK¾.|w[jgJR7)qo8RD%Xd ~g?t 3yo ٶy{mC7dc~б7mf׍~"a_س ưM._ Xi^[>R'HDhJ6cz__t 6i 9,&Xgـ|!=+ݳi1Y݉u8.DqIvl_>% ־7? (.36Iu"W.@rws\_Y@/'|+mdžOxrm*OM=v̂鍔$2q ,pbC:4sZtGwspoݯů+>al~ٞ%>I2i3EG;c2OgC%" a-ݣ-~h3ևe-HrTh sZGo-I}Ω/좹HODAv\>о Ms-kI-kye#H_4l@aO"?_)|s 7ij_ip\K}g9Й-Se2IIoCgO'k]44>^~ mNk;Zᝑ'UT,?G׼Wu~"Яu%sAveV. L>,x[7$/*\0p͕YD( gW?O{.Aqᜟwjwizo4 !}SQ> v|tO~ |;⯂vڝ*:S #Ux8RpFh훏(_+vO>)%ҷ(14ic- M_ d߆GOxNh΍+ 6VX$Z"X`5e@0|<握w0MB;eC3sOw?}_ǺΕiQm{wns$(ny̿ ?j_-?u}cO]|5kKYhwVO=[@tT3s2pUMߏ?3[goUgXiM"_yvq!e V;c(,2,H{t['mFvIRWGJ7o ׏Fm=Mu(n^h`iX/#]^ fe:=i>|&>x _~.^:=ZCwXmW,ɕ?M/q>im3 A$ҷZ;UUUFI ߷WQXI5 J]v I<=kׅm< =߉?YV [pv>_xß4-'a,wZfgrEe|2A/Y_Z6j~m4ۛHJLJ0- i#bx$Pv]ú5}2S.vIeTш/VcpWN#_f{6;E/ddg#5L@<75UNѭ[XAw ">8ݙpRĀ2jළe.=A<KפtM&+h"9I@͟T{Ipd^Rq Ga5ZF 9YO $x 7 Wψ?jG¯ o$VMcqkD~HR8k>thAq-1c[#]a-Y#Z$u]7E`[wrGB(NuO f^-.>i!֞eK٥(`4-"y?$IE|^Ưddw+ 6p @@fݫ#ï%״Su1}g13Do _K4i#2rڲ%RTq_g5~ϟ Yi~*xjJռQ5]\,E6"w  Z| Dž^%Yx>O}/$faIl(.+~i_'âx÷j]$251KV%!rFZlZ'<;y.$i |,!X2.v9+c 9|Fm<)X=8. 㿈~Lhd3nN|; s^|aQ'u_ j֖EVdh.\?Xbg'!tg 1 3z _SY?|'os˭{+5ں,gEm!1?Eտhng=B'R|AywND[yۤi-\`=(u}"{Zxmmmifg H,DžI=*j _c jV| &w&myBy,nRai ̪@>F &]?>=~aoo0o@I _mE%V_j'~>T20yQ\0푦i'~%%CI3xmO+6WvC |s7?oO~mx_ZKPFzu;&ų͑rK.EO |x_H<%Y̷PQk]byPC+3EPn7z?|?Cׯu5Iwp=R}h^ա_C%V4ƥuF`JIM~Eɿ R~,~:V?z'|i^@Y׬ou#ͷ{_[$hB$jmb 4/Kxxw=[P ľ#M3j ,gΕC@Le(:>!)Yҵ.VeK>;w*pI*H<x ot}Kú ]'Ԏ{%FM9qpO7fyUׂj? ·S$:i ss饉0 %Ů' Old:Z\VԢ[v-+s[!2EiO/!s'O|V=/>%4OQKKB'7`;U v- \]:{Y ~vg_Q$~#k/__5 x9;}VGݦkdX-DP"jT9+>al~ٞ%>I2i3EG;c2OgC%" a-ݣ-~x[xź5u]_[#M6@n14yJF\E)?&o#M:=?wA asWğ Ak-m 褹@4Jŕ n#eO_o/ڸjPxO4-d757yG?'oQ>-x4`l BU5bNUXRVE%ٿ|Lc4MrM:O*4Z pjO7j E+kDxs_E~xcjb[P/xƳxY4]:+H5 a#wo!Y:;޵+~;x6;},E$:|CllhWᐎ(r񯍵;OWҴEҴë4UoT1i6a0Gм@Iy\Hd0>{h ;?_| 0پ<].<3x+h5kO[FiZi#dl>y~1q/+VyR.. '_ >tQEQEQEQEQEQEQEQEQEQE_ i_xMmEy/4?jZR,lnY'?a+揊g>K<SmONRkNIf |o9Sg k q+ǿd4;XФWb=PF0Hse-0FKɘ+F ET?hk*= oןN-dTݵsP; io&NJlj? ~&_xM/Ff=LX.O(6=(f&o*i2/o4z\^Sow,wҡm>JqVe'ؿ)?g3]P[P񖵭GݹRRy2ء $ m,G/_>;>Wiij_+jl例*?0!s_APš\!{]<HKx/E՞MOkIđX ea\aof ;S~ ַ0ho}[W5vXo5{ hvr*yxxfCRGZ`A1_:7Z8~=7%sŨMuٸKD0hJ|c~̒ŞOkPx?ƷbS0֡ϴ%0X29J)+ _A7Ca/NI>#_hiWWqMy`^ Yx?,4=̷RQiYYرI?߷??_Lj.Z ? yM\kIkh8T"o;LO}:¯kڅŨ5'l;I.DOw ?sCm"լKmi|!0۸7[y2Oȓ!,ygzIxgQe`|+tSO k*pxe!A^)u{k"ÿK)Pm:̺վũF36k u6'OM%}vUDFybVYvơR%|;w5G'G⿃QhSߊ4ojk}}BYEٟ #Y9 $aQxdm vҴe߈5^"Ė[\L`BŘU,$_>?y_ g8mV_xkڧaMm@<Uh{?`O_|Ykvåtψ4_k:Ȟ\ r"$I$uxb2~ xv_)%|A>)խKu(+, ߗȬ"($|Bý?4߄$OY%MT$,Rbb4*-tIR_> 5WXok>ƬYC{fb/,s^^yCҿhxվŏo6smX2.D 4?h?W=cGG_E}!h+du`!VV0O=sᯈ/ڏ;_ӴVGV]SM-,Okr"\09(>|8_^ &wjf` d "z($⾌(+ƿkO|; +XwLV.4h#m]U N\-8]~G[?RIЬ#Ҭy0u_yP\S{!`P??CWඹk]oJY-- 18VM/e6x|WsQ4a^)5y?'܄H ׂ4mn Kl`[k=5qvAkZ//f/xzx@׵[,`k>xd<»0]l ogekw-cOo^ y?R0@5TP)GgW> ^Q9R I$K#4;;33I'c/O¹<OiZ9Y4O:LH*: $,X GYcֱ{V?4-.Z4 ^YG87 3OM@=KZi=M^?ygwGip$Xq{F Qe¨mg?O+9wk~>]kmAL9YNZE@KeN}+I_$gؼ=5t3 pL)x ̨bD ⾻>zǏ|{(Ɓ+7/S6V1zŬRY%[Ix V%w7c8%o>'s^yoxkźLJ5]ӧ.w1 $ U_&/gJo|E,cCy$EMز+ ,I>A jzƧ Ͷi-XIwu*ƅJK! BƊYHG_?h0|,ԧytY q2҄ ʨ(&׆uxtjۺI[c]7#;g3F"E%*Er=w)Ox{'KH"ѵ Vd[UZlaKT@%En||nB|GEm@67/E4f8Rx9>-įZE?~1;][$HH>w`UsxNxc_xqx 6Ʒ~ѓ¿,Ec?~Ξ0|G;j'ּE-CZBZΡ&i ysG5]ÚַQ,ר2d|M,PߤPBَ}ς#WzhO}u9Lf7-nBzGsT|[_|Aoi#ѼKhi&gsZF ğh ? 4P]3N !vs]7RI4YwcZ[Z|g9=h(-Ƽ,+_1#8i*~>exwhXѵj-fkM%kFw?8"eko:W|g'( yvY3:$_)[XSEmk3馸v}.IV5rKzͷlJ<`y5/$~'wÞ3#[u5Cij),X-_IW3ߌ~7 W!0$3K|mvP¤isP@<'ƿj׍%׉tM_M~x] m+eH[rە/O_<?hZ:E|?f~/A|>xO:Z~;m-u%^~YUKnݸ~OE%GØo--m,a(2pM о4=WAm{wgP֢5MIWb bѐnYu3Iu:Ě\![d,rFn $EE|o%7Ùu]6z‹9 zg5?Te%6e K;3|3;"^Vv ՅR\Y +~2_GoW]Y^mJbed7>TQ۸Q r< bK~>{Gi?j_OݽO|95;Vvvb&mA;?)[<ͼzM+1OƱ3}ݔ^7}i X\JdFDdHHݼO?_Umx~zλiV?jޅc(ondk0P3RF!? doxWH]s{SMNmeܱ_J鶨HQ({#~Rx#ƞ|j7-EuzUƿ H:\߻E{FVbBIS|4`EDok8-Yf]`q!(P=g? |%k6@Ryp$UH((((((((((/(=/8#5 .?{&YYsg,S 8 p9^U~3Ǟ7yυx}4CGw+4Re!Ph*I<_|)ȟn>$?Ot;-sUUWvqKcô)Dm*y,]ǯ7 =J> :X:4#]+Ek}8ކ iefX3vSi/G(EkuieMH"h-f%P~_~~?L_-u/|"փ·ֺ\"hIua)z??ς|_wĺF.tYtpoϐ#!=$}}k)|]_ǿ$ƶw6G44 cݢyq\O|%WSdˮxG=I6cK\,(qޮEa*,O~۶*|bXB]w_f~l[iJɱfVNbETuΟd|Hǿ,]*ͥ.HQʐG`"Xʳei+iDYҾ:񟂴_keoK|Wx!-[#VUJC`+?f~w=[ߤ\K^a|A> Z0~"}.mΥIכx3#>:zŸlXfoxQ9:܏g$}{#KX𵖻qZTj`ŲXIÅpp[bkceO)t/tVj kY\ۍjɱLf_>~~(}g_w.iq>k~}=< hJacX¦Ei=7⯉|:Vz\_ܵRܼwY`MG~ ޛ'oxB?I|njwi~ӴXAcwn'xxS`[{l((Qm\|@JV0| kIekc _X}E=p6R5[~L[?ڏ[S'=6Kɢ7Tl%hcl;q =̞`O.'/ O/ !ĽGLo5k]/R[{Ini$L y8U -w¯_FxG|M)|9B=?4{ǑnS AUm۟`k↣|>>Ϥ.w靤M(h ~8uƏͤϬ?e+@VUd~@}C T~xg±j3YGh6aKuq4HX@[_CeĶ;-? ΩSX :Bk4\}Ayc _J6q{O᎙ksve+;hPGh8UP9$|J~>uW 2< YOS䆚ռ] Ŝc~E_%_ ~|Ai ԞJQzSˈDbZ3_c#x#ƞwm{KfF$ <ſD V-s6ƛ C>55x|A<Mkkxn#82&<y>d4Oٛ¿ꟳ? &oֺ1tғ̑ebbXM}~?h}7^|K\լ/UW]6r@T'xC^y%F?ڃIhReMGMd״םg6ŧ vc8, ( o xF6OaGWSECjZG|p&iew/ \TLv'Y$`v' Ǡ$Pf~Ygw)x[KZ_ϧ&m@Z$2:Z .FxݙdsIO_ࡿ?w[/^xnvh۬dڧ_,$EePAX|o ohx!X;7ie$m4Q}P;\$۲_TPsv/ğw{{_K!cuv%-2 زMo iTj i.{PZ&eͪG7Tl%hb rH~߲x]íw1G>>nYIy?x`o$g~X$׬U}"]7I&#cYnX(Gf#$"({NWm4*+UfR. nV!τ| ~KDWK]"6(+"# G V/_7h7yxS<; t;j7Y$MJBBAlW {i ?s]xPȱwO&u2RPF69f3!aPw8|M㟆/|EgGk.LK ŻIH76??o?? hh4e4/$֨hjzhcev_"HR@!7,\AO sƟ~3k ݐ5ƍ.vIeh*mfb [kC7HvMZ"/."i\ɹNʨ+k)ƾ3xvtoas\]^O4$G`ܱJD"1wnh_|qk#?|Q Dc$٠71X|MmRn㏎?ů$-^"ҵCiå4KJLs+i2r7 67wkrM~o,>\6HG&HB;f37 N\7OTmVNkOZG,o!1ZL |Ib_LCs7iݿoMFҧ[-A#*<9$?^֏stN/ Y3xR̎wGR8cy 2߼+Ok oOƯGŸsx/QmwM]O?W.m4:K:JۥUߎ:cO|5ɻ<3G Oy&֊"x|q~?O/^,; }~)xZ}osk9Q$$ R8ЗwQߴo?W?όO!96]_—ֱGNC+YwmqofaVBmn|EC}|)hڮC^|$|A]"Wy4lH;Voᆙ%ίx;$}}!Ky5bqs47Ha!f2+,ۆx_Iwguxۏ_ޥOӦ9q*'(3Tccp~/SmW]E涰{7+$&?5a}rbb~isE6PIwssrM<)7^Cʗx,|>8|Eq:hZh-c$t˻T繳![0 g(Pe$?fO/M|㏃zŎAo>^M3Ae(S%mpc@f?^4#_Z|:Bi6NsNl *^@¯Y=x6P|[5y|km#֞DUAv.Y?[+*?x+|e%>%G9;ɖɊI+/S3~&3YwF/4ueQYcöb|dʂ>˯t/ٗᥦe߆,tK]2yRB*b%fvU5@g|5ocĿZ|;skiو, >RZ(йb͸Tg?v' ;R<{/mZҵ };Nlk; ֟[x Bx'K&HHS*ќcаl_ %|a jk⿌]udK;qo c&fmQ3E % / oO/s?ZxY, jڰ|6: hW|z?_ٗ _wtV{Z=I$|&EIwLѺch`66le_ؾoߋ_Fy6vvi"ib'@MS;  |7_o+"ިگũi"> [\XĒ@excP8?f/# ~o? j4AqYMF;wq$VNrIfsƾ /~~ό|Cj~8]|;ռXoUٵU=䅝.`II,Fe!X}%hS΍{Y^./sFFIt̯.1*?vr۹ xgω~2j]fկ!|)nMޝyee|ə|7#2o?)#ৄoo4O"[a޳L[eoEfb y'_r|!3M߇&>wx-55xc~u#I6y9k~"$⏇5 . &X'x.,YOs6A`A EZOKA_Z?~$4)|2ڦkkγ[]1ܜv` {ωR|_ZٝB_ h7ZF1SzOM`?;x?ͧz^-͜\.2ZkE#Ɗs!+ F[}B(緝 r"Ie<A _*~I#5%0|gÓm :BILAlV]nI1pc@1Ɵ O'߉cc["Ρa+9a,XAc $p,i !럷^?^e}?ű+4m[EEr)24$ 7J}K 1?Pa{WχsxNPrZ=6iPDdU?J /ǿ[6<64ttZ ]/n&+Sc/هO_Wu? _Z ]4{F6Agi9/K5⮣Qj^uIoeQYF / 8Tm*U#?Moߵόi|UV=;VhOaoI[Dc.! /x<+|w{߉9kI-u-'HLdwŭY-uo1P&T ' 8MOo'^5ơK]==ъR-e(T /Ko}ڟG<_g]I+ĺw-S“\^}CicrBP3)}ۇோ>6k⧈>=z5>u+;;BY쭴[xbyeY%PZc9xGGgo_9OZƣ|8Ӯ,SI/ o2[pƮ$x&o>'~75_geWKd෶D̒ E uC ƃu\j3Fͼ7GRTI{_h>:|+/oK eM"I?GWOw`ǎOc⼴ RDx1aO#Ҁ>|%ڦ'E{uM5'~]ibo hⵑb{igw _y08ƯxB>>=ñ:]:2Y.< J(QWh_|%|'vZхјgMIZHU*(ē )/OٯůKim'7 Tzipf 1:k,sOn*O.qOؙF3G&xڧC,|&|K)G/@ ;sEoˣVҴlxWB| CW;U?~9_o~x^~$E'k#p.V(Z˛uf4jO_'ϋo?ڮk|LXx\~'9糃þ0VkmS\5،O# &[@&oL~^𕷋|=A)~畗COkId2$0G x>9.?_OfXv{scþi^%4{+vΎH-Hϖ1:ßI?u#?~8i2Y"[aThhecvPQ5 '5' >i~=/O-oov襥XgTrX6cO # kuwH>'¯~z _Tխh z. h&3!FJ xj4?ķV"o׺υm5Qc츝^-倐9!oY>@j~+Kh x?HUΚ]%X%>tщUpĈ4 7Z k[~&?44|LHډ&NX4 ȪUU` ?d>k+yOvf|Gnc֪,>H0d˻o WrXE'ʼnn>YE/W6fŦi%ץ.^6<=pI?d'%YXiZ-lzF;* jgrM6,.HZw|g%L㮥sx}aWVtu'("(p?=<|]wEuIK+s$$x"wbF*2ᎉo>uk-gKnY76d.yc`+Y?> ßv,}OoƔ5 \+$zzC4*%+_ };ح?$xTD<6wש,[bx$pځӵp T~WxtNz6-#2)y8>D>.xEOmJXltvݼ9`yw?hyPx>Sͪnj6xIiæY^I` 2more~qi?jXxLw=k6N ٰhfSՆ )>8m4mgRZm΢VP146e4v"/&^*<9/O:BM^ڦ cAG*g 8#_2k9?6Z'5).[n-ܘDq1(q~?7`Yxt x_GU7Wlvf (/$̨gv` W%WawOR4͊M3FDA 1ھ]K+yj#?m9t%eKq)fwL= {~#M/ڞizºc.ij$Q#K;PT?jo/mk^ ~O99 ^N^"mMwP_~x/~ Vu> Vl/{$O&'AǽWsǗ%?CQ? B%ڂY_h79SVk.}cú|7{׺[;RjI)DXa)Id uQ_>.~6|qom>>4]m>nKX5c䵡crAvOgCfk;;㶳{xg =4縂{giovG$`e,{;ſOgA7+og7Y2ǬVwV)^ Q!+!1/ |~_>+NKh[MV)$5UW1Al(qkj(u*^5  ψe[mWĺdh QRv H: Q4#+G_o牵_Ǐam{Nӡޯuf*[lnU %߉6m YxQ^n&x"`D1HQϛ91/roڏK-Aƹ%KjgWp P~Z|WhZajVo2$O3JN]8rpǠ}[xQu9|w iR{]WAIheH@)_S| {D.(fNRIT Q3f,m`}}hw7cr[ ?x#9C߆^; T>1|@tnhm6v ^YR)cI/3 cۇÿ]|? )^ܨ2~W=E{=Q@yዽ/