From e64ab974df242b25ade46d9795294ae859060355 Mon Sep 17 00:00:00 2001 From: rvelices Date: Thu, 5 Jan 2012 21:35:25 +0000 Subject: [PATCH] feature 2548 multisize - sharpen + watermarks (partially implemented / no test with imagick extension) git-svn-id: http://piwigo.org/svn/trunk@12851 68402e56-0260-453c-a942-63ccdbb3a9ee --- admin/derivatives.php | 97 +++++++++++++++- admin/include/image.class.php | 104 +++++++++++++++++- admin/themes/default/template/derivatives.tpl | 61 +++++++++- i.php | 43 +++++++- include/derivative_params.inc.php | 5 +- include/derivative_std_params.inc.php | 43 +++++++- themes/default/watermarks/Owned_Stamp.png | Bin 0 -> 42282 bytes themes/default/watermarks/Sample.png | Bin 0 -> 21395 bytes 8 files changed, 340 insertions(+), 13 deletions(-) create mode 100644 themes/default/watermarks/Owned_Stamp.png create mode 100644 themes/default/watermarks/Sample.png diff --git a/admin/derivatives.php b/admin/derivatives.php index fbf1ccffb..fde3e0db3 100644 --- a/admin/derivatives.php +++ b/admin/derivatives.php @@ -28,6 +28,7 @@ $errors = array(); if ( isset($_POST['d']) ) { $pderivatives = $_POST['d']; + $pwatermark = $_POST['w']; // step 1 - sanitize HTML input foreach($pderivatives as $type => &$pderivative) @@ -86,10 +87,55 @@ if ( isset($_POST['d']) ) $prev_w = intval($pderivative['w']); $prev_h = intval($pderivative['h']); } + + $v = intval($pderivative['sharpen']); + if ($v<0 || $v>100) + { + $errors[$type]['sharpen'] = '[0..100]'; + } + $v = intval($pderivative['quality']); + if ($v<=0 || $v>100) + { + $errors[$type]['quality'] = '(0..100]'; + } } + $v = intval($pwatermark['xpos']); + if ($v<0 || $v>100) + { + $errors['watermark']['xpos'] = '[0..100]'; + } + $v = intval($pwatermark['ypos']); + if ($v<0 || $v>100) + { + $errors['watermark']['ypos'] = '[0..100]'; + } + $v = intval($pwatermark['opacity']); + if ($v<=0 || $v>100) + { + $errors['watermark']['opacity'] = '(0..100]'; + } + + // step 3 - save data if (count($errors)==0) { + $watermark = new WatermarkParams(); + $watermark->file = $pwatermark['file']; + $watermark->xpos = intval($pwatermark['xpos']); + $watermark->ypos = intval($pwatermark['ypos']); + $watermark->xrepeat = intval($pwatermark['xrepeat']); + $watermark->opacity = intval($pwatermark['opacity']); + $watermark->min_size = array(intval($pwatermark['minw']),intval($pwatermark['minh'])); + + $old_watermark = ImageStdParams::get_watermark(); + $watermark_changed = + $watermark->file != $old_watermark->file + || $watermark->xpos != $old_watermark->xpos + || $watermark->ypos != $old_watermark->ypos + || $watermark->xrepeat != $old_watermark->xrepeat + || $watermark->opacity != $old_watermark->opacity; + ImageStdParams::set_watermark($watermark); + $enabled = ImageStdParams::get_defined_type_map(); $disabled = @unserialize( @$conf['disabled_derivatives'] ); if ($disabled===false) @@ -106,11 +152,15 @@ if ( isset($_POST['d']) ) { $new_params = new DerivativeParams( new SizingParams( - array($pderivative['w'],$pderivative['h']), + array(intval($pderivative['w']), intval($pderivative['h'])), round($pderivative['crop'] / 100, 2), - array($pderivative['minw'],$pderivative['minh']) + array(intval($pderivative['minw']), intval($pderivative['minh'])) ) ); + $new_params->sharpen = intval($pderivative['sharpen']); + $new_params->quality = intval($pderivative['quality']); + ImageStdParams::apply_global($new_params); + if (isset($enabled[$type])) { $old_params = $enabled[$type]; @@ -126,6 +176,22 @@ if ( isset($_POST['d']) ) { $same = false; } + + if ( $same && + ( $new_params->sharpen != $old_params->sharpen + || $new_params->quality > $old_params->quality) + ) + { + $same = false; + } + + if ($same && + ( $new_params->use_watermark != $old_params->use_watermark + || $new_params->use_watermark && $watermark_changed ) + ) + { + $same = false; + } if (!$same) { @@ -182,6 +248,7 @@ if ( isset($_POST['d']) ) else { $template->assign('derivatives', $pderivatives); + $template->assign('watermark', $pwatermark); $template->assign('ferrors', $errors); } } @@ -224,12 +291,38 @@ if (count($errors)==0) { $tpl_var['minw'] = $tpl_var['minh'] = ""; } + $tpl_var['sharpen'] = $params->sharpen; + $tpl_var['quality'] = $params->quality; } $tpl_vars[$type]=$tpl_var; } $template->assign('derivatives', $tpl_vars); + + $wm = ImageStdParams::get_watermark(); + $template->assign('watermark', array( + 'file' => $wm->file, + 'minw' => $wm->min_size[0], + 'minh' => $wm->min_size[1], + 'xpos' => $wm->xpos, + 'ypos' => $wm->ypos, + 'xrepeat' => $wm->xrepeat, + 'opacity' => $wm->opacity, + )); } +$watermark_files = array(); +foreach (glob(PHPWG_ROOT_PATH.'themes/default/watermarks/*.png') as $file) +{ + $watermark_files[] = substr($file, strlen(PHPWG_ROOT_PATH)); +} +$watermark_filemap = array( '' => '---' ); +foreach( $watermark_files as $file) +{ + $display = basename($file); + $watermark_filemap[$file] = $display; +} +$template->assign('watermark_files', $watermark_filemap); + $template->set_filename('derivatives', 'derivatives.tpl'); $template->assign_var_from_handle('ADMIN_CONTENT', 'derivatives'); ?> \ No newline at end of file diff --git a/admin/include/image.class.php b/admin/include/image.class.php index 53a27b924..03cf419a4 100644 --- a/admin/include/image.class.php +++ b/admin/include/image.class.php @@ -41,6 +41,10 @@ interface imageInterface function rotate($rotation); function resize($width, $height); + + function sharpen($amount); + + function compose($overlay, $x, $y, $opacity); function write($destination_filepath); } @@ -258,6 +262,31 @@ class pwg_image return $rotation; } + /** Returns a normalized convolution kernel for sharpening*/ + static function get_sharpen_matrix($amount) + { + // Amount should be in the range of 18-10 + $amount = round(abs(-18 + ($amount * 0.08)), 2); + + $matrix = array + ( + array(-1, -1, -1), + array(-1, $amount, -1), + array(-1, -1, -1), + ); + + $norm = array_sum(array_map('array_sum', $matrix)); + + for ($i=0; $i<3; $i++) + { + $line = & $matrix[$i]; + for ($j=0; $j<3; $j++) + $line[$j] /= $norm; + } + + return $matrix; + } + private function get_resize_result($destination_filepath, $width, $height, $time=null) { return array( @@ -397,6 +426,18 @@ class image_imagick implements imageInterface return $this->image->resizeImage($width, $height, Imagick::FILTER_LANCZOS, 0.9); } + function sharpen($amount) + { + $m = pwg_image::get_sharpen_matrix($amount); + return $this->image->convolveImage($m); + } + + function compose($overlay, $x, $y, $opacity) + { + // todo + return false; + } + function write($destination_filepath) { return $this->image->writeImage($destination_filepath); @@ -415,16 +456,17 @@ class image_ext_imagick implements imageInterface var $height = ''; var $commands = array(); - function __construct($source_filepath, $imagickdir='') + function __construct($source_filepath) { + global $conf; $this->source_filepath = $source_filepath; - $this->imagickdir = $imagickdir; + $this->imagickdir = $conf['ext_imagick_dir']; - $command = $imagickdir.'identify -format "%wx%h" "'.realpath($source_filepath).'"'; + $command = $this->imagickdir.'identify -format "%wx%h" "'.realpath($source_filepath).'"'; @exec($command, $returnarray); if(!is_array($returnarray) or empty($returnarray[0]) or !preg_match('/^(\d+)x(\d+)$/', $returnarray[0], $match)) { - die("[External ImageMagick] Corrupt image"); + die("[External ImageMagick] Corrupt image\n" . var_export($returnarray, true)); } $this->width = $match[1]; @@ -479,6 +521,31 @@ class image_ext_imagick implements imageInterface return true; } + function sharpen($amount) + { + $m = pwg_image::get_sharpen_matrix($amount); + + $param ='convolve "'.count($m).':'; + foreach ($m as $line) + { + $param .= ' '; + $param .= implode(',', $line); + } + $param .= '"'; + $this->add_command('morphology', $param); + return true; + } + + function compose($overlay, $x, $y, $opacity) + { + $param = 'compose dissolve -define compose:args='.$opacity; + $param .= ' '.escapeshellarg(realpath($overlay->image->source_filepath)); + $param .= ' -gravity NorthWest -geometry +'.$x.'+'.$y; + $param .= ' -composite'; + $this->add_command($param); + return true; + } + function write($destination_filepath) { $exec = $this->imagickdir.'convert'; @@ -496,6 +563,8 @@ class image_ext_imagick implements imageInterface $dest = pathinfo($destination_filepath); $exec .= ' "'.realpath($dest['dirname']).'/'.$dest['basename'].'"'; @exec($exec, $returnarray); + + //echo($exec); return is_array($returnarray); } } @@ -611,6 +680,33 @@ class image_gd implements imageInterface return $result; } + function sharpen($amount) + { + $m = pwg_image::get_sharpen_matrix($amount); + return imageconvolution($this->image, $m, 1, 0); + } + + function compose($overlay, $x, $y, $opacity) + { + $ioverlay = $overlay->image->image; + /* A replacement for php's imagecopymerge() function that supports the alpha channel + See php bug #23815: http://bugs.php.net/bug.php?id=23815 */ + + $ow = imagesx($ioverlay); + $oh = imagesy($ioverlay); + + // Create a new blank image the site of our source image + $cut = imagecreatetruecolor($ow, $oh); + + // Copy the blank image into the destination image where the source goes + imagecopy($cut, $this->image, 0, 0, $x, $y, $ow, $oh); + + // Place the source image in the destination image + imagecopy($cut, $ioverlay, 0, 0, 0, 0, $ow, $oh); + imagecopymerge($this->image, $cut, $x, $y, 0, 0, $ow, $oh, $opacity); + return true; + } + function write($destination_filepath) { $extension = strtolower(get_extension($destination_filepath)); diff --git a/admin/themes/default/template/derivatives.tpl b/admin/themes/default/template/derivatives.tpl index e0796024b..59f6344a7 100644 --- a/admin/themes/default/template/derivatives.tpl +++ b/admin/themes/default/template/derivatives.tpl @@ -23,6 +23,42 @@ {/literal}{/html_head}
+
+{'Watermark'|@translate} + + + + +

