diff --git a/flowplayer.admin.inc b/flowplayer.admin.inc index 8bd4613..b701729 100644 --- a/flowplayer.admin.inc +++ b/flowplayer.admin.inc @@ -10,6 +10,17 @@ */ function flowplayer_admin_settings() { $form = array(); + + $flowplayer_path = flowplayer_get_path(); + + $form['flowplayer_path'] = array( + '#type' => 'textfield', + '#title' => t('Flowplayer Library Path'), + '#default_value' => $flowplayer_path, + '#description' => t('The location where Flowplayer and plugins are installed. Relative paths are from the Drupal root directory.'), + '#after_build' => array('_flowplayer_admin_settings_check_plugin_path'), + ); + $form['flowplayer_key'] = array( '#type' => 'textfield', '#title' => t('License Key'), @@ -130,4 +141,22 @@ function flowplayer_admin_settings() { ); return system_settings_form($form); +} + +/** + * Checks if the directory in $form_element exists and contains a file named + * 'flowplayer.swf'. If validation fails, the form element is flagged + * with an error from within the file_check_directory function. + * + * @param $form_element + * The form element containing the name of the directory to check. + */ +function _flowplayer_admin_settings_check_plugin_path($form_element) { + $library_path = $form_element['#value']; + + if(!is_dir($library_path) || !_flowplayer_get_js_path() || !_flowplayer_get_swf_path()){ + form_set_error($form_element['#parents'][0], t('You need to download and set up flowplayer. For more information see README.txt.')); + } + + return $form_element; } \ No newline at end of file diff --git a/flowplayer.module b/flowplayer.module index 5bc1923..d19df5e 100644 --- a/flowplayer.module +++ b/flowplayer.module @@ -5,7 +5,13 @@ * Provides integration with FlowPlayer. */ +/* + * The default path to the FlowPlayer directory. + */ +define('FLOWPLAYER_PATH', 'sites/all/libraries/flowplayer'); + /** + * Implementation of hook_help(). * * The code provided in this function is a demonstration of how to use jcarousel_add(). @@ -88,15 +94,23 @@ function flowplayer_add($selector = NULL, $config = NULL) { static $flowplayer_added = FALSE; static $flowplayer_selectors = array(); + // Get path to flowplayer libraries. + $flowplayer_path = flowplayer_get_path(); + + if (!$flowplayer_path) { + watchdog('flowplayer', 'Flowplayer was not found. Please read the manual for mor instructions on how to set up flowplayer.', array(), WATCHDOG_ERROR); + return FALSE; + } + // Add Flowplayer to the page if it hasn't been added yet. if ($flowplayer_added === FALSE) { // Add the FlowPlayer JavaScript and CSS to the page. - drupal_add_js(drupal_get_path('module', 'flowplayer') . '/flowplayer/example/flowplayer.min.js'); + drupal_add_js(_flowplayer_get_js_path()); drupal_add_css(drupal_get_path('module', 'flowplayer') . '/flowplayer.css'); // Tell the JavaScript where flowplayer.swf is. $settings = array( - 'flowplayerSwf' => drupal_get_path('module', 'flowplayer') . '/flowplayer/flowplayer.swf', + 'flowplayerSwf' => _flowplayer_get_swf_path(), ); drupal_add_js($settings, 'setting'); $flowplayer_added = TRUE; @@ -240,3 +254,65 @@ function theme_flowplayer($variables) { // Return the markup. return "
"; } + +/** + * Return the path to the Flowplayer plugins. + */ +function flowplayer_get_path() { + static $library_path = NULL; + + // Try to locate the library path in any possible setup. + if ($library_path == NULL) { + // First check the default location. + $path = variable_get('flowplayer_path', FLOWPLAYER_PATH); + if (is_dir($path)) { + $library_path = $path; + } + // Ask the libraries module as a fallback. + elseif ($library_path == NULL && module_exists('libraries')) { + if ($path = libraries_get_path('flowplayer')) { + $library_path = $path; + variable_set('flowplayer_path', $library_path); + } + } + // If no path is found suggest the default one. + elseif ($library_path == NULL) { + $library_path = FLOWPLAYER_PATH; + } + } + + return $library_path; +} + +/** + * Get the path to the flowplayer-X.X.X-min.js file + * + * @return + */ +function _flowplayer_get_js_path(){ + $library_path = flowplayer_get_path(); + $files = glob($library_path."/example/flowplayer-*.min.js"); + return isset($files[0])?$files[0]:false; +} + +/** + * Get the path to the flowplayer-X.X.X.swf file + * + * @return + */ +function _flowplayer_get_swf_path(){ + $library_path = flowplayer_get_path(); + $files = glob($library_path."/flowplayer-*.swf"); + return isset($files[0])?$files[0]:false; +} + +/** + * Get the path to the flowplayer.controls-X.X.X.swf file + * + * @return + */ +function _flowplayer_get_controls_swf_path(){ + $library_path = flowplayer_get_path(); + $files = glob($library_path."/flowplayer.controls-*.swf"); + return isset($files[0])?$files[0]:false; +} \ No newline at end of file diff --git a/flowplayer/README.txt b/flowplayer/README.txt deleted file mode 100644 index 05950ca..0000000 --- a/flowplayer/README.txt +++ /dev/null @@ -1,255 +0,0 @@ -Version history: - -3.1.5 ------ -Fixes: -- The player went to a locked state when resuming playback after a period that was long enought to send the -netConnection to an invalid state. Now when resuming playback on an invalid connection the clip starts again from -the beginning. This is only when using RTMP connections and does not affect progressive download playback. -- Custom netConnect and netStream events did not pass the info object to JS listeners - -3.1.4 ------ -Fixes: -- player did not initialize if the controlbar plugin was disabled and if the play button overlay was disabled with play: null -- works properly without cachebusting on IE -- RSS playlist parsing now respects the isDefault attribute used in mRSS media group items -- Fixed passing of connection arguments - -3.1.3 ------ -- enhancements to RSS playlist parsing: Now skips all media:content that have unsupported types. Now the type attribute -of the media:content element is mandatory and has to be present in the RSS file -- Possibility to pass a RSS file name with playFeed("playlist.rss") and setPlaylist("playlist.rss") calls. -- changes to the ConnectionProvider and URLResolver APIs -- Now automatically uses a plugin that is called 'rtmp' for all clips that have the rtmp-protocol in their URLs. -- Added possibility to specify all clip properties in an RSS playlist - -Fixes: -- the result of URL resolvers in now cached, and the resolvers will not be used again when a clip is replayed -- some style properties like 'backgroundGradient' had no effect in config -- video goes tiny on Firefox: http://flowplayer.org/forum/8/23226 -- RSS playlists: The 'type' attribute value 'audio/mp3' in the media:content element caused an error. -- Dispatches onMetadata() if an URL resolver changes the clip URL (changes to a different file) -- error codes and error message were not properly passed to onEvent JS listeners - -3.1.2 ------ -- The domain of the logo url must the same domain from where the player SWF is loaded from. -- Fullscreen can be toggled by doublclick on the video area. -Fixes: -- Player was not initialized correctly when instream playlists were used and the provider used in the instream clips was defined in the common clip. -- A separator in the Context Menu made the callbacks in the following menu items out of order. Related forum post: http://flowplayer.org/forum/8/22541 -- the width and height settings of a logo were ignored if the logo was a sWF file -- volume control and mute/unmute were not working after an instream clip had been played -- now possible to use RTMP for mp3 files -- Issue 12: cuepointMultiplier was undefined in the clip object set to JS event listeners -- Issue 14: onBeforeStop was unnecessarily fired when calling setPlaylist() and the player was not playing, - additionally onStop was never fired even if onBeforeStop was -- fixed screen vertical placement problems that reappeared with 3.1.1 -- The rotating animation now has the same size and position as it has after initialized - -3.1.1 ------ -- External configuration files -- Instream playback -- Added toggleFullscreen() the API -- Possibility to specify controls configuration in clips -- Seek target position is now sent in the onBeforeSeek event -Fixes: -- The screen size was initially too small on Firefox (Mac) -- Did not persist a zero volume value: http://www.flowplayer.org/forum/8/18413 - -3.1.0 ------ -New features: -- clip's can have urlResolvers and connectionProviders -- Added new configuration options 'connectionCallbacks' and 'streamCallbacks'. Both accept an Array of event names as a value. - When these events get fired on the connection or stream object, corresponding Clip events will be fired by the player. - This can be used for example when firing custom events from RTMP server apps -- Added new clip event types: 'onConnectionEvent' and 'onStreamEvent' these get fired when the predefined events happen on the connection and stream objects. -- Added Security.allowDomain() to allow loaded plugins to script the player -- Added addClip(clip, index) to the API, index is optional -- Possibility to view videos without metadata, using clip.metaData: false -- Now the player's preloader uses the rotating animation instead of a percent text to indicate the progress - of loading the player SWF. You can disable the aninamtion by setting buffering: false -- calling close() now does not send the onStop event -- Clip's custom properties are now present in the root of the clip argument in all clip events that are sent to JS. - -Bug fixes: -- The preloader sometimes failed to initialize the player -- Allow seeking while in buffering state: http://flowplayer.org/forum/8/16505 -- Replay of a RTMP stream was failing after the connection had expired -- Security error when clicking on the screen if there is an image in the playlist loaded from a foreign domain -- loadPlugin() was not working -- now fullscreen works with Flash versions older than 9.0.115, in versions that do not support hardware scaling -- replaying a RTMP stream with an image in front of the stream in the playlist was not working (video stayed hidden). Happened - because the server does not send metadata if replaying the same stream. -- the scrubber is disabled if the clip is not seekable in the first frame: http://flowplayer.org/forum/8/16526 - By default if the clip has one of following extensions (the typical flash video extensions) it is seekable - in the first frame: 'f4b', 'f4p', 'f4v', 'flv'. Added new clip property seekableOnBegin that can be used to override the default. - -3.0.6 ------ -- added possibility to associate a linkUrl and linkWindow to the canvas -Fixes: -- fix for entering fullscreen for Flash versions that don't support the hardware scaled fullscreen-mode -- when showing images the duration tracking starts only after the image has been completely loaded: http://flowplayer.org/forum/2/15301 -- fix for verifying license keys for domains that have more than 4 labels in them -- if plugin loading failis because of a IO error, the plugin will be discarded and the player initialization continues: - -3.0.4 ------ -- The "play" pseudo-plugin now supports fadeIn(), fadeOut(), showPlugin(), hidePlugin() and - additionally you can configure it like this: - // make only the play button invisible (buffering animation is still used) - play: { display: 'none' } - // disable the play button and the buffering animation - play: null - // disable the buffering animation - buffering: null -- Added possibility to seek when in the buffering state: http://flowplayer.org/forum/3/13896 -- Added copyright notices and other GPL required entries to the user interface - -Fixes: -- clip urls were not resolved correctly if the HTML page URL had a query string starting with a question mark (http://flowplayer.org/forum/8/14016#post-14016) -- Fixed context menu for with IE (commercial version) -- a cuepoint at time zero was fired several times -- screen is now arranged correctly even when only bottom or top is defined for it in the configuration -- Fixed context menu for with IE (commercial version) -- a cuepoint at time zero was fired several times -- screen is now arranged correctly even when only bottom or top is defined for it in the configuration -- Now possible to call play() in an onError handler: http://flowplayer.org/forum/8/12939 -- Does not throw an error if the player cannot persist the volume on the client computer: http://flowplayer.org/forum/8/13286#post-13495 -- Triggering fullscreen does not pause the player in IE -- The play button overlay no longer has a gap between it's pieces when a label is used: http://flowplayer.org/forum/8/14250 -- clip.update() JS call now resets the duration -- a label configured for the play button overlay did not work in the commercial version - -3.0.3 ------ -- fixed cuepoint firing: Does not skip cuepoints any more -- Plugins can now be loaded from a different domain to the flowplayer.swf -- Specifying a clip to play by just using the 'clip' node in the configuration was not working, a playlist definition was required. This is now fixed. -- Fixed: A playlist with different providers caused the onMetadata event to fire events with metadata from the previous clip in the playlist. Occurred when moving in the playlist with next() and prev() -- the opacity setting now works with the logo -- fadeOut() call to the "screen" plugin was sending the listenerId and pluginName arguments in wrong order -- stop(), pause(), resume(), close() no longer return the flowplayer object to JS -- changing the size of the screen in a onFullscreen listener now always works, there was a bug that caused this to fail occasionally -- fixed using arbitrary SWFs as plugins -- the API method setPlaylist() no longer starts playing if autoPlay: true, neither it starts buffering if autoBuffering: true -- the API method play() now accepts an array of clip objects as an argument, the playlist is replaced with the specified clips and playback starts from the 1st clip - -3.0.2 ------ -- setting play: null now works again -- pressing the play again button overlay does not open a linkUrl associated with a clip -- now displays a live feed even when the RTMP server does not send any metadata and the onStart method is not therefore dispatched -- added onMetaData clip event -- fixed 'orig' scaling: the player went to 'fit' scaling after coming back from fullscreen. This is now fixed and the original dimensions are preserved in non-fullscreen mode. -- cuepoint times are now given in milliseconds, the firing precision is 100 ms. All cuepoint times are rounded to the nearest 100 ms value (for example 1120 rounds to 1100) -- backgroundGradient was drawn over the background image in the canvas and in the content and controlbar plugins. Now it's drawn below the image. -- added cuepointMultiplier property to clips. This can be used to multiply the time values read from cuepoint metadata embedded into video files. -- the player's framerate was increased to 24 FPS, makes all animations smoother - -3.0.1 ------ -- Fixed negative cuepoints from common clip. Now these are properly propagated to the clips in playlist. -- buffering animation is now the same size as the play button overlay -- commercial version now supports license keys that allows the use of subdomains -- error messages are now automatically hidden after a 4 second delay. They are also hidden when a new clips - starts playing (when onBeforeBegin is fired) -- added possibility to disable the buffering animation like so: buffering: false -- pressing the play button overlay does not open a linkUrl associated with a clip -- license key verification failed if a port number was used in the URL (like in this url: http://mydomain.com:8080/video.html) -- added audio support, clip has a new "image" property -- workaround for missing "NetStream.Play.Start" notfication that was happending with Red5. Because of this issue the video was not shown. -- commercial version has the possibility to change the zIndex of the logo - -3.0.0 ------ -- Removed security errors that happened when loading images from foreign domains (domains other than the domain of the core SWF). - Using a backgroundImage on canvas, in the content plugin, and for the controls is also possible to be loaded - from a foreign domain - BUT backgroundRepeat cannot be used for foreign images. -- Now allows the embedding HTML to script the player even if the player is loaded from another domain. -- Added a 'live' property to Clips, used for live streams. -- A player embedded to a foreign domain now loads images, css files and other resources from the domain where the palyer SWF was loaded from. This is to generate shorter embed-codes. -- Added linkUrl and linkWindow properties to the logo, in commercial version you can set these to point to a linked page. The linked page gets opened - when the logo is clicked. Possible values for linkWindow: - * "_self" specifies the current frame in the current window. - * "_blank" specifies a new window. - * "_parent" specifies the parent of the current frame. - * "_top" specifies the top-level frame in the current window. -- Added linkUrl and linkWindow properties to clips. The linked page is opened when the video are is clicked and the corresponding clip has a linkUrl specified. -- Made the play button overlay and the "Play again" button slightly bigger. - -RC4 ---- -- Now shows a "Play again" button at the end of the video/playlist -- Commercial version shows a Flowplayer logo if invalidKey was supplied, but the otherwise the player works -- setting play: null in configuration will disable the play button overlay -- setting opacity for "play" also sets it for the buffering animation -- Fixed firing of cuepoints too early. Cuepoint firing is now based on stream time and does not rely on timers -- added onXMPData event listener -- Should not stop playback too early before the clip is really completed -- The START event is now delayed so that the metadata is available when the event is fired, METADATA event was removed, - new event BEGIN that is dispatched when the playback has been successfully started. Metadata is not normally - available when BEGIN is fired. - -RC3 ---- -- stopBuffering() now dispatches the onStop event first if the player is playing/paused/buffering at the time of calling it -- fixed detection of images based on file extensions -- fixed some issues with having images in the playlist -- made it possible to autoBuffer next video while showing an image (image without a duration) - -RC2 ---- -- fixed: setting the screen height in configuration did not have any effect - -RC1 ------ -- better error message if plugin loading fails, shows the URL used -- validates our redesigned multidomain license key correctly -- fix to prevent the play button going visible when the onBufferEmpty event occurs -- the commercial swf now correctly loads the controls using version information -- fixed: the play button overlay became invisible with long fadeOutSpeeds - -beta6 ------ -- removed the onFirstFramePause event -- playing a clip for the second time caused a doubled sound -- pausing on first frame did not work on some FLV files - -beta5 ------ -- logo only uses percentage scaling if it's a SWF file (there is ".swf" in it's url) -- context menu now correctly builds up from string entries in configuration --always closes the previous connection before starting a new clip - -beta4 ------ -- now it's possible to load a plugin into the panel without specifying any position/dimensions - information, the plugin is placed to left: "50%", top: "50%" and using the plugin DisplayObject's width & height -- The Flowplayer API was not fully initialized when onLoad was invoked on Flash plugins - -beta3 ------ -- tweaking logo placement -- "play" did not show up after repeated pause/resume -- player now loads the latest controls SWF version, right now the latest SWF is called 'flowplayer.controls-3.0.0-beta2.swf' - -beta2 ------ -- fixed support for RTMP stream groups -- changed to loop through available fonts in order to find a suitable font also in IE -- Preloader was broken on IE: When the player SWf was in browser's cache it did not initialize properly -- Context menu now correctly handles menu items that are configured by their string labels only (not using json objects) -- fixed custom logo positioning (was moved to the left edge of screen in fullscreen) -- "play" now always follows the position and size of the screen -- video was stretched below the controls in fullscreen when autoHide: 'never' -- logo now takes 6.5% of the screen height, width is scaled so that the aspect ratio is preserved - -beta1 ------ -- First public beta release diff --git a/flowplayer/example/flowplayer.min.js b/flowplayer/example/flowplayer.min.js deleted file mode 100644 index e8fa742..0000000 --- a/flowplayer/example/flowplayer.min.js +++ /dev/null @@ -1,24 +0,0 @@ -/* - * flowplayer.js 3.1.4. The Flowplayer API - * - * Copyright 2009 Flowplayer Oy - * - * This file is part of Flowplayer. - * - * Flowplayer is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Flowplayer is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Flowplayer. If not, seeClick here to download latest version
":"Download latest version from here
");if(m.tagName=="A"){m.onclick=function(){location.href="http://www.adobe.com/go/getflashplayer"}}}}}if(!o&&p.onFail){var n=p.onFail.call(this);if(typeof n=="string"){m.innerHTML=n}}if(document.all){window[p.id]=document.getElementById(p.id)}}window.flashembed=function(l,m,k){if(typeof l=="string"){var n=document.getElementById(l);if(n){l=n}else{c(function(){flashembed(l,m,k)});return}}if(!l){return}if(typeof m=="string"){m={src:m}}var o=f({},i);f(o,m);return new d(l,o,k)};f(window.flashembed,{getVersion:function(){var m=[0,0];if(navigator.plugins&&typeof navigator.plugins["Shockwave Flash"]=="object"){var l=navigator.plugins["Shockwave Flash"].description;if(typeof l!="undefined"){l=l.replace(/^.*\s+(\S+\s+\S+$)/,"$1");var n=parseInt(l.replace(/^(.*)\..*$/,"$1"),10);var r=/r/.test(l)?parseInt(l.replace(/^.*r(.*)$/,"$1"),10):0;m=[n,r]}}else{if(window.ActiveXObject){try{var p=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(q){try{p=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");m=[6,0];p.AllowScriptAccess="always"}catch(k){if(m[0]==6){return m}}try{p=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(o){}}if(typeof p=="object"){l=p.GetVariable("$version");if(typeof l!="undefined"){l=l.replace(/^\S+\s+(.*)$/,"$1").split(",");m=[parseInt(l[0],10),parseInt(l[2],10)]}}}}return m},isSupported:function(k){var m=flashembed.getVersion();var l=(m[0]>k[0])||(m[0]==k[0]&&m[1]>=k[1]);return l},domReady:c,asString:g,getHTML:a});if(e){jQuery.fn.flashembed=function(l,k){var m=null;this.each(function(){m=flashembed(this,l,k)});return l.api===false?this:m}}})(); \ No newline at end of file diff --git a/flowplayer/example/index.html b/flowplayer/example/index.html deleted file mode 100644 index fcd5ad3..0000000 --- a/flowplayer/example/index.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - -View commented source code to get familiar with Flowplayer installation.
- - - - - - - - - - - - -- If you are running these examples locally and not on some webserver you must edit your - - Flash security settings. -
- -- Select "Edit locations" > "Add location" > "Browse for files" and select - flowplayer-x.x.x.swf you just downloaded. -
- - -- See this identical page on Flowplayer website -
- -+s+y3Zq?F7u-x;fzvRWnyNhZ|C(Zr;FQeS2u&AFw )TO0kc&i? z{*1Q#iJNBP#5%)HeGv0u-iqRhu5ZgIEH2BCUL$BN5+c4xh#z{+1~G-l1fxPLDeO?4 zEi!^p`g1>P@wV+V?bDO;;9p0gnp;k&<}UxuD?oDhF=eTfW_R0;g%uCnUEC)^)Wr!% zpILQ{T{qu+Gw=idruHqBrtY9#8|g(!Z`2K?MxpEz(kRuG4@t%o)=sGVyhPk1R;ViL z<^bmZ=xn8Tkmj(b`2lGTx|%cQ0aYy>nR5o6bjp^=V5ZFros`h*X8i?X{hGFT{kf`} z_gp^Cct?*hA42Ftj~MY$KU+AI@-uaF9M|>dxZFi29pf6pxGtO;U!<{8PxjN5(oGY( zQp_=&_0WOraWQ%szztm 1>W7&}Eiip)>GK4sNQ+jO~B(O^UM z)beE_ljHJHer%EcS95&I<0mWQIK2wq^eFu)G0@iti&A&(#Hb%{yT)+fWH@+AdFa&m z`l<1-4BkQ9o~|!XLw?G;YDe&@l~KI?Bf4tgG4$rUQ9Ra858l`P89Daa|1035gZ&TW G3lfxWmz(bZ diff --git a/flowplayer/flowplayer.captions.swf b/flowplayer/flowplayer.captions.swf deleted file mode 100644 index dba09e9bfa2ad3927696666ca08e714ed9da2a0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7222 zcmV-69LeKDS5pdQF8}~|+KqY%cvIJv@I7zQ)q9dGdBJ$WAZ&rb$k-T2zyY%v0S+Lr z&6Z&7C+W#jB1^8`6E;Z~NFSU+{hRLl%(T;_%dG8mWP1WlXQq?3(@v)C zOlLanblPd^Ip;pf#uS?0ANRd`&pG#;bI*F8J|>y+ea0%DW^4tp-pYE$*z2ml0gP?S zCz9R$y^-MLSSD+A<7#_r%C^V5J31yNCe}}ET%XI2c5K+Xb!$gwS4US@J5sb;=d!jj z*`BppT6+Y8Uek)_)8lqJmkrX|h~*0Q_SV)C*F=1t>3AWZ5iAq&4l`qpnOWQF*sy*B zGD^g|lezquVfPs0 3sW#)Sd z*}Jp32}i^NlxX64)39@kDatUyXN>GS+GqWF|K; zo-xju`Qf-BSXsk+oC$ljhP5+>q%4^?#>@>Yz}7R@OPoFb%=6MS&p)GH{`zk@W1p9p zayFMv)F8k03;foP tKAjzPMPqlFal8JyJ@H)D&gU{2Ghfkf zTDd|#ZXV1T2{W(k$)v|uTu)uH&iZj9Z<%?^SF+L(vD9dbkn1{J7>k*Cbyq%boU5Qy z4cO;0=0M6cZGQ65!GmebcJH0E&3x9#EWL>kUSeLcD`wewBW@3j=hL=%Go89i3j)Ujg}P(9muBbw2?{QV n}^hU?6FMYgDB}S=`8`vDlbyyJP`vK4tvZ(JsHKql75k zDA+kCR(-=*)+Wjpah1$fruSZptQ@w|DA T~73s zjiC+n4?6I*uf%PhQW-Y#c~`t(_U9(#Om6i0I#jUJ8TnvtR1-Uq$kGP~PnI^fy^@#( zQpvWp!&oq_aU*WZwmqiBa*1;yDRE_a#165vJm>^5!xE+U4MY$Be+pY54O|m;gXhLg zYt1VZiFv}{O$kfM>K;y|?Om92KBpoloT}k+ijnSQ ^gREaA4`cfkQ_Q?j4Rq`w#6J96WG%-|&(C=#c>#!$G$4wsI8xrM$|X zv=#E4j5icz@Z`pQiaoh;RI_sfCRUbVzMuaU`D`H}m$n-RUg0h~SNSUH3Kh)aBHr zig<4PTxo0CwA@6F_XAsvW52LgmaZNP*N$BS8#}Po-_j8)q%)X&%{OS3-HV$-%_8S? zJHXIlV5#0aeGqGqZKShie#K%UQRb0t`mE^?HvR!7%dTzG-J mmyOwMVH)loXGO=Haz-qoWzq;i)>|Y9tbaxg$mv z`{dcQmB!Ah?m2j1&+P$3h_h2yH_@c3FbGVl6X}GVf^)Uh7_f$x&u0ab`P^7gNoSKe zg<`-HU&zWeH@%>AFTSAYcm(nyit;6KBV8x57IG HEDOl! G>Lu6ZO<6ET^%S??y_>9?R$` z8tXnnESK%{ @m2Dm4 zJ+hficr4Q{3tl2zE{yL)M38F4ii3-NA9U0SI=RywJiU-|Wt25;#?#5Pa3`M3T1Y!H zXaq~)R$_pOY1u|LZU*gK5WlzZik=7>R*97>mc#ZjCU5Cn<-e{n_!eberxQU6hM@E9Nv~jwVosWI)xxh$ z6LjS+3}_j1!Cj7Zw~4(ffvMti614Xmo*^AqYzzxEhLtSqn|D0j9F*~bmExzfLVb=B z_8Re&mPB(nu|cyF!Xz36#;#0yG`r&WKi5Sk+0fZx+eUIj>rL>Tn;d)#r5oCA%`5O} z!2mb#E7XwjYepN*VYS9ZP^CLgP@$)iNS_VL_)t=&k>Dl1uAL&E@e~;BLBvvCV{oWD z>8n?vhij*>g|ahI$jdlje5pfCc{Q3h##6yH;}~S4Yt=Yqi@Y n7+ &ZkZX}K_6}2 zG4aWprFlX*WMH!t1p>m*4Hk?+>b6>_m1|wK?pjZ6pticUv2MA_>UOEj9jzO{*>RQC z-cff3XQMdMb$8)9Q#)QaxwIN--T*3F+UR}@G%Rm;02 $2ISd*JR6W>19EJb^nwI3aK8@j;L2vLCA4aF>zcJ~nio3UE1Nx? zZJNIVHt?qAt~R|g02^_(38ytpP`#Nq--6RxxD|m*wsf_DTU!pzTiq*{b+ 3k3$6qKX+AfsfzO&E-m3u%V8;(>p0YN_cAUwX)8brN?c#bp_%I~ zTncf071vgCy_IWgIIQK+#$g@T!`$7@VLjJ6xYo(_4P5WysHDD$yEk*Vg=@EReGAvO za_HvzZCu~RVLR7*xW0pHJ2~v;-aQ<8Iqc=$Foy{D?&GkZdk=7LANStQy$8AX5clrj z(8J*{_Z{KBqn!6^H8QUl }G!Rt7@9{BS6fW!U3t1bdxaS7*d#PKE^Z-z$n z!P{~6DDZWsI6Q{a)f^tj*E?}M0X+O}-18oszZb{*aXp3aCvjW`zVa#1J^+gLK|n4a z0PSgdKaIHm2U@ejSAG~to&nzeQG9<4!5_!@CvkiV*PjO7{8=2INB9?T{1J{n!SO}V zzC>*P6luPU<5{HnbI|?*Ve9`Iv~QreZxa4*K%2(-431eGS8#lrXkI`SH) 5X+;D12-7I2ivwIAa6 zHICol_%?73|4Z6&l*UmD-2YqLhpd`^2ih@YJdN8gO4=JGxAtZnZ^7{ZjxS;Ce-_*o z^nRP<_OXYhir?V+QORBLZG=5WuqPxG>qfC|6zfK@ZWQa*2>&qhxPtF@;rpAokGZw? zNN(QzeyP!2@dVD`vZM{kxL3oy8t&DQPHWUqvW8qV &F;UoC|D2|We__(CC>l{9T(@#o`9&JLugO&aOB>LUa82}1BRC>6W z1i+d2Wl=`$HRcAd7j)fugNMLg1nZI)|3KCmQxL!qf&`LJLjcf&H~>_XCw`m|O4r%K zUw|<9z}+~}uAKjYN20T0s!Oxp--=_Yc^X7bi8z Z1=u$A$VztGQDWPVMv>$J#s=9jVBN `l!Xu;gxL92(VrQ*lyHpSL}ecgdI@hE7|@8u{XueByk!AwlAe?OW8rz zQlr(es5{NrUF>dP{Tar_SQgmP9Elib%+Fr6k{!v*Y{1gBWhjxcdazv>(qY!cwz3{5 zxG*as>~`fWleAaE1V+tkVG{G|Jis|7YZm|xvt!admCA{GE9K*Q9aJm8*1 )9fFhsd=Od`<~{|M!nEU*aJpRV+=qdNDdnjsb{2;M zeF2u*Ts*)KDk+lgX-DXEYJG9&)kEw0*0EsUtEK7WYa*|Ok#(0+Z8)uRGgd4n+mhX> z&A3UH6y0;A*cm+Uy;@8*CSR9459b5VhgjiCAdH5Xo=LtQM!c60J)67$XWOd0jIE_< z_z^(V*($71tM|`5T(~kboxBg0d}D5|bw5Tsspv&zlA944VxK^mDx-qAV&};H5WXdP z5dbx96he#1Wzjd_8rABl#M(7<3BvDy$R*6MA`!gNK}FsKFw$@-Rgb{>$eV$sIuKh- zwnoEHj0BlDTeOP>urd~t>!WW0vWrWWJRbi@^GM?e@pu5h$Rn7mvd3o@J5RJ-=`>+_ z42scqMymCatgWb@Bqmio$ZV)Z2*PFfeRS-;7Ae&%K+O*ITZtOy^~nd3Jx)i| EVOA`CSfQ-aZ3 !CgLC_4xY9_;JOtz6mp9k_oe8vWW(0jJy}vdC!<)LPn~>>PdQh0%#>v z!HGac-{;JOJH65Olckj>(9&M^F087W*ZUqUu=tw7TI*pI5~`$4hd%?6Cjn4LzrsC% zFM`lQ{e3NB%9ui8KL_M0)QSXMY^$UMAladpBbNa#;#7{Tk c#@OAgWCA<=<*BqPSsTDl+hp}V$*fT&KIY4QCKTr_)u9lUmz>^Hc z`eF=W0W7aGRmT~d9!Vu9Yg!zOKPQepbiD64(F`4*jT{%57%?J&Hi!0XO|3)w6^Az3 z7Zv Zlp80WG@|&Y#c5^Nljc#MLq?P{4`VrDg17Vz8LV8 z@yX8!fT%Ma;Tg<=V-S5Om8y>L-(9;k{5(vdQLBWT5FA+!7s%^nlF!10sqj^pLSqj3 z%fQb;#7~j8jB4uVk?HE|aFNfWvzpNQH8OhYs8cJy15UBT@?EvYiMGFYmQG#5*{x)5 z)Ug=pWTb96{{F# $W}#F)V(6jrz`QRr5H@zwy!unVn_E##SuGoTRHiw=aU~d z&R}ML8H_IjrS*@Tv_{rzR9R6Qku_Q>{1QyhM0Y90@V^3DPt1{It%UOS6+36AO9`k^ z@+dP-eqlV|{H`y<+5qOl?93t>XGaw$nrWgzc5M 6H+@Ls@w~ex*sO!jPk=wC{Qwa=UpVnq(lg|P+ zr`5)@@Kt$shC1>~b92;8HvyViK}+I%^Sq4@;_8+K2OLD+x0aDY%`K!R#`4f};OHqg zr4Ar`D^WShbSnYX^)-pu4TOIT(^Hga(<5Jj@K0ekM81msJP=oC{qMLw{}sUM6jMTw z{2D~QP6mv-Dyu2+2EzY=r6R--AsW`c*gV~z2__tuQcS^9MgAP5@P9$%FR*#W-6K|v zJ9PI#A+Cv~ cjGB{58aUG0pe}y*$P@@fCgwjK6`H7op#xmu~zmzD5owi(pI>z-`PB zwbz(M8AoHj=-*+%X^U4R`=5*ZV-+#K(eL)VE6|p=p(|V)98(UGwq&-K9kX2-(xxLC z%tW3iV_d~{cr1E_D%VkT;x-vn*HVhK!D8Paqy|bMchqs?c66gsgKoSk+;{;0om8-( zL=o4cpew7epcKM$5I!%3UoRb(Qw7BAAf}s$>B;Z~sqZADPSEr|F&(1m{bG7YS?Vd2 zR!pAYxEH^lvG>tQPVi##463+Gl2n(c1es2qL89F `nR5ETsqiIfCixwhU%p8!lYd`=%q0H-lK%+F??QBhR^Nf}TcyZ9fe0Ky`631m zUc`i-FQ!fld!t`ayi($HzACQbvO1<-h}Q%fB`i@jvFa9aA` 6d_>m>;K5nPDZ22KDfUK?8?6!((ik2{L%qT1;eHA-aRb!1sq+(((? zo6nqhMLDJXMWlKWA_jh&NmMY!F}&i;c*TryJVPMn5qv!s-4A2l#cF#UwXKrc-jdqB zCsAxA62Ei7I^N{JAlnsWr)$A30WPQfos{xbu?kA 3keg-0&{}X0o6(Y&eR_~T#6;4RC#g``Ud@f!W zTN 3-X*=&I}I;KctGjP0u;+!YLL zl>!?b X}F`s78vLdDMqXA>;82SKN;b!+t^5^JWEnw1q zE#{{E_#qYfF|g!+fsk@4{9Y-hPKDnmO^p;V4u1jVY&r9|^9fT1hu9~p=sJd5ro@&f zrKy-Ah-ayY8^44u&0YB@wqnigE@}4PFf|+f6-Zs&RoRUg?sknF#-r~o*Q) ;*EvHHJV?D>w$VQm>$!XU!-h|xe1Qx_c9nSLzk{qzKBQB z-I$0@1Na^0H<2Xgz?dt~&r2oHlg4?pSIlMn7Bxx4)KX{AlIC-mu_(tdi5VVuKUL4l zV(0Wo;8HO;>Qw#&n(M%Il|Nak{0XP>_m!>rdTHL8F0^J0akoo&qiDj)KN&s`#^jl^ z;a3}H&zuWi0OQ=5iSTQU2_!nW=ss}hx@!w>N~I8dc;SboD1FQ~2>RkoDp#D2-VJ9i zNUKv9q~hun{c3WAKA=eBXcj{z6OzR56&bu-i{C1aazuCIt^GbJdcVZ*6_VQJ=tW7w zX**sBqHhq>5NjK`B#pdL3c1>%Z<1U@|7MAl?5AI`w$P0x Fypz%RVgq zq076we0gudJ;xUAaK~j?R_gGWZ pe>%kIXP8G2C}B42FXKNe)hxLI zKD6!fJjv%I`U?L&l2s2ayS$$+k|C(Lo$xcXcqI8KAq!V$OMsB{qys{hQ-!MnB-h{< z_dJ1IA|QrHF}oi{k&29+Tohra$~Vr(BqzkQrj$ir4b}8h`py1BUitq@(@*sO2Y7r& Eizbyf;{X5v diff --git a/flowplayer/flowplayer.controls.swf b/flowplayer/flowplayer.controls.swf deleted file mode 100644 index aacdcd309ca1c02f9196ed518dcf319ead847d38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27007 zcmV)KK)Sy}S5peP)Bpf@+T^@>d{o5}Kib{roH;X@Om;#9!9l`mgs4}&a^1ob0wRNe zf_gETBr_z}B$Jz&uz0tyZ?Y?>xB%{=qJoGEisFKZI+F;93*xRQ?ut9VZ*`wDOMvVB zz0Z4py+EDruCDH`uCA`G>T{AQOn;BDj5`=RfwRHc$1%qKllu~9?ChrM;DFJCOTAO- z>l(rXP&%hqO(fDdpnw0#lPC9^d|JOy)5QL#oORY&{fkfSf9k0xgW}}y)P{(E%E=Ak z?!C^H9SjbHtD0&XBekIhFO~h3q2|ary?R-_R#(M4ZES9;lU-I<^$*kq>H`gtaQ{>K zoq~?4s|Ex^P4)iBx&Fq+y4or~b=QB&$>Ew%)s>U|lL99P>-^!Gv->9qsZFFdQWrS4 zq&id?@RrsErg%^DmL%FsYDGfC)d@z=O`4{kTKB68)%R~~3RO2(fu|t4l8uv_P#2BO zm36h@nn2UJ%?(#JgeI#Y5?G?CY6|!xp;QVRNA-37hKbGoiGg#6jFffpvgFYp37qSz zig-``Q<3-7;^MOu8-zW(e>-Vg7%bqqY;e{m+SzQ7IDGi aX2`75wgFhjKAS&uu zBsH=KUobe?8pb`hBDG zj9c~}Jny{SGaPRn-{sC9y==eBfffrLJvr0CLcMQNpouur!Gq%HF=k?ho0z-8p5d?u z{ @iN>3ud- b9P|L+rixp;bGt(IC03nRlGjVPI=iP`kr3XU##|KBL>b=~rB{vitctBaK5Z{%h++ z-rQUNId|XooMKV7eZKcptfEIvQea@4p^UhuWX5w@@m#i*yNTtnVGsUV_n$bc{XhQp z(T2AlX()VT^!b>1?lESb6CWrq-f4$;E p{>}2Dts5pikIi@d|I>}~2|Mhn2Txrvw?#_(-RCFIv9p}xEJwD+mK9o= z9>c86BlT8h*fJ~g<|ZrC@aFkUm>LQOM;EfM fphH46I*J!M?ih z#=JW{eYS3bPI>K(bAr|Q4%Q87J(|_UH%{Tq<(oeHCG`F7*A^eVw`1q6C*QQ;kQYr) zw3~LbntqViosC+((s1@3wSA#EXD(K#H>)6{!`NZbqvy~CTk0=hU$_eGhF&yW=IE)h z6WMczxBuSSZOK=a{;Dgf(qP@=v*}^Y<|9|nL`%n# kKQM)(S6ydoy!uvb{N*J z@!*{oy!~+fr56|{eZL94zIn;6YaT$aCmo~LzVTj*tX|K{_yx*KJ0RHDZ)|OSV07)o zn#hpqi2;xTHKwYmxw10QG&a;Ikq$zZHrLgmA`ocs1%m^dBau)8OQVWWI8&^$o647j z>YD2VBLYFyqla*VoBR_ef}sp5DB^)3JnJP%W&unU%~(yszwJY*Gig5+4aQT72Xs z_^> }2iH}*3=qssdCpmL}b2wlP*`=L~8Z3O*WR??hE+q8D4Hq^? z><)U^%*03TNth&x-g3;Qz$B~OC&6u^ H_|Tj&M`@CES#LwwvOBn-Z*@ zm@b{cet}8kK^j9S$!*tSQf**zT4}tT*RHxgR2`^ukE&~)Sle(R e?_-cm}If zF=q@yUDz?QxgIN*Mk~`K#{|> >P{I*xJT$n(83}1#*qWqqH_qSM3 Q=~Q!&P=GiWX|eiVjxs+j0#~!X|gBjzdPy!)wRv_&LLAG zfu;t3opFi3t~ube{m@Lwp}(>&poa7wLx2P91`f5D&QOEW5v?j5&MvRVrm?oHlyF{2 zWjNC0uZoNfO`KR~Av^jZ@rH@<{bqM*maD _!TsjEy3pAlu$%JAwJy_cmj*JX7jD(z>7UlRX^fEXQ^f%W<)YPp3Nl`DsHpq&| zxzgH%<=Ujfx}xslMv5yk%l)=;NzHbvHEWL4)`bm;$qqFr#U=|R*Y!9xfNjiFM~b#Q z7*_$svq!at#xz9&)g3HZC #rVDTZhUqXX7ltJCA{ zF;7={*y7-r+bb-E>a;mE%hjqJ2az3Nim@J%8dtf!wqTqN66{_qxjnF2GY3wEkiR-V z9IzywvW4;k4WzdTc`HG<$|Kfvoc6r(%d483pb`;V<5X|Z;n9IGR4T`s_SjIINq2cT ze!6+eCnaf4hNVW @%^E=GVA?K*e2l) B{p{82&=&w`E=UFWjHx_wZ2||sHkR^7&2-wR23{@EVUs7Eis2&@VMkPbB zY0tu4-Vi^*GQpTqL}hoaP9Z7`RP9j>)dGc`v@ge8S=(T$35Bzy^pi9-%Z`0*CCsv? zR$|R87m{uY_)=ykm!`VOKiRDY9~eMoCN_JLc7)SaopcJSbD9G6=w9x4WyS;9@ny9w zj=fm+w4D(sR0LKyD`8)hKyyiR8~s&*k|4~3rH(;=bzm3{O>3VfG|xI3ExhVM;!L&a zp-zo)HzExRug0&=reVh_9;_o5W+;AGX4Uu`s_O!Du&G*WDXhJM0WXZ(T?^-El48rS z?XMa#UQ|Z@ -=MrU d78JAw(+!!xpD}sv?7>8mq zUyY#jG2up^{s;UWy_MboKiN&DMS6vSaNj@ZCW%xh+bx2PX^99$R5zJcOr%x%n{tm5 zTsdInQAke?65Nv#j(lc2r#?NL6fI@751n+{@M($QK_|A;5}}(roQU}{+r@urlj0Fw zMrv@U1w)~nBZHoda7u`lb7aJ3MpV@0PKv&q)ykU*r<3d~*CwoC@U(;k(jxH?E+aLX zORJ3U)r`~-&Na!71U)G+p(|pCzMhmI*d=?aC;F72G<{N16qwaMBy_7*YHiv@WjY;a zX^E)J8L{HL^yGlgXr!aVofK7i!pYuB_7T2IdS#OF%4#21_xkVd(Ez) wT$v3Umg+N+DUzp(eW;V^m4eC$lWhwI!6_YY8TLTRV=*R4m%q^t zpUM-aGSjl%GG0Iw vp?ZsT#1WK(Pd uCm6P1m0wnm4Q0@^gg;VM q6{NT(-< zvnTz*LMPMyS0$ow$x~k4+@vB^x|JXwRo+VIWJJ>|LrvAThS=T-ddQRuNDW2=8YaTa zvHM7hl4W-?K%iWXrCv#6o%}x u9!xmUxCn&<{@#_ebGRwoD7}j8S=v2zy6i&04K;E=)Hfl&ib(Y%t ziDSS2|70o>^e6vs3v0=x_aEKf*fAGb>FPiO6gWK|SEAq{$BF8t`nlwl2<`6-a=H_j z3GSqrE`v;XqAH^{JggxR7
ihYQtszrs~OltV@+2 z`(5@#9jT*2cH}9qnVhht8FGX;&yI3=<%s1?kaV3Gh$J{HlQV~hVaMZ$H5JZ~UAbz* zV=!A7DpXJoK^4v$@c2gtJK=4faLg^HteH-e(do`lC&{`guCS`QAFF8+O@`&GS;d~m zYLZIkD6giI)`5*uJF&r0B`>}*!|_Wk>0>yg4iDAJBSEt~6b!=Jy31=qp(}kdpAIt) zGhHROybEoC#?wht843 7CwzLj{8GTWoD7C&)0%Wu7iyg9Y_ygn zqtQ?HRoXf%lUYYcM4-W}qT8Q~8`H^zG?mHVxG9ZpBI_IL0ulHHvLZvOC)%q)GG&mR z7*qz`gOVvsYs13uC5ggq1)ya5(&fCYLIE*t4$G%OjJaWUlz#v7>S#i9!p6f?2`F z0V$qt4iN2}{d}N~5{(%0g^~-FzE)lUctDmg3)v{8Mh0oXSm#JCvh7{dtT@gZHaCeA zyN?b@xI|MLIicEF@sX{LvaLBL8e~|QB!blVAUEDeYNI4ayhEx~ESJfl-kzxB&v{Ag z#wDByWO4+j)4Rq@izAx>no@#9iZDzI+3~0>URxcg3ej r#~wX&AWd&fiVyCw z9VSVVAHS4H86cxFAw2Ywp+sVLk%(kfpn>8g?WL0uA2?ndn~=IYssD7VN)}9OVwvrx zVnjltCsyVqFM`cY$9BWp_^c$qTrCA1qsj8hO-Mh5XjHO<@)FlJiABt^g=i0!o7Bw4 z75#xLk`hs53?5Qia`A|< 08rx7h zWjx~#hv{xMaR^W;Ve{!`HTe#OiV1U?)T?zMbVx!a4uEv4Pjx>;FGu1AnyTVw4z)h= zWJs463fBFfd{dYFzBVJ?f$Tj$wF~>mbz2 O^Nv0knuUbQ42glQHBm}c7G(IrF6hg>pb SD)2k zEiyTjDe1~b4=EWvx@6?gA#QqoV!i8ds8i;|qrA8ukosCc-TcDw^(MS!qdHL8Jke1j z_iskY;K4%%myh+8Lv4l*ajGky-hIrb<_3DLWm<7DO+&qiiCFKMte3D}KA@ZRNoeA8 z(2_By^*^<^_>BIQ&9&Gs4H-55uy1mM^}2hiHA=O&`_X35?)7zE%I5_G6tXZCdGt5= zC!`V$Bj*^Bsht#1gq{COC&wp$Cow<<_x7bgpvm3PTpxcYZBJ@oZ3DeZtb)^ |9)8Zwt* zzvU&;DPBHBFY-?H@~PeImu^MgdjFNwr)^fe) kypJ~ksZqbsasQ^DgcR9 zd({$oOGXXrCK;o6$9v8>UcI&<7;@Bw{1m<`|9XThAnKxRfkE@_2{na65wE=HBR*YJ zl&fvf-m3NUG=bz(ho(O;cTRdlJUo z9401c$9vNiky`9*iGq%L?dx;1M9DM9{!k;qL~gKliXCT;QS%CSic6_}s#o=FOOl_Q zVda!;suNq%_JbO{neAROdEzwklbU#md?@Q>PPG?P_F5iVZUf0xg}7ez+Scoex6&{4 zM{2Zs{}gx93ss|vo+iEj^fgDEb@u(U{fUKF>V>T?-b#OySGKUb_qycX7(2Bw;7}-I z?63=mjP4kJ?Mg$d6POlThn;J5C*AJ2;x{UK9Ykly?gj^%nnF$9zc&Y(rrOho(y3iU zT8}xC5EO-1#)d^+)uq^a5`K} zDVuP>Q73Ort-T$v*TF1TC$HhJYpn4*!gMKisY=FYwmWFDk2td&< i@FflQWbv~R?Sa^EFGMmtsR;;|XhSsiP?qjtsLR>N2&S7g}7{=lgt5ufLR zOB%I73bc10$jzH>c?hKxz;})lObkUrB@NZIQ+l5w3EfGkZ27*xOCOJT<%nTV19?Do zR>@hV-p6v!b42&KNBMF$?`R*v<{bH{afhRR-`nA+pVsCd{i9@0$|uPgsh{b3 zQog9oZ1)YWC*{*wPs-P}o|G?)vyb>rIOoW3akJWg)tq~jkDoK!ef68w{*&yC)Nhot zkNAu^`-pF@bB_GvH>>>z(YZ(YsyQw3rFPyCuY0j$Op0`CuL|f9*mScJt5g>Vr&akI zU;yQZBPtRYYroE{4UhDXG>VG{6c-y%Se#_V4yn=O(=PN~JZ4Dwh1l4+ww<#bYuF{H zs=j!XMK{ 9ln40%b^EWnP z_sVxm5w&9?H7?kdfQt65*H8ARwP|6T9aRyUd3GFGVqH$_BZicYb=p_e*_MNs_?T9w zmlURaWzj^3HN7>`8=G;ghbQ|R<6gcxl DS38ap?DeKdp7e9QPyzDdDg)jIY)G>~eVWw4b{ >n8iB zh8;@%9pu^d?&BCeWX!P3hIEjxZhH4AN`ygBlN0~w?NjeQo}@Rbz5Db@DGl%@iNjxq zb*Y|eJI?7=ASf?bvt>LqI0=)cjx0Lv)dsvY%WIut@|_qY-zj-B*-oZ<5tXSTh`2YG zK5E3pLx+u2w*eWcw7GUS3aNa8)OT|7=vCBe!+IyflWVlSt0FJ0Gnynte3)^X-KKXR zr#*%fE}(q*?ogkQ9CZ%romoa|amZ0vQZ>hB$&OJ{cv6j$+NUhK^8IP;d*$~kQg0uX z4?ux2DMDUCp~i%oo2mk2m|XOLlU5gS%f(UGl^(fb_O3Q$b7xJYzK#rnr!EBdWo&3@ zU8vGu=f=Ve8C_mFy5zzkX|fAxhIIP4$B-ZUqy_3L1J(4}ENnE^P6^bxCpOi>=a38R zs)w1WC7b1(9BQf_2Q%rC?+suL!|Apmk>S&bVIzl>jCLSOYpR_hMh&yR# 2LHsA&CeMzFRHek8mqxzFHZ53G&U z`x{Fo`l4p+pvY96?hw=HHJ3u0RwJW43};XeVw!qohyq74(ghOhEr$WC4SLJzFq=#l zGfgI4gG})S>05p25{{9-bgP|S+{1CzFsjR}jDJv~E^)h`dirUnpEf8bfww2-P+ul! z#f?+U?!~7JE-5WFyQ|-eL0SIj4X{9F_tQ(y{L`6(% F zv#KhqP%nR6=$jm~Ky_yPu886ouwA8cnf6I)-z-l|E$cN{`OK Ye07p4Oc^b%S*}t<$S|r>FH!QN2@4@6@VyYSTNtrgzc` zUe%pnfuLgnh-j`I$91|#IJY^R&pMpXIWXO6W+&pi6OGa7D=q&vGlLskWO;b{<$o2f z30IU?_$#Zb1DV<5vp9VH%dIju(>n6MnYEV} tG z>+ +(^P0^H@gWHLwo;wgd893~eg*G#UP+%Sb{YA#cEn})}9WSTt7 z Fj2T6HQll(^Y7u^)wy5 zOh<3i=woVqO?Q!*cCsl>G4)ejf8r)T-Q;JOo- ^jvIuE-^F5o1RNe&t<0Pa?|ry(=);3SD2o1(^Fx3{HCZhJym9Uwdo0%o}lTO zXlB-!o>~(^^;~Is>P%0)>1i-|$n-Rtp1+%(Cesr(JrUE>Y 3|u4nSfb<*_iemq;moD0P_J009OOQ5a}YoV!#r> zQou66a= 6R>9d&mg zy%TU3;BLS@fOWv%3%C#M??-t(@|T*~5i{!n ^>O~5^ZbTi;lz+-@F zlY_ae$5HhJH*?T52ju)oz*ER?1)z(ZrvYe^^9*1c0LxPzMoJCVMO^cAG9B8?)AA#Fw4hV(V0yO8cix(Dg&NcSRr1L>Pc-$ME} z(tSwZLAoF5yGY+d`aaSRkba0UKSKI3%AX+p6zKt^pCSDm=|QAlApH{QS4h7``VG== zk$#8td!#=gJ%sc}q(3438R;)be?|Hm(%+FDM%p6GPSXK1u ? zNG>(`d|(zJdo|L9!aT0p?6e5kCBi&@Dbi&~mkYDYwMbV0Rswe&((3^?Ab%s$n*cW> ze+ys@U@i7H7(4;8J^^cB-X=^hWbZ}U3&DG#1SSO74drgAcikz>%)5ozeH{SH-u+&r z_X)G`egG7wa6QTo03Jm7A*36SM$E#ER0R3MKy3m%g7Rj-qX0~y`(sESNBRU(=y7-G zaQ7`JKZ){FfUU?s4R{9mZAdRg&lv4lWS_$fo(K8` 7{0`7?M^1l%KaDeGRY+ zuv?gYAn`u01NH*m5N2<%+viQBV6is_> J5qXc^fGP@3Rl^4q!jvUEm;& z-e9gb813^O;C 5CQUixoMk+AO-%EP}EWK@EzaBt;Nl5frHC z60_d`vmYkj4_d&nRr-A@%zg&|p8-Ax90Ys;_!96H04vn*Yrr>vOU-`YBKZyg(f0cu z=?{QIfFA)r0U+0YKcnkkkp2qz4e&cy#E$F__WDCXil=F2F$_R46t8$X@-sA3%+y>r z(wTxhM?D8#%+}1)<^tvc767gWECeh9ECwtAECnnBEC*ZzfCim*Ez%W$m4NF2*8^?< ztODE!xCwAG;1 z^#Bw&C_l}ay#G-z@31*G*iEuhDO)-AYBK*l=ynhbUdJ$ zrCR|{gXL!dJ2ms7myx~#SVhW$auoR(pcMckGm5q-Ha&;o5pBTj*37Yc0DF;t6X{!k zw*mVA`vLC(J^)-|j{OKEun+tb6hB4&0MgF@2a*300HxwzBmD;OE#N!A_kbS&hcxq& zACdk9_?h|v{0jID@H^lzpatjoG~K*pI?@?{nE)u=B{z}HL4G!14qz^5<{_PrloV+J z@>c^E0u})l1C{`mqJA0D<$!Ad*8)}mRsyaATo1Sbuu3<_;d~hfB_9V38HY1z9L}V1 zIFmd#>E`&GL30aWwQhE#@vekrLJ=f +zGe~aGA;P zMsg2&S%>sqz UoP>s3uNyX*#bkM4S1*IaJ`-qKOGAGr4b9{@fE ze5#wl14usud=B^m@TG1}{8~4i-yr`T;CsLi!2PJ3U4GV0;}?{FMfq;-x|!UwX$IB{ zFc&b-FkSPJE^AX1KOf S31mk*oOKWfLjH)(P4JE3F*xa7mia181-<(>Tg9l&2a4?-0i5p6L1&cZooZ& zbq+J_UZnQ{?gy*~Jm7Fug1HBg#eu^ga+sHIKz<|OVZbK9W`_$tgzG~vTVtAC9tUa* z;2DP*f@{?XFW~Qx_1~Wd?ghY$fR_MKhv|qRZF88$Zlrr0=ES{#w;bl*VR$*wzYW-j zGJt>RFx?*^{n+99w{Y!*cxGzg=o6q004TKh9B>fu72q4dw}9^e-(#pBkRC!8KO+4J z@H23~ApI5a8{l`qVL*%7*@cC`Zk}$M;TaIsOr*1r&IZf{%md6f&C9PgU9*XUg{JEx zp4Qn7fg>JCceMf8 -L}S;ateS>yyX` zt_doFgbTr(JUw03(L)x5MJPc~10%VbJM0ckJL9w;hTXH>UQ#<;E-g*aSRx%i67Qlv z0fmf)I>FN76|z!uQ%m}rOdgERGpLjqe`L`k+nP~wk!Hkm;<&^kGhUH+IIIVgW8ooO zxq0Bn?au80Y_4JjMYk)S2=0>9gvpZ_ndf=-gSiraG)XWc-@+sTO*|o8_t7Cq#zuT% zc<314E$cg4YtfMk1=b_pt!6Vu4^|-mE}3l9o;jX8rmJ1Y%pO+uU_)vLn$4_TttCjf zi)!UxZWH*I%Y<;dbO;fG!>S&4q;QT2$qcyuFQI^?{Agg@Wi7eEwGMio&YW6W8V4kV zmtjpE%(|18fn*Zb7|uJSbPNPdwv)ZtY&zDNGM$q%apL1Cb9{RiH62Wev@{IvNEK>A z?(N0huBO0V@&Bo@+H#uv7_#bUvz)9RJPGt9`B;04a=E#~qVe>+a-M9o1f^8XK9i zH@K3bNU5|5a+4L @xNvx~4O5~r{wx3ORzG=pEzXXu??w_MN9wl0oQ8P< zZ6+_(bW0UPd~sQl*>JR1j-(Y%!qfTkKWHbnnS=$@bWQG!Bz0lQq(`Gtd#xQQ&b9pi z+BY$6TVG41og7j-Q68e2HTy2Mj=SAShacx%+DS?8-frsufBYeLf(`*jhk#P#|F3_@ z< }l*JYQy?1G);s?V2TbX1D2w@*d@nb1Y=RN|Ho3JwN z=yH!t6BMbm$H=6Npbp1lWVHW*COIQ=VThf)9~W*xW?9pCuDks@NCTrM8JYIZ0#Ws6 z#q7+&9 lbuY|{WMn4pSmj+Z0ISRopdT^$DPKR z_fMRic{*o<&!9GEa`u-$b5?Q|XBh)H>+~1S`k&2N;W><*%g*Dh_xYT4D Vu13CUAynq_MVvZY zjPl4OcwD#?j|-OJF>yH_<=5a*ajm3TflkJ)L^*gJ0)m?BksEOX9)VS|`bK0gy$KKB z&3M$_LT5KyjqLa}XgFrAB)S#Pe0CeKSKJQl=sWPZ_)Zl6dKVrO?#83?9y~5uhl)$? z#lbo1J`^vzAH}ijIjLaZ+1!=G>O2qd6Itj%JQ^OtJR%!F5#A^%9!9gjZ$h(4k04jS zSt1`rx%n}aCqIry(-SB*ZsC1hdF(3VNnrl{6uSD)R-pg+G>ZRv2E~7D raM22 zKAz+3c_c4zwjIffob5pJ5@$P+yv*4vNM7YEiX_HaE0Q+OUPH2rv)xGcaP~Tqy_~&) z HKg%`vMLvIp(C+1=0_!==^&b8k z=6)wIf<3^0hY0TChb3hTH1|F}4Tf;KU^4_Q>r9c$9^$iLKi2Wtf{5lIzk$z$-F%SG z72Vj~e4fP9>fMhh*VUOl%k$@>t4HM!Px1wVy!)%s?s2{l`9*?F7VH^bF4!i?*He74 zAiHxlI(>{ULEf!vlQp)Dmuu`1z7#FD@MVG`g5^ZGO7Lqyx|v@qD5O{+`(Fyo6MQ9T zpT<+Ltvtu!>WW1a*MZ9y`So~i=Qju_)d^ThbaEnA@kU@@kz#q7-z56FyjV};W*~R* zTR^afuSWhgz6Q_TlB|udr7pT*ZM9oL@ixB=b#KYKH~H;CxK5;{y+dFrx?^Sg-w9r3 z3!3H^{4POjdpDln@_T@vE7l?ZHNRKTV&8}7EOEae*{>HlSkwmu+0X}pnI|3+qyigA zIBcV!&Gj%a2l*yEr;A5GGe>Mj{t$l@&!72Ya#bD&{&)U_Acff?NMC48zT{5|X&s&d z>NCC-M8EQ -X) z2}ZhcnC}#117C)4W{Ovk@4#Laq~}pQKjow?^F>VDAzVG!65(itD3^;iJg*V2q0LgU z3;AosZakL>67C`~8Y1n ISh_(9!b-x?U~bMDtt3Te9|TU~U!r zz}=1F9f{cw=B^j-%6Ytp+MC7ua;_i9+7Cf_llTbuwSrh&B|es8eFDrHF`d}$jkWFi zsgOs-0on93xk|Ln9uS{{aJ@JPuJ00GAiqw0Nqa EJ8je zSc7n#%vwd)#Tu>H5)HOeEY+k@Scbwbv0M|ZO yzH;(4tW#dC%h!*h{FlbEixN?Etb9$o`xskRHxWg1QHu-Hwbnc5z?IImN| zsqIDmeC-W2^qX>R-@@~4jqO9tLhT(qmuUO(oTa@hSKw3L)%hnV01R|j=jrT54W_-T z^9)+;_dxKz1`FNQc_v#MFYiJ5&sb?31znwIvAZB>WCpNx8cbhT=U>?UP-kS$W)EsG z;a#2Qu#FmgfUeGS*(32@K1TUG_Lzn z?GufB+htgu-?WeM{6+f|&zbrG)K1s;K@We_J|nf&mI3pt_PIs@%0c9R(8#F%q zciNX|^{qCG&Kiwu)-?Sq+63A`;16kEgXS W_A8pH0?dw#49WJ`3;zeBnR=`y4%krJ~@_3!XptP}g!>EF|~cwOT^ zQ2K_(4}$V~P=0}Q8B${91`IinU4zmgq^pn~K)MF$k4gi7QnrLxU9SI3JwX9~p%gOz zmD2Y${u`xO!QWMz!&LlOLzg&Y^sn)}Stog{&|7qk-Jwsz^ETiIvYRl_bc7n$>N9{_ zt&=R)B0rGbf|{9#y&zyd4dq)=Zb5oG(piN6LgTY_!4~SBgzI9qUq5RON{{Pv@qAF9 zhi97(39>!<0`&igel_wN^@VuGbcl^@&==#mPhSGe1Nu@tx9H38d=;%U_PV|twVU;8 zkl(3a3;c8X3SgesR|4~vejT1~U=)qLre9B2b`Yds_vx$fd`!O)&nNVoB>rZ!+N$3I z%r^9|v8cWp`Ca-NJU8iUQTw(|p5Z+@X2>4WZ_}mW$28f~`W<*a1ttW0Nxu{MR{bvI zAI9*4?bYuFX1#t7I$a001bb6ohv%dEy}-YNVKlZ|zYmxvK_l3``u)H^qpwH)1^of! z@7Ev1bG!Z!p3mwVK>v!q5w$yz#}TGK4E&4wOXS;)WAE$cCcPW`M1KU>5A@B*f22Q( z=K-B;{fGKv$bYIoj_1cZ<4@=g?sjRz_!eZe^%}pDO=Z(~_b2u2w0Zm~JzJl_w}K8+ zeOk|P%;L}J+4 pl4?<;oJ4>4%hG(^&Dd+ z-=Sw0tmH50+35@TPCeUmHGf&pK7JK{MbFMz%3sy9opX3p&+fLG$Mo!sg}hZ~;yCC; zwl gfheZtNBO+CB&TK<-v zox6;`t!L*g=lk^Rti}8tJ^REpe7~OE `K8ur0i2V9A@~S?0Kt>90WLA2L=0Hu-^p3X^-O_$N3uU zA-F;syGO$r%pO1pqOnaHdsJgM4{`841B L@`*FKJLL1$_2bIerd?yCjA1LgD; zg2#}0ZWDa8&N7}9d^(DmaJ6S>I?IBOJYHwn@IxDPmII&iK45dd6MO+i&ihsHhf(eT zkLWR^`S622 LFn F`_meK8)+eYh!2tWcmY-xX-_x{-y`h> zw_q>Q-mNf(Nc-S$e+T^beM^IW==>zu(r=L#y{GYak)8}28bjLe6ODg~v_DRouaOqR z*u9MOl-b}}XQ#rXeT!+Hb{AOJ*`MCUjC6MTXHYtb?2M1-ty!Ae9WB1%3BB<6nkV$3 zbZ5xj=_f~vqr+Im$9mB-y6+R6M|;&Q6<2(!S3IHDe5z0QomV)52lQyL+V?vbXe2b@ zPVXNrrWVhu7Qu5S_04fI)(5%ZXZoZZgvmprMc0X#&nKe3CWdC3z*xB$t5?n7sP9x3 z^^IlGo;8C}rBjbRQ+h1AnX9(7EE)|K1!sxi=elnc2eqMV?(|taTI_9c?Ji`yvO;i& zCLGjbr3ZBm6!o%0Zw)@fR~Nmcucq!=(Ou~mItQ0olFMO1Y<^HkWKI#2(|<)zR0O|F zv`oSJzl3RvReYs)n0NRvxN&IU<_yJqxoYu>M&0JP8AHn$+W5ZK*@SO&t2F!@5c$5< zX)dOYnRkOwVl{t_WlO0|IJd`lS|J~PuBbT&;`H6Ek@TEGcc=Fv!XdqRi`Y#(T_ajc zaZ0p^J+W+rHEm_lm~R&6ZDo)LNi+xKG^VeG3sr@V(x_%Oq!(M!H#-l)h)su7+>{A^ zrx)$j*G-?4(@hEF4Qq9W0qrl32J3T7np3@R8F-2Xzt;;{W|}q2?{)vxA{P8X&*`Na zzpYbgb kZ(`%v?83y3dY&g)<8=7njb6SL=|HrQVZhx&a-uQ+6NS$Yy{ z-i4W6!K1z@a?p1n 45p*Op*d0{LxJ%j-iQXrDa5!q;v$8( z$U+pd-B~@A3b!g1-qThwn{UX;WNgB0-c~xB8cEV;L@Q}ttJJ(~63%gIQXi3WDWQ;f zv1>q(V`6Tnko1NH%V}j-^vyA(`q!_>$p;G)8lu5z)Hilm#m{ kA}I_^CGUg z{zUGI^3}dy(0Qz;h)OF(4m^^m?{AED@)f^g@BOB;nqT#(ZvczNuv>jq==Th@2hNC< z{;o6sL!7!hsH-Io-lJCMio*#+4dweN=|CM@474E*ebWq@Pad%~m)M$a6n(4vW*D4I z!%Rc5R65Jx70x*=&RsOlAw4Gh$705UvyF=5=J@yORPmFp))$qcVva%mSIjl$Sjc&X zkUMo6FS?s!#f8H6!n%uSl<>j%MrkRp83u+r5JLl$n0|wb%r_t;Y_%E)HRcP+`Tnld zEgG}i5%REZDQ3QIxYN&p9?jYvogjt_R#Q>P_7Ls#Dm@Ep Wr0rB zwe0r~A9m_a4V`o(gLsit(+S3KgOQ@fN};F~#+(*oH_)xYr9xs!ePwwem*wCBgHWwX zcUxmcbI8V#!Dxm47YNMHl-B72jB}g|#r;Cfw}qrmGNdKA+Gxq&6(#wU6s-~!HwoGf zr575dr}2uub81Sc!E{3j0z_vN?d26SG>fPrC-@#DK7*H@rV;fSL_H%xeM!*{UU6SL z>JcEWxkT0nix!BA8$@z_(IM)rCMfIwP4#P2>knvD|8H5}rzoaXY~iW>&$PMeBWcDJ zwQ3dPi6mNjp`#)uf@Ep_L^R{))QpofLyLB56=iXnGD-3uA}O0wGn5QNx@8#XIP=dE za K$Ua#1fBxU3vSPumcwFT$hVnu{<(XKt-54q+6J*In-Pb?Qj1a;o7-)h6|= zGP4VmJ)dQ?$qf}F8v^x?aBo>G2L>}%M%A;e>PkmWHqN3-z0#<34AiK -x+d$Uhk}Om#gnmt^bOt}wOBWfU23eX=rL)!l46k%TIlBm+ zp6;Ho*r-@y_!b+qo4V>+dd84w@wmRbivv7XPv!xqoU(a;okV9p=mWftQv*uNl=f1# z$0z3bU3^OoP2w3}VleJvCkT L?Jt;r9&1B>-i_NbRcJo 5u7DWNroK?Lj@%P1 zZwp#&X;)G33$0mN&1FVR8T#P3n13c6klm^KQz}*(g)C1_DOSkR!DAtg-dJIE24$eBtxg$OLEb4n*o^yaH3CSEgq6$ov=`p4PGa; z$I1pj6wO(h ofI hbMcDvDRQc$(H{Mt)sz#zFQ40)7xbF zci-(+`3{+eeRs;V#&?%YD}8rc={;7uPM*Bc;6Hr##&h>sx$}JY$8+ng+&_H}$PL =UPg=;kwi{b^V?|6j~uIX%dy&IuodJbS#wqq(#h6raU4s*#h{MT z)ek;`ZM?p3wnG*+8!If=Uqv{<1KOlXa5YL={Rnq*a%qSX>pc7m*^sQvRMeveEm}Wf z@hlo`sI^Q(W9T5JIv8pngozFkDAhrKI*iifap!wXdV0k)fpJN*mRfLz)%_X0Fyq7` z6Vapaj2<^EI@&APSlD=db7-biwL+d+y?g s z6ZsayT7h0l|4vPE0iQJDW4GtHr}Sj4%Kki^0Xiwg)|lz3m^m#e_+7wN? 1ks^OwgQ5V}b`~3QMty zQnCIo$iMt^eAgCDn69d)%WB_NxvS42|FbXEUtXv|a}kpTFTteYdcixpL~qI69gSh9 zHJ4tBV -{I3Tv8ZfFCnY0e_=qPclD#Zc1Vjw|f#Kcpub zoF?^A##VHk&`^7#t!>fZ#Wa*0wXO7N14l*anWA(OP+7-Yp;sT-swB~*SvB$bNrZo) z`0k`=aclFQtd8))V{KrFltN~3oR_sNZQj!s3qE6X*njx27jrt>aJbV)D;Em8tQr3M z8EDyBsZ-M)ur)G=wnPxEG<>J?w(1x%rBivOQKG>LHt(v`m!f4QU0)a-wjMrA(mID? zRF{fTpQgC JZEJC-0~vEcKD{{;gPDaHepZ@V01h_3cB zg|X 9T>n+sM1Zu5?x;}wg zWucZNP}f?h#R=3RikTMj#4Y7&Ze3GefLXcIq=ZVJ(-|f@A_=oYVlGU=Y?GLgNto9q z#wSFYI|s|CmKh#>tQ5XHYDQ_G{gtNcyN5%ZYdJIpN`*``crAw}W5uZ?7hNK-=8I(N zS17B2%={!X(ctZz+K?JWgR5jJZQd#yO%$tTvsEeMtUBg6i|lb0DUua@jcl>#SfgD* zdlK {23|%X7}6jWVBZj$P84%;y!4X&Z8Ef8b^14@`IrRu1|eyp<1s zOcOQpc~%GOQrRMSSR4MZ#!!I)E+dudEd4{Yp;6WN=sf0oP$QDdbv?~J1>0+<5vu`E z2vIa!P~20r*_gFE+ILTD@MWW|qGRwCtjls W4e^PG4Bho=pH`NoOIOh8HE#$3;;0xLCsNrmh z8dXLt7&9sje=Du!6&kuZNwwXeoEzWWoP6N*+&532G0=!DdTE=%eJkb2 Ootn_`22VXM^c^(cc8{zv>dP{z4+|zE{ zNi}}GUE@OT+a-OSO0Hg_&|3K(kR4Rf4meS%3mrLXhW3I+3GLgckx8ni#yVUCXkNe} z ;@?hg%hjfwPZAwDC4MjIjI_+QA$yu=(~%P^$jNV_-34DO}ie~r1rQbwZ}Cn zJx)yGw}$d`V+2YRYe{O|)nIQ)6`!!%n2;kwgW);cx7$$5hF<=L^TmY_X2Krhm eLlp# zk^7#I>atm8P}x8yq}>0TEgKO^#z>3MNX~9=QinS@>{qN}9k BfY4l9cpcW;e<#`f9TKx*?@6D7nOJOu<~uNxl=VQGH=! z$m~X$MPFeOL>~HTGYCuXy3o?QZUyETA?INT&3Xfm$?$i=Vi*H?@4lI?;vAIQh#cLM z(TS((Hpc6S%9409iO^D#NlE$1N%<+{Vw?hIUO%=9%$6`-#J!BZ=zJ=5qSW9jO-uI_ zSZa_s@3-3L{XaNQ_c)@(MKKK{{?h>U7^R>4lzw&{-j%g QD?3V8hLs;1gsSOoU z1AK29I-z}U8LYLJ|7`=aZ>5=DvCn9&*+(n>FM)wFF_{8#5?;|6{1A-z?-cY~Hu^ur zmKTg{;B?PdaUBm%4j$5GWx4FaL2VZ3S~z4xMr^`6|6N9X@qfJ5B`&5dv Gs;X*#LGQ+llQDV?{Z?QR{&D2QQf2G@k9pAY`F>O~*H z>Q%Jr6l)cIY)qGj4WF)FqW}%ti6mCK-{2K#bIK;X3s2}>m1k@w#~`kA)qPcfdt1`z zMifI9eZ 6aNYh#xrW52VpOOvtR z+t_8v*dJ`{a=9bu&*T89UR)u1Utu zvaxF=HcMe=OKe2}S%6zP$F6e7=nu+u8yPe$8+0E_gC@r7U23+GvAUg8> qGV#~g=! RlN+D zem-Uc)Etrt-G#`OKc}>uCa5nv44Wn-wM4A3Tgk3fm(k!1K_1{deXZ{k!+J9=;#Uzw zmP9QFm`z>E*z~X+zaHiag<0Rj$%Uf>c_$sn>o^5H(sPEq{IlrDzBd*3E6M*poFghE zlX9h3FTma}DYGe1n=6#a>3ay&tWWJ@A>kh2@j!2y2reY8eJ}+zlde!6N^L1$Kx|0G z%^}=IQe;;V6#3Kt>cATIiCl(84`Vz{SDwozxiO^gyqpGp1cT^?Q^tSGX@t!fK{xVc zs47}I_06VtM-w^?@5EX pV&B{a(8 zNuw+wf+rFLD~MoA62S^0crrn-fC!#SB3M8KTN4C}iQwrZg2hDeOoCt;5o}8$SVjcT z!oKQ8f11i75hWj`W+8TO=i!|hc!*B;RvZ2;qT~h09zXnehDOSmJSU9_8Jz=`F>!RM zp}qCI6dm0|y{8vFuGhRrs`modVTfGPS8N+b*J#_Z1q}xoqnwJ*jEc{Vii5`R9Ma1d z!I9x0zwHa7=(wVJj?ym-VtogVNFJ5C7IWbLcoU18Gn9VCEfJmU ztfcpcNbz3bR)|5?=xuqU^r}SB<(>5Zz9u%JG+f%LVB^a_bdjBL-|q$*Fvb&3aw{h< zIf
+XjZRr@=~pjhPKJ*TKTIn+h5(4O!0IQ#V(s-Hx@PBL+=-2BX367@i6y2 zECang{Aj-JG(E}JJs^GE*W q_{#H_?>#CQ1K|_R@bdF8w{k>s!gv-!7&9 zcB=GeP|&w8F8#0nQ2J?cZr0L(?<8&X{aiCO{dP{D;=nil#^7|%TC~VfR>XH#EHq+; zXWv@-t-+i3OvsCs=JCR_ZwpuH6F$%@_0kV?K8tADY?>;{-UiYS^fs!cZy8%x&)QvS zy@_uv12qaZxr6ezp&9jOq_l9@Eh-&0jy~^s7YnKBIO<}Bt_)N9`t 7+qk$ zmwKSTZ|_01BgA-jmzvv21RrqwF8E!&=ux2#^A91FH1}opVg7=Mw$^N<6a6vl?Q;uH zrEe5=im2~ym~-E~f+ZrlhXh4*R91Ie(WElnYHb%*#P<;bn>4qKV;>OK-QzQYK9+h$ zWXrb_PYSxD$vQ#hgAZx)y`JwW!Lr;6N3{M8WFkJ6r?k93e?@rJw+_*Y?=avFfwQtu z+`2}dpt7`vzAGqwMSi6CiS!tHrCxH~g=zJwc|c5f)BxMxqnB5O^}6%ZWP1CC3oJ!@ z61|+JMX#oLfXDBg)O?20FTE18#}V!sk&|J~g$g}=8#S8F=aPctU;40M>KgM&5x>TK zQXKOd6H67`DC9Nflj0cHm`@U82f1}W)C*Ghg42!VM(d-&<#ESpr?9?4c~s8l=ogtk z$jiw?pn6`YD@%wuQSl=xo<3SdQj3b8^;G;5R)d&to#02m>_lHN|4uqazD&3WSl^un zCiInb1<16}3x=WeJH@2Y^7Tfn^f|#>a^ TAVJl?Kd$RsYuL^UzFgD>uqqPmp zl)h;2_ypt|@Z*kE3FVO3qF0U5pI|wlz;-$2$F%5uqkJp4N`C$M4W}Dg+MJh=5`HU} zyAK_#FNydXz9dA=4ncG3iFry#cZcohekVJiTWG9N@H1V$Aoo2_-qlWFy-EIF%HRs? zxDfL0*ZQ=DUIRzhtx%t$VVjh05qyRHH34Ku@7dO?TC2aP?@`+8n`wltLfw?UC}@}; zBr8y)o@Mk~+BB0c@(NG(({9(*Y$M(KF|lBh`!f2yZeli{UfXRnRz&mSW2?`eewL19 z9p;j wn13@tSSB3;DtP0eT1iQHB`G* z$ZIk=Lu+QgaJn4srUZDML+$lvVeNJs6C4O2hCAd{DJXxnHxtR=x1=KuN`rg`x=6?Y zB!_wYLUtRS>@9Spx}6g?3Ew6;^fckn+#dQ)KK?lz-60fKlc^6NZLa50!a$%TCi)CK zO|G64D2nnkk!bLKv4WPBW^lcnf%+ __5Uo^)hnMm?O?#ENUoP(q=dqH`q)E(_CzpgNgrB z*p&cBab(%*%<62lB(RL+dthYToGzo8S?>`O8#^=JnKnV}Oiy^m1iKq})Y4GyiSU2} zBi6ec8zHc{%^~g^N!$i}fsHu@n8V!NEp&jy4d(JOKEQwt+W&uMR%Z!tPYkW9Uq4^| z{P`>M=g*(z2dyfm9j-kL9Inq%lBrB3EYch(@CmFv$IFy(jI~R`Y`YdiIRua|0f4#& zwL85Xu?mSZ7)HIjk^iOWQ*H9YaI~?Pv%Ve`BRWibeWUNK>tzi84d~!`eJND s~=bnkB9pe*9JPvT0-NSWk0vYN)_v#b!$L(sT+UXPog*0b2~ z1yt?a0436=B5f-13$cb{>dnB(gpa!!$>Ky4qq^H+J)6SRIIrByPM8Ktopl#xlC~!( zQZ;cDib#UXX$L3j*cnEAX=p#lxR7CXL|@E7B w8MMHT2a1jeapS4j~2@J?>WjgY6PKIh)RbZz%6Ei}vb2whply(ZnM$E3pYyt}S zTrdMZ(86A_Kd6_kQ*n2ksE%X`G#LfZ1h7&S#%lGVLnmeE=_K<4RVRJop1h~H%^IxP z18bJd%{mMPil}BG&}>t{n+>$WCW85Q#DyqK2!V)I!eiqFr>R0eH#y%i97J#ia3&!o z6e*)bIhsfTBPj;&SIS6KXLUsbNhd*P*|imoRGm~gy>V%rjxZbU6vKbUO!UJ3U`nx8 zD{ZM9iyC^bpCXs&D2q-I7TU1iT);A9B(q67c(r$yy1?2QlvnD4F147kpnUaZ>S!9? z?o^NX8zNOYQMi*te6mQnQ$*zxFfG)_t3;~Ij!zL7?`1knHuVQ*u8w*jeGWsxh9|I$ z*>+xjM;*0E#=a#pU(Rs1vJ2%=T?HuxrXYXCV$ uEHQsG 944hu7KQ^Sf`&_7Nrf#Rq*v-saiDQ$WIGtNrI)) z3kQPOg9%!_y-R{)iU5$vSM{pxn{-ETLkf)hGEDE2e%WP)Cr#3kKy;2^i4kCQH_7PM zl5AZRBD1XSeN)&~^uph!S91+Ots{Sf@`rBH0{#Ye +;XHHg@qn-Wb0cl`U+f9z=P` zGf~Xdc5QU7z~$|xcHZ86^xrnOBaT7hmOEX*wRd#^*CO{;&jp;9)djrIa{))9p6Xa8 z?7EG$3%hP-I_!EB#oxhv$pI&HDD@*heUGN^1a;(h=p(ylgD71q4*>b%s+DG3^$Uut z?qWKwI$vaus}^M9s;{AgvYXv~TW$}-ZMpyTPKj@n=8{T`<;nWQ8(h1k$CO(-&ZC@E zl<^)VsVEaX$`M7G2$U4<%B2`jOyV?BPU31-`k39Z>o$r1@UGilhH-=y j3jMsDLQ9yAHBUUL%)#TZjB?w6}HGPour9 zq&I0V_`ym0er+iOaKnLRLf&b{g&nL4m^(UE94%#`NI9EDY>{AanRd47%X+6yUzXX< zHt#yk5C(G=_YWNK%W`njDa`#WpJXT0Sr1>1oVKpy( z+^vS?$x^Q3ru7WB%`gHwusG>X=5$ba33qD*o)nH22cosYDlHz9m=1u`xw@+?Zb(KK zaf{X>-4nGO)4vxBTs6T63Af4UGH%6}2+TP@!f<~JeR_APpj8nG6Pv{?JoKpK{8&gi zF$U(&<|>^W1j01=**vxk7elisNY%h_e{4ARQ5ARg$u}+fCbwj`Y!-sgXy4oo=%@lg z#*LR}2*O NQ-2rW>jHGMvw_DwN@XkgZVRT&4ITSo Q3Ap769#B$R@l#myqBDxq3>P=&@8-=!=4ZPNs=ZA38JmLaINNpoms zdM~njVjhlnM?FFhNjL_Rz8!pCiF7EV{NZ|8Sj~rbq5~xG{IGluG}*E67XyuV_Jr!% z7KS^O6x*83-CcAL3r(gM-NS%^c7;wwD+_=aKSIW8eX^rnC6;xZ)c3SvdK?e){|hPl z4Td`_)g0+6@;*oD#4CJ)M0w t`TbI2A&_2 z!A9dvNxIW`w~L{qyMo95&(<=7xTi@QKUO{0(jNFGi@ilI_8AiX1kDNU2L$!*!$@#{ zS5#;AF{75_Ad$i%?qY$1#4k~FxO-c;?}+HT!om(tWk@h==$rTMeEyz@uNBmSlkHn@ z%CDN!cc>=SZ3;-V3iX0pb)=7SrH?c1(Qc7G)O&f VSMn6aT_ UlkG7FWJ68vHhPCqSnMq I_<;bxPngaRSTE$}WT(!F!MLkuEHE#!cALeQyzuBg^tvuHW3zY%Z5Cf) zzRlvPI4^(d`HUZmY@5Y}o{O~xU#rg;ex{ptUl4@B EF#(BJjfwRdjRNxe zTNViF>+6`7pssHiJU5B1;^^No-_Gs#Os8UPP}+H*bK-pz=oUQ439F3;SQmwJpVd3I zO*jef;V?KJ55ms@{MjgInAxPhPm>0dOLONESVvMCP3#EHPz_`lZP3Z#Tv|ib=~1Q* z9FI*R8QX$vTZyfbBU=YrjzOJ@I)d|1I9KLOwQ?D7Y{jY4O2T3o=g%#$AiilAk?q!T z+`W*4X&rYr2`8{>=19--h?HJ6Q||sAhRK mGj0DLIRI@!)gRX2n z?GSa3?c;$0n$Zv7sGipE(nyXjIDWSWnkQA(BX)ue<~33i=CpKIl-D^23ixg*3{lDb z^DWR7r>HA1M1^Z+k0xjMQ3lKbf*H;2oN(?Y&~zkF(U_trZS)|wD!UfoN?a;{maP$s znqS$q32F6G1HH>_-TsR5V3}<+zXG)5HuJJzbw%&;Q0YzE-6}fbRtsI>BVY*@bil7e zL@YcLi^nE|n69921g ;4e`q1UQCt@e5R33(i6KZ2~JljPggU z-XJzE->DrP?=u^PE$Tb4Yf4^N)>v)_!@1uCq|u@-D0E!MDRi84_wwit9vI$~Ox8z_ z@<6 Gf;x9T7m3Zh;Ahsoi_}1yi1iC% z#g8#L<2hay%C`Xdl5QjL*4EH^L(A8Q`OBcHGCRkXI)o UcAb7vnjDG2-Vil63CZ*{bZ^m`=@%*MWQgrHF46X)i>W#)u*6;eN39 zbocmn0Y5tgM%gCtP=|2tJQ%5ZmWO+m=k_em>sg+!Be%)uM_^Sj%9rjG?k+K^F%syF zal597)vYanSLOD=-J;)aVO8!H<-y2*luit~dqi!wb%Di{1cN%j*+C1A=F~g(u?Uv# z74AMUsyu{|Q(DZ;u%m}~Aah6XIZ2GOmF37!n1o{c1vKOs@AT^cS!5W0a CcSr$&ZyLok4ZtMU~u}CP(t43N4&<+~3vRw6t3d9Zx+kBKS%d{_%Uv1*SZKhn( z-Ok~`E-v{pCFy~Jgs1HuAg$((61(p}(UoUJ%Sf!6VDfruP+S;?EO-LVl+IkV?
hEurcz_6-^Yov)sd?z8dHl!;{gxJ1ESg zP;pr QNr*QJzzp7H+)&6C8L%q}3O8K-ZzNoPI|{PUR6%o;$FxU!hf5*t G?WA@8Y4ldC5W|Ps#y=JLsyUk6{uiJSq{_@()eKyA37NEUuY0z zxe2PFikkgTxZHlC-xF41FAa;%m{7b?;8pi{6a9_k#;fQ;zjtrj@n!^=N&r9c0P2CG z-UF!TJqVzlNAd}vo S&TR4{zKN?}ga3+MB>eJDqA`oeN8+VGi4V`%j#`J>e zmK9E-=}jTK6SeY d3nb$(1k~^A{;-C5aBt2#}>D> z@shT-Kee@uX=__d$w4znmHlyPi>^kpzXeu6Guk6^q9B4fwG}6DnoyzSEkVz0w*=vC z6=wXv-=zA^(oBLc0(iTMqT@Zl6^9jV0GF?`IQo=5V2U_)clWr 6RBhnHBX{jG+SyrUS6jBo%aWIfp_>op-Mf#CK+Ji`M8c3`BNUO6V z>6Ot9O8YmE-tr^8ofWBzLb^i9{|3^#ex&!ZBK=q)9Y& -|U{W<`2jA?-q>4F=LiKhmbGNL>}u1w`6xAZ_s@ZOw}GghD!tNOcC%Hb2t#tVj`s zbR3a(7)T%ak#=T9>ZXv+BhoGdX}2F~PgbPv3h6W2dN7do`jPf!Me3oDt|HQYDy@zU za22y3I8_I+4&F&R#4*L=A*yd+3plc+=XfMkdY;ExC_n8mSK<462ym9;zX3h 03mq=b3oL5&m N(a2=L%cLba?FG7lFDkxTz1Cqj $Fjz&ZoWLenQqdW@2#W~(*B`eXo4GGObCm1&Osk5|^zNKEi5fm;^i_+$ zuUfPA)sw2P_9N191L=ex>10+UM >(|)8gS&^PnNT(6$tbugSk90mOQXid< zhe)3oNEiG_7qcRjD5NhC>5_qT*^hK3E7DIC(wB(zse$yFAL;X~NIz9b2NCHD<30Nu zR|lTd_hK)i5A`J;^Oai$7hzd-T$G*=Me2i2k^n~c6_v#OKj&y5`ZrE#;~cjj91Wosac^ zM*W_1r4VOdpa<|`9Ossgcb{(8?F{b(rg_`AcW7-CWm4Pz`w_N@H9?Cw()L80r(5%y zk9D4Aeck5JJ f@)F4f()c^6W?1VW{;f zqx-Qpp@pDk=oHW(Xa d47ZV?%3!#S3{x`<*O6hG!EhZJrrY}6NxD~gbR?Z; zo?&AUy-?OmUkV$AORHi`sF-OWTt$Rg211)gm~C*iA=ey(>vdak%{91Q$H{x1!F5w( z%{RDiBGv+f>pRW0(BS$GxfU5*-)pXFgX??bsxi23X|7s>>lSh?Hn^^7t|bQ7HRM`q zaE;P!TxM{M!Zt3qeG}aZ&koNjJAArx;zzjdFbw2P+YZv!X7Q*-n2D3_0vkVuUF3ZX z8?z@D*lG8ih@TVqDeUv|Q`op8zltQF-dtikH6fL%G6#iOO(J(v&uZl}cMeX-YizC_ zAvAa(03Mx8ZF(#7PScYVREnz-ANdAX h>UZS_BzW@k#(`9xmBl*rqB 1C=^f+ z_;7A%fe!kZ=h%|@kdJweuJo{v`8$Q2^f7;@kyCyNuNlfo`$}BXCF*_fUn%$_KIX49 zbAyk0j1s)j$2>+0-sEHcS|K<4n7`J@M}5pA6!I}2^9YUH;$yB<%&k7=O3i$nJcQq3 z)-~?xq^ZMFrG;y0ue-ExOy3kNY}5z1oyDP|uw|8mO9Ca~{u~H>@IGRd s|iUAxsspja~j0+U37stCUwt z)5asc?FpCK6E3$WT(Nalz~!u20sr7-1?)#@e^J !YLE%)U<(TbN|`a}89L4yXz z20v3VY}k;&mS{(JUG*RjAM_vcQpH~f{o5dS*l+&);vmb((4PCtiwQ}LAo2OZzpWTH zNEPjl6yyHkOtEK%0OhY#t|&wO9K+ ze?2t*;){cZT3v{_d}u{k*`T2r`2rd=LwZ1y3~?SM=y=5|TIyUPycGX$b^j#Z|8CH$ z!_+-9tJ4DaLZW2IRCmA0X;gV%hFOxa0sY+ccf!*n}9Vd>H&Ni83GMSy(GBYO+^Ei()FEcOmBJers_dLxHnAbU; z?^bC6jMLFk759Goey?~;gx?X;`fEbY0a |WZn_5td&(OU$XP2 z5n+2JV^-`NBO^7bS+yawRIv(<$gCRE3R+P!>~d^satZ}y)mh!Nii$n2luCuXsxWb} z#}nn8sXp3McC`t;pp r*^HCNiqEyKg^5vXn%~y;^hPmgeXhIo{YH5mX9;c|o7`~tw zI~8R|n_t; y<)edL|l~j>l(QGZ=I(b|Ts}2qtizEC>IGpCe1$>({S8 z@bZ{p2_K&S-w<&=|M#E&@n3_O@!xqd{3*R)?v)D46U|ClcCnP&x_|r5JsV9d=8YZl z?;V3(gdj1|Ev2YUksz5Q9B%&wh?LBHtf{uJYv!{ZC~C4PYO-i%wSw Vpqz}R$Q dxan;YDOqGByQkqvFn1%#SZbyEi$F SU6ugQi@vmQ<#q z>zaigT6RDwApe$PWX<9|O?%`qjaoFb=7y tY%I&X-IUPIxwy3^I+Kv_+D>wA)LOon}E1LBLb9OrG>}gv5FjjvmTccyu zOjVZvGlxM%uL3*u!r9P_9XltcRLs`Ey-J47oy=RsUOvsDujG=;H43fGDV-YHX&i6L zH11VYRV$Y}Qw_Q;t%Rf0={BF+MHM?=D2ooHjd2_!Y Fn7H5DKR=GX0=RZ=j2#s8Er+5l4jXY7V{W T>G|iRhMDjMzCXQr0Xiv0;~i0kZB?i8M1FDb<43S}R1SKCMEZGcOq*3kEYc zV(N8GJl?THhXBuqS~fg&^#Wt)ed{0|9TRRV*zy=>(-K(Ux46U59R)$PQnt-vGrH8( zSstj}rkXdYg?krcczd}L%T)3OG_|8)vJ%;0Q f0;y_s;G>*&R0 =xhdJ3yw`tWAW8hsX8ySHS8N*#NSy2m&zOO!cnE*>u zHSE7EE*K~xHvmH3&`mu3juf8AK+^)+q_HzBxo6aSM!-CkIvU+Lc?aV#=^S?6W_k6$ zfoJPY(@vNbBkNwYEX%Zl_wH}4EZk0QChw;b$p@Ru{(46^Xz~8q?Uk({=FS-}_1HCH zakNv8gk!{a1mUysy0E8NOG;T2*Z`$@H>bW@h>-0S*MO52T>C zr?;>FEJ$9z1ij~iEs=q r<_Q6N(GsMmvTNT`YG2+g#d*h zg*Ga+Q|O>#Cl$gJx+rv0+CynCg+40vQ_neh0Obr)={yyN h4=CKC;jhu~`!xKJ zhQChX0~$tY-=OdzrQ6i=5%r{~Cr!ID6tc8ir)P2$^7KrRc3Bi`3Ka^w6!s`Qrtm3+ zZ_=(f?fQ(uw @2OvKX -+__=bQ4h6&n!VSu!Z3=;n+5bxLkq2p*Gd1rt~Q6TLTKthv1g0Vr; z8lRF|NEbKFm@W>G?n`mGmGp|2nL$?uNdHwJ=dJ-cJ41*}X5;AOAVv7lbs!h!fDB_U z+sHg2?~ <_@)_8JhlPA~i@MM;`A0|CyfQ-T2Hhw%#D33D;NGJ3N z1Va@U2p54%0^vttRv f<3Ssaw^9+<0~S;kJL>Pa^9NxdZ*{i4P#{f0-LbCW%L;DKz9D*I(6#_014g4@&sh z+3ZIj?W3q5bzlWoYVsS*W^`PXwvZ9&) zBAy#D2nnOwf89(0dP{WT6_rfNPl-MClxAd6k%i5O!hp)nRf7tDTVT4_{UF z(d3658sinwizUbP@`1k1v>fOk4UyI%RG&f!?hf?y5c$^-HZ8862eI9UUO!JNe9%*) zNh*M%d>m>IIHH~~yB60MSxQ<&G^861NoQUqRLGsJ9vr&M%`A^>eyFi&ZA>yj_s=3* zE0flb;8YEK1V55a>H0nr1w>ht{tc?}$TLu-A)->Y@EqtndM@4h@>%DXXw0|am7d>^ zeg~LyNFxl9iYf+k7^7DiQU92+Rx?s!5Xvgeh(qKz%+(=y20?)-d %gml1!4x-ueK(D~EXuQRB-6{qAuMo`k| zdyvEEw^!q6@a}jBYh}zaeHUG8W2gW_70Tnx^Rc1V2o5#C#X6V;xxJS82(CNWy3rw> z*bxG%*fv;4^y2p+U j tuSXZq<^)PoCL4A0B(BSs9gS4Hz#%)&)HYzZN@P3I>`DQi#{ Y`sSv)6>=7YE9uu*X zoE6ZPVJyKX(VxO0Hb?Z2oEkc)>X)}at?F0TKV{(LH(42<<2i|j9pazE!M@Y*GY4tk zODEA0bYAR2=Rd1CAII-Qp3S05h#qJLV30#O)C~Y`&*Sk$rS0p<>nxc=%;mdZ?J{$- zs?R0A1+Mc8><^#2(Tu_QKQIQv%q_!l>lZi~K6eMi=f8~p5<1w7JkXy$9}l%Sd4C%H z6(pVkJa2QRr#_$jHeeAv)t^K3FQ5aD{%ZO=kh}rG9#V(@6?EW%UDX%T-v#{zB) kB+yOGYpV$(y9Q{qArzu>LOO=22w2U4My@y_x(za7@ETEG#1e8ad<``S*xiXr>DF zMgIXJ4$RHdD9Z$nqwOES(NqX56|;yR1K h5uQrhHA@W)i`5q!?8ptFfXPd|*BCj9wV2*hZsGra9 dQ0mY5S-#uZ74DS({!AYKfBH?N`hPJc19MEg^=1G7 diff --git a/flowplayer/flowplayer.swf b/flowplayer/flowplayer.swf deleted file mode 100644 index 63f3934a9e8b6e5f90fd0e9cdbf2b0f62e860897..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110762 zcmV(#K;*weS5pcJNCN