+ + + + + + + + + + + + + +
+ @@ -33,6 +69,8 @@ + + {foreach from=$derivatives item=d key=type} @@ -65,7 +103,14 @@ {if isset($ferrors.$type.minh)}!{/if} {/if} - + + {/foreach}
{'Crop'|@translate} (%) {'Min Width'|@translate} {'Min Height'|@translate}{'Sharpen'|@translate} (%){'Quality'|@translate} (%)
+ + {if isset($ferrors.$type.sharpen)}!{/if} + + + {if isset($ferrors.$type.quality)}!{/if} +
@@ -76,4 +121,18 @@ jQuery(".dError").bind("focus", function () { jQuery(this).removeClass("dError"); } ); + +function onWatermarkChange() +{ + var val = jQuery("#wSelect").val(); + if (val.length) { + jQuery("#wImg").attr('src', {/literal}'{$ROOT_URL}'{literal}+val).show(); + } + else { + jQuery("#wImg").hide(); + } +} + +onWatermarkChange(); +jQuery("#wSelect").bind("change", onWatermarkChange ); {/literal}{/footer_script} \ No newline at end of file diff --git a/i.php b/i.php index 515876535..5ab032c90 100644 --- a/i.php +++ b/i.php @@ -269,6 +269,10 @@ if (!$need_generate) include_once(PHPWG_ROOT_PATH . 'admin/include/image.class.php'); + +ignore_user_abort(true); +set_time_limit(0); + $image = new pwg_image($page['src_path']); if (!mkgetdir(dirname($page['derivative_path']))) @@ -281,17 +285,49 @@ $changes = 0; // todo rotate // Crop & scale -$params->sizing->compute( array($image->get_width(),$image->get_height()), $page['coi'], $crop_rect, $scale_width ); +$o_size = $d_size = array($image->get_width(),$image->get_height()); +$params->sizing->compute($o_size , $page['coi'], $crop_rect, $scaled_size ); if ($crop_rect) { $changes++; $image->crop( $crop_rect->width(), $crop_rect->height(), $crop_rect->l, $crop_rect->t); } -if ($scale_width) +if ($scaled_size) { $changes++; - $image->resize( $scale_width[0], $scale_width[1] ); + $image->resize( $scaled_size[0], $scaled_size[1] ); + $d_size = $scaled_size; +} + +if ($params->sharpen) +{ + $changes += $image->sharpen( $params->sharpen ); +} + +if ($params->use_watermark) +{ + $wm = ImageStdParams::get_watermark(); + $wm_image = new pwg_image(PHPWG_ROOT_PATH.$wm->file); + $wm_size = array($wm_image->get_width(),$wm_image->get_height()); + if ($d_size[0]<$wm_size[0] or $d_size[1]<$wm_size[1]) + { + $wm_scaling_params = SizingParams::classic($d_size[0], $d_size[1]); + $wm_scaling_params->compute($wm_size, null, $tmp, $wm_scaled_size); + $wm_size = $wm_scaled_size; + $wm_image->resize( $wm_scaled_size[0], $wm_scaled_size[1] ); + } + $x = round( ($wm->xpos/100)*($d_size[0]-$wm_size[0]) ); + $y = round( ($wm->ypos/100)*($d_size[1]-$wm_size[1]) ); + if ($image->compose($wm_image, $x, $y, $wm->opacity)) + { + $changes++; + if ($wm->xrepeat) + { + // todo + } + } + $wm_image->destroy(); } // no change required - redirect to source @@ -301,6 +337,7 @@ if (!$changes) ierror( $page['src_url'], 301); } +$image->set_compression_quality( $params->quality ); $image->write( $page['derivative_path'] ); $image->destroy(); diff --git a/include/derivative_params.inc.php b/include/derivative_params.inc.php index 42bdfb7d5..be28b6589 100644 --- a/include/derivative_params.inc.php +++ b/include/derivative_params.inc.php @@ -282,7 +282,10 @@ final class DerivativeParams { public $type = IMG_CUSTOM; public $last_mod_time = 0; // used for non-custom images to regenerate the cached files + public $use_watermark = false; public $sizing; + public $sharpen = 0; + public $quality = 85; function __construct($sizing) { @@ -291,7 +294,7 @@ final class DerivativeParams public function __sleep() { - return array('last_mod_time', 'sizing'); + return array('last_mod_time', 'sizing', 'sharpen', 'quality'); } function add_url_tokens(&$tokens) diff --git a/include/derivative_std_params.inc.php b/include/derivative_std_params.inc.php index 41056cadf..9377b4c67 100644 --- a/include/derivative_std_params.inc.php +++ b/include/derivative_std_params.inc.php @@ -28,12 +28,24 @@ define('IMG_XLARGE', 'xlarge'); define('IMG_XXLARGE', 'xxlarge'); define('IMG_CUSTOM', 'custom'); +final class WatermarkParams +{ + public $file = ''; + public $min_size = array(500,500); + public $xpos = 50; + public $ypos = 50; + public $xrepeat = 0; + public $opacity = 100; +} + + final class ImageStdParams { private static $all_types = array(IMG_SQUARE,IMG_THUMB,IMG_SMALL,IMG_MEDIUM,IMG_LARGE,IMG_XLARGE,IMG_XXLARGE); private static $all_type_map = array(); private static $type_map = array(); private static $undefined_type_map = array(); + private static $watermark; static function get_all_types() { @@ -60,6 +72,11 @@ final class ImageStdParams return self::$all_type_map[$type]; } + static function get_watermark() + { + return self::$watermark; + } + static function load_from_db() { global $conf; @@ -67,6 +84,8 @@ final class ImageStdParams if (false!==$arr) { self::$type_map = $arr['d']; + self::$watermark = @$arr['w']; + if (!self::$watermark) self::$watermark = new WatermarkParams(); } else { @@ -82,6 +101,8 @@ final class ImageStdParams if (false!==$arr) { self::$type_map = $arr['d']; + self::$watermark = @$arr['w']; + if (!self::$watermark) self::$watermark = new WatermarkParams(); } else { @@ -90,21 +111,28 @@ final class ImageStdParams self::build_maps(); } + static function set_watermark($watermark) + { + self::$watermark = $watermark; + } + static function set_and_save($map) { global $conf; self::$type_map = $map; $ser = serialize( array( - 'd' => self::$type_map + 'd' => self::$type_map, + 'w' => self::$watermark, ) ); conf_update_param('derivatives', addslashes($ser) ); file_put_contents(PHPWG_ROOT_PATH.$conf['data_location'].'derivatives.dat', $ser); self::build_maps(); } - static function make_default() + private static function make_default() { + self::$watermark = new WatermarkParams(); self::$type_map[IMG_SQUARE] = new DerivativeParams( SizingParams::square(100,100) ); self::$type_map[IMG_THUMB] = new DerivativeParams( SizingParams::classic(144,144) ); self::$type_map[IMG_SMALL] = new DerivativeParams( SizingParams::classic(240,240) ); @@ -114,11 +142,22 @@ final class ImageStdParams self::$type_map[IMG_XXLARGE] = new DerivativeParams( SizingParams::classic(1200,900) ); } + public static function apply_global($params) + { + if (!empty(self::$watermark->file) && + (self::$watermark->min_size[0]<=$params->sizing->ideal_size[0] + && self::$watermark->min_size[1]<=$params->sizing->ideal_size[1] ) ) + { + $params->use_watermark = true; + } + } + private static function build_maps() { foreach (self::$type_map as $type=>$params) { $params->type = $type; + self::apply_global($params); } self::$all_type_map = self::$type_map; diff --git a/themes/default/watermarks/Owned_Stamp.png b/themes/default/watermarks/Owned_Stamp.png new file mode 100644 index 0000000000000000000000000000000000000000..1e893440a8677459327da80190ae0e5a37ee358d GIT binary patch literal 42282 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 literal 0 HcmV?d00001 diff --git a/themes/default/watermarks/Sample.png b/themes/default/watermarks/Sample.png new file mode 100644 index 0000000000000000000000000000000000000000..d976199ede5648b6738d62cb454395e57b8db3e8 GIT binary patch literal 21395 zcmdUXd0Z3c_V_Vc-)+cKGF&U2n~ zzUOuUhf>ityzLF;`Yh!>}(tm_0LKVZ82%dIAN* z>`T~fo*Qp=V!tsktnuu7GS<{1@MjTySLMZ4T^(gewiSkT@4=Q1rzMAQ9RzAGx~)>= zmYy7f*`=pnaC_L-x1~$WuBKu(qFWgeAcKqCw(rOU%93A}US9eG1#@}$)zZyBSrsf! zwSkL{DX-6NPTe*(D5=mIt9YGRw(33EovCbiBIfeEZ-bvzST4FyROUQNhCR7S83Y$( zIen*YyS6%9VqyF`+s$lB-3jX<@OLbrZ^>Cs)zIyJn5rS!}oplOAf46zF9|hoK_yYF9q8}&ultHvNhgErDOg@uqumfb z7WY_&q~%xj-D01!722&_TS04u zpT*VM&}xjZF_Xv|kj1Jdf72_zEZQM-rC{}C9+Elv_1WK2Q`|fjt-!FE z4>g+(%*HJ0?np+*2)HS+<@x&GHq_dfwOQ ziUob{c$H*RCDtS&gVC!@qza$HC=Z157D)J6KR(tWx2b=cqu!^z6;^%+scjA|Ao>#uLscL1sBHy2!WiQr-+Wt7DZ1*9@ z!%lX5Op#HTX(C9Te8hC-%|MCG<{i?haJ-A{;CQ+AGH?^ej;(HKeptz;-|YNI;?Ub% zd}yG>)T{YEg4BD@ehjb&tBEZ$QM7F3Cno~9)zj)2*ELUkMPk&fD%z8>+mBV`za72|13vg4fDV^?Fs-KnM3yRwSH_gGmnbj8c8!SdjE ziiP8Jow{zScVOX8Yos}IFK4$|4;o;A(cni z^B`$II9LHVD2Hd^&bxd4n6_aNr}TD6+~)ca0f*=Z)!jVOZ6r*=B0PhT?<@lV#BBI) z7B4Oh^uh6I+J_saE33a5rgtnGe%}(|q>(s89nX4sPW6=~XbA$3>qjDc86eTDU>u5M zM~{z7U8wuTD7pn1a9l%=c{S1jhn>!)lMh#ak|Ri6!rt=u+fB2w z;4t0qjcNOK5PP?_-rEE~Y)V9{_h)$PVp8oC^)?pZN~F>*xZar)(hWd<)(PP*ed~+0 zZ-&%MT!ZO=r1QSL(_9rX5Si-KqP2M$wVgTZEm?qDy01%9}nVz$xeRJFJn zoXcBh_u=s%o;4dgw_%<&D2biFW%c^P0Gsg&Ka4)UDc+PyIpe>KG^Ut6G21B`&v`ArFeP0<*#6KW6h{t;ETvqA?f1 zu}0KzW|wrR#m2H2M>6EKE#aW)kWiyz!~^JTP)dTz55mi_7rY0ZTn zOf4j3sN)avKafVp$=53rUDnL`4uPh*m&uB+^^Dk6ePNI3-RP9ddxA5Su&YjouiTsL z(XMh(z@VdD`H!##Cb873k@~NC(XAdj!zG`i86-Xy z&r1_Bic@3>IyVlRblou9IS zbXc5U!l!N2Jo2Ld^w1Wh7m|W$2=`Y;ndY$CZ|ZCRd!=-XdwT_Y3m-h-4A(KsmDg4Z z)Gl-0vnWg@2op4TfaP$`1x(w|IH#PuO1_~EK)p51Bt2o4YffnWratrkxS2Ijnjojk zpaJX6b(efBz+h<=S=I5LS7_bgE{81TSM1DZ z8Jkn%uWrrVc;>zn}ec?ozGHxxfx>zTA9`tBEf4#x2wyHftp(uql)q6 zH80^snV?N*Rw~qr|g+BAJu8ICnXfd(q#=Q0(ACsQ_cQ_C1cXDf$$G|NXFr;W)K6 zPuJNU&u$nH~f9TQo0WD*3V+Pp0GzswV19~oGYG$=&^YLVTUwf7284t`2S5J z0=5IgjgIU@E6S}Fu_W}&^4nhQ!FbR?H4HlSpT&2Vjo)6z!mj?l>9gG8_a>tK11Z7e z0dH@<>fSyw#!mM6sP6-INf*q+joj>7q{rNlT~a6F8cLG3;-rK1IlCPTc3$?u_s?$p zj%q1Y==2>Q-PO6bqr_OYZpiA0UDAyC_?m|Mn%_hBv7ao7*(LqyL)_F*gfB%A{^_8P zT%?%G%Zt;l`URlEkU4j%emguUVf0EX@$;5iW5fb>JMqmF9K@C)xF=(nw!F4;O{de@ zLU&ez=TnPj8Zm4(G78fmCQ)U|FSY*qBcM8@`=)8T;z(9aCu>~HG(e(}$kR-cdc{j^ z=kQ3{J?(Q}{31C$(F&@?zIgWH0!g^p6WtZ{kFgu#W&b`-lGA(U3?;3xX_vR)RhN4KynXiJN2G(&c^ntyw4{eEv~~<0w-Um2fkXwS|ZTB#%H9vjJ5>{ul%^Rjt>L z8L*7GE%5vZ-+IPUrO)vUd6!p-gDFHp(5Pp8p~)RF1H_~~2$50Du510jW(F(gekQ2- z3#1K&tbq~MY^>oq#wxdcNgKUr?{r-!OX8AgRb&mnAQf9mBQFHh((|O6sC@6OLLpFt zI5(NOZCPtW8EMp-V9zAat52stIvK*ZH9zmX$-Cu?tT)I0rwwu+Vg-@`x^t^&CED`a zAYv^`DZ|S-5vtR^zNHB~ z4}qKMW}9lno)r+VmFrsbGMk1VQC#gXtF)&;<(0XHGHW+aC*0V)A@B0_=nUuk(H`@q zoFV492r7oB<$7K9Lr(NWM^2hPnx?vnvF%;2aiLO8Dx&~0dViVvReXBfOM#jTnjBb; zuXY-6&rWNB@V1?_Fg>mp?t-JOJ7vNOKB%X-v}H5s7WqPTMzIF*g#l@;NH_o35fR(c zVxe^R|F#&J2ErjY2x{t}5Iz8ZQntHsrzTHhtOTTRG*%=@ErT6#_gRR8kd6?FF;Je` z%d~}T!R-8Pl`?-(Y%NrhthU3s59l+QgG)dNIpJY!%NUE99 zAoR)4NDjA%fcIITG}Bu~zn`9=!*e03i>c!SSfJeJE>Z!+mw_P6UjNJqx1RxY3-}p2 zodNxtXX83b_$EOGfl9omq8Xw(3MvCz2`+vKb_4X>AOy6sPA}Jb(eGIbH~fZ6E|#r; zkYHeJ0M43ZiGl*5w6;V+fl%UNkt$3r(J77|3@KK5F5#A=WxcrW{J+x+E%Tjv*&+QO zTZ=h07l5rkgIZa(^t?rl-w)G;oBA6{@il)W zDz7a!pdsFV2#0cB%0EZ3CMWFPn^j}jYfPL3)eKVid<#e_B#`%%^>7US34ePtL3QY- zt$tYAtGhExg2|yE?Gp-Js1e0mZ-SDY>+DBcn?+W6mp(f4s84-U1NF9J)|~Nx|z1%uPyKcUE0|>YsgqC)9{1 z*>cR)+lrQHjwSYktdo>g>q?j}9*Bi2h>MMO7=<_W9-@(H<0vSvVg5&{&}n@=AP9pu zEHp_?#3@m=&^Xxz1gAfgnO5Y}8V|?VaZfU`r8Q1Cl+_^Hu}2A86kZb-g`VMd93i3^ zktodEgDF?TQ-4NJ<#BZ)6o&FqOfyhdE%mmzEA?6;;A!>bqBSc!X*TKOn809U z<#=30P*=jOxcGRR_}9S;A%S1|RrB}`2%^zkeH!Z;W|cnfhvD}W<<~X!TQt9f`2G9d zirBx<v^~;ya=>T*yL-qTA4WHH*&L6@bw!~= zD(i-HOB;;Fp~`k+>6$yKyB4E>_VMm4SqtT%m4_wMyA9*qx|on^hrw}^${kJ;y{i`V$NC> z#g}o4God~01cccRguo1hXZyZDG{rXXbhuB^1W9+YmiCL1w)9y^tNhOpu9YPcW$y>x zjMQP^JgOuf-ie4<-_3)5yB8fnLC=PHpxzQ_dp{n&%XToe5!Q)h(C>v zsG~C^yE5c8;*G4=ie@|{QAo5-T?Zj#1;8Bcr3B018N;?(tXYLONNPH(Bp+wuk=Dwf z8@Lh=Lrl=q_{90T0A>4b>0I*7fval&Kr45%HY!lQ??q1{JzGn?k$)E{>#3iLp@rl* zg!?Htq#=Q$?bC8m^{Bj~DqD$tIA*f^*8+_gUq0n5UTCpZVoruA0%xjJoFkUM zfl2^~p1G0tzH9{#AE0>Z*UbQ=N70juXo9}NpxC92M!dbeqcIXlGH@94VwZmXgZlN! zJv6QSikO}O1m=#fuYUbbBRz!u?N^3Rf&Fc`UE%}j86pKPCY2l{Jd~g2Ti*tFM>K{H z4bZuPQtT`n75iIvf<(oNJ= zz3DgmkVj21>X+HBIp1_4f!-YsM-{Yx{vpkhA z`j9(1fuZPU#Nh0@d0T~0dp#KM(KZvGPs>LqO-yk?I1NrLOUz+rsMdT;J1lrAR>p{$ z*OMvQ{JRdusezqp@~zW_r4lcPi! zZY7e5!Px?UCG7{;zs8AvS``@W#mkn@(LiN-O10X8md1#>^8JL%?Es7ssSr@0|E-^O zg7E)_S~CnaF2=;I8{L8J&(?#rgZ<=IYG8Ae*SN=cQ5oF|^lA)Vr9gwITxfc{9@-Mc zhVhPF6;}=vTSt2v@WSP`jG0e;6MT0j@(Q$VcsPG3UPl=PH;Z62hE%t+CIjy*KtY69E-}F3dt0-~ao1|A%`* zs3Fo_|JkDj)yD>ut%6X9#4J^TfGtui7Ga>Th^vRFtfp}Le*Q7@@W0ea(W#^Vb{*Dn zkJVUfM(OY@tt)EIhKUv*70{3c6(@^)rs7@Vk?$e%nK9ksdUf$Wzpj(xp&DmeUR~I! zElf%9k+y^_!B3HVBKeKV7`v{hc3^;nHb`_VSS@UJYPnPYqcpK!BZkQV4-d&}Q_>9==W5_O69_CHHaZcZR%-FUeJ zrwd5N3dpC7ga(jxx&e0Sw#!Yzd52Q=jRAJktsG3a#H$c~W;cr{MgX3Ehv$k2KT6og zw>;j{81;)xU1;5MK)R&H$t4?5VgxD-q!he8u_XE22`g%|Q?~SA;(R~;axg#Q1%XnS zd>+*Pn*%-FPt=g`Vsaani<-+g&O+dS{XyaFF(PieEa8Fnmdd*9LzJOeSoP6`BdkV| zvTj z7ND=5c&DX)X$VJZdrQp}gdn(gnq^BcE5Wjauc+*65u*T)F^d?5@ZA!GqtZ5bB5z{` zN~7H#j1*ML@AUQUOHI2igh`xJ$_a4fG30IG$qhfMd4KQKbzSUdw?r}hxnTcm1~Lqf znFub}7}TBYzlrjIh?}~h_RxEM@4@3@?6#xQKRRqgD0FsT(hA`Ethyyb`i5G#Zo3k{ zzT)Psq`vRZ6{i$h&+1P>yzA`N9xnRPDV!UchP|=>;FoFmRGAjGq_IfBD=T3U<4|d3Ss}%W?C@GQjcmySEjj!ypH}``KEaBU)oA z+7TKJ3OcC*w@$eT&zL%f^o)3rw!bPzfkAOW=LR&Yv}xtPbblv~t*&+5g{Pp^Z0grjo z`p+QN$BMYG-|CCmxK2=28n0SAPUprlj#@YO7x-}a4B>u^JO@fPlnBu%&n>>YRx%J6 z;JG7GYJon61rAQX|G~t(*T|goK;h;%*6?`74eLSjXM5k0rQ@za(GAsusv;bnww~97 zbK1$77NC1$5j%q8=htu$?Q*GyK=>la;=FGoYwOSfyXNg!Gf8ECg;*{az4iCqP0%~?a_N)Ab5JBae(Q9%l*YQes8_Ic)R z&ZKq|t-4S!WDuikLq{K--~*%~OvhD~N=$^q2kchYNBq_55!Ti2x4blJ)F)X1FJ1+& zp=ZW90)@y~@cSeN6^_br0y+gwdj-uW(x*WHBVEkUz_I($zYu^91{~ms*Ju_zroMy| zm=yNh@lRjIrUU!P3gZSLg+7t{oxdRh6I$z08v%Ae&=tZ7N1(iaxp%$Yz3M!;bLG!J zGux`rFGwbX`kh&SMtim{UI2gIXBW1SPW#^EF*A`>q|1BwK6UVmvdN*stKy#4BX`I@ z;!|Onrn}Le>9oJ$?=6(Il^G``CWak|x~83yLgynPFST;c+wz{)B0vIT?St!Jj}nZ7 z!?<`=D=_MQUZ$FUDKweqUL4Y>|psPg!n*&Z0P3wg+|C1T})1`)4Ve*%tk@jA>73cR9& zwX9_YU}p~9yB)LT+R5S+l{Md$!s9{3Zv}pHuO==QU>nT}^`BqxAb5J!>cY&e@;2l^ zj??Io5z(Yy)S+heBHF90+8h?ZS|WFV~NLMAxKne_Z=+ddhuXgQ^Ss1h3u_3GE&^{J7tLDa~lw1J}~tTAk`WH1`Wo6+L- z5)y9JhzaSRcVl_ya(6|wy80{s5gUG&16^(Q>*GM(p}8vu<8G@p=m>PM!!&_d?CRF) z&=a%eY7(G7cZ^lqZ?spr)lfBsE_D_ap9#_L1Qq$x;-CkFPE{2$?a>8ouTdkxG}xv@ zP@noKNEZO7>NnJ2RB*tb0u}L#LsSHRxp8j%rw$Lc)X(y>Uyh0PU_V7^5(|936#TIa z`X0YOU9k35dJAa2U){2w;Y6|p>7NOiuAKMMq1xQK5O3fTmLp@sh96CaLc2y3y9;ug z=TxG5qqhtcdGc$bJu3~^ zQ{i1FREwgDYdDEcu_=i>XCq>uR`krj(t1QpEmOjUX6V6j;sdJ$!oT#8ke(clj<2`h zudJSRIeqf%4^hQV{l0ivxSQi8-lr$z-Y2G78RP^tE`+UAEN=GC zW(>lq&@Rfy{;D;Fh*wh% z)9#0G_j($I9RZ!&G!=9)jC4yc1=R+@)9w9Jah~~b6>pyLHdjENv~GD%Ysh;2&-G$C zqEL}L=^lYp5fQwPNw-0~N-KohhCTwrQcrOZXpBms2P4GU0s|B=dV4Tnl{Fu8jVjFa zIOO9XA4_j@%aGsE8*2!6D;yiG-4*)vptt$Ul;NaTm#w&9GQG4{N$wD4+#&H%c{9Ew zi7Z1{v>(Pd6e*yX7JQ2W`RKL1^+_IogrbwC>0l* z?gV+BjG0n2{9E1GBd(BJP2ikG#uI(e=+r z3!r$|7y%2o2)@*;_bPi81n(QQTrr9gj1cM$98;)g=vk+h@(~ph&KZ;Jz=6s_kpS5n zC+V4>GguBI&blaJ*O6k{QCKb(FsnYuCMDD|zrtft&9^D9JYY{wqxi}@! z*L$Q;cvtv_tY_5Zqi#miFWgOx-#8zHrQe9vn>#{e6d_SAhsqIi7X(Uud2y-V&(IqU z*fNZ8q(#j1aY~(I9hX;rt+o2ckh3J;$DnFrzu{PA>%KD0y)#D-=@6RazV|I67xU(kEwveHh&p+@VVkc*5jXG1z9k^OfCd|Vr$hj zPIsxtFZ&ZQ#z&<&a6Ud7ah&63ny0 zP}K$vAi;|({}_D>Zbb!dm|sFgHU0MkvYN+vP%wOMxPa5HIhKoBa>#>>PqJd55|Oz^ zf0^g{eR4>#HMXC4tp_cNf3M&t_)JPq;SAy2Ar#DO8}{T5eiWrp>CF;5M$V0Kqe)*q zU0m>e9854Ydg(u7Vz22vC!p?7jfq>c?1u!0PeSZ5et_{qGXF>wj&Z6n?|=HB`5Wh@ zWBo8p2rsl=4sc3cU^|&|dhQYVr^3~-{}>}URNq~ZrvTAiqd1XOEgC(#GJK<8)d-^k zVUMlIRMD_}%BkF`bVdg!H(<{7XpiGflczp1vO5R_@H_i6z@VT}UEqASlPQ5xhEYe^ zs1;WXv~{L+bfJ$fKoPpgXStAh)#Q{>yx|r494%#3tD+n;wo?7hw=u(d$d3u({|f=9 z^qAvx#vvsw?saUjV52YD_uPUh05U64VP;vjGSMiGZ$C*i#^xRLL^6mIkwZGPj&_>F7|h|~XpAlE7F$-^)xeY-S4yu3 zGj5`kFm!EmMvpjfS9dgnHr7V8{5gxZ)o8vD0q-F;^}yhW+vun206@1WVht^21D3 zd3CFo-&0ZSGI;yg*04T)blKv_*FoZn3`FEiF2XmUu+vqC!v|YwB)c}KPMbIqxHjT7 z$hBit5;~+4%qM|kY3b!A2r&o%{rw`H_bv#5Oqt=i#B(roPL63O0*_H<5aXky<4OUr zbGatd`G+!LzHoz1rmb0SvbPFwv9gI?UnkWEd*qkj0YcE7r1kCZLE@^1;Vbw>>(?{? z5cG;Q8Jk6rQ<9#bl#K*)_&7zkp^kC$zBeXhJ~U@`BM=8$QSp1ciUOOjxk6SC8@6^t z%Z7Y#V$)Y!D3M;68$; z>^yVFj%>Q|{cR^~-UqN$ox!a>X&Us={?Y@7;7Y+<3(u~0!b29qRP;hq*oWkAVTHpc z%>(ug4m^Clg@dCEdhc?Ru%3b=C2ZDsH_Q%+@#O|1B@@F7Dd=$ zz7vUZVc=P)O8-*o{Zh~(!3%kCeYF%Bzc#o@Si z4FEQIL=8S{ZL|$FcpMJZRgtR9jNizSXe$CV^SNq}*y5N#zuwW?iBzdM8p*)?uK@=Ih_Fw7@Q3Nqv-a8Gd8b7&OAMHa5U*g7J) z^URQyqA!j`j}iZDgOywyiqGyV>O%UADHlNc!1oYxk`9&MseEKZu->AD@}G03%-eGv zsFF#9p~5WZK&vbnik~OEf*{?y^%0kzfLC2evD9%4UPvVKl-$B==b%#KI115d11iE- zY!KP77ikIjW5pazuy;<%dIgDviB58$2nTqL-a5eFx5wX`|07`-7+gB^k`7PgoJpF7 zryRyqg#I~!5f2%<6w!U6I7QOuDB>)^xv_9yb}ilTeYu{w4d1aawqyX>ZvF#F|1px@ z?DI!Uy2d@hu(4=qU5VWYqKM1=? z!J^E*EP(IyQZX{{0~YT2JFE`w!PAdrR`7VFopW?FN3i9ObH}Z*9q1lIc